You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			45 lines
		
	
	
		
			81 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			45 lines
		
	
	
		
			81 KiB
		
	
	
	
		
			JavaScript
		
	
| "use strict";
 | |
| /*
 | |
|  * ATTENTION: An "eval-source-map" devtool has been used.
 | |
|  * This devtool is neither made for production nor for readable output files.
 | |
|  * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 | |
|  * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 | |
|  * or disable the default devtool with "devtool: false".
 | |
|  * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 | |
|  */
 | |
| exports.id = "vendor-chunks/zustand";
 | |
| exports.ids = ["vendor-chunks/zustand"];
 | |
| exports.modules = {
 | |
| 
 | |
| /***/ "(ssr)/./node_modules/zustand/esm/index.mjs":
 | |
| /*!********************************************!*\
 | |
|   !*** ./node_modules/zustand/esm/index.mjs ***!
 | |
|   \********************************************/
 | |
| /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   create: () => (/* binding */ create),\n/* harmony export */   createStore: () => (/* reexport safe */ zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore),\n/* harmony export */   \"default\": () => (/* binding */ react),\n/* harmony export */   useStore: () => (/* binding */ useStore)\n/* harmony export */ });\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand/vanilla */ \"(ssr)/./node_modules/zustand/esm/vanilla.mjs\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector.js */ \"(ssr)/./node_modules/use-sync-external-store/shim/with-selector.js\");\n\n\n\n\nconst { useSyncExternalStoreWithSelector } = use_sync_external_store_shim_with_selector_js__WEBPACK_IMPORTED_MODULE_2__;\nfunction useStore(api, selector = api.getState, equalityFn) {\n    const slice = useSyncExternalStoreWithSelector(api.subscribe, api.getState, api.getServerState || api.getState, selector, equalityFn);\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useDebugValue)(slice);\n    return slice;\n}\nconst createImpl = (createState)=>{\n    if ( true && typeof createState !== \"function\") {\n        console.warn(\"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\");\n    }\n    const api = typeof createState === \"function\" ? (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)(createState) : createState;\n    const useBoundStore = (selector, equalityFn)=>useStore(api, selector, equalityFn);\n    Object.assign(useBoundStore, api);\n    return useBoundStore;\n};\nconst create = (createState)=>createState ? createImpl(createState) : createImpl;\nvar react = (createState)=>{\n    if (true) {\n        console.warn(\"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\");\n    }\n    return create(createState);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBOEM7QUFDZDtBQUNNO0FBQ2tEO0FBRXhGLE1BQU0sRUFBRUcsZ0NBQWdDLEVBQUUsR0FBR0QsMEVBQTJCQTtBQUN4RSxTQUFTRSxTQUFTQyxHQUFHLEVBQUVDLFdBQVdELElBQUlFLFFBQVEsRUFBRUMsVUFBVTtJQUN4RCxNQUFNQyxRQUFRTixpQ0FDWkUsSUFBSUssU0FBUyxFQUNiTCxJQUFJRSxRQUFRLEVBQ1pGLElBQUlNLGNBQWMsSUFBSU4sSUFBSUUsUUFBUSxFQUNsQ0QsVUFDQUU7SUFFRlAsb0RBQWFBLENBQUNRO0lBQ2QsT0FBT0E7QUFDVDtBQUNBLE1BQU1HLGFBQWEsQ0FBQ0M7SUFDbEIsSUFBSSxLQUEwRCxJQUFJLE9BQU9BLGdCQUFnQixZQUFZO1FBQ25HRyxRQUFRQyxJQUFJLENBQ1Y7SUFFSjtJQUNBLE1BQU1aLE1BQU0sT0FBT1EsZ0JBQWdCLGFBQWFiLDREQUFXQSxDQUFDYSxlQUFlQTtJQUMzRSxNQUFNSyxnQkFBZ0IsQ0FBQ1osVUFBVUUsYUFBZUosU0FBU0MsS0FBS0MsVUFBVUU7SUFDeEVXLE9BQU9DLE1BQU0sQ0FBQ0YsZUFBZWI7SUFDN0IsT0FBT2E7QUFDVDtBQUNBLE1BQU1HLFNBQVMsQ0FBQ1IsY0FBZ0JBLGNBQWNELFdBQVdDLGVBQWVEO0FBQ3hFLElBQUlVLFFBQVEsQ0FBQ1Q7SUFDWCxJQUFJLElBQTBELEVBQUU7UUFDOURHLFFBQVFDLElBQUksQ0FDVjtJQUVKO0lBQ0EsT0FBT0ksT0FBT1I7QUFDaEI7QUFFOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS9pbmRleC5tanM/MmU0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYSc7XG5leHBvcnQgKiBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuaW1wb3J0IHsgdXNlRGVidWdWYWx1ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VTeW5jRXh0ZXJuYWxTdG9yZUV4cG9ydHMgZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbS93aXRoLXNlbGVjdG9yLmpzJztcblxuY29uc3QgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9ID0gdXNlU3luY0V4dGVybmFsU3RvcmVFeHBvcnRzO1xuZnVuY3Rpb24gdXNlU3RvcmUoYXBpLCBzZWxlY3RvciA9IGFwaS5nZXRTdGF0ZSwgZXF1YWxpdHlGbikge1xuICBjb25zdCBzbGljZSA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yKFxuICAgIGFwaS5zdWJzY3JpYmUsXG4gICAgYXBpLmdldFN0YXRlLFxuICAgIGFwaS5nZXRTZXJ2ZXJTdGF0ZSB8fCBhcGkuZ2V0U3RhdGUsXG4gICAgc2VsZWN0b3IsXG4gICAgZXF1YWxpdHlGblxuICApO1xuICB1c2VEZWJ1Z1ZhbHVlKHNsaWNlKTtcbiAgcmV0dXJuIHNsaWNlO1xufVxuY29uc3QgY3JlYXRlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiICYmIHR5cGVvZiBjcmVhdGVTdGF0ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbREVQUkVDQVRFRF0gUGFzc2luZyBhIHZhbmlsbGEgc3RvcmUgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSBgaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIGNvbnN0IGFwaSA9IHR5cGVvZiBjcmVhdGVTdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gY3JlYXRlU3RvcmUoY3JlYXRlU3RhdGUpIDogY3JlYXRlU3RhdGU7XG4gIGNvbnN0IHVzZUJvdW5kU3RvcmUgPSAoc2VsZWN0b3IsIGVxdWFsaXR5Rm4pID0+IHVzZVN0b3JlKGFwaSwgc2VsZWN0b3IsIGVxdWFsaXR5Rm4pO1xuICBPYmplY3QuYXNzaWduKHVzZUJvdW5kU3RvcmUsIGFwaSk7XG4gIHJldHVybiB1c2VCb3VuZFN0b3JlO1xufTtcbmNvbnN0IGNyZWF0ZSA9IChjcmVhdGVTdGF0ZSkgPT4gY3JlYXRlU3RhdGUgPyBjcmVhdGVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZUltcGw7XG52YXIgcmVhY3QgPSAoY3JlYXRlU3RhdGUpID0+IHtcbiAgaWYgKChpbXBvcnQubWV0YS5lbnYgJiYgaW1wb3J0Lm1ldGEuZW52Lk1PREUpICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW0RFUFJFQ0FURURdIERlZmF1bHQgZXhwb3J0IGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQgdXNlIGBpbXBvcnQgeyBjcmVhdGUgfSBmcm9tICd6dXN0YW5kJ2AuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGUoY3JlYXRlU3RhdGUpO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlLCByZWFjdCBhcyBkZWZhdWx0LCB1c2VTdG9yZSB9O1xuIl0sIm5hbWVzIjpbImNyZWF0ZVN0b3JlIiwidXNlRGVidWdWYWx1ZSIsInVzZVN5bmNFeHRlcm5hbFN0b3JlRXhwb3J0cyIsInVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yIiwidXNlU3RvcmUiLCJhcGkiLCJzZWxlY3RvciIsImdldFN0YXRlIiwiZXF1YWxpdHlGbiIsInNsaWNlIiwic3Vic2NyaWJlIiwiZ2V0U2VydmVyU3RhdGUiLCJjcmVhdGVJbXBsIiwiY3JlYXRlU3RhdGUiLCJlbnYiLCJNT0RFIiwiY29uc29sZSIsIndhcm4iLCJ1c2VCb3VuZFN0b3JlIiwiT2JqZWN0IiwiYXNzaWduIiwiY3JlYXRlIiwicmVhY3QiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/zustand/esm/index.mjs\n");
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ "(ssr)/./node_modules/zustand/esm/middleware.mjs":
 | |
| /*!*************************************************!*\
 | |
|   !*** ./node_modules/zustand/esm/middleware.mjs ***!
 | |
|   \*************************************************/
 | |
