{\n getContext: (theme: Theme | ((outerTheme: Theme) => void), outerTheme?: Theme) => Theme;\n\n renderInner: Function;\n\n constructor(props: Props) {\n super(props);\n this.getContext = memoize(this.getContext.bind(this));\n this.renderInner = this.renderInner.bind(this);\n }\n\n render() {\n if (!this.props.children) return null;\n\n return {this.renderInner};\n }\n\n renderInner(outerTheme?: Theme) {\n const context = this.getContext(this.props.theme, outerTheme);\n\n return (\n \n {this.props.children}\n \n );\n }\n\n /**\n * Get the theme from the props, supporting both (outerTheme) => {}\n * as well as object notation\n */\n getTheme(theme: (outerTheme: ?Theme) => void, outerTheme: ?Theme) {\n if (isFunction(theme)) {\n const mergedTheme = theme(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n throw new StyledError(7);\n }\n\n return mergedTheme;\n }\n\n if (theme === null || Array.isArray(theme) || typeof theme !== 'object') {\n throw new StyledError(8);\n }\n\n return { ...outerTheme, ...theme };\n }\n\n getContext(theme: (outerTheme: ?Theme) => void, outerTheme?: Theme) {\n return this.getTheme(theme, outerTheme);\n }\n}\n","// @flow\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\nimport stringifyRules from '../utils/stringifyRules';\nimport StyleSheet from './StyleSheet';\n\nimport type { RuleSet } from '../types';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules, EMPTY_ARRAY);\n\n if (!StyleSheet.master.hasId(componentId)) {\n StyleSheet.master.deferredInject(componentId, []);\n }\n }\n\n createStyles(executionContext: Object, styleSheet: StyleSheet) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet);\n const css = stringifyRules(flatCSS, '');\n\n styleSheet.inject(this.componentId, css);\n }\n\n removeStyles(styleSheet: StyleSheet) {\n const { componentId } = this;\n if (styleSheet.hasId(componentId)) {\n styleSheet.remove(componentId);\n }\n }\n\n // TODO: overwrite in-place instead of remove+create?\n renderStyles(executionContext: Object, styleSheet: StyleSheet) {\n this.removeStyles(styleSheet);\n this.createStyles(executionContext, styleSheet);\n }\n}\n","export const ADD_APP = 'ADD_APP';\nexport const DEL_APP = 'DEL_APP';\nexport const FOCUS_APP = 'FOCUS_APP';\nexport const MINIMIZE_APP = 'MINIMIZE_APP';\nexport const TOGGLE_MAXIMIZE_APP = 'TOGGLE_MAXIMIZE_APP';\nexport const FOCUS_ICON = 'FOCUS_ICON';\nexport const SELECT_ICONS = 'SELECT_ICONS';\nexport const FOCUS_DESKTOP = 'FOCUS_DESKTOP';\nexport const START_SELECT = 'START_SELECT';\nexport const END_SELECT = 'END_SELECT';\nexport const POWER_OFF = 'POWER_OFF';\nexport const CANCEL_POWER_OFF = 'CANCEL_POWER_OFF';\n","export const FOCUSING = {\n WINDOW: 'WINDOW',\n ICON: 'ICON',\n DESKTOP: 'DESKTOP',\n};\nexport const POWER_STATE = {\n START: 'START',\n LOG_OFF: 'LOG_OFF',\n TURN_OFF: 'TURN_OFF',\n};\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport iePaper from 'assets/windowsIcons/ie-paper.png';\nimport ieBook from 'assets/windowsIcons/ie-book.png';\nimport check from 'assets/windowsIcons/checked.png';\nimport folder from 'assets/windowsIcons/folder.png';\n\nexport function WindowDropDown({ items, position = {}, onClick }) {\n const [option, setOption] = useState('');\n return (\n \n
\n {items.map((item, index) => {\n switch (item.type) {\n case 'item':\n return (\n
setOption(item.text)}\n onClick={() => onClick(item.text)}\n >\n
\n \n
\n
{item.text}
\n
\n {item.hotkey || ''}\n \n
\n
\n );\n case 'menu':\n return (\n
setOption(item.text)}\n >\n
\n \n
\n
{item.text}
\n
\n {item.hotkey || ''}\n \n
\n
\n {option === item.text && (\n \n )}\n
\n
\n );\n case 'separator':\n return
;\n default:\n return null;\n }\n })}\n
\n
\n );\n}\n\nfunction RowSymbol({ type }) {\n switch (type) {\n case 'ie-paper':\n return
;\n case 'ie-book':\n return
;\n case 'folder':\n return
;\n case 'check':\n return
;\n case 'circle':\n return (\n \n );\n default:\n return null;\n }\n}\n\nconst Div = styled.div`\n left: ${({ left }) => (left ? left : 'initial')};\n top: ${({ top }) => (top ? top : 'initial')};\n right: ${({ right }) => (right ? right : 'initial')};\n bottom: ${({ bottom }) => (bottom ? bottom : 'initial')};\n position: absolute;\n display: flex;\n font-size: 11px;\n border-bottom: 1px solid transparent;\n .drop-down__row {\n position: relative;\n display: contents;\n &:hover > *:not(:nth-child(5)) {\n background: #e99f17;\n filter: invert(100%);\n }\n &:hover > .drop-down__check > .drop-down__icon {\n filter: invert(100%);\n }\n }\n .drop-down__row--active {\n position: relative;\n display: contents;\n & > .drop-down__check > .drop-down__icon {\n filter: invert(100%);\n }\n & > *:not(:nth-child(5)) {\n background: #e99f17;\n filter: invert(100%);\n }\n }\n .drop-down__row--disable {\n display: contents;\n color: #8c8c8cb5;\n &:hover > * {\n background: #e99f17;\n filter: invert(100%);\n }\n }\n .drop-down__title {\n padding: 0 7px;\n height: 100%;\n line-height: 20px;\n color: white;\n background-color: #1660e8;\n }\n .drop-down__menu {\n background-color: #fff;\n z-index: 1;\n padding: 2px;\n line-height: 18px;\n display: grid;\n background-color: #fff;\n position: absolute;\n box-shadow: 2px 2px 1px rgb(100, 100, 100);\n border: 1px solid gray;\n grid-template-columns: 16px auto auto 15px 0px;\n }\n .drop-down__separator {\n grid-column: 1 / 5;\n height: 7px;\n padding: 3px 1px;\n background-color: rgba(0, 0, 0, 0.2);\n background-clip: content-box;\n }\n .drop-down__check {\n grid-column: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .drop-down__icon {\n max-width: 13px;\n max-height: 13px;\n transform: translateX(-2px);\n }\n .drop-down__text {\n white-space: nowrap;\n padding-right: 8px;\n grid-column: 2;\n }\n .drop-down__hot-key {\n white-space: nowrap;\n grid-column: 3;\n padding-right: 2px;\n }\n .drop-down__arrow {\n position: relative;\n grid-column: 4;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n &:before {\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 3px 0 3px 3px;\n border-color: transparent transparent transparent #000;\n content: '';\n display: block;\n }\n }\n .drop-down__arrow--disable {\n grid-column: 4;\n width: 100%;\n height: 100%;\n }\n`;\nexport default WindowDropDown;\n","import React, { useState, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\nimport WindowDropDown from './WindowDropDown';\n\nexport function WindowDropDowns({\n items,\n onClickItem,\n className,\n height = 20,\n}) {\n const dropDown = useRef(null);\n const [openOption, setOpenOption] = useState('');\n function hoverOption(option) {\n if (openOption) setOpenOption(option);\n }\n function _onClickItem(name) {\n setOpenOption('');\n onClickItem(name);\n }\n function onMouseUp(e) {\n if (!dropDown.current.contains(e.target)) setOpenOption('');\n }\n useEffect(() => {\n window.addEventListener('mouseup', onMouseUp);\n return () => {\n window.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n return (\n \n {Object.keys(items).map(name => (\n
\n
{\n setOpenOption(name);\n }}\n onMouseEnter={() => hoverOption(name)}\n className={`drop-down__label ${\n openOption === name ? 'drop-down__label--active' : ''\n }`}\n >\n {name}\n
\n {openOption === name && (\n
\n )}\n
\n ))}\n
\n );\n}\n\nexport default styled(WindowDropDowns)`\n display: inline-flex;\n height: ${({ height }) => height || 20}px;\n line-height: ${({ height }) => height || 20}px;\n position: relative;\n .drop-down {\n font-size: 11px;\n height: 100%;\n position: relative;\n }\n .drop-down__label--active {\n background-color: #1660e8;\n color: #fff;\n }\n .drop-down__label {\n padding: 0 7px;\n &:hover {\n background-color: #1660e8;\n color: #fff;\n }\n }\n`;\n","import React, { useState, useEffect } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport shield from 'assets/windowsIcons/214(16x16).png';\n\nfunction Balloon({ startAfter = 3000, duration = 15000 }) {\n const [show, setShow] = useState(true);\n const [start, setStart] = useState(false);\n useEffect(() => {\n const openTimer = setTimeout(() => setStart(true), startAfter);\n const fadeTimer = setTimeout(() => setShow(false), startAfter + duration);\n const closeTimer = setTimeout(\n () => setStart(false),\n startAfter + duration + 1000,\n );\n return () => {\n clearTimeout(openTimer);\n clearTimeout(fadeTimer);\n clearTimeout(closeTimer);\n };\n }, [startAfter, duration]);\n return (\n start && (\n \n
\n
\n
\n )\n );\n}\nconst fadein = keyframes`\n 0% { \n display: block;\n opacity: 0;\n }\n 100% {\n display: block;\n opacity: 1;\n }\n`;\nconst fadeout = keyframes`\n 0% { \n display: block;\n opacity: 1;\n }\n 99% {\n display: block;\n opacity: 0;\n }\n 100% {\n display: none;\n opacity: 0;\n }\n`;\nconst Div = styled.div`\n position: absolute;\n display: block;\n opacity: 0;\n animation: ${({ show }) => (show ? fadein : fadeout)} 1s forwards;\n filter: drop-shadow(2px 2px 1px rgba(0, 0, 0, 0.4));\n .balloon__container {\n position: absolute;\n right: -4px;\n bottom: 19px;\n border: 1px solid black;\n border-radius: 7px;\n padding: 6px 28px 10px 10px;\n background-color: #ffffe1;\n font-size: 11px;\n white-space: nowrap;\n &:before {\n content: '';\n position: absolute;\n display: block;\n bottom: -19px;\n right: 14px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 19px 19px 0;\n border-color: transparent black transparent transparent;\n }\n &:after {\n content: '';\n position: absolute;\n display: block;\n bottom: -17px;\n right: 15px;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 0 18px 18px 0;\n border-color: transparent #ffffe1 transparent transparent;\n }\n }\n .balloon__close:hover {\n background-color: #ffa90c;\n border-color: white;\n box-shadow: 1px 1px rgba(0, 0, 0, 0.1);\n &:before,\n &:after {\n background-color: white;\n }\n }\n .balloon__close {\n outline: none;\n position: absolute;\n right: 4px;\n top: 4px;\n width: 14px;\n height: 14px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n background-color: transparent;\n &:before {\n content: '';\n position: absolute;\n left: 5px;\n top: 2px;\n transform: rotate(45deg);\n height: 8px;\n width: 2px;\n background-color: rgba(170, 170, 170);\n }\n &:after {\n content: '';\n position: absolute;\n left: 5px;\n top: 2px;\n transform: rotate(-45deg);\n height: 8px;\n width: 2px;\n background-color: rgba(170, 170, 170);\n }\n }\n .balloon__header {\n display: flex;\n align-items: center;\n font-weight: 700;\n }\n .balloon__header__img {\n width: 14px;\n height: 14px;\n margin-right: 8px;\n }\n .balloon__text__first {\n margin: 5px 0 10px;\n }\n`;\nexport default Balloon;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nfunction SubMenu({ className, data, style, onClick }) {\n const [hoverIndex, setHoverIndex] = useState(-1);\n return (\n \n {data.map((item, index) => (\n \n ))}\n
\n );\n}\n\nconst SubMenuItem = ({ index, item, className, hover, onHover, onClick }) => {\n function _onMouseOver() {\n onHover(index);\n }\n function _onClick() {\n onClick(item.text);\n }\n switch (item.type) {\n case 'item':\n return (\n \n

\n
{item.text}
\n
\n );\n case 'separator':\n return ;\n case 'menu':\n return (\n \n

\n
{item.text}
\n
\n {hover && (\n \n )}\n
\n
\n );\n default:\n return null;\n }\n};\n\nconst StyledSubMenu = styled(SubMenu)`\n position: absolute;\n z-index: 1;\n left: ${({ left }) => left || '100%'};\n bottom: ${({ bottom }) => bottom || '-1px'};\n background-color: white;\n padding-left: 1px;\n box-shadow: inset 0 0 0 1px #72ade9, 2px 3px 3px rgb(0, 0, 0, 0.5);\n &-separator {\n padding: 0 5px;\n height: 2px;\n box-shadow: inset 3px 0 #4081ff;\n background: linear-gradient(\n to right,\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.1) 50%,\n rgba(0, 0, 0, 0) 100%\n );\n }\n &-item {\n height: 25px;\n display: flex;\n align-items: center;\n padding: 0 10px;\n box-shadow: inset 3px 0 #4081ff;\n position: relative;\n padding-right: 22px;\n color: black;\n }\n &-item.hover {\n background-color: #1b65cc;\n color: white;\n }\n &-item:hover {\n background-color: #1b65cc;\n color: white;\n &-arrow:before {\n border-left-color: #fff;\n }\n }\n &-item:hover,\n &-item.hover > &-arrow:before {\n border-left-color: #fff;\n }\n &-img {\n margin-right: 6px;\n width: 16px;\n height: 16px;\n }\n &-text {\n font-size: 11px;\n white-space: nowrap;\n }\n &-arrow {\n position: absolute;\n right: 0;\n height: 100%;\n width: 10px;\n &:before {\n top: 9px;\n right: 6px;\n content: '';\n display: block;\n border: 4px solid transparent;\n border-right: 0;\n border-left-color: #000;\n position: absolute;\n }\n }\n`;\n\nexport default StyledSubMenu;\n","var _path;\nfunction _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); }\nimport * as React from \"react\";\nfunction SvgFind(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n focusable: \"false\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4285f4\",\n d: \"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFind);\nexport default __webpack_public_path__ + \"static/media/find.303b87f499358979b1c66a3da1584e67.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15, _g16;\nfunction _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); }\nimport * as React from \"react\";\nfunction SvgSmile(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"106.059px\",\n height: \"106.059px\",\n viewBox: \"0 0 106.059 106.059\",\n style: {\n enableBackground: \"new 0 0 106.059 106.059\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.546,15.518C69.858-5.172,36.199-5.172,15.515,15.513C-5.173,36.198-5.171,69.858,15.517,90.547 c20.682,20.684,54.341,20.684,75.027-0.004C111.23,69.858,111.229,36.2,90.546,15.518z M84.757,84.758 c-17.494,17.494-45.96,17.496-63.455,0.002c-17.498-17.497-17.496-45.966,0-63.46C38.796,3.807,67.261,3.805,84.759,21.302 C102.253,38.796,102.251,67.265,84.757,84.758z M33.24,38.671c0-3.424,2.777-6.201,6.201-6.201c3.423,0,6.2,2.776,6.2,6.201 c0,3.426-2.777,6.202-6.2,6.202C36.017,44.873,33.24,42.097,33.24,38.671z M61.357,38.671c0-3.424,2.779-6.201,6.203-6.201 c3.423,0,6.2,2.776,6.2,6.201c0,3.426-2.776,6.202-6.2,6.202S61.357,42.097,61.357,38.671z M76.017,64.068 c-3.843,8.887-12.843,14.629-22.927,14.629c-10.301,0-19.354-5.771-23.064-14.703c-0.636-1.529,0.089-3.285,1.62-3.921 c0.376-0.155,0.766-0.229,1.15-0.229c1.176,0,2.292,0.695,2.771,1.85c2.777,6.686,9.655,11.004,17.523,11.004 c7.69,0,14.528-4.321,17.42-11.011c0.658-1.521,2.424-2.222,3.944-1.563S76.675,62.548,76.017,64.068z\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)), _g16 || (_g16 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile);\nexport default __webpack_public_path__ + \"static/media/smile.45b54b9d335aea400da0859475daa434.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport find from './find.svg';\nimport smile from './smile.svg';\n\nfunction Search({ className, goMain, onSearch, query }) {\n const [value, setValue] = useState(query);\n const [tag, setTag] = useState('All');\n function onChange(e) {\n setValue(e.target.value);\n }\n function onClick() {\n onSearch(value);\n }\n function onKeyDown(e) {\n if (e.key !== 'Enter') return;\n onSearch(value);\n }\n function renderTags() {\n return 'All,Maps,Images,News,Videos,More'.split(',').map(tagName => (\n setTag(tagName)}\n className={`tag ${tagName === tag ? 'active' : ''}`}\n key={tagName}\n >\n {tagName}\n
\n ));\n }\n return (\n \n
\n \n
\n

\n
\n
\n
\n

\n
\n
\n

\n
\n
\n
\n
\n
\n

\n
\n
\n
\n \n \n
\n \n Your search - {query} - did not\n match any documents.\n
\n Suggestions
\n \n - Make sure that all words are spelled correctly.
\n - Try different keywords.
\n - Try more general keywords.
\n
\n \n
\n
\n );\n}\n\nexport default styled(Search)`\n height: 100%;\n background: white;\n padding-top: 22px;\n position: relative;\n .top-bars {\n border-bottom: 1px rgb(235, 235, 235) solid;\n }\n .top-bar {\n height: 44px;\n }\n .app-bar {\n height: 58px;\n margin-left: 154px;\n position: relative;\n width: 584px;\n }\n .bar-items {\n display: flex;\n align-items: center;\n position: relative;\n height: 44px;\n }\n .left {\n position: absolute;\n left: 0;\n }\n .right {\n position: absolute;\n right: 4px;\n }\n .logo {\n width: 150px;\n height: 34px;\n padding: 4px 28px 0 30px;\n cursor: pointer;\n }\n .search-bar {\n display: flex;\n align-items: center;\n border-radius: 22px;\n width: 586px;\n height: 46px;\n border: 1px rgb(223, 225, 229) solid;\n padding: 5px 0 0 20px;\n input {\n outline: 0;\n border: 0;\n flex: 1;\n width: 30px;\n font-size: 16px;\n }\n img {\n width: 24px;\n height: 24px;\n }\n .icon {\n width: 40px;\n }\n .icon:nth-of-type(1) {\n cursor: pointer;\n }\n .icon:nth-of-type(2) {\n fill: rgb(66, 133, 244);\n color: rgb(66, 133, 244);\n }\n }\n .functions {\n display: flex;\n align-items: center;\n height: 100%;\n padding-right: 14px;\n img {\n margin: 8px;\n width: 24px;\n cursor: pointer;\n height: 24px;\n }\n }\n .tags {\n height: 100%;\n display: flex;\n font-size: 13px;\n align-items: center;\n color: rgb(119, 119, 119);\n }\n .tag.active {\n color: rgb(26, 115, 232);\n border-bottom: 3px rgb(26, 115, 232) solid;\n font-weight: 700;\n }\n .tag {\n height: 100%;\n cursor: pointer;\n padding: 28px 16px 0;\n &:hover:not(.active) {\n color: rgb(34, 34, 34);\n }\n }\n\n .content {\n color: rgb(34, 34, 34);\n padding: 55px 0 0 170px;\n p {\n margin: 16px 0;\n }\n }\n #search-in-content {\n font-weight: 700;\n }\n footer {\n position: absolute;\n bottom: 0;\n width: 100%;\n height: 83px;\n border-top: 1px solid rgba(0, 0, 0, 0.07);\n background-color: rgba(0, 0, 0, 0.05);\n .upper {\n position: relative;\n color: rgba(0, 0, 0, 0.54);\n width: 100%;\n font-size: 15px;\n padding-bottom: 2px;\n height: 50%;\n }\n .lower {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.07);\n height: 50%;\n color: rgb(95, 99, 104);\n font-size: 13px;\n width: 100%;\n .item {\n cursor: pointer;\n }\n .item:hover {\n text-decoration: underline;\n }\n }\n .footer-items {\n height: 100%;\n display: flex;\n align-items: center;\n padding-left: 150px;\n position: relative;\n }\n .left .item {\n margin-right: 27px;\n }\n }\n @media (max-width: 800px) {\n .top-bar {\n height: auto;\n }\n .bar-items.left {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n height: auto;\n position: relative;\n }\n .bar-items.right {\n display: none;\n }\n .search-bar {\n margin-top: 15px;\n width: 90%;\n height: 40px;\n border-radius: 3px;\n padding: 0px 5px 0 10px;\n .icon {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 30px;\n }\n }\n .app-bar {\n margin: 0 15px;\n width: calc(100% - 30px);\n height: 40px;\n }\n .tags {\n display: flex;\n width: 100%;\n }\n .tags.right {\n display: none;\n }\n .tag {\n text-align: center;\n padding: 16px 0 0 0;\n flex: 1;\n }\n .content {\n padding: 10px 40px;\n }\n .footer-items.left {\n padding-left: 25px;\n }\n footer .left .item {\n margin-right: 15px;\n }\n }\n`;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport smile from './smile.svg';\n\nfunction Main({ onSearch, className }) {\n const [value, setValue] = useState('');\n function onChange(e) {\n setValue(e.target.value);\n }\n function onClick() {\n onSearch(value);\n }\n function onKeyDown(e) {\n if (e.key !== 'Enter') return;\n onSearch(value);\n }\n return (\n \n
\n Gmail
\n Images
\n
\n \n
\n
\n \n
\n
\n

\n
\n
\n \n \n \n
\n \n
\n
\n );\n}\n\nexport default styled(Main)`\n height: 100%;\n background: white;\n position: relative;\n header {\n position: absolute;\n top: 0;\n width: 100%;\n height: 60px;\n padding: 0 15px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 13px;\n color: rgb(80, 80, 80);\n * {\n padding-right: 15px;\n cursor: pointer;\n }\n .text:hover {\n text-decoration: underline;\n }\n img {\n width: 48px;\n }\n }\n .content {\n display: flex;\n flex-direction: column;\n align-items: center;\n .logo {\n height: 92px;\n width: 272px;\n margin-top: 198px;\n }\n .search-bar {\n margin-left: 11px;\n margin-top: 26px;\n width: 586px;\n height: 46px;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.2);\n border-radius: 2px;\n display: flex;\n align-items: center;\n padding: 0 8px 0 16px;\n &:hover {\n box-shadow: 0 2px 8px -1px rgba(0, 0, 0, 0.3);\n }\n input {\n border: none;\n color: rgba(0, 0, 0, 0.87);\n height: 100%;\n flex: 1;\n height: 34px;\n margin-top: 5px;\n font-size: 16px;\n border: 0;\n outline: 0;\n }\n\n .icon {\n width: 40px;\n padding: 0 8px;\n height: 44px;\n cursor: pointer;\n display: flex;\n align-items: center;\n img {\n height: 24px;\n width: 24px;\n }\n }\n }\n .buttons {\n width: 100%;\n height: 36px;\n margin-top: 31px;\n display: flex;\n align-items: center;\n justify-content: center;\n button {\n padding: 0 16px;\n height: 36px;\n margin: 0 6px;\n border: 0;\n font-weight: 700;\n font-size: 13px;\n color: rgb(120, 120, 120);\n border: 1px transparent solid;\n background: rgb(242, 242, 242);\n }\n button:hover {\n border-radius: 2px;\n color: rgb(34, 34, 34);\n background: rgb(248, 248, 248);\n border: 1px rgb(198, 198, 198) solid;\n box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.1);\n }\n }\n }\n footer {\n position: absolute;\n bottom: 0;\n width: 100%;\n height: 83px;\n border-top: 1px solid rgba(0, 0, 0, 0.07);\n background-color: rgba(0, 0, 0, 0.05);\n .upper {\n position: relative;\n color: rgba(0, 0, 0, 0.54);\n width: 100%;\n font-size: 15px;\n padding-bottom: 2px;\n height: 50%;\n }\n .lower {\n position: relative;\n border-top: 1px solid rgba(0, 0, 0, 0.07);\n height: 50%;\n color: rgb(95, 99, 104);\n font-size: 13px;\n width: 100%;\n .item {\n cursor: pointer;\n }\n .item:hover {\n text-decoration: underline;\n }\n }\n .items {\n position: absolute;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .left {\n left: 3px;\n }\n .right {\n right: 3px;\n }\n .left .item {\n padding-left: 27px;\n }\n .right .item {\n padding-right: 27px;\n }\n }\n\n @media (max-width: 768px) {\n header {\n img {\n width: 36px;\n }\n }\n .content .search-bar {\n width: 90%;\n margin-left: 0;\n }\n .logo {\n width: 204px;\n height: 69px;\n }\n footer {\n .left .item {\n padding-left: 14px;\n }\n .right .item {\n padding-right: 14px;\n }\n .lower {\n .item {\n display: none;\n }\n }\n }\n }\n`;\n","import React from 'react';\n\nfunction DashedBox({ mouse, startPos }) {\n function getRect() {\n return {\n x: Math.min(startPos.x, mouse.docX),\n y: Math.min(startPos.y, mouse.docY),\n w: Math.abs(startPos.x - mouse.docX),\n h: Math.abs(startPos.y - mouse.docY),\n };\n }\n if (startPos) {\n const { x, y, w, h } = getRect();\n return (\n \n );\n }\n return null;\n}\n\nexport default DashedBox;\n","export const File = [\n {\n type: 'menu',\n text: 'New',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n items: [\n {\n type: 'item',\n text: 'Window',\n hotkey: 'Ctrl+N',\n },\n { type: 'separator' },\n {\n type: 'item',\n text: 'Message',\n },\n {\n type: 'item',\n text: 'Post',\n },\n {\n type: 'item',\n text: 'Contact',\n },\n {\n type: 'item',\n text: 'Internet Call',\n },\n ],\n },\n {\n type: 'item',\n text: 'Open...',\n hotkey: 'Ctrl+O',\n },\n {\n type: 'item',\n text: 'Edit',\n disable: true,\n },\n {\n type: 'item',\n disable: true,\n text: 'Save',\n hotkey: 'Ctrl+S',\n },\n {\n type: 'item',\n text: 'Save As...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Page Setup...',\n },\n {\n type: 'item',\n text: 'Print...',\n hotkey: 'Ctrl+P',\n },\n {\n type: 'item',\n text: 'Print Preview...',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n text: 'Send',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n items: [\n {\n type: 'item',\n text: 'Page by E-mail...',\n },\n {\n type: 'item',\n text: 'Link by E-mail...',\n },\n {\n type: 'item',\n text: 'Shortcut to Desktop',\n },\n ],\n },\n {\n type: 'item',\n text: 'Import and Export...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Properties',\n },\n {\n type: 'item',\n text: 'Work Offline',\n },\n {\n type: 'item',\n text: 'Close',\n },\n];\n\nconst Edit = [\n {\n type: 'item',\n disable: true,\n text: 'Cut',\n hotkey: 'Ctrl+X',\n },\n {\n type: 'item',\n disable: true,\n text: 'Copy',\n hotkey: 'Ctrl+C',\n },\n {\n type: 'item',\n disable: true,\n text: 'Paste',\n hotkey: 'Ctrl+V',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Select All',\n hotkey: 'Ctrl+A',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Find (on This Page)...',\n hotkey: 'Ctrl+F',\n },\n];\n\nconst View = [\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Toolbars',\n items: [\n {\n type: 'item',\n symbol: 'check',\n text: 'Standard Buttons',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Address Bar',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Links',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Lock the Toolbars',\n },\n {\n type: 'item',\n text: 'Customize...',\n },\n ],\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Status Bar',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Explorer Bar',\n items: [\n {\n type: 'item',\n text: 'Search',\n hotkey: 'Ctrl+E',\n },\n {\n type: 'item',\n text: 'Favorites',\n hotkey: 'Ctrl+I',\n },\n {\n type: 'item',\n text: 'History',\n hotkey: 'Ctrl+H',\n },\n {\n type: 'item',\n text: 'Folders',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Tip of the Day',\n },\n ],\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Go to',\n items: [\n {\n type: 'item',\n disable: true,\n text: 'Back',\n hotkey: 'Alt+Left Arrow',\n },\n {\n type: 'item',\n disable: true,\n text: 'Forward',\n hotkey: 'Alt+Right Arrow',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Home Page',\n hotkey: 'Alt+Home',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Cannot find server',\n symbol: 'check',\n },\n ],\n },\n {\n type: 'item',\n text: 'Stop',\n hotkey: 'Esc',\n },\n {\n type: 'item',\n text: 'Refresh',\n hotkey: 'F5',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Text Size',\n items: [\n {\n type: 'item',\n text: 'Largest',\n },\n {\n type: 'item',\n text: 'Larger',\n },\n {\n type: 'item',\n text: 'Medium',\n symbol: 'circle',\n },\n {\n type: 'item',\n text: 'Smaller',\n },\n {\n type: 'item',\n text: 'Smallest',\n },\n ],\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Encoding',\n items: [\n {\n type: 'item',\n text: 'Auto-Select',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Western European (Windows)',\n symbol: 'circle',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'More',\n items: [\n {\n type: 'item',\n text: 'Arabic(ASMO 708)',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Chinese Traditional',\n },\n ],\n },\n ],\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Source',\n },\n {\n type: 'item',\n disable: true,\n text: 'Privacy Report...',\n },\n {\n type: 'item',\n text: 'Full Screen',\n hotkey: 'F11',\n },\n];\nconst Favorites = [\n {\n type: 'item',\n text: 'Add to Favorites...',\n },\n {\n type: 'item',\n text: 'Organize Favorites...',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n symbol: 'folder',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Links',\n items: [\n {\n type: 'item',\n text: 'Customize Links',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Free Hotmail',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Windows',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Windows Marketplace',\n symbol: 'ie-book',\n },\n {\n type: 'item',\n text: 'Windows Media',\n symbol: 'ie-paper',\n },\n ],\n },\n {\n type: 'item',\n text: 'MSN.com',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Radio Station Guide',\n symbol: 'ie-paper',\n },\n];\nconst Tools = [\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Mail and News',\n items: [\n {\n type: 'item',\n text: 'Read Mail',\n },\n\n {\n type: 'item',\n text: 'New Message...',\n },\n {\n type: 'item',\n text: 'Send a Link...',\n },\n {\n type: 'item',\n text: 'Send Page...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Read News',\n },\n ],\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Pop-up Blocker',\n items: [\n {\n type: 'item',\n text: 'Turn Off Pop-up Blocker',\n },\n\n {\n type: 'item',\n text: 'Pop-up Blocker Settings...',\n },\n ],\n },\n {\n type: 'item',\n text: 'Manage Add-ons...',\n },\n {\n type: 'item',\n text: 'Synchronize...',\n },\n {\n type: 'item',\n text: 'Windows Update',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Windows Messenger',\n },\n {\n type: 'item',\n text: 'Diagnose Connection Problems...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Internet Options...',\n },\n];\nconst Help = [\n {\n type: 'item',\n text: 'Contents and Index',\n },\n {\n type: 'item',\n text: 'Tip of the Day',\n },\n {\n type: 'item',\n text: 'For Netscape Users',\n },\n {\n type: 'item',\n text: 'Online Support',\n },\n {\n type: 'item',\n text: 'Send Feedback',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'About Internet Explorer',\n },\n];\nexport default { File, Edit, View, Favorites, Tools, Help };\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { WindowDropDowns, Google } from 'components';\nimport dropDownData from './dropDownData';\nimport ie from 'assets/windowsIcons/ie-paper.png';\nimport printer from 'assets/windowsIcons/17(32x32).png';\nimport go from 'assets/windowsIcons/290.png';\nimport links from 'assets/windowsIcons/links.png';\nimport search from 'assets/windowsIcons/299(32x32).png';\nimport favorite from 'assets/windowsIcons/744(32x32).png';\nimport back from 'assets/windowsIcons/back.png';\nimport earth from 'assets/windowsIcons/earth.png';\nimport edit from 'assets/windowsIcons/edit.png';\nimport forward from 'assets/windowsIcons/forward.png';\nimport history from 'assets/windowsIcons/history.png';\nimport home from 'assets/windowsIcons/home.png';\nimport mail from 'assets/windowsIcons/mail.png';\nimport msn from 'assets/windowsIcons/msn.png';\nimport refresh from 'assets/windowsIcons/refresh.png';\nimport stop from 'assets/windowsIcons/stop.png';\nimport windows from 'assets/windowsIcons/windows.png';\nimport dropdown from 'assets/windowsIcons/dropdown.png';\n\nfunction InternetExplorer({ onClose }) {\n const [state, setState] = useState({\n route: 'main',\n query: '',\n iframeWidth: 800, // Default width\n });\n function onSearch(str) {\n if (str.length) {\n setState({\n route: 'search',\n query: str,\n });\n }\n }\n function goMain() {\n setState({\n route: 'main',\n query: '',\n });\n }\n function onClickOptionItem(item) {\n switch (item) {\n case 'Close':\n onClose();\n break;\n case 'Home Page':\n case 'Back':\n goMain();\n break;\n default:\n }\n }\n useEffect(() => {\n const handleResize = () => {\n const newWidth = window.innerWidth < 800 ? window.innerWidth : 800;\n setState(prevState => ({\n ...prevState,\n iframeWidth: newWidth,\n }));\n };\n\n handleResize(); // Initial call to set width\n\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const { iframeWidth } = state;\n \n return (\n \n
\n \n \n
\n
\n \n
\n \n

\n
Back\n
\n
\n \n

\n
\n
\n \n

\n
\n \n

\n
\n \n

\n
\n \n \n

\n
Search\n
\n \n

\n
Favorites\n
\n \n

\n
\n \n \n

\n
\n
\n \n

\n
\n \n

\n
\n \n

\n
\n \n
\n Address
\n \n

\n
\n {`https://www.google.com${\n state.route === 'search'\n ? `/search?q=${encodeURIComponent(state.query)}`\n : ''\n }`}\n
\n

\n
\n \n

\n
Go\n
\n \n \n
Links\n

\n
\n \n
\n
\n
\n );\n}\n\nconst Div = styled.div`\n height: 100%;\n width: 100%;\n position: absolute;\n display: flex;\n overflow: hidden;\n flex-direction: column;\n background: linear-gradient(to right, #edede5 0%, #ede8cd 100%);\n\n .ie__toolbar {\n position: relative;\n display: flex;\n align-items: center;\n line-height: 100%;\n height: 24px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.7);\n flex-shrink: 0;\n }\n .ie__options {\n height: 23px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n border-right: 1px solid rgba(0, 0, 0, 0.15);\n padding-left: 2px;\n flex: 1;\n }\n .ie__windows-logo {\n height: 100%;\n border-left: 1px solid white;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n .ie__function_bar {\n height: 36px;\n display: flex;\n align-items: center;\n font-size: 11px;\n padding: 1px 3px 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n .ie__function_bar__button {\n display: flex;\n height: 100%;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0);\n border-radius: 3px;\n &:hover {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.1);\n }\n &:hover:active {\n border: 1px solid rgb(185, 185, 185);\n background-color: #dedede;\n box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.7);\n color: rgba(255, 255, 255, 0.7);\n & > * {\n transform: translate(1px, 1px);\n }\n }\n }\n .ie__function_bar__button--disable {\n filter: grayscale(1);\n opacity: 0.7;\n display: flex;\n height: 100%;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0);\n }\n .ie__function_bar__text {\n margin-right: 4px;\n }\n .ie__function_bar__icon {\n height: 30px;\n width: 30px;\n &--normalize {\n height: 22px;\n width: 22px;\n margin: 0 4px 0 1px;\n }\n &--margin12 {\n height: 22px;\n width: 22px;\n margin: 0 1px 0 2px;\n }\n &--margin-1 {\n margin: 0 -1px;\n height: 30px;\n width: 30px;\n }\n }\n .ie__function_bar__separate {\n height: 90%;\n width: 1px;\n background-color: rgba(0, 0, 0, 0.2);\n margin: 0 2px;\n }\n .ie__function_bar__arrow {\n height: 100%;\n display: flex;\n align-items: center;\n margin: 0 4px;\n &:before {\n content: '';\n display: block;\n border-width: 3px 3px 0;\n border-color: #000 transparent;\n border-style: solid;\n }\n }\n .ie__function_bar__arrow--margin-11 {\n height: 100%;\n display: flex;\n align-items: center;\n margin: 0 1px 0 -1px;\n &:before {\n content: '';\n display: block;\n border-width: 3px 3px 0;\n border-color: #000 transparent;\n border-style: solid;\n }\n }\n .ie__address_bar {\n border-top: 1px solid rgba(255, 255, 255, 0.7);\n height: 22px;\n font-size: 11px;\n display: flex;\n align-items: center;\n padding: 0 2px 2px;\n box-shadow: inset 0 -2px 3px -1px #2d2d2d;\n }\n .ie__address_bar__title {\n line-height: 100%;\n color: rgba(0, 0, 0, 0.5);\n padding: 5px;\n }\n .ie__address_bar__content {\n border: rgba(122, 122, 255, 0.6) 1px solid;\n height: 100%;\n display: flex;\n flex: 1;\n align-items: center;\n background-color: white;\n position: relative;\n &__img {\n width: 14px;\n height: 14px;\n }\n &__img:last-child {\n width: 15px;\n height: 15px;\n right: 1px;\n position: absolute;\n }\n &__img:last-child:hover {\n filter: brightness(1.1);\n }\n &__text {\n position: absolute;\n white-space: nowrap;\n left: 16px;\n right: 17px;\n overflow: hidden;\n }\n }\n .ie__address_bar__go {\n display: flex;\n align-items: center;\n padding: 0 18px 0 5px;\n height: 100%;\n position: relative;\n &__img {\n height: 95%;\n border: 1px solid rgba(255, 255, 255, 0.2);\n margin-right: 3px;\n }\n }\n .ie__address_bar__links {\n display: flex;\n align-items: center;\n padding: 0 18px 0 5px;\n height: 100%;\n position: relative;\n &__img {\n position: absolute;\n right: 2px;\n top: 3px;\n height: 5px;\n width: 8px;\n }\n &__text {\n color: rgba(0, 0, 0, 0.5);\n }\n }\n .ie__address_bar__separate {\n height: 100%;\n width: 1px;\n background-color: rgba(0, 0, 0, 0.1);\n box-shadow: 1px 0 rgba(255, 255, 255, 0.7);\n }\n .ie__content {\n flex: 1;\n overflow: auto;\n padding-left: 1px;\n border-left: 1px solid #6f6f6f;\n background-color: #f1f1f1;\n position: relative;\n }\n .ie__content__inner {\n position: relative;\n min-height: 800px;\n min-width: 800px;\n width: 100%;\n height: 100%;\n }\n .ie__footer {\n height: 20px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 3px rgba(50, 50, 50, 0.8);\n background-color: rgb(236, 233, 216);\n display: flex;\n align-items: center;\n padding-top: 2px;\n }\n .ie__footer__status {\n flex: 1;\n height: 100%;\n display: flex;\n align-items: center;\n padding-left: 2px;\n &__text {\n font-size: 11px;\n }\n &__img {\n height: 14px;\n width: 14px;\n margin-right: 3px;\n }\n }\n .ie__footer__block {\n height: 85%;\n width: 22px;\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n box-shadow: inset 1px 0 rgba(255, 255, 255, 0.7);\n }\n .ie__footer__right {\n display: flex;\n align-items: center;\n width: 150px;\n height: 80%;\n border-left: 1px solid rgba(0, 0, 0, 0.11);\n box-shadow: inset 1px 0 rgba(255, 255, 255, 0.7);\n padding-left: 5px;\n position: relative;\n &__text {\n font-size: 11px;\n }\n &__img {\n height: 14px;\n width: 14px;\n margin-right: 3px;\n }\n &__dots {\n position: absolute;\n right: 11px;\n bottom: -1px;\n width: 2px;\n height: 2px;\n box-shadow: 2px 0px rgba(0, 0, 0, 0.25), 5.5px 0px rgba(0, 0, 0, 0.25),\n 9px 0px rgba(0, 0, 0, 0.25), 5.5px -3.5px rgba(0, 0, 0, 0.25),\n 9px -3.5px rgba(0, 0, 0, 0.25), 9px -7px rgba(0, 0, 0, 0.25),\n 3px 1px rgba(255, 255, 255, 1), 6.5px 1px rgba(255, 255, 255, 1),\n 10px 1px rgba(255, 255, 255, 1), 10px -2.5px rgba(255, 255, 255, 1),\n 10px -6px rgba(255, 255, 255, 1);\n }\n }\n`;\n\nexport default InternetExplorer;\n","export const Config = {\n Beginner: {\n rows: 9,\n columns: 9,\n ceils: 81,\n mines: 10,\n },\n Intermediate: {\n rows: 16,\n columns: 16,\n ceils: 256,\n mines: 40,\n },\n Expert: {\n rows: 16,\n columns: 30,\n ceils: 480,\n mines: 99,\n },\n};\n","export const Game = [\n {\n type: 'item',\n text: 'New',\n hotkey: 'F2',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Beginner',\n },\n {\n type: 'item',\n text: 'Intermediate',\n },\n {\n type: 'item',\n text: 'Expert',\n },\n {\n type: 'item',\n text: 'Custom...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Marks (?)',\n symbol: 'check',\n },\n {\n type: 'item',\n text: 'Color',\n symbol: 'check',\n },\n {\n type: 'item',\n text: 'Sound',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Best Times...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Exit',\n },\n];\n\nconst Help = [\n {\n type: 'item',\n text: 'Contents',\n hotkey: 'F1',\n },\n {\n type: 'item',\n text: 'Search for Help on...',\n },\n {\n type: 'item',\n text: 'Using Help',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'About Minesweeper',\n },\n];\nexport default { Game, Help };\n","import React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { WindowDropDowns } from 'components';\nimport dropDownData from './dropDownData';\nimport dead from 'assets/minesweeper/dead.png';\nimport smile from 'assets/minesweeper/smile.png';\nimport win from 'assets/minesweeper/win.png';\nimport ohh from 'assets/minesweeper/ohh.png';\nimport empty from 'assets/empty.png';\nimport open1 from 'assets/minesweeper/open1.png';\nimport open2 from 'assets/minesweeper/open2.png';\nimport open3 from 'assets/minesweeper/open3.png';\nimport open4 from 'assets/minesweeper/open4.png';\nimport open5 from 'assets/minesweeper/open5.png';\nimport open6 from 'assets/minesweeper/open6.png';\nimport open7 from 'assets/minesweeper/open7.png';\nimport open8 from 'assets/minesweeper/open8.png';\nimport flag from 'assets/minesweeper/flag.png';\nimport mine from 'assets/minesweeper/mine-ceil.png';\nimport mineDeath from 'assets/minesweeper/mine-death.png';\nimport misFlagged from 'assets/minesweeper/misflagged.png';\nimport question from 'assets/minesweeper/question.png';\nimport digit0 from 'assets/minesweeper/digit0.png';\nimport digit1 from 'assets/minesweeper/digit1.png';\nimport digit2 from 'assets/minesweeper/digit2.png';\nimport digit3 from 'assets/minesweeper/digit3.png';\nimport digit4 from 'assets/minesweeper/digit4.png';\nimport digit5 from 'assets/minesweeper/digit5.png';\nimport digit6 from 'assets/minesweeper/digit6.png';\nimport digit7 from 'assets/minesweeper/digit7.png';\nimport digit8 from 'assets/minesweeper/digit8.png';\nimport digit9 from 'assets/minesweeper/digit9.png';\nimport digit_ from 'assets/minesweeper/digit-.png';\n\nconst digits = [\n digit0,\n digit1,\n digit2,\n digit3,\n digit4,\n digit5,\n digit6,\n digit7,\n digit8,\n digit9,\n];\nfunction renderDigits(number) {\n let numberStr;\n if (number < 0) {\n const _number = -number % 100;\n if (_number === 0) {\n numberStr = '00';\n } else if (_number < 10) {\n numberStr = '0' + _number;\n } else {\n numberStr = String(_number);\n }\n return (\n <>\n
\n {numberStr.split('').map((n, i) => (\n
\n ))}\n >\n );\n }\n\n numberStr = number < 999 ? String(number) : '999';\n if (number < 10) numberStr = '00' + numberStr;\n else if (number < 100) numberStr = '0' + numberStr;\n return numberStr\n .split('')\n .map((n, i) =>
);\n}\n\nfunction genDropDownData(difficulty) {\n let _Game = [...dropDownData.Game];\n _Game[2].symbol = difficulty === 'Beginner' && 'check';\n _Game[3].symbol = difficulty === 'Intermediate' && 'check';\n _Game[4].symbol = difficulty === 'Expert' && 'check';\n return { Game: _Game, Help: dropDownData.Help };\n}\n\nfunction MineSweeperView({\n ceils,\n className,\n changeCeilState,\n onReset,\n openCeil,\n openCeils,\n mines,\n status,\n seconds,\n onClose,\n difficulty,\n openingCeil,\n openingCeils,\n}) {\n const face = useRef(null);\n const [mouseDownContent, setMouseDownContent] = useState(false);\n const [openBehavior, setOpenBehavior] = useState({ index: -1, behavior: '' });\n function remainMines() {\n return (\n mines -\n ceils.filter(ceil => ceil.state === 'flag' || ceil.state === 'misflagged')\n .length\n );\n }\n function statusFace() {\n if (mouseDownContent) return
;\n switch (status) {\n case 'died':\n return
;\n case 'won':\n return
;\n default:\n return
;\n }\n }\n function onMouseDownContent(e) {\n if (e.button !== 0) return;\n if (\n face.current.contains(e.target) ||\n status === 'won' ||\n status === 'died'\n )\n return;\n setMouseDownContent(true);\n }\n useEffect(() => {\n const { index, behavior } = openBehavior;\n switch (behavior) {\n case 'single':\n return openingCeil(index);\n case 'multi':\n return openingCeils(index);\n default:\n openingCeil(-1);\n }\n // eslint-disable-next-line\n }, [openBehavior.index, openBehavior.behavior]);\n function onMouseDownCeils(e) {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.children,\n e.target.closest('.mine__ceil'),\n );\n if (e.button === 2 && e.buttons === 2 && index !== -1) {\n changeCeilState(index);\n } else if (e.button === 0 && e.buttons === 1) {\n setOpenBehavior({\n index,\n behavior: 'single',\n });\n } else if (e.buttons === 3) {\n setOpenBehavior({\n index,\n behavior: 'multi',\n });\n }\n }\n function onMouseOverCeils(e) {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.children,\n e.target.closest('.mine__ceil'),\n );\n setOpenBehavior({\n index,\n behavior: openBehavior.behavior,\n });\n }\n function onMouseUpCeils() {\n const { behavior, index } = openBehavior;\n if (index === -1) return;\n if (behavior === 'single') {\n openCeil(index);\n } else if (behavior === 'multi') {\n openCeils(index);\n }\n }\n function onClickOptionItem(item) {\n switch (item) {\n case 'Exit':\n onClose();\n break;\n case 'Beginner':\n case 'Intermediate':\n case 'Expert':\n onReset(item);\n break;\n case 'New':\n onReset();\n break;\n default:\n }\n }\n function onTouchStartCeils(e) {\n // Get the parent element containing the elements you're interested in\n const parentElement = e.currentTarget;\n \n // Find the element that matches the selector '.mine__ceil' among the target's ancestors\n const targetCeil = e.target.closest('.mine__ceil');\n \n // If the targetCeil is found and it's a child of parentElement, proceed\n if (targetCeil && parentElement.contains(targetCeil)) {\n const index = Array.prototype.indexOf.call(\n parentElement.children,\n targetCeil\n );\n\n // For touch events, there's no concept of button, so we need to handle the behavior differently\n if (index !== -1) {\n // For single tap, we can consider it as 'left-click'\n setOpenBehavior({\n index,\n behavior: 'single',\n });\n }\n }\n }\n \n function onTouchMoveCeils(e) {\n onMouseOverCeils(e.touches[0]);\n }\n\n function onTouchEndCeils(e) {\n onMouseUpCeils(e.touches[0]);\n }\n function onTouchStartContent(e) {\n onMouseDownContent(e.touches[0]);\n }\n useEffect(() => {\n window.addEventListener('mouseup', onMouseUp);\n return () => {\n window.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n function onMouseUp(e) {\n setOpenBehavior({ index: -1, behavior: '' });\n setMouseDownContent(false);\n }\n useEffect(() => {\n window.addEventListener('mouseup', onMouseUp);\n return () => {\n window.removeEventListener('mouseup', onMouseUp);\n };\n }, []);\n return (\n e.preventDefault()}>\n
\n \n
\n
\n \n
\n {renderDigits(remainMines())}\n
\n
\n
\n
\n
{renderDigits(seconds)}
\n
\n \n \n
\n \n
\n );\n}\nfunction getTextImg(index) {\n return [empty, open1, open2, open3, open4, open5, open6, open7, open8][index];\n}\nfunction Ceils({ ceils }) {\n function renderContent(ceil) {\n const { state, minesAround, opening } = ceil;\n switch (state) {\n case 'open':\n return ;\n case 'flag':\n return ;\n case 'misflagged':\n return ;\n case 'mine':\n return ;\n case 'die':\n return ;\n case 'unknown':\n return opening ? : ;\n default:\n return opening ? : ;\n }\n }\n\n return ceils.map((ceil, index) => (\n \n {renderContent(ceil)}\n
\n ));\n}\n\nconst Die = () => (\n <>\n \n
\n >\n);\nconst MisFlagged = () => (\n <>\n \n
\n >\n);\nconst Flag = () => (\n <>\n \n
\n >\n);\nconst MinesAround = ({ mines }) => (\n <>\n \n
\n >\n);\nconst Question = () => (\n <>\n \n
\n >\n);\nconst QuestionOpen = () => (\n <>\n \n
\n >\n);\nconst Mine = () => (\n <>\n \n
\n >\n);\n\nconst CeilBackgroundCover = styled.div`\n position: absolute;\n width: 16px;\n height: 16px;\n border-left: rgb(245, 245, 245) solid 2px;\n border-top: rgb(245, 245, 245) solid 2px;\n border-right: rgb(128, 128, 128) solid 2px;\n border-bottom: rgb(128, 128, 128) solid 2px;\n`;\nconst CeilBackgroundOpen = styled.div`\n position: absolute;\n width: 16px;\n height: 16px;\n border-left: rgb(128, 128, 128) solid 1px;\n border-top: rgb(128, 128, 128) solid 1px;\n`;\n\nexport default styled(MineSweeperView)`\n img {\n pointer-events: none;\n }\n .mine__options {\n height: 20px;\n background: rgb(236, 233, 216);\n }\n .mine__content {\n border-left: rgb(245, 245, 245) solid 3px;\n border-top: rgb(245, 245, 245) solid 3px;\n background-color: rgb(192, 192, 192);\n padding: 5px;\n }\n .mine__score-bar {\n height: 34px;\n border-radius: 1px;\n border-top: rgb(128, 128, 128) solid 2px;\n border-left: rgb(128, 128, 128) solid 2px;\n border-right: rgb(245, 245, 245) solid 2px;\n border-bottom: rgb(245, 245, 245) solid 2px;\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 3px 7px 3px 4px;\n }\n .mine__digits__outer {\n width: 40px;\n height: 24px;\n border-width: 0 1px 1px 0;\n border-style: solid;\n border-color: #fff;\n text-align: right;\n }\n .mine__face__outer {\n width: 24px;\n height: 24px;\n border-top: 1px solid rgb(128, 128, 128);\n border-left: 1px solid rgb(128, 128, 128);\n border-radius: 2px;\n transform: translateX(1px);\n }\n .mine__face {\n border-radius: 2px;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgb(192, 192, 192);\n border-width: 2px;\n border-style: solid;\n border-color: rgb(245, 245, 245) rgb(128, 128, 128) rgb(128, 128, 128)\n rgb(245, 245, 245);\n outline: none;\n &:active:hover {\n border-width: 1px;\n border-color: rgb(128, 128, 128);\n img {\n transform: translate(1px, 1px);\n }\n img:nth-child(1) {\n display: none;\n }\n img:nth-child(2) {\n display: block;\n }\n }\n img:nth-child(2) {\n display: none;\n }\n }\n .mine__content__inner {\n display: grid;\n grid-template-columns: repeat(${({ columns }) => columns}, 16px);\n grid-template-rows: repeat(${({ rows }) => rows}, 16px);\n border-top: rgb(128, 128, 128) solid 3px;\n border-left: rgb(128, 128, 128) solid 3px;\n border-right: rgb(245, 245, 245) solid 3px;\n border-bottom: rgb(245, 245, 245) solid 3px;\n }\n .mine__ceil {\n position: relative;\n img {\n position: absolute;\n width: 16px;\n height: 16px;\n }\n }\n`;\n","import React, { useReducer, useEffect, useState } from 'react';\nimport sampleSize from 'lodash.samplesize';\n\nimport { Config } from './config';\nimport MinesweeperView from './MinesweeperView';\n\n// state: {\n// difficulty: 'Beginner' || 'Intermediate' || 'Expert',\n// status: 'new' || 'started' || 'died' || 'won',\n// rows: Number,\n// columns: Number,\n// mines: Number,\n// ceils: Array {\n// state: 'cover' || 'flag' || 'unknown' || 'open' || 'die' || 'misflagged',\n// minesAround: Number (negative for mine itself),\n// opening: true || false\n// }\n// }\n\nfunction getInitState(difficulty = 'Beginner') {\n return {\n difficulty,\n status: 'new',\n ...genGameConfig(Config[difficulty]),\n };\n}\n\nfunction reducer(state, action = {}) {\n switch (action.type) {\n case 'CLEAR_MAP':\n const difficulty = action.payload || state.difficulty;\n return getInitState(difficulty);\n case 'START_GAME':\n const exclude = action.payload;\n return {\n ...state,\n ...insertMines({ ...Config[state.difficulty], exclude }, state.ceils),\n status: 'started',\n };\n case 'OPEN_CEIL': {\n const indexes = autoCeils(state, action.payload);\n const ceils = [...state.ceils];\n indexes.forEach(i => {\n const ceil = ceils[i];\n ceils[i] = { ...ceil, state: 'open' };\n });\n return {\n ...state,\n ceils,\n };\n }\n case 'CHANGE_CEIL_STATE': {\n const index = action.payload;\n const ceils = [...state.ceils];\n const ceil = state.ceils[index];\n let newState;\n switch (ceil.state) {\n case 'cover':\n newState = 'flag';\n break;\n case 'flag':\n newState = 'unknown';\n break;\n case 'unknown':\n newState = 'cover';\n break;\n default:\n throw new Error(`Unknown ceil state ${ceil.state}`);\n }\n ceils[index] = { ...ceil, state: newState };\n return {\n ...state,\n ceils,\n };\n }\n case 'GAME_OVER': {\n const ceils = state.ceils.map(ceil => {\n if (ceil.minesAround < 0 && ceil.state !== 'flag') {\n return {\n ...ceil,\n state: 'mine',\n };\n } else if (ceil.state === 'flag' && ceil.minesAround >= 0) {\n return {\n ...ceil,\n state: 'misflagged',\n };\n } else {\n return {\n ...ceil,\n opening: false,\n };\n }\n });\n ceils[action.payload].state = 'die';\n return {\n ...state,\n status: 'died',\n ceils,\n };\n }\n case 'WON': {\n const ceils = state.ceils.map(ceil => {\n if (ceil.minesAround >= 0) {\n return {\n ...ceil,\n state: 'open',\n };\n } else {\n return {\n ...ceil,\n state: 'flag',\n };\n }\n });\n return {\n ...state,\n status: 'won',\n ceils,\n };\n }\n case 'OPENING_CEIL': {\n const ceil = state.ceils[action.payload];\n const ceils = state.ceils.map(ceil => ({\n ...ceil,\n opening: false,\n }));\n ceils[action.payload] = { ...ceil, opening: true };\n return {\n ...state,\n ceils,\n };\n }\n case 'OPENING_CEILS': {\n const indexes = getNearIndexes(action.payload, state.rows, state.columns);\n const ceils = state.ceils.map(ceil => ({\n ...ceil,\n opening: false,\n }));\n [...indexes, action.payload].forEach(index => {\n const ceil = { ...ceils[index] };\n ceil.opening = true;\n ceils[index] = ceil;\n });\n return {\n ...state,\n ceils,\n };\n }\n default:\n return state;\n }\n}\n\nfunction MineSweeper({ defaultDifficulty, onClose }) {\n const [state, dispatch] = useReducer(\n reducer,\n getInitState(defaultDifficulty),\n );\n const seconds = useTimer(state.status);\n function changeCeilState(index) {\n const ceil = state.ceils[index];\n if (ceil.state === 'open' || ['won', 'died'].includes(state.status)) return;\n dispatch({ type: 'CHANGE_CEIL_STATE', payload: index });\n }\n function openCeil(index) {\n switch (state.status) {\n case 'new':\n dispatch({ type: 'START_GAME', payload: index });\n dispatch({ type: 'OPEN_CEIL', payload: index });\n break;\n case 'started':\n const ceil = state.ceils[index];\n if (['flag', 'open'].includes(ceil.state)) {\n break;\n } else if (ceil.minesAround < 0) {\n dispatch({ type: 'GAME_OVER', payload: index });\n } else {\n dispatch({ type: 'OPEN_CEIL', payload: index });\n }\n break;\n default:\n // console.log(state.status);\n }\n }\n function openCeils(index) {\n const ceil = state.ceils[index];\n if (\n ceil.state !== 'open' ||\n ceil.minesAround <= 0 ||\n state.status !== 'started'\n )\n return;\n const indexes = getNearIndexes(index, state.rows, state.columns);\n const nearCeils = indexes.map(i => state.ceils[i]);\n if (\n nearCeils.filter(ceil => ceil.state === 'flag').length !==\n ceil.minesAround\n )\n return;\n const mineIndex = indexes.find(\n i => state.ceils[i].minesAround < 0 && state.ceils[i].state !== 'flag',\n );\n if (mineIndex) {\n dispatch({ type: 'GAME_OVER', payload: mineIndex });\n } else {\n indexes.forEach(i => dispatch({ type: 'OPEN_CEIL', payload: i }));\n }\n }\n useEffect(() => {\n if (state.status === 'started' && checkRemains() === 0) {\n dispatch({ type: 'WON' });\n }\n });\n function onReset(difficulty) {\n dispatch({ type: 'CLEAR_MAP', payload: difficulty });\n }\n function checkRemains() {\n const safeCeils = state.ceils\n .filter(ceil => ceil.state !== 'open')\n .filter(ceil => ceil.minesAround >= 0);\n return safeCeils.length;\n }\n function openingCeil(index) {\n if (['died', 'won'].includes(state.status)) return;\n dispatch({ type: 'OPENING_CEIL', payload: index });\n }\n function openingCeils(index) {\n if (['died', 'won'].includes(state.status)) return;\n dispatch({ type: 'OPENING_CEILS', payload: index });\n }\n return (\n \n );\n}\n\nfunction genGameConfig(config) {\n const { rows, columns, mines } = config;\n const ceils = Array(rows * columns)\n .fill()\n .map(_ => ({\n state: 'cover',\n minesAround: 0,\n opening: false,\n }));\n return {\n rows,\n columns,\n ceils,\n mines,\n };\n}\n\nfunction insertMines(config, originCeils) {\n const { rows, columns, mines, exclude } = config;\n const ceils = originCeils.map(ceil => ({ ...ceil }));\n if (rows * columns !== ceils.length)\n throw new Error('rows and columns not equal to ceils');\n const indexArray = [...Array(rows * columns).keys()];\n sampleSize(\n indexArray.filter(i => i !== exclude),\n mines,\n ).forEach(chosen => {\n ceils[chosen].minesAround = -10;\n getNearIndexes(chosen, rows, columns).forEach(nearIndex => {\n ceils[nearIndex].minesAround += 1;\n });\n });\n return {\n rows,\n columns,\n ceils,\n mines,\n };\n}\n\nfunction autoCeils(state, index) {\n const { rows, columns } = state;\n const ceils = state.ceils.map(ceil => ({\n ...ceil,\n walked: false,\n }));\n return walkCeils(index);\n function walkCeils(index) {\n const ceil = ceils[index];\n if (ceil.walked || ceil.minesAround < 0 || ceil.state === 'flag') return [];\n ceil.walked = true;\n if (ceil.minesAround > 0) return [index];\n return [\n index,\n ...getNearIndexes(index, rows, columns).reduce(\n (lastIndexes, ceilIndex) => {\n return [...lastIndexes, ...walkCeils(ceilIndex)];\n },\n [],\n ),\n ];\n }\n}\n\nfunction getNearIndexes(index, rows, columns) {\n if (index < 0 || index >= rows * columns) return [];\n const row = Math.floor(index / columns);\n const column = index % columns;\n return [\n index - columns - 1,\n index - columns,\n index - columns + 1,\n index - 1,\n index + 1,\n index + columns - 1,\n index + columns,\n index + columns + 1,\n ].filter((_, arrayIndex) => {\n if (row === 0 && arrayIndex < 3) return false;\n if (row === rows - 1 && arrayIndex > 4) return false;\n if (column === 0 && [0, 3, 5].includes(arrayIndex)) return false;\n if (column === columns - 1 && [2, 4, 7].includes(arrayIndex)) return false;\n return true;\n });\n}\n\nfunction useTimer(status) {\n const [seconds, setSeconds] = useState(0);\n function addSecond() {\n setSeconds(sec => sec + 1);\n }\n useEffect(() => {\n let timer;\n switch (status) {\n case 'started':\n timer = setInterval(addSecond, 1000);\n break;\n case 'new':\n setSeconds(0);\n break;\n default:\n break;\n }\n return () => clearInterval(timer);\n }, [status]);\n return seconds;\n}\n\nexport default MineSweeper;\n","import React, { useEffect } from 'react';\nimport styled from 'styled-components';\n\nimport errorSoundSrc from 'assets/sounds/error.wav';\nimport error from 'assets/windowsIcons/897(32x32).png';\n\nfunction lineBreak(str) {\n return str.split('\\n').map((s, i) => (\n \n {s}\n
\n ));\n}\n\nfunction Error({ onClose, message = \"Something's wrong!\" }) {\n useEffect(() => {\n try {\n new Audio(errorSoundSrc).play();\n } catch (e) {\n console.log(e);\n }\n }, []);\n return (\n \n
\n

\n
{lineBreak(message)}
\n
\n
\n
\n );\n}\n\nconst Div = styled.div`\n background-color: #f5f5f5;\n width: 100%;\n height: 100%;\n font-size: 11px;\n padding: 12px;\n display: flex;\n flex-direction: column;\n .error__top {\n display: flex;\n flex: 1;\n }\n .error__img {\n width: 30px;\n height: 30px;\n }\n .error__messages {\n padding: 2px 20px 12px;\n }\n .error__message {\n line-height: 16px;\n }\n .error__bottom {\n display: flex;\n width: 100%;\n justify-content: center;\n }\n .error__button {\n width: 80px;\n height: 22px;\n display: flex;\n border: 1px solid black;\n justify-content: center;\n align-items: center;\n box-shadow: inset -1px -1px 1px black;\n &:hover:active {\n box-shadow: inset 1px 1px 1px black;\n & > * {\n transform: translate(1px, 1px);\n }\n }\n }\n .error__confirm {\n line-height: 11px;\n }\n`;\n\nexport default Error;\n","export const File = [\n {\n type: 'item',\n text: 'Create Shortcut',\n disable: true,\n },\n {\n type: 'item',\n text: 'Delete',\n disable: true,\n },\n {\n type: 'item',\n text: 'Rename',\n disable: true,\n },\n {\n type: 'item',\n disable: true,\n text: 'Properties',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Close',\n },\n];\nconst Edit = [\n {\n type: 'item',\n disable: true,\n text: 'Undo',\n hotkey: 'Ctrl+Z',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n disable: true,\n text: 'Cut',\n hotkey: 'Ctrl+X',\n },\n {\n type: 'item',\n disable: true,\n text: 'Copy',\n hotkey: 'Ctrl+C',\n },\n {\n type: 'item',\n disable: true,\n text: 'Paste',\n hotkey: 'Ctrl+V',\n },\n {\n type: 'item',\n disable: true,\n text: 'Paste Shortcut',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Copy To Folder...',\n disable: true,\n },\n {\n type: 'item',\n text: 'Move To Folder...',\n disable: true,\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Select All',\n hotkey: 'Ctrl+A',\n },\n {\n type: 'item',\n text: 'Invert Selection',\n },\n];\n\nconst View = [\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Toolbars',\n items: [\n {\n type: 'item',\n symbol: 'check',\n text: 'Standard Buttons',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Address Bar',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Links',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Lock the Toolbars',\n },\n {\n type: 'item',\n text: 'Customize...',\n },\n ],\n },\n {\n type: 'item',\n symbol: 'check',\n text: 'Status Bar',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Explorer Bar',\n items: [\n {\n type: 'item',\n text: 'Search',\n hotkey: 'Ctrl+E',\n },\n {\n type: 'item',\n text: 'Favorites',\n hotkey: 'Ctrl+I',\n },\n {\n type: 'item',\n text: 'History',\n hotkey: 'Ctrl+H',\n },\n {\n type: 'item',\n text: 'Folders',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Tip of the Day',\n },\n ],\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Thumbnails',\n },\n {\n type: 'item',\n text: 'Tiles',\n symbol: 'circle',\n },\n {\n type: 'item',\n text: 'Icons',\n },\n {\n type: 'item',\n text: 'List',\n },\n {\n type: 'item',\n text: 'Details',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Arrange Icons by',\n items: [\n {\n type: 'item',\n text: 'Name',\n },\n {\n type: 'item',\n text: 'Type',\n symbol: 'circle',\n },\n {\n type: 'item',\n text: 'Total Size',\n },\n {\n type: 'item',\n text: 'Free Space',\n },\n {\n type: 'item',\n text: 'Comments',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Show in Groups',\n symbol: 'check',\n },\n {\n type: 'item',\n text: 'Auto Arrange',\n },\n {\n type: 'item',\n text: 'Align to Grid',\n },\n ],\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Choose Details...',\n },\n {\n type: 'menu',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Go to',\n items: [\n {\n type: 'item',\n disable: true,\n text: 'Back',\n hotkey: 'Alt+Left Arrow',\n },\n {\n type: 'item',\n disable: true,\n text: 'Forward',\n hotkey: 'Alt+Right Arrow',\n },\n {\n type: 'item',\n text: 'Up One Level',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Home Page',\n hotkey: 'Alt+Home',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'My Computer',\n symbol: 'check',\n },\n ],\n },\n {\n type: 'item',\n text: 'Refresh',\n },\n];\nconst Favorites = [\n {\n type: 'item',\n text: 'Add to Favorites...',\n },\n {\n type: 'item',\n text: 'Organize Favorites...',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n symbol: 'folder',\n position: {\n left: 'calc(100% - 4px)',\n top: '-3px',\n },\n text: 'Links',\n items: [\n {\n type: 'item',\n text: 'Customize Links',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Free Hotmail',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Windows',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Windows Marketplace',\n symbol: 'ie-book',\n },\n {\n type: 'item',\n text: 'Windows Media',\n symbol: 'ie-paper',\n },\n ],\n },\n {\n type: 'item',\n text: 'MSN.com',\n symbol: 'ie-paper',\n },\n {\n type: 'item',\n text: 'Radio Station Guide',\n symbol: 'ie-paper',\n },\n];\nconst Tools = [\n {\n type: 'item',\n text: 'Map Network Drive...',\n },\n {\n type: 'item',\n text: 'Disconnect Network Drive...',\n },\n {\n type: 'item',\n text: 'Synchronize...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Folder Options...',\n },\n];\nconst Help = [\n {\n type: 'item',\n text: 'Help and Support Center',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Is this copy of Windows legal?',\n },\n {\n type: 'item',\n text: 'About Windows',\n },\n];\nexport default { File, Edit, View, Favorites, Tools, Help };\n","import React from 'react';\nimport styled from 'styled-components';\n\nimport { WindowDropDowns } from 'components';\nimport dropDownData from './dropDownData';\nimport go from 'assets/windowsIcons/290.png';\nimport search from 'assets/windowsIcons/299(32x32).png';\nimport computer from 'assets/windowsIcons/676(16x16).png';\nimport back from 'assets/windowsIcons/back.png';\nimport forward from 'assets/windowsIcons/forward.png';\nimport up from 'assets/windowsIcons/up.png';\nimport viewInfo from 'assets/windowsIcons/view-info.ico';\nimport remove from 'assets/windowsIcons/302(16x16).png';\nimport control from 'assets/windowsIcons/300(16x16).png';\nimport network from 'assets/windowsIcons/693(16x16).png';\nimport document from 'assets/windowsIcons/308(16x16).png';\nimport folderSmall from 'assets/windowsIcons/318(16x16).png';\nimport menu from 'assets/windowsIcons/358(32x32).png';\nimport folder from 'assets/windowsIcons/318(48x48).png';\nimport folderOpen from 'assets/windowsIcons/337(32x32).png';\nimport disk from 'assets/windowsIcons/334(48x48).png';\nimport cd from 'assets/windowsIcons/111(48x48).png';\nimport dropdown from 'assets/windowsIcons/dropdown.png';\nimport pullup from 'assets/windowsIcons/pullup.png';\nimport mine from 'assets/minesweeper/mine-icon.png';\nimport windows from 'assets/windowsIcons/windows.png';\n\nfunction MyComputer({ onClose }) {\n function onClickOptionItem(item) {\n switch (item) {\n case 'Close':\n onClose();\n break;\n default:\n }\n }\n return (\n \n
\n \n \n
\n
\n \n
\n \n

\n
Back\n
\n
\n \n

\n
\n
\n \n

\n
\n \n \n

\n
Search\n
\n \n

\n
Folders\n
\n \n \n

\n
\n
\n \n
\n Address
\n \n

\n
My Computer
\n

\n
\n \n

\n
Go\n
\n \n
\n
\n
\n
\n
\n
\n System Tasks\n
\n

\n
\n
\n
\n

\n
\n View system information\n
\n
\n
\n

\n
\n Add or remove programs\n
\n
\n
\n

\n
\n Change a setting\n
\n
\n
\n
\n
\n
\n
\n Other Places\n
\n

\n
\n
\n
\n

\n
\n My Network Places\n
\n
\n
\n

\n
\n My Documents\n
\n
\n
\n

\n
\n Shared Documents\n
\n
\n
\n

\n
\n Control Panel\n
\n
\n
\n
\n {/*
\n
\n
\n Details\n
\n

\n
\n
\n
*/}\n
\n
\n
\n
\n Files Stored on This Computer\n
\n
\n
\n

\n
\n
\n Shared Documents\n
\n
\n
\n
\n

\n
\n
\n User's Documents\n
\n
\n
\n
\n
\n
\n
\n Hard Disk Drives\n
\n
\n
\n

\n
\n
\n Local Disk (C:)\n
\n
\n
\n
\n
\n
\n
\n Devices with Removable Storage\n
\n
\n
\n
\n

\n
\n
\n CD Drive (D:)\n
\n
\n
\n
\n {/*
*/}\n
\n
\n
\n
\n );\n}\n\nconst Div = styled.div`\n height: 100%;\n width: 100%;\n position: absolute;\n display: flex;\n overflow: hidden;\n flex-direction: column;\n background: linear-gradient(to right, #edede5 0%, #ede8cd 100%);\n .com__toolbar {\n position: relative;\n display: flex;\n align-items: center;\n line-height: 100%;\n height: 24px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.7);\n flex-shrink: 0;\n }\n .com__options {\n height: 23px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n padding: 1px 0 1px 2px;\n border-left: 0;\n flex: 1;\n }\n .com__windows-logo {\n height: 100%;\n border-left: 1px solid white;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n }\n .com__function_bar {\n height: 36px;\n display: flex;\n align-items: center;\n font-size: 11px;\n padding: 1px 3px 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n flex-shrink: 0;\n }\n .com__function_bar__button {\n display: flex;\n height: 100%;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0);\n border-radius: 3px;\n &:hover {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 -1px 1px rgba(0, 0, 0, 0.1);\n }\n &:hover:active {\n border: 1px solid rgb(185, 185, 185);\n background-color: #dedede;\n box-shadow: inset 0 -1px 1px rgba(255, 255, 255, 0.7);\n color: rgba(255, 255, 255, 0.7);\n & > * {\n transform: translate(1px, 1px);\n }\n }\n }\n .com__function_bar__button--disable {\n filter: grayscale(1);\n opacity: 0.7;\n display: flex;\n height: 100%;\n align-items: center;\n border: 1px solid rgba(0, 0, 0, 0);\n }\n .com__function_bar__text {\n margin-right: 4px;\n }\n .com__function_bar__icon {\n height: 30px;\n width: 30px;\n &--normalize {\n height: 22px;\n width: 22px;\n margin: 0 4px 0 1px;\n }\n &--margin12 {\n height: 22px;\n width: 22px;\n margin: 0 1px 0 2px;\n }\n &--margin-1 {\n margin: 0 -1px;\n height: 30px;\n width: 30px;\n }\n }\n .com__function_bar__separate {\n height: 90%;\n width: 1px;\n background-color: rgba(0, 0, 0, 0.2);\n margin: 0 2px;\n }\n .com__function_bar__arrow {\n height: 100%;\n display: flex;\n align-items: center;\n margin: 0 4px;\n &:before {\n content: '';\n display: block;\n border-width: 3px 3px 0;\n border-color: #000 transparent;\n border-style: solid;\n }\n }\n .com__function_bar__arrow--margin-11 {\n height: 100%;\n display: flex;\n align-items: center;\n margin: 0 1px 0 -1px;\n &:before {\n content: '';\n display: block;\n border-width: 3px 3px 0;\n border-color: #000 transparent;\n border-style: solid;\n }\n }\n .com__address_bar {\n flex-shrink: 0;\n border-top: 1px solid rgba(255, 255, 255, 0.7);\n height: 20px;\n font-size: 11px;\n display: flex;\n align-items: center;\n padding: 0 2px;\n box-shadow: inset 0 -2px 3px -1px #b0b0b0;\n }\n .com__address_bar__title {\n line-height: 100%;\n color: rgba(0, 0, 0, 0.5);\n padding: 5px;\n }\n .com__address_bar__content {\n border: rgba(122, 122, 255, 0.6) 1px solid;\n height: 100%;\n display: flex;\n flex: 1;\n align-items: center;\n background-color: white;\n position: relative;\n &__img {\n width: 14px;\n height: 14px;\n }\n &__img:last-child {\n width: 15px;\n height: 15px;\n right: 1px;\n position: absolute;\n }\n &__img:last-child:hover {\n filter: brightness(1.1);\n }\n &__text {\n white-space: nowrap;\n position: absolute;\n white-space: nowrap;\n left: 16px;\n right: 17px;\n }\n }\n\n .com__address_bar__go {\n display: flex;\n align-items: center;\n padding: 0 18px 0 5px;\n height: 100%;\n position: relative;\n &__img {\n height: 95%;\n border: 1px solid rgba(255, 255, 255, 0.2);\n margin-right: 3px;\n }\n }\n .com__address_bar__links {\n display: flex;\n align-items: center;\n padding: 0 18px 0 5px;\n height: 100%;\n position: relative;\n &__img {\n position: absolute;\n right: 2px;\n top: 3px;\n height: 5px;\n width: 8px;\n }\n &__text {\n color: rgba(0, 0, 0, 0.5);\n }\n }\n .com__address_bar__separate {\n height: 100%;\n width: 1px;\n background-color: rgba(0, 0, 0, 0.1);\n box-shadow: 1px 0 rgba(255, 255, 255, 0.7);\n }\n .com__content {\n flex: 1;\n border: 1px solid rgba(0, 0, 0, 0.4);\n border-top-width: 0;\n background-color: #f1f1f1;\n overflow: auto;\n font-size: 11px;\n position: relative;\n }\n .com__content__inner {\n display: flex;\n height: 100%;\n overflow: auto;\n }\n .com__content__left {\n width: 180px;\n height: 100%;\n background: linear-gradient(to bottom, #748aff 0%, #4057d3 100%);\n overflow: auto;\n padding: 10px;\n }\n\n .com__content__left__card {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n width: 100%;\n overflow: hidden;\n }\n .com__content__left__card:not(:last-child) {\n margin-bottom: 12px;\n }\n .com__content__left__card__header {\n display: flex;\n align-items: center;\n height: 23px;\n padding-left: 11px;\n padding-right: 2px;\n cursor: pointer;\n background: linear-gradient(\n to right,\n rgb(240, 240, 255) 0,\n rgb(240, 240, 255) 30%,\n rgb(168, 188, 255) 100%\n );\n }\n .com__content__left__card__header:hover {\n & .com__content__left__card__header__text {\n color: #1c68ff;\n }\n }\n .com__content__left__card__header__text {\n font-weight: 700;\n color: #0c327d;\n flex: 1;\n }\n .com__content__left__card__header__img {\n width: 18px;\n height: 18px;\n filter: drop-shadow(1px 1px 3px rgba(0, 0, 0, 0.3));\n }\n .com__content__left__card__content {\n padding: 5px 10px;\n background: linear-gradient(\n to right,\n rgb(180, 200, 251) 0%,\n rgb(164, 185, 251) 50%,\n rgb(180, 200, 251) 100%\n );\n background-color: rgba(198, 211, 255, 0.87);\n }\n .com__content__left__card__row {\n display: flex;\n margin-bottom: 2px;\n }\n\n .com__content__left__card__img {\n width: 14px;\n height: 14px;\n margin-right: 5px;\n }\n .com__content__left__card__text {\n font-size: 10px;\n line-height: 14px;\n color: #0c327d;\n &.black {\n color: #000;\n }\n &.bold {\n font-weight: bold;\n }\n\n &.link:hover {\n cursor: pointer;\n color: #2b72ff;\n text-decoration: underline;\n }\n }\n .com__content__right {\n height: 100%;\n overflow: auto;\n background-color: #fff;\n flex: 1;\n }\n .com__content__right__card__header {\n width: 300px;\n font-weight: 700;\n padding: 2px 0 3px 12px;\n position: relative;\n &:after {\n content: '';\n display: block;\n background: linear-gradient(to right, #70bfff 0, #fff 100%);\n position: absolute;\n bottom: 0;\n left: -12px;\n height: 1px;\n width: 100%;\n }\n }\n .com__content__right__card__content {\n display: flex;\n align-items: center;\n padding-right: 0;\n flex-wrap: wrap;\n padding: 15px 15px 0;\n }\n .com__content__right__card__item {\n display: flex;\n align-items: center;\n width: 200px;\n margin-bottom: 15px;\n height: auto;\n }\n .com__content__right__card__img {\n width: 45px;\n height: 45px;\n margin-right: 5px;\n }\n .com__content__right__card__text {\n white-space: nowrap;\n height: 100%;\n }\n .com__content__right__card--me {\n .com__content__right__card__header:after,\n .com__content__right__card__header {\n transition: 0.4s;\n }\n &:hover {\n .com__content__right__card__header:after {\n width: 0;\n }\n .com__content__right__card__header {\n transform: scale(1.2) translate(20px, 5px);\n }\n }\n }\n .com__content__right__card__item--me {\n display: flex;\n align-items: center;\n width: 200px;\n margin-bottom: 15px;\n height: auto;\n & > * {\n transition: transform 0.2s;\n }\n &:hover .com__content__right__card__img {\n transform: rotate(-10deg) scale(0.9);\n }\n &:hover .com__content__right__card__text {\n transform: scale(1.2);\n transition-timing-function: cubic-bezier(0.23, 1.93, 0.59, -0.15);\n }\n }\n`;\n\nexport default MyComputer;\n","const File = [\n {\n type: 'item',\n disable: true,\n text: 'New',\n },\n {\n type: 'item',\n disable: true,\n text: 'Open...',\n },\n {\n type: 'item',\n disable: true,\n text: 'Save',\n },\n {\n type: 'item',\n disable: true,\n text: 'Save As...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n disable: true,\n text: 'Page Setup...',\n },\n {\n type: 'item',\n disable: true,\n text: 'Print...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n text: 'Exit',\n },\n];\nconst Edit = [\n {\n type: 'item',\n disable: true,\n text: 'Undo...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n disable: true,\n text: 'Cut',\n },\n {\n type: 'item',\n disable: true,\n text: 'Copy',\n },\n {\n type: 'item',\n disable: true,\n text: 'Paste',\n },\n {\n type: 'item',\n disable: true,\n text: 'Delete',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n disable: true,\n text: 'Find...',\n },\n {\n type: 'item',\n disable: true,\n text: 'Find Next',\n },\n {\n type: 'item',\n disable: true,\n text: 'Replace...',\n },\n {\n type: 'item',\n disable: true,\n text: 'Go To...',\n },\n {\n type: 'separator',\n },\n {\n type: 'item',\n disable: true,\n text: 'Select All',\n },\n {\n type: 'item',\n text: 'Time/Date',\n },\n];\nconst Format = [\n {\n type: 'item',\n text: 'Word Wrap',\n },\n {\n type: 'item',\n disable: true,\n text: 'Font...',\n },\n];\nconst View = [\n {\n type: 'item',\n disable: true,\n text: 'Status Bar',\n },\n];\nconst Help = [\n {\n type: 'item',\n disable: true,\n text: 'Help Topics',\n },\n {\n type: 'item',\n disable: true,\n text: 'About Notepad',\n },\n];\nexport default { File, Edit, Format, View, Help };\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport { WindowDropDowns } from 'components';\nimport dropDownData from './dropDownData';\n\nexport default function Notepad({ onClose }) {\n const [docText, setDocText] = useState(`Roadmap:\n\n1. ICPSwap Launch: 27/01/2024 - Completed ✅\n2. ICPSwap Listing - Completed ✅\n3. PLUG Listing: Completed ✅\n4. Website Fully Onchain: Completed ✅\n4. Coingecko Listing: Pending\n5. Coinmarketcap Listing: Pending\n6. Openchat Integration: To Be Completed\n\nTokenomics:\n\n- Initial Liquidity - 76.2%\n- Website Development & Running Costs - 6.9%\n- Social Media Management and Mods - 3.1%\n- Giveaways And Promotion - 6.9%\n- Team Members - 6.9%\n `);\n const [wordWrap, setWordWrap] = useState(false);\n\n function onClickOptionItem(item) {\n switch (item) {\n case 'Exit':\n onClose();\n break;\n case 'Word Wrap':\n setWordWrap(!wordWrap);\n break;\n case 'Time/Date':\n const date = new Date();\n setDocText(\n `${docText}${date.toLocaleTimeString()} ${date.toLocaleDateString()}`,\n );\n break;\n default:\n }\n }\n function onTextAreaKeyDown(e) {\n // handle tabs in text area\n if (e.which === 9) {\n e.preventDefault();\n e.persist();\n var start = e.target.selectionStart;\n var end = e.target.selectionEnd;\n setDocText(`${docText.substring(0, start)}\\t${docText.substring(end)}`);\n\n // asynchronously update textarea selection to include tab\n // workaround due to https://github.com/facebook/react/issues/14174\n requestAnimationFrame(() => {\n e.target.selectionStart = start + 1;\n e.target.selectionEnd = start + 1;\n });\n }\n }\n\n return (\n \n \n setDocText(e.target.value)}\n onKeyDown={onTextAreaKeyDown}\n spellCheck={false}\n />\n
\n );\n}\n\nconst Div = styled.div`\n height: 100%;\n background: linear-gradient(to right, #edede5 0%, #ede8cd 100%);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n .np__toolbar {\n position: relative;\n height: 21px;\n flex-shrink: 0;\n border-bottom: 1px solid white;\n }\n`;\n\nconst StyledTextarea = styled.textarea`\n flex: auto;\n outline: none;\n font-family: 'Lucida Console', monospace;\n font-size: 13px;\n line-height: 14px;\n resize: none;\n padding: 2px;\n ${props => (props.wordWrap ? '' : 'white-space: nowrap; overflow-x: scroll;')}\n overflow-y: scroll;\n border: 1px solid #96abff;\n`;\n","// from Webamp demo\n\nconst album = 'Crypto Music';\n\nexport const initialTracks = [\n {\n metaData: {\n artist: \"Cassius Cuvee\",\n title: \"HODL ICP\",\n album,\n },\n url: \"/music/Cassius Cuvee - HODL ICP.mp3\",\n duration: 145.48\n },\n {\n url: '/music/Dodgy Doge Daddy.mp3',\n duration: 148.61,\n metaData: {\n title: 'Dodgy Doge Daddy',\n artist: 'O.A.',\n album,\n },\n },\n {\n url: '/music/Dr_Dre_ft_Snoop_Dogg_-_Nuthin_but_a_G_Thang.mp3',\n duration: 235.26,\n metaData: {\n title: 'Nuthin\\' But A G Thang',\n artist: 'Dr. Dre ft. Snoop Dogg',\n album,\n },\n },\n // {\n // metaData: {\n // artist: \"DJ Mike Llama\",\n // title: \"Llama Whippin' Intro\",\n // album,\n // },\n // url: \"/music/llama.mp3\",\n // duration: 5.32\n // },\n {\n url: '/music/BITCOIN PUMP IT UP.mp3',\n duration: 165.29,\n metaData: {\n title: 'PUMP IT UP ↑',\n artist: 'Bitcoin',\n album,\n },\n },\n {\n url: '/music/Jerry Banfield - Buy ICP.mp3',\n duration: 169.13,\n metaData: {\n title: 'Buy ICP',\n artist: 'Jerry Banfield',\n album,\n },\n },\n {\n url: '/music/Toby + Decap - Welcome To The Blockchain.mp3',\n duration: 241.01,\n metaData: {\n title: 'Welcome To The Blockchain',\n artist: 'Toby + Decap',\n album,\n },\n },\n {\n url: '/music/Papered Up - Bitcoin.mp3',\n duration: 170.4,\n metaData: {\n title: 'Bitcoin',\n artist: 'Papered Up',\n album,\n },\n },\n {\n url: '/music/Bitcoin Slang.mp3',\n duration: 221.49,\n metaData: {\n title: 'Bitcoin Slang',\n artist: 'Gzutek',\n album,\n },\n },\n {\n url: '/music/The Prodigy - Smack My Bitch Up.mp3',\n duration: 343.09,\n metaData: {\n title: 'Smack My Bitch Up',\n artist: 'The Prodigy',\n album,\n },\n },\n];\n","import React, { useEffect, useRef } from 'react';\nimport Webamp from 'webamp';\nimport { initialTracks } from './config';\n\nfunction Winamp({ onClose, onMinimize }) {\n const ref = useRef(null);\n const webamp = useRef(null);\n useEffect(() => {\n const target = ref.current;\n if (!target) {\n return;\n }\n webamp.current = new Webamp({\n initialTracks,\n __initialWindowLayout: {\n main: { position: { x: 0, y: 0 } },\n equalizer: { position: { x: 0, y: 116 } },\n playlist: { position: { x: 0, y: 232 }, size: [0, 2] },\n }\n });\n webamp.current.renderWhenReady(target).then(() => {\n target.appendChild(document.querySelector('#webamp'));\n\n let initialWinampXPosition = 0;\n let initialWinampYPosition = 0;\n\n if(window.innerWidth < 800) {\n initialWinampXPosition = (document.body.clientWidth) - 295;\n initialWinampYPosition = (document.body.clientHeight) - 485;\n } else {\n initialWinampXPosition = (document.body.clientWidth / 2) - 137;\n }\n \n webamp.current.store.dispatch({\n type: 'UPDATE_WINDOW_POSITIONS',\n positions: {\n main: { x: initialWinampXPosition, y: 30 + initialWinampYPosition },\n equalizer: { x: initialWinampXPosition, y: 146 + initialWinampYPosition },\n playlist: { x: initialWinampXPosition, y: 262 + initialWinampYPosition }\n }\n });\n });\n\n return () => {\n webamp.current.dispose();\n webamp.current = null;\n };\n }, []);\n useEffect(() => {\n if (webamp.current) {\n webamp.current.onClose(onClose);\n webamp.current.onMinimize(onMinimize);\n }\n });\n return (\n \n );\n}\n\nexport default Winamp;\n","import React from 'react';\n\n// add child div to capture mouse event when not focused\n\nfunction Paint({ onClose, isFocus }) {\n return (\n \n
\n {!isFocus && (\n
\n )}\n
\n );\n}\n\nexport default Paint;\n","var _defs, _path, _path2, _circle;\nfunction _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); }\nimport * as React from \"react\";\nfunction SvgOpenChatIcon(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"katman_1\",\n \"data-name\": \"katman 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 638.82 636.5\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-1 {\\n fill: url(#linear-gradient);\\n }\\n\\n .cls-2 {\\n fill: #191919;\\n }\\n\\n .cls-3 {\\n fill: url(#linear-gradient-2);\\n }\\n \"), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient\",\n x1: 717.15,\n y1: -492.8,\n x2: 717.15,\n y2: 143.68,\n gradientTransform: \"translate(1034.92 4.06) rotate(179.91) scale(1 1.26)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#fbb03b\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#f05a24\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-2\",\n x1: 785.83,\n y1: -934.93,\n x2: 785.83,\n y2: -426.78,\n gradientTransform: \"translate(-78.3 1339.48) rotate(-13.06) scale(1.03 1.42)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#5f2583\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#ed1e79\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M0,318.2c0,175.8,142.5,318.3,318.2,318.3s318.3-142.5,318.3-318.2S494,0,318.2,0,0,142.4,0,318.2Zm141.4,0c0-97.6,79.2-176.8,176.8-176.8s176.8,79.2,176.8,176.8-79.2,176.8-176.8,176.8-176.8-79.2-176.8-176.8Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M502.3,58.8c144.8,100.3,180,297.7,78.6,441-21.4,30.3-48,56.6-78.6,77.8l-82.1-116.1c80-55.4,99.4-164.5,43.4-243.6-11.8-16.7-26.5-31.3-43.4-43l82.1-116.1Z\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n className: \"cls-2\",\n cx: 318.2,\n cy: 318.2,\n r: 176.8\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgOpenChatIcon);\nexport default __webpack_public_path__ + \"static/media/openChatIcon.e43ac6f1ffce77b32f0f1276e429c2fd.svg\";\nexport { ForwardRef as ReactComponent };","import { DEL_APP } from 'WinXP/constants/actions';\nimport { useEffect } from 'react';\n\nfunction ICPTokens({ onClose, onMinimize }) {\n // useEffect(() => {\n // const url = 'https://icptokens.net/'; // Changed to single quotes\n // window.open(url, '_blank');\n // }, []);\n\n return (\n \n );\n}\n\nexport default ICPTokens;\n","import styled from 'styled-components';\n\nconst PuzzleExpressWrap = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n iframe {\n scale: 1.5;\n margin-top: 100px;\n }\n`;\n\nfunction PuzzleExpress({ onClose, onMinimize }) {\n return (\n \n \n \n );\n}\n\nexport default PuzzleExpress;\n","import React, { useRef, useEffect } from 'react';\nimport styled from 'styled-components';\n\nconst PinballWrap = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n iframe {\n scale: 1.2;\n margin-top: 50px;\n }\n`;\n\nfunction isMobileDevice() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n}\n\nfunction Pinball({ onClose, onMinimize, isFocus }) {\n const height = isMobileDevice() ? \"580px\" : \"500px\";\n const iframeRef = useRef(null); // Create a ref for the iframe\n\n useEffect(() => {\n // Focus the iframe when isFocus becomes true\n if (isFocus && iframeRef.current) {\n iframeRef.current.focus(); // Programmatically focus the iframe\n }\n }, [isFocus]); // Trigger when isFocus changes\n\n return (\n \n \n \n );\n}\n\nexport default Pinball;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst SolitaireWrap = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n`;\n\nfunction Solitaire({ onClose, onMinimize }) {\n const height = \"462px\";\n const width = \"670px\";\n\n return (\n \n \n \n );\n}\n\nexport default Solitaire;\n","import styled from 'styled-components';\n\nconst BoxheadWrap = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n iframe {\n width: 660px;\n scale: 1.2;\n margin-top: 50px;\n padding-left: 2px;\n }\n`;\n\nfunction Boxhead({ onClose, onMinimize }) {\n return (\n \n \n \n );\n}\n\nexport default Boxhead;\n","import React from 'react';\nimport styled from 'styled-components';\n\nconst TaggrWrap = styled.div`\n`;\n\nfunction Taggr({ onClose, onMinimize }) {\n return (\n \n \n \n );\n}\n\nexport default Taggr;\n","import React, { useEffect, useRef } from 'react';\n\nfunction Quake3({ onClose, isFocus }) {\n const iframeRef = useRef(null);\n\n // Function to handle focus on the iframe\n const handleFocusIframe = () => {\n if (iframeRef.current) {\n iframeRef.current.focus();\n }\n };\n\n useEffect(() => {\n if (isFocus) {\n handleFocusIframe(); // Focus iframe if isFocus becomes true\n }\n }, [isFocus]);\n\n return (\n \n
\n {!isFocus && (\n
\n )}\n
\n );\n}\n\nexport default Quake3;\n","import React from 'react';\n\nfunction Bitomni({ onClose, onMinimize }) {\n return (\n \n \n
\n );\n}\n\nexport default Bitomni;\n","import React from 'react';\n\nfunction TrumpForce({ onClose, onMinimize }) {\n return (\n \n \n
\n );\n}\n\nexport default TrumpForce;\n","import React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { Nostalgist } from 'nostalgist';\n\nexport default function RetroEmulator() {\n useEffect(() => {\n let nostalgist;\n\n // Launch the emulator\n const launchEmulator = async () => {\n nostalgist = await Nostalgist.megadrive('http://localhost:3001/sega/Street Fighter 2.sms');\n };\n\n launchEmulator();\n\n // Cleanup on component unmount\n return () => {\n if (nostalgist) {\n nostalgist.exit(); // Exit the emulator\n }\n };\n }, []);\n\n return (\n \n
NES Emulator
\n {/* The emulator will render its canvas/graphics here */}\n
\n
\n );\n}\n\nconst Div = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-top: 20px;\n #emulator-container {\n width: 640px;\n height: 480px;\n border: 1px solid black;\n }\n`;\n","import React from 'react';\n\nfunction Nintendoge64({ onClose, onMinimize }) {\n return (\n \n \n
\n );\n}\n\nexport default Nintendoge64;\n","import InternetExplorer from './InternetExplorer';\nimport Minesweeper from './Minesweeper';\nimport ErrorBox from './ErrorBox';\nimport MyComputer from './MyComputer';\nimport Notepad from './Notepad';\nimport Winamp from './Winamp';\nimport Paint from './Paint';\nimport iePaper from 'assets/windowsIcons/ie-paper.png';\nimport ie from 'assets/windowsIcons/ie.png';\nimport mine from 'assets/minesweeper/mine-icon.png';\nimport error from 'assets/windowsIcons/897(16x16).png';\nimport computer from 'assets/windowsIcons/676(16x16).png';\nimport computerLarge from 'assets/windowsIcons/676(32x32).png';\nimport notepad from 'assets/windowsIcons/327(16x16).png';\nimport notepadLarge from 'assets/windowsIcons/327(32x32).png';\nimport winamp from 'assets/windowsIcons/winamp.png';\nimport paintLarge from 'assets/windowsIcons/680(32x32).png';\nimport paint from 'assets/windowsIcons/680(16x16).png';\nimport ICPCoinsIcon from 'assets/customIcons/ICPCoinsIcon.png';\nimport ICPTokensIcon from 'assets/customIcons/ICPTokensIcon.png';\nimport puzzleExpressIcon from 'assets/customIcons/puzzleExpressIcon.png';\nimport Boxhead2PlayIcon from 'assets/customIcons/Boxhead2PlayIcon.png';\nimport quake3Arena from 'assets/customIcons/quake3Arena.png';\nimport Pinball3dIcon from 'assets/customIcons/Pinball3dIcon.png';\nimport solitaireIcon from 'assets/customIcons/solitaireIcon.png';\nimport windogeIcon from 'assets/customIcons/windogeIcon.png';\nimport ghostIcon from 'assets/customIcons/ghostIcon.png';\nimport exeIcon from 'assets/customIcons/exe.jpg';\nimport taggrIcon from 'assets/customIcons/taggrIcon.png';\nimport bitomniIcon from 'assets/customIcons/bitomniIcon.png';\nimport ND64Icon from 'assets/customIcons/ND64Icon.png';\nimport openChatIcon from 'assets/customIcons/openChatIcon.svg';\nimport twitterIcon from 'assets/customIcons/twitterIcon.png';\nimport trumpForceIcon from 'assets/customIcons/trumpForce.jpeg';\nimport ICPCoins from './ICPCoins';\nimport ICPTokens from './ICPTokens';\nimport PuzzleExpress from './PuzzleExpress';\nimport Pinball from './Pinball';\nimport Solitaire from './Solitaire';\nimport Boxhead from './Boxhead';\nimport Taggr from './Taggr';\nimport Quake3 from './Quake3';\nimport Bitomni from './Bitomni';\nimport TrumpForce from './TrumpForce';\nimport RetroEmulator from './RetroEmulator';\nimport Nintendoge64 from './Nintendoge64';\n\nconst gen = () => {\n let id = -1;\n return () => {\n id += 1;\n return id;\n };\n};\nconst genId = gen();\nconst genIndex = gen();\nexport const defaultAppState = [\n // {\n // component: InternetExplorer,\n // header: {\n // title: 'Internet Explorer',\n // icon: iePaper,\n // },\n // defaultSize: {\n // width: 700,\n // height: 500,\n // },\n // defaultOffset: {\n // x: 130,\n // y: 20,\n // },\n // resizable: true,\n // minimized: false,\n // maximized: window.innerWidth < 800,\n // id: genId(),\n // zIndex: genIndex(),\n // },\n // {\n // component: Minesweeper,\n // header: {\n // title: 'Minesweeper',\n // icon: mine,\n // },\n // defaultSize: {\n // width: 0,\n // height: 0,\n // },\n // defaultOffset: {\n // x: window.innerWidth < 800 ? 130 : 200,\n // y: window.innerWidth < 800 ? 30 : 60,\n // },\n // resizable: false,\n // minimized: false,\n // maximized: false,\n // id: genId(),\n // zIndex: genIndex(),\n // },\n {\n component: Winamp,\n header: {\n title: 'Winamp',\n icon: winamp,\n invisible: true,\n },\n defaultSize: {\n width: 0,\n height: 0,\n },\n defaultOffset: {\n x: 0,\n y: 0\n },\n resizable: false,\n minimized: window.innerWidth < 800,\n maximized: false,\n id: genId(),\n zIndex: genIndex(),\n },\n // {\n // component: MyComputer,\n // header: {\n // title: 'My Computer',\n // icon: computer,\n // },\n // defaultSize: {\n // width: 660,\n // height: 500,\n // },\n // defaultOffset: {\n // x: 250,\n // y: 40,\n // },\n // resizable: true,\n // minimized: false,\n // maximized: window.innerWidth < 800,\n // id: genId(),\n // zIndex: genIndex(),\n // },\n];\n\nconst defaultIconState = [];\n\ndefaultIconState.push(\n {\n id: 0,\n icon: computerLarge,\n title: 'My Computer',\n component: MyComputer,\n isFocus: false,\n },\n // {\n // id: 1,\n // icon: ICPCoinsIcon,\n // title: 'ICPCoins',\n // component: ICPCoins,\n // isFocus: false,\n // },\n {\n id: 3,\n icon: ie,\n title: 'Internet Explorer',\n component: InternetExplorer,\n isFocus: false,\n },\n // {\n // id: 30,\n // icon: ie,\n // title: 'RetroEmulator',\n // component: RetroEmulator,\n // isFocus: false,\n // },\n {\n id: 4,\n icon: notepadLarge,\n title: 'Roadmap',\n component: Notepad,\n isFocus: false,\n },\n {\n id: 5,\n icon: mine,\n title: 'Minesweeper',\n component: Minesweeper,\n isFocus: false,\n },\n {\n id: 21,\n icon: trumpForceIcon,\n title: 'Trump Force',\n component: TrumpForce,\n isFocus: false,\n },\n {\n id: 7,\n icon: winamp,\n title: 'Winamp',\n component: Winamp,\n isFocus: false,\n },\n {\n id: 6,\n icon: Pinball3dIcon,\n title: 'Pinball',\n component: Pinball,\n isFocus: false,\n },\n {\n id: 9,\n icon: paintLarge,\n title: 'Paint',\n component: Paint,\n isFocus: false,\n },\n {\n id: 10,\n icon: openChatIcon,\n title: 'OpenChat',\n isFocus: false,\n link: \"https://oc.app/community/myvs2-2yaaa-aaaar-a26tq-cai\"\n },\n {\n id: 11,\n icon: taggrIcon,\n title: 'TAGGR',\n isFocus: false,\n component: Taggr\n },\n {\n id: 20,\n icon: bitomniIcon,\n title: 'Bitomni',\n isFocus: false,\n component: Bitomni\n },\n {\n id: 8,\n icon: windogeIcon,\n title: 'Buy XP',\n isFocus: false,\n link: \"https://app.icpswap.com/swap?input=ryjl3-tyaaa-aaaaa-aaaba-cai&output=wqihv-qyaaa-aaaak-afjoa-cai\"\n },\n {\n id: 12,\n icon: ghostIcon,\n title: 'Buy GHOST',\n isFocus: false,\n link: \"https://app.icpswap.com/swap?input=ryjl3-tyaaa-aaaaa-aaaba-cai&output=4c4fd-caaaa-aaaaq-aaa3a-cai\"\n },\n {\n id: 15,\n icon: exeIcon,\n title: 'Buy EXE',\n isFocus: false,\n link: \"https://app.icpswap.com/swap?input=ryjl3-tyaaa-aaaaa-aaaba-cai&output=rh2pm-ryaaa-aaaan-qeniq-cai\"\n },\n // {\n // id: 13,\n // icon: ICPTokensIcon,\n // title: 'ICP Tokens',\n // component: ICPTokens,\n // isFocus: false,\n // },\n {\n id: 14,\n icon: twitterIcon,\n title: 'Twitter',\n isFocus: false,\n link: \"https://twitter.com/_WindogeXP\"\n },\n {\n id: 31,\n icon: ND64Icon,\n title: 'Nintendoge64',\n component: Nintendoge64,\n isFocus: false,\n },\n {\n id: 32,\n icon: ICPTokensIcon,\n title: 'ICP Tokens',\n component: ICPTokens,\n isFocus: false,\n },\n {\n id: 19,\n icon: quake3Arena,\n title: 'Quake 3 Arena',\n component: Quake3,\n isFocus: false,\n },\n);\n\n// Find the index of the \"Pinball\" item\nconst pinballIndex = defaultIconState.findIndex(item => item.title === 'Pinball');\n\n// If window width is greater than or equal to 800 pixels, insert \"PuzzleExpress\" after \"Pinball\"\nif (window.innerWidth >= 800 && pinballIndex !== -1) {\n defaultIconState.splice(pinballIndex + 1, 0, {\n id: 17,\n icon: Boxhead2PlayIcon,\n title: 'Boxhead 2Play',\n component: Boxhead,\n isFocus: false,\n },);\n\n defaultIconState.splice(pinballIndex + 1, 0, {\n id: 16,\n icon: puzzleExpressIcon,\n title: 'PuzzleExpress',\n component: PuzzleExpress,\n isFocus: false,\n });\n\n defaultIconState.splice(pinballIndex + 1, 0, {\n id: 18,\n icon: solitaireIcon,\n title: 'Solitaire',\n component: Solitaire,\n isFocus: false,\n });\n}\n\nexport { defaultIconState};\n\nexport const appSettings = {\n 'Internet Explorer': {\n header: {\n icon: iePaper,\n title: 'InternetExplorer',\n },\n component: InternetExplorer,\n defaultSize: {\n width: 800,\n height: 600,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 400,\n y: 30,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: true,\n },\n // 'RetroEmulator': {\n // header: {\n // icon: iePaper,\n // title: 'RetroEmulator',\n // },\n // component: RetroEmulator,\n // defaultSize: {\n // width: 640,\n // height: 480,\n // },\n // defaultOffset: {\n // x: document.body.clientWidth / 2 - 320,\n // y: 30,\n // },\n // resizable: true,\n // minimized: false,\n // maximized: window.innerWidth < 700,\n // multiInstance: true,\n // },\n Minesweeper: {\n header: {\n icon: mine,\n title: 'Minesweeper',\n },\n component: Minesweeper,\n defaultSize: {\n width: 0,\n height: 0,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 85,\n y: 180,\n },\n resizable: false,\n minimized: false,\n maximized: false,\n multiInstance: true,\n },\n Error: {\n header: {\n icon: error,\n title: 'C:\\\\',\n buttons: ['close'],\n noFooterWindow: true,\n },\n component: ErrorBox,\n defaultSize: {\n width: 380,\n height: 0,\n },\n defaultOffset: {\n x: window.innerWidth / 2 - 190,\n y: window.innerHeight / 2 - 60,\n },\n resizable: false,\n minimized: false,\n maximized: false,\n multiInstance: true,\n },\n 'My Computer': {\n header: {\n icon: computer,\n title: 'My Computer',\n },\n component: MyComputer,\n defaultSize: {\n width: 660,\n height: 500,\n },\n defaultOffset: {\n x: 260,\n y: 50,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: false,\n },\n 'ICP Tokens': {\n header: {\n icon: ICPTokensIcon,\n title: 'ICP Tokens',\n },\n component: ICPTokens,\n defaultSize: {\n width: 900,\n height: 700,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 450,\n y: 50,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 1000 || window.innerHeight < 800,\n multiInstance: false,\n },\n 'Puzzle Express': {\n header: {\n icon: puzzleExpressIcon,\n title: 'Puzzle Express',\n },\n component: PuzzleExpress,\n defaultSize: {\n width: 852,\n height: 666,\n },\n defaultOffset: {\n x: 260,\n y: 50,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: false,\n },\n Boxhead: {\n header: {\n icon: Boxhead2PlayIcon,\n title: 'Boxhead 2Play',\n },\n component: Boxhead,\n defaultSize: {\n width: 775,\n height: 607,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 385,\n y: 50,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: false,\n },\n Pinball: {\n header: {\n icon: Pinball3dIcon,\n title: 'Pinball',\n },\n component: Pinball,\n defaultSize: {\n width: 742,\n height: 577,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 380,\n y: 50,\n },\n resizable: false,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: false,\n },\n Solitaire: {\n header: {\n icon: solitaireIcon,\n title: 'Solitaire',\n },\n component: Solitaire,\n defaultSize: {\n width: 670,\n height: 493,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 335,\n y: 50,\n },\n resizable: false,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: false,\n },\n Taggr: {\n header: {\n icon: taggrIcon,\n title: 'TAGGR',\n },\n component: Taggr,\n defaultSize: {\n width: document.body.clientWidth / 2,\n height: 600,\n },\n defaultOffset: {\n x: 0,\n y: 0,\n },\n resizable: !(window.innerWidth < 800),\n minimized: false,\n maximized: true,\n multiInstance: false,\n },\n Taggr: {\n header: {\n icon: taggrIcon,\n title: 'TAGGR',\n },\n component: Taggr,\n defaultSize: {\n width: document.body.clientWidth / 2,\n height: 600,\n },\n defaultOffset: {\n x: 0,\n y: 0,\n },\n resizable: !(window.innerWidth < 800),\n minimized: false,\n maximized: true,\n multiInstance: false,\n },\n Bitomni: {\n header: {\n icon: bitomniIcon,\n title: 'Bitomni',\n },\n component: Bitomni,\n defaultSize: {\n width: 1024,\n height: 768,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 512,\n y: 50,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 1024,\n multiInstance: false,\n },\n Nintendoge64: {\n header: {\n icon: ND64Icon,\n title: 'Nintendoge64',\n },\n component: Nintendoge64,\n defaultSize: {\n width: 1024,\n height: 768,\n },\n defaultOffset: {\n x: window.innerWidth < 1200 ? 0 :document.body.clientWidth - 1050,\n y: window.innerWidth < 1200 ? 0 : 20\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 1200,\n multiInstance: false,\n },\n TrumpForce: {\n header: {\n icon: trumpForceIcon,\n title: 'Trump Force',\n },\n component: TrumpForce,\n defaultSize: {\n width: 1024,\n height: 768,\n },\n defaultOffset: {\n x: document.body.clientWidth / 2 - 512,\n y: 50,\n },\n resizable: false,\n minimized: false,\n maximized: true,\n multiInstance: false,\n },\n Quake3: {\n header: {\n icon: quake3Arena,\n title: 'Quake 3 Arena',\n },\n component: Quake3,\n defaultSize: {\n width: document.body.clientWidth / 2,\n height: 600,\n },\n defaultOffset: {\n x: 0,\n y: 0,\n },\n resizable: false,\n minimized: false,\n maximized: true,\n multiInstance: false,\n },\n Notepad: {\n header: {\n icon: notepad,\n title: 'Roadmap - Notepad',\n },\n component: Notepad,\n defaultSize: {\n width: 500,\n height: 400,\n },\n defaultOffset: {\n x: 270,\n y: 60,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: true,\n },\n Winamp: {\n header: {\n icon: winamp,\n title: 'Winamp',\n invisible: true,\n },\n component: Winamp,\n defaultSize: {\n width: 0,\n height: 0,\n },\n defaultOffset: {\n x: 0,\n y: 0,\n },\n resizable: false,\n minimized: false,\n maximized: false,\n multiInstance: false,\n },\n Paint: {\n header: {\n icon: paint,\n title: 'Untitled - Paint',\n },\n component: Paint,\n defaultSize: {\n width: 660,\n height: 500,\n },\n defaultOffset: {\n x: 280,\n y: 70,\n },\n resizable: true,\n minimized: false,\n maximized: window.innerWidth < 800,\n multiInstance: true,\n },\n};\n\nexport { InternetExplorer, Minesweeper, ErrorBox, MyComputer, Notepad, Winamp };\n","import React from 'react';\nimport { createPortal } from 'react-dom';\nimport styled from 'styled-components';\n\nimport { POWER_STATE } from 'WinXP/constants';\nimport windowsLogo from 'assets/windowsIcons/windows-off.png';\nimport off from 'assets/windowsIcons/310(32x32).png';\nimport lock from 'assets/windowsIcons/546(32x32).png';\nimport restart from 'assets/windowsIcons/restart.ico';\nimport switcher from 'assets/windowsIcons/290.png';\n\nfunction Modal(props) {\n return createPortal(\n \n \n ,\n document.body,\n );\n}\n\nconst Container = ({ className, children }) => {\n function noop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n return (\n \n {children}\n
\n );\n};\nconst Menu = ({ mode, onClose, onClickButton }) => {\n function renderButtons() {\n if (mode === POWER_STATE.TURN_OFF) {\n return (\n <>\n \n \n \n >\n );\n }\n return (\n <>\n \n \n >\n );\n }\n return (\n \n
\n Log Off Windows\n
\n \n
{renderButtons()}
\n
\n
\n );\n};\nconst Button = ({ style, img, text, onClick }) => {\n function _onClick() {\n onClick(text);\n }\n return (\n \n

\n
{text}\n
\n );\n};\nconst ButtonDisabled = ({ img, text }) => (\n \n

\n
{text}\n
\n);\nconst StyledContainer = styled(Container)`\n font-family: Tahoma, 'Noto Sans', sans-serif;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n .modal {\n margin-top: 30vh;\n width: 300px;\n height: 190px;\n border: 1px solid black;\n display: flex;\n flex-direction: column;\n }\n .header {\n height: 42px;\n display: flex;\n padding-left: 10px;\n align-items: center;\n background: #092178;\n }\n .header__text {\n font-size: 17px;\n font-family: 'Noto Sans';\n color: #fff;\n flex: 1;\n }\n .header__img {\n width: auto;\n height: 30px;\n margin-right: 5px;\n }\n .content {\n flex: 1;\n background: linear-gradient(\n to right,\n #3349e0 0%,\n #617ee6 47%,\n #617ee6 53%,\n #3349e0 100%\n );\n display: flex;\n align-items: center;\n justify-content: space-around;\n padding: 0 30px;\n position: relative;\n &:before {\n content: '';\n display: block;\n position: absolute;\n height: 2px;\n top: 0;\n left: 0;\n right: 0;\n background: linear-gradient(\n to right,\n transparent 0,\n rgba(255, 255, 255, 0.3) 40%,\n rgba(255, 255, 255, 0.3) 60%,\n transparent 100%\n );\n }\n }\n .button-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n color: #fff;\n &.disable {\n color: gray;\n .button-img {\n opacity: 0.3;\n &:hover {\n filter: none;\n }\n &:hover:active {\n filter: none;\n }\n }\n }\n }\n .button-img {\n height: 30px;\n width: 30px;\n &:hover {\n filter: brightness(1.1);\n }\n &:hover:active {\n filter: brightness(0.7);\n }\n }\n .button-text {\n padding-top: 3px;\n font-weight: bold;\n font-size: 11px;\n }\n .footer {\n height: 42px;\n background: #092178;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n }\n .footer__button {\n font-size: 11px;\n padding: 0 8px;\n line-height: 10px;\n background: rgb(240, 240, 240);\n margin-right: 10px;\n height: 16px;\n border-radius: 1px;\n box-shadow: 2px 2px 4px 1px #0005b0, 2px 2px 2px 0px white,\n inset 0 0 0 1px skyblue, inset 2px -2px skyblue;\n border: none;\n outline: none;\n &:hover {\n box-shadow: 1px 1px black, 1px 1px 2px 0px white, inset 0 0 0 1px orange,\n inset 2px -2px orange;\n }\n &:hover:active {\n box-shadow: none;\n background: rgb(220, 220, 220);\n }\n }\n`;\n\nexport default Modal;\n","import empty from 'assets/empty.png';\nimport backup from 'assets/windowsIcons/23(16x16).png';\nimport keyboard from 'assets/windowsIcons/58(16x16).png';\nimport cmd from 'assets/windowsIcons/56(16x16).png';\nimport calculator from 'assets/windowsIcons/74(16x16).png';\nimport utility from 'assets/windowsIcons/119(16x16).png';\nimport volume from 'assets/windowsIcons/120(16x16).png';\nimport characterMap from 'assets/windowsIcons/127(16x16).png';\nimport cleanDisk from 'assets/windowsIcons/128(16x16).png';\nimport wordPad from 'assets/windowsIcons/153(16x16).png';\nimport winExplorer from 'assets/windowsIcons/156(16x16).png';\nimport MSN from 'assets/windowsIcons/159(16x16).png';\nimport sync from 'assets/windowsIcons/182(16x16).png';\nimport security from 'assets/windowsIcons/214(16x16).png';\nimport access from 'assets/windowsIcons/227(16x16).png';\nimport wireless from 'assets/windowsIcons/234(16x16).png';\nimport accessibility from 'assets/windowsIcons/238(16x16).png';\nimport connection from 'assets/windowsIcons/309(16x16).png';\nimport update from 'assets/windowsIcons/322(16x16).png';\nimport notepad from 'assets/windowsIcons/327(16x16).png';\nimport networkAssistance from 'assets/windowsIcons/357(16x16).png';\nimport menu from 'assets/windowsIcons/358(16x16).png';\nimport transfer from 'assets/windowsIcons/367(16x16).png';\nimport defragmenter from 'assets/windowsIcons/374(16x16).png';\nimport catalog from 'assets/windowsIcons/392(16x16).png';\nimport networkConnection from 'assets/windowsIcons/404(16x16).png';\nimport info from 'assets/windowsIcons/505(16x16).png';\nimport address from 'assets/windowsIcons/554(16x16).png';\nimport connectionWizard from 'assets/windowsIcons/663(16x16).png';\nimport networkSetup from 'assets/windowsIcons/664(16x16).png';\nimport hyperCmd from 'assets/windowsIcons/669(16x16).png';\nimport painter from 'assets/windowsIcons/680(16x16).png';\nimport sound from 'assets/windowsIcons/690(16x16).png';\nimport recent from 'assets/windowsIcons/716(16x16).png';\nimport compatibility from 'assets/windowsIcons/747(16x16).png';\nimport magnifier from 'assets/windowsIcons/817(16x16).png';\nimport mediaPlayer from 'assets/windowsIcons/846(16x16).png';\nimport tour from 'assets/windowsIcons/853(32x32).png';\nimport outlook from 'assets/windowsIcons/887(16x16).png';\nimport spade from 'assets/windowsIcons/888(16x16).png';\nimport reversi from 'assets/windowsIcons/889(16x16).png';\nimport onlineHeart from 'assets/windowsIcons/890(16x16).png';\nimport checker from 'assets/windowsIcons/891(16x16).png';\nimport backgammon from 'assets/windowsIcons/892(16x16).png';\nimport movieMaker from 'assets/windowsIcons/894(16x16).png';\nimport ie from 'assets/windowsIcons/896(16x16).png';\nimport messenger from 'assets/windowsIcons/msn.png';\nimport spider from 'assets/windowsIcons/spider.png';\nimport freecell from 'assets/windowsIcons/freecell.png';\nimport heart from 'assets/windowsIcons/heart.png';\nimport rdp from 'assets/windowsIcons/rdp.png';\nimport solitaire from 'assets/windowsIcons/solitaire.png';\nimport narrator from 'assets/windowsIcons/narrator.ico';\nimport pinball from 'assets/windowsIcons/pinball.png';\nimport restore from 'assets/windowsIcons/restore.ico';\nimport mine from 'assets/minesweeper/mine-icon.png';\n\nexport const MyRecentDocuments = [\n {\n type: 'item',\n icon: empty,\n text: '(Empty)',\n },\n];\nexport const ConnectTo = [\n {\n type: 'item',\n icon: MSN,\n text: 'MSN',\n },\n {\n type: 'item',\n icon: connection,\n text: 'Show all connections',\n },\n];\nexport const AllPrograms = [\n {\n type: 'item',\n icon: access,\n text: 'Set Program Access and Defaults',\n },\n {\n type: 'item',\n icon: catalog,\n text: 'Windows Catalog',\n },\n {\n type: 'item',\n icon: update,\n text: 'Windows Update',\n },\n {\n type: 'separator',\n },\n {\n type: 'menu',\n icon: menu,\n text: 'Accessories',\n items: [\n {\n type: 'menu',\n icon: menu,\n text: 'Accessibility',\n bottom: 'initial',\n items: [\n {\n type: 'item',\n icon: accessibility,\n text: 'Accessibility Wizard',\n },\n {\n type: 'item',\n icon: magnifier,\n text: 'Magnifier',\n },\n {\n type: 'item',\n icon: narrator,\n text: 'Narrator',\n },\n {\n type: 'item',\n icon: keyboard,\n text: 'On-Screen Keyboard',\n },\n {\n type: 'item',\n icon: utility,\n text: 'Utility Manager',\n },\n ],\n },\n {\n type: 'menu',\n icon: menu,\n text: 'Communications',\n bottom: 'initial',\n items: [\n {\n type: 'item',\n icon: hyperCmd,\n text: 'HyperTerminal',\n },\n {\n type: 'item',\n icon: networkConnection,\n text: 'Network Connections',\n },\n {\n type: 'item',\n icon: networkSetup,\n text: 'Network Setup Wizard',\n },\n {\n type: 'item',\n icon: connectionWizard,\n text: 'New Connection Wizard',\n },\n {\n type: 'item',\n icon: wireless,\n text: 'Wireless Network Setup Wizard',\n },\n ],\n },\n {\n type: 'menu',\n icon: menu,\n text: 'Entertainment',\n bottom: 'initial',\n items: [\n {\n type: 'item',\n icon: sound,\n text: 'Sound Recorder',\n },\n {\n type: 'item',\n icon: volume,\n text: 'Volume Control',\n },\n {\n type: 'item',\n icon: mediaPlayer,\n text: 'Windows Media Player',\n },\n ],\n },\n {\n type: 'menu',\n icon: menu,\n text: 'System Tools',\n bottom: 'initial',\n items: [\n {\n type: 'item',\n icon: backup,\n text: 'Backup',\n },\n {\n type: 'item',\n icon: characterMap,\n text: 'Character Map',\n },\n {\n type: 'item',\n icon: cleanDisk,\n text: 'Disk Cleanup',\n },\n {\n type: 'item',\n icon: defragmenter,\n text: 'Disk Defragmenter',\n },\n {\n type: 'item',\n icon: transfer,\n text: 'Files and Settings Transfer Wizard',\n },\n {\n type: 'item',\n icon: recent,\n text: 'Scheduled Tasks',\n },\n {\n type: 'item',\n icon: security,\n text: 'Security Center',\n },\n {\n type: 'item',\n icon: info,\n text: 'System Information',\n },\n {\n type: 'item',\n icon: restore,\n text: 'System Restore',\n },\n ],\n },\n {\n type: 'item',\n icon: address,\n text: 'Address Book',\n },\n {\n type: 'item',\n icon: cmd,\n text: 'Command Prompt',\n },\n {\n type: 'item',\n icon: notepad,\n text: 'Notepad',\n },\n {\n type: 'item',\n icon: painter,\n text: 'Paint',\n },\n {\n type: 'item',\n icon: calculator,\n text: 'Calculator',\n },\n {\n type: 'item',\n icon: compatibility,\n text: 'Program Compatibility Wizard',\n },\n {\n type: 'item',\n icon: rdp,\n text: 'Remote Desktop Connection',\n },\n {\n type: 'item',\n icon: sync,\n text: 'Synchronize',\n },\n {\n type: 'item',\n icon: tour,\n text: 'Tour Windows XP',\n },\n {\n type: 'item',\n icon: winExplorer,\n text: 'Windows Explorer',\n },\n {\n type: 'item',\n icon: wordPad,\n text: 'WordPad',\n },\n ],\n },\n {\n type: 'menu',\n icon: menu,\n text: 'Games',\n items: [\n {\n type: 'item',\n icon: freecell,\n text: 'FreeCell',\n },\n {\n type: 'item',\n icon: heart,\n text: 'Hearts',\n },\n {\n type: 'item',\n icon: backgammon,\n text: 'Internet Backgammon',\n },\n {\n type: 'item',\n icon: checker,\n text: 'Internet Checkers',\n },\n {\n type: 'item',\n icon: onlineHeart,\n text: 'Internet Hearts',\n },\n {\n type: 'item',\n icon: reversi,\n text: 'Internet Reversi',\n },\n {\n type: 'item',\n icon: spade,\n text: 'Internet Spades',\n },\n {\n type: 'item',\n icon: mine,\n text: 'Minesweeper',\n },\n {\n type: 'item',\n icon: pinball,\n text: 'Pinball',\n },\n {\n type: 'item',\n icon: solitaire,\n text: 'Solitaire',\n },\n {\n type: 'item',\n icon: spider,\n text: 'Spider Solitaire',\n },\n ],\n },\n {\n type: 'menu',\n icon: menu,\n text: 'Startup',\n items: [\n {\n type: 'item',\n icon: empty,\n text: '(Empty)',\n },\n ],\n },\n {\n type: 'item',\n icon: ie,\n text: 'Internet Explorer',\n },\n {\n type: 'item',\n icon: outlook,\n text: 'Outlook Express',\n },\n {\n type: 'item',\n icon: networkAssistance,\n text: 'Remote Assistance',\n },\n {\n type: 'item',\n icon: mediaPlayer,\n text: 'Windows Media Player',\n },\n {\n type: 'item',\n icon: messenger,\n text: 'Windows Messenger',\n },\n {\n type: 'item',\n icon: movieMaker,\n text: 'Windows Movie Maker',\n },\n];\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\nimport SubMenu from 'components/SubMenu';\nimport ie from 'assets/windowsIcons/ie.png';\nimport mine from 'assets/minesweeper/mine-icon.png';\nimport setAccess from 'assets/windowsIcons/227(32x32).png';\nimport outlook from 'assets/windowsIcons/887(32x32).png';\nimport mediaPlayer from 'assets/windowsIcons/846(32x32).png';\nimport messenger from 'assets/windowsIcons/msn.png';\nimport documents from 'assets/windowsIcons/308(32x32).png';\nimport recentDocuments from 'assets/windowsIcons/301(32x32).png';\nimport pictures from 'assets/windowsIcons/307(32x32).png';\nimport music from 'assets/windowsIcons/550(32x32).png';\nimport computer from 'assets/windowsIcons/676(32x32).png';\nimport controlPanel from 'assets/windowsIcons/300(32x32).png';\nimport connect from 'assets/windowsIcons/309(32x32).png';\nimport printer from 'assets/windowsIcons/549(32x32).png';\nimport paint from 'assets/windowsIcons/680(32x32).png';\nimport help from 'assets/windowsIcons/747(32x32).png';\nimport search from 'assets/windowsIcons/299(32x32).png';\nimport run from 'assets/windowsIcons/743(32x32).png';\nimport lock from 'assets/windowsIcons/546(32x32).png';\nimport user from 'assets/windowsIcons/user.png';\nimport shut from 'assets/windowsIcons/310(32x32).png';\nimport allProgramsIcon from 'assets/windowsIcons/all-programs.ico';\nimport winamp from 'assets/windowsIcons/winamp.png';\nimport notepad from 'assets/windowsIcons/327(32x32).png';\nimport empty from 'assets/empty.png';\n\nimport { AllPrograms, ConnectTo, MyRecentDocuments } from './FooterMenuData';\n\nfunction FooterMenu({ className, onClick }) {\n const [hovering, setHovering] = useState('');\n function onMouseOver(e) {\n const item = e.target.closest('.menu__item');\n if (!item) return;\n setHovering(item.querySelector('.menu__item__text').textContent);\n }\n return (\n \n
\n
\n Windoge XP\n \n
\n
\n \n
- \n
Internet Explorer
\n \n
- \n
Outlook Express
\n \n
\n
\n
\n
\n
- \n All Programs\n
\n \n }\n icon={empty}\n >\n {hovering === 'All Programs' && (\n \n )}\n \n \n \n
\n
- \n \n {hovering === 'My Recent Documents' && (\n \n )}\n
\n
\n
\n
\n
- \n \n {hovering === 'Connect To' && (\n \n )}\n
\n
\n
\n
\n
\n \n \n \n );\n}\nfunction Items({ items, ...rest }) {\n return items.map((item, i) => );\n}\nfunction Item({\n style,\n text,\n icon,\n onHover = () => {},\n onClick = () => {},\n children,\n}) {\n function _onClick() {\n onClick(text);\n }\n function onMouseEnter() {\n onHover(text);\n }\n return (\n \n

\n
\n
\n );\n}\nexport default styled(FooterMenu)`\n font-size: 11px;\n line-height: 14px;\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: #4282d6;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n header {\n position: relative;\n align-self: flex-start;\n display: flex;\n align-items: center;\n color: #fff;\n height: 54px;\n padding: 6px 5px 5px;\n width: 100%;\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n background: linear-gradient(\n to bottom,\n #1868ce 0%,\n #0e60cb 12%,\n #0e60cb 20%,\n #1164cf 32%,\n #1667cf 33%,\n #1b6cd3 47%,\n #1e70d9 54%,\n #2476dc 60%,\n #297ae0 65%,\n #3482e3 77%,\n #3786e5 79%,\n #428ee9 90%,\n #4791eb 100%\n );\n overflow: hidden;\n }\n header:before {\n content: '';\n display: block;\n position: absolute;\n top: 1px;\n left: 0;\n width: 100%;\n height: 3px;\n background: linear-gradient(\n to right,\n transparent 0,\n rgb(255, 255, 255, 0.3) 1%,\n rgb(255, 255, 255, 0.5) 2%,\n rgb(255, 255, 255, 0.5) 95%,\n rgb(255, 255, 255, 0.3) 98%,\n rgb(255, 255, 255, 0.2) 99%,\n transparent 100%\n );\n box-shadow: inset 0 -1px 1px #0e60cb;\n }\n .header__img {\n width: 42px;\n height: 42px;\n margin-right: 5px;\n border-radius: 3px;\n border: 2px solid rgb(222, 222, 222, 0.8);\n }\n .header__text {\n font-size: 14px;\n font-weight: 700;\n text-shadow: 1px 1px rgba(0, 0, 0, 0.7);\n }\n footer {\n display: flex;\n align-self: flex-end;\n align-items: center;\n justify-content: flex-end;\n color: #fff;\n height: 36px;\n width: 100%;\n background: linear-gradient(\n to bottom,\n #4282d6 0%,\n #3b85e0 3%,\n #418ae3 5%,\n #418ae3 17%,\n #3c87e2 21%,\n #3786e4 26%,\n #3482e3 29%,\n #2e7ee1 39%,\n #2374df 49%,\n #2072db 57%,\n #196edb 62%,\n #176bd8 72%,\n #1468d5 75%,\n #1165d2 83%,\n #0f61cb 88%\n );\n }\n\n .footer__item {\n padding: 3px;\n display: flex;\n margin-right: 10px;\n align-items: center;\n &:hover {\n background-color: rgba(60, 80, 210, 0.5);\n }\n &:hover:active > * {\n transform: translate(1px, 1px);\n }\n }\n .footer__item__img {\n border-radius: 3px;\n margin-right: 2px;\n width: 22px;\n height: 22px;\n }\n .menu {\n display: flex;\n margin: 0 2px;\n position: relative;\n border-top: 1px solid #385de7;\n box-shadow: 0 1px #385de7;\n }\n .orange-hr {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n display: block;\n height: 2px;\n background: linear-gradient(\n to right,\n rgba(0, 0, 0, 0) 0%,\n #da884a 50%,\n rgba(0, 0, 0, 0) 100%\n );\n border: 0;\n }\n .menu__right {\n background-color: #cbe3ff;\n border-left: solid #3a3aff5e 1px;\n padding: 6px 5px 5px;\n width: 190px;\n color: #00136b;\n }\n .menu__left {\n background-color: #fff;\n padding: 6px 5px 0;\n width: 190px;\n display: flex;\n flex-direction: column;\n }\n .sub_menu {\n border: 1px solid black;\n position: absolute;\n left: 100%;\n bottom: 0;\n background-color: #fff;\n display: flex;\n flex-direction: column;\n }\n\n .menu__separator {\n height: 7.5px;\n background: linear-gradient(\n to right,\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.1) 50%,\n rgba(0, 0, 0, 0) 100%\n );\n border-top: 3px solid transparent;\n border-bottom: 3px solid transparent;\n background-clip: content-box;\n }\n .menu__right .menu__separator {\n background: linear-gradient(\n to right,\n rgba(0, 0, 0, 0) 0%,\n #87b3e2b5 50%,\n rgba(0, 0, 0, 0) 100%\n );\n background-clip: content-box;\n }\n .menu__item {\n padding: 1px;\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n }\n .menu__left .menu__item {\n height: 34px;\n }\n .menu__right .menu__item {\n height: 26px;\n margin-bottom: 4px;\n line-height: 13px;\n }\n .menu__item:hover {\n color: white;\n background-color: #2f71cd;\n }\n .menu__item:hover .menu__item__subtext {\n color: white;\n }\n .menu__item__texts {\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n position: relative;\n }\n .menu__right .menu__item__img {\n margin-right: 3px;\n width: 22px;\n height: 22px;\n }\n .menu__left .menu__item__img {\n margin-right: 3px;\n width: 30px;\n height: 30px;\n }\n .menu__right .menu__item:nth-child(-n + 5),\n .menu__left .menu__item:nth-child(-n + 2),\n .menu__left .menu__item:last-child {\n .menu__item__text {\n font-weight: 700;\n }\n }\n .menu__item__subtext {\n color: rgba(0, 0, 0, 0.4);\n line-height: 12px;\n margin-bottom: 1px;\n }\n .menu__left .menu__item:last-child {\n height: 24px;\n }\n .menu__item:hover .menu__arrow {\n border-left-color: #fff;\n }\n .menu__arrow {\n border: 3.5px solid transparent;\n border-right: 0;\n border-left-color: #00136b;\n position: absolute;\n left: 146px;\n }\n`;\n","import React, { useState, useEffect, useRef } from 'react';\nimport styled from 'styled-components';\n\nimport FooterMenu from './FooterMenu';\nimport Balloon from 'components/Balloon';\nimport startButton from 'assets/windowsIcons/start.png';\nimport sound from 'assets/windowsIcons/690(16x16).png';\nimport usb from 'assets/windowsIcons/394(16x16).png';\nimport shield from 'assets/windowsIcons/214(16x16).png';\n\nconst getTime = () => {\n const date = new Date();\n let hour = date.getHours();\n let hourPostFix = 'AM';\n let min = date.getMinutes();\n if (hour >= 12) {\n hour -= 12;\n hourPostFix = 'PM';\n }\n if (hour === 0) {\n hour = 12;\n }\n if (min < 10) {\n min = '0' + min;\n }\n return `${hour}:${min} ${hourPostFix}`;\n};\n\nfunction Footer({\n onMouseDownApp,\n apps,\n focusedAppId,\n onMouseDown,\n onClickMenuItem,\n}) {\n const [time, setTime] = useState(getTime);\n const [menuOn, setMenuOn] = useState(false);\n const menu = useRef(null);\n function toggleMenu() {\n setMenuOn(on => !on);\n }\n function _onMouseDown(e) {\n if (e.target.closest('.footer__window')) return;\n onMouseDown();\n }\n function _onClickMenuItem(name) {\n onClickMenuItem(name);\n setMenuOn(false);\n }\n useEffect(() => {\n const timer = setInterval(() => {\n const newTime = getTime();\n newTime !== time && setTime(newTime);\n }, 1000);\n return () => clearInterval(timer);\n }, [time]);\n useEffect(() => {\n const target = menu.current;\n if (!target) return;\n function onMouseDown(e) {\n if (!target.contains(e.target) && menuOn) setMenuOn(false);\n }\n window.addEventListener('mousedown', onMouseDown);\n return () => window.removeEventListener('mousedown', onMouseDown);\n }, [menuOn]);\n\n return (\n \n \n
\n {menuOn && }\n
\n

\n {[...apps].map(\n app =>\n !app.header.noFooterWindow && (\n
\n ),\n )}\n
\n\n \n

\n

\n

\n
\n \n
\n
{time}
\n
\n \n );\n}\n\nfunction FooterWindow({ id, icon, title, onMouseDown, isFocus }) {\n function _onMouseDown() {\n onMouseDown(id);\n }\n return (\n \n

\n
{title}
\n
\n );\n}\n\nconst Container = styled.footer`\n height: 30px;\n background: linear-gradient(\n to bottom,\n #1f2f86 0,\n #3165c4 3%,\n #3682e5 6%,\n #4490e6 10%,\n #3883e5 12%,\n #2b71e0 15%,\n #2663da 18%,\n #235bd6 20%,\n #2258d5 23%,\n #2157d6 38%,\n #245ddb 54%,\n #2562df 86%,\n #245fdc 89%,\n #2158d4 92%,\n #1d4ec0 95%,\n #1941a5 98%\n );\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n display: flex;\n .footer__items.left {\n height: 100%;\n flex: 1;\n overflow: hidden;\n }\n .footer__items.right {\n background-color: #0b77e9;\n flex-shrink: 0;\n background: linear-gradient(\n to bottom,\n #0c59b9 1%,\n #139ee9 6%,\n #18b5f2 10%,\n #139beb 14%,\n #1290e8 19%,\n #0d8dea 63%,\n #0d9ff1 81%,\n #0f9eed 88%,\n #119be9 91%,\n #1392e2 94%,\n #137ed7 97%,\n #095bc9 100%\n );\n border-left: 1px solid #1042af;\n box-shadow: inset 1px 0 1px #18bbff;\n padding: 0 10px;\n margin-left: 10px;\n }\n .footer__items {\n display: flex;\n align-items: center;\n }\n .footer__start {\n height: 100%;\n margin-right: 10px;\n position: relative;\n &:hover {\n filter: brightness(105%);\n }\n &:active {\n pointer-events: none;\n filter: brightness(85%);\n }\n }\n .footer__start__menu {\n position: absolute;\n left: 0;\n box-shadow: 2px 4px 2px rgba(0, 0, 0, 0.5);\n bottom: 100%;\n }\n .footer__window {\n flex: 1;\n max-width: 150px;\n color: #fff;\n border-radius: 2px;\n margin-top: 2px;\n padding: 0 8px;\n height: 22px;\n font-size: 11px;\n background-color: #3c81f3;\n box-shadow: inset -1px 0px rgba(0, 0, 0, 0.3),\n inset 1px 1px 1px rgba(255, 255, 255, 0.2);\n position: relative;\n display: flex;\n align-items: center;\n }\n .footer__icon {\n height: 15px;\n width: 15px;\n }\n .footer__text {\n position: absolute;\n left: 27px;\n right: 8px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .footer__window.cover:hover {\n background-color: #53a3ff;\n box-shadow: inset -1px 0px rgba(0, 0, 0, 0.3),\n inset 1px 1px 1px rgba(255, 255, 255, 0.2);\n }\n .footer__window.cover:before {\n display: block;\n content: '';\n position: absolute;\n left: -2px;\n top: -2px;\n width: 10px;\n height: 1px;\n border-bottom-right-radius: 50%;\n box-shadow: 2px 2px 3px rgba(255, 255, 255, 0.5);\n }\n .footer__window.cover:hover:active {\n background-color: #1e52b7;\n box-shadow: inset 0 0 1px 1px rgba(0, 0, 0, 0.3),\n inset 1px 0 1px rgba(0, 0, 0, 0.7);\n }\n .footer__window.focus:hover {\n background-color: #3576f3;\n }\n .footer__window.focus:hover:active {\n background-color: #1e52b7;\n }\n .footer__window.focus {\n background-color: #1e52b7;\n box-shadow: inset 0 0 1px 1px rgba(0, 0, 0, 0.2),\n inset 1px 0 1px rgba(0, 0, 0, 0.7);\n }\n .footer__time {\n margin: 0 5px;\n color: #fff;\n font-size: 11px;\n font-weight: lighter;\n text-shadow: none;\n }\n`;\n\nexport default Footer;\n","import { useEffect, useState } from 'react';\n\nfunction useElementResize(ref, options) {\n const {\n defaultOffset,\n defaultSize,\n boundary,\n resizable = true,\n resizeThreshold = 10,\n constraintSize = 200,\n } = options;\n const [offset, setOffset] = useState(defaultOffset);\n const [size, setSize] = useState(defaultSize);\n const cursorPos = useCursor(ref, resizeThreshold, resizable);\n useEffect(() => {\n const target = ref.current;\n if (!target) return;\n const dragTarget = options.dragRef && options.dragRef.current;\n const cover = document.createElement('div');\n cover.style.position = 'fixed';\n cover.style.top = 0;\n cover.style.left = 0;\n cover.style.right = 0;\n cover.style.bottom = 0;\n const previousOffset = { ...offset };\n const previousSize = { ...size };\n let _boundary;\n let originMouseX;\n let originMouseY;\n let shouldCover = false;\n\n function onDragging(e) {\n if (shouldCover && !document.body.contains(cover)) {\n document.body.appendChild(cover);\n }\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n const x = pageX - originMouseX + previousOffset.x;\n const y = pageY - originMouseY + previousOffset.y;\n setOffset({ x, y });\n }\n function onDragEnd(e) {\n cover.remove();\n shouldCover = false;\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n previousOffset.x += pageX - originMouseX;\n previousOffset.y += pageY - originMouseY;\n window.removeEventListener('mousemove', onDragging);\n window.removeEventListener('mouseup', onDragEnd);\n }\n function onDragStart(e) {\n window.addEventListener('mousemove', onDragging);\n window.addEventListener('mouseup', onDragEnd);\n }\n function onDraggingTop(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n const { x } = previousOffset;\n const y = pageY - originMouseY + previousOffset.y;\n setOffset({ x, y });\n }\n function onDragEndTop(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n previousOffset.y += pageY - originMouseY;\n window.removeEventListener('mousemove', onDraggingTop);\n window.removeEventListener('mouseup', onDragEndTop);\n }\n function onDragStartTop(e) {\n window.addEventListener('mousemove', onDraggingTop);\n window.addEventListener('mouseup', onDragEndTop);\n }\n function onDraggingLeft(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n const x = pageX - originMouseX + previousOffset.x;\n const { y } = previousOffset;\n setOffset({ x, y });\n }\n function onDragEndLeft(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n previousOffset.x += pageX - originMouseX;\n window.removeEventListener('mousemove', onDraggingLeft);\n window.removeEventListener('mouseup', onDragEndLeft);\n }\n function onDragStartLeft(e) {\n window.addEventListener('mousemove', onDraggingLeft);\n window.addEventListener('mouseup', onDragEndLeft);\n }\n function onResizingRight(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n const width = pageX - originMouseX + previousSize.width;\n const { height } = previousSize;\n setSize({ width, height });\n }\n function onResizeEndRight(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n previousSize.width += pageX - originMouseX;\n window.removeEventListener('mousemove', onResizingRight);\n window.removeEventListener('mouseup', onResizeEndRight);\n }\n function onResizeStartRight(e) {\n window.addEventListener('mousemove', onResizingRight);\n window.addEventListener('mouseup', onResizeEndRight);\n }\n function onResizingBottom(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n const { width } = previousSize;\n const height = pageY - originMouseY + previousSize.height;\n setSize({ width, height });\n }\n function onResizeEndBottom(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n previousSize.height += pageY - originMouseY;\n window.removeEventListener('mousemove', onResizingBottom);\n window.removeEventListener('mouseup', onResizeEndBottom);\n }\n function onResizeStartBottom(e) {\n window.addEventListener('mousemove', onResizingBottom);\n window.addEventListener('mouseup', onResizeEndBottom);\n }\n function onResizingLeft(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n const width = -pageX + originMouseX + previousSize.width;\n const { height } = previousSize;\n setSize({ width, height });\n }\n function onResizeEndLeft(e) {\n const { pageX } = getComputedPagePosition(e, _boundary);\n previousSize.width += -pageX + originMouseX;\n window.removeEventListener('mousemove', onResizingLeft);\n window.removeEventListener('mouseup', onResizeEndLeft);\n }\n function onResizeStartLeft(e) {\n window.addEventListener('mousemove', onResizingLeft);\n window.addEventListener('mouseup', onResizeEndLeft);\n }\n function onResizingTop(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n const height = -pageY + originMouseY + previousSize.height;\n const { width } = previousSize;\n setSize({ width, height });\n }\n function onResizeEndTop(e) {\n const { pageY } = getComputedPagePosition(e, _boundary);\n previousSize.height += -pageY + originMouseY;\n window.removeEventListener('mousemove', onResizingTop);\n window.removeEventListener('mouseup', onResizeEndTop);\n }\n function onResizeStartTop(e) {\n window.addEventListener('mousemove', onResizingTop);\n window.addEventListener('mouseup', onResizeEndTop);\n }\n function onResizingTopLeft(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n const width = -pageX + originMouseX + previousSize.width;\n const height = -pageY + originMouseY + previousSize.height;\n setSize({ width, height });\n }\n function onResizeEndTopLeft(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n previousSize.width += -pageX + originMouseX;\n previousSize.height += -pageY + originMouseY;\n window.removeEventListener('mousemove', onResizingTopLeft);\n window.removeEventListener('mouseup', onResizeEndTopLeft);\n }\n function onResizeStartTopLeft(e) {\n window.addEventListener('mousemove', onResizingTopLeft);\n window.addEventListener('mouseup', onResizeEndTopLeft);\n }\n function onResizingTopRight(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n const width = pageX - originMouseX + previousSize.width;\n const height = -pageY + originMouseY + previousSize.height;\n setSize({ width, height });\n }\n function onResizeEndTopRight(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n previousSize.width += pageX - originMouseX;\n previousSize.height += -pageY + originMouseY;\n window.removeEventListener('mousemove', onResizingTopRight);\n window.removeEventListener('mouseup', onResizeEndTopRight);\n }\n function onResizeStartTopRight(e) {\n window.addEventListener('mousemove', onResizingTopRight);\n window.addEventListener('mouseup', onResizeEndTopRight);\n }\n function onResizingBottomLeft(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n const width = -pageX + originMouseX + previousSize.width;\n const height = pageY - originMouseY + previousSize.height;\n setSize({ width, height });\n }\n function onResizeEndBottomLeft(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n previousSize.width += -pageX + originMouseX;\n previousSize.height += pageY - originMouseY;\n window.removeEventListener('mousemove', onResizingBottomLeft);\n window.removeEventListener('mouseup', onResizeEndBottomLeft);\n }\n function onResizeStartBottomLeft(e) {\n window.addEventListener('mousemove', onResizingBottomLeft);\n window.addEventListener('mouseup', onResizeEndBottomLeft);\n }\n function onResizingBottomRight(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n const width = pageX - originMouseX + previousSize.width;\n const height = pageY - originMouseY + previousSize.height;\n setSize({ width, height });\n }\n function onResizeEndBottomRight(e) {\n const { pageX, pageY } = getComputedPagePosition(e, _boundary);\n previousSize.width += pageX - originMouseX;\n previousSize.height += pageY - originMouseY;\n window.removeEventListener('mousemove', onResizingBottomRight);\n window.removeEventListener('mouseup', onResizeEndBottomRight);\n }\n function onResizeStartBottomRight(e) {\n window.addEventListener('mousemove', onResizingBottomRight);\n window.addEventListener('mouseup', onResizeEndBottomRight);\n }\n function onMouseDown(e) {\n originMouseX = e.pageX;\n originMouseY = e.pageY;\n _boundary = { ...boundary };\n if (dragTarget && e.target === dragTarget) {\n shouldCover = true;\n return onDragStart(e);\n }\n if (e.target !== target || !resizable) return;\n switch (cursorPos) {\n case 'topLeft':\n _boundary.right = originMouseX + previousSize.width - constraintSize;\n _boundary.bottom =\n originMouseY + previousSize.height - constraintSize;\n onResizeStartTopLeft(e);\n onDragStart(e);\n break;\n case 'left':\n _boundary.right = originMouseX + previousSize.width - constraintSize;\n onResizeStartLeft(e);\n onDragStartLeft(e);\n break;\n case 'bottomLeft':\n _boundary.right = originMouseX + previousSize.width - constraintSize;\n _boundary.top = originMouseY - previousSize.height + constraintSize;\n onResizeStartBottomLeft(e);\n onDragStartLeft(e);\n break;\n case 'top':\n _boundary.bottom =\n originMouseY + previousSize.height - constraintSize;\n onResizeStartTop(e);\n onDragStartTop(e);\n break;\n case 'topRight':\n _boundary.bottom =\n originMouseY + previousSize.height - constraintSize;\n _boundary.left = originMouseX - previousSize.width + constraintSize;\n onDragStartTop(e);\n onResizeStartTopRight(e);\n break;\n case 'right':\n _boundary.left = originMouseX - previousSize.width + constraintSize;\n onResizeStartRight(e);\n break;\n case 'bottomRight':\n _boundary.top = originMouseY - previousSize.height + constraintSize;\n _boundary.left = originMouseX - previousSize.width + constraintSize;\n onResizeStartBottomRight(e);\n break;\n case 'bottom':\n _boundary.top = originMouseY - previousSize.height + constraintSize;\n onResizeStartBottom(e);\n break;\n default:\n }\n }\n target.addEventListener('mousedown', onMouseDown);\n return () => {\n target.removeEventListener('mousedown', onMouseDown);\n window.removeEventListener('mousemove', onDraggingLeft);\n window.removeEventListener('mousemove', onDraggingTop);\n window.removeEventListener('mousemove', onDragging);\n window.removeEventListener('mouseup', onDragEndTop);\n window.removeEventListener('mouseup', onDragEndLeft);\n window.removeEventListener('mouseup', onDragEnd);\n window.removeEventListener('mousemove', onResizingTop);\n window.removeEventListener('mousemove', onResizingRight);\n window.removeEventListener('mousemove', onResizingBottom);\n window.removeEventListener('mousemove', onResizingLeft);\n window.removeEventListener('mousemove', onResizingBottomLeft);\n window.removeEventListener('mousemove', onResizingTopLeft);\n window.removeEventListener('mousemove', onResizingTopRight);\n window.removeEventListener('mousemove', onResizingBottomRight);\n window.removeEventListener('mouseup', onResizeEndTop);\n window.removeEventListener('mouseup', onResizeEndRight);\n window.removeEventListener('mouseup', onResizeEndBottom);\n window.removeEventListener('mouseup', onResizeEndLeft);\n window.removeEventListener('mouseup', onResizeEndBottomLeft);\n window.removeEventListener('mouseup', onResizeEndTopLeft);\n window.removeEventListener('mouseup', onResizeEndTopRight);\n window.removeEventListener('mouseup', onResizeEndBottomRight);\n cover.remove();\n };\n // eslint-disable-next-line\n }, [boundary.top, boundary.right, boundary.bottom, boundary.left, cursorPos]);\n return { offset, size };\n}\nfunction useCursor(ref, threshold, resizable) {\n const [position, setPosition] = useState('');\n useEffect(() => {\n const target = ref.current;\n if (!target || !resizable) return;\n const cover = document.createElement('div');\n cover.style.position = 'fixed';\n cover.style.top = 0;\n cover.style.left = 0;\n cover.style.right = 0;\n cover.style.bottom = 0;\n let lock = false;\n function _setPosition(p) {\n setPosition(p);\n target.style.cursor = getCursorStyle(p);\n cover.style.cursor = getCursorStyle(p);\n }\n function onMouseDown(e) {\n if (e.target !== target) return;\n onHover(e);\n lock = true;\n document.body.appendChild(cover);\n window.addEventListener('mouseup', onMouseUp);\n }\n function onMouseUp(e) {\n lock = false;\n cover.remove();\n window.removeEventListener('mouseup', onMouseUp);\n }\n function onHoverEnd(e) {\n if (lock) return;\n _setPosition('');\n }\n function onHover(e) {\n if (lock) return;\n if (e.target !== target) return _setPosition('');\n const { offsetX, offsetY } = e;\n const { width, height } = target.getBoundingClientRect();\n if (offsetX < threshold) {\n if (offsetY < threshold) {\n _setPosition('topLeft');\n } else if (height - offsetY < threshold) {\n _setPosition('bottomLeft');\n } else {\n _setPosition('left');\n }\n } else if (offsetY < threshold) {\n if (width - offsetX < threshold) {\n _setPosition('topRight');\n } else {\n _setPosition('top');\n }\n } else if (width - offsetX < threshold) {\n if (height - offsetY < threshold) _setPosition('bottomRight');\n else _setPosition('right');\n } else if (height - offsetY < threshold) {\n _setPosition('bottom');\n } else {\n _setPosition('');\n }\n }\n target.addEventListener('mouseleave', onHoverEnd);\n target.addEventListener('mousemove', onHover);\n target.addEventListener('mousedown', onMouseDown);\n return () => {\n cover.remove();\n target.removeEventListener('mouseleave', onHoverEnd);\n target.removeEventListener('mousemove', onHover);\n target.removeEventListener('mousedown', onMouseDown);\n window.removeEventListener('mouseup', onMouseUp);\n };\n // eslint-disable-next-line\n }, []);\n return position;\n}\n\nfunction getComputedPagePosition(e, boundary) {\n let { pageX, pageY } = e;\n if (!boundary) return { pageX, pageY };\n const { top, right, bottom, left } = boundary;\n if (pageX <= left) pageX = left;\n else if (pageX >= right) pageX = right;\n if (pageY <= top) pageY = top;\n else if (pageY >= bottom) pageY = bottom;\n return { pageX, pageY };\n}\nfunction getCursorStyle(pos) {\n switch (pos) {\n case 'top':\n return 'n-resize';\n case 'topRight':\n return 'ne-resize';\n case 'right':\n return 'e-resize';\n case 'bottomRight':\n return 'se-resize';\n case 'bottom':\n return 's-resize';\n case 'bottomLeft':\n return 'sw-resize';\n case 'left':\n return 'w-resize';\n case 'topLeft':\n return 'nw-resize';\n default:\n return 'auto';\n }\n}\nexport default useElementResize;\n","import React from 'react';\nimport styled from 'styled-components';\n\nfunction HeaderButtons({\n buttons,\n onMaximize,\n onMinimize,\n onClose,\n maximized,\n resizable,\n className,\n}) {\n const buttonElements = {\n minimize: (\n \n ),\n maximize: (\n \n ),\n close: (\n \n ),\n };\n\n return (\n \n {buttons ? (\n buttons.map(b => buttonElements[b])\n ) : (\n <>\n {buttonElements.minimize}\n {buttonElements.maximize}\n {buttonElements.close}\n >\n )}\n
\n );\n}\n\nexport default styled(HeaderButtons)`\n opacity: ${({ isFocus }) => (isFocus ? 1 : 0.6)};\n height: 22px;\n display: flex;\n align-items: center;\n margin-top: -1px;\n margin-right: 1px;\n .header__button {\n margin-right: 1px;\n position: relative;\n width: 22px;\n height: 22px;\n border: 1px solid #fff;\n border-radius: 3px;\n &:hover {\n filter: brightness(120%);\n }\n &:hover:active {\n filter: brightness(90%);\n }\n }\n .header__button--minimize {\n box-shadow: inset 0 -1px 2px 1px #4646ff;\n background-image: radial-gradient(\n circle at 90% 90%,\n #0054e9 0%,\n #2263d5 55%,\n #4479e4 70%,\n #a3bbec 90%,\n white 100%\n );\n &:before {\n content: '';\n position: absolute;\n left: 4px;\n top: 13px;\n height: 3px;\n width: 8px;\n background-color: white;\n }\n }\n .header__button--maximize {\n box-shadow: inset 0 -1px 2px 1px #4646ff;\n background-image: radial-gradient(\n circle at 90% 90%,\n #0054e9 0%,\n #2263d5 55%,\n #4479e4 70%,\n #a3bbec 90%,\n white 100%\n );\n &:before {\n content: '';\n position: absolute;\n display: block;\n left: 4px;\n top: 4px;\n box-shadow: inset 0 3px white, inset 0 0 0 1px white;\n height: 12px;\n width: 12px;\n }\n }\n .header__button--maximized {\n box-shadow: inset 0 -1px 2px 1px #4646ff;\n background-image: radial-gradient(\n circle at 90% 90%,\n #0054e9 0%,\n #2263d5 55%,\n #4479e4 70%,\n #a3bbec 90%,\n white 100%\n );\n &:before {\n content: '';\n position: absolute;\n display: block;\n left: 7px;\n top: 4px;\n box-shadow: inset 0 2px white, inset 0 0 0 1px white;\n height: 8px;\n width: 8px;\n }\n &:after {\n content: '';\n position: absolute;\n display: block;\n left: 4px;\n top: 7px;\n box-shadow: inset 0 2px white, inset 0 0 0 1px white, 1px -1px #136dff;\n height: 8px;\n width: 8px;\n background-color: #136dff;\n }\n }\n .header__button--close {\n box-shadow: inset 0 -1px 2px 1px #da4600;\n background-image: radial-gradient(\n circle at 90% 90%,\n #cc4600 0%,\n #dc6527 55%,\n #cd7546 70%,\n #ffccb2 90%,\n white 100%\n );\n &:before {\n content: '';\n position: absolute;\n left: 9px;\n top: 2px;\n transform: rotate(45deg);\n height: 16px;\n width: 2px;\n background-color: white;\n }\n &:after {\n content: '';\n position: absolute;\n left: 9px;\n top: 2px;\n transform: rotate(-45deg);\n height: 16px;\n width: 2px;\n background-color: white;\n }\n }\n .header__button--disable {\n outline: none;\n opacity: 0.5;\n &:hover {\n filter: brightness(100%);\n }\n }\n`;\n","import React, { useRef, memo } from 'react';\nimport useWindowSize from 'react-use/lib/useWindowSize';\nimport styled from 'styled-components';\n\nimport { useElementResize } from 'hooks';\nimport HeaderButtons from './HeaderButtons';\n\nfunction Windows({\n apps,\n onMouseDown,\n onClose,\n onMinimize,\n onMaximize,\n focusedAppId,\n}) {\n return (\n \n {apps.map(app => (\n \n ))}\n
\n );\n}\n\nconst Window = memo(function({\n injectProps,\n id,\n onMouseDown,\n onMouseUpClose,\n onMouseUpMinimize,\n onMouseUpMaximize,\n header,\n defaultSize,\n defaultOffset,\n resizable,\n maximized,\n component,\n zIndex,\n isFocus,\n className,\n}) {\n function _onMouseDown() {\n onMouseDown(id);\n }\n function _onMouseUpClose() {\n onMouseUpClose(id);\n }\n function _onMouseUpMinimize() {\n onMouseUpMinimize(id);\n }\n function _onMouseUpMaximize() {\n if (resizable) onMouseUpMaximize(id);\n }\n function onDoubleClickHeader(e) {\n if (e.target !== dragRef.current) return;\n _onMouseUpMaximize();\n }\n const dragRef = useRef(null);\n const ref = useRef(null);\n const { width: windowWidth, height: windowHeight } = useWindowSize();\n const { offset, size } = useElementResize(ref, {\n dragRef,\n defaultOffset,\n defaultSize,\n boundary: {\n top: 1,\n right: windowWidth - 1,\n bottom: windowHeight - 31,\n left: 1,\n },\n resizable,\n resizeThreshold: 10,\n });\n let width, height, x, y;\n if (maximized) {\n width = windowWidth + 6;\n height = windowHeight - 24;\n x = -3;\n y = -3;\n } else {\n width = size.width;\n height = size.height;\n x = offset.x;\n y = offset.y;\n }\n return (\n \n
\n
\n
\n {header.title}
\n \n \n
\n {component({\n onClose: _onMouseUpClose,\n onMinimize: _onMouseUpMinimize,\n isFocus,\n ...injectProps,\n })}\n
\n
\n );\n});\n\nconst StyledWindow = styled(Window)`\n display: ${({ show }) => (show ? 'flex' : 'none')};\n position: absolute;\n padding: 3px;\n padding: ${({ header }) => (header.invisible ? 0 : 3)}px;\n background-color: ${({ isFocus }) => (isFocus ? '#0831d9' : '#6582f5')};\n flex-direction: column;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n .header__bg {\n background: ${({ isFocus }) =>\n isFocus\n ? 'linear-gradient(to bottom,#0058ee 0%,#3593ff 4%,#288eff 6%,#127dff 8%,#036ffc 10%,#0262ee 14%,#0057e5 20%,#0054e3 24%,#0055eb 56%,#005bf5 66%,#026afe 76%,#0062ef 86%,#0052d6 92%,#0040ab 94%,#003092 100%)'\n : 'linear-gradient(to bottom, #7697e7 0%,#7e9ee3 3%,#94afe8 6%,#97b4e9 8%,#82a5e4 14%,#7c9fe2 17%,#7996de 25%,#7b99e1 56%,#82a9e9 81%,#80a5e7 89%,#7b96e1 94%,#7a93df 97%,#abbae3 100%)'};\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n height: 28px;\n pointer-events: none;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n overflow: hidden;\n }\n .header__bg:before {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n opacity: ${({ isFocus }) => (isFocus ? 1 : 0.3)};\n background: linear-gradient(to right, #1638e6 0%, transparent 100%);\n top: 0;\n bottom: 0;\n width: 15px;\n }\n .header__bg:after {\n content: '';\n opacity: ${({ isFocus }) => (isFocus ? 1 : 0.4)};\n display: block;\n position: absolute;\n right: 0;\n background: linear-gradient(to left, #1638e6 0%, transparent 100%);\n top: 0;\n bottom: 0;\n width: 15px;\n }\n .app__header {\n display: ${({ header }) => (header.invisible ? 'none' : 'flex')};\n height: 25px;\n line-height: 25px;\n font-weight: 700;\n font-size: 12px;\n font-family: 'Noto Sans';\n text-shadow: 1px 1px #000;\n color: white;\n position: absolute;\n left: 3px;\n right: 3px;\n align-items: center;\n z-index: 20;\n }\n .app__header__icon {\n width: 15px;\n height: 15px;\n margin-left: 1px;\n margin-right: 3px;\n }\n .app__header__title {\n flex: 1;\n pointer-events: none;\n padding-right: 5px;\n letter-spacing: 0.5px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .app__content {\n flex: 1;\n position: relative;\n margin-top: 25px;\n height: calc(100% - 25px);\n }\n`;\n\nexport default Windows;\n","import React, { useState, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { isMobile } from 'react-device-detect';\n\nfunction Icons({\n icons,\n onMouseDown,\n onDoubleClick,\n displayFocus,\n mouse,\n selecting,\n setSelectedIcons,\n}) {\n const [iconsRect, setIconsRect] = useState([]);\n function measure(rect) {\n if (iconsRect.find(r => r.id === rect.id)) return;\n setIconsRect(iconsRect => [...iconsRect, rect]);\n }\n useEffect(() => {\n if (!selecting) return;\n const sx = Math.min(selecting.x, mouse.docX);\n const sy = Math.min(selecting.y, mouse.docY);\n const sw = Math.abs(selecting.x - mouse.docX);\n const sh = Math.abs(selecting.y - mouse.docY);\n const selectedIds = iconsRect\n .filter(rect => {\n const { x, y, w, h } = rect;\n return x - sx < sw && sx - x < w && y - sy < sh && sy - y < h;\n })\n .map(icon => icon.id);\n setSelectedIcons(selectedIds);\n }, [iconsRect, setSelectedIcons, selecting, mouse.docX, mouse.docY]);\n return (\n \n {icons.map(icon => (\n \n ))}\n \n );\n}\n\nfunction Icon({\n title,\n onMouseDown,\n onDoubleClick,\n icon,\n className,\n id,\n component,\n measure,\n link\n}) {\n const ref = useRef(null);\n \n function _onMouseDown() {\n // If mobile on mouse down direct trigger double click and skip icon selection...\n if(isMobile) {\n _onDoubleClick();\n } else {\n onMouseDown(id);\n }\n }\n function _onDoubleClick() {\n // If icon contains link open it in new window\n // Otherwise: Load the related component\n if(!link) {\n onDoubleClick(component);\n } else {\n window.open(link, '_blank');\n }\n }\n useEffect(() => {\n const target = ref.current;\n if (!target) return;\n const { left, top, width, height } = ref.current.getBoundingClientRect();\n const posX = left + window.scrollX;\n const posY = top + window.scrollY;\n measure({ id, x: posX, y: posY, w: width, h: height });\n }, [id, measure]);\n return (\n \n
\n

\n
\n
\n
\n );\n}\n\nconst IconsContainer = styled.div`\n position: absolute;\n margin-top: 30px;\n margin-left: 30px;\n display: flex;\n flex-flow: column wrap;\n height: 100vh;\n padding-bottom: 40px;\n\n @media (max-width: 800px) {\n margin-left: 20px;\n margin-top: 20px;\n }\n`;\n\nconst StyledIcon = styled(Icon)`\n width: 70px;\n height: 55px;\n margin-bottom: 30px;\n margin-right: 22px;\n display: flex;\n flex-direction: column;\n align-items: center;\n @media (max-width: 800px) {\n margin-right: 15px;\n }\n &__text__container {\n width: 100%;\n font-size: 10px;\n color: white;\n text-shadow: 0 1px 1px black;\n margin-top: 5px;\n display: flex;\n justify-content: center;\n\n &:before {\n content: '';\n display: block;\n flex-grow: 1;\n }\n &:after {\n content: '';\n display: block;\n flex-grow: 1;\n }\n }\n &__text {\n padding: 0 3px 2px;\n background-color: ${({ isFocus, displayFocus }) =>\n isFocus && displayFocus ? '#0b61ff' : 'transparent'};\n text-align: center;\n flex-shrink: 1;\n }\n &__img__container {\n width: 30px;\n height: 30px;\n filter: ${({ isFocus, displayFocus }) =>\n isFocus && displayFocus ? 'drop-shadow(0 0 blue)' : ''};\n }\n &__img {\n width: 30px;\n height: 30px;\n opacity: ${({ isFocus, displayFocus }) =>\n isFocus && displayFocus ? 0.5 : 1};\n }\n`;\n\nexport default Icons;\n","import React, { useReducer, useRef, useCallback, useEffect, useState } from 'react';\nimport styled, { keyframes } from 'styled-components';\nimport useMouse from 'react-use/lib/useMouse';\n\nimport {\n ADD_APP,\n DEL_APP,\n FOCUS_APP,\n MINIMIZE_APP,\n TOGGLE_MAXIMIZE_APP,\n FOCUS_ICON,\n SELECT_ICONS,\n FOCUS_DESKTOP,\n START_SELECT,\n END_SELECT,\n POWER_OFF,\n CANCEL_POWER_OFF,\n} from './constants/actions';\nimport { FOCUSING, POWER_STATE } from './constants';\nimport { defaultIconState, defaultAppState, appSettings } from './apps';\nimport Modal from './Modal';\nimport Footer from './Footer';\nimport Windows from './Windows';\nimport Icons from './Icons';\nimport { DashedBox } from 'components';\n\nconst initState = {\n apps: defaultAppState,\n nextAppID: defaultAppState.length,\n nextZIndex: defaultAppState.length,\n focusing: FOCUSING.WINDOW,\n icons: defaultIconState,\n selecting: false,\n powerState: POWER_STATE.START,\n};\nconst reducer = (state, action = { type: '' }) => {\n switch (action.type) {\n case ADD_APP:\n const app = state.apps.find(\n _app => _app.component === action.payload.component,\n );\n if (action.payload.multiInstance || !app) {\n return {\n ...state,\n apps: [\n ...state.apps,\n {\n ...action.payload,\n id: state.nextAppID,\n zIndex: state.nextZIndex,\n },\n ],\n nextAppID: state.nextAppID + 1,\n nextZIndex: state.nextZIndex + 1,\n focusing: FOCUSING.WINDOW,\n };\n }\n const apps = state.apps.map(app =>\n app.component === action.payload.component\n ? { ...app, zIndex: state.nextZIndex, minimized: false }\n : app,\n );\n return {\n ...state,\n apps,\n nextZIndex: state.nextZIndex + 1,\n focusing: FOCUSING.WINDOW,\n };\n case DEL_APP:\n if (state.focusing !== FOCUSING.WINDOW) return state;\n return {\n ...state,\n apps: state.apps.filter(app => app.id !== action.payload),\n focusing:\n state.apps.length > 1\n ? FOCUSING.WINDOW\n : state.icons.find(icon => icon.isFocus)\n ? FOCUSING.ICON\n : FOCUSING.DESKTOP,\n };\n case FOCUS_APP: {\n const apps = state.apps.map(app =>\n app.id === action.payload\n ? { ...app, zIndex: state.nextZIndex, minimized: false }\n : app,\n );\n return {\n ...state,\n apps,\n nextZIndex: state.nextZIndex + 1,\n focusing: FOCUSING.WINDOW,\n };\n }\n case MINIMIZE_APP: {\n if (state.focusing !== FOCUSING.WINDOW) return state;\n const apps = state.apps.map(app =>\n app.id === action.payload ? { ...app, minimized: true } : app,\n );\n return {\n ...state,\n apps,\n focusing: FOCUSING.WINDOW,\n };\n }\n case TOGGLE_MAXIMIZE_APP: {\n if (state.focusing !== FOCUSING.WINDOW) return state;\n const apps = state.apps.map(app =>\n app.id === action.payload ? { ...app, maximized: !app.maximized } : app,\n );\n return {\n ...state,\n apps,\n focusing: FOCUSING.WINDOW,\n };\n }\n case FOCUS_ICON: {\n const icons = state.icons.map(icon => ({\n ...icon,\n isFocus: icon.id === action.payload,\n }));\n return {\n ...state,\n focusing: FOCUSING.ICON,\n icons,\n };\n }\n case SELECT_ICONS: {\n const icons = state.icons.map(icon => ({\n ...icon,\n isFocus: action.payload.includes(icon.id),\n }));\n return {\n ...state,\n icons,\n focusing: FOCUSING.ICON,\n };\n }\n case FOCUS_DESKTOP:\n return {\n ...state,\n focusing: FOCUSING.DESKTOP,\n icons: state.icons.map(icon => ({\n ...icon,\n isFocus: false,\n })),\n };\n case START_SELECT:\n return {\n ...state,\n focusing: FOCUSING.DESKTOP,\n icons: state.icons.map(icon => ({\n ...icon,\n isFocus: false,\n })),\n selecting: action.payload,\n };\n case END_SELECT:\n return {\n ...state,\n selecting: null,\n };\n case POWER_OFF:\n return {\n ...state,\n powerState: action.payload,\n };\n case CANCEL_POWER_OFF:\n return {\n ...state,\n powerState: POWER_STATE.START,\n };\n default:\n return state;\n }\n};\nfunction WinXP() {\n const [state, dispatch] = useReducer(reducer, initState);\n const ref = useRef(null);\n const mouse = useMouse(ref);\n const [showStartupAudio, setShowStartupAudio] = useState(false);\n const [triggerStartupAudio, setTriggerStartupAudio] = useState(true);\n const focusedAppId = getFocusedAppId();\n const onFocusApp = useCallback(id => {\n dispatch({ type: FOCUS_APP, payload: id });\n }, []);\n const onMaximizeWindow = useCallback(\n id => {\n if (focusedAppId === id) {\n dispatch({ type: TOGGLE_MAXIMIZE_APP, payload: id });\n }\n },\n [focusedAppId],\n );\n const onMinimizeWindow = useCallback(\n id => {\n if (focusedAppId === id) {\n dispatch({ type: MINIMIZE_APP, payload: id });\n }\n },\n [focusedAppId],\n );\n const onCloseApp = useCallback(\n id => {\n if (focusedAppId === id) {\n dispatch({ type: DEL_APP, payload: id });\n }\n },\n [focusedAppId],\n );\n function onMouseDownFooterApp(id) {\n if (focusedAppId === id) {\n dispatch({ type: MINIMIZE_APP, payload: id });\n } else {\n dispatch({ type: FOCUS_APP, payload: id });\n }\n }\n function onMouseDownIcon(id) {\n dispatch({ type: FOCUS_ICON, payload: id });\n }\n function onDoubleClickIcon(component) {\n const appSetting = Object.values(appSettings).find(\n setting => setting.component === component,\n );\n dispatch({ type: ADD_APP, payload: appSetting });\n }\n function getFocusedAppId() {\n if (state.focusing !== FOCUSING.WINDOW) return -1;\n const focusedApp = [...state.apps]\n .sort((a, b) => b.zIndex - a.zIndex)\n .find(app => !app.minimized);\n return focusedApp ? focusedApp.id : -1;\n }\n function onMouseDownFooter() {\n dispatch({ type: FOCUS_DESKTOP });\n }\n function onClickMenuItem(o) {\n if (o === 'Internet')\n dispatch({ type: ADD_APP, payload: appSettings['Internet Explorer'] });\n else if (o === 'Minesweeper')\n dispatch({ type: ADD_APP, payload: appSettings.Minesweeper });\n else if (o === 'My Computer')\n dispatch({ type: ADD_APP, payload: appSettings['My Computer'] });\n else if (o === 'Notepad')\n dispatch({ type: ADD_APP, payload: appSettings.Notepad });\n else if (o === 'Winamp')\n dispatch({ type: ADD_APP, payload: appSettings.Winamp });\n else if (o === 'Paint')\n dispatch({ type: ADD_APP, payload: appSettings.Paint });\n else if (o === 'Pinball')\n dispatch({ type: ADD_APP, payload: appSettings.Pinball });\n else if (o === 'Solitaire')\n dispatch({ type: ADD_APP, payload: appSettings.Solitaire });\n else if (o === 'Log Off')\n dispatch({ type: POWER_OFF, payload: POWER_STATE.LOG_OFF });\n else if (o === 'Turn Off Computer')\n dispatch({ type: POWER_OFF, payload: POWER_STATE.TURN_OFF });\n else\n dispatch({\n type: ADD_APP,\n payload: {\n ...appSettings.Error,\n injectProps: { message: 'C:\\\\\\nApplication not found' },\n },\n });\n }\n function onMouseDownDesktop(e) {\n if (e.target === e.currentTarget)\n dispatch({\n type: START_SELECT,\n payload: { x: mouse.docX, y: mouse.docY },\n });\n }\n function onMouseUpDesktop(e) {\n dispatch({ type: END_SELECT });\n }\n const onIconsSelected = useCallback(\n iconIds => {\n dispatch({ type: SELECT_ICONS, payload: iconIds });\n },\n [dispatch],\n );\n function onClickModalButton(text) {\n dispatch({ type: CANCEL_POWER_OFF });\n dispatch({\n type: ADD_APP,\n payload: appSettings.Error,\n });\n }\n function onModalClose() {\n dispatch({ type: CANCEL_POWER_OFF });\n }\n\n useEffect(() => {\n if (triggerStartupAudio) {\n const addStartupAudioTimeout = setTimeout(() => {\n setShowStartupAudio(true);\n }, 500);\n const removeStartupAudioTimeout = setTimeout(() => {\n setShowStartupAudio(false);\n }, 6000);\n\n setTriggerStartupAudio(false);\n\n return () => {\n clearTimeout(addStartupAudioTimeout);\n clearTimeout(removeStartupAudioTimeout);\n };\n }\n }, [showStartupAudio]);\n\n return (\n \n \n \n \n \n {state.powerState !== POWER_STATE.START && (\n \n )}\n {showStartupAudio && }\n \n );\n}\n\nconst powerOffAnimation = keyframes`\n 0% {\n filter: brightness(1) grayscale(0);\n }\n 30% {\n filter: brightness(1) grayscale(0);\n }\n 100% {\n filter: brightness(0.6) grayscale(1);\n }\n`;\nconst animation = {\n [POWER_STATE.START]: '',\n [POWER_STATE.TURN_OFF]: powerOffAnimation,\n [POWER_STATE.LOG_OFF]: powerOffAnimation,\n};\n\nconst Container = styled.div`\n @import url('https://fonts.googleapis.com/css?family=Noto+Sans');\n font-family: Tahoma, 'Noto Sans', sans-serif;\n height: 100%;\n overflow: hidden;\n position: relative;\n background: url(/wallpapers/green-wallpaper.jpeg) no-repeat center center fixed;\n background-size: cover;\n animation: ${({ state }) => animation[state]} 5s forwards;\n *:not(input):not(textarea) {\n user-select: none;\n }\n`;\n\nexport default WinXP;\n","import { useEffect, useRef } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\n\nconst BootupScreen = styled.div`\n display: block;\n background: black;\n width: 100%;\n height: 100vh;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n .loading-container {\n display: block;\n height: 46px;\n max-width: 380px;\n border: 3px solid #a8a8a8;\n border-radius: 12px;\n scale: 0.5;\n overflow: hidden;\n position: relative;\n }\n .logo {\n width: 100%;\n max-width: 400px;\n margin-bottom: 50px;\n }\n .loading-wrap {\n width: 100px;\n position: absolute;\n left: 0; /* Initially start from the left edge */\n top: 3px;\n > span {\n background-repeat: repeat-x;\n display: inline-block;\n width: 22px;\n height: 33px;\n border-radius: 3px;\n margin-right: 6px;\n }\n .rect1 {\n background-image: url(\"/bootup/gradient1.png\");\n }\n .rect2 {\n background-image: url(\"/bootup/gradient2.png\");\n }\n .rect3 {\n background-image: url(\"/bootup/gradient3.png\");\n }\n }\n\n .animation-wrap {\n padding: 10px 40px;\n text-align: center;\n\n animation: ${fadeIn} 2.8s ease-out forwards;\n }\n span.footer {\n position: absolute;\n left: 20px;\n bottom: 22px;\n color: #f1f1f1;\n font-size: 16px;\n }\n`;\n\nconst BootupAnimation = ({ onBootComplete }) => {\n const loadingWrapRef = useRef(null);\n\n useEffect(() => {\n const loadingWrap = loadingWrapRef.current;\n let position = -150; // Initial position\n const interval = setInterval(() => {\n position += 20; // Move 10 pixels per step\n loadingWrap.style.left = `${position}px`;\n if (position >= 400) {\n position = -150; // Reset position when it reaches the end\n }\n }, 70); // Adjust interval duration as needed\n\n const timer = setTimeout(() => {\n clearInterval(interval);\n if (onBootComplete) {\n localStorage.setItem('booted', 'true');\n onBootComplete();\n }\n }, 8 * 1000); // Adjust time for bootup animation as needed\n\n return () => {\n clearInterval(interval);\n clearTimeout(timer);\n };\n }, [onBootComplete]);\n\n return (\n \n \n

\n
\n
Powered by Internet Computer ® 100% on-chain\n
\n \n );\n};\n\nexport default BootupAnimation;\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\n\n// Styled-component definition\nconst LoadingScreenWrap = styled.div`\n font: bolder 20px 'Courier New', monospace;\n background-color: #0000aa;\n position: absolute;\n height: 100%;\n width: 100%;\n color: #b0b0bf;\n text-align: center;\n @media screen and (max-width: 768px) {\n .header-text > div:first-child {\n margin-bottom: 20px;\n }\n }\n .header {\n padding-top: 16px;\n padding-left: 16px;\n padding-bottom: 4px;\n border-bottom: 1px solid #b0b0bf;\n position: absolute;\n top: 0;\n left: 0;\n padding-right: 16px;\n &::after {\n content: '';\n height: 1px;\n width: 100%;\n background-color: #b0b0bf;\n display: block;\n position: absolute;\n left: 0;\n margin-top: 8px;\n }\n }\n\n p {\n display: inline-block;\n }\n\n .loading-wrap {\n border: 1px solid #b0b0bf;\n outline: 1px solid;\n outline-offset: 3px;\n display: block;\n margin: 100px auto;\n width: 100%;\n max-width: 800px;\n padding: 8px 10px;\n text-align: left;\n .progress-wrap {\n span {\n margin-top: 10px;\n display: inline-block;\n width: 100%;\n text-align: center;\n }\n }\n .progress-bar {\n border: 2px solid #b0b0bf;\n height: 40px;\n margin: 5px 40px;\n padding: 6px;\n }\n }\n .footer-bar {\n background-color: #b1b1b1;\n text-align: right;\n color: #010101;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n > span {\n display: inline-block;\n padding-left: 4px;\n border-left: 2px solid #010101;\n > span {\n display: inline-block;\n width: 160px;\n text-align: left;\n }\n }\n }\n\n .loading-body {\n padding: 0 15px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n height: 100vh;\n width: 100%;\n > div {\n width: 100%;\n }\n }\n`;\n\nconst LoadingScreen = ({ onNext }) => {\n const [progress, setProgress] = useState(0);\n const [fileName, setFileName] = useState('');\n const importantWindowsXPFiles = ['_default.pif', 'access.chm', 'adptif.dll', 'apcompat.inf', 'appmig.inf', 'asr_ldm.exe', 'atmuni.sys', 'autodisc.dll', 'avifile.dll', 'bios4.rom', 'bootok.exe', 'brmfcmf.inf', 'camera.chm', 'cards.dll', 'cdaudio.sys', 'config.nt', 'ddeml.dll', 'desk.cpl', 'dfs.sys', 'dialer.exe', 'diskcopy.dll', 'dplaysvr.exe', 'dsound.dll', 'dvdplay.exe', 'eventvwr.msc', 'explorer.exe', 'fastfat.sys', 'fc.exe', 'filemgmt.msc', 'find.exe', 'fontview.exe', 'freecell.exe', 'fsquirt.exe', 'ftp.exe', 'gdi32.dll', 'hal.dll', 'hh.exe', 'hid.dll', 'hnetcfg.dll', 'hostmib.dll', 'http.sys', 'iexpress.exe', 'imapi.exe', 'imgutil.dll', 'inetmib1.dll', 'ipconfig.exe', 'ipnat.sys', 'ipsec.sys', 'ipv6.exe', 'kernel32.dll', 'logoff.exe', 'login.scr', 'magnify.exe', 'main.cpl', 'mdm.exe', 'mfc42.dll', 'mmc.exe', 'mobsync.exe', 'mouclass.sys', 'mplay32.exe', 'msconfig.exe', 'msdtc.exe', 'mshearts.exe', 'mshtml.dll', 'msiexec.exe', 'msinfo32.exe', 'mspaint.exe', 'mstsc.exe', 'nbtstat.exe', 'nddeapir.exe', 'net.exe', 'net1.exe', 'netbt.sys', 'netcfgx.dll', 'netdiag.exe', 'netshell.dll', 'netstat.exe', 'ntbackup.exe', 'ntdll.dll', 'ntkrnlpa.exe', 'ntldr', 'ntoskrnl.exe', 'ntvdm.exe', 'nwlink.sys', 'ole32.dll', 'oleaut32.dll', 'osk.exe', 'packager.exe', 'perfmon.exe', 'ping.exe', 'powercfg.cpl', 'print.exe', 'progman.exe', 'rasautou.exe', 'rasdlg.dll', 'regedit.exe', 'regsvr32.exe', 'rstrui.exe', 'rtutils.dll', 'sc.exe', 'scardsvr.exe', 'schannel.dll', 'secedit.exe', 'services.exe', 'sethc.exe', 'setupapi.dll', 'sfc.exe', 'shell32.dll', 'smss.exe', 'sndrec32.exe', 'sol.exe', 'spoolsv.exe', 'svchost.exe', 'syncapp.exe', 'sysedit.exe', 'syskey.exe', 'system.ini', 'taskmgr.exe', 'tcpsvcs.exe', 'telnet.exe', 'user32.dll', 'userinit.exe', 'utilman.exe', 'verifier.exe', 'w32time.dll', 'win32k.sys', 'winver.exe', 'wmi.exe', 'wmiprvse.exe', 'write.exe', 'wscui.cpl', 'wuaucpl.cpl', 'wuaueng.dll', 'xpsp1res.dll'];\n\n useEffect(() => {\n const loadFiles = async () => {\n for (let file of importantWindowsXPFiles) {\n await new Promise(resolve => {\n const delay = Math.random() * 500; // Random delay between 0 to 1000 milliseconds\n setTimeout(() => {\n setFileName(file);\n resolve();\n }, delay);\n });\n }\n };\n\n loadFiles();\n }, []); // Empty dependency array means this effect runs once on mount\n\n useEffect(() => {\n let isActive = true; // Flag to check if the component is still mounted\n let velocity = 1; // Starting velocity\n let delayVelocity = 10;\n\n const updateProgress = () => {\n if (!isActive) return; // Prevent update if component has unmounted\n\n setProgress(currentProgress => {\n if (currentProgress >= 100) {\n return currentProgress;\n }\n\n velocity = Math.min(velocity + 0.1, 5);\n\n const minStep = Math.max(1, Math.ceil(velocity));\n const maxStep = Math.ceil(velocity * 3);\n\n let progressStep = Math.max(\n minStep,\n Math.floor(Math.random() * maxStep) + 1,\n );\n\n if (currentProgress > 70) {\n progressStep = 9;\n }\n\n if (currentProgress >= 91) {\n progressStep = 1;\n }\n\n const newProgress = Math.min(currentProgress + progressStep, 100);\n\n if (newProgress < 100) {\n const delayBase = 1500 - velocity * 200;\n let delay = Math.floor(Math.random() * (delayBase - 500 + 1)) + 500;\n\n delayVelocity += 80;\n delay -= delayVelocity;\n\n if (currentProgress >= 80) {\n delay = 800;\n }\n\n setTimeout(updateProgress, Math.max(delay, 250));\n } else {\n setTimeout(() => {\n onNext(3); // Call your onNext or similar function here\n }, 2200);\n }\n\n return newProgress;\n });\n };\n\n const timeoutId = setTimeout(updateProgress, 1000);\n\n // Cleanup function to set isActive false when the component unmounts\n return () => {\n isActive = false;\n clearTimeout(timeoutId);\n };\n }, []); // Empty dependency array means this effect runs only once on mount\n\n return (\n \n Windoge XP Professional Setup
\n \n
\n
\n
Please wait while Setup copies files.
\n
This might take several seconds to complete.
\n \n
\n Setup is copying files...\n
\n
\n
\n
\n \n Copying: {fileName}\n
\n \n );\n};\n\nexport default LoadingScreen;\n","import React, { useEffect, useState } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst fadeIn = keyframes`\n from {\n opacity: 0.5;\n }\n to {\n opacity: 1;\n }\n`;\n\nconst BootupScreen = styled.div`\n position: absolute:\n left: 0;\n top: 0;\n display: flex;\n height: 100vh;\n flex-direction: column;\n background: #000;\n color: white;\n font: bolder 16px 'Trebuchet MS', Verdana, sans-serif;\n text-align: left;\n padding: 16px;\n animation: ${fadeIn} 1s ease-out forwards;\n\n -webkit-user-select: none; /* Safari */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* IE 10+ */\n user-select: none; /* Standard syntax */\n\n h1 {\n font-size: 16px;\n }\n p {\n font-size: 16px;\n opacity: ${({ blinking }) => (blinking ? 1 : 0)};\n }\n`;\n\nconst PressAnyKey = ({ onNext }) => {\n const [blinking, setBlinking] = useState(true);\n\n useEffect(() => {\n const hasBooted = localStorage.getItem('booted');\n const handleKeyPress = () => {\n clearInterval(blinkingTimer);\n setBlinking(true);\n setTimeout(function() {\n // If has booted already, skip step 2 of boot process...\n onNext(hasBooted === 'true' ? 3 : 2);\n }, 800);\n };\n window.addEventListener('keydown', handleKeyPress);\n window.addEventListener('click', handleKeyPress);\n window.addEventListener('touchstart', handleKeyPress);\n\n // Set up the blinking effect\n const blinkingTimer = setInterval(() => {\n setBlinking(prevBlinking => !prevBlinking);\n }, 250);\n\n return () => {\n window.removeEventListener('keydown', handleKeyPress);\n window.removeEventListener('click', handleKeyPress);\n window.removeEventListener('touchstart', handleKeyPress);\n clearInterval(blinkingTimer); // Clear the blinking interval on cleanup\n };\n }, [onNext]);\n\n return (\n \n Press any key to boot from CD or DVD...
\n _
\n \n );\n};\n\nexport default PressAnyKey;\n","import { useState } from 'react';\nimport BootupAnimation from './BootupAnimation';\nimport LoadingScreen from './LoadingScreen';\nimport PressAnyKey from './PressAnyKey';\n\nconst Bootup = ({ onBootComplete }) => {\n const [stage, setStage] = useState(1);\n\n const handleNext = value => {\n setStage(value);\n };\n\n return (\n <>\n {stage === 1 && }\n {stage === 2 && }\n {stage === 3 && }\n >\n );\n};\n\nexport default Bootup;\n","import React, { useState, useEffect } from 'react';\nimport WinXP from './WinXP'; // Adjust the path if needed\nimport Bootup from './Bootup';\n\nconst App = () => {\n const [isBooted, setIsBooted] = useState(false);\n\n useEffect(() => {\n const hasBooted = isBooted;\n if (hasBooted === true) {\n setIsBooted(true);\n }\n }, []);\n\n const handleBootComplete = () => {\n setIsBooted(true);\n };\n\n return isBooted ? : ;\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport './index.css';\nimport 'assets/clear.css';\nimport 'assets/font.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\nserviceWorker.unregister();\n\nif (module.hot && !window.frameElement) {\n console.log('HMR enabled');\n module.hot.accept('./App', () => {\n const NextApp = require('./App').default;\n ReactDOM.render(, document.getElementById('root'));\n });\n}\n"],"names":["INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","argsTag","mapTag","promiseTag","setTag","stringTag","symbolTag","weakMapTag","dataViewTag","reTrim","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsVarRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsZWJ","reOptMod","rsOptVar","rsSeq","join","rsSymbol","reUnicode","RegExp","reHasUnicode","freeParseInt","parseInt","freeGlobal","global","Object","freeSelf","self","root","Function","baseValues","object","props","array","iteratee","index","length","result","Array","arrayMap","key","mapToArray","map","size","forEach","value","setToArray","set","stringToArray","string","test","hasUnicode","match","unicodeToArray","split","asciiToArray","func","transform","funcProto","prototype","objectProto","coreJsData","maskSrcKey","uid","exec","keys","IE_PROTO","funcToString","toString","hasOwnProperty","objectToString","reIsNative","call","replace","Symbol","iteratorSymbol","iterator","undefined","propertyIsEnumerable","nativeFloor","Math","floor","nativeKeys","arg","nativeRandom","random","DataView","getNative","Map","Promise","Set","WeakMap","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","arrayLikeKeys","inherited","isArray","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","n","baseTimes","String","skipIndexes","isIndex","push","baseIsNative","isObject","isMasked","pattern","isFunction","e","isHostObject","baseKeys","Ctor","constructor","proto","isPrototype","baseRandom","lower","upper","getValue","getTag","ArrayBuffer","resolve","ctorString","isLength","tag","type","values","module","exports","collection","guard","number","isString","source","copyArray","data","next","done","iteratorToArray","toArray","lastIndex","other","eq","isIterateeCall","isSymbol","valueOf","isBinary","slice","toNumber","toFinite","remainder","toInteger","rand","getOwnPropertySymbols","propIsEnumerable","toObject","val","TypeError","assign","test1","getOwnPropertyNames","test2","i","fromCharCode","test3","letter","err","shouldUseNative","target","from","symbols","to","s","arguments","ex","React","require","React__default","UAParser","ClientUAInstance","browser","getBrowser","cpu","getCPU","device","getDevice","engine","getEngine","os","getOS","ua","getUA","setUa","userAgentString","setUA","parseUserAgent","userAgent","UserAgentInstance","UA","setUserAgent","console","error","UAHelper","freeze","ownKeys","enumerableOnly","filter","sym","getOwnPropertyDescriptor","enumerable","apply","_typeof","obj","_defineProperties","descriptor","configurable","writable","defineProperty","_defineProperty","_extends","this","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_slicedToArray","arr","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","name","_unsupportedIterableToArray","_nonIterableRest","len","arr2","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isMobile","isTablet","isBrowser","isSmartTV","isConsole","isWearable","setDefaults","d","getNavigatorInstance","window","navigator","isIOS13Check","nav","platform","maxTouchPoints","MSStream","mobilePayload","getOwnPropertyDescriptors","defineProperties","_objectSpread2","vendor","model","osVersion","version","isMobileType","_ref","isTabletType","_ref2","isMobileAndTabletType","_ref3","isSmartTVType","_ref4","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","toLowerCase","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","options","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","isIE","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","aa","r","u","a","b","c","encodeURIComponent","Error","ba","f","g","h","k","l","m","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","currentTarget","ka","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","dependencies","xa","ya","document","createElement","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","v","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","C","Ua","Va","toUpperCase","xlinkHref","Wa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","Xa","Sa","isNaN","Ta","Ra","removeAttribute","setAttribute","setAttributeNS","ReactCurrentDispatcher","current","ReactCurrentBatchConfig","suspense","Ya","E","for","Za","$a","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","displayName","$$typeof","render","_status","_result","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","nodeName","xb","_valueTracker","get","setValue","stopTracking","tb","yb","checked","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","children","Children","Fb","Hb","selected","defaultSelected","disabled","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","textContent","Mb","Nb","Ob","Pb","Qb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeType","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","style","animation","transition","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","child","sibling","gc","ic","concat","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","pop","eventSystemFlags","sc","containerInfo","tc","uc","has","vc","F","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","container","Lc","delete","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","shift","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","dd","unstable_UserBlockingPriority","ed","fd","gd","bind","hd","id","addEventListener","Oc","jd","animationIterationCount","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","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","trim","md","setProperty","charAt","substring","nd","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","od","pd","is","qd","rd","sd","td","body","ud","vd","node","offset","nextSibling","wd","contains","compareDocumentPosition","xd","HTMLIFrameElement","contentWindow","location","href","yd","contentEditable","Bd","Cd","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","setTimeout","Id","clearTimeout","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","G","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","extend","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","keyCode","re","detail","se","ve","locale","which","te","ctrlKey","altKey","metaKey","char","ue","we","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","xe","ye","change","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","view","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","We","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","start","selectionStart","end","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","rf","repeat","sf","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","H","I","Af","J","K","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","L","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","defaultProps","jg","kg","lg","mg","ng","og","_context","_currentValue","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","context","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","callback","xg","yg","zg","x","z","ca","Ag","D","t","Bg","Cg","Dg","Eg","Component","refs","Fg","Jg","isMounted","_reactInternalFiber","enqueueSetState","Gg","Hg","Ig","enqueueReplaceState","enqueueForceUpdate","Kg","shouldComponentUpdate","isPureReactComponent","Lg","contextType","state","updater","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","ref","_owner","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","mode","elementType","Ug","implementation","Vg","Wg","y","A","q","Xg","Yg","Zg","$g","ah","bh","ch","dh","documentElement","tagName","eh","fh","gh","M","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","N","O","P","mh","Q","nh","oh","ph","qh","rh","sh","th","queue","uh","vh","wh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","create","destroy","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","ReactCurrentOwner","R","Zh","$h","ai","bi","compare","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","last","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onClick","onclick","createElementNS","createTextNode","S","ti","ui","vi","wi","T","xi","U","yi","zi","Ai","stack","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","Ri","instance","insertBefore","_reactRootContainer","Si","Ti","display","Ui","Vi","add","then","Wi","Xi","element","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","ceil","cj","dj","fj","gj","W","X","kj","lj","mj","nj","oj","Y","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","Z","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","timeout","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","w","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","B","min","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","vb","Uj","Vj","Wj","hidden","_ctor","default","ob","Xj","_calculateChangedBits","unstable_observedBits","Zj","isReactComponent","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hasAttribute","hk","jk","kk","unmount","querySelectorAll","JSON","stringify","form","Lj","lk","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","ForwardRef","isValidElementType","react_1","frame","_a","docX","docY","posX","posY","elX","elY","elH","elW","setState","moveHandler","event","cancelAnimationFrame","requestAnimationFrame","getBoundingClientRect","top_1","scrollX","scrollY","removeEventListener","util_1","initialWidth","initialHeight","Infinity","isClient","innerWidth","innerHeight","handler_1","on","args","off","Fragment","__self","__source","jsx","jsxs","forceUpdate","keyPrefix","count","V","escape","IsSomeRendererActing","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","isValidElement","lazy","memo","MessageChannel","unstable_forceFrameRate","performance","port2","port1","onmessage","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","insertRule","delimiter","needle","toSheet","block","content","selectors","parents","line","column","ns","depth","at","charCodeAt","factory","nullptn","formatptn","colonptn","cursorptn","transformptn","animationptn","propertiesptn","elementptn","selectorptn","andptn","escapeptn","invalidptn","keyframeptn","plcholdrptn","readonlyptn","beforeptn","afterptn","tailptn","whiteptn","pseudoptn","writingptn","supportsptn","propertyptn","selfptn","pseudofmt","dimensionptn","imgsrcptn","webkit","moz","ms","SEMICOLON","CLOSEBRACES","OPENBRACES","OPENPARENTHESES","CLOSEPARENTHESES","OPENBRACKET","CLOSEBRACKET","NEWLINE","CARRIAGE","TAB","AT","SPACE","AND","DASH","UNDERSCORE","STAR","COMMA","COLON","SINGLEQUOTE","DOUBLEQUOTE","FOWARDSLASH","GREATERTHAN","PLUS","TILDE","NULL","FORMFEED","VERTICALTAB","KEYFRAME","MEDIA","SUPPORTS","PLACEHOLDER","READONLY","IMPORT","CHARSET","DOCUMENT","PAGE","cascade","prefix","compress","semicolon","preserve","plugins","plugged","should","POSTS","PREPS","UNKWN","PROPS","BLCKS","ATRUL","unkwn","keyed","nscopealt","nscope","compile","parent","selector","bracket","comment","parentheses","quote","first","second","code","trail","peak","counter","atrule","pseudo","caret","format","insert","invert","eof","eol","chars","out","flat","delimited","proxy","supports","property","padding","elements","j","scope","level","third","cache","hash","declare","list","items","parseFloat","group","stylis","output","use","plugin","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","enumerize","enums","str1","str2","lowerize","str","rgxMapper","arrays","matches","regex","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","EDGE","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","_device","mobile","standalone","_engine","_os","CPU","DEVICE","ENGINE","OS","define","$","jQuery","Zepto","parser","prop","modules","installedModules","__webpack_require__","moduleId","getter","toStringTag","__esModule","defaultEqualityCheck","areArgumentsShallowlyEqual","equalityCheck","prev","defaultMemoize","lastArgs","lastResult","getDependencies","funcs","every","dep","dependencyTypes","createSelectorCreator","memoize","_len","memoizeOptions","_key","_len2","_key2","recomputations","resultFunc","memoizedResultFunc","params","resetRecomputations","createStructuredSelector","selectorCreator","createSelector","objectKeys","_len3","_key3","reduce","composition","__WEBPACK_AMD_DEFINE_RESULT__","hasOwn","classNames","classes","argType","inner","assert","ieee754","maybeFlush","flush","UINT8","buf","readUInt8","put","equal","ok","no","writeUInt8","UINT16_LE","readUInt16LE","writeUInt16LE","UINT16_BE","readUInt16BE","writeUInt16BE","UINT24_LE","readUIntLE","writeUIntLE","UINT24_BE","readUIntBE","writeUIntBE","UINT32_LE","readUInt32LE","writeUInt32LE","UINT32_BE","readUInt32BE","writeUInt32BE","INT8","readInt8","writeInt8","INT16_BE","readInt16BE","writeInt16BE","INT16_LE","readInt16LE","writeInt16LE","INT24_LE","readIntLE","writeIntLE","INT24_BE","readIntBE","writeIntBE","INT32_BE","readInt32BE","writeInt32BE","INT32_LE","readInt32LE","writeInt32LE","UINT64_LE","byteLength","mul","INT64_LE","pow","UINT64_BE","INT64_BE","Float16_BE","read","write","Float16_LE","Float32_BE","readFloatBE","writeFloatBE","Float32_LE","readFloatLE","writeFloatLE","Float64_BE","readDoubleBE","writeDoubleBE","Float64_LE","readDoubleLE","writeDoubleLE","Float80_BE","Float80_LE","IgnoreType","BufferType","StringType","encoding","AnsiStringType","static","buffer","until","codePointToString","singleByteDecoder","max","cp","bite","inRange","codePoint","windows1252","decode","sub","objectWithoutPropertiesLoose","process","log","formatArgs","useColors","namespace","humanize","diff","splice","lastC","save","namespaces","storage","setItem","removeItem","load","getItem","env","DEBUG","__nwjs","WebkitAppearance","firebug","exception","table","$1","localStorage","localstorage","colors","formatters","message","base64","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","encodingOrOffset","allocUnsafe","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","isBuffer","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","ret","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","limit","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","useSourceMap","item","sourceMap","cssMapping","btoa","sourceMapping","unescape","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","alreadyImportedModules","stylesInDom","isOldIE","fn","all","atob","getTarget","querySelector","getElement","styleTarget","contentDocument","head","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","domStyle","parts","addStyle","listToStyles","newStyles","part","css","media","insertStyleElement","insertInto","lastStyleElementInsertedAtTop","insertAt","before","removeStyleElement","idx","createStyleElement","attrs","nonce","addAttrs","el","update","remove","styleIndex","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","rel","createLinkElement","updateLink","applyToTag","newObj","newList","mayRemove","replaceText","textStore","replacement","Boolean","styleSheet","cssText","cssNode","childNodes","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","__webpack_exports__","ActionTypes","applyMiddleware","bindActionCreators","combineReducers","compose","createStore","symbol_observable__WEBPACK_IMPORTED_MODULE_0__","randomString","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","listener","isSubscribed","listeners","replaceReducer","nextReducer","observable","outerSubscribe","observer","observeState","unsubscribe","getUndefinedStateErrorMessage","actionType","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","errorMessage","bindActionCreator","actionCreator","actionCreators","boundActionCreators","middlewares","store","_dispatch","middlewareAPI","chain","middleware","fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror","requestFullscreenFunction","handler","onfullscreenchange","onfullscreenerror","Windows1292Decoder_1","Util","pos0","swapBytes","readUTF16String","Windows1292Decoder","bitOffset","bitOff","bitsRead","bitsLeft","getBitAllignedNumber","hex","strtokBITSET","bit","Util_1","validFourCC","FourCcToken","a2hex","endianness","theByte","unpack","lowerBoundary","upperBoundary","pack","codePointAt","IntParser","bits","signed","clamp","lastByteMask_","unpackUnsigned_","unpackSigned_","overflow_","overflowClamp_","num","unpack_","sign_","IEEE754Buffer","ebits","fbits","bias","numBytes","biasP2","ebitsFbits","fbias","abs","sign","exp","LN2","fraction","roundToEven","packFloatBits_","significand","eMax","leftBits","exponent","NaN","unpackString","packString","packStringTo","packArrayTo","theType","packer","getParser_","fp","valuesLen","throwValueError_","unpackArrayTo","safe","getUnpackLen_","packTo","byte_data_pack","packArray","unpackArray","byte_data_unpack","extra","TYPE_ERR","validateFloatType","validateIntType","objectAssign","util","pSlice","functionsHaveNames","pToString","arrbuf","getName","truncate","something","rawname","fail","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","isDate","getTime","isRegExp","multiline","ignoreCase","Float32Array","Float64Array","actualIndex","actualVisitedObjects","isPrimitive","aIsArgs","bIsArgs","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","_tryBlock","userProvidedMessage","isUnexpectedException","isError","generatedMessage","getMessage","captureStackTrace","fn_name","next_line","inherits","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","condition","argIndex","framesToPop","BasicParser","warnings","init","metadata","tokenizer","ID3v1Parser_1","CommonTagMapper","tagTypes","tagMap","origVal","cur","Genres","pictureType","toLocaleLowerCase","cleaned","mapGenericTag","postMap","getCommonName","maxRatingScore","endOfFile","pna","Duplex","Readable","Writable","method","readable","allowHalfOpen","once","onend","_writableState","ended","nextTick","onEndNT","highWaterMark","_readableState","destroyed","_destroy","reactIs","REACT_STATICS","getDefaultProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__","creator","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","title","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","ctor","superCtor","super_","TempCtor","__awaiter","thisArg","_arguments","generator","reject","fulfilled","step","rejected","Token","FrameParser_1","ID3v2_1","ID3v2Parser","readI","writeI","majorVer","header","flags","readFrameFlags","ID3v2Token","UINT32SYNCSAFE","status","tag_alter_preservation","file_alter_preservation","read_only","grouping_identity","compression","encryption","unsynchronisation","data_length_indicator","frameHeader","includeCovers","readData","removeUnsyncBytes","description","parse","id3Header","readToken","Header","fileIdentifier","headerType","isExtendedHeader","parseExtendedHeader","parseId3Data","extendedHeader","ExtendedHeader","dataRemaining","parseExtendedHeaderData","extendedHeaderSize","readBuffer","dataLen","parseMetadata","addTag","makeDescriptionTagName","tags","frameHeaderLength","getFrameHeaderLength","frameHeaderBytes","readFrameHeader","frameDataBytes","readFrameData","skipCovers","AttachedPictureType","revision","raw","expIndicator","footer","extendedFlags","sizeOfPadding","crcDataPresent","isBoolean","isNull","isNullOrUndefined","isNumber","isUndefined","PRESET_VALUES","HEADER","symbolObservablePonyfill","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","devToolsEnhancer","__REDUX_DEVTOOLS_EXTENSION__","TinyQueue","defaultCompare","_down","_up","peek","halfLength","right","best","deburrLetter","reLatin","reComboMark","__read","ar","__spread","convertAniBinaryToCSS","parser_1","JIFFIES_PER_MS","aniBinary","ani","contents","parseAni","rate","images","iDispRate","duration","total","frames","image","curUrlFromByteArray","percents","elapsed","frameIdx","seq","readAni","uniqueId","dataArray","ReadStreamTokenizer_1","BufferTokenizer_1","fromStream","stream","ReadStreamTokenizer","fromBuffer","BufferTokenizer","arg1","arg2","arg3","initDebug","FileType","BasicParser_1","APEv2Token_1","debug","tagFormat","preamble","APEv2Parser","super","ape","totalFrames","blocksPerFrame","finalFrameBlocks","sampleRate","fileSize","position","TagFooter","peekToken","ID","ignore","TagField","parseTags","parseTagFooter","fields","tagItemHeader","TagItemHeader","zero","findZero","dataType","DataType","text_utf8","binary","picData","fileType","mime","picture","external_info","DescriptorParser","lenExp","descriptorBytes","parseDescriptorExpansion","parseHeader","forwardBytes","parseTagHeader","setFormat","bitsPerSample","channel","calculateDuration","seekTableBytes","headerDataBytes","apeFrameDataBytes","terminatingDataBytes","type_1","ID3v2Parser_1","_debug","AbstractID3Parser","id3parser","parseID3v2","catch","finalize","tryReadId3v2Headers","_parse","skipPostHeaders","hasAny","id3v1parser","ID3v1Parser","defineProperty_default","jsx_runtime","react","react_default","react_dom","react_dom_default","ReactReduxContext","batch_batch","nullListeners","notify","createListenerCollection","batch","clear","Subscription","parentSub","handleChangeWrapper","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","tryUnsubscribe","components_Provider","contextValue","subscription","previousState","Context","useIsomorphicLayoutEffect","redux","useReduxContext_useReduxContext","createStoreHook","useReduxContext","useStore_useStore","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","checkForUpdates","newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector_useSelector","createThunkMiddleware","extraArgument","thunk","withExtraArgument","es","redux_devtools_extension","ADD_TRACK_FROM_URL","CLOSE_WINAMP","OPEN_WINAMP","MINIMIZE_WINAMP","IS_PLAYING","IS_STOPPED","PAUSE","PLAY","SEEK_TO_PERCENT_COMPLETE","SET_BALANCE","SET_BAND_VALUE","SET_FOCUS","SET_BAND_FOCUS","SET_FOCUSED_WINDOW","SET_MEDIA","SET_SCRUB_POSITION","SET_SKIN_DATA","SET_VOLUME","START_WORKING","STEP_MARQUEE","STOP","STOP_WORKING","TOGGLE_DOUBLESIZE_MODE","SET_EQ_AUTO","SET_EQ_ON","SET_EQ_OFF","TOGGLE_LLAMA_MODE","TOGGLE_REPEAT","TOGGLE_SHUFFLE","TOGGLE_TIME_MODE","TOGGLE_VISUALIZER_STYLE","UNSET_FOCUS","UPDATE_TIME_ELAPSED","SET_USER_MESSAGE","UNSET_USER_MESSAGE","SET_PLAYLIST_SCROLL_POSITION","CLICKED_TRACK","CTRL_CLICKED_TRACK","SHIFT_CLICKED_TRACK","SELECT_ALL","SELECT_ZERO","INVERT_SELECTION","REMOVE_ALL_TRACKS","REMOVE_TRACKS","SET_AVAILABLE_SKINS","REVERSE_LIST","RANDOMIZE_LIST","SET_TRACK_ORDER","PLAY_TRACK","BUFFER_TRACK","DRAG_SELECTED","SET_MEDIA_TAGS","SET_MEDIA_DURATION","TOGGLE_WINDOW","CLOSE_WINDOW","MEDIA_TAG_REQUEST_INITIALIZED","MEDIA_TAG_REQUEST_FAILED","NETWORK_CONNECTED","NETWORK_DISCONNECTED","UPDATE_WINDOW_POSITIONS","WINDOW_SIZE_CHANGED","TOGGLE_WINDOW_SHADE_MODE","LOADED","SET_Z_INDEX","DISABLE_MARQUEE","SET_DUMMY_VIZ_DATA","LOADING","CLOSE_REQUESTED","LOAD_SERIALIZED_STATE","RESET_WINDOW_SIZES","BROWSER_WINDOW_SIZE_CHANGED","LOAD_DEFAULT_SKIN","ENABLE_MILKDROP","SET_MILKDROP_DESKTOP","GOT_BUTTERCHURN_PRESETS","GOT_BUTTERCHURN","RESOLVE_PRESET_AT_INDEX","SELECT_PRESET_AT_INDEX","TOGGLE_PRESET_OVERLAY","PRESET_REQUESTED","TOGGLE_RANDOMIZE_PRESETS","TOGGLE_PRESET_CYCLING","SCHEDULE_MILKDROP_MESSAGE","SET_MILKDROP_FULLSCREEN","baseSkin","BANDS","WINDOWS","LOAD_STYLE","MEDIA_TAG_REQUEST_STATUS","LETTERS","DEFAULT_SKIN","VISUALIZERS","VISUALIZER_ORDER","TIME_MODE","MEDIA_STATUS","imgFromUrl","Image","onload","onerror","getTimeObj","minutesFirstDigit","minutesSecondDigit","secondsFirstDigit","secondsSecondDigit","minutes","seconds","digits","getTimeStr","SECTION_REGEX","PROPERTY_REGEX","parseIni","section","base64FromDataArray","byte","downloadURI","uri","download","click","toPercent","percentToRange","percent","round","percentToIndex","rebound","oldMin","oldMax","newMin","newMax","oldValue","normalizeEqBand","denormalizeEqBand","merge","segment","newValues","ratio","utils_shuffle","sorted","moveSelected","isSelected","newArr","replaceAtIndex","newValue","objectForEach","objectMap","modified","calculateBoundingBox","windows","bottom","utils_getWindowSize","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","getPos","_targetTouches$","touch","getX","getY","weakMapMemoize","_objectSpread","defaultPlaylistState","trackOrder","currentTrack","lastSelectedIndex","selectedTracks","toggleSetMembership","reducers_playlist","newSelectedTracks","clickedIndex","actionIds","ids","trackId","reverse","atIndex","objectWithoutProperties","objectWithoutProperties_default","windows_ownKeys","windows_objectSpread","defaultWindowsState","focused","positionsAreRelative","genWindows","open","shade","canResize","canShade","canDouble","hotkey","browserWindowSize","windowOrder","getSerializedState","reducers_windows","windowId","windowState","absolute","newPosition","positions","serializedState","serializedW","rest","media_ownKeys","media_objectSpread","defaultState","timeMode","timeElapsed","volume","balance","shuffle","media_getSerializedState","reducers_media","newMode","lib","display_ownKeys","display_objectSpread","defaultSkinGenExColors","itemBackground","itemForeground","windowBackground","buttonText","windowText","divider","playlistSelection","listHeaderBackground","listHeaderText","listHeaderFrameTopAndLeft","listHeaderFrameBottomAndRight","listHeaderFramePressed","listHeaderDeadArea","scrollbarOne","scrollbarTwo","pressedScrollbarOne","pressedScrollbarTwo","scrollbarDeadArea","listTextHighlighted","listTextHighlightedBackground","listTextSelected","listTextSelectedBackground","defaultDisplayState","doubled","marqueeStep","disableMarquee","loading","llama","closed","working","skinImages","skinColors","skinCursors","skinPlaylistStyle","skinRegion","visualizerStyle","dummyVizData","playlistScrollPosition","skinGenLetterWidths","skinGenExColors","additionalVisualizers","reducers_display","_action$serializedSta","newSkinCursors","display_getSerializedState","newCursors","cursor","getVisualizerStyle","visualizationStyle","userInput_ownKeys","userInput_objectSpread","defaultUserInput","bandFocused","scrubPosition","userMessage","reducers_userInput","equalizer_ownKeys","equalizer_objectSpread","equalizer_defaultState","auto","sliders","preamp","reducers_equalizer","newSliders","band","equalizer","network_ownKeys","network_objectSpread","reducers_network","connected","settings_ownKeys","settings_objectSpread","defaultSettingsState","availableSkins","reducers_settings","skins","browser_default","async","genStringFromFileReference","fileReference","reader","FileReader","readAsText","promptForFileReferences","accept","directory","fileInput","webkitdirectory","mozdirectory","files","filenameFromUrl","urlIsBlobUrl","lastSegment","trackName","artist","defaultName","filename","tracks_ownKeys","tracks_objectSpread","urlFilename","tracks_defaultPlaylistState","reducers_tracks","_action$duration","mediaTagsRequestStatus","newTrack","bitrate","numberOfChannels","album","albumArtUrl","kbps","khz","channels","TransitionType","milkdrop_ownKeys","milkdrop_objectSpread","defaultMilkdropState","overlay","presetHistory","presets","currentPresetIndex","butterchurn","transitionType","DEFAULT","randomize","cycling","reducers_milkdrop","enabled","addToHistory","preset","json","userInput","settings","playlist","network","tracks","milkdrop","playlistHtml_ownKeys","playlistHtml_objectSpread","noshadeStyle","borderWidth","backgroundColor","Body","Font","Hr","Div","Table","Playlist","bgcolor","topmargin","leftmargin","align","className","border","cellSpacing","cellPadding","face","numberOfTracks","averageTrackLength","playlistLengthMinutes","playlistLengthSeconds","createPlaylistURL","getAsDataURI","createPlaylistHTML","getEqText","toFixed","label","hz","ensureSign","selectors_ownKeys","selectors_objectSpread","getSliders","getEqfData","getTracks","getTrackUrl","_state$tracks$id","getTrackOrder","getTrackCount","getOrderedTracks","getUserTracks","metaData","getOrderedTrackObjects","getSelectedTrackIds","getSelectedTrackObjects","selectedIds","runningTimeFromTracks","getTotalRunningTime","getSelectedRunningTime","getRunningTimeMessage","totalRunningTime","selectedRunningTime","getCurrentTrackIndex","getCurrentTrackNumber","currentTrackIndex","getCurrentTrackId","getRandomTrackId","nextId","getGenWindows","selectors_getWindowOpen","selectors_getWindowHidden","milkdropWindowEnabled","selectors_getWindowShade","selectors_getWindowSize","getWindowPositions","getNumberOfVisibleTracks","getWindowSize_","playlistSize","getOverflowTrackCount","trackCount","numberOfVisibleTracks","_getPlaylistScrollPosition","getPlaylistScrollPosition","overflowTrackCount","getScrollOffset","overflow","getVisibleTrackIds","getAllTracksAreVisible","getTrackIsVisibleFunction","visibleTrackIds","getDuration","selectors_getTrackDisplayName","getTrackDisplayName","getCurrentTrackDisplayName","getMediaStatus","getMediaIsPlaying","getCurrentTrack","getCurrentlyPlayingTrackIdIfLoaded","mediaIsPlaying","getCurrentTrackInfo","getMinimalMediaText","trackNumber","getMediaText","minimalMediaText","getNumberOfTracks","getPlaylistDuration","getPlaylistURL","playlistDuration","getDisplayName","getWPixelSize","doubledMultiplier","pix","getFocusedWindow","getDoubled","getLlamaMode","getZIndex","getWindowSizes","selectors_getWindowPixelSize","sizes","getNormalizedWindowOrder","getWindowsInfo","getWindowGraph","bottoms","rights","graph","edges","tops","lefts","below","isToTheLeft","isToTheRight","isAbove","isBelow","defaultPlaylistStyle","normal","normalbg","selectedbg","font","getSkinColors","getSkinPlaylistStyle","selectors_getVisualizerStyle","getVolume","getBalance","getShuffle","getRepeat","getChannels","getTimeElapsed","getEqualizerEnabled","getBrowserWindowSize","getOpenWindows","objectFilter","predicate","getStackedLayoutPositions","openWindows","getUserInputFocus","getUserInputScrubPosition","getMarqueeText","defaultText","direction","getBalanceText","seekToPercent","newElapsedStr","durationStr","getPositionText","mediaText","getKbps","getKhz","getMilkdropMessage","getMilkdropDesktopEnabled","getMilkdropFullscreenEnabled","getButterchurn","getPresetTransitionType","getCurrentPresetIndex","getCurrentPreset","getPresetNames","getPresetOverlayOpen","getPresetsAreCycling","getRandomizePresets","getClosed","getSkinRegion","getPreampLineImage","EQ_PREAMP_LINE","getLineColorsImage","EQ_GRAPH_LINE_COLORS","getDummyVizData","getMarqueeStep","getNetworkConnected","getTimeMode","getLoading","getWorking","getAvaliableSkins","SNAP_DISTANCE","snapUtils_top","box","snapUtils_bottom","snapUtils_left","snapUtils_right","near","snap","boxA","boxB","overlapX","snapUtils_snapDiff","newPos","snapWithinDiff","boundingBox","snapWithin","applyDiff","actionCreators_windows_ownKeys","actionCreators_windows_objectSpread","withWindowGraphIntegrity","originalSizes","newSizes","sizeDiff","original","positionDiff","newGraph","above","neighbors","entries","walkRight","nodeSizeDiff","walkDown","getPositionDiff","windows_updateWindowPositions","windows_toggleDoubleSizeMode","windows_toggleEqualizerShadeMode","windows_toggleMainWindowShadeMode","togglePlaylistShadeMode","windows_closeWindow","windows_setFocusedWindow","windows_setWindowSize","windows_toggleWindow","centerWindows","windowsInfo","getOpen","offsetLeft","offsetTop","bounding","boxHeight","boxWidth","move","windows_browserWindowSizeChanged","ensureWindowsAreOnScreen","stackWindows","boundingHeight","moveY","moveX","media_playTrackNow","media_play","files_openMediaFileDialog","media_pause","media_stop","media_nextN","nextTrackId","currentIndex","nextIndex","getNextTrackId","media_next","media_previous","seekToTime","media_seekForward","media_seekBackward","media_setVolume","adjustVolume","volumeDiff","media_scrollVolume","media_setBalance","media_toggleRepeat","media_toggleShuffle","media_toggleTimeMode","_snapBandValue","BAND_MID_POINT_VALUE","setEqBand","_setEqTo","equalizer_setEqToMax","equalizer_setEqToMid","equalizer_setEqToMin","setPreamp","equalizer_toggleEq","toggleEqAuto","winamp_eqf","FONT_LOOKUP","_","Å","Ö","Ä","imageConstFromChar","characterSprites","skinSprites","BALANCE","CBUTTONS","MAIN","MONOSTER","NUMBERS","NUMS_EX","PLAYPAUS","PLEDIT","EQ_EX","EQMAIN","POSBAR","SHUFREP","TEXT","TITLEBAR","VOLUME","GEN","skinParserUtils_ownKeys","skinParserUtils_objectSpread","getFilenameRegex","getFileFromZip","zip","file","lastFile","warn","getImgFromBlob","createImageBitmap","fallbackGetImgFromBlob","getSpriteUrisFromImg","sprites","canvas","getContext","sprite","drawImage","toDataURL","getImgFromFilename","mimeType","getFileExtension","RIFF_MAGIC","getCursorFromFilename","aniData","getPlaylistStyle","playlistStyle","ini","colorKey","getGenExColors","getColorAt","getImageData","skinParser_ownKeys","skinParser_objectSpread","shallowMerge","objs","CURSORS","genVizColors","viscolor","rgb","parseViscolors","genImages","imageObjs","getSpriteUrisFromFilename","genCursors","cursorObjs","cursorName","genRegion","region","regionStr","iniData","numpoints","pointlist","pointCounts","points","pairedValues","pointPairs","pointIndex","validPolygons","numStr","polygon","regionParser","genGenTextSprites","getLetters","nextBackground","letterWidths","js_skinParser","zipFileBuffer","JSZip","loadAsync","cursors","genTextSprites","genExColors","genLetterWidths","genTextImages","tinyqueue","tinyqueue_default","cropPlaylist","selectedTrackIds","removeSelectedTracks","playlist_removeAllTracks","playlist_reverseList","playlist_randomizeList","playlist_sortListByTitle","aKey","bKey","playlist_setPlaylistScrollPosition","scrollNTracks","currentOffset","playlist_scrollPlaylistByDelta","totalPixelHeight","percentDelta","playlist_scrollUpFourTracks","playlist_scrollDownFourTracks","playlist_dragSelected","firstSelected","findIndex","lastSelected","findLastIndex","normalizedOffset","invertSelection","playlist_selectZero","selectAll","loadQueue","threads","_queue","_availableThreads","task","_run","t1","promise","addTracksFromReferences","fileReferences","loadStyle","files_loadMediaFiles","SKIN_FILENAME_MATCHER","EQF_FILENAME_MATCHER","loadFilesFromReferences","setSkinFromBlob","setEqFromFileReference","requireJSZip","alert","skinData","setSkinFromUrl","response","fetch","statusText","_openFileDialog","expectedType","_fileReferences$","firstFileName","files_openEqfFileDialog","files_openSkinFileDialog","fetchMediaDuration","audio","crossOrigin","durationChange","genMediaDuration","trackIsVisible","files_loadMedia","handleTrackDropEvent","loadMediaFile","canonicalUrl","fetchMediaTags","queueFetchingMediaTags","requireMusicMetadata","musicMetadata","fetchFromUrl","parseBlob","genMediaTags","common","arrayBuffer","readAsArrayBuffer","genArrayBufferFromFileReference","files_setEqFromObject","files_downloadPreset","base64FromArrayBuffer","files_downloadHtmlPlaylist","DIR_SUPPORT","files_addFilesAtIndex","files_addDirAtIndex","files_addFilesFromUrl","handleAddUrlEvent","files_addFilesFromList","handleLoadListEvent","files_saveFilesToList","handleSaveListEvent","files_droppedFiles","_e$dataTransfer$files","normalizePresetTypes","butterchurnPresetObject","getPreset","getButterchrunPresetObject","butterchurnPresetUrl","loadPresets","presetsLength","selectRandomPreset","milkdrop_requestPresetAtIndex","IMMEDIATE","milkdrop_appendPresetFileList","fileList","convertPreset","JSON_EXT","MILK_EXT","endsWith","milkdrop_selectNextPreset","milkdrop_selectPreviousPreset","milkdrop_handlePresetDrop","toggleRandomizePresets","togglePresetCycling","milkdrop_scheduleMilkdropMessage","actionCreators_close","cancel","actionCreators_toggleVisualizerStyle","actionCreators_minimize","actionCreators_setFocus","actionCreators_unsetFocus","actionCreators_focusBand","actionCreators_loadDefaultSkin","toggleMilkdropDesktop","setMilkdropFullscreen","toggleMilkdropFullscreen","actionCreators_togglePresetOverlay","actionCreators_stepMarquee","mediaMiddleware","setVolume","setBalance","play","pause","stop","seekToPercentComplete","loadFromUrl","disableEq","enableEq","slider","actionsBlacklist","fscreen_lib","fscreen_lib_default","Fullscreen","onChange","detectFullScreen","isEnabled","usePromiseValueOrNull","propValue","disposed","resolvedValue","useScreenSize","screen","useWindowSize","setSize","callbackArgs","throttle","cursorPositionRef","useIsHovered","cursorRef","hover","setHover","setNode","domRect","enter","leave","useTypedSelector","useActionCreator","useTypedDispatch","classnames","classnames_default","ResizeTarget_ownKeys","components_ResizeTarget","currentSize","setWindowSize","widthOnly","passThroughProps","mouseDown","setMouseDown","mouseStart","setMouseStart","handleMove","newSize","handleMouseUp","handleMouseDown","ResizeTarget_objectSpread","onMouseDown","onTouchStart","components_FocusTarget","onKeyDown","focusedWindowId","setFocus","focusHandler","setRef","MutationObserver","mutations","some","mutation","removedNodes","observe","subtree","attributes","childList","disconnect","onFocus","tabIndex","Text","letters","components_GenWindow","closeWindow","getWindowPixelSize","focusedWindow","windowSize","getWindowSize","TRANSITION_TYPE_DURATIONS","USER_PRESET","MilkdropWindow_Visualizer","analyser","playing","trackTitle","currentPreset","isEnabledVisualizer","canvasRef","visualizer","setVisualizer","_visualizer","createVisualizer","meshWidth","meshHeight","pixelRatio","devicePixelRatio","connectAudio","setRendererSize","hasLoadedPreset","loadPreset","launchSongTitleAnim","lastShownMessage","shouldAnimate","animationFrameRequest","loop","MilkdropWindow_Background","innerRef","PresetOverlay_ownKeys","PresetOverlay_objectSpread","LOADING_STYLE","background","OUTER_WRAPPER_STYLE","INNER_WRAPPER_STYLE","whiteSpace","fontSize","presetIndexFromListIndex","listIndex","MilkdropWindow_PresetOverlay","presetKeys","requestPresetAtIndex","togglePresetOverlay","appendPresetFileList","unmountedRef","useUnmountedRef","selectedListIndex","setSelectedListIndex","maxListIndex","renderList","maxVisibleRows","rowsToShow","startIndex","endIndex","maxRangeSize","indexToCenter","rangeSize","halfRangeSize","getRangeCenteredOnIndex","presetElms","presetIndex","isCurrent","loadLocalDir","handleFocusedKeyboardInput","handleNode","maxHeight","listStyleType","margin","DropTarget_ownKeys","DropTarget_objectSpread","supress","dropEffect","effectAllowed","components_DropTarget","handleDrop","droppedFiles","onDrop","Element","onDragStart","onDragEnter","onDragOver","ContextMenu_ownKeys","ContextMenu_objectSpread","Portal","div","ContextMenu_Hr","Parent","LinkNode","Node","ContextMenu","ContextMenuWrapper_ownKeys","ContextMenuWrapper_objectSpread","ContextMenuWraper","_openPosition$y","_openPosition$x","renderContents","openPosition","setOpenPosition","closeMenu","handleGlobalClick","handleRightClick","onContextMenu","MilkdropWindow_MilkdropContextMenu","desktop","toggleDesktop","toggleFullscreen","MilkdropWindow_Desktop","desktopNode","classList","MilkdropWindow_ownKeys","MilkdropWindow_objectSpread","MilkdropWindow","fullscreen","presetsAreCycling","selectNextPreset","handlePresetDrop","setFullscreen","handleKeyDown","selectPreviousPreset","toggleRandomize","scheduleMilkdropMessage","toggleCycling","useKeyHandler","intervalId","setInterval","clearInterval","screenSize","genWindowSize","onDoubleClick","components_PlaybackContextMenu","previous","seekForward","seekBackward","nextN","SkinsContextMenu","loadDefaultSkin","openSkinFileDialog","setSkin","skin","components_OptionsContextMenu","toggleTimeMode","toggleDoubleSizeMode","toggleRepeat","toggleShuffle","MainWindow_MainContextMenu","filePickers","networkConnected","close","openMediaFileDialog","loadMediaFiles","toggleWindow","menuOpened","picker","requiresNetwork","filePicker","contextMenuName","WindowManager_ownKeys","WindowManager_objectSpread","abuts","wouldMoveTo","useHandleMouseDown","propsWindows","getWindowHidden","updateWindowPositions","draggingState","setDraggingState","moving","stationary","handleMouseMove","proposedDiff","proposedWindows","proposedBox","snapDiff","as","bs","snapDiffManyToMany","withinDiff","finalDiff","initial","diffs","metaDiff","applyMultipleDiffs","windowPositionDiff","passive","targetNode","find","movingSet","findAllConnected","areConnected","candidates","checkNode","candidate","nodes","boxes","firstNode","snapUtils_boundingBox","WindowManager","setFocusedWindow","onBlur","touchAction","deburr","deburr_default","Character_ownKeys","Character_objectSpread","characterClassName","components_Character","passThrough","MiniTime_Background","components_MiniTime","toggle","timeObj","showMinus","blinking","ClickedDiv_ownKeys","ClickedDiv_objectSpread","components_ClickedDiv","clicked","setClicked","ContextMenuTarget_ownKeys","ContextMenuTarget_objectSpread","components_ContextMenuTarget","setSelected","rect","pageXOffset","pageYOffset","getNodeOffset","renderMenu","sliceAverage","sliceWidth","sliceNumber","sum","NUM_BARS","usePaintBar","renderHeight","windowShade","getWindowShade","barCanvas","gradientColors","barCanvasCtx","multiplier","colorIndex","GRADIENT_COLOR_COUNT","fillStyle","fillRect","preRenderBar","ctx","barHeight","peakHeight","peakY","usePaintBarFrame","barPeaks","barPeakFrames","bufferLength","frequencyBinCount","octaveBuckets","maxHz","octaveStep","octaveIdx","octaveBucketsForBufferLength","paintBar","canvasCtx","getByteFrequencyData","heightMultiplier","amplitude","barPeak","BAR_WIDTH","components_Visualizer","fftSize","toggleVisualizerStyle","renderWidth","bgCanvas","bgColor","fgColor","bgCanvasCtx","preRenderBg","paintOscilloscopeFrame","getByteTimeDomainData","lineWidth","strokeStyle","beginPath","moveTo","lineTo","stroke","usePaintOscilloscopeFrame","paintBarFrame","paintFrame","clearRect","setCanvas","imageSmoothingEnabled","animationRequest","MainWindow_ActionButtons","Balance_ownKeys","Balance_objectSpread","Balance","unsetFocus","onMouseUp","offsetFromBalance","MainWindow_MainBalance","backgroundPosition","MainWindow_Close","setFocusDouble","mouseUp","MainWindow_ClutterBar","MainWindow_Eject","toggleEqualizer","MainWindow_EqToggleButton","handleClick","windowOpen","togglePlaylist","MainWindow_PlaylistToggleButton","components_CharacterString","character","MainWindow_Kbps","MainWindow_Khz","SEPARATOR","isLong","loopText","padEnd","MainWindow_Marquee","stepMarquee","dragOffset","dragging","mouseDownX","setMouseDownX","setDragOffset","xStart","cleanedUp","useDragX","pixels","stringLength","stepOffset","offsetPixels","stepping","setStepping","stepHandle","steppingTimeout","useStepper","willChange","MainWindow_MonoStereo","MainWindow_Position","displayedPosition","usePosition","setPosition","onInput","MainWindow_Repeat","MainWindow_Shade","MainWindow_Minimize","minimize","MainWindow_Shuffle","MainWindow_Time","Volume_ownKeys","Volume_objectSpread","Volume","onTouchEnd","MainWindow_MainVolume","loadMediaAndPlay","components_MainWindow","mainShade","draggable","toggleMainWindowShadeMode","scrollVolume","loadMedia","onWheel","PlaylistWindow_PlaylistResizeTarget","PlaylistWindow_PlaylistShade","toggleShade","focusWindow","addedWidth","trimmedName","nameLength","PlaylistWindow_PlaylistMenuEntry","PlaylistWindow_PlaylistMenu","handleClickOut","clickOutTarget","capture","useOnClickAway","selected_","PlaylistWindow_AddMenu","addDirAtIndex","addFilesAtIndex","addFilesFromUrl","PlaylistWindow_RemoveMenu","removeSelected","removeAll","crop","SelectionMenu","SortContextMenu","reverseList","randomizeList","sortListByTitle","PlaylistWindow_MiscOptionsContextMenu","downloadHtmlPlaylist","PlaylistWindow_MiscMenu","ListMenu","removeAllTracks","addFilesFromList","saveFilesToList","PlaylistWindow_RunningTimeDisplay","runningTimeMessage","fillChar","rightPad","PlaylistActionArea","PlaylistWindow_TrackCell","handleMoveClick","currentTrackId","playTrackNow","handleTouchStart","handleSecondTap","PlaylistWindow_TrackTitle","paddedTrackNumber","PlaylistWindow_TrackList","trackIds","selectZero","dragSelected","scrollPlaylistByDelta","setMoving","mouseStartY","setMouseStartY","_handleMoveClick","_renderTracks","lastDiff","maxTrackNumberLength","paddedTrackNumForIndex","padStart","userSelect","VerticalSlider","handle","handleHeight","onBeforeChange","onAfterChange","handleRef","registerMoveListener","sliderNode","sliderRect","handleRect","sliderTop","sliderHeight","handleTop","realHandleHeight","baseOffset","spanSize","moveToPosition","handleTouchMove","handleTouchEnd","Handle","PlaylistScrollBar","playlistHeight","allTracksAreVisible","setPlaylistScrollPosition","marginLeft","_maxTrackIndex","components_PlaylistWindow","selectedWindow","getWindowOpen","maxTrackIndex","playlistShade","playlistWindowPixelSize","scrollUpFourTracks","scrollDownFourTracks","showVisualizer","activateVisualizer","targetCoords","fontFamily","showSpacers","Band_Handle","Band","spriteNumber","yOffset","focusBand","usetFocus","EqualizerWindow_EqOn","toggleEq","EqualizerWindow_EqAuto","toggleAuto","spline","xs","ys","ks","matrix","rows","zerosMatrix","iMax","vali","NEGATIVE_INFINITY","swapRows","solve","getNaturalKs","maxX","allYs","GRAPH_HEIGHT","EqualizerWindow_EqGraph","preampLineImage","canvasNode","setCanvasNode","_canvasNode$getContex","colorPattern","lineColorsImage","createPattern","useColorPattern","preampValue","amplitudes","paddingLeft","lastY","yTop","drawEqLine","builtin","EqualizerWindow_PresetsContextMenu","openEqfFileDialog","downloadPreset","setEqFromObject","EqTitleButtons","toggleEqualizerShadeMode","EqualizerWindow_EqualizerShade","eqVolumeClassName","eqBalanceClassName","components_EqualizerWindow","setPreampValue","setEqToMin","setEqToMid","setEqToMax","setHertzValue","hertz","imageSelectors","MAIN_BALANCE_BACKGROUND","MAIN_BALANCE_THUMB","MAIN_BALANCE_THUMB_ACTIVE","MAIN_PREVIOUS_BUTTON","MAIN_PREVIOUS_BUTTON_ACTIVE","MAIN_PLAY_BUTTON","MAIN_PLAY_BUTTON_ACTIVE","MAIN_PAUSE_BUTTON","MAIN_PAUSE_BUTTON_ACTIVE","MAIN_STOP_BUTTON","MAIN_STOP_BUTTON_ACTIVE","MAIN_NEXT_BUTTON","MAIN_NEXT_BUTTON_ACTIVE","MAIN_EJECT_BUTTON","MAIN_EJECT_BUTTON_ACTIVE","MAIN_WINDOW_BACKGROUND","MAIN_STEREO","MAIN_STEREO_SELECTED","MAIN_MONO","MAIN_MONO_SELECTED","NO_MINUS_SIGN","MINUS_SIGN","DIGIT_0","DIGIT_1","DIGIT_2","DIGIT_3","DIGIT_4","DIGIT_5","DIGIT_6","DIGIT_7","DIGIT_8","DIGIT_9","NO_MINUS_SIGN_EX","MINUS_SIGN_EX","DIGIT_0_EX","DIGIT_1_EX","DIGIT_2_EX","DIGIT_3_EX","DIGIT_4_EX","DIGIT_5_EX","DIGIT_6_EX","DIGIT_7_EX","DIGIT_8_EX","DIGIT_9_EX","MAIN_PLAYING_INDICATOR","MAIN_PAUSED_INDICATOR","MAIN_STOPPED_INDICATOR","MAIN_NOT_WORKING_INDICATOR","MAIN_WORKING_INDICATOR","PLAYLIST_TOP_TILE","PLAYLIST_TOP_LEFT_CORNER","PLAYLIST_TITLE_BAR","PLAYLIST_TOP_RIGHT_CORNER","PLAYLIST_TOP_TILE_SELECTED","PLAYLIST_TOP_LEFT_SELECTED","PLAYLIST_TITLE_BAR_SELECTED","PLAYLIST_TOP_RIGHT_CORNER_SELECTED","PLAYLIST_LEFT_TILE","PLAYLIST_RIGHT_TILE","PLAYLIST_SCROLL_HANDLE","PLAYLIST_SCROLL_HANDLE_SELECTED","PLAYLIST_BOTTOM_TILE","PLAYLIST_BOTTOM_LEFT_CORNER","PLAYLIST_BOTTOM_RIGHT_CORNER","PLAYLIST_VISUALIZER_BACKGROUND","PLAYLIST_SHADE_BACKGROUND","PLAYLIST_SHADE_BACKGROUND_LEFT","PLAYLIST_SHADE_BACKGROUND_RIGHT","PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED","PLAYLIST_ADD_MENU_BAR","PLAYLIST_ADD_URL","PLAYLIST_ADD_URL_SELECTED","PLAYLIST_ADD_DIR","PLAYLIST_ADD_DIR_SELECTED","PLAYLIST_ADD_FILE","PLAYLIST_ADD_FILE_SELECTED","PLAYLIST_REMOVE_MENU_BAR","PLAYLIST_REMOVE_ALL","PLAYLIST_REMOVE_ALL_SELECTED","PLAYLIST_CROP","PLAYLIST_CROP_SELECTED","PLAYLIST_REMOVE_SELECTED","PLAYLIST_REMOVE_SELECTED_SELECTED","PLAYLIST_REMOVE_MISC","PLAYLIST_REMOVE_MISC_SELECTED","PLAYLIST_SELECT_MENU_BAR","PLAYLIST_INVERT_SELECTION","PLAYLIST_INVERT_SELECTION_SELECTED","PLAYLIST_SELECT_ZERO","PLAYLIST_SELECT_ZERO_SELECTED","PLAYLIST_SELECT_ALL","PLAYLIST_SELECT_ALL_SELECTED","PLAYLIST_CLOSE_SELECTED","PLAYLIST_COLLAPSE_SELECTED","PLAYLIST_EXPAND_SELECTED","PLAYLIST_MISC_MENU_BAR","PLAYLIST_MISC_OPTIONS","PLAYLIST_MISC_OPTIONS_SELECTED","PLAYLIST_FILE_INFO","PLAYLIST_FILE_INFO_SELECTED","PLAYLIST_SORT_LIST","PLAYLIST_SORT_LIST_SELECTED","PLAYLIST_LIST_BAR","PLAYLIST_NEW_LIST","PLAYLIST_NEW_LIST_SELECTED","PLAYLIST_LOAD_LIST","PLAYLIST_LOAD_LIST_SELECTED","PLAYLIST_SAVE_LIST","PLAYLIST_SAVE_LIST_SELECTED","EQ_WINDOW_BACKGROUND","EQ_TITLE_BAR","EQ_TITLE_BAR_SELECTED","EQ_SLIDER_BACKGROUND","EQ_SLIDER_THUMB","EQ_SLIDER_THUMB_SELECTED","EQ_ON_BUTTON","EQ_ON_BUTTON_DEPRESSED","EQ_ON_BUTTON_SELECTED","EQ_ON_BUTTON_SELECTED_DEPRESSED","EQ_AUTO_BUTTON","EQ_AUTO_BUTTON_DEPRESSED","EQ_AUTO_BUTTON_SELECTED","EQ_AUTO_BUTTON_SELECTED_DEPRESSED","EQ_GRAPH_BACKGROUND","EQ_PRESETS_BUTTON","EQ_PRESETS_BUTTON_SELECTED","EQ_SHADE_BACKGROUND","EQ_SHADE_BACKGROUND_SELECTED","EQ_SHADE_VOLUME_SLIDER_LEFT","EQ_SHADE_VOLUME_SLIDER_CENTER","EQ_SHADE_VOLUME_SLIDER_RIGHT","EQ_SHADE_BALANCE_SLIDER_LEFT","EQ_SHADE_BALANCE_SLIDER_CENTER","EQ_SHADE_BALANCE_SLIDER_RIGHT","EQ_MAXIMIZE_BUTTON_ACTIVE","EQ_MINIMIZE_BUTTON_ACTIVE","EQ_CLOSE_BUTTON","EQ_CLOSE_BUTTON_ACTIVE","EQ_SHADE_CLOSE_BUTTON","EQ_SHADE_CLOSE_BUTTON_ACTIVE","MAIN_POSITION_SLIDER_BACKGROUND","MAIN_POSITION_SLIDER_THUMB","MAIN_POSITION_SLIDER_THUMB_SELECTED","MAIN_SHUFFLE_BUTTON","MAIN_SHUFFLE_BUTTON_DEPRESSED","MAIN_SHUFFLE_BUTTON_SELECTED","MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED","MAIN_REPEAT_BUTTON","MAIN_REPEAT_BUTTON_DEPRESSED","MAIN_REPEAT_BUTTON_SELECTED","MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED","MAIN_EQ_BUTTON","MAIN_EQ_BUTTON_SELECTED","MAIN_EQ_BUTTON_DEPRESSED","MAIN_EQ_BUTTON_DEPRESSED_SELECTED","MAIN_PLAYLIST_BUTTON","MAIN_PLAYLIST_BUTTON_SELECTED","MAIN_PLAYLIST_BUTTON_DEPRESSED","MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED","MAIN_TITLE_BAR","MAIN_TITLE_BAR_SELECTED","MAIN_EASTER_EGG_TITLE_BAR","MAIN_EASTER_EGG_TITLE_BAR_SELECTED","MAIN_OPTIONS_BUTTON","MAIN_OPTIONS_BUTTON_DEPRESSED","MAIN_MINIMIZE_BUTTON","MAIN_MINIMIZE_BUTTON_DEPRESSED","MAIN_SHADE_BUTTON","MAIN_SHADE_BUTTON_DEPRESSED","MAIN_CLOSE_BUTTON","MAIN_CLOSE_BUTTON_DEPRESSED","MAIN_CLUTTER_BAR_BACKGROUND","MAIN_CLUTTER_BAR_BACKGROUND_DISABLED","MAIN_CLUTTER_BAR_BUTTON_O_SELECTED","MAIN_CLUTTER_BAR_BUTTON_A_SELECTED","MAIN_CLUTTER_BAR_BUTTON_I_SELECTED","MAIN_CLUTTER_BAR_BUTTON_D_SELECTED","MAIN_CLUTTER_BAR_BUTTON_V_SELECTED","MAIN_SHADE_BACKGROUND","MAIN_SHADE_BACKGROUND_SELECTED","MAIN_SHADE_BUTTON_SELECTED","MAIN_SHADE_BUTTON_SELECTED_DEPRESSED","MAIN_SHADE_POSITION_BACKGROUND","MAIN_SHADE_POSITION_THUMB","MAIN_SHADE_POSITION_THUMB_LEFT","MAIN_SHADE_POSITION_THUMB_RIGHT","MAIN_VOLUME_BACKGROUND","MAIN_VOLUME_THUMB","MAIN_VOLUME_THUMB_SELECTED","GEN_TOP_CENTER_FILL","GEN_TOP_LEFT","GEN_TOP_LEFT_END","GEN_TOP_RIGHT","GEN_TOP_RIGHT_END","GEN_TOP_LEFT_RIGHT_FILL","GEN_TOP_CENTER_FILL_SELECTED","GEN_TOP_LEFT_SELECTED","GEN_TOP_LEFT_END_SELECTED","GEN_TOP_RIGHT_SELECTED","GEN_TOP_RIGHT_END_SELECTED","GEN_TOP_LEFT_RIGHT_FILL_SELECTED","GEN_BOTTOM_LEFT","GEN_BOTTOM_RIGHT","GEN_BOTTOM_FILL","GEN_MIDDLE_LEFT","GEN_MIDDLE_LEFT_BOTTOM","GEN_MIDDLE_RIGHT","GEN_MIDDLE_RIGHT_BOTTOM","GEN_CLOSE_SELECTED","cursorSelectors","CLOSE","EQSLID","EQNORMAL","EQCLOSE","EQTITLE","MAINMENU","MIN","NORMAL","MMENU","PNORMAL","PTBAR","PCLOSE","PWINBUT","PSIZE","PWSSIZE","PWSNORM","PVSCROLL","SONGNAME","VOLBAL","WINBUT","WSNORMAL","WSPOSBAR","Css","ClipPaths","paths","dist","CSS_PREFIX","mapRegionNamesToIds","windowshade","equalizerws","mapRegionNamesToMatcher","FALLBACKS","normalizeCursorSelector","startsWith","getCssRules","cssRules","imageName","imageUrl","selectedWidth","cursorSelector","cursorRules","numExIsUsed","regionName","polygons","matcher","getClipPaths","clipPaths","Skin","App","genWindowsInfo","browserWindowSizeChanged","webampNode","role","handleWindowResize","renderWindows","getAnalyser","IGNORE_EVENTS_FROM_TAGS","emitter_Emitter","_listeners","eventListeners","trigger","callbacks","dispose","StereoBalanceNode","upMixer","createGain","channelCount","channelCountMode","channelInterpretation","splitter","createChannelSplitter","leftGain","rightGain","merger","createChannelMerger","rawValue","gain","connect","audioParam","AudioNode","elementSource_ElementSource","eventType","_emitter","destination","_destination","_audio","_stalled","_setStalled","_setStatus","_source","createMediaElementSource","stalled","currentTime","getStalled","getStatus","media_Media","AudioContext","webkitAudioContext","resume","_staticSource","_balance","_preamp","_analyser","createAnalyser","smoothingTimeConstant","_gainNode","_bands","createBiquadFilter","frequency","timeRemaining","percentComplete","seekTime","autoPlay","loadUrl","Disposable_Disposable","_teardowns","teardown","webampLazy_Webamp","supportsAudioApi","supportsCanvas","_node","_disposable","_actionEmitter","initialTracks","initialSkin","avaliableSkins","enableHotkeys","__butterchurnOptions","__customMediaClass","importConvertPreset","presetConverterEndpoint","convert","presetOptions","actionEmitter","initialState","customMiddlewares","stateOverrides","extras","emitterMiddleware","js_store","__customMiddlewares","__initialState","onLine","butterchurnOpen","getPresets","importButterchurn","normalizePresets","handleOnline","handleOffline","_bufferTracks","layout","__initialWindowLayout","currentPos","bindHotkeys","nextTrack","previousTrack","appendTracks","setTracksToPlay","onWillClose","onClose","reopen","onTrackDidChange","previousTrackId","onMinimize","__loadSerializedState","loadSerializedState","__getSerializedState","__onStateChange","skinIsLoaded","Iid3v1Token","Id3v1StringType","year","zeroByte","genre","trimRightNull","genreIndex","getGenre","stream_1","ID3Stream","_read","ReflectOwnKeys","Reflect","ReflectApply","receiver","NumberIsNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","unshift","warned","emitter","onceWrapper","fired","wrapFn","_onceWrap","wrapped","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","doError","er","originalListener","spliceOne","rawListeners","eventNames","Stream","Transform","PassThrough","copyProps","SafeBuffer","setImmediate","CorkedRequest","_this","entry","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","realHasInstance","internalUtil","deprecate","OurUint8Array","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","writableHwm","writableHighWaterMark","defaultHwm","finalCalled","needDrain","ending","finished","noDecode","decodeStrings","defaultEncoding","writing","corked","sync","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","final","_final","doWrite","chunk","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","hasInstance","pipe","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_undestroy","undestroy","Vorbis","VorbisParser","codecName","pageSegments","parsePage","pageData","firstPage","parseFirstPage","continued","lastPage","fullPage","parseFullPage","commonHeader","CommonHeader","vorbis","packetType","idHeader","IdentificationHeader","bitrateNominal","channelMode","parseUserCommentList","absoluteGranulePosition","numberOfSamples","userCommentListLength","parseUserComment","VorbisPictureToken","fromBase64","_payload","_init","removeEmptyString","prepareStackTrace","construct","_render","domEventName","targetContainers","lanePriority","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","eventTimes","clz32","_reactName","Ad","zd","oninput","Ze","xf","childLanes","lanes","firstBaseUpdate","lastBaseUpdate","eventTime","lane","_reactInternals","_workInProgressVersionPrimary","_getVersion","mutableReadLanes","getSnapshot","setSnapshot","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","baseLanes","oi","retryLane","unstable_expectedLoadTime","ej","hj","ij","jj","pj","expirationTimes","finishedLanes","mutableSourceEagerHydrationData","mk","nk","qk","hydrationOptions","mutableSources","rk","tk","sk","uk","vk","wk","xk","rendererConfig","overrideHookStateDeletePath","overrideHookStateRenamePath","overridePropsDeletePath","overridePropsRenamePath","yk","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","symbol","any","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","originalModule","webpackPolyfill","CONSTANTS","Int8Array","nameStart","nameEnd","valueName","locals","baseUrl","protocol","host","currentDir","pathname","fullMatch","origUrl","newUrl","unquotedOrigUrl","basePropertyOf","baseToString","symbolProto","symbolToString","baseGetTag","getRawTag","symToStringTag","nativeObjectToString","isOwn","unmasked","riff_file_1","byte_data_1","DWORD","riff","RIFFFile","setSignature","signature","mapChunk","chunkId","mapper","findChunk","words","chunkData","cbSize","nFrames","nSteps","iWidth","iHeight","iBitCount","nPlanes","bfAttributes","lists","imageChunk","subChunks","infoChunk","byte_data__WEBPACK_IMPORTED_MODULE_0__","chunkSize","uInt32","supported_containers","readString","readUInt32","getSubChunksIndex_","chunks","maxSize","getSubChunkIndex_","getChunkId_","getChunkSize_","realChunkSize","isLE","mLen","nBytes","eLen","eBias","nBits","rt","Timeout","clearFn","_id","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","stringToBytes","readUInt64LE","tarHeaderChecksumMatches","uint8ArrayUtf8ByteString","xpiZipFilename","oxmlContentTypes","oxmlRels","check","mask","checkString","findNextZipHeaderIndex","startAt","zipHeaderIndex","oxmlFound","brandMajor","sliced","idPos","docTypePos","findDocType","objectSize","readableStream","eval","pass","minimumBytes","pipeline","EE","dest","ondata","ondrain","_isStdio","onclose","didOnEnd","cleanup","ReadableState","EElistenerCount","debugUtil","debuglog","StringDecoder","BufferList","kProxyEvents","readableObjectMode","readableHwm","readableHighWaterMark","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","addChunk","maybeReadMore","needMoreData","isPaused","setEncoding","enc","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onfinish","pipeOnDrain","increasedAwaitDrain","dests","ev","wrap","paused","_fromList","emitErrorNT","readableDestroyed","writableDestroyed","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_transform","_flush","_this2","err2","GUID","bin","objectId","mediaType","AudioMedia","VideoMedia","CommandMedia","Degradable_JPEG_Media","FileTransferMedia","BinaryMedia","guid","toBin","encode","HeaderObject","DataObject","SimpleIndexObject","IndexObject","MediaObjectIndexObject","TimecodeIndexObject","FilePropertiesObject","StreamPropertiesObject","HeaderExtensionObject","CodecListObject","ScriptCommandObject","MarkerObject","BitrateMutualExclusionObject","ErrorCorrectionObject","ContentDescriptionObject","ExtendedContentDescriptionObject","ContentBrandingObject","StreamBitratePropertiesObject","ContentEncryptionObject","ExtendedContentEncryptionObject","DigitalSignatureObject","PaddingObject","ExtendedStreamPropertiesObject","AdvancedMutualExclusionObject","GroupMutualExclusionObject","StreamPrioritizationObject","BandwidthSharingObject","LanguageListObject","MetadataObject","MetadataLibraryObject","IndexParametersObject","MediaObjectIndexParametersObject","TimecodeIndexParametersObject","CompatibilityObject","AdvancedContentEncryptionObject","JFIF_Media","ASF_Index_Placeholder_Object","base64str","mimeLen","descLen","colour_depth","indexed_color","picDataLen","bitrateMax","bitrateMin","FourCC_1","hdr","ExtendedSize","ftyp","mhdr","nextItemID","FixedLengthAtom","expLen","atomId","MdhdAtom","creationTime","modificationTime","timeScale","language","quality","MvhdAtom","preferredRate","preferredVolume","previewTime","previewDuration","posterTime","selectionTime","selectionDuration","nextTrackID","DataAtom","NameAtom","TrackHeaderAtom","layer","alternateGroup","stsdHeader","numberOfEntries","SampleDiscriptionTable","dataFormat","dataReferenceIndex","StsdAtom","getTypeOf","uint8array","compressedSize","uncompressedSize","crc32","compressedContent","getContentWorker","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","createFolders","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","processChunk","_createPako","transformTo","cleanUp","onData","pako","utf8encode","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","registerPrevious","generatedError","lock","generateWorker","_compressWorker","clone","support","defaults","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","fileNameStr","fileCommentStr","_upstreamEnded","_bindStream","_stream","_helper","newBufferFrom","allocBuffer","folder","generate","generateInternalStream","checkSupport","generateAsync","generateNodeStream","toNodejsStream","byteAt","lastIndexOfSignature","readAndCheckSignature","checkIndex","setIndex","skip","readInt","readDate","UTC","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","dataIsReady","_tickScheduled","_tickAndRepeat","isFinished","_tick","extraStreamInfo","isLocked","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","arraybuffer","nodebuffer","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","loadOptions","checkSignature","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","nodeStream","WebKitMutationObserver","characterData","onreadystatechange","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","race","immediate","windowBits","memLevel","strategy","gzip","msg","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","adler","total_in","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","lencode","distcode","lenbits","distbits","sane","havedict","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","mm","toBuffer","Browser2NodeStream_1","parseNodeStream","parseStream","parseReadableStream","contentType","Browser2NodeStream","bytesRead","parseBuffer","fileReader","onloadend","onabort","convertBlobToBuffer","audioTrackUrl","headers","parseFromTokenizer","orderTags","ratingToStars","Webamp","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","jszip__WEBPACK_IMPORTED_MODULE_1__","jszip__WEBPACK_IMPORTED_MODULE_1___default","music_metadata_browser__WEBPACK_IMPORTED_MODULE_2__","_webampLazy__WEBPACK_IMPORTED_MODULE_3__","b64","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","installMessageChannelImplementation","html","script","installReadyStateChangeImplementation","selectColor","createDebug","prevTime","curr","coerce","formatter","logFn","instances","newDebug","toNamespace","regexp","disable","names","skips","enable","plural","msAbs","isPlural","long","fmtLong","fmtShort","strtok3","ParserFactory_1","ParserFactory","nativeTags","rating","AbstractTokenizer_1","then_read_stream_1","AbstractTokenizer","streamReader","StreamReader","skipBytes","endOfStream","peekBuffer","maybeless","skipBuffer","numBuffer","token","readNumber","peekNumber","Deferred","peekQueue","peekData","lenCopy","request","deferred","tryRead","descriptors","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","opts","seen","stylize","stylizeNoColor","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","reduceToSingleString","desc","pad","NODE_DEBUG","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","promiseResolve","promiseReject","custom","callbackify","callbackified","maybeCb","rej","maybeLess","bytes2read","tv","bytesIgnored","MimeType","MetadataCollector_1","AiffParser_1","APEv2Parser_1","AsfParser_1","FlacParser_1","MP4Parser_1","MpegParser_1","musepack_1","OggParser_1","WaveParser_1","WavPackParser_1","DsfParser_1","DsdiffParser_1","parserId","getParserIdForMimeType","getParserIdForExtension","guessedType","filePath","getExtension","moduleName","AIFFParser","AsfParser","DsfParser","DsdiffParser","FlacParser","MP4Parser","MpegParser","OggParser","WaveParser","WavPackParser","loadParser","MetadataCollector","toCommonMetadata","fname","subType","subtype","signedBitSum","readSum","paramRegExp","textRegExp","tokenRegExp","qescRegExp","quoteRegExp","subtypeNameRegExp","typeNameRegExp","typeRegExp","qstring","parameters","suffix","getHeader","getcontenttype","splitType","GenericTagTypes_1","CombinedTagMapper_1","GenericTagMapper_1","TagPriority","joinArtists","artists","native","disk","commonOrigin","originPriority","tagMapper","CombinedTagMapper","tagType","artificial","id3v1","tagId","toCommon","getNativeMetadata","setGenericTag","artistTag","parseGenre","fixPictureMimeType","toIntOrNull","normalizeTrack","genericTag","prio0","prio1","isSingleton","isUnique","commonTags","unique","albumartist","originaldate","originalyear","composer","lyrics","albumsort","titlesort","artistsort","albumartistsort","composersort","lyricist","writer","conductor","remixer","arranger","engineer","producer","technician","djmixer","mixer","grouping","subtitle","discsubtitle","totaltracks","totaldiscs","compilation","bpm","mood","catalognumber","tvShow","tvShowSort","tvSeason","tvEpisode","tvEpisodeId","tvNetwork","podcast","podcasturl","releasestatus","releasetype","releasecountry","copyright","license","encodedby","encodersettings","gapless","barcode","isrc","asin","musicbrainz_recordingid","musicbrainz_trackid","musicbrainz_albumid","musicbrainz_artistid","musicbrainz_albumartistid","musicbrainz_releasegroupid","musicbrainz_workid","musicbrainz_trmid","musicbrainz_discid","acoustid_id","acoustid_fingerprint","musicip_puid","musicip_fingerprint","website","averageLevel","peakLevel","notes","originalalbum","originalartist","discogs_artist_id","discogs_release_id","discogs_label_id","discogs_master_release_id","discogs_votes","discogs_rating","replaygain_track_peak","replaygain_track_gain","alias","ID3v1TagMap_1","ID3v24TagMapper_1","AsfTagMapper_1","ID3v22TagMapper_1","APEv2TagMapper_1","MP4TagMapper_1","VorbisTagMapper_1","RiffInfoTagMap_1","tagMappers","ID3v1TagMapper","ID3v22TagMapper","ID3v24TagMapper","MP4TagMapper","VorbisTagMapper","APEv2TagMapper","AsfTagMapper","RiffInfoTagMapper","registerTagMapper","genericTagMapper","id3v1TagMap","id3v24TagMap","TIT2","TPE1","TPE2","TALB","TDRV","TORY","TPOS","TCON","APIC","TCOM","TSOA","TSOT","TOAL","TSOP","TSO2","TSOC","TPE3","TPE4","TPUB","TIT1","TIT3","TRCK","TCMP","POPM","TBPM","TMED","TLAN","TCOP","WCOP","TENC","TSSE","TSRC","WOAR","TDRC","TYER","TDOR","TMOO","SYLT","TSST","TKEY","COMM","TOPE","popm","owner_identifier","decodeString","identifier","toRating","asfTagMap","Title","Author","Description","Copyright","LICENSE","ASIN","id3v22TagMap","TT2","TP1","TP2","TAL","TYE","COM","TRK","TPA","TCO","PIC","TCM","TOR","TOT","TXT","TP3","TPB","TT1","TT3","TLA","TCR","WCP","TEN","TSS","WAR","apev2TagMap","Artist","Artists","Album","Year","Originalyear","Originaldate","Comment","Track","Disc","DISCNUMBER","Genre","Composer","Lyrics","ALBUMSORT","TITLESORT","WORK","ARTISTSORT","ALBUMARTISTSORT","COMPOSERSORT","Lyricist","Writer","Conductor","MixArtist","Arranger","Engineer","Producer","DJMixer","Mixer","Label","Grouping","Subtitle","DiscSubtitle","Compilation","BPM","Mood","Media","CatalogNumber","MUSICBRAINZ_ALBUMSTATUS","MUSICBRAINZ_ALBUMTYPE","RELEASECOUNTRY","Script","Language","EncodedBy","EncoderSettings","Barcode","ISRC","musicbrainz_releasetrackid","MUSICBRAINZ_ALBUMID","MUSICBRAINZ_ARTISTID","MUSICBRAINZ_ALBUMARTISTID","MUSICBRAINZ_RELEASEGROUPID","MUSICBRAINZ_WORKID","MUSICBRAINZ_TRMID","MUSICBRAINZ_DISCID","Acoustid_Id","ACOUSTID_FINGERPRINT","MUSICIP_PUID","Weblink","upperCaseMap","mp4TagMap","aART","trkn","covr","soal","sonm","soar","soaa","soco","cpil","tmpo","tvsh","tvsn","tves","sosn","tven","tvnn","pcst","purl","cprt","pgap","gnre","ldes","vorbisTagMap","TITLE","ARTIST","ARTISTS","ALBUMARTIST","ALBUM","DATE","ORIGINALDATE","ORIGINALYEAR","COMMENT","TRACKNUMBER","GENRE","METADATA_BLOCK_PICTURE","COMPOSER","LYRICS","LYRICIST","WRITER","CONDUCTOR","REMIXER","ARRANGER","ENGINEER","PRODUCER","DJMIXER","MIXER","LABEL","GROUPING","SUBTITLE","DISCSUBTITLE","TRACKTOTAL","DISCTOTAL","COMPILATION","RATING","MOOD","CATALOGNUMBER","RELEASESTATUS","RELEASETYPE","SCRIPT","LANGUAGE","COPYRIGHT","ENCODEDBY","ENCODERSETTINGS","BARCODE","MUSICBRAINZ_TRACKID","MUSICBRAINZ_RELEASETRACKID","ACOUSTID_ID","ACOUSTID_ID_FINGERPRINT","WEBSITE","NOTES","TOTALTRACKS","TOTALDISCS","DISCOGS_ARTIST_ID","DISCOGS_ARTISTS","DISCOGS_ARTIST_NAME","DISCOGS_ALBUM_ARTISTS","DISCOGS_CATALOG","DISCOGS_COUNTRY","DISCOGS_DATE","DISCOGS_LABEL","DISCOGS_LABEL_ID","DISCOGS_MASTER_RELEASE_ID","DISCOGS_RATING","DISCOGS_RELEASED","DISCOGS_RELEASE_ID","DISCOGS_VOTES","CATALOGID","STYLE","REPLAYGAIN_TRACK_GAIN","REPLAYGAIN_TRACK_PEAK","riffInfoTagMap","IART","ICRD","INAM","TITL","IPRD","ITRK","ICMT","ICNT","GNRE","IWRI","RATE","YEAR","ISFT","CODE","TURL","IGNR","IENG","ITCH","IMED","IRPD","AiffToken","iff","ID3Stream_1","chunkID","isCompressed","chunkHeader","nextChunk","Common","sampleSize","numChannels","numSampleFrames","compressionName","id3_data","id3stream","rst","FrameParser","getTextEncoding","nullTerminatorLength","getNullTerminatorLength","fzero","splitValue","functionList","readIdentifierAndData","pic","txt","trimArray","isAifc","minimumChunkSize","baseSampleRate","compressionType","Constructor","_classCallCheck","config","parseTagFlags","containsHeader","isBitSet","containsFooter","isHeader","readOnly","headerBytes","apeFrameDataBytesHigh","fileMD5","compressionLevel","formatFlags","GUID_1","AsfObject","TopLevelHeaderObjectToken","parseObjectHeader","numberOfHeaderObjects","numberOfObjectHeaders","HeaderObjectToken","fpo","playDuration","maximumBitrate","spo","streamType","extHeader","parseExtensionObject","extensionDataSize","ContentDescriptionObjectState","addTags","ExtendedContentDescriptionObjectState","IgnoreObjectState","extensionSize","ExtendedStreamPropertiesObjectState","MetadataObjectState","moTags","MetadataLibraryObjectState","mlTags","AsfUtil_1","fromBin","State","postProcessTag","valueType","WmPictureToken","parseAttr","AsfUtil","getParserForAttr","fileId","creationDate","dataPacketsCount","sendDuration","preroll","broadcast","seekable","minimumDataPacketSize","maximumDataPacketSize","decodeMediaType","errorCorrectionType","reserved1","reserved2","contentDescTags","parseUnicodeAttr","attrCount","nameLen","valueLen","endTime","dataBitrate","bufferSize","initialBufferFullness","alternateDataBitrate","alternateBufferSize","alternateInitialBufferFullness","maximumObjectSize","reliableFlag","seekableFlag","resendLiveCleanpointsFlag","streamNumber","streamLanguageId","averageTimePerFrame","streamNameCount","payloadExtensionSystems","streamNames","streamPropertiesObject","descriptionRecordsCount","typeId","attributeParsers","stripNulls","parseWordAttr","parseByteArrayAttr","parseBoolAttr","parseDWordAttr","parseQWordAttr","Vorbis_1","AbstractID3Parser_1","BlockType","blockHeader","Metadata","BlockHeader","parseDataBlock","lastBlock","dataSize","STREAMINFO","parseBlockStreamInfo","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","parseComment","CUESHEET","PICTURE","parsePicture","BlockStreamInfo","totalSamples","DataDecoder","readStringUtf8","commentListLength","readInt32","minimumBlockSize","maximumBlockSize","minimumFrameSize","maximumFrameSize","Atom_1","AtomToken","encoderDict","alac","lossy","mp4a","mp4s","c608","c708","distinct","formatList","rootAtom","Atom","readAtoms","atom","parseMetadataItemData","parseAtom_stsd","types","parseAtom_ftyp","parseAtom_mdhd","parseAtom_mvhd","atomPath","addWarning","metaAtom","tagKey","parseValueAtom","mean","dataAtom","genreInt","genreStr","read_BE_Signed_Integer","read_BE_Unsigned_Integer","mvhd","mvhd_data","parse_mxhd","mdhd","mdhd_data","mxhd","ftype","stsd","dfEntry","encoderInfo","extended","dataHandler","atomBean","readAtom","XingTag_1","MPEG4","AudioObjectTypes","SamplingFrequencies","MPEG4_ChannelConfigurations","MpegFrameHeader","versionIndex","LayerDescription","parseAdtsHeader","parseMpegHeader","isProtectedByCRC","calcDuration","numFrames","calcSamplesPerFrame","samplingRate","samplesInFrameTable","calculateSideInfoLength","channelModeIndex","calcSlotSize","bitrateIndex","sampRateFreqIndex","privateBit","modeExtension","isCopyrighted","isOriginalMedia","emphasis","VersionID","ChannelMode","codec","bitrateInKbps","calcBitrate","calcSamplingRate","profileIndex","codecProfile","samplingFrequencyIndex","channelIndex","mp4ChannelConfig","frameLength","mpegVersion","bitrate_index","sampling_rate_freq_index","SyncByte1","SyncByte2","FrameHeader","frameCount","syncFrameCount","countSkipFrameData","totalAudioLength","bitrates","calculateEofDuration","buf_frame_header","syncPeek","quit","parseAudioFrameHeader","samplesPerFrame","hasID3v1","mpegSize","mpegOffset","frame_size","gotFirstSync","bo","parseAdts","slot_size","samples_per_frame","fsize","audioFrameHeader","skipSideInformation","areAllSame","parseCrc","framesPerSec","crc","sideinfo_length","readXtraInfoHeader","headerTag","InfoTagHeaderTag","readXingInfoHeader","infoTag","vbrScale","LameEncoderVersion","skipFrameData","frameDataLeft","XingInfoTag","encoder","headerFlags","streamSize","infoTagRevision","vbrMethod","MpcSv8Parser_1","MpcSv7Parser_1","MusepackParser","mpcParser","MpcSv7Parser","MpcSv8Parser","SV8","audioLength","parsePacket","sv8reader","readPacketHeader","payloadLength","readStreamHeader","sampleCount","sampleFrequency","PacketKey","SH_part1","streamVersion","SH_part3","maxUsedBands","msUsed","audioBlockFrames","readVariableSizeField","streamHeader","part1","beginningOfSilence","part3","SV7","BitReader_1","streamMajorVersion","streamMinorVersion","lastFrameLength","bitreader","BitReader","midSideStereo","intensityStereo","skipAudioData","maxLevel","profile","maxBand","titlePeak","titleGain","albumPeak","albumGain","trueGapless","dword","numOfWords","VorbisParser_1","OpusParser_1","SpeexParser_1","SegmentTable","page_segments","totalPageSize","capturePattern","pageNumber","pageSequenceNo","segmentTable","pageConsumer","OpusParser","SpeexParser","streamSerialNumber","pageChecksum","Opus","lastPos","IdHeader","magicSignature","inputSampleRate","preSkip","outputGain","channelMapping","Speex","speexHeader","nb_channels","speex","version_id","header_size","mode_bitstream_version","vbr","frames_per_packet","extra_headers","WaveChunk","riffHeader","parseRiffChunk","readWaveChunk","parseListTag","fact","FactChunk","fmt","Format","subFormat","WaveFormat","wFormatTag","wBitsPerSample","nSamplesPerSec","nChannels","nBlockAlign","blockAlign","lossless","dwSampleLength","listHeader","listType","parseRiffInfoTags","valueToken","ListInfoTagValue","tagHeader","nAvgBytesPerSec","WavPackToken_1","audioDataSize","parseWavPackBlocks","WavPack","BlockHeaderToken","BlockID","blockIndex","dataformat","isHybrid","isDSD","isMono","ignoreBytes","blockSize","parseMetadataSubBlock","blockSamples","remainingLength","MetadataIdToken","dataSizeInWords","largeBlock","isOddSize","functionId","mp","SampleRates","isJointStereo","crossChannel","hybridNoiseShaping","floatingPoint","isOptional","DsfChunk_1","p0","ChunkHeader","dsdChunk","DsdChunk","metadataPointer","parseChunks","bytesRemaining","formatChunk","FormatChunk","channelNum","samplingFrequency","ChannelType","formatVersion","formatID","channelType","blockSizePerChannel","DsdiffToken_1","readFmt8Chunks","remainingSize","propType","handleSoundPropertyChunks","sndPropHeader","handleChannelChunks","compressionIdCode","hours","samples","lsConfig","channelId","isTypedArray","isStrictTypedArray","loose","isLooseTypedArray","Int16Array","Uint8ClampedArray","getReader","__defProp","__defNormalProp","__publicField","_mergeNamespaces","systemCoreMap","gba","gbc","megadrive","nes","snes","commonjsGlobal","globalThis","getDefaultExportFromCjs","opt","newline","whitespace","bracketedArray","separator","padToChars","arraySuffix","splitSections","lastMatchIndex","lastSeparatorIndex","sections","lines","duplicates","unsafe","keyRaw","valueRaw","nl","del","isQuoted","esc","unesc","ini$1","coreInfoMap","corename","savestate","supportsNoGame","a5200","advanced_tests","ardens","arduous","atari800","blastem","bluemsx","bnes","boom3","boom3_xp","bsnes","bsnes_cplusplus98","cheats","bsnes_hd_beta","bsnes_mercury_accuracy","bsnes_mercury_balanced","bsnes_mercury_performance","bsnes2014_accuracy","bsnes2014_balanced","bsnes2014_performance","cannonball","cap32","cdi2015","chailove","chimerasnes","citra","citra_canary","citra2018","craft","crocods","cruzes","daphne","desmume","desmume2015","dinothawr","directxbox","dirksimple","dolphin","dolphin_launcher","dosbox","dosbox_core","dosbox_pure","dosbox_svn","dosbox_svn_ce","duckstation","easyrpg","ecwolf","emuscv","emux_chip8","emux_gb","emux_nes","emux_sms","ep128emu_core","fake08","fbalpha2012","fbalpha2012_cps1","fbalpha2012_cps2","fbalpha2012_cps3","fbalpha2012_neogeo","fbneo","fceumm","ffmpeg","fixgb","fixnes","flycast","flycast_gles2","fmsx","freechaf","freeintv","freej2me","frodo","fsuae","fuse","galaksija","gambatte","gearboy","gearcoleco","gearsystem","genesis_plus_gx","genesis_plus_gx_wide","gme","gong","gpsp","gw","handy","hatari","hbmame","higan_sfc","higan_sfc_balanced","imageviewer","ishiiruka","jaxe","jumpnbump","kronos","lowresnx","lutro","mame","mame2000","mame2003","mame2003_midway","mame2003_plus","mame2009","mame2010","mame2015","mame2016","mamearcade","mamemess","mednafen_gba","mednafen_lynx","mednafen_ngp","mednafen_pce","mednafen_pce_fast","mednafen_pcfx","mednafen_psx","mednafen_psx_hw","mednafen_saturn","mednafen_snes","mednafen_supafaust","mednafen_supergrafx","mednafen_vb","mednafen_wswan","melonds","mesen","mess2015","meteor","mgba","minivmac","mojozork","moonlight","mpv","mrboom","mu","mupen64plus_next","mupen64plus_next_develop","mupen64plus_next_gles2","mupen64plus_next_gles3","nekop2","neocd","nestopia","np2kai","numero","nxengine","o2em","oberon","openlara","opentyrian","opera","parallel_n64","parallel_n64_debug","pascal_pong","pcem","pcsx_rearmed","pcsx_rearmed_interpreter","pcsx_rearmed_neon","pcsx1","pcsx2","picodrive","pocketcdg","pokemini","potator","ppsspp","prboom","prosystem","puae","puae2021","puzzlescript","px68k","quasi88","quicknes","redbook","reminiscence","remotejoy","retro8","retrodream","rustation","same_cdi","sameboy","sameduck","scummvm","simcp","smsplus","snes9x","snes9x2002","snes9x2005","snes9x2005_plus","snes9x2010","squirreljme","stella","stella2014","stonesoup","superbroswar","swanstation","tempgba","test_netplay","testaudio_callback","testaudio_no_callback","testaudio_playback_wav","testgl","testgl_compute_shaders","testgl_ff","testinput_buttontest","testretroluxury","testsw","testsw_vram","testvulkan","testvulkan_async_compute","tgbdual","theodore","thepowdertoy","tic80","tyrquake","uae4arm","ume2015","uw8","uzem","vaporspec","vba_next","vbam","vecx","vemulator","vice_x128","vice_x64","vice_x64dtv","vice_x64sc","vice_xcbm2","vice_xcbm5x0","vice_xpet","vice_xplus4","vice_xscpu64","vice_xvic","vircon32","virtualjaguar","virtualxt","vitaquake2","vitaquake3","vitavoyager","wasm4","x1","x64sdl","xrick","yabasanshiro","yabause","keyboardCodeMap","alt","backquote","backslash","backspace","capslock","comma","ctrl","divide","down","home","kp_enter","kp_equals","kp_minus","kp_period","kp_plus","leftbracket","minus","multiply","numlock","pagedown","pageup","period","print_screen","ralt","rctrl","rightbracket","rshift","scroll_lock","slash","space","subtract","tab","tilde","up","browserfs$2","module2","loaded","exports2","Buffer2","global2","module3","process2","ErrorCode","ErrorCode2","path2","ErrorStrings","EPERM","ENOENT","EIO","EBADF","EACCES","EBUSY","EEXIST","ENOTDIR","EISDIR","EINVAL","EFBIG","ENOSPC","EROFS","ENOTEMPTY","ENOTSUP","ActionType","ActionType2","ApiError","Error2","ApiError2","path$$1","syscall","errno","path","fromJSON","buffer$$1","i2","FileError","writeToBuffer","api_error","FileType2","FileFlag","FileFlag2","flagStr","validFlagStrs","getFileFlag","flagCache","getFlagString","isReadable","isWriteable","isTruncating","isAppendable","isSynchronous","isExclusive","pathExistsAction","THROW_EXCEPTION","TRUNCATE_FILE","NOP","pathNotExistsAction","CREATE_FILE","Stats","itemType","atime","mtime","ctime","dev","ino","rdev","nlink","blksize","gid","birthtime","fileData","FILE","DIRECTORY","blocks","isFile","isDirectory","isSymbolicLink","SYMLINK","chmod","isSocket","isBlockDevice","isCharacterDevice","isFIFO","wrapCb","numArgs","assertRoot","fs2","normalizeMode","def","trueMode","normalizeTime","normalizePath","normalizeOptions","defEnc","defFlag","defMode","flag","nopCb","FS","F_OK","R_OK","W_OK","X_OK","fdMap","nextFd","initialize","rootFS","isAvailable","_toUnixTimestamp","getRootFS","rename","oldPath","newPath","newCb","renameSync","exists","existsSync","stat","statSync","lstat","lstatSync","truncateSync","unlink","unlinkSync","this$1$1","getFdForFile","openSync","readFile","readFileSync","writeFile","writeFileSync","appendFile","appendFileSync","fstat","fd2file","fstatSync","closeFd","closeSync","ftruncate","ftruncateSync","fsync","fsyncSync","syncSync","fdatasync","datasync","fdatasyncSync","datasyncSync","arg4","arg5","writeSync","readSync","shenanigans","rv","fchown","chown","fchownSync","chownSync","fchmod","numMode","fchmodSync","chmodSync","futimes","utimes","futimesSync","utimesSync","rmdir","rmdirSync","mkdir","mkdirSync","readdir","readdirSync","srcpath","dstpath","linkSync","symlink","symlinkSync","readlink","readlinkSync","lchown","lchownSync","lchmod","lchmodSync","realpath","realpathSync","watchFile","unwatchFile","watch","access","accessSync","createReadStream","createWriteStream","wrapCallbacks","cbWrapper","fs","_fsMock","fsProto","_min","d0","d1","d2","bx","ay","levenshtein","d3","vector","bx0","bx1","bx2","bx3","dd$1","y$1","dy","bx0$1","y$2","dy$1","deprecationMessage","print","fsName","newFs","isWebWorker","mkdirpSync","dirname","buffer2ArrayBuffer","buff","u8","buffer2Uint8array","u8offset","u8Len","arrayish2Buffer","uint8Array2Buffer","arrayBuffer2Buffer","copyingSlice","emptyBuffer","s0","newS0","emptyBuff","bufferValidator","checkOptions","fsType","optsInfo","Options","Name","pendingValidators","callbackCalled","loopEnded","validatorCallback","optName2","providedValue","optional","incorrectOptions","distance","validator","optName","returned","BFSUtils","BFSEmscriptenStreamOps","nodefs","getNodeFS","getFS","PATH","getPATH","ERRNO_CODES","getERRNO_CODES","realPath","FS2","nfd","flagsToPermissionString","ErrnoError","llseek","whence","BFSEmscriptenNodeOps","getattr","setattr","attr","name2","join2","getMode","createNode","mknod","isDir","oldNode","newDir","newName","BFSEmscriptenFS","_FS","_PATH","_ERRNO_CODES","flagsToPermissionStringMap","node_ops","stream_ops","mount","isLink","parsedFlags","BaseFileSystem","supportsLinks","diskSpace","openFile","createFile","stats","e2","parentStats","isLstat","openFileSync","createFileSync","splitPath","sep","addPaths","doesExist","er2","er22","oldCb","err22","err3","isLchmod","isLchown","SynchronousFileSystem","BaseFileSystem2","SynchronousFileSystem2","supportsSynch","BaseFile","PreloadFile","BaseFile$$1","PreloadFile2","_fs","_path","_flag","_stat","_pos","_dirty","_buffer","getStats","getFlag","getPath","advancePos","delta","setPos","newBuff","endFp","supportsProps","isDirty","resetDirty","NoSyncFile","NoSyncFile2","MirrorFile","PreloadFile$$1","MirrorFile2","_syncSync","AsyncMirror","SynchronousFileSystem$$1","AsyncMirror2","deprecateMsg","_queueRunning","_isInitialized","_initializeCallbacks","_sync","_async","Create","enqueueOp","apiMethod","userCb","copyDirectory","copyNextFile","copyItem","copyFile","isReadOnly","checkInitialized","op","doNextOp","op2","nativeMax","identity","otherArgs","overRest$1","initialParams","applyEach$1","eachfn","fns","go","args2","Symbol$1","hasOwnProperty2","symToStringTag$1","nativeObjectToString$1","breakLoop","callFn","baseIsArguments","objectProto$3","hasOwnProperty$2","freeExports","freeModule","Buffer$1","typedArrayTags","freeExports$1","freeModule$1","freeProcess","nodeUtil","nodeIsTypedArray","hasOwnProperty$1","isArr","isArg","isBuff","isType","objectProto$5","overArg","hasOwnProperty$3","createObjectIterator","okeys","coll","createArrayIterator","iterator2","getIterator","createES2015Iterator","onlyOnce","_eachOfLimit","nextElem","running","iterateeCallback","replenish","elem","eachOfLimit","doLimit","iterable","eachOfArrayLike","completed","iteratorCallback","eachOfGeneric","eachOf","_asyncMap","results","callback2","mapLimit","doParallelLimit","callArgs","hasSetImmediate","hasNextTick","defer","errorCodeLookup","eachOfSeries","functions","newargs","cb2","nextargs","consoleFunc","arrayEach","eachLimit","_withoutIndex","ignoredArgs","CachedDropboxClient","client","_cache","_client","cacheInfo","getCachedDirInfo","_wrap","interceptCb","contentHash","filenames","folderEntries","Dropbox","NO_CONTENT","updateCachedDirInfo","updateCachedInfo","deleteCachedInfo","stat2","getCachedFileInfo","performOp","numRun","timeoutDuration","SERVER_ERROR","NETWORK_ERROR","RATE_LIMITED","getCachedInfo","putCachedInfo","info","isFolder","cachedInfo","updateCachedFileInfo","versionTag","DropboxFile","DropboxFile2","_writeFileStrict","DropboxFileSystem","BaseFileSystem$$1","DropboxFileSystem2","INVALID_PARAM","INVALID_TOKEN","OAUTH_ERROR","NOT_FOUND","INVALID_METHOD","NOT_ACCEPTABLE","CONFLICT","OVER_QUOTA","supportsSymlinks","empty","mainCb","error2","missingPath","error22","isRemoved","_statType","dbStat","_makeFile","file2","_remove","errorCode","convertError","isAuthenticated","EmscriptenFile","EmscriptenFile2","emPosition","EmscriptenFileSystem","EmscriptenFileSystem2","DB_NAME","modeToFileType","p2","utime","FolderAdapter","FolderAdapter2","_folder","_wrapped","translateError","relative","wrapCallback","wrapFunction","wrapFirst","wrapSecond","global$1","_getFS","webkitRequestFileSystem","requestFileSystem","convertError$1","expectedDir","HTML5FSFile","HTML5FSFile2","_entry","createWriter","onwriteend","HTML5FS","HTML5FS2","PERSISTENT","allocate","success","errorCallback","webkitPersistentStorage","requestQuota","TEMPORARY","webkitTemporaryStorage","webkitStorageInfo","_requestQuota","granted","_readdir","succ","fullPath","isDirectoryEntry","removeRecursively","semaphore","successCount","root2","currentPath","getDirectory","parentDir","basename","getFile","loadAsDir","dir$$1","failedToLoad","exclusive","bfsFile","list2","dirEntry","createReader","readEntries","Inode","toStats","getSize","atimeMs","mtimeMs","ctimeMs","ROOT_NODE_ID","emptyDirNode","getEmptyDirNode","GenerateRandomID","noError","noErrorTx","tx","abort","SimpleSyncRWTransaction","originalData","modifiedKeys","stashOldValue","overwrite","markModified","commit","SyncKeyValueFile","SyncKeyValueFile2","SyncKeyValueFileSystem","SyncKeyValueFileSystem2","makeRootDirectory","beginTransaction","oldParent","oldName","newParent","oldDirNode","findINode","oldDirList","getDirListing","newDirNode","newDirList","nodeId","newNameNode","getINode","newFile","commitNewFile","removeEntry","fileInodeId","_findINode","fileInode","inodeChanged","currTime","dirInode","readDirectory","inode","dirList","addNewNode","currId","fileNode","dirListing","dataId","fileNodeId","parentListing","AsyncKeyValueFile","AsyncKeyValueFile2","AsyncKeyValueFileSystem","AsyncKeyValueFileSystem2","inodes","errorOccurred","processInodeAndListings","findINodeAndDirListing","oldParentList","oldParentINode","newParentList","newParentINode","completeRename","e3","theOleSwitcharoo","e4","handleDirectoryListings","listing","retries","reroll","committed","e5","InMemoryStore","InMemoryFileSystem","SyncKeyValueFileSystem$$1","InMemoryFileSystem2","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","convertError$2","onErrorHandler","IndexedDBROTransaction","onsuccess","IndexedDBRWTransaction","IndexedDBROTransaction2","IndexedDBRWTransaction2","IndexedDBStore","storeName","openReq","onupgradeneeded","objectStoreNames","deleteObjectStore","createObjectStore","IndexedDBFileSystem","transaction","objectStore","AsyncKeyValueFileSystem$$1","IndexedDBFileSystem2","binaryEncoding","supportsBinaryString","LocalStorageStore","LocalStorageFileSystem","LocalStorageFileSystem2","MountableFileSystem","MountableFileSystem2","mountList","mntMap","rootFs","mountPoint","umount","_getFs","standardizeError","fs1rv","fs2rv","fsInfo","rv2","_containsMountPt","mountPoints","pt","defineFcn","isSync","bfsSetImmediate","fsCmdMap","i$1","fnName","gScope","timeouts","messageName","postMessageIsAsync","handleMessage","setImmediate$3","Mutex","_locked","_waiters","unlock","tryLock","LockedFS","_mu","getFSUnlocked","exists2","resolvedPath","linkString","deletionLogPath","makeModeWritable","SpecialArgType","SpecialArgType2","OverlayFile","OverlayFile2","_syncAsync","UnlockedOverlayFS","UnlockedOverlayFS2","_deletedFiles","_deleteLog","_deleteLogUpdatePending","_deleteLogUpdateNeeded","_deleteLogError","_writable","_readable","getOverlayedFileSystems","createParentDirectoriesAsync","createParentDirectories","OverlayFS","callbackArray","_reparseDeletionLog","getDeletionLog","restoreDeletionLog","updateLog","checkInitAsync","checkPathAsync","oldErr","oldStats","newErr","newStats","self2","copyDirContents","oldFile","mkdirErr","readdirErr","files2","checkPath","stat3","oldStat","readFileErr","writableExists","readableExists","deletePath","rmdirLower","dirStats","wFiles","rFiles","seenMap","filtered","fPath","fileP","existsWritable","existsReadable","operateOnWritableAsync","operateOnWritable","addition","toCreate","createParents","statDone","copyToWritable","copyToWritableAsync","pStats","LockedFS$$1","OverlayFS2","CallbackArgumentConverter","_callbacks","_nextId","toRemoteArg","CB","toLocalArg","FileDescriptorArgumentConverter","_fileDescriptors","apiErrorLocal2Remote","API_ERROR","errorData","bufferToTransferrableObject","apiErrorRemote2Local","transferrableObjectToBuffer","errorLocal2Remote","ERROR","errorRemote2Local","cnstr","statsLocal2Remote","STATS","statsData","statsRemote2Local","fileFlagLocal2Remote","FILEFLAG","fileFlagRemote2Local","remoteFlag","bufferLocal2Remote","BUFFER","bufferRemote2Local","buffArg","FD","applyFdAPIRequest","fdArg","_applyFdChanges","remoteFd","remoteStats","applyStatChanges","WorkerFile","WorkerFile2","remoteFdId","_remoteFdId","getRemoteFdId","_syncClose","syncClose","WorkerFS","WorkerFS2","worker","_callbackConverter","_isReadOnly","_supportLinks","_supportProps","resp","fixedArgs","_argRemote2Local","cbId","Worker","attachRemoteListener","fdConverter","argLocal2Remote","requestArgs","argRemote2Local","fixedRequestArgs","specialArg","arguments$1","countdown","abortAndSendError","browserfsMessage","i3","fixedArg","remoteCb","probeResponse","PROBE","_argLocal2Remote","_rpc","methodName","getFileSize","req","XMLHttpRequest","readyState","getResponseHeader","send","asyncDownloadFile","jsonSupported","responseType","responseText","syncDownloadFile","overrideMimeType","FileIndex","_index","addPath","DirInode","fromListing","rootInode","pwd","tree","FileInode","_ls","fileIterator","getListing","isFileInode","getData","_split_path","dirpath","itemname","addItem","isDirInode","addPathFast","itemNameMark","parentPath","itemName","removePath","remItem","ls","getInode","setData","XmlHttpRequest","XmlHttpRequest2","listingUrlOrObj","prefixUrl","_requestFileSync","FromURL","preloadFile","_requestFileSizeAsync","_requestFileSizeSync","_requestFileAsync","fdBuff","tryToString","getXhrPath","getFileSizeAsync","getFileSizeSync","ExtendedASCII","str2byte","charIdx","extendedChars","byte2str","ExternalFileAttributeType","ExternalFileAttributeType2","CompressionMethod","CompressionMethod2","decompressionMethods","msdos2date","safeToString","FileHeader","versionNeeded","lastModFileTime","rawLastModFileTime","extraFieldLength","extraField","totalSize","FileData","record","decompress","fcn","getRecord","getRawData","CentralDirectory","zipData","_filename","produceFilename","internalAttributes","externalAttributes","headerRelativeOffset","rawFileName","rawFileComment","getFileData","EndOfCentralDirectory","cdDiskNumber","cdDiskEntryCount","cdTotalEntryCount","cdSize","cdOffset","cdZipCommentLength","cdZipComment","rawCdZipComment","ZipTOC","directoryEntries","eocd","ZipFS","ZipFS2","_directoryEntries","_eocd","populateIndex","computeIndex","zipTOC","RegisterDecompressionMethod","getEOCD","cdPtr","cdEnd","computeIndexResponsive","endOffset","startOffset","addToIndex","cdEntries","getCentralDirectoryEntry","getCentralDirectoryEntryAt","getNumberOfCentralDirectoryEntries","getEndOfCentralDirectory","cdRecord","getASCIIString","getJolietString","pairs","mon","day","hour","sec","hundrethsSec","getShortFormDate","yearsSince1900","minute","constructSystemUseEntry","bigData","sue","SystemUseEntry","signatureWord","CEEntry","PDEntry","SPEntry","STEntry","EREntry","ESEntry","PXEntry","PNEntry","SLEntry","NMEntry","CLEntry","PLEntry","REEntry","TFEntry","SFEntry","RREntry","constructSystemUseEntries","isoData","getEntries","STORED","VolumeDescriptor","standardIdentifier","PrimaryOrSupplementaryVolumeDescriptor","VolumeDescriptor2","PrimaryOrSupplementaryVolumeDescriptor2","_root","systemIdentifier","_getString32","volumeIdentifier","volumeSpaceSize","volumeSetSize","volumeSequenceNumber","logicalBlockSize","pathTableSize","locationOfTypeLPathTable","locationOfOptionalTypeLPathTable","locationOfTypeMPathTable","locationOfOptionalTypeMPathTable","rootDirectoryEntry","_constructRootDirectoryRecord","rootCheckForRockRidge","volumeSetIdentifier","_getString","publisherIdentifier","dataPreparerIdentifier","applicationIdentifier","copyrightFileIdentifier","abstractFileIdentifier","bibliographicFileIdentifier","volumeCreationDate","volumeModificationDate","volumeExpirationDate","volumeEffectiveDate","fileStructureVersion","applicationUsed","reserved","PrimaryVolumeDescriptor","PrimaryVolumeDescriptor2","ISODirectoryRecord","SupplementaryVolumeDescriptor","SupplementaryVolumeDescriptor2","escapeSequence","JolietDirectoryRecord","DirectoryRecord","rockRidgeOffset","_suEntries","_fileOrDir","_rockRidgeOffset","hasRockRidge","getRockRidgeOffset","getDotEntry","_getRockRidgeOffset","extendedAttributeRecordLength","lba","dataLength","recordingDate","fileFlags","fileUnitSize","interleaveGapSize","_rockRidgeFilename","ident","versionSeparator","getSUEntries","isSymlink","getSymlinkPath","getStr","_getGetString","i$12","list$1","componentRecords","continueFlag","_constructDirectory","_constructSUEntries","nmEntries","getString","suEntries","spEntry","checkBytesPass","extensionIdentifier","bytesSkipped","DirectoryRecord2","ISODirectoryRecord2","ISODirectory","JolietDirectoryRecord2","JolietDirectory","signatureWordString","suVersion","SystemUseEntry2","CEEntry2","_entries","continuationLba","continuationLbaOffset","continuationLength","PDEntry2","SPEntry2","STEntry2","EREntry2","identifierLength","descriptorLength","sourceLength","extensionVersion","extensionDescriptor","extensionSource","ESEntry2","extensionSequence","RREntry2","PXEntry2","fileLinks","PNEntry2","devTHigh","devTLow","SLEntry2","records","SLComponentRecord","componentLength","NMEntry2","CLEntry2","childDirectoryLba","PLEntry2","parentDirectoryLba","REEntry2","TFEntry2","creation","_longFormDates","modify","previousDates","backup","expiration","effective","SFEntry2","virtualSizeHigh","virtualSizeLow","tableDepth","Directory","_fileList","_fileMap","_record","iLimit","_constructDirectoryRecord","getFileList","Directory2","ISODirectory2","JolietDirectory2","IsoFS","IsoFS2","vdTerminatorFound","candidateVDs","_pvd","_name","_getDirectoryRecord","_getStats","components","newP","dirRec","oneArg","normalizedCb","normalizedOpts","Backends","Emscripten","InMemory","IndexedDB","LocalStorage","BFSRequire","module4","rootfs","getFileSystem","waitCount","called","fsc","finishedIterating","install","oldRequire","registerFileSystem","configure","EmscriptenFS","FileSystem","Errors","K_MAX_LENGTH","isArrayBuffer","isArrayBufferView","numberIsNaN","byteLength2","placeHoldersCount","placeHolders","len22","processProxy","defineKey","key2","initializeTTYs","stdin","__dirname","__extends","__","Item2","NextTickQueue","NextTickQueue2","_draining","_currentQueue","_queueIndex","_drainQueue","_cleanUpNextTick","Process","_super","Process2","_cwd","execArgv","domain","execPath","exitCode","_gid","_uid","http_parser","v8","uv","zlib","ares","icu","openssl","target_defaults","cflags","default_configuration","defines","include_dirs","libraries","variables","clang","host_arch","node_install_npm","node_install_waf","node_prefix","node_shared_cares","node_shared_http_parser","node_shared_libuv","node_shared_zlib","node_shared_v8","node_use_dtrace","node_use_etw","node_use_openssl","node_shared_openssl","strict_aliasing","target_arch","v8_use_snapshot","v8_no_strict_aliasing","visibility","arch","_mask","uptime","exit","getgid","setgid","getuid","setuid","kill","signal","memoryUsage","rss","heapTotal","heapUsed","oldMask","hrtime","timeinfo","secs","TTY","splitPathRe","path3","normalize","_removeDuplicateSeps","goodComponents","processed","resolved","fromSegs","toSegs","upCount","downSegs","lastPart","extname","isAbsolute","_makeLong","allParts","posixSplitPath","pathObject","_replaceRegex","posix","win32","TTY2","isRaw","isTTY","_bufferedWrites","_waitingForWrites","setRawMode","changeColumns","changeRows","isatty","READABLE_STREAM","processNextTick","bufferShim","ranOut","skipAdd","MAX_LEN","_fill","fillBuf","flen","keys2","WriteReq","isBufferEncoding","assertEncoding","surrogateSize","detectIncompleteChar","utf16DetectIncompleteChar","base64DetectIncompleteChar","passThroughWrite","charBuffer","charReceived","charLength","charStr","available","cr","TransformState","ws","zlib_inflate","utils","strings","ZStream","GZheader","inflator","_mode","next_out_utf8","utf8str","dict","allowBufError","adler32","inflate_fast","inflate_table","BAD","zswap32","InflateState","lenfix","distfix","virgin","fixedtables","updatewindow","_in","_out","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","inf_leave","dictLength","TYPED_OK","fnTyped","src_offs","dest_offs","fnUntyped","s1","s2","crcTable","makeTable","beg","s_window","lcode","dcode","lmask","dmask","dolen","dodist","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","low","drop","used","huff","base_index","offs","extra_index","STR_APPLY_OK","STR_APPLY_UIA_OK","_utf8len","c2","m_pos","str_len","buf_len","c_len","utf16buf","browserfsExports","browserfs","browserfs$1","raUserdataDir$1","createEmscriptenFS","inMemoryFS","mountableFS","getEmscriptenModuleOverrides","overrides","resolveRunDependenciesPromise","runDependenciesPromise","emscriptenModuleOverrides","noExitRuntime","noInitialRun","locateFile","printErr","toThrow","urlBaseName","decodeURIComponent","isAbsoluteUrl","absolutePrefix","blobToBuffer","stringToBuffer","updateStyle","rule","isGlobalScript","js2","isEsmScript","patchCoreJs","js","jsContent2","importCoreJsAsESM","jsContent","jsBlob","jsBlobUrl","import","isNil","mergeSourceToTarget","targetValue","sourceValue","checkIsAborted","aborted","padZero","TextEncoder","raUserdataDir","raBundleDir","raContentDir","raSystemDir","raConfigDir","raShaderDir","raConfigPath","raCoreConfigPath","Emulator","clearStateFile","Module","getEmscripten","stateFileName","stateThumbnailFileName","fireKeyboardEvent","JSEvents","eventListenerFunc","eventTypeString","eventHandlers","getCurrentRetroarchConfig","configContent","getElementSize","getKeyboardCode","player","guessScreenshotFileName","getFullYear","dateString","baseName","romBaseName","keyboardDown","keyboardUp","postRun","resize","canvasInitialSize","gamepad","getGamepads","dispatchEvent","GamepadEvent","updateKeyboardEventHandlers","rom","runMain","raArgs","callMain","gameStatus","core","emscriptenModule","wasm","initialModule","preRun","wasmBinary","emscripten","monitorRunDependencies","setupFileSystem","bios","browserFS","mkdirTree","stateFileDirectory","waitTime","asm","filePromises","writeBlobToDirectory","statePromise","fileContent","writeConfigFile","retroarchConfig","retroarchCoreConfig","setupRaShaderFile","shader","glslFiles","glslpContent","writeTextToDirectory","coreFullName","messageQueue","respondToGlobalEvents","getAttribute","keyboardEvents","globalKeyboardEventHandlers","globalKeyboardEventHandler","handlerFunc","registerOrRemoveHandler","retryTimes","delayTime","newBuffer","createDataFile","replaceAll","statusCode","removeAllEventListeners","getOptions","setupEmscripten","setupRaConfigFile","waitForInteraction","isConnected","HTMLElement","beforeLaunch","nostalgist","onLaunch","waitForEmscriptenFile","sendCommand","keyboardPress","pressDown","pressUp","setCanvasSize","restart","stateBuffer","stateThumbnailBuffer","savestate_thumbnail_enable","thumbnail","screenshotDirectory","screenshotFileName","screenshotPath","defaultRetroarchConfig","menu_driver","notification_show_when_menu_is_alive","savestate_auto_load","stdin_cmd_enable","video_shader_enable","input_audio_mute","input_cheat_index_minus","input_cheat_index_plus","input_cheat_toggle","input_desktop_menu_toggle","input_exit_emulator","input_fps_toggle","input_frame_advance","input_game_focus_toggle","input_grab_mouse_toggle","input_hold_fast_forward","input_hold_slowmotion","input_load_state","input_netplay_game_watch","input_netplay_player_chat","input_pause_toggle","input_reset","input_rewind","input_save_state","input_screenshot","input_shader_next","input_shader_prev","input_shader_toggle","input_state_slot_decrease","input_state_slot_increase","input_toggle_fast_forward","input_toggle_fullscreen","input_volume_down","input_volume_up","input_player1_analog_dpad_mode","input_player2_analog_dpad_mode","input_player3_analog_dpad_mode","input_player4_analog_dpad_mode","cdnBaseUrl","coreRepo","coreVersion","coreDirectory","shaderRepo","shaderVersion","getDefaultOptions","runEmulatorManually","resolveCoreJs","resolveCoreWasm","resolveRom","romRepo","encodedFile","resolveBios","resolveShader","segments","vendors","_Nostalgist","mergedOptions","globalOptions","launchSystem","launch","biosFiles","biosFile","resolveFile","system","coreDict","js22","wasm2","promises","getElementOption","HTMLCanvasElement","getRetroarchCoreOption","getRetroarchOption","romFiles","romFile","shaderFile","getStyleOption","defaultAppearanceStyle","imageRendering","defaultLayoutStyle","loadEmulatorOptions","loadEmulator","launchEmulator","launchOptions","File","getCoreForSystem","emulatorOptions","getEmulatorOptions","emulator","getCoreOption","getRomOption","getBiosOption","getShaderOption","resolveFunction","resolvedFile","resolveStringFile","resolvedRom","removeCanvas","getEmulator","getCanvas","getBrowserFS","getEmscriptenAL","AL","getEmscriptenFS","getEmscriptenModule","loadState","press","saveState","screenshot","command","Nostalgist","__webpack_module_cache__","cachedModule","__webpack_modules__","amdO","definition","_taggedTemplateLiteral","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","isEqual","lastThis","calledOnce","newArgs","reactPropsRegex","getType","__spreadArrays","il","jl","assignProp","carry","newVal","originalObject","mergeRecursively","newComer","newObject","targetVal","newComers","ADD_APP","DEL_APP","FOCUS_APP","MINIMIZE_APP","TOGGLE_MAXIMIZE_APP","FOCUS_ICON","SELECT_ICONS","FOCUS_DESKTOP","START_SELECT","END_SELECT","POWER_OFF","CANCEL_POWER_OFF","FOCUSING","POWER_STATE","RowSymbol","iePaper","borderRadius","styled","WindowDropDown","option","setOption","onMouseEnter","onClickItem","dropDown","openOption","setOpenOption","_onClickItem","hoverOption","fadein","keyframes","fadeout","show","startAfter","setShow","openTimer","fadeTimer","closeTimer","shield","SubMenuItem","onHover","_onMouseOver","icon","StyledSubMenu","hoverIndex","setHoverIndex","goMain","onSearch","query","smile","mouse","startPos","Edit","View","Favorites","Tools","Help","route","iframeWidth","handleResize","newWidth","prevState","dropDownData","forward","msn","dropdown","Config","Beginner","ceils","mines","Intermediate","Expert","Game","renderDigits","numberStr","_number","genDropDownData","difficulty","_Game","getTextImg","Ceils","renderContent","minesAround","opening","MinesAround","Flag","MisFlagged","Mine","Die","QuestionOpen","Question","CeilBackgroundOpen","CeilBackgroundCover","question","changeCeilState","onReset","openCeil","openCeils","openingCeil","openingCeils","mouseDownContent","setMouseDownContent","openBehavior","setOpenBehavior","behavior","onMouseDownContent","onMouseOverCeils","closest","onMouseUpCeils","statusFace","onMouseOver","parentElement","targetCeil","onTouchMove","getInitState","genGameConfig","exclude","insertMines","indexes","autoCeils","newState","getNearIndexes","originCeils","indexArray","chosen","nearIndex","walked","walkCeils","lastIndexes","ceilIndex","row","arrayIndex","defaultDifficulty","setSeconds","addSecond","timer","useTimer","MinesweeperView","mineIndex","Audio","errorSoundSrc","computer","pullup","viewInfo","control","Notepad","docText","setDocText","wordWrap","setWordWrap","toLocaleTimeString","toLocaleDateString","StyledTextarea","spellCheck","webamp","main","renderWhenReady","initialWinampXPosition","initialWinampYPosition","isFocus","frameBorder","PuzzleExpressWrap","PinballWrap","iframeRef","SolitaireWrap","BoxheadWrap","TaggrWrap","handleFocusIframe","gen","genId","genIndex","defaultAppState","Winamp","winamp","invisible","defaultSize","defaultOffset","resizable","minimized","maximized","defaultIconState","computerLarge","MyComputer","notepadLarge","mine","Minesweeper","trumpForceIcon","TrumpForce","Pinball3dIcon","Pinball","paintLarge","Paint","openChatIcon","taggrIcon","Taggr","bitomniIcon","Bitomni","windogeIcon","ghostIcon","exeIcon","ND64Icon","Nintendoge64","ICPTokensIcon","ICPTokens","quake3Arena","Quake3","pinballIndex","Boxhead2PlayIcon","Boxhead","puzzleExpressIcon","PuzzleExpress","solitaireIcon","Solitaire","appSettings","multiInstance","noFooterWindow","ErrorBox","notepad","paint","onClickButton","ButtonDisabled","Button","switcher","StyledContainer","onMouseMove","MyRecentDocuments","ConnectTo","AllPrograms","menu","narrator","sound","mediaPlayer","security","restore","painter","messenger","Items","hovering","setHovering","alignItems","allProgramsIcon","borderLeftColor","shut","hourPostFix","FooterWindow","Container","onMouseDownApp","apps","focusedAppId","onClickMenuItem","setTime","menuOn","setMenuOn","newTime","app","getComputedPagePosition","boundary","getCursorStyle","resizeThreshold","constraintSize","setOffset","cursorPos","threshold","cover","_setPosition","onHoverEnd","offsetX","offsetY","useCursor","dragTarget","dragRef","previousOffset","previousSize","_boundary","originMouseX","originMouseY","shouldCover","onDragging","onDragEnd","onDraggingTop","onDragEndTop","onDragStartTop","onDraggingLeft","onDragEndLeft","onDragStartLeft","onResizingRight","onResizeEndRight","onResizingBottom","onResizeEndBottom","onResizingLeft","onResizeEndLeft","onResizingTop","onResizeEndTop","onResizingTopLeft","onResizeEndTopLeft","onResizingTopRight","onResizeEndTopRight","onResizingBottomLeft","onResizeEndBottomLeft","onResizingBottomRight","onResizeEndBottomRight","onMaximize","buttonElements","maximize","Window","injectProps","onMouseUpClose","onMouseUpMinimize","onMouseUpMaximize","_onMouseUpClose","_onMouseUpMinimize","_onMouseUpMaximize","windowWidth","windowHeight","useElementResize","StyledWindow","IconsContainer","StyledIcon","measure","_onDoubleClick","displayFocus","icons","selecting","setSelectedIcons","iconsRect","setIconsRect","sx","sy","sw","initState","nextAppID","nextZIndex","focusing","powerState","_app","powerOffAnimation","useMouse","showStartupAudio","setShowStartupAudio","triggerStartupAudio","setTriggerStartupAudio","focusedApp","getFocusedAppId","onFocusApp","onMaximizeWindow","onMinimizeWindow","onCloseApp","onIconsSelected","iconIds","addStartupAudioTimeout","removeStartupAudioTimeout","appSetting","setting","preload","fadeIn","BootupScreen","onBootComplete","loadingWrapRef","loadingWrap","interval","LoadingScreenWrap","onNext","progress","setProgress","setFileName","importantWindowsXPFiles","loadFiles","isActive","velocity","delayVelocity","updateProgress","currentProgress","minStep","maxStep","progressStep","newProgress","delayBase","timeoutId","setBlinking","hasBooted","handleKeyPress","blinkingTimer","prevBlinking","stage","setStage","handleNext","isBooted","setIsBooted","hostname","ReactDOM","getElementById","serviceWorker","ready","registration","unregister"],"sourceRoot":""}