MWI Helper

MilkyWayIdle Helper

// ==UserScript==
// @name            MWI Helper 
// @version         1.0.0-2025-06-22_c1a6181
// @description     MilkyWayIdle Helper
// @author          wang-x-xia
// @homepage        https://github.com/wang-x-xia/t-web-plugins
// @license         ISC
// @run-at          document-start
// @match           https://www.milkywayidle.com/*
// @match           https://test.milkywayidle.com/*
// @grant           unsafeWindow
// @grant           GM_getValue
// @grant           GM_setValue
// @namespace https://greasyfork.org/users/1483969
// ==/UserScript==

(function () {
    'use strict';

    function log$1(event, args) {
        {
            return;
        }
    }

    var CollectBuffType;
    (function (CollectBuffType) {
        CollectBuffType["ActionSpeed"] = "action_speed";
        CollectBuffType["Efficiency"] = "efficiency";
        CollectBuffType["Gathering"] = "gathering";
        CollectBuffType["Wisdom"] = "wisdom";
        CollectBuffType["RareFind"] = "rare_find";
    })(CollectBuffType || (CollectBuffType = {}));
    var OtherBuffType;
    (function (OtherBuffType) {
        // TODO
        OtherBuffType["EnhancingSuccess"] = "enhancing_success";
    })(OtherBuffType || (OtherBuffType = {}));
    var CombatBuffType;
    (function (CombatBuffType) {
        CombatBuffType["PowerLevel"] = "power_level";
        CombatBuffType["IntelligenceLevel"] = "intelligence_level";
        CombatBuffType["MpRegen"] = "mp_regen";
        CombatBuffType["MagicLevel"] = "magic_level";
        CombatBuffType["RangeLevel"] = "range_level";
        CombatBuffType["DefenseLevel"] = "defense_level";
        CombatBuffType["StaminaLevel"] = "stamina_level";
        CombatBuffType["HpRegen"] = "hp_regen";
        CombatBuffType["AttackLevel"] = "attack_level";
        CombatBuffType["AttackSpeed"] = "attack_speed";
    })(CombatBuffType || (CombatBuffType = {}));
    const AllBuffType = Object.assign(Object.assign(Object.assign({}, CollectBuffType), OtherBuffType), CombatBuffType);
    var BuffSource;
    (function (BuffSource) {
        BuffSource["Equipment"] = "equipment";
        // Moo Pass
        BuffSource["MooPassExperience"] = "experience_moo_pass_buff";
        // Community
        BuffSource["CommunityExperience"] = "experience_community_buff";
        BuffSource["CommunityProduction"] = "production_community_buff";
        BuffSource["GatheringCommunity"] = "gathering_community_buff";
        BuffSource["EnhancingCommunity"] = "enhancing_community_buff";
        BuffSource["CombatCommunity"] = "combat_community_buff";
        // House
        BuffSource["HouseEfficiency"] = "house_efficiency";
        BuffSource["HouseExperience"] = "house_experience";
        BuffSource["HouseRareFind"] = "house_rare_find";
        BuffSource["HouseActionSpeed"] = "house_action_speed";
        BuffSource["HousePowerLevel"] = "house_power_level";
        BuffSource["HouseEnhancingSuccess"] = "house_enhancing_success";
        // Tea
        BuffSource["WisdomTea"] = "wisdom_tea";
        BuffSource["GatheringTea"] = "gathering_tea";
        BuffSource["EfficiencyTea"] = "efficiency_tea";
    })(BuffSource || (BuffSource = {}));

    var DropType;
    (function (DropType) {
        DropType["Common"] = "common";
        DropType["Essence"] = "essence";
        DropType["Rare"] = "rare";
    })(DropType || (DropType = {}));

    /******************************************************************************
    Copyright (c) Microsoft Corporation.

    Permission to use, copy, modify, and/or distribute this software for any
    purpose with or without fee is hereby granted.

    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    PERFORMANCE OF THIS SOFTWARE.
    ***************************************************************************** */
    /* global Reflect, Promise, SuppressedError, Symbol, Iterator */

    var extendStatics$1 = function(d, b) {
        extendStatics$1 = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics$1(d, b);
    };

    function __extends$2(d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics$1(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    }

    function __awaiter(thisArg, _arguments, P, generator) {
        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
        return new (P || (P = Promise))(function (resolve, reject) {
            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        });
    }

    function __generator(thisArg, body) {
        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
        return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
        function verb(n) { return function (v) { return step([n, v]); }; }
        function step(op) {
            if (f) throw new TypeError("Generator is already executing.");
            while (g && (g = 0, op[0] && (_ = 0)), _) try {
                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;
                if (y = 0, t) op = [op[0] & 2, t.value];
                switch (op[0]) {
                    case 0: case 1: t = op; break;
                    case 4: _.label++; return { value: op[1], done: false };
                    case 5: _.label++; y = op[1]; op = [0]; continue;
                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
                    default:
                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                        if (t[2]) _.ops.pop();
                        _.trys.pop(); continue;
                }
                op = body.call(thisArg, _);
            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
        }
    }

    function __values(o) {
        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
        if (m) return m.call(o);
        if (o && typeof o.length === "number") return {
            next: function () {
                if (o && i >= o.length) o = void 0;
                return { value: o && o[i++], done: !o };
            }
        };
        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
    }

    function __read(o, n) {
        var m = typeof Symbol === "function" && o[Symbol.iterator];
        if (!m) return o;
        var i = m.call(o), r, ar = [], e;
        try {
            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
        }
        catch (error) { e = { error: error }; }
        finally {
            try {
                if (r && !r.done && (m = i["return"])) m.call(i);
            }
            finally { if (e) throw e.error; }
        }
        return ar;
    }

    function __spreadArray(to, from, pack) {
        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
            if (ar || !(i in from)) {
                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
                ar[i] = from[i];
            }
        }
        return to.concat(ar || Array.prototype.slice.call(from));
    }

    function __await(v) {
        return this instanceof __await ? (this.v = v, this) : new __await(v);
    }

    function __asyncGenerator(thisArg, _arguments, generator) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var g = generator.apply(thisArg, _arguments || []), i, q = [];
        return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
        function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
        function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
        function fulfill(value) { resume("next", value); }
        function reject(value) { resume("throw", value); }
        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
    }

    function __asyncValues(o) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var m = o[Symbol.asyncIterator], i;
        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
    }

    typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
        var e = new Error(message);
        return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
    };

    function isFunction(value) {
        return typeof value === 'function';
    }

    function createErrorClass(createImpl) {
        var _super = function (instance) {
            Error.call(instance);
            instance.stack = new Error().stack;
        };
        var ctorFunc = createImpl(_super);
        ctorFunc.prototype = Object.create(Error.prototype);
        ctorFunc.prototype.constructor = ctorFunc;
        return ctorFunc;
    }

    var UnsubscriptionError = createErrorClass(function (_super) {
        return function UnsubscriptionErrorImpl(errors) {
            _super(this);
            this.message = errors
                ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n  ')
                : '';
            this.name = 'UnsubscriptionError';
            this.errors = errors;
        };
    });

    function arrRemove(arr, item) {
        if (arr) {
            var index = arr.indexOf(item);
            0 <= index && arr.splice(index, 1);
        }
    }

    var Subscription = (function () {
        function Subscription(initialTeardown) {
            this.initialTeardown = initialTeardown;
            this.closed = false;
            this._parentage = null;
            this._finalizers = null;
        }
        Subscription.prototype.unsubscribe = function () {
            var e_1, _a, e_2, _b;
            var errors;
            if (!this.closed) {
                this.closed = true;
                var _parentage = this._parentage;
                if (_parentage) {
                    this._parentage = null;
                    if (Array.isArray(_parentage)) {
                        try {
                            for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
                                var parent_1 = _parentage_1_1.value;
                                parent_1.remove(this);
                            }
                        }
                        catch (e_1_1) { e_1 = { error: e_1_1 }; }
                        finally {
                            try {
                                if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
                            }
                            finally { if (e_1) throw e_1.error; }
                        }
                    }
                    else {
                        _parentage.remove(this);
                    }
                }
                var initialFinalizer = this.initialTeardown;
                if (isFunction(initialFinalizer)) {
                    try {
                        initialFinalizer();
                    }
                    catch (e) {
                        errors = e instanceof UnsubscriptionError ? e.errors : [e];
                    }
                }
                var _finalizers = this._finalizers;
                if (_finalizers) {
                    this._finalizers = null;
                    try {
                        for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
                            var finalizer = _finalizers_1_1.value;
                            try {
                                execFinalizer(finalizer);
                            }
                            catch (err) {
                                errors = errors !== null && errors !== void 0 ? errors : [];
                                if (err instanceof UnsubscriptionError) {
                                    errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
                                }
                                else {
                                    errors.push(err);
                                }
                            }
                        }
                    }
                    catch (e_2_1) { e_2 = { error: e_2_1 }; }
                    finally {
                        try {
                            if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
                        }
                        finally { if (e_2) throw e_2.error; }
                    }
                }
                if (errors) {
                    throw new UnsubscriptionError(errors);
                }
            }
        };
        Subscription.prototype.add = function (teardown) {
            var _a;
            if (teardown && teardown !== this) {
                if (this.closed) {
                    execFinalizer(teardown);
                }
                else {
                    if (teardown instanceof Subscription) {
                        if (teardown.closed || teardown._hasParent(this)) {
                            return;
                        }
                        teardown._addParent(this);
                    }
                    (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
                }
            }
        };
        Subscription.prototype._hasParent = function (parent) {
            var _parentage = this._parentage;
            return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));
        };
        Subscription.prototype._addParent = function (parent) {
            var _parentage = this._parentage;
            this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
        };
        Subscription.prototype._removeParent = function (parent) {
            var _parentage = this._parentage;
            if (_parentage === parent) {
                this._parentage = null;
            }
            else if (Array.isArray(_parentage)) {
                arrRemove(_parentage, parent);
            }
        };
        Subscription.prototype.remove = function (teardown) {
            var _finalizers = this._finalizers;
            _finalizers && arrRemove(_finalizers, teardown);
            if (teardown instanceof Subscription) {
                teardown._removeParent(this);
            }
        };
        Subscription.EMPTY = (function () {
            var empty = new Subscription();
            empty.closed = true;
            return empty;
        })();
        return Subscription;
    }());
    var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
    function isSubscription(value) {
        return (value instanceof Subscription ||
            (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));
    }
    function execFinalizer(finalizer) {
        if (isFunction(finalizer)) {
            finalizer();
        }
        else {
            finalizer.unsubscribe();
        }
    }

    var config = {
        Promise: undefined};

    var timeoutProvider = {
        setTimeout: function (handler, timeout) {
            var args = [];
            for (var _i = 2; _i < arguments.length; _i++) {
                args[_i - 2] = arguments[_i];
            }
            return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
        },
        clearTimeout: function (handle) {
            return (clearTimeout)(handle);
        },
        delegate: undefined,
    };

    function reportUnhandledError(err) {
        timeoutProvider.setTimeout(function () {
            {
                throw err;
            }
        });
    }

    function noop() { }

    function errorContext(cb) {
        {
            cb();
        }
    }

    var Subscriber = (function (_super) {
        __extends$2(Subscriber, _super);
        function Subscriber(destination) {
            var _this = _super.call(this) || this;
            _this.isStopped = false;
            if (destination) {
                _this.destination = destination;
                if (isSubscription(destination)) {
                    destination.add(_this);
                }
            }
            else {
                _this.destination = EMPTY_OBSERVER;
            }
            return _this;
        }
        Subscriber.create = function (next, error, complete) {
            return new SafeSubscriber(next, error, complete);
        };
        Subscriber.prototype.next = function (value) {
            if (this.isStopped) ;
            else {
                this._next(value);
            }
        };
        Subscriber.prototype.error = function (err) {
            if (this.isStopped) ;
            else {
                this.isStopped = true;
                this._error(err);
            }
        };
        Subscriber.prototype.complete = function () {
            if (this.isStopped) ;
            else {
                this.isStopped = true;
                this._complete();
            }
        };
        Subscriber.prototype.unsubscribe = function () {
            if (!this.closed) {
                this.isStopped = true;
                _super.prototype.unsubscribe.call(this);
                this.destination = null;
            }
        };
        Subscriber.prototype._next = function (value) {
            this.destination.next(value);
        };
        Subscriber.prototype._error = function (err) {
            try {
                this.destination.error(err);
            }
            finally {
                this.unsubscribe();
            }
        };
        Subscriber.prototype._complete = function () {
            try {
                this.destination.complete();
            }
            finally {
                this.unsubscribe();
            }
        };
        return Subscriber;
    }(Subscription));
    var ConsumerObserver = (function () {
        function ConsumerObserver(partialObserver) {
            this.partialObserver = partialObserver;
        }
        ConsumerObserver.prototype.next = function (value) {
            var partialObserver = this.partialObserver;
            if (partialObserver.next) {
                try {
                    partialObserver.next(value);
                }
                catch (error) {
                    handleUnhandledError(error);
                }
            }
        };
        ConsumerObserver.prototype.error = function (err) {
            var partialObserver = this.partialObserver;
            if (partialObserver.error) {
                try {
                    partialObserver.error(err);
                }
                catch (error) {
                    handleUnhandledError(error);
                }
            }
            else {
                handleUnhandledError(err);
            }
        };
        ConsumerObserver.prototype.complete = function () {
            var partialObserver = this.partialObserver;
            if (partialObserver.complete) {
                try {
                    partialObserver.complete();
                }
                catch (error) {
                    handleUnhandledError(error);
                }
            }
        };
        return ConsumerObserver;
    }());
    var SafeSubscriber = (function (_super) {
        __extends$2(SafeSubscriber, _super);
        function SafeSubscriber(observerOrNext, error, complete) {
            var _this = _super.call(this) || this;
            var partialObserver;
            if (isFunction(observerOrNext) || !observerOrNext) {
                partialObserver = {
                    next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),
                    error: error !== null && error !== void 0 ? error : undefined,
                    complete: complete !== null && complete !== void 0 ? complete : undefined,
                };
            }
            else {
                {
                    partialObserver = observerOrNext;
                }
            }
            _this.destination = new ConsumerObserver(partialObserver);
            return _this;
        }
        return SafeSubscriber;
    }(Subscriber));
    function handleUnhandledError(error) {
        {
            reportUnhandledError(error);
        }
    }
    function defaultErrorHandler(err) {
        throw err;
    }
    var EMPTY_OBSERVER = {
        closed: true,
        next: noop,
        error: defaultErrorHandler,
        complete: noop,
    };

    var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();

    function identity(x) {
        return x;
    }

    function pipeFromArray(fns) {
        if (fns.length === 0) {
            return identity;
        }
        if (fns.length === 1) {
            return fns[0];
        }
        return function piped(input) {
            return fns.reduce(function (prev, fn) { return fn(prev); }, input);
        };
    }

    var Observable = (function () {
        function Observable(subscribe) {
            if (subscribe) {
                this._subscribe = subscribe;
            }
        }
        Observable.prototype.lift = function (operator) {
            var observable = new Observable();
            observable.source = this;
            observable.operator = operator;
            return observable;
        };
        Observable.prototype.subscribe = function (observerOrNext, error, complete) {
            var _this = this;
            var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
            errorContext(function () {
                var _a = _this, operator = _a.operator, source = _a.source;
                subscriber.add(operator
                    ?
                        operator.call(subscriber, source)
                    : source
                        ?
                            _this._subscribe(subscriber)
                        :
                            _this._trySubscribe(subscriber));
            });
            return subscriber;
        };
        Observable.prototype._trySubscribe = function (sink) {
            try {
                return this._subscribe(sink);
            }
            catch (err) {
                sink.error(err);
            }
        };
        Observable.prototype.forEach = function (next, promiseCtor) {
            var _this = this;
            promiseCtor = getPromiseCtor(promiseCtor);
            return new promiseCtor(function (resolve, reject) {
                var subscriber = new SafeSubscriber({
                    next: function (value) {
                        try {
                            next(value);
                        }
                        catch (err) {
                            reject(err);
                            subscriber.unsubscribe();
                        }
                    },
                    error: reject,
                    complete: resolve,
                });
                _this.subscribe(subscriber);
            });
        };
        Observable.prototype._subscribe = function (subscriber) {
            var _a;
            return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);
        };
        Observable.prototype[observable] = function () {
            return this;
        };
        Observable.prototype.pipe = function () {
            var operations = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                operations[_i] = arguments[_i];
            }
            return pipeFromArray(operations)(this);
        };
        Observable.prototype.toPromise = function (promiseCtor) {
            var _this = this;
            promiseCtor = getPromiseCtor(promiseCtor);
            return new promiseCtor(function (resolve, reject) {
                var value;
                _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });
            });
        };
        Observable.create = function (subscribe) {
            return new Observable(subscribe);
        };
        return Observable;
    }());
    function getPromiseCtor(promiseCtor) {
        var _a;
        return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;
    }
    function isObserver(value) {
        return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
    }
    function isSubscriber(value) {
        return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));
    }

    function hasLift(source) {
        return isFunction(source === null || source === void 0 ? void 0 : source.lift);
    }
    function operate(init) {
        return function (source) {
            if (hasLift(source)) {
                return source.lift(function (liftedSource) {
                    try {
                        return init(liftedSource, this);
                    }
                    catch (err) {
                        this.error(err);
                    }
                });
            }
            throw new TypeError('Unable to lift unknown Observable type');
        };
    }

    function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
        return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
    }
    var OperatorSubscriber = (function (_super) {
        __extends$2(OperatorSubscriber, _super);
        function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
            var _this = _super.call(this, destination) || this;
            _this.onFinalize = onFinalize;
            _this.shouldUnsubscribe = shouldUnsubscribe;
            _this._next = onNext
                ? function (value) {
                    try {
                        onNext(value);
                    }
                    catch (err) {
                        destination.error(err);
                    }
                }
                : _super.prototype._next;
            _this._error = onError
                ? function (err) {
                    try {
                        onError(err);
                    }
                    catch (err) {
                        destination.error(err);
                    }
                    finally {
                        this.unsubscribe();
                    }
                }
                : _super.prototype._error;
            _this._complete = onComplete
                ? function () {
                    try {
                        onComplete();
                    }
                    catch (err) {
                        destination.error(err);
                    }
                    finally {
                        this.unsubscribe();
                    }
                }
                : _super.prototype._complete;
            return _this;
        }
        OperatorSubscriber.prototype.unsubscribe = function () {
            var _a;
            if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
                var closed_1 = this.closed;
                _super.prototype.unsubscribe.call(this);
                !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
            }
        };
        return OperatorSubscriber;
    }(Subscriber));

    var ObjectUnsubscribedError = createErrorClass(function (_super) {
        return function ObjectUnsubscribedErrorImpl() {
            _super(this);
            this.name = 'ObjectUnsubscribedError';
            this.message = 'object unsubscribed';
        };
    });

    var Subject = (function (_super) {
        __extends$2(Subject, _super);
        function Subject() {
            var _this = _super.call(this) || this;
            _this.closed = false;
            _this.currentObservers = null;
            _this.observers = [];
            _this.isStopped = false;
            _this.hasError = false;
            _this.thrownError = null;
            return _this;
        }
        Subject.prototype.lift = function (operator) {
            var subject = new AnonymousSubject(this, this);
            subject.operator = operator;
            return subject;
        };
        Subject.prototype._throwIfClosed = function () {
            if (this.closed) {
                throw new ObjectUnsubscribedError();
            }
        };
        Subject.prototype.next = function (value) {
            var _this = this;
            errorContext(function () {
                var e_1, _a;
                _this._throwIfClosed();
                if (!_this.isStopped) {
                    if (!_this.currentObservers) {
                        _this.currentObservers = Array.from(_this.observers);
                    }
                    try {
                        for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
                            var observer = _c.value;
                            observer.next(value);
                        }
                    }
                    catch (e_1_1) { e_1 = { error: e_1_1 }; }
                    finally {
                        try {
                            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
                        }
                        finally { if (e_1) throw e_1.error; }
                    }
                }
            });
        };
        Subject.prototype.error = function (err) {
            var _this = this;
            errorContext(function () {
                _this._throwIfClosed();
                if (!_this.isStopped) {
                    _this.hasError = _this.isStopped = true;
                    _this.thrownError = err;
                    var observers = _this.observers;
                    while (observers.length) {
                        observers.shift().error(err);
                    }
                }
            });
        };
        Subject.prototype.complete = function () {
            var _this = this;
            errorContext(function () {
                _this._throwIfClosed();
                if (!_this.isStopped) {
                    _this.isStopped = true;
                    var observers = _this.observers;
                    while (observers.length) {
                        observers.shift().complete();
                    }
                }
            });
        };
        Subject.prototype.unsubscribe = function () {
            this.isStopped = this.closed = true;
            this.observers = this.currentObservers = null;
        };
        Object.defineProperty(Subject.prototype, "observed", {
            get: function () {
                var _a;
                return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
            },
            enumerable: false,
            configurable: true
        });
        Subject.prototype._trySubscribe = function (subscriber) {
            this._throwIfClosed();
            return _super.prototype._trySubscribe.call(this, subscriber);
        };
        Subject.prototype._subscribe = function (subscriber) {
            this._throwIfClosed();
            this._checkFinalizedStatuses(subscriber);
            return this._innerSubscribe(subscriber);
        };
        Subject.prototype._innerSubscribe = function (subscriber) {
            var _this = this;
            var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;
            if (hasError || isStopped) {
                return EMPTY_SUBSCRIPTION;
            }
            this.currentObservers = null;
            observers.push(subscriber);
            return new Subscription(function () {
                _this.currentObservers = null;
                arrRemove(observers, subscriber);
            });
        };
        Subject.prototype._checkFinalizedStatuses = function (subscriber) {
            var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;
            if (hasError) {
                subscriber.error(thrownError);
            }
            else if (isStopped) {
                subscriber.complete();
            }
        };
        Subject.prototype.asObservable = function () {
            var observable = new Observable();
            observable.source = this;
            return observable;
        };
        Subject.create = function (destination, source) {
            return new AnonymousSubject(destination, source);
        };
        return Subject;
    }(Observable));
    var AnonymousSubject = (function (_super) {
        __extends$2(AnonymousSubject, _super);
        function AnonymousSubject(destination, source) {
            var _this = _super.call(this) || this;
            _this.destination = destination;
            _this.source = source;
            return _this;
        }
        AnonymousSubject.prototype.next = function (value) {
            var _a, _b;
            (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);
        };
        AnonymousSubject.prototype.error = function (err) {
            var _a, _b;
            (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
        };
        AnonymousSubject.prototype.complete = function () {
            var _a, _b;
            (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
        };
        AnonymousSubject.prototype._subscribe = function (subscriber) {
            var _a, _b;
            return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
        };
        return AnonymousSubject;
    }(Subject));

    var dateTimestampProvider = {
        now: function () {
            return (dateTimestampProvider.delegate || Date).now();
        },
        delegate: undefined,
    };

    var ReplaySubject = (function (_super) {
        __extends$2(ReplaySubject, _super);
        function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {
            if (_bufferSize === void 0) { _bufferSize = Infinity; }
            if (_windowTime === void 0) { _windowTime = Infinity; }
            if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }
            var _this = _super.call(this) || this;
            _this._bufferSize = _bufferSize;
            _this._windowTime = _windowTime;
            _this._timestampProvider = _timestampProvider;
            _this._buffer = [];
            _this._infiniteTimeWindow = true;
            _this._infiniteTimeWindow = _windowTime === Infinity;
            _this._bufferSize = Math.max(1, _bufferSize);
            _this._windowTime = Math.max(1, _windowTime);
            return _this;
        }
        ReplaySubject.prototype.next = function (value) {
            var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;
            if (!isStopped) {
                _buffer.push(value);
                !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
            }
            this._trimBuffer();
            _super.prototype.next.call(this, value);
        };
        ReplaySubject.prototype._subscribe = function (subscriber) {
            this._throwIfClosed();
            this._trimBuffer();
            var subscription = this._innerSubscribe(subscriber);
            var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;
            var copy = _buffer.slice();
            for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
                subscriber.next(copy[i]);
            }
            this._checkFinalizedStatuses(subscriber);
            return subscription;
        };
        ReplaySubject.prototype._trimBuffer = function () {
            var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;
            var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
            _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
            if (!_infiniteTimeWindow) {
                var now = _timestampProvider.now();
                var last = 0;
                for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
                    last = i;
                }
                last && _buffer.splice(0, last + 1);
            }
        };
        return ReplaySubject;
    }(Subject));

    function isScheduler(value) {
        return value && isFunction(value.schedule);
    }

    function last(arr) {
        return arr[arr.length - 1];
    }
    function popResultSelector(args) {
        return isFunction(last(args)) ? args.pop() : undefined;
    }
    function popScheduler(args) {
        return isScheduler(last(args)) ? args.pop() : undefined;
    }

    var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });

    function isPromise(value) {
        return isFunction(value === null || value === void 0 ? void 0 : value.then);
    }

    function isInteropObservable(input) {
        return isFunction(input[observable]);
    }

    function isAsyncIterable(obj) {
        return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
    }

    function createInvalidObservableTypeError(input) {
        return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
    }

    function getSymbolIterator() {
        if (typeof Symbol !== 'function' || !Symbol.iterator) {
            return '@@iterator';
        }
        return Symbol.iterator;
    }
    var iterator = getSymbolIterator();

    function isIterable(input) {
        return isFunction(input === null || input === void 0 ? void 0 : input[iterator]);
    }

    function readableStreamLikeToAsyncGenerator(readableStream) {
        return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
            var reader, _a, value, done;
            return __generator(this, function (_b) {
                switch (_b.label) {
                    case 0:
                        reader = readableStream.getReader();
                        _b.label = 1;
                    case 1:
                        _b.trys.push([1, , 9, 10]);
                        _b.label = 2;
                    case 2:
                        return [4, __await(reader.read())];
                    case 3:
                        _a = _b.sent(), value = _a.value, done = _a.done;
                        if (!done) return [3, 5];
                        return [4, __await(void 0)];
                    case 4: return [2, _b.sent()];
                    case 5: return [4, __await(value)];
                    case 6: return [4, _b.sent()];
                    case 7:
                        _b.sent();
                        return [3, 2];
                    case 8: return [3, 10];
                    case 9:
                        reader.releaseLock();
                        return [7];
                    case 10: return [2];
                }
            });
        });
    }
    function isReadableStreamLike(obj) {
        return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);
    }

    function innerFrom(input) {
        if (input instanceof Observable) {
            return input;
        }
        if (input != null) {
            if (isInteropObservable(input)) {
                return fromInteropObservable(input);
            }
            if (isArrayLike(input)) {
                return fromArrayLike(input);
            }
            if (isPromise(input)) {
                return fromPromise(input);
            }
            if (isAsyncIterable(input)) {
                return fromAsyncIterable(input);
            }
            if (isIterable(input)) {
                return fromIterable(input);
            }
            if (isReadableStreamLike(input)) {
                return fromReadableStreamLike(input);
            }
        }
        throw createInvalidObservableTypeError(input);
    }
    function fromInteropObservable(obj) {
        return new Observable(function (subscriber) {
            var obs = obj[observable]();
            if (isFunction(obs.subscribe)) {
                return obs.subscribe(subscriber);
            }
            throw new TypeError('Provided object does not correctly implement Symbol.observable');
        });
    }
    function fromArrayLike(array) {
        return new Observable(function (subscriber) {
            for (var i = 0; i < array.length && !subscriber.closed; i++) {
                subscriber.next(array[i]);
            }
            subscriber.complete();
        });
    }
    function fromPromise(promise) {
        return new Observable(function (subscriber) {
            promise
                .then(function (value) {
                if (!subscriber.closed) {
                    subscriber.next(value);
                    subscriber.complete();
                }
            }, function (err) { return subscriber.error(err); })
                .then(null, reportUnhandledError);
        });
    }
    function fromIterable(iterable) {
        return new Observable(function (subscriber) {
            var e_1, _a;
            try {
                for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
                    var value = iterable_1_1.value;
                    subscriber.next(value);
                    if (subscriber.closed) {
                        return;
                    }
                }
            }
            catch (e_1_1) { e_1 = { error: e_1_1 }; }
            finally {
                try {
                    if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);
                }
                finally { if (e_1) throw e_1.error; }
            }
            subscriber.complete();
        });
    }
    function fromAsyncIterable(asyncIterable) {
        return new Observable(function (subscriber) {
            process$1(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });
        });
    }
    function fromReadableStreamLike(readableStream) {
        return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));
    }
    function process$1(asyncIterable, subscriber) {
        var asyncIterable_1, asyncIterable_1_1;
        var e_2, _a;
        return __awaiter(this, void 0, void 0, function () {
            var value, e_2_1;
            return __generator(this, function (_b) {
                switch (_b.label) {
                    case 0:
                        _b.trys.push([0, 5, 6, 11]);
                        asyncIterable_1 = __asyncValues(asyncIterable);
                        _b.label = 1;
                    case 1: return [4, asyncIterable_1.next()];
                    case 2:
                        if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
                        value = asyncIterable_1_1.value;
                        subscriber.next(value);
                        if (subscriber.closed) {
                            return [2];
                        }
                        _b.label = 3;
                    case 3: return [3, 1];
                    case 4: return [3, 11];
                    case 5:
                        e_2_1 = _b.sent();
                        e_2 = { error: e_2_1 };
                        return [3, 11];
                    case 6:
                        _b.trys.push([6, , 9, 10]);
                        if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];
                        return [4, _a.call(asyncIterable_1)];
                    case 7:
                        _b.sent();
                        _b.label = 8;
                    case 8: return [3, 10];
                    case 9:
                        if (e_2) throw e_2.error;
                        return [7];
                    case 10: return [7];
                    case 11:
                        subscriber.complete();
                        return [2];
                }
            });
        });
    }

    function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
        if (delay === void 0) { delay = 0; }
        if (repeat === void 0) { repeat = false; }
        var scheduleSubscription = scheduler.schedule(function () {
            work();
            if (repeat) {
                parentSubscription.add(this.schedule(null, delay));
            }
            else {
                this.unsubscribe();
            }
        }, delay);
        parentSubscription.add(scheduleSubscription);
        if (!repeat) {
            return scheduleSubscription;
        }
    }

    function observeOn(scheduler, delay) {
        if (delay === void 0) { delay = 0; }
        return operate(function (source, subscriber) {
            source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));
        });
    }

    function subscribeOn(scheduler, delay) {
        if (delay === void 0) { delay = 0; }
        return operate(function (source, subscriber) {
            subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));
        });
    }

    function scheduleObservable(input, scheduler) {
        return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
    }

    function schedulePromise(input, scheduler) {
        return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
    }

    function scheduleArray(input, scheduler) {
        return new Observable(function (subscriber) {
            var i = 0;
            return scheduler.schedule(function () {
                if (i === input.length) {
                    subscriber.complete();
                }
                else {
                    subscriber.next(input[i++]);
                    if (!subscriber.closed) {
                        this.schedule();
                    }
                }
            });
        });
    }

    function scheduleIterable(input, scheduler) {
        return new Observable(function (subscriber) {
            var iterator$1;
            executeSchedule(subscriber, scheduler, function () {
                iterator$1 = input[iterator]();
                executeSchedule(subscriber, scheduler, function () {
                    var _a;
                    var value;
                    var done;
                    try {
                        (_a = iterator$1.next(), value = _a.value, done = _a.done);
                    }
                    catch (err) {
                        subscriber.error(err);
                        return;
                    }
                    if (done) {
                        subscriber.complete();
                    }
                    else {
                        subscriber.next(value);
                    }
                }, 0, true);
            });
            return function () { return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); };
        });
    }

    function scheduleAsyncIterable(input, scheduler) {
        if (!input) {
            throw new Error('Iterable cannot be null');
        }
        return new Observable(function (subscriber) {
            executeSchedule(subscriber, scheduler, function () {
                var iterator = input[Symbol.asyncIterator]();
                executeSchedule(subscriber, scheduler, function () {
                    iterator.next().then(function (result) {
                        if (result.done) {
                            subscriber.complete();
                        }
                        else {
                            subscriber.next(result.value);
                        }
                    });
                }, 0, true);
            });
        });
    }

    function scheduleReadableStreamLike(input, scheduler) {
        return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);
    }

    function scheduled(input, scheduler) {
        if (input != null) {
            if (isInteropObservable(input)) {
                return scheduleObservable(input, scheduler);
            }
            if (isArrayLike(input)) {
                return scheduleArray(input, scheduler);
            }
            if (isPromise(input)) {
                return schedulePromise(input, scheduler);
            }
            if (isAsyncIterable(input)) {
                return scheduleAsyncIterable(input, scheduler);
            }
            if (isIterable(input)) {
                return scheduleIterable(input, scheduler);
            }
            if (isReadableStreamLike(input)) {
                return scheduleReadableStreamLike(input, scheduler);
            }
        }
        throw createInvalidObservableTypeError(input);
    }

    function from(input, scheduler) {
        return scheduler ? scheduled(input, scheduler) : innerFrom(input);
    }

    function map(project, thisArg) {
        return operate(function (source, subscriber) {
            var index = 0;
            source.subscribe(createOperatorSubscriber(subscriber, function (value) {
                subscriber.next(project.call(thisArg, value, index++));
            }));
        });
    }

    var isArray$1 = Array.isArray;
    function callOrApply(fn, args) {
        return isArray$1(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);
    }
    function mapOneOrManyArgs(fn) {
        return map(function (args) { return callOrApply(fn, args); });
    }

    var isArray = Array.isArray;
    var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;
    function argsArgArrayOrObject(args) {
        if (args.length === 1) {
            var first_1 = args[0];
            if (isArray(first_1)) {
                return { args: first_1, keys: null };
            }
            if (isPOJO(first_1)) {
                var keys = getKeys(first_1);
                return {
                    args: keys.map(function (key) { return first_1[key]; }),
                    keys: keys,
                };
            }
        }
        return { args: args, keys: null };
    }
    function isPOJO(obj) {
        return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;
    }

    function createObject(keys, values) {
        return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});
    }

    function combineLatest() {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        var scheduler = popScheduler(args);
        var resultSelector = popResultSelector(args);
        var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;
        if (observables.length === 0) {
            return from([], scheduler);
        }
        var result = new Observable(combineLatestInit(observables, scheduler, keys
            ?
                function (values) { return createObject(keys, values); }
            :
                identity));
        return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
    }
    function combineLatestInit(observables, scheduler, valueTransform) {
        if (valueTransform === void 0) { valueTransform = identity; }
        return function (subscriber) {
            maybeSchedule(scheduler, function () {
                var length = observables.length;
                var values = new Array(length);
                var active = length;
                var remainingFirstValues = length;
                var _loop_1 = function (i) {
                    maybeSchedule(scheduler, function () {
                        var source = from(observables[i], scheduler);
                        var hasFirstValue = false;
                        source.subscribe(createOperatorSubscriber(subscriber, function (value) {
                            values[i] = value;
                            if (!hasFirstValue) {
                                hasFirstValue = true;
                                remainingFirstValues--;
                            }
                            if (!remainingFirstValues) {
                                subscriber.next(valueTransform(values.slice()));
                            }
                        }, function () {
                            if (!--active) {
                                subscriber.complete();
                            }
                        }));
                    }, subscriber);
                };
                for (var i = 0; i < length; i++) {
                    _loop_1(i);
                }
            }, subscriber);
        };
    }
    function maybeSchedule(scheduler, execute, subscription) {
        if (scheduler) {
            executeSchedule(subscription, scheduler, execute);
        }
        else {
            execute();
        }
    }

    const CharacterLoadedEvent = new Subject();
    const MarketLoadedEvent = new Subject();
    const AllLoadedEvent = combineLatest([CharacterLoadedEvent, MarketLoadedEvent]);
    const InitCharacterSubject = new ReplaySubject(1);
    const InitClientSubject = new ReplaySubject(1);
    const LootLogSubject = new ReplaySubject();
    const ActionCompleteEvent = new Subject();

    function getActionTypeHrid(action) {
        return `/action_types/${action}`;
    }
    function getActionTypeByTypeHrid(hrid) {
        return Object.values(AllActionType).find((action) => getActionTypeHrid(action) === hrid) || null;
    }
    function getSkillHrid(action) {
        return `/skills/${action}`;
    }
    function getBuffHrid(buffType) {
        return `/buff_types/${buffType}`;
    }
    function getBuffTypeByHrid(hrid) {
        return Object.values(AllBuffType).find((buffType) => getBuffHrid(buffType) === hrid) || null;
    }
    function getBuffUniqueHrid(buffUnique) {
        return `/buff_uniques/${buffUnique}`;
    }
    function getBuffSourceByHrid(hrid) {
        return Object.values(BuffSource).find((buffSource) => getBuffUniqueHrid(buffSource) === hrid) || null;
    }
    /**
     * @param itemHrid like /items/sugar::0
     */
    function resolveItemHrid(itemHrid) {
        try {
            const [hrid, enhancementLevel] = itemHrid.split("::");
            return {
                hrid,
                enhancementLevel: Number(enhancementLevel),
            };
        }
        catch (e) {
            console.error(e);
            return {
                hrid: itemHrid,
                enhancementLevel: 0,
            };
        }
    }
    /**
     * @param itemHash like 000000::/item_locations/inventory::/items/sugar::0
     */
    function resolveItemHash(itemHash) {
        try {
            const [_character_id, _inventory, hrid, enhancementLevel] = itemHash.split("::");
            return {
                hrid,
                enhancementLevel: Number(enhancementLevel),
            };
        }
        catch (e) {
            console.error(e);
            return {
                hrid: itemHash,
                enhancementLevel: 0,
            };
        }
    }

    let clientData = null;
    function getClientData() {
        if (!clientData) {
            throw new Error("Client data not initialized");
        }
        return clientData;
    }
    InitClientSubject.subscribe((data) => {
        clientData = data;
        collectActions = initCollectActions(data);
        buffSourceNames = initBuffSourceNames(data);
    });
    let collectActions = null;
    function getCollectActions(actionType) {
        if (!collectActions) {
            throw new Error("Collect actions not initialized");
        }
        return collectActions[actionType];
    }
    function initCollectActions(data) {
        return Object.fromEntries(Object.values(CollectActionType).map((key) => {
            const typeHrid = getActionTypeHrid(key);
            const collectActions = Object.values(data.actionDetailMap)
                .filter((action) => action.type === typeHrid)
                .map((action) => {
                const dropTable = Object.entries({
                    [DropType.Common]: action.dropTable,
                    [DropType.Essence]: action.essenceDropTable,
                    [DropType.Rare]: action.rareDropTable,
                }).flatMap(([dropType, dropItems]) => {
                    if (dropItems) {
                        return dropItems.map((drop) => ({
                            itemHrid: drop.itemHrid,
                            type: dropType,
                            dropRate: drop.dropRate,
                            minCount: drop.minCount,
                            maxCount: drop.maxCount,
                        }));
                    }
                    else {
                        return [];
                    }
                });
                return {
                    hrid: action.hrid,
                    name: action.name,
                    sortIndex: action.sortIndex,
                    type: key,
                    category: data.actionCategoryDetailMap[action.category],
                    levelRequirement: action.levelRequirement.level,
                    baseTimeCost: action.baseTimeCost / 1e9,
                    experienceGain: action.experienceGain.value,
                    dropTable: dropTable,
                };
            });
            return [key, collectActions];
        }));
    }
    let buffSourceNames = null;
    function getBuffSourceName(source) {
        var _a;
        if (!buffSourceNames) {
            throw new Error("Buff source names not initialized");
        }
        return (_a = buffSourceNames[source]) !== null && _a !== void 0 ? _a : source;
    }
    function initBuffSourceNames(data) {
        return Object.fromEntries([
            ...Object.values(data.communityBuffTypeDetailMap)
                .map((buffDetails) => [getBuffSourceByHrid(buffDetails.buff.uniqueHrid), "Community Buff: " + buffDetails.name]),
            ...Object.values(data.itemDetailMap).filter(itemDetails => { var _a; return (_a = itemDetails.consumableDetail) === null || _a === void 0 ? void 0 : _a.buffs; })
                .flatMap((itemDetails) => itemDetails.consumableDetail.buffs.map((buff) => {
                return [getBuffSourceByHrid(buff.uniqueHrid), "Item: " + itemDetails.name];
            })),
            ...Object.values(data.houseRoomDetailMap).flatMap((roomDetails) => [...roomDetails.actionBuffs, ...roomDetails.globalBuffs].map((buff) => [getBuffSourceByHrid(buff.uniqueHrid), "House: " + roomDetails.name])),
            ...[
                [BuffSource.MooPassExperience, "Moo Pass"],
                [BuffSource.Equipment, "Equipment"],
            ]
        ]);
    }

    function getAlchemyInputs(actionHrid, primaryItemHash, secondaryItemHash) {
        var _a;
        if (!primaryItemHash) {
            return [];
        }
        const { hrid } = resolveItemHash(primaryItemHash);
        const alchemyDetail = (_a = getClientData().itemDetailMap[hrid]) === null || _a === void 0 ? void 0 : _a.alchemyDetail;
        if (!alchemyDetail) {
            console.error("Alchemy not found for", primaryItemHash);
            return [];
        }
        return [
            { hrid: hrid, count: alchemyDetail.bulkMultiplier },
        ];
    }

    var AlchemyActionType;
    (function (AlchemyActionType) {
        AlchemyActionType["Alchemy"] = "alchemy";
    })(AlchemyActionType || (AlchemyActionType = {}));
    var CollectActionType;
    (function (CollectActionType) {
        CollectActionType["Foraging"] = "foraging";
    })(CollectActionType || (CollectActionType = {}));
    var OtherActionType;
    (function (OtherActionType) {
        // TODO
        OtherActionType["Brewing"] = "brewing";
        OtherActionType["Cheesesmithing"] = "cheesesmithing";
        OtherActionType["Cooking"] = "cooking";
        OtherActionType["Crafting"] = "crafting";
        OtherActionType["Enhancing"] = "enhancing";
        OtherActionType["Milking"] = "milking";
        OtherActionType["Tailoring"] = "tailoring";
        OtherActionType["Woodcutting"] = "woodcutting";
    })(OtherActionType || (OtherActionType = {}));
    const AllActionType = Object.assign(Object.assign(Object.assign({}, AlchemyActionType), CollectActionType), OtherActionType);
    function getActionName(actionHrid) {
        var _a, _b;
        return (_b = (_a = getClientData().actionDetailMap[actionHrid]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : actionHrid;
    }
    function getActionTypeByAction(actionHrid) {
        var _a;
        const typeHrid = (_a = getClientData().actionDetailMap[actionHrid]) === null || _a === void 0 ? void 0 : _a.type;
        if (typeHrid === undefined) {
            return null;
        }
        return getActionTypeByTypeHrid(typeHrid);
    }
    function getActionInputs(actionHrid, primaryItemHash, secondaryItemHash) {
        var _a, _b, _c;
        switch (getActionTypeByAction(actionHrid)) {
            default:
                return (_c = (_b = (_a = getClientData().actionDetailMap[actionHrid]) === null || _a === void 0 ? void 0 : _a.inputItems) === null || _b === void 0 ? void 0 : _b.map(inputItem => ({
                    hrid: inputItem.itemHrid,
                    count: inputItem.count,
                }))) !== null && _c !== void 0 ? _c : [];
            case AlchemyActionType.Alchemy:
                return getAlchemyInputs(actionHrid, primaryItemHash);
        }
    }

    function getDefaultExportFromCjs (x) {
    	return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
    }

    function getAugmentedNamespace(n) {
      if (Object.prototype.hasOwnProperty.call(n, '__esModule')) return n;
      var f = n.default;
    	if (typeof f == "function") {
    		var a = function a () {
    			if (this instanceof a) {
            return Reflect.construct(f, arguments, this.constructor);
    			}
    			return f.apply(this, arguments);
    		};
    		a.prototype = f.prototype;
      } else a = {};
      Object.defineProperty(a, '__esModule', {value: true});
    	Object.keys(n).forEach(function (k) {
    		var d = Object.getOwnPropertyDescriptor(n, k);
    		Object.defineProperty(a, k, d.get ? d : {
    			enumerable: true,
    			get: function () {
    				return n[k];
    			}
    		});
    	});
    	return a;
    }

    var react = {exports: {}};

    var react_production = {};

    /**
     * @license React
     * react.production.js
     *
     * Copyright (c) Meta Platforms, Inc. and affiliates.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredReact_production;

    function requireReact_production () {
    	if (hasRequiredReact_production) return react_production;
    	hasRequiredReact_production = 1;
    	var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
    	  REACT_PORTAL_TYPE = Symbol.for("react.portal"),
    	  REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
    	  REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
    	  REACT_PROFILER_TYPE = Symbol.for("react.profiler"),
    	  REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
    	  REACT_CONTEXT_TYPE = Symbol.for("react.context"),
    	  REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
    	  REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
    	  REACT_MEMO_TYPE = Symbol.for("react.memo"),
    	  REACT_LAZY_TYPE = Symbol.for("react.lazy"),
    	  MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
    	function getIteratorFn(maybeIterable) {
    	  if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
    	  maybeIterable =
    	    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
    	    maybeIterable["@@iterator"];
    	  return "function" === typeof maybeIterable ? maybeIterable : null;
    	}
    	var ReactNoopUpdateQueue = {
    	    isMounted: function () {
    	      return false;
    	    },
    	    enqueueForceUpdate: function () {},
    	    enqueueReplaceState: function () {},
    	    enqueueSetState: function () {}
    	  },
    	  assign = Object.assign,
    	  emptyObject = {};
    	function Component(props, context, updater) {
    	  this.props = props;
    	  this.context = context;
    	  this.refs = emptyObject;
    	  this.updater = updater || ReactNoopUpdateQueue;
    	}
    	Component.prototype.isReactComponent = {};
    	Component.prototype.setState = function (partialState, callback) {
    	  if (
    	    "object" !== typeof partialState &&
    	    "function" !== typeof partialState &&
    	    null != partialState
    	  )
    	    throw Error(
    	      "takes an object of state variables to update or a function which returns an object of state variables."
    	    );
    	  this.updater.enqueueSetState(this, partialState, callback, "setState");
    	};
    	Component.prototype.forceUpdate = function (callback) {
    	  this.updater.enqueueForceUpdate(this, callback, "forceUpdate");
    	};
    	function ComponentDummy() {}
    	ComponentDummy.prototype = Component.prototype;
    	function PureComponent(props, context, updater) {
    	  this.props = props;
    	  this.context = context;
    	  this.refs = emptyObject;
    	  this.updater = updater || ReactNoopUpdateQueue;
    	}
    	var pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());
    	pureComponentPrototype.constructor = PureComponent;
    	assign(pureComponentPrototype, Component.prototype);
    	pureComponentPrototype.isPureReactComponent = true;
    	var isArrayImpl = Array.isArray,
    	  ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },
    	  hasOwnProperty = Object.prototype.hasOwnProperty;
    	function ReactElement(type, key, self, source, owner, props) {
    	  self = props.ref;
    	  return {
    	    $$typeof: REACT_ELEMENT_TYPE,
    	    type: type,
    	    key: key,
    	    ref: void 0 !== self ? self : null,
    	    props: props
    	  };
    	}
    	function cloneAndReplaceKey(oldElement, newKey) {
    	  return ReactElement(
    	    oldElement.type,
    	    newKey,
    	    void 0,
    	    void 0,
    	    void 0,
    	    oldElement.props
    	  );
    	}
    	function isValidElement(object) {
    	  return (
    	    "object" === typeof object &&
    	    null !== object &&
    	    object.$$typeof === REACT_ELEMENT_TYPE
    	  );
    	}
    	function escape(key) {
    	  var escaperLookup = { "=": "=0", ":": "=2" };
    	  return (
    	    "$" +
    	    key.replace(/[=:]/g, function (match) {
    	      return escaperLookup[match];
    	    })
    	  );
    	}
    	var userProvidedKeyEscapeRegex = /\/+/g;
    	function getElementKey(element, index) {
    	  return "object" === typeof element && null !== element && null != element.key
    	    ? escape("" + element.key)
    	    : index.toString(36);
    	}
    	function noop$1() {}
    	function resolveThenable(thenable) {
    	  switch (thenable.status) {
    	    case "fulfilled":
    	      return thenable.value;
    	    case "rejected":
    	      throw thenable.reason;
    	    default:
    	      switch (
    	        ("string" === typeof thenable.status
    	          ? thenable.then(noop$1, noop$1)
    	          : ((thenable.status = "pending"),
    	            thenable.then(
    	              function (fulfilledValue) {
    	                "pending" === thenable.status &&
    	                  ((thenable.status = "fulfilled"),
    	                  (thenable.value = fulfilledValue));
    	              },
    	              function (error) {
    	                "pending" === thenable.status &&
    	                  ((thenable.status = "rejected"), (thenable.reason = error));
    	              }
    	            )),
    	        thenable.status)
    	      ) {
    	        case "fulfilled":
    	          return thenable.value;
    	        case "rejected":
    	          throw thenable.reason;
    	      }
    	  }
    	  throw thenable;
    	}
    	function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
    	  var type = typeof children;
    	  if ("undefined" === type || "boolean" === type) children = null;
    	  var invokeCallback = false;
    	  if (null === children) invokeCallback = true;
    	  else
    	    switch (type) {
    	      case "bigint":
    	      case "string":
    	      case "number":
    	        invokeCallback = true;
    	        break;
    	      case "object":
    	        switch (children.$$typeof) {
    	          case REACT_ELEMENT_TYPE:
    	          case REACT_PORTAL_TYPE:
    	            invokeCallback = true;
    	            break;
    	          case REACT_LAZY_TYPE:
    	            return (
    	              (invokeCallback = children._init),
    	              mapIntoArray(
    	                invokeCallback(children._payload),
    	                array,
    	                escapedPrefix,
    	                nameSoFar,
    	                callback
    	              )
    	            );
    	        }
    	    }
    	  if (invokeCallback)
    	    return (
    	      (callback = callback(children)),
    	      (invokeCallback =
    	        "" === nameSoFar ? "." + getElementKey(children, 0) : nameSoFar),
    	      isArrayImpl(callback)
    	        ? ((escapedPrefix = ""),
    	          null != invokeCallback &&
    	            (escapedPrefix =
    	              invokeCallback.replace(userProvidedKeyEscapeRegex, "$&/") + "/"),
    	          mapIntoArray(callback, array, escapedPrefix, "", function (c) {
    	            return c;
    	          }))
    	        : null != callback &&
    	          (isValidElement(callback) &&
    	            (callback = cloneAndReplaceKey(
    	              callback,
    	              escapedPrefix +
    	                (null == callback.key ||
    	                (children && children.key === callback.key)
    	                  ? ""
    	                  : ("" + callback.key).replace(
    	                      userProvidedKeyEscapeRegex,
    	                      "$&/"
    	                    ) + "/") +
    	                invokeCallback
    	            )),
    	          array.push(callback)),
    	      1
    	    );
    	  invokeCallback = 0;
    	  var nextNamePrefix = "" === nameSoFar ? "." : nameSoFar + ":";
    	  if (isArrayImpl(children))
    	    for (var i = 0; i < children.length; i++)
    	      (nameSoFar = children[i]),
    	        (type = nextNamePrefix + getElementKey(nameSoFar, i)),
    	        (invokeCallback += mapIntoArray(
    	          nameSoFar,
    	          array,
    	          escapedPrefix,
    	          type,
    	          callback
    	        ));
    	  else if (((i = getIteratorFn(children)), "function" === typeof i))
    	    for (
    	      children = i.call(children), i = 0;
    	      !(nameSoFar = children.next()).done;

    	    )
    	      (nameSoFar = nameSoFar.value),
    	        (type = nextNamePrefix + getElementKey(nameSoFar, i++)),
    	        (invokeCallback += mapIntoArray(
    	          nameSoFar,
    	          array,
    	          escapedPrefix,
    	          type,
    	          callback
    	        ));
    	  else if ("object" === type) {
    	    if ("function" === typeof children.then)
    	      return mapIntoArray(
    	        resolveThenable(children),
    	        array,
    	        escapedPrefix,
    	        nameSoFar,
    	        callback
    	      );
    	    array = String(children);
    	    throw Error(
    	      "Objects are not valid as a React child (found: " +
    	        ("[object Object]" === array
    	          ? "object with keys {" + Object.keys(children).join(", ") + "}"
    	          : array) +
    	        "). If you meant to render a collection of children, use an array instead."
    	    );
    	  }
    	  return invokeCallback;
    	}
    	function mapChildren(children, func, context) {
    	  if (null == children) return children;
    	  var result = [],
    	    count = 0;
    	  mapIntoArray(children, result, "", "", function (child) {
    	    return func.call(context, child, count++);
    	  });
    	  return result;
    	}
    	function lazyInitializer(payload) {
    	  if (-1 === payload._status) {
    	    var ctor = payload._result;
    	    ctor = ctor();
    	    ctor.then(
    	      function (moduleObject) {
    	        if (0 === payload._status || -1 === payload._status)
    	          (payload._status = 1), (payload._result = moduleObject);
    	      },
    	      function (error) {
    	        if (0 === payload._status || -1 === payload._status)
    	          (payload._status = 2), (payload._result = error);
    	      }
    	    );
    	    -1 === payload._status && ((payload._status = 0), (payload._result = ctor));
    	  }
    	  if (1 === payload._status) return payload._result.default;
    	  throw payload._result;
    	}
    	var reportGlobalError =
    	  "function" === typeof reportError
    	    ? reportError
    	    : function (error) {
    	        if (
    	          "object" === typeof window &&
    	          "function" === typeof window.ErrorEvent
    	        ) {
    	          var event = new window.ErrorEvent("error", {
    	            bubbles: true,
    	            cancelable: true,
    	            message:
    	              "object" === typeof error &&
    	              null !== error &&
    	              "string" === typeof error.message
    	                ? String(error.message)
    	                : String(error),
    	            error: error
    	          });
    	          if (!window.dispatchEvent(event)) return;
    	        } else if (
    	          "object" === typeof process &&
    	          "function" === typeof process.emit
    	        ) {
    	          process.emit("uncaughtException", error);
    	          return;
    	        }
    	        console.error(error);
    	      };
    	function noop() {}
    	react_production.Children = {
    	  map: mapChildren,
    	  forEach: function (children, forEachFunc, forEachContext) {
    	    mapChildren(
    	      children,
    	      function () {
    	        forEachFunc.apply(this, arguments);
    	      },
    	      forEachContext
    	    );
    	  },
    	  count: function (children) {
    	    var n = 0;
    	    mapChildren(children, function () {
    	      n++;
    	    });
    	    return n;
    	  },
    	  toArray: function (children) {
    	    return (
    	      mapChildren(children, function (child) {
    	        return child;
    	      }) || []
    	    );
    	  },
    	  only: function (children) {
    	    if (!isValidElement(children))
    	      throw Error(
    	        "React.Children.only expected to receive a single React element child."
    	      );
    	    return children;
    	  }
    	};
    	react_production.Component = Component;
    	react_production.Fragment = REACT_FRAGMENT_TYPE;
    	react_production.Profiler = REACT_PROFILER_TYPE;
    	react_production.PureComponent = PureComponent;
    	react_production.StrictMode = REACT_STRICT_MODE_TYPE;
    	react_production.Suspense = REACT_SUSPENSE_TYPE;
    	react_production.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =
    	  ReactSharedInternals;
    	react_production.__COMPILER_RUNTIME = {
    	  __proto__: null,
    	  c: function (size) {
    	    return ReactSharedInternals.H.useMemoCache(size);
    	  }
    	};
    	react_production.cache = function (fn) {
    	  return function () {
    	    return fn.apply(null, arguments);
    	  };
    	};
    	react_production.cloneElement = function (element, config, children) {
    	  if (null === element || void 0 === element)
    	    throw Error(
    	      "The argument must be a React element, but you passed " + element + "."
    	    );
    	  var props = assign({}, element.props),
    	    key = element.key,
    	    owner = void 0;
    	  if (null != config)
    	    for (propName in (void 0 !== config.ref && (owner = void 0),
    	    void 0 !== config.key && (key = "" + config.key),
    	    config))
    	      !hasOwnProperty.call(config, propName) ||
    	        "key" === propName ||
    	        "__self" === propName ||
    	        "__source" === propName ||
    	        ("ref" === propName && void 0 === config.ref) ||
    	        (props[propName] = config[propName]);
    	  var propName = arguments.length - 2;
    	  if (1 === propName) props.children = children;
    	  else if (1 < propName) {
    	    for (var childArray = Array(propName), i = 0; i < propName; i++)
    	      childArray[i] = arguments[i + 2];
    	    props.children = childArray;
    	  }
    	  return ReactElement(element.type, key, void 0, void 0, owner, props);
    	};
    	react_production.createContext = function (defaultValue) {
    	  defaultValue = {
    	    $$typeof: REACT_CONTEXT_TYPE,
    	    _currentValue: defaultValue,
    	    _currentValue2: defaultValue,
    	    _threadCount: 0,
    	    Provider: null,
    	    Consumer: null
    	  };
    	  defaultValue.Provider = defaultValue;
    	  defaultValue.Consumer = {
    	    $$typeof: REACT_CONSUMER_TYPE,
    	    _context: defaultValue
    	  };
    	  return defaultValue;
    	};
    	react_production.createElement = function (type, config, children) {
    	  var propName,
    	    props = {},
    	    key = null;
    	  if (null != config)
    	    for (propName in (void 0 !== config.key && (key = "" + config.key), config))
    	      hasOwnProperty.call(config, propName) &&
    	        "key" !== propName &&
    	        "__self" !== propName &&
    	        "__source" !== propName &&
    	        (props[propName] = config[propName]);
    	  var childrenLength = arguments.length - 2;
    	  if (1 === childrenLength) props.children = children;
    	  else if (1 < childrenLength) {
    	    for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)
    	      childArray[i] = arguments[i + 2];
    	    props.children = childArray;
    	  }
    	  if (type && type.defaultProps)
    	    for (propName in ((childrenLength = type.defaultProps), childrenLength))
    	      void 0 === props[propName] &&
    	        (props[propName] = childrenLength[propName]);
    	  return ReactElement(type, key, void 0, void 0, null, props);
    	};
    	react_production.createRef = function () {
    	  return { current: null };
    	};
    	react_production.forwardRef = function (render) {
    	  return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };
    	};
    	react_production.isValidElement = isValidElement;
    	react_production.lazy = function (ctor) {
    	  return {
    	    $$typeof: REACT_LAZY_TYPE,
    	    _payload: { _status: -1, _result: ctor },
    	    _init: lazyInitializer
    	  };
    	};
    	react_production.memo = function (type, compare) {
    	  return {
    	    $$typeof: REACT_MEMO_TYPE,
    	    type: type,
    	    compare: void 0 === compare ? null : compare
    	  };
    	};
    	react_production.startTransition = function (scope) {
    	  var prevTransition = ReactSharedInternals.T,
    	    currentTransition = {};
    	  ReactSharedInternals.T = currentTransition;
    	  try {
    	    var returnValue = scope(),
    	      onStartTransitionFinish = ReactSharedInternals.S;
    	    null !== onStartTransitionFinish &&
    	      onStartTransitionFinish(currentTransition, returnValue);
    	    "object" === typeof returnValue &&
    	      null !== returnValue &&
    	      "function" === typeof returnValue.then &&
    	      returnValue.then(noop, reportGlobalError);
    	  } catch (error) {
    	    reportGlobalError(error);
    	  } finally {
    	    ReactSharedInternals.T = prevTransition;
    	  }
    	};
    	react_production.unstable_useCacheRefresh = function () {
    	  return ReactSharedInternals.H.useCacheRefresh();
    	};
    	react_production.use = function (usable) {
    	  return ReactSharedInternals.H.use(usable);
    	};
    	react_production.useActionState = function (action, initialState, permalink) {
    	  return ReactSharedInternals.H.useActionState(action, initialState, permalink);
    	};
    	react_production.useCallback = function (callback, deps) {
    	  return ReactSharedInternals.H.useCallback(callback, deps);
    	};
    	react_production.useContext = function (Context) {
    	  return ReactSharedInternals.H.useContext(Context);
    	};
    	react_production.useDebugValue = function () {};
    	react_production.useDeferredValue = function (value, initialValue) {
    	  return ReactSharedInternals.H.useDeferredValue(value, initialValue);
    	};
    	react_production.useEffect = function (create, createDeps, update) {
    	  var dispatcher = ReactSharedInternals.H;
    	  if ("function" === typeof update)
    	    throw Error(
    	      "useEffect CRUD overload is not enabled in this build of React."
    	    );
    	  return dispatcher.useEffect(create, createDeps);
    	};
    	react_production.useId = function () {
    	  return ReactSharedInternals.H.useId();
    	};
    	react_production.useImperativeHandle = function (ref, create, deps) {
    	  return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);
    	};
    	react_production.useInsertionEffect = function (create, deps) {
    	  return ReactSharedInternals.H.useInsertionEffect(create, deps);
    	};
    	react_production.useLayoutEffect = function (create, deps) {
    	  return ReactSharedInternals.H.useLayoutEffect(create, deps);
    	};
    	react_production.useMemo = function (create, deps) {
    	  return ReactSharedInternals.H.useMemo(create, deps);
    	};
    	react_production.useOptimistic = function (passthrough, reducer) {
    	  return ReactSharedInternals.H.useOptimistic(passthrough, reducer);
    	};
    	react_production.useReducer = function (reducer, initialArg, init) {
    	  return ReactSharedInternals.H.useReducer(reducer, initialArg, init);
    	};
    	react_production.useRef = function (initialValue) {
    	  return ReactSharedInternals.H.useRef(initialValue);
    	};
    	react_production.useState = function (initialState) {
    	  return ReactSharedInternals.H.useState(initialState);
    	};
    	react_production.useSyncExternalStore = function (
    	  subscribe,
    	  getSnapshot,
    	  getServerSnapshot
    	) {
    	  return ReactSharedInternals.H.useSyncExternalStore(
    	    subscribe,
    	    getSnapshot,
    	    getServerSnapshot
    	  );
    	};
    	react_production.useTransition = function () {
    	  return ReactSharedInternals.H.useTransition();
    	};
    	react_production.version = "19.1.0";
    	return react_production;
    }

    var hasRequiredReact;

    function requireReact () {
    	if (hasRequiredReact) return react.exports;
    	hasRequiredReact = 1;

    	{
    	  react.exports = requireReact_production();
    	}
    	return react.exports;
    }

    var reactExports = requireReact();

    function createCharacterStore(name) {
        return new CharacterStoreImpl(name);
    }
    function useStoreData(store) {
        const [data, setData] = reactExports.useState(store.dataOrNull());
        reactExports.useEffect(() => {
            const subscription = store.dataSubject.subscribe(setData);
            return () => subscription.unsubscribe();
        });
        return data;
    }
    class CharacterStoreImpl {
        constructor(name) {
            this._data = null;
            this.dataSubject = new ReplaySubject(1);
            this.name = name;
        }
        get data() {
            if (!this._data) {
                throw new Error("Data not initialized");
            }
            return this._data;
        }
        set data(data) {
            const changed = this._data !== data;
            if (changed) {
                this._data = data;
                this.dataSubject.next(data);
            }
        }
        dataOrNull() {
            return this._data;
        }
    }

    const store$3 = createCharacterStore("engine-character");
    function currentCharacter() {
        return store$3.data;
    }
    InitCharacterSubject.subscribe((data) => {
        store$3.data = Object.assign({ drinkSlots: data.actionTypeDrinkSlotsMap, noncombatStats: data.noncombatStats }, initSkill(data));
        log$1("character-initialized", { "character": store$3.data });
        CharacterLoadedEvent.complete();
    });
    function initSkill(data) {
        const skills = Object.values(AllActionType).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: data.characterSkills.find((skill) => skill.skillHrid === getSkillHrid(key)) || null })), {});
        return {
            skills,
        };
    }
    let currentActionData = null;
    function updateCurrentActionData(newActionData) {
        const previousAction = currentActionData;
        currentActionData = newActionData;
        if ((previousAction === null || previousAction === void 0 ? void 0 : previousAction.actionHrid) === newActionData.actionHrid) {
            return newActionData.currentCount - previousAction.currentCount;
        }
        return 0;
    }

    const store$2 = createCharacterStore("inventory");
    InitCharacterSubject.subscribe(data => {
        const localInventory = {};
        data.characterItems.forEach((item) => {
            var _a;
            if (item.itemLocationHrid !== "/item_locations/inventory") {
                return;
            }
            localInventory[item.itemHrid] = (_a = localInventory[item.itemHrid]) !== null && _a !== void 0 ? _a : {};
            localInventory[item.itemHrid][item.enhancementLevel] = item.count;
        });
        store$2.data = localInventory;
    });
    function updateInventory(data) {
        const inventory = store$2.data;
        const diffs = data
            .filter(item => item.itemLocationHrid === "/item_locations/inventory")
            .map((item) => {
            var _a, _b;
            inventory[item.itemHrid] = (_a = inventory[item.itemHrid]) !== null && _a !== void 0 ? _a : {};
            const before = (_b = inventory[item.itemHrid][item.enhancementLevel]) !== null && _b !== void 0 ? _b : 0;
            const diff = item.count - before;
            inventory[item.itemHrid][item.enhancementLevel] = item.count;
            return { itemHrid: item.itemHrid, count: diff };
        });
        return {
            added: diffs.filter(diff => diff.count > 0),
            removed: diffs.filter(diff => diff.count < 0),
        };
    }

    function setupEngineHook() {
        unsafeWindow.WebSocket = new Proxy(WebSocket, {
            construct(target, args) {
                const ws = new target(...args);
                ws.addEventListener("message", (event) => {
                    processMessage(JSON.parse(event.data));
                });
                return ws;
            }
        });
        if (localStorage.getItem("initClientData") != null) {
            processMessage(JSON.parse(localStorage.getItem("initClientData")));
        }
    }
    function processMessage(data) {
        if (!data.hasOwnProperty("type") || typeof data.type !== "string") {
            // ignore unknown messages
            return;
        }
        if (data.type === "chat_message_received") {
            // ignore chat messages
            return;
        }
        log$1("handle-message", { "type": data.type});
        switch (data.type) {
            case "init_character_data":
                InitCharacterSubject.next(data);
                break;
            case "init_client_data":
                InitClientSubject.next(data);
                break;
            case "loot_log_updated":
                LootLogSubject.next(data);
                break;
            case "action_completed":
                processActionComplete(data);
                break;
        }
    }
    function processActionComplete(data) {
        var _a;
        const count = updateCurrentActionData(data.endCharacterAction);
        const { added, removed } = updateInventory((_a = data.endCharacterItems) !== null && _a !== void 0 ? _a : []);
        ActionCompleteEvent.next({
            hrid: data.endCharacterAction.actionHrid,
            updatedAt: data.endCharacterAction.updatedAt,
            added, removed, count,
        });
    }

    function getItemName(itemHrid) {
        var _a, _b;
        return (_b = (_a = getClientData().itemDetailMap[itemHrid]) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : itemHrid;
    }
    function isItemOpenable(itemHrid) {
        return getClientData().openableLootDropMap[itemHrid] !== undefined;
    }
    function getOpenableItem(itemHrid) {
        if (!isItemOpenable(itemHrid)) {
            return null;
        }
        const dropInfos = getClientData().openableLootDropMap[itemHrid];
        const selfDrop = dropInfos.filter((dropInfo) => dropInfo.itemHrid === itemHrid)
            .reduce((acc, dropInfo) => acc +
            (dropInfo.dropRate * (dropInfo.maxCount + dropInfo.minCount) / 2), 0);
        const drops = dropInfos.filter((dropInfo) => dropInfo.itemHrid !== itemHrid)
            .reduce((acc, dropInfo) => {
            var _a;
            acc[dropInfo.itemHrid] = ((_a = acc[dropInfo.itemHrid]) !== null && _a !== void 0 ? _a : 0) + dropInfo.dropRate * (dropInfo.maxCount + dropInfo.minCount) / 2;
            return acc;
        }, {});
        return {
            hrid: itemHrid,
            selfDrop,
            drops,
        };
    }

    const MarketSource = "game_data/marketplace.json";
    let markerData = null;
    function getMarketData() {
        if (!markerData) {
            throw new Error("Market data not loaded");
        }
        return markerData;
    }
    function getSellPriceByHrid(hrid, enhancementLevel = 0) {
        return getPriceByHrid(hrid, "b", enhancementLevel);
    }
    function getBuyPriceByHrid(hrid, enhancementLevel = 0) {
        return getPriceByHrid(hrid, "a", enhancementLevel);
    }
    function getPriceByHrid(hrid, field, enhancementLevel = 0) {
        if (hrid === "/items/coin") {
            // Coin is always 1
            return 1;
        }
        if (getMarketData().marketData[hrid] === undefined) {
            if (isItemOpenable(hrid)) {
                const openableItem = getOpenableItem(hrid);
                const otherSellAmount = Object.entries(openableItem.drops).reduce((acc, [dropHrid, dropCount]) => acc +
                    getPriceByHrid(dropHrid, field) * dropCount, 0);
                // The other sell amount is the remaining part except self-drop
                return otherSellAmount / (1 - openableItem.selfDrop);
            }
            return 0;
        }
        return getMarketData().marketData[hrid][enhancementLevel.toString()][field];
    }
    function setupMarketData() {
        return __awaiter(this, void 0, void 0, function* () {
            if (GM_getValue("marketdata", false)) {
                markerData = JSON.parse(GM_getValue("marketdata", "{}"));
                MarketLoadedEvent.complete();
                if (Date.now() / 1000 - markerData.timestamp <= 6 * 60 * 60) {
                    return;
                }
            }
            markerData = (yield (yield fetch(MarketSource)).json());
            GM_setValue("marketdata", JSON.stringify(markerData));
            MarketLoadedEvent.complete();
        });
    }

    function uniqueStrings(arr) {
        return Array.from(new Set(arr)).sort();
    }

    function useRecentValues(obs) {
        const [values, setValues] = reactExports.useState([]);
        reactExports.useEffect(() => {
            const subscription = obs.subscribe(v => {
                setValues(previous => [...previous, v]);
            });
            return () => {
                subscription.unsubscribe();
            };
        }, [obs]);
        return values;
    }
    function useLatestValue(obs) {
        const [value, setValue] = reactExports.useState(null);
        reactExports.useEffect(() => {
            const subscription = obs.subscribe(setValue);
            return () => {
                subscription.unsubscribe();
            };
        }, [obs]);
        return value;
    }

    const SettingUpdate = new Subject();
    function saveSettings(name, settings) {
        GM_setValue(name, JSON.stringify(settings));
        SettingUpdate.next({ setting: name, value: settings });
    }
    function loadSettings(name, default_value) {
        const value = GM_getValue(name, null);
        if (value === null) {
            return default_value;
        }
        return JSON.parse(value);
    }
    function useSettings(name, default_value) {
        const [value, setValue] = reactExports.useState(loadSettings(name, default_value));
        reactExports.useEffect(() => {
            const subscription = SettingUpdate.subscribe({
                next: ({ setting, value }) => {
                    if (setting === name) {
                        setValue(value);
                    }
                }
            });
            return () => {
                subscription.unsubscribe();
            };
        }, [name]);
        return value;
    }

    var NumberFormat;
    (function (NumberFormat) {
        NumberFormat["Short"] = "short";
        NumberFormat["Full"] = "full";
    })(NumberFormat || (NumberFormat = {}));
    function ShowNumber({ value }) {
        const format = useSettings("number.format", NumberFormat.Short);
        switch (format) {
            default:
            case NumberFormat.Short:
                return reactExports.createElement(reactExports.Fragment, null, formatWithSuffixes(value));
            case NumberFormat.Full:
                return reactExports.createElement(reactExports.Fragment, null, formatWithThousandsSeparators(value));
        }
    }
    function ShowPercent({ value }) {
        return reactExports.createElement(reactExports.Fragment, null,
            (value * 100).toPrecision(4),
            "%");
    }
    function formatWithThousandsSeparators(num) {
        if (num < 1e-2) {
            return new Intl.NumberFormat("en-US", { useGrouping: true, maximumFractionDigits: 6 }).format(num);
        }
        else if (num < 1) {
            return new Intl.NumberFormat("en-US", { useGrouping: true, maximumFractionDigits: 4 }).format(num);
        }
        else {
            return new Intl.NumberFormat("en-US", { useGrouping: true, maximumFractionDigits: 2 }).format(num);
        }
    }
    function formatWithSuffixes(num) {
        if (num === 0) {
            return '0';
        }
        const absNum = Math.abs(num);
        if (absNum >= 1e13) {
            // >= 10T
            return formatWithThousandsSeparators(num / 1e12) + 'T';
        }
        if (absNum >= 1e10) {
            // >= 10B
            return formatWithThousandsSeparators(num / 1e9) + 'B';
        }
        if (absNum >= 1e7) {
            // >= 10M
            return formatWithThousandsSeparators(num / 1e6) + 'M';
        }
        if (absNum >= 1e4) {
            // >= 10K
            return formatWithThousandsSeparators(num / 1e3) + 'K';
        }
        return formatWithThousandsSeparators(num);
    }

    var client = {exports: {}};

    var reactDomClient_production = {};

    var scheduler = {exports: {}};

    var scheduler_production = {};

    /**
     * @license React
     * scheduler.production.js
     *
     * Copyright (c) Meta Platforms, Inc. and affiliates.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredScheduler_production;

    function requireScheduler_production () {
    	if (hasRequiredScheduler_production) return scheduler_production;
    	hasRequiredScheduler_production = 1;
    	(function (exports) {
    		function push(heap, node) {
    		  var index = heap.length;
    		  heap.push(node);
    		  a: for (; 0 < index; ) {
    		    var parentIndex = (index - 1) >>> 1,
    		      parent = heap[parentIndex];
    		    if (0 < compare(parent, node))
    		      (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);
    		    else break a;
    		  }
    		}
    		function peek(heap) {
    		  return 0 === heap.length ? null : heap[0];
    		}
    		function pop(heap) {
    		  if (0 === heap.length) return null;
    		  var first = heap[0],
    		    last = heap.pop();
    		  if (last !== first) {
    		    heap[0] = last;
    		    a: for (
    		      var index = 0, length = heap.length, halfLength = length >>> 1;
    		      index < halfLength;

    		    ) {
    		      var leftIndex = 2 * (index + 1) - 1,
    		        left = heap[leftIndex],
    		        rightIndex = leftIndex + 1,
    		        right = heap[rightIndex];
    		      if (0 > compare(left, last))
    		        rightIndex < length && 0 > compare(right, left)
    		          ? ((heap[index] = right),
    		            (heap[rightIndex] = last),
    		            (index = rightIndex))
    		          : ((heap[index] = left),
    		            (heap[leftIndex] = last),
    		            (index = leftIndex));
    		      else if (rightIndex < length && 0 > compare(right, last))
    		        (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);
    		      else break a;
    		    }
    		  }
    		  return first;
    		}
    		function compare(a, b) {
    		  var diff = a.sortIndex - b.sortIndex;
    		  return 0 !== diff ? diff : a.id - b.id;
    		}
    		exports.unstable_now = void 0;
    		if ("object" === typeof performance && "function" === typeof performance.now) {
    		  var localPerformance = performance;
    		  exports.unstable_now = function () {
    		    return localPerformance.now();
    		  };
    		} else {
    		  var localDate = Date,
    		    initialTime = localDate.now();
    		  exports.unstable_now = function () {
    		    return localDate.now() - initialTime;
    		  };
    		}
    		var taskQueue = [],
    		  timerQueue = [],
    		  taskIdCounter = 1,
    		  currentTask = null,
    		  currentPriorityLevel = 3,
    		  isPerformingWork = false,
    		  isHostCallbackScheduled = false,
    		  isHostTimeoutScheduled = false,
    		  needsPaint = false,
    		  localSetTimeout = "function" === typeof setTimeout ? setTimeout : null,
    		  localClearTimeout = "function" === typeof clearTimeout ? clearTimeout : null,
    		  localSetImmediate = "undefined" !== typeof setImmediate ? setImmediate : null;
    		function advanceTimers(currentTime) {
    		  for (var timer = peek(timerQueue); null !== timer; ) {
    		    if (null === timer.callback) pop(timerQueue);
    		    else if (timer.startTime <= currentTime)
    		      pop(timerQueue),
    		        (timer.sortIndex = timer.expirationTime),
    		        push(taskQueue, timer);
    		    else break;
    		    timer = peek(timerQueue);
    		  }
    		}
    		function handleTimeout(currentTime) {
    		  isHostTimeoutScheduled = false;
    		  advanceTimers(currentTime);
    		  if (!isHostCallbackScheduled)
    		    if (null !== peek(taskQueue))
    		      (isHostCallbackScheduled = true),
    		        isMessageLoopRunning ||
    		          ((isMessageLoopRunning = true), schedulePerformWorkUntilDeadline());
    		    else {
    		      var firstTimer = peek(timerQueue);
    		      null !== firstTimer &&
    		        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
    		    }
    		}
    		var isMessageLoopRunning = false,
    		  taskTimeoutID = -1,
    		  frameInterval = 5,
    		  startTime = -1;
    		function shouldYieldToHost() {
    		  return needsPaint
    		    ? true
    		    : exports.unstable_now() - startTime < frameInterval
    		      ? false
    		      : true;
    		}
    		function performWorkUntilDeadline() {
    		  needsPaint = false;
    		  if (isMessageLoopRunning) {
    		    var currentTime = exports.unstable_now();
    		    startTime = currentTime;
    		    var hasMoreWork = true;
    		    try {
    		      a: {
    		        isHostCallbackScheduled = !1;
    		        isHostTimeoutScheduled &&
    		          ((isHostTimeoutScheduled = !1),
    		          localClearTimeout(taskTimeoutID),
    		          (taskTimeoutID = -1));
    		        isPerformingWork = !0;
    		        var previousPriorityLevel = currentPriorityLevel;
    		        try {
    		          b: {
    		            advanceTimers(currentTime);
    		            for (
    		              currentTask = peek(taskQueue);
    		              null !== currentTask &&
    		              !(
    		                currentTask.expirationTime > currentTime && shouldYieldToHost()
    		              );

    		            ) {
    		              var callback = currentTask.callback;
    		              if ("function" === typeof callback) {
    		                currentTask.callback = null;
    		                currentPriorityLevel = currentTask.priorityLevel;
    		                var continuationCallback = callback(
    		                  currentTask.expirationTime <= currentTime
    		                );
    		                currentTime = exports.unstable_now();
    		                if ("function" === typeof continuationCallback) {
    		                  currentTask.callback = continuationCallback;
    		                  advanceTimers(currentTime);
    		                  hasMoreWork = !0;
    		                  break b;
    		                }
    		                currentTask === peek(taskQueue) && pop(taskQueue);
    		                advanceTimers(currentTime);
    		              } else pop(taskQueue);
    		              currentTask = peek(taskQueue);
    		            }
    		            if (null !== currentTask) hasMoreWork = !0;
    		            else {
    		              var firstTimer = peek(timerQueue);
    		              null !== firstTimer &&
    		                requestHostTimeout(
    		                  handleTimeout,
    		                  firstTimer.startTime - currentTime
    		                );
    		              hasMoreWork = !1;
    		            }
    		          }
    		          break a;
    		        } finally {
    		          (currentTask = null),
    		            (currentPriorityLevel = previousPriorityLevel),
    		            (isPerformingWork = !1);
    		        }
    		        hasMoreWork = void 0;
    		      }
    		    } finally {
    		      hasMoreWork
    		        ? schedulePerformWorkUntilDeadline()
    		        : (isMessageLoopRunning = false);
    		    }
    		  }
    		}
    		var schedulePerformWorkUntilDeadline;
    		if ("function" === typeof localSetImmediate)
    		  schedulePerformWorkUntilDeadline = function () {
    		    localSetImmediate(performWorkUntilDeadline);
    		  };
    		else if ("undefined" !== typeof MessageChannel) {
    		  var channel = new MessageChannel(),
    		    port = channel.port2;
    		  channel.port1.onmessage = performWorkUntilDeadline;
    		  schedulePerformWorkUntilDeadline = function () {
    		    port.postMessage(null);
    		  };
    		} else
    		  schedulePerformWorkUntilDeadline = function () {
    		    localSetTimeout(performWorkUntilDeadline, 0);
    		  };
    		function requestHostTimeout(callback, ms) {
    		  taskTimeoutID = localSetTimeout(function () {
    		    callback(exports.unstable_now());
    		  }, ms);
    		}
    		exports.unstable_IdlePriority = 5;
    		exports.unstable_ImmediatePriority = 1;
    		exports.unstable_LowPriority = 4;
    		exports.unstable_NormalPriority = 3;
    		exports.unstable_Profiling = null;
    		exports.unstable_UserBlockingPriority = 2;
    		exports.unstable_cancelCallback = function (task) {
    		  task.callback = null;
    		};
    		exports.unstable_forceFrameRate = function (fps) {
    		  0 > fps || 125 < fps
    		    ? console.error(
    		        "forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"
    		      )
    		    : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);
    		};
    		exports.unstable_getCurrentPriorityLevel = function () {
    		  return currentPriorityLevel;
    		};
    		exports.unstable_next = function (eventHandler) {
    		  switch (currentPriorityLevel) {
    		    case 1:
    		    case 2:
    		    case 3:
    		      var priorityLevel = 3;
    		      break;
    		    default:
    		      priorityLevel = currentPriorityLevel;
    		  }
    		  var previousPriorityLevel = currentPriorityLevel;
    		  currentPriorityLevel = priorityLevel;
    		  try {
    		    return eventHandler();
    		  } finally {
    		    currentPriorityLevel = previousPriorityLevel;
    		  }
    		};
    		exports.unstable_requestPaint = function () {
    		  needsPaint = true;
    		};
    		exports.unstable_runWithPriority = function (priorityLevel, eventHandler) {
    		  switch (priorityLevel) {
    		    case 1:
    		    case 2:
    		    case 3:
    		    case 4:
    		    case 5:
    		      break;
    		    default:
    		      priorityLevel = 3;
    		  }
    		  var previousPriorityLevel = currentPriorityLevel;
    		  currentPriorityLevel = priorityLevel;
    		  try {
    		    return eventHandler();
    		  } finally {
    		    currentPriorityLevel = previousPriorityLevel;
    		  }
    		};
    		exports.unstable_scheduleCallback = function (
    		  priorityLevel,
    		  callback,
    		  options
    		) {
    		  var currentTime = exports.unstable_now();
    		  "object" === typeof options && null !== options
    		    ? ((options = options.delay),
    		      (options =
    		        "number" === typeof options && 0 < options
    		          ? currentTime + options
    		          : currentTime))
    		    : (options = currentTime);
    		  switch (priorityLevel) {
    		    case 1:
    		      var timeout = -1;
    		      break;
    		    case 2:
    		      timeout = 250;
    		      break;
    		    case 5:
    		      timeout = 1073741823;
    		      break;
    		    case 4:
    		      timeout = 1e4;
    		      break;
    		    default:
    		      timeout = 5e3;
    		  }
    		  timeout = options + timeout;
    		  priorityLevel = {
    		    id: taskIdCounter++,
    		    callback: callback,
    		    priorityLevel: priorityLevel,
    		    startTime: options,
    		    expirationTime: timeout,
    		    sortIndex: -1
    		  };
    		  options > currentTime
    		    ? ((priorityLevel.sortIndex = options),
    		      push(timerQueue, priorityLevel),
    		      null === peek(taskQueue) &&
    		        priorityLevel === peek(timerQueue) &&
    		        (isHostTimeoutScheduled
    		          ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))
    		          : (isHostTimeoutScheduled = true),
    		        requestHostTimeout(handleTimeout, options - currentTime)))
    		    : ((priorityLevel.sortIndex = timeout),
    		      push(taskQueue, priorityLevel),
    		      isHostCallbackScheduled ||
    		        isPerformingWork ||
    		        ((isHostCallbackScheduled = true),
    		        isMessageLoopRunning ||
    		          ((isMessageLoopRunning = true), schedulePerformWorkUntilDeadline())));
    		  return priorityLevel;
    		};
    		exports.unstable_shouldYield = shouldYieldToHost;
    		exports.unstable_wrapCallback = function (callback) {
    		  var parentPriorityLevel = currentPriorityLevel;
    		  return function () {
    		    var previousPriorityLevel = currentPriorityLevel;
    		    currentPriorityLevel = parentPriorityLevel;
    		    try {
    		      return callback.apply(this, arguments);
    		    } finally {
    		      currentPriorityLevel = previousPriorityLevel;
    		    }
    		  };
    		}; 
    	} (scheduler_production));
    	return scheduler_production;
    }

    var hasRequiredScheduler;

    function requireScheduler () {
    	if (hasRequiredScheduler) return scheduler.exports;
    	hasRequiredScheduler = 1;

    	{
    	  scheduler.exports = requireScheduler_production();
    	}
    	return scheduler.exports;
    }

    var reactDom = {exports: {}};

    var reactDom_production = {};

    /**
     * @license React
     * react-dom.production.js
     *
     * Copyright (c) Meta Platforms, Inc. and affiliates.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredReactDom_production;

    function requireReactDom_production () {
    	if (hasRequiredReactDom_production) return reactDom_production;
    	hasRequiredReactDom_production = 1;
    	var React = requireReact();
    	function formatProdErrorMessage(code) {
    	  var url = "https://react.dev/errors/" + code;
    	  if (1 < arguments.length) {
    	    url += "?args[]=" + encodeURIComponent(arguments[1]);
    	    for (var i = 2; i < arguments.length; i++)
    	      url += "&args[]=" + encodeURIComponent(arguments[i]);
    	  }
    	  return (
    	    "Minified React error #" +
    	    code +
    	    "; visit " +
    	    url +
    	    " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
    	  );
    	}
    	function noop() {}
    	var Internals = {
    	    d: {
    	      f: noop,
    	      r: function () {
    	        throw Error(formatProdErrorMessage(522));
    	      },
    	      D: noop,
    	      C: noop,
    	      L: noop,
    	      m: noop,
    	      X: noop,
    	      S: noop,
    	      M: noop
    	    },
    	    p: 0,
    	    findDOMNode: null
    	  },
    	  REACT_PORTAL_TYPE = Symbol.for("react.portal");
    	function createPortal$1(children, containerInfo, implementation) {
    	  var key =
    	    3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
    	  return {
    	    $$typeof: REACT_PORTAL_TYPE,
    	    key: null == key ? null : "" + key,
    	    children: children,
    	    containerInfo: containerInfo,
    	    implementation: implementation
    	  };
    	}
    	var ReactSharedInternals =
    	  React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
    	function getCrossOriginStringAs(as, input) {
    	  if ("font" === as) return "";
    	  if ("string" === typeof input)
    	    return "use-credentials" === input ? input : "";
    	}
    	reactDom_production.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =
    	  Internals;
    	reactDom_production.createPortal = function (children, container) {
    	  var key =
    	    2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;
    	  if (
    	    !container ||
    	    (1 !== container.nodeType &&
    	      9 !== container.nodeType &&
    	      11 !== container.nodeType)
    	  )
    	    throw Error(formatProdErrorMessage(299));
    	  return createPortal$1(children, container, null, key);
    	};
    	reactDom_production.flushSync = function (fn) {
    	  var previousTransition = ReactSharedInternals.T,
    	    previousUpdatePriority = Internals.p;
    	  try {
    	    if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();
    	  } finally {
    	    (ReactSharedInternals.T = previousTransition),
    	      (Internals.p = previousUpdatePriority),
    	      Internals.d.f();
    	  }
    	};
    	reactDom_production.preconnect = function (href, options) {
    	  "string" === typeof href &&
    	    (options
    	      ? ((options = options.crossOrigin),
    	        (options =
    	          "string" === typeof options
    	            ? "use-credentials" === options
    	              ? options
    	              : ""
    	            : void 0))
    	      : (options = null),
    	    Internals.d.C(href, options));
    	};
    	reactDom_production.prefetchDNS = function (href) {
    	  "string" === typeof href && Internals.d.D(href);
    	};
    	reactDom_production.preinit = function (href, options) {
    	  if ("string" === typeof href && options && "string" === typeof options.as) {
    	    var as = options.as,
    	      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),
    	      integrity =
    	        "string" === typeof options.integrity ? options.integrity : void 0,
    	      fetchPriority =
    	        "string" === typeof options.fetchPriority
    	          ? options.fetchPriority
    	          : void 0;
    	    "style" === as
    	      ? Internals.d.S(
    	          href,
    	          "string" === typeof options.precedence ? options.precedence : void 0,
    	          {
    	            crossOrigin: crossOrigin,
    	            integrity: integrity,
    	            fetchPriority: fetchPriority
    	          }
    	        )
    	      : "script" === as &&
    	        Internals.d.X(href, {
    	          crossOrigin: crossOrigin,
    	          integrity: integrity,
    	          fetchPriority: fetchPriority,
    	          nonce: "string" === typeof options.nonce ? options.nonce : void 0
    	        });
    	  }
    	};
    	reactDom_production.preinitModule = function (href, options) {
    	  if ("string" === typeof href)
    	    if ("object" === typeof options && null !== options) {
    	      if (null == options.as || "script" === options.as) {
    	        var crossOrigin = getCrossOriginStringAs(
    	          options.as,
    	          options.crossOrigin
    	        );
    	        Internals.d.M(href, {
    	          crossOrigin: crossOrigin,
    	          integrity:
    	            "string" === typeof options.integrity ? options.integrity : void 0,
    	          nonce: "string" === typeof options.nonce ? options.nonce : void 0
    	        });
    	      }
    	    } else null == options && Internals.d.M(href);
    	};
    	reactDom_production.preload = function (href, options) {
    	  if (
    	    "string" === typeof href &&
    	    "object" === typeof options &&
    	    null !== options &&
    	    "string" === typeof options.as
    	  ) {
    	    var as = options.as,
    	      crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);
    	    Internals.d.L(href, as, {
    	      crossOrigin: crossOrigin,
    	      integrity:
    	        "string" === typeof options.integrity ? options.integrity : void 0,
    	      nonce: "string" === typeof options.nonce ? options.nonce : void 0,
    	      type: "string" === typeof options.type ? options.type : void 0,
    	      fetchPriority:
    	        "string" === typeof options.fetchPriority
    	          ? options.fetchPriority
    	          : void 0,
    	      referrerPolicy:
    	        "string" === typeof options.referrerPolicy
    	          ? options.referrerPolicy
    	          : void 0,
    	      imageSrcSet:
    	        "string" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,
    	      imageSizes:
    	        "string" === typeof options.imageSizes ? options.imageSizes : void 0,
    	      media: "string" === typeof options.media ? options.media : void 0
    	    });
    	  }
    	};
    	reactDom_production.preloadModule = function (href, options) {
    	  if ("string" === typeof href)
    	    if (options) {
    	      var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);
    	      Internals.d.m(href, {
    	        as:
    	          "string" === typeof options.as && "script" !== options.as
    	            ? options.as
    	            : void 0,
    	        crossOrigin: crossOrigin,
    	        integrity:
    	          "string" === typeof options.integrity ? options.integrity : void 0
    	      });
    	    } else Internals.d.m(href);
    	};
    	reactDom_production.requestFormReset = function (form) {
    	  Internals.d.r(form);
    	};
    	reactDom_production.unstable_batchedUpdates = function (fn, a) {
    	  return fn(a);
    	};
    	reactDom_production.useFormState = function (action, initialState, permalink) {
    	  return ReactSharedInternals.H.useFormState(action, initialState, permalink);
    	};
    	reactDom_production.useFormStatus = function () {
    	  return ReactSharedInternals.H.useHostTransitionStatus();
    	};
    	reactDom_production.version = "19.1.0";
    	return reactDom_production;
    }

    var hasRequiredReactDom;

    function requireReactDom () {
    	if (hasRequiredReactDom) return reactDom.exports;
    	hasRequiredReactDom = 1;

    	function checkDCE() {
    	  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
    	  if (
    	    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
    	    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
    	  ) {
    	    return;
    	  }
    	  try {
    	    // Verify that the code above has been dead code eliminated (DCE'd).
    	    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
    	  } catch (err) {
    	    // DevTools shouldn't crash React, no matter what.
    	    // We should still report in case we break this code.
    	    console.error(err);
    	  }
    	}

    	{
    	  // DCE check should happen before ReactDOM bundle executes so that
    	  // DevTools can report bad minification during injection.
    	  checkDCE();
    	  reactDom.exports = requireReactDom_production();
    	}
    	return reactDom.exports;
    }

    /**
     * @license React
     * react-dom-client.production.js
     *
     * Copyright (c) Meta Platforms, Inc. and affiliates.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredReactDomClient_production;

    function requireReactDomClient_production () {
    	if (hasRequiredReactDomClient_production) return reactDomClient_production;
    	hasRequiredReactDomClient_production = 1;
    	var Scheduler = requireScheduler(),
    	  React = requireReact(),
    	  ReactDOM = requireReactDom();
    	function formatProdErrorMessage(code) {
    	  var url = "https://react.dev/errors/" + code;
    	  if (1 < arguments.length) {
    	    url += "?args[]=" + encodeURIComponent(arguments[1]);
    	    for (var i = 2; i < arguments.length; i++)
    	      url += "&args[]=" + encodeURIComponent(arguments[i]);
    	  }
    	  return (
    	    "Minified React error #" +
    	    code +
    	    "; visit " +
    	    url +
    	    " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."
    	  );
    	}
    	function isValidContainer(node) {
    	  return !(
    	    !node ||
    	    (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)
    	  );
    	}
    	function getNearestMountedFiber(fiber) {
    	  var node = fiber,
    	    nearestMounted = fiber;
    	  if (fiber.alternate) for (; node.return; ) node = node.return;
    	  else {
    	    fiber = node;
    	    do
    	      (node = fiber),
    	        0 !== (node.flags & 4098) && (nearestMounted = node.return),
    	        (fiber = node.return);
    	    while (fiber);
    	  }
    	  return 3 === node.tag ? nearestMounted : null;
    	}
    	function getSuspenseInstanceFromFiber(fiber) {
    	  if (13 === fiber.tag) {
    	    var suspenseState = fiber.memoizedState;
    	    null === suspenseState &&
    	      ((fiber = fiber.alternate),
    	      null !== fiber && (suspenseState = fiber.memoizedState));
    	    if (null !== suspenseState) return suspenseState.dehydrated;
    	  }
    	  return null;
    	}
    	function assertIsMounted(fiber) {
    	  if (getNearestMountedFiber(fiber) !== fiber)
    	    throw Error(formatProdErrorMessage(188));
    	}
    	function findCurrentFiberUsingSlowPath(fiber) {
    	  var alternate = fiber.alternate;
    	  if (!alternate) {
    	    alternate = getNearestMountedFiber(fiber);
    	    if (null === alternate) throw Error(formatProdErrorMessage(188));
    	    return alternate !== fiber ? null : fiber;
    	  }
    	  for (var a = fiber, b = alternate; ; ) {
    	    var parentA = a.return;
    	    if (null === parentA) break;
    	    var parentB = parentA.alternate;
    	    if (null === parentB) {
    	      b = parentA.return;
    	      if (null !== b) {
    	        a = b;
    	        continue;
    	      }
    	      break;
    	    }
    	    if (parentA.child === parentB.child) {
    	      for (parentB = parentA.child; parentB; ) {
    	        if (parentB === a) return assertIsMounted(parentA), fiber;
    	        if (parentB === b) return assertIsMounted(parentA), alternate;
    	        parentB = parentB.sibling;
    	      }
    	      throw Error(formatProdErrorMessage(188));
    	    }
    	    if (a.return !== b.return) (a = parentA), (b = parentB);
    	    else {
    	      for (var didFindChild = false, child$0 = parentA.child; child$0; ) {
    	        if (child$0 === a) {
    	          didFindChild = true;
    	          a = parentA;
    	          b = parentB;
    	          break;
    	        }
    	        if (child$0 === b) {
    	          didFindChild = true;
    	          b = parentA;
    	          a = parentB;
    	          break;
    	        }
    	        child$0 = child$0.sibling;
    	      }
    	      if (!didFindChild) {
    	        for (child$0 = parentB.child; child$0; ) {
    	          if (child$0 === a) {
    	            didFindChild = true;
    	            a = parentB;
    	            b = parentA;
    	            break;
    	          }
    	          if (child$0 === b) {
    	            didFindChild = true;
    	            b = parentB;
    	            a = parentA;
    	            break;
    	          }
    	          child$0 = child$0.sibling;
    	        }
    	        if (!didFindChild) throw Error(formatProdErrorMessage(189));
    	      }
    	    }
    	    if (a.alternate !== b) throw Error(formatProdErrorMessage(190));
    	  }
    	  if (3 !== a.tag) throw Error(formatProdErrorMessage(188));
    	  return a.stateNode.current === a ? fiber : alternate;
    	}
    	function findCurrentHostFiberImpl(node) {
    	  var tag = node.tag;
    	  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;
    	  for (node = node.child; null !== node; ) {
    	    tag = findCurrentHostFiberImpl(node);
    	    if (null !== tag) return tag;
    	    node = node.sibling;
    	  }
    	  return null;
    	}
    	var assign = Object.assign,
    	  REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"),
    	  REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
    	  REACT_PORTAL_TYPE = Symbol.for("react.portal"),
    	  REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
    	  REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
    	  REACT_PROFILER_TYPE = Symbol.for("react.profiler"),
    	  REACT_PROVIDER_TYPE = Symbol.for("react.provider"),
    	  REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
    	  REACT_CONTEXT_TYPE = Symbol.for("react.context"),
    	  REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
    	  REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
    	  REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
    	  REACT_MEMO_TYPE = Symbol.for("react.memo"),
    	  REACT_LAZY_TYPE = Symbol.for("react.lazy");
    	var REACT_ACTIVITY_TYPE = Symbol.for("react.activity");
    	var REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel");
    	var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
    	function getIteratorFn(maybeIterable) {
    	  if (null === maybeIterable || "object" !== typeof maybeIterable) return null;
    	  maybeIterable =
    	    (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||
    	    maybeIterable["@@iterator"];
    	  return "function" === typeof maybeIterable ? maybeIterable : null;
    	}
    	var REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference");
    	function getComponentNameFromType(type) {
    	  if (null == type) return null;
    	  if ("function" === typeof type)
    	    return type.$$typeof === REACT_CLIENT_REFERENCE
    	      ? null
    	      : type.displayName || type.name || null;
    	  if ("string" === typeof type) return type;
    	  switch (type) {
    	    case REACT_FRAGMENT_TYPE:
    	      return "Fragment";
    	    case REACT_PROFILER_TYPE:
    	      return "Profiler";
    	    case REACT_STRICT_MODE_TYPE:
    	      return "StrictMode";
    	    case REACT_SUSPENSE_TYPE:
    	      return "Suspense";
    	    case REACT_SUSPENSE_LIST_TYPE:
    	      return "SuspenseList";
    	    case REACT_ACTIVITY_TYPE:
    	      return "Activity";
    	  }
    	  if ("object" === typeof type)
    	    switch (type.$$typeof) {
    	      case REACT_PORTAL_TYPE:
    	        return "Portal";
    	      case REACT_CONTEXT_TYPE:
    	        return (type.displayName || "Context") + ".Provider";
    	      case REACT_CONSUMER_TYPE:
    	        return (type._context.displayName || "Context") + ".Consumer";
    	      case REACT_FORWARD_REF_TYPE:
    	        var innerType = type.render;
    	        type = type.displayName;
    	        type ||
    	          ((type = innerType.displayName || innerType.name || ""),
    	          (type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"));
    	        return type;
    	      case REACT_MEMO_TYPE:
    	        return (
    	          (innerType = type.displayName || null),
    	          null !== innerType
    	            ? innerType
    	            : getComponentNameFromType(type.type) || "Memo"
    	        );
    	      case REACT_LAZY_TYPE:
    	        innerType = type._payload;
    	        type = type._init;
    	        try {
    	          return getComponentNameFromType(type(innerType));
    	        } catch (x) {}
    	    }
    	  return null;
    	}
    	var isArrayImpl = Array.isArray,
    	  ReactSharedInternals =
    	    React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
    	  ReactDOMSharedInternals =
    	    ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
    	  sharedNotPendingObject = {
    	    pending: false,
    	    data: null,
    	    method: null,
    	    action: null
    	  },
    	  valueStack = [],
    	  index = -1;
    	function createCursor(defaultValue) {
    	  return { current: defaultValue };
    	}
    	function pop(cursor) {
    	  0 > index ||
    	    ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);
    	}
    	function push(cursor, value) {
    	  index++;
    	  valueStack[index] = cursor.current;
    	  cursor.current = value;
    	}
    	var contextStackCursor = createCursor(null),
    	  contextFiberStackCursor = createCursor(null),
    	  rootInstanceStackCursor = createCursor(null),
    	  hostTransitionProviderCursor = createCursor(null);
    	function pushHostContainer(fiber, nextRootInstance) {
    	  push(rootInstanceStackCursor, nextRootInstance);
    	  push(contextFiberStackCursor, fiber);
    	  push(contextStackCursor, null);
    	  switch (nextRootInstance.nodeType) {
    	    case 9:
    	    case 11:
    	      fiber = (fiber = nextRootInstance.documentElement)
    	        ? (fiber = fiber.namespaceURI)
    	          ? getOwnHostContext(fiber)
    	          : 0
    	        : 0;
    	      break;
    	    default:
    	      if (
    	        ((fiber = nextRootInstance.tagName),
    	        (nextRootInstance = nextRootInstance.namespaceURI))
    	      )
    	        (nextRootInstance = getOwnHostContext(nextRootInstance)),
    	          (fiber = getChildHostContextProd(nextRootInstance, fiber));
    	      else
    	        switch (fiber) {
    	          case "svg":
    	            fiber = 1;
    	            break;
    	          case "math":
    	            fiber = 2;
    	            break;
    	          default:
    	            fiber = 0;
    	        }
    	  }
    	  pop(contextStackCursor);
    	  push(contextStackCursor, fiber);
    	}
    	function popHostContainer() {
    	  pop(contextStackCursor);
    	  pop(contextFiberStackCursor);
    	  pop(rootInstanceStackCursor);
    	}
    	function pushHostContext(fiber) {
    	  null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);
    	  var context = contextStackCursor.current;
    	  var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);
    	  context !== JSCompiler_inline_result &&
    	    (push(contextFiberStackCursor, fiber),
    	    push(contextStackCursor, JSCompiler_inline_result));
    	}
    	function popHostContext(fiber) {
    	  contextFiberStackCursor.current === fiber &&
    	    (pop(contextStackCursor), pop(contextFiberStackCursor));
    	  hostTransitionProviderCursor.current === fiber &&
    	    (pop(hostTransitionProviderCursor),
    	    (HostTransitionContext._currentValue = sharedNotPendingObject));
    	}
    	var hasOwnProperty = Object.prototype.hasOwnProperty,
    	  scheduleCallback$3 = Scheduler.unstable_scheduleCallback,
    	  cancelCallback$1 = Scheduler.unstable_cancelCallback,
    	  shouldYield = Scheduler.unstable_shouldYield,
    	  requestPaint = Scheduler.unstable_requestPaint,
    	  now = Scheduler.unstable_now,
    	  getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,
    	  ImmediatePriority = Scheduler.unstable_ImmediatePriority,
    	  UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,
    	  NormalPriority$1 = Scheduler.unstable_NormalPriority,
    	  LowPriority = Scheduler.unstable_LowPriority,
    	  IdlePriority = Scheduler.unstable_IdlePriority,
    	  log$1 = Scheduler.log,
    	  unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,
    	  rendererID = null,
    	  injectedHook = null;
    	function setIsStrictModeForDevtools(newIsStrictMode) {
    	  "function" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);
    	  if (injectedHook && "function" === typeof injectedHook.setStrictMode)
    	    try {
    	      injectedHook.setStrictMode(rendererID, newIsStrictMode);
    	    } catch (err) {}
    	}
    	var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,
    	  log = Math.log,
    	  LN2 = Math.LN2;
    	function clz32Fallback(x) {
    	  x >>>= 0;
    	  return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;
    	}
    	var nextTransitionLane = 256,
    	  nextRetryLane = 4194304;
    	function getHighestPriorityLanes(lanes) {
    	  var pendingSyncLanes = lanes & 42;
    	  if (0 !== pendingSyncLanes) return pendingSyncLanes;
    	  switch (lanes & -lanes) {
    	    case 1:
    	      return 1;
    	    case 2:
    	      return 2;
    	    case 4:
    	      return 4;
    	    case 8:
    	      return 8;
    	    case 16:
    	      return 16;
    	    case 32:
    	      return 32;
    	    case 64:
    	      return 64;
    	    case 128:
    	      return 128;
    	    case 256:
    	    case 512:
    	    case 1024:
    	    case 2048:
    	    case 4096:
    	    case 8192:
    	    case 16384:
    	    case 32768:
    	    case 65536:
    	    case 131072:
    	    case 262144:
    	    case 524288:
    	    case 1048576:
    	    case 2097152:
    	      return lanes & 4194048;
    	    case 4194304:
    	    case 8388608:
    	    case 16777216:
    	    case 33554432:
    	      return lanes & 62914560;
    	    case 67108864:
    	      return 67108864;
    	    case 134217728:
    	      return 134217728;
    	    case 268435456:
    	      return 268435456;
    	    case 536870912:
    	      return 536870912;
    	    case 1073741824:
    	      return 0;
    	    default:
    	      return lanes;
    	  }
    	}
    	function getNextLanes(root, wipLanes, rootHasPendingCommit) {
    	  var pendingLanes = root.pendingLanes;
    	  if (0 === pendingLanes) return 0;
    	  var nextLanes = 0,
    	    suspendedLanes = root.suspendedLanes,
    	    pingedLanes = root.pingedLanes;
    	  root = root.warmLanes;
    	  var nonIdlePendingLanes = pendingLanes & 134217727;
    	  0 !== nonIdlePendingLanes
    	    ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),
    	      0 !== pendingLanes
    	        ? (nextLanes = getHighestPriorityLanes(pendingLanes))
    	        : ((pingedLanes &= nonIdlePendingLanes),
    	          0 !== pingedLanes
    	            ? (nextLanes = getHighestPriorityLanes(pingedLanes))
    	            : rootHasPendingCommit ||
    	              ((rootHasPendingCommit = nonIdlePendingLanes & ~root),
    	              0 !== rootHasPendingCommit &&
    	                (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))
    	    : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),
    	      0 !== nonIdlePendingLanes
    	        ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))
    	        : 0 !== pingedLanes
    	          ? (nextLanes = getHighestPriorityLanes(pingedLanes))
    	          : rootHasPendingCommit ||
    	            ((rootHasPendingCommit = pendingLanes & ~root),
    	            0 !== rootHasPendingCommit &&
    	              (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));
    	  return 0 === nextLanes
    	    ? 0
    	    : 0 !== wipLanes &&
    	        wipLanes !== nextLanes &&
    	        0 === (wipLanes & suspendedLanes) &&
    	        ((suspendedLanes = nextLanes & -nextLanes),
    	        (rootHasPendingCommit = wipLanes & -wipLanes),
    	        suspendedLanes >= rootHasPendingCommit ||
    	          (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))
    	      ? wipLanes
    	      : nextLanes;
    	}
    	function checkIfRootIsPrerendering(root, renderLanes) {
    	  return (
    	    0 ===
    	    (root.pendingLanes &
    	      ~(root.suspendedLanes & ~root.pingedLanes) &
    	      renderLanes)
    	  );
    	}
    	function computeExpirationTime(lane, currentTime) {
    	  switch (lane) {
    	    case 1:
    	    case 2:
    	    case 4:
    	    case 8:
    	    case 64:
    	      return currentTime + 250;
    	    case 16:
    	    case 32:
    	    case 128:
    	    case 256:
    	    case 512:
    	    case 1024:
    	    case 2048:
    	    case 4096:
    	    case 8192:
    	    case 16384:
    	    case 32768:
    	    case 65536:
    	    case 131072:
    	    case 262144:
    	    case 524288:
    	    case 1048576:
    	    case 2097152:
    	      return currentTime + 5e3;
    	    case 4194304:
    	    case 8388608:
    	    case 16777216:
    	    case 33554432:
    	      return -1;
    	    case 67108864:
    	    case 134217728:
    	    case 268435456:
    	    case 536870912:
    	    case 1073741824:
    	      return -1;
    	    default:
    	      return -1;
    	  }
    	}
    	function claimNextTransitionLane() {
    	  var lane = nextTransitionLane;
    	  nextTransitionLane <<= 1;
    	  0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);
    	  return lane;
    	}
    	function claimNextRetryLane() {
    	  var lane = nextRetryLane;
    	  nextRetryLane <<= 1;
    	  0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);
    	  return lane;
    	}
    	function createLaneMap(initial) {
    	  for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);
    	  return laneMap;
    	}
    	function markRootUpdated$1(root, updateLane) {
    	  root.pendingLanes |= updateLane;
    	  268435456 !== updateLane &&
    	    ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));
    	}
    	function markRootFinished(
    	  root,
    	  finishedLanes,
    	  remainingLanes,
    	  spawnedLane,
    	  updatedLanes,
    	  suspendedRetryLanes
    	) {
    	  var previouslyPendingLanes = root.pendingLanes;
    	  root.pendingLanes = remainingLanes;
    	  root.suspendedLanes = 0;
    	  root.pingedLanes = 0;
    	  root.warmLanes = 0;
    	  root.expiredLanes &= remainingLanes;
    	  root.entangledLanes &= remainingLanes;
    	  root.errorRecoveryDisabledLanes &= remainingLanes;
    	  root.shellSuspendCounter = 0;
    	  var entanglements = root.entanglements,
    	    expirationTimes = root.expirationTimes,
    	    hiddenUpdates = root.hiddenUpdates;
    	  for (
    	    remainingLanes = previouslyPendingLanes & ~remainingLanes;
    	    0 < remainingLanes;

    	  ) {
    	    var index$5 = 31 - clz32(remainingLanes),
    	      lane = 1 << index$5;
    	    entanglements[index$5] = 0;
    	    expirationTimes[index$5] = -1;
    	    var hiddenUpdatesForLane = hiddenUpdates[index$5];
    	    if (null !== hiddenUpdatesForLane)
    	      for (
    	        hiddenUpdates[index$5] = null, index$5 = 0;
    	        index$5 < hiddenUpdatesForLane.length;
    	        index$5++
    	      ) {
    	        var update = hiddenUpdatesForLane[index$5];
    	        null !== update && (update.lane &= -536870913);
    	      }
    	    remainingLanes &= ~lane;
    	  }
    	  0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);
    	  0 !== suspendedRetryLanes &&
    	    0 === updatedLanes &&
    	    0 !== root.tag &&
    	    (root.suspendedLanes |=
    	      suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));
    	}
    	function markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {
    	  root.pendingLanes |= spawnedLane;
    	  root.suspendedLanes &= ~spawnedLane;
    	  var spawnedLaneIndex = 31 - clz32(spawnedLane);
    	  root.entangledLanes |= spawnedLane;
    	  root.entanglements[spawnedLaneIndex] =
    	    root.entanglements[spawnedLaneIndex] |
    	    1073741824 |
    	    (entangledLanes & 4194090);
    	}
    	function markRootEntangled(root, entangledLanes) {
    	  var rootEntangledLanes = (root.entangledLanes |= entangledLanes);
    	  for (root = root.entanglements; rootEntangledLanes; ) {
    	    var index$6 = 31 - clz32(rootEntangledLanes),
    	      lane = 1 << index$6;
    	    (lane & entangledLanes) | (root[index$6] & entangledLanes) &&
    	      (root[index$6] |= entangledLanes);
    	    rootEntangledLanes &= ~lane;
    	  }
    	}
    	function getBumpedLaneForHydrationByLane(lane) {
    	  switch (lane) {
    	    case 2:
    	      lane = 1;
    	      break;
    	    case 8:
    	      lane = 4;
    	      break;
    	    case 32:
    	      lane = 16;
    	      break;
    	    case 256:
    	    case 512:
    	    case 1024:
    	    case 2048:
    	    case 4096:
    	    case 8192:
    	    case 16384:
    	    case 32768:
    	    case 65536:
    	    case 131072:
    	    case 262144:
    	    case 524288:
    	    case 1048576:
    	    case 2097152:
    	    case 4194304:
    	    case 8388608:
    	    case 16777216:
    	    case 33554432:
    	      lane = 128;
    	      break;
    	    case 268435456:
    	      lane = 134217728;
    	      break;
    	    default:
    	      lane = 0;
    	  }
    	  return lane;
    	}
    	function lanesToEventPriority(lanes) {
    	  lanes &= -lanes;
    	  return 2 < lanes
    	    ? 8 < lanes
    	      ? 0 !== (lanes & 134217727)
    	        ? 32
    	        : 268435456
    	      : 8
    	    : 2;
    	}
    	function resolveUpdatePriority() {
    	  var updatePriority = ReactDOMSharedInternals.p;
    	  if (0 !== updatePriority) return updatePriority;
    	  updatePriority = window.event;
    	  return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);
    	}
    	function runWithPriority(priority, fn) {
    	  var previousPriority = ReactDOMSharedInternals.p;
    	  try {
    	    return (ReactDOMSharedInternals.p = priority), fn();
    	  } finally {
    	    ReactDOMSharedInternals.p = previousPriority;
    	  }
    	}
    	var randomKey = Math.random().toString(36).slice(2),
    	  internalInstanceKey = "__reactFiber$" + randomKey,
    	  internalPropsKey = "__reactProps$" + randomKey,
    	  internalContainerInstanceKey = "__reactContainer$" + randomKey,
    	  internalEventHandlersKey = "__reactEvents$" + randomKey,
    	  internalEventHandlerListenersKey = "__reactListeners$" + randomKey,
    	  internalEventHandlesSetKey = "__reactHandles$" + randomKey,
    	  internalRootNodeResourcesKey = "__reactResources$" + randomKey,
    	  internalHoistableMarker = "__reactMarker$" + randomKey;
    	function detachDeletedInstance(node) {
    	  delete node[internalInstanceKey];
    	  delete node[internalPropsKey];
    	  delete node[internalEventHandlersKey];
    	  delete node[internalEventHandlerListenersKey];
    	  delete node[internalEventHandlesSetKey];
    	}
    	function getClosestInstanceFromNode(targetNode) {
    	  var targetInst = targetNode[internalInstanceKey];
    	  if (targetInst) return targetInst;
    	  for (var parentNode = targetNode.parentNode; parentNode; ) {
    	    if (
    	      (targetInst =
    	        parentNode[internalContainerInstanceKey] ||
    	        parentNode[internalInstanceKey])
    	    ) {
    	      parentNode = targetInst.alternate;
    	      if (
    	        null !== targetInst.child ||
    	        (null !== parentNode && null !== parentNode.child)
    	      )
    	        for (
    	          targetNode = getParentSuspenseInstance(targetNode);
    	          null !== targetNode;

    	        ) {
    	          if ((parentNode = targetNode[internalInstanceKey])) return parentNode;
    	          targetNode = getParentSuspenseInstance(targetNode);
    	        }
    	      return targetInst;
    	    }
    	    targetNode = parentNode;
    	    parentNode = targetNode.parentNode;
    	  }
    	  return null;
    	}
    	function getInstanceFromNode(node) {
    	  if (
    	    (node = node[internalInstanceKey] || node[internalContainerInstanceKey])
    	  ) {
    	    var tag = node.tag;
    	    if (
    	      5 === tag ||
    	      6 === tag ||
    	      13 === tag ||
    	      26 === tag ||
    	      27 === tag ||
    	      3 === tag
    	    )
    	      return node;
    	  }
    	  return null;
    	}
    	function getNodeFromInstance(inst) {
    	  var tag = inst.tag;
    	  if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;
    	  throw Error(formatProdErrorMessage(33));
    	}
    	function getResourcesFromRoot(root) {
    	  var resources = root[internalRootNodeResourcesKey];
    	  resources ||
    	    (resources = root[internalRootNodeResourcesKey] =
    	      { hoistableStyles: new Map(), hoistableScripts: new Map() });
    	  return resources;
    	}
    	function markNodeAsHoistable(node) {
    	  node[internalHoistableMarker] = true;
    	}
    	var allNativeEvents = new Set(),
    	  registrationNameDependencies = {};
    	function registerTwoPhaseEvent(registrationName, dependencies) {
    	  registerDirectEvent(registrationName, dependencies);
    	  registerDirectEvent(registrationName + "Capture", dependencies);
    	}
    	function registerDirectEvent(registrationName, dependencies) {
    	  registrationNameDependencies[registrationName] = dependencies;
    	  for (
    	    registrationName = 0;
    	    registrationName < dependencies.length;
    	    registrationName++
    	  )
    	    allNativeEvents.add(dependencies[registrationName]);
    	}
    	var VALID_ATTRIBUTE_NAME_REGEX = RegExp(
    	    "^[: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][: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\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"
    	  ),
    	  illegalAttributeNameCache = {},
    	  validatedAttributeNameCache = {};
    	function isAttributeNameSafe(attributeName) {
    	  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))
    	    return true;
    	  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return false;
    	  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))
    	    return (validatedAttributeNameCache[attributeName] = true);
    	  illegalAttributeNameCache[attributeName] = true;
    	  return false;
    	}
    	function setValueForAttribute(node, name, value) {
    	  if (isAttributeNameSafe(name))
    	    if (null === value) node.removeAttribute(name);
    	    else {
    	      switch (typeof value) {
    	        case "undefined":
    	        case "function":
    	        case "symbol":
    	          node.removeAttribute(name);
    	          return;
    	        case "boolean":
    	          var prefix$8 = name.toLowerCase().slice(0, 5);
    	          if ("data-" !== prefix$8 && "aria-" !== prefix$8) {
    	            node.removeAttribute(name);
    	            return;
    	          }
    	      }
    	      node.setAttribute(name, "" + value);
    	    }
    	}
    	function setValueForKnownAttribute(node, name, value) {
    	  if (null === value) node.removeAttribute(name);
    	  else {
    	    switch (typeof value) {
    	      case "undefined":
    	      case "function":
    	      case "symbol":
    	      case "boolean":
    	        node.removeAttribute(name);
    	        return;
    	    }
    	    node.setAttribute(name, "" + value);
    	  }
    	}
    	function setValueForNamespacedAttribute(node, namespace, name, value) {
    	  if (null === value) node.removeAttribute(name);
    	  else {
    	    switch (typeof value) {
    	      case "undefined":
    	      case "function":
    	      case "symbol":
    	      case "boolean":
    	        node.removeAttribute(name);
    	        return;
    	    }
    	    node.setAttributeNS(namespace, name, "" + value);
    	  }
    	}
    	var prefix, suffix;
    	function describeBuiltInComponentFrame(name) {
    	  if (void 0 === prefix)
    	    try {
    	      throw Error();
    	    } catch (x) {
    	      var match = x.stack.trim().match(/\n( *(at )?)/);
    	      prefix = (match && match[1]) || "";
    	      suffix =
    	        -1 < x.stack.indexOf("\n    at")
    	          ? " (<anonymous>)"
    	          : -1 < x.stack.indexOf("@")
    	            ? "@unknown:0:0"
    	            : "";
    	    }
    	  return "\n" + prefix + name + suffix;
    	}
    	var reentry = false;
    	function describeNativeComponentFrame(fn, construct) {
    	  if (!fn || reentry) return "";
    	  reentry = true;
    	  var previousPrepareStackTrace = Error.prepareStackTrace;
    	  Error.prepareStackTrace = void 0;
    	  try {
    	    var RunInRootFrame = {
    	      DetermineComponentFrameRoot: function () {
    	        try {
    	          if (construct) {
    	            var Fake = function () {
    	              throw Error();
    	            };
    	            Object.defineProperty(Fake.prototype, "props", {
    	              set: function () {
    	                throw Error();
    	              }
    	            });
    	            if ("object" === typeof Reflect && Reflect.construct) {
    	              try {
    	                Reflect.construct(Fake, []);
    	              } catch (x) {
    	                var control = x;
    	              }
    	              Reflect.construct(fn, [], Fake);
    	            } else {
    	              try {
    	                Fake.call();
    	              } catch (x$9) {
    	                control = x$9;
    	              }
    	              fn.call(Fake.prototype);
    	            }
    	          } else {
    	            try {
    	              throw Error();
    	            } catch (x$10) {
    	              control = x$10;
    	            }
    	            (Fake = fn()) &&
    	              "function" === typeof Fake.catch &&
    	              Fake.catch(function () {});
    	          }
    	        } catch (sample) {
    	          if (sample && control && "string" === typeof sample.stack)
    	            return [sample.stack, control.stack];
    	        }
    	        return [null, null];
    	      }
    	    };
    	    RunInRootFrame.DetermineComponentFrameRoot.displayName =
    	      "DetermineComponentFrameRoot";
    	    var namePropDescriptor = Object.getOwnPropertyDescriptor(
    	      RunInRootFrame.DetermineComponentFrameRoot,
    	      "name"
    	    );
    	    namePropDescriptor &&
    	      namePropDescriptor.configurable &&
    	      Object.defineProperty(
    	        RunInRootFrame.DetermineComponentFrameRoot,
    	        "name",
    	        { value: "DetermineComponentFrameRoot" }
    	      );
    	    var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),
    	      sampleStack = _RunInRootFrame$Deter[0],
    	      controlStack = _RunInRootFrame$Deter[1];
    	    if (sampleStack && controlStack) {
    	      var sampleLines = sampleStack.split("\n"),
    	        controlLines = controlStack.split("\n");
    	      for (
    	        namePropDescriptor = RunInRootFrame = 0;
    	        RunInRootFrame < sampleLines.length &&
    	        !sampleLines[RunInRootFrame].includes("DetermineComponentFrameRoot");

    	      )
    	        RunInRootFrame++;
    	      for (
    	        ;
    	        namePropDescriptor < controlLines.length &&
    	        !controlLines[namePropDescriptor].includes(
    	          "DetermineComponentFrameRoot"
    	        );

    	      )
    	        namePropDescriptor++;
    	      if (
    	        RunInRootFrame === sampleLines.length ||
    	        namePropDescriptor === controlLines.length
    	      )
    	        for (
    	          RunInRootFrame = sampleLines.length - 1,
    	            namePropDescriptor = controlLines.length - 1;
    	          1 <= RunInRootFrame &&
    	          0 <= namePropDescriptor &&
    	          sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];

    	        )
    	          namePropDescriptor--;
    	      for (
    	        ;
    	        1 <= RunInRootFrame && 0 <= namePropDescriptor;
    	        RunInRootFrame--, namePropDescriptor--
    	      )
    	        if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {
    	          if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {
    	            do
    	              if (
    	                (RunInRootFrame--,
    	                namePropDescriptor--,
    	                0 > namePropDescriptor ||
    	                  sampleLines[RunInRootFrame] !==
    	                    controlLines[namePropDescriptor])
    	              ) {
    	                var frame =
    	                  "\n" +
    	                  sampleLines[RunInRootFrame].replace(" at new ", " at ");
    	                fn.displayName &&
    	                  frame.includes("<anonymous>") &&
    	                  (frame = frame.replace("<anonymous>", fn.displayName));
    	                return frame;
    	              }
    	            while (1 <= RunInRootFrame && 0 <= namePropDescriptor);
    	          }
    	          break;
    	        }
    	    }
    	  } finally {
    	    (reentry = false), (Error.prepareStackTrace = previousPrepareStackTrace);
    	  }
    	  return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : "")
    	    ? describeBuiltInComponentFrame(previousPrepareStackTrace)
    	    : "";
    	}
    	function describeFiber(fiber) {
    	  switch (fiber.tag) {
    	    case 26:
    	    case 27:
    	    case 5:
    	      return describeBuiltInComponentFrame(fiber.type);
    	    case 16:
    	      return describeBuiltInComponentFrame("Lazy");
    	    case 13:
    	      return describeBuiltInComponentFrame("Suspense");
    	    case 19:
    	      return describeBuiltInComponentFrame("SuspenseList");
    	    case 0:
    	    case 15:
    	      return describeNativeComponentFrame(fiber.type, false);
    	    case 11:
    	      return describeNativeComponentFrame(fiber.type.render, false);
    	    case 1:
    	      return describeNativeComponentFrame(fiber.type, true);
    	    case 31:
    	      return describeBuiltInComponentFrame("Activity");
    	    default:
    	      return "";
    	  }
    	}
    	function getStackByFiberInDevAndProd(workInProgress) {
    	  try {
    	    var info = "";
    	    do
    	      (info += describeFiber(workInProgress)),
    	        (workInProgress = workInProgress.return);
    	    while (workInProgress);
    	    return info;
    	  } catch (x) {
    	    return "\nError generating stack: " + x.message + "\n" + x.stack;
    	  }
    	}
    	function getToStringValue(value) {
    	  switch (typeof value) {
    	    case "bigint":
    	    case "boolean":
    	    case "number":
    	    case "string":
    	    case "undefined":
    	      return value;
    	    case "object":
    	      return value;
    	    default:
    	      return "";
    	  }
    	}
    	function isCheckable(elem) {
    	  var type = elem.type;
    	  return (
    	    (elem = elem.nodeName) &&
    	    "input" === elem.toLowerCase() &&
    	    ("checkbox" === type || "radio" === type)
    	  );
    	}
    	function trackValueOnNode(node) {
    	  var valueField = isCheckable(node) ? "checked" : "value",
    	    descriptor = Object.getOwnPropertyDescriptor(
    	      node.constructor.prototype,
    	      valueField
    	    ),
    	    currentValue = "" + node[valueField];
    	  if (
    	    !node.hasOwnProperty(valueField) &&
    	    "undefined" !== typeof descriptor &&
    	    "function" === typeof descriptor.get &&
    	    "function" === typeof descriptor.set
    	  ) {
    	    var get = descriptor.get,
    	      set = descriptor.set;
    	    Object.defineProperty(node, valueField, {
    	      configurable: true,
    	      get: function () {
    	        return get.call(this);
    	      },
    	      set: function (value) {
    	        currentValue = "" + value;
    	        set.call(this, value);
    	      }
    	    });
    	    Object.defineProperty(node, valueField, {
    	      enumerable: descriptor.enumerable
    	    });
    	    return {
    	      getValue: function () {
    	        return currentValue;
    	      },
    	      setValue: function (value) {
    	        currentValue = "" + value;
    	      },
    	      stopTracking: function () {
    	        node._valueTracker = null;
    	        delete node[valueField];
    	      }
    	    };
    	  }
    	}
    	function track(node) {
    	  node._valueTracker || (node._valueTracker = trackValueOnNode(node));
    	}
    	function updateValueIfChanged(node) {
    	  if (!node) return false;
    	  var tracker = node._valueTracker;
    	  if (!tracker) return true;
    	  var lastValue = tracker.getValue();
    	  var value = "";
    	  node &&
    	    (value = isCheckable(node)
    	      ? node.checked
    	        ? "true"
    	        : "false"
    	      : node.value);
    	  node = value;
    	  return node !== lastValue ? (tracker.setValue(node), true) : false;
    	}
    	function getActiveElement(doc) {
    	  doc = doc || ("undefined" !== typeof document ? document : void 0);
    	  if ("undefined" === typeof doc) return null;
    	  try {
    	    return doc.activeElement || doc.body;
    	  } catch (e) {
    	    return doc.body;
    	  }
    	}
    	var escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\n"\\]/g;
    	function escapeSelectorAttributeValueInsideDoubleQuotes(value) {
    	  return value.replace(
    	    escapeSelectorAttributeValueInsideDoubleQuotesRegex,
    	    function (ch) {
    	      return "\\" + ch.charCodeAt(0).toString(16) + " ";
    	    }
    	  );
    	}
    	function updateInput(
    	  element,
    	  value,
    	  defaultValue,
    	  lastDefaultValue,
    	  checked,
    	  defaultChecked,
    	  type,
    	  name
    	) {
    	  element.name = "";
    	  null != type &&
    	  "function" !== typeof type &&
    	  "symbol" !== typeof type &&
    	  "boolean" !== typeof type
    	    ? (element.type = type)
    	    : element.removeAttribute("type");
    	  if (null != value)
    	    if ("number" === type) {
    	      if ((0 === value && "" === element.value) || element.value != value)
    	        element.value = "" + getToStringValue(value);
    	    } else
    	      element.value !== "" + getToStringValue(value) &&
    	        (element.value = "" + getToStringValue(value));
    	  else
    	    ("submit" !== type && "reset" !== type) || element.removeAttribute("value");
    	  null != value
    	    ? setDefaultValue(element, type, getToStringValue(value))
    	    : null != defaultValue
    	      ? setDefaultValue(element, type, getToStringValue(defaultValue))
    	      : null != lastDefaultValue && element.removeAttribute("value");
    	  null == checked &&
    	    null != defaultChecked &&
    	    (element.defaultChecked = !!defaultChecked);
    	  null != checked &&
    	    (element.checked =
    	      checked && "function" !== typeof checked && "symbol" !== typeof checked);
    	  null != name &&
    	  "function" !== typeof name &&
    	  "symbol" !== typeof name &&
    	  "boolean" !== typeof name
    	    ? (element.name = "" + getToStringValue(name))
    	    : element.removeAttribute("name");
    	}
    	function initInput(
    	  element,
    	  value,
    	  defaultValue,
    	  checked,
    	  defaultChecked,
    	  type,
    	  name,
    	  isHydrating
    	) {
    	  null != type &&
    	    "function" !== typeof type &&
    	    "symbol" !== typeof type &&
    	    "boolean" !== typeof type &&
    	    (element.type = type);
    	  if (null != value || null != defaultValue) {
    	    if (
    	      !(
    	        ("submit" !== type && "reset" !== type) ||
    	        (void 0 !== value && null !== value)
    	      )
    	    )
    	      return;
    	    defaultValue =
    	      null != defaultValue ? "" + getToStringValue(defaultValue) : "";
    	    value = null != value ? "" + getToStringValue(value) : defaultValue;
    	    isHydrating || value === element.value || (element.value = value);
    	    element.defaultValue = value;
    	  }
    	  checked = null != checked ? checked : defaultChecked;
    	  checked =
    	    "function" !== typeof checked && "symbol" !== typeof checked && !!checked;
    	  element.checked = isHydrating ? element.checked : !!checked;
    	  element.defaultChecked = !!checked;
    	  null != name &&
    	    "function" !== typeof name &&
    	    "symbol" !== typeof name &&
    	    "boolean" !== typeof name &&
    	    (element.name = name);
    	}
    	function setDefaultValue(node, type, value) {
    	  ("number" === type && getActiveElement(node.ownerDocument) === node) ||
    	    node.defaultValue === "" + value ||
    	    (node.defaultValue = "" + value);
    	}
    	function updateOptions(node, multiple, propValue, setDefaultSelected) {
    	  node = node.options;
    	  if (multiple) {
    	    multiple = {};
    	    for (var i = 0; i < propValue.length; i++)
    	      multiple["$" + propValue[i]] = true;
    	    for (propValue = 0; propValue < node.length; propValue++)
    	      (i = multiple.hasOwnProperty("$" + node[propValue].value)),
    	        node[propValue].selected !== i && (node[propValue].selected = i),
    	        i && setDefaultSelected && (node[propValue].defaultSelected = true);
    	  } else {
    	    propValue = "" + getToStringValue(propValue);
    	    multiple = null;
    	    for (i = 0; i < node.length; i++) {
    	      if (node[i].value === propValue) {
    	        node[i].selected = true;
    	        setDefaultSelected && (node[i].defaultSelected = true);
    	        return;
    	      }
    	      null !== multiple || node[i].disabled || (multiple = node[i]);
    	    }
    	    null !== multiple && (multiple.selected = true);
    	  }
    	}
    	function updateTextarea(element, value, defaultValue) {
    	  if (
    	    null != value &&
    	    ((value = "" + getToStringValue(value)),
    	    value !== element.value && (element.value = value),
    	    null == defaultValue)
    	  ) {
    	    element.defaultValue !== value && (element.defaultValue = value);
    	    return;
    	  }
    	  element.defaultValue =
    	    null != defaultValue ? "" + getToStringValue(defaultValue) : "";
    	}
    	function initTextarea(element, value, defaultValue, children) {
    	  if (null == value) {
    	    if (null != children) {
    	      if (null != defaultValue) throw Error(formatProdErrorMessage(92));
    	      if (isArrayImpl(children)) {
    	        if (1 < children.length) throw Error(formatProdErrorMessage(93));
    	        children = children[0];
    	      }
    	      defaultValue = children;
    	    }
    	    null == defaultValue && (defaultValue = "");
    	    value = defaultValue;
    	  }
    	  defaultValue = getToStringValue(value);
    	  element.defaultValue = defaultValue;
    	  children = element.textContent;
    	  children === defaultValue &&
    	    "" !== children &&
    	    null !== children &&
    	    (element.value = children);
    	}
    	function setTextContent(node, text) {
    	  if (text) {
    	    var firstChild = node.firstChild;
    	    if (
    	      firstChild &&
    	      firstChild === node.lastChild &&
    	      3 === firstChild.nodeType
    	    ) {
    	      firstChild.nodeValue = text;
    	      return;
    	    }
    	  }
    	  node.textContent = text;
    	}
    	var unitlessNumbers = new Set(
    	  "animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(
    	    " "
    	  )
    	);
    	function setValueForStyle(style, styleName, value) {
    	  var isCustomProperty = 0 === styleName.indexOf("--");
    	  null == value || "boolean" === typeof value || "" === value
    	    ? isCustomProperty
    	      ? style.setProperty(styleName, "")
    	      : "float" === styleName
    	        ? (style.cssFloat = "")
    	        : (style[styleName] = "")
    	    : isCustomProperty
    	      ? style.setProperty(styleName, value)
    	      : "number" !== typeof value ||
    	          0 === value ||
    	          unitlessNumbers.has(styleName)
    	        ? "float" === styleName
    	          ? (style.cssFloat = value)
    	          : (style[styleName] = ("" + value).trim())
    	        : (style[styleName] = value + "px");
    	}
    	function setValueForStyles(node, styles, prevStyles) {
    	  if (null != styles && "object" !== typeof styles)
    	    throw Error(formatProdErrorMessage(62));
    	  node = node.style;
    	  if (null != prevStyles) {
    	    for (var styleName in prevStyles)
    	      !prevStyles.hasOwnProperty(styleName) ||
    	        (null != styles && styles.hasOwnProperty(styleName)) ||
    	        (0 === styleName.indexOf("--")
    	          ? node.setProperty(styleName, "")
    	          : "float" === styleName
    	            ? (node.cssFloat = "")
    	            : (node[styleName] = ""));
    	    for (var styleName$16 in styles)
    	      (styleName = styles[styleName$16]),
    	        styles.hasOwnProperty(styleName$16) &&
    	          prevStyles[styleName$16] !== styleName &&
    	          setValueForStyle(node, styleName$16, styleName);
    	  } else
    	    for (var styleName$17 in styles)
    	      styles.hasOwnProperty(styleName$17) &&
    	        setValueForStyle(node, styleName$17, styles[styleName$17]);
    	}
    	function isCustomElement(tagName) {
    	  if (-1 === tagName.indexOf("-")) return false;
    	  switch (tagName) {
    	    case "annotation-xml":
    	    case "color-profile":
    	    case "font-face":
    	    case "font-face-src":
    	    case "font-face-uri":
    	    case "font-face-format":
    	    case "font-face-name":
    	    case "missing-glyph":
    	      return false;
    	    default:
    	      return true;
    	  }
    	}
    	var aliases = new Map([
    	    ["acceptCharset", "accept-charset"],
    	    ["htmlFor", "for"],
    	    ["httpEquiv", "http-equiv"],
    	    ["crossOrigin", "crossorigin"],
    	    ["accentHeight", "accent-height"],
    	    ["alignmentBaseline", "alignment-baseline"],
    	    ["arabicForm", "arabic-form"],
    	    ["baselineShift", "baseline-shift"],
    	    ["capHeight", "cap-height"],
    	    ["clipPath", "clip-path"],
    	    ["clipRule", "clip-rule"],
    	    ["colorInterpolation", "color-interpolation"],
    	    ["colorInterpolationFilters", "color-interpolation-filters"],
    	    ["colorProfile", "color-profile"],
    	    ["colorRendering", "color-rendering"],
    	    ["dominantBaseline", "dominant-baseline"],
    	    ["enableBackground", "enable-background"],
    	    ["fillOpacity", "fill-opacity"],
    	    ["fillRule", "fill-rule"],
    	    ["floodColor", "flood-color"],
    	    ["floodOpacity", "flood-opacity"],
    	    ["fontFamily", "font-family"],
    	    ["fontSize", "font-size"],
    	    ["fontSizeAdjust", "font-size-adjust"],
    	    ["fontStretch", "font-stretch"],
    	    ["fontStyle", "font-style"],
    	    ["fontVariant", "font-variant"],
    	    ["fontWeight", "font-weight"],
    	    ["glyphName", "glyph-name"],
    	    ["glyphOrientationHorizontal", "glyph-orientation-horizontal"],
    	    ["glyphOrientationVertical", "glyph-orientation-vertical"],
    	    ["horizAdvX", "horiz-adv-x"],
    	    ["horizOriginX", "horiz-origin-x"],
    	    ["imageRendering", "image-rendering"],
    	    ["letterSpacing", "letter-spacing"],
    	    ["lightingColor", "lighting-color"],
    	    ["markerEnd", "marker-end"],
    	    ["markerMid", "marker-mid"],
    	    ["markerStart", "marker-start"],
    	    ["overlinePosition", "overline-position"],
    	    ["overlineThickness", "overline-thickness"],
    	    ["paintOrder", "paint-order"],
    	    ["panose-1", "panose-1"],
    	    ["pointerEvents", "pointer-events"],
    	    ["renderingIntent", "rendering-intent"],
    	    ["shapeRendering", "shape-rendering"],
    	    ["stopColor", "stop-color"],
    	    ["stopOpacity", "stop-opacity"],
    	    ["strikethroughPosition", "strikethrough-position"],
    	    ["strikethroughThickness", "strikethrough-thickness"],
    	    ["strokeDasharray", "stroke-dasharray"],
    	    ["strokeDashoffset", "stroke-dashoffset"],
    	    ["strokeLinecap", "stroke-linecap"],
    	    ["strokeLinejoin", "stroke-linejoin"],
    	    ["strokeMiterlimit", "stroke-miterlimit"],
    	    ["strokeOpacity", "stroke-opacity"],
    	    ["strokeWidth", "stroke-width"],
    	    ["textAnchor", "text-anchor"],
    	    ["textDecoration", "text-decoration"],
    	    ["textRendering", "text-rendering"],
    	    ["transformOrigin", "transform-origin"],
    	    ["underlinePosition", "underline-position"],
    	    ["underlineThickness", "underline-thickness"],
    	    ["unicodeBidi", "unicode-bidi"],
    	    ["unicodeRange", "unicode-range"],
    	    ["unitsPerEm", "units-per-em"],
    	    ["vAlphabetic", "v-alphabetic"],
    	    ["vHanging", "v-hanging"],
    	    ["vIdeographic", "v-ideographic"],
    	    ["vMathematical", "v-mathematical"],
    	    ["vectorEffect", "vector-effect"],
    	    ["vertAdvY", "vert-adv-y"],
    	    ["vertOriginX", "vert-origin-x"],
    	    ["vertOriginY", "vert-origin-y"],
    	    ["wordSpacing", "word-spacing"],
    	    ["writingMode", "writing-mode"],
    	    ["xmlnsXlink", "xmlns:xlink"],
    	    ["xHeight", "x-height"]
    	  ]),
    	  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;
    	function sanitizeURL(url) {
    	  return isJavaScriptProtocol.test("" + url)
    	    ? "javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')"
    	    : url;
    	}
    	var currentReplayingEvent = null;
    	function getEventTarget(nativeEvent) {
    	  nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;
    	  nativeEvent.correspondingUseElement &&
    	    (nativeEvent = nativeEvent.correspondingUseElement);
    	  return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;
    	}
    	var restoreTarget = null,
    	  restoreQueue = null;
    	function restoreStateOfTarget(target) {
    	  var internalInstance = getInstanceFromNode(target);
    	  if (internalInstance && (target = internalInstance.stateNode)) {
    	    var props = target[internalPropsKey] || null;
    	    a: switch (((target = internalInstance.stateNode), internalInstance.type)) {
    	      case "input":
    	        updateInput(
    	          target,
    	          props.value,
    	          props.defaultValue,
    	          props.defaultValue,
    	          props.checked,
    	          props.defaultChecked,
    	          props.type,
    	          props.name
    	        );
    	        internalInstance = props.name;
    	        if ("radio" === props.type && null != internalInstance) {
    	          for (props = target; props.parentNode; ) props = props.parentNode;
    	          props = props.querySelectorAll(
    	            'input[name="' +
    	              escapeSelectorAttributeValueInsideDoubleQuotes(
    	                "" + internalInstance
    	              ) +
    	              '"][type="radio"]'
    	          );
    	          for (
    	            internalInstance = 0;
    	            internalInstance < props.length;
    	            internalInstance++
    	          ) {
    	            var otherNode = props[internalInstance];
    	            if (otherNode !== target && otherNode.form === target.form) {
    	              var otherProps = otherNode[internalPropsKey] || null;
    	              if (!otherProps) throw Error(formatProdErrorMessage(90));
    	              updateInput(
    	                otherNode,
    	                otherProps.value,
    	                otherProps.defaultValue,
    	                otherProps.defaultValue,
    	                otherProps.checked,
    	                otherProps.defaultChecked,
    	                otherProps.type,
    	                otherProps.name
    	              );
    	            }
    	          }
    	          for (
    	            internalInstance = 0;
    	            internalInstance < props.length;
    	            internalInstance++
    	          )
    	            (otherNode = props[internalInstance]),
    	              otherNode.form === target.form && updateValueIfChanged(otherNode);
    	        }
    	        break a;
    	      case "textarea":
    	        updateTextarea(target, props.value, props.defaultValue);
    	        break a;
    	      case "select":
    	        (internalInstance = props.value),
    	          null != internalInstance &&
    	            updateOptions(target, !!props.multiple, internalInstance, false);
    	    }
    	  }
    	}
    	var isInsideEventHandler = false;
    	function batchedUpdates$1(fn, a, b) {
    	  if (isInsideEventHandler) return fn(a, b);
    	  isInsideEventHandler = true;
    	  try {
    	    var JSCompiler_inline_result = fn(a);
    	    return JSCompiler_inline_result;
    	  } finally {
    	    if (
    	      ((isInsideEventHandler = false),
    	      null !== restoreTarget || null !== restoreQueue)
    	    )
    	      if (
    	        (flushSyncWork$1(),
    	        restoreTarget &&
    	          ((a = restoreTarget),
    	          (fn = restoreQueue),
    	          (restoreQueue = restoreTarget = null),
    	          restoreStateOfTarget(a),
    	          fn))
    	      )
    	        for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);
    	  }
    	}
    	function getListener(inst, registrationName) {
    	  var stateNode = inst.stateNode;
    	  if (null === stateNode) return null;
    	  var props = stateNode[internalPropsKey] || null;
    	  if (null === props) return null;
    	  stateNode = props[registrationName];
    	  a: switch (registrationName) {
    	    case "onClick":
    	    case "onClickCapture":
    	    case "onDoubleClick":
    	    case "onDoubleClickCapture":
    	    case "onMouseDown":
    	    case "onMouseDownCapture":
    	    case "onMouseMove":
    	    case "onMouseMoveCapture":
    	    case "onMouseUp":
    	    case "onMouseUpCapture":
    	    case "onMouseEnter":
    	      (props = !props.disabled) ||
    	        ((inst = inst.type),
    	        (props = !(
    	          "button" === inst ||
    	          "input" === inst ||
    	          "select" === inst ||
    	          "textarea" === inst
    	        )));
    	      inst = !props;
    	      break a;
    	    default:
    	      inst = false;
    	  }
    	  if (inst) return null;
    	  if (stateNode && "function" !== typeof stateNode)
    	    throw Error(
    	      formatProdErrorMessage(231, registrationName, typeof stateNode)
    	    );
    	  return stateNode;
    	}
    	var canUseDOM = !(
    	    "undefined" === typeof window ||
    	    "undefined" === typeof window.document ||
    	    "undefined" === typeof window.document.createElement
    	  ),
    	  passiveBrowserEventsSupported = false;
    	if (canUseDOM)
    	  try {
    	    var options = {};
    	    Object.defineProperty(options, "passive", {
    	      get: function () {
    	        passiveBrowserEventsSupported = !0;
    	      }
    	    });
    	    window.addEventListener("test", options, options);
    	    window.removeEventListener("test", options, options);
    	  } catch (e) {
    	    passiveBrowserEventsSupported = false;
    	  }
    	var root = null,
    	  startText = null,
    	  fallbackText = null;
    	function getData() {
    	  if (fallbackText) return fallbackText;
    	  var start,
    	    startValue = startText,
    	    startLength = startValue.length,
    	    end,
    	    endValue = "value" in root ? root.value : root.textContent,
    	    endLength = endValue.length;
    	  for (
    	    start = 0;
    	    start < startLength && startValue[start] === endValue[start];
    	    start++
    	  );
    	  var minEnd = startLength - start;
    	  for (
    	    end = 1;
    	    end <= minEnd &&
    	    startValue[startLength - end] === endValue[endLength - end];
    	    end++
    	  );
    	  return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));
    	}
    	function getEventCharCode(nativeEvent) {
    	  var keyCode = nativeEvent.keyCode;
    	  "charCode" in nativeEvent
    	    ? ((nativeEvent = nativeEvent.charCode),
    	      0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))
    	    : (nativeEvent = keyCode);
    	  10 === nativeEvent && (nativeEvent = 13);
    	  return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;
    	}
    	function functionThatReturnsTrue() {
    	  return true;
    	}
    	function functionThatReturnsFalse() {
    	  return false;
    	}
    	function createSyntheticEvent(Interface) {
    	  function SyntheticBaseEvent(
    	    reactName,
    	    reactEventType,
    	    targetInst,
    	    nativeEvent,
    	    nativeEventTarget
    	  ) {
    	    this._reactName = reactName;
    	    this._targetInst = targetInst;
    	    this.type = reactEventType;
    	    this.nativeEvent = nativeEvent;
    	    this.target = nativeEventTarget;
    	    this.currentTarget = null;
    	    for (var propName in Interface)
    	      Interface.hasOwnProperty(propName) &&
    	        ((reactName = Interface[propName]),
    	        (this[propName] = reactName
    	          ? reactName(nativeEvent)
    	          : nativeEvent[propName]));
    	    this.isDefaultPrevented = (
    	      null != nativeEvent.defaultPrevented
    	        ? nativeEvent.defaultPrevented
    	        : false === nativeEvent.returnValue
    	    )
    	      ? functionThatReturnsTrue
    	      : functionThatReturnsFalse;
    	    this.isPropagationStopped = functionThatReturnsFalse;
    	    return this;
    	  }
    	  assign(SyntheticBaseEvent.prototype, {
    	    preventDefault: function () {
    	      this.defaultPrevented = true;
    	      var event = this.nativeEvent;
    	      event &&
    	        (event.preventDefault
    	          ? event.preventDefault()
    	          : "unknown" !== typeof event.returnValue && (event.returnValue = false),
    	        (this.isDefaultPrevented = functionThatReturnsTrue));
    	    },
    	    stopPropagation: function () {
    	      var event = this.nativeEvent;
    	      event &&
    	        (event.stopPropagation
    	          ? event.stopPropagation()
    	          : "unknown" !== typeof event.cancelBubble &&
    	            (event.cancelBubble = true),
    	        (this.isPropagationStopped = functionThatReturnsTrue));
    	    },
    	    persist: function () {},
    	    isPersistent: functionThatReturnsTrue
    	  });
    	  return SyntheticBaseEvent;
    	}
    	var EventInterface = {
    	    eventPhase: 0,
    	    bubbles: 0,
    	    cancelable: 0,
    	    timeStamp: function (event) {
    	      return event.timeStamp || Date.now();
    	    },
    	    defaultPrevented: 0,
    	    isTrusted: 0
    	  },
    	  SyntheticEvent = createSyntheticEvent(EventInterface),
    	  UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),
    	  SyntheticUIEvent = createSyntheticEvent(UIEventInterface),
    	  lastMovementX,
    	  lastMovementY,
    	  lastMouseEvent,
    	  MouseEventInterface = assign({}, UIEventInterface, {
    	    screenX: 0,
    	    screenY: 0,
    	    clientX: 0,
    	    clientY: 0,
    	    pageX: 0,
    	    pageY: 0,
    	    ctrlKey: 0,
    	    shiftKey: 0,
    	    altKey: 0,
    	    metaKey: 0,
    	    getModifierState: getEventModifierState,
    	    button: 0,
    	    buttons: 0,
    	    relatedTarget: function (event) {
    	      return void 0 === event.relatedTarget
    	        ? event.fromElement === event.srcElement
    	          ? event.toElement
    	          : event.fromElement
    	        : event.relatedTarget;
    	    },
    	    movementX: function (event) {
    	      if ("movementX" in event) return event.movementX;
    	      event !== lastMouseEvent &&
    	        (lastMouseEvent && "mousemove" === event.type
    	          ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),
    	            (lastMovementY = event.screenY - lastMouseEvent.screenY))
    	          : (lastMovementY = lastMovementX = 0),
    	        (lastMouseEvent = event));
    	      return lastMovementX;
    	    },
    	    movementY: function (event) {
    	      return "movementY" in event ? event.movementY : lastMovementY;
    	    }
    	  }),
    	  SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),
    	  DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),
    	  SyntheticDragEvent = createSyntheticEvent(DragEventInterface),
    	  FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),
    	  SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),
    	  AnimationEventInterface = assign({}, EventInterface, {
    	    animationName: 0,
    	    elapsedTime: 0,
    	    pseudoElement: 0
    	  }),
    	  SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),
    	  ClipboardEventInterface = assign({}, EventInterface, {
    	    clipboardData: function (event) {
    	      return "clipboardData" in event
    	        ? event.clipboardData
    	        : window.clipboardData;
    	    }
    	  }),
    	  SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),
    	  CompositionEventInterface = assign({}, EventInterface, { data: 0 }),
    	  SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),
    	  normalizeKey = {
    	    Esc: "Escape",
    	    Spacebar: " ",
    	    Left: "ArrowLeft",
    	    Up: "ArrowUp",
    	    Right: "ArrowRight",
    	    Down: "ArrowDown",
    	    Del: "Delete",
    	    Win: "OS",
    	    Menu: "ContextMenu",
    	    Apps: "ContextMenu",
    	    Scroll: "ScrollLock",
    	    MozPrintableKey: "Unidentified"
    	  },
    	  translateToKey = {
    	    8: "Backspace",
    	    9: "Tab",
    	    12: "Clear",
    	    13: "Enter",
    	    16: "Shift",
    	    17: "Control",
    	    18: "Alt",
    	    19: "Pause",
    	    20: "CapsLock",
    	    27: "Escape",
    	    32: " ",
    	    33: "PageUp",
    	    34: "PageDown",
    	    35: "End",
    	    36: "Home",
    	    37: "ArrowLeft",
    	    38: "ArrowUp",
    	    39: "ArrowRight",
    	    40: "ArrowDown",
    	    45: "Insert",
    	    46: "Delete",
    	    112: "F1",
    	    113: "F2",
    	    114: "F3",
    	    115: "F4",
    	    116: "F5",
    	    117: "F6",
    	    118: "F7",
    	    119: "F8",
    	    120: "F9",
    	    121: "F10",
    	    122: "F11",
    	    123: "F12",
    	    144: "NumLock",
    	    145: "ScrollLock",
    	    224: "Meta"
    	  },
    	  modifierKeyToProp = {
    	    Alt: "altKey",
    	    Control: "ctrlKey",
    	    Meta: "metaKey",
    	    Shift: "shiftKey"
    	  };
    	function modifierStateGetter(keyArg) {
    	  var nativeEvent = this.nativeEvent;
    	  return nativeEvent.getModifierState
    	    ? nativeEvent.getModifierState(keyArg)
    	    : (keyArg = modifierKeyToProp[keyArg])
    	      ? !!nativeEvent[keyArg]
    	      : false;
    	}
    	function getEventModifierState() {
    	  return modifierStateGetter;
    	}
    	var KeyboardEventInterface = assign({}, UIEventInterface, {
    	    key: function (nativeEvent) {
    	      if (nativeEvent.key) {
    	        var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
    	        if ("Unidentified" !== key) return key;
    	      }
    	      return "keypress" === nativeEvent.type
    	        ? ((nativeEvent = getEventCharCode(nativeEvent)),
    	          13 === nativeEvent ? "Enter" : String.fromCharCode(nativeEvent))
    	        : "keydown" === nativeEvent.type || "keyup" === nativeEvent.type
    	          ? translateToKey[nativeEvent.keyCode] || "Unidentified"
    	          : "";
    	    },
    	    code: 0,
    	    location: 0,
    	    ctrlKey: 0,
    	    shiftKey: 0,
    	    altKey: 0,
    	    metaKey: 0,
    	    repeat: 0,
    	    locale: 0,
    	    getModifierState: getEventModifierState,
    	    charCode: function (event) {
    	      return "keypress" === event.type ? getEventCharCode(event) : 0;
    	    },
    	    keyCode: function (event) {
    	      return "keydown" === event.type || "keyup" === event.type
    	        ? event.keyCode
    	        : 0;
    	    },
    	    which: function (event) {
    	      return "keypress" === event.type
    	        ? getEventCharCode(event)
    	        : "keydown" === event.type || "keyup" === event.type
    	          ? event.keyCode
    	          : 0;
    	    }
    	  }),
    	  SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),
    	  PointerEventInterface = assign({}, MouseEventInterface, {
    	    pointerId: 0,
    	    width: 0,
    	    height: 0,
    	    pressure: 0,
    	    tangentialPressure: 0,
    	    tiltX: 0,
    	    tiltY: 0,
    	    twist: 0,
    	    pointerType: 0,
    	    isPrimary: 0
    	  }),
    	  SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),
    	  TouchEventInterface = assign({}, UIEventInterface, {
    	    touches: 0,
    	    targetTouches: 0,
    	    changedTouches: 0,
    	    altKey: 0,
    	    metaKey: 0,
    	    ctrlKey: 0,
    	    shiftKey: 0,
    	    getModifierState: getEventModifierState
    	  }),
    	  SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),
    	  TransitionEventInterface = assign({}, EventInterface, {
    	    propertyName: 0,
    	    elapsedTime: 0,
    	    pseudoElement: 0
    	  }),
    	  SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),
    	  WheelEventInterface = assign({}, MouseEventInterface, {
    	    deltaX: function (event) {
    	      return "deltaX" in event
    	        ? event.deltaX
    	        : "wheelDeltaX" in event
    	          ? -event.wheelDeltaX
    	          : 0;
    	    },
    	    deltaY: function (event) {
    	      return "deltaY" in event
    	        ? event.deltaY
    	        : "wheelDeltaY" in event
    	          ? -event.wheelDeltaY
    	          : "wheelDelta" in event
    	            ? -event.wheelDelta
    	            : 0;
    	    },
    	    deltaZ: 0,
    	    deltaMode: 0
    	  }),
    	  SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),
    	  ToggleEventInterface = assign({}, EventInterface, {
    	    newState: 0,
    	    oldState: 0
    	  }),
    	  SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),
    	  END_KEYCODES = [9, 13, 27, 32],
    	  canUseCompositionEvent = canUseDOM && "CompositionEvent" in window,
    	  documentMode = null;
    	canUseDOM &&
    	  "documentMode" in document &&
    	  (documentMode = document.documentMode);
    	var canUseTextInputEvent = canUseDOM && "TextEvent" in window && !documentMode,
    	  useFallbackCompositionData =
    	    canUseDOM &&
    	    (!canUseCompositionEvent ||
    	      (documentMode && 8 < documentMode && 11 >= documentMode)),
    	  SPACEBAR_CHAR = String.fromCharCode(32),
    	  hasSpaceKeypress = false;
    	function isFallbackCompositionEnd(domEventName, nativeEvent) {
    	  switch (domEventName) {
    	    case "keyup":
    	      return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);
    	    case "keydown":
    	      return 229 !== nativeEvent.keyCode;
    	    case "keypress":
    	    case "mousedown":
    	    case "focusout":
    	      return true;
    	    default:
    	      return false;
    	  }
    	}
    	function getDataFromCustomEvent(nativeEvent) {
    	  nativeEvent = nativeEvent.detail;
    	  return "object" === typeof nativeEvent && "data" in nativeEvent
    	    ? nativeEvent.data
    	    : null;
    	}
    	var isComposing = false;
    	function getNativeBeforeInputChars(domEventName, nativeEvent) {
    	  switch (domEventName) {
    	    case "compositionend":
    	      return getDataFromCustomEvent(nativeEvent);
    	    case "keypress":
    	      if (32 !== nativeEvent.which) return null;
    	      hasSpaceKeypress = true;
    	      return SPACEBAR_CHAR;
    	    case "textInput":
    	      return (
    	        (domEventName = nativeEvent.data),
    	        domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName
    	      );
    	    default:
    	      return null;
    	  }
    	}
    	function getFallbackBeforeInputChars(domEventName, nativeEvent) {
    	  if (isComposing)
    	    return "compositionend" === domEventName ||
    	      (!canUseCompositionEvent &&
    	        isFallbackCompositionEnd(domEventName, nativeEvent))
    	      ? ((domEventName = getData()),
    	        (fallbackText = startText = root = null),
    	        (isComposing = false),
    	        domEventName)
    	      : null;
    	  switch (domEventName) {
    	    case "paste":
    	      return null;
    	    case "keypress":
    	      if (
    	        !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||
    	        (nativeEvent.ctrlKey && nativeEvent.altKey)
    	      ) {
    	        if (nativeEvent.char && 1 < nativeEvent.char.length)
    	          return nativeEvent.char;
    	        if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);
    	      }
    	      return null;
    	    case "compositionend":
    	      return useFallbackCompositionData && "ko" !== nativeEvent.locale
    	        ? null
    	        : nativeEvent.data;
    	    default:
    	      return null;
    	  }
    	}
    	var supportedInputTypes = {
    	  color: true,
    	  date: true,
    	  datetime: true,
    	  "datetime-local": true,
    	  email: true,
    	  month: true,
    	  number: true,
    	  password: true,
    	  range: true,
    	  search: true,
    	  tel: true,
    	  text: true,
    	  time: true,
    	  url: true,
    	  week: true
    	};
    	function isTextInputElement(elem) {
    	  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
    	  return "input" === nodeName
    	    ? !!supportedInputTypes[elem.type]
    	    : "textarea" === nodeName
    	      ? true
    	      : false;
    	}
    	function createAndAccumulateChangeEvent(
    	  dispatchQueue,
    	  inst,
    	  nativeEvent,
    	  target
    	) {
    	  restoreTarget
    	    ? restoreQueue
    	      ? restoreQueue.push(target)
    	      : (restoreQueue = [target])
    	    : (restoreTarget = target);
    	  inst = accumulateTwoPhaseListeners(inst, "onChange");
    	  0 < inst.length &&
    	    ((nativeEvent = new SyntheticEvent(
    	      "onChange",
    	      "change",
    	      null,
    	      nativeEvent,
    	      target
    	    )),
    	    dispatchQueue.push({ event: nativeEvent, listeners: inst }));
    	}
    	var activeElement$1 = null,
    	  activeElementInst$1 = null;
    	function runEventInBatch(dispatchQueue) {
    	  processDispatchQueue(dispatchQueue, 0);
    	}
    	function getInstIfValueChanged(targetInst) {
    	  var targetNode = getNodeFromInstance(targetInst);
    	  if (updateValueIfChanged(targetNode)) return targetInst;
    	}
    	function getTargetInstForChangeEvent(domEventName, targetInst) {
    	  if ("change" === domEventName) return targetInst;
    	}
    	var isInputEventSupported = false;
    	if (canUseDOM) {
    	  var JSCompiler_inline_result$jscomp$282;
    	  if (canUseDOM) {
    	    var isSupported$jscomp$inline_417 = "oninput" in document;
    	    if (!isSupported$jscomp$inline_417) {
    	      var element$jscomp$inline_418 = document.createElement("div");
    	      element$jscomp$inline_418.setAttribute("oninput", "return;");
    	      isSupported$jscomp$inline_417 =
    	        "function" === typeof element$jscomp$inline_418.oninput;
    	    }
    	    JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;
    	  } else JSCompiler_inline_result$jscomp$282 = false;
    	  isInputEventSupported =
    	    JSCompiler_inline_result$jscomp$282 &&
    	    (!document.documentMode || 9 < document.documentMode);
    	}
    	function stopWatchingForValueChange() {
    	  activeElement$1 &&
    	    (activeElement$1.detachEvent("onpropertychange", handlePropertyChange),
    	    (activeElementInst$1 = activeElement$1 = null));
    	}
    	function handlePropertyChange(nativeEvent) {
    	  if (
    	    "value" === nativeEvent.propertyName &&
    	    getInstIfValueChanged(activeElementInst$1)
    	  ) {
    	    var dispatchQueue = [];
    	    createAndAccumulateChangeEvent(
    	      dispatchQueue,
    	      activeElementInst$1,
    	      nativeEvent,
    	      getEventTarget(nativeEvent)
    	    );
    	    batchedUpdates$1(runEventInBatch, dispatchQueue);
    	  }
    	}
    	function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {
    	  "focusin" === domEventName
    	    ? (stopWatchingForValueChange(),
    	      (activeElement$1 = target),
    	      (activeElementInst$1 = targetInst),
    	      activeElement$1.attachEvent("onpropertychange", handlePropertyChange))
    	    : "focusout" === domEventName && stopWatchingForValueChange();
    	}
    	function getTargetInstForInputEventPolyfill(domEventName) {
    	  if (
    	    "selectionchange" === domEventName ||
    	    "keyup" === domEventName ||
    	    "keydown" === domEventName
    	  )
    	    return getInstIfValueChanged(activeElementInst$1);
    	}
    	function getTargetInstForClickEvent(domEventName, targetInst) {
    	  if ("click" === domEventName) return getInstIfValueChanged(targetInst);
    	}
    	function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {
    	  if ("input" === domEventName || "change" === domEventName)
    	    return getInstIfValueChanged(targetInst);
    	}
    	function is(x, y) {
    	  return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);
    	}
    	var objectIs = "function" === typeof Object.is ? Object.is : is;
    	function shallowEqual(objA, objB) {
    	  if (objectIs(objA, objB)) return true;
    	  if (
    	    "object" !== typeof objA ||
    	    null === objA ||
    	    "object" !== typeof objB ||
    	    null === objB
    	  )
    	    return false;
    	  var keysA = Object.keys(objA),
    	    keysB = Object.keys(objB);
    	  if (keysA.length !== keysB.length) return false;
    	  for (keysB = 0; keysB < keysA.length; keysB++) {
    	    var currentKey = keysA[keysB];
    	    if (
    	      !hasOwnProperty.call(objB, currentKey) ||
    	      !objectIs(objA[currentKey], objB[currentKey])
    	    )
    	      return false;
    	  }
    	  return true;
    	}
    	function getLeafNode(node) {
    	  for (; node && node.firstChild; ) node = node.firstChild;
    	  return node;
    	}
    	function getNodeForCharacterOffset(root, offset) {
    	  var node = getLeafNode(root);
    	  root = 0;
    	  for (var nodeEnd; node; ) {
    	    if (3 === node.nodeType) {
    	      nodeEnd = root + node.textContent.length;
    	      if (root <= offset && nodeEnd >= offset)
    	        return { node: node, offset: offset - root };
    	      root = nodeEnd;
    	    }
    	    a: {
    	      for (; node; ) {
    	        if (node.nextSibling) {
    	          node = node.nextSibling;
    	          break a;
    	        }
    	        node = node.parentNode;
    	      }
    	      node = void 0;
    	    }
    	    node = getLeafNode(node);
    	  }
    	}
    	function containsNode(outerNode, innerNode) {
    	  return outerNode && innerNode
    	    ? outerNode === innerNode
    	      ? true
    	      : outerNode && 3 === outerNode.nodeType
    	        ? false
    	        : innerNode && 3 === innerNode.nodeType
    	          ? containsNode(outerNode, innerNode.parentNode)
    	          : "contains" in outerNode
    	            ? outerNode.contains(innerNode)
    	            : outerNode.compareDocumentPosition
    	              ? !!(outerNode.compareDocumentPosition(innerNode) & 16)
    	              : false
    	    : false;
    	}
    	function getActiveElementDeep(containerInfo) {
    	  containerInfo =
    	    null != containerInfo &&
    	    null != containerInfo.ownerDocument &&
    	    null != containerInfo.ownerDocument.defaultView
    	      ? containerInfo.ownerDocument.defaultView
    	      : window;
    	  for (
    	    var element = getActiveElement(containerInfo.document);
    	    element instanceof containerInfo.HTMLIFrameElement;

    	  ) {
    	    try {
    	      var JSCompiler_inline_result =
    	        "string" === typeof element.contentWindow.location.href;
    	    } catch (err) {
    	      JSCompiler_inline_result = false;
    	    }
    	    if (JSCompiler_inline_result) containerInfo = element.contentWindow;
    	    else break;
    	    element = getActiveElement(containerInfo.document);
    	  }
    	  return element;
    	}
    	function hasSelectionCapabilities(elem) {
    	  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
    	  return (
    	    nodeName &&
    	    (("input" === nodeName &&
    	      ("text" === elem.type ||
    	        "search" === elem.type ||
    	        "tel" === elem.type ||
    	        "url" === elem.type ||
    	        "password" === elem.type)) ||
    	      "textarea" === nodeName ||
    	      "true" === elem.contentEditable)
    	  );
    	}
    	var skipSelectionChangeEvent =
    	    canUseDOM && "documentMode" in document && 11 >= document.documentMode,
    	  activeElement = null,
    	  activeElementInst = null,
    	  lastSelection = null,
    	  mouseDown = false;
    	function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {
    	  var doc =
    	    nativeEventTarget.window === nativeEventTarget
    	      ? nativeEventTarget.document
    	      : 9 === nativeEventTarget.nodeType
    	        ? nativeEventTarget
    	        : nativeEventTarget.ownerDocument;
    	  mouseDown ||
    	    null == activeElement ||
    	    activeElement !== getActiveElement(doc) ||
    	    ((doc = activeElement),
    	    "selectionStart" in doc && hasSelectionCapabilities(doc)
    	      ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })
    	      : ((doc = (
    	          (doc.ownerDocument && doc.ownerDocument.defaultView) ||
    	          window
    	        ).getSelection()),
    	        (doc = {
    	          anchorNode: doc.anchorNode,
    	          anchorOffset: doc.anchorOffset,
    	          focusNode: doc.focusNode,
    	          focusOffset: doc.focusOffset
    	        })),
    	    (lastSelection && shallowEqual(lastSelection, doc)) ||
    	      ((lastSelection = doc),
    	      (doc = accumulateTwoPhaseListeners(activeElementInst, "onSelect")),
    	      0 < doc.length &&
    	        ((nativeEvent = new SyntheticEvent(
    	          "onSelect",
    	          "select",
    	          null,
    	          nativeEvent,
    	          nativeEventTarget
    	        )),
    	        dispatchQueue.push({ event: nativeEvent, listeners: doc }),
    	        (nativeEvent.target = activeElement))));
    	}
    	function makePrefixMap(styleProp, eventName) {
    	  var prefixes = {};
    	  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
    	  prefixes["Webkit" + styleProp] = "webkit" + eventName;
    	  prefixes["Moz" + styleProp] = "moz" + eventName;
    	  return prefixes;
    	}
    	var vendorPrefixes = {
    	    animationend: makePrefixMap("Animation", "AnimationEnd"),
    	    animationiteration: makePrefixMap("Animation", "AnimationIteration"),
    	    animationstart: makePrefixMap("Animation", "AnimationStart"),
    	    transitionrun: makePrefixMap("Transition", "TransitionRun"),
    	    transitionstart: makePrefixMap("Transition", "TransitionStart"),
    	    transitioncancel: makePrefixMap("Transition", "TransitionCancel"),
    	    transitionend: makePrefixMap("Transition", "TransitionEnd")
    	  },
    	  prefixedEventNames = {},
    	  style = {};
    	canUseDOM &&
    	  ((style = document.createElement("div").style),
    	  "AnimationEvent" in window ||
    	    (delete vendorPrefixes.animationend.animation,
    	    delete vendorPrefixes.animationiteration.animation,
    	    delete vendorPrefixes.animationstart.animation),
    	  "TransitionEvent" in window ||
    	    delete vendorPrefixes.transitionend.transition);
    	function getVendorPrefixedEventName(eventName) {
    	  if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];
    	  if (!vendorPrefixes[eventName]) return eventName;
    	  var prefixMap = vendorPrefixes[eventName],
    	    styleProp;
    	  for (styleProp in prefixMap)
    	    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)
    	      return (prefixedEventNames[eventName] = prefixMap[styleProp]);
    	  return eventName;
    	}
    	var ANIMATION_END = getVendorPrefixedEventName("animationend"),
    	  ANIMATION_ITERATION = getVendorPrefixedEventName("animationiteration"),
    	  ANIMATION_START = getVendorPrefixedEventName("animationstart"),
    	  TRANSITION_RUN = getVendorPrefixedEventName("transitionrun"),
    	  TRANSITION_START = getVendorPrefixedEventName("transitionstart"),
    	  TRANSITION_CANCEL = getVendorPrefixedEventName("transitioncancel"),
    	  TRANSITION_END = getVendorPrefixedEventName("transitionend"),
    	  topLevelEventsToReactNames = new Map(),
    	  simpleEventPluginEvents =
    	    "abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(
    	      " "
    	    );
    	simpleEventPluginEvents.push("scrollEnd");
    	function registerSimpleEvent(domEventName, reactName) {
    	  topLevelEventsToReactNames.set(domEventName, reactName);
    	  registerTwoPhaseEvent(reactName, [domEventName]);
    	}
    	var CapturedStacks = new WeakMap();
    	function createCapturedValueAtFiber(value, source) {
    	  if ("object" === typeof value && null !== value) {
    	    var existing = CapturedStacks.get(value);
    	    if (void 0 !== existing) return existing;
    	    source = {
    	      value: value,
    	      source: source,
    	      stack: getStackByFiberInDevAndProd(source)
    	    };
    	    CapturedStacks.set(value, source);
    	    return source;
    	  }
    	  return {
    	    value: value,
    	    source: source,
    	    stack: getStackByFiberInDevAndProd(source)
    	  };
    	}
    	var concurrentQueues = [],
    	  concurrentQueuesIndex = 0,
    	  concurrentlyUpdatedLanes = 0;
    	function finishQueueingConcurrentUpdates() {
    	  for (
    	    var endIndex = concurrentQueuesIndex,
    	      i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);
    	    i < endIndex;

    	  ) {
    	    var fiber = concurrentQueues[i];
    	    concurrentQueues[i++] = null;
    	    var queue = concurrentQueues[i];
    	    concurrentQueues[i++] = null;
    	    var update = concurrentQueues[i];
    	    concurrentQueues[i++] = null;
    	    var lane = concurrentQueues[i];
    	    concurrentQueues[i++] = null;
    	    if (null !== queue && null !== update) {
    	      var pending = queue.pending;
    	      null === pending
    	        ? (update.next = update)
    	        : ((update.next = pending.next), (pending.next = update));
    	      queue.pending = update;
    	    }
    	    0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);
    	  }
    	}
    	function enqueueUpdate$1(fiber, queue, update, lane) {
    	  concurrentQueues[concurrentQueuesIndex++] = fiber;
    	  concurrentQueues[concurrentQueuesIndex++] = queue;
    	  concurrentQueues[concurrentQueuesIndex++] = update;
    	  concurrentQueues[concurrentQueuesIndex++] = lane;
    	  concurrentlyUpdatedLanes |= lane;
    	  fiber.lanes |= lane;
    	  fiber = fiber.alternate;
    	  null !== fiber && (fiber.lanes |= lane);
    	}
    	function enqueueConcurrentHookUpdate(fiber, queue, update, lane) {
    	  enqueueUpdate$1(fiber, queue, update, lane);
    	  return getRootForUpdatedFiber(fiber);
    	}
    	function enqueueConcurrentRenderForLane(fiber, lane) {
    	  enqueueUpdate$1(fiber, null, null, lane);
    	  return getRootForUpdatedFiber(fiber);
    	}
    	function markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {
    	  sourceFiber.lanes |= lane;
    	  var alternate = sourceFiber.alternate;
    	  null !== alternate && (alternate.lanes |= lane);
    	  for (var isHidden = false, parent = sourceFiber.return; null !== parent; )
    	    (parent.childLanes |= lane),
    	      (alternate = parent.alternate),
    	      null !== alternate && (alternate.childLanes |= lane),
    	      22 === parent.tag &&
    	        ((sourceFiber = parent.stateNode),
    	        null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = true)),
    	      (sourceFiber = parent),
    	      (parent = parent.return);
    	  return 3 === sourceFiber.tag
    	    ? ((parent = sourceFiber.stateNode),
    	      isHidden &&
    	        null !== update &&
    	        ((isHidden = 31 - clz32(lane)),
    	        (sourceFiber = parent.hiddenUpdates),
    	        (alternate = sourceFiber[isHidden]),
    	        null === alternate
    	          ? (sourceFiber[isHidden] = [update])
    	          : alternate.push(update),
    	        (update.lane = lane | 536870912)),
    	      parent)
    	    : null;
    	}
    	function getRootForUpdatedFiber(sourceFiber) {
    	  if (50 < nestedUpdateCount)
    	    throw (
    	      ((nestedUpdateCount = 0),
    	      (rootWithNestedUpdates = null),
    	      Error(formatProdErrorMessage(185)))
    	    );
    	  for (var parent = sourceFiber.return; null !== parent; )
    	    (sourceFiber = parent), (parent = sourceFiber.return);
    	  return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;
    	}
    	var emptyContextObject = {};
    	function FiberNode(tag, pendingProps, key, mode) {
    	  this.tag = tag;
    	  this.key = key;
    	  this.sibling =
    	    this.child =
    	    this.return =
    	    this.stateNode =
    	    this.type =
    	    this.elementType =
    	      null;
    	  this.index = 0;
    	  this.refCleanup = this.ref = null;
    	  this.pendingProps = pendingProps;
    	  this.dependencies =
    	    this.memoizedState =
    	    this.updateQueue =
    	    this.memoizedProps =
    	      null;
    	  this.mode = mode;
    	  this.subtreeFlags = this.flags = 0;
    	  this.deletions = null;
    	  this.childLanes = this.lanes = 0;
    	  this.alternate = null;
    	}
    	function createFiberImplClass(tag, pendingProps, key, mode) {
    	  return new FiberNode(tag, pendingProps, key, mode);
    	}
    	function shouldConstruct(Component) {
    	  Component = Component.prototype;
    	  return !(!Component || !Component.isReactComponent);
    	}
    	function createWorkInProgress(current, pendingProps) {
    	  var workInProgress = current.alternate;
    	  null === workInProgress
    	    ? ((workInProgress = createFiberImplClass(
    	        current.tag,
    	        pendingProps,
    	        current.key,
    	        current.mode
    	      )),
    	      (workInProgress.elementType = current.elementType),
    	      (workInProgress.type = current.type),
    	      (workInProgress.stateNode = current.stateNode),
    	      (workInProgress.alternate = current),
    	      (current.alternate = workInProgress))
    	    : ((workInProgress.pendingProps = pendingProps),
    	      (workInProgress.type = current.type),
    	      (workInProgress.flags = 0),
    	      (workInProgress.subtreeFlags = 0),
    	      (workInProgress.deletions = null));
    	  workInProgress.flags = current.flags & 65011712;
    	  workInProgress.childLanes = current.childLanes;
    	  workInProgress.lanes = current.lanes;
    	  workInProgress.child = current.child;
    	  workInProgress.memoizedProps = current.memoizedProps;
    	  workInProgress.memoizedState = current.memoizedState;
    	  workInProgress.updateQueue = current.updateQueue;
    	  pendingProps = current.dependencies;
    	  workInProgress.dependencies =
    	    null === pendingProps
    	      ? null
    	      : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };
    	  workInProgress.sibling = current.sibling;
    	  workInProgress.index = current.index;
    	  workInProgress.ref = current.ref;
    	  workInProgress.refCleanup = current.refCleanup;
    	  return workInProgress;
    	}
    	function resetWorkInProgress(workInProgress, renderLanes) {
    	  workInProgress.flags &= 65011714;
    	  var current = workInProgress.alternate;
    	  null === current
    	    ? ((workInProgress.childLanes = 0),
    	      (workInProgress.lanes = renderLanes),
    	      (workInProgress.child = null),
    	      (workInProgress.subtreeFlags = 0),
    	      (workInProgress.memoizedProps = null),
    	      (workInProgress.memoizedState = null),
    	      (workInProgress.updateQueue = null),
    	      (workInProgress.dependencies = null),
    	      (workInProgress.stateNode = null))
    	    : ((workInProgress.childLanes = current.childLanes),
    	      (workInProgress.lanes = current.lanes),
    	      (workInProgress.child = current.child),
    	      (workInProgress.subtreeFlags = 0),
    	      (workInProgress.deletions = null),
    	      (workInProgress.memoizedProps = current.memoizedProps),
    	      (workInProgress.memoizedState = current.memoizedState),
    	      (workInProgress.updateQueue = current.updateQueue),
    	      (workInProgress.type = current.type),
    	      (renderLanes = current.dependencies),
    	      (workInProgress.dependencies =
    	        null === renderLanes
    	          ? null
    	          : {
    	              lanes: renderLanes.lanes,
    	              firstContext: renderLanes.firstContext
    	            }));
    	  return workInProgress;
    	}
    	function createFiberFromTypeAndProps(
    	  type,
    	  key,
    	  pendingProps,
    	  owner,
    	  mode,
    	  lanes
    	) {
    	  var fiberTag = 0;
    	  owner = type;
    	  if ("function" === typeof type) shouldConstruct(type) && (fiberTag = 1);
    	  else if ("string" === typeof type)
    	    fiberTag = isHostHoistableType(
    	      type,
    	      pendingProps,
    	      contextStackCursor.current
    	    )
    	      ? 26
    	      : "html" === type || "head" === type || "body" === type
    	        ? 27
    	        : 5;
    	  else
    	    a: switch (type) {
    	      case REACT_ACTIVITY_TYPE:
    	        return (
    	          (type = createFiberImplClass(31, pendingProps, key, mode)),
    	          (type.elementType = REACT_ACTIVITY_TYPE),
    	          (type.lanes = lanes),
    	          type
    	        );
    	      case REACT_FRAGMENT_TYPE:
    	        return createFiberFromFragment(pendingProps.children, mode, lanes, key);
    	      case REACT_STRICT_MODE_TYPE:
    	        fiberTag = 8;
    	        mode |= 24;
    	        break;
    	      case REACT_PROFILER_TYPE:
    	        return (
    	          (type = createFiberImplClass(12, pendingProps, key, mode | 2)),
    	          (type.elementType = REACT_PROFILER_TYPE),
    	          (type.lanes = lanes),
    	          type
    	        );
    	      case REACT_SUSPENSE_TYPE:
    	        return (
    	          (type = createFiberImplClass(13, pendingProps, key, mode)),
    	          (type.elementType = REACT_SUSPENSE_TYPE),
    	          (type.lanes = lanes),
    	          type
    	        );
    	      case REACT_SUSPENSE_LIST_TYPE:
    	        return (
    	          (type = createFiberImplClass(19, pendingProps, key, mode)),
    	          (type.elementType = REACT_SUSPENSE_LIST_TYPE),
    	          (type.lanes = lanes),
    	          type
    	        );
    	      default:
    	        if ("object" === typeof type && null !== type)
    	          switch (type.$$typeof) {
    	            case REACT_PROVIDER_TYPE:
    	            case REACT_CONTEXT_TYPE:
    	              fiberTag = 10;
    	              break a;
    	            case REACT_CONSUMER_TYPE:
    	              fiberTag = 9;
    	              break a;
    	            case REACT_FORWARD_REF_TYPE:
    	              fiberTag = 11;
    	              break a;
    	            case REACT_MEMO_TYPE:
    	              fiberTag = 14;
    	              break a;
    	            case REACT_LAZY_TYPE:
    	              fiberTag = 16;
    	              owner = null;
    	              break a;
    	          }
    	        fiberTag = 29;
    	        pendingProps = Error(
    	          formatProdErrorMessage(130, null === type ? "null" : typeof type, "")
    	        );
    	        owner = null;
    	    }
    	  key = createFiberImplClass(fiberTag, pendingProps, key, mode);
    	  key.elementType = type;
    	  key.type = owner;
    	  key.lanes = lanes;
    	  return key;
    	}
    	function createFiberFromFragment(elements, mode, lanes, key) {
    	  elements = createFiberImplClass(7, elements, key, mode);
    	  elements.lanes = lanes;
    	  return elements;
    	}
    	function createFiberFromText(content, mode, lanes) {
    	  content = createFiberImplClass(6, content, null, mode);
    	  content.lanes = lanes;
    	  return content;
    	}
    	function createFiberFromPortal(portal, mode, lanes) {
    	  mode = createFiberImplClass(
    	    4,
    	    null !== portal.children ? portal.children : [],
    	    portal.key,
    	    mode
    	  );
    	  mode.lanes = lanes;
    	  mode.stateNode = {
    	    containerInfo: portal.containerInfo,
    	    pendingChildren: null,
    	    implementation: portal.implementation
    	  };
    	  return mode;
    	}
    	var forkStack = [],
    	  forkStackIndex = 0,
    	  treeForkProvider = null,
    	  treeForkCount = 0,
    	  idStack = [],
    	  idStackIndex = 0,
    	  treeContextProvider = null,
    	  treeContextId = 1,
    	  treeContextOverflow = "";
    	function pushTreeFork(workInProgress, totalChildren) {
    	  forkStack[forkStackIndex++] = treeForkCount;
    	  forkStack[forkStackIndex++] = treeForkProvider;
    	  treeForkProvider = workInProgress;
    	  treeForkCount = totalChildren;
    	}
    	function pushTreeId(workInProgress, totalChildren, index) {
    	  idStack[idStackIndex++] = treeContextId;
    	  idStack[idStackIndex++] = treeContextOverflow;
    	  idStack[idStackIndex++] = treeContextProvider;
    	  treeContextProvider = workInProgress;
    	  var baseIdWithLeadingBit = treeContextId;
    	  workInProgress = treeContextOverflow;
    	  var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;
    	  baseIdWithLeadingBit &= ~(1 << baseLength);
    	  index += 1;
    	  var length = 32 - clz32(totalChildren) + baseLength;
    	  if (30 < length) {
    	    var numberOfOverflowBits = baseLength - (baseLength % 5);
    	    length = (
    	      baseIdWithLeadingBit &
    	      ((1 << numberOfOverflowBits) - 1)
    	    ).toString(32);
    	    baseIdWithLeadingBit >>= numberOfOverflowBits;
    	    baseLength -= numberOfOverflowBits;
    	    treeContextId =
    	      (1 << (32 - clz32(totalChildren) + baseLength)) |
    	      (index << baseLength) |
    	      baseIdWithLeadingBit;
    	    treeContextOverflow = length + workInProgress;
    	  } else
    	    (treeContextId =
    	      (1 << length) | (index << baseLength) | baseIdWithLeadingBit),
    	      (treeContextOverflow = workInProgress);
    	}
    	function pushMaterializedTreeId(workInProgress) {
    	  null !== workInProgress.return &&
    	    (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));
    	}
    	function popTreeContext(workInProgress) {
    	  for (; workInProgress === treeForkProvider; )
    	    (treeForkProvider = forkStack[--forkStackIndex]),
    	      (forkStack[forkStackIndex] = null),
    	      (treeForkCount = forkStack[--forkStackIndex]),
    	      (forkStack[forkStackIndex] = null);
    	  for (; workInProgress === treeContextProvider; )
    	    (treeContextProvider = idStack[--idStackIndex]),
    	      (idStack[idStackIndex] = null),
    	      (treeContextOverflow = idStack[--idStackIndex]),
    	      (idStack[idStackIndex] = null),
    	      (treeContextId = idStack[--idStackIndex]),
    	      (idStack[idStackIndex] = null);
    	}
    	var hydrationParentFiber = null,
    	  nextHydratableInstance = null,
    	  isHydrating = false,
    	  hydrationErrors = null,
    	  rootOrSingletonContext = false,
    	  HydrationMismatchException = Error(formatProdErrorMessage(519));
    	function throwOnHydrationMismatch(fiber) {
    	  var error = Error(formatProdErrorMessage(418, ""));
    	  queueHydrationError(createCapturedValueAtFiber(error, fiber));
    	  throw HydrationMismatchException;
    	}
    	function prepareToHydrateHostInstance(fiber) {
    	  var instance = fiber.stateNode,
    	    type = fiber.type,
    	    props = fiber.memoizedProps;
    	  instance[internalInstanceKey] = fiber;
    	  instance[internalPropsKey] = props;
    	  switch (type) {
    	    case "dialog":
    	      listenToNonDelegatedEvent("cancel", instance);
    	      listenToNonDelegatedEvent("close", instance);
    	      break;
    	    case "iframe":
    	    case "object":
    	    case "embed":
    	      listenToNonDelegatedEvent("load", instance);
    	      break;
    	    case "video":
    	    case "audio":
    	      for (type = 0; type < mediaEventTypes.length; type++)
    	        listenToNonDelegatedEvent(mediaEventTypes[type], instance);
    	      break;
    	    case "source":
    	      listenToNonDelegatedEvent("error", instance);
    	      break;
    	    case "img":
    	    case "image":
    	    case "link":
    	      listenToNonDelegatedEvent("error", instance);
    	      listenToNonDelegatedEvent("load", instance);
    	      break;
    	    case "details":
    	      listenToNonDelegatedEvent("toggle", instance);
    	      break;
    	    case "input":
    	      listenToNonDelegatedEvent("invalid", instance);
    	      initInput(
    	        instance,
    	        props.value,
    	        props.defaultValue,
    	        props.checked,
    	        props.defaultChecked,
    	        props.type,
    	        props.name,
    	        true
    	      );
    	      track(instance);
    	      break;
    	    case "select":
    	      listenToNonDelegatedEvent("invalid", instance);
    	      break;
    	    case "textarea":
    	      listenToNonDelegatedEvent("invalid", instance),
    	        initTextarea(instance, props.value, props.defaultValue, props.children),
    	        track(instance);
    	  }
    	  type = props.children;
    	  ("string" !== typeof type &&
    	    "number" !== typeof type &&
    	    "bigint" !== typeof type) ||
    	  instance.textContent === "" + type ||
    	  true === props.suppressHydrationWarning ||
    	  checkForUnmatchedText(instance.textContent, type)
    	    ? (null != props.popover &&
    	        (listenToNonDelegatedEvent("beforetoggle", instance),
    	        listenToNonDelegatedEvent("toggle", instance)),
    	      null != props.onScroll && listenToNonDelegatedEvent("scroll", instance),
    	      null != props.onScrollEnd &&
    	        listenToNonDelegatedEvent("scrollend", instance),
    	      null != props.onClick && (instance.onclick = noop$1),
    	      (instance = true))
    	    : (instance = false);
    	  instance || throwOnHydrationMismatch(fiber);
    	}
    	function popToNextHostParent(fiber) {
    	  for (hydrationParentFiber = fiber.return; hydrationParentFiber; )
    	    switch (hydrationParentFiber.tag) {
    	      case 5:
    	      case 13:
    	        rootOrSingletonContext = false;
    	        return;
    	      case 27:
    	      case 3:
    	        rootOrSingletonContext = true;
    	        return;
    	      default:
    	        hydrationParentFiber = hydrationParentFiber.return;
    	    }
    	}
    	function popHydrationState(fiber) {
    	  if (fiber !== hydrationParentFiber) return false;
    	  if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = true), false;
    	  var tag = fiber.tag,
    	    JSCompiler_temp;
    	  if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {
    	    if ((JSCompiler_temp = 5 === tag))
    	      (JSCompiler_temp = fiber.type),
    	        (JSCompiler_temp =
    	          !("form" !== JSCompiler_temp && "button" !== JSCompiler_temp) ||
    	          shouldSetTextContent(fiber.type, fiber.memoizedProps));
    	    JSCompiler_temp = !JSCompiler_temp;
    	  }
    	  JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);
    	  popToNextHostParent(fiber);
    	  if (13 === tag) {
    	    fiber = fiber.memoizedState;
    	    fiber = null !== fiber ? fiber.dehydrated : null;
    	    if (!fiber) throw Error(formatProdErrorMessage(317));
    	    a: {
    	      fiber = fiber.nextSibling;
    	      for (tag = 0; fiber; ) {
    	        if (8 === fiber.nodeType)
    	          if (((JSCompiler_temp = fiber.data), "/$" === JSCompiler_temp)) {
    	            if (0 === tag) {
    	              nextHydratableInstance = getNextHydratable(fiber.nextSibling);
    	              break a;
    	            }
    	            tag--;
    	          } else
    	            ("$" !== JSCompiler_temp &&
    	              "$!" !== JSCompiler_temp &&
    	              "$?" !== JSCompiler_temp) ||
    	              tag++;
    	        fiber = fiber.nextSibling;
    	      }
    	      nextHydratableInstance = null;
    	    }
    	  } else
    	    27 === tag
    	      ? ((tag = nextHydratableInstance),
    	        isSingletonScope(fiber.type)
    	          ? ((fiber = previousHydratableOnEnteringScopedSingleton),
    	            (previousHydratableOnEnteringScopedSingleton = null),
    	            (nextHydratableInstance = fiber))
    	          : (nextHydratableInstance = tag))
    	      : (nextHydratableInstance = hydrationParentFiber
    	          ? getNextHydratable(fiber.stateNode.nextSibling)
    	          : null);
    	  return true;
    	}
    	function resetHydrationState() {
    	  nextHydratableInstance = hydrationParentFiber = null;
    	  isHydrating = false;
    	}
    	function upgradeHydrationErrorsToRecoverable() {
    	  var queuedErrors = hydrationErrors;
    	  null !== queuedErrors &&
    	    (null === workInProgressRootRecoverableErrors
    	      ? (workInProgressRootRecoverableErrors = queuedErrors)
    	      : workInProgressRootRecoverableErrors.push.apply(
    	          workInProgressRootRecoverableErrors,
    	          queuedErrors
    	        ),
    	    (hydrationErrors = null));
    	  return queuedErrors;
    	}
    	function queueHydrationError(error) {
    	  null === hydrationErrors
    	    ? (hydrationErrors = [error])
    	    : hydrationErrors.push(error);
    	}
    	var valueCursor = createCursor(null),
    	  currentlyRenderingFiber$1 = null,
    	  lastContextDependency = null;
    	function pushProvider(providerFiber, context, nextValue) {
    	  push(valueCursor, context._currentValue);
    	  context._currentValue = nextValue;
    	}
    	function popProvider(context) {
    	  context._currentValue = valueCursor.current;
    	  pop(valueCursor);
    	}
    	function scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {
    	  for (; null !== parent; ) {
    	    var alternate = parent.alternate;
    	    (parent.childLanes & renderLanes) !== renderLanes
    	      ? ((parent.childLanes |= renderLanes),
    	        null !== alternate && (alternate.childLanes |= renderLanes))
    	      : null !== alternate &&
    	        (alternate.childLanes & renderLanes) !== renderLanes &&
    	        (alternate.childLanes |= renderLanes);
    	    if (parent === propagationRoot) break;
    	    parent = parent.return;
    	  }
    	}
    	function propagateContextChanges(
    	  workInProgress,
    	  contexts,
    	  renderLanes,
    	  forcePropagateEntireTree
    	) {
    	  var fiber = workInProgress.child;
    	  null !== fiber && (fiber.return = workInProgress);
    	  for (; null !== fiber; ) {
    	    var list = fiber.dependencies;
    	    if (null !== list) {
    	      var nextFiber = fiber.child;
    	      list = list.firstContext;
    	      a: for (; null !== list; ) {
    	        var dependency = list;
    	        list = fiber;
    	        for (var i = 0; i < contexts.length; i++)
    	          if (dependency.context === contexts[i]) {
    	            list.lanes |= renderLanes;
    	            dependency = list.alternate;
    	            null !== dependency && (dependency.lanes |= renderLanes);
    	            scheduleContextWorkOnParentPath(
    	              list.return,
    	              renderLanes,
    	              workInProgress
    	            );
    	            forcePropagateEntireTree || (nextFiber = null);
    	            break a;
    	          }
    	        list = dependency.next;
    	      }
    	    } else if (18 === fiber.tag) {
    	      nextFiber = fiber.return;
    	      if (null === nextFiber) throw Error(formatProdErrorMessage(341));
    	      nextFiber.lanes |= renderLanes;
    	      list = nextFiber.alternate;
    	      null !== list && (list.lanes |= renderLanes);
    	      scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);
    	      nextFiber = null;
    	    } else nextFiber = fiber.child;
    	    if (null !== nextFiber) nextFiber.return = fiber;
    	    else
    	      for (nextFiber = fiber; null !== nextFiber; ) {
    	        if (nextFiber === workInProgress) {
    	          nextFiber = null;
    	          break;
    	        }
    	        fiber = nextFiber.sibling;
    	        if (null !== fiber) {
    	          fiber.return = nextFiber.return;
    	          nextFiber = fiber;
    	          break;
    	        }
    	        nextFiber = nextFiber.return;
    	      }
    	    fiber = nextFiber;
    	  }
    	}
    	function propagateParentContextChanges(
    	  current,
    	  workInProgress,
    	  renderLanes,
    	  forcePropagateEntireTree
    	) {
    	  current = null;
    	  for (
    	    var parent = workInProgress, isInsidePropagationBailout = false;
    	    null !== parent;

    	  ) {
    	    if (!isInsidePropagationBailout)
    	      if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = true;
    	      else if (0 !== (parent.flags & 262144)) break;
    	    if (10 === parent.tag) {
    	      var currentParent = parent.alternate;
    	      if (null === currentParent) throw Error(formatProdErrorMessage(387));
    	      currentParent = currentParent.memoizedProps;
    	      if (null !== currentParent) {
    	        var context = parent.type;
    	        objectIs(parent.pendingProps.value, currentParent.value) ||
    	          (null !== current ? current.push(context) : (current = [context]));
    	      }
    	    } else if (parent === hostTransitionProviderCursor.current) {
    	      currentParent = parent.alternate;
    	      if (null === currentParent) throw Error(formatProdErrorMessage(387));
    	      currentParent.memoizedState.memoizedState !==
    	        parent.memoizedState.memoizedState &&
    	        (null !== current
    	          ? current.push(HostTransitionContext)
    	          : (current = [HostTransitionContext]));
    	    }
    	    parent = parent.return;
    	  }
    	  null !== current &&
    	    propagateContextChanges(
    	      workInProgress,
    	      current,
    	      renderLanes,
    	      forcePropagateEntireTree
    	    );
    	  workInProgress.flags |= 262144;
    	}
    	function checkIfContextChanged(currentDependencies) {
    	  for (
    	    currentDependencies = currentDependencies.firstContext;
    	    null !== currentDependencies;

    	  ) {
    	    if (
    	      !objectIs(
    	        currentDependencies.context._currentValue,
    	        currentDependencies.memoizedValue
    	      )
    	    )
    	      return true;
    	    currentDependencies = currentDependencies.next;
    	  }
    	  return false;
    	}
    	function prepareToReadContext(workInProgress) {
    	  currentlyRenderingFiber$1 = workInProgress;
    	  lastContextDependency = null;
    	  workInProgress = workInProgress.dependencies;
    	  null !== workInProgress && (workInProgress.firstContext = null);
    	}
    	function readContext(context) {
    	  return readContextForConsumer(currentlyRenderingFiber$1, context);
    	}
    	function readContextDuringReconciliation(consumer, context) {
    	  null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);
    	  return readContextForConsumer(consumer, context);
    	}
    	function readContextForConsumer(consumer, context) {
    	  var value = context._currentValue;
    	  context = { context: context, memoizedValue: value, next: null };
    	  if (null === lastContextDependency) {
    	    if (null === consumer) throw Error(formatProdErrorMessage(308));
    	    lastContextDependency = context;
    	    consumer.dependencies = { lanes: 0, firstContext: context };
    	    consumer.flags |= 524288;
    	  } else lastContextDependency = lastContextDependency.next = context;
    	  return value;
    	}
    	var AbortControllerLocal =
    	    "undefined" !== typeof AbortController
    	      ? AbortController
    	      : function () {
    	          var listeners = [],
    	            signal = (this.signal = {
    	              aborted: false,
    	              addEventListener: function (type, listener) {
    	                listeners.push(listener);
    	              }
    	            });
    	          this.abort = function () {
    	            signal.aborted = true;
    	            listeners.forEach(function (listener) {
    	              return listener();
    	            });
    	          };
    	        },
    	  scheduleCallback$2 = Scheduler.unstable_scheduleCallback,
    	  NormalPriority = Scheduler.unstable_NormalPriority,
    	  CacheContext = {
    	    $$typeof: REACT_CONTEXT_TYPE,
    	    Consumer: null,
    	    Provider: null,
    	    _currentValue: null,
    	    _currentValue2: null,
    	    _threadCount: 0
    	  };
    	function createCache() {
    	  return {
    	    controller: new AbortControllerLocal(),
    	    data: new Map(),
    	    refCount: 0
    	  };
    	}
    	function releaseCache(cache) {
    	  cache.refCount--;
    	  0 === cache.refCount &&
    	    scheduleCallback$2(NormalPriority, function () {
    	      cache.controller.abort();
    	    });
    	}
    	var currentEntangledListeners = null,
    	  currentEntangledPendingCount = 0,
    	  currentEntangledLane = 0,
    	  currentEntangledActionThenable = null;
    	function entangleAsyncAction(transition, thenable) {
    	  if (null === currentEntangledListeners) {
    	    var entangledListeners = (currentEntangledListeners = []);
    	    currentEntangledPendingCount = 0;
    	    currentEntangledLane = requestTransitionLane();
    	    currentEntangledActionThenable = {
    	      status: "pending",
    	      value: void 0,
    	      then: function (resolve) {
    	        entangledListeners.push(resolve);
    	      }
    	    };
    	  }
    	  currentEntangledPendingCount++;
    	  thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);
    	  return thenable;
    	}
    	function pingEngtangledActionScope() {
    	  if (
    	    0 === --currentEntangledPendingCount &&
    	    null !== currentEntangledListeners
    	  ) {
    	    null !== currentEntangledActionThenable &&
    	      (currentEntangledActionThenable.status = "fulfilled");
    	    var listeners = currentEntangledListeners;
    	    currentEntangledListeners = null;
    	    currentEntangledLane = 0;
    	    currentEntangledActionThenable = null;
    	    for (var i = 0; i < listeners.length; i++) (0, listeners[i])();
    	  }
    	}
    	function chainThenableValue(thenable, result) {
    	  var listeners = [],
    	    thenableWithOverride = {
    	      status: "pending",
    	      value: null,
    	      reason: null,
    	      then: function (resolve) {
    	        listeners.push(resolve);
    	      }
    	    };
    	  thenable.then(
    	    function () {
    	      thenableWithOverride.status = "fulfilled";
    	      thenableWithOverride.value = result;
    	      for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);
    	    },
    	    function (error) {
    	      thenableWithOverride.status = "rejected";
    	      thenableWithOverride.reason = error;
    	      for (error = 0; error < listeners.length; error++)
    	        (0, listeners[error])(void 0);
    	    }
    	  );
    	  return thenableWithOverride;
    	}
    	var prevOnStartTransitionFinish = ReactSharedInternals.S;
    	ReactSharedInternals.S = function (transition, returnValue) {
    	  "object" === typeof returnValue &&
    	    null !== returnValue &&
    	    "function" === typeof returnValue.then &&
    	    entangleAsyncAction(transition, returnValue);
    	  null !== prevOnStartTransitionFinish &&
    	    prevOnStartTransitionFinish(transition, returnValue);
    	};
    	var resumedCache = createCursor(null);
    	function peekCacheFromPool() {
    	  var cacheResumedFromPreviousRender = resumedCache.current;
    	  return null !== cacheResumedFromPreviousRender
    	    ? cacheResumedFromPreviousRender
    	    : workInProgressRoot.pooledCache;
    	}
    	function pushTransition(offscreenWorkInProgress, prevCachePool) {
    	  null === prevCachePool
    	    ? push(resumedCache, resumedCache.current)
    	    : push(resumedCache, prevCachePool.pool);
    	}
    	function getSuspendedCache() {
    	  var cacheFromPool = peekCacheFromPool();
    	  return null === cacheFromPool
    	    ? null
    	    : { parent: CacheContext._currentValue, pool: cacheFromPool };
    	}
    	var SuspenseException = Error(formatProdErrorMessage(460)),
    	  SuspenseyCommitException = Error(formatProdErrorMessage(474)),
    	  SuspenseActionException = Error(formatProdErrorMessage(542)),
    	  noopSuspenseyCommitThenable = { then: function () {} };
    	function isThenableResolved(thenable) {
    	  thenable = thenable.status;
    	  return "fulfilled" === thenable || "rejected" === thenable;
    	}
    	function noop$3() {}
    	function trackUsedThenable(thenableState, thenable, index) {
    	  index = thenableState[index];
    	  void 0 === index
    	    ? thenableState.push(thenable)
    	    : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));
    	  switch (thenable.status) {
    	    case "fulfilled":
    	      return thenable.value;
    	    case "rejected":
    	      throw (
    	        ((thenableState = thenable.reason),
    	        checkIfUseWrappedInAsyncCatch(thenableState),
    	        thenableState)
    	      );
    	    default:
    	      if ("string" === typeof thenable.status) thenable.then(noop$3, noop$3);
    	      else {
    	        thenableState = workInProgressRoot;
    	        if (null !== thenableState && 100 < thenableState.shellSuspendCounter)
    	          throw Error(formatProdErrorMessage(482));
    	        thenableState = thenable;
    	        thenableState.status = "pending";
    	        thenableState.then(
    	          function (fulfilledValue) {
    	            if ("pending" === thenable.status) {
    	              var fulfilledThenable = thenable;
    	              fulfilledThenable.status = "fulfilled";
    	              fulfilledThenable.value = fulfilledValue;
    	            }
    	          },
    	          function (error) {
    	            if ("pending" === thenable.status) {
    	              var rejectedThenable = thenable;
    	              rejectedThenable.status = "rejected";
    	              rejectedThenable.reason = error;
    	            }
    	          }
    	        );
    	      }
    	      switch (thenable.status) {
    	        case "fulfilled":
    	          return thenable.value;
    	        case "rejected":
    	          throw (
    	            ((thenableState = thenable.reason),
    	            checkIfUseWrappedInAsyncCatch(thenableState),
    	            thenableState)
    	          );
    	      }
    	      suspendedThenable = thenable;
    	      throw SuspenseException;
    	  }
    	}
    	var suspendedThenable = null;
    	function getSuspendedThenable() {
    	  if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));
    	  var thenable = suspendedThenable;
    	  suspendedThenable = null;
    	  return thenable;
    	}
    	function checkIfUseWrappedInAsyncCatch(rejectedReason) {
    	  if (
    	    rejectedReason === SuspenseException ||
    	    rejectedReason === SuspenseActionException
    	  )
    	    throw Error(formatProdErrorMessage(483));
    	}
    	var hasForceUpdate = false;
    	function initializeUpdateQueue(fiber) {
    	  fiber.updateQueue = {
    	    baseState: fiber.memoizedState,
    	    firstBaseUpdate: null,
    	    lastBaseUpdate: null,
    	    shared: { pending: null, lanes: 0, hiddenCallbacks: null },
    	    callbacks: null
    	  };
    	}
    	function cloneUpdateQueue(current, workInProgress) {
    	  current = current.updateQueue;
    	  workInProgress.updateQueue === current &&
    	    (workInProgress.updateQueue = {
    	      baseState: current.baseState,
    	      firstBaseUpdate: current.firstBaseUpdate,
    	      lastBaseUpdate: current.lastBaseUpdate,
    	      shared: current.shared,
    	      callbacks: null
    	    });
    	}
    	function createUpdate(lane) {
    	  return { lane: lane, tag: 0, payload: null, callback: null, next: null };
    	}
    	function enqueueUpdate(fiber, update, lane) {
    	  var updateQueue = fiber.updateQueue;
    	  if (null === updateQueue) return null;
    	  updateQueue = updateQueue.shared;
    	  if (0 !== (executionContext & 2)) {
    	    var pending = updateQueue.pending;
    	    null === pending
    	      ? (update.next = update)
    	      : ((update.next = pending.next), (pending.next = update));
    	    updateQueue.pending = update;
    	    update = getRootForUpdatedFiber(fiber);
    	    markUpdateLaneFromFiberToRoot(fiber, null, lane);
    	    return update;
    	  }
    	  enqueueUpdate$1(fiber, updateQueue, update, lane);
    	  return getRootForUpdatedFiber(fiber);
    	}
    	function entangleTransitions(root, fiber, lane) {
    	  fiber = fiber.updateQueue;
    	  if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {
    	    var queueLanes = fiber.lanes;
    	    queueLanes &= root.pendingLanes;
    	    lane |= queueLanes;
    	    fiber.lanes = lane;
    	    markRootEntangled(root, lane);
    	  }
    	}
    	function enqueueCapturedUpdate(workInProgress, capturedUpdate) {
    	  var queue = workInProgress.updateQueue,
    	    current = workInProgress.alternate;
    	  if (
    	    null !== current &&
    	    ((current = current.updateQueue), queue === current)
    	  ) {
    	    var newFirst = null,
    	      newLast = null;
    	    queue = queue.firstBaseUpdate;
    	    if (null !== queue) {
    	      do {
    	        var clone = {
    	          lane: queue.lane,
    	          tag: queue.tag,
    	          payload: queue.payload,
    	          callback: null,
    	          next: null
    	        };
    	        null === newLast
    	          ? (newFirst = newLast = clone)
    	          : (newLast = newLast.next = clone);
    	        queue = queue.next;
    	      } while (null !== queue);
    	      null === newLast
    	        ? (newFirst = newLast = capturedUpdate)
    	        : (newLast = newLast.next = capturedUpdate);
    	    } else newFirst = newLast = capturedUpdate;
    	    queue = {
    	      baseState: current.baseState,
    	      firstBaseUpdate: newFirst,
    	      lastBaseUpdate: newLast,
    	      shared: current.shared,
    	      callbacks: current.callbacks
    	    };
    	    workInProgress.updateQueue = queue;
    	    return;
    	  }
    	  workInProgress = queue.lastBaseUpdate;
    	  null === workInProgress
    	    ? (queue.firstBaseUpdate = capturedUpdate)
    	    : (workInProgress.next = capturedUpdate);
    	  queue.lastBaseUpdate = capturedUpdate;
    	}
    	var didReadFromEntangledAsyncAction = false;
    	function suspendIfUpdateReadFromEntangledAsyncAction() {
    	  if (didReadFromEntangledAsyncAction) {
    	    var entangledActionThenable = currentEntangledActionThenable;
    	    if (null !== entangledActionThenable) throw entangledActionThenable;
    	  }
    	}
    	function processUpdateQueue(
    	  workInProgress$jscomp$0,
    	  props,
    	  instance$jscomp$0,
    	  renderLanes
    	) {
    	  didReadFromEntangledAsyncAction = false;
    	  var queue = workInProgress$jscomp$0.updateQueue;
    	  hasForceUpdate = false;
    	  var firstBaseUpdate = queue.firstBaseUpdate,
    	    lastBaseUpdate = queue.lastBaseUpdate,
    	    pendingQueue = queue.shared.pending;
    	  if (null !== pendingQueue) {
    	    queue.shared.pending = null;
    	    var lastPendingUpdate = pendingQueue,
    	      firstPendingUpdate = lastPendingUpdate.next;
    	    lastPendingUpdate.next = null;
    	    null === lastBaseUpdate
    	      ? (firstBaseUpdate = firstPendingUpdate)
    	      : (lastBaseUpdate.next = firstPendingUpdate);
    	    lastBaseUpdate = lastPendingUpdate;
    	    var current = workInProgress$jscomp$0.alternate;
    	    null !== current &&
    	      ((current = current.updateQueue),
    	      (pendingQueue = current.lastBaseUpdate),
    	      pendingQueue !== lastBaseUpdate &&
    	        (null === pendingQueue
    	          ? (current.firstBaseUpdate = firstPendingUpdate)
    	          : (pendingQueue.next = firstPendingUpdate),
    	        (current.lastBaseUpdate = lastPendingUpdate)));
    	  }
    	  if (null !== firstBaseUpdate) {
    	    var newState = queue.baseState;
    	    lastBaseUpdate = 0;
    	    current = firstPendingUpdate = lastPendingUpdate = null;
    	    pendingQueue = firstBaseUpdate;
    	    do {
    	      var updateLane = pendingQueue.lane & -536870913,
    	        isHiddenUpdate = updateLane !== pendingQueue.lane;
    	      if (
    	        isHiddenUpdate
    	          ? (workInProgressRootRenderLanes & updateLane) === updateLane
    	          : (renderLanes & updateLane) === updateLane
    	      ) {
    	        0 !== updateLane &&
    	          updateLane === currentEntangledLane &&
    	          (didReadFromEntangledAsyncAction = true);
    	        null !== current &&
    	          (current = current.next =
    	            {
    	              lane: 0,
    	              tag: pendingQueue.tag,
    	              payload: pendingQueue.payload,
    	              callback: null,
    	              next: null
    	            });
    	        a: {
    	          var workInProgress = workInProgress$jscomp$0,
    	            update = pendingQueue;
    	          updateLane = props;
    	          var instance = instance$jscomp$0;
    	          switch (update.tag) {
    	            case 1:
    	              workInProgress = update.payload;
    	              if ("function" === typeof workInProgress) {
    	                newState = workInProgress.call(instance, newState, updateLane);
    	                break a;
    	              }
    	              newState = workInProgress;
    	              break a;
    	            case 3:
    	              workInProgress.flags = (workInProgress.flags & -65537) | 128;
    	            case 0:
    	              workInProgress = update.payload;
    	              updateLane =
    	                "function" === typeof workInProgress
    	                  ? workInProgress.call(instance, newState, updateLane)
    	                  : workInProgress;
    	              if (null === updateLane || void 0 === updateLane) break a;
    	              newState = assign({}, newState, updateLane);
    	              break a;
    	            case 2:
    	              hasForceUpdate = true;
    	          }
    	        }
    	        updateLane = pendingQueue.callback;
    	        null !== updateLane &&
    	          ((workInProgress$jscomp$0.flags |= 64),
    	          isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),
    	          (isHiddenUpdate = queue.callbacks),
    	          null === isHiddenUpdate
    	            ? (queue.callbacks = [updateLane])
    	            : isHiddenUpdate.push(updateLane));
    	      } else
    	        (isHiddenUpdate = {
    	          lane: updateLane,
    	          tag: pendingQueue.tag,
    	          payload: pendingQueue.payload,
    	          callback: pendingQueue.callback,
    	          next: null
    	        }),
    	          null === current
    	            ? ((firstPendingUpdate = current = isHiddenUpdate),
    	              (lastPendingUpdate = newState))
    	            : (current = current.next = isHiddenUpdate),
    	          (lastBaseUpdate |= updateLane);
    	      pendingQueue = pendingQueue.next;
    	      if (null === pendingQueue)
    	        if (((pendingQueue = queue.shared.pending), null === pendingQueue))
    	          break;
    	        else
    	          (isHiddenUpdate = pendingQueue),
    	            (pendingQueue = isHiddenUpdate.next),
    	            (isHiddenUpdate.next = null),
    	            (queue.lastBaseUpdate = isHiddenUpdate),
    	            (queue.shared.pending = null);
    	    } while (1);
    	    null === current && (lastPendingUpdate = newState);
    	    queue.baseState = lastPendingUpdate;
    	    queue.firstBaseUpdate = firstPendingUpdate;
    	    queue.lastBaseUpdate = current;
    	    null === firstBaseUpdate && (queue.shared.lanes = 0);
    	    workInProgressRootSkippedLanes |= lastBaseUpdate;
    	    workInProgress$jscomp$0.lanes = lastBaseUpdate;
    	    workInProgress$jscomp$0.memoizedState = newState;
    	  }
    	}
    	function callCallback(callback, context) {
    	  if ("function" !== typeof callback)
    	    throw Error(formatProdErrorMessage(191, callback));
    	  callback.call(context);
    	}
    	function commitCallbacks(updateQueue, context) {
    	  var callbacks = updateQueue.callbacks;
    	  if (null !== callbacks)
    	    for (
    	      updateQueue.callbacks = null, updateQueue = 0;
    	      updateQueue < callbacks.length;
    	      updateQueue++
    	    )
    	      callCallback(callbacks[updateQueue], context);
    	}
    	var currentTreeHiddenStackCursor = createCursor(null),
    	  prevEntangledRenderLanesCursor = createCursor(0);
    	function pushHiddenContext(fiber, context) {
    	  fiber = entangledRenderLanes;
    	  push(prevEntangledRenderLanesCursor, fiber);
    	  push(currentTreeHiddenStackCursor, context);
    	  entangledRenderLanes = fiber | context.baseLanes;
    	}
    	function reuseHiddenContextOnStack() {
    	  push(prevEntangledRenderLanesCursor, entangledRenderLanes);
    	  push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);
    	}
    	function popHiddenContext() {
    	  entangledRenderLanes = prevEntangledRenderLanesCursor.current;
    	  pop(currentTreeHiddenStackCursor);
    	  pop(prevEntangledRenderLanesCursor);
    	}
    	var renderLanes = 0,
    	  currentlyRenderingFiber = null,
    	  currentHook = null,
    	  workInProgressHook = null,
    	  didScheduleRenderPhaseUpdate = false,
    	  didScheduleRenderPhaseUpdateDuringThisPass = false,
    	  shouldDoubleInvokeUserFnsInHooksDEV = false,
    	  localIdCounter = 0,
    	  thenableIndexCounter$1 = 0,
    	  thenableState$1 = null,
    	  globalClientIdCounter = 0;
    	function throwInvalidHookError() {
    	  throw Error(formatProdErrorMessage(321));
    	}
    	function areHookInputsEqual(nextDeps, prevDeps) {
    	  if (null === prevDeps) return false;
    	  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)
    	    if (!objectIs(nextDeps[i], prevDeps[i])) return false;
    	  return true;
    	}
    	function renderWithHooks(
    	  current,
    	  workInProgress,
    	  Component,
    	  props,
    	  secondArg,
    	  nextRenderLanes
    	) {
    	  renderLanes = nextRenderLanes;
    	  currentlyRenderingFiber = workInProgress;
    	  workInProgress.memoizedState = null;
    	  workInProgress.updateQueue = null;
    	  workInProgress.lanes = 0;
    	  ReactSharedInternals.H =
    	    null === current || null === current.memoizedState
    	      ? HooksDispatcherOnMount
    	      : HooksDispatcherOnUpdate;
    	  shouldDoubleInvokeUserFnsInHooksDEV = false;
    	  nextRenderLanes = Component(props, secondArg);
    	  shouldDoubleInvokeUserFnsInHooksDEV = false;
    	  didScheduleRenderPhaseUpdateDuringThisPass &&
    	    (nextRenderLanes = renderWithHooksAgain(
    	      workInProgress,
    	      Component,
    	      props,
    	      secondArg
    	    ));
    	  finishRenderingHooks(current);
    	  return nextRenderLanes;
    	}
    	function finishRenderingHooks(current) {
    	  ReactSharedInternals.H = ContextOnlyDispatcher;
    	  var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;
    	  renderLanes = 0;
    	  workInProgressHook = currentHook = currentlyRenderingFiber = null;
    	  didScheduleRenderPhaseUpdate = false;
    	  thenableIndexCounter$1 = 0;
    	  thenableState$1 = null;
    	  if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));
    	  null === current ||
    	    didReceiveUpdate ||
    	    ((current = current.dependencies),
    	    null !== current &&
    	      checkIfContextChanged(current) &&
    	      (didReceiveUpdate = true));
    	}
    	function renderWithHooksAgain(workInProgress, Component, props, secondArg) {
    	  currentlyRenderingFiber = workInProgress;
    	  var numberOfReRenders = 0;
    	  do {
    	    didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);
    	    thenableIndexCounter$1 = 0;
    	    didScheduleRenderPhaseUpdateDuringThisPass = false;
    	    if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));
    	    numberOfReRenders += 1;
    	    workInProgressHook = currentHook = null;
    	    if (null != workInProgress.updateQueue) {
    	      var children = workInProgress.updateQueue;
    	      children.lastEffect = null;
    	      children.events = null;
    	      children.stores = null;
    	      null != children.memoCache && (children.memoCache.index = 0);
    	    }
    	    ReactSharedInternals.H = HooksDispatcherOnRerender;
    	    children = Component(props, secondArg);
    	  } while (didScheduleRenderPhaseUpdateDuringThisPass);
    	  return children;
    	}
    	function TransitionAwareHostComponent() {
    	  var dispatcher = ReactSharedInternals.H,
    	    maybeThenable = dispatcher.useState()[0];
    	  maybeThenable =
    	    "function" === typeof maybeThenable.then
    	      ? useThenable(maybeThenable)
    	      : maybeThenable;
    	  dispatcher = dispatcher.useState()[0];
    	  (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&
    	    (currentlyRenderingFiber.flags |= 1024);
    	  return maybeThenable;
    	}
    	function checkDidRenderIdHook() {
    	  var didRenderIdHook = 0 !== localIdCounter;
    	  localIdCounter = 0;
    	  return didRenderIdHook;
    	}
    	function bailoutHooks(current, workInProgress, lanes) {
    	  workInProgress.updateQueue = current.updateQueue;
    	  workInProgress.flags &= -2053;
    	  current.lanes &= ~lanes;
    	}
    	function resetHooksOnUnwind(workInProgress) {
    	  if (didScheduleRenderPhaseUpdate) {
    	    for (
    	      workInProgress = workInProgress.memoizedState;
    	      null !== workInProgress;

    	    ) {
    	      var queue = workInProgress.queue;
    	      null !== queue && (queue.pending = null);
    	      workInProgress = workInProgress.next;
    	    }
    	    didScheduleRenderPhaseUpdate = false;
    	  }
    	  renderLanes = 0;
    	  workInProgressHook = currentHook = currentlyRenderingFiber = null;
    	  didScheduleRenderPhaseUpdateDuringThisPass = false;
    	  thenableIndexCounter$1 = localIdCounter = 0;
    	  thenableState$1 = null;
    	}
    	function mountWorkInProgressHook() {
    	  var hook = {
    	    memoizedState: null,
    	    baseState: null,
    	    baseQueue: null,
    	    queue: null,
    	    next: null
    	  };
    	  null === workInProgressHook
    	    ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)
    	    : (workInProgressHook = workInProgressHook.next = hook);
    	  return workInProgressHook;
    	}
    	function updateWorkInProgressHook() {
    	  if (null === currentHook) {
    	    var nextCurrentHook = currentlyRenderingFiber.alternate;
    	    nextCurrentHook =
    	      null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;
    	  } else nextCurrentHook = currentHook.next;
    	  var nextWorkInProgressHook =
    	    null === workInProgressHook
    	      ? currentlyRenderingFiber.memoizedState
    	      : workInProgressHook.next;
    	  if (null !== nextWorkInProgressHook)
    	    (workInProgressHook = nextWorkInProgressHook),
    	      (currentHook = nextCurrentHook);
    	  else {
    	    if (null === nextCurrentHook) {
    	      if (null === currentlyRenderingFiber.alternate)
    	        throw Error(formatProdErrorMessage(467));
    	      throw Error(formatProdErrorMessage(310));
    	    }
    	    currentHook = nextCurrentHook;
    	    nextCurrentHook = {
    	      memoizedState: currentHook.memoizedState,
    	      baseState: currentHook.baseState,
    	      baseQueue: currentHook.baseQueue,
    	      queue: currentHook.queue,
    	      next: null
    	    };
    	    null === workInProgressHook
    	      ? (currentlyRenderingFiber.memoizedState = workInProgressHook =
    	          nextCurrentHook)
    	      : (workInProgressHook = workInProgressHook.next = nextCurrentHook);
    	  }
    	  return workInProgressHook;
    	}
    	function createFunctionComponentUpdateQueue() {
    	  return { lastEffect: null, events: null, stores: null, memoCache: null };
    	}
    	function useThenable(thenable) {
    	  var index = thenableIndexCounter$1;
    	  thenableIndexCounter$1 += 1;
    	  null === thenableState$1 && (thenableState$1 = []);
    	  thenable = trackUsedThenable(thenableState$1, thenable, index);
    	  index = currentlyRenderingFiber;
    	  null ===
    	    (null === workInProgressHook
    	      ? index.memoizedState
    	      : workInProgressHook.next) &&
    	    ((index = index.alternate),
    	    (ReactSharedInternals.H =
    	      null === index || null === index.memoizedState
    	        ? HooksDispatcherOnMount
    	        : HooksDispatcherOnUpdate));
    	  return thenable;
    	}
    	function use(usable) {
    	  if (null !== usable && "object" === typeof usable) {
    	    if ("function" === typeof usable.then) return useThenable(usable);
    	    if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);
    	  }
    	  throw Error(formatProdErrorMessage(438, String(usable)));
    	}
    	function useMemoCache(size) {
    	  var memoCache = null,
    	    updateQueue = currentlyRenderingFiber.updateQueue;
    	  null !== updateQueue && (memoCache = updateQueue.memoCache);
    	  if (null == memoCache) {
    	    var current = currentlyRenderingFiber.alternate;
    	    null !== current &&
    	      ((current = current.updateQueue),
    	      null !== current &&
    	        ((current = current.memoCache),
    	        null != current &&
    	          (memoCache = {
    	            data: current.data.map(function (array) {
    	              return array.slice();
    	            }),
    	            index: 0
    	          })));
    	  }
    	  null == memoCache && (memoCache = { data: [], index: 0 });
    	  null === updateQueue &&
    	    ((updateQueue = createFunctionComponentUpdateQueue()),
    	    (currentlyRenderingFiber.updateQueue = updateQueue));
    	  updateQueue.memoCache = memoCache;
    	  updateQueue = memoCache.data[memoCache.index];
    	  if (void 0 === updateQueue)
    	    for (
    	      updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;
    	      current < size;
    	      current++
    	    )
    	      updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;
    	  memoCache.index++;
    	  return updateQueue;
    	}
    	function basicStateReducer(state, action) {
    	  return "function" === typeof action ? action(state) : action;
    	}
    	function updateReducer(reducer) {
    	  var hook = updateWorkInProgressHook();
    	  return updateReducerImpl(hook, currentHook, reducer);
    	}
    	function updateReducerImpl(hook, current, reducer) {
    	  var queue = hook.queue;
    	  if (null === queue) throw Error(formatProdErrorMessage(311));
    	  queue.lastRenderedReducer = reducer;
    	  var baseQueue = hook.baseQueue,
    	    pendingQueue = queue.pending;
    	  if (null !== pendingQueue) {
    	    if (null !== baseQueue) {
    	      var baseFirst = baseQueue.next;
    	      baseQueue.next = pendingQueue.next;
    	      pendingQueue.next = baseFirst;
    	    }
    	    current.baseQueue = baseQueue = pendingQueue;
    	    queue.pending = null;
    	  }
    	  pendingQueue = hook.baseState;
    	  if (null === baseQueue) hook.memoizedState = pendingQueue;
    	  else {
    	    current = baseQueue.next;
    	    var newBaseQueueFirst = (baseFirst = null),
    	      newBaseQueueLast = null,
    	      update = current,
    	      didReadFromEntangledAsyncAction$32 = false;
    	    do {
    	      var updateLane = update.lane & -536870913;
    	      if (
    	        updateLane !== update.lane
    	          ? (workInProgressRootRenderLanes & updateLane) === updateLane
    	          : (renderLanes & updateLane) === updateLane
    	      ) {
    	        var revertLane = update.revertLane;
    	        if (0 === revertLane)
    	          null !== newBaseQueueLast &&
    	            (newBaseQueueLast = newBaseQueueLast.next =
    	              {
    	                lane: 0,
    	                revertLane: 0,
    	                action: update.action,
    	                hasEagerState: update.hasEagerState,
    	                eagerState: update.eagerState,
    	                next: null
    	              }),
    	            updateLane === currentEntangledLane &&
    	              (didReadFromEntangledAsyncAction$32 = true);
    	        else if ((renderLanes & revertLane) === revertLane) {
    	          update = update.next;
    	          revertLane === currentEntangledLane &&
    	            (didReadFromEntangledAsyncAction$32 = true);
    	          continue;
    	        } else
    	          (updateLane = {
    	            lane: 0,
    	            revertLane: update.revertLane,
    	            action: update.action,
    	            hasEagerState: update.hasEagerState,
    	            eagerState: update.eagerState,
    	            next: null
    	          }),
    	            null === newBaseQueueLast
    	              ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),
    	                (baseFirst = pendingQueue))
    	              : (newBaseQueueLast = newBaseQueueLast.next = updateLane),
    	            (currentlyRenderingFiber.lanes |= revertLane),
    	            (workInProgressRootSkippedLanes |= revertLane);
    	        updateLane = update.action;
    	        shouldDoubleInvokeUserFnsInHooksDEV &&
    	          reducer(pendingQueue, updateLane);
    	        pendingQueue = update.hasEagerState
    	          ? update.eagerState
    	          : reducer(pendingQueue, updateLane);
    	      } else
    	        (revertLane = {
    	          lane: updateLane,
    	          revertLane: update.revertLane,
    	          action: update.action,
    	          hasEagerState: update.hasEagerState,
    	          eagerState: update.eagerState,
    	          next: null
    	        }),
    	          null === newBaseQueueLast
    	            ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),
    	              (baseFirst = pendingQueue))
    	            : (newBaseQueueLast = newBaseQueueLast.next = revertLane),
    	          (currentlyRenderingFiber.lanes |= updateLane),
    	          (workInProgressRootSkippedLanes |= updateLane);
    	      update = update.next;
    	    } while (null !== update && update !== current);
    	    null === newBaseQueueLast
    	      ? (baseFirst = pendingQueue)
    	      : (newBaseQueueLast.next = newBaseQueueFirst);
    	    if (
    	      !objectIs(pendingQueue, hook.memoizedState) &&
    	      ((didReceiveUpdate = true),
    	      didReadFromEntangledAsyncAction$32 &&
    	        ((reducer = currentEntangledActionThenable), null !== reducer))
    	    )
    	      throw reducer;
    	    hook.memoizedState = pendingQueue;
    	    hook.baseState = baseFirst;
    	    hook.baseQueue = newBaseQueueLast;
    	    queue.lastRenderedState = pendingQueue;
    	  }
    	  null === baseQueue && (queue.lanes = 0);
    	  return [hook.memoizedState, queue.dispatch];
    	}
    	function rerenderReducer(reducer) {
    	  var hook = updateWorkInProgressHook(),
    	    queue = hook.queue;
    	  if (null === queue) throw Error(formatProdErrorMessage(311));
    	  queue.lastRenderedReducer = reducer;
    	  var dispatch = queue.dispatch,
    	    lastRenderPhaseUpdate = queue.pending,
    	    newState = hook.memoizedState;
    	  if (null !== lastRenderPhaseUpdate) {
    	    queue.pending = null;
    	    var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);
    	    do (newState = reducer(newState, update.action)), (update = update.next);
    	    while (update !== lastRenderPhaseUpdate);
    	    objectIs(newState, hook.memoizedState) || (didReceiveUpdate = true);
    	    hook.memoizedState = newState;
    	    null === hook.baseQueue && (hook.baseState = newState);
    	    queue.lastRenderedState = newState;
    	  }
    	  return [newState, dispatch];
    	}
    	function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {
    	  var fiber = currentlyRenderingFiber,
    	    hook = updateWorkInProgressHook(),
    	    isHydrating$jscomp$0 = isHydrating;
    	  if (isHydrating$jscomp$0) {
    	    if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));
    	    getServerSnapshot = getServerSnapshot();
    	  } else getServerSnapshot = getSnapshot();
    	  var snapshotChanged = !objectIs(
    	    (currentHook || hook).memoizedState,
    	    getServerSnapshot
    	  );
    	  snapshotChanged &&
    	    ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = true));
    	  hook = hook.queue;
    	  var create = subscribeToStore.bind(null, fiber, hook, subscribe);
    	  updateEffectImpl(2048, 8, create, [subscribe]);
    	  if (
    	    hook.getSnapshot !== getSnapshot ||
    	    snapshotChanged ||
    	    (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)
    	  ) {
    	    fiber.flags |= 2048;
    	    pushSimpleEffect(
    	      9,
    	      createEffectInstance(),
    	      updateStoreInstance.bind(
    	        null,
    	        fiber,
    	        hook,
    	        getServerSnapshot,
    	        getSnapshot
    	      ),
    	      null
    	    );
    	    if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));
    	    isHydrating$jscomp$0 ||
    	      0 !== (renderLanes & 124) ||
    	      pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);
    	  }
    	  return getServerSnapshot;
    	}
    	function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {
    	  fiber.flags |= 16384;
    	  fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };
    	  getSnapshot = currentlyRenderingFiber.updateQueue;
    	  null === getSnapshot
    	    ? ((getSnapshot = createFunctionComponentUpdateQueue()),
    	      (currentlyRenderingFiber.updateQueue = getSnapshot),
    	      (getSnapshot.stores = [fiber]))
    	    : ((renderedSnapshot = getSnapshot.stores),
    	      null === renderedSnapshot
    	        ? (getSnapshot.stores = [fiber])
    	        : renderedSnapshot.push(fiber));
    	}
    	function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {
    	  inst.value = nextSnapshot;
    	  inst.getSnapshot = getSnapshot;
    	  checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);
    	}
    	function subscribeToStore(fiber, inst, subscribe) {
    	  return subscribe(function () {
    	    checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);
    	  });
    	}
    	function checkIfSnapshotChanged(inst) {
    	  var latestGetSnapshot = inst.getSnapshot;
    	  inst = inst.value;
    	  try {
    	    var nextValue = latestGetSnapshot();
    	    return !objectIs(inst, nextValue);
    	  } catch (error) {
    	    return true;
    	  }
    	}
    	function forceStoreRerender(fiber) {
    	  var root = enqueueConcurrentRenderForLane(fiber, 2);
    	  null !== root && scheduleUpdateOnFiber(root, fiber, 2);
    	}
    	function mountStateImpl(initialState) {
    	  var hook = mountWorkInProgressHook();
    	  if ("function" === typeof initialState) {
    	    var initialStateInitializer = initialState;
    	    initialState = initialStateInitializer();
    	    if (shouldDoubleInvokeUserFnsInHooksDEV) {
    	      setIsStrictModeForDevtools(true);
    	      try {
    	        initialStateInitializer();
    	      } finally {
    	        setIsStrictModeForDevtools(false);
    	      }
    	    }
    	  }
    	  hook.memoizedState = hook.baseState = initialState;
    	  hook.queue = {
    	    pending: null,
    	    lanes: 0,
    	    dispatch: null,
    	    lastRenderedReducer: basicStateReducer,
    	    lastRenderedState: initialState
    	  };
    	  return hook;
    	}
    	function updateOptimisticImpl(hook, current, passthrough, reducer) {
    	  hook.baseState = passthrough;
    	  return updateReducerImpl(
    	    hook,
    	    currentHook,
    	    "function" === typeof reducer ? reducer : basicStateReducer
    	  );
    	}
    	function dispatchActionState(
    	  fiber,
    	  actionQueue,
    	  setPendingState,
    	  setState,
    	  payload
    	) {
    	  if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));
    	  fiber = actionQueue.action;
    	  if (null !== fiber) {
    	    var actionNode = {
    	      payload: payload,
    	      action: fiber,
    	      next: null,
    	      isTransition: true,
    	      status: "pending",
    	      value: null,
    	      reason: null,
    	      listeners: [],
    	      then: function (listener) {
    	        actionNode.listeners.push(listener);
    	      }
    	    };
    	    null !== ReactSharedInternals.T
    	      ? setPendingState(true)
    	      : (actionNode.isTransition = false);
    	    setState(actionNode);
    	    setPendingState = actionQueue.pending;
    	    null === setPendingState
    	      ? ((actionNode.next = actionQueue.pending = actionNode),
    	        runActionStateAction(actionQueue, actionNode))
    	      : ((actionNode.next = setPendingState.next),
    	        (actionQueue.pending = setPendingState.next = actionNode));
    	  }
    	}
    	function runActionStateAction(actionQueue, node) {
    	  var action = node.action,
    	    payload = node.payload,
    	    prevState = actionQueue.state;
    	  if (node.isTransition) {
    	    var prevTransition = ReactSharedInternals.T,
    	      currentTransition = {};
    	    ReactSharedInternals.T = currentTransition;
    	    try {
    	      var returnValue = action(prevState, payload),
    	        onStartTransitionFinish = ReactSharedInternals.S;
    	      null !== onStartTransitionFinish &&
    	        onStartTransitionFinish(currentTransition, returnValue);
    	      handleActionReturnValue(actionQueue, node, returnValue);
    	    } catch (error) {
    	      onActionError(actionQueue, node, error);
    	    } finally {
    	      ReactSharedInternals.T = prevTransition;
    	    }
    	  } else
    	    try {
    	      (prevTransition = action(prevState, payload)),
    	        handleActionReturnValue(actionQueue, node, prevTransition);
    	    } catch (error$38) {
    	      onActionError(actionQueue, node, error$38);
    	    }
    	}
    	function handleActionReturnValue(actionQueue, node, returnValue) {
    	  null !== returnValue &&
    	  "object" === typeof returnValue &&
    	  "function" === typeof returnValue.then
    	    ? returnValue.then(
    	        function (nextState) {
    	          onActionSuccess(actionQueue, node, nextState);
    	        },
    	        function (error) {
    	          return onActionError(actionQueue, node, error);
    	        }
    	      )
    	    : onActionSuccess(actionQueue, node, returnValue);
    	}
    	function onActionSuccess(actionQueue, actionNode, nextState) {
    	  actionNode.status = "fulfilled";
    	  actionNode.value = nextState;
    	  notifyActionListeners(actionNode);
    	  actionQueue.state = nextState;
    	  actionNode = actionQueue.pending;
    	  null !== actionNode &&
    	    ((nextState = actionNode.next),
    	    nextState === actionNode
    	      ? (actionQueue.pending = null)
    	      : ((nextState = nextState.next),
    	        (actionNode.next = nextState),
    	        runActionStateAction(actionQueue, nextState)));
    	}
    	function onActionError(actionQueue, actionNode, error) {
    	  var last = actionQueue.pending;
    	  actionQueue.pending = null;
    	  if (null !== last) {
    	    last = last.next;
    	    do
    	      (actionNode.status = "rejected"),
    	        (actionNode.reason = error),
    	        notifyActionListeners(actionNode),
    	        (actionNode = actionNode.next);
    	    while (actionNode !== last);
    	  }
    	  actionQueue.action = null;
    	}
    	function notifyActionListeners(actionNode) {
    	  actionNode = actionNode.listeners;
    	  for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();
    	}
    	function actionStateReducer(oldState, newState) {
    	  return newState;
    	}
    	function mountActionState(action, initialStateProp) {
    	  if (isHydrating) {
    	    var ssrFormState = workInProgressRoot.formState;
    	    if (null !== ssrFormState) {
    	      a: {
    	        var JSCompiler_inline_result = currentlyRenderingFiber;
    	        if (isHydrating) {
    	          if (nextHydratableInstance) {
    	            b: {
    	              var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;
    	              for (
    	                var inRootOrSingleton = rootOrSingletonContext;
    	                8 !== JSCompiler_inline_result$jscomp$0.nodeType;

    	              ) {
    	                if (!inRootOrSingleton) {
    	                  JSCompiler_inline_result$jscomp$0 = null;
    	                  break b;
    	                }
    	                JSCompiler_inline_result$jscomp$0 = getNextHydratable(
    	                  JSCompiler_inline_result$jscomp$0.nextSibling
    	                );
    	                if (null === JSCompiler_inline_result$jscomp$0) {
    	                  JSCompiler_inline_result$jscomp$0 = null;
    	                  break b;
    	                }
    	              }
    	              inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;
    	              JSCompiler_inline_result$jscomp$0 =
    	                "F!" === inRootOrSingleton || "F" === inRootOrSingleton
    	                  ? JSCompiler_inline_result$jscomp$0
    	                  : null;
    	            }
    	            if (JSCompiler_inline_result$jscomp$0) {
    	              nextHydratableInstance = getNextHydratable(
    	                JSCompiler_inline_result$jscomp$0.nextSibling
    	              );
    	              JSCompiler_inline_result =
    	                "F!" === JSCompiler_inline_result$jscomp$0.data;
    	              break a;
    	            }
    	          }
    	          throwOnHydrationMismatch(JSCompiler_inline_result);
    	        }
    	        JSCompiler_inline_result = false;
    	      }
    	      JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);
    	    }
    	  }
    	  ssrFormState = mountWorkInProgressHook();
    	  ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;
    	  JSCompiler_inline_result = {
    	    pending: null,
    	    lanes: 0,
    	    dispatch: null,
    	    lastRenderedReducer: actionStateReducer,
    	    lastRenderedState: initialStateProp
    	  };
    	  ssrFormState.queue = JSCompiler_inline_result;
    	  ssrFormState = dispatchSetState.bind(
    	    null,
    	    currentlyRenderingFiber,
    	    JSCompiler_inline_result
    	  );
    	  JSCompiler_inline_result.dispatch = ssrFormState;
    	  JSCompiler_inline_result = mountStateImpl(false);
    	  inRootOrSingleton = dispatchOptimisticSetState.bind(
    	    null,
    	    currentlyRenderingFiber,
    	    false,
    	    JSCompiler_inline_result.queue
    	  );
    	  JSCompiler_inline_result = mountWorkInProgressHook();
    	  JSCompiler_inline_result$jscomp$0 = {
    	    state: initialStateProp,
    	    dispatch: null,
    	    action: action,
    	    pending: null
    	  };
    	  JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;
    	  ssrFormState = dispatchActionState.bind(
    	    null,
    	    currentlyRenderingFiber,
    	    JSCompiler_inline_result$jscomp$0,
    	    inRootOrSingleton,
    	    ssrFormState
    	  );
    	  JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;
    	  JSCompiler_inline_result.memoizedState = action;
    	  return [initialStateProp, ssrFormState, false];
    	}
    	function updateActionState(action) {
    	  var stateHook = updateWorkInProgressHook();
    	  return updateActionStateImpl(stateHook, currentHook, action);
    	}
    	function updateActionStateImpl(stateHook, currentStateHook, action) {
    	  currentStateHook = updateReducerImpl(
    	    stateHook,
    	    currentStateHook,
    	    actionStateReducer
    	  )[0];
    	  stateHook = updateReducer(basicStateReducer)[0];
    	  if (
    	    "object" === typeof currentStateHook &&
    	    null !== currentStateHook &&
    	    "function" === typeof currentStateHook.then
    	  )
    	    try {
    	      var state = useThenable(currentStateHook);
    	    } catch (x) {
    	      if (x === SuspenseException) throw SuspenseActionException;
    	      throw x;
    	    }
    	  else state = currentStateHook;
    	  currentStateHook = updateWorkInProgressHook();
    	  var actionQueue = currentStateHook.queue,
    	    dispatch = actionQueue.dispatch;
    	  action !== currentStateHook.memoizedState &&
    	    ((currentlyRenderingFiber.flags |= 2048),
    	    pushSimpleEffect(
    	      9,
    	      createEffectInstance(),
    	      actionStateActionEffect.bind(null, actionQueue, action),
    	      null
    	    ));
    	  return [state, dispatch, stateHook];
    	}
    	function actionStateActionEffect(actionQueue, action) {
    	  actionQueue.action = action;
    	}
    	function rerenderActionState(action) {
    	  var stateHook = updateWorkInProgressHook(),
    	    currentStateHook = currentHook;
    	  if (null !== currentStateHook)
    	    return updateActionStateImpl(stateHook, currentStateHook, action);
    	  updateWorkInProgressHook();
    	  stateHook = stateHook.memoizedState;
    	  currentStateHook = updateWorkInProgressHook();
    	  var dispatch = currentStateHook.queue.dispatch;
    	  currentStateHook.memoizedState = action;
    	  return [stateHook, dispatch, false];
    	}
    	function pushSimpleEffect(tag, inst, create, createDeps) {
    	  tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };
    	  inst = currentlyRenderingFiber.updateQueue;
    	  null === inst &&
    	    ((inst = createFunctionComponentUpdateQueue()),
    	    (currentlyRenderingFiber.updateQueue = inst));
    	  create = inst.lastEffect;
    	  null === create
    	    ? (inst.lastEffect = tag.next = tag)
    	    : ((createDeps = create.next),
    	      (create.next = tag),
    	      (tag.next = createDeps),
    	      (inst.lastEffect = tag));
    	  return tag;
    	}
    	function createEffectInstance() {
    	  return { destroy: void 0, resource: void 0 };
    	}
    	function updateRef() {
    	  return updateWorkInProgressHook().memoizedState;
    	}
    	function mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {
    	  var hook = mountWorkInProgressHook();
    	  createDeps = void 0 === createDeps ? null : createDeps;
    	  currentlyRenderingFiber.flags |= fiberFlags;
    	  hook.memoizedState = pushSimpleEffect(
    	    1 | hookFlags,
    	    createEffectInstance(),
    	    create,
    	    createDeps
    	  );
    	}
    	function updateEffectImpl(fiberFlags, hookFlags, create, deps) {
    	  var hook = updateWorkInProgressHook();
    	  deps = void 0 === deps ? null : deps;
    	  var inst = hook.memoizedState.inst;
    	  null !== currentHook &&
    	  null !== deps &&
    	  areHookInputsEqual(deps, currentHook.memoizedState.deps)
    	    ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))
    	    : ((currentlyRenderingFiber.flags |= fiberFlags),
    	      (hook.memoizedState = pushSimpleEffect(
    	        1 | hookFlags,
    	        inst,
    	        create,
    	        deps
    	      )));
    	}
    	function mountEffect(create, createDeps) {
    	  mountEffectImpl(8390656, 8, create, createDeps);
    	}
    	function updateEffect(create, createDeps) {
    	  updateEffectImpl(2048, 8, create, createDeps);
    	}
    	function updateInsertionEffect(create, deps) {
    	  return updateEffectImpl(4, 2, create, deps);
    	}
    	function updateLayoutEffect(create, deps) {
    	  return updateEffectImpl(4, 4, create, deps);
    	}
    	function imperativeHandleEffect(create, ref) {
    	  if ("function" === typeof ref) {
    	    create = create();
    	    var refCleanup = ref(create);
    	    return function () {
    	      "function" === typeof refCleanup ? refCleanup() : ref(null);
    	    };
    	  }
    	  if (null !== ref && void 0 !== ref)
    	    return (
    	      (create = create()),
    	      (ref.current = create),
    	      function () {
    	        ref.current = null;
    	      }
    	    );
    	}
    	function updateImperativeHandle(ref, create, deps) {
    	  deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
    	  updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);
    	}
    	function mountDebugValue() {}
    	function updateCallback(callback, deps) {
    	  var hook = updateWorkInProgressHook();
    	  deps = void 0 === deps ? null : deps;
    	  var prevState = hook.memoizedState;
    	  if (null !== deps && areHookInputsEqual(deps, prevState[1]))
    	    return prevState[0];
    	  hook.memoizedState = [callback, deps];
    	  return callback;
    	}
    	function updateMemo(nextCreate, deps) {
    	  var hook = updateWorkInProgressHook();
    	  deps = void 0 === deps ? null : deps;
    	  var prevState = hook.memoizedState;
    	  if (null !== deps && areHookInputsEqual(deps, prevState[1]))
    	    return prevState[0];
    	  prevState = nextCreate();
    	  if (shouldDoubleInvokeUserFnsInHooksDEV) {
    	    setIsStrictModeForDevtools(true);
    	    try {
    	      nextCreate();
    	    } finally {
    	      setIsStrictModeForDevtools(false);
    	    }
    	  }
    	  hook.memoizedState = [prevState, deps];
    	  return prevState;
    	}
    	function mountDeferredValueImpl(hook, value, initialValue) {
    	  if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))
    	    return (hook.memoizedState = value);
    	  hook.memoizedState = initialValue;
    	  hook = requestDeferredLane();
    	  currentlyRenderingFiber.lanes |= hook;
    	  workInProgressRootSkippedLanes |= hook;
    	  return initialValue;
    	}
    	function updateDeferredValueImpl(hook, prevValue, value, initialValue) {
    	  if (objectIs(value, prevValue)) return value;
    	  if (null !== currentTreeHiddenStackCursor.current)
    	    return (
    	      (hook = mountDeferredValueImpl(hook, value, initialValue)),
    	      objectIs(hook, prevValue) || (didReceiveUpdate = true),
    	      hook
    	    );
    	  if (0 === (renderLanes & 42))
    	    return (didReceiveUpdate = true), (hook.memoizedState = value);
    	  hook = requestDeferredLane();
    	  currentlyRenderingFiber.lanes |= hook;
    	  workInProgressRootSkippedLanes |= hook;
    	  return prevValue;
    	}
    	function startTransition(fiber, queue, pendingState, finishedState, callback) {
    	  var previousPriority = ReactDOMSharedInternals.p;
    	  ReactDOMSharedInternals.p =
    	    0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;
    	  var prevTransition = ReactSharedInternals.T,
    	    currentTransition = {};
    	  ReactSharedInternals.T = currentTransition;
    	  dispatchOptimisticSetState(fiber, false, queue, pendingState);
    	  try {
    	    var returnValue = callback(),
    	      onStartTransitionFinish = ReactSharedInternals.S;
    	    null !== onStartTransitionFinish &&
    	      onStartTransitionFinish(currentTransition, returnValue);
    	    if (
    	      null !== returnValue &&
    	      "object" === typeof returnValue &&
    	      "function" === typeof returnValue.then
    	    ) {
    	      var thenableForFinishedState = chainThenableValue(
    	        returnValue,
    	        finishedState
    	      );
    	      dispatchSetStateInternal(
    	        fiber,
    	        queue,
    	        thenableForFinishedState,
    	        requestUpdateLane(fiber)
    	      );
    	    } else
    	      dispatchSetStateInternal(
    	        fiber,
    	        queue,
    	        finishedState,
    	        requestUpdateLane(fiber)
    	      );
    	  } catch (error) {
    	    dispatchSetStateInternal(
    	      fiber,
    	      queue,
    	      { then: function () {}, status: "rejected", reason: error },
    	      requestUpdateLane()
    	    );
    	  } finally {
    	    (ReactDOMSharedInternals.p = previousPriority),
    	      (ReactSharedInternals.T = prevTransition);
    	  }
    	}
    	function noop$2() {}
    	function startHostTransition(formFiber, pendingState, action, formData) {
    	  if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));
    	  var queue = ensureFormComponentIsStateful(formFiber).queue;
    	  startTransition(
    	    formFiber,
    	    queue,
    	    pendingState,
    	    sharedNotPendingObject,
    	    null === action
    	      ? noop$2
    	      : function () {
    	          requestFormReset$1(formFiber);
    	          return action(formData);
    	        }
    	  );
    	}
    	function ensureFormComponentIsStateful(formFiber) {
    	  var existingStateHook = formFiber.memoizedState;
    	  if (null !== existingStateHook) return existingStateHook;
    	  existingStateHook = {
    	    memoizedState: sharedNotPendingObject,
    	    baseState: sharedNotPendingObject,
    	    baseQueue: null,
    	    queue: {
    	      pending: null,
    	      lanes: 0,
    	      dispatch: null,
    	      lastRenderedReducer: basicStateReducer,
    	      lastRenderedState: sharedNotPendingObject
    	    },
    	    next: null
    	  };
    	  var initialResetState = {};
    	  existingStateHook.next = {
    	    memoizedState: initialResetState,
    	    baseState: initialResetState,
    	    baseQueue: null,
    	    queue: {
    	      pending: null,
    	      lanes: 0,
    	      dispatch: null,
    	      lastRenderedReducer: basicStateReducer,
    	      lastRenderedState: initialResetState
    	    },
    	    next: null
    	  };
    	  formFiber.memoizedState = existingStateHook;
    	  formFiber = formFiber.alternate;
    	  null !== formFiber && (formFiber.memoizedState = existingStateHook);
    	  return existingStateHook;
    	}
    	function requestFormReset$1(formFiber) {
    	  var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;
    	  dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());
    	}
    	function useHostTransitionStatus() {
    	  return readContext(HostTransitionContext);
    	}
    	function updateId() {
    	  return updateWorkInProgressHook().memoizedState;
    	}
    	function updateRefresh() {
    	  return updateWorkInProgressHook().memoizedState;
    	}
    	function refreshCache(fiber) {
    	  for (var provider = fiber.return; null !== provider; ) {
    	    switch (provider.tag) {
    	      case 24:
    	      case 3:
    	        var lane = requestUpdateLane();
    	        fiber = createUpdate(lane);
    	        var root$41 = enqueueUpdate(provider, fiber, lane);
    	        null !== root$41 &&
    	          (scheduleUpdateOnFiber(root$41, provider, lane),
    	          entangleTransitions(root$41, provider, lane));
    	        provider = { cache: createCache() };
    	        fiber.payload = provider;
    	        return;
    	    }
    	    provider = provider.return;
    	  }
    	}
    	function dispatchReducerAction(fiber, queue, action) {
    	  var lane = requestUpdateLane();
    	  action = {
    	    lane: lane,
    	    revertLane: 0,
    	    action: action,
    	    hasEagerState: false,
    	    eagerState: null,
    	    next: null
    	  };
    	  isRenderPhaseUpdate(fiber)
    	    ? enqueueRenderPhaseUpdate(queue, action)
    	    : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),
    	      null !== action &&
    	        (scheduleUpdateOnFiber(action, fiber, lane),
    	        entangleTransitionUpdate(action, queue, lane)));
    	}
    	function dispatchSetState(fiber, queue, action) {
    	  var lane = requestUpdateLane();
    	  dispatchSetStateInternal(fiber, queue, action, lane);
    	}
    	function dispatchSetStateInternal(fiber, queue, action, lane) {
    	  var update = {
    	    lane: lane,
    	    revertLane: 0,
    	    action: action,
    	    hasEagerState: false,
    	    eagerState: null,
    	    next: null
    	  };
    	  if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);
    	  else {
    	    var alternate = fiber.alternate;
    	    if (
    	      0 === fiber.lanes &&
    	      (null === alternate || 0 === alternate.lanes) &&
    	      ((alternate = queue.lastRenderedReducer), null !== alternate)
    	    )
    	      try {
    	        var currentState = queue.lastRenderedState,
    	          eagerState = alternate(currentState, action);
    	        update.hasEagerState = !0;
    	        update.eagerState = eagerState;
    	        if (objectIs(eagerState, currentState))
    	          return (
    	            enqueueUpdate$1(fiber, queue, update, 0),
    	            null === workInProgressRoot && finishQueueingConcurrentUpdates(),
    	            !1
    	          );
    	      } catch (error) {
    	      } finally {
    	      }
    	    action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);
    	    if (null !== action)
    	      return (
    	        scheduleUpdateOnFiber(action, fiber, lane),
    	        entangleTransitionUpdate(action, queue, lane),
    	        true
    	      );
    	  }
    	  return false;
    	}
    	function dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {
    	  action = {
    	    lane: 2,
    	    revertLane: requestTransitionLane(),
    	    action: action,
    	    hasEagerState: false,
    	    eagerState: null,
    	    next: null
    	  };
    	  if (isRenderPhaseUpdate(fiber)) {
    	    if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));
    	  } else
    	    (throwIfDuringRender = enqueueConcurrentHookUpdate(
    	      fiber,
    	      queue,
    	      action,
    	      2
    	    )),
    	      null !== throwIfDuringRender &&
    	        scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);
    	}
    	function isRenderPhaseUpdate(fiber) {
    	  var alternate = fiber.alternate;
    	  return (
    	    fiber === currentlyRenderingFiber ||
    	    (null !== alternate && alternate === currentlyRenderingFiber)
    	  );
    	}
    	function enqueueRenderPhaseUpdate(queue, update) {
    	  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =
    	    true;
    	  var pending = queue.pending;
    	  null === pending
    	    ? (update.next = update)
    	    : ((update.next = pending.next), (pending.next = update));
    	  queue.pending = update;
    	}
    	function entangleTransitionUpdate(root, queue, lane) {
    	  if (0 !== (lane & 4194048)) {
    	    var queueLanes = queue.lanes;
    	    queueLanes &= root.pendingLanes;
    	    lane |= queueLanes;
    	    queue.lanes = lane;
    	    markRootEntangled(root, lane);
    	  }
    	}
    	var ContextOnlyDispatcher = {
    	    readContext: readContext,
    	    use: use,
    	    useCallback: throwInvalidHookError,
    	    useContext: throwInvalidHookError,
    	    useEffect: throwInvalidHookError,
    	    useImperativeHandle: throwInvalidHookError,
    	    useLayoutEffect: throwInvalidHookError,
    	    useInsertionEffect: throwInvalidHookError,
    	    useMemo: throwInvalidHookError,
    	    useReducer: throwInvalidHookError,
    	    useRef: throwInvalidHookError,
    	    useState: throwInvalidHookError,
    	    useDebugValue: throwInvalidHookError,
    	    useDeferredValue: throwInvalidHookError,
    	    useTransition: throwInvalidHookError,
    	    useSyncExternalStore: throwInvalidHookError,
    	    useId: throwInvalidHookError,
    	    useHostTransitionStatus: throwInvalidHookError,
    	    useFormState: throwInvalidHookError,
    	    useActionState: throwInvalidHookError,
    	    useOptimistic: throwInvalidHookError,
    	    useMemoCache: throwInvalidHookError,
    	    useCacheRefresh: throwInvalidHookError
    	  },
    	  HooksDispatcherOnMount = {
    	    readContext: readContext,
    	    use: use,
    	    useCallback: function (callback, deps) {
    	      mountWorkInProgressHook().memoizedState = [
    	        callback,
    	        void 0 === deps ? null : deps
    	      ];
    	      return callback;
    	    },
    	    useContext: readContext,
    	    useEffect: mountEffect,
    	    useImperativeHandle: function (ref, create, deps) {
    	      deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;
    	      mountEffectImpl(
    	        4194308,
    	        4,
    	        imperativeHandleEffect.bind(null, create, ref),
    	        deps
    	      );
    	    },
    	    useLayoutEffect: function (create, deps) {
    	      return mountEffectImpl(4194308, 4, create, deps);
    	    },
    	    useInsertionEffect: function (create, deps) {
    	      mountEffectImpl(4, 2, create, deps);
    	    },
    	    useMemo: function (nextCreate, deps) {
    	      var hook = mountWorkInProgressHook();
    	      deps = void 0 === deps ? null : deps;
    	      var nextValue = nextCreate();
    	      if (shouldDoubleInvokeUserFnsInHooksDEV) {
    	        setIsStrictModeForDevtools(true);
    	        try {
    	          nextCreate();
    	        } finally {
    	          setIsStrictModeForDevtools(false);
    	        }
    	      }
    	      hook.memoizedState = [nextValue, deps];
    	      return nextValue;
    	    },
    	    useReducer: function (reducer, initialArg, init) {
    	      var hook = mountWorkInProgressHook();
    	      if (void 0 !== init) {
    	        var initialState = init(initialArg);
    	        if (shouldDoubleInvokeUserFnsInHooksDEV) {
    	          setIsStrictModeForDevtools(true);
    	          try {
    	            init(initialArg);
    	          } finally {
    	            setIsStrictModeForDevtools(false);
    	          }
    	        }
    	      } else initialState = initialArg;
    	      hook.memoizedState = hook.baseState = initialState;
    	      reducer = {
    	        pending: null,
    	        lanes: 0,
    	        dispatch: null,
    	        lastRenderedReducer: reducer,
    	        lastRenderedState: initialState
    	      };
    	      hook.queue = reducer;
    	      reducer = reducer.dispatch = dispatchReducerAction.bind(
    	        null,
    	        currentlyRenderingFiber,
    	        reducer
    	      );
    	      return [hook.memoizedState, reducer];
    	    },
    	    useRef: function (initialValue) {
    	      var hook = mountWorkInProgressHook();
    	      initialValue = { current: initialValue };
    	      return (hook.memoizedState = initialValue);
    	    },
    	    useState: function (initialState) {
    	      initialState = mountStateImpl(initialState);
    	      var queue = initialState.queue,
    	        dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);
    	      queue.dispatch = dispatch;
    	      return [initialState.memoizedState, dispatch];
    	    },
    	    useDebugValue: mountDebugValue,
    	    useDeferredValue: function (value, initialValue) {
    	      var hook = mountWorkInProgressHook();
    	      return mountDeferredValueImpl(hook, value, initialValue);
    	    },
    	    useTransition: function () {
    	      var stateHook = mountStateImpl(false);
    	      stateHook = startTransition.bind(
    	        null,
    	        currentlyRenderingFiber,
    	        stateHook.queue,
    	        true,
    	        false
    	      );
    	      mountWorkInProgressHook().memoizedState = stateHook;
    	      return [false, stateHook];
    	    },
    	    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {
    	      var fiber = currentlyRenderingFiber,
    	        hook = mountWorkInProgressHook();
    	      if (isHydrating) {
    	        if (void 0 === getServerSnapshot)
    	          throw Error(formatProdErrorMessage(407));
    	        getServerSnapshot = getServerSnapshot();
    	      } else {
    	        getServerSnapshot = getSnapshot();
    	        if (null === workInProgressRoot)
    	          throw Error(formatProdErrorMessage(349));
    	        0 !== (workInProgressRootRenderLanes & 124) ||
    	          pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);
    	      }
    	      hook.memoizedState = getServerSnapshot;
    	      var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };
    	      hook.queue = inst;
    	      mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [
    	        subscribe
    	      ]);
    	      fiber.flags |= 2048;
    	      pushSimpleEffect(
    	        9,
    	        createEffectInstance(),
    	        updateStoreInstance.bind(
    	          null,
    	          fiber,
    	          inst,
    	          getServerSnapshot,
    	          getSnapshot
    	        ),
    	        null
    	      );
    	      return getServerSnapshot;
    	    },
    	    useId: function () {
    	      var hook = mountWorkInProgressHook(),
    	        identifierPrefix = workInProgressRoot.identifierPrefix;
    	      if (isHydrating) {
    	        var JSCompiler_inline_result = treeContextOverflow;
    	        var idWithLeadingBit = treeContextId;
    	        JSCompiler_inline_result =
    	          (
    	            idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))
    	          ).toString(32) + JSCompiler_inline_result;
    	        identifierPrefix =
    	          "\u00ab" + identifierPrefix + "R" + JSCompiler_inline_result;
    	        JSCompiler_inline_result = localIdCounter++;
    	        0 < JSCompiler_inline_result &&
    	          (identifierPrefix += "H" + JSCompiler_inline_result.toString(32));
    	        identifierPrefix += "\u00bb";
    	      } else
    	        (JSCompiler_inline_result = globalClientIdCounter++),
    	          (identifierPrefix =
    	            "\u00ab" +
    	            identifierPrefix +
    	            "r" +
    	            JSCompiler_inline_result.toString(32) +
    	            "\u00bb");
    	      return (hook.memoizedState = identifierPrefix);
    	    },
    	    useHostTransitionStatus: useHostTransitionStatus,
    	    useFormState: mountActionState,
    	    useActionState: mountActionState,
    	    useOptimistic: function (passthrough) {
    	      var hook = mountWorkInProgressHook();
    	      hook.memoizedState = hook.baseState = passthrough;
    	      var queue = {
    	        pending: null,
    	        lanes: 0,
    	        dispatch: null,
    	        lastRenderedReducer: null,
    	        lastRenderedState: null
    	      };
    	      hook.queue = queue;
    	      hook = dispatchOptimisticSetState.bind(
    	        null,
    	        currentlyRenderingFiber,
    	        true,
    	        queue
    	      );
    	      queue.dispatch = hook;
    	      return [passthrough, hook];
    	    },
    	    useMemoCache: useMemoCache,
    	    useCacheRefresh: function () {
    	      return (mountWorkInProgressHook().memoizedState = refreshCache.bind(
    	        null,
    	        currentlyRenderingFiber
    	      ));
    	    }
    	  },
    	  HooksDispatcherOnUpdate = {
    	    readContext: readContext,
    	    use: use,
    	    useCallback: updateCallback,
    	    useContext: readContext,
    	    useEffect: updateEffect,
    	    useImperativeHandle: updateImperativeHandle,
    	    useInsertionEffect: updateInsertionEffect,
    	    useLayoutEffect: updateLayoutEffect,
    	    useMemo: updateMemo,
    	    useReducer: updateReducer,
    	    useRef: updateRef,
    	    useState: function () {
    	      return updateReducer(basicStateReducer);
    	    },
    	    useDebugValue: mountDebugValue,
    	    useDeferredValue: function (value, initialValue) {
    	      var hook = updateWorkInProgressHook();
    	      return updateDeferredValueImpl(
    	        hook,
    	        currentHook.memoizedState,
    	        value,
    	        initialValue
    	      );
    	    },
    	    useTransition: function () {
    	      var booleanOrThenable = updateReducer(basicStateReducer)[0],
    	        start = updateWorkInProgressHook().memoizedState;
    	      return [
    	        "boolean" === typeof booleanOrThenable
    	          ? booleanOrThenable
    	          : useThenable(booleanOrThenable),
    	        start
    	      ];
    	    },
    	    useSyncExternalStore: updateSyncExternalStore,
    	    useId: updateId,
    	    useHostTransitionStatus: useHostTransitionStatus,
    	    useFormState: updateActionState,
    	    useActionState: updateActionState,
    	    useOptimistic: function (passthrough, reducer) {
    	      var hook = updateWorkInProgressHook();
    	      return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
    	    },
    	    useMemoCache: useMemoCache,
    	    useCacheRefresh: updateRefresh
    	  },
    	  HooksDispatcherOnRerender = {
    	    readContext: readContext,
    	    use: use,
    	    useCallback: updateCallback,
    	    useContext: readContext,
    	    useEffect: updateEffect,
    	    useImperativeHandle: updateImperativeHandle,
    	    useInsertionEffect: updateInsertionEffect,
    	    useLayoutEffect: updateLayoutEffect,
    	    useMemo: updateMemo,
    	    useReducer: rerenderReducer,
    	    useRef: updateRef,
    	    useState: function () {
    	      return rerenderReducer(basicStateReducer);
    	    },
    	    useDebugValue: mountDebugValue,
    	    useDeferredValue: function (value, initialValue) {
    	      var hook = updateWorkInProgressHook();
    	      return null === currentHook
    	        ? mountDeferredValueImpl(hook, value, initialValue)
    	        : updateDeferredValueImpl(
    	            hook,
    	            currentHook.memoizedState,
    	            value,
    	            initialValue
    	          );
    	    },
    	    useTransition: function () {
    	      var booleanOrThenable = rerenderReducer(basicStateReducer)[0],
    	        start = updateWorkInProgressHook().memoizedState;
    	      return [
    	        "boolean" === typeof booleanOrThenable
    	          ? booleanOrThenable
    	          : useThenable(booleanOrThenable),
    	        start
    	      ];
    	    },
    	    useSyncExternalStore: updateSyncExternalStore,
    	    useId: updateId,
    	    useHostTransitionStatus: useHostTransitionStatus,
    	    useFormState: rerenderActionState,
    	    useActionState: rerenderActionState,
    	    useOptimistic: function (passthrough, reducer) {
    	      var hook = updateWorkInProgressHook();
    	      if (null !== currentHook)
    	        return updateOptimisticImpl(hook, currentHook, passthrough, reducer);
    	      hook.baseState = passthrough;
    	      return [passthrough, hook.queue.dispatch];
    	    },
    	    useMemoCache: useMemoCache,
    	    useCacheRefresh: updateRefresh
    	  },
    	  thenableState = null,
    	  thenableIndexCounter = 0;
    	function unwrapThenable(thenable) {
    	  var index = thenableIndexCounter;
    	  thenableIndexCounter += 1;
    	  null === thenableState && (thenableState = []);
    	  return trackUsedThenable(thenableState, thenable, index);
    	}
    	function coerceRef(workInProgress, element) {
    	  element = element.props.ref;
    	  workInProgress.ref = void 0 !== element ? element : null;
    	}
    	function throwOnInvalidObjectType(returnFiber, newChild) {
    	  if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)
    	    throw Error(formatProdErrorMessage(525));
    	  returnFiber = Object.prototype.toString.call(newChild);
    	  throw Error(
    	    formatProdErrorMessage(
    	      31,
    	      "[object Object]" === returnFiber
    	        ? "object with keys {" + Object.keys(newChild).join(", ") + "}"
    	        : returnFiber
    	    )
    	  );
    	}
    	function resolveLazy(lazyType) {
    	  var init = lazyType._init;
    	  return init(lazyType._payload);
    	}
    	function createChildReconciler(shouldTrackSideEffects) {
    	  function deleteChild(returnFiber, childToDelete) {
    	    if (shouldTrackSideEffects) {
    	      var deletions = returnFiber.deletions;
    	      null === deletions
    	        ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))
    	        : deletions.push(childToDelete);
    	    }
    	  }
    	  function deleteRemainingChildren(returnFiber, currentFirstChild) {
    	    if (!shouldTrackSideEffects) return null;
    	    for (; null !== currentFirstChild; )
    	      deleteChild(returnFiber, currentFirstChild),
    	        (currentFirstChild = currentFirstChild.sibling);
    	    return null;
    	  }
    	  function mapRemainingChildren(currentFirstChild) {
    	    for (var existingChildren = new Map(); null !== currentFirstChild; )
    	      null !== currentFirstChild.key
    	        ? existingChildren.set(currentFirstChild.key, currentFirstChild)
    	        : existingChildren.set(currentFirstChild.index, currentFirstChild),
    	        (currentFirstChild = currentFirstChild.sibling);
    	    return existingChildren;
    	  }
    	  function useFiber(fiber, pendingProps) {
    	    fiber = createWorkInProgress(fiber, pendingProps);
    	    fiber.index = 0;
    	    fiber.sibling = null;
    	    return fiber;
    	  }
    	  function placeChild(newFiber, lastPlacedIndex, newIndex) {
    	    newFiber.index = newIndex;
    	    if (!shouldTrackSideEffects)
    	      return (newFiber.flags |= 1048576), lastPlacedIndex;
    	    newIndex = newFiber.alternate;
    	    if (null !== newIndex)
    	      return (
    	        (newIndex = newIndex.index),
    	        newIndex < lastPlacedIndex
    	          ? ((newFiber.flags |= 67108866), lastPlacedIndex)
    	          : newIndex
    	      );
    	    newFiber.flags |= 67108866;
    	    return lastPlacedIndex;
    	  }
    	  function placeSingleChild(newFiber) {
    	    shouldTrackSideEffects &&
    	      null === newFiber.alternate &&
    	      (newFiber.flags |= 67108866);
    	    return newFiber;
    	  }
    	  function updateTextNode(returnFiber, current, textContent, lanes) {
    	    if (null === current || 6 !== current.tag)
    	      return (
    	        (current = createFiberFromText(textContent, returnFiber.mode, lanes)),
    	        (current.return = returnFiber),
    	        current
    	      );
    	    current = useFiber(current, textContent);
    	    current.return = returnFiber;
    	    return current;
    	  }
    	  function updateElement(returnFiber, current, element, lanes) {
    	    var elementType = element.type;
    	    if (elementType === REACT_FRAGMENT_TYPE)
    	      return updateFragment(
    	        returnFiber,
    	        current,
    	        element.props.children,
    	        lanes,
    	        element.key
    	      );
    	    if (
    	      null !== current &&
    	      (current.elementType === elementType ||
    	        ("object" === typeof elementType &&
    	          null !== elementType &&
    	          elementType.$$typeof === REACT_LAZY_TYPE &&
    	          resolveLazy(elementType) === current.type))
    	    )
    	      return (
    	        (current = useFiber(current, element.props)),
    	        coerceRef(current, element),
    	        (current.return = returnFiber),
    	        current
    	      );
    	    current = createFiberFromTypeAndProps(
    	      element.type,
    	      element.key,
    	      element.props,
    	      null,
    	      returnFiber.mode,
    	      lanes
    	    );
    	    coerceRef(current, element);
    	    current.return = returnFiber;
    	    return current;
    	  }
    	  function updatePortal(returnFiber, current, portal, lanes) {
    	    if (
    	      null === current ||
    	      4 !== current.tag ||
    	      current.stateNode.containerInfo !== portal.containerInfo ||
    	      current.stateNode.implementation !== portal.implementation
    	    )
    	      return (
    	        (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),
    	        (current.return = returnFiber),
    	        current
    	      );
    	    current = useFiber(current, portal.children || []);
    	    current.return = returnFiber;
    	    return current;
    	  }
    	  function updateFragment(returnFiber, current, fragment, lanes, key) {
    	    if (null === current || 7 !== current.tag)
    	      return (
    	        (current = createFiberFromFragment(
    	          fragment,
    	          returnFiber.mode,
    	          lanes,
    	          key
    	        )),
    	        (current.return = returnFiber),
    	        current
    	      );
    	    current = useFiber(current, fragment);
    	    current.return = returnFiber;
    	    return current;
    	  }
    	  function createChild(returnFiber, newChild, lanes) {
    	    if (
    	      ("string" === typeof newChild && "" !== newChild) ||
    	      "number" === typeof newChild ||
    	      "bigint" === typeof newChild
    	    )
    	      return (
    	        (newChild = createFiberFromText(
    	          "" + newChild,
    	          returnFiber.mode,
    	          lanes
    	        )),
    	        (newChild.return = returnFiber),
    	        newChild
    	      );
    	    if ("object" === typeof newChild && null !== newChild) {
    	      switch (newChild.$$typeof) {
    	        case REACT_ELEMENT_TYPE:
    	          return (
    	            (lanes = createFiberFromTypeAndProps(
    	              newChild.type,
    	              newChild.key,
    	              newChild.props,
    	              null,
    	              returnFiber.mode,
    	              lanes
    	            )),
    	            coerceRef(lanes, newChild),
    	            (lanes.return = returnFiber),
    	            lanes
    	          );
    	        case REACT_PORTAL_TYPE:
    	          return (
    	            (newChild = createFiberFromPortal(
    	              newChild,
    	              returnFiber.mode,
    	              lanes
    	            )),
    	            (newChild.return = returnFiber),
    	            newChild
    	          );
    	        case REACT_LAZY_TYPE:
    	          var init = newChild._init;
    	          newChild = init(newChild._payload);
    	          return createChild(returnFiber, newChild, lanes);
    	      }
    	      if (isArrayImpl(newChild) || getIteratorFn(newChild))
    	        return (
    	          (newChild = createFiberFromFragment(
    	            newChild,
    	            returnFiber.mode,
    	            lanes,
    	            null
    	          )),
    	          (newChild.return = returnFiber),
    	          newChild
    	        );
    	      if ("function" === typeof newChild.then)
    	        return createChild(returnFiber, unwrapThenable(newChild), lanes);
    	      if (newChild.$$typeof === REACT_CONTEXT_TYPE)
    	        return createChild(
    	          returnFiber,
    	          readContextDuringReconciliation(returnFiber, newChild),
    	          lanes
    	        );
    	      throwOnInvalidObjectType(returnFiber, newChild);
    	    }
    	    return null;
    	  }
    	  function updateSlot(returnFiber, oldFiber, newChild, lanes) {
    	    var key = null !== oldFiber ? oldFiber.key : null;
    	    if (
    	      ("string" === typeof newChild && "" !== newChild) ||
    	      "number" === typeof newChild ||
    	      "bigint" === typeof newChild
    	    )
    	      return null !== key
    	        ? null
    	        : updateTextNode(returnFiber, oldFiber, "" + newChild, lanes);
    	    if ("object" === typeof newChild && null !== newChild) {
    	      switch (newChild.$$typeof) {
    	        case REACT_ELEMENT_TYPE:
    	          return newChild.key === key
    	            ? updateElement(returnFiber, oldFiber, newChild, lanes)
    	            : null;
    	        case REACT_PORTAL_TYPE:
    	          return newChild.key === key
    	            ? updatePortal(returnFiber, oldFiber, newChild, lanes)
    	            : null;
    	        case REACT_LAZY_TYPE:
    	          return (
    	            (key = newChild._init),
    	            (newChild = key(newChild._payload)),
    	            updateSlot(returnFiber, oldFiber, newChild, lanes)
    	          );
    	      }
    	      if (isArrayImpl(newChild) || getIteratorFn(newChild))
    	        return null !== key
    	          ? null
    	          : updateFragment(returnFiber, oldFiber, newChild, lanes, null);
    	      if ("function" === typeof newChild.then)
    	        return updateSlot(
    	          returnFiber,
    	          oldFiber,
    	          unwrapThenable(newChild),
    	          lanes
    	        );
    	      if (newChild.$$typeof === REACT_CONTEXT_TYPE)
    	        return updateSlot(
    	          returnFiber,
    	          oldFiber,
    	          readContextDuringReconciliation(returnFiber, newChild),
    	          lanes
    	        );
    	      throwOnInvalidObjectType(returnFiber, newChild);
    	    }
    	    return null;
    	  }
    	  function updateFromMap(
    	    existingChildren,
    	    returnFiber,
    	    newIdx,
    	    newChild,
    	    lanes
    	  ) {
    	    if (
    	      ("string" === typeof newChild && "" !== newChild) ||
    	      "number" === typeof newChild ||
    	      "bigint" === typeof newChild
    	    )
    	      return (
    	        (existingChildren = existingChildren.get(newIdx) || null),
    	        updateTextNode(returnFiber, existingChildren, "" + newChild, lanes)
    	      );
    	    if ("object" === typeof newChild && null !== newChild) {
    	      switch (newChild.$$typeof) {
    	        case REACT_ELEMENT_TYPE:
    	          return (
    	            (existingChildren =
    	              existingChildren.get(
    	                null === newChild.key ? newIdx : newChild.key
    	              ) || null),
    	            updateElement(returnFiber, existingChildren, newChild, lanes)
    	          );
    	        case REACT_PORTAL_TYPE:
    	          return (
    	            (existingChildren =
    	              existingChildren.get(
    	                null === newChild.key ? newIdx : newChild.key
    	              ) || null),
    	            updatePortal(returnFiber, existingChildren, newChild, lanes)
    	          );
    	        case REACT_LAZY_TYPE:
    	          var init = newChild._init;
    	          newChild = init(newChild._payload);
    	          return updateFromMap(
    	            existingChildren,
    	            returnFiber,
    	            newIdx,
    	            newChild,
    	            lanes
    	          );
    	      }
    	      if (isArrayImpl(newChild) || getIteratorFn(newChild))
    	        return (
    	          (existingChildren = existingChildren.get(newIdx) || null),
    	          updateFragment(returnFiber, existingChildren, newChild, lanes, null)
    	        );
    	      if ("function" === typeof newChild.then)
    	        return updateFromMap(
    	          existingChildren,
    	          returnFiber,
    	          newIdx,
    	          unwrapThenable(newChild),
    	          lanes
    	        );
    	      if (newChild.$$typeof === REACT_CONTEXT_TYPE)
    	        return updateFromMap(
    	          existingChildren,
    	          returnFiber,
    	          newIdx,
    	          readContextDuringReconciliation(returnFiber, newChild),
    	          lanes
    	        );
    	      throwOnInvalidObjectType(returnFiber, newChild);
    	    }
    	    return null;
    	  }
    	  function reconcileChildrenArray(
    	    returnFiber,
    	    currentFirstChild,
    	    newChildren,
    	    lanes
    	  ) {
    	    for (
    	      var resultingFirstChild = null,
    	        previousNewFiber = null,
    	        oldFiber = currentFirstChild,
    	        newIdx = (currentFirstChild = 0),
    	        nextOldFiber = null;
    	      null !== oldFiber && newIdx < newChildren.length;
    	      newIdx++
    	    ) {
    	      oldFiber.index > newIdx
    	        ? ((nextOldFiber = oldFiber), (oldFiber = null))
    	        : (nextOldFiber = oldFiber.sibling);
    	      var newFiber = updateSlot(
    	        returnFiber,
    	        oldFiber,
    	        newChildren[newIdx],
    	        lanes
    	      );
    	      if (null === newFiber) {
    	        null === oldFiber && (oldFiber = nextOldFiber);
    	        break;
    	      }
    	      shouldTrackSideEffects &&
    	        oldFiber &&
    	        null === newFiber.alternate &&
    	        deleteChild(returnFiber, oldFiber);
    	      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
    	      null === previousNewFiber
    	        ? (resultingFirstChild = newFiber)
    	        : (previousNewFiber.sibling = newFiber);
    	      previousNewFiber = newFiber;
    	      oldFiber = nextOldFiber;
    	    }
    	    if (newIdx === newChildren.length)
    	      return (
    	        deleteRemainingChildren(returnFiber, oldFiber),
    	        isHydrating && pushTreeFork(returnFiber, newIdx),
    	        resultingFirstChild
    	      );
    	    if (null === oldFiber) {
    	      for (; newIdx < newChildren.length; newIdx++)
    	        (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),
    	          null !== oldFiber &&
    	            ((currentFirstChild = placeChild(
    	              oldFiber,
    	              currentFirstChild,
    	              newIdx
    	            )),
    	            null === previousNewFiber
    	              ? (resultingFirstChild = oldFiber)
    	              : (previousNewFiber.sibling = oldFiber),
    	            (previousNewFiber = oldFiber));
    	      isHydrating && pushTreeFork(returnFiber, newIdx);
    	      return resultingFirstChild;
    	    }
    	    for (
    	      oldFiber = mapRemainingChildren(oldFiber);
    	      newIdx < newChildren.length;
    	      newIdx++
    	    )
    	      (nextOldFiber = updateFromMap(
    	        oldFiber,
    	        returnFiber,
    	        newIdx,
    	        newChildren[newIdx],
    	        lanes
    	      )),
    	        null !== nextOldFiber &&
    	          (shouldTrackSideEffects &&
    	            null !== nextOldFiber.alternate &&
    	            oldFiber.delete(
    	              null === nextOldFiber.key ? newIdx : nextOldFiber.key
    	            ),
    	          (currentFirstChild = placeChild(
    	            nextOldFiber,
    	            currentFirstChild,
    	            newIdx
    	          )),
    	          null === previousNewFiber
    	            ? (resultingFirstChild = nextOldFiber)
    	            : (previousNewFiber.sibling = nextOldFiber),
    	          (previousNewFiber = nextOldFiber));
    	    shouldTrackSideEffects &&
    	      oldFiber.forEach(function (child) {
    	        return deleteChild(returnFiber, child);
    	      });
    	    isHydrating && pushTreeFork(returnFiber, newIdx);
    	    return resultingFirstChild;
    	  }
    	  function reconcileChildrenIterator(
    	    returnFiber,
    	    currentFirstChild,
    	    newChildren,
    	    lanes
    	  ) {
    	    if (null == newChildren) throw Error(formatProdErrorMessage(151));
    	    for (
    	      var resultingFirstChild = null,
    	        previousNewFiber = null,
    	        oldFiber = currentFirstChild,
    	        newIdx = (currentFirstChild = 0),
    	        nextOldFiber = null,
    	        step = newChildren.next();
    	      null !== oldFiber && !step.done;
    	      newIdx++, step = newChildren.next()
    	    ) {
    	      oldFiber.index > newIdx
    	        ? ((nextOldFiber = oldFiber), (oldFiber = null))
    	        : (nextOldFiber = oldFiber.sibling);
    	      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
    	      if (null === newFiber) {
    	        null === oldFiber && (oldFiber = nextOldFiber);
    	        break;
    	      }
    	      shouldTrackSideEffects &&
    	        oldFiber &&
    	        null === newFiber.alternate &&
    	        deleteChild(returnFiber, oldFiber);
    	      currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);
    	      null === previousNewFiber
    	        ? (resultingFirstChild = newFiber)
    	        : (previousNewFiber.sibling = newFiber);
    	      previousNewFiber = newFiber;
    	      oldFiber = nextOldFiber;
    	    }
    	    if (step.done)
    	      return (
    	        deleteRemainingChildren(returnFiber, oldFiber),
    	        isHydrating && pushTreeFork(returnFiber, newIdx),
    	        resultingFirstChild
    	      );
    	    if (null === oldFiber) {
    	      for (; !step.done; newIdx++, step = newChildren.next())
    	        (step = createChild(returnFiber, step.value, lanes)),
    	          null !== step &&
    	            ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),
    	            null === previousNewFiber
    	              ? (resultingFirstChild = step)
    	              : (previousNewFiber.sibling = step),
    	            (previousNewFiber = step));
    	      isHydrating && pushTreeFork(returnFiber, newIdx);
    	      return resultingFirstChild;
    	    }
    	    for (
    	      oldFiber = mapRemainingChildren(oldFiber);
    	      !step.done;
    	      newIdx++, step = newChildren.next()
    	    )
    	      (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),
    	        null !== step &&
    	          (shouldTrackSideEffects &&
    	            null !== step.alternate &&
    	            oldFiber.delete(null === step.key ? newIdx : step.key),
    	          (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),
    	          null === previousNewFiber
    	            ? (resultingFirstChild = step)
    	            : (previousNewFiber.sibling = step),
    	          (previousNewFiber = step));
    	    shouldTrackSideEffects &&
    	      oldFiber.forEach(function (child) {
    	        return deleteChild(returnFiber, child);
    	      });
    	    isHydrating && pushTreeFork(returnFiber, newIdx);
    	    return resultingFirstChild;
    	  }
    	  function reconcileChildFibersImpl(
    	    returnFiber,
    	    currentFirstChild,
    	    newChild,
    	    lanes
    	  ) {
    	    "object" === typeof newChild &&
    	      null !== newChild &&
    	      newChild.type === REACT_FRAGMENT_TYPE &&
    	      null === newChild.key &&
    	      (newChild = newChild.props.children);
    	    if ("object" === typeof newChild && null !== newChild) {
    	      switch (newChild.$$typeof) {
    	        case REACT_ELEMENT_TYPE:
    	          a: {
    	            for (var key = newChild.key; null !== currentFirstChild; ) {
    	              if (currentFirstChild.key === key) {
    	                key = newChild.type;
    	                if (key === REACT_FRAGMENT_TYPE) {
    	                  if (7 === currentFirstChild.tag) {
    	                    deleteRemainingChildren(
    	                      returnFiber,
    	                      currentFirstChild.sibling
    	                    );
    	                    lanes = useFiber(
    	                      currentFirstChild,
    	                      newChild.props.children
    	                    );
    	                    lanes.return = returnFiber;
    	                    returnFiber = lanes;
    	                    break a;
    	                  }
    	                } else if (
    	                  currentFirstChild.elementType === key ||
    	                  ("object" === typeof key &&
    	                    null !== key &&
    	                    key.$$typeof === REACT_LAZY_TYPE &&
    	                    resolveLazy(key) === currentFirstChild.type)
    	                ) {
    	                  deleteRemainingChildren(
    	                    returnFiber,
    	                    currentFirstChild.sibling
    	                  );
    	                  lanes = useFiber(currentFirstChild, newChild.props);
    	                  coerceRef(lanes, newChild);
    	                  lanes.return = returnFiber;
    	                  returnFiber = lanes;
    	                  break a;
    	                }
    	                deleteRemainingChildren(returnFiber, currentFirstChild);
    	                break;
    	              } else deleteChild(returnFiber, currentFirstChild);
    	              currentFirstChild = currentFirstChild.sibling;
    	            }
    	            newChild.type === REACT_FRAGMENT_TYPE
    	              ? ((lanes = createFiberFromFragment(
    	                  newChild.props.children,
    	                  returnFiber.mode,
    	                  lanes,
    	                  newChild.key
    	                )),
    	                (lanes.return = returnFiber),
    	                (returnFiber = lanes))
    	              : ((lanes = createFiberFromTypeAndProps(
    	                  newChild.type,
    	                  newChild.key,
    	                  newChild.props,
    	                  null,
    	                  returnFiber.mode,
    	                  lanes
    	                )),
    	                coerceRef(lanes, newChild),
    	                (lanes.return = returnFiber),
    	                (returnFiber = lanes));
    	          }
    	          return placeSingleChild(returnFiber);
    	        case REACT_PORTAL_TYPE:
    	          a: {
    	            for (key = newChild.key; null !== currentFirstChild; ) {
    	              if (currentFirstChild.key === key)
    	                if (
    	                  4 === currentFirstChild.tag &&
    	                  currentFirstChild.stateNode.containerInfo ===
    	                    newChild.containerInfo &&
    	                  currentFirstChild.stateNode.implementation ===
    	                    newChild.implementation
    	                ) {
    	                  deleteRemainingChildren(
    	                    returnFiber,
    	                    currentFirstChild.sibling
    	                  );
    	                  lanes = useFiber(currentFirstChild, newChild.children || []);
    	                  lanes.return = returnFiber;
    	                  returnFiber = lanes;
    	                  break a;
    	                } else {
    	                  deleteRemainingChildren(returnFiber, currentFirstChild);
    	                  break;
    	                }
    	              else deleteChild(returnFiber, currentFirstChild);
    	              currentFirstChild = currentFirstChild.sibling;
    	            }
    	            lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);
    	            lanes.return = returnFiber;
    	            returnFiber = lanes;
    	          }
    	          return placeSingleChild(returnFiber);
    	        case REACT_LAZY_TYPE:
    	          return (
    	            (key = newChild._init),
    	            (newChild = key(newChild._payload)),
    	            reconcileChildFibersImpl(
    	              returnFiber,
    	              currentFirstChild,
    	              newChild,
    	              lanes
    	            )
    	          );
    	      }
    	      if (isArrayImpl(newChild))
    	        return reconcileChildrenArray(
    	          returnFiber,
    	          currentFirstChild,
    	          newChild,
    	          lanes
    	        );
    	      if (getIteratorFn(newChild)) {
    	        key = getIteratorFn(newChild);
    	        if ("function" !== typeof key) throw Error(formatProdErrorMessage(150));
    	        newChild = key.call(newChild);
    	        return reconcileChildrenIterator(
    	          returnFiber,
    	          currentFirstChild,
    	          newChild,
    	          lanes
    	        );
    	      }
    	      if ("function" === typeof newChild.then)
    	        return reconcileChildFibersImpl(
    	          returnFiber,
    	          currentFirstChild,
    	          unwrapThenable(newChild),
    	          lanes
    	        );
    	      if (newChild.$$typeof === REACT_CONTEXT_TYPE)
    	        return reconcileChildFibersImpl(
    	          returnFiber,
    	          currentFirstChild,
    	          readContextDuringReconciliation(returnFiber, newChild),
    	          lanes
    	        );
    	      throwOnInvalidObjectType(returnFiber, newChild);
    	    }
    	    return ("string" === typeof newChild && "" !== newChild) ||
    	      "number" === typeof newChild ||
    	      "bigint" === typeof newChild
    	      ? ((newChild = "" + newChild),
    	        null !== currentFirstChild && 6 === currentFirstChild.tag
    	          ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),
    	            (lanes = useFiber(currentFirstChild, newChild)),
    	            (lanes.return = returnFiber),
    	            (returnFiber = lanes))
    	          : (deleteRemainingChildren(returnFiber, currentFirstChild),
    	            (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),
    	            (lanes.return = returnFiber),
    	            (returnFiber = lanes)),
    	        placeSingleChild(returnFiber))
    	      : deleteRemainingChildren(returnFiber, currentFirstChild);
    	  }
    	  return function (returnFiber, currentFirstChild, newChild, lanes) {
    	    try {
    	      thenableIndexCounter = 0;
    	      var firstChildFiber = reconcileChildFibersImpl(
    	        returnFiber,
    	        currentFirstChild,
    	        newChild,
    	        lanes
    	      );
    	      thenableState = null;
    	      return firstChildFiber;
    	    } catch (x) {
    	      if (x === SuspenseException || x === SuspenseActionException) throw x;
    	      var fiber = createFiberImplClass(29, x, null, returnFiber.mode);
    	      fiber.lanes = lanes;
    	      fiber.return = returnFiber;
    	      return fiber;
    	    } finally {
    	    }
    	  };
    	}
    	var reconcileChildFibers = createChildReconciler(true),
    	  mountChildFibers = createChildReconciler(false),
    	  suspenseHandlerStackCursor = createCursor(null),
    	  shellBoundary = null;
    	function pushPrimaryTreeSuspenseHandler(handler) {
    	  var current = handler.alternate;
    	  push(suspenseStackCursor, suspenseStackCursor.current & 1);
    	  push(suspenseHandlerStackCursor, handler);
    	  null === shellBoundary &&
    	    (null === current || null !== currentTreeHiddenStackCursor.current
    	      ? (shellBoundary = handler)
    	      : null !== current.memoizedState && (shellBoundary = handler));
    	}
    	function pushOffscreenSuspenseHandler(fiber) {
    	  if (22 === fiber.tag) {
    	    if (
    	      (push(suspenseStackCursor, suspenseStackCursor.current),
    	      push(suspenseHandlerStackCursor, fiber),
    	      null === shellBoundary)
    	    ) {
    	      var current = fiber.alternate;
    	      null !== current &&
    	        null !== current.memoizedState &&
    	        (shellBoundary = fiber);
    	    }
    	  } else reuseSuspenseHandlerOnStack();
    	}
    	function reuseSuspenseHandlerOnStack() {
    	  push(suspenseStackCursor, suspenseStackCursor.current);
    	  push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);
    	}
    	function popSuspenseHandler(fiber) {
    	  pop(suspenseHandlerStackCursor);
    	  shellBoundary === fiber && (shellBoundary = null);
    	  pop(suspenseStackCursor);
    	}
    	var suspenseStackCursor = createCursor(0);
    	function findFirstSuspended(row) {
    	  for (var node = row; null !== node; ) {
    	    if (13 === node.tag) {
    	      var state = node.memoizedState;
    	      if (
    	        null !== state &&
    	        ((state = state.dehydrated),
    	        null === state ||
    	          "$?" === state.data ||
    	          isSuspenseInstanceFallback(state))
    	      )
    	        return node;
    	    } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {
    	      if (0 !== (node.flags & 128)) return node;
    	    } else if (null !== node.child) {
    	      node.child.return = node;
    	      node = node.child;
    	      continue;
    	    }
    	    if (node === row) break;
    	    for (; null === node.sibling; ) {
    	      if (null === node.return || node.return === row) return null;
    	      node = node.return;
    	    }
    	    node.sibling.return = node.return;
    	    node = node.sibling;
    	  }
    	  return null;
    	}
    	function applyDerivedStateFromProps(
    	  workInProgress,
    	  ctor,
    	  getDerivedStateFromProps,
    	  nextProps
    	) {
    	  ctor = workInProgress.memoizedState;
    	  getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);
    	  getDerivedStateFromProps =
    	    null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps
    	      ? ctor
    	      : assign({}, ctor, getDerivedStateFromProps);
    	  workInProgress.memoizedState = getDerivedStateFromProps;
    	  0 === workInProgress.lanes &&
    	    (workInProgress.updateQueue.baseState = getDerivedStateFromProps);
    	}
    	var classComponentUpdater = {
    	  enqueueSetState: function (inst, payload, callback) {
    	    inst = inst._reactInternals;
    	    var lane = requestUpdateLane(),
    	      update = createUpdate(lane);
    	    update.payload = payload;
    	    void 0 !== callback && null !== callback && (update.callback = callback);
    	    payload = enqueueUpdate(inst, update, lane);
    	    null !== payload &&
    	      (scheduleUpdateOnFiber(payload, inst, lane),
    	      entangleTransitions(payload, inst, lane));
    	  },
    	  enqueueReplaceState: function (inst, payload, callback) {
    	    inst = inst._reactInternals;
    	    var lane = requestUpdateLane(),
    	      update = createUpdate(lane);
    	    update.tag = 1;
    	    update.payload = payload;
    	    void 0 !== callback && null !== callback && (update.callback = callback);
    	    payload = enqueueUpdate(inst, update, lane);
    	    null !== payload &&
    	      (scheduleUpdateOnFiber(payload, inst, lane),
    	      entangleTransitions(payload, inst, lane));
    	  },
    	  enqueueForceUpdate: function (inst, callback) {
    	    inst = inst._reactInternals;
    	    var lane = requestUpdateLane(),
    	      update = createUpdate(lane);
    	    update.tag = 2;
    	    void 0 !== callback && null !== callback && (update.callback = callback);
    	    callback = enqueueUpdate(inst, update, lane);
    	    null !== callback &&
    	      (scheduleUpdateOnFiber(callback, inst, lane),
    	      entangleTransitions(callback, inst, lane));
    	  }
    	};
    	function checkShouldComponentUpdate(
    	  workInProgress,
    	  ctor,
    	  oldProps,
    	  newProps,
    	  oldState,
    	  newState,
    	  nextContext
    	) {
    	  workInProgress = workInProgress.stateNode;
    	  return "function" === typeof workInProgress.shouldComponentUpdate
    	    ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)
    	    : ctor.prototype && ctor.prototype.isPureReactComponent
    	      ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)
    	      : true;
    	}
    	function callComponentWillReceiveProps(
    	  workInProgress,
    	  instance,
    	  newProps,
    	  nextContext
    	) {
    	  workInProgress = instance.state;
    	  "function" === typeof instance.componentWillReceiveProps &&
    	    instance.componentWillReceiveProps(newProps, nextContext);
    	  "function" === typeof instance.UNSAFE_componentWillReceiveProps &&
    	    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
    	  instance.state !== workInProgress &&
    	    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
    	}
    	function resolveClassComponentProps(Component, baseProps) {
    	  var newProps = baseProps;
    	  if ("ref" in baseProps) {
    	    newProps = {};
    	    for (var propName in baseProps)
    	      "ref" !== propName && (newProps[propName] = baseProps[propName]);
    	  }
    	  if ((Component = Component.defaultProps)) {
    	    newProps === baseProps && (newProps = assign({}, newProps));
    	    for (var propName$73 in Component)
    	      void 0 === newProps[propName$73] &&
    	        (newProps[propName$73] = Component[propName$73]);
    	  }
    	  return newProps;
    	}
    	var reportGlobalError =
    	  "function" === typeof reportError
    	    ? reportError
    	    : function (error) {
    	        if (
    	          "object" === typeof window &&
    	          "function" === typeof window.ErrorEvent
    	        ) {
    	          var event = new window.ErrorEvent("error", {
    	            bubbles: true,
    	            cancelable: true,
    	            message:
    	              "object" === typeof error &&
    	              null !== error &&
    	              "string" === typeof error.message
    	                ? String(error.message)
    	                : String(error),
    	            error: error
    	          });
    	          if (!window.dispatchEvent(event)) return;
    	        } else if (
    	          "object" === typeof process &&
    	          "function" === typeof process.emit
    	        ) {
    	          process.emit("uncaughtException", error);
    	          return;
    	        }
    	        console.error(error);
    	      };
    	function defaultOnUncaughtError(error) {
    	  reportGlobalError(error);
    	}
    	function defaultOnCaughtError(error) {
    	  console.error(error);
    	}
    	function defaultOnRecoverableError(error) {
    	  reportGlobalError(error);
    	}
    	function logUncaughtError(root, errorInfo) {
    	  try {
    	    var onUncaughtError = root.onUncaughtError;
    	    onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });
    	  } catch (e$74) {
    	    setTimeout(function () {
    	      throw e$74;
    	    });
    	  }
    	}
    	function logCaughtError(root, boundary, errorInfo) {
    	  try {
    	    var onCaughtError = root.onCaughtError;
    	    onCaughtError(errorInfo.value, {
    	      componentStack: errorInfo.stack,
    	      errorBoundary: 1 === boundary.tag ? boundary.stateNode : null
    	    });
    	  } catch (e$75) {
    	    setTimeout(function () {
    	      throw e$75;
    	    });
    	  }
    	}
    	function createRootErrorUpdate(root, errorInfo, lane) {
    	  lane = createUpdate(lane);
    	  lane.tag = 3;
    	  lane.payload = { element: null };
    	  lane.callback = function () {
    	    logUncaughtError(root, errorInfo);
    	  };
    	  return lane;
    	}
    	function createClassErrorUpdate(lane) {
    	  lane = createUpdate(lane);
    	  lane.tag = 3;
    	  return lane;
    	}
    	function initializeClassErrorUpdate(update, root, fiber, errorInfo) {
    	  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
    	  if ("function" === typeof getDerivedStateFromError) {
    	    var error = errorInfo.value;
    	    update.payload = function () {
    	      return getDerivedStateFromError(error);
    	    };
    	    update.callback = function () {
    	      logCaughtError(root, fiber, errorInfo);
    	    };
    	  }
    	  var inst = fiber.stateNode;
    	  null !== inst &&
    	    "function" === typeof inst.componentDidCatch &&
    	    (update.callback = function () {
    	      logCaughtError(root, fiber, errorInfo);
    	      "function" !== typeof getDerivedStateFromError &&
    	        (null === legacyErrorBoundariesThatAlreadyFailed
    	          ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))
    	          : legacyErrorBoundariesThatAlreadyFailed.add(this));
    	      var stack = errorInfo.stack;
    	      this.componentDidCatch(errorInfo.value, {
    	        componentStack: null !== stack ? stack : ""
    	      });
    	    });
    	}
    	function throwException(
    	  root,
    	  returnFiber,
    	  sourceFiber,
    	  value,
    	  rootRenderLanes
    	) {
    	  sourceFiber.flags |= 32768;
    	  if (
    	    null !== value &&
    	    "object" === typeof value &&
    	    "function" === typeof value.then
    	  ) {
    	    returnFiber = sourceFiber.alternate;
    	    null !== returnFiber &&
    	      propagateParentContextChanges(
    	        returnFiber,
    	        sourceFiber,
    	        rootRenderLanes,
    	        true
    	      );
    	    sourceFiber = suspenseHandlerStackCursor.current;
    	    if (null !== sourceFiber) {
    	      switch (sourceFiber.tag) {
    	        case 13:
    	          return (
    	            null === shellBoundary
    	              ? renderDidSuspendDelayIfPossible()
    	              : null === sourceFiber.alternate &&
    	                0 === workInProgressRootExitStatus &&
    	                (workInProgressRootExitStatus = 3),
    	            (sourceFiber.flags &= -257),
    	            (sourceFiber.flags |= 65536),
    	            (sourceFiber.lanes = rootRenderLanes),
    	            value === noopSuspenseyCommitThenable
    	              ? (sourceFiber.flags |= 16384)
    	              : ((returnFiber = sourceFiber.updateQueue),
    	                null === returnFiber
    	                  ? (sourceFiber.updateQueue = new Set([value]))
    	                  : returnFiber.add(value),
    	                attachPingListener(root, value, rootRenderLanes)),
    	            false
    	          );
    	        case 22:
    	          return (
    	            (sourceFiber.flags |= 65536),
    	            value === noopSuspenseyCommitThenable
    	              ? (sourceFiber.flags |= 16384)
    	              : ((returnFiber = sourceFiber.updateQueue),
    	                null === returnFiber
    	                  ? ((returnFiber = {
    	                      transitions: null,
    	                      markerInstances: null,
    	                      retryQueue: new Set([value])
    	                    }),
    	                    (sourceFiber.updateQueue = returnFiber))
    	                  : ((sourceFiber = returnFiber.retryQueue),
    	                    null === sourceFiber
    	                      ? (returnFiber.retryQueue = new Set([value]))
    	                      : sourceFiber.add(value)),
    	                attachPingListener(root, value, rootRenderLanes)),
    	            false
    	          );
    	      }
    	      throw Error(formatProdErrorMessage(435, sourceFiber.tag));
    	    }
    	    attachPingListener(root, value, rootRenderLanes);
    	    renderDidSuspendDelayIfPossible();
    	    return false;
    	  }
    	  if (isHydrating)
    	    return (
    	      (returnFiber = suspenseHandlerStackCursor.current),
    	      null !== returnFiber
    	        ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),
    	          (returnFiber.flags |= 65536),
    	          (returnFiber.lanes = rootRenderLanes),
    	          value !== HydrationMismatchException &&
    	            ((root = Error(formatProdErrorMessage(422), { cause: value })),
    	            queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))
    	        : (value !== HydrationMismatchException &&
    	            ((returnFiber = Error(formatProdErrorMessage(423), {
    	              cause: value
    	            })),
    	            queueHydrationError(
    	              createCapturedValueAtFiber(returnFiber, sourceFiber)
    	            )),
    	          (root = root.current.alternate),
    	          (root.flags |= 65536),
    	          (rootRenderLanes &= -rootRenderLanes),
    	          (root.lanes |= rootRenderLanes),
    	          (value = createCapturedValueAtFiber(value, sourceFiber)),
    	          (rootRenderLanes = createRootErrorUpdate(
    	            root.stateNode,
    	            value,
    	            rootRenderLanes
    	          )),
    	          enqueueCapturedUpdate(root, rootRenderLanes),
    	          4 !== workInProgressRootExitStatus &&
    	            (workInProgressRootExitStatus = 2)),
    	      false
    	    );
    	  var wrapperError = Error(formatProdErrorMessage(520), { cause: value });
    	  wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);
    	  null === workInProgressRootConcurrentErrors
    	    ? (workInProgressRootConcurrentErrors = [wrapperError])
    	    : workInProgressRootConcurrentErrors.push(wrapperError);
    	  4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);
    	  if (null === returnFiber) return true;
    	  value = createCapturedValueAtFiber(value, sourceFiber);
    	  sourceFiber = returnFiber;
    	  do {
    	    switch (sourceFiber.tag) {
    	      case 3:
    	        return (
    	          (sourceFiber.flags |= 65536),
    	          (root = rootRenderLanes & -rootRenderLanes),
    	          (sourceFiber.lanes |= root),
    	          (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),
    	          enqueueCapturedUpdate(sourceFiber, root),
    	          false
    	        );
    	      case 1:
    	        if (
    	          ((returnFiber = sourceFiber.type),
    	          (wrapperError = sourceFiber.stateNode),
    	          0 === (sourceFiber.flags & 128) &&
    	            ("function" === typeof returnFiber.getDerivedStateFromError ||
    	              (null !== wrapperError &&
    	                "function" === typeof wrapperError.componentDidCatch &&
    	                (null === legacyErrorBoundariesThatAlreadyFailed ||
    	                  !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))
    	        )
    	          return (
    	            (sourceFiber.flags |= 65536),
    	            (rootRenderLanes &= -rootRenderLanes),
    	            (sourceFiber.lanes |= rootRenderLanes),
    	            (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),
    	            initializeClassErrorUpdate(
    	              rootRenderLanes,
    	              root,
    	              sourceFiber,
    	              value
    	            ),
    	            enqueueCapturedUpdate(sourceFiber, rootRenderLanes),
    	            false
    	          );
    	    }
    	    sourceFiber = sourceFiber.return;
    	  } while (null !== sourceFiber);
    	  return false;
    	}
    	var SelectiveHydrationException = Error(formatProdErrorMessage(461)),
    	  didReceiveUpdate = false;
    	function reconcileChildren(current, workInProgress, nextChildren, renderLanes) {
    	  workInProgress.child =
    	    null === current
    	      ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)
    	      : reconcileChildFibers(
    	          workInProgress,
    	          current.child,
    	          nextChildren,
    	          renderLanes
    	        );
    	}
    	function updateForwardRef(
    	  current,
    	  workInProgress,
    	  Component,
    	  nextProps,
    	  renderLanes
    	) {
    	  Component = Component.render;
    	  var ref = workInProgress.ref;
    	  if ("ref" in nextProps) {
    	    var propsWithoutRef = {};
    	    for (var key in nextProps)
    	      "ref" !== key && (propsWithoutRef[key] = nextProps[key]);
    	  } else propsWithoutRef = nextProps;
    	  prepareToReadContext(workInProgress);
    	  nextProps = renderWithHooks(
    	    current,
    	    workInProgress,
    	    Component,
    	    propsWithoutRef,
    	    ref,
    	    renderLanes
    	  );
    	  key = checkDidRenderIdHook();
    	  if (null !== current && !didReceiveUpdate)
    	    return (
    	      bailoutHooks(current, workInProgress, renderLanes),
    	      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)
    	    );
    	  isHydrating && key && pushMaterializedTreeId(workInProgress);
    	  workInProgress.flags |= 1;
    	  reconcileChildren(current, workInProgress, nextProps, renderLanes);
    	  return workInProgress.child;
    	}
    	function updateMemoComponent(
    	  current,
    	  workInProgress,
    	  Component,
    	  nextProps,
    	  renderLanes
    	) {
    	  if (null === current) {
    	    var type = Component.type;
    	    if (
    	      "function" === typeof type &&
    	      !shouldConstruct(type) &&
    	      void 0 === type.defaultProps &&
    	      null === Component.compare
    	    )
    	      return (
    	        (workInProgress.tag = 15),
    	        (workInProgress.type = type),
    	        updateSimpleMemoComponent(
    	          current,
    	          workInProgress,
    	          type,
    	          nextProps,
    	          renderLanes
    	        )
    	      );
    	    current = createFiberFromTypeAndProps(
    	      Component.type,
    	      null,
    	      nextProps,
    	      workInProgress,
    	      workInProgress.mode,
    	      renderLanes
    	    );
    	    current.ref = workInProgress.ref;
    	    current.return = workInProgress;
    	    return (workInProgress.child = current);
    	  }
    	  type = current.child;
    	  if (!checkScheduledUpdateOrContext(current, renderLanes)) {
    	    var prevProps = type.memoizedProps;
    	    Component = Component.compare;
    	    Component = null !== Component ? Component : shallowEqual;
    	    if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)
    	      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
    	  }
    	  workInProgress.flags |= 1;
    	  current = createWorkInProgress(type, nextProps);
    	  current.ref = workInProgress.ref;
    	  current.return = workInProgress;
    	  return (workInProgress.child = current);
    	}
    	function updateSimpleMemoComponent(
    	  current,
    	  workInProgress,
    	  Component,
    	  nextProps,
    	  renderLanes
    	) {
    	  if (null !== current) {
    	    var prevProps = current.memoizedProps;
    	    if (
    	      shallowEqual(prevProps, nextProps) &&
    	      current.ref === workInProgress.ref
    	    )
    	      if (
    	        ((didReceiveUpdate = false),
    	        (workInProgress.pendingProps = nextProps = prevProps),
    	        checkScheduledUpdateOrContext(current, renderLanes))
    	      )
    	        0 !== (current.flags & 131072) && (didReceiveUpdate = true);
    	      else
    	        return (
    	          (workInProgress.lanes = current.lanes),
    	          bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)
    	        );
    	  }
    	  return updateFunctionComponent(
    	    current,
    	    workInProgress,
    	    Component,
    	    nextProps,
    	    renderLanes
    	  );
    	}
    	function updateOffscreenComponent(current, workInProgress, renderLanes) {
    	  var nextProps = workInProgress.pendingProps,
    	    nextChildren = nextProps.children,
    	    prevState = null !== current ? current.memoizedState : null;
    	  if ("hidden" === nextProps.mode) {
    	    if (0 !== (workInProgress.flags & 128)) {
    	      nextProps =
    	        null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;
    	      if (null !== current) {
    	        nextChildren = workInProgress.child = current.child;
    	        for (prevState = 0; null !== nextChildren; )
    	          (prevState =
    	            prevState | nextChildren.lanes | nextChildren.childLanes),
    	            (nextChildren = nextChildren.sibling);
    	        workInProgress.childLanes = prevState & ~nextProps;
    	      } else (workInProgress.childLanes = 0), (workInProgress.child = null);
    	      return deferHiddenOffscreenComponent(
    	        current,
    	        workInProgress,
    	        nextProps,
    	        renderLanes
    	      );
    	    }
    	    if (0 !== (renderLanes & 536870912))
    	      (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),
    	        null !== current &&
    	          pushTransition(
    	            workInProgress,
    	            null !== prevState ? prevState.cachePool : null
    	          ),
    	        null !== prevState
    	          ? pushHiddenContext(workInProgress, prevState)
    	          : reuseHiddenContextOnStack(),
    	        pushOffscreenSuspenseHandler(workInProgress);
    	    else
    	      return (
    	        (workInProgress.lanes = workInProgress.childLanes = 536870912),
    	        deferHiddenOffscreenComponent(
    	          current,
    	          workInProgress,
    	          null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,
    	          renderLanes
    	        )
    	      );
    	  } else
    	    null !== prevState
    	      ? (pushTransition(workInProgress, prevState.cachePool),
    	        pushHiddenContext(workInProgress, prevState),
    	        reuseSuspenseHandlerOnStack(),
    	        (workInProgress.memoizedState = null))
    	      : (null !== current && pushTransition(workInProgress, null),
    	        reuseHiddenContextOnStack(),
    	        reuseSuspenseHandlerOnStack());
    	  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
    	  return workInProgress.child;
    	}
    	function deferHiddenOffscreenComponent(
    	  current,
    	  workInProgress,
    	  nextBaseLanes,
    	  renderLanes
    	) {
    	  var JSCompiler_inline_result = peekCacheFromPool();
    	  JSCompiler_inline_result =
    	    null === JSCompiler_inline_result
    	      ? null
    	      : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };
    	  workInProgress.memoizedState = {
    	    baseLanes: nextBaseLanes,
    	    cachePool: JSCompiler_inline_result
    	  };
    	  null !== current && pushTransition(workInProgress, null);
    	  reuseHiddenContextOnStack();
    	  pushOffscreenSuspenseHandler(workInProgress);
    	  null !== current &&
    	    propagateParentContextChanges(current, workInProgress, renderLanes, true);
    	  return null;
    	}
    	function markRef(current, workInProgress) {
    	  var ref = workInProgress.ref;
    	  if (null === ref)
    	    null !== current &&
    	      null !== current.ref &&
    	      (workInProgress.flags |= 4194816);
    	  else {
    	    if ("function" !== typeof ref && "object" !== typeof ref)
    	      throw Error(formatProdErrorMessage(284));
    	    if (null === current || current.ref !== ref)
    	      workInProgress.flags |= 4194816;
    	  }
    	}
    	function updateFunctionComponent(
    	  current,
    	  workInProgress,
    	  Component,
    	  nextProps,
    	  renderLanes
    	) {
    	  prepareToReadContext(workInProgress);
    	  Component = renderWithHooks(
    	    current,
    	    workInProgress,
    	    Component,
    	    nextProps,
    	    void 0,
    	    renderLanes
    	  );
    	  nextProps = checkDidRenderIdHook();
    	  if (null !== current && !didReceiveUpdate)
    	    return (
    	      bailoutHooks(current, workInProgress, renderLanes),
    	      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)
    	    );
    	  isHydrating && nextProps && pushMaterializedTreeId(workInProgress);
    	  workInProgress.flags |= 1;
    	  reconcileChildren(current, workInProgress, Component, renderLanes);
    	  return workInProgress.child;
    	}
    	function replayFunctionComponent(
    	  current,
    	  workInProgress,
    	  nextProps,
    	  Component,
    	  secondArg,
    	  renderLanes
    	) {
    	  prepareToReadContext(workInProgress);
    	  workInProgress.updateQueue = null;
    	  nextProps = renderWithHooksAgain(
    	    workInProgress,
    	    Component,
    	    nextProps,
    	    secondArg
    	  );
    	  finishRenderingHooks(current);
    	  Component = checkDidRenderIdHook();
    	  if (null !== current && !didReceiveUpdate)
    	    return (
    	      bailoutHooks(current, workInProgress, renderLanes),
    	      bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)
    	    );
    	  isHydrating && Component && pushMaterializedTreeId(workInProgress);
    	  workInProgress.flags |= 1;
    	  reconcileChildren(current, workInProgress, nextProps, renderLanes);
    	  return workInProgress.child;
    	}
    	function updateClassComponent(
    	  current,
    	  workInProgress,
    	  Component,
    	  nextProps,
    	  renderLanes
    	) {
    	  prepareToReadContext(workInProgress);
    	  if (null === workInProgress.stateNode) {
    	    var context = emptyContextObject,
    	      contextType = Component.contextType;
    	    "object" === typeof contextType &&
    	      null !== contextType &&
    	      (context = readContext(contextType));
    	    context = new Component(nextProps, context);
    	    workInProgress.memoizedState =
    	      null !== context.state && void 0 !== context.state ? context.state : null;
    	    context.updater = classComponentUpdater;
    	    workInProgress.stateNode = context;
    	    context._reactInternals = workInProgress;
    	    context = workInProgress.stateNode;
    	    context.props = nextProps;
    	    context.state = workInProgress.memoizedState;
    	    context.refs = {};
    	    initializeUpdateQueue(workInProgress);
    	    contextType = Component.contextType;
    	    context.context =
    	      "object" === typeof contextType && null !== contextType
    	        ? readContext(contextType)
    	        : emptyContextObject;
    	    context.state = workInProgress.memoizedState;
    	    contextType = Component.getDerivedStateFromProps;
    	    "function" === typeof contextType &&
    	      (applyDerivedStateFromProps(
    	        workInProgress,
    	        Component,
    	        contextType,
    	        nextProps
    	      ),
    	      (context.state = workInProgress.memoizedState));
    	    "function" === typeof Component.getDerivedStateFromProps ||
    	      "function" === typeof context.getSnapshotBeforeUpdate ||
    	      ("function" !== typeof context.UNSAFE_componentWillMount &&
    	        "function" !== typeof context.componentWillMount) ||
    	      ((contextType = context.state),
    	      "function" === typeof context.componentWillMount &&
    	        context.componentWillMount(),
    	      "function" === typeof context.UNSAFE_componentWillMount &&
    	        context.UNSAFE_componentWillMount(),
    	      contextType !== context.state &&
    	        classComponentUpdater.enqueueReplaceState(context, context.state, null),
    	      processUpdateQueue(workInProgress, nextProps, context, renderLanes),
    	      suspendIfUpdateReadFromEntangledAsyncAction(),
    	      (context.state = workInProgress.memoizedState));
    	    "function" === typeof context.componentDidMount &&
    	      (workInProgress.flags |= 4194308);
    	    nextProps = true;
    	  } else if (null === current) {
    	    context = workInProgress.stateNode;
    	    var unresolvedOldProps = workInProgress.memoizedProps,
    	      oldProps = resolveClassComponentProps(Component, unresolvedOldProps);
    	    context.props = oldProps;
    	    var oldContext = context.context,
    	      contextType$jscomp$0 = Component.contextType;
    	    contextType = emptyContextObject;
    	    "object" === typeof contextType$jscomp$0 &&
    	      null !== contextType$jscomp$0 &&
    	      (contextType = readContext(contextType$jscomp$0));
    	    var getDerivedStateFromProps = Component.getDerivedStateFromProps;
    	    contextType$jscomp$0 =
    	      "function" === typeof getDerivedStateFromProps ||
    	      "function" === typeof context.getSnapshotBeforeUpdate;
    	    unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;
    	    contextType$jscomp$0 ||
    	      ("function" !== typeof context.UNSAFE_componentWillReceiveProps &&
    	        "function" !== typeof context.componentWillReceiveProps) ||
    	      ((unresolvedOldProps || oldContext !== contextType) &&
    	        callComponentWillReceiveProps(
    	          workInProgress,
    	          context,
    	          nextProps,
    	          contextType
    	        ));
    	    hasForceUpdate = false;
    	    var oldState = workInProgress.memoizedState;
    	    context.state = oldState;
    	    processUpdateQueue(workInProgress, nextProps, context, renderLanes);
    	    suspendIfUpdateReadFromEntangledAsyncAction();
    	    oldContext = workInProgress.memoizedState;
    	    unresolvedOldProps || oldState !== oldContext || hasForceUpdate
    	      ? ("function" === typeof getDerivedStateFromProps &&
    	          (applyDerivedStateFromProps(
    	            workInProgress,
    	            Component,
    	            getDerivedStateFromProps,
    	            nextProps
    	          ),
    	          (oldContext = workInProgress.memoizedState)),
    	        (oldProps =
    	          hasForceUpdate ||
    	          checkShouldComponentUpdate(
    	            workInProgress,
    	            Component,
    	            oldProps,
    	            nextProps,
    	            oldState,
    	            oldContext,
    	            contextType
    	          ))
    	          ? (contextType$jscomp$0 ||
    	              ("function" !== typeof context.UNSAFE_componentWillMount &&
    	                "function" !== typeof context.componentWillMount) ||
    	              ("function" === typeof context.componentWillMount &&
    	                context.componentWillMount(),
    	              "function" === typeof context.UNSAFE_componentWillMount &&
    	                context.UNSAFE_componentWillMount()),
    	            "function" === typeof context.componentDidMount &&
    	              (workInProgress.flags |= 4194308))
    	          : ("function" === typeof context.componentDidMount &&
    	              (workInProgress.flags |= 4194308),
    	            (workInProgress.memoizedProps = nextProps),
    	            (workInProgress.memoizedState = oldContext)),
    	        (context.props = nextProps),
    	        (context.state = oldContext),
    	        (context.context = contextType),
    	        (nextProps = oldProps))
    	      : ("function" === typeof context.componentDidMount &&
    	          (workInProgress.flags |= 4194308),
    	        (nextProps = false));
    	  } else {
    	    context = workInProgress.stateNode;
    	    cloneUpdateQueue(current, workInProgress);
    	    contextType = workInProgress.memoizedProps;
    	    contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);
    	    context.props = contextType$jscomp$0;
    	    getDerivedStateFromProps = workInProgress.pendingProps;
    	    oldState = context.context;
    	    oldContext = Component.contextType;
    	    oldProps = emptyContextObject;
    	    "object" === typeof oldContext &&
    	      null !== oldContext &&
    	      (oldProps = readContext(oldContext));
    	    unresolvedOldProps = Component.getDerivedStateFromProps;
    	    (oldContext =
    	      "function" === typeof unresolvedOldProps ||
    	      "function" === typeof context.getSnapshotBeforeUpdate) ||
    	      ("function" !== typeof context.UNSAFE_componentWillReceiveProps &&
    	        "function" !== typeof context.componentWillReceiveProps) ||
    	      ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&
    	        callComponentWillReceiveProps(
    	          workInProgress,
    	          context,
    	          nextProps,
    	          oldProps
    	        ));
    	    hasForceUpdate = false;
    	    oldState = workInProgress.memoizedState;
    	    context.state = oldState;
    	    processUpdateQueue(workInProgress, nextProps, context, renderLanes);
    	    suspendIfUpdateReadFromEntangledAsyncAction();
    	    var newState = workInProgress.memoizedState;
    	    contextType !== getDerivedStateFromProps ||
    	    oldState !== newState ||
    	    hasForceUpdate ||
    	    (null !== current &&
    	      null !== current.dependencies &&
    	      checkIfContextChanged(current.dependencies))
    	      ? ("function" === typeof unresolvedOldProps &&
    	          (applyDerivedStateFromProps(
    	            workInProgress,
    	            Component,
    	            unresolvedOldProps,
    	            nextProps
    	          ),
    	          (newState = workInProgress.memoizedState)),
    	        (contextType$jscomp$0 =
    	          hasForceUpdate ||
    	          checkShouldComponentUpdate(
    	            workInProgress,
    	            Component,
    	            contextType$jscomp$0,
    	            nextProps,
    	            oldState,
    	            newState,
    	            oldProps
    	          ) ||
    	          (null !== current &&
    	            null !== current.dependencies &&
    	            checkIfContextChanged(current.dependencies)))
    	          ? (oldContext ||
    	              ("function" !== typeof context.UNSAFE_componentWillUpdate &&
    	                "function" !== typeof context.componentWillUpdate) ||
    	              ("function" === typeof context.componentWillUpdate &&
    	                context.componentWillUpdate(nextProps, newState, oldProps),
    	              "function" === typeof context.UNSAFE_componentWillUpdate &&
    	                context.UNSAFE_componentWillUpdate(
    	                  nextProps,
    	                  newState,
    	                  oldProps
    	                )),
    	            "function" === typeof context.componentDidUpdate &&
    	              (workInProgress.flags |= 4),
    	            "function" === typeof context.getSnapshotBeforeUpdate &&
    	              (workInProgress.flags |= 1024))
    	          : ("function" !== typeof context.componentDidUpdate ||
    	              (contextType === current.memoizedProps &&
    	                oldState === current.memoizedState) ||
    	              (workInProgress.flags |= 4),
    	            "function" !== typeof context.getSnapshotBeforeUpdate ||
    	              (contextType === current.memoizedProps &&
    	                oldState === current.memoizedState) ||
    	              (workInProgress.flags |= 1024),
    	            (workInProgress.memoizedProps = nextProps),
    	            (workInProgress.memoizedState = newState)),
    	        (context.props = nextProps),
    	        (context.state = newState),
    	        (context.context = oldProps),
    	        (nextProps = contextType$jscomp$0))
    	      : ("function" !== typeof context.componentDidUpdate ||
    	          (contextType === current.memoizedProps &&
    	            oldState === current.memoizedState) ||
    	          (workInProgress.flags |= 4),
    	        "function" !== typeof context.getSnapshotBeforeUpdate ||
    	          (contextType === current.memoizedProps &&
    	            oldState === current.memoizedState) ||
    	          (workInProgress.flags |= 1024),
    	        (nextProps = false));
    	  }
    	  context = nextProps;
    	  markRef(current, workInProgress);
    	  nextProps = 0 !== (workInProgress.flags & 128);
    	  context || nextProps
    	    ? ((context = workInProgress.stateNode),
    	      (Component =
    	        nextProps && "function" !== typeof Component.getDerivedStateFromError
    	          ? null
    	          : context.render()),
    	      (workInProgress.flags |= 1),
    	      null !== current && nextProps
    	        ? ((workInProgress.child = reconcileChildFibers(
    	            workInProgress,
    	            current.child,
    	            null,
    	            renderLanes
    	          )),
    	          (workInProgress.child = reconcileChildFibers(
    	            workInProgress,
    	            null,
    	            Component,
    	            renderLanes
    	          )))
    	        : reconcileChildren(current, workInProgress, Component, renderLanes),
    	      (workInProgress.memoizedState = context.state),
    	      (current = workInProgress.child))
    	    : (current = bailoutOnAlreadyFinishedWork(
    	        current,
    	        workInProgress,
    	        renderLanes
    	      ));
    	  return current;
    	}
    	function mountHostRootWithoutHydrating(
    	  current,
    	  workInProgress,
    	  nextChildren,
    	  renderLanes
    	) {
    	  resetHydrationState();
    	  workInProgress.flags |= 256;
    	  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
    	  return workInProgress.child;
    	}
    	var SUSPENDED_MARKER = {
    	  dehydrated: null,
    	  treeContext: null,
    	  retryLane: 0,
    	  hydrationErrors: null
    	};
    	function mountSuspenseOffscreenState(renderLanes) {
    	  return { baseLanes: renderLanes, cachePool: getSuspendedCache() };
    	}
    	function getRemainingWorkInPrimaryTree(
    	  current,
    	  primaryTreeDidDefer,
    	  renderLanes
    	) {
    	  current = null !== current ? current.childLanes & ~renderLanes : 0;
    	  primaryTreeDidDefer && (current |= workInProgressDeferredLane);
    	  return current;
    	}
    	function updateSuspenseComponent(current, workInProgress, renderLanes) {
    	  var nextProps = workInProgress.pendingProps,
    	    showFallback = false,
    	    didSuspend = 0 !== (workInProgress.flags & 128),
    	    JSCompiler_temp;
    	  (JSCompiler_temp = didSuspend) ||
    	    (JSCompiler_temp =
    	      null !== current && null === current.memoizedState
    	        ? false
    	        : 0 !== (suspenseStackCursor.current & 2));
    	  JSCompiler_temp && ((showFallback = true), (workInProgress.flags &= -129));
    	  JSCompiler_temp = 0 !== (workInProgress.flags & 32);
    	  workInProgress.flags &= -33;
    	  if (null === current) {
    	    if (isHydrating) {
    	      showFallback
    	        ? pushPrimaryTreeSuspenseHandler(workInProgress)
    	        : reuseSuspenseHandlerOnStack();
    	      if (isHydrating) {
    	        var nextInstance = nextHydratableInstance,
    	          JSCompiler_temp$jscomp$0;
    	        if ((JSCompiler_temp$jscomp$0 = nextInstance)) {
    	          c: {
    	            JSCompiler_temp$jscomp$0 = nextInstance;
    	            for (
    	              nextInstance = rootOrSingletonContext;
    	              8 !== JSCompiler_temp$jscomp$0.nodeType;

    	            ) {
    	              if (!nextInstance) {
    	                nextInstance = null;
    	                break c;
    	              }
    	              JSCompiler_temp$jscomp$0 = getNextHydratable(
    	                JSCompiler_temp$jscomp$0.nextSibling
    	              );
    	              if (null === JSCompiler_temp$jscomp$0) {
    	                nextInstance = null;
    	                break c;
    	              }
    	            }
    	            nextInstance = JSCompiler_temp$jscomp$0;
    	          }
    	          null !== nextInstance
    	            ? ((workInProgress.memoizedState = {
    	                dehydrated: nextInstance,
    	                treeContext:
    	                  null !== treeContextProvider
    	                    ? { id: treeContextId, overflow: treeContextOverflow }
    	                    : null,
    	                retryLane: 536870912,
    	                hydrationErrors: null
    	              }),
    	              (JSCompiler_temp$jscomp$0 = createFiberImplClass(
    	                18,
    	                null,
    	                null,
    	                0
    	              )),
    	              (JSCompiler_temp$jscomp$0.stateNode = nextInstance),
    	              (JSCompiler_temp$jscomp$0.return = workInProgress),
    	              (workInProgress.child = JSCompiler_temp$jscomp$0),
    	              (hydrationParentFiber = workInProgress),
    	              (nextHydratableInstance = null),
    	              (JSCompiler_temp$jscomp$0 = true))
    	            : (JSCompiler_temp$jscomp$0 = false);
    	        }
    	        JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);
    	      }
    	      nextInstance = workInProgress.memoizedState;
    	      if (
    	        null !== nextInstance &&
    	        ((nextInstance = nextInstance.dehydrated), null !== nextInstance)
    	      )
    	        return (
    	          isSuspenseInstanceFallback(nextInstance)
    	            ? (workInProgress.lanes = 32)
    	            : (workInProgress.lanes = 536870912),
    	          null
    	        );
    	      popSuspenseHandler(workInProgress);
    	    }
    	    nextInstance = nextProps.children;
    	    nextProps = nextProps.fallback;
    	    if (showFallback)
    	      return (
    	        reuseSuspenseHandlerOnStack(),
    	        (showFallback = workInProgress.mode),
    	        (nextInstance = mountWorkInProgressOffscreenFiber(
    	          { mode: "hidden", children: nextInstance },
    	          showFallback
    	        )),
    	        (nextProps = createFiberFromFragment(
    	          nextProps,
    	          showFallback,
    	          renderLanes,
    	          null
    	        )),
    	        (nextInstance.return = workInProgress),
    	        (nextProps.return = workInProgress),
    	        (nextInstance.sibling = nextProps),
    	        (workInProgress.child = nextInstance),
    	        (showFallback = workInProgress.child),
    	        (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),
    	        (showFallback.childLanes = getRemainingWorkInPrimaryTree(
    	          current,
    	          JSCompiler_temp,
    	          renderLanes
    	        )),
    	        (workInProgress.memoizedState = SUSPENDED_MARKER),
    	        nextProps
    	      );
    	    pushPrimaryTreeSuspenseHandler(workInProgress);
    	    return mountSuspensePrimaryChildren(workInProgress, nextInstance);
    	  }
    	  JSCompiler_temp$jscomp$0 = current.memoizedState;
    	  if (
    	    null !== JSCompiler_temp$jscomp$0 &&
    	    ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),
    	    null !== nextInstance)
    	  ) {
    	    if (didSuspend)
    	      workInProgress.flags & 256
    	        ? (pushPrimaryTreeSuspenseHandler(workInProgress),
    	          (workInProgress.flags &= -257),
    	          (workInProgress = retrySuspenseComponentWithoutHydrating(
    	            current,
    	            workInProgress,
    	            renderLanes
    	          )))
    	        : null !== workInProgress.memoizedState
    	          ? (reuseSuspenseHandlerOnStack(),
    	            (workInProgress.child = current.child),
    	            (workInProgress.flags |= 128),
    	            (workInProgress = null))
    	          : (reuseSuspenseHandlerOnStack(),
    	            (showFallback = nextProps.fallback),
    	            (nextInstance = workInProgress.mode),
    	            (nextProps = mountWorkInProgressOffscreenFiber(
    	              { mode: "visible", children: nextProps.children },
    	              nextInstance
    	            )),
    	            (showFallback = createFiberFromFragment(
    	              showFallback,
    	              nextInstance,
    	              renderLanes,
    	              null
    	            )),
    	            (showFallback.flags |= 2),
    	            (nextProps.return = workInProgress),
    	            (showFallback.return = workInProgress),
    	            (nextProps.sibling = showFallback),
    	            (workInProgress.child = nextProps),
    	            reconcileChildFibers(
    	              workInProgress,
    	              current.child,
    	              null,
    	              renderLanes
    	            ),
    	            (nextProps = workInProgress.child),
    	            (nextProps.memoizedState =
    	              mountSuspenseOffscreenState(renderLanes)),
    	            (nextProps.childLanes = getRemainingWorkInPrimaryTree(
    	              current,
    	              JSCompiler_temp,
    	              renderLanes
    	            )),
    	            (workInProgress.memoizedState = SUSPENDED_MARKER),
    	            (workInProgress = showFallback));
    	    else if (
    	      (pushPrimaryTreeSuspenseHandler(workInProgress),
    	      isSuspenseInstanceFallback(nextInstance))
    	    ) {
    	      JSCompiler_temp =
    	        nextInstance.nextSibling && nextInstance.nextSibling.dataset;
    	      if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;
    	      JSCompiler_temp = digest;
    	      nextProps = Error(formatProdErrorMessage(419));
    	      nextProps.stack = "";
    	      nextProps.digest = JSCompiler_temp;
    	      queueHydrationError({ value: nextProps, source: null, stack: null });
    	      workInProgress = retrySuspenseComponentWithoutHydrating(
    	        current,
    	        workInProgress,
    	        renderLanes
    	      );
    	    } else if (
    	      (didReceiveUpdate ||
    	        propagateParentContextChanges(current, workInProgress, renderLanes, false),
    	      (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),
    	      didReceiveUpdate || JSCompiler_temp)
    	    ) {
    	      JSCompiler_temp = workInProgressRoot;
    	      if (
    	        null !== JSCompiler_temp &&
    	        ((nextProps = renderLanes & -renderLanes),
    	        (nextProps =
    	          0 !== (nextProps & 42)
    	            ? 1
    	            : getBumpedLaneForHydrationByLane(nextProps)),
    	        (nextProps =
    	          0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))
    	            ? 0
    	            : nextProps),
    	        0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)
    	      )
    	        throw (
    	          ((JSCompiler_temp$jscomp$0.retryLane = nextProps),
    	          enqueueConcurrentRenderForLane(current, nextProps),
    	          scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),
    	          SelectiveHydrationException)
    	        );
    	      "$?" === nextInstance.data || renderDidSuspendDelayIfPossible();
    	      workInProgress = retrySuspenseComponentWithoutHydrating(
    	        current,
    	        workInProgress,
    	        renderLanes
    	      );
    	    } else
    	      "$?" === nextInstance.data
    	        ? ((workInProgress.flags |= 192),
    	          (workInProgress.child = current.child),
    	          (workInProgress = null))
    	        : ((current = JSCompiler_temp$jscomp$0.treeContext),
    	          (nextHydratableInstance = getNextHydratable(
    	            nextInstance.nextSibling
    	          )),
    	          (hydrationParentFiber = workInProgress),
    	          (isHydrating = true),
    	          (hydrationErrors = null),
    	          (rootOrSingletonContext = false),
    	          null !== current &&
    	            ((idStack[idStackIndex++] = treeContextId),
    	            (idStack[idStackIndex++] = treeContextOverflow),
    	            (idStack[idStackIndex++] = treeContextProvider),
    	            (treeContextId = current.id),
    	            (treeContextOverflow = current.overflow),
    	            (treeContextProvider = workInProgress)),
    	          (workInProgress = mountSuspensePrimaryChildren(
    	            workInProgress,
    	            nextProps.children
    	          )),
    	          (workInProgress.flags |= 4096));
    	    return workInProgress;
    	  }
    	  if (showFallback)
    	    return (
    	      reuseSuspenseHandlerOnStack(),
    	      (showFallback = nextProps.fallback),
    	      (nextInstance = workInProgress.mode),
    	      (JSCompiler_temp$jscomp$0 = current.child),
    	      (digest = JSCompiler_temp$jscomp$0.sibling),
    	      (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {
    	        mode: "hidden",
    	        children: nextProps.children
    	      })),
    	      (nextProps.subtreeFlags =
    	        JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),
    	      null !== digest
    	        ? (showFallback = createWorkInProgress(digest, showFallback))
    	        : ((showFallback = createFiberFromFragment(
    	            showFallback,
    	            nextInstance,
    	            renderLanes,
    	            null
    	          )),
    	          (showFallback.flags |= 2)),
    	      (showFallback.return = workInProgress),
    	      (nextProps.return = workInProgress),
    	      (nextProps.sibling = showFallback),
    	      (workInProgress.child = nextProps),
    	      (nextProps = showFallback),
    	      (showFallback = workInProgress.child),
    	      (nextInstance = current.child.memoizedState),
    	      null === nextInstance
    	        ? (nextInstance = mountSuspenseOffscreenState(renderLanes))
    	        : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),
    	          null !== JSCompiler_temp$jscomp$0
    	            ? ((digest = CacheContext._currentValue),
    	              (JSCompiler_temp$jscomp$0 =
    	                JSCompiler_temp$jscomp$0.parent !== digest
    	                  ? { parent: digest, pool: digest }
    	                  : JSCompiler_temp$jscomp$0))
    	            : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),
    	          (nextInstance = {
    	            baseLanes: nextInstance.baseLanes | renderLanes,
    	            cachePool: JSCompiler_temp$jscomp$0
    	          })),
    	      (showFallback.memoizedState = nextInstance),
    	      (showFallback.childLanes = getRemainingWorkInPrimaryTree(
    	        current,
    	        JSCompiler_temp,
    	        renderLanes
    	      )),
    	      (workInProgress.memoizedState = SUSPENDED_MARKER),
    	      nextProps
    	    );
    	  pushPrimaryTreeSuspenseHandler(workInProgress);
    	  renderLanes = current.child;
    	  current = renderLanes.sibling;
    	  renderLanes = createWorkInProgress(renderLanes, {
    	    mode: "visible",
    	    children: nextProps.children
    	  });
    	  renderLanes.return = workInProgress;
    	  renderLanes.sibling = null;
    	  null !== current &&
    	    ((JSCompiler_temp = workInProgress.deletions),
    	    null === JSCompiler_temp
    	      ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))
    	      : JSCompiler_temp.push(current));
    	  workInProgress.child = renderLanes;
    	  workInProgress.memoizedState = null;
    	  return renderLanes;
    	}
    	function mountSuspensePrimaryChildren(workInProgress, primaryChildren) {
    	  primaryChildren = mountWorkInProgressOffscreenFiber(
    	    { mode: "visible", children: primaryChildren },
    	    workInProgress.mode
    	  );
    	  primaryChildren.return = workInProgress;
    	  return (workInProgress.child = primaryChildren);
    	}
    	function mountWorkInProgressOffscreenFiber(offscreenProps, mode) {
    	  offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);
    	  offscreenProps.lanes = 0;
    	  offscreenProps.stateNode = {
    	    _visibility: 1,
    	    _pendingMarkers: null,
    	    _retryCache: null,
    	    _transitions: null
    	  };
    	  return offscreenProps;
    	}
    	function retrySuspenseComponentWithoutHydrating(
    	  current,
    	  workInProgress,
    	  renderLanes
    	) {
    	  reconcileChildFibers(workInProgress, current.child, null, renderLanes);
    	  current = mountSuspensePrimaryChildren(
    	    workInProgress,
    	    workInProgress.pendingProps.children
    	  );
    	  current.flags |= 2;
    	  workInProgress.memoizedState = null;
    	  return current;
    	}
    	function scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {
    	  fiber.lanes |= renderLanes;
    	  var alternate = fiber.alternate;
    	  null !== alternate && (alternate.lanes |= renderLanes);
    	  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);
    	}
    	function initSuspenseListRenderState(
    	  workInProgress,
    	  isBackwards,
    	  tail,
    	  lastContentRow,
    	  tailMode
    	) {
    	  var renderState = workInProgress.memoizedState;
    	  null === renderState
    	    ? (workInProgress.memoizedState = {
    	        isBackwards: isBackwards,
    	        rendering: null,
    	        renderingStartTime: 0,
    	        last: lastContentRow,
    	        tail: tail,
    	        tailMode: tailMode
    	      })
    	    : ((renderState.isBackwards = isBackwards),
    	      (renderState.rendering = null),
    	      (renderState.renderingStartTime = 0),
    	      (renderState.last = lastContentRow),
    	      (renderState.tail = tail),
    	      (renderState.tailMode = tailMode));
    	}
    	function updateSuspenseListComponent(current, workInProgress, renderLanes) {
    	  var nextProps = workInProgress.pendingProps,
    	    revealOrder = nextProps.revealOrder,
    	    tailMode = nextProps.tail;
    	  reconcileChildren(current, workInProgress, nextProps.children, renderLanes);
    	  nextProps = suspenseStackCursor.current;
    	  if (0 !== (nextProps & 2))
    	    (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);
    	  else {
    	    if (null !== current && 0 !== (current.flags & 128))
    	      a: for (current = workInProgress.child; null !== current; ) {
    	        if (13 === current.tag)
    	          null !== current.memoizedState &&
    	            scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);
    	        else if (19 === current.tag)
    	          scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);
    	        else if (null !== current.child) {
    	          current.child.return = current;
    	          current = current.child;
    	          continue;
    	        }
    	        if (current === workInProgress) break a;
    	        for (; null === current.sibling; ) {
    	          if (null === current.return || current.return === workInProgress)
    	            break a;
    	          current = current.return;
    	        }
    	        current.sibling.return = current.return;
    	        current = current.sibling;
    	      }
    	    nextProps &= 1;
    	  }
    	  push(suspenseStackCursor, nextProps);
    	  switch (revealOrder) {
    	    case "forwards":
    	      renderLanes = workInProgress.child;
    	      for (revealOrder = null; null !== renderLanes; )
    	        (current = renderLanes.alternate),
    	          null !== current &&
    	            null === findFirstSuspended(current) &&
    	            (revealOrder = renderLanes),
    	          (renderLanes = renderLanes.sibling);
    	      renderLanes = revealOrder;
    	      null === renderLanes
    	        ? ((revealOrder = workInProgress.child), (workInProgress.child = null))
    	        : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));
    	      initSuspenseListRenderState(
    	        workInProgress,
    	        false,
    	        revealOrder,
    	        renderLanes,
    	        tailMode
    	      );
    	      break;
    	    case "backwards":
    	      renderLanes = null;
    	      revealOrder = workInProgress.child;
    	      for (workInProgress.child = null; null !== revealOrder; ) {
    	        current = revealOrder.alternate;
    	        if (null !== current && null === findFirstSuspended(current)) {
    	          workInProgress.child = revealOrder;
    	          break;
    	        }
    	        current = revealOrder.sibling;
    	        revealOrder.sibling = renderLanes;
    	        renderLanes = revealOrder;
    	        revealOrder = current;
    	      }
    	      initSuspenseListRenderState(
    	        workInProgress,
    	        true,
    	        renderLanes,
    	        null,
    	        tailMode
    	      );
    	      break;
    	    case "together":
    	      initSuspenseListRenderState(workInProgress, false, null, null, void 0);
    	      break;
    	    default:
    	      workInProgress.memoizedState = null;
    	  }
    	  return workInProgress.child;
    	}
    	function bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {
    	  null !== current && (workInProgress.dependencies = current.dependencies);
    	  workInProgressRootSkippedLanes |= workInProgress.lanes;
    	  if (0 === (renderLanes & workInProgress.childLanes))
    	    if (null !== current) {
    	      if (
    	        (propagateParentContextChanges(
    	          current,
    	          workInProgress,
    	          renderLanes,
    	          false
    	        ),
    	        0 === (renderLanes & workInProgress.childLanes))
    	      )
    	        return null;
    	    } else return null;
    	  if (null !== current && workInProgress.child !== current.child)
    	    throw Error(formatProdErrorMessage(153));
    	  if (null !== workInProgress.child) {
    	    current = workInProgress.child;
    	    renderLanes = createWorkInProgress(current, current.pendingProps);
    	    workInProgress.child = renderLanes;
    	    for (renderLanes.return = workInProgress; null !== current.sibling; )
    	      (current = current.sibling),
    	        (renderLanes = renderLanes.sibling =
    	          createWorkInProgress(current, current.pendingProps)),
    	        (renderLanes.return = workInProgress);
    	    renderLanes.sibling = null;
    	  }
    	  return workInProgress.child;
    	}
    	function checkScheduledUpdateOrContext(current, renderLanes) {
    	  if (0 !== (current.lanes & renderLanes)) return true;
    	  current = current.dependencies;
    	  return null !== current && checkIfContextChanged(current) ? true : false;
    	}
    	function attemptEarlyBailoutIfNoScheduledUpdate(
    	  current,
    	  workInProgress,
    	  renderLanes
    	) {
    	  switch (workInProgress.tag) {
    	    case 3:
    	      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
    	      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);
    	      resetHydrationState();
    	      break;
    	    case 27:
    	    case 5:
    	      pushHostContext(workInProgress);
    	      break;
    	    case 4:
    	      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
    	      break;
    	    case 10:
    	      pushProvider(
    	        workInProgress,
    	        workInProgress.type,
    	        workInProgress.memoizedProps.value
    	      );
    	      break;
    	    case 13:
    	      var state = workInProgress.memoizedState;
    	      if (null !== state) {
    	        if (null !== state.dehydrated)
    	          return (
    	            pushPrimaryTreeSuspenseHandler(workInProgress),
    	            (workInProgress.flags |= 128),
    	            null
    	          );
    	        if (0 !== (renderLanes & workInProgress.child.childLanes))
    	          return updateSuspenseComponent(current, workInProgress, renderLanes);
    	        pushPrimaryTreeSuspenseHandler(workInProgress);
    	        current = bailoutOnAlreadyFinishedWork(
    	          current,
    	          workInProgress,
    	          renderLanes
    	        );
    	        return null !== current ? current.sibling : null;
    	      }
    	      pushPrimaryTreeSuspenseHandler(workInProgress);
    	      break;
    	    case 19:
    	      var didSuspendBefore = 0 !== (current.flags & 128);
    	      state = 0 !== (renderLanes & workInProgress.childLanes);
    	      state ||
    	        (propagateParentContextChanges(
    	          current,
    	          workInProgress,
    	          renderLanes,
    	          false
    	        ),
    	        (state = 0 !== (renderLanes & workInProgress.childLanes)));
    	      if (didSuspendBefore) {
    	        if (state)
    	          return updateSuspenseListComponent(
    	            current,
    	            workInProgress,
    	            renderLanes
    	          );
    	        workInProgress.flags |= 128;
    	      }
    	      didSuspendBefore = workInProgress.memoizedState;
    	      null !== didSuspendBefore &&
    	        ((didSuspendBefore.rendering = null),
    	        (didSuspendBefore.tail = null),
    	        (didSuspendBefore.lastEffect = null));
    	      push(suspenseStackCursor, suspenseStackCursor.current);
    	      if (state) break;
    	      else return null;
    	    case 22:
    	    case 23:
    	      return (
    	        (workInProgress.lanes = 0),
    	        updateOffscreenComponent(current, workInProgress, renderLanes)
    	      );
    	    case 24:
    	      pushProvider(workInProgress, CacheContext, current.memoizedState.cache);
    	  }
    	  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
    	}
    	function beginWork(current, workInProgress, renderLanes) {
    	  if (null !== current)
    	    if (current.memoizedProps !== workInProgress.pendingProps)
    	      didReceiveUpdate = true;
    	    else {
    	      if (
    	        !checkScheduledUpdateOrContext(current, renderLanes) &&
    	        0 === (workInProgress.flags & 128)
    	      )
    	        return (
    	          (didReceiveUpdate = false),
    	          attemptEarlyBailoutIfNoScheduledUpdate(
    	            current,
    	            workInProgress,
    	            renderLanes
    	          )
    	        );
    	      didReceiveUpdate = 0 !== (current.flags & 131072) ? true : false;
    	    }
    	  else
    	    (didReceiveUpdate = false),
    	      isHydrating &&
    	        0 !== (workInProgress.flags & 1048576) &&
    	        pushTreeId(workInProgress, treeForkCount, workInProgress.index);
    	  workInProgress.lanes = 0;
    	  switch (workInProgress.tag) {
    	    case 16:
    	      a: {
    	        current = workInProgress.pendingProps;
    	        var lazyComponent = workInProgress.elementType,
    	          init = lazyComponent._init;
    	        lazyComponent = init(lazyComponent._payload);
    	        workInProgress.type = lazyComponent;
    	        if ("function" === typeof lazyComponent)
    	          shouldConstruct(lazyComponent)
    	            ? ((current = resolveClassComponentProps(lazyComponent, current)),
    	              (workInProgress.tag = 1),
    	              (workInProgress = updateClassComponent(
    	                null,
    	                workInProgress,
    	                lazyComponent,
    	                current,
    	                renderLanes
    	              )))
    	            : ((workInProgress.tag = 0),
    	              (workInProgress = updateFunctionComponent(
    	                null,
    	                workInProgress,
    	                lazyComponent,
    	                current,
    	                renderLanes
    	              )));
    	        else {
    	          if (void 0 !== lazyComponent && null !== lazyComponent)
    	            if (
    	              ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)
    	            ) {
    	              workInProgress.tag = 11;
    	              workInProgress = updateForwardRef(
    	                null,
    	                workInProgress,
    	                lazyComponent,
    	                current,
    	                renderLanes
    	              );
    	              break a;
    	            } else if (init === REACT_MEMO_TYPE) {
    	              workInProgress.tag = 14;
    	              workInProgress = updateMemoComponent(
    	                null,
    	                workInProgress,
    	                lazyComponent,
    	                current,
    	                renderLanes
    	              );
    	              break a;
    	            }
    	          workInProgress =
    	            getComponentNameFromType(lazyComponent) || lazyComponent;
    	          throw Error(formatProdErrorMessage(306, workInProgress, ""));
    	        }
    	      }
    	      return workInProgress;
    	    case 0:
    	      return updateFunctionComponent(
    	        current,
    	        workInProgress,
    	        workInProgress.type,
    	        workInProgress.pendingProps,
    	        renderLanes
    	      );
    	    case 1:
    	      return (
    	        (lazyComponent = workInProgress.type),
    	        (init = resolveClassComponentProps(
    	          lazyComponent,
    	          workInProgress.pendingProps
    	        )),
    	        updateClassComponent(
    	          current,
    	          workInProgress,
    	          lazyComponent,
    	          init,
    	          renderLanes
    	        )
    	      );
    	    case 3:
    	      a: {
    	        pushHostContainer(
    	          workInProgress,
    	          workInProgress.stateNode.containerInfo
    	        );
    	        if (null === current) throw Error(formatProdErrorMessage(387));
    	        lazyComponent = workInProgress.pendingProps;
    	        var prevState = workInProgress.memoizedState;
    	        init = prevState.element;
    	        cloneUpdateQueue(current, workInProgress);
    	        processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);
    	        var nextState = workInProgress.memoizedState;
    	        lazyComponent = nextState.cache;
    	        pushProvider(workInProgress, CacheContext, lazyComponent);
    	        lazyComponent !== prevState.cache &&
    	          propagateContextChanges(
    	            workInProgress,
    	            [CacheContext],
    	            renderLanes,
    	            true
    	          );
    	        suspendIfUpdateReadFromEntangledAsyncAction();
    	        lazyComponent = nextState.element;
    	        if (prevState.isDehydrated)
    	          if (
    	            ((prevState = {
    	              element: lazyComponent,
    	              isDehydrated: false,
    	              cache: nextState.cache
    	            }),
    	            (workInProgress.updateQueue.baseState = prevState),
    	            (workInProgress.memoizedState = prevState),
    	            workInProgress.flags & 256)
    	          ) {
    	            workInProgress = mountHostRootWithoutHydrating(
    	              current,
    	              workInProgress,
    	              lazyComponent,
    	              renderLanes
    	            );
    	            break a;
    	          } else if (lazyComponent !== init) {
    	            init = createCapturedValueAtFiber(
    	              Error(formatProdErrorMessage(424)),
    	              workInProgress
    	            );
    	            queueHydrationError(init);
    	            workInProgress = mountHostRootWithoutHydrating(
    	              current,
    	              workInProgress,
    	              lazyComponent,
    	              renderLanes
    	            );
    	            break a;
    	          } else {
    	            current = workInProgress.stateNode.containerInfo;
    	            switch (current.nodeType) {
    	              case 9:
    	                current = current.body;
    	                break;
    	              default:
    	                current =
    	                  "HTML" === current.nodeName
    	                    ? current.ownerDocument.body
    	                    : current;
    	            }
    	            nextHydratableInstance = getNextHydratable(current.firstChild);
    	            hydrationParentFiber = workInProgress;
    	            isHydrating = true;
    	            hydrationErrors = null;
    	            rootOrSingletonContext = true;
    	            renderLanes = mountChildFibers(
    	              workInProgress,
    	              null,
    	              lazyComponent,
    	              renderLanes
    	            );
    	            for (workInProgress.child = renderLanes; renderLanes; )
    	              (renderLanes.flags = (renderLanes.flags & -3) | 4096),
    	                (renderLanes = renderLanes.sibling);
    	          }
    	        else {
    	          resetHydrationState();
    	          if (lazyComponent === init) {
    	            workInProgress = bailoutOnAlreadyFinishedWork(
    	              current,
    	              workInProgress,
    	              renderLanes
    	            );
    	            break a;
    	          }
    	          reconcileChildren(
    	            current,
    	            workInProgress,
    	            lazyComponent,
    	            renderLanes
    	          );
    	        }
    	        workInProgress = workInProgress.child;
    	      }
    	      return workInProgress;
    	    case 26:
    	      return (
    	        markRef(current, workInProgress),
    	        null === current
    	          ? (renderLanes = getResource(
    	              workInProgress.type,
    	              null,
    	              workInProgress.pendingProps,
    	              null
    	            ))
    	            ? (workInProgress.memoizedState = renderLanes)
    	            : isHydrating ||
    	              ((renderLanes = workInProgress.type),
    	              (current = workInProgress.pendingProps),
    	              (lazyComponent = getOwnerDocumentFromRootContainer(
    	                rootInstanceStackCursor.current
    	              ).createElement(renderLanes)),
    	              (lazyComponent[internalInstanceKey] = workInProgress),
    	              (lazyComponent[internalPropsKey] = current),
    	              setInitialProperties(lazyComponent, renderLanes, current),
    	              markNodeAsHoistable(lazyComponent),
    	              (workInProgress.stateNode = lazyComponent))
    	          : (workInProgress.memoizedState = getResource(
    	              workInProgress.type,
    	              current.memoizedProps,
    	              workInProgress.pendingProps,
    	              current.memoizedState
    	            )),
    	        null
    	      );
    	    case 27:
    	      return (
    	        pushHostContext(workInProgress),
    	        null === current &&
    	          isHydrating &&
    	          ((lazyComponent = workInProgress.stateNode =
    	            resolveSingletonInstance(
    	              workInProgress.type,
    	              workInProgress.pendingProps,
    	              rootInstanceStackCursor.current
    	            )),
    	          (hydrationParentFiber = workInProgress),
    	          (rootOrSingletonContext = true),
    	          (init = nextHydratableInstance),
    	          isSingletonScope(workInProgress.type)
    	            ? ((previousHydratableOnEnteringScopedSingleton = init),
    	              (nextHydratableInstance = getNextHydratable(
    	                lazyComponent.firstChild
    	              )))
    	            : (nextHydratableInstance = init)),
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          workInProgress.pendingProps.children,
    	          renderLanes
    	        ),
    	        markRef(current, workInProgress),
    	        null === current && (workInProgress.flags |= 4194304),
    	        workInProgress.child
    	      );
    	    case 5:
    	      if (null === current && isHydrating) {
    	        if ((init = lazyComponent = nextHydratableInstance))
    	          (lazyComponent = canHydrateInstance(
    	            lazyComponent,
    	            workInProgress.type,
    	            workInProgress.pendingProps,
    	            rootOrSingletonContext
    	          )),
    	            null !== lazyComponent
    	              ? ((workInProgress.stateNode = lazyComponent),
    	                (hydrationParentFiber = workInProgress),
    	                (nextHydratableInstance = getNextHydratable(
    	                  lazyComponent.firstChild
    	                )),
    	                (rootOrSingletonContext = false),
    	                (init = true))
    	              : (init = false);
    	        init || throwOnHydrationMismatch(workInProgress);
    	      }
    	      pushHostContext(workInProgress);
    	      init = workInProgress.type;
    	      prevState = workInProgress.pendingProps;
    	      nextState = null !== current ? current.memoizedProps : null;
    	      lazyComponent = prevState.children;
    	      shouldSetTextContent(init, prevState)
    	        ? (lazyComponent = null)
    	        : null !== nextState &&
    	          shouldSetTextContent(init, nextState) &&
    	          (workInProgress.flags |= 32);
    	      null !== workInProgress.memoizedState &&
    	        ((init = renderWithHooks(
    	          current,
    	          workInProgress,
    	          TransitionAwareHostComponent,
    	          null,
    	          null,
    	          renderLanes
    	        )),
    	        (HostTransitionContext._currentValue = init));
    	      markRef(current, workInProgress);
    	      reconcileChildren(current, workInProgress, lazyComponent, renderLanes);
    	      return workInProgress.child;
    	    case 6:
    	      if (null === current && isHydrating) {
    	        if ((current = renderLanes = nextHydratableInstance))
    	          (renderLanes = canHydrateTextInstance(
    	            renderLanes,
    	            workInProgress.pendingProps,
    	            rootOrSingletonContext
    	          )),
    	            null !== renderLanes
    	              ? ((workInProgress.stateNode = renderLanes),
    	                (hydrationParentFiber = workInProgress),
    	                (nextHydratableInstance = null),
    	                (current = true))
    	              : (current = false);
    	        current || throwOnHydrationMismatch(workInProgress);
    	      }
    	      return null;
    	    case 13:
    	      return updateSuspenseComponent(current, workInProgress, renderLanes);
    	    case 4:
    	      return (
    	        pushHostContainer(
    	          workInProgress,
    	          workInProgress.stateNode.containerInfo
    	        ),
    	        (lazyComponent = workInProgress.pendingProps),
    	        null === current
    	          ? (workInProgress.child = reconcileChildFibers(
    	              workInProgress,
    	              null,
    	              lazyComponent,
    	              renderLanes
    	            ))
    	          : reconcileChildren(
    	              current,
    	              workInProgress,
    	              lazyComponent,
    	              renderLanes
    	            ),
    	        workInProgress.child
    	      );
    	    case 11:
    	      return updateForwardRef(
    	        current,
    	        workInProgress,
    	        workInProgress.type,
    	        workInProgress.pendingProps,
    	        renderLanes
    	      );
    	    case 7:
    	      return (
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          workInProgress.pendingProps,
    	          renderLanes
    	        ),
    	        workInProgress.child
    	      );
    	    case 8:
    	      return (
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          workInProgress.pendingProps.children,
    	          renderLanes
    	        ),
    	        workInProgress.child
    	      );
    	    case 12:
    	      return (
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          workInProgress.pendingProps.children,
    	          renderLanes
    	        ),
    	        workInProgress.child
    	      );
    	    case 10:
    	      return (
    	        (lazyComponent = workInProgress.pendingProps),
    	        pushProvider(workInProgress, workInProgress.type, lazyComponent.value),
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          lazyComponent.children,
    	          renderLanes
    	        ),
    	        workInProgress.child
    	      );
    	    case 9:
    	      return (
    	        (init = workInProgress.type._context),
    	        (lazyComponent = workInProgress.pendingProps.children),
    	        prepareToReadContext(workInProgress),
    	        (init = readContext(init)),
    	        (lazyComponent = lazyComponent(init)),
    	        (workInProgress.flags |= 1),
    	        reconcileChildren(current, workInProgress, lazyComponent, renderLanes),
    	        workInProgress.child
    	      );
    	    case 14:
    	      return updateMemoComponent(
    	        current,
    	        workInProgress,
    	        workInProgress.type,
    	        workInProgress.pendingProps,
    	        renderLanes
    	      );
    	    case 15:
    	      return updateSimpleMemoComponent(
    	        current,
    	        workInProgress,
    	        workInProgress.type,
    	        workInProgress.pendingProps,
    	        renderLanes
    	      );
    	    case 19:
    	      return updateSuspenseListComponent(current, workInProgress, renderLanes);
    	    case 31:
    	      return (
    	        (lazyComponent = workInProgress.pendingProps),
    	        (renderLanes = workInProgress.mode),
    	        (lazyComponent = {
    	          mode: lazyComponent.mode,
    	          children: lazyComponent.children
    	        }),
    	        null === current
    	          ? ((renderLanes = mountWorkInProgressOffscreenFiber(
    	              lazyComponent,
    	              renderLanes
    	            )),
    	            (renderLanes.ref = workInProgress.ref),
    	            (workInProgress.child = renderLanes),
    	            (renderLanes.return = workInProgress),
    	            (workInProgress = renderLanes))
    	          : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),
    	            (renderLanes.ref = workInProgress.ref),
    	            (workInProgress.child = renderLanes),
    	            (renderLanes.return = workInProgress),
    	            (workInProgress = renderLanes)),
    	        workInProgress
    	      );
    	    case 22:
    	      return updateOffscreenComponent(current, workInProgress, renderLanes);
    	    case 24:
    	      return (
    	        prepareToReadContext(workInProgress),
    	        (lazyComponent = readContext(CacheContext)),
    	        null === current
    	          ? ((init = peekCacheFromPool()),
    	            null === init &&
    	              ((init = workInProgressRoot),
    	              (prevState = createCache()),
    	              (init.pooledCache = prevState),
    	              prevState.refCount++,
    	              null !== prevState && (init.pooledCacheLanes |= renderLanes),
    	              (init = prevState)),
    	            (workInProgress.memoizedState = {
    	              parent: lazyComponent,
    	              cache: init
    	            }),
    	            initializeUpdateQueue(workInProgress),
    	            pushProvider(workInProgress, CacheContext, init))
    	          : (0 !== (current.lanes & renderLanes) &&
    	              (cloneUpdateQueue(current, workInProgress),
    	              processUpdateQueue(workInProgress, null, null, renderLanes),
    	              suspendIfUpdateReadFromEntangledAsyncAction()),
    	            (init = current.memoizedState),
    	            (prevState = workInProgress.memoizedState),
    	            init.parent !== lazyComponent
    	              ? ((init = { parent: lazyComponent, cache: lazyComponent }),
    	                (workInProgress.memoizedState = init),
    	                0 === workInProgress.lanes &&
    	                  (workInProgress.memoizedState =
    	                    workInProgress.updateQueue.baseState =
    	                      init),
    	                pushProvider(workInProgress, CacheContext, lazyComponent))
    	              : ((lazyComponent = prevState.cache),
    	                pushProvider(workInProgress, CacheContext, lazyComponent),
    	                lazyComponent !== init.cache &&
    	                  propagateContextChanges(
    	                    workInProgress,
    	                    [CacheContext],
    	                    renderLanes,
    	                    true
    	                  ))),
    	        reconcileChildren(
    	          current,
    	          workInProgress,
    	          workInProgress.pendingProps.children,
    	          renderLanes
    	        ),
    	        workInProgress.child
    	      );
    	    case 29:
    	      throw workInProgress.pendingProps;
    	  }
    	  throw Error(formatProdErrorMessage(156, workInProgress.tag));
    	}
    	function markUpdate(workInProgress) {
    	  workInProgress.flags |= 4;
    	}
    	function preloadResourceAndSuspendIfNeeded(workInProgress, resource) {
    	  if ("stylesheet" !== resource.type || 0 !== (resource.state.loading & 4))
    	    workInProgress.flags &= -16777217;
    	  else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {
    	    resource = suspenseHandlerStackCursor.current;
    	    if (
    	      null !== resource &&
    	      ((workInProgressRootRenderLanes & 4194048) ===
    	      workInProgressRootRenderLanes
    	        ? null !== shellBoundary
    	        : ((workInProgressRootRenderLanes & 62914560) !==
    	            workInProgressRootRenderLanes &&
    	            0 === (workInProgressRootRenderLanes & 536870912)) ||
    	          resource !== shellBoundary)
    	    )
    	      throw (
    	        ((suspendedThenable = noopSuspenseyCommitThenable),
    	        SuspenseyCommitException)
    	      );
    	    workInProgress.flags |= 8192;
    	  }
    	}
    	function scheduleRetryEffect(workInProgress, retryQueue) {
    	  null !== retryQueue && (workInProgress.flags |= 4);
    	  workInProgress.flags & 16384 &&
    	    ((retryQueue =
    	      22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),
    	    (workInProgress.lanes |= retryQueue),
    	    (workInProgressSuspendedRetryLanes |= retryQueue));
    	}
    	function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
    	  if (!isHydrating)
    	    switch (renderState.tailMode) {
    	      case "hidden":
    	        hasRenderedATailFallback = renderState.tail;
    	        for (var lastTailNode = null; null !== hasRenderedATailFallback; )
    	          null !== hasRenderedATailFallback.alternate &&
    	            (lastTailNode = hasRenderedATailFallback),
    	            (hasRenderedATailFallback = hasRenderedATailFallback.sibling);
    	        null === lastTailNode
    	          ? (renderState.tail = null)
    	          : (lastTailNode.sibling = null);
    	        break;
    	      case "collapsed":
    	        lastTailNode = renderState.tail;
    	        for (var lastTailNode$113 = null; null !== lastTailNode; )
    	          null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),
    	            (lastTailNode = lastTailNode.sibling);
    	        null === lastTailNode$113
    	          ? hasRenderedATailFallback || null === renderState.tail
    	            ? (renderState.tail = null)
    	            : (renderState.tail.sibling = null)
    	          : (lastTailNode$113.sibling = null);
    	    }
    	}
    	function bubbleProperties(completedWork) {
    	  var didBailout =
    	      null !== completedWork.alternate &&
    	      completedWork.alternate.child === completedWork.child,
    	    newChildLanes = 0,
    	    subtreeFlags = 0;
    	  if (didBailout)
    	    for (var child$114 = completedWork.child; null !== child$114; )
    	      (newChildLanes |= child$114.lanes | child$114.childLanes),
    	        (subtreeFlags |= child$114.subtreeFlags & 65011712),
    	        (subtreeFlags |= child$114.flags & 65011712),
    	        (child$114.return = completedWork),
    	        (child$114 = child$114.sibling);
    	  else
    	    for (child$114 = completedWork.child; null !== child$114; )
    	      (newChildLanes |= child$114.lanes | child$114.childLanes),
    	        (subtreeFlags |= child$114.subtreeFlags),
    	        (subtreeFlags |= child$114.flags),
    	        (child$114.return = completedWork),
    	        (child$114 = child$114.sibling);
    	  completedWork.subtreeFlags |= subtreeFlags;
    	  completedWork.childLanes = newChildLanes;
    	  return didBailout;
    	}
    	function completeWork(current, workInProgress, renderLanes) {
    	  var newProps = workInProgress.pendingProps;
    	  popTreeContext(workInProgress);
    	  switch (workInProgress.tag) {
    	    case 31:
    	    case 16:
    	    case 15:
    	    case 0:
    	    case 11:
    	    case 7:
    	    case 8:
    	    case 12:
    	    case 9:
    	    case 14:
    	      return bubbleProperties(workInProgress), null;
    	    case 1:
    	      return bubbleProperties(workInProgress), null;
    	    case 3:
    	      renderLanes = workInProgress.stateNode;
    	      newProps = null;
    	      null !== current && (newProps = current.memoizedState.cache);
    	      workInProgress.memoizedState.cache !== newProps &&
    	        (workInProgress.flags |= 2048);
    	      popProvider(CacheContext);
    	      popHostContainer();
    	      renderLanes.pendingContext &&
    	        ((renderLanes.context = renderLanes.pendingContext),
    	        (renderLanes.pendingContext = null));
    	      if (null === current || null === current.child)
    	        popHydrationState(workInProgress)
    	          ? markUpdate(workInProgress)
    	          : null === current ||
    	            (current.memoizedState.isDehydrated &&
    	              0 === (workInProgress.flags & 256)) ||
    	            ((workInProgress.flags |= 1024),
    	            upgradeHydrationErrorsToRecoverable());
    	      bubbleProperties(workInProgress);
    	      return null;
    	    case 26:
    	      return (
    	        (renderLanes = workInProgress.memoizedState),
    	        null === current
    	          ? (markUpdate(workInProgress),
    	            null !== renderLanes
    	              ? (bubbleProperties(workInProgress),
    	                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))
    	              : (bubbleProperties(workInProgress),
    	                (workInProgress.flags &= -16777217)))
    	          : renderLanes
    	            ? renderLanes !== current.memoizedState
    	              ? (markUpdate(workInProgress),
    	                bubbleProperties(workInProgress),
    	                preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))
    	              : (bubbleProperties(workInProgress),
    	                (workInProgress.flags &= -16777217))
    	            : (current.memoizedProps !== newProps && markUpdate(workInProgress),
    	              bubbleProperties(workInProgress),
    	              (workInProgress.flags &= -16777217)),
    	        null
    	      );
    	    case 27:
    	      popHostContext(workInProgress);
    	      renderLanes = rootInstanceStackCursor.current;
    	      var type = workInProgress.type;
    	      if (null !== current && null != workInProgress.stateNode)
    	        current.memoizedProps !== newProps && markUpdate(workInProgress);
    	      else {
    	        if (!newProps) {
    	          if (null === workInProgress.stateNode)
    	            throw Error(formatProdErrorMessage(166));
    	          bubbleProperties(workInProgress);
    	          return null;
    	        }
    	        current = contextStackCursor.current;
    	        popHydrationState(workInProgress)
    	          ? prepareToHydrateHostInstance(workInProgress)
    	          : ((current = resolveSingletonInstance(type, newProps, renderLanes)),
    	            (workInProgress.stateNode = current),
    	            markUpdate(workInProgress));
    	      }
    	      bubbleProperties(workInProgress);
    	      return null;
    	    case 5:
    	      popHostContext(workInProgress);
    	      renderLanes = workInProgress.type;
    	      if (null !== current && null != workInProgress.stateNode)
    	        current.memoizedProps !== newProps && markUpdate(workInProgress);
    	      else {
    	        if (!newProps) {
    	          if (null === workInProgress.stateNode)
    	            throw Error(formatProdErrorMessage(166));
    	          bubbleProperties(workInProgress);
    	          return null;
    	        }
    	        current = contextStackCursor.current;
    	        if (popHydrationState(workInProgress))
    	          prepareToHydrateHostInstance(workInProgress);
    	        else {
    	          type = getOwnerDocumentFromRootContainer(
    	            rootInstanceStackCursor.current
    	          );
    	          switch (current) {
    	            case 1:
    	              current = type.createElementNS(
    	                "http://www.w3.org/2000/svg",
    	                renderLanes
    	              );
    	              break;
    	            case 2:
    	              current = type.createElementNS(
    	                "http://www.w3.org/1998/Math/MathML",
    	                renderLanes
    	              );
    	              break;
    	            default:
    	              switch (renderLanes) {
    	                case "svg":
    	                  current = type.createElementNS(
    	                    "http://www.w3.org/2000/svg",
    	                    renderLanes
    	                  );
    	                  break;
    	                case "math":
    	                  current = type.createElementNS(
    	                    "http://www.w3.org/1998/Math/MathML",
    	                    renderLanes
    	                  );
    	                  break;
    	                case "script":
    	                  current = type.createElement("div");
    	                  current.innerHTML = "<script>\x3c/script>";
    	                  current = current.removeChild(current.firstChild);
    	                  break;
    	                case "select":
    	                  current =
    	                    "string" === typeof newProps.is
    	                      ? type.createElement("select", { is: newProps.is })
    	                      : type.createElement("select");
    	                  newProps.multiple
    	                    ? (current.multiple = true)
    	                    : newProps.size && (current.size = newProps.size);
    	                  break;
    	                default:
    	                  current =
    	                    "string" === typeof newProps.is
    	                      ? type.createElement(renderLanes, { is: newProps.is })
    	                      : type.createElement(renderLanes);
    	              }
    	          }
    	          current[internalInstanceKey] = workInProgress;
    	          current[internalPropsKey] = newProps;
    	          a: for (type = workInProgress.child; null !== type; ) {
    	            if (5 === type.tag || 6 === type.tag)
    	              current.appendChild(type.stateNode);
    	            else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {
    	              type.child.return = type;
    	              type = type.child;
    	              continue;
    	            }
    	            if (type === workInProgress) break a;
    	            for (; null === type.sibling; ) {
    	              if (null === type.return || type.return === workInProgress)
    	                break a;
    	              type = type.return;
    	            }
    	            type.sibling.return = type.return;
    	            type = type.sibling;
    	          }
    	          workInProgress.stateNode = current;
    	          a: switch (
    	            (setInitialProperties(current, renderLanes, newProps), renderLanes)
    	          ) {
    	            case "button":
    	            case "input":
    	            case "select":
    	            case "textarea":
    	              current = !!newProps.autoFocus;
    	              break a;
    	            case "img":
    	              current = true;
    	              break a;
    	            default:
    	              current = false;
    	          }
    	          current && markUpdate(workInProgress);
    	        }
    	      }
    	      bubbleProperties(workInProgress);
    	      workInProgress.flags &= -16777217;
    	      return null;
    	    case 6:
    	      if (current && null != workInProgress.stateNode)
    	        current.memoizedProps !== newProps && markUpdate(workInProgress);
    	      else {
    	        if ("string" !== typeof newProps && null === workInProgress.stateNode)
    	          throw Error(formatProdErrorMessage(166));
    	        current = rootInstanceStackCursor.current;
    	        if (popHydrationState(workInProgress)) {
    	          current = workInProgress.stateNode;
    	          renderLanes = workInProgress.memoizedProps;
    	          newProps = null;
    	          type = hydrationParentFiber;
    	          if (null !== type)
    	            switch (type.tag) {
    	              case 27:
    	              case 5:
    	                newProps = type.memoizedProps;
    	            }
    	          current[internalInstanceKey] = workInProgress;
    	          current =
    	            current.nodeValue === renderLanes ||
    	            (null !== newProps && true === newProps.suppressHydrationWarning) ||
    	            checkForUnmatchedText(current.nodeValue, renderLanes)
    	              ? true
    	              : false;
    	          current || throwOnHydrationMismatch(workInProgress);
    	        } else
    	          (current =
    	            getOwnerDocumentFromRootContainer(current).createTextNode(
    	              newProps
    	            )),
    	            (current[internalInstanceKey] = workInProgress),
    	            (workInProgress.stateNode = current);
    	      }
    	      bubbleProperties(workInProgress);
    	      return null;
    	    case 13:
    	      newProps = workInProgress.memoizedState;
    	      if (
    	        null === current ||
    	        (null !== current.memoizedState &&
    	          null !== current.memoizedState.dehydrated)
    	      ) {
    	        type = popHydrationState(workInProgress);
    	        if (null !== newProps && null !== newProps.dehydrated) {
    	          if (null === current) {
    	            if (!type) throw Error(formatProdErrorMessage(318));
    	            type = workInProgress.memoizedState;
    	            type = null !== type ? type.dehydrated : null;
    	            if (!type) throw Error(formatProdErrorMessage(317));
    	            type[internalInstanceKey] = workInProgress;
    	          } else
    	            resetHydrationState(),
    	              0 === (workInProgress.flags & 128) &&
    	                (workInProgress.memoizedState = null),
    	              (workInProgress.flags |= 4);
    	          bubbleProperties(workInProgress);
    	          type = false;
    	        } else
    	          (type = upgradeHydrationErrorsToRecoverable()),
    	            null !== current &&
    	              null !== current.memoizedState &&
    	              (current.memoizedState.hydrationErrors = type),
    	            (type = true);
    	        if (!type) {
    	          if (workInProgress.flags & 256)
    	            return popSuspenseHandler(workInProgress), workInProgress;
    	          popSuspenseHandler(workInProgress);
    	          return null;
    	        }
    	      }
    	      popSuspenseHandler(workInProgress);
    	      if (0 !== (workInProgress.flags & 128))
    	        return (workInProgress.lanes = renderLanes), workInProgress;
    	      renderLanes = null !== newProps;
    	      current = null !== current && null !== current.memoizedState;
    	      if (renderLanes) {
    	        newProps = workInProgress.child;
    	        type = null;
    	        null !== newProps.alternate &&
    	          null !== newProps.alternate.memoizedState &&
    	          null !== newProps.alternate.memoizedState.cachePool &&
    	          (type = newProps.alternate.memoizedState.cachePool.pool);
    	        var cache$127 = null;
    	        null !== newProps.memoizedState &&
    	          null !== newProps.memoizedState.cachePool &&
    	          (cache$127 = newProps.memoizedState.cachePool.pool);
    	        cache$127 !== type && (newProps.flags |= 2048);
    	      }
    	      renderLanes !== current &&
    	        renderLanes &&
    	        (workInProgress.child.flags |= 8192);
    	      scheduleRetryEffect(workInProgress, workInProgress.updateQueue);
    	      bubbleProperties(workInProgress);
    	      return null;
    	    case 4:
    	      return (
    	        popHostContainer(),
    	        null === current &&
    	          listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),
    	        bubbleProperties(workInProgress),
    	        null
    	      );
    	    case 10:
    	      return (
    	        popProvider(workInProgress.type), bubbleProperties(workInProgress), null
    	      );
    	    case 19:
    	      pop(suspenseStackCursor);
    	      type = workInProgress.memoizedState;
    	      if (null === type) return bubbleProperties(workInProgress), null;
    	      newProps = 0 !== (workInProgress.flags & 128);
    	      cache$127 = type.rendering;
    	      if (null === cache$127)
    	        if (newProps) cutOffTailIfNeeded(type, false);
    	        else {
    	          if (
    	            0 !== workInProgressRootExitStatus ||
    	            (null !== current && 0 !== (current.flags & 128))
    	          )
    	            for (current = workInProgress.child; null !== current; ) {
    	              cache$127 = findFirstSuspended(current);
    	              if (null !== cache$127) {
    	                workInProgress.flags |= 128;
    	                cutOffTailIfNeeded(type, false);
    	                current = cache$127.updateQueue;
    	                workInProgress.updateQueue = current;
    	                scheduleRetryEffect(workInProgress, current);
    	                workInProgress.subtreeFlags = 0;
    	                current = renderLanes;
    	                for (renderLanes = workInProgress.child; null !== renderLanes; )
    	                  resetWorkInProgress(renderLanes, current),
    	                    (renderLanes = renderLanes.sibling);
    	                push(
    	                  suspenseStackCursor,
    	                  (suspenseStackCursor.current & 1) | 2
    	                );
    	                return workInProgress.child;
    	              }
    	              current = current.sibling;
    	            }
    	          null !== type.tail &&
    	            now() > workInProgressRootRenderTargetTime &&
    	            ((workInProgress.flags |= 128),
    	            (newProps = true),
    	            cutOffTailIfNeeded(type, false),
    	            (workInProgress.lanes = 4194304));
    	        }
    	      else {
    	        if (!newProps)
    	          if (((current = findFirstSuspended(cache$127)), null !== current)) {
    	            if (
    	              ((workInProgress.flags |= 128),
    	              (newProps = true),
    	              (current = current.updateQueue),
    	              (workInProgress.updateQueue = current),
    	              scheduleRetryEffect(workInProgress, current),
    	              cutOffTailIfNeeded(type, true),
    	              null === type.tail &&
    	                "hidden" === type.tailMode &&
    	                !cache$127.alternate &&
    	                !isHydrating)
    	            )
    	              return bubbleProperties(workInProgress), null;
    	          } else
    	            2 * now() - type.renderingStartTime >
    	              workInProgressRootRenderTargetTime &&
    	              536870912 !== renderLanes &&
    	              ((workInProgress.flags |= 128),
    	              (newProps = true),
    	              cutOffTailIfNeeded(type, false),
    	              (workInProgress.lanes = 4194304));
    	        type.isBackwards
    	          ? ((cache$127.sibling = workInProgress.child),
    	            (workInProgress.child = cache$127))
    	          : ((current = type.last),
    	            null !== current
    	              ? (current.sibling = cache$127)
    	              : (workInProgress.child = cache$127),
    	            (type.last = cache$127));
    	      }
    	      if (null !== type.tail)
    	        return (
    	          (workInProgress = type.tail),
    	          (type.rendering = workInProgress),
    	          (type.tail = workInProgress.sibling),
    	          (type.renderingStartTime = now()),
    	          (workInProgress.sibling = null),
    	          (current = suspenseStackCursor.current),
    	          push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),
    	          workInProgress
    	        );
    	      bubbleProperties(workInProgress);
    	      return null;
    	    case 22:
    	    case 23:
    	      return (
    	        popSuspenseHandler(workInProgress),
    	        popHiddenContext(),
    	        (newProps = null !== workInProgress.memoizedState),
    	        null !== current
    	          ? (null !== current.memoizedState) !== newProps &&
    	            (workInProgress.flags |= 8192)
    	          : newProps && (workInProgress.flags |= 8192),
    	        newProps
    	          ? 0 !== (renderLanes & 536870912) &&
    	            0 === (workInProgress.flags & 128) &&
    	            (bubbleProperties(workInProgress),
    	            workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))
    	          : bubbleProperties(workInProgress),
    	        (renderLanes = workInProgress.updateQueue),
    	        null !== renderLanes &&
    	          scheduleRetryEffect(workInProgress, renderLanes.retryQueue),
    	        (renderLanes = null),
    	        null !== current &&
    	          null !== current.memoizedState &&
    	          null !== current.memoizedState.cachePool &&
    	          (renderLanes = current.memoizedState.cachePool.pool),
    	        (newProps = null),
    	        null !== workInProgress.memoizedState &&
    	          null !== workInProgress.memoizedState.cachePool &&
    	          (newProps = workInProgress.memoizedState.cachePool.pool),
    	        newProps !== renderLanes && (workInProgress.flags |= 2048),
    	        null !== current && pop(resumedCache),
    	        null
    	      );
    	    case 24:
    	      return (
    	        (renderLanes = null),
    	        null !== current && (renderLanes = current.memoizedState.cache),
    	        workInProgress.memoizedState.cache !== renderLanes &&
    	          (workInProgress.flags |= 2048),
    	        popProvider(CacheContext),
    	        bubbleProperties(workInProgress),
    	        null
    	      );
    	    case 25:
    	      return null;
    	    case 30:
    	      return null;
    	  }
    	  throw Error(formatProdErrorMessage(156, workInProgress.tag));
    	}
    	function unwindWork(current, workInProgress) {
    	  popTreeContext(workInProgress);
    	  switch (workInProgress.tag) {
    	    case 1:
    	      return (
    	        (current = workInProgress.flags),
    	        current & 65536
    	          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)
    	          : null
    	      );
    	    case 3:
    	      return (
    	        popProvider(CacheContext),
    	        popHostContainer(),
    	        (current = workInProgress.flags),
    	        0 !== (current & 65536) && 0 === (current & 128)
    	          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)
    	          : null
    	      );
    	    case 26:
    	    case 27:
    	    case 5:
    	      return popHostContext(workInProgress), null;
    	    case 13:
    	      popSuspenseHandler(workInProgress);
    	      current = workInProgress.memoizedState;
    	      if (null !== current && null !== current.dehydrated) {
    	        if (null === workInProgress.alternate)
    	          throw Error(formatProdErrorMessage(340));
    	        resetHydrationState();
    	      }
    	      current = workInProgress.flags;
    	      return current & 65536
    	        ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)
    	        : null;
    	    case 19:
    	      return pop(suspenseStackCursor), null;
    	    case 4:
    	      return popHostContainer(), null;
    	    case 10:
    	      return popProvider(workInProgress.type), null;
    	    case 22:
    	    case 23:
    	      return (
    	        popSuspenseHandler(workInProgress),
    	        popHiddenContext(),
    	        null !== current && pop(resumedCache),
    	        (current = workInProgress.flags),
    	        current & 65536
    	          ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)
    	          : null
    	      );
    	    case 24:
    	      return popProvider(CacheContext), null;
    	    case 25:
    	      return null;
    	    default:
    	      return null;
    	  }
    	}
    	function unwindInterruptedWork(current, interruptedWork) {
    	  popTreeContext(interruptedWork);
    	  switch (interruptedWork.tag) {
    	    case 3:
    	      popProvider(CacheContext);
    	      popHostContainer();
    	      break;
    	    case 26:
    	    case 27:
    	    case 5:
    	      popHostContext(interruptedWork);
    	      break;
    	    case 4:
    	      popHostContainer();
    	      break;
    	    case 13:
    	      popSuspenseHandler(interruptedWork);
    	      break;
    	    case 19:
    	      pop(suspenseStackCursor);
    	      break;
    	    case 10:
    	      popProvider(interruptedWork.type);
    	      break;
    	    case 22:
    	    case 23:
    	      popSuspenseHandler(interruptedWork);
    	      popHiddenContext();
    	      null !== current && pop(resumedCache);
    	      break;
    	    case 24:
    	      popProvider(CacheContext);
    	  }
    	}
    	function commitHookEffectListMount(flags, finishedWork) {
    	  try {
    	    var updateQueue = finishedWork.updateQueue,
    	      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
    	    if (null !== lastEffect) {
    	      var firstEffect = lastEffect.next;
    	      updateQueue = firstEffect;
    	      do {
    	        if ((updateQueue.tag & flags) === flags) {
    	          lastEffect = void 0;
    	          var create = updateQueue.create,
    	            inst = updateQueue.inst;
    	          lastEffect = create();
    	          inst.destroy = lastEffect;
    	        }
    	        updateQueue = updateQueue.next;
    	      } while (updateQueue !== firstEffect);
    	    }
    	  } catch (error) {
    	    captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	  }
    	}
    	function commitHookEffectListUnmount(
    	  flags,
    	  finishedWork,
    	  nearestMountedAncestor$jscomp$0
    	) {
    	  try {
    	    var updateQueue = finishedWork.updateQueue,
    	      lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;
    	    if (null !== lastEffect) {
    	      var firstEffect = lastEffect.next;
    	      updateQueue = firstEffect;
    	      do {
    	        if ((updateQueue.tag & flags) === flags) {
    	          var inst = updateQueue.inst,
    	            destroy = inst.destroy;
    	          if (void 0 !== destroy) {
    	            inst.destroy = void 0;
    	            lastEffect = finishedWork;
    	            var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,
    	              destroy_ = destroy;
    	            try {
    	              destroy_();
    	            } catch (error) {
    	              captureCommitPhaseError(
    	                lastEffect,
    	                nearestMountedAncestor,
    	                error
    	              );
    	            }
    	          }
    	        }
    	        updateQueue = updateQueue.next;
    	      } while (updateQueue !== firstEffect);
    	    }
    	  } catch (error) {
    	    captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	  }
    	}
    	function commitClassCallbacks(finishedWork) {
    	  var updateQueue = finishedWork.updateQueue;
    	  if (null !== updateQueue) {
    	    var instance = finishedWork.stateNode;
    	    try {
    	      commitCallbacks(updateQueue, instance);
    	    } catch (error) {
    	      captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	    }
    	  }
    	}
    	function safelyCallComponentWillUnmount(
    	  current,
    	  nearestMountedAncestor,
    	  instance
    	) {
    	  instance.props = resolveClassComponentProps(
    	    current.type,
    	    current.memoizedProps
    	  );
    	  instance.state = current.memoizedState;
    	  try {
    	    instance.componentWillUnmount();
    	  } catch (error) {
    	    captureCommitPhaseError(current, nearestMountedAncestor, error);
    	  }
    	}
    	function safelyAttachRef(current, nearestMountedAncestor) {
    	  try {
    	    var ref = current.ref;
    	    if (null !== ref) {
    	      switch (current.tag) {
    	        case 26:
    	        case 27:
    	        case 5:
    	          var instanceToUse = current.stateNode;
    	          break;
    	        case 30:
    	          instanceToUse = current.stateNode;
    	          break;
    	        default:
    	          instanceToUse = current.stateNode;
    	      }
    	      "function" === typeof ref
    	        ? (current.refCleanup = ref(instanceToUse))
    	        : (ref.current = instanceToUse);
    	    }
    	  } catch (error) {
    	    captureCommitPhaseError(current, nearestMountedAncestor, error);
    	  }
    	}
    	function safelyDetachRef(current, nearestMountedAncestor) {
    	  var ref = current.ref,
    	    refCleanup = current.refCleanup;
    	  if (null !== ref)
    	    if ("function" === typeof refCleanup)
    	      try {
    	        refCleanup();
    	      } catch (error) {
    	        captureCommitPhaseError(current, nearestMountedAncestor, error);
    	      } finally {
    	        (current.refCleanup = null),
    	          (current = current.alternate),
    	          null != current && (current.refCleanup = null);
    	      }
    	    else if ("function" === typeof ref)
    	      try {
    	        ref(null);
    	      } catch (error$143) {
    	        captureCommitPhaseError(current, nearestMountedAncestor, error$143);
    	      }
    	    else ref.current = null;
    	}
    	function commitHostMount(finishedWork) {
    	  var type = finishedWork.type,
    	    props = finishedWork.memoizedProps,
    	    instance = finishedWork.stateNode;
    	  try {
    	    a: switch (type) {
    	      case "button":
    	      case "input":
    	      case "select":
    	      case "textarea":
    	        props.autoFocus && instance.focus();
    	        break a;
    	      case "img":
    	        props.src
    	          ? (instance.src = props.src)
    	          : props.srcSet && (instance.srcset = props.srcSet);
    	    }
    	  } catch (error) {
    	    captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	  }
    	}
    	function commitHostUpdate(finishedWork, newProps, oldProps) {
    	  try {
    	    var domElement = finishedWork.stateNode;
    	    updateProperties(domElement, finishedWork.type, oldProps, newProps);
    	    domElement[internalPropsKey] = newProps;
    	  } catch (error) {
    	    captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	  }
    	}
    	function isHostParent(fiber) {
    	  return (
    	    5 === fiber.tag ||
    	    3 === fiber.tag ||
    	    26 === fiber.tag ||
    	    (27 === fiber.tag && isSingletonScope(fiber.type)) ||
    	    4 === fiber.tag
    	  );
    	}
    	function getHostSibling(fiber) {
    	  a: for (;;) {
    	    for (; null === fiber.sibling; ) {
    	      if (null === fiber.return || isHostParent(fiber.return)) return null;
    	      fiber = fiber.return;
    	    }
    	    fiber.sibling.return = fiber.return;
    	    for (
    	      fiber = fiber.sibling;
    	      5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;

    	    ) {
    	      if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;
    	      if (fiber.flags & 2) continue a;
    	      if (null === fiber.child || 4 === fiber.tag) continue a;
    	      else (fiber.child.return = fiber), (fiber = fiber.child);
    	    }
    	    if (!(fiber.flags & 2)) return fiber.stateNode;
    	  }
    	}
    	function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
    	  var tag = node.tag;
    	  if (5 === tag || 6 === tag)
    	    (node = node.stateNode),
    	      before
    	        ? (9 === parent.nodeType
    	            ? parent.body
    	            : "HTML" === parent.nodeName
    	              ? parent.ownerDocument.body
    	              : parent
    	          ).insertBefore(node, before)
    	        : ((before =
    	            9 === parent.nodeType
    	              ? parent.body
    	              : "HTML" === parent.nodeName
    	                ? parent.ownerDocument.body
    	                : parent),
    	          before.appendChild(node),
    	          (parent = parent._reactRootContainer),
    	          (null !== parent && void 0 !== parent) ||
    	            null !== before.onclick ||
    	            (before.onclick = noop$1));
    	  else if (
    	    4 !== tag &&
    	    (27 === tag &&
    	      isSingletonScope(node.type) &&
    	      ((parent = node.stateNode), (before = null)),
    	    (node = node.child),
    	    null !== node)
    	  )
    	    for (
    	      insertOrAppendPlacementNodeIntoContainer(node, before, parent),
    	        node = node.sibling;
    	      null !== node;

    	    )
    	      insertOrAppendPlacementNodeIntoContainer(node, before, parent),
    	        (node = node.sibling);
    	}
    	function insertOrAppendPlacementNode(node, before, parent) {
    	  var tag = node.tag;
    	  if (5 === tag || 6 === tag)
    	    (node = node.stateNode),
    	      before ? parent.insertBefore(node, before) : parent.appendChild(node);
    	  else if (
    	    4 !== tag &&
    	    (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),
    	    (node = node.child),
    	    null !== node)
    	  )
    	    for (
    	      insertOrAppendPlacementNode(node, before, parent), node = node.sibling;
    	      null !== node;

    	    )
    	      insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);
    	}
    	function commitHostSingletonAcquisition(finishedWork) {
    	  var singleton = finishedWork.stateNode,
    	    props = finishedWork.memoizedProps;
    	  try {
    	    for (
    	      var type = finishedWork.type, attributes = singleton.attributes;
    	      attributes.length;

    	    )
    	      singleton.removeAttributeNode(attributes[0]);
    	    setInitialProperties(singleton, type, props);
    	    singleton[internalInstanceKey] = finishedWork;
    	    singleton[internalPropsKey] = props;
    	  } catch (error) {
    	    captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	  }
    	}
    	var offscreenSubtreeIsHidden = false,
    	  offscreenSubtreeWasHidden = false,
    	  needsFormReset = false,
    	  PossiblyWeakSet = "function" === typeof WeakSet ? WeakSet : Set,
    	  nextEffect = null;
    	function commitBeforeMutationEffects(root, firstChild) {
    	  root = root.containerInfo;
    	  eventsEnabled = _enabled;
    	  root = getActiveElementDeep(root);
    	  if (hasSelectionCapabilities(root)) {
    	    if ("selectionStart" in root)
    	      var JSCompiler_temp = {
    	        start: root.selectionStart,
    	        end: root.selectionEnd
    	      };
    	    else
    	      a: {
    	        JSCompiler_temp =
    	          ((JSCompiler_temp = root.ownerDocument) &&
    	            JSCompiler_temp.defaultView) ||
    	          window;
    	        var selection =
    	          JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();
    	        if (selection && 0 !== selection.rangeCount) {
    	          JSCompiler_temp = selection.anchorNode;
    	          var anchorOffset = selection.anchorOffset,
    	            focusNode = selection.focusNode;
    	          selection = selection.focusOffset;
    	          try {
    	            JSCompiler_temp.nodeType, focusNode.nodeType;
    	          } catch (e$20) {
    	            JSCompiler_temp = null;
    	            break a;
    	          }
    	          var length = 0,
    	            start = -1,
    	            end = -1,
    	            indexWithinAnchor = 0,
    	            indexWithinFocus = 0,
    	            node = root,
    	            parentNode = null;
    	          b: for (;;) {
    	            for (var next; ; ) {
    	              node !== JSCompiler_temp ||
    	                (0 !== anchorOffset && 3 !== node.nodeType) ||
    	                (start = length + anchorOffset);
    	              node !== focusNode ||
    	                (0 !== selection && 3 !== node.nodeType) ||
    	                (end = length + selection);
    	              3 === node.nodeType && (length += node.nodeValue.length);
    	              if (null === (next = node.firstChild)) break;
    	              parentNode = node;
    	              node = next;
    	            }
    	            for (;;) {
    	              if (node === root) break b;
    	              parentNode === JSCompiler_temp &&
    	                ++indexWithinAnchor === anchorOffset &&
    	                (start = length);
    	              parentNode === focusNode &&
    	                ++indexWithinFocus === selection &&
    	                (end = length);
    	              if (null !== (next = node.nextSibling)) break;
    	              node = parentNode;
    	              parentNode = node.parentNode;
    	            }
    	            node = next;
    	          }
    	          JSCompiler_temp =
    	            -1 === start || -1 === end ? null : { start: start, end: end };
    	        } else JSCompiler_temp = null;
    	      }
    	    JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };
    	  } else JSCompiler_temp = null;
    	  selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };
    	  _enabled = false;
    	  for (nextEffect = firstChild; null !== nextEffect; )
    	    if (
    	      ((firstChild = nextEffect),
    	      (root = firstChild.child),
    	      0 !== (firstChild.subtreeFlags & 1024) && null !== root)
    	    )
    	      (root.return = firstChild), (nextEffect = root);
    	    else
    	      for (; null !== nextEffect; ) {
    	        firstChild = nextEffect;
    	        focusNode = firstChild.alternate;
    	        root = firstChild.flags;
    	        switch (firstChild.tag) {
    	          case 0:
    	            break;
    	          case 11:
    	          case 15:
    	            break;
    	          case 1:
    	            if (0 !== (root & 1024) && null !== focusNode) {
    	              root = void 0;
    	              JSCompiler_temp = firstChild;
    	              anchorOffset = focusNode.memoizedProps;
    	              focusNode = focusNode.memoizedState;
    	              selection = JSCompiler_temp.stateNode;
    	              try {
    	                var resolvedPrevProps = resolveClassComponentProps(
    	                  JSCompiler_temp.type,
    	                  anchorOffset,
    	                  JSCompiler_temp.elementType === JSCompiler_temp.type
    	                );
    	                root = selection.getSnapshotBeforeUpdate(
    	                  resolvedPrevProps,
    	                  focusNode
    	                );
    	                selection.__reactInternalSnapshotBeforeUpdate = root;
    	              } catch (error) {
    	                captureCommitPhaseError(
    	                  JSCompiler_temp,
    	                  JSCompiler_temp.return,
    	                  error
    	                );
    	              }
    	            }
    	            break;
    	          case 3:
    	            if (0 !== (root & 1024))
    	              if (
    	                ((root = firstChild.stateNode.containerInfo),
    	                (JSCompiler_temp = root.nodeType),
    	                9 === JSCompiler_temp)
    	              )
    	                clearContainerSparingly(root);
    	              else if (1 === JSCompiler_temp)
    	                switch (root.nodeName) {
    	                  case "HEAD":
    	                  case "HTML":
    	                  case "BODY":
    	                    clearContainerSparingly(root);
    	                    break;
    	                  default:
    	                    root.textContent = "";
    	                }
    	            break;
    	          case 5:
    	          case 26:
    	          case 27:
    	          case 6:
    	          case 4:
    	          case 17:
    	            break;
    	          default:
    	            if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));
    	        }
    	        root = firstChild.sibling;
    	        if (null !== root) {
    	          root.return = firstChild.return;
    	          nextEffect = root;
    	          break;
    	        }
    	        nextEffect = firstChild.return;
    	      }
    	}
    	function commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {
    	  var flags = finishedWork.flags;
    	  switch (finishedWork.tag) {
    	    case 0:
    	    case 11:
    	    case 15:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      flags & 4 && commitHookEffectListMount(5, finishedWork);
    	      break;
    	    case 1:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      if (flags & 4)
    	        if (((finishedRoot = finishedWork.stateNode), null === current))
    	          try {
    	            finishedRoot.componentDidMount();
    	          } catch (error) {
    	            captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	          }
    	        else {
    	          var prevProps = resolveClassComponentProps(
    	            finishedWork.type,
    	            current.memoizedProps
    	          );
    	          current = current.memoizedState;
    	          try {
    	            finishedRoot.componentDidUpdate(
    	              prevProps,
    	              current,
    	              finishedRoot.__reactInternalSnapshotBeforeUpdate
    	            );
    	          } catch (error$142) {
    	            captureCommitPhaseError(
    	              finishedWork,
    	              finishedWork.return,
    	              error$142
    	            );
    	          }
    	        }
    	      flags & 64 && commitClassCallbacks(finishedWork);
    	      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
    	      break;
    	    case 3:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      if (
    	        flags & 64 &&
    	        ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)
    	      ) {
    	        current = null;
    	        if (null !== finishedWork.child)
    	          switch (finishedWork.child.tag) {
    	            case 27:
    	            case 5:
    	              current = finishedWork.child.stateNode;
    	              break;
    	            case 1:
    	              current = finishedWork.child.stateNode;
    	          }
    	        try {
    	          commitCallbacks(finishedRoot, current);
    	        } catch (error) {
    	          captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	        }
    	      }
    	      break;
    	    case 27:
    	      null === current &&
    	        flags & 4 &&
    	        commitHostSingletonAcquisition(finishedWork);
    	    case 26:
    	    case 5:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      null === current && flags & 4 && commitHostMount(finishedWork);
    	      flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);
    	      break;
    	    case 12:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      break;
    	    case 13:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	      flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
    	      flags & 64 &&
    	        ((finishedRoot = finishedWork.memoizedState),
    	        null !== finishedRoot &&
    	          ((finishedRoot = finishedRoot.dehydrated),
    	          null !== finishedRoot &&
    	            ((finishedWork = retryDehydratedSuspenseBoundary.bind(
    	              null,
    	              finishedWork
    	            )),
    	            registerSuspenseInstanceRetry(finishedRoot, finishedWork))));
    	      break;
    	    case 22:
    	      flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;
    	      if (!flags) {
    	        current =
    	          (null !== current && null !== current.memoizedState) ||
    	          offscreenSubtreeWasHidden;
    	        prevProps = offscreenSubtreeIsHidden;
    	        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
    	        offscreenSubtreeIsHidden = flags;
    	        (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden
    	          ? recursivelyTraverseReappearLayoutEffects(
    	              finishedRoot,
    	              finishedWork,
    	              0 !== (finishedWork.subtreeFlags & 8772)
    	            )
    	          : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	        offscreenSubtreeIsHidden = prevProps;
    	        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
    	      }
    	      break;
    	    case 30:
    	      break;
    	    default:
    	      recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);
    	  }
    	}
    	function detachFiberAfterEffects(fiber) {
    	  var alternate = fiber.alternate;
    	  null !== alternate &&
    	    ((fiber.alternate = null), detachFiberAfterEffects(alternate));
    	  fiber.child = null;
    	  fiber.deletions = null;
    	  fiber.sibling = null;
    	  5 === fiber.tag &&
    	    ((alternate = fiber.stateNode),
    	    null !== alternate && detachDeletedInstance(alternate));
    	  fiber.stateNode = null;
    	  fiber.return = null;
    	  fiber.dependencies = null;
    	  fiber.memoizedProps = null;
    	  fiber.memoizedState = null;
    	  fiber.pendingProps = null;
    	  fiber.stateNode = null;
    	  fiber.updateQueue = null;
    	}
    	var hostParent = null,
    	  hostParentIsContainer = false;
    	function recursivelyTraverseDeletionEffects(
    	  finishedRoot,
    	  nearestMountedAncestor,
    	  parent
    	) {
    	  for (parent = parent.child; null !== parent; )
    	    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),
    	      (parent = parent.sibling);
    	}
    	function commitDeletionEffectsOnFiber(
    	  finishedRoot,
    	  nearestMountedAncestor,
    	  deletedFiber
    	) {
    	  if (injectedHook && "function" === typeof injectedHook.onCommitFiberUnmount)
    	    try {
    	      injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);
    	    } catch (err) {}
    	  switch (deletedFiber.tag) {
    	    case 26:
    	      offscreenSubtreeWasHidden ||
    	        safelyDetachRef(deletedFiber, nearestMountedAncestor);
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      deletedFiber.memoizedState
    	        ? deletedFiber.memoizedState.count--
    	        : deletedFiber.stateNode &&
    	          ((deletedFiber = deletedFiber.stateNode),
    	          deletedFiber.parentNode.removeChild(deletedFiber));
    	      break;
    	    case 27:
    	      offscreenSubtreeWasHidden ||
    	        safelyDetachRef(deletedFiber, nearestMountedAncestor);
    	      var prevHostParent = hostParent,
    	        prevHostParentIsContainer = hostParentIsContainer;
    	      isSingletonScope(deletedFiber.type) &&
    	        ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = false));
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      releaseSingletonInstance(deletedFiber.stateNode);
    	      hostParent = prevHostParent;
    	      hostParentIsContainer = prevHostParentIsContainer;
    	      break;
    	    case 5:
    	      offscreenSubtreeWasHidden ||
    	        safelyDetachRef(deletedFiber, nearestMountedAncestor);
    	    case 6:
    	      prevHostParent = hostParent;
    	      prevHostParentIsContainer = hostParentIsContainer;
    	      hostParent = null;
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      hostParent = prevHostParent;
    	      hostParentIsContainer = prevHostParentIsContainer;
    	      if (null !== hostParent)
    	        if (hostParentIsContainer)
    	          try {
    	            (9 === hostParent.nodeType
    	              ? hostParent.body
    	              : "HTML" === hostParent.nodeName
    	                ? hostParent.ownerDocument.body
    	                : hostParent
    	            ).removeChild(deletedFiber.stateNode);
    	          } catch (error) {
    	            captureCommitPhaseError(
    	              deletedFiber,
    	              nearestMountedAncestor,
    	              error
    	            );
    	          }
    	        else
    	          try {
    	            hostParent.removeChild(deletedFiber.stateNode);
    	          } catch (error) {
    	            captureCommitPhaseError(
    	              deletedFiber,
    	              nearestMountedAncestor,
    	              error
    	            );
    	          }
    	      break;
    	    case 18:
    	      null !== hostParent &&
    	        (hostParentIsContainer
    	          ? ((finishedRoot = hostParent),
    	            clearSuspenseBoundary(
    	              9 === finishedRoot.nodeType
    	                ? finishedRoot.body
    	                : "HTML" === finishedRoot.nodeName
    	                  ? finishedRoot.ownerDocument.body
    	                  : finishedRoot,
    	              deletedFiber.stateNode
    	            ),
    	            retryIfBlockedOn(finishedRoot))
    	          : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));
    	      break;
    	    case 4:
    	      prevHostParent = hostParent;
    	      prevHostParentIsContainer = hostParentIsContainer;
    	      hostParent = deletedFiber.stateNode.containerInfo;
    	      hostParentIsContainer = true;
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      hostParent = prevHostParent;
    	      hostParentIsContainer = prevHostParentIsContainer;
    	      break;
    	    case 0:
    	    case 11:
    	    case 14:
    	    case 15:
    	      offscreenSubtreeWasHidden ||
    	        commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);
    	      offscreenSubtreeWasHidden ||
    	        commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      break;
    	    case 1:
    	      offscreenSubtreeWasHidden ||
    	        (safelyDetachRef(deletedFiber, nearestMountedAncestor),
    	        (prevHostParent = deletedFiber.stateNode),
    	        "function" === typeof prevHostParent.componentWillUnmount &&
    	          safelyCallComponentWillUnmount(
    	            deletedFiber,
    	            nearestMountedAncestor,
    	            prevHostParent
    	          ));
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      break;
    	    case 21:
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      break;
    	    case 22:
    	      offscreenSubtreeWasHidden =
    	        (prevHostParent = offscreenSubtreeWasHidden) ||
    	        null !== deletedFiber.memoizedState;
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	      offscreenSubtreeWasHidden = prevHostParent;
    	      break;
    	    default:
    	      recursivelyTraverseDeletionEffects(
    	        finishedRoot,
    	        nearestMountedAncestor,
    	        deletedFiber
    	      );
    	  }
    	}
    	function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
    	  if (
    	    null === finishedWork.memoizedState &&
    	    ((finishedRoot = finishedWork.alternate),
    	    null !== finishedRoot &&
    	      ((finishedRoot = finishedRoot.memoizedState),
    	      null !== finishedRoot &&
    	        ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))
    	  )
    	    try {
    	      retryIfBlockedOn(finishedRoot);
    	    } catch (error) {
    	      captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	    }
    	}
    	function getRetryCache(finishedWork) {
    	  switch (finishedWork.tag) {
    	    case 13:
    	    case 19:
    	      var retryCache = finishedWork.stateNode;
    	      null === retryCache &&
    	        (retryCache = finishedWork.stateNode = new PossiblyWeakSet());
    	      return retryCache;
    	    case 22:
    	      return (
    	        (finishedWork = finishedWork.stateNode),
    	        (retryCache = finishedWork._retryCache),
    	        null === retryCache &&
    	          (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),
    	        retryCache
    	      );
    	    default:
    	      throw Error(formatProdErrorMessage(435, finishedWork.tag));
    	  }
    	}
    	function attachSuspenseRetryListeners(finishedWork, wakeables) {
    	  var retryCache = getRetryCache(finishedWork);
    	  wakeables.forEach(function (wakeable) {
    	    var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);
    	    retryCache.has(wakeable) ||
    	      (retryCache.add(wakeable), wakeable.then(retry, retry));
    	  });
    	}
    	function recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {
    	  var deletions = parentFiber.deletions;
    	  if (null !== deletions)
    	    for (var i = 0; i < deletions.length; i++) {
    	      var childToDelete = deletions[i],
    	        root = root$jscomp$0,
    	        returnFiber = parentFiber,
    	        parent = returnFiber;
    	      a: for (; null !== parent; ) {
    	        switch (parent.tag) {
    	          case 27:
    	            if (isSingletonScope(parent.type)) {
    	              hostParent = parent.stateNode;
    	              hostParentIsContainer = false;
    	              break a;
    	            }
    	            break;
    	          case 5:
    	            hostParent = parent.stateNode;
    	            hostParentIsContainer = false;
    	            break a;
    	          case 3:
    	          case 4:
    	            hostParent = parent.stateNode.containerInfo;
    	            hostParentIsContainer = true;
    	            break a;
    	        }
    	        parent = parent.return;
    	      }
    	      if (null === hostParent) throw Error(formatProdErrorMessage(160));
    	      commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);
    	      hostParent = null;
    	      hostParentIsContainer = false;
    	      root = childToDelete.alternate;
    	      null !== root && (root.return = null);
    	      childToDelete.return = null;
    	    }
    	  if (parentFiber.subtreeFlags & 13878)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; )
    	      commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),
    	        (parentFiber = parentFiber.sibling);
    	}
    	var currentHoistableRoot = null;
    	function commitMutationEffectsOnFiber(finishedWork, root) {
    	  var current = finishedWork.alternate,
    	    flags = finishedWork.flags;
    	  switch (finishedWork.tag) {
    	    case 0:
    	    case 11:
    	    case 14:
    	    case 15:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 4 &&
    	        (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),
    	        commitHookEffectListMount(3, finishedWork),
    	        commitHookEffectListUnmount(5, finishedWork, finishedWork.return));
    	      break;
    	    case 1:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 512 &&
    	        (offscreenSubtreeWasHidden ||
    	          null === current ||
    	          safelyDetachRef(current, current.return));
    	      flags & 64 &&
    	        offscreenSubtreeIsHidden &&
    	        ((finishedWork = finishedWork.updateQueue),
    	        null !== finishedWork &&
    	          ((flags = finishedWork.callbacks),
    	          null !== flags &&
    	            ((current = finishedWork.shared.hiddenCallbacks),
    	            (finishedWork.shared.hiddenCallbacks =
    	              null === current ? flags : current.concat(flags)))));
    	      break;
    	    case 26:
    	      var hoistableRoot = currentHoistableRoot;
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 512 &&
    	        (offscreenSubtreeWasHidden ||
    	          null === current ||
    	          safelyDetachRef(current, current.return));
    	      if (flags & 4) {
    	        var currentResource = null !== current ? current.memoizedState : null;
    	        flags = finishedWork.memoizedState;
    	        if (null === current)
    	          if (null === flags)
    	            if (null === finishedWork.stateNode) {
    	              a: {
    	                flags = finishedWork.type;
    	                current = finishedWork.memoizedProps;
    	                hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
    	                b: switch (flags) {
    	                  case "title":
    	                    currentResource =
    	                      hoistableRoot.getElementsByTagName("title")[0];
    	                    if (
    	                      !currentResource ||
    	                      currentResource[internalHoistableMarker] ||
    	                      currentResource[internalInstanceKey] ||
    	                      "http://www.w3.org/2000/svg" ===
    	                        currentResource.namespaceURI ||
    	                      currentResource.hasAttribute("itemprop")
    	                    )
    	                      (currentResource = hoistableRoot.createElement(flags)),
    	                        hoistableRoot.head.insertBefore(
    	                          currentResource,
    	                          hoistableRoot.querySelector("head > title")
    	                        );
    	                    setInitialProperties(currentResource, flags, current);
    	                    currentResource[internalInstanceKey] = finishedWork;
    	                    markNodeAsHoistable(currentResource);
    	                    flags = currentResource;
    	                    break a;
    	                  case "link":
    	                    var maybeNodes = getHydratableHoistableCache(
    	                      "link",
    	                      "href",
    	                      hoistableRoot
    	                    ).get(flags + (current.href || ""));
    	                    if (maybeNodes)
    	                      for (var i = 0; i < maybeNodes.length; i++)
    	                        if (
    	                          ((currentResource = maybeNodes[i]),
    	                          currentResource.getAttribute("href") ===
    	                            (null == current.href || "" === current.href
    	                              ? null
    	                              : current.href) &&
    	                            currentResource.getAttribute("rel") ===
    	                              (null == current.rel ? null : current.rel) &&
    	                            currentResource.getAttribute("title") ===
    	                              (null == current.title ? null : current.title) &&
    	                            currentResource.getAttribute("crossorigin") ===
    	                              (null == current.crossOrigin
    	                                ? null
    	                                : current.crossOrigin))
    	                        ) {
    	                          maybeNodes.splice(i, 1);
    	                          break b;
    	                        }
    	                    currentResource = hoistableRoot.createElement(flags);
    	                    setInitialProperties(currentResource, flags, current);
    	                    hoistableRoot.head.appendChild(currentResource);
    	                    break;
    	                  case "meta":
    	                    if (
    	                      (maybeNodes = getHydratableHoistableCache(
    	                        "meta",
    	                        "content",
    	                        hoistableRoot
    	                      ).get(flags + (current.content || "")))
    	                    )
    	                      for (i = 0; i < maybeNodes.length; i++)
    	                        if (
    	                          ((currentResource = maybeNodes[i]),
    	                          currentResource.getAttribute("content") ===
    	                            (null == current.content
    	                              ? null
    	                              : "" + current.content) &&
    	                            currentResource.getAttribute("name") ===
    	                              (null == current.name ? null : current.name) &&
    	                            currentResource.getAttribute("property") ===
    	                              (null == current.property
    	                                ? null
    	                                : current.property) &&
    	                            currentResource.getAttribute("http-equiv") ===
    	                              (null == current.httpEquiv
    	                                ? null
    	                                : current.httpEquiv) &&
    	                            currentResource.getAttribute("charset") ===
    	                              (null == current.charSet
    	                                ? null
    	                                : current.charSet))
    	                        ) {
    	                          maybeNodes.splice(i, 1);
    	                          break b;
    	                        }
    	                    currentResource = hoistableRoot.createElement(flags);
    	                    setInitialProperties(currentResource, flags, current);
    	                    hoistableRoot.head.appendChild(currentResource);
    	                    break;
    	                  default:
    	                    throw Error(formatProdErrorMessage(468, flags));
    	                }
    	                currentResource[internalInstanceKey] = finishedWork;
    	                markNodeAsHoistable(currentResource);
    	                flags = currentResource;
    	              }
    	              finishedWork.stateNode = flags;
    	            } else
    	              mountHoistable(
    	                hoistableRoot,
    	                finishedWork.type,
    	                finishedWork.stateNode
    	              );
    	          else
    	            finishedWork.stateNode = acquireResource(
    	              hoistableRoot,
    	              flags,
    	              finishedWork.memoizedProps
    	            );
    	        else
    	          currentResource !== flags
    	            ? (null === currentResource
    	                ? null !== current.stateNode &&
    	                  ((current = current.stateNode),
    	                  current.parentNode.removeChild(current))
    	                : currentResource.count--,
    	              null === flags
    	                ? mountHoistable(
    	                    hoistableRoot,
    	                    finishedWork.type,
    	                    finishedWork.stateNode
    	                  )
    	                : acquireResource(
    	                    hoistableRoot,
    	                    flags,
    	                    finishedWork.memoizedProps
    	                  ))
    	            : null === flags &&
    	              null !== finishedWork.stateNode &&
    	              commitHostUpdate(
    	                finishedWork,
    	                finishedWork.memoizedProps,
    	                current.memoizedProps
    	              );
    	      }
    	      break;
    	    case 27:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 512 &&
    	        (offscreenSubtreeWasHidden ||
    	          null === current ||
    	          safelyDetachRef(current, current.return));
    	      null !== current &&
    	        flags & 4 &&
    	        commitHostUpdate(
    	          finishedWork,
    	          finishedWork.memoizedProps,
    	          current.memoizedProps
    	        );
    	      break;
    	    case 5:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 512 &&
    	        (offscreenSubtreeWasHidden ||
    	          null === current ||
    	          safelyDetachRef(current, current.return));
    	      if (finishedWork.flags & 32) {
    	        hoistableRoot = finishedWork.stateNode;
    	        try {
    	          setTextContent(hoistableRoot, "");
    	        } catch (error) {
    	          captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	        }
    	      }
    	      flags & 4 &&
    	        null != finishedWork.stateNode &&
    	        ((hoistableRoot = finishedWork.memoizedProps),
    	        commitHostUpdate(
    	          finishedWork,
    	          hoistableRoot,
    	          null !== current ? current.memoizedProps : hoistableRoot
    	        ));
    	      flags & 1024 && (needsFormReset = true);
    	      break;
    	    case 6:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      if (flags & 4) {
    	        if (null === finishedWork.stateNode)
    	          throw Error(formatProdErrorMessage(162));
    	        flags = finishedWork.memoizedProps;
    	        current = finishedWork.stateNode;
    	        try {
    	          current.nodeValue = flags;
    	        } catch (error) {
    	          captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	        }
    	      }
    	      break;
    	    case 3:
    	      tagCaches = null;
    	      hoistableRoot = currentHoistableRoot;
    	      currentHoistableRoot = getHoistableRoot(root.containerInfo);
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      currentHoistableRoot = hoistableRoot;
    	      commitReconciliationEffects(finishedWork);
    	      if (flags & 4 && null !== current && current.memoizedState.isDehydrated)
    	        try {
    	          retryIfBlockedOn(root.containerInfo);
    	        } catch (error) {
    	          captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	        }
    	      needsFormReset &&
    	        ((needsFormReset = false), recursivelyResetForms(finishedWork));
    	      break;
    	    case 4:
    	      flags = currentHoistableRoot;
    	      currentHoistableRoot = getHoistableRoot(
    	        finishedWork.stateNode.containerInfo
    	      );
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      currentHoistableRoot = flags;
    	      break;
    	    case 12:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      break;
    	    case 13:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      finishedWork.child.flags & 8192 &&
    	        (null !== finishedWork.memoizedState) !==
    	          (null !== current && null !== current.memoizedState) &&
    	        (globalMostRecentFallbackTime = now());
    	      flags & 4 &&
    	        ((flags = finishedWork.updateQueue),
    	        null !== flags &&
    	          ((finishedWork.updateQueue = null),
    	          attachSuspenseRetryListeners(finishedWork, flags)));
    	      break;
    	    case 22:
    	      hoistableRoot = null !== finishedWork.memoizedState;
    	      var wasHidden = null !== current && null !== current.memoizedState,
    	        prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,
    	        prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;
    	      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;
    	      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;
    	      offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;
    	      commitReconciliationEffects(finishedWork);
    	      if (flags & 8192)
    	        a: for (
    	          root = finishedWork.stateNode,
    	            root._visibility = hoistableRoot
    	              ? root._visibility & -2
    	              : root._visibility | 1,
    	            hoistableRoot &&
    	              (null === current ||
    	                wasHidden ||
    	                offscreenSubtreeIsHidden ||
    	                offscreenSubtreeWasHidden ||
    	                recursivelyTraverseDisappearLayoutEffects(finishedWork)),
    	            current = null,
    	            root = finishedWork;
    	          ;

    	        ) {
    	          if (5 === root.tag || 26 === root.tag) {
    	            if (null === current) {
    	              wasHidden = current = root;
    	              try {
    	                if (((currentResource = wasHidden.stateNode), hoistableRoot))
    	                  (maybeNodes = currentResource.style),
    	                    "function" === typeof maybeNodes.setProperty
    	                      ? maybeNodes.setProperty("display", "none", "important")
    	                      : (maybeNodes.display = "none");
    	                else {
    	                  i = wasHidden.stateNode;
    	                  var styleProp = wasHidden.memoizedProps.style,
    	                    display =
    	                      void 0 !== styleProp &&
    	                      null !== styleProp &&
    	                      styleProp.hasOwnProperty("display")
    	                        ? styleProp.display
    	                        : null;
    	                  i.style.display =
    	                    null == display || "boolean" === typeof display
    	                      ? ""
    	                      : ("" + display).trim();
    	                }
    	              } catch (error) {
    	                captureCommitPhaseError(wasHidden, wasHidden.return, error);
    	              }
    	            }
    	          } else if (6 === root.tag) {
    	            if (null === current) {
    	              wasHidden = root;
    	              try {
    	                wasHidden.stateNode.nodeValue = hoistableRoot
    	                  ? ""
    	                  : wasHidden.memoizedProps;
    	              } catch (error) {
    	                captureCommitPhaseError(wasHidden, wasHidden.return, error);
    	              }
    	            }
    	          } else if (
    	            ((22 !== root.tag && 23 !== root.tag) ||
    	              null === root.memoizedState ||
    	              root === finishedWork) &&
    	            null !== root.child
    	          ) {
    	            root.child.return = root;
    	            root = root.child;
    	            continue;
    	          }
    	          if (root === finishedWork) break a;
    	          for (; null === root.sibling; ) {
    	            if (null === root.return || root.return === finishedWork) break a;
    	            current === root && (current = null);
    	            root = root.return;
    	          }
    	          current === root && (current = null);
    	          root.sibling.return = root.return;
    	          root = root.sibling;
    	        }
    	      flags & 4 &&
    	        ((flags = finishedWork.updateQueue),
    	        null !== flags &&
    	          ((current = flags.retryQueue),
    	          null !== current &&
    	            ((flags.retryQueue = null),
    	            attachSuspenseRetryListeners(finishedWork, current))));
    	      break;
    	    case 19:
    	      recursivelyTraverseMutationEffects(root, finishedWork);
    	      commitReconciliationEffects(finishedWork);
    	      flags & 4 &&
    	        ((flags = finishedWork.updateQueue),
    	        null !== flags &&
    	          ((finishedWork.updateQueue = null),
    	          attachSuspenseRetryListeners(finishedWork, flags)));
    	      break;
    	    case 30:
    	      break;
    	    case 21:
    	      break;
    	    default:
    	      recursivelyTraverseMutationEffects(root, finishedWork),
    	        commitReconciliationEffects(finishedWork);
    	  }
    	}
    	function commitReconciliationEffects(finishedWork) {
    	  var flags = finishedWork.flags;
    	  if (flags & 2) {
    	    try {
    	      for (
    	        var hostParentFiber, parentFiber = finishedWork.return;
    	        null !== parentFiber;

    	      ) {
    	        if (isHostParent(parentFiber)) {
    	          hostParentFiber = parentFiber;
    	          break;
    	        }
    	        parentFiber = parentFiber.return;
    	      }
    	      if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));
    	      switch (hostParentFiber.tag) {
    	        case 27:
    	          var parent = hostParentFiber.stateNode,
    	            before = getHostSibling(finishedWork);
    	          insertOrAppendPlacementNode(finishedWork, before, parent);
    	          break;
    	        case 5:
    	          var parent$144 = hostParentFiber.stateNode;
    	          hostParentFiber.flags & 32 &&
    	            (setTextContent(parent$144, ""), (hostParentFiber.flags &= -33));
    	          var before$145 = getHostSibling(finishedWork);
    	          insertOrAppendPlacementNode(finishedWork, before$145, parent$144);
    	          break;
    	        case 3:
    	        case 4:
    	          var parent$146 = hostParentFiber.stateNode.containerInfo,
    	            before$147 = getHostSibling(finishedWork);
    	          insertOrAppendPlacementNodeIntoContainer(
    	            finishedWork,
    	            before$147,
    	            parent$146
    	          );
    	          break;
    	        default:
    	          throw Error(formatProdErrorMessage(161));
    	      }
    	    } catch (error) {
    	      captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	    }
    	    finishedWork.flags &= -3;
    	  }
    	  flags & 4096 && (finishedWork.flags &= -4097);
    	}
    	function recursivelyResetForms(parentFiber) {
    	  if (parentFiber.subtreeFlags & 1024)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	      var fiber = parentFiber;
    	      recursivelyResetForms(fiber);
    	      5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();
    	      parentFiber = parentFiber.sibling;
    	    }
    	}
    	function recursivelyTraverseLayoutEffects(root, parentFiber) {
    	  if (parentFiber.subtreeFlags & 8772)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; )
    	      commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),
    	        (parentFiber = parentFiber.sibling);
    	}
    	function recursivelyTraverseDisappearLayoutEffects(parentFiber) {
    	  for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	    var finishedWork = parentFiber;
    	    switch (finishedWork.tag) {
    	      case 0:
    	      case 11:
    	      case 14:
    	      case 15:
    	        commitHookEffectListUnmount(4, finishedWork, finishedWork.return);
    	        recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	        break;
    	      case 1:
    	        safelyDetachRef(finishedWork, finishedWork.return);
    	        var instance = finishedWork.stateNode;
    	        "function" === typeof instance.componentWillUnmount &&
    	          safelyCallComponentWillUnmount(
    	            finishedWork,
    	            finishedWork.return,
    	            instance
    	          );
    	        recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	        break;
    	      case 27:
    	        releaseSingletonInstance(finishedWork.stateNode);
    	      case 26:
    	      case 5:
    	        safelyDetachRef(finishedWork, finishedWork.return);
    	        recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	        break;
    	      case 22:
    	        null === finishedWork.memoizedState &&
    	          recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	        break;
    	      case 30:
    	        recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	        break;
    	      default:
    	        recursivelyTraverseDisappearLayoutEffects(finishedWork);
    	    }
    	    parentFiber = parentFiber.sibling;
    	  }
    	}
    	function recursivelyTraverseReappearLayoutEffects(
    	  finishedRoot$jscomp$0,
    	  parentFiber,
    	  includeWorkInProgressEffects
    	) {
    	  includeWorkInProgressEffects =
    	    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);
    	  for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	    var current = parentFiber.alternate,
    	      finishedRoot = finishedRoot$jscomp$0,
    	      finishedWork = parentFiber,
    	      flags = finishedWork.flags;
    	    switch (finishedWork.tag) {
    	      case 0:
    	      case 11:
    	      case 15:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	        commitHookEffectListMount(4, finishedWork);
    	        break;
    	      case 1:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	        current = finishedWork;
    	        finishedRoot = current.stateNode;
    	        if ("function" === typeof finishedRoot.componentDidMount)
    	          try {
    	            finishedRoot.componentDidMount();
    	          } catch (error) {
    	            captureCommitPhaseError(current, current.return, error);
    	          }
    	        current = finishedWork;
    	        finishedRoot = current.updateQueue;
    	        if (null !== finishedRoot) {
    	          var instance = current.stateNode;
    	          try {
    	            var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;
    	            if (null !== hiddenCallbacks)
    	              for (
    	                finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;
    	                finishedRoot < hiddenCallbacks.length;
    	                finishedRoot++
    	              )
    	                callCallback(hiddenCallbacks[finishedRoot], instance);
    	          } catch (error) {
    	            captureCommitPhaseError(current, current.return, error);
    	          }
    	        }
    	        includeWorkInProgressEffects &&
    	          flags & 64 &&
    	          commitClassCallbacks(finishedWork);
    	        safelyAttachRef(finishedWork, finishedWork.return);
    	        break;
    	      case 27:
    	        commitHostSingletonAcquisition(finishedWork);
    	      case 26:
    	      case 5:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	        includeWorkInProgressEffects &&
    	          null === current &&
    	          flags & 4 &&
    	          commitHostMount(finishedWork);
    	        safelyAttachRef(finishedWork, finishedWork.return);
    	        break;
    	      case 12:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	        break;
    	      case 13:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	        includeWorkInProgressEffects &&
    	          flags & 4 &&
    	          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
    	        break;
    	      case 22:
    	        null === finishedWork.memoizedState &&
    	          recursivelyTraverseReappearLayoutEffects(
    	            finishedRoot,
    	            finishedWork,
    	            includeWorkInProgressEffects
    	          );
    	        safelyAttachRef(finishedWork, finishedWork.return);
    	        break;
    	      case 30:
    	        break;
    	      default:
    	        recursivelyTraverseReappearLayoutEffects(
    	          finishedRoot,
    	          finishedWork,
    	          includeWorkInProgressEffects
    	        );
    	    }
    	    parentFiber = parentFiber.sibling;
    	  }
    	}
    	function commitOffscreenPassiveMountEffects(current, finishedWork) {
    	  var previousCache = null;
    	  null !== current &&
    	    null !== current.memoizedState &&
    	    null !== current.memoizedState.cachePool &&
    	    (previousCache = current.memoizedState.cachePool.pool);
    	  current = null;
    	  null !== finishedWork.memoizedState &&
    	    null !== finishedWork.memoizedState.cachePool &&
    	    (current = finishedWork.memoizedState.cachePool.pool);
    	  current !== previousCache &&
    	    (null != current && current.refCount++,
    	    null != previousCache && releaseCache(previousCache));
    	}
    	function commitCachePassiveMountEffect(current, finishedWork) {
    	  current = null;
    	  null !== finishedWork.alternate &&
    	    (current = finishedWork.alternate.memoizedState.cache);
    	  finishedWork = finishedWork.memoizedState.cache;
    	  finishedWork !== current &&
    	    (finishedWork.refCount++, null != current && releaseCache(current));
    	}
    	function recursivelyTraversePassiveMountEffects(
    	  root,
    	  parentFiber,
    	  committedLanes,
    	  committedTransitions
    	) {
    	  if (parentFiber.subtreeFlags & 10256)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; )
    	      commitPassiveMountOnFiber(
    	        root,
    	        parentFiber,
    	        committedLanes,
    	        committedTransitions
    	      ),
    	        (parentFiber = parentFiber.sibling);
    	}
    	function commitPassiveMountOnFiber(
    	  finishedRoot,
    	  finishedWork,
    	  committedLanes,
    	  committedTransitions
    	) {
    	  var flags = finishedWork.flags;
    	  switch (finishedWork.tag) {
    	    case 0:
    	    case 11:
    	    case 15:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	      flags & 2048 && commitHookEffectListMount(9, finishedWork);
    	      break;
    	    case 1:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	      break;
    	    case 3:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	      flags & 2048 &&
    	        ((finishedRoot = null),
    	        null !== finishedWork.alternate &&
    	          (finishedRoot = finishedWork.alternate.memoizedState.cache),
    	        (finishedWork = finishedWork.memoizedState.cache),
    	        finishedWork !== finishedRoot &&
    	          (finishedWork.refCount++,
    	          null != finishedRoot && releaseCache(finishedRoot)));
    	      break;
    	    case 12:
    	      if (flags & 2048) {
    	        recursivelyTraversePassiveMountEffects(
    	          finishedRoot,
    	          finishedWork,
    	          committedLanes,
    	          committedTransitions
    	        );
    	        finishedRoot = finishedWork.stateNode;
    	        try {
    	          var _finishedWork$memoize2 = finishedWork.memoizedProps,
    	            id = _finishedWork$memoize2.id,
    	            onPostCommit = _finishedWork$memoize2.onPostCommit;
    	          "function" === typeof onPostCommit &&
    	            onPostCommit(
    	              id,
    	              null === finishedWork.alternate ? "mount" : "update",
    	              finishedRoot.passiveEffectDuration,
    	              -0
    	            );
    	        } catch (error) {
    	          captureCommitPhaseError(finishedWork, finishedWork.return, error);
    	        }
    	      } else
    	        recursivelyTraversePassiveMountEffects(
    	          finishedRoot,
    	          finishedWork,
    	          committedLanes,
    	          committedTransitions
    	        );
    	      break;
    	    case 13:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	      break;
    	    case 23:
    	      break;
    	    case 22:
    	      _finishedWork$memoize2 = finishedWork.stateNode;
    	      id = finishedWork.alternate;
    	      null !== finishedWork.memoizedState
    	        ? _finishedWork$memoize2._visibility & 2
    	          ? recursivelyTraversePassiveMountEffects(
    	              finishedRoot,
    	              finishedWork,
    	              committedLanes,
    	              committedTransitions
    	            )
    	          : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)
    	        : _finishedWork$memoize2._visibility & 2
    	          ? recursivelyTraversePassiveMountEffects(
    	              finishedRoot,
    	              finishedWork,
    	              committedLanes,
    	              committedTransitions
    	            )
    	          : ((_finishedWork$memoize2._visibility |= 2),
    	            recursivelyTraverseReconnectPassiveEffects(
    	              finishedRoot,
    	              finishedWork,
    	              committedLanes,
    	              committedTransitions,
    	              0 !== (finishedWork.subtreeFlags & 10256)
    	            ));
    	      flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);
    	      break;
    	    case 24:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	      flags & 2048 &&
    	        commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
    	      break;
    	    default:
    	      recursivelyTraversePassiveMountEffects(
    	        finishedRoot,
    	        finishedWork,
    	        committedLanes,
    	        committedTransitions
    	      );
    	  }
    	}
    	function recursivelyTraverseReconnectPassiveEffects(
    	  finishedRoot$jscomp$0,
    	  parentFiber,
    	  committedLanes$jscomp$0,
    	  committedTransitions$jscomp$0,
    	  includeWorkInProgressEffects
    	) {
    	  includeWorkInProgressEffects =
    	    includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);
    	  for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	    var finishedRoot = finishedRoot$jscomp$0,
    	      finishedWork = parentFiber,
    	      committedLanes = committedLanes$jscomp$0,
    	      committedTransitions = committedTransitions$jscomp$0,
    	      flags = finishedWork.flags;
    	    switch (finishedWork.tag) {
    	      case 0:
    	      case 11:
    	      case 15:
    	        recursivelyTraverseReconnectPassiveEffects(
    	          finishedRoot,
    	          finishedWork,
    	          committedLanes,
    	          committedTransitions,
    	          includeWorkInProgressEffects
    	        );
    	        commitHookEffectListMount(8, finishedWork);
    	        break;
    	      case 23:
    	        break;
    	      case 22:
    	        var instance = finishedWork.stateNode;
    	        null !== finishedWork.memoizedState
    	          ? instance._visibility & 2
    	            ? recursivelyTraverseReconnectPassiveEffects(
    	                finishedRoot,
    	                finishedWork,
    	                committedLanes,
    	                committedTransitions,
    	                includeWorkInProgressEffects
    	              )
    	            : recursivelyTraverseAtomicPassiveEffects(
    	                finishedRoot,
    	                finishedWork
    	              )
    	          : ((instance._visibility |= 2),
    	            recursivelyTraverseReconnectPassiveEffects(
    	              finishedRoot,
    	              finishedWork,
    	              committedLanes,
    	              committedTransitions,
    	              includeWorkInProgressEffects
    	            ));
    	        includeWorkInProgressEffects &&
    	          flags & 2048 &&
    	          commitOffscreenPassiveMountEffects(
    	            finishedWork.alternate,
    	            finishedWork
    	          );
    	        break;
    	      case 24:
    	        recursivelyTraverseReconnectPassiveEffects(
    	          finishedRoot,
    	          finishedWork,
    	          committedLanes,
    	          committedTransitions,
    	          includeWorkInProgressEffects
    	        );
    	        includeWorkInProgressEffects &&
    	          flags & 2048 &&
    	          commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
    	        break;
    	      default:
    	        recursivelyTraverseReconnectPassiveEffects(
    	          finishedRoot,
    	          finishedWork,
    	          committedLanes,
    	          committedTransitions,
    	          includeWorkInProgressEffects
    	        );
    	    }
    	    parentFiber = parentFiber.sibling;
    	  }
    	}
    	function recursivelyTraverseAtomicPassiveEffects(
    	  finishedRoot$jscomp$0,
    	  parentFiber
    	) {
    	  if (parentFiber.subtreeFlags & 10256)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	      var finishedRoot = finishedRoot$jscomp$0,
    	        finishedWork = parentFiber,
    	        flags = finishedWork.flags;
    	      switch (finishedWork.tag) {
    	        case 22:
    	          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
    	          flags & 2048 &&
    	            commitOffscreenPassiveMountEffects(
    	              finishedWork.alternate,
    	              finishedWork
    	            );
    	          break;
    	        case 24:
    	          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
    	          flags & 2048 &&
    	            commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);
    	          break;
    	        default:
    	          recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);
    	      }
    	      parentFiber = parentFiber.sibling;
    	    }
    	}
    	var suspenseyCommitFlag = 8192;
    	function recursivelyAccumulateSuspenseyCommit(parentFiber) {
    	  if (parentFiber.subtreeFlags & suspenseyCommitFlag)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; )
    	      accumulateSuspenseyCommitOnFiber(parentFiber),
    	        (parentFiber = parentFiber.sibling);
    	}
    	function accumulateSuspenseyCommitOnFiber(fiber) {
    	  switch (fiber.tag) {
    	    case 26:
    	      recursivelyAccumulateSuspenseyCommit(fiber);
    	      fiber.flags & suspenseyCommitFlag &&
    	        null !== fiber.memoizedState &&
    	        suspendResource(
    	          currentHoistableRoot,
    	          fiber.memoizedState,
    	          fiber.memoizedProps
    	        );
    	      break;
    	    case 5:
    	      recursivelyAccumulateSuspenseyCommit(fiber);
    	      break;
    	    case 3:
    	    case 4:
    	      var previousHoistableRoot = currentHoistableRoot;
    	      currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);
    	      recursivelyAccumulateSuspenseyCommit(fiber);
    	      currentHoistableRoot = previousHoistableRoot;
    	      break;
    	    case 22:
    	      null === fiber.memoizedState &&
    	        ((previousHoistableRoot = fiber.alternate),
    	        null !== previousHoistableRoot &&
    	        null !== previousHoistableRoot.memoizedState
    	          ? ((previousHoistableRoot = suspenseyCommitFlag),
    	            (suspenseyCommitFlag = 16777216),
    	            recursivelyAccumulateSuspenseyCommit(fiber),
    	            (suspenseyCommitFlag = previousHoistableRoot))
    	          : recursivelyAccumulateSuspenseyCommit(fiber));
    	      break;
    	    default:
    	      recursivelyAccumulateSuspenseyCommit(fiber);
    	  }
    	}
    	function detachAlternateSiblings(parentFiber) {
    	  var previousFiber = parentFiber.alternate;
    	  if (
    	    null !== previousFiber &&
    	    ((parentFiber = previousFiber.child), null !== parentFiber)
    	  ) {
    	    previousFiber.child = null;
    	    do
    	      (previousFiber = parentFiber.sibling),
    	        (parentFiber.sibling = null),
    	        (parentFiber = previousFiber);
    	    while (null !== parentFiber);
    	  }
    	}
    	function recursivelyTraversePassiveUnmountEffects(parentFiber) {
    	  var deletions = parentFiber.deletions;
    	  if (0 !== (parentFiber.flags & 16)) {
    	    if (null !== deletions)
    	      for (var i = 0; i < deletions.length; i++) {
    	        var childToDelete = deletions[i];
    	        nextEffect = childToDelete;
    	        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
    	          childToDelete,
    	          parentFiber
    	        );
    	      }
    	    detachAlternateSiblings(parentFiber);
    	  }
    	  if (parentFiber.subtreeFlags & 10256)
    	    for (parentFiber = parentFiber.child; null !== parentFiber; )
    	      commitPassiveUnmountOnFiber(parentFiber),
    	        (parentFiber = parentFiber.sibling);
    	}
    	function commitPassiveUnmountOnFiber(finishedWork) {
    	  switch (finishedWork.tag) {
    	    case 0:
    	    case 11:
    	    case 15:
    	      recursivelyTraversePassiveUnmountEffects(finishedWork);
    	      finishedWork.flags & 2048 &&
    	        commitHookEffectListUnmount(9, finishedWork, finishedWork.return);
    	      break;
    	    case 3:
    	      recursivelyTraversePassiveUnmountEffects(finishedWork);
    	      break;
    	    case 12:
    	      recursivelyTraversePassiveUnmountEffects(finishedWork);
    	      break;
    	    case 22:
    	      var instance = finishedWork.stateNode;
    	      null !== finishedWork.memoizedState &&
    	      instance._visibility & 2 &&
    	      (null === finishedWork.return || 13 !== finishedWork.return.tag)
    	        ? ((instance._visibility &= -3),
    	          recursivelyTraverseDisconnectPassiveEffects(finishedWork))
    	        : recursivelyTraversePassiveUnmountEffects(finishedWork);
    	      break;
    	    default:
    	      recursivelyTraversePassiveUnmountEffects(finishedWork);
    	  }
    	}
    	function recursivelyTraverseDisconnectPassiveEffects(parentFiber) {
    	  var deletions = parentFiber.deletions;
    	  if (0 !== (parentFiber.flags & 16)) {
    	    if (null !== deletions)
    	      for (var i = 0; i < deletions.length; i++) {
    	        var childToDelete = deletions[i];
    	        nextEffect = childToDelete;
    	        commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
    	          childToDelete,
    	          parentFiber
    	        );
    	      }
    	    detachAlternateSiblings(parentFiber);
    	  }
    	  for (parentFiber = parentFiber.child; null !== parentFiber; ) {
    	    deletions = parentFiber;
    	    switch (deletions.tag) {
    	      case 0:
    	      case 11:
    	      case 15:
    	        commitHookEffectListUnmount(8, deletions, deletions.return);
    	        recursivelyTraverseDisconnectPassiveEffects(deletions);
    	        break;
    	      case 22:
    	        i = deletions.stateNode;
    	        i._visibility & 2 &&
    	          ((i._visibility &= -3),
    	          recursivelyTraverseDisconnectPassiveEffects(deletions));
    	        break;
    	      default:
    	        recursivelyTraverseDisconnectPassiveEffects(deletions);
    	    }
    	    parentFiber = parentFiber.sibling;
    	  }
    	}
    	function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(
    	  deletedSubtreeRoot,
    	  nearestMountedAncestor
    	) {
    	  for (; null !== nextEffect; ) {
    	    var fiber = nextEffect;
    	    switch (fiber.tag) {
    	      case 0:
    	      case 11:
    	      case 15:
    	        commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);
    	        break;
    	      case 23:
    	      case 22:
    	        if (
    	          null !== fiber.memoizedState &&
    	          null !== fiber.memoizedState.cachePool
    	        ) {
    	          var cache = fiber.memoizedState.cachePool.pool;
    	          null != cache && cache.refCount++;
    	        }
    	        break;
    	      case 24:
    	        releaseCache(fiber.memoizedState.cache);
    	    }
    	    cache = fiber.child;
    	    if (null !== cache) (cache.return = fiber), (nextEffect = cache);
    	    else
    	      a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {
    	        cache = nextEffect;
    	        var sibling = cache.sibling,
    	          returnFiber = cache.return;
    	        detachFiberAfterEffects(cache);
    	        if (cache === fiber) {
    	          nextEffect = null;
    	          break a;
    	        }
    	        if (null !== sibling) {
    	          sibling.return = returnFiber;
    	          nextEffect = sibling;
    	          break a;
    	        }
    	        nextEffect = returnFiber;
    	      }
    	  }
    	}
    	var DefaultAsyncDispatcher = {
    	    getCacheForType: function (resourceType) {
    	      var cache = readContext(CacheContext),
    	        cacheForType = cache.data.get(resourceType);
    	      void 0 === cacheForType &&
    	        ((cacheForType = resourceType()),
    	        cache.data.set(resourceType, cacheForType));
    	      return cacheForType;
    	    }
    	  },
    	  PossiblyWeakMap = "function" === typeof WeakMap ? WeakMap : Map,
    	  executionContext = 0,
    	  workInProgressRoot = null,
    	  workInProgress = null,
    	  workInProgressRootRenderLanes = 0,
    	  workInProgressSuspendedReason = 0,
    	  workInProgressThrownValue = null,
    	  workInProgressRootDidSkipSuspendedSiblings = false,
    	  workInProgressRootIsPrerendering = false,
    	  workInProgressRootDidAttachPingListener = false,
    	  entangledRenderLanes = 0,
    	  workInProgressRootExitStatus = 0,
    	  workInProgressRootSkippedLanes = 0,
    	  workInProgressRootInterleavedUpdatedLanes = 0,
    	  workInProgressRootPingedLanes = 0,
    	  workInProgressDeferredLane = 0,
    	  workInProgressSuspendedRetryLanes = 0,
    	  workInProgressRootConcurrentErrors = null,
    	  workInProgressRootRecoverableErrors = null,
    	  workInProgressRootDidIncludeRecursiveRenderUpdate = false,
    	  globalMostRecentFallbackTime = 0,
    	  workInProgressRootRenderTargetTime = Infinity,
    	  workInProgressTransitions = null,
    	  legacyErrorBoundariesThatAlreadyFailed = null,
    	  pendingEffectsStatus = 0,
    	  pendingEffectsRoot = null,
    	  pendingFinishedWork = null,
    	  pendingEffectsLanes = 0,
    	  pendingEffectsRemainingLanes = 0,
    	  pendingPassiveTransitions = null,
    	  pendingRecoverableErrors = null,
    	  nestedUpdateCount = 0,
    	  rootWithNestedUpdates = null;
    	function requestUpdateLane() {
    	  if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)
    	    return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;
    	  if (null !== ReactSharedInternals.T) {
    	    var actionScopeLane = currentEntangledLane;
    	    return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();
    	  }
    	  return resolveUpdatePriority();
    	}
    	function requestDeferredLane() {
    	  0 === workInProgressDeferredLane &&
    	    (workInProgressDeferredLane =
    	      0 === (workInProgressRootRenderLanes & 536870912) || isHydrating
    	        ? claimNextTransitionLane()
    	        : 536870912);
    	  var suspenseHandler = suspenseHandlerStackCursor.current;
    	  null !== suspenseHandler && (suspenseHandler.flags |= 32);
    	  return workInProgressDeferredLane;
    	}
    	function scheduleUpdateOnFiber(root, fiber, lane) {
    	  if (
    	    (root === workInProgressRoot &&
    	      (2 === workInProgressSuspendedReason ||
    	        9 === workInProgressSuspendedReason)) ||
    	    null !== root.cancelPendingCommit
    	  )
    	    prepareFreshStack(root, 0),
    	      markRootSuspended(
    	        root,
    	        workInProgressRootRenderLanes,
    	        workInProgressDeferredLane,
    	        false
    	      );
    	  markRootUpdated$1(root, lane);
    	  if (0 === (executionContext & 2) || root !== workInProgressRoot)
    	    root === workInProgressRoot &&
    	      (0 === (executionContext & 2) &&
    	        (workInProgressRootInterleavedUpdatedLanes |= lane),
    	      4 === workInProgressRootExitStatus &&
    	        markRootSuspended(
    	          root,
    	          workInProgressRootRenderLanes,
    	          workInProgressDeferredLane,
    	          false
    	        )),
    	      ensureRootIsScheduled(root);
    	}
    	function performWorkOnRoot(root$jscomp$0, lanes, forceSync) {
    	  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));
    	  var shouldTimeSlice =
    	      (!forceSync &&
    	        0 === (lanes & 124) &&
    	        0 === (lanes & root$jscomp$0.expiredLanes)) ||
    	      checkIfRootIsPrerendering(root$jscomp$0, lanes),
    	    exitStatus = shouldTimeSlice
    	      ? renderRootConcurrent(root$jscomp$0, lanes)
    	      : renderRootSync(root$jscomp$0, lanes, true),
    	    renderWasConcurrent = shouldTimeSlice;
    	  do {
    	    if (0 === exitStatus) {
    	      workInProgressRootIsPrerendering &&
    	        !shouldTimeSlice &&
    	        markRootSuspended(root$jscomp$0, lanes, 0, false);
    	      break;
    	    } else {
    	      forceSync = root$jscomp$0.current.alternate;
    	      if (
    	        renderWasConcurrent &&
    	        !isRenderConsistentWithExternalStores(forceSync)
    	      ) {
    	        exitStatus = renderRootSync(root$jscomp$0, lanes, false);
    	        renderWasConcurrent = false;
    	        continue;
    	      }
    	      if (2 === exitStatus) {
    	        renderWasConcurrent = lanes;
    	        if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)
    	          var JSCompiler_inline_result = 0;
    	        else
    	          (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),
    	            (JSCompiler_inline_result =
    	              0 !== JSCompiler_inline_result
    	                ? JSCompiler_inline_result
    	                : JSCompiler_inline_result & 536870912
    	                  ? 536870912
    	                  : 0);
    	        if (0 !== JSCompiler_inline_result) {
    	          lanes = JSCompiler_inline_result;
    	          a: {
    	            var root = root$jscomp$0;
    	            exitStatus = workInProgressRootConcurrentErrors;
    	            var wasRootDehydrated = root.current.memoizedState.isDehydrated;
    	            wasRootDehydrated &&
    	              (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);
    	            JSCompiler_inline_result = renderRootSync(
    	              root,
    	              JSCompiler_inline_result,
    	              false
    	            );
    	            if (2 !== JSCompiler_inline_result) {
    	              if (
    	                workInProgressRootDidAttachPingListener &&
    	                !wasRootDehydrated
    	              ) {
    	                root.errorRecoveryDisabledLanes |= renderWasConcurrent;
    	                workInProgressRootInterleavedUpdatedLanes |=
    	                  renderWasConcurrent;
    	                exitStatus = 4;
    	                break a;
    	              }
    	              renderWasConcurrent = workInProgressRootRecoverableErrors;
    	              workInProgressRootRecoverableErrors = exitStatus;
    	              null !== renderWasConcurrent &&
    	                (null === workInProgressRootRecoverableErrors
    	                  ? (workInProgressRootRecoverableErrors = renderWasConcurrent)
    	                  : workInProgressRootRecoverableErrors.push.apply(
    	                      workInProgressRootRecoverableErrors,
    	                      renderWasConcurrent
    	                    ));
    	            }
    	            exitStatus = JSCompiler_inline_result;
    	          }
    	          renderWasConcurrent = false;
    	          if (2 !== exitStatus) continue;
    	        }
    	      }
    	      if (1 === exitStatus) {
    	        prepareFreshStack(root$jscomp$0, 0);
    	        markRootSuspended(root$jscomp$0, lanes, 0, true);
    	        break;
    	      }
    	      a: {
    	        shouldTimeSlice = root$jscomp$0;
    	        renderWasConcurrent = exitStatus;
    	        switch (renderWasConcurrent) {
    	          case 0:
    	          case 1:
    	            throw Error(formatProdErrorMessage(345));
    	          case 4:
    	            if ((lanes & 4194048) !== lanes) break;
    	          case 6:
    	            markRootSuspended(
    	              shouldTimeSlice,
    	              lanes,
    	              workInProgressDeferredLane,
    	              !workInProgressRootDidSkipSuspendedSiblings
    	            );
    	            break a;
    	          case 2:
    	            workInProgressRootRecoverableErrors = null;
    	            break;
    	          case 3:
    	          case 5:
    	            break;
    	          default:
    	            throw Error(formatProdErrorMessage(329));
    	        }
    	        if (
    	          (lanes & 62914560) === lanes &&
    	          ((exitStatus = globalMostRecentFallbackTime + 300 - now()),
    	          10 < exitStatus)
    	        ) {
    	          markRootSuspended(
    	            shouldTimeSlice,
    	            lanes,
    	            workInProgressDeferredLane,
    	            !workInProgressRootDidSkipSuspendedSiblings
    	          );
    	          if (0 !== getNextLanes(shouldTimeSlice, 0, true)) break a;
    	          shouldTimeSlice.timeoutHandle = scheduleTimeout(
    	            commitRootWhenReady.bind(
    	              null,
    	              shouldTimeSlice,
    	              forceSync,
    	              workInProgressRootRecoverableErrors,
    	              workInProgressTransitions,
    	              workInProgressRootDidIncludeRecursiveRenderUpdate,
    	              lanes,
    	              workInProgressDeferredLane,
    	              workInProgressRootInterleavedUpdatedLanes,
    	              workInProgressSuspendedRetryLanes,
    	              workInProgressRootDidSkipSuspendedSiblings,
    	              renderWasConcurrent,
    	              2,
    	              -0,
    	              0
    	            ),
    	            exitStatus
    	          );
    	          break a;
    	        }
    	        commitRootWhenReady(
    	          shouldTimeSlice,
    	          forceSync,
    	          workInProgressRootRecoverableErrors,
    	          workInProgressTransitions,
    	          workInProgressRootDidIncludeRecursiveRenderUpdate,
    	          lanes,
    	          workInProgressDeferredLane,
    	          workInProgressRootInterleavedUpdatedLanes,
    	          workInProgressSuspendedRetryLanes,
    	          workInProgressRootDidSkipSuspendedSiblings,
    	          renderWasConcurrent,
    	          0,
    	          -0,
    	          0
    	        );
    	      }
    	    }
    	    break;
    	  } while (1);
    	  ensureRootIsScheduled(root$jscomp$0);
    	}
    	function commitRootWhenReady(
    	  root,
    	  finishedWork,
    	  recoverableErrors,
    	  transitions,
    	  didIncludeRenderPhaseUpdate,
    	  lanes,
    	  spawnedLane,
    	  updatedLanes,
    	  suspendedRetryLanes,
    	  didSkipSuspendedSiblings,
    	  exitStatus,
    	  suspendedCommitReason,
    	  completedRenderStartTime,
    	  completedRenderEndTime
    	) {
    	  root.timeoutHandle = -1;
    	  suspendedCommitReason = finishedWork.subtreeFlags;
    	  if (
    	    suspendedCommitReason & 8192 ||
    	    16785408 === (suspendedCommitReason & 16785408)
    	  )
    	    if (
    	      ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),
    	      accumulateSuspenseyCommitOnFiber(finishedWork),
    	      (suspendedCommitReason = waitForCommitToBeReady()),
    	      null !== suspendedCommitReason)
    	    ) {
    	      root.cancelPendingCommit = suspendedCommitReason(
    	        commitRoot.bind(
    	          null,
    	          root,
    	          finishedWork,
    	          lanes,
    	          recoverableErrors,
    	          transitions,
    	          didIncludeRenderPhaseUpdate,
    	          spawnedLane,
    	          updatedLanes,
    	          suspendedRetryLanes,
    	          exitStatus,
    	          1,
    	          completedRenderStartTime,
    	          completedRenderEndTime
    	        )
    	      );
    	      markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);
    	      return;
    	    }
    	  commitRoot(
    	    root,
    	    finishedWork,
    	    lanes,
    	    recoverableErrors,
    	    transitions,
    	    didIncludeRenderPhaseUpdate,
    	    spawnedLane,
    	    updatedLanes,
    	    suspendedRetryLanes
    	  );
    	}
    	function isRenderConsistentWithExternalStores(finishedWork) {
    	  for (var node = finishedWork; ; ) {
    	    var tag = node.tag;
    	    if (
    	      (0 === tag || 11 === tag || 15 === tag) &&
    	      node.flags & 16384 &&
    	      ((tag = node.updateQueue),
    	      null !== tag && ((tag = tag.stores), null !== tag))
    	    )
    	      for (var i = 0; i < tag.length; i++) {
    	        var check = tag[i],
    	          getSnapshot = check.getSnapshot;
    	        check = check.value;
    	        try {
    	          if (!objectIs(getSnapshot(), check)) return !1;
    	        } catch (error) {
    	          return false;
    	        }
    	      }
    	    tag = node.child;
    	    if (node.subtreeFlags & 16384 && null !== tag)
    	      (tag.return = node), (node = tag);
    	    else {
    	      if (node === finishedWork) break;
    	      for (; null === node.sibling; ) {
    	        if (null === node.return || node.return === finishedWork) return true;
    	        node = node.return;
    	      }
    	      node.sibling.return = node.return;
    	      node = node.sibling;
    	    }
    	  }
    	  return true;
    	}
    	function markRootSuspended(
    	  root,
    	  suspendedLanes,
    	  spawnedLane,
    	  didAttemptEntireTree
    	) {
    	  suspendedLanes &= ~workInProgressRootPingedLanes;
    	  suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;
    	  root.suspendedLanes |= suspendedLanes;
    	  root.pingedLanes &= ~suspendedLanes;
    	  didAttemptEntireTree && (root.warmLanes |= suspendedLanes);
    	  didAttemptEntireTree = root.expirationTimes;
    	  for (var lanes = suspendedLanes; 0 < lanes; ) {
    	    var index$4 = 31 - clz32(lanes),
    	      lane = 1 << index$4;
    	    didAttemptEntireTree[index$4] = -1;
    	    lanes &= ~lane;
    	  }
    	  0 !== spawnedLane &&
    	    markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);
    	}
    	function flushSyncWork$1() {
    	  return 0 === (executionContext & 6)
    	    ? (flushSyncWorkAcrossRoots_impl(0), false)
    	    : true;
    	}
    	function resetWorkInProgressStack() {
    	  if (null !== workInProgress) {
    	    if (0 === workInProgressSuspendedReason)
    	      var interruptedWork = workInProgress.return;
    	    else
    	      (interruptedWork = workInProgress),
    	        (lastContextDependency = currentlyRenderingFiber$1 = null),
    	        resetHooksOnUnwind(interruptedWork),
    	        (thenableState = null),
    	        (thenableIndexCounter = 0),
    	        (interruptedWork = workInProgress);
    	    for (; null !== interruptedWork; )
    	      unwindInterruptedWork(interruptedWork.alternate, interruptedWork),
    	        (interruptedWork = interruptedWork.return);
    	    workInProgress = null;
    	  }
    	}
    	function prepareFreshStack(root, lanes) {
    	  var timeoutHandle = root.timeoutHandle;
    	  -1 !== timeoutHandle &&
    	    ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));
    	  timeoutHandle = root.cancelPendingCommit;
    	  null !== timeoutHandle &&
    	    ((root.cancelPendingCommit = null), timeoutHandle());
    	  resetWorkInProgressStack();
    	  workInProgressRoot = root;
    	  workInProgress = timeoutHandle = createWorkInProgress(root.current, null);
    	  workInProgressRootRenderLanes = lanes;
    	  workInProgressSuspendedReason = 0;
    	  workInProgressThrownValue = null;
    	  workInProgressRootDidSkipSuspendedSiblings = false;
    	  workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);
    	  workInProgressRootDidAttachPingListener = false;
    	  workInProgressSuspendedRetryLanes =
    	    workInProgressDeferredLane =
    	    workInProgressRootPingedLanes =
    	    workInProgressRootInterleavedUpdatedLanes =
    	    workInProgressRootSkippedLanes =
    	    workInProgressRootExitStatus =
    	      0;
    	  workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =
    	    null;
    	  workInProgressRootDidIncludeRecursiveRenderUpdate = false;
    	  0 !== (lanes & 8) && (lanes |= lanes & 32);
    	  var allEntangledLanes = root.entangledLanes;
    	  if (0 !== allEntangledLanes)
    	    for (
    	      root = root.entanglements, allEntangledLanes &= lanes;
    	      0 < allEntangledLanes;

    	    ) {
    	      var index$2 = 31 - clz32(allEntangledLanes),
    	        lane = 1 << index$2;
    	      lanes |= root[index$2];
    	      allEntangledLanes &= ~lane;
    	    }
    	  entangledRenderLanes = lanes;
    	  finishQueueingConcurrentUpdates();
    	  return timeoutHandle;
    	}
    	function handleThrow(root, thrownValue) {
    	  currentlyRenderingFiber = null;
    	  ReactSharedInternals.H = ContextOnlyDispatcher;
    	  thrownValue === SuspenseException || thrownValue === SuspenseActionException
    	    ? ((thrownValue = getSuspendedThenable()),
    	      (workInProgressSuspendedReason = 3))
    	    : thrownValue === SuspenseyCommitException
    	      ? ((thrownValue = getSuspendedThenable()),
    	        (workInProgressSuspendedReason = 4))
    	      : (workInProgressSuspendedReason =
    	          thrownValue === SelectiveHydrationException
    	            ? 8
    	            : null !== thrownValue &&
    	                "object" === typeof thrownValue &&
    	                "function" === typeof thrownValue.then
    	              ? 6
    	              : 1);
    	  workInProgressThrownValue = thrownValue;
    	  null === workInProgress &&
    	    ((workInProgressRootExitStatus = 1),
    	    logUncaughtError(
    	      root,
    	      createCapturedValueAtFiber(thrownValue, root.current)
    	    ));
    	}
    	function pushDispatcher() {
    	  var prevDispatcher = ReactSharedInternals.H;
    	  ReactSharedInternals.H = ContextOnlyDispatcher;
    	  return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;
    	}
    	function pushAsyncDispatcher() {
    	  var prevAsyncDispatcher = ReactSharedInternals.A;
    	  ReactSharedInternals.A = DefaultAsyncDispatcher;
    	  return prevAsyncDispatcher;
    	}
    	function renderDidSuspendDelayIfPossible() {
    	  workInProgressRootExitStatus = 4;
    	  workInProgressRootDidSkipSuspendedSiblings ||
    	    ((workInProgressRootRenderLanes & 4194048) !==
    	      workInProgressRootRenderLanes &&
    	      null !== suspenseHandlerStackCursor.current) ||
    	    (workInProgressRootIsPrerendering = true);
    	  (0 === (workInProgressRootSkippedLanes & 134217727) &&
    	    0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||
    	    null === workInProgressRoot ||
    	    markRootSuspended(
    	      workInProgressRoot,
    	      workInProgressRootRenderLanes,
    	      workInProgressDeferredLane,
    	      false
    	    );
    	}
    	function renderRootSync(root, lanes, shouldYieldForPrerendering) {
    	  var prevExecutionContext = executionContext;
    	  executionContext |= 2;
    	  var prevDispatcher = pushDispatcher(),
    	    prevAsyncDispatcher = pushAsyncDispatcher();
    	  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)
    	    (workInProgressTransitions = null), prepareFreshStack(root, lanes);
    	  lanes = false;
    	  var exitStatus = workInProgressRootExitStatus;
    	  a: do
    	    try {
    	      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {
    	        var unitOfWork = workInProgress,
    	          thrownValue = workInProgressThrownValue;
    	        switch (workInProgressSuspendedReason) {
    	          case 8:
    	            resetWorkInProgressStack();
    	            exitStatus = 6;
    	            break a;
    	          case 3:
    	          case 2:
    	          case 9:
    	          case 6:
    	            null === suspenseHandlerStackCursor.current && (lanes = !0);
    	            var reason = workInProgressSuspendedReason;
    	            workInProgressSuspendedReason = 0;
    	            workInProgressThrownValue = null;
    	            throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);
    	            if (
    	              shouldYieldForPrerendering &&
    	              workInProgressRootIsPrerendering
    	            ) {
    	              exitStatus = 0;
    	              break a;
    	            }
    	            break;
    	          default:
    	            (reason = workInProgressSuspendedReason),
    	              (workInProgressSuspendedReason = 0),
    	              (workInProgressThrownValue = null),
    	              throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);
    	        }
    	      }
    	      workLoopSync();
    	      exitStatus = workInProgressRootExitStatus;
    	      break;
    	    } catch (thrownValue$167) {
    	      handleThrow(root, thrownValue$167);
    	    }
    	  while (1);
    	  lanes && root.shellSuspendCounter++;
    	  lastContextDependency = currentlyRenderingFiber$1 = null;
    	  executionContext = prevExecutionContext;
    	  ReactSharedInternals.H = prevDispatcher;
    	  ReactSharedInternals.A = prevAsyncDispatcher;
    	  null === workInProgress &&
    	    ((workInProgressRoot = null),
    	    (workInProgressRootRenderLanes = 0),
    	    finishQueueingConcurrentUpdates());
    	  return exitStatus;
    	}
    	function workLoopSync() {
    	  for (; null !== workInProgress; ) performUnitOfWork(workInProgress);
    	}
    	function renderRootConcurrent(root, lanes) {
    	  var prevExecutionContext = executionContext;
    	  executionContext |= 2;
    	  var prevDispatcher = pushDispatcher(),
    	    prevAsyncDispatcher = pushAsyncDispatcher();
    	  workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes
    	    ? ((workInProgressTransitions = null),
    	      (workInProgressRootRenderTargetTime = now() + 500),
    	      prepareFreshStack(root, lanes))
    	    : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(
    	        root,
    	        lanes
    	      ));
    	  a: do
    	    try {
    	      if (0 !== workInProgressSuspendedReason && null !== workInProgress) {
    	        lanes = workInProgress;
    	        var thrownValue = workInProgressThrownValue;
    	        b: switch (workInProgressSuspendedReason) {
    	          case 1:
    	            workInProgressSuspendedReason = 0;
    	            workInProgressThrownValue = null;
    	            throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);
    	            break;
    	          case 2:
    	          case 9:
    	            if (isThenableResolved(thrownValue)) {
    	              workInProgressSuspendedReason = 0;
    	              workInProgressThrownValue = null;
    	              replaySuspendedUnitOfWork(lanes);
    	              break;
    	            }
    	            lanes = function () {
    	              (2 !== workInProgressSuspendedReason &&
    	                9 !== workInProgressSuspendedReason) ||
    	                workInProgressRoot !== root ||
    	                (workInProgressSuspendedReason = 7);
    	              ensureRootIsScheduled(root);
    	            };
    	            thrownValue.then(lanes, lanes);
    	            break a;
    	          case 3:
    	            workInProgressSuspendedReason = 7;
    	            break a;
    	          case 4:
    	            workInProgressSuspendedReason = 5;
    	            break a;
    	          case 7:
    	            isThenableResolved(thrownValue)
    	              ? ((workInProgressSuspendedReason = 0),
    	                (workInProgressThrownValue = null),
    	                replaySuspendedUnitOfWork(lanes))
    	              : ((workInProgressSuspendedReason = 0),
    	                (workInProgressThrownValue = null),
    	                throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));
    	            break;
    	          case 5:
    	            var resource = null;
    	            switch (workInProgress.tag) {
    	              case 26:
    	                resource = workInProgress.memoizedState;
    	              case 5:
    	              case 27:
    	                var hostFiber = workInProgress;
    	                if (resource ? preloadResource(resource) : 1) {
    	                  workInProgressSuspendedReason = 0;
    	                  workInProgressThrownValue = null;
    	                  var sibling = hostFiber.sibling;
    	                  if (null !== sibling) workInProgress = sibling;
    	                  else {
    	                    var returnFiber = hostFiber.return;
    	                    null !== returnFiber
    	                      ? ((workInProgress = returnFiber),
    	                        completeUnitOfWork(returnFiber))
    	                      : (workInProgress = null);
    	                  }
    	                  break b;
    	                }
    	            }
    	            workInProgressSuspendedReason = 0;
    	            workInProgressThrownValue = null;
    	            throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);
    	            break;
    	          case 6:
    	            workInProgressSuspendedReason = 0;
    	            workInProgressThrownValue = null;
    	            throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);
    	            break;
    	          case 8:
    	            resetWorkInProgressStack();
    	            workInProgressRootExitStatus = 6;
    	            break a;
    	          default:
    	            throw Error(formatProdErrorMessage(462));
    	        }
    	      }
    	      workLoopConcurrentByScheduler();
    	      break;
    	    } catch (thrownValue$169) {
    	      handleThrow(root, thrownValue$169);
    	    }
    	  while (1);
    	  lastContextDependency = currentlyRenderingFiber$1 = null;
    	  ReactSharedInternals.H = prevDispatcher;
    	  ReactSharedInternals.A = prevAsyncDispatcher;
    	  executionContext = prevExecutionContext;
    	  if (null !== workInProgress) return 0;
    	  workInProgressRoot = null;
    	  workInProgressRootRenderLanes = 0;
    	  finishQueueingConcurrentUpdates();
    	  return workInProgressRootExitStatus;
    	}
    	function workLoopConcurrentByScheduler() {
    	  for (; null !== workInProgress && !shouldYield(); )
    	    performUnitOfWork(workInProgress);
    	}
    	function performUnitOfWork(unitOfWork) {
    	  var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);
    	  unitOfWork.memoizedProps = unitOfWork.pendingProps;
    	  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);
    	}
    	function replaySuspendedUnitOfWork(unitOfWork) {
    	  var next = unitOfWork;
    	  var current = next.alternate;
    	  switch (next.tag) {
    	    case 15:
    	    case 0:
    	      next = replayFunctionComponent(
    	        current,
    	        next,
    	        next.pendingProps,
    	        next.type,
    	        void 0,
    	        workInProgressRootRenderLanes
    	      );
    	      break;
    	    case 11:
    	      next = replayFunctionComponent(
    	        current,
    	        next,
    	        next.pendingProps,
    	        next.type.render,
    	        next.ref,
    	        workInProgressRootRenderLanes
    	      );
    	      break;
    	    case 5:
    	      resetHooksOnUnwind(next);
    	    default:
    	      unwindInterruptedWork(current, next),
    	        (next = workInProgress =
    	          resetWorkInProgress(next, entangledRenderLanes)),
    	        (next = beginWork(current, next, entangledRenderLanes));
    	  }
    	  unitOfWork.memoizedProps = unitOfWork.pendingProps;
    	  null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);
    	}
    	function throwAndUnwindWorkLoop(
    	  root,
    	  unitOfWork,
    	  thrownValue,
    	  suspendedReason
    	) {
    	  lastContextDependency = currentlyRenderingFiber$1 = null;
    	  resetHooksOnUnwind(unitOfWork);
    	  thenableState = null;
    	  thenableIndexCounter = 0;
    	  var returnFiber = unitOfWork.return;
    	  try {
    	    if (
    	      throwException(
    	        root,
    	        returnFiber,
    	        unitOfWork,
    	        thrownValue,
    	        workInProgressRootRenderLanes
    	      )
    	    ) {
    	      workInProgressRootExitStatus = 1;
    	      logUncaughtError(
    	        root,
    	        createCapturedValueAtFiber(thrownValue, root.current)
    	      );
    	      workInProgress = null;
    	      return;
    	    }
    	  } catch (error) {
    	    if (null !== returnFiber) throw ((workInProgress = returnFiber), error);
    	    workInProgressRootExitStatus = 1;
    	    logUncaughtError(
    	      root,
    	      createCapturedValueAtFiber(thrownValue, root.current)
    	    );
    	    workInProgress = null;
    	    return;
    	  }
    	  if (unitOfWork.flags & 32768) {
    	    if (isHydrating || 1 === suspendedReason) root = true;
    	    else if (
    	      workInProgressRootIsPrerendering ||
    	      0 !== (workInProgressRootRenderLanes & 536870912)
    	    )
    	      root = false;
    	    else if (
    	      ((workInProgressRootDidSkipSuspendedSiblings = root = true),
    	      2 === suspendedReason ||
    	        9 === suspendedReason ||
    	        3 === suspendedReason ||
    	        6 === suspendedReason)
    	    )
    	      (suspendedReason = suspenseHandlerStackCursor.current),
    	        null !== suspendedReason &&
    	          13 === suspendedReason.tag &&
    	          (suspendedReason.flags |= 16384);
    	    unwindUnitOfWork(unitOfWork, root);
    	  } else completeUnitOfWork(unitOfWork);
    	}
    	function completeUnitOfWork(unitOfWork) {
    	  var completedWork = unitOfWork;
    	  do {
    	    if (0 !== (completedWork.flags & 32768)) {
    	      unwindUnitOfWork(
    	        completedWork,
    	        workInProgressRootDidSkipSuspendedSiblings
    	      );
    	      return;
    	    }
    	    unitOfWork = completedWork.return;
    	    var next = completeWork(
    	      completedWork.alternate,
    	      completedWork,
    	      entangledRenderLanes
    	    );
    	    if (null !== next) {
    	      workInProgress = next;
    	      return;
    	    }
    	    completedWork = completedWork.sibling;
    	    if (null !== completedWork) {
    	      workInProgress = completedWork;
    	      return;
    	    }
    	    workInProgress = completedWork = unitOfWork;
    	  } while (null !== completedWork);
    	  0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);
    	}
    	function unwindUnitOfWork(unitOfWork, skipSiblings) {
    	  do {
    	    var next = unwindWork(unitOfWork.alternate, unitOfWork);
    	    if (null !== next) {
    	      next.flags &= 32767;
    	      workInProgress = next;
    	      return;
    	    }
    	    next = unitOfWork.return;
    	    null !== next &&
    	      ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));
    	    if (
    	      !skipSiblings &&
    	      ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)
    	    ) {
    	      workInProgress = unitOfWork;
    	      return;
    	    }
    	    workInProgress = unitOfWork = next;
    	  } while (null !== unitOfWork);
    	  workInProgressRootExitStatus = 6;
    	  workInProgress = null;
    	}
    	function commitRoot(
    	  root,
    	  finishedWork,
    	  lanes,
    	  recoverableErrors,
    	  transitions,
    	  didIncludeRenderPhaseUpdate,
    	  spawnedLane,
    	  updatedLanes,
    	  suspendedRetryLanes
    	) {
    	  root.cancelPendingCommit = null;
    	  do flushPendingEffects();
    	  while (0 !== pendingEffectsStatus);
    	  if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));
    	  if (null !== finishedWork) {
    	    if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));
    	    didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;
    	    didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;
    	    markRootFinished(
    	      root,
    	      lanes,
    	      didIncludeRenderPhaseUpdate,
    	      spawnedLane,
    	      updatedLanes,
    	      suspendedRetryLanes
    	    );
    	    root === workInProgressRoot &&
    	      ((workInProgress = workInProgressRoot = null),
    	      (workInProgressRootRenderLanes = 0));
    	    pendingFinishedWork = finishedWork;
    	    pendingEffectsRoot = root;
    	    pendingEffectsLanes = lanes;
    	    pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;
    	    pendingPassiveTransitions = transitions;
    	    pendingRecoverableErrors = recoverableErrors;
    	    0 !== (finishedWork.subtreeFlags & 10256) ||
    	    0 !== (finishedWork.flags & 10256)
    	      ? ((root.callbackNode = null),
    	        (root.callbackPriority = 0),
    	        scheduleCallback$1(NormalPriority$1, function () {
    	          flushPassiveEffects();
    	          return null;
    	        }))
    	      : ((root.callbackNode = null), (root.callbackPriority = 0));
    	    recoverableErrors = 0 !== (finishedWork.flags & 13878);
    	    if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {
    	      recoverableErrors = ReactSharedInternals.T;
    	      ReactSharedInternals.T = null;
    	      transitions = ReactDOMSharedInternals.p;
    	      ReactDOMSharedInternals.p = 2;
    	      spawnedLane = executionContext;
    	      executionContext |= 4;
    	      try {
    	        commitBeforeMutationEffects(root, finishedWork, lanes);
    	      } finally {
    	        (executionContext = spawnedLane),
    	          (ReactDOMSharedInternals.p = transitions),
    	          (ReactSharedInternals.T = recoverableErrors);
    	      }
    	    }
    	    pendingEffectsStatus = 1;
    	    flushMutationEffects();
    	    flushLayoutEffects();
    	    flushSpawnedWork();
    	  }
    	}
    	function flushMutationEffects() {
    	  if (1 === pendingEffectsStatus) {
    	    pendingEffectsStatus = 0;
    	    var root = pendingEffectsRoot,
    	      finishedWork = pendingFinishedWork,
    	      rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);
    	    if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {
    	      rootMutationHasEffect = ReactSharedInternals.T;
    	      ReactSharedInternals.T = null;
    	      var previousPriority = ReactDOMSharedInternals.p;
    	      ReactDOMSharedInternals.p = 2;
    	      var prevExecutionContext = executionContext;
    	      executionContext |= 4;
    	      try {
    	        commitMutationEffectsOnFiber(finishedWork, root);
    	        var priorSelectionInformation = selectionInformation,
    	          curFocusedElem = getActiveElementDeep(root.containerInfo),
    	          priorFocusedElem = priorSelectionInformation.focusedElem,
    	          priorSelectionRange = priorSelectionInformation.selectionRange;
    	        if (
    	          curFocusedElem !== priorFocusedElem &&
    	          priorFocusedElem &&
    	          priorFocusedElem.ownerDocument &&
    	          containsNode(
    	            priorFocusedElem.ownerDocument.documentElement,
    	            priorFocusedElem
    	          )
    	        ) {
    	          if (
    	            null !== priorSelectionRange &&
    	            hasSelectionCapabilities(priorFocusedElem)
    	          ) {
    	            var start = priorSelectionRange.start,
    	              end = priorSelectionRange.end;
    	            void 0 === end && (end = start);
    	            if ("selectionStart" in priorFocusedElem)
    	              (priorFocusedElem.selectionStart = start),
    	                (priorFocusedElem.selectionEnd = Math.min(
    	                  end,
    	                  priorFocusedElem.value.length
    	                ));
    	            else {
    	              var doc = priorFocusedElem.ownerDocument || document,
    	                win = (doc && doc.defaultView) || window;
    	              if (win.getSelection) {
    	                var selection = win.getSelection(),
    	                  length = priorFocusedElem.textContent.length,
    	                  start$jscomp$0 = Math.min(priorSelectionRange.start, length),
    	                  end$jscomp$0 =
    	                    void 0 === priorSelectionRange.end
    	                      ? start$jscomp$0
    	                      : Math.min(priorSelectionRange.end, length);
    	                !selection.extend &&
    	                  start$jscomp$0 > end$jscomp$0 &&
    	                  ((curFocusedElem = end$jscomp$0),
    	                  (end$jscomp$0 = start$jscomp$0),
    	                  (start$jscomp$0 = curFocusedElem));
    	                var startMarker = getNodeForCharacterOffset(
    	                    priorFocusedElem,
    	                    start$jscomp$0
    	                  ),
    	                  endMarker = getNodeForCharacterOffset(
    	                    priorFocusedElem,
    	                    end$jscomp$0
    	                  );
    	                if (
    	                  startMarker &&
    	                  endMarker &&
    	                  (1 !== selection.rangeCount ||
    	                    selection.anchorNode !== startMarker.node ||
    	                    selection.anchorOffset !== startMarker.offset ||
    	                    selection.focusNode !== endMarker.node ||
    	                    selection.focusOffset !== endMarker.offset)
    	                ) {
    	                  var range = doc.createRange();
    	                  range.setStart(startMarker.node, startMarker.offset);
    	                  selection.removeAllRanges();
    	                  start$jscomp$0 > end$jscomp$0
    	                    ? (selection.addRange(range),
    	                      selection.extend(endMarker.node, endMarker.offset))
    	                    : (range.setEnd(endMarker.node, endMarker.offset),
    	                      selection.addRange(range));
    	                }
    	              }
    	            }
    	          }
    	          doc = [];
    	          for (
    	            selection = priorFocusedElem;
    	            (selection = selection.parentNode);

    	          )
    	            1 === selection.nodeType &&
    	              doc.push({
    	                element: selection,
    	                left: selection.scrollLeft,
    	                top: selection.scrollTop
    	              });
    	          "function" === typeof priorFocusedElem.focus &&
    	            priorFocusedElem.focus();
    	          for (
    	            priorFocusedElem = 0;
    	            priorFocusedElem < doc.length;
    	            priorFocusedElem++
    	          ) {
    	            var info = doc[priorFocusedElem];
    	            info.element.scrollLeft = info.left;
    	            info.element.scrollTop = info.top;
    	          }
    	        }
    	        _enabled = !!eventsEnabled;
    	        selectionInformation = eventsEnabled = null;
    	      } finally {
    	        (executionContext = prevExecutionContext),
    	          (ReactDOMSharedInternals.p = previousPriority),
    	          (ReactSharedInternals.T = rootMutationHasEffect);
    	      }
    	    }
    	    root.current = finishedWork;
    	    pendingEffectsStatus = 2;
    	  }
    	}
    	function flushLayoutEffects() {
    	  if (2 === pendingEffectsStatus) {
    	    pendingEffectsStatus = 0;
    	    var root = pendingEffectsRoot,
    	      finishedWork = pendingFinishedWork,
    	      rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);
    	    if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {
    	      rootHasLayoutEffect = ReactSharedInternals.T;
    	      ReactSharedInternals.T = null;
    	      var previousPriority = ReactDOMSharedInternals.p;
    	      ReactDOMSharedInternals.p = 2;
    	      var prevExecutionContext = executionContext;
    	      executionContext |= 4;
    	      try {
    	        commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);
    	      } finally {
    	        (executionContext = prevExecutionContext),
    	          (ReactDOMSharedInternals.p = previousPriority),
    	          (ReactSharedInternals.T = rootHasLayoutEffect);
    	      }
    	    }
    	    pendingEffectsStatus = 3;
    	  }
    	}
    	function flushSpawnedWork() {
    	  if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {
    	    pendingEffectsStatus = 0;
    	    requestPaint();
    	    var root = pendingEffectsRoot,
    	      finishedWork = pendingFinishedWork,
    	      lanes = pendingEffectsLanes,
    	      recoverableErrors = pendingRecoverableErrors;
    	    0 !== (finishedWork.subtreeFlags & 10256) ||
    	    0 !== (finishedWork.flags & 10256)
    	      ? (pendingEffectsStatus = 5)
    	      : ((pendingEffectsStatus = 0),
    	        (pendingFinishedWork = pendingEffectsRoot = null),
    	        releaseRootPooledCache(root, root.pendingLanes));
    	    var remainingLanes = root.pendingLanes;
    	    0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);
    	    lanesToEventPriority(lanes);
    	    finishedWork = finishedWork.stateNode;
    	    if (injectedHook && "function" === typeof injectedHook.onCommitFiberRoot)
    	      try {
    	        injectedHook.onCommitFiberRoot(
    	          rendererID,
    	          finishedWork,
    	          void 0,
    	          128 === (finishedWork.current.flags & 128)
    	        );
    	      } catch (err) {}
    	    if (null !== recoverableErrors) {
    	      finishedWork = ReactSharedInternals.T;
    	      remainingLanes = ReactDOMSharedInternals.p;
    	      ReactDOMSharedInternals.p = 2;
    	      ReactSharedInternals.T = null;
    	      try {
    	        for (
    	          var onRecoverableError = root.onRecoverableError, i = 0;
    	          i < recoverableErrors.length;
    	          i++
    	        ) {
    	          var recoverableError = recoverableErrors[i];
    	          onRecoverableError(recoverableError.value, {
    	            componentStack: recoverableError.stack
    	          });
    	        }
    	      } finally {
    	        (ReactSharedInternals.T = finishedWork),
    	          (ReactDOMSharedInternals.p = remainingLanes);
    	      }
    	    }
    	    0 !== (pendingEffectsLanes & 3) && flushPendingEffects();
    	    ensureRootIsScheduled(root);
    	    remainingLanes = root.pendingLanes;
    	    0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)
    	      ? root === rootWithNestedUpdates
    	        ? nestedUpdateCount++
    	        : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))
    	      : (nestedUpdateCount = 0);
    	    flushSyncWorkAcrossRoots_impl(0);
    	  }
    	}
    	function releaseRootPooledCache(root, remainingLanes) {
    	  0 === (root.pooledCacheLanes &= remainingLanes) &&
    	    ((remainingLanes = root.pooledCache),
    	    null != remainingLanes &&
    	      ((root.pooledCache = null), releaseCache(remainingLanes)));
    	}
    	function flushPendingEffects(wasDelayedCommit) {
    	  flushMutationEffects();
    	  flushLayoutEffects();
    	  flushSpawnedWork();
    	  return flushPassiveEffects();
    	}
    	function flushPassiveEffects() {
    	  if (5 !== pendingEffectsStatus) return false;
    	  var root = pendingEffectsRoot,
    	    remainingLanes = pendingEffectsRemainingLanes;
    	  pendingEffectsRemainingLanes = 0;
    	  var renderPriority = lanesToEventPriority(pendingEffectsLanes),
    	    prevTransition = ReactSharedInternals.T,
    	    previousPriority = ReactDOMSharedInternals.p;
    	  try {
    	    ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;
    	    ReactSharedInternals.T = null;
    	    renderPriority = pendingPassiveTransitions;
    	    pendingPassiveTransitions = null;
    	    var root$jscomp$0 = pendingEffectsRoot,
    	      lanes = pendingEffectsLanes;
    	    pendingEffectsStatus = 0;
    	    pendingFinishedWork = pendingEffectsRoot = null;
    	    pendingEffectsLanes = 0;
    	    if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));
    	    var prevExecutionContext = executionContext;
    	    executionContext |= 4;
    	    commitPassiveUnmountOnFiber(root$jscomp$0.current);
    	    commitPassiveMountOnFiber(
    	      root$jscomp$0,
    	      root$jscomp$0.current,
    	      lanes,
    	      renderPriority
    	    );
    	    executionContext = prevExecutionContext;
    	    flushSyncWorkAcrossRoots_impl(0, !1);
    	    if (
    	      injectedHook &&
    	      "function" === typeof injectedHook.onPostCommitFiberRoot
    	    )
    	      try {
    	        injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);
    	      } catch (err) {}
    	    return !0;
    	  } finally {
    	    (ReactDOMSharedInternals.p = previousPriority),
    	      (ReactSharedInternals.T = prevTransition),
    	      releaseRootPooledCache(root, remainingLanes);
    	  }
    	}
    	function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {
    	  sourceFiber = createCapturedValueAtFiber(error, sourceFiber);
    	  sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);
    	  rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);
    	  null !== rootFiber &&
    	    (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));
    	}
    	function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {
    	  if (3 === sourceFiber.tag)
    	    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);
    	  else
    	    for (; null !== nearestMountedAncestor; ) {
    	      if (3 === nearestMountedAncestor.tag) {
    	        captureCommitPhaseErrorOnRoot(
    	          nearestMountedAncestor,
    	          sourceFiber,
    	          error
    	        );
    	        break;
    	      } else if (1 === nearestMountedAncestor.tag) {
    	        var instance = nearestMountedAncestor.stateNode;
    	        if (
    	          "function" ===
    	            typeof nearestMountedAncestor.type.getDerivedStateFromError ||
    	          ("function" === typeof instance.componentDidCatch &&
    	            (null === legacyErrorBoundariesThatAlreadyFailed ||
    	              !legacyErrorBoundariesThatAlreadyFailed.has(instance)))
    	        ) {
    	          sourceFiber = createCapturedValueAtFiber(error, sourceFiber);
    	          error = createClassErrorUpdate(2);
    	          instance = enqueueUpdate(nearestMountedAncestor, error, 2);
    	          null !== instance &&
    	            (initializeClassErrorUpdate(
    	              error,
    	              instance,
    	              nearestMountedAncestor,
    	              sourceFiber
    	            ),
    	            markRootUpdated$1(instance, 2),
    	            ensureRootIsScheduled(instance));
    	          break;
    	        }
    	      }
    	      nearestMountedAncestor = nearestMountedAncestor.return;
    	    }
    	}
    	function attachPingListener(root, wakeable, lanes) {
    	  var pingCache = root.pingCache;
    	  if (null === pingCache) {
    	    pingCache = root.pingCache = new PossiblyWeakMap();
    	    var threadIDs = new Set();
    	    pingCache.set(wakeable, threadIDs);
    	  } else
    	    (threadIDs = pingCache.get(wakeable)),
    	      void 0 === threadIDs &&
    	        ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));
    	  threadIDs.has(lanes) ||
    	    ((workInProgressRootDidAttachPingListener = true),
    	    threadIDs.add(lanes),
    	    (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),
    	    wakeable.then(root, root));
    	}
    	function pingSuspendedRoot(root, wakeable, pingedLanes) {
    	  var pingCache = root.pingCache;
    	  null !== pingCache && pingCache.delete(wakeable);
    	  root.pingedLanes |= root.suspendedLanes & pingedLanes;
    	  root.warmLanes &= ~pingedLanes;
    	  workInProgressRoot === root &&
    	    (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&
    	    (4 === workInProgressRootExitStatus ||
    	    (3 === workInProgressRootExitStatus &&
    	      (workInProgressRootRenderLanes & 62914560) ===
    	        workInProgressRootRenderLanes &&
    	      300 > now() - globalMostRecentFallbackTime)
    	      ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)
    	      : (workInProgressRootPingedLanes |= pingedLanes),
    	    workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&
    	      (workInProgressSuspendedRetryLanes = 0));
    	  ensureRootIsScheduled(root);
    	}
    	function retryTimedOutBoundary(boundaryFiber, retryLane) {
    	  0 === retryLane && (retryLane = claimNextRetryLane());
    	  boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);
    	  null !== boundaryFiber &&
    	    (markRootUpdated$1(boundaryFiber, retryLane),
    	    ensureRootIsScheduled(boundaryFiber));
    	}
    	function retryDehydratedSuspenseBoundary(boundaryFiber) {
    	  var suspenseState = boundaryFiber.memoizedState,
    	    retryLane = 0;
    	  null !== suspenseState && (retryLane = suspenseState.retryLane);
    	  retryTimedOutBoundary(boundaryFiber, retryLane);
    	}
    	function resolveRetryWakeable(boundaryFiber, wakeable) {
    	  var retryLane = 0;
    	  switch (boundaryFiber.tag) {
    	    case 13:
    	      var retryCache = boundaryFiber.stateNode;
    	      var suspenseState = boundaryFiber.memoizedState;
    	      null !== suspenseState && (retryLane = suspenseState.retryLane);
    	      break;
    	    case 19:
    	      retryCache = boundaryFiber.stateNode;
    	      break;
    	    case 22:
    	      retryCache = boundaryFiber.stateNode._retryCache;
    	      break;
    	    default:
    	      throw Error(formatProdErrorMessage(314));
    	  }
    	  null !== retryCache && retryCache.delete(wakeable);
    	  retryTimedOutBoundary(boundaryFiber, retryLane);
    	}
    	function scheduleCallback$1(priorityLevel, callback) {
    	  return scheduleCallback$3(priorityLevel, callback);
    	}
    	var firstScheduledRoot = null,
    	  lastScheduledRoot = null,
    	  didScheduleMicrotask = false,
    	  mightHavePendingSyncWork = false,
    	  isFlushingWork = false,
    	  currentEventTransitionLane = 0;
    	function ensureRootIsScheduled(root) {
    	  root !== lastScheduledRoot &&
    	    null === root.next &&
    	    (null === lastScheduledRoot
    	      ? (firstScheduledRoot = lastScheduledRoot = root)
    	      : (lastScheduledRoot = lastScheduledRoot.next = root));
    	  mightHavePendingSyncWork = true;
    	  didScheduleMicrotask ||
    	    ((didScheduleMicrotask = true), scheduleImmediateRootScheduleTask());
    	}
    	function flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {
    	  if (!isFlushingWork && mightHavePendingSyncWork) {
    	    isFlushingWork = true;
    	    do {
    	      var didPerformSomeWork = false;
    	      for (var root$174 = firstScheduledRoot; null !== root$174; ) {
    	        if (0 !== syncTransitionLanes) {
    	            var pendingLanes = root$174.pendingLanes;
    	            if (0 === pendingLanes) var JSCompiler_inline_result = 0;
    	            else {
    	              var suspendedLanes = root$174.suspendedLanes,
    	                pingedLanes = root$174.pingedLanes;
    	              JSCompiler_inline_result =
    	                (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;
    	              JSCompiler_inline_result &=
    	                pendingLanes & ~(suspendedLanes & ~pingedLanes);
    	              JSCompiler_inline_result =
    	                JSCompiler_inline_result & 201326741
    	                  ? (JSCompiler_inline_result & 201326741) | 1
    	                  : JSCompiler_inline_result
    	                    ? JSCompiler_inline_result | 2
    	                    : 0;
    	            }
    	            0 !== JSCompiler_inline_result &&
    	              ((didPerformSomeWork = true),
    	              performSyncWorkOnRoot(root$174, JSCompiler_inline_result));
    	          } else
    	            (JSCompiler_inline_result = workInProgressRootRenderLanes),
    	              (JSCompiler_inline_result = getNextLanes(
    	                root$174,
    	                root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,
    	                null !== root$174.cancelPendingCommit ||
    	                  -1 !== root$174.timeoutHandle
    	              )),
    	              0 === (JSCompiler_inline_result & 3) ||
    	                checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||
    	                ((didPerformSomeWork = true),
    	                performSyncWorkOnRoot(root$174, JSCompiler_inline_result));
    	        root$174 = root$174.next;
    	      }
    	    } while (didPerformSomeWork);
    	    isFlushingWork = false;
    	  }
    	}
    	function processRootScheduleInImmediateTask() {
    	  processRootScheduleInMicrotask();
    	}
    	function processRootScheduleInMicrotask() {
    	  mightHavePendingSyncWork = didScheduleMicrotask = false;
    	  var syncTransitionLanes = 0;
    	  0 !== currentEventTransitionLane &&
    	    (shouldAttemptEagerTransition() &&
    	      (syncTransitionLanes = currentEventTransitionLane),
    	    (currentEventTransitionLane = 0));
    	  for (
    	    var currentTime = now(), prev = null, root = firstScheduledRoot;
    	    null !== root;

    	  ) {
    	    var next = root.next,
    	      nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);
    	    if (0 === nextLanes)
    	      (root.next = null),
    	        null === prev ? (firstScheduledRoot = next) : (prev.next = next),
    	        null === next && (lastScheduledRoot = prev);
    	    else if (
    	      ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))
    	    )
    	      mightHavePendingSyncWork = true;
    	    root = next;
    	  }
    	  flushSyncWorkAcrossRoots_impl(syncTransitionLanes);
    	}
    	function scheduleTaskForRootDuringMicrotask(root, currentTime) {
    	  for (
    	    var suspendedLanes = root.suspendedLanes,
    	      pingedLanes = root.pingedLanes,
    	      expirationTimes = root.expirationTimes,
    	      lanes = root.pendingLanes & -62914561;
    	    0 < lanes;

    	  ) {
    	    var index$3 = 31 - clz32(lanes),
    	      lane = 1 << index$3,
    	      expirationTime = expirationTimes[index$3];
    	    if (-1 === expirationTime) {
    	      if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))
    	        expirationTimes[index$3] = computeExpirationTime(lane, currentTime);
    	    } else expirationTime <= currentTime && (root.expiredLanes |= lane);
    	    lanes &= ~lane;
    	  }
    	  currentTime = workInProgressRoot;
    	  suspendedLanes = workInProgressRootRenderLanes;
    	  suspendedLanes = getNextLanes(
    	    root,
    	    root === currentTime ? suspendedLanes : 0,
    	    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle
    	  );
    	  pingedLanes = root.callbackNode;
    	  if (
    	    0 === suspendedLanes ||
    	    (root === currentTime &&
    	      (2 === workInProgressSuspendedReason ||
    	        9 === workInProgressSuspendedReason)) ||
    	    null !== root.cancelPendingCommit
    	  )
    	    return (
    	      null !== pingedLanes &&
    	        null !== pingedLanes &&
    	        cancelCallback$1(pingedLanes),
    	      (root.callbackNode = null),
    	      (root.callbackPriority = 0)
    	    );
    	  if (
    	    0 === (suspendedLanes & 3) ||
    	    checkIfRootIsPrerendering(root, suspendedLanes)
    	  ) {
    	    currentTime = suspendedLanes & -suspendedLanes;
    	    if (currentTime === root.callbackPriority) return currentTime;
    	    null !== pingedLanes && cancelCallback$1(pingedLanes);
    	    switch (lanesToEventPriority(suspendedLanes)) {
    	      case 2:
    	      case 8:
    	        suspendedLanes = UserBlockingPriority;
    	        break;
    	      case 32:
    	        suspendedLanes = NormalPriority$1;
    	        break;
    	      case 268435456:
    	        suspendedLanes = IdlePriority;
    	        break;
    	      default:
    	        suspendedLanes = NormalPriority$1;
    	    }
    	    pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);
    	    suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);
    	    root.callbackPriority = currentTime;
    	    root.callbackNode = suspendedLanes;
    	    return currentTime;
    	  }
    	  null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);
    	  root.callbackPriority = 2;
    	  root.callbackNode = null;
    	  return 2;
    	}
    	function performWorkOnRootViaSchedulerTask(root, didTimeout) {
    	  if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)
    	    return (root.callbackNode = null), (root.callbackPriority = 0), null;
    	  var originalCallbackNode = root.callbackNode;
    	  if (flushPendingEffects() && root.callbackNode !== originalCallbackNode)
    	    return null;
    	  var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;
    	  workInProgressRootRenderLanes$jscomp$0 = getNextLanes(
    	    root,
    	    root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,
    	    null !== root.cancelPendingCommit || -1 !== root.timeoutHandle
    	  );
    	  if (0 === workInProgressRootRenderLanes$jscomp$0) return null;
    	  performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);
    	  scheduleTaskForRootDuringMicrotask(root, now());
    	  return null != root.callbackNode && root.callbackNode === originalCallbackNode
    	    ? performWorkOnRootViaSchedulerTask.bind(null, root)
    	    : null;
    	}
    	function performSyncWorkOnRoot(root, lanes) {
    	  if (flushPendingEffects()) return null;
    	  performWorkOnRoot(root, lanes, true);
    	}
    	function scheduleImmediateRootScheduleTask() {
    	  scheduleMicrotask(function () {
    	    0 !== (executionContext & 6)
    	      ? scheduleCallback$3(
    	          ImmediatePriority,
    	          processRootScheduleInImmediateTask
    	        )
    	      : processRootScheduleInMicrotask();
    	  });
    	}
    	function requestTransitionLane() {
    	  0 === currentEventTransitionLane &&
    	    (currentEventTransitionLane = claimNextTransitionLane());
    	  return currentEventTransitionLane;
    	}
    	function coerceFormActionProp(actionProp) {
    	  return null == actionProp ||
    	    "symbol" === typeof actionProp ||
    	    "boolean" === typeof actionProp
    	    ? null
    	    : "function" === typeof actionProp
    	      ? actionProp
    	      : sanitizeURL("" + actionProp);
    	}
    	function createFormDataWithSubmitter(form, submitter) {
    	  var temp = submitter.ownerDocument.createElement("input");
    	  temp.name = submitter.name;
    	  temp.value = submitter.value;
    	  form.id && temp.setAttribute("form", form.id);
    	  submitter.parentNode.insertBefore(temp, submitter);
    	  form = new FormData(form);
    	  temp.parentNode.removeChild(temp);
    	  return form;
    	}
    	function extractEvents$1(
    	  dispatchQueue,
    	  domEventName,
    	  maybeTargetInst,
    	  nativeEvent,
    	  nativeEventTarget
    	) {
    	  if (
    	    "submit" === domEventName &&
    	    maybeTargetInst &&
    	    maybeTargetInst.stateNode === nativeEventTarget
    	  ) {
    	    var action = coerceFormActionProp(
    	        (nativeEventTarget[internalPropsKey] || null).action
    	      ),
    	      submitter = nativeEvent.submitter;
    	    submitter &&
    	      ((domEventName = (domEventName = submitter[internalPropsKey] || null)
    	        ? coerceFormActionProp(domEventName.formAction)
    	        : submitter.getAttribute("formAction")),
    	      null !== domEventName && ((action = domEventName), (submitter = null)));
    	    var event = new SyntheticEvent(
    	      "action",
    	      "action",
    	      null,
    	      nativeEvent,
    	      nativeEventTarget
    	    );
    	    dispatchQueue.push({
    	      event: event,
    	      listeners: [
    	        {
    	          instance: null,
    	          listener: function () {
    	            if (nativeEvent.defaultPrevented) {
    	              if (0 !== currentEventTransitionLane) {
    	                var formData = submitter
    	                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)
    	                  : new FormData(nativeEventTarget);
    	                startHostTransition(
    	                  maybeTargetInst,
    	                  {
    	                    pending: true,
    	                    data: formData,
    	                    method: nativeEventTarget.method,
    	                    action: action
    	                  },
    	                  null,
    	                  formData
    	                );
    	              }
    	            } else
    	              "function" === typeof action &&
    	                (event.preventDefault(),
    	                (formData = submitter
    	                  ? createFormDataWithSubmitter(nativeEventTarget, submitter)
    	                  : new FormData(nativeEventTarget)),
    	                startHostTransition(
    	                  maybeTargetInst,
    	                  {
    	                    pending: true,
    	                    data: formData,
    	                    method: nativeEventTarget.method,
    	                    action: action
    	                  },
    	                  action,
    	                  formData
    	                ));
    	          },
    	          currentTarget: nativeEventTarget
    	        }
    	      ]
    	    });
    	  }
    	}
    	for (
    	  var i$jscomp$inline_1528 = 0;
    	  i$jscomp$inline_1528 < simpleEventPluginEvents.length;
    	  i$jscomp$inline_1528++
    	) {
    	  var eventName$jscomp$inline_1529 =
    	      simpleEventPluginEvents[i$jscomp$inline_1528],
    	    domEventName$jscomp$inline_1530 =
    	      eventName$jscomp$inline_1529.toLowerCase(),
    	    capitalizedEvent$jscomp$inline_1531 =
    	      eventName$jscomp$inline_1529[0].toUpperCase() +
    	      eventName$jscomp$inline_1529.slice(1);
    	  registerSimpleEvent(
    	    domEventName$jscomp$inline_1530,
    	    "on" + capitalizedEvent$jscomp$inline_1531
    	  );
    	}
    	registerSimpleEvent(ANIMATION_END, "onAnimationEnd");
    	registerSimpleEvent(ANIMATION_ITERATION, "onAnimationIteration");
    	registerSimpleEvent(ANIMATION_START, "onAnimationStart");
    	registerSimpleEvent("dblclick", "onDoubleClick");
    	registerSimpleEvent("focusin", "onFocus");
    	registerSimpleEvent("focusout", "onBlur");
    	registerSimpleEvent(TRANSITION_RUN, "onTransitionRun");
    	registerSimpleEvent(TRANSITION_START, "onTransitionStart");
    	registerSimpleEvent(TRANSITION_CANCEL, "onTransitionCancel");
    	registerSimpleEvent(TRANSITION_END, "onTransitionEnd");
    	registerDirectEvent("onMouseEnter", ["mouseout", "mouseover"]);
    	registerDirectEvent("onMouseLeave", ["mouseout", "mouseover"]);
    	registerDirectEvent("onPointerEnter", ["pointerout", "pointerover"]);
    	registerDirectEvent("onPointerLeave", ["pointerout", "pointerover"]);
    	registerTwoPhaseEvent(
    	  "onChange",
    	  "change click focusin focusout input keydown keyup selectionchange".split(" ")
    	);
    	registerTwoPhaseEvent(
    	  "onSelect",
    	  "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(
    	    " "
    	  )
    	);
    	registerTwoPhaseEvent("onBeforeInput", [
    	  "compositionend",
    	  "keypress",
    	  "textInput",
    	  "paste"
    	]);
    	registerTwoPhaseEvent(
    	  "onCompositionEnd",
    	  "compositionend focusout keydown keypress keyup mousedown".split(" ")
    	);
    	registerTwoPhaseEvent(
    	  "onCompositionStart",
    	  "compositionstart focusout keydown keypress keyup mousedown".split(" ")
    	);
    	registerTwoPhaseEvent(
    	  "onCompositionUpdate",
    	  "compositionupdate focusout keydown keypress keyup mousedown".split(" ")
    	);
    	var mediaEventTypes =
    	    "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(
    	      " "
    	    ),
    	  nonDelegatedEvents = new Set(
    	    "beforetoggle cancel close invalid load scroll scrollend toggle"
    	      .split(" ")
    	      .concat(mediaEventTypes)
    	  );
    	function processDispatchQueue(dispatchQueue, eventSystemFlags) {
    	  eventSystemFlags = 0 !== (eventSystemFlags & 4);
    	  for (var i = 0; i < dispatchQueue.length; i++) {
    	    var _dispatchQueue$i = dispatchQueue[i],
    	      event = _dispatchQueue$i.event;
    	    _dispatchQueue$i = _dispatchQueue$i.listeners;
    	    a: {
    	      var previousInstance = void 0;
    	      if (eventSystemFlags)
    	        for (
    	          var i$jscomp$0 = _dispatchQueue$i.length - 1;
    	          0 <= i$jscomp$0;
    	          i$jscomp$0--
    	        ) {
    	          var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],
    	            instance = _dispatchListeners$i.instance,
    	            currentTarget = _dispatchListeners$i.currentTarget;
    	          _dispatchListeners$i = _dispatchListeners$i.listener;
    	          if (instance !== previousInstance && event.isPropagationStopped())
    	            break a;
    	          previousInstance = _dispatchListeners$i;
    	          event.currentTarget = currentTarget;
    	          try {
    	            previousInstance(event);
    	          } catch (error) {
    	            reportGlobalError(error);
    	          }
    	          event.currentTarget = null;
    	          previousInstance = instance;
    	        }
    	      else
    	        for (
    	          i$jscomp$0 = 0;
    	          i$jscomp$0 < _dispatchQueue$i.length;
    	          i$jscomp$0++
    	        ) {
    	          _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];
    	          instance = _dispatchListeners$i.instance;
    	          currentTarget = _dispatchListeners$i.currentTarget;
    	          _dispatchListeners$i = _dispatchListeners$i.listener;
    	          if (instance !== previousInstance && event.isPropagationStopped())
    	            break a;
    	          previousInstance = _dispatchListeners$i;
    	          event.currentTarget = currentTarget;
    	          try {
    	            previousInstance(event);
    	          } catch (error) {
    	            reportGlobalError(error);
    	          }
    	          event.currentTarget = null;
    	          previousInstance = instance;
    	        }
    	    }
    	  }
    	}
    	function listenToNonDelegatedEvent(domEventName, targetElement) {
    	  var JSCompiler_inline_result = targetElement[internalEventHandlersKey];
    	  void 0 === JSCompiler_inline_result &&
    	    (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =
    	      new Set());
    	  var listenerSetKey = domEventName + "__bubble";
    	  JSCompiler_inline_result.has(listenerSetKey) ||
    	    (addTrappedEventListener(targetElement, domEventName, 2, false),
    	    JSCompiler_inline_result.add(listenerSetKey));
    	}
    	function listenToNativeEvent(domEventName, isCapturePhaseListener, target) {
    	  var eventSystemFlags = 0;
    	  isCapturePhaseListener && (eventSystemFlags |= 4);
    	  addTrappedEventListener(
    	    target,
    	    domEventName,
    	    eventSystemFlags,
    	    isCapturePhaseListener
    	  );
    	}
    	var listeningMarker = "_reactListening" + Math.random().toString(36).slice(2);
    	function listenToAllSupportedEvents(rootContainerElement) {
    	  if (!rootContainerElement[listeningMarker]) {
    	    rootContainerElement[listeningMarker] = true;
    	    allNativeEvents.forEach(function (domEventName) {
    	      "selectionchange" !== domEventName &&
    	        (nonDelegatedEvents.has(domEventName) ||
    	          listenToNativeEvent(domEventName, false, rootContainerElement),
    	        listenToNativeEvent(domEventName, true, rootContainerElement));
    	    });
    	    var ownerDocument =
    	      9 === rootContainerElement.nodeType
    	        ? rootContainerElement
    	        : rootContainerElement.ownerDocument;
    	    null === ownerDocument ||
    	      ownerDocument[listeningMarker] ||
    	      ((ownerDocument[listeningMarker] = true),
    	      listenToNativeEvent("selectionchange", false, ownerDocument));
    	  }
    	}
    	function addTrappedEventListener(
    	  targetContainer,
    	  domEventName,
    	  eventSystemFlags,
    	  isCapturePhaseListener
    	) {
    	  switch (getEventPriority(domEventName)) {
    	    case 2:
    	      var listenerWrapper = dispatchDiscreteEvent;
    	      break;
    	    case 8:
    	      listenerWrapper = dispatchContinuousEvent;
    	      break;
    	    default:
    	      listenerWrapper = dispatchEvent;
    	  }
    	  eventSystemFlags = listenerWrapper.bind(
    	    null,
    	    domEventName,
    	    eventSystemFlags,
    	    targetContainer
    	  );
    	  listenerWrapper = void 0;
    	  !passiveBrowserEventsSupported ||
    	    ("touchstart" !== domEventName &&
    	      "touchmove" !== domEventName &&
    	      "wheel" !== domEventName) ||
    	    (listenerWrapper = true);
    	  isCapturePhaseListener
    	    ? void 0 !== listenerWrapper
    	      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
    	          capture: true,
    	          passive: listenerWrapper
    	        })
    	      : targetContainer.addEventListener(domEventName, eventSystemFlags, true)
    	    : void 0 !== listenerWrapper
    	      ? targetContainer.addEventListener(domEventName, eventSystemFlags, {
    	          passive: listenerWrapper
    	        })
    	      : targetContainer.addEventListener(domEventName, eventSystemFlags, false);
    	}
    	function dispatchEventForPluginEventSystem(
    	  domEventName,
    	  eventSystemFlags,
    	  nativeEvent,
    	  targetInst$jscomp$0,
    	  targetContainer
    	) {
    	  var ancestorInst = targetInst$jscomp$0;
    	  if (
    	    0 === (eventSystemFlags & 1) &&
    	    0 === (eventSystemFlags & 2) &&
    	    null !== targetInst$jscomp$0
    	  )
    	    a: for (;;) {
    	      if (null === targetInst$jscomp$0) return;
    	      var nodeTag = targetInst$jscomp$0.tag;
    	      if (3 === nodeTag || 4 === nodeTag) {
    	        var container = targetInst$jscomp$0.stateNode.containerInfo;
    	        if (container === targetContainer) break;
    	        if (4 === nodeTag)
    	          for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {
    	            var grandTag = nodeTag.tag;
    	            if (
    	              (3 === grandTag || 4 === grandTag) &&
    	              nodeTag.stateNode.containerInfo === targetContainer
    	            )
    	              return;
    	            nodeTag = nodeTag.return;
    	          }
    	        for (; null !== container; ) {
    	          nodeTag = getClosestInstanceFromNode(container);
    	          if (null === nodeTag) return;
    	          grandTag = nodeTag.tag;
    	          if (
    	            5 === grandTag ||
    	            6 === grandTag ||
    	            26 === grandTag ||
    	            27 === grandTag
    	          ) {
    	            targetInst$jscomp$0 = ancestorInst = nodeTag;
    	            continue a;
    	          }
    	          container = container.parentNode;
    	        }
    	      }
    	      targetInst$jscomp$0 = targetInst$jscomp$0.return;
    	    }
    	  batchedUpdates$1(function () {
    	    var targetInst = ancestorInst,
    	      nativeEventTarget = getEventTarget(nativeEvent),
    	      dispatchQueue = [];
    	    a: {
    	      var reactName = topLevelEventsToReactNames.get(domEventName);
    	      if (void 0 !== reactName) {
    	        var SyntheticEventCtor = SyntheticEvent,
    	          reactEventType = domEventName;
    	        switch (domEventName) {
    	          case "keypress":
    	            if (0 === getEventCharCode(nativeEvent)) break a;
    	          case "keydown":
    	          case "keyup":
    	            SyntheticEventCtor = SyntheticKeyboardEvent;
    	            break;
    	          case "focusin":
    	            reactEventType = "focus";
    	            SyntheticEventCtor = SyntheticFocusEvent;
    	            break;
    	          case "focusout":
    	            reactEventType = "blur";
    	            SyntheticEventCtor = SyntheticFocusEvent;
    	            break;
    	          case "beforeblur":
    	          case "afterblur":
    	            SyntheticEventCtor = SyntheticFocusEvent;
    	            break;
    	          case "click":
    	            if (2 === nativeEvent.button) break a;
    	          case "auxclick":
    	          case "dblclick":
    	          case "mousedown":
    	          case "mousemove":
    	          case "mouseup":
    	          case "mouseout":
    	          case "mouseover":
    	          case "contextmenu":
    	            SyntheticEventCtor = SyntheticMouseEvent;
    	            break;
    	          case "drag":
    	          case "dragend":
    	          case "dragenter":
    	          case "dragexit":
    	          case "dragleave":
    	          case "dragover":
    	          case "dragstart":
    	          case "drop":
    	            SyntheticEventCtor = SyntheticDragEvent;
    	            break;
    	          case "touchcancel":
    	          case "touchend":
    	          case "touchmove":
    	          case "touchstart":
    	            SyntheticEventCtor = SyntheticTouchEvent;
    	            break;
    	          case ANIMATION_END:
    	          case ANIMATION_ITERATION:
    	          case ANIMATION_START:
    	            SyntheticEventCtor = SyntheticAnimationEvent;
    	            break;
    	          case TRANSITION_END:
    	            SyntheticEventCtor = SyntheticTransitionEvent;
    	            break;
    	          case "scroll":
    	          case "scrollend":
    	            SyntheticEventCtor = SyntheticUIEvent;
    	            break;
    	          case "wheel":
    	            SyntheticEventCtor = SyntheticWheelEvent;
    	            break;
    	          case "copy":
    	          case "cut":
    	          case "paste":
    	            SyntheticEventCtor = SyntheticClipboardEvent;
    	            break;
    	          case "gotpointercapture":
    	          case "lostpointercapture":
    	          case "pointercancel":
    	          case "pointerdown":
    	          case "pointermove":
    	          case "pointerout":
    	          case "pointerover":
    	          case "pointerup":
    	            SyntheticEventCtor = SyntheticPointerEvent;
    	            break;
    	          case "toggle":
    	          case "beforetoggle":
    	            SyntheticEventCtor = SyntheticToggleEvent;
    	        }
    	        var inCapturePhase = 0 !== (eventSystemFlags & 4),
    	          accumulateTargetOnly =
    	            !inCapturePhase &&
    	            ("scroll" === domEventName || "scrollend" === domEventName),
    	          reactEventName = inCapturePhase
    	            ? null !== reactName
    	              ? reactName + "Capture"
    	              : null
    	            : reactName;
    	        inCapturePhase = [];
    	        for (
    	          var instance = targetInst, lastHostComponent;
    	          null !== instance;

    	        ) {
    	          var _instance = instance;
    	          lastHostComponent = _instance.stateNode;
    	          _instance = _instance.tag;
    	          (5 !== _instance && 26 !== _instance && 27 !== _instance) ||
    	            null === lastHostComponent ||
    	            null === reactEventName ||
    	            ((_instance = getListener(instance, reactEventName)),
    	            null != _instance &&
    	              inCapturePhase.push(
    	                createDispatchListener(instance, _instance, lastHostComponent)
    	              ));
    	          if (accumulateTargetOnly) break;
    	          instance = instance.return;
    	        }
    	        0 < inCapturePhase.length &&
    	          ((reactName = new SyntheticEventCtor(
    	            reactName,
    	            reactEventType,
    	            null,
    	            nativeEvent,
    	            nativeEventTarget
    	          )),
    	          dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));
    	      }
    	    }
    	    if (0 === (eventSystemFlags & 7)) {
    	      a: {
    	        reactName =
    	          "mouseover" === domEventName || "pointerover" === domEventName;
    	        SyntheticEventCtor =
    	          "mouseout" === domEventName || "pointerout" === domEventName;
    	        if (
    	          reactName &&
    	          nativeEvent !== currentReplayingEvent &&
    	          (reactEventType =
    	            nativeEvent.relatedTarget || nativeEvent.fromElement) &&
    	          (getClosestInstanceFromNode(reactEventType) ||
    	            reactEventType[internalContainerInstanceKey])
    	        )
    	          break a;
    	        if (SyntheticEventCtor || reactName) {
    	          reactName =
    	            nativeEventTarget.window === nativeEventTarget
    	              ? nativeEventTarget
    	              : (reactName = nativeEventTarget.ownerDocument)
    	                ? reactName.defaultView || reactName.parentWindow
    	                : window;
    	          if (SyntheticEventCtor) {
    	            if (
    	              ((reactEventType =
    	                nativeEvent.relatedTarget || nativeEvent.toElement),
    	              (SyntheticEventCtor = targetInst),
    	              (reactEventType = reactEventType
    	                ? getClosestInstanceFromNode(reactEventType)
    	                : null),
    	              null !== reactEventType &&
    	                ((accumulateTargetOnly =
    	                  getNearestMountedFiber(reactEventType)),
    	                (inCapturePhase = reactEventType.tag),
    	                reactEventType !== accumulateTargetOnly ||
    	                  (5 !== inCapturePhase &&
    	                    27 !== inCapturePhase &&
    	                    6 !== inCapturePhase)))
    	            )
    	              reactEventType = null;
    	          } else (SyntheticEventCtor = null), (reactEventType = targetInst);
    	          if (SyntheticEventCtor !== reactEventType) {
    	            inCapturePhase = SyntheticMouseEvent;
    	            _instance = "onMouseLeave";
    	            reactEventName = "onMouseEnter";
    	            instance = "mouse";
    	            if ("pointerout" === domEventName || "pointerover" === domEventName)
    	              (inCapturePhase = SyntheticPointerEvent),
    	                (_instance = "onPointerLeave"),
    	                (reactEventName = "onPointerEnter"),
    	                (instance = "pointer");
    	            accumulateTargetOnly =
    	              null == SyntheticEventCtor
    	                ? reactName
    	                : getNodeFromInstance(SyntheticEventCtor);
    	            lastHostComponent =
    	              null == reactEventType
    	                ? reactName
    	                : getNodeFromInstance(reactEventType);
    	            reactName = new inCapturePhase(
    	              _instance,
    	              instance + "leave",
    	              SyntheticEventCtor,
    	              nativeEvent,
    	              nativeEventTarget
    	            );
    	            reactName.target = accumulateTargetOnly;
    	            reactName.relatedTarget = lastHostComponent;
    	            _instance = null;
    	            getClosestInstanceFromNode(nativeEventTarget) === targetInst &&
    	              ((inCapturePhase = new inCapturePhase(
    	                reactEventName,
    	                instance + "enter",
    	                reactEventType,
    	                nativeEvent,
    	                nativeEventTarget
    	              )),
    	              (inCapturePhase.target = lastHostComponent),
    	              (inCapturePhase.relatedTarget = accumulateTargetOnly),
    	              (_instance = inCapturePhase));
    	            accumulateTargetOnly = _instance;
    	            if (SyntheticEventCtor && reactEventType)
    	              b: {
    	                inCapturePhase = SyntheticEventCtor;
    	                reactEventName = reactEventType;
    	                instance = 0;
    	                for (
    	                  lastHostComponent = inCapturePhase;
    	                  lastHostComponent;
    	                  lastHostComponent = getParent(lastHostComponent)
    	                )
    	                  instance++;
    	                lastHostComponent = 0;
    	                for (
    	                  _instance = reactEventName;
    	                  _instance;
    	                  _instance = getParent(_instance)
    	                )
    	                  lastHostComponent++;
    	                for (; 0 < instance - lastHostComponent; )
    	                  (inCapturePhase = getParent(inCapturePhase)), instance--;
    	                for (; 0 < lastHostComponent - instance; )
    	                  (reactEventName = getParent(reactEventName)),
    	                    lastHostComponent--;
    	                for (; instance--; ) {
    	                  if (
    	                    inCapturePhase === reactEventName ||
    	                    (null !== reactEventName &&
    	                      inCapturePhase === reactEventName.alternate)
    	                  )
    	                    break b;
    	                  inCapturePhase = getParent(inCapturePhase);
    	                  reactEventName = getParent(reactEventName);
    	                }
    	                inCapturePhase = null;
    	              }
    	            else inCapturePhase = null;
    	            null !== SyntheticEventCtor &&
    	              accumulateEnterLeaveListenersForEvent(
    	                dispatchQueue,
    	                reactName,
    	                SyntheticEventCtor,
    	                inCapturePhase,
    	                !1
    	              );
    	            null !== reactEventType &&
    	              null !== accumulateTargetOnly &&
    	              accumulateEnterLeaveListenersForEvent(
    	                dispatchQueue,
    	                accumulateTargetOnly,
    	                reactEventType,
    	                inCapturePhase,
    	                !0
    	              );
    	          }
    	        }
    	      }
    	      a: {
    	        reactName = targetInst ? getNodeFromInstance(targetInst) : window;
    	        SyntheticEventCtor =
    	          reactName.nodeName && reactName.nodeName.toLowerCase();
    	        if (
    	          "select" === SyntheticEventCtor ||
    	          ("input" === SyntheticEventCtor && "file" === reactName.type)
    	        )
    	          var getTargetInstFunc = getTargetInstForChangeEvent;
    	        else if (isTextInputElement(reactName))
    	          if (isInputEventSupported)
    	            getTargetInstFunc = getTargetInstForInputOrChangeEvent;
    	          else {
    	            getTargetInstFunc = getTargetInstForInputEventPolyfill;
    	            var handleEventFunc = handleEventsForInputEventPolyfill;
    	          }
    	        else
    	          (SyntheticEventCtor = reactName.nodeName),
    	            !SyntheticEventCtor ||
    	            "input" !== SyntheticEventCtor.toLowerCase() ||
    	            ("checkbox" !== reactName.type && "radio" !== reactName.type)
    	              ? targetInst &&
    	                isCustomElement(targetInst.elementType) &&
    	                (getTargetInstFunc = getTargetInstForChangeEvent)
    	              : (getTargetInstFunc = getTargetInstForClickEvent);
    	        if (
    	          getTargetInstFunc &&
    	          (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))
    	        ) {
    	          createAndAccumulateChangeEvent(
    	            dispatchQueue,
    	            getTargetInstFunc,
    	            nativeEvent,
    	            nativeEventTarget
    	          );
    	          break a;
    	        }
    	        handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);
    	        "focusout" === domEventName &&
    	          targetInst &&
    	          "number" === reactName.type &&
    	          null != targetInst.memoizedProps.value &&
    	          setDefaultValue(reactName, "number", reactName.value);
    	      }
    	      handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;
    	      switch (domEventName) {
    	        case "focusin":
    	          if (
    	            isTextInputElement(handleEventFunc) ||
    	            "true" === handleEventFunc.contentEditable
    	          )
    	            (activeElement = handleEventFunc),
    	              (activeElementInst = targetInst),
    	              (lastSelection = null);
    	          break;
    	        case "focusout":
    	          lastSelection = activeElementInst = activeElement = null;
    	          break;
    	        case "mousedown":
    	          mouseDown = !0;
    	          break;
    	        case "contextmenu":
    	        case "mouseup":
    	        case "dragend":
    	          mouseDown = !1;
    	          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
    	          break;
    	        case "selectionchange":
    	          if (skipSelectionChangeEvent) break;
    	        case "keydown":
    	        case "keyup":
    	          constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
    	      }
    	      var fallbackData;
    	      if (canUseCompositionEvent)
    	        b: {
    	          switch (domEventName) {
    	            case "compositionstart":
    	              var eventType = "onCompositionStart";
    	              break b;
    	            case "compositionend":
    	              eventType = "onCompositionEnd";
    	              break b;
    	            case "compositionupdate":
    	              eventType = "onCompositionUpdate";
    	              break b;
    	          }
    	          eventType = void 0;
    	        }
    	      else
    	        isComposing
    	          ? isFallbackCompositionEnd(domEventName, nativeEvent) &&
    	            (eventType = "onCompositionEnd")
    	          : "keydown" === domEventName &&
    	            229 === nativeEvent.keyCode &&
    	            (eventType = "onCompositionStart");
    	      eventType &&
    	        (useFallbackCompositionData &&
    	          "ko" !== nativeEvent.locale &&
    	          (isComposing || "onCompositionStart" !== eventType
    	            ? "onCompositionEnd" === eventType &&
    	              isComposing &&
    	              (fallbackData = getData())
    	            : ((root = nativeEventTarget),
    	              (startText = "value" in root ? root.value : root.textContent),
    	              (isComposing = !0))),
    	        (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),
    	        0 < handleEventFunc.length &&
    	          ((eventType = new SyntheticCompositionEvent(
    	            eventType,
    	            domEventName,
    	            null,
    	            nativeEvent,
    	            nativeEventTarget
    	          )),
    	          dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),
    	          fallbackData
    	            ? (eventType.data = fallbackData)
    	            : ((fallbackData = getDataFromCustomEvent(nativeEvent)),
    	              null !== fallbackData && (eventType.data = fallbackData))));
    	      if (
    	        (fallbackData = canUseTextInputEvent
    	          ? getNativeBeforeInputChars(domEventName, nativeEvent)
    	          : getFallbackBeforeInputChars(domEventName, nativeEvent))
    	      )
    	        (eventType = accumulateTwoPhaseListeners(targetInst, "onBeforeInput")),
    	          0 < eventType.length &&
    	            ((handleEventFunc = new SyntheticCompositionEvent(
    	              "onBeforeInput",
    	              "beforeinput",
    	              null,
    	              nativeEvent,
    	              nativeEventTarget
    	            )),
    	            dispatchQueue.push({
    	              event: handleEventFunc,
    	              listeners: eventType
    	            }),
    	            (handleEventFunc.data = fallbackData));
    	      extractEvents$1(
    	        dispatchQueue,
    	        domEventName,
    	        targetInst,
    	        nativeEvent,
    	        nativeEventTarget
    	      );
    	    }
    	    processDispatchQueue(dispatchQueue, eventSystemFlags);
    	  });
    	}
    	function createDispatchListener(instance, listener, currentTarget) {
    	  return {
    	    instance: instance,
    	    listener: listener,
    	    currentTarget: currentTarget
    	  };
    	}
    	function accumulateTwoPhaseListeners(targetFiber, reactName) {
    	  for (
    	    var captureName = reactName + "Capture", listeners = [];
    	    null !== targetFiber;

    	  ) {
    	    var _instance2 = targetFiber,
    	      stateNode = _instance2.stateNode;
    	    _instance2 = _instance2.tag;
    	    (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||
    	      null === stateNode ||
    	      ((_instance2 = getListener(targetFiber, captureName)),
    	      null != _instance2 &&
    	        listeners.unshift(
    	          createDispatchListener(targetFiber, _instance2, stateNode)
    	        ),
    	      (_instance2 = getListener(targetFiber, reactName)),
    	      null != _instance2 &&
    	        listeners.push(
    	          createDispatchListener(targetFiber, _instance2, stateNode)
    	        ));
    	    if (3 === targetFiber.tag) return listeners;
    	    targetFiber = targetFiber.return;
    	  }
    	  return [];
    	}
    	function getParent(inst) {
    	  if (null === inst) return null;
    	  do inst = inst.return;
    	  while (inst && 5 !== inst.tag && 27 !== inst.tag);
    	  return inst ? inst : null;
    	}
    	function accumulateEnterLeaveListenersForEvent(
    	  dispatchQueue,
    	  event,
    	  target,
    	  common,
    	  inCapturePhase
    	) {
    	  for (
    	    var registrationName = event._reactName, listeners = [];
    	    null !== target && target !== common;

    	  ) {
    	    var _instance3 = target,
    	      alternate = _instance3.alternate,
    	      stateNode = _instance3.stateNode;
    	    _instance3 = _instance3.tag;
    	    if (null !== alternate && alternate === common) break;
    	    (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||
    	      null === stateNode ||
    	      ((alternate = stateNode),
    	      inCapturePhase
    	        ? ((stateNode = getListener(target, registrationName)),
    	          null != stateNode &&
    	            listeners.unshift(
    	              createDispatchListener(target, stateNode, alternate)
    	            ))
    	        : inCapturePhase ||
    	          ((stateNode = getListener(target, registrationName)),
    	          null != stateNode &&
    	            listeners.push(
    	              createDispatchListener(target, stateNode, alternate)
    	            )));
    	    target = target.return;
    	  }
    	  0 !== listeners.length &&
    	    dispatchQueue.push({ event: event, listeners: listeners });
    	}
    	var NORMALIZE_NEWLINES_REGEX = /\r\n?/g,
    	  NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g;
    	function normalizeMarkupForTextOrAttribute(markup) {
    	  return ("string" === typeof markup ? markup : "" + markup)
    	    .replace(NORMALIZE_NEWLINES_REGEX, "\n")
    	    .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, "");
    	}
    	function checkForUnmatchedText(serverText, clientText) {
    	  clientText = normalizeMarkupForTextOrAttribute(clientText);
    	  return normalizeMarkupForTextOrAttribute(serverText) === clientText ? true : false;
    	}
    	function noop$1() {}
    	function setProp(domElement, tag, key, value, props, prevValue) {
    	  switch (key) {
    	    case "children":
    	      "string" === typeof value
    	        ? "body" === tag ||
    	          ("textarea" === tag && "" === value) ||
    	          setTextContent(domElement, value)
    	        : ("number" === typeof value || "bigint" === typeof value) &&
    	          "body" !== tag &&
    	          setTextContent(domElement, "" + value);
    	      break;
    	    case "className":
    	      setValueForKnownAttribute(domElement, "class", value);
    	      break;
    	    case "tabIndex":
    	      setValueForKnownAttribute(domElement, "tabindex", value);
    	      break;
    	    case "dir":
    	    case "role":
    	    case "viewBox":
    	    case "width":
    	    case "height":
    	      setValueForKnownAttribute(domElement, key, value);
    	      break;
    	    case "style":
    	      setValueForStyles(domElement, value, prevValue);
    	      break;
    	    case "data":
    	      if ("object" !== tag) {
    	        setValueForKnownAttribute(domElement, "data", value);
    	        break;
    	      }
    	    case "src":
    	    case "href":
    	      if ("" === value && ("a" !== tag || "href" !== key)) {
    	        domElement.removeAttribute(key);
    	        break;
    	      }
    	      if (
    	        null == value ||
    	        "function" === typeof value ||
    	        "symbol" === typeof value ||
    	        "boolean" === typeof value
    	      ) {
    	        domElement.removeAttribute(key);
    	        break;
    	      }
    	      value = sanitizeURL("" + value);
    	      domElement.setAttribute(key, value);
    	      break;
    	    case "action":
    	    case "formAction":
    	      if ("function" === typeof value) {
    	        domElement.setAttribute(
    	          key,
    	          "javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')"
    	        );
    	        break;
    	      } else
    	        "function" === typeof prevValue &&
    	          ("formAction" === key
    	            ? ("input" !== tag &&
    	                setProp(domElement, tag, "name", props.name, props, null),
    	              setProp(
    	                domElement,
    	                tag,
    	                "formEncType",
    	                props.formEncType,
    	                props,
    	                null
    	              ),
    	              setProp(
    	                domElement,
    	                tag,
    	                "formMethod",
    	                props.formMethod,
    	                props,
    	                null
    	              ),
    	              setProp(
    	                domElement,
    	                tag,
    	                "formTarget",
    	                props.formTarget,
    	                props,
    	                null
    	              ))
    	            : (setProp(domElement, tag, "encType", props.encType, props, null),
    	              setProp(domElement, tag, "method", props.method, props, null),
    	              setProp(domElement, tag, "target", props.target, props, null)));
    	      if (
    	        null == value ||
    	        "symbol" === typeof value ||
    	        "boolean" === typeof value
    	      ) {
    	        domElement.removeAttribute(key);
    	        break;
    	      }
    	      value = sanitizeURL("" + value);
    	      domElement.setAttribute(key, value);
    	      break;
    	    case "onClick":
    	      null != value && (domElement.onclick = noop$1);
    	      break;
    	    case "onScroll":
    	      null != value && listenToNonDelegatedEvent("scroll", domElement);
    	      break;
    	    case "onScrollEnd":
    	      null != value && listenToNonDelegatedEvent("scrollend", domElement);
    	      break;
    	    case "dangerouslySetInnerHTML":
    	      if (null != value) {
    	        if ("object" !== typeof value || !("__html" in value))
    	          throw Error(formatProdErrorMessage(61));
    	        key = value.__html;
    	        if (null != key) {
    	          if (null != props.children) throw Error(formatProdErrorMessage(60));
    	          domElement.innerHTML = key;
    	        }
    	      }
    	      break;
    	    case "multiple":
    	      domElement.multiple =
    	        value && "function" !== typeof value && "symbol" !== typeof value;
    	      break;
    	    case "muted":
    	      domElement.muted =
    	        value && "function" !== typeof value && "symbol" !== typeof value;
    	      break;
    	    case "suppressContentEditableWarning":
    	    case "suppressHydrationWarning":
    	    case "defaultValue":
    	    case "defaultChecked":
    	    case "innerHTML":
    	    case "ref":
    	      break;
    	    case "autoFocus":
    	      break;
    	    case "xlinkHref":
    	      if (
    	        null == value ||
    	        "function" === typeof value ||
    	        "boolean" === typeof value ||
    	        "symbol" === typeof value
    	      ) {
    	        domElement.removeAttribute("xlink:href");
    	        break;
    	      }
    	      key = sanitizeURL("" + value);
    	      domElement.setAttributeNS(
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:href",
    	        key
    	      );
    	      break;
    	    case "contentEditable":
    	    case "spellCheck":
    	    case "draggable":
    	    case "value":
    	    case "autoReverse":
    	    case "externalResourcesRequired":
    	    case "focusable":
    	    case "preserveAlpha":
    	      null != value && "function" !== typeof value && "symbol" !== typeof value
    	        ? domElement.setAttribute(key, "" + value)
    	        : domElement.removeAttribute(key);
    	      break;
    	    case "inert":
    	    case "allowFullScreen":
    	    case "async":
    	    case "autoPlay":
    	    case "controls":
    	    case "default":
    	    case "defer":
    	    case "disabled":
    	    case "disablePictureInPicture":
    	    case "disableRemotePlayback":
    	    case "formNoValidate":
    	    case "hidden":
    	    case "loop":
    	    case "noModule":
    	    case "noValidate":
    	    case "open":
    	    case "playsInline":
    	    case "readOnly":
    	    case "required":
    	    case "reversed":
    	    case "scoped":
    	    case "seamless":
    	    case "itemScope":
    	      value && "function" !== typeof value && "symbol" !== typeof value
    	        ? domElement.setAttribute(key, "")
    	        : domElement.removeAttribute(key);
    	      break;
    	    case "capture":
    	    case "download":
    	      true === value
    	        ? domElement.setAttribute(key, "")
    	        : false !== value &&
    	            null != value &&
    	            "function" !== typeof value &&
    	            "symbol" !== typeof value
    	          ? domElement.setAttribute(key, value)
    	          : domElement.removeAttribute(key);
    	      break;
    	    case "cols":
    	    case "rows":
    	    case "size":
    	    case "span":
    	      null != value &&
    	      "function" !== typeof value &&
    	      "symbol" !== typeof value &&
    	      !isNaN(value) &&
    	      1 <= value
    	        ? domElement.setAttribute(key, value)
    	        : domElement.removeAttribute(key);
    	      break;
    	    case "rowSpan":
    	    case "start":
    	      null == value ||
    	      "function" === typeof value ||
    	      "symbol" === typeof value ||
    	      isNaN(value)
    	        ? domElement.removeAttribute(key)
    	        : domElement.setAttribute(key, value);
    	      break;
    	    case "popover":
    	      listenToNonDelegatedEvent("beforetoggle", domElement);
    	      listenToNonDelegatedEvent("toggle", domElement);
    	      setValueForAttribute(domElement, "popover", value);
    	      break;
    	    case "xlinkActuate":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:actuate",
    	        value
    	      );
    	      break;
    	    case "xlinkArcrole":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:arcrole",
    	        value
    	      );
    	      break;
    	    case "xlinkRole":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:role",
    	        value
    	      );
    	      break;
    	    case "xlinkShow":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:show",
    	        value
    	      );
    	      break;
    	    case "xlinkTitle":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:title",
    	        value
    	      );
    	      break;
    	    case "xlinkType":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/1999/xlink",
    	        "xlink:type",
    	        value
    	      );
    	      break;
    	    case "xmlBase":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/XML/1998/namespace",
    	        "xml:base",
    	        value
    	      );
    	      break;
    	    case "xmlLang":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/XML/1998/namespace",
    	        "xml:lang",
    	        value
    	      );
    	      break;
    	    case "xmlSpace":
    	      setValueForNamespacedAttribute(
    	        domElement,
    	        "http://www.w3.org/XML/1998/namespace",
    	        "xml:space",
    	        value
    	      );
    	      break;
    	    case "is":
    	      setValueForAttribute(domElement, "is", value);
    	      break;
    	    case "innerText":
    	    case "textContent":
    	      break;
    	    default:
    	      if (
    	        !(2 < key.length) ||
    	        ("o" !== key[0] && "O" !== key[0]) ||
    	        ("n" !== key[1] && "N" !== key[1])
    	      )
    	        (key = aliases.get(key) || key),
    	          setValueForAttribute(domElement, key, value);
    	  }
    	}
    	function setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {
    	  switch (key) {
    	    case "style":
    	      setValueForStyles(domElement, value, prevValue);
    	      break;
    	    case "dangerouslySetInnerHTML":
    	      if (null != value) {
    	        if ("object" !== typeof value || !("__html" in value))
    	          throw Error(formatProdErrorMessage(61));
    	        key = value.__html;
    	        if (null != key) {
    	          if (null != props.children) throw Error(formatProdErrorMessage(60));
    	          domElement.innerHTML = key;
    	        }
    	      }
    	      break;
    	    case "children":
    	      "string" === typeof value
    	        ? setTextContent(domElement, value)
    	        : ("number" === typeof value || "bigint" === typeof value) &&
    	          setTextContent(domElement, "" + value);
    	      break;
    	    case "onScroll":
    	      null != value && listenToNonDelegatedEvent("scroll", domElement);
    	      break;
    	    case "onScrollEnd":
    	      null != value && listenToNonDelegatedEvent("scrollend", domElement);
    	      break;
    	    case "onClick":
    	      null != value && (domElement.onclick = noop$1);
    	      break;
    	    case "suppressContentEditableWarning":
    	    case "suppressHydrationWarning":
    	    case "innerHTML":
    	    case "ref":
    	      break;
    	    case "innerText":
    	    case "textContent":
    	      break;
    	    default:
    	      if (!registrationNameDependencies.hasOwnProperty(key))
    	        a: {
    	          if (
    	            "o" === key[0] &&
    	            "n" === key[1] &&
    	            ((props = key.endsWith("Capture")),
    	            (tag = key.slice(2, props ? key.length - 7 : void 0)),
    	            (prevValue = domElement[internalPropsKey] || null),
    	            (prevValue = null != prevValue ? prevValue[key] : null),
    	            "function" === typeof prevValue &&
    	              domElement.removeEventListener(tag, prevValue, props),
    	            "function" === typeof value)
    	          ) {
    	            "function" !== typeof prevValue &&
    	              null !== prevValue &&
    	              (key in domElement
    	                ? (domElement[key] = null)
    	                : domElement.hasAttribute(key) &&
    	                  domElement.removeAttribute(key));
    	            domElement.addEventListener(tag, value, props);
    	            break a;
    	          }
    	          key in domElement
    	            ? (domElement[key] = value)
    	            : true === value
    	              ? domElement.setAttribute(key, "")
    	              : setValueForAttribute(domElement, key, value);
    	        }
    	  }
    	}
    	function setInitialProperties(domElement, tag, props) {
    	  switch (tag) {
    	    case "div":
    	    case "span":
    	    case "svg":
    	    case "path":
    	    case "a":
    	    case "g":
    	    case "p":
    	    case "li":
    	      break;
    	    case "img":
    	      listenToNonDelegatedEvent("error", domElement);
    	      listenToNonDelegatedEvent("load", domElement);
    	      var hasSrc = false,
    	        hasSrcSet = false,
    	        propKey;
    	      for (propKey in props)
    	        if (props.hasOwnProperty(propKey)) {
    	          var propValue = props[propKey];
    	          if (null != propValue)
    	            switch (propKey) {
    	              case "src":
    	                hasSrc = true;
    	                break;
    	              case "srcSet":
    	                hasSrcSet = true;
    	                break;
    	              case "children":
    	              case "dangerouslySetInnerHTML":
    	                throw Error(formatProdErrorMessage(137, tag));
    	              default:
    	                setProp(domElement, tag, propKey, propValue, props, null);
    	            }
    	        }
    	      hasSrcSet &&
    	        setProp(domElement, tag, "srcSet", props.srcSet, props, null);
    	      hasSrc && setProp(domElement, tag, "src", props.src, props, null);
    	      return;
    	    case "input":
    	      listenToNonDelegatedEvent("invalid", domElement);
    	      var defaultValue = (propKey = propValue = hasSrcSet = null),
    	        checked = null,
    	        defaultChecked = null;
    	      for (hasSrc in props)
    	        if (props.hasOwnProperty(hasSrc)) {
    	          var propValue$188 = props[hasSrc];
    	          if (null != propValue$188)
    	            switch (hasSrc) {
    	              case "name":
    	                hasSrcSet = propValue$188;
    	                break;
    	              case "type":
    	                propValue = propValue$188;
    	                break;
    	              case "checked":
    	                checked = propValue$188;
    	                break;
    	              case "defaultChecked":
    	                defaultChecked = propValue$188;
    	                break;
    	              case "value":
    	                propKey = propValue$188;
    	                break;
    	              case "defaultValue":
    	                defaultValue = propValue$188;
    	                break;
    	              case "children":
    	              case "dangerouslySetInnerHTML":
    	                if (null != propValue$188)
    	                  throw Error(formatProdErrorMessage(137, tag));
    	                break;
    	              default:
    	                setProp(domElement, tag, hasSrc, propValue$188, props, null);
    	            }
    	        }
    	      initInput(
    	        domElement,
    	        propKey,
    	        defaultValue,
    	        checked,
    	        defaultChecked,
    	        propValue,
    	        hasSrcSet,
    	        false
    	      );
    	      track(domElement);
    	      return;
    	    case "select":
    	      listenToNonDelegatedEvent("invalid", domElement);
    	      hasSrc = propValue = propKey = null;
    	      for (hasSrcSet in props)
    	        if (
    	          props.hasOwnProperty(hasSrcSet) &&
    	          ((defaultValue = props[hasSrcSet]), null != defaultValue)
    	        )
    	          switch (hasSrcSet) {
    	            case "value":
    	              propKey = defaultValue;
    	              break;
    	            case "defaultValue":
    	              propValue = defaultValue;
    	              break;
    	            case "multiple":
    	              hasSrc = defaultValue;
    	            default:
    	              setProp(domElement, tag, hasSrcSet, defaultValue, props, null);
    	          }
    	      tag = propKey;
    	      props = propValue;
    	      domElement.multiple = !!hasSrc;
    	      null != tag
    	        ? updateOptions(domElement, !!hasSrc, tag, false)
    	        : null != props && updateOptions(domElement, !!hasSrc, props, true);
    	      return;
    	    case "textarea":
    	      listenToNonDelegatedEvent("invalid", domElement);
    	      propKey = hasSrcSet = hasSrc = null;
    	      for (propValue in props)
    	        if (
    	          props.hasOwnProperty(propValue) &&
    	          ((defaultValue = props[propValue]), null != defaultValue)
    	        )
    	          switch (propValue) {
    	            case "value":
    	              hasSrc = defaultValue;
    	              break;
    	            case "defaultValue":
    	              hasSrcSet = defaultValue;
    	              break;
    	            case "children":
    	              propKey = defaultValue;
    	              break;
    	            case "dangerouslySetInnerHTML":
    	              if (null != defaultValue) throw Error(formatProdErrorMessage(91));
    	              break;
    	            default:
    	              setProp(domElement, tag, propValue, defaultValue, props, null);
    	          }
    	      initTextarea(domElement, hasSrc, hasSrcSet, propKey);
    	      track(domElement);
    	      return;
    	    case "option":
    	      for (checked in props)
    	        if (
    	          props.hasOwnProperty(checked) &&
    	          ((hasSrc = props[checked]), null != hasSrc)
    	        )
    	          switch (checked) {
    	            case "selected":
    	              domElement.selected =
    	                hasSrc &&
    	                "function" !== typeof hasSrc &&
    	                "symbol" !== typeof hasSrc;
    	              break;
    	            default:
    	              setProp(domElement, tag, checked, hasSrc, props, null);
    	          }
    	      return;
    	    case "dialog":
    	      listenToNonDelegatedEvent("beforetoggle", domElement);
    	      listenToNonDelegatedEvent("toggle", domElement);
    	      listenToNonDelegatedEvent("cancel", domElement);
    	      listenToNonDelegatedEvent("close", domElement);
    	      break;
    	    case "iframe":
    	    case "object":
    	      listenToNonDelegatedEvent("load", domElement);
    	      break;
    	    case "video":
    	    case "audio":
    	      for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)
    	        listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);
    	      break;
    	    case "image":
    	      listenToNonDelegatedEvent("error", domElement);
    	      listenToNonDelegatedEvent("load", domElement);
    	      break;
    	    case "details":
    	      listenToNonDelegatedEvent("toggle", domElement);
    	      break;
    	    case "embed":
    	    case "source":
    	    case "link":
    	      listenToNonDelegatedEvent("error", domElement),
    	        listenToNonDelegatedEvent("load", domElement);
    	    case "area":
    	    case "base":
    	    case "br":
    	    case "col":
    	    case "hr":
    	    case "keygen":
    	    case "meta":
    	    case "param":
    	    case "track":
    	    case "wbr":
    	    case "menuitem":
    	      for (defaultChecked in props)
    	        if (
    	          props.hasOwnProperty(defaultChecked) &&
    	          ((hasSrc = props[defaultChecked]), null != hasSrc)
    	        )
    	          switch (defaultChecked) {
    	            case "children":
    	            case "dangerouslySetInnerHTML":
    	              throw Error(formatProdErrorMessage(137, tag));
    	            default:
    	              setProp(domElement, tag, defaultChecked, hasSrc, props, null);
    	          }
    	      return;
    	    default:
    	      if (isCustomElement(tag)) {
    	        for (propValue$188 in props)
    	          props.hasOwnProperty(propValue$188) &&
    	            ((hasSrc = props[propValue$188]),
    	            void 0 !== hasSrc &&
    	              setPropOnCustomElement(
    	                domElement,
    	                tag,
    	                propValue$188,
    	                hasSrc,
    	                props,
    	                void 0
    	              ));
    	        return;
    	      }
    	  }
    	  for (defaultValue in props)
    	    props.hasOwnProperty(defaultValue) &&
    	      ((hasSrc = props[defaultValue]),
    	      null != hasSrc &&
    	        setProp(domElement, tag, defaultValue, hasSrc, props, null));
    	}
    	function updateProperties(domElement, tag, lastProps, nextProps) {
    	  switch (tag) {
    	    case "div":
    	    case "span":
    	    case "svg":
    	    case "path":
    	    case "a":
    	    case "g":
    	    case "p":
    	    case "li":
    	      break;
    	    case "input":
    	      var name = null,
    	        type = null,
    	        value = null,
    	        defaultValue = null,
    	        lastDefaultValue = null,
    	        checked = null,
    	        defaultChecked = null;
    	      for (propKey in lastProps) {
    	        var lastProp = lastProps[propKey];
    	        if (lastProps.hasOwnProperty(propKey) && null != lastProp)
    	          switch (propKey) {
    	            case "checked":
    	              break;
    	            case "value":
    	              break;
    	            case "defaultValue":
    	              lastDefaultValue = lastProp;
    	            default:
    	              nextProps.hasOwnProperty(propKey) ||
    	                setProp(domElement, tag, propKey, null, nextProps, lastProp);
    	          }
    	      }
    	      for (var propKey$205 in nextProps) {
    	        var propKey = nextProps[propKey$205];
    	        lastProp = lastProps[propKey$205];
    	        if (
    	          nextProps.hasOwnProperty(propKey$205) &&
    	          (null != propKey || null != lastProp)
    	        )
    	          switch (propKey$205) {
    	            case "type":
    	              type = propKey;
    	              break;
    	            case "name":
    	              name = propKey;
    	              break;
    	            case "checked":
    	              checked = propKey;
    	              break;
    	            case "defaultChecked":
    	              defaultChecked = propKey;
    	              break;
    	            case "value":
    	              value = propKey;
    	              break;
    	            case "defaultValue":
    	              defaultValue = propKey;
    	              break;
    	            case "children":
    	            case "dangerouslySetInnerHTML":
    	              if (null != propKey)
    	                throw Error(formatProdErrorMessage(137, tag));
    	              break;
    	            default:
    	              propKey !== lastProp &&
    	                setProp(
    	                  domElement,
    	                  tag,
    	                  propKey$205,
    	                  propKey,
    	                  nextProps,
    	                  lastProp
    	                );
    	          }
    	      }
    	      updateInput(
    	        domElement,
    	        value,
    	        defaultValue,
    	        lastDefaultValue,
    	        checked,
    	        defaultChecked,
    	        type,
    	        name
    	      );
    	      return;
    	    case "select":
    	      propKey = value = defaultValue = propKey$205 = null;
    	      for (type in lastProps)
    	        if (
    	          ((lastDefaultValue = lastProps[type]),
    	          lastProps.hasOwnProperty(type) && null != lastDefaultValue)
    	        )
    	          switch (type) {
    	            case "value":
    	              break;
    	            case "multiple":
    	              propKey = lastDefaultValue;
    	            default:
    	              nextProps.hasOwnProperty(type) ||
    	                setProp(
    	                  domElement,
    	                  tag,
    	                  type,
    	                  null,
    	                  nextProps,
    	                  lastDefaultValue
    	                );
    	          }
    	      for (name in nextProps)
    	        if (
    	          ((type = nextProps[name]),
    	          (lastDefaultValue = lastProps[name]),
    	          nextProps.hasOwnProperty(name) &&
    	            (null != type || null != lastDefaultValue))
    	        )
    	          switch (name) {
    	            case "value":
    	              propKey$205 = type;
    	              break;
    	            case "defaultValue":
    	              defaultValue = type;
    	              break;
    	            case "multiple":
    	              value = type;
    	            default:
    	              type !== lastDefaultValue &&
    	                setProp(
    	                  domElement,
    	                  tag,
    	                  name,
    	                  type,
    	                  nextProps,
    	                  lastDefaultValue
    	                );
    	          }
    	      tag = defaultValue;
    	      lastProps = value;
    	      nextProps = propKey;
    	      null != propKey$205
    	        ? updateOptions(domElement, !!lastProps, propKey$205, false)
    	        : !!nextProps !== !!lastProps &&
    	          (null != tag
    	            ? updateOptions(domElement, !!lastProps, tag, true)
    	            : updateOptions(domElement, !!lastProps, lastProps ? [] : "", false));
    	      return;
    	    case "textarea":
    	      propKey = propKey$205 = null;
    	      for (defaultValue in lastProps)
    	        if (
    	          ((name = lastProps[defaultValue]),
    	          lastProps.hasOwnProperty(defaultValue) &&
    	            null != name &&
    	            !nextProps.hasOwnProperty(defaultValue))
    	        )
    	          switch (defaultValue) {
    	            case "value":
    	              break;
    	            case "children":
    	              break;
    	            default:
    	              setProp(domElement, tag, defaultValue, null, nextProps, name);
    	          }
    	      for (value in nextProps)
    	        if (
    	          ((name = nextProps[value]),
    	          (type = lastProps[value]),
    	          nextProps.hasOwnProperty(value) && (null != name || null != type))
    	        )
    	          switch (value) {
    	            case "value":
    	              propKey$205 = name;
    	              break;
    	            case "defaultValue":
    	              propKey = name;
    	              break;
    	            case "children":
    	              break;
    	            case "dangerouslySetInnerHTML":
    	              if (null != name) throw Error(formatProdErrorMessage(91));
    	              break;
    	            default:
    	              name !== type &&
    	                setProp(domElement, tag, value, name, nextProps, type);
    	          }
    	      updateTextarea(domElement, propKey$205, propKey);
    	      return;
    	    case "option":
    	      for (var propKey$221 in lastProps)
    	        if (
    	          ((propKey$205 = lastProps[propKey$221]),
    	          lastProps.hasOwnProperty(propKey$221) &&
    	            null != propKey$205 &&
    	            !nextProps.hasOwnProperty(propKey$221))
    	        )
    	          switch (propKey$221) {
    	            case "selected":
    	              domElement.selected = false;
    	              break;
    	            default:
    	              setProp(
    	                domElement,
    	                tag,
    	                propKey$221,
    	                null,
    	                nextProps,
    	                propKey$205
    	              );
    	          }
    	      for (lastDefaultValue in nextProps)
    	        if (
    	          ((propKey$205 = nextProps[lastDefaultValue]),
    	          (propKey = lastProps[lastDefaultValue]),
    	          nextProps.hasOwnProperty(lastDefaultValue) &&
    	            propKey$205 !== propKey &&
    	            (null != propKey$205 || null != propKey))
    	        )
    	          switch (lastDefaultValue) {
    	            case "selected":
    	              domElement.selected =
    	                propKey$205 &&
    	                "function" !== typeof propKey$205 &&
    	                "symbol" !== typeof propKey$205;
    	              break;
    	            default:
    	              setProp(
    	                domElement,
    	                tag,
    	                lastDefaultValue,
    	                propKey$205,
    	                nextProps,
    	                propKey
    	              );
    	          }
    	      return;
    	    case "img":
    	    case "link":
    	    case "area":
    	    case "base":
    	    case "br":
    	    case "col":
    	    case "embed":
    	    case "hr":
    	    case "keygen":
    	    case "meta":
    	    case "param":
    	    case "source":
    	    case "track":
    	    case "wbr":
    	    case "menuitem":
    	      for (var propKey$226 in lastProps)
    	        (propKey$205 = lastProps[propKey$226]),
    	          lastProps.hasOwnProperty(propKey$226) &&
    	            null != propKey$205 &&
    	            !nextProps.hasOwnProperty(propKey$226) &&
    	            setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);
    	      for (checked in nextProps)
    	        if (
    	          ((propKey$205 = nextProps[checked]),
    	          (propKey = lastProps[checked]),
    	          nextProps.hasOwnProperty(checked) &&
    	            propKey$205 !== propKey &&
    	            (null != propKey$205 || null != propKey))
    	        )
    	          switch (checked) {
    	            case "children":
    	            case "dangerouslySetInnerHTML":
    	              if (null != propKey$205)
    	                throw Error(formatProdErrorMessage(137, tag));
    	              break;
    	            default:
    	              setProp(
    	                domElement,
    	                tag,
    	                checked,
    	                propKey$205,
    	                nextProps,
    	                propKey
    	              );
    	          }
    	      return;
    	    default:
    	      if (isCustomElement(tag)) {
    	        for (var propKey$231 in lastProps)
    	          (propKey$205 = lastProps[propKey$231]),
    	            lastProps.hasOwnProperty(propKey$231) &&
    	              void 0 !== propKey$205 &&
    	              !nextProps.hasOwnProperty(propKey$231) &&
    	              setPropOnCustomElement(
    	                domElement,
    	                tag,
    	                propKey$231,
    	                void 0,
    	                nextProps,
    	                propKey$205
    	              );
    	        for (defaultChecked in nextProps)
    	          (propKey$205 = nextProps[defaultChecked]),
    	            (propKey = lastProps[defaultChecked]),
    	            !nextProps.hasOwnProperty(defaultChecked) ||
    	              propKey$205 === propKey ||
    	              (void 0 === propKey$205 && void 0 === propKey) ||
    	              setPropOnCustomElement(
    	                domElement,
    	                tag,
    	                defaultChecked,
    	                propKey$205,
    	                nextProps,
    	                propKey
    	              );
    	        return;
    	      }
    	  }
    	  for (var propKey$236 in lastProps)
    	    (propKey$205 = lastProps[propKey$236]),
    	      lastProps.hasOwnProperty(propKey$236) &&
    	        null != propKey$205 &&
    	        !nextProps.hasOwnProperty(propKey$236) &&
    	        setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);
    	  for (lastProp in nextProps)
    	    (propKey$205 = nextProps[lastProp]),
    	      (propKey = lastProps[lastProp]),
    	      !nextProps.hasOwnProperty(lastProp) ||
    	        propKey$205 === propKey ||
    	        (null == propKey$205 && null == propKey) ||
    	        setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);
    	}
    	var eventsEnabled = null,
    	  selectionInformation = null;
    	function getOwnerDocumentFromRootContainer(rootContainerElement) {
    	  return 9 === rootContainerElement.nodeType
    	    ? rootContainerElement
    	    : rootContainerElement.ownerDocument;
    	}
    	function getOwnHostContext(namespaceURI) {
    	  switch (namespaceURI) {
    	    case "http://www.w3.org/2000/svg":
    	      return 1;
    	    case "http://www.w3.org/1998/Math/MathML":
    	      return 2;
    	    default:
    	      return 0;
    	  }
    	}
    	function getChildHostContextProd(parentNamespace, type) {
    	  if (0 === parentNamespace)
    	    switch (type) {
    	      case "svg":
    	        return 1;
    	      case "math":
    	        return 2;
    	      default:
    	        return 0;
    	    }
    	  return 1 === parentNamespace && "foreignObject" === type
    	    ? 0
    	    : parentNamespace;
    	}
    	function shouldSetTextContent(type, props) {
    	  return (
    	    "textarea" === type ||
    	    "noscript" === type ||
    	    "string" === typeof props.children ||
    	    "number" === typeof props.children ||
    	    "bigint" === typeof props.children ||
    	    ("object" === typeof props.dangerouslySetInnerHTML &&
    	      null !== props.dangerouslySetInnerHTML &&
    	      null != props.dangerouslySetInnerHTML.__html)
    	  );
    	}
    	var currentPopstateTransitionEvent = null;
    	function shouldAttemptEagerTransition() {
    	  var event = window.event;
    	  if (event && "popstate" === event.type) {
    	    if (event === currentPopstateTransitionEvent) return false;
    	    currentPopstateTransitionEvent = event;
    	    return true;
    	  }
    	  currentPopstateTransitionEvent = null;
    	  return false;
    	}
    	var scheduleTimeout = "function" === typeof setTimeout ? setTimeout : void 0,
    	  cancelTimeout = "function" === typeof clearTimeout ? clearTimeout : void 0,
    	  localPromise = "function" === typeof Promise ? Promise : void 0,
    	  scheduleMicrotask =
    	    "function" === typeof queueMicrotask
    	      ? queueMicrotask
    	      : "undefined" !== typeof localPromise
    	        ? function (callback) {
    	            return localPromise
    	              .resolve(null)
    	              .then(callback)
    	              .catch(handleErrorInNextTick);
    	          }
    	        : scheduleTimeout;
    	function handleErrorInNextTick(error) {
    	  setTimeout(function () {
    	    throw error;
    	  });
    	}
    	function isSingletonScope(type) {
    	  return "head" === type;
    	}
    	function clearSuspenseBoundary(parentInstance, suspenseInstance) {
    	  var node = suspenseInstance,
    	    possiblePreambleContribution = 0,
    	    depth = 0;
    	  do {
    	    var nextNode = node.nextSibling;
    	    parentInstance.removeChild(node);
    	    if (nextNode && 8 === nextNode.nodeType)
    	      if (((node = nextNode.data), "/$" === node)) {
    	        if (
    	          0 < possiblePreambleContribution &&
    	          8 > possiblePreambleContribution
    	        ) {
    	          node = possiblePreambleContribution;
    	          var ownerDocument = parentInstance.ownerDocument;
    	          node & 1 && releaseSingletonInstance(ownerDocument.documentElement);
    	          node & 2 && releaseSingletonInstance(ownerDocument.body);
    	          if (node & 4)
    	            for (
    	              node = ownerDocument.head,
    	                releaseSingletonInstance(node),
    	                ownerDocument = node.firstChild;
    	              ownerDocument;

    	            ) {
    	              var nextNode$jscomp$0 = ownerDocument.nextSibling,
    	                nodeName = ownerDocument.nodeName;
    	              ownerDocument[internalHoistableMarker] ||
    	                "SCRIPT" === nodeName ||
    	                "STYLE" === nodeName ||
    	                ("LINK" === nodeName &&
    	                  "stylesheet" === ownerDocument.rel.toLowerCase()) ||
    	                node.removeChild(ownerDocument);
    	              ownerDocument = nextNode$jscomp$0;
    	            }
    	        }
    	        if (0 === depth) {
    	          parentInstance.removeChild(nextNode);
    	          retryIfBlockedOn(suspenseInstance);
    	          return;
    	        }
    	        depth--;
    	      } else
    	        "$" === node || "$?" === node || "$!" === node
    	          ? depth++
    	          : (possiblePreambleContribution = node.charCodeAt(0) - 48);
    	    else possiblePreambleContribution = 0;
    	    node = nextNode;
    	  } while (node);
    	  retryIfBlockedOn(suspenseInstance);
    	}
    	function clearContainerSparingly(container) {
    	  var nextNode = container.firstChild;
    	  nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);
    	  for (; nextNode; ) {
    	    var node = nextNode;
    	    nextNode = nextNode.nextSibling;
    	    switch (node.nodeName) {
    	      case "HTML":
    	      case "HEAD":
    	      case "BODY":
    	        clearContainerSparingly(node);
    	        detachDeletedInstance(node);
    	        continue;
    	      case "SCRIPT":
    	      case "STYLE":
    	        continue;
    	      case "LINK":
    	        if ("stylesheet" === node.rel.toLowerCase()) continue;
    	    }
    	    container.removeChild(node);
    	  }
    	}
    	function canHydrateInstance(instance, type, props, inRootOrSingleton) {
    	  for (; 1 === instance.nodeType; ) {
    	    var anyProps = props;
    	    if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {
    	      if (
    	        !inRootOrSingleton &&
    	        ("INPUT" !== instance.nodeName || "hidden" !== instance.type)
    	      )
    	        break;
    	    } else if (!inRootOrSingleton)
    	      if ("input" === type && "hidden" === instance.type) {
    	        var name = null == anyProps.name ? null : "" + anyProps.name;
    	        if (
    	          "hidden" === anyProps.type &&
    	          instance.getAttribute("name") === name
    	        )
    	          return instance;
    	      } else return instance;
    	    else if (!instance[internalHoistableMarker])
    	      switch (type) {
    	        case "meta":
    	          if (!instance.hasAttribute("itemprop")) break;
    	          return instance;
    	        case "link":
    	          name = instance.getAttribute("rel");
    	          if ("stylesheet" === name && instance.hasAttribute("data-precedence"))
    	            break;
    	          else if (
    	            name !== anyProps.rel ||
    	            instance.getAttribute("href") !==
    	              (null == anyProps.href || "" === anyProps.href
    	                ? null
    	                : anyProps.href) ||
    	            instance.getAttribute("crossorigin") !==
    	              (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||
    	            instance.getAttribute("title") !==
    	              (null == anyProps.title ? null : anyProps.title)
    	          )
    	            break;
    	          return instance;
    	        case "style":
    	          if (instance.hasAttribute("data-precedence")) break;
    	          return instance;
    	        case "script":
    	          name = instance.getAttribute("src");
    	          if (
    	            (name !== (null == anyProps.src ? null : anyProps.src) ||
    	              instance.getAttribute("type") !==
    	                (null == anyProps.type ? null : anyProps.type) ||
    	              instance.getAttribute("crossorigin") !==
    	                (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&
    	            name &&
    	            instance.hasAttribute("async") &&
    	            !instance.hasAttribute("itemprop")
    	          )
    	            break;
    	          return instance;
    	        default:
    	          return instance;
    	      }
    	    instance = getNextHydratable(instance.nextSibling);
    	    if (null === instance) break;
    	  }
    	  return null;
    	}
    	function canHydrateTextInstance(instance, text, inRootOrSingleton) {
    	  if ("" === text) return null;
    	  for (; 3 !== instance.nodeType; ) {
    	    if (
    	      (1 !== instance.nodeType ||
    	        "INPUT" !== instance.nodeName ||
    	        "hidden" !== instance.type) &&
    	      !inRootOrSingleton
    	    )
    	      return null;
    	    instance = getNextHydratable(instance.nextSibling);
    	    if (null === instance) return null;
    	  }
    	  return instance;
    	}
    	function isSuspenseInstanceFallback(instance) {
    	  return (
    	    "$!" === instance.data ||
    	    ("$?" === instance.data && "complete" === instance.ownerDocument.readyState)
    	  );
    	}
    	function registerSuspenseInstanceRetry(instance, callback) {
    	  var ownerDocument = instance.ownerDocument;
    	  if ("$?" !== instance.data || "complete" === ownerDocument.readyState)
    	    callback();
    	  else {
    	    var listener = function () {
    	      callback();
    	      ownerDocument.removeEventListener("DOMContentLoaded", listener);
    	    };
    	    ownerDocument.addEventListener("DOMContentLoaded", listener);
    	    instance._reactRetry = listener;
    	  }
    	}
    	function getNextHydratable(node) {
    	  for (; null != node; node = node.nextSibling) {
    	    var nodeType = node.nodeType;
    	    if (1 === nodeType || 3 === nodeType) break;
    	    if (8 === nodeType) {
    	      nodeType = node.data;
    	      if (
    	        "$" === nodeType ||
    	        "$!" === nodeType ||
    	        "$?" === nodeType ||
    	        "F!" === nodeType ||
    	        "F" === nodeType
    	      )
    	        break;
    	      if ("/$" === nodeType) return null;
    	    }
    	  }
    	  return node;
    	}
    	var previousHydratableOnEnteringScopedSingleton = null;
    	function getParentSuspenseInstance(targetInstance) {
    	  targetInstance = targetInstance.previousSibling;
    	  for (var depth = 0; targetInstance; ) {
    	    if (8 === targetInstance.nodeType) {
    	      var data = targetInstance.data;
    	      if ("$" === data || "$!" === data || "$?" === data) {
    	        if (0 === depth) return targetInstance;
    	        depth--;
    	      } else "/$" === data && depth++;
    	    }
    	    targetInstance = targetInstance.previousSibling;
    	  }
    	  return null;
    	}
    	function resolveSingletonInstance(type, props, rootContainerInstance) {
    	  props = getOwnerDocumentFromRootContainer(rootContainerInstance);
    	  switch (type) {
    	    case "html":
    	      type = props.documentElement;
    	      if (!type) throw Error(formatProdErrorMessage(452));
    	      return type;
    	    case "head":
    	      type = props.head;
    	      if (!type) throw Error(formatProdErrorMessage(453));
    	      return type;
    	    case "body":
    	      type = props.body;
    	      if (!type) throw Error(formatProdErrorMessage(454));
    	      return type;
    	    default:
    	      throw Error(formatProdErrorMessage(451));
    	  }
    	}
    	function releaseSingletonInstance(instance) {
    	  for (var attributes = instance.attributes; attributes.length; )
    	    instance.removeAttributeNode(attributes[0]);
    	  detachDeletedInstance(instance);
    	}
    	var preloadPropsMap = new Map(),
    	  preconnectsSet = new Set();
    	function getHoistableRoot(container) {
    	  return "function" === typeof container.getRootNode
    	    ? container.getRootNode()
    	    : 9 === container.nodeType
    	      ? container
    	      : container.ownerDocument;
    	}
    	var previousDispatcher = ReactDOMSharedInternals.d;
    	ReactDOMSharedInternals.d = {
    	  f: flushSyncWork,
    	  r: requestFormReset,
    	  D: prefetchDNS,
    	  C: preconnect,
    	  L: preload,
    	  m: preloadModule,
    	  X: preinitScript,
    	  S: preinitStyle,
    	  M: preinitModuleScript
    	};
    	function flushSyncWork() {
    	  var previousWasRendering = previousDispatcher.f(),
    	    wasRendering = flushSyncWork$1();
    	  return previousWasRendering || wasRendering;
    	}
    	function requestFormReset(form) {
    	  var formInst = getInstanceFromNode(form);
    	  null !== formInst && 5 === formInst.tag && "form" === formInst.type
    	    ? requestFormReset$1(formInst)
    	    : previousDispatcher.r(form);
    	}
    	var globalDocument = "undefined" === typeof document ? null : document;
    	function preconnectAs(rel, href, crossOrigin) {
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && "string" === typeof href && href) {
    	    var limitedEscapedHref =
    	      escapeSelectorAttributeValueInsideDoubleQuotes(href);
    	    limitedEscapedHref =
    	      'link[rel="' + rel + '"][href="' + limitedEscapedHref + '"]';
    	    "string" === typeof crossOrigin &&
    	      (limitedEscapedHref += '[crossorigin="' + crossOrigin + '"]');
    	    preconnectsSet.has(limitedEscapedHref) ||
    	      (preconnectsSet.add(limitedEscapedHref),
    	      (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),
    	      null === ownerDocument.querySelector(limitedEscapedHref) &&
    	        ((href = ownerDocument.createElement("link")),
    	        setInitialProperties(href, "link", rel),
    	        markNodeAsHoistable(href),
    	        ownerDocument.head.appendChild(href)));
    	  }
    	}
    	function prefetchDNS(href) {
    	  previousDispatcher.D(href);
    	  preconnectAs("dns-prefetch", href, null);
    	}
    	function preconnect(href, crossOrigin) {
    	  previousDispatcher.C(href, crossOrigin);
    	  preconnectAs("preconnect", href, crossOrigin);
    	}
    	function preload(href, as, options) {
    	  previousDispatcher.L(href, as, options);
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && href && as) {
    	    var preloadSelector =
    	      'link[rel="preload"][as="' +
    	      escapeSelectorAttributeValueInsideDoubleQuotes(as) +
    	      '"]';
    	    "image" === as
    	      ? options && options.imageSrcSet
    	        ? ((preloadSelector +=
    	            '[imagesrcset="' +
    	            escapeSelectorAttributeValueInsideDoubleQuotes(
    	              options.imageSrcSet
    	            ) +
    	            '"]'),
    	          "string" === typeof options.imageSizes &&
    	            (preloadSelector +=
    	              '[imagesizes="' +
    	              escapeSelectorAttributeValueInsideDoubleQuotes(
    	                options.imageSizes
    	              ) +
    	              '"]'))
    	        : (preloadSelector +=
    	            '[href="' +
    	            escapeSelectorAttributeValueInsideDoubleQuotes(href) +
    	            '"]')
    	      : (preloadSelector +=
    	          '[href="' +
    	          escapeSelectorAttributeValueInsideDoubleQuotes(href) +
    	          '"]');
    	    var key = preloadSelector;
    	    switch (as) {
    	      case "style":
    	        key = getStyleKey(href);
    	        break;
    	      case "script":
    	        key = getScriptKey(href);
    	    }
    	    preloadPropsMap.has(key) ||
    	      ((href = assign(
    	        {
    	          rel: "preload",
    	          href:
    	            "image" === as && options && options.imageSrcSet ? void 0 : href,
    	          as: as
    	        },
    	        options
    	      )),
    	      preloadPropsMap.set(key, href),
    	      null !== ownerDocument.querySelector(preloadSelector) ||
    	        ("style" === as &&
    	          ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||
    	        ("script" === as &&
    	          ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||
    	        ((as = ownerDocument.createElement("link")),
    	        setInitialProperties(as, "link", href),
    	        markNodeAsHoistable(as),
    	        ownerDocument.head.appendChild(as)));
    	  }
    	}
    	function preloadModule(href, options) {
    	  previousDispatcher.m(href, options);
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && href) {
    	    var as = options && "string" === typeof options.as ? options.as : "script",
    	      preloadSelector =
    	        'link[rel="modulepreload"][as="' +
    	        escapeSelectorAttributeValueInsideDoubleQuotes(as) +
    	        '"][href="' +
    	        escapeSelectorAttributeValueInsideDoubleQuotes(href) +
    	        '"]',
    	      key = preloadSelector;
    	    switch (as) {
    	      case "audioworklet":
    	      case "paintworklet":
    	      case "serviceworker":
    	      case "sharedworker":
    	      case "worker":
    	      case "script":
    	        key = getScriptKey(href);
    	    }
    	    if (
    	      !preloadPropsMap.has(key) &&
    	      ((href = assign({ rel: "modulepreload", href: href }, options)),
    	      preloadPropsMap.set(key, href),
    	      null === ownerDocument.querySelector(preloadSelector))
    	    ) {
    	      switch (as) {
    	        case "audioworklet":
    	        case "paintworklet":
    	        case "serviceworker":
    	        case "sharedworker":
    	        case "worker":
    	        case "script":
    	          if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))
    	            return;
    	      }
    	      as = ownerDocument.createElement("link");
    	      setInitialProperties(as, "link", href);
    	      markNodeAsHoistable(as);
    	      ownerDocument.head.appendChild(as);
    	    }
    	  }
    	}
    	function preinitStyle(href, precedence, options) {
    	  previousDispatcher.S(href, precedence, options);
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && href) {
    	    var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,
    	      key = getStyleKey(href);
    	    precedence = precedence || "default";
    	    var resource = styles.get(key);
    	    if (!resource) {
    	      var state = { loading: 0, preload: null };
    	      if (
    	        (resource = ownerDocument.querySelector(
    	          getStylesheetSelectorFromKey(key)
    	        ))
    	      )
    	        state.loading = 5;
    	      else {
    	        href = assign(
    	          { rel: "stylesheet", href: href, "data-precedence": precedence },
    	          options
    	        );
    	        (options = preloadPropsMap.get(key)) &&
    	          adoptPreloadPropsForStylesheet(href, options);
    	        var link = (resource = ownerDocument.createElement("link"));
    	        markNodeAsHoistable(link);
    	        setInitialProperties(link, "link", href);
    	        link._p = new Promise(function (resolve, reject) {
    	          link.onload = resolve;
    	          link.onerror = reject;
    	        });
    	        link.addEventListener("load", function () {
    	          state.loading |= 1;
    	        });
    	        link.addEventListener("error", function () {
    	          state.loading |= 2;
    	        });
    	        state.loading |= 4;
    	        insertStylesheet(resource, precedence, ownerDocument);
    	      }
    	      resource = {
    	        type: "stylesheet",
    	        instance: resource,
    	        count: 1,
    	        state: state
    	      };
    	      styles.set(key, resource);
    	    }
    	  }
    	}
    	function preinitScript(src, options) {
    	  previousDispatcher.X(src, options);
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && src) {
    	    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,
    	      key = getScriptKey(src),
    	      resource = scripts.get(key);
    	    resource ||
    	      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),
    	      resource ||
    	        ((src = assign({ src: src, async: true }, options)),
    	        (options = preloadPropsMap.get(key)) &&
    	          adoptPreloadPropsForScript(src, options),
    	        (resource = ownerDocument.createElement("script")),
    	        markNodeAsHoistable(resource),
    	        setInitialProperties(resource, "link", src),
    	        ownerDocument.head.appendChild(resource)),
    	      (resource = {
    	        type: "script",
    	        instance: resource,
    	        count: 1,
    	        state: null
    	      }),
    	      scripts.set(key, resource));
    	  }
    	}
    	function preinitModuleScript(src, options) {
    	  previousDispatcher.M(src, options);
    	  var ownerDocument = globalDocument;
    	  if (ownerDocument && src) {
    	    var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,
    	      key = getScriptKey(src),
    	      resource = scripts.get(key);
    	    resource ||
    	      ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),
    	      resource ||
    	        ((src = assign({ src: src, async: true, type: "module" }, options)),
    	        (options = preloadPropsMap.get(key)) &&
    	          adoptPreloadPropsForScript(src, options),
    	        (resource = ownerDocument.createElement("script")),
    	        markNodeAsHoistable(resource),
    	        setInitialProperties(resource, "link", src),
    	        ownerDocument.head.appendChild(resource)),
    	      (resource = {
    	        type: "script",
    	        instance: resource,
    	        count: 1,
    	        state: null
    	      }),
    	      scripts.set(key, resource));
    	  }
    	}
    	function getResource(type, currentProps, pendingProps, currentResource) {
    	  var JSCompiler_inline_result = (JSCompiler_inline_result =
    	    rootInstanceStackCursor.current)
    	    ? getHoistableRoot(JSCompiler_inline_result)
    	    : null;
    	  if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));
    	  switch (type) {
    	    case "meta":
    	    case "title":
    	      return null;
    	    case "style":
    	      return "string" === typeof pendingProps.precedence &&
    	        "string" === typeof pendingProps.href
    	        ? ((currentProps = getStyleKey(pendingProps.href)),
    	          (pendingProps = getResourcesFromRoot(
    	            JSCompiler_inline_result
    	          ).hoistableStyles),
    	          (currentResource = pendingProps.get(currentProps)),
    	          currentResource ||
    	            ((currentResource = {
    	              type: "style",
    	              instance: null,
    	              count: 0,
    	              state: null
    	            }),
    	            pendingProps.set(currentProps, currentResource)),
    	          currentResource)
    	        : { type: "void", instance: null, count: 0, state: null };
    	    case "link":
    	      if (
    	        "stylesheet" === pendingProps.rel &&
    	        "string" === typeof pendingProps.href &&
    	        "string" === typeof pendingProps.precedence
    	      ) {
    	        type = getStyleKey(pendingProps.href);
    	        var styles$244 = getResourcesFromRoot(
    	            JSCompiler_inline_result
    	          ).hoistableStyles,
    	          resource$245 = styles$244.get(type);
    	        resource$245 ||
    	          ((JSCompiler_inline_result =
    	            JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),
    	          (resource$245 = {
    	            type: "stylesheet",
    	            instance: null,
    	            count: 0,
    	            state: { loading: 0, preload: null }
    	          }),
    	          styles$244.set(type, resource$245),
    	          (styles$244 = JSCompiler_inline_result.querySelector(
    	            getStylesheetSelectorFromKey(type)
    	          )) &&
    	            !styles$244._p &&
    	            ((resource$245.instance = styles$244),
    	            (resource$245.state.loading = 5)),
    	          preloadPropsMap.has(type) ||
    	            ((pendingProps = {
    	              rel: "preload",
    	              as: "style",
    	              href: pendingProps.href,
    	              crossOrigin: pendingProps.crossOrigin,
    	              integrity: pendingProps.integrity,
    	              media: pendingProps.media,
    	              hrefLang: pendingProps.hrefLang,
    	              referrerPolicy: pendingProps.referrerPolicy
    	            }),
    	            preloadPropsMap.set(type, pendingProps),
    	            styles$244 ||
    	              preloadStylesheet(
    	                JSCompiler_inline_result,
    	                type,
    	                pendingProps,
    	                resource$245.state
    	              )));
    	        if (currentProps && null === currentResource)
    	          throw Error(formatProdErrorMessage(528, ""));
    	        return resource$245;
    	      }
    	      if (currentProps && null !== currentResource)
    	        throw Error(formatProdErrorMessage(529, ""));
    	      return null;
    	    case "script":
    	      return (
    	        (currentProps = pendingProps.async),
    	        (pendingProps = pendingProps.src),
    	        "string" === typeof pendingProps &&
    	        currentProps &&
    	        "function" !== typeof currentProps &&
    	        "symbol" !== typeof currentProps
    	          ? ((currentProps = getScriptKey(pendingProps)),
    	            (pendingProps = getResourcesFromRoot(
    	              JSCompiler_inline_result
    	            ).hoistableScripts),
    	            (currentResource = pendingProps.get(currentProps)),
    	            currentResource ||
    	              ((currentResource = {
    	                type: "script",
    	                instance: null,
    	                count: 0,
    	                state: null
    	              }),
    	              pendingProps.set(currentProps, currentResource)),
    	            currentResource)
    	          : { type: "void", instance: null, count: 0, state: null }
    	      );
    	    default:
    	      throw Error(formatProdErrorMessage(444, type));
    	  }
    	}
    	function getStyleKey(href) {
    	  return 'href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"';
    	}
    	function getStylesheetSelectorFromKey(key) {
    	  return 'link[rel="stylesheet"][' + key + "]";
    	}
    	function stylesheetPropsFromRawProps(rawProps) {
    	  return assign({}, rawProps, {
    	    "data-precedence": rawProps.precedence,
    	    precedence: null
    	  });
    	}
    	function preloadStylesheet(ownerDocument, key, preloadProps, state) {
    	  ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]")
    	    ? (state.loading = 1)
    	    : ((key = ownerDocument.createElement("link")),
    	      (state.preload = key),
    	      key.addEventListener("load", function () {
    	        return (state.loading |= 1);
    	      }),
    	      key.addEventListener("error", function () {
    	        return (state.loading |= 2);
    	      }),
    	      setInitialProperties(key, "link", preloadProps),
    	      markNodeAsHoistable(key),
    	      ownerDocument.head.appendChild(key));
    	}
    	function getScriptKey(src) {
    	  return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]';
    	}
    	function getScriptSelectorFromKey(key) {
    	  return "script[async]" + key;
    	}
    	function acquireResource(hoistableRoot, resource, props) {
    	  resource.count++;
    	  if (null === resource.instance)
    	    switch (resource.type) {
    	      case "style":
    	        var instance = hoistableRoot.querySelector(
    	          'style[data-href~="' +
    	            escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +
    	            '"]'
    	        );
    	        if (instance)
    	          return (
    	            (resource.instance = instance),
    	            markNodeAsHoistable(instance),
    	            instance
    	          );
    	        var styleProps = assign({}, props, {
    	          "data-href": props.href,
    	          "data-precedence": props.precedence,
    	          href: null,
    	          precedence: null
    	        });
    	        instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(
    	          "style"
    	        );
    	        markNodeAsHoistable(instance);
    	        setInitialProperties(instance, "style", styleProps);
    	        insertStylesheet(instance, props.precedence, hoistableRoot);
    	        return (resource.instance = instance);
    	      case "stylesheet":
    	        styleProps = getStyleKey(props.href);
    	        var instance$250 = hoistableRoot.querySelector(
    	          getStylesheetSelectorFromKey(styleProps)
    	        );
    	        if (instance$250)
    	          return (
    	            (resource.state.loading |= 4),
    	            (resource.instance = instance$250),
    	            markNodeAsHoistable(instance$250),
    	            instance$250
    	          );
    	        instance = stylesheetPropsFromRawProps(props);
    	        (styleProps = preloadPropsMap.get(styleProps)) &&
    	          adoptPreloadPropsForStylesheet(instance, styleProps);
    	        instance$250 = (
    	          hoistableRoot.ownerDocument || hoistableRoot
    	        ).createElement("link");
    	        markNodeAsHoistable(instance$250);
    	        var linkInstance = instance$250;
    	        linkInstance._p = new Promise(function (resolve, reject) {
    	          linkInstance.onload = resolve;
    	          linkInstance.onerror = reject;
    	        });
    	        setInitialProperties(instance$250, "link", instance);
    	        resource.state.loading |= 4;
    	        insertStylesheet(instance$250, props.precedence, hoistableRoot);
    	        return (resource.instance = instance$250);
    	      case "script":
    	        instance$250 = getScriptKey(props.src);
    	        if (
    	          (styleProps = hoistableRoot.querySelector(
    	            getScriptSelectorFromKey(instance$250)
    	          ))
    	        )
    	          return (
    	            (resource.instance = styleProps),
    	            markNodeAsHoistable(styleProps),
    	            styleProps
    	          );
    	        instance = props;
    	        if ((styleProps = preloadPropsMap.get(instance$250)))
    	          (instance = assign({}, props)),
    	            adoptPreloadPropsForScript(instance, styleProps);
    	        hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
    	        styleProps = hoistableRoot.createElement("script");
    	        markNodeAsHoistable(styleProps);
    	        setInitialProperties(styleProps, "link", instance);
    	        hoistableRoot.head.appendChild(styleProps);
    	        return (resource.instance = styleProps);
    	      case "void":
    	        return null;
    	      default:
    	        throw Error(formatProdErrorMessage(443, resource.type));
    	    }
    	  else
    	    "stylesheet" === resource.type &&
    	      0 === (resource.state.loading & 4) &&
    	      ((instance = resource.instance),
    	      (resource.state.loading |= 4),
    	      insertStylesheet(instance, props.precedence, hoistableRoot));
    	  return resource.instance;
    	}
    	function insertStylesheet(instance, precedence, root) {
    	  for (
    	    var nodes = root.querySelectorAll(
    	        'link[rel="stylesheet"][data-precedence],style[data-precedence]'
    	      ),
    	      last = nodes.length ? nodes[nodes.length - 1] : null,
    	      prior = last,
    	      i = 0;
    	    i < nodes.length;
    	    i++
    	  ) {
    	    var node = nodes[i];
    	    if (node.dataset.precedence === precedence) prior = node;
    	    else if (prior !== last) break;
    	  }
    	  prior
    	    ? prior.parentNode.insertBefore(instance, prior.nextSibling)
    	    : ((precedence = 9 === root.nodeType ? root.head : root),
    	      precedence.insertBefore(instance, precedence.firstChild));
    	}
    	function adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {
    	  null == stylesheetProps.crossOrigin &&
    	    (stylesheetProps.crossOrigin = preloadProps.crossOrigin);
    	  null == stylesheetProps.referrerPolicy &&
    	    (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);
    	  null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);
    	}
    	function adoptPreloadPropsForScript(scriptProps, preloadProps) {
    	  null == scriptProps.crossOrigin &&
    	    (scriptProps.crossOrigin = preloadProps.crossOrigin);
    	  null == scriptProps.referrerPolicy &&
    	    (scriptProps.referrerPolicy = preloadProps.referrerPolicy);
    	  null == scriptProps.integrity &&
    	    (scriptProps.integrity = preloadProps.integrity);
    	}
    	var tagCaches = null;
    	function getHydratableHoistableCache(type, keyAttribute, ownerDocument) {
    	  if (null === tagCaches) {
    	    var cache = new Map();
    	    var caches = (tagCaches = new Map());
    	    caches.set(ownerDocument, cache);
    	  } else
    	    (caches = tagCaches),
    	      (cache = caches.get(ownerDocument)),
    	      cache || ((cache = new Map()), caches.set(ownerDocument, cache));
    	  if (cache.has(type)) return cache;
    	  cache.set(type, null);
    	  ownerDocument = ownerDocument.getElementsByTagName(type);
    	  for (caches = 0; caches < ownerDocument.length; caches++) {
    	    var node = ownerDocument[caches];
    	    if (
    	      !(
    	        node[internalHoistableMarker] ||
    	        node[internalInstanceKey] ||
    	        ("link" === type && "stylesheet" === node.getAttribute("rel"))
    	      ) &&
    	      "http://www.w3.org/2000/svg" !== node.namespaceURI
    	    ) {
    	      var nodeKey = node.getAttribute(keyAttribute) || "";
    	      nodeKey = type + nodeKey;
    	      var existing = cache.get(nodeKey);
    	      existing ? existing.push(node) : cache.set(nodeKey, [node]);
    	    }
    	  }
    	  return cache;
    	}
    	function mountHoistable(hoistableRoot, type, instance) {
    	  hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;
    	  hoistableRoot.head.insertBefore(
    	    instance,
    	    "title" === type ? hoistableRoot.querySelector("head > title") : null
    	  );
    	}
    	function isHostHoistableType(type, props, hostContext) {
    	  if (1 === hostContext || null != props.itemProp) return false;
    	  switch (type) {
    	    case "meta":
    	    case "title":
    	      return true;
    	    case "style":
    	      if (
    	        "string" !== typeof props.precedence ||
    	        "string" !== typeof props.href ||
    	        "" === props.href
    	      )
    	        break;
    	      return true;
    	    case "link":
    	      if (
    	        "string" !== typeof props.rel ||
    	        "string" !== typeof props.href ||
    	        "" === props.href ||
    	        props.onLoad ||
    	        props.onError
    	      )
    	        break;
    	      switch (props.rel) {
    	        case "stylesheet":
    	          return (
    	            (type = props.disabled),
    	            "string" === typeof props.precedence && null == type
    	          );
    	        default:
    	          return true;
    	      }
    	    case "script":
    	      if (
    	        props.async &&
    	        "function" !== typeof props.async &&
    	        "symbol" !== typeof props.async &&
    	        !props.onLoad &&
    	        !props.onError &&
    	        props.src &&
    	        "string" === typeof props.src
    	      )
    	        return true;
    	  }
    	  return false;
    	}
    	function preloadResource(resource) {
    	  return "stylesheet" === resource.type && 0 === (resource.state.loading & 3)
    	    ? false
    	    : true;
    	}
    	var suspendedState = null;
    	function noop() {}
    	function suspendResource(hoistableRoot, resource, props) {
    	  if (null === suspendedState) throw Error(formatProdErrorMessage(475));
    	  var state = suspendedState;
    	  if (
    	    "stylesheet" === resource.type &&
    	    ("string" !== typeof props.media ||
    	      false !== matchMedia(props.media).matches) &&
    	    0 === (resource.state.loading & 4)
    	  ) {
    	    if (null === resource.instance) {
    	      var key = getStyleKey(props.href),
    	        instance = hoistableRoot.querySelector(
    	          getStylesheetSelectorFromKey(key)
    	        );
    	      if (instance) {
    	        hoistableRoot = instance._p;
    	        null !== hoistableRoot &&
    	          "object" === typeof hoistableRoot &&
    	          "function" === typeof hoistableRoot.then &&
    	          (state.count++,
    	          (state = onUnsuspend.bind(state)),
    	          hoistableRoot.then(state, state));
    	        resource.state.loading |= 4;
    	        resource.instance = instance;
    	        markNodeAsHoistable(instance);
    	        return;
    	      }
    	      instance = hoistableRoot.ownerDocument || hoistableRoot;
    	      props = stylesheetPropsFromRawProps(props);
    	      (key = preloadPropsMap.get(key)) &&
    	        adoptPreloadPropsForStylesheet(props, key);
    	      instance = instance.createElement("link");
    	      markNodeAsHoistable(instance);
    	      var linkInstance = instance;
    	      linkInstance._p = new Promise(function (resolve, reject) {
    	        linkInstance.onload = resolve;
    	        linkInstance.onerror = reject;
    	      });
    	      setInitialProperties(instance, "link", props);
    	      resource.instance = instance;
    	    }
    	    null === state.stylesheets && (state.stylesheets = new Map());
    	    state.stylesheets.set(resource, hoistableRoot);
    	    (hoistableRoot = resource.state.preload) &&
    	      0 === (resource.state.loading & 3) &&
    	      (state.count++,
    	      (resource = onUnsuspend.bind(state)),
    	      hoistableRoot.addEventListener("load", resource),
    	      hoistableRoot.addEventListener("error", resource));
    	  }
    	}
    	function waitForCommitToBeReady() {
    	  if (null === suspendedState) throw Error(formatProdErrorMessage(475));
    	  var state = suspendedState;
    	  state.stylesheets &&
    	    0 === state.count &&
    	    insertSuspendedStylesheets(state, state.stylesheets);
    	  return 0 < state.count
    	    ? function (commit) {
    	        var stylesheetTimer = setTimeout(function () {
    	          state.stylesheets &&
    	            insertSuspendedStylesheets(state, state.stylesheets);
    	          if (state.unsuspend) {
    	            var unsuspend = state.unsuspend;
    	            state.unsuspend = null;
    	            unsuspend();
    	          }
    	        }, 6e4);
    	        state.unsuspend = commit;
    	        return function () {
    	          state.unsuspend = null;
    	          clearTimeout(stylesheetTimer);
    	        };
    	      }
    	    : null;
    	}
    	function onUnsuspend() {
    	  this.count--;
    	  if (0 === this.count)
    	    if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);
    	    else if (this.unsuspend) {
    	      var unsuspend = this.unsuspend;
    	      this.unsuspend = null;
    	      unsuspend();
    	    }
    	}
    	var precedencesByRoot = null;
    	function insertSuspendedStylesheets(state, resources) {
    	  state.stylesheets = null;
    	  null !== state.unsuspend &&
    	    (state.count++,
    	    (precedencesByRoot = new Map()),
    	    resources.forEach(insertStylesheetIntoRoot, state),
    	    (precedencesByRoot = null),
    	    onUnsuspend.call(state));
    	}
    	function insertStylesheetIntoRoot(root, resource) {
    	  if (!(resource.state.loading & 4)) {
    	    var precedences = precedencesByRoot.get(root);
    	    if (precedences) var last = precedences.get(null);
    	    else {
    	      precedences = new Map();
    	      precedencesByRoot.set(root, precedences);
    	      for (
    	        var nodes = root.querySelectorAll(
    	            "link[data-precedence],style[data-precedence]"
    	          ),
    	          i = 0;
    	        i < nodes.length;
    	        i++
    	      ) {
    	        var node = nodes[i];
    	        if (
    	          "LINK" === node.nodeName ||
    	          "not all" !== node.getAttribute("media")
    	        )
    	          precedences.set(node.dataset.precedence, node), (last = node);
    	      }
    	      last && precedences.set(null, last);
    	    }
    	    nodes = resource.instance;
    	    node = nodes.getAttribute("data-precedence");
    	    i = precedences.get(node) || last;
    	    i === last && precedences.set(null, nodes);
    	    precedences.set(node, nodes);
    	    this.count++;
    	    last = onUnsuspend.bind(this);
    	    nodes.addEventListener("load", last);
    	    nodes.addEventListener("error", last);
    	    i
    	      ? i.parentNode.insertBefore(nodes, i.nextSibling)
    	      : ((root = 9 === root.nodeType ? root.head : root),
    	        root.insertBefore(nodes, root.firstChild));
    	    resource.state.loading |= 4;
    	  }
    	}
    	var HostTransitionContext = {
    	  $$typeof: REACT_CONTEXT_TYPE,
    	  Provider: null,
    	  Consumer: null,
    	  _currentValue: sharedNotPendingObject,
    	  _currentValue2: sharedNotPendingObject,
    	  _threadCount: 0
    	};
    	function FiberRootNode(
    	  containerInfo,
    	  tag,
    	  hydrate,
    	  identifierPrefix,
    	  onUncaughtError,
    	  onCaughtError,
    	  onRecoverableError,
    	  formState
    	) {
    	  this.tag = 1;
    	  this.containerInfo = containerInfo;
    	  this.pingCache = this.current = this.pendingChildren = null;
    	  this.timeoutHandle = -1;
    	  this.callbackNode =
    	    this.next =
    	    this.pendingContext =
    	    this.context =
    	    this.cancelPendingCommit =
    	      null;
    	  this.callbackPriority = 0;
    	  this.expirationTimes = createLaneMap(-1);
    	  this.entangledLanes =
    	    this.shellSuspendCounter =
    	    this.errorRecoveryDisabledLanes =
    	    this.expiredLanes =
    	    this.warmLanes =
    	    this.pingedLanes =
    	    this.suspendedLanes =
    	    this.pendingLanes =
    	      0;
    	  this.entanglements = createLaneMap(0);
    	  this.hiddenUpdates = createLaneMap(null);
    	  this.identifierPrefix = identifierPrefix;
    	  this.onUncaughtError = onUncaughtError;
    	  this.onCaughtError = onCaughtError;
    	  this.onRecoverableError = onRecoverableError;
    	  this.pooledCache = null;
    	  this.pooledCacheLanes = 0;
    	  this.formState = formState;
    	  this.incompleteTransitions = new Map();
    	}
    	function createFiberRoot(
    	  containerInfo,
    	  tag,
    	  hydrate,
    	  initialChildren,
    	  hydrationCallbacks,
    	  isStrictMode,
    	  identifierPrefix,
    	  onUncaughtError,
    	  onCaughtError,
    	  onRecoverableError,
    	  transitionCallbacks,
    	  formState
    	) {
    	  containerInfo = new FiberRootNode(
    	    containerInfo,
    	    tag,
    	    hydrate,
    	    identifierPrefix,
    	    onUncaughtError,
    	    onCaughtError,
    	    onRecoverableError,
    	    formState
    	  );
    	  tag = 1;
    	  true === isStrictMode && (tag |= 24);
    	  isStrictMode = createFiberImplClass(3, null, null, tag);
    	  containerInfo.current = isStrictMode;
    	  isStrictMode.stateNode = containerInfo;
    	  tag = createCache();
    	  tag.refCount++;
    	  containerInfo.pooledCache = tag;
    	  tag.refCount++;
    	  isStrictMode.memoizedState = {
    	    element: initialChildren,
    	    isDehydrated: hydrate,
    	    cache: tag
    	  };
    	  initializeUpdateQueue(isStrictMode);
    	  return containerInfo;
    	}
    	function getContextForSubtree(parentComponent) {
    	  if (!parentComponent) return emptyContextObject;
    	  parentComponent = emptyContextObject;
    	  return parentComponent;
    	}
    	function updateContainerImpl(
    	  rootFiber,
    	  lane,
    	  element,
    	  container,
    	  parentComponent,
    	  callback
    	) {
    	  parentComponent = getContextForSubtree(parentComponent);
    	  null === container.context
    	    ? (container.context = parentComponent)
    	    : (container.pendingContext = parentComponent);
    	  container = createUpdate(lane);
    	  container.payload = { element: element };
    	  callback = void 0 === callback ? null : callback;
    	  null !== callback && (container.callback = callback);
    	  element = enqueueUpdate(rootFiber, container, lane);
    	  null !== element &&
    	    (scheduleUpdateOnFiber(element, rootFiber, lane),
    	    entangleTransitions(element, rootFiber, lane));
    	}
    	function markRetryLaneImpl(fiber, retryLane) {
    	  fiber = fiber.memoizedState;
    	  if (null !== fiber && null !== fiber.dehydrated) {
    	    var a = fiber.retryLane;
    	    fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;
    	  }
    	}
    	function markRetryLaneIfNotHydrated(fiber, retryLane) {
    	  markRetryLaneImpl(fiber, retryLane);
    	  (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);
    	}
    	function attemptContinuousHydration(fiber) {
    	  if (13 === fiber.tag) {
    	    var root = enqueueConcurrentRenderForLane(fiber, 67108864);
    	    null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);
    	    markRetryLaneIfNotHydrated(fiber, 67108864);
    	  }
    	}
    	var _enabled = true;
    	function dispatchDiscreteEvent(
    	  domEventName,
    	  eventSystemFlags,
    	  container,
    	  nativeEvent
    	) {
    	  var prevTransition = ReactSharedInternals.T;
    	  ReactSharedInternals.T = null;
    	  var previousPriority = ReactDOMSharedInternals.p;
    	  try {
    	    (ReactDOMSharedInternals.p = 2),
    	      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
    	  } finally {
    	    (ReactDOMSharedInternals.p = previousPriority),
    	      (ReactSharedInternals.T = prevTransition);
    	  }
    	}
    	function dispatchContinuousEvent(
    	  domEventName,
    	  eventSystemFlags,
    	  container,
    	  nativeEvent
    	) {
    	  var prevTransition = ReactSharedInternals.T;
    	  ReactSharedInternals.T = null;
    	  var previousPriority = ReactDOMSharedInternals.p;
    	  try {
    	    (ReactDOMSharedInternals.p = 8),
    	      dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);
    	  } finally {
    	    (ReactDOMSharedInternals.p = previousPriority),
    	      (ReactSharedInternals.T = prevTransition);
    	  }
    	}
    	function dispatchEvent(
    	  domEventName,
    	  eventSystemFlags,
    	  targetContainer,
    	  nativeEvent
    	) {
    	  if (_enabled) {
    	    var blockedOn = findInstanceBlockingEvent(nativeEvent);
    	    if (null === blockedOn)
    	      dispatchEventForPluginEventSystem(
    	        domEventName,
    	        eventSystemFlags,
    	        nativeEvent,
    	        return_targetInst,
    	        targetContainer
    	      ),
    	        clearIfContinuousEvent(domEventName, nativeEvent);
    	    else if (
    	      queueIfContinuousEvent(
    	        blockedOn,
    	        domEventName,
    	        eventSystemFlags,
    	        targetContainer,
    	        nativeEvent
    	      )
    	    )
    	      nativeEvent.stopPropagation();
    	    else if (
    	      (clearIfContinuousEvent(domEventName, nativeEvent),
    	      eventSystemFlags & 4 &&
    	        -1 < discreteReplayableEvents.indexOf(domEventName))
    	    ) {
    	      for (; null !== blockedOn; ) {
    	        var fiber = getInstanceFromNode(blockedOn);
    	        if (null !== fiber)
    	          switch (fiber.tag) {
    	            case 3:
    	              fiber = fiber.stateNode;
    	              if (fiber.current.memoizedState.isDehydrated) {
    	                var lanes = getHighestPriorityLanes(fiber.pendingLanes);
    	                if (0 !== lanes) {
    	                  var root = fiber;
    	                  root.pendingLanes |= 2;
    	                  for (root.entangledLanes |= 2; lanes; ) {
    	                    var lane = 1 << (31 - clz32(lanes));
    	                    root.entanglements[1] |= lane;
    	                    lanes &= ~lane;
    	                  }
    	                  ensureRootIsScheduled(fiber);
    	                  0 === (executionContext & 6) &&
    	                    ((workInProgressRootRenderTargetTime = now() + 500),
    	                    flushSyncWorkAcrossRoots_impl(0));
    	                }
    	              }
    	              break;
    	            case 13:
    	              (root = enqueueConcurrentRenderForLane(fiber, 2)),
    	                null !== root && scheduleUpdateOnFiber(root, fiber, 2),
    	                flushSyncWork$1(),
    	                markRetryLaneIfNotHydrated(fiber, 2);
    	          }
    	        fiber = findInstanceBlockingEvent(nativeEvent);
    	        null === fiber &&
    	          dispatchEventForPluginEventSystem(
    	            domEventName,
    	            eventSystemFlags,
    	            nativeEvent,
    	            return_targetInst,
    	            targetContainer
    	          );
    	        if (fiber === blockedOn) break;
    	        blockedOn = fiber;
    	      }
    	      null !== blockedOn && nativeEvent.stopPropagation();
    	    } else
    	      dispatchEventForPluginEventSystem(
    	        domEventName,
    	        eventSystemFlags,
    	        nativeEvent,
    	        null,
    	        targetContainer
    	      );
    	  }
    	}
    	function findInstanceBlockingEvent(nativeEvent) {
    	  nativeEvent = getEventTarget(nativeEvent);
    	  return findInstanceBlockingTarget(nativeEvent);
    	}
    	var return_targetInst = null;
    	function findInstanceBlockingTarget(targetNode) {
    	  return_targetInst = null;
    	  targetNode = getClosestInstanceFromNode(targetNode);
    	  if (null !== targetNode) {
    	    var nearestMounted = getNearestMountedFiber(targetNode);
    	    if (null === nearestMounted) targetNode = null;
    	    else {
    	      var tag = nearestMounted.tag;
    	      if (13 === tag) {
    	        targetNode = getSuspenseInstanceFromFiber(nearestMounted);
    	        if (null !== targetNode) return targetNode;
    	        targetNode = null;
    	      } else if (3 === tag) {
    	        if (nearestMounted.stateNode.current.memoizedState.isDehydrated)
    	          return 3 === nearestMounted.tag
    	            ? nearestMounted.stateNode.containerInfo
    	            : null;
    	        targetNode = null;
    	      } else nearestMounted !== targetNode && (targetNode = null);
    	    }
    	  }
    	  return_targetInst = targetNode;
    	  return null;
    	}
    	function getEventPriority(domEventName) {
    	  switch (domEventName) {
    	    case "beforetoggle":
    	    case "cancel":
    	    case "click":
    	    case "close":
    	    case "contextmenu":
    	    case "copy":
    	    case "cut":
    	    case "auxclick":
    	    case "dblclick":
    	    case "dragend":
    	    case "dragstart":
    	    case "drop":
    	    case "focusin":
    	    case "focusout":
    	    case "input":
    	    case "invalid":
    	    case "keydown":
    	    case "keypress":
    	    case "keyup":
    	    case "mousedown":
    	    case "mouseup":
    	    case "paste":
    	    case "pause":
    	    case "play":
    	    case "pointercancel":
    	    case "pointerdown":
    	    case "pointerup":
    	    case "ratechange":
    	    case "reset":
    	    case "resize":
    	    case "seeked":
    	    case "submit":
    	    case "toggle":
    	    case "touchcancel":
    	    case "touchend":
    	    case "touchstart":
    	    case "volumechange":
    	    case "change":
    	    case "selectionchange":
    	    case "textInput":
    	    case "compositionstart":
    	    case "compositionend":
    	    case "compositionupdate":
    	    case "beforeblur":
    	    case "afterblur":
    	    case "beforeinput":
    	    case "blur":
    	    case "fullscreenchange":
    	    case "focus":
    	    case "hashchange":
    	    case "popstate":
    	    case "select":
    	    case "selectstart":
    	      return 2;
    	    case "drag":
    	    case "dragenter":
    	    case "dragexit":
    	    case "dragleave":
    	    case "dragover":
    	    case "mousemove":
    	    case "mouseout":
    	    case "mouseover":
    	    case "pointermove":
    	    case "pointerout":
    	    case "pointerover":
    	    case "scroll":
    	    case "touchmove":
    	    case "wheel":
    	    case "mouseenter":
    	    case "mouseleave":
    	    case "pointerenter":
    	    case "pointerleave":
    	      return 8;
    	    case "message":
    	      switch (getCurrentPriorityLevel()) {
    	        case ImmediatePriority:
    	          return 2;
    	        case UserBlockingPriority:
    	          return 8;
    	        case NormalPriority$1:
    	        case LowPriority:
    	          return 32;
    	        case IdlePriority:
    	          return 268435456;
    	        default:
    	          return 32;
    	      }
    	    default:
    	      return 32;
    	  }
    	}
    	var hasScheduledReplayAttempt = false,
    	  queuedFocus = null,
    	  queuedDrag = null,
    	  queuedMouse = null,
    	  queuedPointers = new Map(),
    	  queuedPointerCaptures = new Map(),
    	  queuedExplicitHydrationTargets = [],
    	  discreteReplayableEvents =
    	    "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(
    	      " "
    	    );
    	function clearIfContinuousEvent(domEventName, nativeEvent) {
    	  switch (domEventName) {
    	    case "focusin":
    	    case "focusout":
    	      queuedFocus = null;
    	      break;
    	    case "dragenter":
    	    case "dragleave":
    	      queuedDrag = null;
    	      break;
    	    case "mouseover":
    	    case "mouseout":
    	      queuedMouse = null;
    	      break;
    	    case "pointerover":
    	    case "pointerout":
    	      queuedPointers.delete(nativeEvent.pointerId);
    	      break;
    	    case "gotpointercapture":
    	    case "lostpointercapture":
    	      queuedPointerCaptures.delete(nativeEvent.pointerId);
    	  }
    	}
    	function accumulateOrCreateContinuousQueuedReplayableEvent(
    	  existingQueuedEvent,
    	  blockedOn,
    	  domEventName,
    	  eventSystemFlags,
    	  targetContainer,
    	  nativeEvent
    	) {
    	  if (
    	    null === existingQueuedEvent ||
    	    existingQueuedEvent.nativeEvent !== nativeEvent
    	  )
    	    return (
    	      (existingQueuedEvent = {
    	        blockedOn: blockedOn,
    	        domEventName: domEventName,
    	        eventSystemFlags: eventSystemFlags,
    	        nativeEvent: nativeEvent,
    	        targetContainers: [targetContainer]
    	      }),
    	      null !== blockedOn &&
    	        ((blockedOn = getInstanceFromNode(blockedOn)),
    	        null !== blockedOn && attemptContinuousHydration(blockedOn)),
    	      existingQueuedEvent
    	    );
    	  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
    	  blockedOn = existingQueuedEvent.targetContainers;
    	  null !== targetContainer &&
    	    -1 === blockedOn.indexOf(targetContainer) &&
    	    blockedOn.push(targetContainer);
    	  return existingQueuedEvent;
    	}
    	function queueIfContinuousEvent(
    	  blockedOn,
    	  domEventName,
    	  eventSystemFlags,
    	  targetContainer,
    	  nativeEvent
    	) {
    	  switch (domEventName) {
    	    case "focusin":
    	      return (
    	        (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(
    	          queuedFocus,
    	          blockedOn,
    	          domEventName,
    	          eventSystemFlags,
    	          targetContainer,
    	          nativeEvent
    	        )),
    	        true
    	      );
    	    case "dragenter":
    	      return (
    	        (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(
    	          queuedDrag,
    	          blockedOn,
    	          domEventName,
    	          eventSystemFlags,
    	          targetContainer,
    	          nativeEvent
    	        )),
    	        true
    	      );
    	    case "mouseover":
    	      return (
    	        (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(
    	          queuedMouse,
    	          blockedOn,
    	          domEventName,
    	          eventSystemFlags,
    	          targetContainer,
    	          nativeEvent
    	        )),
    	        true
    	      );
    	    case "pointerover":
    	      var pointerId = nativeEvent.pointerId;
    	      queuedPointers.set(
    	        pointerId,
    	        accumulateOrCreateContinuousQueuedReplayableEvent(
    	          queuedPointers.get(pointerId) || null,
    	          blockedOn,
    	          domEventName,
    	          eventSystemFlags,
    	          targetContainer,
    	          nativeEvent
    	        )
    	      );
    	      return true;
    	    case "gotpointercapture":
    	      return (
    	        (pointerId = nativeEvent.pointerId),
    	        queuedPointerCaptures.set(
    	          pointerId,
    	          accumulateOrCreateContinuousQueuedReplayableEvent(
    	            queuedPointerCaptures.get(pointerId) || null,
    	            blockedOn,
    	            domEventName,
    	            eventSystemFlags,
    	            targetContainer,
    	            nativeEvent
    	          )
    	        ),
    	        true
    	      );
    	  }
    	  return false;
    	}
    	function attemptExplicitHydrationTarget(queuedTarget) {
    	  var targetInst = getClosestInstanceFromNode(queuedTarget.target);
    	  if (null !== targetInst) {
    	    var nearestMounted = getNearestMountedFiber(targetInst);
    	    if (null !== nearestMounted)
    	      if (((targetInst = nearestMounted.tag), 13 === targetInst)) {
    	        if (
    	          ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),
    	          null !== targetInst)
    	        ) {
    	          queuedTarget.blockedOn = targetInst;
    	          runWithPriority(queuedTarget.priority, function () {
    	            if (13 === nearestMounted.tag) {
    	              var lane = requestUpdateLane();
    	              lane = getBumpedLaneForHydrationByLane(lane);
    	              var root = enqueueConcurrentRenderForLane(nearestMounted, lane);
    	              null !== root &&
    	                scheduleUpdateOnFiber(root, nearestMounted, lane);
    	              markRetryLaneIfNotHydrated(nearestMounted, lane);
    	            }
    	          });
    	          return;
    	        }
    	      } else if (
    	        3 === targetInst &&
    	        nearestMounted.stateNode.current.memoizedState.isDehydrated
    	      ) {
    	        queuedTarget.blockedOn =
    	          3 === nearestMounted.tag
    	            ? nearestMounted.stateNode.containerInfo
    	            : null;
    	        return;
    	      }
    	  }
    	  queuedTarget.blockedOn = null;
    	}
    	function attemptReplayContinuousQueuedEvent(queuedEvent) {
    	  if (null !== queuedEvent.blockedOn) return false;
    	  for (
    	    var targetContainers = queuedEvent.targetContainers;
    	    0 < targetContainers.length;

    	  ) {
    	    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);
    	    if (null === nextBlockedOn) {
    	      nextBlockedOn = queuedEvent.nativeEvent;
    	      var nativeEventClone = new nextBlockedOn.constructor(
    	        nextBlockedOn.type,
    	        nextBlockedOn
    	      );
    	      currentReplayingEvent = nativeEventClone;
    	      nextBlockedOn.target.dispatchEvent(nativeEventClone);
    	      currentReplayingEvent = null;
    	    } else
    	      return (
    	        (targetContainers = getInstanceFromNode(nextBlockedOn)),
    	        null !== targetContainers &&
    	          attemptContinuousHydration(targetContainers),
    	        (queuedEvent.blockedOn = nextBlockedOn),
    	        false
    	      );
    	    targetContainers.shift();
    	  }
    	  return true;
    	}
    	function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
    	  attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);
    	}
    	function replayUnblockedEvents() {
    	  hasScheduledReplayAttempt = false;
    	  null !== queuedFocus &&
    	    attemptReplayContinuousQueuedEvent(queuedFocus) &&
    	    (queuedFocus = null);
    	  null !== queuedDrag &&
    	    attemptReplayContinuousQueuedEvent(queuedDrag) &&
    	    (queuedDrag = null);
    	  null !== queuedMouse &&
    	    attemptReplayContinuousQueuedEvent(queuedMouse) &&
    	    (queuedMouse = null);
    	  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
    	  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
    	}
    	function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
    	  queuedEvent.blockedOn === unblocked &&
    	    ((queuedEvent.blockedOn = null),
    	    hasScheduledReplayAttempt ||
    	      ((hasScheduledReplayAttempt = true),
    	      Scheduler.unstable_scheduleCallback(
    	        Scheduler.unstable_NormalPriority,
    	        replayUnblockedEvents
    	      )));
    	}
    	var lastScheduledReplayQueue = null;
    	function scheduleReplayQueueIfNeeded(formReplayingQueue) {
    	  lastScheduledReplayQueue !== formReplayingQueue &&
    	    ((lastScheduledReplayQueue = formReplayingQueue),
    	    Scheduler.unstable_scheduleCallback(
    	      Scheduler.unstable_NormalPriority,
    	      function () {
    	        lastScheduledReplayQueue === formReplayingQueue &&
    	          (lastScheduledReplayQueue = null);
    	        for (var i = 0; i < formReplayingQueue.length; i += 3) {
    	          var form = formReplayingQueue[i],
    	            submitterOrAction = formReplayingQueue[i + 1],
    	            formData = formReplayingQueue[i + 2];
    	          if ("function" !== typeof submitterOrAction)
    	            if (null === findInstanceBlockingTarget(submitterOrAction || form))
    	              continue;
    	            else break;
    	          var formInst = getInstanceFromNode(form);
    	          null !== formInst &&
    	            (formReplayingQueue.splice(i, 3),
    	            (i -= 3),
    	            startHostTransition(
    	              formInst,
    	              {
    	                pending: true,
    	                data: formData,
    	                method: form.method,
    	                action: submitterOrAction
    	              },
    	              submitterOrAction,
    	              formData
    	            ));
    	        }
    	      }
    	    ));
    	}
    	function retryIfBlockedOn(unblocked) {
    	  function unblock(queuedEvent) {
    	    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);
    	  }
    	  null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);
    	  null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);
    	  null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);
    	  queuedPointers.forEach(unblock);
    	  queuedPointerCaptures.forEach(unblock);
    	  for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {
    	    var queuedTarget = queuedExplicitHydrationTargets[i];
    	    queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);
    	  }
    	  for (
    	    ;
    	    0 < queuedExplicitHydrationTargets.length &&
    	    ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);

    	  )
    	    attemptExplicitHydrationTarget(i),
    	      null === i.blockedOn && queuedExplicitHydrationTargets.shift();
    	  i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;
    	  if (null != i)
    	    for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {
    	      var form = i[queuedTarget],
    	        submitterOrAction = i[queuedTarget + 1],
    	        formProps = form[internalPropsKey] || null;
    	      if ("function" === typeof submitterOrAction)
    	        formProps || scheduleReplayQueueIfNeeded(i);
    	      else if (formProps) {
    	        var action = null;
    	        if (submitterOrAction && submitterOrAction.hasAttribute("formAction"))
    	          if (
    	            ((form = submitterOrAction),
    	            (formProps = submitterOrAction[internalPropsKey] || null))
    	          )
    	            action = formProps.formAction;
    	          else {
    	            if (null !== findInstanceBlockingTarget(form)) continue;
    	          }
    	        else action = formProps.action;
    	        "function" === typeof action
    	          ? (i[queuedTarget + 1] = action)
    	          : (i.splice(queuedTarget, 3), (queuedTarget -= 3));
    	        scheduleReplayQueueIfNeeded(i);
    	      }
    	    }
    	}
    	function ReactDOMRoot(internalRoot) {
    	  this._internalRoot = internalRoot;
    	}
    	ReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =
    	  function (children) {
    	    var root = this._internalRoot;
    	    if (null === root) throw Error(formatProdErrorMessage(409));
    	    var current = root.current,
    	      lane = requestUpdateLane();
    	    updateContainerImpl(current, lane, children, root, null, null);
    	  };
    	ReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =
    	  function () {
    	    var root = this._internalRoot;
    	    if (null !== root) {
    	      this._internalRoot = null;
    	      var container = root.containerInfo;
    	      updateContainerImpl(root.current, 2, null, root, null, null);
    	      flushSyncWork$1();
    	      container[internalContainerInstanceKey] = null;
    	    }
    	  };
    	function ReactDOMHydrationRoot(internalRoot) {
    	  this._internalRoot = internalRoot;
    	}
    	ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
    	  if (target) {
    	    var updatePriority = resolveUpdatePriority();
    	    target = { blockedOn: null, target: target, priority: updatePriority };
    	    for (
    	      var i = 0;
    	      i < queuedExplicitHydrationTargets.length &&
    	      0 !== updatePriority &&
    	      updatePriority < queuedExplicitHydrationTargets[i].priority;
    	      i++
    	    );
    	    queuedExplicitHydrationTargets.splice(i, 0, target);
    	    0 === i && attemptExplicitHydrationTarget(target);
    	  }
    	};
    	var isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;
    	if (
    	  "19.1.0" !==
    	  isomorphicReactPackageVersion$jscomp$inline_1785
    	)
    	  throw Error(
    	    formatProdErrorMessage(
    	      527,
    	      isomorphicReactPackageVersion$jscomp$inline_1785,
    	      "19.1.0"
    	    )
    	  );
    	ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
    	  var fiber = componentOrElement._reactInternals;
    	  if (void 0 === fiber) {
    	    if ("function" === typeof componentOrElement.render)
    	      throw Error(formatProdErrorMessage(188));
    	    componentOrElement = Object.keys(componentOrElement).join(",");
    	    throw Error(formatProdErrorMessage(268, componentOrElement));
    	  }
    	  componentOrElement = findCurrentFiberUsingSlowPath(fiber);
    	  componentOrElement =
    	    null !== componentOrElement
    	      ? findCurrentHostFiberImpl(componentOrElement)
    	      : null;
    	  componentOrElement =
    	    null === componentOrElement ? null : componentOrElement.stateNode;
    	  return componentOrElement;
    	};
    	var internals$jscomp$inline_2256 = {
    	  bundleType: 0,
    	  version: "19.1.0",
    	  rendererPackageName: "react-dom",
    	  currentDispatcherRef: ReactSharedInternals,
    	  reconcilerVersion: "19.1.0"
    	};
    	if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
    	  var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
    	  if (
    	    !hook$jscomp$inline_2257.isDisabled &&
    	    hook$jscomp$inline_2257.supportsFiber
    	  )
    	    try {
    	      (rendererID = hook$jscomp$inline_2257.inject(
    	        internals$jscomp$inline_2256
    	      )),
    	        (injectedHook = hook$jscomp$inline_2257);
    	    } catch (err) {}
    	}
    	reactDomClient_production.createRoot = function (container, options) {
    	  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));
    	  var isStrictMode = false,
    	    identifierPrefix = "",
    	    onUncaughtError = defaultOnUncaughtError,
    	    onCaughtError = defaultOnCaughtError,
    	    onRecoverableError = defaultOnRecoverableError,
    	    transitionCallbacks = null;
    	  null !== options &&
    	    void 0 !== options &&
    	    (true === options.unstable_strictMode && (isStrictMode = true),
    	    void 0 !== options.identifierPrefix &&
    	      (identifierPrefix = options.identifierPrefix),
    	    void 0 !== options.onUncaughtError &&
    	      (onUncaughtError = options.onUncaughtError),
    	    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),
    	    void 0 !== options.onRecoverableError &&
    	      (onRecoverableError = options.onRecoverableError),
    	    void 0 !== options.unstable_transitionCallbacks &&
    	      (transitionCallbacks = options.unstable_transitionCallbacks));
    	  options = createFiberRoot(
    	    container,
    	    1,
    	    false,
    	    null,
    	    null,
    	    isStrictMode,
    	    identifierPrefix,
    	    onUncaughtError,
    	    onCaughtError,
    	    onRecoverableError,
    	    transitionCallbacks,
    	    null
    	  );
    	  container[internalContainerInstanceKey] = options.current;
    	  listenToAllSupportedEvents(container);
    	  return new ReactDOMRoot(options);
    	};
    	reactDomClient_production.hydrateRoot = function (container, initialChildren, options) {
    	  if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));
    	  var isStrictMode = false,
    	    identifierPrefix = "",
    	    onUncaughtError = defaultOnUncaughtError,
    	    onCaughtError = defaultOnCaughtError,
    	    onRecoverableError = defaultOnRecoverableError,
    	    transitionCallbacks = null,
    	    formState = null;
    	  null !== options &&
    	    void 0 !== options &&
    	    (true === options.unstable_strictMode && (isStrictMode = true),
    	    void 0 !== options.identifierPrefix &&
    	      (identifierPrefix = options.identifierPrefix),
    	    void 0 !== options.onUncaughtError &&
    	      (onUncaughtError = options.onUncaughtError),
    	    void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),
    	    void 0 !== options.onRecoverableError &&
    	      (onRecoverableError = options.onRecoverableError),
    	    void 0 !== options.unstable_transitionCallbacks &&
    	      (transitionCallbacks = options.unstable_transitionCallbacks),
    	    void 0 !== options.formState && (formState = options.formState));
    	  initialChildren = createFiberRoot(
    	    container,
    	    1,
    	    true,
    	    initialChildren,
    	    null != options ? options : null,
    	    isStrictMode,
    	    identifierPrefix,
    	    onUncaughtError,
    	    onCaughtError,
    	    onRecoverableError,
    	    transitionCallbacks,
    	    formState
    	  );
    	  initialChildren.context = getContextForSubtree(null);
    	  options = initialChildren.current;
    	  isStrictMode = requestUpdateLane();
    	  isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);
    	  identifierPrefix = createUpdate(isStrictMode);
    	  identifierPrefix.callback = null;
    	  enqueueUpdate(options, identifierPrefix, isStrictMode);
    	  options = isStrictMode;
    	  initialChildren.current.lanes = options;
    	  markRootUpdated$1(initialChildren, options);
    	  ensureRootIsScheduled(initialChildren);
    	  container[internalContainerInstanceKey] = initialChildren.current;
    	  listenToAllSupportedEvents(container);
    	  return new ReactDOMHydrationRoot(initialChildren);
    	};
    	reactDomClient_production.version = "19.1.0";
    	return reactDomClient_production;
    }

    var hasRequiredClient;

    function requireClient () {
    	if (hasRequiredClient) return client.exports;
    	hasRequiredClient = 1;

    	function checkDCE() {
    	  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
    	  if (
    	    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
    	    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
    	  ) {
    	    return;
    	  }
    	  try {
    	    // Verify that the code above has been dead code eliminated (DCE'd).
    	    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
    	  } catch (err) {
    	    // DevTools shouldn't crash React, no matter what.
    	    // We should still report in case we break this code.
    	    console.error(err);
    	  }
    	}

    	{
    	  // DCE check should happen before ReactDOM bundle executes so that
    	  // DevTools can report bad minification during injection.
    	  checkDCE();
    	  client.exports = requireReactDomClient_production();
    	}
    	return client.exports;
    }

    var clientExports = requireClient();

    var cjs = {exports: {}};

    var Draggable$1 = {};

    var propTypes = {exports: {}};

    /**
     * Copyright (c) 2013-present, Facebook, Inc.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var ReactPropTypesSecret_1;
    var hasRequiredReactPropTypesSecret;

    function requireReactPropTypesSecret () {
    	if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;
    	hasRequiredReactPropTypesSecret = 1;

    	var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

    	ReactPropTypesSecret_1 = ReactPropTypesSecret;
    	return ReactPropTypesSecret_1;
    }

    /**
     * Copyright (c) 2013-present, Facebook, Inc.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var factoryWithThrowingShims;
    var hasRequiredFactoryWithThrowingShims;

    function requireFactoryWithThrowingShims () {
    	if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;
    	hasRequiredFactoryWithThrowingShims = 1;

    	var ReactPropTypesSecret = /*@__PURE__*/ requireReactPropTypesSecret();

    	function emptyFunction() {}
    	function emptyFunctionWithReset() {}
    	emptyFunctionWithReset.resetWarningCache = emptyFunction;

    	factoryWithThrowingShims = function() {
    	  function shim(props, propName, componentName, location, propFullName, secret) {
    	    if (secret === ReactPropTypesSecret) {
    	      // It is still safe when called from React.
    	      return;
    	    }
    	    var err = new Error(
    	      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
    	      'Use PropTypes.checkPropTypes() to call them. ' +
    	      'Read more at http://fb.me/use-check-prop-types'
    	    );
    	    err.name = 'Invariant Violation';
    	    throw err;
    	  }	  shim.isRequired = shim;
    	  function getShim() {
    	    return shim;
    	  }	  // Important!
    	  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
    	  var ReactPropTypes = {
    	    array: shim,
    	    bigint: shim,
    	    bool: shim,
    	    func: shim,
    	    number: shim,
    	    object: shim,
    	    string: shim,
    	    symbol: shim,

    	    any: shim,
    	    arrayOf: getShim,
    	    element: shim,
    	    elementType: shim,
    	    instanceOf: getShim,
    	    node: shim,
    	    objectOf: getShim,
    	    oneOf: getShim,
    	    oneOfType: getShim,
    	    shape: getShim,
    	    exact: getShim,

    	    checkPropTypes: emptyFunctionWithReset,
    	    resetWarningCache: emptyFunction
    	  };

    	  ReactPropTypes.PropTypes = ReactPropTypes;

    	  return ReactPropTypes;
    	};
    	return factoryWithThrowingShims;
    }

    /**
     * Copyright (c) 2013-present, Facebook, Inc.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredPropTypes;

    function requirePropTypes () {
    	if (hasRequiredPropTypes) return propTypes.exports;
    	hasRequiredPropTypes = 1;
    	{
    	  // By explicitly using `prop-types` you are opting into new production behavior.
    	  // http://fb.me/prop-types-in-prod
    	  propTypes.exports = /*@__PURE__*/ requireFactoryWithThrowingShims()();
    	}
    	return propTypes.exports;
    }

    function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);else for(t in e)e[t]&&(n&&(n+=" "),n+=t);return n}function clsx(){for(var e,t,f=0,n="";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}

    var clsx_m = /*#__PURE__*/Object.freeze({
        __proto__: null,
        clsx: clsx,
        default: clsx
    });

    var require$$3 = /*@__PURE__*/getAugmentedNamespace(clsx_m);

    var domFns = {};

    var shims = {};

    var hasRequiredShims;

    function requireShims () {
    	if (hasRequiredShims) return shims;
    	hasRequiredShims = 1;

    	Object.defineProperty(shims, "__esModule", {
    	  value: true
    	});
    	shims.dontSetMe = dontSetMe;
    	shims.findInArray = findInArray;
    	shims.int = int;
    	shims.isFunction = isFunction;
    	shims.isNum = isNum;
    	// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc
    	function findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{
    	  for (let i = 0, length = array.length; i < length; i++) {
    	    if (callback.apply(callback, [array[i], i, array])) return array[i];
    	  }
    	}
    	function isFunction(func /*: any*/) /*: boolean %checks*/{
    	  // $FlowIgnore[method-unbinding]
    	  return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';
    	}
    	function isNum(num /*: any*/) /*: boolean %checks*/{
    	  return typeof num === 'number' && !isNaN(num);
    	}
    	function int(a /*: string*/) /*: number*/{
    	  return parseInt(a, 10);
    	}
    	function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{
    	  if (props[propName]) {
    	    return new Error("Invalid prop ".concat(propName, " passed to ").concat(componentName, " - do not set this, set it on the child."));
    	  }
    	}
    	return shims;
    }

    var getPrefix = {};

    var hasRequiredGetPrefix;

    function requireGetPrefix () {
    	if (hasRequiredGetPrefix) return getPrefix;
    	hasRequiredGetPrefix = 1;

    	Object.defineProperty(getPrefix, "__esModule", {
    	  value: true
    	});
    	getPrefix.browserPrefixToKey = browserPrefixToKey;
    	getPrefix.browserPrefixToStyle = browserPrefixToStyle;
    	getPrefix.default = void 0;
    	getPrefix.getPrefix = getPrefix$1;
    	const prefixes = ['Moz', 'Webkit', 'O', 'ms'];
    	function getPrefix$1() /*: string*/{
    	  var _window$document;
    	  let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';
    	  // Ensure we're running in an environment where there is actually a global
    	  // `window` obj
    	  if (typeof window === 'undefined') return '';

    	  // If we're in a pseudo-browser server-side environment, this access
    	  // path may not exist, so bail out if it doesn't.
    	  const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;
    	  if (!style) return '';
    	  if (prop in style) return '';
    	  for (let i = 0; i < prefixes.length; i++) {
    	    if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];
    	  }
    	  return '';
    	}
    	function browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{
    	  return prefix ? "".concat(prefix).concat(kebabToTitleCase(prop)) : prop;
    	}
    	function browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{
    	  return prefix ? "-".concat(prefix.toLowerCase(), "-").concat(prop) : prop;
    	}
    	function kebabToTitleCase(str /*: string*/) /*: string*/{
    	  let out = '';
    	  let shouldCapitalize = true;
    	  for (let i = 0; i < str.length; i++) {
    	    if (shouldCapitalize) {
    	      out += str[i].toUpperCase();
    	      shouldCapitalize = false;
    	    } else if (str[i] === '-') {
    	      shouldCapitalize = true;
    	    } else {
    	      out += str[i];
    	    }
    	  }
    	  return out;
    	}

    	// Default export is the prefix itself, like 'Moz', 'Webkit', etc
    	// Note that you may have to re-test for certain things; for instance, Chrome 50
    	// can handle unprefixed `transform`, but not unprefixed `user-select`
    	getPrefix.default = (getPrefix$1() /*: string*/);
    	return getPrefix;
    }

    var hasRequiredDomFns;

    function requireDomFns () {
    	if (hasRequiredDomFns) return domFns;
    	hasRequiredDomFns = 1;

    	Object.defineProperty(domFns, "__esModule", {
    	  value: true
    	});
    	domFns.addClassName = addClassName;
    	domFns.addEvent = addEvent;
    	domFns.addUserSelectStyles = addUserSelectStyles;
    	domFns.createCSSTransform = createCSSTransform;
    	domFns.createSVGTransform = createSVGTransform;
    	domFns.getTouch = getTouch;
    	domFns.getTouchIdentifier = getTouchIdentifier;
    	domFns.getTranslation = getTranslation;
    	domFns.innerHeight = innerHeight;
    	domFns.innerWidth = innerWidth;
    	domFns.matchesSelector = matchesSelector;
    	domFns.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;
    	domFns.offsetXYFromParent = offsetXYFromParent;
    	domFns.outerHeight = outerHeight;
    	domFns.outerWidth = outerWidth;
    	domFns.removeClassName = removeClassName;
    	domFns.removeEvent = removeEvent;
    	domFns.removeUserSelectStyles = removeUserSelectStyles;
    	var _shims = requireShims();
    	var _getPrefix = _interopRequireWildcard(requireGetPrefix());
    	function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
    	function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
    	/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/
    	let matchesSelectorFunc = '';
    	function matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{
    	  if (!matchesSelectorFunc) {
    	    matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {
    	      // $FlowIgnore: Doesn't think elements are indexable
    	      return (0, _shims.isFunction)(el[method]);
    	    });
    	  }

    	  // Might not be found entirely (not an Element?) - in that case, bail
    	  // $FlowIgnore: Doesn't think elements are indexable
    	  if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;

    	  // $FlowIgnore: Doesn't think elements are indexable
    	  return el[matchesSelectorFunc](selector);
    	}

    	// Works up the tree to the draggable itself attempting to match selector.
    	function matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{
    	  let node = el;
    	  do {
    	    if (matchesSelector(node, selector)) return true;
    	    if (node === baseNode) return false;
    	    // $FlowIgnore[incompatible-type]
    	    node = node.parentNode;
    	  } while (node);
    	  return false;
    	}
    	function addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{
    	  if (!el) return;
    	  const options = {
    	    capture: true,
    	    ...inputOptions
    	  };
    	  // $FlowIgnore[method-unbinding]
    	  if (el.addEventListener) {
    	    el.addEventListener(event, handler, options);
    	  } else if (el.attachEvent) {
    	    el.attachEvent('on' + event, handler);
    	  } else {
    	    // $FlowIgnore: Doesn't think elements are indexable
    	    el['on' + event] = handler;
    	  }
    	}
    	function removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{
    	  if (!el) return;
    	  const options = {
    	    capture: true,
    	    ...inputOptions
    	  };
    	  // $FlowIgnore[method-unbinding]
    	  if (el.removeEventListener) {
    	    el.removeEventListener(event, handler, options);
    	  } else if (el.detachEvent) {
    	    el.detachEvent('on' + event, handler);
    	  } else {
    	    // $FlowIgnore: Doesn't think elements are indexable
    	    el['on' + event] = null;
    	  }
    	}
    	function outerHeight(node /*: HTMLElement*/) /*: number*/{
    	  // This is deliberately excluding margin for our calculations, since we are using
    	  // offsetTop which is including margin. See getBoundPosition
    	  let height = node.clientHeight;
    	  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
    	  height += (0, _shims.int)(computedStyle.borderTopWidth);
    	  height += (0, _shims.int)(computedStyle.borderBottomWidth);
    	  return height;
    	}
    	function outerWidth(node /*: HTMLElement*/) /*: number*/{
    	  // This is deliberately excluding margin for our calculations, since we are using
    	  // offsetLeft which is including margin. See getBoundPosition
    	  let width = node.clientWidth;
    	  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
    	  width += (0, _shims.int)(computedStyle.borderLeftWidth);
    	  width += (0, _shims.int)(computedStyle.borderRightWidth);
    	  return width;
    	}
    	function innerHeight(node /*: HTMLElement*/) /*: number*/{
    	  let height = node.clientHeight;
    	  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
    	  height -= (0, _shims.int)(computedStyle.paddingTop);
    	  height -= (0, _shims.int)(computedStyle.paddingBottom);
    	  return height;
    	}
    	function innerWidth(node /*: HTMLElement*/) /*: number*/{
    	  let width = node.clientWidth;
    	  const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);
    	  width -= (0, _shims.int)(computedStyle.paddingLeft);
    	  width -= (0, _shims.int)(computedStyle.paddingRight);
    	  return width;
    	}
    	/*:: interface EventWithOffset {
    	  clientX: number, clientY: number
    	}*/
    	// Get from offsetParent
    	function offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{
    	  const isBody = offsetParent === offsetParent.ownerDocument.body;
    	  const offsetParentRect = isBody ? {
    	    left: 0,
    	    top: 0
    	  } : offsetParent.getBoundingClientRect();
    	  const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;
    	  const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;
    	  return {
    	    x,
    	    y
    	  };
    	}
    	function createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{
    	  const translation = getTranslation(controlPos, positionOffset, 'px');
    	  return {
    	    [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation
    	  };
    	}
    	function createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{
    	  const translation = getTranslation(controlPos, positionOffset, '');
    	  return translation;
    	}
    	function getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{
    	  let {
    	    x,
    	    y
    	  } /*: ControlPosition*/ = _ref /*: ControlPosition*/;
    	  let translation = "translate(".concat(x).concat(unitSuffix, ",").concat(y).concat(unitSuffix, ")");
    	  if (positionOffset) {
    	    const defaultX = "".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);
    	    const defaultY = "".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);
    	    translation = "translate(".concat(defaultX, ", ").concat(defaultY, ")") + translation;
    	  }
    	  return translation;
    	}
    	function getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{
    	  return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);
    	}
    	function getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{
    	  if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;
    	  if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;
    	}

    	// User-select Hacks:
    	//
    	// Useful for preventing blue highlights all over everything when dragging.

    	// Note we're passing `document` b/c we could be iframed
    	function addUserSelectStyles(doc /*: ?Document*/) {
    	  if (!doc) return;
    	  let styleEl = doc.getElementById('react-draggable-style-el');
    	  if (!styleEl) {
    	    styleEl = doc.createElement('style');
    	    styleEl.type = 'text/css';
    	    styleEl.id = 'react-draggable-style-el';
    	    styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n';
    	    styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\n';
    	    doc.getElementsByTagName('head')[0].appendChild(styleEl);
    	  }
    	  if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');
    	}
    	function removeUserSelectStyles(doc /*: ?Document*/) {
    	  if (!doc) return;
    	  try {
    	    if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');
    	    // $FlowIgnore: IE
    	    if (doc.selection) {
    	      // $FlowIgnore: IE
    	      doc.selection.empty();
    	    } else {
    	      // Remove selection caused by scroll, unless it's a focused input
    	      // (we use doc.defaultView in case we're in an iframe)
    	      const selection = (doc.defaultView || window).getSelection();
    	      if (selection && selection.type !== 'Caret') {
    	        selection.removeAllRanges();
    	      }
    	    }
    	  } catch (e) {
    	    // probably IE
    	  }
    	}
    	function addClassName(el /*: HTMLElement*/, className /*: string*/) {
    	  if (el.classList) {
    	    el.classList.add(className);
    	  } else {
    	    if (!el.className.match(new RegExp("(?:^|\\s)".concat(className, "(?!\\S)")))) {
    	      el.className += " ".concat(className);
    	    }
    	  }
    	}
    	function removeClassName(el /*: HTMLElement*/, className /*: string*/) {
    	  if (el.classList) {
    	    el.classList.remove(className);
    	  } else {
    	    el.className = el.className.replace(new RegExp("(?:^|\\s)".concat(className, "(?!\\S)"), 'g'), '');
    	  }
    	}
    	return domFns;
    }

    var positionFns = {};

    var hasRequiredPositionFns;

    function requirePositionFns () {
    	if (hasRequiredPositionFns) return positionFns;
    	hasRequiredPositionFns = 1;

    	Object.defineProperty(positionFns, "__esModule", {
    	  value: true
    	});
    	positionFns.canDragX = canDragX;
    	positionFns.canDragY = canDragY;
    	positionFns.createCoreData = createCoreData;
    	positionFns.createDraggableData = createDraggableData;
    	positionFns.getBoundPosition = getBoundPosition;
    	positionFns.getControlPosition = getControlPosition;
    	positionFns.snapToGrid = snapToGrid;
    	var _shims = requireShims();
    	var _domFns = requireDomFns();
    	/*:: import type Draggable from '../Draggable';*/
    	/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/
    	/*:: import type DraggableCore from '../DraggableCore';*/
    	function getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{
    	  // If no bounds, short-circuit and move on
    	  if (!draggable.props.bounds) return [x, y];

    	  // Clone new bounds
    	  let {
    	    bounds
    	  } = draggable.props;
    	  bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);
    	  const node = findDOMNode(draggable);
    	  if (typeof bounds === 'string') {
    	    const {
    	      ownerDocument
    	    } = node;
    	    const ownerWindow = ownerDocument.defaultView;
    	    let boundNode;
    	    if (bounds === 'parent') {
    	      boundNode = node.parentNode;
    	    } else {
    	      boundNode = ownerDocument.querySelector(bounds);
    	    }
    	    if (!(boundNode instanceof ownerWindow.HTMLElement)) {
    	      throw new Error('Bounds selector "' + bounds + '" could not find an element.');
    	    }
    	    const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly
    	    const nodeStyle = ownerWindow.getComputedStyle(node);
    	    const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);
    	    // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.
    	    bounds = {
    	      left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),
    	      top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),
    	      right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),
    	      bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)
    	    };
    	  }

    	  // Keep x and y below right and bottom limits...
    	  if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);
    	  if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);

    	  // But above left and top limits.
    	  if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);
    	  if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);
    	  return [x, y];
    	}
    	function snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{
    	  const x = Math.round(pendingX / grid[0]) * grid[0];
    	  const y = Math.round(pendingY / grid[1]) * grid[1];
    	  return [x, y];
    	}
    	function canDragX(draggable /*: Draggable*/) /*: boolean*/{
    	  return draggable.props.axis === 'both' || draggable.props.axis === 'x';
    	}
    	function canDragY(draggable /*: Draggable*/) /*: boolean*/{
    	  return draggable.props.axis === 'both' || draggable.props.axis === 'y';
    	}

    	// Get {x, y} positions from event.
    	function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{
    	  const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;
    	  if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch
    	  const node = findDOMNode(draggableCore);
    	  // User can provide an offsetParent if desired.
    	  const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;
    	  return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);
    	}

    	// Create an data object exposed by <DraggableCore>'s events
    	function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{
    	  const isStart = !(0, _shims.isNum)(draggable.lastX);
    	  const node = findDOMNode(draggable);
    	  if (isStart) {
    	    // If this is our first move, use the x and y as last coords.
    	    return {
    	      node,
    	      deltaX: 0,
    	      deltaY: 0,
    	      lastX: x,
    	      lastY: y,
    	      x,
    	      y
    	    };
    	  } else {
    	    // Otherwise calculate proper values.
    	    return {
    	      node,
    	      deltaX: x - draggable.lastX,
    	      deltaY: y - draggable.lastY,
    	      lastX: draggable.lastX,
    	      lastY: draggable.lastY,
    	      x,
    	      y
    	    };
    	  }
    	}

    	// Create an data exposed by <Draggable>'s events
    	function createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{
    	  const scale = draggable.props.scale;
    	  return {
    	    node: coreData.node,
    	    x: draggable.state.x + coreData.deltaX / scale,
    	    y: draggable.state.y + coreData.deltaY / scale,
    	    deltaX: coreData.deltaX / scale,
    	    deltaY: coreData.deltaY / scale,
    	    lastX: draggable.state.x,
    	    lastY: draggable.state.y
    	  };
    	}

    	// A lot faster than stringify/parse
    	function cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{
    	  return {
    	    left: bounds.left,
    	    top: bounds.top,
    	    right: bounds.right,
    	    bottom: bounds.bottom
    	  };
    	}
    	function findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{
    	  const node = draggable.findDOMNode();
    	  if (!node) {
    	    throw new Error('<DraggableCore>: Unmounted during event!');
    	  }
    	  // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME
    	  return node;
    	}
    	return positionFns;
    }

    var DraggableCore = {};

    var log = {};

    var hasRequiredLog;

    function requireLog () {
    	if (hasRequiredLog) return log;
    	hasRequiredLog = 1;

    	Object.defineProperty(log, "__esModule", {
    	  value: true
    	});
    	log.default = log$1;
    	/*eslint no-console:0*/
    	function log$1() {
    	}
    	return log;
    }

    var hasRequiredDraggableCore;

    function requireDraggableCore () {
    	if (hasRequiredDraggableCore) return DraggableCore;
    	hasRequiredDraggableCore = 1;

    	Object.defineProperty(DraggableCore, "__esModule", {
    	  value: true
    	});
    	DraggableCore.default = void 0;
    	var React = _interopRequireWildcard(requireReact());
    	var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
    	var _reactDom = _interopRequireDefault(requireReactDom());
    	var _domFns = requireDomFns();
    	var _positionFns = requirePositionFns();
    	var _shims = requireShims();
    	var _log = _interopRequireDefault(requireLog());
    	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    	function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
    	function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
    	function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
    	function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
    	function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
    	/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/
    	/*:: import type {Element as ReactElement} from 'react';*/
    	// Simple abstraction for dragging events names.
    	const eventsFor = {
    	  touch: {
    	    start: 'touchstart',
    	    move: 'touchmove',
    	    stop: 'touchend'
    	  },
    	  mouse: {
    	    start: 'mousedown',
    	    move: 'mousemove',
    	    stop: 'mouseup'
    	  }
    	};

    	// Default to mouse events.
    	let dragEventFor = eventsFor.mouse;
    	/*:: export type DraggableData = {
    	  node: HTMLElement,
    	  x: number, y: number,
    	  deltaX: number, deltaY: number,
    	  lastX: number, lastY: number,
    	};*/
    	/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/
    	/*:: export type ControlPosition = {x: number, y: number};*/
    	/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/
    	/*:: export type DraggableCoreDefaultProps = {
    	  allowAnyClick: boolean,
    	  disabled: boolean,
    	  enableUserSelectHack: boolean,
    	  onStart: DraggableEventHandler,
    	  onDrag: DraggableEventHandler,
    	  onStop: DraggableEventHandler,
    	  onMouseDown: (e: MouseEvent) => void,
    	  scale: number,
    	};*/
    	/*:: export type DraggableCoreProps = {
    	  ...DraggableCoreDefaultProps,
    	  cancel: string,
    	  children: ReactElement<any>,
    	  offsetParent: HTMLElement,
    	  grid: [number, number],
    	  handle: string,
    	  nodeRef?: ?React.ElementRef<any>,
    	};*/
    	//
    	// Define <DraggableCore>.
    	//
    	// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can
    	// work well with libraries that require more control over the element.
    	//

    	let DraggableCore$1 = class DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{
    	  constructor() {
    	    super(...arguments);
    	    _defineProperty(this, "dragging", false);
    	    // Used while dragging to determine deltas.
    	    _defineProperty(this, "lastX", NaN);
    	    _defineProperty(this, "lastY", NaN);
    	    _defineProperty(this, "touchIdentifier", null);
    	    _defineProperty(this, "mounted", false);
    	    _defineProperty(this, "handleDragStart", e => {
    	      // Make it possible to attach event handlers on top of this one.
    	      this.props.onMouseDown(e);

    	      // Only accept left-clicks.
    	      if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;

    	      // Get nodes. Be sure to grab relative document (could be iframed)
    	      const thisNode = this.findDOMNode();
    	      if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {
    	        throw new Error('<DraggableCore> not mounted on DragStart!');
    	      }
    	      const {
    	        ownerDocument
    	      } = thisNode;

    	      // Short circuit if handle or cancel prop was provided and selector doesn't match.
    	      if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {
    	        return;
    	      }

    	      // Prevent scrolling on mobile devices, like ipad/iphone.
    	      // Important that this is after handle/cancel.
    	      if (e.type === 'touchstart') e.preventDefault();

    	      // Set touch identifier in component state if this is a touch event. This allows us to
    	      // distinguish between individual touches on multitouch screens by identifying which
    	      // touchpoint was set to this element.
    	      const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);
    	      this.touchIdentifier = touchIdentifier;

    	      // Get the current drag point from the event. This is used as the offset.
    	      const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);
    	      if (position == null) return; // not possible but satisfies flow
    	      const {
    	        x,
    	        y
    	      } = position;

    	      // Create an event object with all the data parents need to make a decision here.
    	      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);
    	      (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);

    	      // Call event handler. If it returns explicit false, cancel.
    	      (0, _log.default)('calling', this.props.onStart);
    	      const shouldUpdate = this.props.onStart(e, coreEvent);
    	      if (shouldUpdate === false || this.mounted === false) return;

    	      // Add a style to the body to disable user-select. This prevents text from
    	      // being selected all over the page.
    	      if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);

    	      // Initiate dragging. Set the current x and y as offsets
    	      // so we know how much we've moved during the drag. This allows us
    	      // to drag elements around even if they have been moved, without issue.
    	      this.dragging = true;
    	      this.lastX = x;
    	      this.lastY = y;

    	      // Add events to the document directly so we catch when the user's mouse/touch moves outside of
    	      // this element. We use different events depending on whether or not we have detected that this
    	      // is a touch-capable device.
    	      (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);
    	      (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);
    	    });
    	    _defineProperty(this, "handleDrag", e => {
    	      // Get the current drag point from the event. This is used as the offset.
    	      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);
    	      if (position == null) return;
    	      let {
    	        x,
    	        y
    	      } = position;

    	      // Snap to grid if prop has been provided
    	      if (Array.isArray(this.props.grid)) {
    	        let deltaX = x - this.lastX,
    	          deltaY = y - this.lastY;
    	        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);
    	        if (!deltaX && !deltaY) return; // skip useless drag
    	        x = this.lastX + deltaX, y = this.lastY + deltaY;
    	      }
    	      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);
    	      (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);

    	      // Call event handler. If it returns explicit false, trigger end.
    	      const shouldUpdate = this.props.onDrag(e, coreEvent);
    	      if (shouldUpdate === false || this.mounted === false) {
    	        try {
    	          // $FlowIgnore
    	          this.handleDragStop(new MouseEvent('mouseup'));
    	        } catch (err) {
    	          // Old browsers
    	          const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);
    	          // I see why this insanity was deprecated
    	          // $FlowIgnore
    	          event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    	          this.handleDragStop(event);
    	        }
    	        return;
    	      }
    	      this.lastX = x;
    	      this.lastY = y;
    	    });
    	    _defineProperty(this, "handleDragStop", e => {
    	      if (!this.dragging) return;
    	      const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);
    	      if (position == null) return;
    	      let {
    	        x,
    	        y
    	      } = position;

    	      // Snap to grid if prop has been provided
    	      if (Array.isArray(this.props.grid)) {
    	        let deltaX = x - this.lastX || 0;
    	        let deltaY = y - this.lastY || 0;
    	        [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);
    	        x = this.lastX + deltaX, y = this.lastY + deltaY;
    	      }
    	      const coreEvent = (0, _positionFns.createCoreData)(this, x, y);

    	      // Call event handler
    	      const shouldContinue = this.props.onStop(e, coreEvent);
    	      if (shouldContinue === false || this.mounted === false) return false;
    	      const thisNode = this.findDOMNode();
    	      if (thisNode) {
    	        // Remove user-select hack
    	        if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);
    	      }
    	      (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);

    	      // Reset the el.
    	      this.dragging = false;
    	      this.lastX = NaN;
    	      this.lastY = NaN;
    	      if (thisNode) {
    	        // Remove event handlers
    	        (0, _log.default)('DraggableCore: Removing handlers');
    	        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);
    	        (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);
    	      }
    	    });
    	    _defineProperty(this, "onMouseDown", e => {
    	      dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse

    	      return this.handleDragStart(e);
    	    });
    	    _defineProperty(this, "onMouseUp", e => {
    	      dragEventFor = eventsFor.mouse;
    	      return this.handleDragStop(e);
    	    });
    	    // Same as onMouseDown (start drag), but now consider this a touch device.
    	    _defineProperty(this, "onTouchStart", e => {
    	      // We're on a touch device now, so change the event handlers
    	      dragEventFor = eventsFor.touch;
    	      return this.handleDragStart(e);
    	    });
    	    _defineProperty(this, "onTouchEnd", e => {
    	      // We're on a touch device now, so change the event handlers
    	      dragEventFor = eventsFor.touch;
    	      return this.handleDragStop(e);
    	    });
    	  }
    	  componentDidMount() {
    	    this.mounted = true;
    	    // Touch handlers must be added with {passive: false} to be cancelable.
    	    // https://developers.google.com/web/updates/2017/01/scrolling-intervention
    	    const thisNode = this.findDOMNode();
    	    if (thisNode) {
    	      (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {
    	        passive: false
    	      });
    	    }
    	  }
    	  componentWillUnmount() {
    	    this.mounted = false;
    	    // Remove any leftover event handlers. Remove both touch and mouse handlers in case
    	    // some browser quirk caused a touch event to fire during a mouse move, or vice versa.
    	    const thisNode = this.findDOMNode();
    	    if (thisNode) {
    	      const {
    	        ownerDocument
    	      } = thisNode;
    	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);
    	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);
    	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);
    	      (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);
    	      (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {
    	        passive: false
    	      });
    	      if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);
    	    }
    	  }

    	  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
    	  // the underlying DOM node ourselves. See the README for more information.
    	  findDOMNode() /*: ?HTMLElement*/{
    	    var _this$props, _this$props2;
    	    return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);
    	  }
    	  render() /*: React.Element<any>*/{
    	    // Reuse the child provided
    	    // This makes it flexible to use whatever element is wanted (div, ul, etc)
    	    return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {
    	      // Note: mouseMove handler is attached to document so it will still function
    	      // when the user drags quickly and leaves the bounds of the element.
    	      onMouseDown: this.onMouseDown,
    	      onMouseUp: this.onMouseUp,
    	      // onTouchStart is added on `componentDidMount` so they can be added with
    	      // {passive: false}, which allows it to cancel. See
    	      // https://developers.google.com/web/updates/2017/01/scrolling-intervention
    	      onTouchEnd: this.onTouchEnd
    	    });
    	  }
    	};
    	DraggableCore.default = DraggableCore$1;
    	_defineProperty(DraggableCore$1, "displayName", 'DraggableCore');
    	_defineProperty(DraggableCore$1, "propTypes", {
    	  /**
    	   * `allowAnyClick` allows dragging using any mouse button.
    	   * By default, we only accept the left button.
    	   *
    	   * Defaults to `false`.
    	   */
    	  allowAnyClick: _propTypes.default.bool,
    	  children: _propTypes.default.node.isRequired,
    	  /**
    	   * `disabled`, if true, stops the <Draggable> from dragging. All handlers,
    	   * with the exception of `onMouseDown`, will not fire.
    	   */
    	  disabled: _propTypes.default.bool,
    	  /**
    	   * By default, we add 'user-select:none' attributes to the document body
    	   * to prevent ugly text selection during drag. If this is causing problems
    	   * for your app, set this to `false`.
    	   */
    	  enableUserSelectHack: _propTypes.default.bool,
    	  /**
    	   * `offsetParent`, if set, uses the passed DOM node to compute drag offsets
    	   * instead of using the parent node.
    	   */
    	  offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {
    	    if (props[propName] && props[propName].nodeType !== 1) {
    	      throw new Error('Draggable\'s offsetParent must be a DOM Node.');
    	    }
    	  },
    	  /**
    	   * `grid` specifies the x and y that dragging should snap to.
    	   */
    	  grid: _propTypes.default.arrayOf(_propTypes.default.number),
    	  /**
    	   * `handle` specifies a selector to be used as the handle that initiates drag.
    	   *
    	   * Example:
    	   *
    	   * ```jsx
    	   *   let App = React.createClass({
    	   *       render: function () {
    	   *         return (
    	   *            <Draggable handle=".handle">
    	   *              <div>
    	   *                  <div className="handle">Click me to drag</div>
    	   *                  <div>This is some other content</div>
    	   *              </div>
    	   *           </Draggable>
    	   *         );
    	   *       }
    	   *   });
    	   * ```
    	   */
    	  handle: _propTypes.default.string,
    	  /**
    	   * `cancel` specifies a selector to be used to prevent drag initialization.
    	   *
    	   * Example:
    	   *
    	   * ```jsx
    	   *   let App = React.createClass({
    	   *       render: function () {
    	   *           return(
    	   *               <Draggable cancel=".cancel">
    	   *                   <div>
    	   *                     <div className="cancel">You can't drag from here</div>
    	   *                     <div>Dragging here works fine</div>
    	   *                   </div>
    	   *               </Draggable>
    	   *           );
    	   *       }
    	   *   });
    	   * ```
    	   */
    	  cancel: _propTypes.default.string,
    	  /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.
    	   * Unfortunately, in order for <Draggable> to work properly, we need raw access
    	   * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`
    	   * as in this example:
    	   *
    	   * function MyComponent() {
    	   *   const nodeRef = React.useRef(null);
    	   *   return (
    	   *     <Draggable nodeRef={nodeRef}>
    	   *       <div ref={nodeRef}>Example Target</div>
    	   *     </Draggable>
    	   *   );
    	   * }
    	   *
    	   * This can be used for arbitrarily nested components, so long as the ref ends up
    	   * pointing to the actual child DOM node and not a custom component.
    	   */
    	  nodeRef: _propTypes.default.object,
    	  /**
    	   * Called when dragging starts.
    	   * If this function returns the boolean false, dragging will be canceled.
    	   */
    	  onStart: _propTypes.default.func,
    	  /**
    	   * Called while dragging.
    	   * If this function returns the boolean false, dragging will be canceled.
    	   */
    	  onDrag: _propTypes.default.func,
    	  /**
    	   * Called when dragging stops.
    	   * If this function returns the boolean false, the drag will remain active.
    	   */
    	  onStop: _propTypes.default.func,
    	  /**
    	   * A workaround option which can be passed if onMouseDown needs to be accessed,
    	   * since it'll always be blocked (as there is internal use of onMouseDown)
    	   */
    	  onMouseDown: _propTypes.default.func,
    	  /**
    	   * `scale`, if set, applies scaling while dragging an element
    	   */
    	  scale: _propTypes.default.number,
    	  /**
    	   * These properties should be defined on the child, not here.
    	   */
    	  className: _shims.dontSetMe,
    	  style: _shims.dontSetMe,
    	  transform: _shims.dontSetMe
    	});
    	_defineProperty(DraggableCore$1, "defaultProps", {
    	  allowAnyClick: false,
    	  // by default only accept left click
    	  disabled: false,
    	  enableUserSelectHack: true,
    	  onStart: function () {},
    	  onDrag: function () {},
    	  onStop: function () {},
    	  onMouseDown: function () {},
    	  scale: 1
    	});
    	return DraggableCore;
    }

    var hasRequiredDraggable;

    function requireDraggable () {
    	if (hasRequiredDraggable) return Draggable$1;
    	hasRequiredDraggable = 1;
    	(function (exports) {

    		Object.defineProperty(exports, "__esModule", {
    		  value: true
    		});
    		Object.defineProperty(exports, "DraggableCore", {
    		  enumerable: true,
    		  get: function () {
    		    return _DraggableCore.default;
    		  }
    		});
    		exports.default = void 0;
    		var React = _interopRequireWildcard(requireReact());
    		var _propTypes = _interopRequireDefault(/*@__PURE__*/ requirePropTypes());
    		var _reactDom = _interopRequireDefault(requireReactDom());
    		var _clsx = _interopRequireDefault(require$$3);
    		var _domFns = requireDomFns();
    		var _positionFns = requirePositionFns();
    		var _shims = requireShims();
    		var _DraggableCore = _interopRequireDefault(requireDraggableCore());
    		var _log = _interopRequireDefault(requireLog());
    		function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
    		function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
    		function _interopRequireWildcard(obj, nodeInterop) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
    		function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
    		function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
    		function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
    		function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/
    		/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/
    		/*:: import type {Element as ReactElement} from 'react';*/
    		/*:: type DraggableState = {
    		  dragging: boolean,
    		  dragged: boolean,
    		  x: number, y: number,
    		  slackX: number, slackY: number,
    		  isElementSVG: boolean,
    		  prevPropsPosition: ?ControlPosition,
    		};*/
    		/*:: export type DraggableDefaultProps = {
    		  ...DraggableCoreDefaultProps,
    		  axis: 'both' | 'x' | 'y' | 'none',
    		  bounds: Bounds | string | false,
    		  defaultClassName: string,
    		  defaultClassNameDragging: string,
    		  defaultClassNameDragged: string,
    		  defaultPosition: ControlPosition,
    		  scale: number,
    		};*/
    		/*:: export type DraggableProps = {
    		  ...DraggableCoreProps,
    		  ...DraggableDefaultProps,
    		  positionOffset: PositionOffsetControlPosition,
    		  position: ControlPosition,
    		};*/
    		//
    		// Define <Draggable>
    		//
    		class Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{
    		  // React 16.3+
    		  // Arity (props, state)
    		  static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{
    		    let {
    		      position
    		    } /*: DraggableProps*/ = _ref /*: DraggableProps*/;
    		    let {
    		      prevPropsPosition
    		    } /*: DraggableState*/ = _ref2 /*: DraggableState*/;
    		    // Set x/y if a new position is provided in props that is different than the previous.
    		    if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {
    		      (0, _log.default)('Draggable: getDerivedStateFromProps %j', {
    		        position,
    		        prevPropsPosition
    		      });
    		      return {
    		        x: position.x,
    		        y: position.y,
    		        prevPropsPosition: {
    		          ...position
    		        }
    		      };
    		    }
    		    return null;
    		  }
    		  constructor(props /*: DraggableProps*/) {
    		    super(props);
    		    _defineProperty(this, "onDragStart", (e, coreData) => {
    		      (0, _log.default)('Draggable: onDragStart: %j', coreData);

    		      // Short-circuit if user's callback killed it.
    		      const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));
    		      // Kills start event on core as well, so move handlers are never bound.
    		      if (shouldStart === false) return false;
    		      this.setState({
    		        dragging: true,
    		        dragged: true
    		      });
    		    });
    		    _defineProperty(this, "onDrag", (e, coreData) => {
    		      if (!this.state.dragging) return false;
    		      (0, _log.default)('Draggable: onDrag: %j', coreData);
    		      const uiData = (0, _positionFns.createDraggableData)(this, coreData);
    		      const newState = {
    		        x: uiData.x,
    		        y: uiData.y,
    		        slackX: 0,
    		        slackY: 0
    		      };

    		      // Keep within bounds.
    		      if (this.props.bounds) {
    		        // Save original x and y.
    		        const {
    		          x,
    		          y
    		        } = newState;

    		        // Add slack to the values used to calculate bound position. This will ensure that if
    		        // we start removing slack, the element won't react to it right away until it's been
    		        // completely removed.
    		        newState.x += this.state.slackX;
    		        newState.y += this.state.slackY;

    		        // Get bound position. This will ceil/floor the x and y within the boundaries.
    		        const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);
    		        newState.x = newStateX;
    		        newState.y = newStateY;

    		        // Recalculate slack by noting how much was shaved by the boundPosition handler.
    		        newState.slackX = this.state.slackX + (x - newState.x);
    		        newState.slackY = this.state.slackY + (y - newState.y);

    		        // Update the event we fire to reflect what really happened after bounds took effect.
    		        uiData.x = newState.x;
    		        uiData.y = newState.y;
    		        uiData.deltaX = newState.x - this.state.x;
    		        uiData.deltaY = newState.y - this.state.y;
    		      }

    		      // Short-circuit if user's callback killed it.
    		      const shouldUpdate = this.props.onDrag(e, uiData);
    		      if (shouldUpdate === false) return false;
    		      this.setState(newState);
    		    });
    		    _defineProperty(this, "onDragStop", (e, coreData) => {
    		      if (!this.state.dragging) return false;

    		      // Short-circuit if user's callback killed it.
    		      const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));
    		      if (shouldContinue === false) return false;
    		      (0, _log.default)('Draggable: onDragStop: %j', coreData);
    		      const newState /*: Partial<DraggableState>*/ = {
    		        dragging: false,
    		        slackX: 0,
    		        slackY: 0
    		      };

    		      // If this is a controlled component, the result of this operation will be to
    		      // revert back to the old position. We expect a handler on `onDragStop`, at the least.
    		      const controlled = Boolean(this.props.position);
    		      if (controlled) {
    		        const {
    		          x,
    		          y
    		        } = this.props.position;
    		        newState.x = x;
    		        newState.y = y;
    		      }
    		      this.setState(newState);
    		    });
    		    this.state = {
    		      // Whether or not we are currently dragging.
    		      dragging: false,
    		      // Whether or not we have been dragged before.
    		      dragged: false,
    		      // Current transform x and y.
    		      x: props.position ? props.position.x : props.defaultPosition.x,
    		      y: props.position ? props.position.y : props.defaultPosition.y,
    		      prevPropsPosition: {
    		        ...props.position
    		      },
    		      // Used for compensating for out-of-bounds drags
    		      slackX: 0,
    		      slackY: 0,
    		      // Can only determine if SVG after mounting
    		      isElementSVG: false
    		    };
    		    if (props.position && !(props.onDrag || props.onStop)) {
    		      // eslint-disable-next-line no-console
    		      console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');
    		    }
    		  }
    		  componentDidMount() {
    		    // Check to see if the element passed is an instanceof SVGElement
    		    if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {
    		      this.setState({
    		        isElementSVG: true
    		      });
    		    }
    		  }
    		  componentWillUnmount() {
    		    this.setState({
    		      dragging: false
    		    }); // prevents invariant if unmounted while dragging
    		  }

    		  // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find
    		  // the underlying DOM node ourselves. See the README for more information.
    		  findDOMNode() /*: ?HTMLElement*/{
    		    var _this$props$nodeRef$c, _this$props;
    		    return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);
    		  }
    		  render() /*: ReactElement<any>*/{
    		    const {
    		      axis,
    		      bounds,
    		      children,
    		      defaultPosition,
    		      defaultClassName,
    		      defaultClassNameDragging,
    		      defaultClassNameDragged,
    		      position,
    		      positionOffset,
    		      scale,
    		      ...draggableCoreProps
    		    } = this.props;
    		    let style = {};
    		    let svgTransform = null;

    		    // If this is controlled, we don't want to move it - unless it's dragging.
    		    const controlled = Boolean(position);
    		    const draggable = !controlled || this.state.dragging;
    		    const validPosition = position || defaultPosition;
    		    const transformOpts = {
    		      // Set left if horizontal drag is enabled
    		      x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,
    		      // Set top if vertical drag is enabled
    		      y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y
    		    };

    		    // If this element was SVG, we use the `transform` attribute.
    		    if (this.state.isElementSVG) {
    		      svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);
    		    } else {
    		      // Add a CSS transform to move the element around. This allows us to move the element around
    		      // without worrying about whether or not it is relatively or absolutely positioned.
    		      // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>
    		      // has a clean slate.
    		      style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);
    		    }

    		    // Mark with class while dragging
    		    const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {
    		      [defaultClassNameDragging]: this.state.dragging,
    		      [defaultClassNameDragged]: this.state.dragged
    		    });

    		    // Reuse the child provided
    		    // This makes it flexible to use whatever element is wanted (div, ul, etc)
    		    return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {
    		      onStart: this.onDragStart,
    		      onDrag: this.onDrag,
    		      onStop: this.onDragStop
    		    }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {
    		      className: className,
    		      style: {
    		        ...children.props.style,
    		        ...style
    		      },
    		      transform: svgTransform
    		    }));
    		  }
    		}
    		exports.default = Draggable;
    		_defineProperty(Draggable, "displayName", 'Draggable');
    		_defineProperty(Draggable, "propTypes", {
    		  // Accepts all props <DraggableCore> accepts.
    		  ..._DraggableCore.default.propTypes,
    		  /**
    		   * `axis` determines which axis the draggable can move.
    		   *
    		   *  Note that all callbacks will still return data as normal. This only
    		   *  controls flushing to the DOM.
    		   *
    		   * 'both' allows movement horizontally and vertically.
    		   * 'x' limits movement to horizontal axis.
    		   * 'y' limits movement to vertical axis.
    		   * 'none' limits all movement.
    		   *
    		   * Defaults to 'both'.
    		   */
    		  axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),
    		  /**
    		   * `bounds` determines the range of movement available to the element.
    		   * Available values are:
    		   *
    		   * 'parent' restricts movement within the Draggable's parent node.
    		   *
    		   * Alternatively, pass an object with the following properties, all of which are optional:
    		   *
    		   * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}
    		   *
    		   * All values are in px.
    		   *
    		   * Example:
    		   *
    		   * ```jsx
    		   *   let App = React.createClass({
    		   *       render: function () {
    		   *         return (
    		   *            <Draggable bounds={{right: 300, bottom: 300}}>
    		   *              <div>Content</div>
    		   *           </Draggable>
    		   *         );
    		   *       }
    		   *   });
    		   * ```
    		   */
    		  bounds: _propTypes.default.oneOfType([_propTypes.default.shape({
    		    left: _propTypes.default.number,
    		    right: _propTypes.default.number,
    		    top: _propTypes.default.number,
    		    bottom: _propTypes.default.number
    		  }), _propTypes.default.string, _propTypes.default.oneOf([false])]),
    		  defaultClassName: _propTypes.default.string,
    		  defaultClassNameDragging: _propTypes.default.string,
    		  defaultClassNameDragged: _propTypes.default.string,
    		  /**
    		   * `defaultPosition` specifies the x and y that the dragged item should start at
    		   *
    		   * Example:
    		   *
    		   * ```jsx
    		   *      let App = React.createClass({
    		   *          render: function () {
    		   *              return (
    		   *                  <Draggable defaultPosition={{x: 25, y: 25}}>
    		   *                      <div>I start with transformX: 25px and transformY: 25px;</div>
    		   *                  </Draggable>
    		   *              );
    		   *          }
    		   *      });
    		   * ```
    		   */
    		  defaultPosition: _propTypes.default.shape({
    		    x: _propTypes.default.number,
    		    y: _propTypes.default.number
    		  }),
    		  positionOffset: _propTypes.default.shape({
    		    x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
    		    y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
    		  }),
    		  /**
    		   * `position`, if present, defines the current position of the element.
    		   *
    		   *  This is similar to how form elements in React work - if no `position` is supplied, the component
    		   *  is uncontrolled.
    		   *
    		   * Example:
    		   *
    		   * ```jsx
    		   *      let App = React.createClass({
    		   *          render: function () {
    		   *              return (
    		   *                  <Draggable position={{x: 25, y: 25}}>
    		   *                      <div>I start with transformX: 25px and transformY: 25px;</div>
    		   *                  </Draggable>
    		   *              );
    		   *          }
    		   *      });
    		   * ```
    		   */
    		  position: _propTypes.default.shape({
    		    x: _propTypes.default.number,
    		    y: _propTypes.default.number
    		  }),
    		  /**
    		   * These properties should be defined on the child, not here.
    		   */
    		  className: _shims.dontSetMe,
    		  style: _shims.dontSetMe,
    		  transform: _shims.dontSetMe
    		});
    		_defineProperty(Draggable, "defaultProps", {
    		  ..._DraggableCore.default.defaultProps,
    		  axis: 'both',
    		  bounds: false,
    		  defaultClassName: 'react-draggable',
    		  defaultClassNameDragging: 'react-draggable-dragging',
    		  defaultClassNameDragged: 'react-draggable-dragged',
    		  defaultPosition: {
    		    x: 0,
    		    y: 0
    		  },
    		  scale: 1
    		}); 
    	} (Draggable$1));
    	return Draggable$1;
    }

    var hasRequiredCjs;

    function requireCjs () {
    	if (hasRequiredCjs) return cjs.exports;
    	hasRequiredCjs = 1;

    	const {
    	  default: Draggable,
    	  DraggableCore
    	} = requireDraggable();

    	// Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.
    	// See https://github.com/mzabriskie/react-draggable/pull/254
    	// and https://github.com/mzabriskie/react-draggable/issues/266
    	cjs.exports = Draggable;
    	cjs.exports.default = Draggable;
    	cjs.exports.DraggableCore = DraggableCore;
    	return cjs.exports;
    }

    var cjsExports = requireCjs();
    var Draggable = /*@__PURE__*/getDefaultExportFromCjs(cjsExports);

    var jsxRuntime = {exports: {}};

    var reactJsxRuntime_production = {};

    /**
     * @license React
     * react-jsx-runtime.production.js
     *
     * Copyright (c) Meta Platforms, Inc. and affiliates.
     *
     * This source code is licensed under the MIT license found in the
     * LICENSE file in the root directory of this source tree.
     */

    var hasRequiredReactJsxRuntime_production;

    function requireReactJsxRuntime_production () {
    	if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
    	hasRequiredReactJsxRuntime_production = 1;
    	var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
    	  REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
    	function jsxProd(type, config, maybeKey) {
    	  var key = null;
    	  void 0 !== maybeKey && (key = "" + maybeKey);
    	  void 0 !== config.key && (key = "" + config.key);
    	  if ("key" in config) {
    	    maybeKey = {};
    	    for (var propName in config)
    	      "key" !== propName && (maybeKey[propName] = config[propName]);
    	  } else maybeKey = config;
    	  config = maybeKey.ref;
    	  return {
    	    $$typeof: REACT_ELEMENT_TYPE,
    	    type: type,
    	    key: key,
    	    ref: void 0 !== config ? config : null,
    	    props: maybeKey
    	  };
    	}
    	reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
    	reactJsxRuntime_production.jsx = jsxProd;
    	reactJsxRuntime_production.jsxs = jsxProd;
    	return reactJsxRuntime_production;
    }

    var hasRequiredJsxRuntime;

    function requireJsxRuntime () {
    	if (hasRequiredJsxRuntime) return jsxRuntime.exports;
    	hasRequiredJsxRuntime = 1;

    	{
    	  jsxRuntime.exports = requireReactJsxRuntime_production();
    	}
    	return jsxRuntime.exports;
    }

    var jsxRuntimeExports = requireJsxRuntime();

    var reactDomExports = requireReactDom();

    var __assign$2 = (undefined && undefined.__assign) || function () {
        __assign$2 = Object.assign || function(t) {
            for (var s, i = 1, n = arguments.length; i < n; i++) {
                s = arguments[i];
                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                    t[p] = s[p];
            }
            return t;
        };
        return __assign$2.apply(this, arguments);
    };
    var rowSizeBase = {
        width: '100%',
        height: '10px',
        top: '0px',
        left: '0px',
        cursor: 'row-resize',
    };
    var colSizeBase = {
        width: '10px',
        height: '100%',
        top: '0px',
        left: '0px',
        cursor: 'col-resize',
    };
    var edgeBase = {
        width: '20px',
        height: '20px',
        position: 'absolute',
        zIndex: 1,
    };
    var styles = {
        top: __assign$2(__assign$2({}, rowSizeBase), { top: '-5px' }),
        right: __assign$2(__assign$2({}, colSizeBase), { left: undefined, right: '-5px' }),
        bottom: __assign$2(__assign$2({}, rowSizeBase), { top: undefined, bottom: '-5px' }),
        left: __assign$2(__assign$2({}, colSizeBase), { left: '-5px' }),
        topRight: __assign$2(__assign$2({}, edgeBase), { right: '-10px', top: '-10px', cursor: 'ne-resize' }),
        bottomRight: __assign$2(__assign$2({}, edgeBase), { right: '-10px', bottom: '-10px', cursor: 'se-resize' }),
        bottomLeft: __assign$2(__assign$2({}, edgeBase), { left: '-10px', bottom: '-10px', cursor: 'sw-resize' }),
        topLeft: __assign$2(__assign$2({}, edgeBase), { left: '-10px', top: '-10px', cursor: 'nw-resize' }),
    };
    var Resizer = reactExports.memo(function (props) {
        var onResizeStart = props.onResizeStart, direction = props.direction, children = props.children, replaceStyles = props.replaceStyles, className = props.className;
        var onMouseDown = reactExports.useCallback(function (e) {
            onResizeStart(e, direction);
        }, [onResizeStart, direction]);
        var onTouchStart = reactExports.useCallback(function (e) {
            onResizeStart(e, direction);
        }, [onResizeStart, direction]);
        var style = reactExports.useMemo(function () {
            return __assign$2(__assign$2({ position: 'absolute', userSelect: 'none' }, styles[direction]), (replaceStyles !== null && replaceStyles !== void 0 ? replaceStyles : {}));
        }, [replaceStyles, direction]);
        return (jsxRuntimeExports.jsx("div", { className: className || undefined, style: style, onMouseDown: onMouseDown, onTouchStart: onTouchStart, children: children }));
    });

    var __extends$1 = (undefined && undefined.__extends) || (function () {
        var extendStatics = function (d, b) {
            extendStatics = Object.setPrototypeOf ||
                ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
                function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
            return extendStatics(d, b);
        };
        return function (d, b) {
            if (typeof b !== "function" && b !== null)
                throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
            extendStatics(d, b);
            function __() { this.constructor = d; }
            d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
        };
    })();
    var __assign$1 = (undefined && undefined.__assign) || function () {
        __assign$1 = Object.assign || function(t) {
            for (var s, i = 1, n = arguments.length; i < n; i++) {
                s = arguments[i];
                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                    t[p] = s[p];
            }
            return t;
        };
        return __assign$1.apply(this, arguments);
    };
    var DEFAULT_SIZE = {
        width: 'auto',
        height: 'auto',
    };
    var clamp = function (n, min, max) { return Math.max(Math.min(n, max), min); };
    var snap = function (n, size, gridGap) {
        var v = Math.round(n / size);
        return v * size + gridGap * (v - 1);
    };
    var hasDirection = function (dir, target) {
        return new RegExp(dir, 'i').test(target);
    };
    // INFO: In case of window is a Proxy and does not porxy Events correctly, use isTouchEvent & isMouseEvent to distinguish event type instead of `instanceof`.
    var isTouchEvent = function (event) {
        return Boolean(event.touches && event.touches.length);
    };
    var isMouseEvent = function (event) {
        return Boolean((event.clientX || event.clientX === 0) &&
            (event.clientY || event.clientY === 0));
    };
    var findClosestSnap = function (n, snapArray, snapGap) {
        if (snapGap === void 0) { snapGap = 0; }
        var closestGapIndex = snapArray.reduce(function (prev, curr, index) { return (Math.abs(curr - n) < Math.abs(snapArray[prev] - n) ? index : prev); }, 0);
        var gap = Math.abs(snapArray[closestGapIndex] - n);
        return snapGap === 0 || gap < snapGap ? snapArray[closestGapIndex] : n;
    };
    var getStringSize = function (n) {
        n = n.toString();
        if (n === 'auto') {
            return n;
        }
        if (n.endsWith('px')) {
            return n;
        }
        if (n.endsWith('%')) {
            return n;
        }
        if (n.endsWith('vh')) {
            return n;
        }
        if (n.endsWith('vw')) {
            return n;
        }
        if (n.endsWith('vmax')) {
            return n;
        }
        if (n.endsWith('vmin')) {
            return n;
        }
        return "".concat(n, "px");
    };
    var getPixelSize = function (size, parentSize, innerWidth, innerHeight) {
        if (size && typeof size === 'string') {
            if (size.endsWith('px')) {
                return Number(size.replace('px', ''));
            }
            if (size.endsWith('%')) {
                var ratio = Number(size.replace('%', '')) / 100;
                return parentSize * ratio;
            }
            if (size.endsWith('vw')) {
                var ratio = Number(size.replace('vw', '')) / 100;
                return innerWidth * ratio;
            }
            if (size.endsWith('vh')) {
                var ratio = Number(size.replace('vh', '')) / 100;
                return innerHeight * ratio;
            }
        }
        return size;
    };
    var calculateNewMax = function (parentSize, innerWidth, innerHeight, maxWidth, maxHeight, minWidth, minHeight) {
        maxWidth = getPixelSize(maxWidth, parentSize.width, innerWidth, innerHeight);
        maxHeight = getPixelSize(maxHeight, parentSize.height, innerWidth, innerHeight);
        minWidth = getPixelSize(minWidth, parentSize.width, innerWidth, innerHeight);
        minHeight = getPixelSize(minHeight, parentSize.height, innerWidth, innerHeight);
        return {
            maxWidth: typeof maxWidth === 'undefined' ? undefined : Number(maxWidth),
            maxHeight: typeof maxHeight === 'undefined' ? undefined : Number(maxHeight),
            minWidth: typeof minWidth === 'undefined' ? undefined : Number(minWidth),
            minHeight: typeof minHeight === 'undefined' ? undefined : Number(minHeight),
        };
    };
    /**
     * transform T | [T, T] to [T, T]
     * @param val
     * @returns
     */
    // tslint:disable-next-line
    var normalizeToPair = function (val) { return (Array.isArray(val) ? val : [val, val]); };
    var definedProps = [
        'as',
        'ref',
        'style',
        'className',
        'grid',
        'gridGap',
        'snap',
        'bounds',
        'boundsByDirection',
        'size',
        'defaultSize',
        'minWidth',
        'minHeight',
        'maxWidth',
        'maxHeight',
        'lockAspectRatio',
        'lockAspectRatioExtraWidth',
        'lockAspectRatioExtraHeight',
        'enable',
        'handleStyles',
        'handleClasses',
        'handleWrapperStyle',
        'handleWrapperClass',
        'children',
        'onResizeStart',
        'onResize',
        'onResizeStop',
        'handleComponent',
        'scale',
        'resizeRatio',
        'snapGap',
    ];
    // HACK: This class is used to calculate % size.
    var baseClassName = '__resizable_base__';
    var Resizable = /** @class */ (function (_super) {
        __extends$1(Resizable, _super);
        function Resizable(props) {
            var _a, _b, _c, _d;
            var _this = _super.call(this, props) || this;
            _this.ratio = 1;
            _this.resizable = null;
            // For parent boundary
            _this.parentLeft = 0;
            _this.parentTop = 0;
            // For boundary
            _this.resizableLeft = 0;
            _this.resizableRight = 0;
            _this.resizableTop = 0;
            _this.resizableBottom = 0;
            // For target boundary
            _this.targetLeft = 0;
            _this.targetTop = 0;
            _this.delta = {
                width: 0,
                height: 0,
            };
            _this.appendBase = function () {
                if (!_this.resizable || !_this.window) {
                    return null;
                }
                var parent = _this.parentNode;
                if (!parent) {
                    return null;
                }
                var element = _this.window.document.createElement('div');
                element.style.width = '100%';
                element.style.height = '100%';
                element.style.position = 'absolute';
                element.style.transform = 'scale(0, 0)';
                element.style.left = '0';
                element.style.flex = '0 0 100%';
                if (element.classList) {
                    element.classList.add(baseClassName);
                }
                else {
                    element.className += baseClassName;
                }
                parent.appendChild(element);
                return element;
            };
            _this.removeBase = function (base) {
                var parent = _this.parentNode;
                if (!parent) {
                    return;
                }
                parent.removeChild(base);
            };
            _this.state = {
                isResizing: false,
                width: (_b = (_a = _this.propsSize) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 'auto',
                height: (_d = (_c = _this.propsSize) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 'auto',
                direction: 'right',
                original: {
                    x: 0,
                    y: 0,
                    width: 0,
                    height: 0,
                },
                backgroundStyle: {
                    height: '100%',
                    width: '100%',
                    backgroundColor: 'rgba(0,0,0,0)',
                    cursor: 'auto',
                    opacity: 0,
                    position: 'fixed',
                    zIndex: 9999,
                    top: '0',
                    left: '0',
                    bottom: '0',
                    right: '0',
                },
                flexBasis: undefined,
            };
            _this.onResizeStart = _this.onResizeStart.bind(_this);
            _this.onMouseMove = _this.onMouseMove.bind(_this);
            _this.onMouseUp = _this.onMouseUp.bind(_this);
            return _this;
        }
        Object.defineProperty(Resizable.prototype, "parentNode", {
            get: function () {
                if (!this.resizable) {
                    return null;
                }
                return this.resizable.parentNode;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(Resizable.prototype, "window", {
            get: function () {
                if (!this.resizable) {
                    return null;
                }
                if (!this.resizable.ownerDocument) {
                    return null;
                }
                return this.resizable.ownerDocument.defaultView;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(Resizable.prototype, "propsSize", {
            get: function () {
                return this.props.size || this.props.defaultSize || DEFAULT_SIZE;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(Resizable.prototype, "size", {
            get: function () {
                var width = 0;
                var height = 0;
                if (this.resizable && this.window) {
                    var orgWidth = this.resizable.offsetWidth;
                    var orgHeight = this.resizable.offsetHeight;
                    // HACK: Set position `relative` to get parent size.
                    //       This is because when re-resizable set `absolute`, I can not get base width correctly.
                    var orgPosition = this.resizable.style.position;
                    if (orgPosition !== 'relative') {
                        this.resizable.style.position = 'relative';
                    }
                    // INFO: Use original width or height if set auto.
                    width = this.resizable.style.width !== 'auto' ? this.resizable.offsetWidth : orgWidth;
                    height = this.resizable.style.height !== 'auto' ? this.resizable.offsetHeight : orgHeight;
                    // Restore original position
                    this.resizable.style.position = orgPosition;
                }
                return { width: width, height: height };
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(Resizable.prototype, "sizeStyle", {
            get: function () {
                var _this = this;
                var size = this.props.size;
                var getSize = function (key) {
                    var _a;
                    if (typeof _this.state[key] === 'undefined' || _this.state[key] === 'auto') {
                        return 'auto';
                    }
                    if (_this.propsSize && _this.propsSize[key] && ((_a = _this.propsSize[key]) === null || _a === void 0 ? void 0 : _a.toString().endsWith('%'))) {
                        if (_this.state[key].toString().endsWith('%')) {
                            return _this.state[key].toString();
                        }
                        var parentSize = _this.getParentSize();
                        var value = Number(_this.state[key].toString().replace('px', ''));
                        var percent = (value / parentSize[key]) * 100;
                        return "".concat(percent, "%");
                    }
                    return getStringSize(_this.state[key]);
                };
                var width = size && typeof size.width !== 'undefined' && !this.state.isResizing
                    ? getStringSize(size.width)
                    : getSize('width');
                var height = size && typeof size.height !== 'undefined' && !this.state.isResizing
                    ? getStringSize(size.height)
                    : getSize('height');
                return { width: width, height: height };
            },
            enumerable: false,
            configurable: true
        });
        Resizable.prototype.getParentSize = function () {
            if (!this.parentNode) {
                if (!this.window) {
                    return { width: 0, height: 0 };
                }
                return { width: this.window.innerWidth, height: this.window.innerHeight };
            }
            var base = this.appendBase();
            if (!base) {
                return { width: 0, height: 0 };
            }
            // INFO: To calculate parent width with flex layout
            var wrapChanged = false;
            var wrap = this.parentNode.style.flexWrap;
            if (wrap !== 'wrap') {
                wrapChanged = true;
                this.parentNode.style.flexWrap = 'wrap';
                // HACK: Use relative to get parent padding size
            }
            base.style.position = 'relative';
            base.style.minWidth = '100%';
            base.style.minHeight = '100%';
            var size = {
                width: base.offsetWidth,
                height: base.offsetHeight,
            };
            if (wrapChanged) {
                this.parentNode.style.flexWrap = wrap;
            }
            this.removeBase(base);
            return size;
        };
        Resizable.prototype.bindEvents = function () {
            if (this.window) {
                this.window.addEventListener('mouseup', this.onMouseUp);
                this.window.addEventListener('mousemove', this.onMouseMove);
                this.window.addEventListener('mouseleave', this.onMouseUp);
                this.window.addEventListener('touchmove', this.onMouseMove, {
                    capture: true,
                    passive: false,
                });
                this.window.addEventListener('touchend', this.onMouseUp);
            }
        };
        Resizable.prototype.unbindEvents = function () {
            if (this.window) {
                this.window.removeEventListener('mouseup', this.onMouseUp);
                this.window.removeEventListener('mousemove', this.onMouseMove);
                this.window.removeEventListener('mouseleave', this.onMouseUp);
                this.window.removeEventListener('touchmove', this.onMouseMove, true);
                this.window.removeEventListener('touchend', this.onMouseUp);
            }
        };
        Resizable.prototype.componentDidMount = function () {
            if (!this.resizable || !this.window) {
                return;
            }
            var computedStyle = this.window.getComputedStyle(this.resizable);
            this.setState({
                width: this.state.width || this.size.width,
                height: this.state.height || this.size.height,
                flexBasis: computedStyle.flexBasis !== 'auto' ? computedStyle.flexBasis : undefined,
            });
        };
        Resizable.prototype.componentWillUnmount = function () {
            if (this.window) {
                this.unbindEvents();
            }
        };
        Resizable.prototype.createSizeForCssProperty = function (newSize, kind) {
            var propsSize = this.propsSize && this.propsSize[kind];
            return this.state[kind] === 'auto' &&
                this.state.original[kind] === newSize &&
                (typeof propsSize === 'undefined' || propsSize === 'auto')
                ? 'auto'
                : newSize;
        };
        Resizable.prototype.calculateNewMaxFromBoundary = function (maxWidth, maxHeight) {
            var boundsByDirection = this.props.boundsByDirection;
            var direction = this.state.direction;
            var widthByDirection = boundsByDirection && hasDirection('left', direction);
            var heightByDirection = boundsByDirection && hasDirection('top', direction);
            var boundWidth;
            var boundHeight;
            if (this.props.bounds === 'parent') {
                var parent_1 = this.parentNode;
                if (parent_1) {
                    boundWidth = widthByDirection
                        ? this.resizableRight - this.parentLeft
                        : parent_1.offsetWidth + (this.parentLeft - this.resizableLeft);
                    boundHeight = heightByDirection
                        ? this.resizableBottom - this.parentTop
                        : parent_1.offsetHeight + (this.parentTop - this.resizableTop);
                }
            }
            else if (this.props.bounds === 'window') {
                if (this.window) {
                    boundWidth = widthByDirection ? this.resizableRight : this.window.innerWidth - this.resizableLeft;
                    boundHeight = heightByDirection ? this.resizableBottom : this.window.innerHeight - this.resizableTop;
                }
            }
            else if (this.props.bounds) {
                boundWidth = widthByDirection
                    ? this.resizableRight - this.targetLeft
                    : this.props.bounds.offsetWidth + (this.targetLeft - this.resizableLeft);
                boundHeight = heightByDirection
                    ? this.resizableBottom - this.targetTop
                    : this.props.bounds.offsetHeight + (this.targetTop - this.resizableTop);
            }
            if (boundWidth && Number.isFinite(boundWidth)) {
                maxWidth = maxWidth && maxWidth < boundWidth ? maxWidth : boundWidth;
            }
            if (boundHeight && Number.isFinite(boundHeight)) {
                maxHeight = maxHeight && maxHeight < boundHeight ? maxHeight : boundHeight;
            }
            return { maxWidth: maxWidth, maxHeight: maxHeight };
        };
        Resizable.prototype.calculateNewSizeFromDirection = function (clientX, clientY) {
            var scale = this.props.scale || 1;
            var _a = normalizeToPair(this.props.resizeRatio || 1), resizeRatioX = _a[0], resizeRatioY = _a[1];
            var _b = this.state, direction = _b.direction, original = _b.original;
            var _c = this.props, lockAspectRatio = _c.lockAspectRatio, lockAspectRatioExtraHeight = _c.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _c.lockAspectRatioExtraWidth;
            var newWidth = original.width;
            var newHeight = original.height;
            var extraHeight = lockAspectRatioExtraHeight || 0;
            var extraWidth = lockAspectRatioExtraWidth || 0;
            if (hasDirection('right', direction)) {
                newWidth = original.width + ((clientX - original.x) * resizeRatioX) / scale;
                if (lockAspectRatio) {
                    newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;
                }
            }
            if (hasDirection('left', direction)) {
                newWidth = original.width - ((clientX - original.x) * resizeRatioX) / scale;
                if (lockAspectRatio) {
                    newHeight = (newWidth - extraWidth) / this.ratio + extraHeight;
                }
            }
            if (hasDirection('bottom', direction)) {
                newHeight = original.height + ((clientY - original.y) * resizeRatioY) / scale;
                if (lockAspectRatio) {
                    newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;
                }
            }
            if (hasDirection('top', direction)) {
                newHeight = original.height - ((clientY - original.y) * resizeRatioY) / scale;
                if (lockAspectRatio) {
                    newWidth = (newHeight - extraHeight) * this.ratio + extraWidth;
                }
            }
            return { newWidth: newWidth, newHeight: newHeight };
        };
        Resizable.prototype.calculateNewSizeFromAspectRatio = function (newWidth, newHeight, max, min) {
            var _a = this.props, lockAspectRatio = _a.lockAspectRatio, lockAspectRatioExtraHeight = _a.lockAspectRatioExtraHeight, lockAspectRatioExtraWidth = _a.lockAspectRatioExtraWidth;
            var computedMinWidth = typeof min.width === 'undefined' ? 10 : min.width;
            var computedMaxWidth = typeof max.width === 'undefined' || max.width < 0 ? newWidth : max.width;
            var computedMinHeight = typeof min.height === 'undefined' ? 10 : min.height;
            var computedMaxHeight = typeof max.height === 'undefined' || max.height < 0 ? newHeight : max.height;
            var extraHeight = lockAspectRatioExtraHeight || 0;
            var extraWidth = lockAspectRatioExtraWidth || 0;
            if (lockAspectRatio) {
                var extraMinWidth = (computedMinHeight - extraHeight) * this.ratio + extraWidth;
                var extraMaxWidth = (computedMaxHeight - extraHeight) * this.ratio + extraWidth;
                var extraMinHeight = (computedMinWidth - extraWidth) / this.ratio + extraHeight;
                var extraMaxHeight = (computedMaxWidth - extraWidth) / this.ratio + extraHeight;
                var lockedMinWidth = Math.max(computedMinWidth, extraMinWidth);
                var lockedMaxWidth = Math.min(computedMaxWidth, extraMaxWidth);
                var lockedMinHeight = Math.max(computedMinHeight, extraMinHeight);
                var lockedMaxHeight = Math.min(computedMaxHeight, extraMaxHeight);
                newWidth = clamp(newWidth, lockedMinWidth, lockedMaxWidth);
                newHeight = clamp(newHeight, lockedMinHeight, lockedMaxHeight);
            }
            else {
                newWidth = clamp(newWidth, computedMinWidth, computedMaxWidth);
                newHeight = clamp(newHeight, computedMinHeight, computedMaxHeight);
            }
            return { newWidth: newWidth, newHeight: newHeight };
        };
        Resizable.prototype.setBoundingClientRect = function () {
            var adjustedScale = 1 / (this.props.scale || 1);
            // For parent boundary
            if (this.props.bounds === 'parent') {
                var parent_2 = this.parentNode;
                if (parent_2) {
                    var parentRect = parent_2.getBoundingClientRect();
                    this.parentLeft = parentRect.left * adjustedScale;
                    this.parentTop = parentRect.top * adjustedScale;
                }
            }
            // For target(html element) boundary
            if (this.props.bounds && typeof this.props.bounds !== 'string') {
                var targetRect = this.props.bounds.getBoundingClientRect();
                this.targetLeft = targetRect.left * adjustedScale;
                this.targetTop = targetRect.top * adjustedScale;
            }
            // For boundary
            if (this.resizable) {
                var _a = this.resizable.getBoundingClientRect(), left = _a.left, top_1 = _a.top, right = _a.right, bottom = _a.bottom;
                this.resizableLeft = left * adjustedScale;
                this.resizableRight = right * adjustedScale;
                this.resizableTop = top_1 * adjustedScale;
                this.resizableBottom = bottom * adjustedScale;
            }
        };
        Resizable.prototype.onResizeStart = function (event, direction) {
            if (!this.resizable || !this.window) {
                return;
            }
            var clientX = 0;
            var clientY = 0;
            if (event.nativeEvent && isMouseEvent(event.nativeEvent)) {
                clientX = event.nativeEvent.clientX;
                clientY = event.nativeEvent.clientY;
            }
            else if (event.nativeEvent && isTouchEvent(event.nativeEvent)) {
                clientX = event.nativeEvent.touches[0].clientX;
                clientY = event.nativeEvent.touches[0].clientY;
            }
            if (this.props.onResizeStart) {
                if (this.resizable) {
                    var startResize = this.props.onResizeStart(event, direction, this.resizable);
                    if (startResize === false) {
                        return;
                    }
                }
            }
            // Fix #168
            if (this.props.size) {
                if (typeof this.props.size.height !== 'undefined' && this.props.size.height !== this.state.height) {
                    this.setState({ height: this.props.size.height });
                }
                if (typeof this.props.size.width !== 'undefined' && this.props.size.width !== this.state.width) {
                    this.setState({ width: this.props.size.width });
                }
            }
            // For lockAspectRatio case
            this.ratio =
                typeof this.props.lockAspectRatio === 'number' ? this.props.lockAspectRatio : this.size.width / this.size.height;
            var flexBasis;
            var computedStyle = this.window.getComputedStyle(this.resizable);
            if (computedStyle.flexBasis !== 'auto') {
                var parent_3 = this.parentNode;
                if (parent_3) {
                    var dir = this.window.getComputedStyle(parent_3).flexDirection;
                    this.flexDir = dir.startsWith('row') ? 'row' : 'column';
                    flexBasis = computedStyle.flexBasis;
                }
            }
            // For boundary
            this.setBoundingClientRect();
            this.bindEvents();
            var state = {
                original: {
                    x: clientX,
                    y: clientY,
                    width: this.size.width,
                    height: this.size.height,
                },
                isResizing: true,
                backgroundStyle: __assign$1(__assign$1({}, this.state.backgroundStyle), { cursor: this.window.getComputedStyle(event.target).cursor || 'auto' }),
                direction: direction,
                flexBasis: flexBasis,
            };
            this.setState(state);
        };
        Resizable.prototype.onMouseMove = function (event) {
            var _this = this;
            if (!this.state.isResizing || !this.resizable || !this.window) {
                return;
            }
            if (this.window.TouchEvent && isTouchEvent(event)) {
                try {
                    event.preventDefault();
                    event.stopPropagation();
                }
                catch (e) {
                    // Ignore on fail
                }
            }
            var _a = this.props, maxWidth = _a.maxWidth, maxHeight = _a.maxHeight, minWidth = _a.minWidth, minHeight = _a.minHeight;
            var clientX = isTouchEvent(event) ? event.touches[0].clientX : event.clientX;
            var clientY = isTouchEvent(event) ? event.touches[0].clientY : event.clientY;
            var _b = this.state, direction = _b.direction, original = _b.original, width = _b.width, height = _b.height;
            var parentSize = this.getParentSize();
            var max = calculateNewMax(parentSize, this.window.innerWidth, this.window.innerHeight, maxWidth, maxHeight, minWidth, minHeight);
            maxWidth = max.maxWidth;
            maxHeight = max.maxHeight;
            minWidth = max.minWidth;
            minHeight = max.minHeight;
            // Calculate new size
            var _c = this.calculateNewSizeFromDirection(clientX, clientY), newHeight = _c.newHeight, newWidth = _c.newWidth;
            // Calculate max size from boundary settings
            var boundaryMax = this.calculateNewMaxFromBoundary(maxWidth, maxHeight);
            if (this.props.snap && this.props.snap.x) {
                newWidth = findClosestSnap(newWidth, this.props.snap.x, this.props.snapGap);
            }
            if (this.props.snap && this.props.snap.y) {
                newHeight = findClosestSnap(newHeight, this.props.snap.y, this.props.snapGap);
            }
            // Calculate new size from aspect ratio
            var newSize = this.calculateNewSizeFromAspectRatio(newWidth, newHeight, { width: boundaryMax.maxWidth, height: boundaryMax.maxHeight }, { width: minWidth, height: minHeight });
            newWidth = newSize.newWidth;
            newHeight = newSize.newHeight;
            if (this.props.grid) {
                var newGridWidth = snap(newWidth, this.props.grid[0], this.props.gridGap ? this.props.gridGap[0] : 0);
                var newGridHeight = snap(newHeight, this.props.grid[1], this.props.gridGap ? this.props.gridGap[1] : 0);
                var gap = this.props.snapGap || 0;
                var w = gap === 0 || Math.abs(newGridWidth - newWidth) <= gap ? newGridWidth : newWidth;
                var h = gap === 0 || Math.abs(newGridHeight - newHeight) <= gap ? newGridHeight : newHeight;
                newWidth = w;
                newHeight = h;
            }
            var delta = {
                width: newWidth - original.width,
                height: newHeight - original.height,
            };
            this.delta = delta;
            if (width && typeof width === 'string') {
                if (width.endsWith('%')) {
                    var percent = (newWidth / parentSize.width) * 100;
                    newWidth = "".concat(percent, "%");
                }
                else if (width.endsWith('vw')) {
                    var vw = (newWidth / this.window.innerWidth) * 100;
                    newWidth = "".concat(vw, "vw");
                }
                else if (width.endsWith('vh')) {
                    var vh = (newWidth / this.window.innerHeight) * 100;
                    newWidth = "".concat(vh, "vh");
                }
            }
            if (height && typeof height === 'string') {
                if (height.endsWith('%')) {
                    var percent = (newHeight / parentSize.height) * 100;
                    newHeight = "".concat(percent, "%");
                }
                else if (height.endsWith('vw')) {
                    var vw = (newHeight / this.window.innerWidth) * 100;
                    newHeight = "".concat(vw, "vw");
                }
                else if (height.endsWith('vh')) {
                    var vh = (newHeight / this.window.innerHeight) * 100;
                    newHeight = "".concat(vh, "vh");
                }
            }
            var newState = {
                width: this.createSizeForCssProperty(newWidth, 'width'),
                height: this.createSizeForCssProperty(newHeight, 'height'),
            };
            if (this.flexDir === 'row') {
                newState.flexBasis = newState.width;
            }
            else if (this.flexDir === 'column') {
                newState.flexBasis = newState.height;
            }
            var widthChanged = this.state.width !== newState.width;
            var heightChanged = this.state.height !== newState.height;
            var flexBaseChanged = this.state.flexBasis !== newState.flexBasis;
            var changed = widthChanged || heightChanged || flexBaseChanged;
            if (changed) {
                // For v18, update state sync
                reactDomExports.flushSync(function () {
                    _this.setState(newState);
                });
            }
            if (this.props.onResize) {
                if (changed) {
                    this.props.onResize(event, direction, this.resizable, delta);
                }
            }
        };
        Resizable.prototype.onMouseUp = function (event) {
            var _a, _b;
            var _c = this.state, isResizing = _c.isResizing, direction = _c.direction; _c.original;
            if (!isResizing || !this.resizable) {
                return;
            }
            if (this.props.onResizeStop) {
                this.props.onResizeStop(event, direction, this.resizable, this.delta);
            }
            if (this.props.size) {
                this.setState({ width: (_a = this.props.size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = this.props.size.height) !== null && _b !== void 0 ? _b : 'auto' });
            }
            this.unbindEvents();
            this.setState({
                isResizing: false,
                backgroundStyle: __assign$1(__assign$1({}, this.state.backgroundStyle), { cursor: 'auto' }),
            });
        };
        Resizable.prototype.updateSize = function (size) {
            var _a, _b;
            this.setState({ width: (_a = size.width) !== null && _a !== void 0 ? _a : 'auto', height: (_b = size.height) !== null && _b !== void 0 ? _b : 'auto' });
        };
        Resizable.prototype.renderResizer = function () {
            var _this = this;
            var _a = this.props, enable = _a.enable, handleStyles = _a.handleStyles, handleClasses = _a.handleClasses, handleWrapperStyle = _a.handleWrapperStyle, handleWrapperClass = _a.handleWrapperClass, handleComponent = _a.handleComponent;
            if (!enable) {
                return null;
            }
            var resizers = Object.keys(enable).map(function (dir) {
                if (enable[dir] !== false) {
                    return (jsxRuntimeExports.jsx(Resizer, { direction: dir, onResizeStart: _this.onResizeStart, replaceStyles: handleStyles && handleStyles[dir], className: handleClasses && handleClasses[dir], children: handleComponent && handleComponent[dir] ? handleComponent[dir] : null }, dir));
                }
                return null;
            });
            // #93 Wrap the resize box in span (will not break 100% width/height)
            return (jsxRuntimeExports.jsx("div", { className: handleWrapperClass, style: handleWrapperStyle, children: resizers }));
        };
        Resizable.prototype.render = function () {
            var _this = this;
            var extendsProps = Object.keys(this.props).reduce(function (acc, key) {
                if (definedProps.indexOf(key) !== -1) {
                    return acc;
                }
                acc[key] = _this.props[key];
                return acc;
            }, {});
            var style = __assign$1(__assign$1(__assign$1({ position: 'relative', userSelect: this.state.isResizing ? 'none' : 'auto' }, this.props.style), this.sizeStyle), { maxWidth: this.props.maxWidth, maxHeight: this.props.maxHeight, minWidth: this.props.minWidth, minHeight: this.props.minHeight, boxSizing: 'border-box', flexShrink: 0 });
            if (this.state.flexBasis) {
                style.flexBasis = this.state.flexBasis;
            }
            var Wrapper = this.props.as || 'div';
            return (jsxRuntimeExports.jsxs(Wrapper, __assign$1({ style: style, className: this.props.className }, extendsProps, { 
                // `ref` is after `extendsProps` to ensure this one wins over a version
                // passed in
                ref: function (c) {
                    if (c) {
                        _this.resizable = c;
                    }
                }, children: [this.state.isResizing && jsxRuntimeExports.jsx("div", { style: this.state.backgroundStyle }), this.props.children, this.renderResizer()] })));
        };
        Resizable.defaultProps = {
            as: 'div',
            onResizeStart: function () { },
            onResize: function () { },
            onResizeStop: function () { },
            enable: {
                top: true,
                right: true,
                bottom: true,
                left: true,
                topRight: true,
                bottomRight: true,
                bottomLeft: true,
                topLeft: true,
            },
            style: {},
            grid: [1, 1],
            gridGap: [0, 0],
            lockAspectRatio: false,
            lockAspectRatioExtraWidth: 0,
            lockAspectRatioExtraHeight: 0,
            scale: 1,
            resizeRatio: 1,
            snapGap: 0,
        };
        return Resizable;
    }(reactExports.PureComponent));

    /*! *****************************************************************************
    Copyright (c) Microsoft Corporation. All rights reserved.
    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of the
    License at http://www.apache.org/licenses/LICENSE-2.0

    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.

    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
    ***************************************************************************** */
    /* global Reflect, Promise */

    var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };

    function __extends(d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    }

    var __assign = function() {
        __assign = Object.assign || function __assign(t) {
            for (var s, i = 1, n = arguments.length; i < n; i++) {
                s = arguments[i];
                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
            }
            return t;
        };
        return __assign.apply(this, arguments);
    };

    function __rest(s, e) {
        var t = {};
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
            t[p] = s[p];
        if (s != null && typeof Object.getOwnPropertySymbols === "function")
            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                    t[p[i]] = s[p[i]];
            }
        return t;
    }

    var resizableStyle = {
        width: "auto",
        height: "auto",
        display: "inline-block",
        position: "absolute",
        top: 0,
        left: 0,
    };
    var getEnableResizingByFlag = function (flag) { return ({
        bottom: flag,
        bottomLeft: flag,
        bottomRight: flag,
        left: flag,
        right: flag,
        top: flag,
        topLeft: flag,
        topRight: flag,
    }); };
    var Rnd = /** @class */ (function (_super) {
        __extends(Rnd, _super);
        function Rnd(props) {
            var _this = _super.call(this, props) || this;
            _this.resizingPosition = { x: 0, y: 0 };
            _this.offsetFromParent = { left: 0, top: 0 };
            _this.resizableElement = { current: null };
            _this.originalPosition = { x: 0, y: 0 };
            _this.state = {
                resizing: false,
                bounds: {
                    top: 0,
                    right: 0,
                    bottom: 0,
                    left: 0,
                },
                maxWidth: props.maxWidth,
                maxHeight: props.maxHeight,
            };
            _this.onResizeStart = _this.onResizeStart.bind(_this);
            _this.onResize = _this.onResize.bind(_this);
            _this.onResizeStop = _this.onResizeStop.bind(_this);
            _this.onDragStart = _this.onDragStart.bind(_this);
            _this.onDrag = _this.onDrag.bind(_this);
            _this.onDragStop = _this.onDragStop.bind(_this);
            _this.getMaxSizesFromProps = _this.getMaxSizesFromProps.bind(_this);
            return _this;
        }
        Rnd.prototype.componentDidMount = function () {
            this.updateOffsetFromParent();
            var _a = this.offsetFromParent, left = _a.left, top = _a.top;
            var _b = this.getDraggablePosition(), x = _b.x, y = _b.y;
            this.draggable.setState({
                x: x - left,
                y: y - top,
            });
            // HACK: Apply position adjustment
            this.forceUpdate();
        };
        // HACK: To get `react-draggable` state x and y.
        Rnd.prototype.getDraggablePosition = function () {
            var _a = this.draggable.state, x = _a.x, y = _a.y;
            return { x: x, y: y };
        };
        Rnd.prototype.getParent = function () {
            return this.resizable && this.resizable.parentNode;
        };
        Rnd.prototype.getParentSize = function () {
            return this.resizable.getParentSize();
        };
        Rnd.prototype.getMaxSizesFromProps = function () {
            var maxWidth = typeof this.props.maxWidth === "undefined" ? Number.MAX_SAFE_INTEGER : this.props.maxWidth;
            var maxHeight = typeof this.props.maxHeight === "undefined" ? Number.MAX_SAFE_INTEGER : this.props.maxHeight;
            return { maxWidth: maxWidth, maxHeight: maxHeight };
        };
        Rnd.prototype.getSelfElement = function () {
            return this.resizable && this.resizable.resizable;
        };
        Rnd.prototype.getOffsetHeight = function (boundary) {
            var scale = this.props.scale;
            switch (this.props.bounds) {
                case "window":
                    return window.innerHeight / scale;
                case "body":
                    return document.body.offsetHeight / scale;
                default:
                    return boundary.offsetHeight;
            }
        };
        Rnd.prototype.getOffsetWidth = function (boundary) {
            var scale = this.props.scale;
            switch (this.props.bounds) {
                case "window":
                    return window.innerWidth / scale;
                case "body":
                    return document.body.offsetWidth / scale;
                default:
                    return boundary.offsetWidth;
            }
        };
        Rnd.prototype.onDragStart = function (e, data) {
            if (this.props.onDragStart) {
                this.props.onDragStart(e, data);
            }
            var pos = this.getDraggablePosition();
            this.originalPosition = pos;
            if (!this.props.bounds)
                return;
            var parent = this.getParent();
            var scale = this.props.scale;
            var boundary;
            if (this.props.bounds === "parent") {
                boundary = parent;
            }
            else if (this.props.bounds === "body") {
                var parentRect_1 = parent.getBoundingClientRect();
                var parentLeft_1 = parentRect_1.left;
                var parentTop_1 = parentRect_1.top;
                var bodyRect = document.body.getBoundingClientRect();
                var left_1 = -(parentLeft_1 - parent.offsetLeft * scale - bodyRect.left) / scale;
                var top_1 = -(parentTop_1 - parent.offsetTop * scale - bodyRect.top) / scale;
                var right = (document.body.offsetWidth - this.resizable.size.width * scale) / scale + left_1;
                var bottom = (document.body.offsetHeight - this.resizable.size.height * scale) / scale + top_1;
                return this.setState({ bounds: { top: top_1, right: right, bottom: bottom, left: left_1 } });
            }
            else if (this.props.bounds === "window") {
                if (!this.resizable)
                    return;
                var parentRect_2 = parent.getBoundingClientRect();
                var parentLeft_2 = parentRect_2.left;
                var parentTop_2 = parentRect_2.top;
                var left_2 = -(parentLeft_2 - parent.offsetLeft * scale) / scale;
                var top_2 = -(parentTop_2 - parent.offsetTop * scale) / scale;
                var right = (window.innerWidth - this.resizable.size.width * scale) / scale + left_2;
                var bottom = (window.innerHeight - this.resizable.size.height * scale) / scale + top_2;
                return this.setState({ bounds: { top: top_2, right: right, bottom: bottom, left: left_2 } });
            }
            else if (typeof this.props.bounds === "string") {
                boundary = document.querySelector(this.props.bounds);
            }
            else if (this.props.bounds instanceof HTMLElement) {
                boundary = this.props.bounds;
            }
            if (!(boundary instanceof HTMLElement) || !(parent instanceof HTMLElement)) {
                return;
            }
            var boundaryRect = boundary.getBoundingClientRect();
            var boundaryLeft = boundaryRect.left;
            var boundaryTop = boundaryRect.top;
            var parentRect = parent.getBoundingClientRect();
            var parentLeft = parentRect.left;
            var parentTop = parentRect.top;
            var left = (boundaryLeft - parentLeft) / scale;
            var top = boundaryTop - parentTop;
            if (!this.resizable)
                return;
            this.updateOffsetFromParent();
            var offset = this.offsetFromParent;
            this.setState({
                bounds: {
                    top: top - offset.top,
                    right: left + (boundary.offsetWidth - this.resizable.size.width) - offset.left / scale,
                    bottom: top + (boundary.offsetHeight - this.resizable.size.height) - offset.top,
                    left: left - offset.left / scale,
                },
            });
        };
        Rnd.prototype.onDrag = function (e, data) {
            if (!this.props.onDrag)
                return;
            var _a = this.offsetFromParent, left = _a.left, top = _a.top;
            if (!this.props.dragAxis || this.props.dragAxis === "both") {
                return this.props.onDrag(e, __assign(__assign({}, data), { x: data.x + left, y: data.y + top }));
            }
            else if (this.props.dragAxis === "x") {
                return this.props.onDrag(e, __assign(__assign({}, data), { x: data.x + left, y: this.originalPosition.y + top, deltaY: 0 }));
            }
            else if (this.props.dragAxis === "y") {
                return this.props.onDrag(e, __assign(__assign({}, data), { x: this.originalPosition.x + left, y: data.y + top, deltaX: 0 }));
            }
        };
        Rnd.prototype.onDragStop = function (e, data) {
            if (!this.props.onDragStop)
                return;
            var _a = this.offsetFromParent, left = _a.left, top = _a.top;
            if (!this.props.dragAxis || this.props.dragAxis === "both") {
                return this.props.onDragStop(e, __assign(__assign({}, data), { x: data.x + left, y: data.y + top }));
            }
            else if (this.props.dragAxis === "x") {
                return this.props.onDragStop(e, __assign(__assign({}, data), { x: data.x + left, y: this.originalPosition.y + top, deltaY: 0 }));
            }
            else if (this.props.dragAxis === "y") {
                return this.props.onDragStop(e, __assign(__assign({}, data), { x: this.originalPosition.x + left, y: data.y + top, deltaX: 0 }));
            }
        };
        Rnd.prototype.onResizeStart = function (e, dir, elementRef) {
            e.stopPropagation();
            this.setState({
                resizing: true,
            });
            var scale = this.props.scale;
            var offset = this.offsetFromParent;
            var pos = this.getDraggablePosition();
            this.resizingPosition = { x: pos.x + offset.left, y: pos.y + offset.top };
            this.originalPosition = pos;
            if (this.props.bounds) {
                var parent_1 = this.getParent();
                var boundary = void 0;
                if (this.props.bounds === "parent") {
                    boundary = parent_1;
                }
                else if (this.props.bounds === "body") {
                    boundary = document.body;
                }
                else if (this.props.bounds === "window") {
                    boundary = window;
                }
                else if (typeof this.props.bounds === "string") {
                    boundary = document.querySelector(this.props.bounds);
                }
                else if (this.props.bounds instanceof HTMLElement) {
                    boundary = this.props.bounds;
                }
                var self_1 = this.getSelfElement();
                if (self_1 instanceof Element &&
                    (boundary instanceof HTMLElement || boundary === window) &&
                    parent_1 instanceof HTMLElement) {
                    var _a = this.getMaxSizesFromProps(), maxWidth = _a.maxWidth, maxHeight = _a.maxHeight;
                    var parentSize = this.getParentSize();
                    if (maxWidth && typeof maxWidth === "string") {
                        if (maxWidth.endsWith("%")) {
                            var ratio = Number(maxWidth.replace("%", "")) / 100;
                            maxWidth = parentSize.width * ratio;
                        }
                        else if (maxWidth.endsWith("px")) {
                            maxWidth = Number(maxWidth.replace("px", ""));
                        }
                    }
                    if (maxHeight && typeof maxHeight === "string") {
                        if (maxHeight.endsWith("%")) {
                            var ratio = Number(maxHeight.replace("%", "")) / 100;
                            maxHeight = parentSize.height * ratio;
                        }
                        else if (maxHeight.endsWith("px")) {
                            maxHeight = Number(maxHeight.replace("px", ""));
                        }
                    }
                    var selfRect = self_1.getBoundingClientRect();
                    var selfLeft = selfRect.left;
                    var selfTop = selfRect.top;
                    var boundaryRect = this.props.bounds === "window" ? { left: 0, top: 0 } : boundary.getBoundingClientRect();
                    var boundaryLeft = boundaryRect.left;
                    var boundaryTop = boundaryRect.top;
                    var offsetWidth = this.getOffsetWidth(boundary);
                    var offsetHeight = this.getOffsetHeight(boundary);
                    var hasLeft = dir.toLowerCase().endsWith("left");
                    var hasRight = dir.toLowerCase().endsWith("right");
                    var hasTop = dir.startsWith("top");
                    var hasBottom = dir.startsWith("bottom");
                    if ((hasLeft || hasTop) && this.resizable) {
                        var max = (selfLeft - boundaryLeft) / scale + this.resizable.size.width;
                        this.setState({ maxWidth: max > Number(maxWidth) ? maxWidth : max });
                    }
                    // INFO: To set bounds in `lock aspect ratio with bounds` case. See also that story.
                    if (hasRight || (this.props.lockAspectRatio && !hasLeft && !hasTop)) {
                        var max = offsetWidth + (boundaryLeft - selfLeft) / scale;
                        this.setState({ maxWidth: max > Number(maxWidth) ? maxWidth : max });
                    }
                    if ((hasTop || hasLeft) && this.resizable) {
                        var max = (selfTop - boundaryTop) / scale + this.resizable.size.height;
                        this.setState({
                            maxHeight: max > Number(maxHeight) ? maxHeight : max,
                        });
                    }
                    // INFO: To set bounds in `lock aspect ratio with bounds` case. See also that story.
                    if (hasBottom || (this.props.lockAspectRatio && !hasTop && !hasLeft)) {
                        var max = offsetHeight + (boundaryTop - selfTop) / scale;
                        this.setState({
                            maxHeight: max > Number(maxHeight) ? maxHeight : max,
                        });
                    }
                }
            }
            else {
                this.setState({
                    maxWidth: this.props.maxWidth,
                    maxHeight: this.props.maxHeight,
                });
            }
            if (this.props.onResizeStart) {
                this.props.onResizeStart(e, dir, elementRef);
            }
        };
        Rnd.prototype.onResize = function (e, direction, elementRef, delta) {
            var _this = this;
            // INFO: Apply x and y position adjustments caused by resizing to draggable
            var newPos = { x: this.originalPosition.x, y: this.originalPosition.y };
            var left = -delta.width;
            var top = -delta.height;
            var directions = ["top", "left", "topLeft", "bottomLeft", "topRight"];
            if (directions.includes(direction)) {
                if (direction === "bottomLeft") {
                    newPos.x += left;
                }
                else if (direction === "topRight") {
                    newPos.y += top;
                }
                else {
                    newPos.x += left;
                    newPos.y += top;
                }
            }
            var draggableState = this.draggable.state;
            if (newPos.x !== draggableState.x || newPos.y !== draggableState.y) {
                reactDomExports.flushSync(function () {
                    _this.draggable.setState(newPos);
                });
            }
            this.updateOffsetFromParent();
            var offset = this.offsetFromParent;
            var x = this.getDraggablePosition().x + offset.left;
            var y = this.getDraggablePosition().y + offset.top;
            this.resizingPosition = { x: x, y: y };
            if (!this.props.onResize)
                return;
            this.props.onResize(e, direction, elementRef, delta, {
                x: x,
                y: y,
            });
        };
        Rnd.prototype.onResizeStop = function (e, direction, elementRef, delta) {
            this.setState({
                resizing: false,
            });
            var _a = this.getMaxSizesFromProps(), maxWidth = _a.maxWidth, maxHeight = _a.maxHeight;
            this.setState({ maxWidth: maxWidth, maxHeight: maxHeight });
            if (this.props.onResizeStop) {
                this.props.onResizeStop(e, direction, elementRef, delta, this.resizingPosition);
            }
        };
        Rnd.prototype.updateSize = function (size) {
            if (!this.resizable)
                return;
            this.resizable.updateSize({ width: size.width, height: size.height });
        };
        Rnd.prototype.updatePosition = function (position) {
            this.draggable.setState(position);
        };
        Rnd.prototype.updateOffsetFromParent = function () {
            var scale = this.props.scale;
            var parent = this.getParent();
            var self = this.getSelfElement();
            if (!parent || self === null) {
                return {
                    top: 0,
                    left: 0,
                };
            }
            var parentRect = parent.getBoundingClientRect();
            var parentLeft = parentRect.left;
            var parentTop = parentRect.top;
            var selfRect = self.getBoundingClientRect();
            var position = this.getDraggablePosition();
            var scrollLeft = parent.scrollLeft;
            var scrollTop = parent.scrollTop;
            this.offsetFromParent = {
                left: selfRect.left - parentLeft + scrollLeft - position.x * scale,
                top: selfRect.top - parentTop + scrollTop - position.y * scale,
            };
        };
        Rnd.prototype.render = function () {
            var _this = this;
            var _a = this.props, disableDragging = _a.disableDragging, style = _a.style, dragHandleClassName = _a.dragHandleClassName, position = _a.position, onMouseDown = _a.onMouseDown, onMouseUp = _a.onMouseUp, dragAxis = _a.dragAxis, dragGrid = _a.dragGrid, bounds = _a.bounds, enableUserSelectHack = _a.enableUserSelectHack, cancel = _a.cancel, children = _a.children; _a.onResizeStart; _a.onResize; _a.onResizeStop; _a.onDragStart; _a.onDrag; _a.onDragStop; var resizeHandleStyles = _a.resizeHandleStyles, resizeHandleClasses = _a.resizeHandleClasses, resizeHandleComponent = _a.resizeHandleComponent, enableResizing = _a.enableResizing, resizeGrid = _a.resizeGrid, resizeHandleWrapperClass = _a.resizeHandleWrapperClass, resizeHandleWrapperStyle = _a.resizeHandleWrapperStyle, scale = _a.scale, allowAnyClick = _a.allowAnyClick, dragPositionOffset = _a.dragPositionOffset, resizableProps = __rest(_a, ["disableDragging", "style", "dragHandleClassName", "position", "onMouseDown", "onMouseUp", "dragAxis", "dragGrid", "bounds", "enableUserSelectHack", "cancel", "children", "onResizeStart", "onResize", "onResizeStop", "onDragStart", "onDrag", "onDragStop", "resizeHandleStyles", "resizeHandleClasses", "resizeHandleComponent", "enableResizing", "resizeGrid", "resizeHandleWrapperClass", "resizeHandleWrapperStyle", "scale", "allowAnyClick", "dragPositionOffset"]);
            var defaultValue = this.props.default ? __assign({}, this.props.default) : undefined;
            // Remove unknown props, see also https://reactjs.org/warnings/unknown-prop.html
            delete resizableProps.default;
            var cursorStyle = disableDragging || dragHandleClassName ? { cursor: "auto" } : { cursor: "move" };
            var innerStyle = __assign(__assign(__assign({}, resizableStyle), cursorStyle), style);
            var _b = this.offsetFromParent, left = _b.left, top = _b.top;
            var draggablePosition;
            if (position) {
                draggablePosition = {
                    x: position.x - left,
                    y: position.y - top,
                };
            }
            // INFO: Make uncontorolled component when resizing to control position by setPostion.
            var pos = this.state.resizing ? undefined : draggablePosition;
            var dragAxisOrUndefined = this.state.resizing ? "both" : dragAxis;
            return (reactExports.createElement(Draggable, { ref: function (c) {
                    if (!c)
                        return;
                    _this.draggable = c;
                }, handle: dragHandleClassName ? ".".concat(dragHandleClassName) : undefined, defaultPosition: defaultValue, onMouseDown: onMouseDown, 
                // @ts-expect-error
                onMouseUp: onMouseUp, onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop, axis: dragAxisOrUndefined, disabled: disableDragging, grid: dragGrid, bounds: bounds ? this.state.bounds : undefined, position: pos, enableUserSelectHack: enableUserSelectHack, cancel: cancel, scale: scale, allowAnyClick: allowAnyClick, nodeRef: this.resizableElement, positionOffset: dragPositionOffset },
                reactExports.createElement(Resizable, __assign({}, resizableProps, { ref: function (c) {
                        if (!c)
                            return;
                        _this.resizable = c;
                        _this.resizableElement.current = c.resizable;
                    }, defaultSize: defaultValue, size: this.props.size, enable: typeof enableResizing === "boolean" ? getEnableResizingByFlag(enableResizing) : enableResizing, onResizeStart: this.onResizeStart, onResize: this.onResize, onResizeStop: this.onResizeStop, style: innerStyle, minWidth: this.props.minWidth, minHeight: this.props.minHeight, maxWidth: this.state.resizing ? this.state.maxWidth : this.props.maxWidth, maxHeight: this.state.resizing ? this.state.maxHeight : this.props.maxHeight, grid: resizeGrid, handleWrapperClass: resizeHandleWrapperClass, handleWrapperStyle: resizeHandleWrapperStyle, lockAspectRatio: this.props.lockAspectRatio, lockAspectRatioExtraWidth: this.props.lockAspectRatioExtraWidth, lockAspectRatioExtraHeight: this.props.lockAspectRatioExtraHeight, handleStyles: resizeHandleStyles, handleClasses: resizeHandleClasses, handleComponent: resizeHandleComponent, scale: this.props.scale }), children)));
        };
        Rnd.defaultProps = {
            maxWidth: Number.MAX_SAFE_INTEGER,
            maxHeight: Number.MAX_SAFE_INTEGER,
            scale: 1,
            onResizeStart: function () { },
            onResize: function () { },
            onResizeStop: function () { },
            onDragStart: function () { },
            onDrag: function () { },
            onDragStop: function () { },
        };
        return Rnd;
    }(reactExports.PureComponent));

    function styleInject(css, ref) {
      if ( ref === void 0 ) ref = {};
      var insertAt = ref.insertAt;

      if (typeof document === 'undefined') { return; }

      var head = document.head || document.getElementsByTagName('head')[0];
      var style = document.createElement('style');
      style.type = 'text/css';

      if (insertAt === 'top') {
        if (head.firstChild) {
          head.insertBefore(style, head.firstChild);
        } else {
          head.appendChild(style);
        }
      } else {
        head.appendChild(style);
      }

      if (style.styleSheet) {
        style.styleSheet.cssText = css;
      } else {
        style.appendChild(document.createTextNode(css));
      }
    }

    var css_248z = ".view-module_container__wUfZx {\n    z-index: 1000000;\n}\n\n.view-module_app__dlFRi {\n    padding: 2px;\n    font-size: 14px;\n    background: white;\n    height: 100%;\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n}\n\n.view-module_app__dlFRi table {\n    border-collapse: collapse;\n}\n\n.view-module_app__dlFRi table th {\n    border: 1px solid black;\n}\n\n.view-module_app__dlFRi table td {\n    border: 1px solid black;\n}\n\n.view-module_header__wRAJV {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    padding: 5px 10px;\n    font-weight: bold;\n    background: gray;\n}\n\n.view-module_content__JFhsr {\n    background: white;\n    overflow: auto;\n    flex-grow: 1;\n    padding: 2px;\n}\n\n.view-module_child__uaKFI {\n    border: 1px solid black;\n    padding: 2px;\n    margin: 2px;\n}";
    var viewStyles = {"container":"view-module_container__wUfZx","app":"view-module_app__dlFRi","header":"view-module_header__wRAJV","content":"view-module_content__JFhsr","child":"view-module_child__uaKFI"};
    styleInject(css_248z);

    function setupApp() {
        const container = document.createElement("div");
        container.id = "mwi-app-container";
        document.body.insertBefore(container, document.body.firstChild);
        clientExports.createRoot(container).render(reactExports.createElement(App, null));
    }
    const childrenBefore = [];
    let addView = undefined;
    function AddView(child) {
        if (addView) {
            addView(child);
        }
        else if (childrenBefore.find((c) => c.id === child.id)) ;
        else {
            childrenBefore.push(child);
        }
    }
    function App() {
        const [show, setShow] = reactExports.useState(true);
        const [editMode, setEditMode] = reactExports.useState(false);
        const [children, setChildren] = reactExports.useState(childrenBefore);
        const position = reactExports.useRef(loadSettings("view.position", {
            x: 0,
            y: 0,
            width: "400px",
            height: "400px",
        }));
        reactExports.useEffect(() => {
            addView = (child) => {
                setChildren(previous => {
                    if (previous.find((c) => c.id === child.id)) {
                        return previous;
                    }
                    return [...previous, child];
                });
            };
            return () => {
                addView = undefined;
            };
        }, []);
        if (!show) {
            // Add a button to the top left corner
            return reactExports.createElement("button", { style: {
                    position: "absolute",
                    left: 0,
                    top: 0,
                    zIndex: 1000000,
                    margin: "10px",
                }, onClick: () => {
                    setShow(true);
                } }, "MWI Helper");
        }
        return reactExports.createElement(Rnd, { default: position.current, bounds: "window", className: viewStyles.container, disableDragging: !editMode, enableResizing: editMode, onResizeStop: (_event, _direction, ref) => {
                position.current.width = ref.style.width;
                position.current.height = ref.style.height;
            }, onDragStop: (_, data) => {
                position.current.x = data.x;
                position.current.y = data.y;
            } },
            reactExports.createElement("div", { className: viewStyles.app },
                reactExports.createElement("div", { className: viewStyles.header },
                    reactExports.createElement("div", null, "Milky Way Idle Helper"),
                    reactExports.createElement("div", null,
                        reactExports.createElement("button", { onClick: () => {
                                setEditMode(!editMode);
                                if (editMode) {
                                    saveSettings("view.position", position.current);
                                }
                            } }, editMode ? "Save" : "Move"),
                        reactExports.createElement("button", { onClick: () => {
                                setShow(false);
                            } }, "-"))),
                reactExports.createElement("div", { className: viewStyles.content }, children.map((child) => reactExports.createElement(ViewChild, Object.assign({ key: child.id }, child))))));
    }
    function ViewChild({ id, name, node }) {
        const show = useSettings(`view.${id}.show`, true);
        if (!show) {
            return reactExports.createElement("div", { className: viewStyles.child },
                name,
                reactExports.createElement("button", { onClick: () => {
                        saveSettings(`view.${id}.show`, true);
                    } }, "+"));
        }
        return reactExports.createElement("div", { className: viewStyles.child },
            reactExports.createElement("div", null,
                name,
                reactExports.createElement("button", { onClick: () => {
                        saveSettings(`view.${id}.show`, false);
                    } }, "-")),
            node);
    }

    function actionStatPlugin() {
        setupEventsStore();
        AllLoadedEvent.subscribe({
            complete: () => {
                AddView({
                    id: "action-stat",
                    name: "Action Stat",
                    node: reactExports.createElement(reactExports.Fragment, null,
                        reactExports.createElement(ShowStoreInfo, null),
                        reactExports.createElement(ShowActionStat, null)),
                });
            },
        });
    }
    function setupEventsStore() {
        ActionCompleteEvent.subscribe((event) => {
            if (!loadSettings("action-stat.store.enable", false)) {
                return;
            }
            if (event.count === 0) {
                return;
            }
            storedEvents([...getStoredEvents(), event]);
        });
    }
    function storedEvents(events) {
        GM_setValue("action-stat.store", JSON.stringify(events));
    }
    function getStoredEvents() {
        return JSON.parse(GM_getValue("action-stat.store", "[]"));
    }
    function ShowStoreInfo() {
        const [size, setSize] = reactExports.useState(getStoredEvents().length);
        const enable = useSettings("action-stat.store.enable", false);
        return reactExports.createElement("div", null,
            "Action Stat store",
            reactExports.createElement("input", { type: "checkbox", checked: enable, onChange: (e) => saveSettings("action-stat.store.enable", e.target.checked) }),
            "Stored records: ",
            reactExports.createElement(ShowNumber, { value: size }),
            reactExports.createElement("button", { onClick: () => setSize(getStoredEvents().length) }, "Check count"),
            reactExports.createElement("button", { onClick: () => {
                    storedEvents([]);
                    setSize(0);
                } }, "Clear"),
            reactExports.createElement("button", { onClick: () => exportStore() }, "Save as"));
    }
    function exportStore() {
        const data = getStoredEvents();
        const blob = new Blob([JSON.stringify(data)], { type: "application/json;charset=utf-8" });
        window.open(window.URL.createObjectURL(blob));
    }
    function ShowActionStat() {
        const storedEvents = reactExports.useMemo(() => getStoredEvents(), []);
        const events = useRecentValues(ActionCompleteEvent);
        const validEvents = [...storedEvents, ...events].filter(it => it.count);
        if (validEvents.length === 0) {
            return reactExports.createElement(reactExports.Fragment, null, "No Action");
        }
        const groupedAction = validEvents.reduce((map, event) => {
            const action = getActionName(event.hrid);
            if (action in map) {
                map[action].push(event);
            }
            else {
                map[action] = [event];
            }
            return map;
        }, {});
        return reactExports.createElement("table", null,
            reactExports.createElement("thead", null,
                reactExports.createElement("tr", null,
                    reactExports.createElement("th", null, "Action"),
                    reactExports.createElement("th", null, "Efficiency"),
                    reactExports.createElement("th", null, "Item Changes"))),
            reactExports.createElement("tbody", null, Object.entries(groupedAction).map(([hrid, events]) => reactExports.createElement("tr", { key: hrid },
                reactExports.createElement("th", null, getActionName(hrid)),
                reactExports.createElement(ShowEfficiencyStat, { events: events }),
                reactExports.createElement(ShowEventStats, { events: events })))));
    }
    function ShowEfficiencyStat({ events }) {
        const rows = [];
        events.forEach(it => {
            let row = rows.find(row => row.count === it.count);
            if (!row) {
                row = { count: it.count, times: 0, timesPercent: 0, action: 0, actionPercent: 0 };
                rows.push(row);
            }
            row.times++;
            row.action += it.count;
        });
        rows.sort((a, b) => a.count - b.count);
        const total = rows.reduce((sum, it) => sum + it.action, 0);
        rows.forEach(it => it.actionPercent = it.action / total);
        rows.forEach(it => it.timesPercent = it.times / events.length);
        return reactExports.createElement("td", null,
            reactExports.createElement("table", null,
                reactExports.createElement("thead", null,
                    reactExports.createElement("tr", null,
                        reactExports.createElement("th", null, "Count"),
                        reactExports.createElement("th", null, "Times"),
                        reactExports.createElement("th", null, "%"),
                        reactExports.createElement("th", null, "Actions"),
                        reactExports.createElement("th", null, "%"))),
                reactExports.createElement("tbody", null, rows.map(it => reactExports.createElement("tr", { key: it.count },
                    reactExports.createElement("th", null, it.count),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowNumber, { value: it.times })),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowPercent, { value: it.timesPercent })),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowNumber, { value: it.action })),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowPercent, { value: it.actionPercent }))))),
                reactExports.createElement("tfoot", null,
                    reactExports.createElement("tr", null,
                        reactExports.createElement("th", null, "Total"),
                        reactExports.createElement("th", null,
                            reactExports.createElement(ShowNumber, { value: events.length })),
                        reactExports.createElement("th", null),
                        reactExports.createElement("th", null,
                            reactExports.createElement(ShowNumber, { value: total })),
                        reactExports.createElement("th", null)),
                    reactExports.createElement("tr", null,
                        reactExports.createElement("th", { colSpan: 3 }, "Efficiency"),
                        reactExports.createElement("th", null,
                            reactExports.createElement(ShowNumber, { value: total / events.length })),
                        reactExports.createElement("th", null)))));
    }
    function ShowEventStats({ events }) {
        const items = uniqueStrings(events.flatMap(it => [...it.added, ...it.removed].map(it => it.itemHrid)));
        return reactExports.createElement("td", null,
            reactExports.createElement("table", null,
                reactExports.createElement("thead", null,
                    reactExports.createElement("tr", null, items.map(hrid => reactExports.createElement("th", { key: hrid }, getItemName(hrid))))),
                reactExports.createElement("tbody", null,
                    reactExports.createElement("tr", null, items.map(hrid => reactExports.createElement("td", { key: hrid },
                        reactExports.createElement(ShowItemStat, { itemHrid: hrid, events: events })))))));
    }
    function ShowItemStat({ itemHrid, events }) {
        const rows = [];
        const subtotalActions = {};
        events.forEach(event => {
            var _a, _b, _c;
            const itemCount = (_b = (_a = [...event.added, ...event.removed].find(item => item.itemHrid === itemHrid)) === null || _a === void 0 ? void 0 : _a.count) !== null && _b !== void 0 ? _b : 0;
            let row = rows.find(row => row.action === event.count && row.itemCount === itemCount);
            if (!row) {
                row = {
                    action: event.count,
                    itemCount: itemCount,
                    times: 0,
                    timesPercent: 0,
                    subtotal: 0,
                };
                rows.push(row);
            }
            row.times += 1;
            subtotalActions[row.action] = ((_c = subtotalActions[row.action]) !== null && _c !== void 0 ? _c : 0) + 1;
        });
        rows.forEach(row => row.timesPercent = row.times / subtotalActions[row.action]);
        const totalActions = events.reduce((acc, event) => acc + event.count, 0);
        rows.forEach(row => row.subtotal = row.times * row.itemCount);
        const total = rows.reduce((acc, row) => acc + row.subtotal, 0);
        rows.sort((a, b) => a.action - b.action || a.itemCount - b.itemCount);
        return reactExports.createElement("table", null,
            reactExports.createElement("thead", null,
                reactExports.createElement("tr", null,
                    reactExports.createElement("th", null, "Count"),
                    reactExports.createElement("th", null, "Times"),
                    reactExports.createElement("th", null, "%"),
                    reactExports.createElement("th", null, "Subtotal"))),
            reactExports.createElement("tbody", null, rows.map(row => reactExports.createElement("tr", { key: `${row.action}-${row.itemCount}` },
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.itemCount }),
                    " ",
                    "/",
                    " ",
                    reactExports.createElement(ShowNumber, { value: row.action })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.times })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowPercent, { value: row.timesPercent })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.subtotal }))))),
            reactExports.createElement("tfoot", null,
                reactExports.createElement("tr", null,
                    reactExports.createElement("th", null, "Avg"),
                    reactExports.createElement("th", null,
                        reactExports.createElement(ShowNumber, { value: total / totalActions })),
                    reactExports.createElement("th", null, "Total"),
                    reactExports.createElement("th", null,
                        reactExports.createElement(ShowNumber, { value: total })))));
    }

    function ShowItem({ hrid, enhancementLevel }) {
        return reactExports.createElement(reactExports.Fragment, null,
            getItemName(hrid),
            (enhancementLevel && enhancementLevel > 0) ? ` +${enhancementLevel}` : "");
    }

    function prepareSellItems(inputs) {
        return prepareItems(inputs, getSellPriceByHrid);
    }
    function prepareBuyItems(inputs) {
        return prepareItems(inputs, getBuyPriceByHrid);
    }
    function prepareItems(inputs, priceFunc) {
        const items = inputs.map((input) => {
            var _a, _b;
            const price = priceFunc(input.hrid, (_a = input.enhancementLevel) !== null && _a !== void 0 ? _a : 0);
            return ({
                name: getItemName(input.hrid),
                enhancementLevel: (_b = input.enhancementLevel) !== null && _b !== void 0 ? _b : 0,
                count: input.count,
                price,
                subtotal: input.count * price,
                percent: 0,
            });
        });
        const total = items.reduce((acc, item) => acc + item.subtotal, 0);
        items.forEach((item) => item.percent = item.subtotal / total);
        return { items, total, };
    }
    function ItemTable({ items }) {
        if (items.length === 0) {
            return reactExports.createElement(reactExports.Fragment, null);
        }
        return reactExports.createElement("table", null,
            reactExports.createElement("thead", null,
                reactExports.createElement("tr", null,
                    reactExports.createElement("th", null, "Name"),
                    reactExports.createElement("th", null, "Count"),
                    reactExports.createElement("th", null, "Price"),
                    reactExports.createElement("th", null, "Subtotal"),
                    reactExports.createElement("th", null, "Radio"))),
            reactExports.createElement("tbody", null, items.map((row) => reactExports.createElement("tr", { key: row.name },
                reactExports.createElement("td", null,
                    row.name,
                    row.enhancementLevel > 0 && `+${row.enhancementLevel}`),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.count })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.price })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowNumber, { value: row.subtotal })),
                reactExports.createElement("td", null,
                    reactExports.createElement(ShowPercent, { value: row.percent }))))));
    }

    var EquipmentTool;
    (function (EquipmentTool) {
        EquipmentTool["AlchemyTool"] = "alchemy_tool";
        EquipmentTool["BrewingTool"] = "brewing_tool";
        EquipmentTool["CheesesmithingTool"] = "cheesesmithing_tool";
        EquipmentTool["CookingTool"] = "cooking_tool";
        EquipmentTool["CraftingTool"] = "crafting_tool";
        EquipmentTool["EnhancingTool"] = "enhancing_tool";
        EquipmentTool["ForagingTool"] = "foraging_tool";
        EquipmentTool["MilkingTool"] = "milking_tool";
        EquipmentTool["TailoringTool"] = "tailoring_tool";
        EquipmentTool["WoodcuttingTool"] = "woodcutting_tool";
    })(EquipmentTool || (EquipmentTool = {}));
    var EquipmentLocation;
    (function (EquipmentLocation) {
        EquipmentLocation["Back"] = "back";
        EquipmentLocation["Body"] = "body";
        EquipmentLocation["Earrings"] = "earrings";
        EquipmentLocation["Feet"] = "feet";
        EquipmentLocation["Hands"] = "hands";
        EquipmentLocation["Head"] = "head";
        EquipmentLocation["Legs"] = "legs";
        EquipmentLocation["MainHand"] = "main_hand";
        EquipmentLocation["Neck"] = "neck";
        EquipmentLocation["OffHand"] = "off_hand";
        EquipmentLocation["Pouch"] = "pouch";
        EquipmentLocation["Ring"] = "ring";
        EquipmentLocation["Trinket"] = "trinket";
        EquipmentLocation["TwoHand"] = "two_hand";
    })(EquipmentLocation || (EquipmentLocation = {}));
    function getEquipmentLocationHrid(location) {
        return `/item_locations/${location}`;
    }
    function getEquipmentLocationByHrid(hrid) {
        return Object.values(EquipmentLocation).find((location) => getEquipmentLocationHrid(location) === hrid) ||
            Object.values(EquipmentTool).find((tool) => getEquipmentLocationHrid(tool) === hrid) || null;
    }
    const store$1 = createCharacterStore("equipment");
    function equipmentStore() {
        return store$1;
    }
    InitCharacterSubject.subscribe((data) => {
        const localEquipment = {};
        Object.values(data.characterItems).forEach((item) => {
            const location = getEquipmentLocationByHrid(item.itemLocationHrid);
            if (location === null) {
                return;
            }
            localEquipment[location] = {
                location,
                itemHrid: item.itemHrid,
                enhancementLevel: item.enhancementLevel,
                buffs: getBuffsByEquipmentItemHrid(item.itemHrid, item.enhancementLevel),
            };
        });
        store$1.data = localEquipment;
    });

    const store = createCharacterStore("buffs");
    function buffStore() {
        return store;
    }
    combineLatest({ data: InitCharacterSubject, equipments: equipmentStore().dataSubject }).subscribe(({ data, equipments }) => {
        store.data = [data.mooPassActionTypeBuffsMap, data.communityActionTypeBuffsMap, data.houseActionTypeBuffsMap, data.consumableActionTypeBuffsMap, data.equipmentActionTypeBuffsMap]
            .flatMap((buffMap) => Object.entries(buffMap).flatMap(([key, value]) => (value || []).map((buff) => {
            const action = getActionTypeByTypeHrid(key);
            const type = getBuffTypeByHrid(buff.typeHrid);
            const source = getBuffSourceByHrid(buff.uniqueHrid);
            if (!action || !type || !source) {
                return null;
            }
            const basic = {
                action,
                type,
                source,
                value: buff.flatBoost,
            };
            if (source === BuffSource.Equipment) {
                return Object.assign(Object.assign({}, basic), { equipments: Object.values(equipments)
                        .filter(eq => eq.buffs.some(eqBuff => eqBuff.action === action &&
                        eqBuff.type === type))
                        .map(({ location, itemHrid, enhancementLevel, buffs }) => {
                        var _a, _b;
                        return {
                            location, itemHrid, enhancementLevel,
                            value: (_b = (_a = buffs.find(it => it.action === action && it.type === type)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 0,
                        };
                    }) });
            }
            return basic;
        })))
            .filter(it => it != null);
    });
    function getSumOfBuff(buffs, buffType) {
        const typeBuff = buffs.filter(b => b.type === buffType);
        return typeBuff.reduce((acc, b) => acc + b.value, 0);
    }
    function getBuffsOfActionType(actionType) {
        return store.data.filter(b => b.action === actionType);
    }
    function getTimeCostAfterBuff(action) {
        return action.baseTimeCost / (1 + getSumOfBuff(getBuffsOfActionType(action.type), CollectBuffType.ActionSpeed));
    }
    function getEfficiencyAfterBuff(action) {
        const myLevel = currentCharacter().skills[action.type].level;
        if (myLevel < action.levelRequirement) {
            return 0;
        }
        return 1 + getSumOfBuff(getBuffsOfActionType(action.type), CollectBuffType.Efficiency) +
            0.01 * (myLevel - action.levelRequirement);
    }
    function getGatheringAfterBuff(action) {
        return 1 + getSumOfBuff(getBuffsOfActionType(action.type), CollectBuffType.Gathering);
    }
    function getRareFindAfterBuff(action) {
        return 1 + getSumOfBuff(getBuffsOfActionType(action.type), CollectBuffType.RareFind);
    }
    function getBuffTypeName(action) {
        return getClientData().buffTypeDetailMap[getBuffHrid(action)].name;
    }
    function getBuffsByEquipmentItemHrid(hrid, enhancementLevel) {
        var _a;
        const equipmentDetail = (_a = getClientData().itemDetailMap[hrid]) === null || _a === void 0 ? void 0 : _a.equipmentDetail;
        if (!equipmentDetail) {
            return [];
        }
        function getBasicBuffByNonCombatStatKV(key) {
            var _a, _b;
            const basic = (_a = equipmentDetail === null || equipmentDetail === void 0 ? void 0 : equipmentDetail.noncombatStats[key]) !== null && _a !== void 0 ? _a : 0;
            const bonus = (_b = equipmentDetail === null || equipmentDetail === void 0 ? void 0 : equipmentDetail.noncombatEnhancementBonuses[key]) !== null && _b !== void 0 ? _b : 0;
            let action = null;
            let type = null;
            if (key.endsWith("Efficiency")) {
                action = key.substring(0, key.length - "Efficiency".length);
                type = CollectBuffType.Efficiency;
            }
            else if (key.endsWith("Experience")) {
                action = key.substring(0, key.length - "Experience".length);
                type = CollectBuffType.Wisdom;
            }
            else if (key.endsWith("RareFind")) {
                action = key.substring(0, key.length - "RareFind".length);
                type = CollectBuffType.RareFind;
            }
            else if (key.endsWith("Speed")) {
                action = key.substring(0, key.length - "Speed".length);
                type = CollectBuffType.ActionSpeed;
            }
            if (!action || !type) {
                console.error("Invalid key", key);
                return [];
            }
            const actions = [];
            if (Object.values(AllActionType).includes(action)) {
                actions.push(action);
            }
            else if (action === "skilling") {
                actions.push(...Object.values(AllActionType));
            }
            return actions.map(action => ({
                action,
                type,
                source: BuffSource.Equipment,
                value: basic + getClientData().enhancementLevelTotalBonusMultiplierTable[enhancementLevel] * bonus,
            }));
        }
        return Object.keys(equipmentDetail.noncombatStats)
            .flatMap((key) => getBasicBuffByNonCombatStatKV(key));
    }

    function foragingPlugin() {
        AllLoadedEvent.subscribe({
            complete: () => {
                AddView({
                    id: "foraging",
                    name: "Foraging",
                    node: reactExports.createElement(ShowForaging, null)
                });
            },
        });
    }
    function ShowForaging() {
        const [expandDropTable, setExpandDropTable] = reactExports.useState(false);
        const buffsOrNull = useStoreData(buffStore());
        const buffs = (buffsOrNull !== null && buffsOrNull !== void 0 ? buffsOrNull : []).filter(b => b.action === CollectActionType.Foraging);
        const actionRows = getCollectActions(CollectActionType.Foraging)
            .map(action => {
            const inputs = action.dropTable.map((item) => {
                let count = item.dropRate
                    * (3600 / getTimeCostAfterBuff(action))
                    * (item.maxCount + item.minCount) / 2
                    * getEfficiencyAfterBuff(action);
                switch (item.type) {
                    case DropType.Common:
                        count = count * getGatheringAfterBuff(action);
                        break;
                    case DropType.Essence:
                        break;
                    case DropType.Rare:
                        count = count * getRareFindAfterBuff(action);
                        break;
                }
                return {
                    hrid: item.itemHrid,
                    count: count,
                };
            });
            const { total, items } = prepareSellItems(inputs);
            return { action, totalIncome: total, dropItemRows: items, };
        })
            .sort((a, b) => b.totalIncome - a.totalIncome);
        return reactExports.createElement("div", null,
            reactExports.createElement(ShowBuffTable, { buffs: buffs }),
            reactExports.createElement("table", null,
                reactExports.createElement("thead", null,
                    reactExports.createElement("tr", null,
                        reactExports.createElement("th", null, "Name"),
                        reactExports.createElement("th", null, "Category"),
                        reactExports.createElement("th", null, "Income/h"),
                        reactExports.createElement("th", null, "Rate"),
                        reactExports.createElement("th", null,
                            "Drop Table",
                            reactExports.createElement("button", { onClick: () => setExpandDropTable(!expandDropTable) }, expandDropTable ? "-" : "+")))),
                reactExports.createElement("tbody", null, actionRows.map(({ action, totalIncome, dropItemRows }) => reactExports.createElement("tr", { key: action.hrid },
                    reactExports.createElement("td", null, action.name),
                    reactExports.createElement("td", null, action.category.name),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowNumber, { value: totalIncome })),
                    reactExports.createElement("td", null,
                        reactExports.createElement("div", null,
                            reactExports.createElement(ShowNumber, { value: action.baseTimeCost }),
                            " s ",
                            "->",
                            reactExports.createElement(ShowNumber, { value: getTimeCostAfterBuff(action) }),
                            " s"),
                        reactExports.createElement("div", null,
                            reactExports.createElement(ShowNumber, { value: (3600 / getTimeCostAfterBuff(action)) }),
                            " times/h"),
                        reactExports.createElement("div", null,
                            "Efficiency: ",
                            reactExports.createElement(ShowNumber, { value: getEfficiencyAfterBuff(action) }),
                            " \u00D7")),
                    reactExports.createElement("td", null,
                        reactExports.createElement(ShowDropTable, { rows: dropItemRows, expand: expandDropTable })))))));
    }
    function ShowDropTable({ rows, expand: allExpand }) {
        const [expand, setExpand] = reactExports.useState(allExpand);
        if (!expand && !allExpand) {
            return reactExports.createElement("button", { onClick: () => setExpand(true) }, "+");
        }
        return reactExports.createElement(reactExports.Fragment, null,
            !allExpand && reactExports.createElement("button", { onClick: () => setExpand(!expand) }, "-"),
            reactExports.createElement(ItemTable, { items: rows }));
    }
    function ShowBuffTable({ buffs }) {
        const buffRows = [];
        Object.values(CollectBuffType).forEach((buffType) => {
            const typeBuff = buffs.filter(b => b.type === buffType);
            const value = getSumOfBuff(buffs, buffType);
            if (typeBuff.length === 0) {
                buffRows.push({
                    key: buffType,
                    cells: [
                        reactExports.createElement(reactExports.Fragment, { key: "noBuff" },
                            reactExports.createElement("th", null, getBuffTypeName(buffType)),
                            reactExports.createElement("td", null,
                                reactExports.createElement(ShowPercent, { value: value })),
                            reactExports.createElement("td", { colSpan: 4 }))
                    ],
                });
                return;
            }
            const buffTypeStartRows = buffRows.length;
            typeBuff.forEach((buff) => {
                const buffStartRows = buffRows.length;
                if (buff.source === BuffSource.Equipment) {
                    const equipmentBuff = buff;
                    equipmentBuff.equipments.forEach(equipment => {
                        buffRows.push({
                            key: equipment.itemHrid,
                            cells: [
                                reactExports.createElement(reactExports.Fragment, { key: "equipment" },
                                    reactExports.createElement("th", null,
                                        reactExports.createElement(ShowItem, { hrid: equipment.itemHrid, enhancementLevel: equipment.enhancementLevel })),
                                    reactExports.createElement("td", null,
                                        reactExports.createElement(ShowPercent, { value: equipment.value })))
                            ],
                        });
                    });
                }
                const span = buffRows.length - buffStartRows;
                if (span > 0) {
                    buffRows[buffStartRows].cells = [
                        reactExports.createElement(reactExports.Fragment, { key: "source" },
                            reactExports.createElement("th", { rowSpan: span }, getBuffSourceName(buff.source)),
                            reactExports.createElement("th", { rowSpan: span },
                                reactExports.createElement(ShowPercent, { value: buff.value }))),
                        ...buffRows[buffStartRows].cells,
                    ];
                }
                else {
                    buffRows.push({
                        key: buff.source,
                        cells: [
                            reactExports.createElement(reactExports.Fragment, { key: "source" },
                                reactExports.createElement("th", null, getBuffSourceName(buff.source)),
                                reactExports.createElement("td", null,
                                    reactExports.createElement(ShowPercent, { value: buff.value })),
                                reactExports.createElement("td", { colSpan: 2 }))
                        ],
                    });
                }
            });
            const span = buffRows.length - buffTypeStartRows;
            buffRows[buffTypeStartRows].cells = [
                reactExports.createElement(reactExports.Fragment, { key: buffType },
                    reactExports.createElement("th", { rowSpan: span }, getBuffTypeName(buffType)),
                    reactExports.createElement("td", { rowSpan: span },
                        reactExports.createElement(ShowPercent, { value: value }))),
                ...buffRows[buffTypeStartRows].cells,
            ];
        });
        return reactExports.createElement("table", null,
            reactExports.createElement("thead", null,
                reactExports.createElement("tr", null,
                    reactExports.createElement("th", { colSpan: 2 }, "Buff Type"),
                    reactExports.createElement("th", { colSpan: 2 }, "Source"),
                    reactExports.createElement("th", { colSpan: 2 }, "Sub"))),
            reactExports.createElement("tbody", null, buffRows.map((buffRow) => reactExports.createElement("tr", { key: buffRow.key }, ...buffRow.cells))));
    }

    function lootTrackerPlugin() {
        const subscription = LootLogSubject.subscribe(({ lootLog }) => {
            AddView({
                id: "loot-tracker",
                name: "Loot Tracker",
                node: reactExports.createElement(ShowLootTracker, null)
            });
            subscription.unsubscribe();
        });
    }
    function ShowLootTracker() {
        var _a;
        const mode = useSettings("loot-tracker.mode", "hour");
        const event = useLatestValue(LootLogSubject);
        const lootLogs = [...((_a = event === null || event === void 0 ? void 0 : event.lootLog) !== null && _a !== void 0 ? _a : [])].reverse();
        return reactExports.createElement(reactExports.Fragment, null,
            reactExports.createElement("div", null,
                "Current: ",
                mode === "hour" ? "Hourly Data" : "Total",
                reactExports.createElement("button", { onClick: () => saveSettings("loot-tracker.mode", "hour") }, "Hourly"),
                reactExports.createElement("button", { onClick: () => saveSettings("loot-tracker.mode", "all") }, "Total")),
            reactExports.createElement("table", null,
                reactExports.createElement("thead", null,
                    reactExports.createElement("tr", null,
                        reactExports.createElement("th", null, "Summary"),
                        reactExports.createElement("th", null, "Inputs"),
                        reactExports.createElement("th", null, "Spending"),
                        reactExports.createElement("th", null, "Drops"),
                        reactExports.createElement("th", null, "Income"))),
                reactExports.createElement("tbody", null, lootLogs.map((log) => reactExports.createElement(ShowLootLog, { key: log.startTime, log: log, mode: mode })))));
    }
    function ShowLootLog({ log, mode }) {
        const duration = (Date.parse(log.endTime) - Date.parse(log.startTime)) / 1000 / 60 / 60;
        const factor = mode === "hour" ? duration : 1;
        const { total: income, items: drops } = prepareSellItems(Object.entries(log.drops)
            .map(([hridHash, count]) => (Object.assign(Object.assign({}, resolveItemHrid(hridHash)), { count: count / factor }))));
        const { total: spending, items: inputs } = prepareBuyItems(getActionInputs(log.actionHrid, log.primaryItemHash, log.secondaryItemHash)
            .map((item) => (Object.assign(Object.assign({}, item), { count: item.count * log.actionCount / factor }))));
        const date = new Date(Date.parse(log.startTime));
        return reactExports.createElement("tr", null,
            reactExports.createElement("td", null,
                reactExports.createElement("div", null,
                    reactExports.createElement("b", null, getActionName(log.actionHrid))),
                reactExports.createElement("div", null,
                    date.getFullYear(),
                    "-",
                    date.getMonth() + 1,
                    "-",
                    date.getDate(),
                    " ",
                    date.getHours(),
                    ":",
                    date.getMinutes()),
                reactExports.createElement("div", null,
                    reactExports.createElement(ShowNumber, { value: duration }),
                    "h")),
            reactExports.createElement("td", null,
                reactExports.createElement(ItemTable, { items: inputs })),
            reactExports.createElement("td", null,
                reactExports.createElement(ShowNumber, { value: spending })),
            reactExports.createElement("td", null,
                reactExports.createElement(ItemTable, { items: drops })),
            reactExports.createElement("td", null,
                reactExports.createElement(ShowNumber, { value: income })));
    }

    setupEngineHook();
    window.addEventListener("load", () => {
        setupApp();
    });
    setupMarketData().catch((e) => {
        console.error({ "log-event": "init-failed" }, e);
    }).finally(() => {
    });
    foragingPlugin();
    lootTrackerPlugin();
    actionStatPlugin();

})();