| /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   combine: () => (/* binding */ combine),\n/* harmony export */   createJSONStorage: () => (/* binding */ createJSONStorage),\n/* harmony export */   devtools: () => (/* binding */ devtools),\n/* harmony export */   persist: () => (/* binding */ persist),\n/* harmony export */   redux: () => (/* binding */ redux),\n/* harmony export */   subscribeWithSelector: () => (/* binding */ subscribeWithSelector)\n/* harmony export */ });\nconst reduxImpl = (reducer, initial)=>(set, _get, api)=>{\n        api.dispatch = (action)=>{\n            set((state)=>reducer(state, action), false, action);\n            return action;\n        };\n        api.dispatchFromDevtools = true;\n        return {\n            dispatch: (...a)=>api.dispatch(...a),\n            ...initial\n        };\n    };\nconst redux = reduxImpl;\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name)=>{\n    const api = trackedConnections.get(name);\n    if (!api) return {};\n    return Object.fromEntries(Object.entries(api.stores).map(([key, api2])=>[\n            key,\n            api2.getState()\n        ]));\n};\nconst extractConnectionInformation = (store, extensionConnector, options)=>{\n    if (store === void 0) {\n        return {\n            type: \"untracked\",\n            connection: extensionConnector.connect(options)\n        };\n    }\n    const existingConnection = trackedConnections.get(options.name);\n    if (existingConnection) {\n        return {\n            type: \"tracked\",\n            store,\n            ...existingConnection\n        };\n    }\n    const newConnection = {\n        connection: extensionConnector.connect(options),\n        stores: {}\n    };\n    trackedConnections.set(options.name, newConnection);\n    return {\n        type: \"tracked\",\n        store,\n        ...newConnection\n    };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {})=>(set, get, api)=>{\n        const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n        let extensionConnector;\n        try {\n            extensionConnector = (enabled != null ? enabled : (/* unsupported import.meta.env */ undefined && 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n        } catch (e) {}\n        if (!extensionConnector) {\n            if ( true && enabled) {\n                console.warn(\"[zustand devtools middleware] Please install/enable Redux devtools extension\");\n            }\n            return fn(set, get, api);\n        }\n        const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n        let isRecording = true;\n        api.setState = (state, replace, nameOrAction)=>{\n            const r = set(state, replace);\n            if (!isRecording) return r;\n            const action = nameOrAction === void 0 ? {\n                type: anonymousActionType || \"anonymous\"\n            } : typeof nameOrAction === \"string\" ? {\n                type: nameOrAction\n            } : nameOrAction;\n            if (store === void 0) {\n                connection == null ? void 0 : connection.send(action, get());\n                return r;\n            }\n            connection == null ? void 0 : connection.send({\n                ...action,\n                type: `${store}/${action.type}`\n            }, {\n                ...getTrackedConnectionState(options.name),\n                [store]: api.getState()\n            });\n            return r;\n        };\n        const setStateFromDevtools = (...a)=>{\n            const originalIsRecording = isRecording;\n            isRecording = false;\n            set(...a);\n            isRecording = originalIsRecording;\n        };\n        const initialState = fn(api.setState, get, api);\n        if (connectionInformation.type === \"untracked\") {\n            connection == null ? void 0 : connection.init(initialState);\n        } else {\n            connectionInformation.stores[connectionInformation.store] = api;\n            connection == null ? void 0 : connection.init(Object.fromEntries(Object.entries(connectionInformation.stores).map(([key, store2])=>[\n                    key,\n                    key === connectionInformation.store ? initialState : store2.getState()\n                ])));\n        }\n        if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n            let didWarnAboutReservedActionType = false;\n            const originalDispatch = api.dispatch;\n            api.dispatch = (...a)=>{\n                if ( true && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n                    console.warn('[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.');\n                    didWarnAboutReservedActionType = true;\n                }\n                originalDispatch(...a);\n            };\n        }\n        connection.subscribe((message)=>{\n            var _a;\n            switch(message.type){\n                case \"ACTION\":\n                    if (typeof message.payload !== \"string\") {\n                        console.error(\"[zustand devtools middleware] Unsupported action format\");\n                        return;\n                    }\n                    return parseJsonThen(message.payload, (action)=>{\n                        if (action.type === \"__setState\") {\n                            if (store === void 0) {\n                                setStateFromDevtools(action.state);\n                                return;\n                            }\n                            if (Object.keys(action.state).length !== 1) {\n                                console.error(`\n                    [zustand devtools middleware] Unsupported __setState action format. \n                    When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n                    and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n                    `);\n                            }\n                            const stateFromDevtools = action.state[store];\n                            if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n                                return;\n                            }\n                            if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n                                setStateFromDevtools(stateFromDevtools);\n                            }\n                            return;\n                        }\n                        if (!api.dispatchFromDevtools) return;\n                        if (typeof api.dispatch !== \"function\") return;\n                        api.dispatch(action);\n                    });\n                case \"DISPATCH\":\n                    switch(message.payload.type){\n                        case \"RESET\":\n                            setStateFromDevtools(initialState);\n                            if (store === void 0) {\n                                return connection == null ? void 0 : connection.init(api.getState());\n                            }\n                            return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n                        case \"COMMIT\":\n                            if (store === void 0) {\n                                connection == null ? void 0 : connection.init(api.getState());\n                                return;\n                            }\n                            return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n                        case \"ROLLBACK\":\n                            return parseJsonThen(message.state, (state)=>{\n                                if (store === void 0) {\n                                    setStateFromDevtools(state);\n                                    connection == null ? void 0 : connection.init(api.getState());\n                                    return;\n                                }\n                                setStateFromDevtools(state[store]);\n                                connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n                            });\n                        case \"JUMP_TO_STATE\":\n                        case \"JUMP_TO_ACTION\":\n                            return parseJsonThen(message.state, (state)=>{\n                                if (store === void 0) {\n                                    setStateFromDevtools(state);\n                                    return;\n                                }\n                                if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n                                    setStateFromDevtools(state[store]);\n                                }\n                            });\n                        case \"IMPORT_STATE\":\n                            {\n                                const { nextLiftedState } = message.payload;\n                                const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n                                if (!lastComputedState) return;\n                                if (store === void 0) {\n                                    setStateFromDevtools(lastComputedState);\n                                } else {\n                                    setStateFromDevtools(lastComputedState[store]);\n                                }\n                                connection == null ? void 0 : connection.send(null, // FIXME no-any\n                                nextLiftedState);\n                                return;\n                            }\n                        case \"PAUSE_RECORDING\":\n                            return isRecording = !isRecording;\n                    }\n                    return;\n            }\n        });\n        return initialState;\n    };\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f)=>{\n    let parsed;\n    try {\n        parsed = JSON.parse(stringified);\n    } catch (e) {\n        console.error(\"[zustand devtools middleware] Could not parse the received json\", e);\n    }\n    if (parsed !== void 0) f(parsed);\n};\nconst subscribeWithSelectorImpl = (fn)=>(set, get, api)=>{\n        const origSubscribe = api.subscribe;\n        api.subscribe = (selector, optListener, options)=>{\n            let listener = selector;\n            if (optListener) {\n                const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n                let currentSlice = selector(api.getState());\n                listener = (state)=>{\n                    const nextSlice = selector(state);\n                    if (!equalityFn(currentSlice, nextSlice)) {\n                        const previousSlice = currentSlice;\n                        optListener(currentSlice = nextSlice, previousSlice);\n                    }\n                };\n                if (options == null ? void 0 : options.fireImmediately) {\n                    optListener(currentSlice, currentSlice);\n                }\n            }\n            return origSubscribe(listener);\n        };\n        const initialState = fn(set, get, api);\n        return initialState;\n    };\nconst subscribeWithSelector = subscribeWithSelectorImpl;\nconst combine = (initialState, create)=>(...a)=>Object.assign({}, initialState, create(...a));\nfunction createJSONStorage(getStorage, options) {\n    let storage;\n    try {\n        storage = getStorage();\n    } catch (e) {\n        return;\n    }\n    const persistStorage = {\n        getItem: (name)=>{\n            var _a;\n            const parse = (str2)=>{\n                if (str2 === null) {\n                    return null;\n                }\n                return JSON.parse(str2, options == null ? void 0 : options.reviver);\n            };\n            const str = (_a = storage.getItem(name)) != null ? _a : null;\n            if (str instanceof Promise) {\n                return str.then(parse);\n            }\n            return parse(str);\n        },\n        setItem: (name, newValue)=>storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n        removeItem: (name)=>storage.removeItem(name)\n    };\n    return persistStorage;\n}\nconst toThenable = (fn)=>(input)=>{\n        try {\n            const result = fn(input);\n            if (result instanceof Promise) {\n                return result;\n            }\n            return {\n                then (onFulfilled) {\n                    return toThenable(onFulfilled)(result);\n                },\n                catch (_onRejected) {\n                    return this;\n                }\n            };\n        } catch (e) {\n            return {\n                then (_onFulfilled) {\n                    return this;\n                },\n                catch (onRejected) {\n                    return toThenable(onRejected)(e);\n                }\n            };\n        }\n    };\nconst oldImpl = (config, baseOptions)=>(set, get, api)=>{\n        let options = {\n            getStorage: ()=>localStorage,\n            serialize: JSON.stringify,\n            deserialize: JSON.parse,\n            partialize: (state)=>state,\n            version: 0,\n            merge: (persistedState, currentState)=>({\n                    ...currentState,\n                    ...persistedState\n                }),\n            ...baseOptions\n        };\n        let hasHydrated = false;\n        const hydrationListeners = /* @__PURE__ */ new Set();\n        const finishHydrationListeners = /* @__PURE__ */ new Set();\n        let storage;\n        try {\n            storage = options.getStorage();\n        } catch (e) {}\n        if (!storage) {\n            return config((...args)=>{\n                console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n                set(...args);\n            }, get, api);\n        }\n        const thenableSerialize = toThenable(options.serialize);\n        const setItem = ()=>{\n            const state = options.partialize({\n                ...get()\n            });\n            let errorInSync;\n            const thenable = thenableSerialize({\n                state,\n                version: options.version\n            }).then((serializedValue)=>storage.setItem(options.name, serializedValue)).catch((e)=>{\n                errorInSync = e;\n            });\n            if (errorInSync) {\n                throw errorInSync;\n            }\n            return thenable;\n        };\n        const savedSetState = api.setState;\n        api.setState = (state, replace)=>{\n            savedSetState(state, replace);\n            void setItem();\n        };\n        const configResult = config((...args)=>{\n            set(...args);\n            void setItem();\n        }, get, api);\n        let stateFromStorage;\n        const hydrate = ()=>{\n            var _a;\n            if (!storage) return;\n            hasHydrated = false;\n            hydrationListeners.forEach((cb)=>cb(get()));\n            const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n            return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue)=>{\n                if (storageValue) {\n                    return options.deserialize(storageValue);\n                }\n            }).then((deserializedStorageValue)=>{\n                if (deserializedStorageValue) {\n                    if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n                        if (options.migrate) {\n                            return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n                        }\n                        console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n                    } else {\n                        return deserializedStorageValue.state;\n                    }\n                }\n            }).then((migratedState)=>{\n                var _a2;\n                stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult);\n                set(stateFromStorage, true);\n                return setItem();\n            }).then(()=>{\n                postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n                hasHydrated = true;\n                finishHydrationListeners.forEach((cb)=>cb(stateFromStorage));\n            }).catch((e)=>{\n                postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n            });\n        };\n        api.persist = {\n            setOptions: (newOptions)=>{\n                options = {\n                    ...options,\n                    ...newOptions\n                };\n                if (newOptions.getStorage) {\n                    storage = newOptions.getStorage();\n                }\n            },\n            clearStorage: ()=>{\n                storage == null ? void 0 : storage.removeItem(options.name);\n            },\n            getOptions: ()=>options,\n            rehydrate: ()=>hydrate(),\n            hasHydrated: ()=>hasHydrated,\n            onHydrate: (cb)=>{\n                hydrationListeners.add(cb);\n                return ()=>{\n                    hydrationListeners.delete(cb);\n                };\n            },\n            onFinishHydration: (cb)=>{\n                finishHydrationListeners.add(cb);\n                return ()=>{\n                    finishHydrationListeners.delete(cb);\n                };\n            }\n        };\n        hydrate();\n        return stateFromStorage || configResult;\n    };\nconst newImpl = (config, baseOptions)=>(set, get, api)=>{\n        let options = {\n            storage: createJSONStorage(()=>localStorage),\n            partialize: (state)=>state,\n            version: 0,\n            merge: (persistedState, currentState)=>({\n                    ...currentState,\n                    ...persistedState\n                }),\n            ...baseOptions\n        };\n        let hasHydrated = false;\n        const hydrationListeners = /* @__PURE__ */ new Set();\n        const finishHydrationListeners = /* @__PURE__ */ new Set();\n        let storage = options.storage;\n        if (!storage) {\n            return config((...args)=>{\n                console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`);\n                set(...args);\n            }, get, api);\n        }\n        const setItem = ()=>{\n            const state = options.partialize({\n                ...get()\n            });\n            return storage.setItem(options.name, {\n                state,\n                version: options.version\n            });\n        };\n        const savedSetState = api.setState;\n        api.setState = (state, replace)=>{\n            savedSetState(state, replace);\n            void setItem();\n        };\n        const configResult = config((...args)=>{\n            set(...args);\n            void setItem();\n        }, get, api);\n        let stateFromStorage;\n        const hydrate = ()=>{\n            var _a, _b;\n            if (!storage) return;\n            hasHydrated = false;\n            hydrationListeners.forEach((cb)=>{\n                var _a2;\n                return cb((_a2 = get()) != null ? _a2 : configResult);\n            });\n            const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n            return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue)=>{\n                if (deserializedStorageValue) {\n                    if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n                        if (options.migrate) {\n                            return options.migrate(deserializedStorageValue.state, deserializedStorageValue.version);\n                        }\n                        console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`);\n                    } else {\n                        return deserializedStorageValue.state;\n                    }\n                }\n            }).then((migratedState)=>{\n                var _a2;\n                stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult);\n                set(stateFromStorage, true);\n                return setItem();\n            }).then(()=>{\n                postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n                stateFromStorage = get();\n                hasHydrated = true;\n                finishHydrationListeners.forEach((cb)=>cb(stateFromStorage));\n            }).catch((e)=>{\n                postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n            });\n        };\n        api.persist = {\n            setOptions: (newOptions)=>{\n                options = {\n                    ...options,\n                    ...newOptions\n                };\n                if (newOptions.storage) {\n                    storage = newOptions.storage;\n                }\n            },\n            clearStorage: ()=>{\n                storage == null ? void 0 : storage.removeItem(options.name);\n            },\n            getOptions: ()=>options,\n            rehydrate: ()=>hydrate(),\n            hasHydrated: ()=>hasHydrated,\n            onHydrate: (cb)=>{\n                hydrationListeners.add(cb);\n                return ()=>{\n                    hydrationListeners.delete(cb);\n                };\n            },\n            onFinishHydration: (cb)=>{\n                finishHydrationListeners.add(cb);\n                return ()=>{\n                    finishHydrationListeners.delete(cb);\n                };\n            }\n        };\n        if (!options.skipHydration) {\n            hydrate();\n        }\n        return stateFromStorage || configResult;\n    };\nconst persistImpl = (config, baseOptions)=>{\n    if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n        if (true) {\n            console.warn(\"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\");\n        }\n        return oldImpl(config, baseOptions);\n    }\n    return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vbWlkZGxld2FyZS5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsWUFBWSxDQUFDQyxTQUFTQyxVQUFZLENBQUNDLEtBQUtDLE1BQU1DO1FBQ2xEQSxJQUFJQyxRQUFRLEdBQUcsQ0FBQ0M7WUFDZEosSUFBSSxDQUFDSyxRQUFVUCxRQUFRTyxPQUFPRCxTQUFTLE9BQU9BO1lBQzlDLE9BQU9BO1FBQ1Q7UUFDQUYsSUFBSUksb0JBQW9CLEdBQUc7UUFDM0IsT0FBTztZQUFFSCxVQUFVLENBQUMsR0FBR0ksSUFBTUwsSUFBSUMsUUFBUSxJQUFJSTtZQUFJLEdBQUdSLE9BQU87UUFBQztJQUM5RDtBQUNBLE1BQU1TLFFBQVFYO0FBRWQsTUFBTVkscUJBQXFCLGFBQWEsR0FBRyxJQUFJQztBQUMvQyxNQUFNQyw0QkFBNEIsQ0FBQ0M7SUFDakMsTUFBTVYsTUFBTU8sbUJBQW1CSSxHQUFHLENBQUNEO0lBQ25DLElBQUksQ0FBQ1YsS0FDSCxPQUFPLENBQUM7SUFDVixPQUFPWSxPQUFPQyxXQUFXLENBQ3ZCRCxPQUFPRSxPQUFPLENBQUNkLElBQUllLE1BQU0sRUFBRUMsR0FBRyxDQUFDLENBQUMsQ0FBQ0MsS0FBS0MsS0FBSyxHQUFLO1lBQUNEO1lBQUtDLEtBQUtDLFFBQVE7U0FBRztBQUUxRTtBQUNBLE1BQU1DLCtCQUErQixDQUFDQyxPQUFPQyxvQkFBb0JDO0lBQy9ELElBQUlGLFVBQVUsS0FBSyxHQUFHO1FBQ3BCLE9BQU87WUFDTEcsTUFBTTtZQUNOQyxZQUFZSCxtQkFBbUJJLE9BQU8sQ0FBQ0g7UUFDekM7SUFDRjtJQUNBLE1BQU1JLHFCQUFxQnBCLG1CQUFtQkksR0FBRyxDQUFDWSxRQUFRYixJQUFJO0lBQzlELElBQUlpQixvQkFBb0I7UUFDdEIsT0FBTztZQUFFSCxNQUFNO1lBQVdIO1lBQU8sR0FBR00sa0JBQWtCO1FBQUM7SUFDekQ7SUFDQSxNQUFNQyxnQkFBZ0I7UUFDcEJI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R0FBRztZQUNaQyxZQUFZLENBQUNDO2dCQUNYOUgsVUFBVTtvQkFDUixHQUFHQSxPQUFPO29CQUNWLEdBQUc4SCxVQUFVO2dCQUNmO2dCQUNBLElBQUlBLFdBQVd6RCxPQUFPLEVBQUU7b0JBQ3RCQSxVQUFVeUQsV0FBV3pELE9BQU87Z0JBQzlCO1lBQ0Y7WUFDQTBELGNBQWM7Z0JBQ1oxRCxXQUFXLE9BQU8sS0FBSyxJQUFJQSxRQUFRVyxVQUFVLENBQUNoRixRQUFRYixJQUFJO1lBQzVEO1lBQ0E2SSxZQUFZLElBQU1oSTtZQUNsQmlJLFdBQVcsSUFBTWpCO1lBQ2pCWixhQUFhLElBQU1BO1lBQ25COEIsV0FBVyxDQUFDaEI7Z0JBQ1ZiLG1CQUFtQjhCLEdBQUcsQ0FBQ2pCO2dCQUN2QixPQUFPO29CQUNMYixtQkFBbUIrQixNQUFNLENBQUNsQjtnQkFDNUI7WUFDRjtZQUNBbUIsbUJBQW1CLENBQUNuQjtnQkFDbEJYLHlCQUF5QjRCLEdBQUcsQ0FBQ2pCO2dCQUM3QixPQUFPO29CQUNMWCx5QkFBeUI2QixNQUFNLENBQUNsQjtnQkFDbEM7WUFDRjtRQUNGO1FBQ0EsSUFBSSxDQUFDbEgsUUFBUXdJLGFBQWEsRUFBRTtZQUMxQnhCO1FBQ0Y7UUFDQSxPQUFPRCxvQkFBb0JEO0lBQzdCO0FBQ0EsTUFBTTJCLGNBQWMsQ0FBQy9DLFFBQVFDO0lBQzNCLElBQUksZ0JBQWdCQSxlQUFlLGVBQWVBLGVBQWUsaUJBQWlCQSxhQUFhO1FBQzdGLElBQUksSUFBMEQsRUFBRTtZQUM5RDNFLFFBQVFDLElBQUksQ0FDVjtRQUVKO1FBQ0EsT0FBT3dFLFFBQVFDLFFBQVFDO0lBQ3pCO0lBQ0EsT0FBTzJDLFFBQVE1QyxRQUFRQztBQUN6QjtBQUNBLE1BQU1pQyxVQUFVYTtBQUV1RSIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL21pZGRsZXdhcmUubWpzPzNjZmEiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcmVkdXhJbXBsID0gKHJlZHVjZXIsIGluaXRpYWwpID0+IChzZXQsIF9nZXQsIGFwaSkgPT4ge1xuICBhcGkuZGlzcGF0Y2ggPSAoYWN0aW9uKSA9PiB7XG4gICAgc2V0KChzdGF0ZSkgPT4gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKSwgZmFsc2UsIGFjdGlvbik7XG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfTtcbiAgYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzID0gdHJ1ZTtcbiAgcmV0dXJuIHsgZGlzcGF0Y2g6ICguLi5hKSA9PiBhcGkuZGlzcGF0Y2goLi4uYSksIC4uLmluaXRpYWwgfTtcbn07XG5jb25zdCByZWR1eCA9IHJlZHV4SW1wbDtcblxuY29uc3QgdHJhY2tlZENvbm5lY3Rpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbmNvbnN0IGdldFRyYWNrZWRDb25uZWN0aW9uU3RhdGUgPSAobmFtZSkgPT4ge1xuICBjb25zdCBhcGkgPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG5hbWUpO1xuICBpZiAoIWFwaSlcbiAgICByZXR1cm4ge307XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoYXBpLnN0b3JlcykubWFwKChba2V5LCBhcGkyXSkgPT4gW2tleSwgYXBpMi5nZXRTdGF0ZSgpXSlcbiAgKTtcbn07XG5jb25zdCBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uID0gKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1bnRyYWNrZWRcIixcbiAgICAgIGNvbm5lY3Rpb246IGV4dGVuc2lvbkNvbm5lY3Rvci5jb25uZWN0KG9wdGlvbnMpXG4gICAgfTtcbiAgfVxuICBjb25zdCBleGlzdGluZ0Nvbm5lY3Rpb24gPSB0cmFja2VkQ29ubmVjdGlvbnMuZ2V0KG9wdGlvbnMubmFtZSk7XG4gIGlmIChleGlzdGluZ0Nvbm5lY3Rpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcInRyYWNrZWRcIiwgc3RvcmUsIC4uLmV4aXN0aW5nQ29ubmVjdGlvbiB9O1xuICB9XG4gIGNvbnN0IG5ld0Nvbm5lY3Rpb24gPSB7XG4gICAgY29ubmVjdGlvbjogZXh0ZW5zaW9uQ29ubmVjdG9yLmNvbm5lY3Qob3B0aW9ucyksXG4gICAgc3RvcmVzOiB7fVxuICB9O1xuICB0cmFja2VkQ29ubmVjdGlvbnMuc2V0KG9wdGlvbnMubmFtZSwgbmV3Q29ubmVjdGlvbik7XG4gIHJldHVybiB7IHR5cGU6IFwidHJhY2tlZFwiLCBzdG9yZSwgLi4ubmV3Q29ubmVjdGlvbiB9O1xufTtcbmNvbnN0IGRldnRvb2xzSW1wbCA9IChmbiwgZGV2dG9vbHNPcHRpb25zID0ge30pID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGNvbnN0IHsgZW5hYmxlZCwgYW5vbnltb3VzQWN0aW9uVHlwZSwgc3RvcmUsIC4uLm9wdGlvbnMgfSA9IGRldnRvb2xzT3B0aW9ucztcbiAgbGV0IGV4dGVuc2lvbkNvbm5lY3RvcjtcbiAgdHJ5IHtcbiAgICBleHRlbnNpb25Db25uZWN0b3IgPSAoZW5hYmxlZCAhPSBudWxsID8gZW5hYmxlZCA6IChpbXBvcnQubWV0YS5lbnYgJiYgaW1wb3J0Lm1ldGEuZW52Lk1PREUpICE9PSBcInByb2R1Y3Rpb25cIikgJiYgd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX187XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICBpZiAoIWV4dGVuc2lvbkNvbm5lY3Rvcikge1xuICAgIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIgJiYgZW5hYmxlZCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFBsZWFzZSBpbnN0YWxsL2VuYWJsZSBSZWR1eCBkZXZ0b29scyBleHRlbnNpb25cIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZuKHNldCwgZ2V0LCBhcGkpO1xuICB9XG4gIGNvbnN0IHsgY29ubmVjdGlvbiwgLi4uY29ubmVjdGlvbkluZm9ybWF0aW9uIH0gPSBleHRyYWN0Q29ubmVjdGlvbkluZm9ybWF0aW9uKHN0b3JlLCBleHRlbnNpb25Db25uZWN0b3IsIG9wdGlvbnMpO1xuICBsZXQgaXNSZWNvcmRpbmcgPSB0cnVlO1xuICBhcGkuc2V0U3RhdGUgPSAoc3RhdGUsIHJlcGxhY2UsIG5hbWVPckFjdGlvbikgPT4ge1xuICAgIGNvbnN0IHIgPSBzZXQoc3RhdGUsIHJlcGxhY2UpO1xuICAgIGlmICghaXNSZWNvcmRpbmcpXG4gICAgICByZXR1cm4gcjtcbiAgICBjb25zdCBhY3Rpb24gPSBuYW1lT3JBY3Rpb24gPT09IHZvaWQgMCA/IHsgdHlwZTogYW5vbnltb3VzQWN0aW9uVHlwZSB8fCBcImFub255bW91c1wiIH0gOiB0eXBlb2YgbmFtZU9yQWN0aW9uID09PSBcInN0cmluZ1wiID8geyB0eXBlOiBuYW1lT3JBY3Rpb24gfSA6IG5hbWVPckFjdGlvbjtcbiAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5zZW5kKGFjdGlvbiwgZ2V0KCkpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfVxuICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uc2VuZChcbiAgICAgIHtcbiAgICAgICAgLi4uYWN0aW9uLFxuICAgICAgICB0eXBlOiBgJHtzdG9yZX0vJHthY3Rpb24udHlwZX1gXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5nZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSksXG4gICAgICAgIFtzdG9yZV06IGFwaS5nZXRTdGF0ZSgpXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcbiAgY29uc3Qgc2V0U3RhdGVGcm9tRGV2dG9vbHMgPSAoLi4uYSkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsSXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZztcbiAgICBpc1JlY29yZGluZyA9IGZhbHNlO1xuICAgIHNldCguLi5hKTtcbiAgICBpc1JlY29yZGluZyA9IG9yaWdpbmFsSXNSZWNvcmRpbmc7XG4gIH07XG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IGZuKGFwaS5zZXRTdGF0ZSwgZ2V0LCBhcGkpO1xuICBpZiAoY29ubmVjdGlvbkluZm9ybWF0aW9uLnR5cGUgPT09IFwidW50cmFja2VkXCIpIHtcbiAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoaW5pdGlhbFN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzW2Nvbm5lY3Rpb25JbmZvcm1hdGlvbi5zdG9yZV0gPSBhcGk7XG4gICAgY29ubmVjdGlvbiA9PSBudWxsID8gdm9pZCAwIDogY29ubmVjdGlvbi5pbml0KFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmVzKS5tYXAoKFtrZXksIHN0b3JlMl0pID0+IFtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAga2V5ID09PSBjb25uZWN0aW9uSW5mb3JtYXRpb24uc3RvcmUgPyBpbml0aWFsU3RhdGUgOiBzdG9yZTIuZ2V0U3RhdGUoKVxuICAgICAgICBdKVxuICAgICAgKVxuICAgICk7XG4gIH1cbiAgaWYgKGFwaS5kaXNwYXRjaEZyb21EZXZ0b29scyAmJiB0eXBlb2YgYXBpLmRpc3BhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBsZXQgZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlID0gZmFsc2U7XG4gICAgY29uc3Qgb3JpZ2luYWxEaXNwYXRjaCA9IGFwaS5kaXNwYXRjaDtcbiAgICBhcGkuZGlzcGF0Y2ggPSAoLi4uYSkgPT4ge1xuICAgICAgaWYgKChpbXBvcnQubWV0YS5lbnYgJiYgaW1wb3J0Lm1ldGEuZW52Lk1PREUpICE9PSBcInByb2R1Y3Rpb25cIiAmJiBhWzBdLnR5cGUgPT09IFwiX19zZXRTdGF0ZVwiICYmICFkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdbenVzdGFuZCBkZXZ0b29scyBtaWRkbGV3YXJlXSBcIl9fc2V0U3RhdGVcIiBhY3Rpb24gdHlwZSBpcyByZXNlcnZlZCB0byBzZXQgc3RhdGUgZnJvbSB0aGUgZGV2dG9vbHMuIEF2b2lkIHVzaW5nIGl0LidcbiAgICAgICAgKTtcbiAgICAgICAgZGlkV2FybkFib3V0UmVzZXJ2ZWRBY3Rpb25UeXBlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIG9yaWdpbmFsRGlzcGF0Y2goLi4uYSk7XG4gICAgfTtcbiAgfVxuICBjb25uZWN0aW9uLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuICAgIHZhciBfYTtcbiAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkge1xuICAgICAgY2FzZSBcIkFDVElPTlwiOlxuICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UucGF5bG9hZCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBcIlt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIFVuc3VwcG9ydGVkIGFjdGlvbiBmb3JtYXRcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZUpzb25UaGVuKFxuICAgICAgICAgIG1lc3NhZ2UucGF5bG9hZCxcbiAgICAgICAgICAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IFwiX19zZXRTdGF0ZVwiKSB7XG4gICAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoYWN0aW9uLnN0YXRlKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGFjdGlvbi5zdGF0ZSkubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgICAgICAgICAgW3p1c3RhbmQgZGV2dG9vbHMgbWlkZGxld2FyZV0gVW5zdXBwb3J0ZWQgX19zZXRTdGF0ZSBhY3Rpb24gZm9ybWF0LiBcbiAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyAnc3RvcmUnIG9wdGlvbiBpbiBkZXZ0b29scygpLCB0aGUgJ3N0YXRlJyBzaG91bGQgaGF2ZSBvbmx5IG9uZSBrZXksIHdoaWNoIGlzIGEgdmFsdWUgb2YgJ3N0b3JlJyB0aGF0IHdhcyBwYXNzZWQgaW4gZGV2dG9vbHMoKSxcbiAgICAgICAgICAgICAgICAgICAgYW5kIHZhbHVlIG9mIHRoaXMgb25seSBrZXkgc2hvdWxkIGJlIGEgc3RhdGUgb2JqZWN0LiBFeGFtcGxlOiB7IFwidHlwZVwiOiBcIl9fc2V0U3RhdGVcIiwgXCJzdGF0ZVwiOiB7IFwiYWJjMTIzU3RvcmVcIjogeyBcImZvb1wiOiBcImJhclwiIH0gfSB9XG4gICAgICAgICAgICAgICAgICAgIGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHN0YXRlRnJvbURldnRvb2xzID0gYWN0aW9uLnN0YXRlW3N0b3JlXTtcbiAgICAgICAgICAgICAgaWYgKHN0YXRlRnJvbURldnRvb2xzID09PSB2b2lkIDAgfHwgc3RhdGVGcm9tRGV2dG9vbHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGFwaS5nZXRTdGF0ZSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkoc3RhdGVGcm9tRGV2dG9vbHMpKSB7XG4gICAgICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoc3RhdGVGcm9tRGV2dG9vbHMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYXBpLmRpc3BhdGNoRnJvbURldnRvb2xzKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFwaS5kaXNwYXRjaCAhPT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBhcGkuZGlzcGF0Y2goYWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiRElTUEFUQ0hcIjpcbiAgICAgICAgc3dpdGNoIChtZXNzYWdlLnBheWxvYWQudHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJSRVNFVFwiOlxuICAgICAgICAgICAgc2V0U3RhdGVGcm9tRGV2dG9vbHMoaW5pdGlhbFN0YXRlKTtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChnZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlKG9wdGlvbnMubmFtZSkpO1xuICAgICAgICAgIGNhc2UgXCJDT01NSVRcIjpcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIGNvbm5lY3Rpb24gPT0gbnVsbCA/IHZvaWQgMCA6IGNvbm5lY3Rpb24uaW5pdChhcGkuZ2V0U3RhdGUoKSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICBjYXNlIFwiUk9MTEJBQ0tcIjpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUpzb25UaGVuKG1lc3NhZ2Uuc3RhdGUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3RvcmUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKHN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoYXBpLmdldFN0YXRlKCkpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLmluaXQoZ2V0VHJhY2tlZENvbm5lY3Rpb25TdGF0ZShvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGNhc2UgXCJKVU1QX1RPX1NUQVRFXCI6XG4gICAgICAgICAgY2FzZSBcIkpVTVBfVE9fQUNUSU9OXCI6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VKc29uVGhlbihtZXNzYWdlLnN0YXRlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN0b3JlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhcGkuZ2V0U3RhdGUoKSkgIT09IEpTT04uc3RyaW5naWZ5KHN0YXRlW3N0b3JlXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZUZyb21EZXZ0b29scyhzdGF0ZVtzdG9yZV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICBjYXNlIFwiSU1QT1JUX1NUQVRFXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dExpZnRlZFN0YXRlIH0gPSBtZXNzYWdlLnBheWxvYWQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0Q29tcHV0ZWRTdGF0ZSA9IChfYSA9IG5leHRMaWZ0ZWRTdGF0ZS5jb21wdXRlZFN0YXRlcy5zbGljZSgtMSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfYS5zdGF0ZTtcbiAgICAgICAgICAgIGlmICghbGFzdENvbXB1dGVkU3RhdGUpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmIChzdG9yZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFN0YXRlRnJvbURldnRvb2xzKGxhc3RDb21wdXRlZFN0YXRlW3N0b3JlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25uZWN0aW9uID09IG51bGwgPyB2b2lkIDAgOiBjb25uZWN0aW9uLnNlbmQoXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIC8vIEZJWE1FIG5vLWFueVxuICAgICAgICAgICAgICBuZXh0TGlmdGVkU3RhdGVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJQQVVTRV9SRUNPUkRJTkdcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1JlY29yZGluZyA9ICFpc1JlY29yZGluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5jb25zdCBkZXZ0b29scyA9IGRldnRvb2xzSW1wbDtcbmNvbnN0IHBhcnNlSnNvblRoZW4gPSAoc3RyaW5naWZpZWQsIGYpID0+IHtcbiAgbGV0IHBhcnNlZDtcbiAgdHJ5IHtcbiAgICBwYXJzZWQgPSBKU09OLnBhcnNlKHN0cmluZ2lmaWVkKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlt6dXN0YW5kIGRldnRvb2xzIG1pZGRsZXdhcmVdIENvdWxkIG5vdCBwYXJzZSB0aGUgcmVjZWl2ZWQganNvblwiLFxuICAgICAgZVxuICAgICk7XG4gIH1cbiAgaWYgKHBhcnNlZCAhPT0gdm9pZCAwKVxuICAgIGYocGFyc2VkKTtcbn07XG5cbmNvbnN0IHN1YnNjcmliZVdpdGhTZWxlY3RvckltcGwgPSAoZm4pID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGNvbnN0IG9yaWdTdWJzY3JpYmUgPSBhcGkuc3Vic2NyaWJlO1xuICBhcGkuc3Vic2NyaWJlID0gKHNlbGVjdG9yLCBvcHRMaXN0ZW5lciwgb3B0aW9ucykgPT4ge1xuICAgIGxldCBsaXN0ZW5lciA9IHNlbGVjdG9yO1xuICAgIGlmIChvcHRMaXN0ZW5lcikge1xuICAgICAgY29uc3QgZXF1YWxpdHlGbiA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiBvcHRpb25zLmVxdWFsaXR5Rm4pIHx8IE9iamVjdC5pcztcbiAgICAgIGxldCBjdXJyZW50U2xpY2UgPSBzZWxlY3RvcihhcGkuZ2V0U3RhdGUoKSk7XG4gICAgICBsaXN0ZW5lciA9IChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0U2xpY2UgPSBzZWxlY3RvcihzdGF0ZSk7XG4gICAgICAgIGlmICghZXF1YWxpdHlGbihjdXJyZW50U2xpY2UsIG5leHRTbGljZSkpIHtcbiAgICAgICAgICBjb25zdCBwcmV2aW91c1NsaWNlID0gY3VycmVudFNsaWNlO1xuICAgICAgICAgIG9wdExpc3RlbmVyKGN1cnJlbnRTbGljZSA9IG5leHRTbGljZSwgcHJldmlvdXNTbGljZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogb3B0aW9ucy5maXJlSW1tZWRpYXRlbHkpIHtcbiAgICAgICAgb3B0TGlzdGVuZXIoY3VycmVudFNsaWNlLCBjdXJyZW50U2xpY2UpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JpZ1N1YnNjcmliZShsaXN0ZW5lcik7XG4gIH07XG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IGZuKHNldCwgZ2V0LCBhcGkpO1xuICByZXR1cm4gaW5pdGlhbFN0YXRlO1xufTtcbmNvbnN0IHN1YnNjcmliZVdpdGhTZWxlY3RvciA9IHN1YnNjcmliZVdpdGhTZWxlY3RvckltcGw7XG5cbmNvbnN0IGNvbWJpbmUgPSAoaW5pdGlhbFN0YXRlLCBjcmVhdGUpID0+ICguLi5hKSA9PiBPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsU3RhdGUsIGNyZWF0ZSguLi5hKSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUpTT05TdG9yYWdlKGdldFN0b3JhZ2UsIG9wdGlvbnMpIHtcbiAgbGV0IHN0b3JhZ2U7XG4gIHRyeSB7XG4gICAgc3RvcmFnZSA9IGdldFN0b3JhZ2UoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBwZXJzaXN0U3RvcmFnZSA9IHtcbiAgICBnZXRJdGVtOiAobmFtZSkgPT4ge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgcGFyc2UgPSAoc3RyMikgPT4ge1xuICAgICAgICBpZiAoc3RyMiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHN0cjIsIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucmV2aXZlcik7XG4gICAgICB9O1xuICAgICAgY29uc3Qgc3RyID0gKF9hID0gc3RvcmFnZS5nZXRJdGVtKG5hbWUpKSAhPSBudWxsID8gX2EgOiBudWxsO1xuICAgICAgaWYgKHN0ciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHN0ci50aGVuKHBhcnNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXJzZShzdHIpO1xuICAgIH0sXG4gICAgc2V0SXRlbTogKG5hbWUsIG5ld1ZhbHVlKSA9PiBzdG9yYWdlLnNldEl0ZW0oXG4gICAgICBuYW1lLFxuICAgICAgSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUsIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucmVwbGFjZXIpXG4gICAgKSxcbiAgICByZW1vdmVJdGVtOiAobmFtZSkgPT4gc3RvcmFnZS5yZW1vdmVJdGVtKG5hbWUpXG4gIH07XG4gIHJldHVybiBwZXJzaXN0U3RvcmFnZTtcbn1cbmNvbnN0IHRvVGhlbmFibGUgPSAoZm4pID0+IChpbnB1dCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGZuKGlucHV0KTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRoZW4ob25GdWxmaWxsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRvVGhlbmFibGUob25GdWxmaWxsZWQpKHJlc3VsdCk7XG4gICAgICB9LFxuICAgICAgY2F0Y2goX29uUmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7XG4gICAgICB0aGVuKF9vbkZ1bGZpbGxlZCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sXG4gICAgICBjYXRjaChvblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0b1RoZW5hYmxlKG9uUmVqZWN0ZWQpKGUpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn07XG5jb25zdCBvbGRJbXBsID0gKGNvbmZpZywgYmFzZU9wdGlvbnMpID0+IChzZXQsIGdldCwgYXBpKSA9PiB7XG4gIGxldCBvcHRpb25zID0ge1xuICAgIGdldFN0b3JhZ2U6ICgpID0+IGxvY2FsU3RvcmFnZSxcbiAgICBzZXJpYWxpemU6IEpTT04uc3RyaW5naWZ5LFxuICAgIGRlc2VyaWFsaXplOiBKU09OLnBhcnNlLFxuICAgIHBhcnRpYWxpemU6IChzdGF0ZSkgPT4gc3RhdGUsXG4gICAgdmVyc2lvbjogMCxcbiAgICBtZXJnZTogKHBlcnNpc3RlZFN0YXRlLCBjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAuLi5wZXJzaXN0ZWRTdGF0ZVxuICAgIH0pLFxuICAgIC4uLmJhc2VPcHRpb25zXG4gIH07XG4gIGxldCBoYXNIeWRyYXRlZCA9IGZhbHNlO1xuICBjb25zdCBoeWRyYXRpb25MaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgc3RvcmFnZTtcbiAgdHJ5IHtcbiAgICBzdG9yYWdlID0gb3B0aW9ucy5nZXRTdG9yYWdlKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuICBpZiAoIXN0b3JhZ2UpIHtcbiAgICByZXR1cm4gY29uZmlnKFxuICAgICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbenVzdGFuZCBwZXJzaXN0IG1pZGRsZXdhcmVdIFVuYWJsZSB0byB1cGRhdGUgaXRlbSAnJHtvcHRpb25zLm5hbWV9JywgdGhlIGdpdmVuIHN0b3JhZ2UgaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLmBcbiAgICAgICAgKTtcbiAgICAgICAgc2V0KC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIGdldCxcbiAgICAgIGFwaVxuICAgICk7XG4gIH1cbiAgY29uc3QgdGhlbmFibGVTZXJpYWxpemUgPSB0b1RoZW5hYmxlKG9wdGlvbnMuc2VyaWFsaXplKTtcbiAgY29uc3Qgc2V0SXRlbSA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IG9wdGlvbnMucGFydGlhbGl6ZSh7IC4uLmdldCgpIH0pO1xuICAgIGxldCBlcnJvckluU3luYztcbiAgICBjb25zdCB0aGVuYWJsZSA9IHRoZW5hYmxlU2VyaWFsaXplKHsgc3RhdGUsIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiB9KS50aGVuKFxuICAgICAgKHNlcmlhbGl6ZWRWYWx1ZSkgPT4gc3RvcmFnZS5zZXRJdGVtKG9wdGlvbnMubmFtZSwgc2VyaWFsaXplZFZhbHVlKVxuICAgICkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGVycm9ySW5TeW5jID0gZTtcbiAgICB9KTtcbiAgICBpZiAoZXJyb3JJblN5bmMpIHtcbiAgICAgIHRocm93IGVycm9ySW5TeW5jO1xuICAgIH1cbiAgICByZXR1cm4gdGhlbmFibGU7XG4gIH07XG4gIGNvbnN0IHNhdmVkU2V0U3RhdGUgPSBhcGkuc2V0U3RhdGU7XG4gIGFwaS5zZXRTdGF0ZSA9IChzdGF0ZSwgcmVwbGFjZSkgPT4ge1xuICAgIHNhdmVkU2V0U3RhdGUoc3RhdGUsIHJlcGxhY2UpO1xuICAgIHZvaWQgc2V0SXRlbSgpO1xuICB9O1xuICBjb25zdCBjb25maWdSZXN1bHQgPSBjb25maWcoXG4gICAgKC4uLmFyZ3MpID0+IHtcbiAgICAgIHNldCguLi5hcmdzKTtcbiAgICAgIHZvaWQgc2V0SXRlbSgpO1xuICAgIH0sXG4gICAgZ2V0LFxuICAgIGFwaVxuICApO1xuICBsZXQgc3RhdGVGcm9tU3RvcmFnZTtcbiAgY29uc3QgaHlkcmF0ZSA9ICgpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKCFzdG9yYWdlKVxuICAgICAgcmV0dXJuO1xuICAgIGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gICAgaHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiBjYihnZXQoKSkpO1xuICAgIGNvbnN0IHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID0gKChfYSA9IG9wdGlvbnMub25SZWh5ZHJhdGVTdG9yYWdlKSA9PSBudWxsID8gdm9pZCAwIDogX2EuY2FsbChvcHRpb25zLCBnZXQoKSkpIHx8IHZvaWQgMDtcbiAgICByZXR1cm4gdG9UaGVuYWJsZShzdG9yYWdlLmdldEl0ZW0uYmluZChzdG9yYWdlKSkob3B0aW9ucy5uYW1lKS50aGVuKChzdG9yYWdlVmFsdWUpID0+IHtcbiAgICAgIGlmIChzdG9yYWdlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGVzZXJpYWxpemUoc3RvcmFnZVZhbHVlKTtcbiAgICAgIH1cbiAgICB9KS50aGVuKChkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUpID0+IHtcbiAgICAgIGlmIChkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUudmVyc2lvbiA9PT0gXCJudW1iZXJcIiAmJiBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUudmVyc2lvbiAhPT0gb3B0aW9ucy52ZXJzaW9uKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMubWlncmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMubWlncmF0ZShcbiAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnN0YXRlLFxuICAgICAgICAgICAgICBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUudmVyc2lvblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBTdGF0ZSBsb2FkZWQgZnJvbSBzdG9yYWdlIGNvdWxkbid0IGJlIG1pZ3JhdGVkIHNpbmNlIG5vIG1pZ3JhdGUgZnVuY3Rpb24gd2FzIHByb3ZpZGVkYFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS5zdGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLnRoZW4oKG1pZ3JhdGVkU3RhdGUpID0+IHtcbiAgICAgIHZhciBfYTI7XG4gICAgICBzdGF0ZUZyb21TdG9yYWdlID0gb3B0aW9ucy5tZXJnZShcbiAgICAgICAgbWlncmF0ZWRTdGF0ZSxcbiAgICAgICAgKF9hMiA9IGdldCgpKSAhPSBudWxsID8gX2EyIDogY29uZmlnUmVzdWx0XG4gICAgICApO1xuICAgICAgc2V0KHN0YXRlRnJvbVN0b3JhZ2UsIHRydWUpO1xuICAgICAgcmV0dXJuIHNldEl0ZW0oKTtcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayhzdGF0ZUZyb21TdG9yYWdlLCB2b2lkIDApO1xuICAgICAgaGFzSHlkcmF0ZWQgPSB0cnVlO1xuICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiBjYihzdGF0ZUZyb21TdG9yYWdlKSk7XG4gICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgIHBvc3RSZWh5ZHJhdGlvbkNhbGxiYWNrID09IG51bGwgPyB2b2lkIDAgOiBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayh2b2lkIDAsIGUpO1xuICAgIH0pO1xuICB9O1xuICBhcGkucGVyc2lzdCA9IHtcbiAgICBzZXRPcHRpb25zOiAobmV3T3B0aW9ucykgPT4ge1xuICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLi4ubmV3T3B0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmIChuZXdPcHRpb25zLmdldFN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZSA9IG5ld09wdGlvbnMuZ2V0U3RvcmFnZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB7XG4gICAgICBzdG9yYWdlID09IG51bGwgPyB2b2lkIDAgOiBzdG9yYWdlLnJlbW92ZUl0ZW0ob3B0aW9ucy5uYW1lKTtcbiAgICB9LFxuICAgIGdldE9wdGlvbnM6ICgpID0+IG9wdGlvbnMsXG4gICAgcmVoeWRyYXRlOiAoKSA9PiBoeWRyYXRlKCksXG4gICAgaGFzSHlkcmF0ZWQ6ICgpID0+IGhhc0h5ZHJhdGVkLFxuICAgIG9uSHlkcmF0ZTogKGNiKSA9PiB7XG4gICAgICBoeWRyYXRpb25MaXN0ZW5lcnMuYWRkKGNiKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5kZWxldGUoY2IpO1xuICAgICAgfTtcbiAgICB9LFxuICAgIG9uRmluaXNoSHlkcmF0aW9uOiAoY2IpID0+IHtcbiAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5hZGQoY2IpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmRlbGV0ZShjYik7XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgaHlkcmF0ZSgpO1xuICByZXR1cm4gc3RhdGVGcm9tU3RvcmFnZSB8fCBjb25maWdSZXN1bHQ7XG59O1xuY29uc3QgbmV3SW1wbCA9IChjb25maWcsIGJhc2VPcHRpb25zKSA9PiAoc2V0LCBnZXQsIGFwaSkgPT4ge1xuICBsZXQgb3B0aW9ucyA9IHtcbiAgICBzdG9yYWdlOiBjcmVhdGVKU09OU3RvcmFnZSgoKSA9PiBsb2NhbFN0b3JhZ2UpLFxuICAgIHBhcnRpYWxpemU6IChzdGF0ZSkgPT4gc3RhdGUsXG4gICAgdmVyc2lvbjogMCxcbiAgICBtZXJnZTogKHBlcnNpc3RlZFN0YXRlLCBjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAuLi5wZXJzaXN0ZWRTdGF0ZVxuICAgIH0pLFxuICAgIC4uLmJhc2VPcHRpb25zXG4gIH07XG4gIGxldCBoYXNIeWRyYXRlZCA9IGZhbHNlO1xuICBjb25zdCBoeWRyYXRpb25MaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBjb25zdCBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICBsZXQgc3RvcmFnZSA9IG9wdGlvbnMuc3RvcmFnZTtcbiAgaWYgKCFzdG9yYWdlKSB7XG4gICAgcmV0dXJuIGNvbmZpZyhcbiAgICAgICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW3p1c3RhbmQgcGVyc2lzdCBtaWRkbGV3YXJlXSBVbmFibGUgdG8gdXBkYXRlIGl0ZW0gJyR7b3B0aW9ucy5uYW1lfScsIHRoZSBnaXZlbiBzdG9yYWdlIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS5gXG4gICAgICAgICk7XG4gICAgICAgIHNldCguLi5hcmdzKTtcbiAgICAgIH0sXG4gICAgICBnZXQsXG4gICAgICBhcGlcbiAgICApO1xuICB9XG4gIGNvbnN0IHNldEl0ZW0gPSAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBvcHRpb25zLnBhcnRpYWxpemUoeyAuLi5nZXQoKSB9KTtcbiAgICByZXR1cm4gc3RvcmFnZS5zZXRJdGVtKG9wdGlvbnMubmFtZSwge1xuICAgICAgc3RhdGUsXG4gICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb25cbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgc2F2ZWRTZXRTdGF0ZSA9IGFwaS5zZXRTdGF0ZTtcbiAgYXBpLnNldFN0YXRlID0gKHN0YXRlLCByZXBsYWNlKSA9PiB7XG4gICAgc2F2ZWRTZXRTdGF0ZShzdGF0ZSwgcmVwbGFjZSk7XG4gICAgdm9pZCBzZXRJdGVtKCk7XG4gIH07XG4gIGNvbnN0IGNvbmZpZ1Jlc3VsdCA9IGNvbmZpZyhcbiAgICAoLi4uYXJncykgPT4ge1xuICAgICAgc2V0KC4uLmFyZ3MpO1xuICAgICAgdm9pZCBzZXRJdGVtKCk7XG4gICAgfSxcbiAgICBnZXQsXG4gICAgYXBpXG4gICk7XG4gIGxldCBzdGF0ZUZyb21TdG9yYWdlO1xuICBjb25zdCBoeWRyYXRlID0gKCkgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgaWYgKCFzdG9yYWdlKVxuICAgICAgcmV0dXJuO1xuICAgIGhhc0h5ZHJhdGVkID0gZmFsc2U7XG4gICAgaHlkcmF0aW9uTGlzdGVuZXJzLmZvckVhY2goKGNiKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmV0dXJuIGNiKChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdCk7XG4gICAgfSk7XG4gICAgY29uc3QgcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sgPSAoKF9iID0gb3B0aW9ucy5vblJlaHlkcmF0ZVN0b3JhZ2UpID09IG51bGwgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIChfYSA9IGdldCgpKSAhPSBudWxsID8gX2EgOiBjb25maWdSZXN1bHQpKSB8fCB2b2lkIDA7XG4gICAgcmV0dXJuIHRvVGhlbmFibGUoc3RvcmFnZS5nZXRJdGVtLmJpbmQoc3RvcmFnZSkpKG9wdGlvbnMubmFtZSkudGhlbigoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSA9PiB7XG4gICAgICBpZiAoZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gPT09IFwibnVtYmVyXCIgJiYgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb24gIT09IG9wdGlvbnMudmVyc2lvbikge1xuICAgICAgICAgIGlmIChvcHRpb25zLm1pZ3JhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm1pZ3JhdGUoXG4gICAgICAgICAgICAgIGRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZS5zdGF0ZSxcbiAgICAgICAgICAgICAgZGVzZXJpYWxpemVkU3RvcmFnZVZhbHVlLnZlcnNpb25cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgU3RhdGUgbG9hZGVkIGZyb20gc3RvcmFnZSBjb3VsZG4ndCBiZSBtaWdyYXRlZCBzaW5jZSBubyBtaWdyYXRlIGZ1bmN0aW9uIHdhcyBwcm92aWRlZGBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBkZXNlcmlhbGl6ZWRTdG9yYWdlVmFsdWUuc3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KS50aGVuKChtaWdyYXRlZFN0YXRlKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgc3RhdGVGcm9tU3RvcmFnZSA9IG9wdGlvbnMubWVyZ2UoXG4gICAgICAgIG1pZ3JhdGVkU3RhdGUsXG4gICAgICAgIChfYTIgPSBnZXQoKSkgIT0gbnVsbCA/IF9hMiA6IGNvbmZpZ1Jlc3VsdFxuICAgICAgKTtcbiAgICAgIHNldChzdGF0ZUZyb21TdG9yYWdlLCB0cnVlKTtcbiAgICAgIHJldHVybiBzZXRJdGVtKCk7XG4gICAgfSkudGhlbigoKSA9PiB7XG4gICAgICBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayA9PSBudWxsID8gdm9pZCAwIDogcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2soc3RhdGVGcm9tU3RvcmFnZSwgdm9pZCAwKTtcbiAgICAgIHN0YXRlRnJvbVN0b3JhZ2UgPSBnZXQoKTtcbiAgICAgIGhhc0h5ZHJhdGVkID0gdHJ1ZTtcbiAgICAgIGZpbmlzaEh5ZHJhdGlvbkxpc3RlbmVycy5mb3JFYWNoKChjYikgPT4gY2Ioc3RhdGVGcm9tU3RvcmFnZSkpO1xuICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICBwb3N0UmVoeWRyYXRpb25DYWxsYmFjayA9PSBudWxsID8gdm9pZCAwIDogcG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2sodm9pZCAwLCBlKTtcbiAgICB9KTtcbiAgfTtcbiAgYXBpLnBlcnNpc3QgPSB7XG4gICAgc2V0T3B0aW9uczogKG5ld09wdGlvbnMpID0+IHtcbiAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC4uLm5ld09wdGlvbnNcbiAgICAgIH07XG4gICAgICBpZiAobmV3T3B0aW9ucy5zdG9yYWdlKSB7XG4gICAgICAgIHN0b3JhZ2UgPSBuZXdPcHRpb25zLnN0b3JhZ2U7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGVhclN0b3JhZ2U6ICgpID0+IHtcbiAgICAgIHN0b3JhZ2UgPT0gbnVsbCA/IHZvaWQgMCA6IHN0b3JhZ2UucmVtb3ZlSXRlbShvcHRpb25zLm5hbWUpO1xuICAgIH0sXG4gICAgZ2V0T3B0aW9uczogKCkgPT4gb3B0aW9ucyxcbiAgICByZWh5ZHJhdGU6ICgpID0+IGh5ZHJhdGUoKSxcbiAgICBoYXNIeWRyYXRlZDogKCkgPT4gaGFzSHlkcmF0ZWQsXG4gICAgb25IeWRyYXRlOiAoY2IpID0+IHtcbiAgICAgIGh5ZHJhdGlvbkxpc3RlbmVycy5hZGQoY2IpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaHlkcmF0aW9uTGlzdGVuZXJzLmRlbGV0ZShjYik7XG4gICAgICB9O1xuICAgIH0sXG4gICAgb25GaW5pc2hIeWRyYXRpb246IChjYikgPT4ge1xuICAgICAgZmluaXNoSHlkcmF0aW9uTGlzdGVuZXJzLmFkZChjYik7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMuZGVsZXRlKGNiKTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICBpZiAoIW9wdGlvbnMuc2tpcEh5ZHJhdGlvbikge1xuICAgIGh5ZHJhdGUoKTtcbiAgfVxuICByZXR1cm4gc3RhdGVGcm9tU3RvcmFnZSB8fCBjb25maWdSZXN1bHQ7XG59O1xuY29uc3QgcGVyc2lzdEltcGwgPSAoY29uZmlnLCBiYXNlT3B0aW9ucykgPT4ge1xuICBpZiAoXCJnZXRTdG9yYWdlXCIgaW4gYmFzZU9wdGlvbnMgfHwgXCJzZXJpYWxpemVcIiBpbiBiYXNlT3B0aW9ucyB8fCBcImRlc2VyaWFsaXplXCIgaW4gYmFzZU9wdGlvbnMpIHtcbiAgICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0RFUFJFQ0FURURdIGBnZXRTdG9yYWdlYCwgYHNlcmlhbGl6ZWAgYW5kIGBkZXNlcmlhbGl6ZWAgb3B0aW9ucyBhcmUgZGVwcmVjYXRlZC4gVXNlIGBzdG9yYWdlYCBvcHRpb24gaW5zdGVhZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9sZEltcGwoY29uZmlnLCBiYXNlT3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIG5ld0ltcGwoY29uZmlnLCBiYXNlT3B0aW9ucyk7XG59O1xuY29uc3QgcGVyc2lzdCA9IHBlcnNpc3RJbXBsO1xuXG5leHBvcnQgeyBjb21iaW5lLCBjcmVhdGVKU09OU3RvcmFnZSwgZGV2dG9vbHMsIHBlcnNpc3QsIHJlZHV4LCBzdWJzY3JpYmVXaXRoU2VsZWN0b3IgfTtcbiJdLCJuYW1lcyI6WyJyZWR1eEltcGwiLCJyZWR1Y2VyIiwiaW5pdGlhbCIsInNldCIsIl9nZXQiLCJhcGkiLCJkaXNwYXRjaCIsImFjdGlvbiIsInN0YXRlIiwiZGlzcGF0Y2hGcm9tRGV2dG9vbHMiLCJhIiwicmVkdXgiLCJ0cmFja2VkQ29ubmVjdGlvbnMiLCJNYXAiLCJnZXRUcmFja2VkQ29ubmVjdGlvblN0YXRlIiwibmFtZSIsImdldCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsInN0b3JlcyIsIm1hcCIsImtleSIsImFwaTIiLCJnZXRTdGF0ZSIsImV4dHJhY3RDb25uZWN0aW9uSW5mb3JtYXRpb24iLCJzdG9yZSIsImV4dGVuc2lvbkNvbm5lY3RvciIsIm9wdGlvbnMiLCJ0eXBlIiwiY29ubmVjdGlvbiIsImNvbm5lY3QiLCJleGlzdGluZ0Nvbm5lY3Rpb24iLCJuZXdDb25uZWN0aW9uIiwiZGV2dG9vbHNJbXBsIiwiZm4iLCJkZXZ0b29sc09wdGlvbnMiLCJlbmFibGVkIiwiYW5vbnltb3VzQWN0aW9uVHlwZSIsImVudiIsIk1PREUiLCJ3aW5kb3ciLCJfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fIiwiZSIsImNvbnNvbGUiLCJ3YXJuIiwiY29ubmVjdGlvbkluZm9ybWF0aW9uIiwiaXNSZWNvcmRpbmciLCJzZXRTdGF0ZSIsInJlcGxhY2UiLCJuYW1lT3JBY3Rpb24iLCJyIiwic2VuZCIsInNldFN0YXRlRnJvbURldnRvb2xzIiwib3JpZ2luYWxJc1JlY29yZGluZyIsImluaXRpYWxTdGF0ZSIsImluaXQiLCJzdG9yZTIiLCJkaWRXYXJuQWJvdXRSZXNlcnZlZEFjdGlvblR5cGUiLCJvcmlnaW5hbERpc3BhdGNoIiwic3Vic2NyaWJlIiwibWVzc2FnZSIsIl9hIiwicGF5bG9hZCIsImVycm9yIiwicGFyc2VKc29uVGhlbiIsImtleXMiLCJsZW5ndGgiLCJzdGF0ZUZyb21EZXZ0b29scyIsIkpTT04iLCJzdHJpbmdpZnkiLCJuZXh0TGlmdGVkU3RhdGUiLCJsYXN0Q29tcHV0ZWRTdGF0ZSIsImNvbXB1dGVkU3RhdGVzIiwic2xpY2UiLCJkZXZ0b29scyIsInN0cmluZ2lmaWVkIiwiZiIsInBhcnNlZCIsInBhcnNlIiwic3Vic2NyaWJlV2l0aFNlbGVjdG9ySW1wbCIsIm9yaWdTdWJzY3JpYmUiLCJzZWxlY3RvciIsIm9wdExpc3RlbmVyIiwibGlzdGVuZXIiLCJlcXVhbGl0eUZuIiwiaXMiLCJjdXJyZW50U2xpY2UiLCJuZXh0U2xpY2UiLCJwcmV2aW91c1NsaWNlIiwiZmlyZUltbWVkaWF0ZWx5Iiwic3Vic2NyaWJlV2l0aFNlbGVjdG9yIiwiY29tYmluZSIsImNyZWF0ZSIsImFzc2lnbiIsImNyZWF0ZUpTT05TdG9yYWdlIiwiZ2V0U3RvcmFnZSIsInN0b3JhZ2UiLCJwZXJzaXN0U3RvcmFnZSIsImdldEl0ZW0iLCJzdHIyIiwicmV2aXZlciIsInN0ciIsIlByb21pc2UiLCJ0aGVuIiwic2V0SXRlbSIsIm5ld1ZhbHVlIiwicmVwbGFjZXIiLCJyZW1vdmVJdGVtIiwidG9UaGVuYWJsZSIsImlucHV0IiwicmVzdWx0Iiwib25GdWxmaWxsZWQiLCJjYXRjaCIsIl9vblJlamVjdGVkIiwiX29uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9sZEltcGwiLCJjb25maWciLCJiYXNlT3B0aW9ucyIsImxvY2FsU3RvcmFnZSIsInNlcmlhbGl6ZSIsImRlc2VyaWFsaXplIiwicGFydGlhbGl6ZSIsInZlcnNpb24iLCJtZXJnZSIsInBlcnNpc3RlZFN0YXRlIiwiY3VycmVudFN0YXRlIiwiaGFzSHlkcmF0ZWQiLCJoeWRyYXRpb25MaXN0ZW5lcnMiLCJTZXQiLCJmaW5pc2hIeWRyYXRpb25MaXN0ZW5lcnMiLCJhcmdzIiwidGhlbmFibGVTZXJpYWxpemUiLCJlcnJvckluU3luYyIsInRoZW5hYmxlIiwic2VyaWFsaXplZFZhbHVlIiwic2F2ZWRTZXRTdGF0ZSIsImNvbmZpZ1Jlc3VsdCIsInN0YXRlRnJvbVN0b3JhZ2UiLCJoeWRyYXRlIiwiZm9yRWFjaCIsImNiIiwicG9zdFJlaHlkcmF0aW9uQ2FsbGJhY2siLCJvblJlaHlkcmF0ZVN0b3JhZ2UiLCJjYWxsIiwiYmluZCIsInN0b3JhZ2VWYWx1ZSIsImRlc2VyaWFsaXplZFN0b3JhZ2VWYWx1ZSIsIm1pZ3JhdGUiLCJtaWdyYXRlZFN0YXRlIiwiX2EyIiwicGVyc2lzdCIsInNldE9wdGlvbnMiLCJuZXdPcHRpb25zIiwiY2xlYXJTdG9yYWdlIiwiZ2V0T3B0aW9ucyIsInJlaHlkcmF0ZSIsIm9uSHlkcmF0ZSIsImFkZCIsImRlbGV0ZSIsIm9uRmluaXNoSHlkcmF0aW9uIiwibmV3SW1wbCIsIl9iIiwic2tpcEh5ZHJhdGlvbiIsInBlcnNpc3RJbXBsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/zustand/esm/middleware.mjs\n");
 | |
| 
 | |
| /***/ }),
 | |
