Index: node_modules/react-redux/src/utils/Subscription.ts
===================================================================
--- node_modules/react-redux/src/utils/Subscription.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/Subscription.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,183 @@
+import { defaultNoopBatch as batch } from './batch'
+
+// encapsulates the subscription logic for connecting a component to the redux store, as
+// well as nesting subscriptions of descendant components, so that we can ensure the
+// ancestor components re-render before descendants
+
+type VoidFunc = () => void
+
+type Listener = {
+  callback: VoidFunc
+  next: Listener | null
+  prev: Listener | null
+}
+
+function createListenerCollection() {
+  let first: Listener | null = null
+  let last: Listener | null = null
+
+  return {
+    clear() {
+      first = null
+      last = null
+    },
+
+    notify() {
+      batch(() => {
+        let listener = first
+        while (listener) {
+          listener.callback()
+          listener = listener.next
+        }
+      })
+    },
+
+    get() {
+      const listeners: Listener[] = []
+      let listener = first
+      while (listener) {
+        listeners.push(listener)
+        listener = listener.next
+      }
+      return listeners
+    },
+
+    subscribe(callback: () => void) {
+      let isSubscribed = true
+
+      const listener: Listener = (last = {
+        callback,
+        next: null,
+        prev: last,
+      })
+
+      if (listener.prev) {
+        listener.prev.next = listener
+      } else {
+        first = listener
+      }
+
+      return function unsubscribe() {
+        if (!isSubscribed || first === null) return
+        isSubscribed = false
+
+        if (listener.next) {
+          listener.next.prev = listener.prev
+        } else {
+          last = listener.prev
+        }
+        if (listener.prev) {
+          listener.prev.next = listener.next
+        } else {
+          first = listener.next
+        }
+      }
+    },
+  }
+}
+
+type ListenerCollection = ReturnType<typeof createListenerCollection>
+
+export interface Subscription {
+  addNestedSub: (listener: VoidFunc) => VoidFunc
+  notifyNestedSubs: VoidFunc
+  handleChangeWrapper: VoidFunc
+  isSubscribed: () => boolean
+  onStateChange?: VoidFunc | null
+  trySubscribe: VoidFunc
+  tryUnsubscribe: VoidFunc
+  getListeners: () => ListenerCollection
+}
+
+const nullListeners = {
+  notify() {},
+  get: () => [],
+} as unknown as ListenerCollection
+
+export function createSubscription(store: any, parentSub?: Subscription) {
+  let unsubscribe: VoidFunc | undefined
+  let listeners: ListenerCollection = nullListeners
+
+  // Reasons to keep the subscription active
+  let subscriptionsAmount = 0
+
+  // Is this specific subscription subscribed (or only nested ones?)
+  let selfSubscribed = false
+
+  function addNestedSub(listener: () => void) {
+    trySubscribe()
+
+    const cleanupListener = listeners.subscribe(listener)
+
+    // cleanup nested sub
+    let removed = false
+    return () => {
+      if (!removed) {
+        removed = true
+        cleanupListener()
+        tryUnsubscribe()
+      }
+    }
+  }
+
+  function notifyNestedSubs() {
+    listeners.notify()
+  }
+
+  function handleChangeWrapper() {
+    if (subscription.onStateChange) {
+      subscription.onStateChange()
+    }
+  }
+
+  function isSubscribed() {
+    return selfSubscribed
+  }
+
+  function trySubscribe() {
+    subscriptionsAmount++
+    if (!unsubscribe) {
+      unsubscribe = parentSub
+        ? parentSub.addNestedSub(handleChangeWrapper)
+        : store.subscribe(handleChangeWrapper)
+
+      listeners = createListenerCollection()
+    }
+  }
+
+  function tryUnsubscribe() {
+    subscriptionsAmount--
+    if (unsubscribe && subscriptionsAmount === 0) {
+      unsubscribe()
+      unsubscribe = undefined
+      listeners.clear()
+      listeners = nullListeners
+    }
+  }
+
+  function trySubscribeSelf() {
+    if (!selfSubscribed) {
+      selfSubscribed = true
+      trySubscribe()
+    }
+  }
+
+  function tryUnsubscribeSelf() {
+    if (selfSubscribed) {
+      selfSubscribed = false
+      tryUnsubscribe()
+    }
+  }
+
+  const subscription: Subscription = {
+    addNestedSub,
+    notifyNestedSubs,
+    handleChangeWrapper,
+    isSubscribed,
+    trySubscribe: trySubscribeSelf,
+    tryUnsubscribe: tryUnsubscribeSelf,
+    getListeners: () => listeners,
+  }
+
+  return subscription
+}
Index: node_modules/react-redux/src/utils/batch.ts
===================================================================
--- node_modules/react-redux/src/utils/batch.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/batch.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,4 @@
+// Default to a dummy "batch" implementation that just runs the callback
+export function defaultNoopBatch(callback: () => void) {
+  callback()
+}
Index: node_modules/react-redux/src/utils/bindActionCreators.ts
===================================================================
--- node_modules/react-redux/src/utils/bindActionCreators.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/bindActionCreators.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,16 @@
+import type { ActionCreatorsMapObject, Dispatch } from 'redux'
+
+export default function bindActionCreators(
+  actionCreators: ActionCreatorsMapObject,
+  dispatch: Dispatch,
+): ActionCreatorsMapObject {
+  const boundActionCreators: ActionCreatorsMapObject = {}
+
+  for (const key in actionCreators) {
+    const actionCreator = actionCreators[key]
+    if (typeof actionCreator === 'function') {
+      boundActionCreators[key] = (...args) => dispatch(actionCreator(...args))
+    }
+  }
+  return boundActionCreators
+}
Index: node_modules/react-redux/src/utils/hoistStatics.ts
===================================================================
--- node_modules/react-redux/src/utils/hoistStatics.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/hoistStatics.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,139 @@
+// Copied directly from:
+// https://github.com/mridgway/hoist-non-react-statics/blob/main/src/index.js
+// https://unpkg.com/browse/@types/hoist-non-react-statics@3.3.6/index.d.ts
+
+/**
+ * Copyright 2015, Yahoo! Inc.
+ * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
+ */
+import type { ForwardRefExoticComponent, MemoExoticComponent } from 'react'
+import { ForwardRef, Memo, isMemo } from '../utils/react-is'
+
+const REACT_STATICS = {
+  childContextTypes: true,
+  contextType: true,
+  contextTypes: true,
+  defaultProps: true,
+  displayName: true,
+  getDefaultProps: true,
+  getDerivedStateFromError: true,
+  getDerivedStateFromProps: true,
+  mixins: true,
+  propTypes: true,
+  type: true,
+} as const
+
+const KNOWN_STATICS = {
+  name: true,
+  length: true,
+  prototype: true,
+  caller: true,
+  callee: true,
+  arguments: true,
+  arity: true,
+} as const
+
+const FORWARD_REF_STATICS = {
+  $$typeof: true,
+  render: true,
+  defaultProps: true,
+  displayName: true,
+  propTypes: true,
+} as const
+
+const MEMO_STATICS = {
+  $$typeof: true,
+  compare: true,
+  defaultProps: true,
+  displayName: true,
+  propTypes: true,
+  type: true,
+} as const
+
+const TYPE_STATICS = {
+  [ForwardRef]: FORWARD_REF_STATICS,
+  [Memo]: MEMO_STATICS,
+} as const
+
+function getStatics(component: any) {
+  // React v16.11 and below
+  if (isMemo(component)) {
+    return MEMO_STATICS
+  }
+
+  // React v16.12 and above
+  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS
+}
+
+export type NonReactStatics<
+  Source,
+  C extends {
+    [key: string]: true
+  } = {},
+> = {
+  [key in Exclude<
+    keyof Source,
+    Source extends MemoExoticComponent<any>
+      ? keyof typeof MEMO_STATICS | keyof C
+      : Source extends ForwardRefExoticComponent<any>
+        ? keyof typeof FORWARD_REF_STATICS | keyof C
+        : keyof typeof REACT_STATICS | keyof typeof KNOWN_STATICS | keyof C
+  >]: Source[key]
+}
+
+const defineProperty = Object.defineProperty
+const getOwnPropertyNames = Object.getOwnPropertyNames
+const getOwnPropertySymbols = Object.getOwnPropertySymbols
+const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
+const getPrototypeOf = Object.getPrototypeOf
+const objectPrototype = Object.prototype
+
+export default function hoistNonReactStatics<
+  Target,
+  Source,
+  CustomStatic extends {
+    [key: string]: true
+  } = {},
+>(
+  targetComponent: Target,
+  sourceComponent: Source,
+): Target & NonReactStatics<Source, CustomStatic> {
+  if (typeof sourceComponent !== 'string') {
+    // don't hoist over string (html) components
+
+    if (objectPrototype) {
+      const inheritedComponent = getPrototypeOf(sourceComponent)
+      if (inheritedComponent && inheritedComponent !== objectPrototype) {
+        hoistNonReactStatics(targetComponent, inheritedComponent)
+      }
+    }
+
+    let keys: (string | symbol)[] = getOwnPropertyNames(sourceComponent)
+
+    if (getOwnPropertySymbols) {
+      keys = keys.concat(getOwnPropertySymbols(sourceComponent))
+    }
+
+    const targetStatics = getStatics(targetComponent)
+    const sourceStatics = getStatics(sourceComponent)
+
+    for (let i = 0; i < keys.length; ++i) {
+      const key = keys[i]
+      if (
+        !KNOWN_STATICS[key as keyof typeof KNOWN_STATICS] &&
+        !(sourceStatics && sourceStatics[key as keyof typeof sourceStatics]) &&
+        !(targetStatics && targetStatics[key as keyof typeof targetStatics])
+      ) {
+        const descriptor = getOwnPropertyDescriptor(sourceComponent, key)
+        try {
+          // Avoid failures from read-only properties
+          defineProperty(targetComponent, key, descriptor!)
+        } catch (e) {
+          // ignore
+        }
+      }
+    }
+  }
+
+  return targetComponent as any
+}
Index: node_modules/react-redux/src/utils/isPlainObject.ts
===================================================================
--- node_modules/react-redux/src/utils/isPlainObject.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/isPlainObject.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,17 @@
+/**
+ * @param {any} obj The object to inspect.
+ * @returns {boolean} True if the argument appears to be a plain object.
+ */
+export default function isPlainObject(obj: unknown) {
+  if (typeof obj !== 'object' || obj === null) return false
+
+  const proto = Object.getPrototypeOf(obj)
+  if (proto === null) return true
+
+  let baseProto = proto
+  while (Object.getPrototypeOf(baseProto) !== null) {
+    baseProto = Object.getPrototypeOf(baseProto)
+  }
+
+  return proto === baseProto
+}
Index: node_modules/react-redux/src/utils/react-is.ts
===================================================================
--- node_modules/react-redux/src/utils/react-is.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/react-is.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,97 @@
+import type { ElementType, MemoExoticComponent, ReactElement } from 'react'
+import { React } from './react'
+
+// Directly ported from:
+// https://unpkg.com/browse/react-is@19.0.0/cjs/react-is.production.js
+// It's very possible this could change in the future, but given that
+// we only use these in `connect`, this is a low priority.
+
+export const IS_REACT_19 = /* @__PURE__ */ React.version.startsWith('19')
+
+const REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(
+  IS_REACT_19 ? 'react.transitional.element' : 'react.element',
+)
+const REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for('react.portal')
+const REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for('react.fragment')
+const REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for('react.strict_mode')
+const REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for('react.profiler')
+const REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for('react.consumer')
+const REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for('react.context')
+const REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for('react.forward_ref')
+const REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for('react.suspense')
+const REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for(
+  'react.suspense_list',
+)
+const REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for('react.memo')
+const REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for('react.lazy')
+const REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for('react.offscreen')
+const REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for(
+  'react.client.reference',
+)
+
+export const ForwardRef = REACT_FORWARD_REF_TYPE
+export const Memo = REACT_MEMO_TYPE
+
+export function isValidElementType(type: any): type is ElementType {
+  return typeof type === 'string' ||
+    typeof type === 'function' ||
+    type === REACT_FRAGMENT_TYPE ||
+    type === REACT_PROFILER_TYPE ||
+    type === REACT_STRICT_MODE_TYPE ||
+    type === REACT_SUSPENSE_TYPE ||
+    type === REACT_SUSPENSE_LIST_TYPE ||
+    type === REACT_OFFSCREEN_TYPE ||
+    (typeof type === 'object' &&
+      type !== null &&
+      (type.$$typeof === REACT_LAZY_TYPE ||
+        type.$$typeof === REACT_MEMO_TYPE ||
+        type.$$typeof === REACT_CONTEXT_TYPE ||
+        type.$$typeof === REACT_CONSUMER_TYPE ||
+        type.$$typeof === REACT_FORWARD_REF_TYPE ||
+        type.$$typeof === REACT_CLIENT_REFERENCE ||
+        type.getModuleId !== undefined))
+    ? !0
+    : !1
+}
+
+function typeOf(object: any): symbol | undefined {
+  if (typeof object === 'object' && object !== null) {
+    const { $$typeof } = object
+
+    switch ($$typeof) {
+      case REACT_ELEMENT_TYPE:
+        switch (((object = object.type), object)) {
+          case REACT_FRAGMENT_TYPE:
+          case REACT_PROFILER_TYPE:
+          case REACT_STRICT_MODE_TYPE:
+          case REACT_SUSPENSE_TYPE:
+          case REACT_SUSPENSE_LIST_TYPE:
+            return object
+          default:
+            switch (((object = object && object.$$typeof), object)) {
+              case REACT_CONTEXT_TYPE:
+              case REACT_FORWARD_REF_TYPE:
+              case REACT_LAZY_TYPE:
+              case REACT_MEMO_TYPE:
+                return object
+              case REACT_CONSUMER_TYPE:
+                return object
+              default:
+                return $$typeof
+            }
+        }
+      case REACT_PORTAL_TYPE:
+        return $$typeof
+    }
+  }
+}
+
+export function isContextConsumer(object: any): object is ReactElement {
+  return IS_REACT_19
+    ? typeOf(object) === REACT_CONSUMER_TYPE
+    : typeOf(object) === REACT_CONTEXT_TYPE
+}
+
+export function isMemo(object: any): object is MemoExoticComponent<any> {
+  return typeOf(object) === REACT_MEMO_TYPE
+}
Index: node_modules/react-redux/src/utils/react.ts
===================================================================
--- node_modules/react-redux/src/utils/react.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/react.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,3 @@
+import * as React from 'react'
+
+export { React }
Index: node_modules/react-redux/src/utils/shallowEqual.ts
===================================================================
--- node_modules/react-redux/src/utils/shallowEqual.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/shallowEqual.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,36 @@
+function is(x: unknown, y: unknown) {
+  if (x === y) {
+    return x !== 0 || y !== 0 || 1 / x === 1 / y
+  } else {
+    return x !== x && y !== y
+  }
+}
+
+export default function shallowEqual(objA: any, objB: any) {
+  if (is(objA, objB)) return true
+
+  if (
+    typeof objA !== 'object' ||
+    objA === null ||
+    typeof objB !== 'object' ||
+    objB === null
+  ) {
+    return false
+  }
+
+  const keysA = Object.keys(objA)
+  const keysB = Object.keys(objB)
+
+  if (keysA.length !== keysB.length) return false
+
+  for (let i = 0; i < keysA.length; i++) {
+    if (
+      !Object.prototype.hasOwnProperty.call(objB, keysA[i]) ||
+      !is(objA[keysA[i]], objB[keysA[i]])
+    ) {
+      return false
+    }
+  }
+
+  return true
+}
Index: node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts
===================================================================
--- node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,40 @@
+import { React } from '../utils/react'
+
+// React currently throws a warning when using useLayoutEffect on the server.
+// To get around it, we can conditionally useEffect on the server (no-op) and
+// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store
+// subscription callback always has the selector from the latest render commit
+// available, otherwise a store update may happen between render and the effect,
+// which may cause missed updates; we also must ensure the store subscription
+// is created synchronously, otherwise a store update may occur before the
+// subscription is created and an inconsistent state may be observed
+
+// Matches logic in React's `shared/ExecutionEnvironment` file
+const canUseDOM = () =>
+  !!(
+    typeof window !== 'undefined' &&
+    typeof window.document !== 'undefined' &&
+    typeof window.document.createElement !== 'undefined'
+  )
+
+const isDOM = /* @__PURE__ */ canUseDOM()
+
+// Under React Native, we know that we always want to use useLayoutEffect
+
+/**
+ * Checks if the code is running in a React Native environment.
+ *
+ * @returns Whether the code is running in a React Native environment.
+ *
+ * @see {@link https://github.com/facebook/react-native/issues/1331 Reference}
+ */
+const isRunningInReactNative = () =>
+  typeof navigator !== 'undefined' && navigator.product === 'ReactNative'
+
+const isReactNative = /* @__PURE__ */ isRunningInReactNative()
+
+const getUseIsomorphicLayoutEffect = () =>
+  isDOM || isReactNative ? React.useLayoutEffect : React.useEffect
+
+export const useIsomorphicLayoutEffect =
+  /* @__PURE__ */ getUseIsomorphicLayoutEffect()
Index: node_modules/react-redux/src/utils/useSyncExternalStore.ts
===================================================================
--- node_modules/react-redux/src/utils/useSyncExternalStore.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/useSyncExternalStore.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,9 @@
+import type { useSyncExternalStore } from 'use-sync-external-store'
+import type { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector'
+
+export const notInitialized = () => {
+  throw new Error('uSES not initialized!')
+}
+
+export type uSES = typeof useSyncExternalStore
+export type uSESWS = typeof useSyncExternalStoreWithSelector
Index: node_modules/react-redux/src/utils/verifyPlainObject.ts
===================================================================
--- node_modules/react-redux/src/utils/verifyPlainObject.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/verifyPlainObject.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,14 @@
+import isPlainObject from './isPlainObject'
+import warning from './warning'
+
+export default function verifyPlainObject(
+  value: unknown,
+  displayName: string,
+  methodName: string,
+) {
+  if (!isPlainObject(value)) {
+    warning(
+      `${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`,
+    )
+  }
+}
Index: node_modules/react-redux/src/utils/warning.ts
===================================================================
--- node_modules/react-redux/src/utils/warning.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
+++ node_modules/react-redux/src/utils/warning.ts	(revision a762898ecd37a452c782821d4c2c4955c6ed2521)
@@ -0,0 +1,21 @@
+/**
+ * Prints a warning in the console if it exists.
+ *
+ * @param {String} message The warning message.
+ * @returns {void}
+ */
+export default function warning(message: string) {
+  /* eslint-disable no-console */
+  if (typeof console !== 'undefined' && typeof console.error === 'function') {
+    console.error(message)
+  }
+  /* eslint-enable no-console */
+  try {
+    // This error was thrown as a convenience so that if you enable
+    // "break on all exceptions" in your console,
+    // it would pause the execution at this line.
+    throw new Error(message)
+    /* eslint-disable no-empty */
+  } catch (e) {}
+  /* eslint-enable no-empty */
+}