| 
 | |
| /***/ "(ssr)/./node_modules/zustand/esm/vanilla.mjs":
 | |
| /*!**********************************************!*\
 | |
|   !*** ./node_modules/zustand/esm/vanilla.mjs ***!
 | |
|   \**********************************************/
 | |
| /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 | |
| 
 | |
| eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   createStore: () => (/* binding */ createStore),\n/* harmony export */   \"default\": () => (/* binding */ vanilla)\n/* harmony export */ });\nconst createStoreImpl = (createState)=>{\n    let state;\n    const listeners = /* @__PURE__ */ new Set();\n    const setState = (partial, replace)=>{\n        const nextState = typeof partial === \"function\" ? partial(state) : partial;\n        if (!Object.is(nextState, state)) {\n            const previousState = state;\n            state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n            listeners.forEach((listener)=>listener(state, previousState));\n        }\n    };\n    const getState = ()=>state;\n    const subscribe = (listener)=>{\n        listeners.add(listener);\n        return ()=>listeners.delete(listener);\n    };\n    const destroy = ()=>{\n        if (true) {\n            console.warn(\"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\");\n        }\n        listeners.clear();\n    };\n    const api = {\n        setState,\n        getState,\n        subscribe,\n        destroy\n    };\n    state = createState(setState, getState, api);\n    return api;\n};\nconst createStore = (createState)=>createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState)=>{\n    if (true) {\n        console.warn(\"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\");\n    }\n    return createStore(createState);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvenVzdGFuZC9lc20vdmFuaWxsYS5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxNQUFNQSxrQkFBa0IsQ0FBQ0M7SUFDdkIsSUFBSUM7SUFDSixNQUFNQyxZQUFZLGFBQWEsR0FBRyxJQUFJQztJQUN0QyxNQUFNQyxXQUFXLENBQUNDLFNBQVNDO1FBQ3pCLE1BQU1DLFlBQVksT0FBT0YsWUFBWSxhQUFhQSxRQUFRSixTQUFTSTtRQUNuRSxJQUFJLENBQUNHLE9BQU9DLEVBQUUsQ0FBQ0YsV0FBV04sUUFBUTtZQUNoQyxNQUFNUyxnQkFBZ0JUO1lBQ3RCQSxRQUFRLENBQUNLLFdBQVcsT0FBT0EsVUFBVSxPQUFPQyxjQUFjLFFBQU8sSUFBS0EsWUFBWUMsT0FBT0csTUFBTSxDQUFDLENBQUMsR0FBR1YsT0FBT007WUFDM0dMLFVBQVVVLE9BQU8sQ0FBQyxDQUFDQyxXQUFhQSxTQUFTWixPQUFPUztRQUNsRDtJQUNGO0lBQ0EsTUFBTUksV0FBVyxJQUFNYjtJQUN2QixNQUFNYyxZQUFZLENBQUNGO1FBQ2pCWCxVQUFVYyxHQUFHLENBQUNIO1FBQ2QsT0FBTyxJQUFNWCxVQUFVZSxNQUFNLENBQUNKO0lBQ2hDO0lBQ0EsTUFBTUssVUFBVTtRQUNkLElBQUksSUFBMEQsRUFBRTtZQUM5REcsUUFBUUMsSUFBSSxDQUNWO1FBRUo7UUFDQXBCLFVBQVVxQixLQUFLO0lBQ2pCO0lBQ0EsTUFBTUMsTUFBTTtRQUFFcEI7UUFBVVU7UUFBVUM7UUFBV0c7SUFBUTtJQUNyRGpCLFFBQVFELFlBQVlJLFVBQVVVLFVBQVVVO0lBQ3hDLE9BQU9BO0FBQ1Q7QUFDQSxNQUFNQyxjQUFjLENBQUN6QixjQUFnQkEsY0FBY0QsZ0JBQWdCQyxlQUFlRDtBQUNsRixJQUFJMkIsVUFBVSxDQUFDMUI7SUFDYixJQUFJLElBQTBELEVBQUU7UUFDOURxQixRQUFRQyxJQUFJLENBQ1Y7SUFFSjtJQUNBLE9BQU9HLFlBQVl6QjtBQUNyQjtBQUUyQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzPzlkOWUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3JlYXRlU3RvcmVJbXBsID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGxldCBzdGF0ZTtcbiAgY29uc3QgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbiAgY29uc3Qgc2V0U3RhdGUgPSAocGFydGlhbCwgcmVwbGFjZSkgPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHR5cGVvZiBwYXJ0aWFsID09PSBcImZ1bmN0aW9uXCIgPyBwYXJ0aWFsKHN0YXRlKSA6IHBhcnRpYWw7XG4gICAgaWYgKCFPYmplY3QuaXMobmV4dFN0YXRlLCBzdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICAgIHN0YXRlID0gKHJlcGxhY2UgIT0gbnVsbCA/IHJlcGxhY2UgOiB0eXBlb2YgbmV4dFN0YXRlICE9PSBcIm9iamVjdFwiKSA/IG5leHRTdGF0ZSA6IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihzdGF0ZSwgcHJldmlvdXNTdGF0ZSkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0U3RhdGUgPSAoKSA9PiBzdGF0ZTtcbiAgY29uc3Qgc3Vic2NyaWJlID0gKGxpc3RlbmVyKSA9PiB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgcmV0dXJuICgpID0+IGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9O1xuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJbREVQUkVDQVRFRF0gVGhlIGBkZXN0cm95YCBtZXRob2Qgd2lsbCBiZSB1bnN1cHBvcnRlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBJbnN0ZWFkIHVzZSB1bnN1YnNjcmliZSBmdW5jdGlvbiByZXR1cm5lZCBieSBzdWJzY3JpYmUuIEV2ZXJ5dGhpbmcgd2lsbCBiZSBnYXJiYWdlLWNvbGxlY3RlZCBpZiBzdG9yZSBpcyBnYXJiYWdlLWNvbGxlY3RlZC5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gIH07XG4gIGNvbnN0IGFwaSA9IHsgc2V0U3RhdGUsIGdldFN0YXRlLCBzdWJzY3JpYmUsIGRlc3Ryb3kgfTtcbiAgc3RhdGUgPSBjcmVhdGVTdGF0ZShzZXRTdGF0ZSwgZ2V0U3RhdGUsIGFwaSk7XG4gIHJldHVybiBhcGk7XG59O1xuY29uc3QgY3JlYXRlU3RvcmUgPSAoY3JlYXRlU3RhdGUpID0+IGNyZWF0ZVN0YXRlID8gY3JlYXRlU3RvcmVJbXBsKGNyZWF0ZVN0YXRlKSA6IGNyZWF0ZVN0b3JlSW1wbDtcbnZhciB2YW5pbGxhID0gKGNyZWF0ZVN0YXRlKSA9PiB7XG4gIGlmICgoaW1wb3J0Lm1ldGEuZW52ICYmIGltcG9ydC5tZXRhLmVudi5NT0RFKSAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIltERVBSRUNBVEVEXSBEZWZhdWx0IGV4cG9ydCBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkIHVzZSBpbXBvcnQgeyBjcmVhdGVTdG9yZSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYScuXCJcbiAgICApO1xuICB9XG4gIHJldHVybiBjcmVhdGVTdG9yZShjcmVhdGVTdGF0ZSk7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVTdG9yZSwgdmFuaWxsYSBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiY3JlYXRlU3RvcmVJbXBsIiwiY3JlYXRlU3RhdGUiLCJzdGF0ZSIsImxpc3RlbmVycyIsIlNldCIsInNldFN0YXRlIiwicGFydGlhbCIsInJlcGxhY2UiLCJuZXh0U3RhdGUiLCJPYmplY3QiLCJpcyIsInByZXZpb3VzU3RhdGUiLCJhc3NpZ24iLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJnZXRTdGF0ZSIsInN1YnNjcmliZSIsImFkZCIsImRlbGV0ZSIsImRlc3Ryb3kiLCJlbnYiLCJNT0RFIiwiY29uc29sZSIsIndhcm4iLCJjbGVhciIsImFwaSIsImNyZWF0ZVN0b3JlIiwidmFuaWxsYSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/zustand/esm/vanilla.mjs\n");
 | |
| 
 | |
| /***/ })
 | |
| 
 | |
| };
 | |
| ; |