@signalk/server-admin-ui 2.19.4 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.html +23 -0
- package/package.json +11 -15
- package/public/assets/_commonjsHelpers-D6-XlEtG.js +2 -0
- package/public/assets/adminUI__loadShare__react__loadShare__-Cn7x_nA9.js +2 -0
- package/public/assets/adminUI__mf_v__runtimeInit__mf_v__-Cm0AUItX.js +9 -0
- package/public/assets/bootstrap-Ca_bYwBS.js +753 -0
- package/public/assets/hostInit-BMKH-INB.js +3 -0
- package/public/assets/index-03avmwGu.js +9 -0
- package/public/assets/index-5hkOWmYo.js +19 -0
- package/public/assets/index-BKq6BzKk.js +3 -0
- package/public/assets/index-LtR7LJbL.js +6 -0
- package/public/assets/loadingerror-Dkv7JQqX.js +2 -0
- package/public/assets/preload-helper-Ct5FWWRu.js +2 -0
- package/public/assets/style-DYma2Hl2.css +18 -0
- package/public/assets/virtualExposes-BIHI7g3E.js +2 -0
- package/public/img/signal-k-logo-image-text.svg +0 -0
- package/public/img/signal-k-logo-image.svg +0 -0
- package/public/index.html +28 -1
- package/public/remoteEntry.js +3 -0
- package/vite.config.js +65 -0
- package/public/144.js +0 -3
- package/public/144.js.LICENSE.txt +0 -23
- package/public/144.js.map +0 -1
- package/public/188.js +0 -2
- package/public/188.js.map +0 -1
- package/public/323.js +0 -2
- package/public/323.js.map +0 -1
- package/public/41.js +0 -3
- package/public/41.js.LICENSE.txt +0 -14
- package/public/41.js.map +0 -1
- package/public/877.js +0 -15
- package/public/877.js.LICENSE.txt +0 -107
- package/public/877.js.map +0 -1
- package/public/main.js +0 -2
- package/public/main.js.map +0 -1
- /package/public/{fonts/Simple-Line-Icons.5c9febce52054ae0b96ddd3e2d173e1a.woff → assets/Simple-Line-Icons-BAgH0-Pt.woff} +0 -0
- /package/public/{fonts/Simple-Line-Icons.85e8c542d5e137beecf94e0132812855.eot → assets/Simple-Line-Icons-CKKl-dGR.eot} +0 -0
- /package/public/{fonts/Simple-Line-Icons.3826fa1cb2348dd93948a50cbd2b8fb6.woff2 → assets/Simple-Line-Icons-D0KobG-u.woff2} +0 -0
- /package/public/{fonts/Simple-Line-Icons.f1515a459c88508908124cfdab38ced9.svg → assets/Simple-Line-Icons-TZpPYPE3.svg} +0 -0
- /package/public/{fonts/Simple-Line-Icons.3ec13a24af3fdda1110771d3541915a2.ttf → assets/Simple-Line-Icons-mVuQrdSX.ttf} +0 -0
- /package/public/{fonts/fa-brands-400.2285773e6b4b172f07d9b777c81b0775.woff → assets/fa-brands-400-CEJbCg16.woff} +0 -0
- /package/public/{fonts/fa-brands-400.527940b104eb2ea366c8630f3f038603.ttf → assets/fa-brands-400-CSYNqBb_.ttf} +0 -0
- /package/public/{fonts/fa-brands-400.23f19bb08961f37aaf692ff943823453.eot → assets/fa-brands-400-DnkPfk3o.eot} +0 -0
- /package/public/{fonts/fa-brands-400.d878b0a6a1144760244ff0665888404c.woff2 → assets/fa-brands-400-UxlILjvJ.woff2} +0 -0
- /package/public/{fonts/fa-brands-400.2f517e09eb2ca6650ff5bec5a95157ab.svg → assets/fa-brands-400-cH1MgKbP.svg} +0 -0
- /package/public/{fonts/fa-regular-400.77206a6bb316fa0aded5083cc57f92b9.eot → assets/fa-regular-400-BhTwtT8w.eot} +0 -0
- /package/public/{fonts/fa-regular-400.491974d108fe4002b2aaf7ffc48249a0.ttf → assets/fa-regular-400-D1vz6WBx.ttf} +0 -0
- /package/public/{fonts/fa-regular-400.bb58e57c48a3e911f15fa834ff00d44a.woff → assets/fa-regular-400-DFnMcJPd.woff} +0 -0
- /package/public/{fonts/fa-regular-400.7a3337626410ca2f40718481c755640f.woff2 → assets/fa-regular-400-DGzu1beS.woff2} +0 -0
- /package/public/{fonts/fa-regular-400.4689f52cc96215721344e51e5831eec1.svg → assets/fa-regular-400-gwj8Pxq-.svg} +0 -0
- /package/public/{fonts/fa-solid-900.7a8b4f130182d19a2d7c67d80c090397.svg → assets/fa-solid-900-B4ZZ7kfP.svg} +0 -0
- /package/public/{fonts/fa-solid-900.9bbb245e67a133f6e486d8d2545e14a5.eot → assets/fa-solid-900-B6Axprfb.eot} +0 -0
- /package/public/{fonts/fa-solid-900.1551f4f60c37af51121f106501f69b80.woff2 → assets/fa-solid-900-BUswJgRo.woff2} +0 -0
- /package/public/{fonts/fa-solid-900.eeccf4f66002c6f2ba24d3d22f2434c2.woff → assets/fa-solid-900-DOXgCApm.woff} +0 -0
- /package/public/{fonts/fa-solid-900.be9ee23c0c6390141475d519c2c5fb8f.ttf → assets/fa-solid-900-mxuxnBEa.ttf} +0 -0
- /package/public/{fonts/fontawesome-webfont.20fd1704ea223900efa9fd4e869efb08.woff2 → assets/fontawesome-webfont-B-jkhYfk.woff2} +0 -0
- /package/public/{fonts/fontawesome-webfont.f691f37e57f04c152e2315ab7dbad881.woff → assets/fontawesome-webfont-CDK5bt4p.woff} +0 -0
- /package/public/{fonts/fontawesome-webfont.1e59d2330b4c6deb84b340635ed36249.ttf → assets/fontawesome-webfont-CQDK8MU3.ttf} +0 -0
- /package/public/{fonts/fontawesome-webfont.c1e38fd9e0e74ba58f7a2b77ef29fdd3.svg → assets/fontawesome-webfont-D13rzr4g.svg} +0 -0
- /package/public/{fonts/fontawesome-webfont.8b43027f47b20503057dfbbaa9401fef.eot → assets/fontawesome-webfont-G5YE5S7X.eot} +0 -0
- /package/public/{fonts/signal-k-logo-image.200bef2a0bd5597ecdd8594980e10b8b.svg → assets/signal-k-logo-image-Bi031Asz.svg} +0 -0
- /package/public/{fonts/signal-k-logo-image-text.d132ec2c4f0269c103c868aaa6868f01.svg → assets/signal-k-logo-image-text-CyD4QRZT.svg} +0 -0
package/public/323.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"323.js","mappings":"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","sources":["webpack://@signalk/server-admin-ui/./scss/style.scss?f1a1","webpack://@signalk/server-admin-ui/./scss/core/_dropdown-menu-right.scss?bbe6","webpack://@signalk/server-admin-ui/./src/actions.js","webpack://@signalk/server-admin-ui/./src/components/Header/Header.js","webpack://@signalk/server-admin-ui/./src/components/SidebarFooter/SidebarFooter.js","webpack://@signalk/server-admin-ui/./src/components/SidebarForm/SidebarForm.js","webpack://@signalk/server-admin-ui/./src/components/SidebarHeader/SidebarHeader.js","webpack://@signalk/server-admin-ui/./src/components/SidebarMinimizer/SidebarMinimizer.js","webpack://@signalk/server-admin-ui/./src/components/Sidebar/Sidebar.js","webpack://@signalk/server-admin-ui/./src/components/Aside/Aside.js","webpack://@signalk/server-admin-ui/./src/components/Footer/Footer.js","webpack://@signalk/server-admin-ui/./src/views/Dashboard/Dashboard.js","webpack://@signalk/server-admin-ui/./src/fa-pulse.css?8b92","webpack://@signalk/server-admin-ui/./src/views/Webapps/dynamicutilities.js","webpack://@signalk/server-admin-ui/./src/views/security/EnableSecurity.js","webpack://@signalk/server-admin-ui/./src/views/security/Login.js","webpack://@signalk/server-admin-ui/./src/views/Webapps/Embedded.js","webpack://@signalk/server-admin-ui/./src/views/Webapps/Webapp.js","webpack://@signalk/server-admin-ui/./src/views/Webapps/Webapps.js","webpack://@signalk/server-admin-ui/./src/views/DataBrowser/Meta.js","webpack://@signalk/server-admin-ui/./src/views/DataBrowser/ValueRenderers.js","webpack://@signalk/server-admin-ui/./src/blinking-circle.css?6f78","webpack://@signalk/server-admin-ui/./src/views/DataBrowser/DataBrowser.js","webpack://@signalk/server-admin-ui/./src/views/Playground.js","webpack://@signalk/server-admin-ui/./src/views/appstore/Grid/cell-renderers/ActionCellRenderer.js","webpack://@signalk/server-admin-ui/./src/views/appstore/AppsList.js","webpack://@signalk/server-admin-ui/./src/views/appstore/Apps/WarningBox.js","webpack://@signalk/server-admin-ui/./src/views/appstore/appStore.scss?9baa","webpack://@signalk/server-admin-ui/./src/views/appstore/Apps/Apps.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/PluginConfigurationForm.js","webpack://@signalk/server-admin-ui/./src/views/Configuration/EmbeddedPluginConfigurationForm.js","webpack://@signalk/server-admin-ui/./src/views/Configuration/Configuration.js","webpack://@signalk/server-admin-ui/./src/views/security/Settings.js","webpack://@signalk/server-admin-ui/./src/views/security/Users.js","webpack://@signalk/server-admin-ui/./src/views/security/Devices.js","webpack://@signalk/server-admin-ui/./src/views/security/Register.js","webpack://@signalk/server-admin-ui/./src/views/security/AccessRequests.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/N2KFilters.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/BasicProvider.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/SourcePriorities.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/ProvidersConfiguration.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/VesselConfiguration.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/Logging.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/Settings.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/BackupRestore.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/ServerLog.js","webpack://@signalk/server-admin-ui/./src/views/ServerConfig/ServerUpdate.js","webpack://@signalk/server-admin-ui/./src/containers/Full/Full.js","webpack://@signalk/server-admin-ui/./src/bootstrap.js","webpack://@signalk/server-admin-ui/./public_src/img/signal-k-logo-image-text.svg","webpack://@signalk/server-admin-ui/./scss/core/_dropdown-menu-right.scss","webpack://@signalk/server-admin-ui/./public_src/img/signal-k-logo-image.svg","webpack://@signalk/server-admin-ui/./scss/style.scss","webpack://@signalk/server-admin-ui/./src/views/appstore/appStore.scss","webpack://@signalk/server-admin-ui/./src/fa-pulse.css","webpack://@signalk/server-admin-ui/./src/blinking-circle.css"],"sourcesContent":["import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./style.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./_dropdown-menu-right.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { isUndefined } from 'lodash'\n\nconst authFetch = (url, options) => {\n return fetch(url, {\n ...options,\n credentials: 'include'\n })\n}\n\nexport function logout() {\n return (dispatch) => {\n dispatch({\n type: 'LOGOUT_REQUESTED'\n })\n authFetch('/signalk/v1/auth/logout', {\n method: 'PUT'\n })\n .then((response) => {\n if (!response.ok) {\n throw new Error(response.statusText)\n }\n return response\n })\n .then(() => {\n dispatch({\n type: 'LOGOUT_SUCCESS'\n })\n })\n .catch((error) => {\n dispatch({\n type: 'LOGOUT_FAILED',\n data: error\n })\n })\n .then(() => {\n fetchLoginStatus(dispatch)\n })\n }\n}\n\nexport async function login(\n dispatch,\n username,\n password,\n rememberMe,\n callback\n) {\n const payload = {\n username: username,\n password: password,\n rememberMe: rememberMe\n }\n const request = await authFetch('/signalk/v1/auth/login', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n })\n\n const response = await request.json()\n if (request.status !== 200) {\n dispatch({\n type: 'LOGIN_FAILURE',\n data: response.message\n })\n callback(response.message)\n } else if (response) {\n fetchAllData(dispatch)\n dispatch({\n type: 'LOGIN_SUCCESS'\n })\n callback(null)\n }\n}\n\nexport function enableSecurity(dispatch, userId, password, callback) {\n var payload = {\n userId: userId,\n password: password,\n type: 'admin'\n }\n fetch(`${window.serverRoutesPrefix}/enableSecurity`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }).then((response) => {\n if (response.status !== 200) {\n response.text().then((text) => {\n callback(text)\n })\n } else {\n callback(null)\n }\n })\n}\n\nexport function restart() {\n return (dispatch) => {\n if (confirm('Are you sure you want to restart?')) {\n fetch(`${window.serverRoutesPrefix}/restart`, {\n credentials: 'include',\n method: 'PUT'\n }).then(() => {\n dispatch({ type: 'SERVER_RESTART' })\n })\n }\n }\n}\n\nexport const buildFetchAction =\n (endpoint, type, prefix) => async (dispatch) => {\n const response = await authFetch(\n `${isUndefined(prefix) ? window.serverRoutesPrefix : prefix}${endpoint}`\n )\n\n if (response.status === 200) {\n const data = await response.json()\n dispatch({\n type,\n data\n })\n }\n }\n\nexport const fetchLoginStatus = buildFetchAction(\n '/loginStatus',\n 'RECEIVE_LOGIN_STATUS'\n)\nexport const fetchPlugins = buildFetchAction('/plugins', 'RECEIVE_PLUGIN_LIST')\nexport const fetchWebapps = buildFetchAction('/webapps', 'RECEIVE_WEBAPPS_LIST')\nexport const fetchAddons = buildFetchAction('/addons', 'RECEIVE_ADDONS_LIST')\nexport const fetchApps = buildFetchAction(\n '/appstore/available',\n 'RECEIVE_APPSTORE_LIST'\n)\nexport const fetchAccessRequests = buildFetchAction(\n '/security/access/requests',\n 'ACCESS_REQUEST'\n)\nexport const fetchServerSpecification = buildFetchAction(\n '/signalk',\n 'RECEIVE_SERVER_SPEC',\n ''\n)\n\nexport function fetchAllData(dispatch) {\n fetchPlugins(dispatch)\n fetchWebapps(dispatch)\n fetchAddons(dispatch)\n fetchApps(dispatch)\n fetchLoginStatus(dispatch)\n fetchServerSpecification(dispatch)\n fetchAccessRequests(dispatch)\n}\n\nexport function openServerEventsConnection(dispatch, isReconnect) {\n const proto = window.location.protocol === 'https:' ? 'wss' : 'ws'\n const ws = new WebSocket(\n proto +\n '://' +\n window.location.host +\n `/signalk/v1/stream?serverevents=all&subscribe=none&sendMeta=all`\n )\n\n ws.onmessage = function (event) {\n const serverEvent = JSON.parse(event.data)\n if (serverEvent.type) {\n dispatch(serverEvent)\n } else if (serverEvent.name) {\n ws.skSelf = serverEvent.self\n } else if (ws.messageHandler) {\n ws.messageHandler(serverEvent)\n }\n }\n ws.onclose = () => {\n console.log('closed')\n dispatch({\n type: 'WEBSOCKET_CLOSE'\n })\n }\n ws.onerror = () => {\n dispatch({\n type: 'WEBSOCKET_ERROR'\n })\n }\n ws.onopen = () => {\n console.log('connected')\n dispatch({\n type: 'WEBSOCKET_OPEN',\n data: ws\n })\n if (isReconnect) {\n window.location.reload()\n }\n }\n}\n","import React, { Component } from 'react'\nimport {\n Nav,\n NavItem,\n NavLink,\n NavbarToggler,\n NavbarBrand,\n DropdownItem,\n DropdownMenu,\n DropdownToggle,\n Dropdown\n} from 'reactstrap'\nimport { connect } from 'react-redux'\nimport { logout, restart, login } from '../../actions'\n\nclass Header extends Component {\n constructor(props) {\n super(props)\n\n this.toggleDropdown = this.toggleDropdown.bind(this)\n this.state = {\n dropdownOpen: false\n }\n }\n\n componentDidMount() {\n window.addEventListener('sidebar:hide', () => {\n document.body.classList.toggle('sidebar-hidden', true)\n document.body.classList.toggle('sidebar-mobile-show', false)\n })\n\n window.addEventListener('popstate', () => {\n document.body.classList.toggle('sidebar-mobile-show', false)\n })\n }\n\n toggleDropdown() {\n this.setState({\n dropdownOpen: !this.state.dropdownOpen\n })\n }\n\n sidebarToggle(e) {\n e.preventDefault()\n document.body.classList.toggle('sidebar-hidden')\n }\n\n sidebarMinimize(e) {\n e.preventDefault()\n document.body.classList.toggle('sidebar-minimized')\n }\n\n mobileSidebarToggle(e) {\n e.preventDefault()\n document.body.classList.toggle('sidebar-mobile-show')\n }\n\n asideToggle(e) {\n e.preventDefault()\n document.body.classList.toggle('aside-menu-hidden')\n }\n\n render() {\n return (\n <header className=\"app-header navbar\">\n <NavbarToggler className=\"d-lg-none\" onClick={this.mobileSidebarToggle}>\n <span className=\"navbar-toggler-icon\" />\n </NavbarToggler>\n <NavbarBrand href=\"#\" />\n <NavbarToggler\n className=\"d-md-down-none mr-auto\"\n onClick={this.sidebarToggle}\n >\n <span className=\"navbar-toggler-icon\" />\n </NavbarToggler>\n <Nav className=\"ml-auto\" navbar>\n <NavItem className=\"d-md-down-none px-3\">\n {this.props.loginStatus.status === 'loggedIn' &&\n this.props.loginStatus.userLevel === 'admin' && (\n <NavLink href=\"#/\" onClick={this.props.restart}>\n {this.props.restarting ? (\n <i className=\"fa fa-circle-o-notch text-danger fa-spin\" />\n ) : (\n <i className=\"fa fa-circle-o-notch\" />\n )}{' '}\n Restart\n </NavLink>\n )}\n </NavItem>\n {this.props.loginStatus.status === 'loggedIn' && (\n <NavItem className=\"d-md-down-none px-3\">\n <NavLink href=\"#/\" onClick={this.props.logout}>\n <i className=\"fa fa-lock\" /> Logout\n </NavLink>\n </NavItem>\n )}\n {this.props.loginStatus.status !== 'loggedIn' &&\n this.props.loginStatus.authenticationRequired && (\n <NavItem className=\"d-md-down-none px-3\">\n <NavLink href=\"#/login\">\n <i className=\"fa fa-lock\" /> Login\n </NavLink>\n </NavItem>\n )}\n <div className=\"d-lg-none\">\n <Dropdown\n nav\n isOpen={this.state.dropdownOpen}\n toggle={this.toggleDropdown}\n >\n <DropdownToggle nav>\n <i className=\"icon-menu\" />\n </DropdownToggle>\n <DropdownMenu right>\n {this.props.loginStatus.status === 'loggedIn' &&\n this.props.loginStatus.userLevel === 'admin' && (\n <DropdownItem onClick={this.props.restart}>\n {this.props.restarting ? (\n <i className=\"fa fa-circle-o-notch text-danger fa-spin\" />\n ) : (\n <i className=\"fa fa-circle-o-notch\" />\n )}{' '}\n Restart\n </DropdownItem>\n )}\n {this.props.loginStatus.status === 'loggedIn' && (\n <DropdownItem onClick={this.props.logout}>\n <i className=\"fa fa-lock\" /> Logout\n </DropdownItem>\n )}\n {this.props.loginStatus.status !== 'loggedIn' &&\n this.props.loginStatus.authenticationRequired && (\n <DropdownItem href=\"#/login\">\n <i className=\"fa fa-lock\" /> Login\n </DropdownItem>\n )}\n </DropdownMenu>\n </Dropdown>\n </div>\n </Nav>\n </header>\n )\n }\n}\n\nexport default connect(\n ({ loginStatus, restarting }) => ({ loginStatus, restarting }),\n { logout, restart, login }\n)(Header)\n","import { Component } from 'react'\n\nclass SidebarFooter extends Component {\n render() {\n return null\n // Uncomment following code lines to add Sidebar Footer\n // return (\n // <div className=\"sidebar-footer\"></div>\n // )\n }\n}\n\nexport default SidebarFooter\n","import { Component } from 'react'\n\nclass SidebarForm extends Component {\n render() {\n return null\n // Uncomment following code lines to add Sidebar Form\n // return (\n // <div className=\"sidebar-form\"></div>\n // )\n }\n}\n\nexport default SidebarForm\n","import { Component } from 'react'\n\nclass SidebarHeader extends Component {\n render() {\n return null\n // Uncomment following code lines to add Sidebar Header\n // return (\n // <div className=\"sidebar-header\"></div>\n // )\n }\n}\n\nexport default SidebarHeader\n","import React, { Component } from 'react'\n\nclass SidebarMinimizer extends Component {\n sidebarMinimize() {\n document.body.classList.toggle('sidebar-minimized')\n }\n\n brandMinimize() {\n document.body.classList.toggle('brand-minimized')\n }\n\n render() {\n return (\n <button\n className=\"sidebar-minimizer\"\n type=\"button\"\n onClick={() => {\n this.sidebarMinimize()\n this.brandMinimize()\n }}\n />\n )\n }\n}\n\nexport default SidebarMinimizer\n","import React, { Component } from 'react'\nimport { NavLink } from 'react-router-dom'\nimport { Badge, Nav, NavItem, NavLink as RsNavLink } from 'reactstrap'\nimport { connect } from 'react-redux'\nimport classNames from 'classnames'\nimport SidebarFooter from './../SidebarFooter/SidebarFooter'\nimport SidebarForm from './../SidebarForm/SidebarForm'\nimport SidebarHeader from './../SidebarHeader/SidebarHeader'\nimport SidebarMinimizer from './../SidebarMinimizer/SidebarMinimizer'\n\nclass Sidebar extends Component {\n handleClick(e) {\n e.preventDefault()\n e.target.parentElement.classList.toggle('open')\n }\n\n activeRoute(routeName, props) {\n // return this.props.location.pathname.indexOf(routeName) > -1 ? 'nav-item nav-dropdown open' : 'nav-item nav-dropdown';\n return props.location.pathname.indexOf(routeName) > -1\n ? 'nav-item nav-dropdown open'\n : 'nav-item nav-dropdown'\n }\n\n render() {\n const props = this.props\n const activeRoute = this.activeRoute\n const handleClick = this.handleClick\n\n // badge addon to NavItem\n const badge = (badge) => {\n if (badge) {\n const classes = classNames(badge.class)\n return (\n <Badge className={classes} color={badge.variant}>\n {badge.text}\n </Badge>\n )\n }\n }\n\n // simple wrapper for nav-title item\n const wrapper = (item) => {\n return item.wrapper && item.wrapper.element\n ? React.createElement(\n item.wrapper.element,\n item.wrapper.attributes,\n item.name\n )\n : item.name\n }\n\n // nav list section title\n const title = (title, key) => {\n const classes = classNames('nav-title', title.class)\n return (\n <li key={key} className={classes}>\n {wrapper(title)}{' '}\n </li>\n )\n }\n\n // nav list divider\n const divider = (divider, key) => {\n const classes = classNames('divider', divider.class)\n return <li key={key} className={classes} />\n }\n\n // nav item with nav link\n const navItem = (item, key) => {\n const classes = {\n item: classNames(item.class),\n link: classNames(\n 'nav-link',\n item.variant ? `nav-link-${item.variant}` : ''\n ),\n icon: classNames(item.icon)\n }\n return navLink(item, key, classes)\n }\n\n // nav link\n const navLink = (item, key, classes) => {\n const url = item.url ? item.url : ''\n return (\n <NavItem key={key} className={classes.item}>\n {isExternal(url) ? (\n <RsNavLink\n href={url}\n className={classes.link}\n {...(item.props || {})}\n >\n <i className={classes.icon} />\n {item.name}\n {badge(item.badge)}\n </RsNavLink>\n ) : (\n <NavLink\n to={url}\n className={classes.link}\n activeClassName=\"active\"\n {...(item.props || {})}\n >\n <i className={classes.icon} />\n {item.name}\n {badge(item.badge)}\n </NavLink>\n )}\n </NavItem>\n )\n }\n\n // nav dropdown\n const navDropdown = (item, key) => {\n return (\n <li key={key} className={activeRoute(item.url, props)}>\n <a\n className=\"nav-link nav-dropdown-toggle\"\n href=\"#\"\n onClick={handleClick.bind(this)}\n >\n <i className={item.icon} />\n {item.name}\n {badge(item.badge)}\n </a>\n <ul className=\"nav-dropdown-items\">{navList(item.children)}</ul>\n </li>\n )\n }\n\n // nav type\n const navType = (item, idx) =>\n item.title\n ? title(item, idx)\n : item.divider\n ? divider(item, idx)\n : item.children\n ? navDropdown(item, idx)\n : navItem(item, idx)\n\n // nav list\n const navList = (items) => {\n return items.map((item, index) => navType(item, index))\n }\n\n const isExternal = (url) => {\n const link = url ? url.substring(0, 4) : ''\n return link === 'http'\n }\n\n // sidebar-nav root\n return (\n <div className=\"sidebar\">\n <SidebarHeader />\n <SidebarForm />\n <nav className=\"sidebar-nav\">\n <Nav>{navList(props.items)}</Nav>\n </nav>\n <SidebarFooter />\n <SidebarMinimizer />\n </div>\n )\n }\n}\n\nconst mapStateToProps = (state) => {\n var appUpdates = state.appStore.updates.length\n var updatesBadge = null\n var serverUpdateBadge = null\n var accessRequestsBadge = null\n\n if (appUpdates > 0) {\n updatesBadge = {\n variant: 'success',\n text: `${appUpdates}`,\n color: 'success'\n }\n }\n\n if (state.accessRequests.length > 0) {\n accessRequestsBadge = {\n variant: 'danger',\n text: `${state.accessRequests.length}`,\n color: 'danger'\n }\n }\n\n if (state.appStore.storeAvailable === false) {\n updatesBadge = {\n variant: 'danger',\n text: 'OFFLINE'\n }\n }\n\n if (state.appStore.serverUpdate) {\n serverUpdateBadge = {\n variant: 'danger',\n text: state.appStore.serverUpdate,\n color: 'danger'\n }\n }\n\n var result = {\n items: [\n {\n name: 'Dashboard',\n url: '/dashboard',\n icon: 'icon-speedometer'\n },\n {\n name: 'Webapps',\n url: '/webapps',\n icon: 'icon-grid'\n },\n {\n name: 'Data Browser',\n url: '/databrowser',\n icon: 'icon-folder'\n }\n ]\n }\n\n if (\n !state.loginStatus.authenticationRequired ||\n state.loginStatus.userLevel === 'admin'\n ) {\n result.items.push.apply(result.items, [\n {\n name: 'Appstore',\n url: '/appstore',\n icon: 'icon-basket',\n badge: updatesBadge\n },\n {\n name: 'Server',\n url: '/serverConfiguration',\n icon: 'icon-settings',\n children: [\n {\n name: 'Settings',\n url: '/serverConfiguration/settings'\n },\n {\n name: 'Data Connections',\n url: '/serverConfiguration/connections/-'\n },\n {\n name: 'Plugin Config',\n url: '/serverConfiguration/plugins/-'\n },\n {\n name: 'Server Logs',\n url: '/serverConfiguration/log'\n },\n {\n name: 'Update',\n url: '/serverConfiguration/update',\n badge: serverUpdateBadge\n },\n {\n name: 'Data Fiddler',\n url: '/serverConfiguration/datafiddler'\n },\n {\n name: 'Backup/Restore',\n url: '/serverConfiguration/backuprestore'\n }\n ]\n }\n ])\n }\n\n if (\n state.loginStatus.authenticationRequired === false ||\n state.loginStatus.userLevel === 'admin'\n ) {\n var security = {\n name: 'Security',\n url: '/security',\n icon: 'icon-shield',\n badge: accessRequestsBadge,\n children: [\n {\n name: 'Settings',\n url: '/security/settings'\n },\n {\n name: 'Users',\n url: '/security/users'\n }\n ]\n }\n if (state.loginStatus.allowDeviceAccessRequests) {\n security.children.push({\n name: 'Devices',\n url: '/security/devices'\n })\n }\n if (\n state.loginStatus.allowNewUserRegistration ||\n state.loginStatus.allowDeviceAccessRequests\n ) {\n security.children.push({\n name: 'Access Requests',\n url: '/security/access/requests',\n badge: accessRequestsBadge\n })\n }\n result.items.push(security)\n }\n\n result.items.push({\n name: 'Documentation',\n url: `${window.location.protocol}//${window.location.host}/documentation`,\n icon: 'icon-book-open',\n props: {\n target: '_blank',\n rel: 'noopener noreferrer'\n }\n })\n\n result.items.push({\n name: 'OpenApi',\n url: `${window.location.protocol}//${window.location.host}/doc/openapi`,\n icon: 'icon-energy',\n props: {\n target: '_blank',\n rel: 'noopener noreferrer'\n }\n })\n\n return result\n}\n\nexport default connect(mapStateToProps)(Sidebar)\n","import React, { Component } from 'react'\n\nclass Aside extends Component {\n render() {\n return <aside className=\"aside-menu\">{/* Aside Menu */}</aside>\n }\n}\n\nexport default Aside\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { Link } from 'react-router-dom'\n\nclass Footer extends Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { name, mmsi, uuid } = this.props.vesselInfo\n return (\n <footer className=\"app-footer\">\n <span>\n <a href=\"https://github.com/SignalK/signalk-server-node/\">\n Signal K Server\n </a>\n </span>\n {typeof this.props.serverSpecification.server !== 'undefined' && (\n <span>\n version {this.props.serverSpecification.server.version}\n </span>\n )}\n <span>\n {' '}\n <a href=\"https://opencollective.com/signalk\">Sponsor Signal K</a>\n </span>\n {typeof this.props.appStore.serverUpdate !== 'undefined' && (\n <span>\n <Link to=\"/serverConfiguration/update\">\n (version {this.props.appStore.serverUpdate} is available)\n </Link>\n </span>\n )}\n {this.props.loginStatus.status === 'loggedIn' && (\n <span className=\"ml-auto\">\n Logged in as {this.props.loginStatus.username}\n </span>\n )}\n - {name || mmsi || uuid}\n </footer>\n )\n }\n}\n\nexport default connect(\n ({ loginStatus, serverSpecification, appStore, vesselInfo }) => ({\n loginStatus,\n serverSpecification,\n appStore,\n vesselInfo\n })\n)(Footer)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport {\n Card,\n CardBody,\n CardHeader,\n Progress,\n Row,\n Col,\n Table\n} from 'reactstrap'\nimport '../../fa-pulse.css'\n\nconst Dashboard = (props) => {\n const {\n deltaRate,\n numberOfAvailablePaths,\n wsClients,\n providerStatistics,\n uptime\n } = props.serverStatistics || {\n deltaRate: 0,\n numberOfAvailablePaths: 0,\n wsClients: 0,\n providerStatistics: {},\n uptime: ''\n }\n const providerStatus = props.providerStatus || []\n const errorCount = providerStatus.filter((s) => s.type === 'error').length\n const uptimeD = Math.floor(uptime / (60 * 60 * 24))\n const uptimeH = Math.floor((uptime % (60 * 60 * 24)) / (60 * 60))\n const uptimeM = Math.floor((uptime % (60 * 60)) / 60)\n let errors = ''\n if (errorCount > 0) {\n errors = `(${errorCount} errors)`\n }\n\n const getLinkType = (providerId) => {\n try {\n return providerStatus.find((item) => item.id === providerId).statusType\n } catch (_) {\n return 'provider'\n }\n }\n\n const inputPulseIconClass = (providerStats) => {\n return (\n 'icon-login' +\n (providerStats.deltaRate > 50\n ? ' text-primary fa-pulse-fast'\n : providerStats.deltaRate > 0\n ? ' text-primary fa-pulse'\n : '')\n )\n }\n\n const outputPulseIconClass = (providerStats) => {\n return (\n 'icon-logout' +\n (providerStats.writeRate > 50\n ? ' text-primary fa-pulse-fast'\n : providerStats.writeRate > 0\n ? ' text-primary fa-pulse'\n : '')\n )\n }\n\n const renderActivity = (providerId, providerStats, linkType) => {\n return (\n <li key={providerId} onClick={() => props.history.push(`/dashboard`)}>\n <i\n className={inputPulseIconClass(providerStats)}\n style={{\n color: providerStats.deltaCount ? '#039' : 'lightblue'\n }}\n />\n <i\n className={outputPulseIconClass(providerStats)}\n style={{\n transform: 'scaleX(-1)',\n color: providerStats.writeCount ? '#039' : 'lightblue'\n }}\n />\n <span className=\"title\">\n {linkType === 'plugin'\n ? pluginNameLink(providerId)\n : providerIdLink(providerId)}\n </span>\n {providerStats.writeRate > 0 && (\n <span className=\"value\">\n {' '}\n {providerStats.writeRate}{' '}\n <span className=\"text-muted small\">{'msg/s'}</span>{' '}\n </span>\n )}\n {providerStats.deltaRate > 0 && providerStats.writeRate > 0 && (\n <span className=\"value\">\n <span className=\"text-muted small\">{','}</span>\n  \n </span>\n )}\n {providerStats.deltaRate > 0 && (\n <span className=\"value\">\n {' '}\n {providerStats.deltaRate}{' '}\n <span className=\"text-muted small\">\n ({((providerStats.deltaRate / deltaRate) * 100).toFixed(0)}\n %)\n </span>{' '}\n <span className=\"text-muted small\">{'deltas/s'}</span>{' '}\n </span>\n )}\n <div className=\"bars\">\n <Progress\n className=\"progress-xs\"\n color=\"warning\"\n value={(providerStats.deltaRate / deltaRate) * 100}\n />\n </div>\n </li>\n )\n }\n\n const renderStatus = (status, statusClass, lastError) => {\n return (\n <tr\n key={status.id}\n onClick={() => {\n props.history.push(\n '/serverConfiguration/' +\n (status.statusType === 'plugin' ? 'plugins/' : 'connections/') +\n status.id\n )\n }}\n >\n <td>\n {status.statusType === 'plugin'\n ? pluginNameLink(status.id)\n : providerIdLink(status.id)}\n </td>\n <td>\n <p className=\"text-danger\">{lastError}</p>\n </td>\n <td>\n <p className={statusClass}>\n {(status.message || '').substring(0, 80)}\n {status.message.length > 80 ? '...' : ''}\n </p>\n </td>\n </tr>\n )\n }\n\n return (\n <div className=\"animated fadeIn\">\n {props.websocketStatus === 'open' && (\n <div>\n <Card>\n <CardHeader>Stats</CardHeader>\n <CardBody>\n <Row>\n <Col xs=\"12\" md=\"6\">\n <div className=\"callout callout-primary\">\n <small className=\"text-muted\">\n Total server Signal K throughput (deltas/second)\n </small>\n <br />\n <strong className=\"h4\">{deltaRate.toFixed(1)}</strong>\n </div>\n <div className=\"callout callout-primary\">\n <small className=\"text-muted\">\n Number of Signal K Paths\n </small>\n <br />\n <strong className=\"h4\">{numberOfAvailablePaths}</strong>\n </div>\n <div className=\"callout callout-primary\">\n <small className=\"text-muted\">\n Number of WebSocket Clients\n </small>\n <br />\n <strong className=\"h4\">{wsClients}</strong>\n </div>\n <div className=\"callout callout-primary\">\n <small className=\"text-muted\">Uptime</small>\n <br />\n <strong className=\"h5\">\n {uptimeD} days, {uptimeH} hours, {uptimeM} minutes\n </strong>\n </div>\n </Col>\n <Col xs=\"12\" md=\"6\">\n <div className=\"text-muted\" style={{ fontSize: '1rem' }}>\n Connections activity\n </div>\n <ul className=\"horizontal-bars type-2\">\n {Object.keys(providerStatistics || {})\n .sort()\n .map((providerId) => {\n if (getLinkType(providerId) === 'provider') {\n return renderActivity(\n providerId,\n providerStatistics[providerId],\n 'provider'\n )\n }\n })}\n </ul>\n <br></br>\n <div className=\"text-muted\" style={{ fontSize: '1rem' }}>\n {Object.keys(providerStatistics || {}).some(\n (providerId) => getLinkType(providerId) === 'plugin'\n )\n ? 'Plugins activity'\n : null}\n </div>\n <ul className=\"horizontal-bars type-2\">\n {Object.keys(providerStatistics || {})\n .sort()\n .map((providerId) => {\n if (getLinkType(providerId) === 'plugin') {\n return renderActivity(\n providerId,\n providerStatistics[providerId],\n 'plugin'\n )\n }\n })}\n </ul>\n </Col>\n </Row>\n </CardBody>\n </Card>\n\n <Card>\n <CardHeader>\n Connection & Plugin Status <p className=\"text-danger\">{errors}</p>\n </CardHeader>\n <CardBody>\n <Row>\n <Col xs=\"12\" md=\"12\">\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>Id</th>\n <th>Last Error</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n {providerStatus.map((status) => {\n const statusClasses = {\n status: 'text-success',\n warning: 'text-warning',\n error: 'text-danger'\n }\n const statusClass = statusClasses[status.type]\n const lastError =\n status.lastError &&\n status.lastError !== status.message\n ? status.lastErrorTimeStamp +\n ': ' +\n status.lastError\n : ''\n return renderStatus(status, statusClass, lastError)\n })}\n </tbody>\n </Table>\n </Col>\n </Row>\n </CardBody>\n </Card>\n </div>\n )}\n\n {props.websocketStatus === 'closed' && (\n <Card className=\"border-warning\">\n <CardHeader>Not connected to the server</CardHeader>\n </Card>\n )}\n </div>\n )\n}\n\nfunction pluginNameLink(id) {\n return <a href={'#/serverConfiguration/plugins/' + id}>{id}</a>\n}\n\nfunction providerIdLink(id) {\n if (id === 'defaults') {\n return <a href={'#/serverConfiguration/settings'}>{id}</a>\n } else if (id.startsWith('ws.')) {\n return <a href={'#/security/devices'}>{id}</a>\n } else {\n return <a href={'#/serverConfiguration/connections/' + id}>{id}</a>\n }\n}\n\nexport default connect(\n ({ serverStatistics, websocketStatus, providerStatus }) => ({\n serverStatistics,\n websocketStatus,\n providerStatus\n })\n)(Dashboard)\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./fa-pulse.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react'\n\nexport const toLazyDynamicComponent = (moduleName, component) =>\n React.lazy(\n () =>\n new Promise((resolve, reject) => {\n const container = window[toSafeModuleId(moduleName)]\n if (container === undefined) {\n console.error(`Could not load module ${moduleName}`)\n resolve(import('./loadingerror'))\n return\n }\n // eslint-disable-next-line no-undef\n container.init(__webpack_share_scopes__.default)\n try {\n const module = container.get(component)\n module.then((factory) => {\n resolve(factory())\n })\n } catch (ex) {\n console.error(moduleName)\n reject(ex)\n }\n })\n )\n\nexport const toSafeModuleId = (moduleName) => moduleName.replace(/[-@/]/g, '_')\n\nexport const APP_PANEL = './AppPanel'\nexport const ADDON_PANEL = './AddonPanel'\nexport const PLUGIN_CONFIG_PANEL = './PluginConfigurationPanel'\n","import React, { Component } from 'react'\nimport {\n Form,\n Container,\n Row,\n Col,\n CardGroup,\n Card,\n CardBody,\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText\n} from 'reactstrap'\nimport { connect } from 'react-redux'\nimport { enableSecurity, fetchLoginStatus } from '../../actions'\nimport Login from './Login'\n\nclass EnableSecurity extends Component {\n constructor(props) {\n super(props)\n this.state = {\n enabling: false,\n errorMessage: null\n }\n this.handleInputChange = this.handleInputChange.bind(this)\n this.handleInputKeyUp = this.handleInputKeyUp.bind(this)\n this.handleClick = this.handleClick.bind(this)\n }\n\n handleClick() {\n const { dispatch } = this.props\n this.setState({ enabling: true })\n enableSecurity(\n dispatch,\n this.state.username,\n this.state.password,\n (error) => {\n fetchLoginStatus(dispatch)\n this.setState({\n enabling: false,\n errorMessage: error\n })\n }\n )\n }\n\n handleInputChange(event) {\n this.setState({ [event.target.name]: event.target.value })\n }\n handleInputKeyUp(event) {\n if (event.key === 'Enter') {\n this.handleClick()\n }\n }\n\n render() {\n return (\n <div>\n {this.props.loginStatus.authenticationRequired &&\n !this.props.loginStatus.noUsers && <Login />}\n {(this.props.loginStatus.authenticationRequired === false ||\n this.props.loginStatus.noUsers === true) && (\n <Container>\n <Row className=\"justify-content-center\">\n <Col md=\"8\">\n <CardGroup>\n <Card className=\"p-4\">\n <CardBody>\n {this.props.loginStatus.securityWasEnabled &&\n this.props.loginStatus.authenticationRequired ===\n false && (\n <p className=\"text-danger\">\n Security has been enabled, please restart the server\n </p>\n )}\n {!this.props.loginStatus.securityWasEnabled && (\n <Form>\n <h1>Enable Security</h1>\n <p className=\"text-muted\">Create an admin account</p>\n <InputGroup className=\"mb-3\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-user\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n type=\"text\"\n name=\"username\"\n placeholder=\"Username\"\n onChange={this.handleInputChange}\n onKeyUp={this.handleInputKeyUp}\n />\n </InputGroup>\n <InputGroup className=\"mb-4\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-lock\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n type=\"password\"\n name=\"password\"\n placeholder=\"Password\"\n onChange={this.handleInputChange}\n onKeyUp={this.handleInputKeyUp}\n />\n </InputGroup>\n <Row>\n <Col xs=\"6\">\n <Button\n onClick={this.handleClick}\n color=\"primary\"\n className=\"px-4\"\n >\n <i\n className={\n this.state.enabling\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-lock'\n }\n />{' '}\n Enable\n </Button>\n </Col>\n <Col xs=\"6\" className=\"text-right\">\n <p className=\"text-danger\">\n {this.state.errorMessage}\n </p>\n </Col>\n </Row>\n </Form>\n )}\n </CardBody>\n </Card>\n </CardGroup>\n </Col>\n </Row>\n </Container>\n )}\n </div>\n )\n }\n}\n\nexport default connect(({ loginStatus }) => ({ loginStatus }))(EnableSecurity)\n","import React, { Component } from 'react'\nimport {\n Container,\n Row,\n Col,\n CardGroup,\n Card,\n CardBody,\n Button,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText,\n Label\n} from 'reactstrap'\nimport { Link } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { login } from '../../actions'\nimport Dashboard from '../Dashboard/Dashboard'\nimport EnableSecurity from './EnableSecurity'\n\nclass Login extends Component {\n constructor(props) {\n super(props)\n this.state = {\n loggingIn: false,\n loginErrorMessage: null\n }\n this.handleInputChange = this.handleInputChange.bind(this)\n this.handleInputKeyUp = this.handleInputKeyUp.bind(this)\n this.handleClick = this.handleClick.bind(this)\n }\n\n handleClick() {\n this.setState({ loggingIn: true })\n const { dispatch } = this.props\n login(\n dispatch,\n this.state.username,\n this.state.password,\n this.state.rememberMe,\n (error) => {\n this.setState({\n loggingIn: false,\n loginErrorMessage: error\n })\n }\n )\n }\n\n handleInputChange(event) {\n var value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.setState({ [event.target.name]: value })\n }\n\n handleInputKeyUp(event) {\n if (event.key === 'Enter') {\n this.handleClick()\n }\n }\n\n render() {\n if (\n this.props.loginStatus.status === 'notLoggedIn' &&\n this.props.loginStatus.noUsers === true\n ) {\n return <EnableSecurity />\n } else {\n return (\n <div>\n {this.props.loginStatus.status === 'notLoggedIn' && (\n <Container>\n <Row className=\"justify-content-center\">\n <Col md=\"8\">\n <CardGroup>\n <Card className=\"p-4\">\n <CardBody>\n <h1>Login</h1>\n <p className=\"text-muted\">Sign In to your account</p>\n <InputGroup className=\"mb-3\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-user\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n type=\"text\"\n name=\"username\"\n placeholder=\"Username\"\n onChange={this.handleInputChange}\n onKeyUp={this.handleInputKeyUp}\n />\n </InputGroup>\n <InputGroup className=\"mb-4\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-lock\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n type=\"password\"\n name=\"password\"\n placeholder=\"Password\"\n onChange={this.handleInputChange}\n onKeyUp={this.handleInputKeyUp}\n />\n </InputGroup>\n <Row>\n <Col xs=\"8\">\n <InputGroup className=\"mb-4\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"rememberMe\"\n className=\"switch-input\"\n onChange={this.handleInputChange}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n Remember Me\n </InputGroup>\n </Col>\n </Row>\n <Row>\n <Col xs=\"6\">\n <Button\n onClick={this.handleClick}\n color=\"primary\"\n className=\"px-4\"\n >\n <i\n className={\n this.state.loggingIn\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-lock'\n }\n />{' '}\n Login\n </Button>\n </Col>\n <Col xs=\"6\" className=\"text-right\">\n {this.state.loginErrorMessage && (\n <p className=\"text-danger\">\n {this.state.loginErrorMessage}\n </p>\n )}\n {!this.state.loginErrorMessage &&\n this.props.loginStatus\n .allowNewUserRegistration && (\n <div>\n <Link to=\"/register\">\n <Button color=\"link\" className=\"px-0\">\n Sign up\n </Button>\n </Link>\n </div>\n )}\n </Col>\n </Row>\n </CardBody>\n </Card>\n </CardGroup>\n </Col>\n </Row>\n </Container>\n )}\n {this.props.loginStatus.status === 'loggedIn' && <Dashboard />}\n </div>\n )\n }\n }\n}\n\nexport default connect(({ loginStatus }) => ({ loginStatus }))(Login)\n","import React, { Component, Suspense } from 'react'\nimport { connect } from 'react-redux'\nimport { toLazyDynamicComponent, APP_PANEL } from './dynamicutilities'\nimport Login from '../../views/security/Login'\nimport ReconnectingWebSocket from 'reconnecting-websocket'\n\nconst wsProto = window.location.protocol === 'https:' ? 'wss' : 'ws'\n\nclass Embedded extends Component {\n constructor(props) {\n super(props)\n this.state = {\n component: toLazyDynamicComponent(\n this.props.match.params.moduleId,\n APP_PANEL\n )\n }\n this.websockets = []\n\n this.adminUI = {\n hideSideBar: () => {\n window.dispatchEvent(new Event('sidebar:hide'))\n },\n getApplicationUserData: (appDataVersion, path = '') =>\n fetch(\n `/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${appDataVersion}${path}`,\n { credentials: 'include' }\n )\n .then((r) => {\n if (r.status !== 200) {\n throw new Error(r)\n }\n return r\n })\n .then((r) => r.json()),\n setApplicationUserData: (appDataVersion, data = {}, path = '') =>\n fetch(\n `/signalk/v1/applicationData/user/${this.props.match.params.moduleId}/${appDataVersion}${path}`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data),\n credentials: 'include'\n }\n ).then((r) => {\n if (r.status !== 200) {\n throw new Error(r)\n }\n return r\n }),\n openWebsocket: (params) => {\n const knownParams = ['subscribe', 'sendCachedValues', 'events']\n const queryParam = knownParams\n .map((p, i) => [i, params[p]])\n .filter((x) => x[1] !== undefined)\n .map(([i, v]) => `${knownParams[i]}=${v}`)\n .join('&')\n const ws = new ReconnectingWebSocket(\n `${wsProto}://${window.location.host}/signalk/v1/stream?${queryParam}`\n )\n this.websockets.push(ws)\n return ws\n },\n get: ({ context, path }) => {\n const cParts = context.split('.')\n return fetch(\n `/signalk/v1/api/${cParts[0]}/${cParts.slice(1).join('.')}/${path}`,\n {\n credentials: 'include'\n }\n )\n },\n Login\n }\n }\n\n componentWillUnmount() {\n this.websockets.forEach((ws) => {\n try {\n ws.close()\n } catch (e) {\n console.error(e)\n }\n })\n }\n\n render() {\n return (\n <div\n style={{ backgroundColor: 'aliceblue', height: 'calc(100vh - 105px)' }}\n >\n <Suspense fallback=\"Loading...\">\n {React.createElement(this.state.component, {\n ...this.props,\n adminUI: this.adminUI\n })}\n </Suspense>\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ loginStatus }) => ({ loginStatus })\n\nexport default connect(mapStateToProps)(Embedded)\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { Card, CardBody } from 'reactstrap'\nimport classNames from 'classnames'\nimport { toSafeModuleId } from './dynamicutilities'\n\nconst propTypes = {\n webAppInfo: PropTypes.shape({\n name: PropTypes.string.isRequired,\n description: PropTypes.string,\n signalk: PropTypes.shape({\n displayName: PropTypes.string,\n appIcon: PropTypes.string\n })\n }).isRequired,\n children: PropTypes.node\n}\n\nexport function urlToWebapp(webAppInfo) {\n return webAppInfo.keywords.includes('signalk-embeddable-webapp')\n ? `/admin/#/e/${toSafeModuleId(webAppInfo.name)}`\n : `/${webAppInfo.name}`\n}\n\nclass Webapp extends Component {\n render() {\n const { webAppInfo, ...attributes } = this.props\n\n const padding = { card: 'p-3', icon: 'p-3', lead: 'mt-2' }\n\n const card = {\n style: 'clearfix',\n color: 'primary',\n icon: `fa ${webAppInfo?.signalk?.displayName ? '' : 'icon-grid'}`\n }\n\n const lead = { style: 'h5 mb-0', color: card.color, classes: '' }\n lead.classes = classNames(\n lead.style,\n 'text-' + card.color,\n padding.lead,\n 'text-capitalize'\n )\n const header = webAppInfo?.signalk?.displayName || webAppInfo.name\n const url = urlToWebapp(webAppInfo)\n\n const blockIcon = function (icon, appIcon = null) {\n const classes = classNames(\n icon,\n 'bg-primary',\n padding.icon,\n 'font-2xl mr-3 float-left'\n )\n const style = {\n backgroundSize: 'cover',\n backgroundImage: appIcon\n ? `url(/${webAppInfo.name}/${appIcon})`\n : 'unset'\n }\n if (appIcon) {\n style.width = style.height = '72px'\n }\n return <i className={classes} style={style} />\n }\n\n return (\n <a href={url}>\n <Card>\n <CardBody className={card.classes} {...attributes}>\n {blockIcon(card.icon, webAppInfo?.signalk?.appIcon)}\n <div className={lead.classes}>{header}</div>\n <div className=\"text-muted font-xs\">{webAppInfo.description}</div>\n </CardBody>\n </Card>\n </a>\n )\n }\n}\n\nWebapp.propTypes = propTypes\n\nexport default Webapp\n","import React, { Component, Suspense } from 'react'\nimport { connect } from 'react-redux'\nimport { Card, CardBody, CardHeader, Col } from 'reactstrap'\nimport { ADDON_PANEL, toLazyDynamicComponent } from './dynamicutilities'\n\nimport Webapp from './Webapp'\n\nclass Webapps extends Component {\n constructor(props) {\n super(props)\n this.state = {\n addonComponents: []\n }\n }\n\n setAddonComponents() {\n this.setState({\n addonComponents: this.props.addons.map((md) =>\n toLazyDynamicComponent(md.name, ADDON_PANEL)\n )\n })\n }\n\n componentDidMount() {\n this.setAddonComponents()\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.addons !== prevProps.addons) {\n this.setAddonComponents()\n }\n }\n\n render() {\n return (\n <div className=\"animated fadeIn\">\n <Card>\n <CardHeader>Webapps</CardHeader>\n <CardBody>\n <div className=\"row\">\n {this.props.webapps\n .filter(\n (webAppInfo) => webAppInfo.name !== '@signalk/server-admin-ui'\n )\n .map((webAppInfo) => {\n return (\n <Col xs=\"12\" md=\"12\" lg=\"6\" xl=\"4\" key={webAppInfo.name}>\n <Webapp key={webAppInfo.name} webAppInfo={webAppInfo} />\n </Col>\n )\n })}\n </div>\n </CardBody>\n </Card>\n\n <Card>\n <CardHeader>Addons</CardHeader>\n <CardBody>\n {this.state.addonComponents.map((c, i) => (\n <Suspense key={i} fallback=\"Loading...\">\n {React.createElement(c, { ...this.props })}\n </Suspense>\n ))}\n </CardBody>\n </Card>\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ webapps, addons }) => ({ webapps, addons })\n\nexport default connect(mapStateToProps)(Webapps)\n","import {\n faPencil,\n faPlusSquare,\n faSave,\n faSquarePlus,\n faTrashCan\n} from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { useState } from 'react'\nimport { connect } from 'react-redux'\nimport { Col, Form, FormGroup, FormText, Input, Label, Row } from 'reactstrap'\n\nconst UnitSelect = ({ disabled, value, setValue }) => (\n <Input\n disabled={disabled}\n type=\"select\"\n value={value}\n onChange={(e) => setValue(e.target.value)}\n >\n {Object.entries(UNITS).map(([unit, description]) => (\n <option key={unit} value={unit}>\n {unit}:{description}\n </option>\n ))}\n </Input>\n)\n\nconst Text = ({ disabled, setValue, value }) => (\n <Input\n disabled={disabled}\n type=\"text\"\n onChange={(e) => setValue(e.target.value)}\n value={value}\n />\n)\nconst NumberValue = ({ disabled, setValue, value }) => (\n <Input\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n try {\n setValue(Number(e.target.value))\n } catch (_) {\n setValue('')\n }\n }}\n value={value}\n />\n)\n\nconst MethodSelect = ({ setValue, value }) => {\n if (!Array.isArray(value)) {\n setValue([])\n return null\n }\n return (\n <>\n {['sound', 'visual'].map((method) => (\n <Label key={method} className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n className=\"switch-input\"\n onChange={() => {\n if (value.indexOf(method) < 0) {\n value.push(method)\n setValue(value)\n } else {\n value.splice(value.indexOf(method, 1))\n setValue(value)\n }\n }}\n checked={value.indexOf(method) >= 0}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n {method}\n </Label>\n ))}\n </>\n )\n}\n\nconst DISPLAYTYPES = ['linear', 'logarithmic', 'squareroot', 'power']\n\nconst DisplaySelect = ({ disabled, setValue, value }) => {\n const { lower, upper, type, power } = value\n return (\n <>\n <Input\n disabled={disabled}\n type=\"select\"\n value={type}\n onChange={(e) =>\n setValue({\n ...value,\n type: e.target.value\n })\n }\n >\n {DISPLAYTYPES.map((type) => (\n <option key={type} value={type}>\n {type}\n </option>\n ))}\n </Input>\n\n <Input\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n try {\n setValue({\n ...value,\n lower: Number(e.target.value)\n })\n } catch (_) {\n setValue({\n ...value,\n lower: null\n })\n }\n }}\n value={lower}\n />\n\n <Input\n disabled={disabled}\n type=\"number\"\n onChange={(e) => {\n try {\n setValue({\n ...value,\n upper: Number(e.target.value)\n })\n } catch (_) {\n setValue({\n ...value,\n upper: null\n })\n }\n }}\n value={upper}\n />\n <Input\n disabled={disabled || type !== 'power'}\n type=\"number\"\n onChange={(e) => {\n try {\n setValue({\n ...value,\n power: Number(e.target.value)\n })\n } catch (_) {\n setValue({\n ...value,\n upper: null\n })\n }\n }}\n value={power}\n />\n </>\n )\n}\n\nconst METAFIELDRENDERERS = {\n units: (props) => (\n <MetaFormRow {...props} renderValue={UnitSelect}></MetaFormRow>\n ),\n description: (props) => (\n <MetaFormRow {...props} renderValue={Text}></MetaFormRow>\n ),\n displayName: (props) => (\n <MetaFormRow {...props} renderValue={Text}></MetaFormRow>\n ),\n longName: (props) => (\n <MetaFormRow {...props} renderValue={Text}></MetaFormRow>\n ),\n shortName: (props) => (\n <MetaFormRow {...props} renderValue={Text}></MetaFormRow>\n ),\n timeout: (props) => (\n <MetaFormRow {...props} renderValue={NumberValue}></MetaFormRow>\n ),\n displayScale: (props) => (\n <MetaFormRow {...props} renderValue={DisplaySelect}></MetaFormRow>\n ),\n zones: () => <></>, // not used\n normalMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n ),\n nominalMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n ),\n alertMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n ),\n warnMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n ),\n alarmMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n ),\n emergencyMethod: (props) => (\n <MetaFormRow {...props} renderValue={MethodSelect}></MetaFormRow>\n )\n}\nconst METAFIELDS = [\n 'units',\n 'description',\n 'displayName',\n 'longName',\n 'shortName',\n 'timeout',\n 'displayScale',\n 'zones',\n 'normalMethod',\n 'nominalMethod',\n 'alertMethod',\n 'warnMethod',\n 'alarmMethod',\n 'emergencyMethod'\n]\n\nconst UNITS = {\n A: 'Ampere',\n C: 'Coulomb',\n Hz: 'Hertz',\n 'ISO-8601 (UTC)': 'Timestamp',\n J: 'Joule',\n K: 'Kelvin',\n Pa: 'Pascal',\n V: 'Volt',\n W: 'Watt',\n deg: 'Degree',\n kg: 'Kilogram',\n m: 'Meter',\n 'm/s': 'Meters per second',\n m2: 'Square meter',\n m3: 'Cubic meter',\n 'm3/s': 'Cubic meters per second',\n rad: 'Radian',\n 'rad/s': 'Radians per second',\n ratio: 'Ratio',\n s: 'Second',\n bool: 'Boolean'\n}\n\nconst saveMeta = (path, meta) => {\n fetch(`/signalk/v1/api/vessels/self/${path.replaceAll('.', '/')}/meta`, {\n method: 'PUT',\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ value: meta })\n })\n}\n\nfunction Meta({ meta, path, loginStatus }) {\n const [isEditing, setIsEditing] = useState(false)\n const [localMeta, setLocalMeta] = useState(meta)\n\n // Check if user can edit metadata\n const canEditMetadata =\n !loginStatus.authenticationRequired ||\n (loginStatus.status === 'loggedIn' && loginStatus.userLevel === 'admin')\n\n let metaValues = METAFIELDS.reduce((acc, key) => {\n if (localMeta[key] !== undefined) {\n acc.push({ key, value: localMeta[key] })\n }\n return acc\n }, [])\n Object.keys(localMeta).reduce((acc, key) => {\n if (METAFIELDS.indexOf(key) < 0) {\n acc.push({ key, value: localMeta[key] })\n }\n return acc\n }, metaValues)\n const extraValues = clone(localMeta)\n for (const prop in extraValues) {\n if (METAFIELDS.indexOf(prop) < 0) {\n delete extraValues[prop]\n }\n }\n\n const zonesMetaValue = metaValues.find(({ key }) => key === 'zones')\n const zones = zonesMetaValue ? zonesMetaValue.value : []\n return (\n <>\n {!isEditing && canEditMetadata && (\n <FontAwesomeIcon icon={faPencil} onClick={() => setIsEditing(true)} />\n )}\n {isEditing && (\n <FontAwesomeIcon\n icon={faSave}\n onClick={() => {\n saveMeta(path, localMeta)\n setIsEditing(false)\n }}\n />\n )}{' '}\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n {metaValues\n .filter(({ key }) => key !== 'zones')\n .map(({ key, value }) => {\n const renderer = METAFIELDRENDERERS[key]\n if (renderer) {\n const props = {\n _key: key,\n value,\n disabled: !isEditing,\n setValue: (metaFieldValue) =>\n setLocalMeta({ ...localMeta, ...{ [key]: metaFieldValue } }),\n setKey: (metaFieldKey) => {\n const copy = { ...localMeta }\n copy[metaFieldKey] = localMeta[key]\n delete copy[key]\n setLocalMeta(copy)\n },\n deleteKey: () => {\n const copy = { ...localMeta }\n delete copy[key]\n setLocalMeta(copy)\n }\n }\n\n return renderer(props)\n } else {\n return (\n <UnknownMetaFormRow key={key} metaKey={key} value={value} />\n )\n }\n })}\n {isEditing && (\n <FontAwesomeIcon\n icon={faSquarePlus}\n onClick={() => {\n const copy = { ...localMeta }\n const firstNewMetaFieldKey = METAFIELDS.find(\n (metaFieldName) => localMeta[metaFieldName] === undefined\n )\n copy[firstNewMetaFieldKey] = ''\n setLocalMeta(copy)\n }}\n />\n )}\n <Zones\n zones={zones !== undefined && zones !== null ? zones : []}\n isEditing={isEditing}\n setZones={(zones) => setLocalMeta({ ...localMeta, zones })}\n ></Zones>\n </Form>\n </>\n )\n}\n\nconst MetaFormRow = (props) => {\n const { _key, renderValue, disabled, setKey, deleteKey } = props\n const V = renderValue\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"2\" className={'col-form-label'}>\n <Input\n disabled={disabled}\n type=\"select\"\n value={_key}\n onChange={(e) => setKey(e.target.value)}\n >\n {METAFIELDS.filter((fieldName) => fieldName !== 'zones').map(\n (fieldName, i) => (\n <option key={i} value={fieldName}>\n {fieldName}\n </option>\n )\n )}\n </Input>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <V {...props}></V>\n </Col>\n <Col>\n {!disabled && <FontAwesomeIcon icon={faTrashCan} onClick={deleteKey} />}\n </Col>\n </FormGroup>\n )\n}\n\nconst UnknownMetaFormRow = ({ metaKey, value }) => {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"2\" className={'col-form-label'}>\n {metaKey}\n </Col>\n <Col xs=\"12\" md=\"4\">\n <pre>{JSON.stringify(value, null, 2)}</pre>\n </Col>\n </FormGroup>\n )\n}\n\nconst STATES = ['nominal', 'alert', 'warn', 'alarm', 'emergency']\nconst Zone = ({ zone, isEditing, showHint, setZone, deleteZone }) => {\n const { state, lower, upper, message } = zone\n return (\n <FormGroup row>\n <Col xs=\"2\" md=\"2\">\n {showHint && <FormText color=\"muted\">Lower</FormText>}\n <Input\n disabled={!isEditing}\n type=\"number\"\n onChange={(e) => setZone({ ...zone, lower: Number(e.target.value) })}\n value={lower}\n />\n </Col>\n <Col xs=\"2\" md=\"2\">\n {showHint && <FormText color=\"muted\">Upper</FormText>}\n <Input\n disabled={!isEditing}\n type=\"number\"\n name=\"search\"\n onChange={(e) => setZone({ ...zone, upper: Number(e.target.value) })}\n value={upper}\n />\n </Col>\n <Col xs=\"12\" md=\"2\">\n {showHint && <FormText color=\"muted\">State</FormText>}\n <Input\n disabled={!isEditing}\n type=\"select\"\n value={state}\n name=\"options.type\"\n onChange={(e) => setZone({ ...zone, state: e.target.value })}\n >\n {STATES.map((state, i) => (\n <option key={i} value={state}>\n {state}\n </option>\n ))}\n </Input>\n </Col>\n <Col xs=\"3\" md=\"3\">\n {showHint && <FormText color=\"muted\">Message</FormText>}\n <Input\n disabled={!isEditing}\n type=\"text\"\n name=\"search\"\n onChange={(e) => setZone({ ...zone, message: e.target.value })}\n value={message}\n />\n </Col>\n <Col xs=\"2\" md=\"2\">\n {isEditing && (\n <>\n {showHint && <FormText color=\"muted\">Remove</FormText>}\n <FontAwesomeIcon icon={faTrashCan} onClick={deleteZone} />\n </>\n )}\n </Col>\n </FormGroup>\n )\n}\nconst Zones = ({ zones, isEditing, setZones }) => (\n <Row>\n <Col md=\"2\">Zones</Col>\n <Col md=\"10\">\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n {(zones === undefined || zones.length === 0) &&\n !isEditing &&\n 'No zones defined'}\n {zones.map((zone, i) => (\n <Zone\n key={i}\n zone={zone}\n isEditing={isEditing}\n showHint={i === 0}\n setZone={(zone) => {\n zones[i] = zone\n setZones([...zones])\n }}\n deleteZone={() => {\n zones.splice(i, 1)\n setZones(zones)\n }}\n ></Zone>\n ))}\n </Form>\n {isEditing && (\n <FontAwesomeIcon\n icon={faPlusSquare}\n onClick={() =>\n setZones([\n ...zones,\n {\n upper: 1,\n lower: 0,\n state: STATES[0],\n message: ''\n }\n ])\n }\n />\n )}\n </Col>\n </Row>\n)\n\nconst clone = (o) => JSON.parse(JSON.stringify(o))\n\nexport default connect(({ loginStatus }) => ({ loginStatus }))(Meta)\n","import React from 'react'\nimport { Suspense } from 'react'\nimport { toLazyDynamicComponent } from '../Webapps/dynamicutilities'\nimport ReactHtmlParser from 'react-html-parser'\nimport {\n faEye,\n faEyeSlash,\n faBell,\n faBellSlash\n} from '@fortawesome/free-solid-svg-icons'\n\nimport '../../blinking-circle.css'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nfunction radiansToDegrees(radians) {\n return radians * (180 / Math.PI)\n}\nconst SimpleHTMLRenderer = ({ value, html }) => {\n const h = html.replaceAll('{{value}}', value)\n return <div>{ReactHtmlParser(h)}</div>\n}\n\nconst DirectionRenderer = ({ value, size = '1em' }) => {\n const traditionalCompassPoints = [\n 'N',\n 'N by E',\n 'NNE',\n 'NE by N',\n 'NE',\n 'NE by E',\n 'ENE',\n 'E by N',\n 'E',\n 'E by S',\n 'ESE',\n 'SE by E',\n 'SE',\n 'SE by S',\n 'SSE',\n 'S by E',\n 'S',\n 'S by W',\n 'SSW',\n 'SW by S',\n 'SW',\n 'SW by W',\n 'WSW',\n 'W by S',\n 'W',\n 'W by N',\n 'WNW',\n 'NW by W',\n 'NW',\n 'NW by N',\n 'NNW',\n 'N by W'\n ]\n\n const directionDegrees = radiansToDegrees(value)\n const compassPoint =\n traditionalCompassPoints[\n Math.round((((directionDegrees % 360) + 360) % 360) / 11.25) % 32\n ]\n const arrowStyle = {\n fontSize: size,\n fontWeight: 'bold',\n transition: 'transform 0.3s ease-out',\n\n transform: `rotate(${directionDegrees}deg) translateY(-2px)`,\n display: 'inline-block' // Required for rotation to work reliably\n }\n\n return (\n <div\n className=\"text-primary\"\n style={{\n display: 'inline-flex'\n }}\n >\n <span\n style={arrowStyle}\n aria-label={`Wind direction: ${directionDegrees} degrees`}\n >\n ↑\n </span>\n\n <span style={{ marginLeft: '.5em' }}>\n {directionDegrees.toFixed(2)}° {compassPoint}\n </span>\n </div>\n )\n}\nconst AttitudeRenderer = ({ value, size = '2em' }) => {\n const pitch = radiansToDegrees(value.pitch || 0)\n const roll = radiansToDegrees(value.roll || 0)\n const horizonHeight = ((pitch + 90) / 180) * 100 + '%'\n const attitudeText = `pitch: ${pitch.toFixed(1)}° roll: ${roll.toFixed(1)}°`\n return (\n <div\n className=\"text-primary\"\n style={{\n display: 'inline-flex'\n }}\n >\n <div\n style={{\n width: size,\n height: size,\n border: '2px solid black',\n borderRadius: '50%',\n overflow: 'hidden',\n position: 'relative'\n }}\n >\n <div\n style={{\n width: '100%',\n height: '100%',\n backgroundColor: 'skyblue',\n position: 'absolute',\n transformOrigin: 'center',\n transform: `rotateZ(${roll}deg)`\n }}\n >\n <div\n style={{\n width: '100%',\n height: horizonHeight,\n backgroundColor: 'brown',\n position: 'absolute',\n bottom: 0\n }}\n ></div>\n </div>\n </div>\n <span className=\"text-primary\" style={{ marginLeft: '.5em' }}>\n {attitudeText}\n </span>\n </div>\n )\n}\n\nconst NotificationRenderer = ({ value }) => {\n const { message, state, method = [] } = value\n\n const severityColor =\n {\n info: 'green',\n normal: 'green',\n nominal: 'green',\n warn: 'yellow',\n alert: 'orange',\n alarm: 'red',\n emergency: 'darkred'\n }[state] || 'gray'\n\n const circleStyle = {\n width: '1em',\n height: '1em',\n borderRadius: '50%',\n backgroundColor: severityColor,\n display: 'inline-block',\n marginLeft: '.5em'\n }\n return (\n <div className=\"d-flex justify-content-between\">\n <div className=\"d-flex\" style={{ verticalAlign: 'middle' }}>\n {state === 'emergency' ? (\n <span className=\"blinking-circle\"></span>\n ) : (\n <span style={circleStyle}></span>\n )}\n <span className=\"d-flex\" style={{ marginLeft: '.5em' }}>\n {state ? state.toUpperCase() : 'undefined' + ': ' + message}\n </span>\n </div>\n <div className=\"d-flex\" style={{ gap: '.5em' }}>\n <FontAwesomeIcon\n icon={method.includes('visual') ? faEye : faEyeSlash}\n />\n <FontAwesomeIcon\n icon={method.includes('visual') ? faBell : faBellSlash}\n />\n </div>\n </div>\n )\n}\nconst LargeArrayRenderer = ({ value }) => {\n if (!Array.isArray(value) || value.length <= 1) {\n return <span className=\"text-primary\">{JSON.stringify(value)}</span>\n }\n return (\n <div className=\"text-primary\">\n <details>\n <summary>\n {JSON.stringify(value[0])} 1 of {value.length}\n </summary>\n {JSON.stringify(value)}\n </details>\n </div>\n )\n}\n\nconst MeterRenderer = ({\n value,\n min = 0,\n max = 1,\n low = 0.5,\n high = 1.01,\n optimum = 1,\n pct = true,\n precision = 2\n}) => {\n const txt = (value * (pct ? 100 : 1)).toFixed(precision) + (pct ? '%' : '')\n\n return (\n <div className=\"text-primary\">\n <meter\n value={value}\n min={min}\n max={max}\n low={low}\n high={high}\n optimum={optimum}\n >\n {value}%\n </meter>\n <span\n className=\"text-primary\"\n style={{ verticalAlign: 'middle', marginLeft: '.5em' }}\n >\n {' '}\n {txt}\n </span>\n </div>\n )\n}\n\nconst PositionRenderer = ({ value }) => {\n if (!value || typeof value !== 'object') {\n return <span className=\"text-primary\">{JSON.stringify(value)}</span>\n }\n\n const { longitude, latitude } = value\n\n if (typeof longitude !== 'number' || typeof latitude !== 'number') {\n return <span className=\"text-primary\">{JSON.stringify(value)}</span>\n }\n\n return (\n <span className=\"text-primary\">\n longitude: {longitude}, latitude: {latitude}\n </span>\n )\n}\n\nconst SatellitesInViewRenderer = ({ value }) => {\n if (!value || typeof value !== 'object' || !Array.isArray(value.satellites)) {\n return <span className=\"text-primary\">{JSON.stringify(value)}</span>\n }\n\n const { count, satellites } = value\n const size = 200\n const center = size / 2\n const maxRadius = center - 20\n\n const getSNRColor = (snr) => {\n if (!snr || snr <= 0) return '#000'\n if (snr >= 40) return '#28a745'\n if (snr >= 30) return '#004085'\n return '#8b0000'\n }\n\n const polarToCartesian = (elevation, azimuth) => {\n const elevationRadius = maxRadius * (1 - elevation / (Math.PI / 2))\n const x = center + elevationRadius * Math.sin(azimuth)\n const y = center - elevationRadius * Math.cos(azimuth)\n return { x, y }\n }\n\n return (\n <div className=\"text-primary\">\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: '16px' }}>\n <svg width={size} height={size} style={{ border: '1px solid #ccc' }}>\n {/* Elevation circles (30° intervals) */}\n <circle\n cx={center}\n cy={center}\n r={maxRadius}\n fill=\"none\"\n stroke=\"#e0e0e0\"\n strokeWidth=\"1\"\n />\n <circle\n cx={center}\n cy={center}\n r={(maxRadius * 2) / 3}\n fill=\"none\"\n stroke=\"#e0e0e0\"\n strokeWidth=\"1\"\n />\n <circle\n cx={center}\n cy={center}\n r={(maxRadius * 1) / 3}\n fill=\"none\"\n stroke=\"#e0e0e0\"\n strokeWidth=\"1\"\n />\n\n {/* Cardinal direction lines */}\n <line\n x1={center}\n y1={20}\n x2={center}\n y2={size - 20}\n stroke=\"#e0e0e0\"\n strokeWidth=\"1\"\n />\n <line\n x1={20}\n y1={center}\n x2={size - 20}\n y2={center}\n stroke=\"#e0e0e0\"\n strokeWidth=\"1\"\n />\n\n {/* Direction labels */}\n <text x={center} y={15} textAnchor=\"middle\" fontSize=\"12\" fill=\"#666\">\n N\n </text>\n <text\n x={center}\n y={size - 5}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill=\"#666\"\n >\n S\n </text>\n <text\n x={10}\n y={center + 4}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill=\"#666\"\n >\n W\n </text>\n <text\n x={size - 10}\n y={center + 4}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill=\"#666\"\n >\n E\n </text>\n\n {/* Elevation angle labels */}\n <text\n x={center + maxRadius + 5}\n y={center + 4}\n fontSize=\"10\"\n fill=\"#999\"\n >\n 0°\n </text>\n <text\n x={center + (maxRadius * 2) / 3 + 5}\n y={center + 4}\n fontSize=\"10\"\n fill=\"#999\"\n >\n 30°\n </text>\n <text\n x={center + (maxRadius * 1) / 3 + 5}\n y={center + 4}\n fontSize=\"10\"\n fill=\"#999\"\n >\n 60°\n </text>\n <text x={center + 5} y={center + 4} fontSize=\"10\" fill=\"#999\">\n 90°\n </text>\n\n {/* Satellites */}\n {satellites.map((sat) => {\n const { x, y } = polarToCartesian(sat.elevation, sat.azimuth)\n const color = getSNRColor(sat.SNR)\n const hasSignal = sat.SNR && sat.SNR > 0\n const snrText = sat.SNR ? `${sat.SNR} dB` : 'No signal'\n\n return (\n <g key={sat.id}>\n <title>\n Satellite {sat.id}: {snrText}\n </title>\n <circle\n cx={x}\n cy={y}\n r=\"8\"\n fill={color}\n stroke={hasSignal ? 'none' : '#000'}\n strokeWidth={hasSignal ? 0 : 2}\n />\n <text\n x={x}\n y={y + 4}\n textAnchor=\"middle\"\n fontSize=\"10\"\n fill=\"white\"\n fontWeight=\"bold\"\n >\n {sat.id}\n </text>\n </g>\n )\n })}\n </svg>\n\n {/* Info and Legend */}\n <div style={{ fontSize: '12px', minWidth: '80px' }}>\n <div style={{ marginBottom: '12px' }}>\n <strong>Satellites in view: {count}</strong>\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\n <div\n style={{\n width: '12px',\n height: '12px',\n backgroundColor: '#28a745',\n borderRadius: '50%'\n }}\n ></div>\n <span>≥40 dB</span>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\n <div\n style={{\n width: '12px',\n height: '12px',\n backgroundColor: '#004085',\n borderRadius: '50%'\n }}\n ></div>\n <span>30-40 dB</span>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\n <div\n style={{\n width: '12px',\n height: '12px',\n backgroundColor: '#8b0000',\n borderRadius: '50%'\n }}\n ></div>\n <span>0-30 dB</span>\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>\n <div\n style={{\n width: '12px',\n height: '12px',\n backgroundColor: '#000',\n border: '2px solid #000',\n borderRadius: '50%'\n }}\n ></div>\n <span>No signal</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport const getValueRenderer = (path, meta) => {\n if (path.startsWith('notifications.')) {\n return NotificationRenderer // notification paths should always use NotificationRenderer\n // better implementation would set up regex path -> renderer mapping in settings file\n // even better implementation would be to have first class object types like Notification,\n // Battery, Sensor, Engine, GPS etc. that encapsulate their paths and their renderer\n // as well as other useful data/behavior.\n }\n if (meta && meta.renderer && meta.renderer.module) {\n if (Renderers[`${meta.renderer.module}.${meta.renderer.name}`]) {\n return Renderers[`${meta.renderer.module}.${meta.renderer.name}`]\n } else {\n const Renderer = toLazyDynamicComponent(\n meta.renderer.module,\n meta.renderer.name\n )\n\n const comp = function component(props) {\n return (\n <div>\n <Suspense fallback={<DefaultValueRenderer {...props} />}>\n <Renderer {...props} />\n </Suspense>\n </div>\n )\n }\n Renderers[`${meta.renderer.module}.${meta.renderer.name}`] = comp\n return comp\n }\n }\n\n if (meta && meta.renderer) {\n return Renderers[meta.renderer.name]\n }\n if (meta && meta.units === 'ratio') {\n return MeterRenderer\n }\n\n if (VALUE_RENDERERS[path]) {\n return VALUE_RENDERERS[path]\n }\n\n return null\n}\n\nexport const DefaultValueRenderer = ({ value, units }) => {\n let formattedValue = JSON.stringify(\n value,\n null,\n typeof value === 'object' && Object.keys(value || {}).length > 1 ? 2 : 0\n )\n\n if (typeof value === 'number' && units) {\n formattedValue = `${value} `\n }\n\n return (\n <>\n {typeof value === 'object' ? (\n <pre className=\"text-primary\">{formattedValue}</pre>\n ) : (\n <span className=\"text-primary\">\n {formattedValue}\n {typeof value === 'number' && units && <strong>{units}</strong>}\n </span>\n )}\n </>\n )\n}\n\nconst Renderers = {\n Position: PositionRenderer,\n SatellitesInView: SatellitesInViewRenderer,\n Meter: MeterRenderer,\n SimpleHTML: SimpleHTMLRenderer,\n LargeArray: LargeArrayRenderer,\n Notification: NotificationRenderer,\n Attitude: AttitudeRenderer,\n Direction: DirectionRenderer\n}\n\nconst VALUE_RENDERERS = {\n 'navigation.position': Renderers.Position,\n 'navigation.gnss.satellitesInView': Renderers.SatellitesInView\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!./blinking-circle.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { JSONTree } from 'react-json-tree'\nimport Select from 'react-select'\nimport {\n Card,\n CardHeader,\n CardBody,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n Table\n} from 'reactstrap'\nimport moment from 'moment'\nimport { CopyToClipboard } from 'react-copy-to-clipboard'\nimport Meta from './Meta'\nimport { getValueRenderer, DefaultValueRenderer } from './ValueRenderers'\n\nconst TIMESTAMP_FORMAT = 'MM/DD HH:mm:ss'\nconst TIME_ONLY_FORMAT = 'HH:mm:ss'\n\nconst metaStorageKey = 'admin.v1.dataBrowser.meta'\nconst pauseStorageKey = 'admin.v1.dataBrowser.v1.pause'\nconst rawStorageKey = 'admin.v1.dataBrowser.v1.raw'\nconst contextStorageKey = 'admin.v1.dataBrowser.context'\nconst searchStorageKey = 'admin.v1.dataBrowser.search'\nconst selectedSourcesStorageKey = 'admin.v1.dataBrowser.selectedSources'\nconst sourceFilterActiveStorageKey = 'admin.v1.dataBrowser.sourceFilterActive'\n\nfunction fetchSources() {\n fetch(`/signalk/v1/api/sources`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((sources) => {\n Object.values(sources).forEach((source) => {\n if (source.type === 'NMEA2000') {\n Object.keys(source).forEach((key) => {\n let device = source[key]\n if (device.n2k && device.n2k.modelId) {\n source[\n `${device.n2k.manufacturerCode || ''} ${\n device.n2k.modelId\n } (${key})`\n ] = device\n delete source[key]\n }\n })\n }\n })\n this.setState({ ...this.state, sources: sources })\n })\n}\n\nclass DataBrowser extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: false,\n webSocket: null,\n didSubscribe: false,\n pause: localStorage.getItem(pauseStorageKey) === 'true',\n includeMeta: localStorage.getItem(metaStorageKey) === 'true',\n raw: localStorage.getItem(rawStorageKey) === 'true',\n data: {},\n meta: {},\n context: localStorage.getItem(contextStorageKey) || 'self',\n search: localStorage.getItem(searchStorageKey) || '',\n selectedSources: new Set(\n JSON.parse(localStorage.getItem(selectedSourcesStorageKey) || '[]')\n ),\n sourceFilterActive:\n localStorage.getItem(sourceFilterActiveStorageKey) === 'true'\n }\n\n this.fetchSources = fetchSources.bind(this)\n this.handlePause = this.handlePause.bind(this)\n this.handleMessage = this.handleMessage.bind(this)\n this.handleContextChange = this.handleContextChange.bind(this)\n this.handleSearch = this.handleSearch.bind(this)\n this.toggleMeta = this.toggleMeta.bind(this)\n this.toggleRaw = this.toggleRaw.bind(this)\n this.toggleSourceSelection = this.toggleSourceSelection.bind(this)\n this.toggleSourceFilter = this.toggleSourceFilter.bind(this)\n }\n\n handleMessage(msg) {\n if (this.state.pause) {\n return\n }\n\n if (msg.context && msg.updates) {\n const key =\n msg.context === this.state.webSocket.skSelf ? 'self' : msg.context\n\n let isNew = false\n if (!this.state.data[key]) {\n this.state.data[key] = {}\n isNew = true\n }\n\n if (!this.state.meta[key]) {\n this.state.meta[key] = {}\n isNew = true\n }\n\n let context = this.state.data[key]\n let contextMeta = this.state.meta[key]\n\n msg.updates.forEach((update) => {\n if (update.values) {\n let pgn =\n update.source && update.source.pgn && `(${update.source.pgn})`\n let sentence =\n update.source &&\n update.source.sentence &&\n `(${update.source.sentence})`\n update.values.forEach((vp) => {\n const timestamp = moment(update.timestamp)\n const formattedTimestamp = timestamp.isSame(moment(), 'day')\n ? timestamp.format(TIME_ONLY_FORMAT)\n : timestamp.format(TIMESTAMP_FORMAT)\n\n if (vp.path === '') {\n Object.keys(vp.value).forEach((k) => {\n context[k] = {\n path: k,\n value: vp.value[k],\n $source: update.$source,\n pgn,\n sentence,\n timestamp: formattedTimestamp\n }\n })\n } else {\n context[vp.path + '$' + update['$source']] = {\n path: vp.path,\n $source: update.$source,\n value: vp.value,\n pgn,\n sentence,\n timestamp: formattedTimestamp\n }\n }\n })\n }\n if (update.meta) {\n update.meta.forEach((vp) => {\n contextMeta[vp.path] = { ...contextMeta[vp.path], ...vp.value }\n })\n }\n })\n\n if (isNew || (this.state.context && this.state.context === key)) {\n this.setState({\n ...this.state,\n hasData: true,\n data: this.state.data,\n meta: this.state.meta\n })\n }\n }\n }\n\n subscribeToDataIfNeeded() {\n if (\n !this.state.pause &&\n this.props.webSocket &&\n (this.props.webSocket !== this.state.webSocket ||\n this.state.didSubscribe === false)\n ) {\n const sub = {\n context: '*',\n subscribe: [\n {\n path: '*',\n period: 2000\n }\n ]\n }\n\n this.props.webSocket.send(JSON.stringify(sub))\n this.state.webSocket = this.props.webSocket\n this.state.didSubscribe = true\n this.state.webSocket.messageHandler = this.handleMessage\n }\n }\n\n unsubscribeToData() {\n if (this.props.webSocket) {\n const sub = {\n context: '*',\n unsubscribe: [\n {\n path: '*'\n }\n ]\n }\n this.props.webSocket.send(JSON.stringify(sub))\n this.state.didSubscribe = false\n this.props.webSocket.messageHandler = null\n }\n }\n\n componentDidMount() {\n this.fetchSources()\n this.subscribeToDataIfNeeded()\n }\n\n componentDidUpdate() {\n this.subscribeToDataIfNeeded()\n }\n\n componentWillUnmount() {\n this.unsubscribeToData()\n }\n\n handleContextChange(selectedOption) {\n const value = selectedOption ? selectedOption.value : 'none'\n\n localStorage.setItem(selectedSourcesStorageKey, JSON.stringify([]))\n localStorage.setItem(sourceFilterActiveStorageKey, false)\n\n this.setState({\n ...this.state,\n context: value,\n selectedSources: new Set(),\n sourceFilterActive: false\n })\n localStorage.setItem(contextStorageKey, value)\n }\n\n getContextLabel(contextKey) {\n const contextData = this.state.data[contextKey]\n const contextName = contextData?.name?.value\n return `${contextName || ''} ${contextKey}`\n }\n\n getContextOptions() {\n const contexts = Object.keys(this.state.data || {}).sort()\n\n const options = []\n\n if (contexts.includes('self')) {\n const selfLabel = this.getContextLabel('self')\n options.push({ value: 'self', label: selfLabel })\n }\n\n contexts.forEach((key) => {\n if (key !== 'self') {\n const contextLabel = this.getContextLabel(key)\n options.push({ value: key, label: contextLabel })\n }\n })\n\n return options\n }\n\n getCurrentContextValue() {\n const options = this.getContextOptions()\n return options.find((option) => option.value === this.state.context) || null\n }\n\n handleSearch(event) {\n this.setState({ ...this.state, search: event.target.value })\n localStorage.setItem(searchStorageKey, event.target.value)\n }\n\n toggleMeta(event) {\n this.setState({ ...this.state, includeMeta: event.target.checked })\n localStorage.setItem(metaStorageKey, event.target.checked)\n }\n\n toggleRaw(event) {\n this.setState({ ...this.state, raw: event.target.checked })\n localStorage.setItem(rawStorageKey, event.target.checked)\n }\n resetAllTimestampAnimations() {\n const cells = document.querySelectorAll('.timestamp-updated')\n cells.forEach((cell) => {\n cell.classList.remove('timestamp-updated')\n })\n }\n\n handlePause(event) {\n this.state.pause = event.target.checked\n this.setState(this.state)\n localStorage.setItem(pauseStorageKey, this.state.pause)\n if (this.state.pause) {\n this.unsubscribeToData()\n this.resetAllTimestampAnimations()\n } else {\n this.fetchSources()\n this.subscribeToDataIfNeeded()\n }\n }\n\n toggleSourceSelection(source) {\n const newSelectedSources = new Set(this.state.selectedSources)\n const wasEmpty = newSelectedSources.size === 0\n\n if (newSelectedSources.has(source)) {\n newSelectedSources.delete(source)\n } else {\n newSelectedSources.add(source)\n }\n\n // Auto-activate filtering when first source is selected, deactivate when none selected\n const shouldActivateFilter = wasEmpty && newSelectedSources.size === 1\n const shouldDeactivateFilter = newSelectedSources.size === 0\n\n const newSourceFilterActive = shouldActivateFilter\n ? true\n : shouldDeactivateFilter\n ? false\n : this.state.sourceFilterActive\n\n localStorage.setItem(\n selectedSourcesStorageKey,\n JSON.stringify([...newSelectedSources])\n )\n localStorage.setItem(sourceFilterActiveStorageKey, newSourceFilterActive)\n\n this.setState({\n ...this.state,\n selectedSources: newSelectedSources,\n sourceFilterActive: newSourceFilterActive\n })\n }\n\n toggleSourceFilter(event) {\n const newSourceFilterActive = event.target.checked\n localStorage.setItem(sourceFilterActiveStorageKey, newSourceFilterActive)\n\n this.setState({\n ...this.state,\n sourceFilterActive: newSourceFilterActive\n })\n }\n\n render() {\n const contextOptions = this.getContextOptions()\n const currentContext = this.getCurrentContextValue()\n\n return (\n <div className=\"animated fadeIn\">\n <style>\n {`\n .timestamp-updated {\n position: relative;\n }\n\n .timestamp-updated::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background-color: #28a745;\n animation: highlightFade 15s ease-out;\n }\n\n @keyframes highlightFade {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n }\n\n .responsive-table {\n font-size: 0.875rem;\n }\n\n .responsive-table td {\n padding: 0.5rem 0.25rem;\n vertical-align: top;\n word-wrap: break-word;\n word-break: break-word;\n }\n\n .responsive-table th {\n padding: 0.5rem 0.25rem;\n font-size: 0.8rem;\n font-weight: 600;\n }\n\n .responsive-table .path-cell {\n min-width: 150px;\n max-width: 200px;\n }\n\n .responsive-table .value-cell {\n min-width: 120px;\n max-width: 300px;\n }\n\n .responsive-table .timestamp-cell {\n min-width: 80px;\n max-width: 100px;\n white-space: nowrap;\n }\n\n .responsive-table .source-cell {\n min-width: 120px;\n max-width: 170px;\n }\n\n .responsive-table pre {\n margin: 0;\n padding: 0;\n font-size: 0.8rem;\n white-space: pre-wrap;\n word-wrap: break-word;\n word-break: break-word;\n }\n\n @media (max-width: 1200px) {\n .responsive-table {\n font-size: 0.8rem;\n }\n\n .responsive-table td {\n padding: 0.4rem 0.2rem;\n }\n\n .responsive-table th {\n padding: 0.4rem 0.2rem;\n font-size: 0.75rem;\n }\n }\n\n @media (max-width: 992px) {\n .responsive-table .path-cell {\n max-width: 150px;\n }\n\n .responsive-table .value-cell {\n max-width: 200px;\n }\n\n .responsive-table .source-cell {\n max-width: 140px;\n }\n }\n\n @media (max-width: 768px) {\n .responsive-table {\n font-size: 0.75rem;\n }\n\n .responsive-table td {\n padding: 0.3rem 0.15rem;\n }\n\n .responsive-table th {\n padding: 0.3rem 0.15rem;\n font-size: 0.7rem;\n }\n\n .responsive-table .path-cell {\n max-width: 120px;\n }\n\n .responsive-table .value-cell {\n max-width: 150px;\n }\n\n .responsive-table .source-cell {\n max-width: 120px;\n }\n\n .responsive-table pre {\n font-size: 0.7rem;\n }\n }\n\n @media (max-width: 576px) {\n .responsive-table {\n font-size: 0.7rem;\n }\n\n .responsive-table td {\n padding: 0.25rem 0.1rem;\n }\n\n .responsive-table th {\n padding: 0.25rem 0.1rem;\n font-size: 0.65rem;\n }\n\n .responsive-table .timestamp-cell {\n min-width: 70px;\n max-width: 80px;\n }\n }\n `}\n </style>\n <Card>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n <FormGroup row>\n <Col xs=\"12\" md=\"4\">\n <Select\n value={currentContext}\n onChange={this.handleContextChange}\n options={contextOptions}\n placeholder=\"Select a context\"\n isSearchable={true}\n isClearable={true}\n noOptionsMessage={() => 'No contexts available'}\n />\n </Col>\n <Col xs=\"6\" md=\"2\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"Meta\"\n name=\"meta\"\n className=\"switch-input\"\n onChange={this.toggleMeta}\n checked={this.state.includeMeta}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>{' '}\n <span style={{ whiteSpace: 'nowrap' }}>Meta data</span>\n </Col>\n <Col xs=\"6\" md=\"2\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"Pause\"\n name=\"pause\"\n className=\"switch-input\"\n onChange={this.handlePause}\n checked={this.state.pause}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>{' '}\n Pause\n </Col>\n <Col xs=\"6\" md=\"2\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"Raw\"\n name=\"raw\"\n className=\"switch-input\"\n onChange={this.toggleRaw}\n checked={this.state.raw}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>{' '}\n <span style={{ whiteSpace: 'nowrap' }}>Raw Values</span>\n </Col>\n </FormGroup>\n {this.state.context && this.state.context !== 'none' && (\n <FormGroup row>\n <Col xs=\"3\" md=\"2\">\n <Label htmlFor=\"select\">Search</Label>\n </Col>\n <Col xs=\"12\" md=\"12\">\n <Input\n type=\"text\"\n name=\"search\"\n onChange={this.handleSearch}\n value={this.state.search}\n />\n </Col>\n </FormGroup>\n )}\n\n {!this.state.includeMeta &&\n this.state.context &&\n this.state.context !== 'none' && (\n <Table\n responsive\n bordered\n striped\n size=\"sm\"\n className=\"responsive-table\"\n >\n <thead>\n <tr>\n <th className=\"path-cell\">Path</th>\n <th className=\"value-cell\">Value</th>\n <th className=\"timestamp-cell\">Timestamp</th>\n <th className=\"source-cell\">\n <input\n type=\"checkbox\"\n onChange={this.toggleSourceFilter}\n checked={this.state.sourceFilterActive}\n disabled={this.state.selectedSources.size === 0}\n title={\n this.state.selectedSources.size === 0\n ? 'Check a source in the list to filter by source'\n : this.state.sourceFilterActive\n ? 'Uncheck to deactivate source filtering'\n : 'Check to activate source filtering'\n }\n style={{\n marginRight: '5px',\n verticalAlign: 'middle'\n }}\n />\n Source\n </th>\n </tr>\n </thead>\n <tbody>\n {Object.keys(this.state.data[this.state.context] || {})\n .filter((key) => {\n const data = this.state.data[this.state.context][key]\n\n const pathMatches =\n !this.state.search ||\n this.state.search.length === 0 ||\n key\n .toLowerCase()\n .indexOf(this.state.search.toLowerCase()) !== -1\n if (!pathMatches) {\n return false\n }\n\n // If source filter is active, also check source selection\n if (\n this.state.sourceFilterActive &&\n this.state.selectedSources.size > 0\n ) {\n return this.state.selectedSources.has(data.$source)\n }\n\n return true\n })\n .sort()\n .map((key) => {\n const data = this.state.data[this.state.context][key]\n const meta =\n this.state.meta[this.state.context][data.path]\n const units = meta && meta.units ? meta.units : ''\n\n return (\n <tr key={key}>\n <td className=\"path-cell\">\n <CopyToClipboardWithFade text={data.path}>\n <span>\n {data.path} <i className=\"far fa-copy\"></i>\n </span>\n </CopyToClipboardWithFade>\n </td>\n <td className=\"value-cell\">\n {(() => {\n if (this.state.raw) {\n return (\n <div>\n <div className=\"text-primary\">\n value:{' '}\n {JSON.stringify(data.value, null, 2)}\n </div>\n <div className=\"text-primary\">\n meta:{' '}\n {JSON.stringify(\n meta ? meta : {},\n null,\n 2\n )}\n </div>\n </div>\n )\n }\n const CustomRenderer = getValueRenderer(\n data.path,\n meta\n )\n if (CustomRenderer) {\n return (\n <CustomRenderer\n value={data.value}\n units={units}\n {...meta?.renderer?.options}\n />\n )\n }\n return (\n <DefaultValueRenderer\n value={data.value}\n units={units}\n />\n )\n })()}\n </td>\n <TimestampCell\n timestamp={data.timestamp}\n isPaused={this.state.pause}\n className=\"timestamp-cell\"\n />\n <td className=\"source-cell\">\n <input\n type=\"checkbox\"\n onChange={() =>\n this.toggleSourceSelection(data.$source)\n }\n checked={this.state.selectedSources.has(\n data.$source\n )}\n style={{\n marginRight: '5px',\n verticalAlign: 'middle'\n }}\n />\n <CopyToClipboardWithFade text={data.$source}>\n {data.$source} <i className=\"far fa-copy\"></i>\n </CopyToClipboardWithFade>{' '}\n {data.pgn || ''}\n {data.sentence || ''}\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n )}\n\n {this.state.includeMeta &&\n this.state.context &&\n this.state.context !== 'none' && (\n <Table responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>Path</th>\n <th>Meta</th>\n </tr>\n </thead>\n <tbody>\n {Object.keys(this.state.data[this.state.context] || {})\n .filter((key) => {\n return (\n !this.state.search ||\n this.state.search.length === 0 ||\n key\n .toLowerCase()\n .indexOf(this.state.search.toLowerCase()) !== -1\n )\n })\n .map(\n (key) => this.state.data[this.state.context][key].path\n )\n .filter((path, index, array) => {\n return array.indexOf(path) === index\n })\n .sort()\n .map((path) => {\n const meta = this.state.meta[this.state.context][path]\n return (\n <tr key={path}>\n <td>{path}</td>\n <td>\n {!path.startsWith('notifications') && (\n <Meta meta={meta || {}} path={path} />\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n )}\n </Form>\n </CardBody>\n </Card>\n\n {this.state.sources && (\n <Card>\n <CardHeader>Sources</CardHeader>\n <CardBody>\n <JSONTree\n data={this.state.sources}\n theme=\"default\"\n invertTheme={true}\n sortObjectKeys\n hideRoot\n />\n </CardBody>\n </Card>\n )}\n </div>\n )\n }\n}\n\nclass TimestampCell extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isUpdated: false,\n animationKey: 0\n }\n this.timeoutId = null\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.timestamp !== this.props.timestamp) {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId)\n }\n\n this.setState((state) => ({\n isUpdated: true,\n animationKey: state.animationKey + 1\n }))\n\n this.timeoutId = setTimeout(() => {\n if (!this.props.isPaused) {\n this.setState({ isUpdated: false })\n }\n }, 15000)\n }\n }\n\n componentDidMount() {\n if (this.props.isPaused) {\n this.setState({ isUpdated: false })\n }\n }\n\n componentWillUnmount() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId)\n }\n }\n\n render() {\n return (\n <td\n className={`${this.props.className || ''} ${\n this.state.isUpdated && !this.props.isPaused\n ? 'timestamp-updated'\n : ''\n }`}\n key={this.state.animationKey}\n >\n {this.props.timestamp}\n </td>\n )\n }\n}\n\nclass CopyToClipboardWithFade extends Component {\n constructor() {\n super()\n this.state = {\n opacity: 1\n }\n }\n\n render() {\n const { opacity } = this.state\n const onCopy = function () {\n this.setState({ opacity: 0.5 })\n setTimeout(() => {\n this.setState({ opacity: 1 })\n }, 500)\n }.bind(this)\n return (\n <CopyToClipboard text={this.props.text} onCopy={onCopy}>\n <span style={{ opacity }}> {this.props.children}</span>\n </CopyToClipboard>\n )\n }\n}\n\nexport default connect(({ webSocket }) => ({ webSocket }))(DataBrowser)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Form,\n Col,\n FormGroup,\n FormText,\n Table,\n Row,\n TabContent,\n TabPane,\n Nav,\n NavItem,\n NavLink\n} from 'reactstrap'\nimport classnames from 'classnames'\n//import { Tabs, Tab, TabList, TabPanel } from 'react-tabs'\n//import 'react-tabs/style/react-tabs.css';\n\nimport moment from 'moment'\nimport jsonlint from 'jsonlint-mod'\n\nconst timestampFormat = 'MM/DD HH:mm:ss'\nconst inputStorageKey = 'admin.v1.playground.input'\n\nconst DELTAS_TAB_ID = 'deltas'\nconst PATHS_TAB_ID = 'paths'\nconst N2KJSON_TAB_ID = 'n2kjson'\nconst PUTRESULTS_TAB_ID = 'putresults'\nconst LINT_ERROR_TAB_ID = 'lintErrors'\n\nclass Playground extends Component {\n constructor(props) {\n super(props)\n const input = localStorage.getItem(inputStorageKey) || ''\n this.state = {\n hasData: true,\n data: [],\n deltas: [],\n n2kJson: [],\n n2kOutAvailable: false,\n input,\n inputIsJson: isJson(input),\n sending: false,\n sendingN2K: false,\n activeTab: DELTAS_TAB_ID\n }\n\n this.handleExecute = this.handleExecute.bind(this)\n this.handleSendN2K = this.handleSendN2K.bind(this)\n this.handleInput = this.handleInput.bind(this)\n this.send = this.send.bind(this)\n this.beautify = this.beautify.bind(this)\n }\n\n handleInput(event) {\n this.setState({\n ...this.state,\n input: event.target.value,\n inputIsJson: isJson(event.target.value)\n })\n localStorage.setItem(inputStorageKey, event.target.value)\n if (this.inputWaitTimeout) {\n clearTimeout(this.inputWaitTimeout)\n }\n this.inputWaitTimeout = setTimeout(() => {\n if (this.state.input.length > 0) {\n this.send(false)\n }\n }, 500)\n }\n\n handleExecute() {\n this.send(true)\n }\n\n handleSendN2K() {\n this.send(false, true)\n }\n\n componentDidMount() {\n if (this.state.input && this.state.input.length > 0) {\n this.send(false)\n }\n }\n\n beautify() {\n try {\n jsonlint.parse(this.state.input)\n const text = JSON.stringify(JSON.parse(this.state.input), null, 2)\n this.setState({ ...this.state, input: text, jsonError: null })\n } catch (error) {\n this.setState({\n ...this.state,\n data: [],\n deltas: [],\n putResults: [],\n n2kJson: [],\n n2kOutAvailable: false,\n error: 'invalid json',\n jsonError: error.message,\n activeTab: LINT_ERROR_TAB_ID\n })\n }\n }\n\n send(sendToServer, sendToN2K) {\n let start = this.state.input.trim().charAt(0)\n if (start === '{' || start === '[') {\n try {\n jsonlint.parse(this.state.input)\n if (this.state.activeTab === LINT_ERROR_TAB_ID) {\n this.setState({ ...this.state, activeTab: DELTAS_TAB_ID })\n }\n } catch (error) {\n this.setState({\n ...this.state,\n data: [],\n deltas: [],\n putResults: [],\n n2kJson: [],\n n2kOutAvailable: false,\n error: 'invalid json',\n jsonError: error.message,\n activeTab: LINT_ERROR_TAB_ID\n })\n return\n }\n }\n\n const body = { value: this.state.input, sendToServer, sendToN2K }\n localStorage.setItem(inputStorageKey, this.state.input)\n if (sendToServer) {\n this.setState({ ...this.state, sending: true })\n }\n if (sendToN2K) {\n this.setState({ ...this.state, sendingN2K: true })\n }\n fetch(`${window.serverRoutesPrefix}/inputTest`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(body)\n })\n .then((response) => response.json())\n .then((data) => {\n if (sendToServer || sendToN2K) {\n setTimeout(() => {\n this.setState({ ...this.state, sending: false, sendingN2K: false })\n }, 1000)\n }\n if (data.error) {\n this.setState({\n ...this.state,\n data: [],\n deltas: [],\n putResults: [],\n n2kJson: [],\n n2kOutAvailable: false,\n jsonError: null,\n error: data.error\n })\n } else {\n this.state.error = null\n this.setState(this.state)\n const values = []\n data.deltas.forEach((delta) => {\n if (!delta.context) {\n delta.context = 'vessels.self'\n }\n if (delta.updates) {\n delta.updates.forEach((update) => {\n if (update.values) {\n update.values.forEach((vp) => {\n if (vp.path === '') {\n Object.keys(vp.value).forEach((k) => {\n values.push({\n path: k,\n value: vp.value[k],\n context: delta.context,\n timestamp: moment(update.timestamp).format(\n timestampFormat\n )\n })\n })\n } else {\n values.push({\n path: vp.path,\n value: vp.value,\n context: delta.context,\n timestamp: moment(update.timestamp).format(\n timestampFormat\n )\n })\n }\n })\n }\n })\n }\n })\n this.setState({\n ...this.state,\n data: values,\n deltas: data.deltas,\n n2kJson: data.n2kJson,\n n2kOutAvailable: data.n2kOutAvailable,\n putResults: data.putResults,\n jsonError: null\n })\n }\n })\n .catch((error) => {\n console.error(error)\n this.setState({\n ...this.state,\n data: [],\n deltas: [],\n putResults: [],\n n2kJson: [],\n n2kOutAvailable: false,\n error: error.message,\n jsonError: null\n })\n if (sendToServer || sendToN2K) {\n this.setState({ ...this.state, sending: false, sendingN2K: false })\n }\n })\n }\n\n render() {\n const toggle = (tab) => {\n this.setState({ ...this.state, activeTab: tab })\n }\n return (\n this.state.hasData && (\n <div className=\"animated fadeIn\">\n <Row>\n <Col xs=\"12\" md=\"6\">\n <Card>\n <CardHeader>Input</CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n <FormGroup row>\n <Col xs=\"12\" md=\"12\">\n <FormText color=\"muted\">\n You can enter multi-line raw NMEA 2000, NMEA 0183 or\n Signal K deltas (one delta or an array). For sending\n PGNs out over the servers NMEA 2000 connection, use\n one of the formats{' '}\n <a href=\"/documentation/develop/plugins/deltas.html?highlight=NMEA%202000%20json#sending-nmea-2000-data-from-a-plugin\">\n here\n </a>\n </FormText>\n <Input\n type=\"textarea\"\n name=\"input\"\n rows=\"15\"\n onChange={this.handleInput}\n value={this.state.input}\n />\n </Col>\n </FormGroup>\n </Form>\n </CardBody>\n <CardFooter>\n <Row style={{ paddingBottom: '0.25rem' }}>\n <Col>\n <Button\n size=\"sm\"\n color=\"primary\"\n className=\"float-left\"\n disabled={!this.state.inputIsJson}\n onClick={this.beautify}\n >\n <i className=\"fa fa-dot-circle-o\" /> Beautify JSON\n </Button>\n </Col>\n\n <Col>\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleExecute}\n className=\"float-right\"\n >\n <i\n className={\n this.state.sending\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-dot-circle-o'\n }\n />{' '}\n Send To Server\n </Button>\n </Col>\n </Row>\n <Row style={{ paddingBottom: '0.25rem' }}>\n <Col className=\"text-right\">\n <Button\n size=\"sm\"\n color=\"primary\"\n disabled={\n !(\n this.state.n2kJson &&\n this.state.n2kJson.length > 0 &&\n this.state.n2kOutAvailable\n )\n }\n onClick={this.handleSendN2K}\n >\n <i\n className={\n this.state.sendingN2K\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-dot-circle-o'\n }\n />{' '}\n Send as PGN to server's NMEA2000 connection\n </Button>\n </Col>\n </Row>\n <Row>\n <Col>\n <span className=\"float-right\">\n {this.state.error && (\n <p className=\"text-danger\">{this.state.error}</p>\n )}\n </span>\n </Col>\n </Row>\n </CardFooter>\n </Card>\n </Col>\n <Col xs=\"12\" md=\"6\">\n <Card>\n <CardHeader>Output</CardHeader>\n <CardBody>\n <Nav tabs>\n <NavItem>\n <NavLink\n className={classnames({\n active: this.state.activeTab === DELTAS_TAB_ID\n })}\n onClick={() => {\n toggle(DELTAS_TAB_ID)\n }}\n >\n Deltas\n </NavLink>\n </NavItem>\n {this.state.data.length > 0 && (\n <NavItem>\n <NavLink\n className={classnames({\n active: this.state.activeTab === PATHS_TAB_ID\n })}\n onClick={() => {\n toggle(PATHS_TAB_ID)\n }}\n >\n Paths\n </NavLink>\n </NavItem>\n )}\n\n {this.state.n2kJson && this.state.n2kJson.length > 0 && (\n <NavItem>\n <NavLink\n className={classnames({\n active: this.state.activeTab === N2KJSON_TAB_ID\n })}\n onClick={() => {\n toggle(N2KJSON_TAB_ID)\n }}\n >\n Decoded NMEA 2000\n </NavLink>\n </NavItem>\n )}\n {this.state.putResults &&\n this.state.putResults.length > 0 && (\n <NavItem>\n <NavLink\n className={classnames({\n active: this.state.activeTab === PUTRESULTS_TAB_ID\n })}\n onClick={() => {\n toggle(PUTRESULTS_TAB_ID)\n }}\n >\n Put Results\n </NavLink>\n </NavItem>\n )}\n {this.state.jsonError && (\n <NavItem>\n <NavLink\n className={classnames({\n active: this.state.activeTab === LINT_ERROR_TAB_ID\n })}\n onClick={() => {\n toggle(LINT_ERROR_TAB_ID)\n }}\n >\n Json Lint Error\n </NavLink>\n </NavItem>\n )}\n </Nav>\n <TabContent activeTab={this.state.activeTab}>\n <TabPane tabId={DELTAS_TAB_ID}>\n {this.state.deltas.length > 0 && (\n <div\n style={{\n overflowY: 'scroll',\n maxHeight: '60vh',\n border: '1px solid',\n padding: '5px'\n }}\n >\n <pre>\n {JSON.stringify(this.state.deltas, null, 2)}\n </pre>\n </div>\n )}\n </TabPane>\n\n {this.state.data.length > 0 && (\n <TabPane tabId={PATHS_TAB_ID}>\n <div style={{ overflowY: 'scroll', maxHeight: '60vh' }}>\n <Table responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>Path</th>\n <th>Value</th>\n <th>Context</th>\n </tr>\n </thead>\n <tbody>\n {this.state.data.map((data) => {\n const formatted = JSON.stringify(\n data.value,\n null,\n typeof data.value === 'object' &&\n data.value !== null &&\n Object.keys(data.value).length > 1\n ? 2\n : 0\n )\n const key = `${data.path}${data.context}`\n\n return (\n <tr key={key}>\n <td>{data.path}</td>\n <td>\n <pre\n className=\"text-primary\"\n style={{ whiteSpace: 'pre-wrap' }}\n >\n {formatted}\n </pre>\n </td>\n <td>{data.context}</td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </div>\n </TabPane>\n )}\n\n {this.state.n2kJson &&\n this.state.n2kJson.length > 0 &&\n n2kJsonPanel(this.state.n2kJson)}\n\n {this.state.putResults &&\n this.state.putResults.length > 0 && (\n <TabPane tabId={PUTRESULTS_TAB_ID}>\n <div\n style={{\n overflowY: 'scroll',\n maxHeight: '60vh',\n border: '1px solid',\n padding: '5px'\n }}\n >\n <pre>\n {JSON.stringify(this.state.putResults, null, 2)}\n </pre>\n </div>\n </TabPane>\n )}\n\n {this.state.jsonError && (\n <TabPane tabId={LINT_ERROR_TAB_ID}>\n <div\n style={{\n overflowY: 'scroll',\n maxHeight: '60vh',\n border: '1px solid',\n padding: '5px'\n }}\n >\n <pre>{this.state.jsonError}</pre>\n </div>\n </TabPane>\n )}\n </TabContent>\n </CardBody>\n </Card>\n </Col>\n </Row>\n </div>\n )\n )\n }\n}\n\nfunction n2kJsonPanel(n2kData) {\n return (\n <TabPane tabId={N2KJSON_TAB_ID}>\n <div\n style={{\n overflowY: 'scroll',\n maxHeight: '60vh',\n border: '1px solid',\n padding: '5px'\n }}\n >\n <pre>{JSON.stringify(n2kData, null, 2)}</pre>\n </div>\n </TabPane>\n )\n}\n\nfunction isJson(input) {\n let inputIsJson = false\n try {\n JSON.parse(input)\n inputIsJson = true\n } catch (_) {\n /* empty */\n }\n return inputIsJson\n}\n\nexport default connect(({ webSocket }) => ({ webSocket }))(Playground)\n","import React, { useState } from 'react'\nimport {\n Button,\n Progress,\n Modal,\n ModalHeader,\n ModalBody,\n ListGroup,\n ListGroupItem\n} from 'reactstrap'\nimport { connect } from 'react-redux'\nimport { NavLink } from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {\n faTrashCan,\n faCloudArrowDown,\n faGear,\n faArrowUpRightFromSquare,\n faLink\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n UncontrolledDropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem\n} from 'reactstrap'\nimport { urlToWebapp } from '../../../Webapps/Webapp'\nimport semver from 'semver'\n\nfunction ActionCellRenderer(props) {\n const app = props.data\n const [showVersionsModal, setShowVersionsModal] = useState(false)\n const [versions, setVersions] = useState([])\n const [loadingVersions, setLoadingVersions] = useState(false)\n\n const handleInstallClick = () => {\n fetch(\n `${window.serverRoutesPrefix}/appstore/install/${app.name}/${app.version}`,\n {\n method: 'POST',\n credentials: 'include'\n }\n )\n }\n\n const handleInstallVersionClick = (version) => {\n fetch(\n `${window.serverRoutesPrefix}/appstore/install/${props.data.name}/${version}`,\n {\n method: 'POST',\n credentials: 'include'\n }\n )\n setShowVersionsModal(false)\n }\n\n const handleVersionsClick = async () => {\n setLoadingVersions(true)\n setShowVersionsModal(true)\n\n try {\n // Fetch versions from npm registry\n const response = await fetch(\n `https://registry.npmjs.org/${props.data.name}`\n )\n const packageData = await response.json()\n\n if (packageData.versions) {\n // Get all versions and sort them by semver (newest first)\n const versionList = semver.rsort(Object.keys(packageData.versions))\n setVersions(versionList)\n }\n } catch (error) {\n console.error('Failed to fetch versions:', error)\n setVersions([])\n } finally {\n setLoadingVersions(false)\n }\n }\n\n const handleRemoveClick = () => {\n if (confirm(`Are you sure you want to uninstall ${app.name}?`)) {\n fetch(`${window.serverRoutesPrefix}/appstore/remove/${app.name}`, {\n method: 'POST',\n credentials: 'include'\n })\n }\n }\n\n let content\n let status\n let progress\n\n if (app.installing) {\n // Read the status of the progressing app\n // If the app has progressed we show the status\n\n if (app.isInstalling || app.isRemoving || app.isWaiting) {\n status = app.isRemove\n ? 'Removing'\n : app.isWaiting\n ? 'Waiting..'\n : 'Installing'\n progress = (\n <Progress\n className=\"progress-sm progress__bar\"\n animated\n color=\"success\"\n value=\"100\"\n />\n )\n } else if (app.installFailed) {\n status = 'Failed'\n } else if (app.isRemove) {\n status = 'Removed'\n } else if (app.installedVersion) {\n status = 'Updated'\n } else {\n status = 'Installed'\n }\n\n content = (\n <div className=\"progress__wrapper\">\n <div className=\"progress__status p-1\">{status}</div>\n {progress}\n </div>\n )\n } else {\n content = (\n <>\n <UncontrolledDropdown group className=\"w-100\">\n {app.installed ? (\n app.newVersion ? (\n <Button\n className=\"text-left\"\n color=\"success\"\n onClick={handleInstallClick}\n >\n <FontAwesomeIcon\n className=\"icon__update mr-2\"\n icon={faCloudArrowDown}\n />\n Update\n </Button>\n ) : app.isPlugin ? (\n <NavLink\n to={`/serverConfiguration/plugins/${app.id}`}\n role=\"button\"\n className=\"btn btn-light text-left\"\n >\n <FontAwesomeIcon className=\"mr-2\" icon={faGear} />\n Configure\n </NavLink>\n ) : (\n <a\n href={urlToWebapp(app)}\n role=\"button\"\n className=\"btn btn-light text-left\"\n >\n <FontAwesomeIcon className=\"mr-2\" icon={faLink} />\n Open\n </a>\n )\n ) : (\n <Button\n className=\"text-left\"\n color=\"light\"\n onClick={handleInstallClick}\n >\n <FontAwesomeIcon className=\"mr-2\" icon={faCloudArrowDown} />\n Install\n </Button>\n )}\n\n <DropdownToggle\n caret\n color={app.newVersion ? 'success' : 'light'}\n className=\"flex-grow-0\"\n />\n <DropdownMenu right>\n {app.installed && app.newVersion && (\n <NavLink\n to={`/serverConfiguration/plugins/${app.id}`}\n className=\"dropdown-item\"\n >\n <FontAwesomeIcon className=\"mr-2\" icon={faGear} /> Configure\n </NavLink>\n )}\n {app.npmUrl && (\n <a\n href={app.npmUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"dropdown-item\"\n >\n <FontAwesomeIcon\n icon={faArrowUpRightFromSquare}\n className=\"mr-2\"\n />\n View on NPM\n </a>\n )}\n\n <DropdownItem onClick={handleVersionsClick} className=\"text-left\">\n <FontAwesomeIcon className=\"mr-2\" icon={faCloudArrowDown} />\n Versions\n </DropdownItem>\n\n {app.installed && (\n <DropdownItem onClick={handleRemoveClick} className=\"text-danger\">\n <FontAwesomeIcon className=\"mr-2\" icon={faTrashCan} />\n Remove\n </DropdownItem>\n )}\n </DropdownMenu>\n </UncontrolledDropdown>\n </>\n )\n }\n return (\n <div className=\"cell__renderer cell-action\">\n <div>{content}</div>\n {/* Versions Modal */}\n <Modal\n isOpen={showVersionsModal}\n toggle={() => setShowVersionsModal(!showVersionsModal)}\n size=\"md\"\n >\n <ModalHeader toggle={() => setShowVersionsModal(!showVersionsModal)}>\n Versions - {props.data.name}\n </ModalHeader>\n <ModalBody>\n {loadingVersions ? (\n <div className=\"text-center\">\n <div className=\"spinner-border text-primary\" role=\"status\">\n <span className=\"sr-only\">Loading...</span>\n </div>\n <p className=\"mt-2\">Loading versions...</p>\n </div>\n ) : versions.length > 0 ? (\n <div\n style={{\n maxHeight: '450px',\n overflowY: 'auto',\n border: '1px solid #ccc'\n }}\n >\n <ListGroup>\n {versions.map((version) => (\n <ListGroupItem\n key={version}\n className=\"d-flex justify-content-between align-items-center\"\n >\n <span>\n <strong>{version}</strong>\n {props.data.installedVersion === version && (\n <span className=\"badge badge-success ml-2\">\n Installed\n </span>\n )}\n </span>\n {props.data.installedVersion !== version && (\n <Button\n size=\"sm\"\n color=\"light\"\n onClick={() => handleInstallVersionClick(version)}\n >\n <FontAwesomeIcon\n className=\"icon__update mr-2\"\n icon={faCloudArrowDown}\n />\n Install\n </Button>\n )}\n </ListGroupItem>\n ))}\n </ListGroup>\n </div>\n ) : (\n <p className=\"text-muted\">\n No older versions available or failed to load versions.\n </p>\n )}\n </ModalBody>\n </Modal>\n </div>\n )\n}\n\nconst mapStateToProps = ({ appStore }) => ({ appStore })\n\nexport default connect(mapStateToProps)(ActionCellRenderer)\n","import React, { useEffect, useState } from 'react'\nimport InfiniteScroll from 'react-infinite-scroll-component'\nimport { ListGroup, ListGroupItem } from 'reactstrap'\nimport ActionCellRenderer from './Grid/cell-renderers/ActionCellRenderer'\n\nexport function AppListItem(app) {\n return (\n <ListGroupItem className=\"p-3\">\n <div className=\"d-md-flex align-items-center flex-grow-1\">\n <div className=\"flex-grow-1 mr-3\">\n <h5 className=\"text-dark mb-0\">{app.name}</h5>\n <div className=\"text-muted\">\n <span className=\"font-weight-bolder\">\n v{app.installedVersion || app.version}{' '}\n </span>\n {app.newVersion && (\n <>\n <span className=\"text-secondary\"> → </span>\n <span className=\"font-weight-bolder text-success font-italic\">\n v{app.newVersion}\n </span>{' '}\n </>\n )}\n released by\n <span className=\"text-nowrap font-weight-bolder\">\n {' '}\n {app.author}\n </span>{' '}\n on\n <span className=\"text-nowrap\"> {app.updated.substring(0, 10)}</span>\n </div>\n <p className=\"text-pretty mb-0\">{app.description}</p>\n </div>\n <div className=\"mt-3 mt-md-0\">\n <ActionCellRenderer data={app} />\n </div>\n </div>\n </ListGroupItem>\n )\n}\n\nexport default function AppList(props) {\n const [apps, setApps] = useState([])\n\n function loadMore() {\n setApps(props.apps.slice(0, apps.length + 20))\n }\n\n // Load initial list of apps\n useEffect(loadMore, [props.apps])\n\n return (\n <ListGroup>\n <InfiniteScroll\n dataLength={apps.length}\n next={loadMore}\n hasMore={apps.length !== props.apps.length}\n >\n {apps.map((app) => (\n <AppListItem key={app.name} {...app} />\n ))}\n </InfiniteScroll>\n </ListGroup>\n )\n}\n","import React from 'react'\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faTriangleExclamation } from '@fortawesome/free-solid-svg-icons'\n\nexport default function WarningBox({ children }) {\n return (\n <div className=\"message__container\">\n <p className=\"message\">\n <span>\n <FontAwesomeIcon icon={faTriangleExclamation} />\n </span>\n {children}\n </p>\n </div>\n )\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/sass-loader/dist/cjs.js!./appStore.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { faMagnifyingGlass } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React, { useState } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n Input\n} from 'reactstrap'\nimport AppsList from '../AppsList'\nimport WarningBox from './WarningBox'\n\nimport '../appStore.scss'\n\nconst Apps = function (props) {\n const [view, setSelectedView] = useState('All')\n const [category, setSelectedCategory] = useState('All')\n const [search, setSearch] = useState(() => '')\n\n const deriveAppList = () => {\n const allApps = props.appStore.available.reduce((acc, app) => {\n acc[app.name] = app\n return acc\n }, {})\n props.appStore.installed.forEach((app) => {\n allApps[app.name] = {\n ...app,\n installed: true,\n newVersion: updateAvailable(app, props.appStore) ? app.version : null\n }\n })\n props.appStore.installing.forEach((app) => {\n if (allApps[app.name]) {\n allApps[app.name].installing = true\n }\n })\n return Object.values(allApps).sort(\n (a, b) => new Date(b.updated).getTime() - new Date(a.updated).getTime()\n )\n }\n\n const handleUpdateAll = () => {\n if (confirm(`Are you sure you want to install all updates?`)) {\n // Iterate over all apps to be updated\n for (const app of rowData) {\n if (app.newVersion && app.installed) {\n fetch(\n `${window.serverRoutesPrefix}/appstore/install/${app.name}/${app.version}`,\n {\n method: 'POST',\n credentials: 'include'\n }\n )\n }\n }\n }\n }\n\n /*\n Show different warning message\n whether the store is available or if an app was installed or removed\n */\n let warning\n if (props.appStore.storeAvailable === false) {\n warning = `You probably don't have Internet connectivity and Appstore can not be reached.`\n } else if (props.appStore.installing.length > 0) {\n warning =\n 'Please restart the server after installing, updating or deleting a plugin'\n }\n\n const selectedViewFilter = selectedViewToFilter(view, props.appStore)\n const selectedCategoryFilter =\n category === 'All' ? () => true : (app) => app.categories.includes(category)\n const textSearchFilter =\n search === ''\n ? () => true\n : (app) => {\n const lower = search.toLowerCase()\n return (\n app.name.toLowerCase().indexOf(lower) >= 0 ||\n (app.description &&\n app.description.toLowerCase().indexOf(lower) >= 0)\n )\n }\n const rowData = deriveAppList()\n .filter(selectedViewFilter)\n .filter(selectedCategoryFilter)\n .filter(textSearchFilter)\n\n return (\n <div className=\"appstore animated fadeIn\">\n {warning && (\n <section className=\"appstore__warning section\">\n <WarningBox>{warning}</WarningBox>\n </section>\n )}\n\n <Card>\n <CardHeader className=\"appstore__header\">\n <div className=\"title__container\">\n <CardTitle>Apps & Plugins</CardTitle>\n <div className=\"button-wrapper\">\n <Button\n color={view === 'All' ? 'secondary' : 'light'}\n onClick={() => setSelectedView('All')}\n >\n All\n </Button>\n <Button\n color={view === 'Installed' ? 'secondary' : 'light'}\n onClick={() => setSelectedView('Installed')}\n >\n Installed\n </Button>\n <Button\n color={view === 'Updates' ? 'secondary' : 'light'}\n onClick={() => setSelectedView('Updates')}\n >\n Updates\n {props.appStore.updates.length > 0 && (\n <span className=\"badge__update\">\n {props.appStore.updates.length}\n </span>\n )}\n </Button>\n {props.appStore.installing.length > 0 && (\n <>\n <Button\n color={view === 'Installing' ? 'secondary' : 'light'}\n onClick={() => setSelectedView('Installing')}\n >\n Installs & Removes\n {installingCount(props.appStore) > 0 && (\n <span className=\"badge__update\">\n {installingCount(props.appStore)}\n </span>\n )}\n </Button>\n {props.appStore.installing.length > 0 && '(Pending restart)'}\n </>\n )}\n </div>\n </div>\n\n <div className=\"action__container\">\n {view === 'Updates' && props.appStore.updates.length > 0 ? (\n <Button color=\"success\" onClick={handleUpdateAll}>\n Update all\n </Button>\n ) : undefined}\n\n <div className=\"search\">\n <FontAwesomeIcon\n className=\"search__icon\"\n icon={faMagnifyingGlass}\n />\n <Input\n id=\"search-text-box\"\n className=\"search__input\"\n placeholder=\"Search ...\"\n onInput={(e) => {\n setSearch(e.target.value)\n }}\n value={search}\n />\n </div>\n </div>\n </CardHeader>\n\n <CardBody>\n <section className=\"appstore__tags section\">\n {props.appStore.categories?.map((item) => (\n <Button\n key={item}\n color=\"secondary\"\n className={category === item ? 'active' : undefined}\n outline\n onClick={() => setSelectedCategory(item)}\n >\n {item}\n </Button>\n ))}\n </section>\n <section className=\"appstore__grid\">\n <div style={{ height: '100%' }}>\n <AppsList apps={rowData} />\n </div>\n </section>\n </CardBody>\n </Card>\n </div>\n )\n}\n\nconst installingCount = (appStore) => {\n return appStore.installing.filter((app) => {\n return app.isWaiting || app.isInstalling\n }).length\n}\n\nconst selectedViewToFilter = (selectedView, appStore) => {\n if (selectedView === 'Installed') {\n return (app) => app.installedVersion || app.installing\n } else if (selectedView === 'Updates') {\n return (app) => updateAvailable(app, appStore)\n } else if (selectedView === 'Installing') {\n return (app) => app.installing\n }\n return () => true\n}\n\nconst updateAvailable = (app, appStore) => {\n return (\n app.installedVersion &&\n app.version !== app.installedVersion &&\n //Don't allow updates for plugins in the PLUGINS_WITH_UPDATE_DISABLED\n //environment variable\n appStore.updates.find((update) => update.name === app.name)\n )\n}\n\nconst mapStateToProps = ({ appStore }) => ({ appStore })\nexport default connect(mapStateToProps)(Apps)\n","import React from 'react'\nimport { withTheme } from '@rjsf/core'\nimport { Theme as Bootstrap4Theme } from '@rjsf/bootstrap-4'\nimport validator from '@rjsf/validator-ajv8'\nimport { getTemplate, getUiOptions } from '@rjsf/utils'\n\nconst Form = withTheme(Bootstrap4Theme)\n\nconst GRID_COLUMNS = {\n CONTENT: 'col-9',\n TOOLBAR: 'col-3',\n ADD_BUTTON_CONTAINER: 'col-3 offset-9'\n}\n\nconst CSS_CLASSES = {\n FORM_CONTROL: 'form-control',\n FORM_CHECK: 'form-check',\n FORM_CHECK_INPUT: 'form-check-input',\n FORM_CHECK_LABEL: 'form-check-label',\n BTN_INFO: 'btn btn-info',\n BTN_OUTLINE_DARK: 'btn btn-outline-dark',\n BTN_DANGER: 'btn btn-danger',\n ARRAY_ITEM: 'row array-item',\n ARRAY_ITEM_TOOLBOX: 'array-item-toolbox',\n ARRAY_ITEM_LIST: 'array-item-list',\n ARRAY_ITEM_ADD: 'row',\n FIELD_DESCRIPTION: 'field-description',\n CHECKBOX: 'checkbox '\n}\n\nconst isArrayItemId = (id) => {\n if (!id || typeof id !== 'string') return false\n const parts = id.split('_')\n return parts.length > 2 && /^\\d+$/.test(parts[parts.length - 1])\n}\n\nconst createButton = (\n className,\n onClick,\n disabled,\n style,\n icon,\n tabIndex = 0\n) => (\n <button\n type=\"button\"\n className={className}\n onClick={onClick}\n disabled={disabled}\n tabIndex={tabIndex}\n style={style}\n >\n {icon}\n </button>\n)\n\nconst ArrayFieldItemTemplate = (props) => {\n const {\n children,\n disabled,\n hasToolbar,\n hasMoveUp,\n hasMoveDown,\n hasRemove,\n index,\n onDropIndexClick,\n onReorderClick,\n readonly,\n registry,\n uiSchema\n } = props\n\n const { MoveUpButton, MoveDownButton, RemoveButton } =\n registry.templates.ButtonTemplates\n\n return (\n <div className={CSS_CLASSES.ARRAY_ITEM}>\n <div className={GRID_COLUMNS.CONTENT}>{children}</div>\n <div\n className={`${GRID_COLUMNS.TOOLBAR} ${CSS_CLASSES.ARRAY_ITEM_TOOLBOX}`}\n >\n {hasToolbar && (\n <div className=\"btn-group btn-group-flex\">\n {(hasMoveUp || hasMoveDown) && (\n <MoveUpButton\n className=\"array-item-move-up array-button-style\"\n disabled={disabled || readonly || !hasMoveUp}\n onClick={onReorderClick(index, index - 1)}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {(hasMoveUp || hasMoveDown) && (\n <MoveDownButton\n className=\"array-item-move-down array-button-style\"\n disabled={disabled || readonly || !hasMoveDown}\n onClick={onReorderClick(index, index + 1)}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasRemove && (\n <RemoveButton\n className=\"array-item-remove array-button-style\"\n disabled={disabled || readonly}\n onClick={onDropIndexClick(index)}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </div>\n )}\n </div>\n </div>\n )\n}\n\nconst FieldTemplate = (props) => {\n const {\n id,\n classNames,\n style,\n label,\n help,\n required,\n description,\n errors,\n children,\n displayLabel,\n schema\n } = props\n\n const isCheckbox = schema.type === 'boolean'\n const isObject = schema.type === 'object'\n\n return (\n <div className={classNames} style={style}>\n {displayLabel && label && !isCheckbox && (\n <label htmlFor={id}>\n {label}\n {required && <span className=\"required\">*</span>}\n </label>\n )}\n {description && !isObject && (\n <p id={`${id}__description`} className={CSS_CLASSES.FIELD_DESCRIPTION}>\n {description}\n </p>\n )}\n {children}\n {errors}\n {help}\n </div>\n )\n}\n\nconst ObjectFieldTemplate = (props) => {\n const { title, description, properties, idSchema } = props\n const isArrayItem = isArrayItemId(idSchema.$id)\n\n return (\n <fieldset id={idSchema.$id}>\n {title && !isArrayItem && (\n <legend id={`${idSchema.$id}__title`}>{title}</legend>\n )}\n {description && (\n <p\n id={`${idSchema.$id}__description`}\n className={CSS_CLASSES.FIELD_DESCRIPTION}\n >\n {description}\n </p>\n )}\n {properties.map((prop) => prop.content)}\n </fieldset>\n )\n}\n\nconst ArrayFieldTemplate = (props) => {\n const {\n canAdd,\n disabled,\n idSchema,\n uiSchema,\n items,\n onAddClick,\n readonly,\n registry,\n schema,\n title\n } = props\n\n const uiOptions = getUiOptions(uiSchema)\n const ResolvedArrayFieldItemTemplate = getTemplate(\n 'ArrayFieldItemTemplate',\n registry,\n uiOptions\n )\n const {\n ButtonTemplates: { AddButton }\n } = registry.templates\n\n return (\n <fieldset\n className=\"field field-array field-array-of-object\"\n id={idSchema.$id}\n >\n {(uiOptions.title || title) && (\n <legend id={`${idSchema.$id}__title`}>\n {uiOptions.title || title}\n </legend>\n )}\n {(uiOptions.description || schema.description) && (\n <div className={CSS_CLASSES.FIELD_DESCRIPTION}>\n {uiOptions.description || schema.description}\n </div>\n )}\n <div className={CSS_CLASSES.ARRAY_ITEM_LIST}>\n {items?.map(({ key, ...itemProps }) => (\n <ResolvedArrayFieldItemTemplate key={key} {...itemProps} />\n ))}\n </div>\n {canAdd && (\n <div className={CSS_CLASSES.ARRAY_ITEM_ADD}>\n <p\n className={`${GRID_COLUMNS.ADD_BUTTON_CONTAINER} text-right array-item-add`}\n >\n <AddButton\n className=\"btn-add col-12\"\n onClick={onAddClick}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n </p>\n </div>\n )}\n </fieldset>\n )\n}\n\nconst customTemplates = {\n FieldTemplate,\n ObjectFieldTemplate,\n ArrayFieldTemplate,\n ArrayFieldItemTemplate,\n ButtonTemplates: {\n AddButton: (props) =>\n createButton(\n `${CSS_CLASSES.BTN_INFO} ${props.className || ''}`,\n props.onClick,\n props.disabled,\n undefined,\n <i className=\"fas fa-plus\" />,\n 0\n ),\n MoveUpButton: (props) =>\n createButton(\n `${CSS_CLASSES.BTN_OUTLINE_DARK} ${props.className || ''}`,\n props.onClick,\n props.disabled,\n undefined,\n <i className=\"fas fa-arrow-up\" />,\n -1\n ),\n MoveDownButton: (props) =>\n createButton(\n `${CSS_CLASSES.BTN_OUTLINE_DARK} ${props.className || ''}`,\n props.onClick,\n props.disabled,\n undefined,\n <i className=\"fas fa-arrow-down\" />,\n -1\n ),\n RemoveButton: (props) =>\n createButton(\n `${CSS_CLASSES.BTN_DANGER} ${props.className || ''}`,\n props.onClick,\n props.disabled,\n undefined,\n <i className=\"fas fa-times\" />,\n -1\n ),\n SubmitButton: (props) => {\n const { submitText } = props.uiSchema?.['ui:submitButtonOptions'] || {}\n return (\n <div>\n <button type=\"submit\" className={CSS_CLASSES.BTN_INFO}>\n {submitText || 'Submit'}\n </button>\n </div>\n )\n }\n }\n}\n\n// eslint-disable-next-line react/display-name\nexport default ({ plugin, onSubmit }) => {\n const { enabled, enableLogging, enableDebug } = plugin.data\n\n return (\n <Form\n validator={validator}\n schema={{\n type: 'object',\n ...(plugin.statusMessage && {\n description: `Status: ${plugin.statusMessage}`\n }),\n properties: {\n configuration: {\n type: 'object',\n title: ' ',\n description: plugin.schema.description,\n properties: plugin.schema.properties\n }\n }\n }}\n uiSchema={plugin.uiSchema ? { configuration: plugin.uiSchema } : {}}\n formData={plugin.data || {}}\n templates={customTemplates}\n onSubmit={({ formData }) => {\n onSubmit({\n ...formData,\n enabled,\n enableLogging,\n enableDebug\n })\n }}\n >\n <button type=\"submit\" className=\"btn btn-primary\">\n <i className=\"fa fa-save\" style={{ marginRight: '8px' }}></i>\n Save Configuration\n </button>\n </Form>\n )\n}\n","import React, { Component, Suspense } from 'react'\nimport {\n PLUGIN_CONFIG_PANEL,\n toLazyDynamicComponent\n} from '../Webapps/dynamicutilities'\n\nexport default class EmbeddedPluginConfigurationForm extends Component {\n constructor(props) {\n super(props)\n this.state = {\n component: toLazyDynamicComponent(\n props.plugin.packageName,\n PLUGIN_CONFIG_PANEL\n ),\n configuration: this.props.plugin.data.configuration\n }\n }\n\n render() {\n return (\n <div>\n <Suspense fallback=\"Loading...\">\n {React.createElement(this.state.component, {\n configuration: this.state.configuration,\n save: (configuration) => {\n this.props.saveData({\n ...this.props.plugin.data,\n configuration\n })\n this.setState({ configuration })\n }\n })}\n </Suspense>\n </div>\n )\n }\n}\n","import React, { Component } from 'react'\nimport PluginConfigurationForm from './../ServerConfig/PluginConfigurationForm'\nimport {\n Card,\n CardBody,\n CardHeader,\n Row,\n Col,\n Input,\n Label,\n Form,\n FormGroup,\n Table\n} from 'reactstrap'\nimport EmbeddedPluginConfigurationForm from './EmbeddedPluginConfigurationForm'\n\nconst searchStorageKey = 'admin.v1.plugins.search'\nconst openPluginStorageKey = 'admin.v1.plugins.openPlugin'\nconst statusFilterStorageKey = 'admin.v1.plugins.statusFilter'\n\nexport default class PluginConfigurationList extends Component {\n constructor(props) {\n super(props)\n this.state = {\n plugins: [],\n search: localStorage.getItem(searchStorageKey) || '',\n statusFilter: localStorage.getItem(statusFilterStorageKey) || 'all',\n searchResults: null,\n selectedPlugin: null\n }\n this.lastOpenedPlugin = '--'\n this.handleSearch = this.handleSearch.bind(this)\n this.handleStatusFilter = this.handleStatusFilter.bind(this)\n this.selectPlugin = this.selectPlugin.bind(this)\n this.handlePluginClick = this.handlePluginClick.bind(this)\n }\n\n searchPlugins(plugins, searchString) {\n const lowerCase = searchString.toLowerCase()\n return plugins.filter((plugin) => {\n return (\n plugin.id.toLowerCase().includes(lowerCase) ||\n plugin.packageName.toLowerCase().includes(lowerCase) ||\n (plugin.description &&\n plugin.description.toLowerCase().includes(lowerCase)) ||\n plugin.name.toLowerCase().includes(lowerCase)\n )\n })\n }\n\n filterPluginsByStatus(plugins, statusFilter) {\n if (statusFilter === 'all') {\n return plugins\n }\n\n return plugins.filter((plugin) => {\n const configurationRequired =\n plugin.schema &&\n plugin.schema.properties &&\n Object.keys(plugin.schema?.properties).length !== 0 &&\n (plugin.data.configuration === null ||\n plugin.data.configuration === undefined)\n\n switch (statusFilter) {\n case 'enabled':\n return !configurationRequired && plugin.data.enabled\n case 'disabled':\n return configurationRequired || !plugin.data.enabled\n default:\n return true\n }\n })\n }\n\n getFilteredPlugins() {\n // Temporarily disable caching to see if it's causing re-renders\n let filtered = this.state.plugins\n\n // Apply status filter\n filtered = this.filterPluginsByStatus(filtered, this.state.statusFilter)\n\n // Apply search filter\n if (this.state.search.length > 0) {\n filtered = this.searchPlugins(filtered, this.state.search)\n }\n\n return filtered\n }\n\n handleSearch(event) {\n const search = event.target.value\n this.setState({ search })\n localStorage.setItem(searchStorageKey, search)\n }\n\n handleStatusFilter(event) {\n const statusFilter = event.target.value\n this.setState({ statusFilter })\n localStorage.setItem(statusFilterStorageKey, statusFilter)\n }\n\n handlePluginClick(event) {\n const pluginId = event.currentTarget.getAttribute('data-plugin-id')\n const plugin = this.state.plugins.find((p) => p.id === pluginId)\n\n if (plugin) {\n const currentlySelected =\n this.state.selectedPlugin && this.state.selectedPlugin.id === plugin.id\n this.selectPlugin(currentlySelected ? null : plugin)\n }\n }\n\n selectPlugin(plugin) {\n const selectedPluginId = plugin ? plugin.id : null\n\n // Update localStorage and state only - keep URL static for best performance\n if (selectedPluginId) {\n localStorage.setItem(openPluginStorageKey, selectedPluginId)\n this.setState({ selectedPlugin: plugin })\n } else {\n localStorage.removeItem(openPluginStorageKey)\n this.setState({ selectedPlugin: null })\n }\n }\n\n scrollToSelectedPlugin(selectedPluginId) {\n if (!this.tableContainer || !selectedPluginId) return\n\n // Use a more efficient approach that doesn't cause re-renders\n const selectedRow = this.tableContainer.querySelector(\n `[data-plugin-id=\"${selectedPluginId}\"]`\n )\n if (!selectedRow) return\n\n const containerRect = this.tableContainer.getBoundingClientRect()\n const rowRect = selectedRow.getBoundingClientRect()\n\n // Check if the row is outside the visible area\n if (\n rowRect.bottom > containerRect.bottom ||\n rowRect.top < containerRect.top\n ) {\n // Calculate the scroll position to center the selected row\n const rowOffsetTop = selectedRow.offsetTop\n const containerHeight = this.tableContainer.clientHeight\n const rowHeight = selectedRow.clientHeight\n\n const targetScrollTop = rowOffsetTop - containerHeight / 2 + rowHeight / 2\n\n this.tableContainer.scrollTo({\n top: Math.max(0, targetScrollTop),\n behavior: 'smooth'\n })\n }\n }\n\n componentDidMount() {\n fetch(`${window.serverRoutesPrefix}/plugins`, {\n credentials: 'same-origin'\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json()\n } else {\n throw new Error('/plugins request failed:' + response.status)\n }\n })\n .then((plugins) => {\n // Set initial selected plugin from URL or localStorage\n const currentPluginId = this.props.match.params.pluginid\n const lastOpenPluginId = localStorage.getItem(openPluginStorageKey)\n let selectedPlugin = null\n\n if (currentPluginId && currentPluginId !== '-') {\n selectedPlugin = plugins.find(\n (plugin) => plugin.id === currentPluginId\n )\n } else if (lastOpenPluginId) {\n selectedPlugin = plugins.find(\n (plugin) => plugin.id === lastOpenPluginId\n )\n }\n\n this.setState({ plugins, selectedPlugin })\n\n // Scroll to the initially selected plugin if one exists (from URL/bookmark)\n if (selectedPlugin) {\n requestAnimationFrame(() => {\n this.scrollToSelectedPlugin(selectedPlugin.id)\n })\n }\n })\n .catch((error) => {\n console.error(error)\n alert('Could not fetch plugins list')\n })\n }\n\n render() {\n const pluginList = this.getFilteredPlugins()\n const selectedPluginId = this.state.selectedPlugin\n ? this.state.selectedPlugin.id\n : null\n\n return (\n <div>\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n <strong>Plugin Configuration</strong>\n </CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n <FormGroup row>\n <Col xs=\"3\" md=\"1\" className={'col-form-label'}>\n <Label htmlFor=\"search\">Search</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"search\"\n id=\"search\"\n onChange={this.handleSearch}\n value={this.state.search}\n placeholder=\"Search plugins...\"\n />\n </Col>\n <Col xs=\"3\" md=\"2\" className={'col-form-label'}>\n <Label htmlFor=\"statusFilter\">Filter by Status</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n name=\"statusFilter\"\n id=\"statusFilter\"\n onChange={this.handleStatusFilter}\n value={this.state.statusFilter}\n >\n <option value=\"all\">All Plugins</option>\n <option value=\"enabled\">Enabled</option>\n <option value=\"disabled\">Disabled</option>\n </Input>\n </Col>\n </FormGroup>\n </Form>\n\n <div\n ref={(container) => {\n this.tableContainer = container\n }}\n style={{\n maxHeight: '400px',\n overflowY: 'auto',\n border: '1px solid #dee2e6'\n }}\n >\n <Table\n responsive\n bordered\n striped\n size=\"sm\"\n hover\n className=\"mb-0\"\n >\n <thead\n style={{\n position: 'sticky',\n top: 0,\n backgroundColor: '#f8f9fa',\n zIndex: 1\n }}\n >\n <tr>\n <th style={{ width: '30%' }}>Plugin Name</th>\n <th style={{ width: '15%' }}>Status</th>\n <th style={{ width: '55%' }}>Description</th>\n </tr>\n </thead>\n <tbody>\n {pluginList.map((plugin) => {\n const isSelected = selectedPluginId === plugin.id\n const configurationRequired =\n plugin.schema &&\n plugin.schema.properties &&\n Object.keys(plugin.schema?.properties).length !== 0 &&\n (plugin.data.configuration === null ||\n plugin.data.configuration === undefined)\n\n return (\n <tr\n key={plugin.id}\n data-plugin-id={plugin.id}\n onClick={this.handlePluginClick}\n style={{ cursor: 'pointer' }}\n className={isSelected ? 'table-active' : ''}\n >\n <td>\n <strong>{plugin.name}</strong>\n </td>\n <td>\n <div className=\"d-flex align-items-center justify-content-between\">\n <div\n className={`badge ${plugin.data.enabled && !configurationRequired ? 'badge-success' : 'badge-secondary'}`}\n >\n {plugin.data.enabled && !configurationRequired\n ? 'Enabled'\n : 'Disabled'}\n </div>\n <i\n className=\"fa fa-cog text-muted\"\n style={{ fontSize: '16px' }}\n title=\"Click to configure\"\n ></i>\n </div>\n </td>\n <td>\n <small>\n {plugin.description || 'No description available'}\n </small>\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </div>\n </CardBody>\n </Card>\n\n {this.state.selectedPlugin && (\n <PluginConfigCard\n plugin={this.state.selectedPlugin}\n isConfigurator={isConfigurator(this.state.selectedPlugin)}\n onClose={() => this.selectPlugin(null)}\n saveData={(data) => {\n if (this.state.selectedPlugin.data.configuration === undefined) {\n data.enabled = true\n }\n return this.saveData(this.state.selectedPlugin.id, data)\n }}\n />\n )}\n </div>\n )\n }\n\n saveData(id, data) {\n return fetch(`${window.serverRoutesPrefix}/plugins/${id}/config`, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: new Headers({ 'Content-Type': 'application/json' }),\n credentials: 'same-origin'\n }).then((response) => {\n if (response.status !== 200) {\n console.error(response)\n alert('Saving plugin settings failed')\n throw new Error('Save failed')\n } else {\n const plugins = [...this.state.plugins]\n const pluginIndex = plugins.findIndex((plugin) => plugin.id === id)\n if (pluginIndex !== -1) {\n plugins[pluginIndex].data = data\n\n // Update selected plugin if it's the one being saved\n const selectedPlugin =\n this.state.selectedPlugin && this.state.selectedPlugin.id === id\n ? { ...this.state.selectedPlugin, data }\n : this.state.selectedPlugin\n\n this.setState({ plugins, selectedPlugin })\n }\n return true // Success\n }\n })\n }\n}\n\nconst isConfigurator = (pluginData) =>\n pluginData.keywords.includes('signalk-plugin-configurator')\n\nclass PluginConfigCard extends Component {\n constructor(props) {\n super(props)\n this.state = {\n showSaveSuccess: false\n }\n }\n\n showSuccessMessage = () => {\n this.setState({ showSaveSuccess: true })\n setTimeout(() => {\n this.setState({ showSaveSuccess: false })\n }, 3000) // Hide after 3 seconds\n }\n\n render() {\n const labelStyle = { marginLeft: '10px', marginBottom: '0px' }\n const { schema } = this.props.plugin\n const configurationRequired =\n schema &&\n schema.properties &&\n Object.keys(schema?.properties).length !== 0 &&\n (this.props.plugin.data.configuration === null ||\n this.props.plugin.data.configuration === undefined)\n\n return (\n <div>\n {this.state.showSaveSuccess && (\n <div\n style={{\n position: 'fixed',\n top: '20px',\n right: '20px',\n zIndex: 9999,\n maxWidth: '300px'\n }}\n >\n <div\n className=\"alert alert-success mb-0\"\n role=\"alert\"\n style={{ boxShadow: '0 4px 12px rgba(0,0,0,0.3)' }}\n >\n <i className=\"fa fa-check\"></i> Configuration saved successfully!\n </div>\n </div>\n )}\n <Card\n className=\"mt-3 plugin-config-card\"\n ref={(card) => {\n this.configCard = card\n }}\n >\n <CardHeader id=\"plugin-config-header\">\n <Row className=\"mb-2\">\n <Col className={'align-self-center'}>\n <h5 className=\"mb-0\">\n <i className=\"fa fa-cog\" style={{ marginRight: '10px' }} />\n Configure: {this.props.plugin.name}\n </h5>\n <small className=\"text-muted\">\n {this.props.plugin.packageName}\n </small>\n </Col>\n </Row>\n {!configurationRequired && (\n <Row>\n <Col lg={4} className={'mt-2 mt-lg-0'}>\n <Label\n style={labelStyle}\n className=\"switch switch-text switch-primary\"\n >\n <Input\n type=\"checkbox\"\n name=\"enabled\"\n className=\"switch-input\"\n onChange={() => {\n this.props.saveData({\n ...this.props.plugin.data,\n enabled: !this.props.plugin.data.enabled\n })\n }}\n checked={this.props.plugin.data.enabled}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <span className=\"ml-1\">Enabled</span>\n </Col>\n <Col lg={4} className={'mt-2 mt-lg-0'}>\n <Label\n style={labelStyle}\n className=\"switch switch-text switch-primary\"\n >\n <Input\n type=\"checkbox\"\n name=\"enableLogging\"\n className=\"switch-input\"\n onChange={() => {\n this.props.saveData({\n ...this.props.plugin.data,\n enableLogging: !this.props.plugin.data.enableLogging\n })\n }}\n checked={this.props.plugin.data.enableLogging}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <span className=\"ml-1\">Data logging</span>\n </Col>\n <Col lg={4} className={'mt-2 mt-lg-0'}>\n <Label\n style={labelStyle}\n className=\"switch switch-text switch-primary\"\n >\n <Input\n type=\"checkbox\"\n name=\"enableDebug\"\n className=\"switch-input \"\n onChange={() => {\n this.props.saveData({\n ...this.props.plugin.data,\n enableDebug: !this.props.plugin.data.enableDebug\n })\n }}\n checked={this.props.plugin.data.enableDebug}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <span className=\"ml-1\">Enable debug log</span>\n </Col>\n </Row>\n )}\n </CardHeader>\n <CardBody>\n {!this.props.isConfigurator && (\n <div>\n <PluginConfigurationForm\n plugin={this.props.plugin}\n onSubmit={(data) => {\n this.props\n .saveData(data)\n .then(() => {\n this.showSuccessMessage()\n })\n .catch(() => {\n // Error is already handled in saveData with alert\n })\n }}\n />\n {/* Sticky submit button */}\n <div\n style={{\n position: 'fixed',\n bottom: '20px',\n right: '20px',\n zIndex: 1000,\n backgroundColor: '#fff',\n padding: '10px',\n borderRadius: '5px',\n boxShadow: '0 4px 12px rgba(0,0,0,0.2)',\n border: '1px solid #dee2e6'\n }}\n >\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={() => {\n // Find and trigger the form's submit button\n const formSubmitBtn = document.querySelector(\n '.plugin-config-card form button[type=\"submit\"]'\n )\n if (formSubmitBtn) {\n formSubmitBtn.click()\n }\n }}\n style={{ minWidth: '140px' }}\n >\n <i\n className=\"fa fa-save\"\n style={{ marginRight: '8px' }}\n ></i>\n Save Configuration\n </button>\n </div>\n </div>\n )}\n {this.props.isConfigurator && (\n <EmbeddedPluginConfigurationForm {...this.props} />\n )}\n </CardBody>\n </Card>\n </div>\n )\n }\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n FormText\n} from 'reactstrap'\nimport EnableSecurity from './EnableSecurity'\n\nexport function fetchSecurityConfig() {\n fetch(`${window.serverRoutesPrefix}/security/config`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n this.setState({ ...data, hasData: true })\n })\n}\n\nconst adminUIOrigin = `${window.location.protocol}//${window.location.host}`\n\nclass Settings extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: false\n }\n\n this.handleChange = this.handleChange.bind(this)\n this.handleSaveConfig = this.handleSaveConfig.bind(this)\n this.fetchSecurityConfig = fetchSecurityConfig.bind(this)\n }\n\n componentDidMount() {\n if (this.props.loginStatus.authenticationRequired) {\n this.fetchSecurityConfig()\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.loginStatus.authenticationRequired !==\n prevProps.loginStatus.authenticationRequired\n ) {\n this.fetchSecurityConfig()\n }\n }\n\n handleChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.setState({ [event.target.name]: value })\n }\n\n handleSaveConfig() {\n var payload = {\n allow_readonly: this.state.allow_readonly,\n expiration: this.state.expiration,\n allowNewUserRegistration: this.state.allowNewUserRegistration,\n allowDeviceAccessRequests: this.state.allowDeviceAccessRequests,\n allowedCorsOrigins: this.state.allowedCorsOrigins,\n adminUIOrigin\n }\n fetch(`${window.serverRoutesPrefix}/security/config`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n credentials: 'include'\n })\n .then((response) => response.text())\n .then((response) => {\n this.fetchSecurityConfig()\n alert(response)\n })\n }\n\n render() {\n return (\n <div className=\"animated fadeIn\">\n {this.props.loginStatus.authenticationRequired === false && (\n <EnableSecurity />\n )}\n {this.state.hasData &&\n this.props.loginStatus.authenticationRequired && (\n <div>\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n Settings\n </CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n >\n <FormGroup row>\n <Col xs=\"0\" md=\"3\">\n <Label>Allow Readonly Access</Label>\n </Col>\n <Col md=\"9\">\n <FormGroup check>\n <div>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"allow_readonly\"\n className=\"switch-input\"\n onChange={this.handleChange}\n checked={this.state.allow_readonly}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n </div>\n </FormGroup>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"0\" md=\"3\">\n <Label>Allow New User Registration</Label>\n </Col>\n <Col md=\"9\">\n <FormGroup check>\n <div>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"allowNewUserRegistration\"\n className=\"switch-input\"\n onChange={this.handleChange}\n checked={this.state.allowNewUserRegistration}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n ></span>\n <span className=\"switch-handle\"></span>\n </Label>\n </div>\n </FormGroup>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"0\" md=\"3\">\n <Label>Allow New Device Registration</Label>\n </Col>\n <Col md=\"9\">\n <FormGroup check>\n <div>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"allowDeviceAccessRequests\"\n className=\"switch-input\"\n onChange={this.handleChange}\n checked={this.state.allowDeviceAccessRequests}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n ></span>\n <span className=\"switch-handle\"></span>\n </Label>\n </div>\n </FormGroup>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"text-input\">Remember Me timeout</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"text\"\n name=\"expiration\"\n onChange={this.handleChange}\n value={this.state.expiration}\n />\n <FormText color=\"muted\">\n Examples: 60s, 1m, 1h, 1d\n </FormText>\n </Col>\n <Col md=\"6\">\n <FormText color=\"muted\">\n How long server keeps you logged when Remember Me is\n checked in login.\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"12\">\n <Label>\n With no configuration all CORS origins are accepted,\n but client requests with credentials:include do not\n work. Add a single * origin to allow all origins with\n credentials. You can also restrict CORS requests to\n specific origins. The origin that this UI was loaded\n from is automatically added to the allowed origins so\n that requests from the UI work. Changes to the Allowed\n CORS origins requires a server restart.\n </Label>\n </Col>\n </FormGroup>{' '}\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"text-input\">Allowed CORS origins</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n <Input\n type=\"text\"\n name=\"allowedCorsOrigins\"\n onChange={this.handleChange}\n value={this.state.allowedCorsOrigins}\n />\n <FormText color=\"muted\">\n Use either * or a comma delimited list of origins,\n example:\n http://host1.name.com:3000,http://host2.name.com:3000\n </FormText>\n </Col>\n </FormGroup>\n </Form>\n </CardBody>\n <CardFooter>\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleSaveConfig}\n >\n <i className=\"fa fa-dot-circle-o\" /> Save\n </Button>\n </CardFooter>\n </Card>\n </div>\n )}\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ loginStatus }) => ({ loginStatus })\n\nexport default connect(mapStateToProps)(Settings)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Col,\n Label,\n FormGroup,\n Table,\n Row\n} from 'reactstrap'\nimport EnableSecurity from './EnableSecurity'\n\nexport function fetchSecurityUsers() {\n fetch(`${window.serverRoutesPrefix}/security/users`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n this.setState({ users: data })\n })\n}\n\nclass Users extends Component {\n constructor(props) {\n super(props)\n this.state = {}\n\n this.handleAddUser = this.handleAddUser.bind(this)\n this.fetchSecurityUsers = fetchSecurityUsers.bind(this)\n this.handleCancel = this.handleCancel.bind(this)\n this.handleApply = this.handleApply.bind(this)\n this.handleUserChange = this.handleUserChange.bind(this)\n this.deleteUser = this.deleteUser.bind(this)\n }\n\n componentDidMount() {\n if (this.props.loginStatus.authenticationRequired) {\n this.fetchSecurityUsers()\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n this.props.loginStatus.authenticationRequired !==\n prevProps.loginStatus.authenticationRequired\n ) {\n this.fetchSecurityUsers()\n }\n }\n\n handleUserChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.selectedUser[event.target.name] = value\n this.setState({\n selectedUser: this.state.selectedUser\n })\n }\n\n handleAddUser() {\n var newUser = {\n type: 'readonly',\n isNew: true\n }\n this.setState(\n {\n selectedUser: newUser,\n selectedIndex: this.state.users.length - 1\n },\n () => {\n this.refs['selectedUser'].scrollIntoView()\n }\n )\n }\n\n handleApply(event) {\n event.preventDefault()\n\n if (\n !this.state.selectedUser.userId ||\n this.state.selectedUser.userId.length === 0\n ) {\n alert('Please specify a User Id')\n return\n }\n\n if (this.state.selectedUser.password) {\n if (\n this.state.selectedUser.password !==\n this.state.selectedUser.confirmPassword\n ) {\n alert('Passwords do not match')\n return\n }\n }\n\n var isNew = this.state.selectedUser.isNew\n\n var payload = {\n password: this.state.selectedUser.password,\n type: this.state.selectedUser.type || 'readonly'\n }\n\n fetch(\n `${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,\n {\n method: isNew ? 'POST' : 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n credentials: 'include'\n }\n )\n .then((response) => response.text())\n .then((response) => {\n this.setState({\n selectedUser: null,\n selectedIndex: -1\n })\n alert(response)\n this.fetchSecurityUsers()\n })\n }\n\n deleteUser() {\n fetch(\n `${window.serverRoutesPrefix}/security/users/${this.state.selectedUser.userId}`,\n {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n credentials: 'include'\n }\n )\n .then((response) => response.text())\n .then((response) => {\n this.setState({\n selectedUser: null,\n selectedIndex: -1\n })\n alert(response)\n this.fetchSecurityUsers()\n })\n }\n\n userClicked(user, index) {\n this.setState(\n {\n selectedUser: JSON.parse(JSON.stringify(user)),\n selectedIndex: index\n },\n () => {\n this.refs['selectedUser'].scrollIntoView()\n }\n )\n }\n\n handleCancel() {\n this.setState({ selectedUser: null })\n }\n render() {\n return (\n <div className=\"animated fadeIn\">\n {this.props.loginStatus.authenticationRequired === false && (\n <EnableSecurity />\n )}\n {this.state.users && this.props.loginStatus.authenticationRequired && (\n <div>\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n Users\n </CardHeader>\n <CardBody>\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>User ID</th>\n <th>Type</th>\n </tr>\n </thead>\n <tbody>\n {(this.state.users || []).map((user, index) => {\n return (\n <tr\n key={user.userId}\n onClick={this.userClicked.bind(this, user, index)}\n >\n <td>{user.userId}</td>\n <td>{convertType(user.type)}</td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </CardBody>\n <CardFooter>\n <Button size=\"sm\" color=\"primary\" onClick={this.handleAddUser}>\n <i className=\"fa fa-plus-circle\" /> Add\n </Button>\n </CardFooter>\n </Card>\n\n {this.state.selectedUser && (\n <div ref=\"selectedUser\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n User\n </CardHeader>\n <CardBody>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"userid\">User ID</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n {this.state.selectedUser.isNew && (\n <Input\n type=\"text\"\n name=\"userId\"\n value={this.state.selectedUser.userId}\n onChange={this.handleUserChange}\n />\n )}\n {!this.state.selectedUser.isNew && (\n <Label>{this.state.selectedUser.userId}</Label>\n )}\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"password\">Password</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n <Input\n type=\"password\"\n name=\"password\"\n value={this.state.selectedUser.password}\n onChange={this.handleUserChange}\n />\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"text-input\">Confirm Password</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n <Input\n type=\"password\"\n name=\"confirmPassword\"\n value={this.state.selectedUser.confirmPassword}\n onChange={this.handleUserChange}\n />\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"select\">Permissions</Label>\n </Col>\n <Col xs=\"12\" md=\"2\">\n <Input\n type=\"select\"\n name=\"type\"\n value={this.state.selectedUser.type}\n onChange={this.handleUserChange}\n >\n <option value=\"readonly\">Read Only</option>\n <option value=\"readwrite\">Read/Write</option>\n <option value=\"admin\">Admin</option>\n </Input>\n </Col>\n </FormGroup>\n </CardBody>\n <CardFooter>\n <Row>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleApply}\n >\n <i className=\"fa fa-dot-circle-o\" /> Apply\n </Button>\n </Col>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"secondary\"\n onClick={this.handleCancel}\n >\n <i className=\"fa fa-ban\" /> Cancel\n </Button>\n </Col>\n <Col xs=\"4\" md=\"10\" className=\"text-right\">\n <Button\n size=\"sm\"\n color=\"danger\"\n onClick={this.deleteUser}\n >\n <i className=\"fa fa-ban\" /> Delete\n </Button>\n </Col>\n </Row>\n </CardFooter>\n </Card>\n </div>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ loginStatus }) => ({ loginStatus })\n\nexport default connect(mapStateToProps)(Users)\n\nfunction convertType(type) {\n if (type === 'readonly') {\n return 'Read Only'\n } else if (type === 'readwrite') {\n return 'Read/Write'\n } else if (type === 'admin') {\n return 'Admin'\n }\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Col,\n Label,\n FormGroup,\n Table,\n Row\n} from 'reactstrap'\nimport EnableSecurity from './EnableSecurity'\n\nexport function fetchSecurityDevices() {\n fetch(`${window.serverRoutesPrefix}/security/devices`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n this.setState({ devices: data })\n })\n}\n\nclass Devices extends Component {\n constructor(props) {\n super(props)\n this.state = {\n devices: []\n }\n\n this.fetchSecurityDevices = fetchSecurityDevices.bind(this)\n this.handleCancel = this.handleCancel.bind(this)\n this.handleApply = this.handleApply.bind(this)\n this.handleDeviceChange = this.handleDeviceChange.bind(this)\n this.deleteDevice = this.deleteDevice.bind(this)\n }\n\n componentDidMount() {\n if (this.props.loginStatus.authenticationRequired) {\n this.fetchSecurityDevices()\n }\n }\n\n handleDeviceChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.selectedDevice[event.target.name] = value\n this.setState({\n selectedDevice: this.state.selectedDevice\n })\n }\n\n handleApply(event) {\n event.preventDefault()\n\n var payload = {\n permissions: this.state.selectedDevice.permissions || 'readonly',\n description: this.state.selectedDevice.description\n }\n\n fetch(\n `${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n credentials: 'include'\n }\n )\n .then((response) => response.text())\n .then((response) => {\n this.setState({\n selectedDevice: null,\n selectedIndex: -1\n })\n alert(response)\n this.fetchSecurityDevices()\n })\n }\n\n deleteDevice() {\n fetch(\n `${window.serverRoutesPrefix}/security/devices/${this.state.selectedDevice.clientId}`,\n {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n credentials: 'include'\n }\n )\n .then((response) => response.text())\n .then((response) => {\n this.setState({\n selectedDevice: null,\n selectedIndex: -1\n })\n alert(response)\n this.fetchSecurityDevices()\n })\n }\n\n deviceClicked(device, index) {\n this.setState(\n {\n selectedDevice: JSON.parse(JSON.stringify(device)),\n selectedIndex: index\n },\n () => {\n this.refs['selectedDevice'].scrollIntoView()\n }\n )\n }\n\n handleCancel() {\n this.setState({ selectedDevice: null })\n }\n render() {\n return (\n <div className=\"animated fadeIn\">\n {this.props.loginStatus.authenticationRequired === false && (\n <EnableSecurity />\n )}\n {this.props.loginStatus.authenticationRequired && (\n <div>\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n Devices\n </CardHeader>\n <CardBody>\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>Client ID</th>\n <th>Description</th>\n <th>Type</th>\n </tr>\n </thead>\n <tbody>\n {(this.state.devices || []).map((device, index) => {\n return (\n <tr\n key={device.clientId}\n onClick={this.deviceClicked.bind(this, device, index)}\n >\n <td>{device.clientId}</td>\n <td>{device.description}</td>\n <td>{convertPermissions(device.permissions)}</td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </CardBody>\n <CardFooter></CardFooter>\n </Card>\n\n {this.state.selectedDevice && (\n <div ref=\"selectedDevice\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n Device\n </CardHeader>\n <CardBody>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"clientId\">Client ID</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n <Label>{this.state.selectedDevice.clientId}</Label>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"description\">Description</Label>\n </Col>\n <Col xs=\"12\" md=\"9\">\n <Input\n size=\"60\"\n style={{ width: 'auto' }}\n type=\"text\"\n name=\"description\"\n onChange={this.handleDeviceChange}\n value={this.state.selectedDevice.description}\n />\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"select\">Permissions</Label>\n </Col>\n <Col xs=\"12\" md=\"2\">\n {!this.state.selectedDevice.requestedPermissions && (\n <Input\n type=\"select\"\n name=\"permissions\"\n value={this.state.selectedDevice.permissions}\n onChange={this.handleDeviceChange}\n >\n <option value=\"readonly\">Read Only</option>\n <option value=\"readwrite\">Read/Write</option>\n <option value=\"admin\">Admin</option>\n </Input>\n )}\n {this.state.selectedDevice.requestedPermissions && (\n <Label>\n {convertPermissions(\n this.state.selectedDevice.permissions\n )}\n </Label>\n )}\n </Col>\n </FormGroup>\n </CardBody>\n <CardFooter>\n <Row>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleApply}\n >\n <i className=\"fa fa-dot-circle-o\" /> Apply\n </Button>\n </Col>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"secondary\"\n onClick={this.handleCancel}\n >\n <i className=\"fa fa-ban\" /> Cancel\n </Button>\n </Col>\n <Col xs=\"4\" md=\"10\" className=\"text-right\">\n <Button\n size=\"sm\"\n color=\"danger\"\n onClick={this.deleteDevice}\n >\n <i className=\"fa fa-ban\" /> Delete\n </Button>\n </Col>\n </Row>\n </CardFooter>\n </Card>\n </div>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ securityDevices }) => ({ securityDevices })\n\nexport default connect(mapStateToProps)(Devices)\n\nfunction convertPermissions(type) {\n if (type === 'readonly') {\n return 'Read Only'\n } else if (type === 'readwrite') {\n return 'Read/Write'\n } else if (type === 'admin') {\n return 'Admin'\n }\n}\n","import React, { Component } from 'react'\nimport {\n Container,\n Row,\n Col,\n Card,\n CardBody,\n CardFooter,\n Button,\n Form,\n Input,\n InputGroup,\n InputGroupAddon,\n InputGroupText\n} from 'reactstrap'\n\nclass Register extends Component {\n constructor(props) {\n super(props)\n this.state = {\n errorMessage: null,\n email: '',\n password: '',\n confirmPassword: '',\n registrationSent: false\n }\n this.handleInputChange = this.handleInputChange.bind(this)\n this.handleCreate = this.handleCreate.bind(this)\n }\n\n handleInputChange(event) {\n var targetName = event.target.name\n this.setState({ [event.target.name]: event.target.value }, () => {\n if (\n targetName === 'password' ||\n (targetName === 'confirmPassword' &&\n this.state.password !== this.state.confirmPassword)\n ) {\n this.setState({ errorMessage: 'Passwords do not match' })\n } else {\n this.setState({ errorMessage: null })\n }\n })\n }\n\n handleCreate() {\n if (this.state.email.length === 0) {\n this.setState({ errorMessage: 'Please enter an email address' })\n } else if (\n this.state.password.length === 0 &&\n this.state.confirmPassword.length === 0\n ) {\n this.setState({ errorMessage: 'Please enter and conform your password' })\n } else if (this.state.password !== this.state.confirmPassword) {\n //error message is already thwre\n return\n } else {\n var payload = {\n userId: this.state.email,\n password: this.state.password\n }\n fetch(`/signalk/v1/access/requests`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload),\n credentials: 'include'\n }).then((response) => {\n if (response.status !== 202) {\n response.json().then((json) => {\n this.setState({\n errorMessage: json.message ? json.message : json.result\n })\n })\n } else {\n this.setState({ registrationSent: true })\n }\n })\n }\n }\n\n render() {\n return (\n <div>\n <Container>\n <Row className=\"justify-content-center\">\n <Col md=\"6\">\n <Card className=\"mx-4\">\n <CardBody className=\"p-4\">\n <h1>Register</h1>\n {this.state.registrationSent && (\n <p className=\"text-muted\">\n Your registration has been sent\n </p>\n )}\n {!this.state.registrationSent && (\n <Form>\n <p className=\"text-muted\">Create your account</p>\n <InputGroup className=\"mb-3\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>@</InputGroupText>\n </InputGroupAddon>\n <Input\n name=\"email\"\n type=\"text\"\n placeholder=\"Email\"\n onChange={this.handleInputChange}\n />\n </InputGroup>\n <InputGroup className=\"mb-3\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-lock\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n name=\"password\"\n type=\"password\"\n placeholder=\"Password\"\n onChange={this.handleInputChange}\n />\n </InputGroup>\n <InputGroup className=\"mb-0\">\n <InputGroupAddon addonType=\"prepend\">\n <InputGroupText>\n <i className=\"icon-lock\" />\n </InputGroupText>\n </InputGroupAddon>\n <Input\n name=\"confirmPassword\"\n type=\"password\"\n placeholder=\"Repeat password\"\n onChange={this.handleInputChange}\n />\n </InputGroup>\n {this.state.errorMessage && (\n <p className=\"text-danger mt-3 mb-0\">\n {this.state.errorMessage}\n </p>\n )}\n </Form>\n )}\n </CardBody>\n {!this.state.registrationSent && (\n <CardFooter className=\"p-4\">\n <Row>\n <Col xs=\"12\" sm=\"12\">\n <Button\n color=\"success\"\n block\n onClick={this.handleCreate}\n >\n Create Account\n </Button>\n </Col>\n </Row>\n </CardFooter>\n )}\n </Card>\n </Col>\n </Row>\n </Container>\n </div>\n )\n }\n}\n\nexport default Register\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Col,\n Label,\n FormGroup,\n FormText,\n Table,\n Row,\n Badge\n} from 'reactstrap'\nimport EnableSecurity from './EnableSecurity'\n\nclass AccessRequests extends Component {\n constructor(props) {\n super(props)\n this.state = {\n selectedRequest: null,\n accessRequestsApproving: [],\n accessRequestsDenying: []\n }\n this.handleRequestChange = this.handleRequestChange.bind(this)\n }\n\n handleAccessRequest(identifier, approved) {\n var stateKey = approved\n ? 'accessRequestsApproving'\n : 'accessRequestsDenying'\n this.state[stateKey].push(identifier)\n this.setState({ stateKey: this.state })\n\n var payload = {\n permissions: this.state.selectedRequest.permissions || 'readonly',\n config: this.state.selectedRequest.config,\n expiration: this.state.selectedRequest.expiration || '1y'\n }\n\n fetch(\n `${window.serverRoutesPrefix}/security/access/requests/${identifier}/${\n approved ? 'approved' : 'denied'\n }`,\n {\n method: 'PUT',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }\n )\n .then((response) => response.text())\n .then(() => {\n this.state[stateKey] = this.state[stateKey].filter(\n (id) => id !== identifier\n )\n this.setState({\n stateKey: this.state[stateKey],\n selectedRequest: null\n })\n })\n }\n\n requestClicked(event, request, index) {\n this.setState(\n {\n selectedRequest: JSON.parse(JSON.stringify(request)),\n selectedIndex: index\n },\n () => {\n this.refs['selectedRequest'].scrollIntoView()\n }\n )\n }\n\n handleRequestChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.selectedRequest[event.target.name] = value\n this.setState({\n selectedRequest: this.state.selectedRequest\n })\n }\n handleCancel() {\n this.setState({ selectedRequest: null })\n }\n\n render() {\n return (\n <div className=\"animated fadeIn\">\n {this.props.loginStatus.authenticationRequired === false && (\n <EnableSecurity />\n )}\n {this.props.loginStatus.authenticationRequired && (\n <div>\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\"></i>Access Requests\n </CardHeader>\n <CardBody>\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>Permissions</th>\n <th>Identifier</th>\n <th>Description</th>\n <th>Source IP</th>\n </tr>\n </thead>\n <tbody>\n {(this.props.accessRequests || []).map((req, index) => {\n return (\n <tr\n key={req.accessIdentifier}\n onClick={this.requestClicked.bind(\n this,\n event,\n req,\n index\n )}\n >\n <td>\n {req.permissions === 'admin' ? (\n <Badge color=\"danger\">Admin</Badge>\n ) : req.permissions === 'readwrite' ? (\n <Badge color=\"warning\">Read/Write</Badge>\n ) : (\n <Badge color=\"secondary\">Read Only</Badge>\n )}\n </td>\n <td>{req.accessIdentifier}</td>\n <td>{req.accessDescription}</td>\n <td>{req.ip}</td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </CardBody>\n </Card>\n\n {this.state.selectedRequest && (\n <div ref=\"selectedRequest\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\"></i>Request\n </CardHeader>\n <CardBody>\n <FormGroup row>\n <Col md=\"4\" lg=\"2\">\n <Label>Identifier</Label>\n </Col>\n <Col xs=\"12\" md=\"8\">\n <Label>\n {this.state.selectedRequest.accessIdentifier}\n </Label>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"4\" lg=\"2\">\n <Label>Description</Label>\n </Col>\n <Col xs=\"12\" md=\"8\">\n <Label>\n {this.state.selectedRequest.accessDescription}\n </Label>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"4\" lg=\"2\">\n <Label htmlFor=\"text-input\">\n Authentication Timeout\n </Label>\n </Col>\n <Col xs=\"12\" md=\"8\" lg=\"3\">\n <Input\n type=\"text\"\n name=\"expiration\"\n onChange={this.handleRequestChange}\n value={this.state.selectedRequest.expiration}\n />\n <FormText color=\"muted\">\n Examples: 60s, 1m, 1h, 1d, NEVER\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"4\" lg=\"2\">\n <Label htmlFor=\"select\">Permissions</Label>\n </Col>\n <Col xs=\"12\" md=\"8\" lg=\"3\">\n {!this.state.selectedRequest.requestedPermissions && (\n <Input\n type=\"select\"\n name=\"permissions\"\n value={this.state.selectedRequest.permissions}\n onChange={this.handleRequestChange}\n >\n <option value=\"readonly\">Read Only</option>\n <option value=\"readwrite\">Read/Write</option>\n <option value=\"admin\">Admin</option>\n </Input>\n )}\n {this.state.selectedRequest.requestedPermissions && (\n <Label>\n {this.state.selectedRequest.permissions ===\n 'admin' ? (\n <Badge\n color=\"danger\"\n style={{ fontSize: 'large' }}\n >\n Admin\n </Badge>\n ) : this.state.selectedRequest.permissions ===\n 'readwrite' ? (\n <Badge\n color=\"warning\"\n style={{ fontSize: 'large' }}\n >\n Read/Write\n </Badge>\n ) : (\n <Badge\n color=\"secondary\"\n style={{ fontSize: 'large' }}\n >\n Read Only\n </Badge>\n )}\n </Label>\n )}\n </Col>\n </FormGroup>\n </CardBody>\n <CardFooter>\n <Row\n className={\n 'ml-0 mr-0 d-flex justify-content-between justify-content-sm-start'\n }\n >\n <Col xs=\"4\" md=\"4\" lg=\"2\" className={'pl-0 pr-0 pr-md-2'}>\n <Button\n size=\"md\"\n color=\"success\"\n onClick={this.handleAccessRequest.bind(\n this,\n this.state.selectedRequest.accessIdentifier,\n true\n )}\n >\n <i\n className={\n this.state.accessRequestsApproving.indexOf(\n this.state.selectedRequest.accessIdentifier\n ) !== -1\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-check'\n }\n ></i>{' '}\n Approve\n </Button>\n </Col>\n <Col\n xs=\"4\"\n md=\"8\"\n lg=\"3\"\n className={'pl-2 pl-lg-1 pr-0 pr-md-2'}\n >\n <Button\n size=\"md\"\n color=\"danger\"\n className=\"float-right float-sm-left\"\n onClick={this.handleAccessRequest.bind(\n this,\n this.state.selectedRequest.accessIdentifier,\n false\n )}\n >\n <i\n className={\n this.state.accessRequestsDenying.indexOf(\n this.state.selectedRequest.accessIdentifier\n ) !== -1\n ? 'fa fa-spinner fa-spin'\n : 'fa fa-ban'\n }\n ></i>{' '}\n Deny\n </Button>\n </Col>\n </Row>\n </CardFooter>\n </Card>\n </div>\n )}\n </div>\n )}\n </div>\n )\n }\n}\n\nconst mapStateToProps = ({ accessRequests, loginStatus }) => ({\n accessRequests,\n loginStatus\n})\n\nexport default connect(mapStateToProps)(AccessRequests)\n","import React, { Component } from 'react'\nimport {\n Table,\n Input,\n Button,\n Card,\n CardBody,\n CardHeader,\n Label\n} from 'reactstrap'\n\nclass N2KFilters extends Component {\n constructor() {\n super()\n\n this.handleAddFilter = this.handleAddFilter.bind(this)\n this.handleEnabledChange = this.handleEnabledChange.bind(this)\n }\n\n filterChanged(filter, event) {\n filter[event.target.name] = event.target.value\n this.props.onChange(event)\n }\n\n deleteFilter(index, event) {\n this.props.value.options.filters.splice(index, 1)\n this.props.onChange(event)\n }\n\n handleEnabledChange(event) {\n this.props.value.options.filtersEnabled = event.target.checked\n this.props.onChange(event)\n }\n\n handleAddFilter(event) {\n if (!this.props.value.options.filters) {\n this.props.value.options.filters = []\n }\n this.props.value.options.filters.push({ source: '', pgn: '' })\n this.props.onChange(event)\n }\n\n render() {\n const sourceName = this.props.value.options.useCanName\n ? 'Can NAME'\n : 'Address'\n return (\n <div>\n <Card>\n <CardHeader>Filters</CardHeader>\n <CardBody>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"filtersEnabled\"\n className=\"switch-input\"\n checked={this.props.value.options.filtersEnabled}\n onChange={this.handleEnabledChange}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n Enabled <br />\n <br />\n Filter out all messages from a specific {sourceName} by entering\n just the {sourceName}.<br />\n Filter out a specific PGN from all devices by entering just the PGN.\n <br />\n Filter out a specific PGN from a specific {sourceName} by entering\n both.\n <br />\n <br />\n {this.props.value.options.filters &&\n this.props.value.options.filters.length > 0 && (\n <Table responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>{sourceName}</th>\n <th>PGN</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {this.props.value.options.filters.map((filter, index) => {\n return (\n <tr key={index}>\n <td>\n <Input\n type=\"text\"\n name=\"source\"\n value={filter.source}\n onChange={this.filterChanged.bind(this, filter)}\n />\n </td>\n <td>\n <Input\n type=\"text\"\n name=\"pgn\"\n value={filter.pgn}\n onChange={this.filterChanged.bind(this, filter)}\n />\n </td>\n <td>\n <Button\n color=\"link\"\n className=\"text-danger\"\n onClick={this.deleteFilter.bind(this, index)}\n >\n <i className=\"fas fa-trash\" />\n </Button>\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n )}\n <Button size=\"sm\" color=\"primary\" onClick={this.handleAddFilter}>\n <i className=\"fa fa-plus-circle\" /> Add\n </Button>\n </CardBody>\n </Card>\n </div>\n )\n }\n}\n\nexport default N2KFilters\n","import React, { Component } from 'react'\nimport { Input, FormGroup, FormText, Col, Label } from 'reactstrap'\nimport N2KFilters from './N2KFilters'\n\nclass BasicProvider extends Component {\n constructor() {\n super()\n this.state = {\n hasAnalyzer: false\n }\n }\n\n componentDidMount() {\n fetch(`${window.serverRoutesPrefix}/hasAnalyzer`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((value) => {\n this.setState({ hasAnalyzer: value })\n })\n }\n\n render() {\n const lookup = {\n NMEA2000: NMEA2000,\n NMEA0183: NMEA0183,\n SignalK: SignalK,\n Seatalk: Seatalk,\n FileStream: FileStream\n }\n let TypeComponent = lookup[this.props.value.type] || (() => null)\n\n return (\n <div>\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label htmlFor=\"select\">Data Type</Label>\n </Col>\n <Col xs=\"6\" md=\"3\">\n {this.props.value.isNew ? (\n <Input\n type=\"select\"\n value={this.props.value.type}\n name=\"type\"\n onChange={(event) => this.props.onChange(event)}\n >\n <option value=\"NMEA2000\">NMEA 2000</option>\n <option value=\"NMEA0183\">NMEA 0183</option>\n <option value=\"SignalK\">Signal K</option>\n <option value=\"Seatalk\">Seatalk (GPIO)</option>\n <option value=\"FileStream\">File Stream</option>\n </Input>\n ) : (\n this.props.value.type\n )}\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Enabled</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"enabled\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.enabled}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n {this.props.value.type !== 'FileStream' && (\n <LoggingInput\n value={this.props.value}\n onChange={this.props.onChange}\n />\n )}\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"id\">ID</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"text\"\n name=\"id\"\n value={this.props.value.id}\n disabled={!this.props.value.isNew}\n onChange={(event) => {\n const dummyEvent = {\n target: {\n name: event.target.name,\n type: event.target.type,\n value: (event.target.value || '').replace(\n /[^a-zA-Z\\d-_]/g,\n ''\n )\n }\n }\n this.props.onChange(dummyEvent)\n }}\n />\n </Col>\n </FormGroup>\n <TypeComponent\n value={this.props.value}\n onChange={this.props.onChange}\n hasAnalyzer={this.state.hasAnalyzer}\n />\n <OverrideTimestamps\n value={this.props.value.options}\n onChange={this.props.onChange}\n />\n\n {this.props.value.type === 'NMEA2000' && (\n <N2KFilters\n value={this.props.value}\n onChange={this.props.onPropChange}\n />\n )}\n </div>\n )\n }\n}\n\nexport default BasicProvider\n\nclass TextInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor={this.props.name}>{this.props.title}</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"text\"\n name={this.props.name}\n value={this.props.value}\n onChange={(event) => this.props.onChange(event)}\n />\n {this.props.helpText && (\n <FormText color=\"muted\">{this.props.helpText}</FormText>\n )}\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass TextAreaInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor={this.props.name}>{this.props.title}</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"textarea\"\n name={this.props.name}\n value={this.props.value}\n rows={this.props.rows}\n onChange={(event) => this.props.onChange(event)}\n />\n {this.props.helpText && (\n <FormText color=\"muted\">{this.props.helpText}</FormText>\n )}\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass DeviceInput extends Component {\n constructor() {\n super()\n this.state = {\n devices: {}\n }\n }\n\n componentDidMount() {\n fetch(`${window.serverRoutesPrefix}/serialports`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n data.serialports = data.serialports.map((portInfo) => portInfo.path)\n this.setState({\n devices: data\n })\n })\n }\n\n render() {\n const isManualEntry = !isListedDevice(\n this.props.value.device,\n this.state.devices\n )\n let manualEntryValue = isManualEntry\n ? this.props.value.device === 'Enter manually'\n ? ''\n : this.props.value.device\n : ''\n return (\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"serialportselect\">Serial port</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n name=\"options.device\"\n id=\"serialportselect\"\n onChange={this.props.onChange}\n helpText=\"help me\"\n value={isManualEntry ? 'Enter manually' : this.props.value.device}\n >\n <option key=\"enterManually\">Enter manually</option>\n {serialportListOptions(\n ['byOpenPlotter', 'byId', 'byPath', 'serialports'],\n ['OpenPlotter managed:', 'by-id:', 'by-path:', 'Listed:'],\n this.state.devices\n )}\n </Input>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"text\"\n name=\"options.device\"\n disabled={!isManualEntry}\n value={manualEntryValue || ''}\n onChange={(event) => this.props.onChange(event)}\n />\n </Col>\n </FormGroup>\n )\n }\n}\n\nconst isListedDevice = (device, deviceListMap) => {\n const list = Object.keys(deviceListMap).reduce((acc, key) => {\n return acc.concat(deviceListMap[key])\n }, [])\n return list.includes(device)\n}\n\nconst serialportListOptions = (keys, labels, deviceListMap) => {\n return keys.reduce((acc, key, j) => {\n if (deviceListMap[key] && deviceListMap[key].length > 0) {\n acc.push(\n <option disabled=\"true\" key={key}>\n {labels[j]}\n </option>\n )\n deviceListMap[key].forEach((device, i) => {\n acc.push(<option key={`${key}${i}`}>{device}</option>)\n })\n }\n return acc\n }, [])\n}\n\nclass LoggingInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Data Logging</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"logging\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.logging}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass ValidateChecksumInput extends Component {\n constructor(props) {\n super(props)\n this.props.value.validateChecksum =\n typeof this.props.value.validateChecksum === 'undefined' ||\n this.props.value.validateChecksum\n }\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Validate Checksum</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.validateChecksum\"\n className=\"switch-input\"\n onChange={(event) => {\n this.props.onChange(event)\n if (this.props.value.validateChecksum) {\n this.props.value.appendChecksum = false\n }\n }}\n checked={this.props.value.validateChecksum}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass OverrideTimestamps extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Override timestamps</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.overrideTimestamp\"\n className=\"switch-input\"\n onChange={this.props.onChange}\n checked={this.props.value.overrideTimestamp}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass RemoveNullsInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Remove NULL characters</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.removeNulls\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.removeNulls}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass AppendChecksum extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Append Checksum</Label>\n </Col>\n <Col xs=\"2\" md=\"1\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.appendChecksum\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={\n this.props.value.appendChecksum &&\n !this.props.value.validateChecksum\n }\n disabled={!!this.props.value.validateChecksum}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n <Col xs=\"12\" md=\"6\">\n {this.props.value.validateChecksum && (\n <label className=\"text-muted small\">\n Turn Validate Checksum OFF to enable appending the checksum\n </label>\n )}\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass SentenceEventInput extends Component {\n render() {\n return (\n <TextInput\n title=\"Input Event\"\n name=\"options.sentenceEvent\"\n helpText=\"Additional event name for incoming sentences. Example: nmea1data\"\n value={this.props.value.sentenceEvent}\n onChange={this.props.onChange}\n />\n )\n }\n}\n\nclass DataTypeInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"dataType\">Data Type</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"select\"\n value={this.props.value.options.dataType}\n name=\"options.dataType\"\n onChange={(event) => this.props.onChange(event)}\n >\n {!this.props.value.options.dataType && (\n <option value=\"\">Select data type</option>\n )}\n <option value=\"SignalK\">Signal K</option>\n <option value=\"NMEA2000JS\">Actisense NMEA 2000 (canboatjs)</option>\n <option value=\"NMEA2000IK\">iKonvert NMEA 2000 (canboatjs)</option>\n <option value=\"NMEA2000YD\">\n Yacht Devices YDGW-02 NMEA 2000 (canboatjs)\n </option>\n <option value=\"NMEA2000\" disabled={!this.props.hasAnalyzer}>\n NMEA 2000 (canboat)\n </option>\n <option value=\"NMEA0183\">NMEA 0183</option>\n {this.props.value.type === 'FileStream' && (\n <option value=\"Multiplexed\">Multiplexed Log</option>\n )}\n </Input>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass BaudRateIntput extends Component {\n render() {\n return (\n <TextInput\n title=\"Baud Rate\"\n name=\"options.baudrate\"\n helpText=\"Example: 4800\"\n value={this.props.value.baudrate}\n onChange={(event) => this.props.onChange(event, 'number')}\n />\n )\n }\n}\n\nclass BaudRateIntputCanboat extends Component {\n constructor(props) {\n super(props)\n this.props.value.baudrate =\n this.props.value.baudrate ||\n (this.props.value.type === 'ikonvert-canboatjs' ? 230400 : 115200)\n }\n\n render() {\n return (\n <TextInput\n title=\"Baud Rate\"\n name=\"options.baudrate\"\n value={this.props.value.baudrate}\n onChange={(event) => this.props.onChange(event, 'number')}\n />\n )\n }\n}\n\nclass StdOutInput extends Component {\n constructor(props) {\n super()\n this.state = StdOutInput.getDerivedStateFromProps(props)\n this.onChange = this.onChange.bind(this)\n }\n\n static getDerivedStateFromProps(props) {\n let value = props.value.toStdout\n if (Array.isArray(value)) {\n value = value.join(',')\n }\n return { value }\n }\n onChange(e) {\n this.setState({ value: e.target.value })\n this.props.onChange({\n target: {\n type: e.target.type,\n name: e.target.name,\n value: e.target.value.split(',')\n }\n })\n }\n render() {\n return (\n <TextInput\n title=\"Output Events\"\n name=\"options.toStdout\"\n helpText=\"Events that should be written as output to this connection. Example: nmea0183,nmea0183out\"\n value={this.state.value}\n onChange={this.onChange}\n />\n )\n }\n}\n\nclass IgnoredSentences extends Component {\n constructor(props) {\n super()\n this.onChange = this.onChange.bind(this)\n this.state = IgnoredSentences.getDerivedStateFromProps(props)\n }\n\n static getDerivedStateFromProps(props) {\n let value = props.value.ignoredSentences\n if (Array.isArray(value)) {\n value = value.join(',')\n }\n return { value }\n }\n\n onChange(e) {\n this.setState({ value: e.target.value })\n this.props.onChange({\n target: {\n type: e.target.type,\n name: e.target.name,\n value: e.target.value.split(',')\n }\n })\n }\n render() {\n return (\n <TextInput\n title=\"Ignored Sentences\"\n name=\"options.ignoredSentences\"\n helpText=\"NMEA0183 sentences to throw away from the input data. Example: RMC,ROT\"\n value={this.state.value}\n onChange={this.onChange}\n />\n )\n }\n}\n\nclass PortInput extends Component {\n render() {\n return (\n <TextInput\n title=\"Port\"\n name=\"options.port\"\n helpText=\"Example: 4123\"\n value={this.props.value.port}\n onChange={this.props.onChange}\n />\n )\n }\n}\n\nclass HostInput extends Component {\n render() {\n return (\n <TextInput\n title=\"Host\"\n name=\"options.host\"\n helpText=\"Example: localhost\"\n value={this.props.value.host}\n onChange={this.props.onChange}\n />\n )\n }\n}\n\nclass NoDataReceivedTimeoutInput extends Component {\n render() {\n return (\n <TextInput\n title=\"No data timeout\"\n name=\"options.noDataReceivedTimeout\"\n helpText=\"Timeout for no data received in seconds. Socket is disconnected and reconnection attempted if timeout is reached. Leave empty or 0 to disable.\"\n value={this.props.value.noDataReceivedTimeout}\n onChange={this.props.onChange}\n />\n )\n }\n}\n\nclass RemoteSelfInput extends Component {\n render() {\n return (\n <TextInput\n title=\"Remote 'self' to use\"\n name=\"options.remoteSelf\"\n helpText=\"like vessels.urn:mrn:signalk:uuid:f6d9f041-4e61-4335-82c0-7a51fb10ae86 OR vessels.urn:mrn:imo:mmsi:230099999\"\n value={this.props.value.remoteSelf}\n onChange={this.props.onChange}\n />\n )\n }\n}\n\nclass Suppress0183Checkbox extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Suppress nmea0183 event</Label>\n </Col>\n <Col xs=\"1\" md=\"1\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.suppress0183event\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.suppress0183event}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n <Col xs=\"12\" md=\"6\">\n <label className=\"text-muted small\">\n Supress sending the default nmea0183 event for incoming sentences\n </label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass UseCanNameInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Use Can NAME in source data</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.useCanName\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.useCanName}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass CamelCaseCompatInput extends Component {\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>CamcelCase Compat (for legacy N2K plugins)</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.useCamelCompat\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={\n this.props.value.useCamelCompat !== undefined\n ? this.props.value.useCamelCompat\n : true\n }\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nclass CollectNetworkStatsInput extends Component {\n constructor(props) {\n super(props)\n }\n render() {\n return (\n <FormGroup row>\n <Col xs=\"3\" md=\"3\">\n <Label>Collect Network Statistics</Label>\n </Col>\n <Col xs=\"2\" md=\"3\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"options.sendNetworkStats\"\n className=\"switch-input\"\n onChange={(event) => this.props.onChange(event)}\n checked={this.props.value.sendNetworkStats}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n )\n }\n}\n\nconst NMEA2000 = (props) => {\n return (\n <div>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"options.type\">NMEA 2000 Source</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n value={props.value.options.type || 'none'}\n name=\"options.type\"\n onChange={(event) => props.onChange(event)}\n >\n <option value=\"none\">Select a source</option>\n <option value=\"ngt-1-canboatjs\">Actisense NGT-1 (canboatjs)</option>\n <option value=\"ngt-1\" disabled={!props.hasAnalyzer}>\n Actisense NGT-1 (canboat)\n </option>\n <option value=\"ikonvert-canboatjs\">iKonvert (canboatjs)</option>\n <option value=\"navlink2-tcp-canboatjs\">NavLink2 (canboatjs)</option>\n\n <option value=\"ydwg02-canboatjs\">\n Yacht Devices RAW TCP (canboatjs)\n </option>\n <option value=\"ydwg02-udp-canboatjs\">\n Yacht Devices RAW UDP (canboatjs)\n </option>\n <option value=\"ydwg02-usb-canboatjs\">\n Yacht Devices RAW USB (canboatjs)\n </option>\n <option value=\"canbus-canboatjs\">Canbus (canboatjs)</option>\n <option value=\"w2k-1-n2k-ascii-canboatjs\">\n W2K-1 N2K ASCII (canboatjs)\n </option>\n <option value=\"w2k-1-n2k-actisense-canboatjs\">\n W2K-1 N2K ACTISENSE (canboatjs)\n </option>\n <option value=\"canbus\" disabled={!props.hasAnalyzer}>\n Canbus (canboat)\n </option>\n </Input>\n </Col>\n </FormGroup>\n {(props.value.options.type === 'ngt-1' ||\n props.value.options.type === 'ngt-1-canboatjs' ||\n props.value.options.type === 'ydwg02-usb-canboatjs' ||\n props.value.options.type === 'ikonvert-canboatjs') && (\n <div>\n <DeviceInput value={props.value.options} onChange={props.onChange} />\n <BaudRateIntputCanboat\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n )}\n {props.value.options.type === 'ydwg02-canboatjs' && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n <NoDataReceivedTimeoutInput\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n )}\n {props.value.options.type === 'ydwg02-udp-canboatjs' && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n </div>\n )}\n {props.value.options.type === 'navlink2-tcp-canboatjs' && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n <NoDataReceivedTimeoutInput\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n )}\n {(props.value.options.type === 'canbus' ||\n props.value.options.type === 'canbus-canboatjs') && (\n <div>\n <TextInput\n title=\"Interface\"\n name=\"options.interface\"\n helpText=\"Example: can0\"\n value={props.value.options.interface}\n onChange={props.onChange}\n />\n <TextInput\n title=\"UniqueNumber\"\n name=\"options.uniqueNumber\"\n helpText=\"Example: any number from 1 to 2097151, will be equal to SerialNumber of a SignalK NMEA2000 device. Leave empty for random (default). Set a fixed value if you have problem with source identification on some B&G MFD's after SignalK restart.\"\n value={props.value.options.uniqueNumber}\n onChange={props.onChange}\n />\n <TextInput\n title=\"ManufacturerCode\"\n name=\"options.mfgCode\"\n helpText=\"Example: 999 - Unknown (default), 0 - Internal, or any other mabufacturer code to emulate. Leave empty for default 999. Set to 0 if you have problem with source identification on some B&G MFD's after SignalK restart.\"\n value={props.value.options.mfgCode}\n onChange={props.onChange}\n />\n </div>\n )}\n {(props.value.options.type === 'ngt-1-canboatjs' ||\n props.value.options.type === 'ikonvert-canboatjs' ||\n props.value.options.type === 'navlink2-tcp-canboatjs') && (\n <CollectNetworkStatsInput\n value={props.value.options}\n onChange={props.onChange}\n />\n )}\n {(props.value.options.type === 'w2k-1-n2k-ascii-canboatjs' ||\n props.value.options.type === 'w2k-1-n2k-actisense-canboatjs') && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n <NoDataReceivedTimeoutInput\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n )}\n <UseCanNameInput value={props.value.options} onChange={props.onChange} />\n {props.value.options.type !== undefined &&\n props.value.options.type.indexOf('canboatjs') !== -1 && (\n <CamelCaseCompatInput\n value={props.value.options}\n onChange={props.onChange}\n />\n )}\n </div>\n )\n}\n\nconst NMEA0183 = (props) => {\n return (\n <div>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"options.type\">NMEA 0183 Source</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n value={props.value.options.type}\n name=\"options.type\"\n onChange={(event) => props.onChange(event)}\n >\n <option>Select a source</option>\n <option value=\"serial\">Serial</option>\n <option value=\"tcp\">TCP Client</option>\n <option value=\"tcpserver\">TCP Server on port 10110</option>\n <option value=\"udp\">UDP</option>\n <option value=\"gpsd\">GPSD</option>\n </Input>\n </Col>\n {props.value.options.type === 'serial' && (\n <Col xs=\"12\" md=\"6\">\n Serial ports are bidirectional. Input from the connection is parsed\n as NMEA0183. Configure Output Events below to connect server's\n NMEA0183 data for output.\n </Col>\n )}\n {props.value.options.type === 'tcpserver' && (\n <Col xs=\"12\" md=\"6\">\n Accept input from clients connected to the default TCP/10110\n NMEA0183 server\n </Col>\n )}\n </FormGroup>\n {serialParams(props)}\n {(props.value.options.type === 'tcp' ||\n props.value.options.type === 'gpsd') && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n <StdOutInput value={props.value.options} onChange={props.onChange} />\n <NoDataReceivedTimeoutInput\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n )}\n <div>\n <Suppress0183Checkbox\n value={props.value.options}\n onChange={props.onChange}\n />\n </div>\n {props.value.options.type === 'udp' && (\n <PortInput value={props.value.options} onChange={props.onChange} />\n )}\n <SentenceEventInput\n value={props.value.options}\n onChange={props.onChange}\n />\n <ValidateChecksumInput\n value={props.value.options}\n onChange={props.onChange}\n />\n <AppendChecksum value={props.value.options} onChange={props.onChange} />\n <RemoveNullsInput value={props.value.options} onChange={props.onChange} />\n <IgnoredSentences value={props.value.options} onChange={props.onChange} />\n </div>\n )\n}\n\nconst SignalK = (props) => {\n return (\n <div>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"options.type\">SignalK Source</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n value={props.value.options.type}\n name=\"options.type\"\n onChange={(event) => props.onChange(event)}\n disabled={props.value.options.useDiscovery}\n helpText=\"afoo\"\n >\n <option>Select a source</option>\n <option value=\"serial\">Serial</option>\n <option value=\"ws\">WebSocket</option>\n <option value=\"wss\">WebSocket SSL</option>\n <option value=\"tcp\">TCP</option>\n <option value=\"udp\">UDP</option>\n </Input>\n </Col>\n </FormGroup>\n {props.value.options.useDiscovery && (\n <p className=\"text-danger\">\n This connection is deprecated, please delete it and recreate it with\n the connection automatically discovered at the top of the page.\n </p>\n )}\n {!props.value.options.useDiscovery &&\n (props.value.options.type === 'ws' ||\n props.value.options.type === 'wss' ||\n props.value.options.type === 'tcp') && (\n <div>\n <HostInput value={props.value.options} onChange={props.onChange} />\n <PortInput value={props.value.options} onChange={props.onChange} />\n {props.value.options.type === 'wss' && (\n <FormGroup row>\n <Col xs=\"0\" md=\"3\">\n <Label>Allow self signed certificates</Label>\n </Col>\n <Col xs=\"12\" md=\"8\">\n <div key={name}>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"options.selfsignedcert\"\n name=\"options.selfsignedcert\"\n className=\"switch-input\"\n onChange={props.onChange}\n checked={props.value.options.selfsignedcert}\n disabled={!(props.value.options.type === 'wss')}\n />\n <span\n className=\"switch-label\"\n data-on=\"On\"\n data-off=\"Off\"\n />\n <span className=\"switch-handle\" />\n </Label>\n </div>\n </Col>\n </FormGroup>\n )}\n {(props.value.options.type === 'ws' ||\n props.value.options.type === 'wss') && (\n <div>\n <TextAreaInput\n title=\"Subscription\"\n name=\"options.subscription\"\n rows=\"6\"\n value={props.value.options.subscription}\n onChange={(event) => props.onChange(event, 'jsonstring')}\n helpText=\"Defaults to all. This can be an array of subscriptions.\"\n />\n </div>\n )}\n </div>\n )}\n {props.value.options.type === 'udp' && (\n <PortInput value={props.value.options} onChange={props.onChange} />\n )}\n {serialParams(props)}\n {!props.value.options.useDiscovery && (\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"options.type\">'self' handling</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n value={props.value.options.selfHandling || 'noSelf'}\n name=\"options.selfHandling\"\n onChange={(event) => props.onChange(event)}\n >\n <option value=\"useRemoteSelf\">\n Map remote 'self' to local 'self'\n </option>\n <option value=\"manualSelf\">Manual mapping</option>\n <option value=\"noSelf\">No 'self' mapping</option>\n </Input>\n </Col>\n </FormGroup>\n )}\n {!props.value.options.useDiscovery &&\n props.value.options.selfHandling === 'manualSelf' && (\n <RemoteSelfInput\n value={props.value.options}\n onChange={props.onChange}\n />\n )}\n </div>\n )\n}\n\nconst gpios = [\n 4, 5, 6, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27\n].map((gpio) => `0${gpio}`.slice(-2))\nconst Seatalk = (props) => (\n <span>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"options.type\">GPIO Library</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n value={props.value.options.type || 'none'}\n name=\"options.type\"\n onChange={(event) => props.onChange(event)}\n >\n <option value=\"none\">Select a library</option>\n <option value=\"gpiod\">gpiod</option>\n <option value=\"pigpio\">pigpio (legacy)</option>\n </Input>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"gpio\">GPIO Pin</Label>\n </Col>\n <Col xs=\"12\" md=\"3\">\n <Input\n type=\"select\"\n name=\"options.gpio\"\n id=\"gpio\"\n onChange={props.onChange}\n value={props.value.options.gpio || gpios[0]}\n >\n {gpios.map((gpio) => (\n <option key={gpio}>{`GPIO${gpio}`}</option>\n ))}\n </Input>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"3\">\n <Label htmlFor=\"gpioInvert\">Invert signal</Label>\n </Col>\n <Col xs=\"12\" md=\"10\">\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"gpioInvert\"\n name=\"options.gpioInvert\"\n className=\"switch-input\"\n onChange={props.onChange}\n checked={props.value.options.gpioInvert}\n />\n <span className=\"switch-label\" data-on=\"Yes\" data-off=\"No\" />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n </span>\n)\n\nconst FileStream = (props) => {\n return (\n <div>\n <DataTypeInput\n hasAnalyzer={props.hasAnalyzer}\n value={props.value}\n onChange={props.onChange}\n />\n <TextInput\n title=\"File Name\"\n name=\"options.filename\"\n value={props.value.options.filename}\n onChange={props.onChange}\n />\n </div>\n )\n}\n\nconst serialParams = (props) =>\n props.value.options.type === 'serial' && (\n <div>\n <DeviceInput value={props.value.options} onChange={props.onChange} />\n <BaudRateIntput value={props.value.options} onChange={props.onChange} />\n <StdOutInput value={props.value.options} onChange={props.onChange} />\n </div>\n )\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Alert,\n Badge,\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Collapse,\n Input,\n Table\n} from 'reactstrap'\nimport Creatable from 'react-select/creatable'\nimport remove from 'lodash.remove'\nimport uniq from 'lodash.uniq'\n\nexport const SOURCEPRIOS_PRIO_CHANGED = 'SOURCEPRIOS_PPRIO_CHANGED'\nexport const SOURCEPRIOS_PRIO_DELETED = 'SOURCEPRIOS_PRIO_DELETED'\nexport const SOURCEPRIOS_PRIO_MOVED = 'SOURCEPRIOS_PRIO_MOVED'\n\nexport const SOURCEPRIOS_PATH_CHANGED = 'SOURCEPRIOS_PATH_CHANGED'\nexport const SOURCEPRIOS_PATH_DELETED = 'SOURCEPRIOS_PATH_DELETED'\n\nexport const SOURCEPRIOS_SAVING = 'SOURCEPRIOS_SAVING'\nexport const SOURCEPRIOS_SAVED = 'SOURCEPRIOS_SAVED'\nexport const SOURCEPRIOS_SAVE_FAILED = 'SOURCEPRIOS_SAVE_FAILED'\nexport const SOURCEPRIOS_SAVE_FAILED_OVER = 'SOURCEPRIOS_SAVE_FAILED_OVER'\n\nfunction checkTimeouts(sourcePriorities) {\n return sourcePriorities.reduce((acc, prio, i) => {\n const { timeout } = prio\n if (!acc) {\n return acc\n }\n\n if (i === 0) {\n return true\n }\n\n const thisOne = Number(timeout)\n if (Number.isNaN(thisOne) || thisOne <= 0) {\n return false\n }\n if (i === 1) {\n return true\n }\n return thisOne > Number(sourcePriorities[i - 1].timeout)\n }, true)\n}\n\nexport const reduceSourcePriorities = (state, action) => {\n const sourcePriorities = JSON.parse(JSON.stringify(state.sourcePriorities))\n let saveState = { ...state.saveState }\n const { path, index, pathIndex, sourceRef, timeout, change } =\n action.data || {}\n const prios =\n pathIndex !== undefined ? sourcePriorities[pathIndex].priorities : undefined\n\n switch (action.type) {\n case SOURCEPRIOS_PATH_CHANGED:\n if (index === sourcePriorities.length) {\n sourcePriorities.push({ path: '', priorities: [] })\n }\n sourcePriorities[index].path = path\n saveState.dirty = true\n break\n\n case SOURCEPRIOS_PATH_DELETED:\n remove(sourcePriorities, (_, i) => i === index)\n saveState.dirty = true\n break\n\n case SOURCEPRIOS_PRIO_CHANGED:\n if (pathIndex === sourcePriorities.length) {\n sourcePriorities.push({ path: '', priorities: [] })\n }\n if (index === prios.length) {\n prios.push({ sourceRef: '', timeout: '' })\n }\n prios[index] = { sourceRef, timeout }\n saveState.dirty = true\n saveState.timeoutsOk = checkTimeouts(prios)\n break\n\n case SOURCEPRIOS_PRIO_DELETED:\n remove(prios, (_, i) => i === index)\n saveState.dirty = true\n break\n\n case SOURCEPRIOS_PRIO_MOVED:\n // eslint-disable-next-line no-case-declarations\n const tmp = prios[index]\n prios[index] = prios[index + change]\n prios[index + change] = tmp\n saveState.dirty = true\n saveState.timeoutsOk = checkTimeouts(prios)\n break\n\n case SOURCEPRIOS_SAVING:\n saveState = {\n ...saveState,\n isSaving: true,\n saveFailed: false\n }\n break\n\n case SOURCEPRIOS_SAVED:\n saveState = {\n ...saveState,\n dirty: false,\n isSaving: false,\n saveFailed: false\n }\n break\n\n case SOURCEPRIOS_SAVE_FAILED:\n saveState = {\n ...saveState,\n isSaving: false,\n saveFailed: true\n }\n break\n\n case SOURCEPRIOS_SAVE_FAILED_OVER:\n saveState = {\n ...saveState,\n saveFailed: false\n }\n break\n\n default:\n return state\n }\n // common return statement\n return { sourcePriorities, saveState }\n}\n\nfunction fetchSourceRefs(path, cb) {\n fetch(`/signalk/v1/api/vessels/self/${path.replace(/\\./g, '/')}`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((pathResponse) => {\n let sourceRefs = [pathResponse.$source]\n if (pathResponse.values) {\n sourceRefs = sourceRefs.concat(Object.keys(pathResponse.values))\n }\n return uniq(sourceRefs)\n })\n .then(cb)\n}\n\nclass PrefsEditor extends Component {\n constructor(props) {\n super(props)\n this.state = { isOpen: false, sourceRefs: [] }\n fetchSourceRefs(this.props.path, (sourceRefs) => {\n this.setState({ sourceRefs })\n })\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.path !== prevProps.path) {\n fetchSourceRefs(this.props.path, (sourceRefs) => {\n this.setState({ sourceRefs })\n })\n }\n }\n\n render() {\n const toggleEditor = () =>\n this.setState((state) => ({ isOpen: !state.isOpen }))\n return (\n <div>\n {!this.state.isOpen && <div onClick={toggleEditor}>...</div>}\n <Collapse isOpen={this.state.isOpen}>\n <Table>\n <thead onClick={toggleEditor}>\n <tr>\n <td style={{ width: '30px' }}>#</td>\n <td>Source Reference (see DataBrowser for details)</td>\n <td style={{ width: '120px' }}>Timeout (ms)</td>\n <td style={{ Width: '80px' }}>Order</td>\n <td></td>\n </tr>\n </thead>\n <tbody>\n {[...this.props.priorities, { sourceRef: '', timeout: '' }].map(\n ({ sourceRef, timeout }, index) => {\n const options = this.state.sourceRefs.map((sourceRef) => ({\n label: sourceRef,\n value: sourceRef\n }))\n return (\n <tr key={index}>\n <td>{index + 1}.</td>\n <td>\n <Creatable\n menuPortalTarget={document.body}\n options={options}\n value={{ value: sourceRef, label: sourceRef }}\n onChange={(e) => {\n this.props.dispatch({\n type: SOURCEPRIOS_PRIO_CHANGED,\n data: {\n pathIndex: this.props.pathIndex,\n sourceRef: e.value,\n timeout,\n index\n }\n })\n }}\n />\n </td>\n <td>\n {index > 0 && (\n <Input\n type=\"number\"\n name=\"timeout\"\n onChange={(e) =>\n this.props.dispatch({\n type: SOURCEPRIOS_PRIO_CHANGED,\n data: {\n pathIndex: this.props.pathIndex,\n sourceRef,\n timeout: e.target.value,\n index\n }\n })\n }\n value={timeout}\n />\n )}\n </td>\n <td>\n {index > 0 && index < this.props.priorities.length && (\n <button\n onClick={() =>\n !this.props.isSaving &&\n this.props.dispatch({\n type: SOURCEPRIOS_PRIO_MOVED,\n data: {\n pathIndex: this.props.pathIndex,\n index,\n change: -1\n }\n })\n }\n >\n <i className=\"fas fa-arrow-up\" />\n </button>\n )}\n {index < this.props.priorities.length - 1 && (\n <button\n onClick={() =>\n !this.props.isSaving &&\n this.props.dispatch({\n type: SOURCEPRIOS_PRIO_MOVED,\n data: {\n pathIndex: this.props.pathIndex,\n index,\n change: 1\n }\n })\n }\n >\n <i className=\"fas fa-arrow-down\" />\n </button>\n )}\n </td>\n <td>\n {index < this.props.priorities.length && (\n <i\n className=\"fas fa-trash\"\n onClick={() =>\n !this.props.isSaving &&\n this.props.dispatch({\n type: SOURCEPRIOS_PRIO_DELETED,\n data: {\n pathIndex: this.props.pathIndex,\n index\n }\n })\n }\n />\n )}\n </td>\n </tr>\n )\n }\n )}\n </tbody>\n </Table>\n </Collapse>\n </div>\n )\n }\n}\n\nconst sourcePrioritySave = (sourcePriorities) => (dispatch) => {\n dispatch({\n type: SOURCEPRIOS_SAVING\n })\n fetch(`${window.serverRoutesPrefix}/sourcePriorities`, {\n method: 'PUT',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(\n sourcePriorities.reduce((acc, pathPriority) => {\n acc[pathPriority.path] = pathPriority.priorities\n return acc\n }, {})\n )\n })\n .then((response) => {\n if (response.status === 200) {\n dispatch({\n type: SOURCEPRIOS_SAVED\n })\n } else {\n throw new Error()\n }\n })\n .catch(() => {\n dispatch({\n type: SOURCEPRIOS_SAVE_FAILED\n })\n setTimeout(\n () => dispatch({ type: SOURCEPRIOS_SAVE_FAILED_OVER }),\n 5 * 1000\n )\n })\n}\n\nfunction fetchAvailablePaths(cb) {\n fetch(`${window.serverRoutesPrefix}/availablePaths`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then(cb)\n}\n\nclass SourcePriorities extends Component {\n constructor(props) {\n super(props)\n this.state = {\n availablePaths: []\n }\n fetchAvailablePaths((pathsArray) => {\n this.setState({\n availablePaths: pathsArray.map((path) => ({\n value: path,\n label: path\n }))\n })\n })\n }\n\n render() {\n const sourcePriorities = [].concat(this.props.sourcePriorities)\n sourcePriorities.push({ path: '', priorities: [] })\n return (\n <Card>\n <CardHeader>Source Priorities Settings</CardHeader>\n <CardBody>\n <Alert>\n <p>\n Use Source Priorities to filter incoming data so that data from\n lower priority sources is discarded when there is fresh data from\n some higher priority source.\n </p>\n <p>\n Incoming data is not handled if the{' '}\n <b>\n latest value for a path is from a higher priority source and it\n is not older than the timeout\n </b>{' '}\n specified for the source of the incoming data. Timeout for data\n from unlisted sources is 10 seconds.\n </p>\n <p>\n You can debug the settings by saving them and activating debug key{' '}\n <b>signalk-server:sourcepriorities</b> in{' '}\n <a href=\"./#/serverConfiguration/log\">Server Log</a>\n </p>\n </Alert>\n <Table responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th style={{ width: '40%' }}>Path</th>\n <th>Priorities</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {sourcePriorities.map(({ path, priorities }, index) => {\n return (\n <tr key={index}>\n <td>\n <Creatable\n menuPortalTarget={document.body}\n options={this.state.availablePaths}\n value={{ value: path, label: path }}\n onChange={(e) => {\n this.props.dispatch({\n type: SOURCEPRIOS_PATH_CHANGED,\n data: { path: e.value, index }\n })\n }}\n />\n </td>\n <td>\n <PrefsEditor\n key={path}\n path={path}\n priorities={priorities}\n dispatch={this.props.dispatch}\n isSaving={this.props.saveState.isSaving}\n pathIndex={index}\n />\n </td>\n <td style={{ border: 'none' }}>\n {index < this.props.sourcePriorities.length && (\n <i\n className=\"fas fa-trash\"\n onClick={() =>\n this.props.dispatch({\n type: SOURCEPRIOS_PATH_DELETED,\n data: {\n index\n }\n })\n }\n />\n )}\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </CardBody>\n <CardFooter>\n <Button\n size=\"sm\"\n color=\"primary\"\n disabled={\n !this.props.saveState.dirty ||\n this.props.saveState.isSaving ||\n !this.props.saveState.timeoutsOk\n }\n onClick={(e) => {\n e.preventDefault()\n this.props.dispatch(\n sourcePrioritySave(this.props.sourcePriorities)\n )\n }}\n >\n <i className=\"fa fa-save\" /> Save\n </Button>\n {this.props.saveState.saveFailed &&\n 'Saving priorities settings failed!'}\n {!this.props.saveState.timeoutsOk && (\n <span style={{ paddingLeft: '10px' }}>\n <Badge color=\"danger\">Error</Badge>\n {\n 'The timeout values need to be numbers in ascending order, please fix.'\n }\n </span>\n )}\n </CardFooter>\n </Card>\n )\n }\n}\n\nconst mapStateToProps = ({ sourcePrioritiesData }) => ({\n sourcePriorities: sourcePrioritiesData.sourcePriorities,\n saveState: sourcePrioritiesData.saveState\n})\n\nexport default connect(mapStateToProps)(SourcePriorities)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Col,\n Table,\n Row\n} from 'reactstrap'\n\nimport BasicProvider from './BasicProvider'\nimport SourcePriorities from './SourcePriorities'\nimport set from 'lodash.set'\n\nfunction fetchProviders() {\n fetch(`${window.serverRoutesPrefix}/providers`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n let selectedProvider = undefined\n let selectedIndex = undefined\n if (this.state.selectedProviderId) {\n selectedProvider = data.find(\n (provider) => provider.id === this.state.selectedProviderId\n )\n selectedIndex = data.findIndex(\n (provider) => provider.id === this.state.selectedProviderId\n )\n }\n if (selectedProvider) {\n selectedProvider.originalId = selectedProvider.id\n }\n this.setState({\n providers: data,\n selectedProvider: selectedProvider\n ? JSON.parse(JSON.stringify(selectedProvider))\n : undefined,\n selectedIndex: selectedIndex\n })\n })\n}\n\nfunction runDiscovery() {\n fetch(`${window.serverRoutesPrefix}/runDiscovery`, {\n method: 'PUT',\n credentials: 'include'\n })\n}\n\nclass ProvidersConfiguration extends Component {\n constructor(props) {\n super(props)\n this.state = {\n activeTab: '1',\n providers: [],\n selectedProviderId: this.props.match.params.providerId\n }\n\n this.fetchProviders = fetchProviders.bind(this)\n this.runDiscovery = runDiscovery.bind(this)\n this.handleProviderChange = this.handleProviderChange.bind(this)\n this.handleProviderPropChange = this.handleProviderChange.bind(this)\n this.handleAddProvider = this.handleAddProvider.bind(this)\n this.handleCancel = this.handleCancel.bind(this)\n this.toggle = this.toggle.bind(this)\n this.handleApply = this.handleApply.bind(this)\n this.handleCancel = this.handleCancel.bind(this)\n this.handleDelete = this.handleDelete.bind(this)\n }\n\n componentDidMount() {\n this.fetchProviders()\n this.runDiscovery()\n }\n\n handleProviderChange(event, type) {\n var value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n if (type === 'number') {\n value = Number(value)\n }\n set(this.state.selectedProvider, event.target.name, value)\n this.setState({\n selectedProvider: this.state.selectedProvider\n })\n }\n\n handleProviderPropChange() {\n this.setState({\n selectedProvider: this.state.selectedProvider\n })\n }\n\n handleAddProvider() {\n var newProvider = {\n type: 'NMEA2000',\n logging: false,\n isNew: true,\n id: '',\n enabled: true,\n options: {},\n editable: true\n }\n this.setState(\n {\n selectedProvider: JSON.parse(JSON.stringify(newProvider)),\n selectedIndex: this.state.providers.length - 1\n },\n () => {\n this.refs['selectedProvider'].scrollIntoView()\n }\n )\n }\n\n handleApply() {\n var isNew = this.state.selectedProvider.isNew\n var wasDiscovered = this.state.selectedProvider.wasDiscovered\n\n delete this.state.selectedProvider.json\n\n var id = this.state.selectedProvider.originalId\n\n fetch(`${window.serverRoutesPrefix}/providers/${id && !isNew ? id : ''}`, {\n method: isNew ? 'POST' : 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.state.selectedProvider),\n credentials: 'include'\n })\n .then((response) => {\n if (response.ok) {\n var provider = JSON.parse(JSON.stringify(this.state.selectedProvider))\n delete provider.isNew\n delete provider.wasDiscovered\n delete this.state.selectedProvider.isNew\n if (isNew) {\n this.state.providers.push(provider)\n } else {\n this.state.providers[this.state.selectedIndex] = provider\n }\n if (wasDiscovered) {\n this.props.discoveredProviders.splice(this.state.selectedIndex, 1)\n }\n this.setState(\n {\n providers: this.state.providers,\n //discoveredProviders: this.state.discoveredProviders,\n selectedProvider: null,\n selectedIndex: -1\n },\n () => {\n this.props.history.push('/serverConfiguration/connections/-')\n }\n )\n }\n return response.text()\n })\n .then((text) => {\n alert(text)\n })\n }\n\n handleCancel() {\n this.setState({ selectedProvider: null })\n }\n\n handleDelete() {\n fetch(\n `${window.serverRoutesPrefix}/providers/${this.state.selectedProvider.id}`,\n {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json'\n },\n credentials: 'include'\n }\n )\n .then((response) => response.text())\n .then((response) => {\n this.state.providers.splice(this.state.selectedIndex, 1)\n this.setState({\n providers: this.state.providers,\n selectedProvider: null,\n selectedIndex: -1\n })\n alert(response)\n })\n }\n\n providerClicked(provider, index) {\n this.setState(\n {\n selectedProvider: {\n ...JSON.parse(JSON.stringify(provider)),\n originalId: provider.id\n },\n selectedIndex: index\n },\n () => {\n this.refs['selectedProvider'].scrollIntoView()\n }\n )\n }\n\n toggle(tab) {\n if (this.state.activeTab !== tab) {\n this.setState({\n activeTab: tab\n })\n }\n }\n\n render() {\n return (\n <div className=\"animated fadeIn\">\n {this.props.discoveredProviders &&\n this.props.discoveredProviders.length > 0 && (\n <Card>\n <CardHeader>Discovered Connections</CardHeader>\n <CardBody>\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>ID</th>\n <th>Data Type</th>\n <th>Enabled</th>\n <th>Data Logging</th>\n </tr>\n </thead>\n <tbody>\n {(this.props.discoveredProviders || []).map(\n (provider, index) => {\n return (\n <tr\n onClick={this.providerClicked.bind(\n this,\n provider,\n index\n )}\n key={provider.id}\n >\n <td>{provider.id}</td>\n <td>\n <ProviderType provider={provider} />\n </td>\n <td>\n <ApplicableStatus\n applicable={provider.editable}\n toggle={provider.enabled}\n />\n </td>\n <td>\n <ApplicableStatus\n applicable={provider.editable}\n toggle={provider.logging}\n />\n </td>\n </tr>\n )\n }\n )}\n </tbody>\n </Table>\n </CardBody>\n </Card>\n )}\n <Card>\n <CardHeader>Connections</CardHeader>\n <CardBody>\n <Table hover responsive bordered striped size=\"sm\">\n <thead>\n <tr>\n <th>ID</th>\n <th>Data Type</th>\n <th>Enabled</th>\n <th>Data Logging</th>\n </tr>\n </thead>\n <tbody>\n {(this.state.providers || []).map((provider, index) => {\n return (\n <tr\n onClick={this.providerClicked.bind(this, provider, index)}\n key={provider.id}\n >\n <td>{provider.id}</td>\n <td>\n <ProviderType provider={provider} />\n </td>\n <td>\n <ApplicableStatus\n applicable={provider.editable}\n toggle={provider.enabled}\n />\n </td>\n <td>\n <ApplicableStatus\n applicable={provider.editable}\n toggle={provider.logging}\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </Table>\n </CardBody>\n <CardFooter>\n <Button size=\"sm\" color=\"primary\" onClick={this.handleAddProvider}>\n <i className=\"fa fa-plus-circle\" /> Add\n </Button>\n </CardFooter>\n </Card>\n\n {this.state.selectedProvider && (\n <div ref=\"selectedProvider\" style={{ scrollMarginTop: '54px' }}>\n <Card>\n <CardBody>\n {this.state.selectedProvider.editable ? (\n <BasicProvider\n value={this.state.selectedProvider}\n onChange={this.handleProviderChange}\n onPropChange={this.handleProviderPropChange}\n />\n ) : (\n <Input\n type=\"textarea\"\n name=\"json\"\n id=\"json\"\n rows=\"20\"\n value={this.state.selectedProvider.json}\n readOnly=\"true\"\n />\n )}\n </CardBody>\n <CardFooter>\n {this.state.selectedProvider.editable ? (\n <Row>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleApply}\n >\n <i className=\"fa fa-dot-circle-o\" /> Apply\n </Button>\n </Col>\n <Col xs=\"4\" md=\"1\">\n <Button\n size=\"sm\"\n color=\"secondary\"\n onClick={this.handleCancel}\n >\n <i className=\"fa fa-ban\" /> Cancel\n </Button>\n </Col>\n <Col xs=\"4\" md=\"10\" className=\"text-right\">\n <Button\n size=\"sm\"\n color=\"danger\"\n onClick={this.handleDelete}\n >\n <i className=\"fa fa-ban\" /> Delete\n </Button>\n </Col>\n </Row>\n ) : (\n <Row>\n <Col xs=\"4\" md=\"12\" className=\"text-right\">\n <Button\n size=\"sm\"\n color=\"danger\"\n onClick={this.handleDelete}\n >\n <i className=\"fa fa-ban\" /> Delete\n </Button>\n </Col>\n </Row>\n )}\n </CardFooter>\n </Card>\n </div>\n )}\n\n <SourcePriorities />\n </div>\n )\n }\n}\n\nconst ApplicableStatus = (props) => (\n <div>{props.applicable ? (props.toggle ? 'Yes' : 'No') : 'N/A'}</div>\n)\n\nconst ProviderType = (props) => (\n <div>\n {props.provider.type}\n {props.provider.type === 'FileStream'\n ? `/${props.provider.options.dataType}`\n : ''}\n </div>\n)\nconst mapStateToProps = ({ discoveredProviders }) => ({ discoveredProviders })\n\nexport default connect(mapStateToProps)(ProvidersConfiguration)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n FormText\n} from 'reactstrap'\n\nfunction fetchVessel() {\n fetch(`${window.serverRoutesPrefix}/vessel`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n this.setState({ ...data, hasData: true })\n })\n}\n\nclass VesselConfiguration extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: false\n }\n\n this.fetchVessel = fetchVessel.bind(this)\n this.handleChange = this.handleChange.bind(this)\n this.handleSaveVessel = this.handleSaveVessel.bind(this)\n }\n\n componentDidMount() {\n this.fetchVessel()\n }\n\n handleChange(event) {\n console.log(event)\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.setState({ [event.target.name]: value })\n }\n\n handleSaveVessel() {\n fetch(`${window.serverRoutesPrefix}/vessel`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.state),\n credentials: 'include'\n })\n .then((response) => response.text())\n .then((response) => {\n alert(response)\n })\n }\n\n render() {\n return (\n this.state.hasData && (\n <div className=\"animated fadeIn\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n <strong>Vessel Base Data</strong>\n </CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n >\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"name\">Name</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"name\"\n onChange={this.handleChange}\n value={this.state.name}\n />\n <FormText color=\"muted\">The name of the vessel</FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"mmsi\">MMSI</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"mmsi\"\n onChange={this.handleChange}\n value={this.state.mmsi}\n />\n <FormText color=\"muted\">\n Leave blank if there is no mmsi\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"callsignVhf\">Call Sign</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"callsignVhf\"\n onChange={this.handleChange}\n value={this.state.callsignVhf}\n />\n <FormText color=\"muted\">\n Leave blank if there is no call sign\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"uuid\">UUID</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"uuid\"\n onChange={this.handleChange}\n value={this.state.uuid}\n />\n <FormText color=\"muted\">Ignored if MMSI is set</FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"aisShipType\">Ship Type</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"select\"\n name=\"aisShipType\"\n value={this.state.aisShipType}\n onChange={this.handleChange}\n >\n <option value=\"20\">Wing In Ground</option>\n <option value=\"29\">\n Wing In Ground (no other information)\n </option>\n <option value=\"30\">Fishing</option>\n <option value=\"31\">Towing</option>\n <option value=\"32\">\n Towing exceeds 200m or wider than 25m\n </option>\n <option value=\"33\">\n Engaged in dredging or underwater operations\n </option>\n <option value=\"34\">Engaged in diving operations</option>\n <option value=\"35\">Engaged in military operations</option>\n <option value=\"36\">Sailing</option>\n <option value=\"37\">Pleasure</option>\n <option value=\"40\">High speed craft</option>\n <option value=\"41\">\n High speed craft carrying dangerous goods\n </option>\n <option value=\"42\">High speed craft hazard cat B</option>\n <option value=\"43\">High speed craft hazard cat C</option>\n <option value=\"44\">High speed craft hazard cat D</option>\n <option value=\"49\">\n High speed craft (no additional information)\n </option>\n <option value=\"50\">Pilot vessel</option>\n <option value=\"51\">SAR</option>\n <option value=\"52\">Tug</option>\n <option value=\"53\">Port tender</option>\n <option value=\"54\">Anti-pollution</option>\n <option value=\"55\">Law enforcement</option>\n <option value=\"56\">Spare</option>\n <option value=\"57\">Spare #2</option>\n <option value=\"58\">Medical</option>\n <option value=\"59\">RR Resolution No.1</option>\n <option value=\"60\">Passenger ship</option>\n <option value=\"69\">\n Passenger ship (no additional information)\n </option>\n <option value=\"70\">Cargo ship</option>\n <option value=\"71\">\n Cargo ship carrying dangerous goods\n </option>\n <option value=\"72\">Cargo ship hazard cat B</option>\n <option value=\"73\">Cargo ship hazard cat C</option>\n <option value=\"74\">Cargo ship hazard cat D</option>\n <option value=\"79\">\n Cargo ship (no additional information)\n </option>\n <option value=\"80\">Tanker</option>\n <option value=\"81\">\n Tanker carrying dangerous goods\n </option>\n <option value=\"82\">Tanker hazard cat B</option>\n <option value=\"83\">Tanker hazard cat C</option>\n <option value=\"84\">Tanker hazard cat D</option>\n <option value=\"89\">\n Tanker (no additional information)\n </option>\n <option value=\"90\">Other</option>\n <option value=\"91\">Other carrying dangerous goods</option>\n <option value=\"92\">Other hazard cat B</option>\n <option value=\"93\">Other hazard cat C</option>\n <option value=\"94\">Other hazard cat D</option>\n <option value=\"99\">\n Other (no additional information)\n </option>\n </Input>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"draft\">Draft</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"draft\"\n onChange={this.handleChange}\n value={this.state.draft}\n />\n <FormText color=\"muted\">\n The maximum draft in meters of the vessel\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"length\">Length</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"length\"\n onChange={this.handleChange}\n value={this.state.length}\n />\n <FormText color=\"muted\">\n The overall length of the vessel in meters\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"beam\">Beam</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"beam\"\n onChange={this.handleChange}\n value={this.state.beam}\n />\n <FormText color=\"muted\">\n The beam of the vessel in meters\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"height\">Height</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"height\"\n onChange={this.handleChange}\n value={this.state.height}\n />\n <FormText color=\"muted\">\n The total height of the vessel in meters{' '}\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"gpsFromBow\">GPS Distance From Bow</Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"gpsFromBow\"\n onChange={this.handleChange}\n value={this.state.gpsFromBow}\n />\n <FormText color=\"muted\">\n The distance of the gps receiver from the bow in meters\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"gpsFromCenter\">\n GPS Distance From Center\n </Label>\n </Col>\n <Col xs=\"12\" md=\"4\">\n <Input\n type=\"text\"\n name=\"gpsFromCenter\"\n onChange={this.handleChange}\n value={this.state.gpsFromCenter}\n />\n <FormText color=\"muted\">\n The distance from the center of vessel of the gps receiver\n in meters\n </FormText>\n </Col>\n </FormGroup>\n </Form>\n </CardBody>\n <CardFooter>\n <Button size=\"sm\" color=\"primary\" onClick={this.handleSaveVessel}>\n <i className=\"fa fa-dot-circle-o\" /> Save\n </Button>\n </CardFooter>\n </Card>\n </div>\n )\n )\n }\n}\n\nexport default connect()(VesselConfiguration)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardFooter,\n CardBody,\n Col,\n Row,\n ListGroup,\n ListGroupItem\n} from 'reactstrap'\n\nfunction fetchLogfileList() {\n const okResponse = fetch(`${window.serverRoutesPrefix}/logfiles/`, {\n credentials: 'include'\n }).then((response) => {\n if (!response.ok) {\n this.setState({ authorized: false })\n return false\n }\n return response\n })\n\n okResponse &&\n okResponse\n .then((response) => response.json())\n .then((logfileslist) => {\n logfileslist.sort()\n this.setState({ logfileslist, hasData: true, authorized: true })\n })\n}\n\nclass Settings extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: false,\n authorized: true\n }\n\n this.fetchLogfileList = fetchLogfileList.bind(this)\n }\n\n componentDidMount() {\n this.fetchLogfileList()\n }\n\n render() {\n if (!this.state.authorized) {\n return <div className=\"animated fadeIn\">Not Authorized</div>\n }\n\n return (\n this.state.hasData && (\n <div className=\"animated fadeIn\">\n <Row>\n <Col sm=\"12\" xl=\"12\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n <strong>Data Logfiles</strong>\n </CardHeader>\n <CardBody>\n <ListGroup>\n {this.logfilesToRows(this.state.logfileslist)}\n </ListGroup>\n </CardBody>\n <CardFooter>\n <small className=\"text-muted\">\n Click button to download each logfile or\n </small>\n <a href={`${window.serverRoutesPrefix}/ziplogs`}>\n <Button className=\"m-2\">\n Get all logs in one ZIP file\n </Button>\n </a>\n </CardFooter>\n </Card>\n </Col>\n </Row>\n </div>\n )\n )\n }\n\n logfilesToRows(logfiles) {\n // skserver-raw_2017-03-04T14.log\n // 012345678901234567890123456789012\n const datesWithHours = logfiles.reduce((acc, logfile) => {\n const date = logfile.substr(13, 10)\n const hour = logfile.substr(24, 2)\n if (!acc[date]) {\n acc[date] = []\n }\n acc[date].push(hour)\n return acc\n }, {})\n\n return Object.keys(datesWithHours).map((date, i) => {\n return (\n <ListGroupItem key={i}>\n {date}\n {datesWithHours[date].map((hour, i) => (\n <span key={i}>\n <a\n href={`${window.serverRoutesPrefix}/logfiles/skserver-raw_${date}T${hour}.log`}\n >\n <Button className=\"m-2\">{hour}</Button>\n </a>\n </span>\n ))}\n </ListGroupItem>\n )\n })\n }\n}\n\nexport default connect()(Settings)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Badge,\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n FormText\n} from 'reactstrap'\n\nimport VesselConfiguration from './VesselConfiguration'\nimport LogFiles from './Logging'\n\nfunction fetchSettings() {\n fetch(`${window.serverRoutesPrefix}/settings`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((data) => {\n this.setState({ ...data, hasData: true })\n })\n}\n\nclass ServerSettings extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: false\n }\n this.fetchSettings = fetchSettings.bind(this)\n this.handleChange = this.handleChange.bind(this)\n this.handleCourseApiChange = this.handleCourseApiChange.bind(this)\n this.handleOptionChange = this.handleOptionChange.bind(this)\n this.handleInterfaceChange = this.handleInterfaceChange.bind(this)\n this.handleSaveSettings = this.handleSaveSettings.bind(this)\n }\n\n componentDidMount() {\n this.fetchSettings()\n }\n\n handleChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.setState({ [event.target.name]: value })\n }\n\n handleCourseApiChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.courseApi[event.target.name] = value\n this.setState({ courseApi: this.state.courseApi })\n }\n\n handleOptionChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.options[event.target.name] = value\n this.setState({ options: this.state.options })\n }\n\n handleInterfaceChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.interfaces[event.target.name] = value\n this.setState({ interfaces: this.state.interfaces })\n }\n\n handleSaveSettings() {\n fetch(`${window.serverRoutesPrefix}/settings`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.state),\n credentials: 'include'\n })\n .then((response) => response.text())\n .then((response) => {\n alert(response)\n })\n }\n\n render() {\n const fieldColWidthMd = 10\n return (\n this.state.hasData && (\n <div className=\"animated fadeIn\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n <strong>Server Settings</strong>\n </CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n >\n {!this.state.runFromSystemd && (\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"port\">HTTP Port</Label>\n </Col>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Input\n size=\"5\"\n style={{ width: 'auto' }}\n type=\"text\"\n name=\"port\"\n onChange={this.handleChange}\n value={this.state.port}\n />\n <FormText color=\"muted\">\n Saving a new value here will not have effect if\n overridden by environment variable PORT\n </FormText>\n </Col>\n </FormGroup>\n )}\n {this.state.runFromSystemd && (\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <FormText>\n The server was started by systemd, run\n signalk-server-setup to change ports and ssl\n configuration.\n </FormText>\n </Col>\n </FormGroup>\n )}\n {this.state.options.ssl && !this.state.runFromSystemd && (\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"sslport\">SSL Port</Label>\n </Col>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Input\n size=\"5\"\n style={{ width: 'auto' }}\n type=\"text\"\n name=\"sslport\"\n onChange={this.handleChange}\n value={this.state.sslport}\n />\n <FormText color=\"muted\">\n Saving a new value here will not have effect if\n overridden by environment variable SSLPORT\n </FormText>\n </Col>\n </FormGroup>\n )}\n <FormGroup row>\n <Col md=\"2\">\n <Label>Options</Label>\n </Col>\n <Col md={fieldColWidthMd}>\n <FormGroup check>\n {Object.keys(this.state.options).map((name) => {\n return (\n <div key={name}>\n <Label\n style={{ marginRight: '15px' }}\n className=\"switch switch-text switch-primary\"\n >\n <Input\n type=\"checkbox\"\n id={name}\n name={name}\n className=\"switch-input\"\n onChange={this.handleOptionChange}\n checked={this.state.options[name]}\n />\n <span\n className=\"switch-label\"\n data-on=\"On\"\n data-off=\"Off\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <span style={{ lineHeight: '23px' }}>{name}</span>\n </div>\n )\n })}\n </FormGroup>\n </Col>\n </FormGroup>\n\n <FormGroup row>\n <Col md=\"2\">\n <Label>Interfaces</Label>\n </Col>\n <Col md={fieldColWidthMd}>\n <FormGroup check>\n {Object.keys(SettableInterfaces).map((name) => {\n return (\n <div key={name}>\n <Label\n style={{ marginRight: '15px' }}\n className=\"switch switch-text switch-primary\"\n >\n <Input\n type=\"checkbox\"\n id={name}\n name={name}\n className=\"switch-input\"\n onChange={this.handleInterfaceChange}\n checked={this.state.interfaces[name]}\n />\n <span\n className=\"switch-label\"\n data-on=\"On\"\n data-off=\"Off\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <span style={{ lineHeight: '24px' }}>\n {SettableInterfaces[name]}\n </span>\n </div>\n )\n })}\n </FormGroup>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"pruneContextsMinutes\">\n Maximum age of inactive vessels' data\n </Label>\n </Col>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Input\n type=\"text\"\n name=\"pruneContextsMinutes\"\n onChange={this.handleChange}\n value={this.state.pruneContextsMinutes}\n />\n <FormText color=\"muted\">\n Vessels that have not been updated after this many minutes\n will be removed\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label htmlFor=\"loggingDirectory\">\n Data Logging Directory\n </Label>\n </Col>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Input\n type=\"text\"\n name=\"loggingDirectory\"\n onChange={this.handleChange}\n value={this.state.loggingDirectory}\n />\n <FormText color=\"muted\">\n Connections that have logging enabled create hourly log\n files in Multiplexed format in this directory\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label>Keep only most recent data log files</Label>\n </Col>\n <Col>\n <FormGroup check>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"keepMostRecentLogsOnly\"\n id=\"keepMostRecentLogsOnly\"\n className=\"switch-input\"\n onChange={this.handleChange}\n checked={this.state.keepMostRecentLogsOnly}\n />\n <span\n className=\"switch-label\"\n data-on=\"On\"\n data-off=\"Off\"\n />\n <span className=\"switch-handle\" />\n </Label>\n </FormGroup>\n </Col>\n <Col>\n <Input\n type=\"text\"\n name=\"logCountToKeep\"\n onChange={this.handleChange}\n value={this.state.logCountToKeep}\n />\n <FormText color=\"muted\">\n How many hourly files to keep\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col md=\"2\">\n <Label>\n API Only Mode\n <br />\n <i>(Course API)</i>\n </Label>\n </Col>\n <Col>\n <FormGroup check>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"apiOnly\"\n id=\"apiOnly\"\n className=\"switch-input\"\n onChange={this.handleCourseApiChange}\n checked={this.state.courseApi.apiOnly}\n />\n <span\n className=\"switch-label\"\n data-on=\"On\"\n data-off=\"Off\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <FormText color=\"muted\">\n Accept course operations only via HTTP requests.\n Destination data from NMEA sources is not used.\n </FormText>\n </FormGroup>\n </Col>\n </FormGroup>\n </Form>\n </CardBody>\n <CardFooter>\n <Button\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleSaveSettings}\n >\n <i className=\"fa fa-dot-circle-o\" /> Save\n </Button>{' '}\n <Badge color=\"danger\" className=\"float-right\">\n Restart Required\n </Badge>\n </CardFooter>\n </Card>\n </div>\n )\n )\n }\n}\n\nconst SettableInterfaces = {\n applicationData: 'Application Data Storage',\n logfiles: 'Data log files access',\n 'nmea-tcp': 'NMEA 0183 over TCP (10110)',\n tcp: 'Signal K over TCP (8375)'\n}\n\nconst ReduxedSettings = connect()(ServerSettings)\n\nclass Settings extends Component {\n render() {\n return (\n <div>\n <VesselConfiguration />\n <ReduxedSettings />\n <LogFiles />\n </div>\n )\n }\n}\n\nexport default Settings\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Button,\n Card,\n CardHeader,\n CardBody,\n CardFooter,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n FormText,\n Progress\n} from 'reactstrap'\n\nimport { restart } from '../../actions'\n\nconst RESTORE_NONE = 0\nconst RESTORE_VALIDATING = 1\nconst RESTORE_CONFIRM = 2\nconst RESTORE_RUNNING = 3\n\nclass BackupRestore extends Component {\n constructor(props) {\n super(props)\n this.state = {\n restoreFile: null,\n restoreState: RESTORE_NONE,\n includePlugins: false\n }\n this.fileChanged = this.fileChanged.bind(this)\n this.handleRestoreFileChange = this.handleRestoreFileChange.bind(this)\n this.includePluginsChange = this.includePluginsChange.bind(this)\n this.backup = this.backup.bind(this)\n this.validate = this.validate.bind(this)\n this.restore = this.restore.bind(this)\n this.restart = this.restart.bind(this)\n this.cancelRestore = this.cancelRestore.bind(this)\n }\n\n cancelRestore() {\n this.setState({ restoreState: RESTORE_NONE })\n }\n\n fileChanged(event) {\n this.setState({ ...this.state, restoreFile: event.target.files[0] })\n }\n\n backup() {\n const url = `${window.serverRoutesPrefix}/backup?includePlugins=${this.state.includePlugins}`\n //const url = `/backup`\n window.location = url\n }\n\n restore() {\n fetch(`${window.serverRoutesPrefix}/restore`, {\n credentials: 'include',\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(this.state.restoreContents)\n })\n .then((response) => {\n if (!response.ok) {\n return response.text()\n }\n })\n .then((res) => {\n if (typeof res === 'string') {\n alert(res)\n this.setState({ restoreState: RESTORE_NONE, restoreFile: null })\n } else {\n this.setState({ restoreState: RESTORE_RUNNING })\n }\n })\n .catch((error) => {\n alert(error.message)\n })\n }\n\n restart() {\n this.props.restart()\n this.setState({ restoreState: RESTORE_NONE })\n window.location = '/admin/#/dashboard'\n }\n\n validate() {\n if (!this.state.restoreFile) {\n alert('Please choose a file')\n return\n }\n\n const data = new FormData()\n data.append('file', this.state.restoreFile)\n\n this.setState({ restoreState: RESTORE_VALIDATING })\n fetch(`${window.serverRoutesPrefix}/validateBackup`, {\n credentials: 'include',\n method: 'POST',\n headers: {\n Accept: 'application/json'\n },\n body: data\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.text()\n }\n })\n .then((res) => {\n if (typeof res === 'string') {\n alert(res)\n this.setState({ restoreState: RESTORE_NONE, restoreFile: null })\n } else {\n const restoreContents = {}\n res.forEach((filename) => {\n restoreContents[filename] = true\n })\n this.setState({ restoreState: RESTORE_CONFIRM, restoreContents })\n }\n })\n .catch((error) => {\n alert(error.message)\n })\n }\n\n handleRestoreFileChange(event) {\n const value =\n event.target.type === 'checkbox'\n ? event.target.checked\n : event.target.value\n this.state.restoreContents[event.target.name] = value\n this.setState({ restoreContents: this.state.restoreContents })\n }\n\n includePluginsChange(event) {\n this.state.includePlugins = event.target.checked\n this.setState({ includePlugins: this.state.includePlugins })\n }\n\n render() {\n const fieldColWidthMd = 10\n return (\n <div>\n {this.state.restoreState === RESTORE_NONE &&\n !this.props.restoreStatus.state && (\n <Card>\n <CardHeader>Backup Settings</CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n >\n <FormText color=\"muted\">\n This will backup your server and plugin settings.\n </FormText>\n <br />\n <FormGroup row>\n <Col xs=\"3\" md=\"2\">\n <Label>Include Plugins</Label>\n </Col>\n <Col xs=\"2\" md={fieldColWidthMd}>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n name=\"enabled\"\n className=\"switch-input\"\n onChange={(event) => this.includePluginsChange(event)}\n checked={this.state.includePlugins}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n <FormText color=\"muted\">\n Selecting Yes will increase the size of the backup, but\n will allow for offline restore.\n </FormText>\n </Col>\n </FormGroup>\n </Form>\n </CardBody>\n <CardFooter>\n <Button size=\"sm\" color=\"primary\" onClick={this.backup}>\n <i className=\"fa fa-dot-circle-o\" /> Backup\n </Button>{' '}\n </CardFooter>\n </Card>\n )}\n <Card>\n <CardHeader>Restore Settings</CardHeader>\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n >\n {this.state.restoreState === RESTORE_NONE &&\n !this.props.restoreStatus.state && (\n <div>\n <FormText color=\"muted\">\n Please select the backup file from your device to use in\n restoring the settings. Your existing settings will be\n overwritten.\n </FormText>\n <br />\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Input\n type=\"file\"\n name=\"backupFile\"\n onChange={this.fileChanged}\n />\n </Col>\n </FormGroup>\n </div>\n )}\n {this.state.restoreState === RESTORE_CONFIRM && (\n <FormGroup check>\n <Col xs=\"12\" md={fieldColWidthMd}>\n {Object.keys(this.state.restoreContents).map((name) => {\n return (\n <div key={name}>\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id={name}\n name={name}\n className=\"switch-input\"\n onChange={this.handleRestoreFileChange}\n checked={this.state.restoreContents[name]}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>{' '}\n {name}\n </div>\n )\n })}\n </Col>\n </FormGroup>\n )}\n {this.props.restoreStatus &&\n this.props.restoreStatus.state &&\n this.props.restoreStatus.state !== 'Complete' && (\n <div>\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <FormText>\n {this.props.restoreStatus.state} :{' '}\n {this.props.restoreStatus.message}\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Progress\n animated\n color=\"success\"\n value={this.props.restoreStatus.percentComplete}\n />\n </Col>\n </FormGroup>\n </div>\n )}\n {this.props.restoreStatus.state &&\n this.props.restoreStatus.state === 'Complete' && (\n <div>\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <FormText>Please Restart</FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"12\" md={fieldColWidthMd}>\n <Button size=\"sm\" color=\"danger\" onClick={this.restart}>\n {this.props.restarting ? (\n <i className=\"fa fa-circle-o-notch fa-spin\" />\n ) : (\n <i className=\"fa fa-circle-o-notch\" />\n )}{' '}\n Restart\n </Button>\n </Col>\n </FormGroup>\n </div>\n )}\n </Form>\n </CardBody>\n <CardFooter>\n {this.state.restoreState === RESTORE_NONE &&\n !this.props.restoreStatus.state && (\n <div>\n <Button\n size=\"sm\"\n color=\"danger\"\n onClick={this.validate}\n disabled={this.state.restoreFile === null}\n >\n <i className=\"fa fa-dot-circle-o\" /> Restore\n </Button>{' '}\n </div>\n )}\n {this.state.restoreState === RESTORE_CONFIRM && (\n <div>\n <Button size=\"sm\" color=\"primary\" onClick={this.cancelRestore}>\n <i className=\"fa fa-dot-circle-o\" /> Cancel\n </Button>{' '}\n <Button size=\"sm\" color=\"danger\" onClick={this.restore}>\n <i className=\"fa fa-dot-circle-o\" /> Confirm\n </Button>\n </div>\n )}\n </CardFooter>\n </Card>\n </div>\n )\n }\n}\n\nexport default connect(\n ({ restoreStatus, restarting }) => ({ restoreStatus, restarting }),\n { restart }\n)(BackupRestore)\n","import React, { Component } from 'react'\nimport ReactHtmlParser from 'react-html-parser'\nimport { connect } from 'react-redux'\nimport {\n Card,\n CardBody,\n CardHeader,\n Input,\n Form,\n Col,\n Label,\n FormGroup,\n FormText\n} from 'reactstrap'\nimport LogFiles from './Logging'\nimport Creatable from 'react-select/creatable'\nimport remove from 'lodash.remove'\n\nclass ServerLogs extends Component {\n constructor(props) {\n super(props)\n this.state = {\n hasData: true,\n webSocket: null,\n didSubScribe: false,\n pause: false,\n debugKeys: []\n }\n\n this.handleDebug = this.handleDebug.bind(this)\n this.handlePause = this.handlePause.bind(this)\n this.fetchDebugKeys = this.fetchDebugKeys.bind(this)\n }\n\n subscribeToLogsIfNeeded() {\n if (\n !this.state.pause &&\n this.props.webSocket &&\n (this.props.webSocket !== this.state.webSocket ||\n this.state.didSubScribe === false)\n ) {\n const sub = { context: 'vessels.self', subscribe: [{ path: 'log' }] }\n this.props.webSocket.send(JSON.stringify(sub))\n this.state.webSocket = this.props.webSocket\n this.state.didSubScribe = true\n }\n }\n\n unsubscribeToLogs() {\n if (this.props.webSocket) {\n const sub = { context: 'vessels.self', unsubscribe: [{ path: 'log' }] }\n this.props.webSocket.send(JSON.stringify(sub))\n this.state.didSubScribe = false\n }\n }\n\n fetchDebugKeys() {\n fetch(`${window.serverRoutesPrefix}/debugKeys`, {\n credentials: 'include'\n })\n .then((response) => response.json())\n .then((debugKeys) => {\n this.setState({ debugKeys: debugKeys.sort() })\n })\n }\n\n componentDidMount() {\n this.subscribeToLogsIfNeeded()\n this.fetchDebugKeys()\n }\n\n componentDidUpdate() {\n this.subscribeToLogsIfNeeded()\n }\n\n componentWillUnmount() {\n this.unsubscribeToLogs()\n }\n\n handleDebug(event) {\n this.doHandleDebug(event.target.value)\n }\n\n handleDebugCheckbox(value, enabled) {\n const keysToSend =\n this.props.log.debugEnabled.length > 0\n ? this.props.log.debugEnabled.split(',')\n : []\n if (enabled) {\n keysToSend.push(value)\n } else {\n remove(keysToSend, (v) => v === value)\n }\n this.doHandleDebug(keysToSend.toString())\n }\n\n doHandleDebug(value) {\n fetch(`${window.serverRoutesPrefix}/debug`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ value }),\n credentials: 'include'\n }).then((response) => response.text())\n }\n\n handleRememberDebug(event) {\n fetch(`${window.serverRoutesPrefix}/rememberDebug`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ value: event.target.checked }),\n credentials: 'include'\n }).then((response) => response.text())\n }\n\n handlePause(event) {\n this.state.pause = event.target.checked\n this.setState(this.state)\n if (this.state.pause) {\n this.unsubscribeToLogs()\n } else {\n this.subscribeToLogsIfNeeded()\n }\n }\n\n render() {\n return (\n this.state.hasData && (\n <div className=\"animated fadeIn\">\n <Card>\n <CardHeader>\n <i className=\"fa fa-align-justify\" />\n <strong>Server Log</strong>\n </CardHeader>\n\n <CardBody>\n <Form\n action=\"\"\n method=\"post\"\n encType=\"multipart/form-data\"\n className=\"form-horizontal\"\n onSubmit={(e) => {\n e.preventDefault()\n }}\n >\n <FormGroup row>\n <Col>\n <Creatable\n isMulti\n options={this.state.debugKeys.map((key) => ({\n label: key,\n value: key\n }))}\n value={\n this.props.log.debugEnabled\n ? this.props.log.debugEnabled\n .split(',')\n .map((value) => ({ label: value, value }))\n : null\n }\n onChange={(v) => {\n const value =\n v !== null\n ? v.map(({ value }) => value).join(',')\n : ''\n this.doHandleDebug(value)\n }}\n />\n <FormText color=\"muted\" style={{ marginBottom: '15px' }}>\n Select the appropriate debug keys to activate debug\n logging for various components on the server.\n </FormText>\n </Col>\n </FormGroup>\n <FormGroup row>\n <Col xs=\"6\" md=\"6\">\n Persist debug settings over server restarts{' '}\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"Enabled\"\n name=\"debug\"\n className=\"switch-input\"\n onChange={this.handleRememberDebug}\n checked={this.props.log.rememberDebug}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n <Col xs=\"6\" md=\"6\">\n Pause the log window{' '}\n <Label className=\"switch switch-text switch-primary\">\n <Input\n type=\"checkbox\"\n id=\"Pause\"\n name=\"pause\"\n className=\"switch-input\"\n onChange={this.handlePause}\n checked={this.state.pause}\n />\n <span\n className=\"switch-label\"\n data-on=\"Yes\"\n data-off=\"No\"\n />\n <span className=\"switch-handle\" />\n </Label>\n </Col>\n </FormGroup>\n <LogList value={this.props.log} />\n </Form>\n </CardBody>\n </Card>\n <LogFiles />\n </div>\n )\n )\n }\n}\n\nclass LogList extends Component {\n componentDidMount() {\n this.end.scrollIntoView()\n }\n\n render() {\n return (\n <div\n style={{\n overflowY: 'scroll',\n maxHeight: '60vh',\n border: '1px solid',\n padding: '5px',\n fontFamily: 'monospace'\n }}\n >\n {this.props.value.entries &&\n this.props.value.entries.map((logEntry) => {\n return <PureLogRow key={logEntry.i} log={logEntry.d} />\n })}\n <div\n ref={(el) => {\n this.end = el\n }}\n >\n \n </div>\n </div>\n )\n }\n}\n\nclass PureLogRow extends React.PureComponent {\n render() {\n return (\n <span>\n {ReactHtmlParser(this.props.log)}\n <br />\n </span>\n )\n }\n}\n\nexport default connect(({ log, webSocket }) => ({ log, webSocket }))(ServerLogs)\n","import React, { Component } from 'react'\nimport { Button, Card, CardHeader, CardBody } from 'reactstrap'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\n\nclass ServerUpdate extends Component {\n constructor(props) {\n super(props)\n this.state = {\n chanelog: null\n }\n\n this.handleUpdate = this.handleUpdate.bind(this)\n this.fetchChangelog = this.fetchChangelog.bind(this)\n this.fetchChangelog()\n }\n\n fetchChangelog() {\n fetch(\n `https://raw.githubusercontent.com/SignalK/signalk-server-node/master/CHANGELOG.md`\n )\n .then((response) => response.text())\n .then((data) => {\n this.setState({ changelog: data })\n })\n }\n\n handleUpdate() {\n console.log('handleUpdate')\n if (confirm(`Are you sure you want to update the server?'`)) {\n this.props.history.push('/appstore/updates')\n fetch(\n `${window.serverRoutesPrefix}/appstore/install/signalk-server/${this.props.appStore.serverUpdate}`,\n {\n method: 'POST',\n credentials: 'include'\n }\n ).then(() => {\n this.history.pushState(null, 'appstore/updates')\n })\n }\n }\n\n render() {\n if (!this.props.appStore.storeAvailable) {\n return (\n <div className=\"animated fadeIn\">\n <Card>\n <CardHeader>Waiting for App store data to load...</CardHeader>\n </Card>\n </div>\n )\n }\n let isInstalling = false\n let isInstalled = false\n let info = this.props.appStore.installing.find(\n (p) => p.name === 'signalk-server'\n )\n if (info) {\n if (info.isWaiting || info.isInstalling) {\n isInstalling = true\n } else {\n isInstalled = true\n }\n }\n return (\n <div className=\"animated fadeIn\">\n {!this.props.appStore.canUpdateServer && (\n <Card className=\"border-warning\">\n <CardHeader>Server Update</CardHeader>\n <CardBody>\n This installation is not updatable from the admin user interface.\n </CardBody>\n </Card>\n )}\n {this.props.appStore.isInDocker && (\n <Card className=\"border-warning\">\n <CardHeader>Running as a Docker container</CardHeader>\n <CardBody>\n <p>\n The server is running as a Docker container. You need to pull a\n new server version from Container registry to update.\n <ul>\n <code>docker pull cr.signalk.io/signalk/signalk-server</code>\n </ul>\n </p>\n <p>\n More info about running Signal K in Docker can be found at{' '}\n <a\n href=\"https://github.com/SignalK/signalk-server/blob/master/docker/README.md\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Docker README\n </a>{' '}\n .\n </p>\n </CardBody>\n </Card>\n )}\n {this.props.appStore.canUpdateServer &&\n this.props.appStore.serverUpdate &&\n !isInstalling &&\n !isInstalled && (\n <Card>\n <CardHeader>\n Server version {this.props.appStore.serverUpdate} is available\n </CardHeader>\n <CardBody>\n <a href=\"https://github.com/SignalK/signalk-server/releases/\">\n Release Notes for latest releases.\n </a>\n <br />\n <br />\n <Button\n className=\"btn btn-danger\"\n size=\"sm\"\n color=\"primary\"\n onClick={this.handleUpdate}\n >\n Update\n </Button>\n </CardBody>\n </Card>\n )}\n {isInstalling && (\n <Card>\n <CardHeader>Server Update</CardHeader>\n <CardBody>The update is being installed</CardBody>\n </Card>\n )}\n {isInstalled && (\n <Card>\n <CardHeader>Server Update</CardHeader>\n <CardBody>\n The update has been installed, please restart the Signal K server.\n </CardBody>\n </Card>\n )}\n {this.props.appStore.canUpdateServer &&\n !this.props.appStore.serverUpdate && (\n <Card>\n <CardHeader>Server Update</CardHeader>\n <CardBody>Your server is up to date.</CardBody>\n </Card>\n )}\n\n <Card>\n <CardHeader>Sponsoring</CardHeader>\n <CardBody>\n <p>\n If you find Signal K valuable to you consider sponsoring our work\n on developing it further.\n </p>\n <p>\n Your support allows us to do things like\n <ul>\n <li>travel to meet in person and push things forward</li>\n <li>purchase equipment to develop on</li>\n <li>upgrade our cloud resources beyond the free tiers</li>\n </ul>\n </p>\n <p>\n See{' '}\n <a href=\"https://opencollective.com/signalk\">\n Signal K in Open Collective\n </a>{' '}\n for details.\n </p>\n </CardBody>\n </Card>\n </div>\n )\n }\n}\n\nexport default connect(({ appStore }) => ({ appStore }))(\n withRouter(ServerUpdate)\n)\n","import React, { Component } from 'react'\nimport { Switch, Route, Redirect, withRouter } from 'react-router-dom'\nimport { Container } from 'reactstrap'\nimport { connect } from 'react-redux'\n\nimport Header from '../../components/Header/Header'\nimport Sidebar from '../../components/Sidebar/Sidebar'\nimport Aside from '../../components/Aside/Aside'\nimport Footer from '../../components/Footer/Footer'\n\nimport Dashboard from '../../views/Dashboard/Dashboard'\nimport Embedded from '../../views/Webapps/Embedded'\nimport Webapps from '../../views/Webapps/Webapps'\nimport DataBrowser from '../../views/DataBrowser/DataBrowser'\nimport Playground from '../../views/Playground'\nimport Apps from '../../views/appstore/Apps/Apps'\nimport Configuration from '../../views/Configuration/Configuration'\nimport Login from '../../views/security/Login'\nimport SecuritySettings from '../../views/security/Settings'\nimport Users from '../../views/security/Users'\nimport Devices from '../../views/security/Devices'\nimport Register from '../../views/security/Register'\nimport AccessRequests from '../../views/security/AccessRequests'\nimport ProvidersConfiguration from '../../views/ServerConfig/ProvidersConfiguration'\nimport Settings from '../../views/ServerConfig/Settings'\nimport BackupRestore from '../../views/ServerConfig/BackupRestore'\nimport ServerLog from '../../views/ServerConfig/ServerLog'\nimport ServerUpdate from '../../views/ServerConfig/ServerUpdate'\n\nimport { fetchAllData, openServerEventsConnection } from '../../actions'\n\nclass Full extends Component {\n componentDidMount() {\n const { dispatch } = this.props\n fetchAllData(dispatch)\n openServerEventsConnection(dispatch)\n }\n\n render() {\n const suppressPadding =\n this.props.location.pathname.indexOf('/e/') === 0\n ? { padding: '0px' }\n : {}\n return (\n <div className=\"app\">\n <Header />\n <div className=\"app-body\">\n <Sidebar {...this.props} />\n <main className=\"main\">\n <Container fluid style={suppressPadding}>\n <Switch>\n <Route\n path=\"/dashboard\"\n name=\"Dashboard\"\n component={loginOrOriginal(Dashboard, true)}\n />\n <Route\n path=\"/webapps\"\n name=\"Webapps\"\n component={loginOrOriginal(Webapps, true)}\n />\n <Route\n path=\"/e/:moduleId\"\n name=\"Embedded Webapps\"\n component={loginOrOriginal(Embedded, true)}\n />\n <Route\n path=\"/databrowser\"\n name=\"DataBrowser\"\n component={loginOrOriginal(DataBrowser, true)}\n />\n <Route\n path=\"/serverConfiguration/datafiddler\"\n name=\"DataFiddler\"\n component={loginOrOriginal(Playground, true)}\n />\n <Route\n path=\"/appstore\"\n name=\"Appstore\"\n component={loginOrOriginal(Apps)}\n />\n <Route\n path=\"/serverConfiguration/plugins/:pluginid\"\n component={loginOrOriginal(Configuration)}\n />\n <Route\n path=\"/serverConfiguration/settings\"\n component={loginOrOriginal(Settings)}\n />\n <Route\n path=\"/serverConfiguration/backuprestore\"\n component={loginOrOriginal(BackupRestore)}\n />\n <Route\n path=\"/serverConfiguration/connections/:providerId\"\n component={loginOrOriginal(ProvidersConfiguration)}\n />\n <Route\n path=\"/serverConfiguration/log\"\n component={loginOrOriginal(ServerLog)}\n />\n <Route\n path=\"/serverConfiguration/update\"\n component={loginOrOriginal(ServerUpdate)}\n />\n <Route\n path=\"/security/settings\"\n component={loginOrOriginal(SecuritySettings)}\n />\n <Route\n path=\"/security/users\"\n component={loginOrOriginal(Users)}\n />\n <Route\n path=\"/security/devices\"\n component={loginOrOriginal(Devices)}\n />\n <Route\n path=\"/security/access/requests\"\n component={loginOrOriginal(AccessRequests)}\n />\n <Route path=\"/login\" component={Login} />\n <Route path=\"/register\" component={Register} />\n <Redirect from=\"/\" to=\"/dashboard\" />\n </Switch>\n </Container>\n </main>\n <Aside />\n </div>\n <Footer />\n </div>\n )\n }\n}\n\nexport default connect()(Full)\n\nconst loginOrOriginal = (BaseComponent, componentSupportsReadOnly) => {\n class Restricted extends Component {\n constructor(props) {\n super(props)\n this.state = { hasError: false }\n }\n\n static getDerivedStateFromError() {\n return { hasError: true }\n }\n\n render() {\n if (loginRequired(this.props.loginStatus, componentSupportsReadOnly)) {\n return <Login />\n } else if (this.state.hasError) {\n return <span>Something went wrong.</span>\n } else {\n return <BaseComponent {...this.props} />\n }\n }\n }\n return connect(({ loginStatus }) => ({ loginStatus }))(withRouter(Restricted))\n}\n\nfunction loginRequired(loginStatus, componentSupportsReadOnly) {\n // component works with read only access and\n // server loginStatus allows read only access\n if (componentSupportsReadOnly && loginStatus.readOnlyAccess) {\n return false\n }\n\n // require login when server requires authentication AND\n // user is not logged\n return (\n loginStatus.authenticationRequired && loginStatus.status === 'notLoggedIn'\n )\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { HashRouter, Route, Switch } from 'react-router-dom'\nimport { Provider } from 'react-redux'\nimport { createStore, applyMiddleware } from 'redux'\nimport thunk from 'redux-thunk'\n\n// Styles\n// Import Font Awesome Icons Set\nimport 'font-awesome/css/font-awesome.min.css'\nimport '@fortawesome/fontawesome-free/css/all.min.css'\n// Import Simple Line Icons Set\nimport 'simple-line-icons/css/simple-line-icons.css'\n// Import Main styles for this application\nimport '../scss/style.scss'\n// Temp fix for reactstrap\nimport '../scss/core/_dropdown-menu-right.scss'\n\n// Containers\nimport Full from './containers/Full/Full'\n\nimport { openServerEventsConnection } from './actions'\n\nimport { reduceSourcePriorities } from './views/ServerConfig/SourcePriorities'\n\nimport escape from 'escape-html'\nimport Convert from 'ansi-to-html'\n\nconst convert = new Convert()\nconst entries = []\n\nlet logEntryCount = 0\n\nfor (let i = 0; i < 100; i++) {\n entries[i] = {\n i: logEntryCount++,\n d: ''\n }\n}\n\nconst state = {\n plugins: [],\n webapps: [],\n addons: [],\n appStore: {\n updates: [],\n installed: [],\n available: [],\n installing: []\n },\n loginStatus: {},\n serverSpecification: {},\n websocketStatus: 'initial',\n webSocket: null,\n restarting: false,\n accessRequests: [],\n discoveredProviders: [],\n log: {\n entries,\n debugEnabled: '',\n rememberDebug: false\n },\n restoreStatus: {},\n vesselInfo: {},\n sourcePrioritiesData: {\n sourcePriorities: [],\n saveState: {\n dirty: false,\n timeoutsOk: true\n }\n }\n}\n\nlet store = createStore(\n (state, action) => {\n if (action.type === 'RECEIVE_PLUGIN_LIST') {\n return {\n ...state,\n plugins: action.data\n }\n }\n if (action.type === 'RECEIVE_WEBAPPS_LIST') {\n return {\n ...state,\n webapps: action.data\n }\n }\n if (action.type === 'RECEIVE_ADDONS_LIST') {\n return {\n ...state,\n addons: action.data\n }\n }\n if (\n action.type === 'RECEIVE_APPSTORE_LIST' ||\n action.type === 'APP_STORE_CHANGED'\n ) {\n var apps = action.data\n\n apps.installing.sort(nameCollator)\n apps.available.sort(nameCollator)\n apps.installed.sort(nameCollator)\n apps.updates.sort(nameCollator)\n\n return {\n ...state,\n appStore: apps\n }\n }\n if (action.type === 'SERVERSTATISTICS') {\n return {\n ...state,\n serverStatistics: action.data\n }\n }\n if (action.type === 'PROVIDERSTATUS') {\n action.data.sort((l, r) => {\n return l.id > r.id\n })\n return {\n ...state,\n providerStatus: action.data\n }\n }\n if (action.type === 'RECEIVE_LOGIN_STATUS') {\n return {\n ...state,\n loginStatus: action.data\n }\n }\n if (action.type === 'RECEIVE_SERVER_SPEC') {\n return {\n ...state,\n serverSpecification: action.data\n }\n }\n if (action.type === 'WEBSOCKET_CONNECTED') {\n return {\n ...state,\n websocketStatus: 'connected'\n }\n }\n if (action.type === 'WEBSOCKET_OPEN') {\n if (state.webSocketTimer) {\n clearInterval(state.webSocketTimer)\n delete state.webSocketTimer\n }\n if (state.restarting) {\n state.restarting = false\n }\n return {\n ...state,\n websocketStatus: 'open',\n webSocket: action.data\n }\n }\n if (action.type === 'VESSEL_INFO') {\n if (action.data.name) {\n document.title = action.data.name\n }\n return {\n ...state,\n vesselInfo: action.data\n }\n }\n if (action.type === 'WEBSOCKET_ERROR') {\n return {\n ...state,\n websocketStatus: 'error'\n }\n }\n if (action.type === 'WEBSOCKET_CLOSE') {\n if (!state.webSocketTimer) {\n state.webSocketTimer = setInterval(() => {\n console.log(`retry...`)\n openServerEventsConnection(store.dispatch, true)\n }, 5 * 1000)\n }\n return {\n ...state,\n websocketStatus: 'closed',\n webSocket: null\n }\n }\n if (action.type === 'LOGIN_SUCCESS') {\n if (state.webSocket) {\n // since we're closing manually, don't let the reconnect timer start\n state.webSocket.onclose = undefined\n state.webSocket.close()\n }\n openServerEventsConnection(store.dispatch)\n return state\n }\n if (action.type === 'SERVER_RESTART') {\n return {\n ...state,\n restarting: true\n }\n }\n if (action.data === 'SERVER_UP') {\n return {\n ...state,\n restarting: false\n }\n }\n if (action.type === 'LOGOUT_REQUESTED') {\n if (state.webSocket) {\n state.webSocket.close()\n }\n }\n if (action.type === 'ACCESS_REQUEST') {\n return {\n ...state,\n accessRequests: action.data\n }\n }\n if (action.type === 'DISCOVERY_CHANGED') {\n return {\n ...state,\n discoveredProviders: action.data\n }\n }\n if (action.type === 'DEBUG_SETTINGS') {\n return {\n ...state,\n log: { ...state.log, ...action.data }\n }\n }\n if (action.type === 'LOG') {\n const style = action.data.isError ? 'color:red' : 'font-weight:lighter'\n const html =\n `<span style=\"${style}\">` +\n action.data.ts +\n '</span> ' +\n convert.toHtml(escape(action.data.row))\n state.log.entries.push({\n i: logEntryCount++,\n d: html\n })\n if (state.log.entries.length > 100) {\n state.log.entries.shift()\n }\n return {\n ...state,\n log: {\n ...state.log,\n entries: state.log.entries\n }\n }\n }\n if (action.type === 'RESTORESTATUS') {\n return {\n ...state,\n restoreStatus: action.data\n }\n }\n if (action.type === 'SOURCEPRIORITIES') {\n const sourcePrioritiesMap = action.data\n const sourcePriorities = Object.keys(sourcePrioritiesMap).map((key) => ({\n path: key,\n priorities: sourcePrioritiesMap[key]\n }))\n sourcePriorities.state = {}\n\n return {\n ...state,\n sourcePrioritiesData: {\n sourcePriorities,\n saveState: {\n dirty: false,\n timeoutsOk: true\n }\n }\n }\n }\n return {\n ...state,\n sourcePrioritiesData: reduceSourcePriorities(\n state.sourcePrioritiesData,\n action\n )\n }\n },\n state,\n applyMiddleware(thunk)\n)\n\nfunction nameCollator(left, right) {\n if (left.name < right.name) {\n return -1\n } else if (left.name > right.name) {\n return 1\n } else {\n return 0\n }\n}\n\nwindow.serverRoutesPrefix = '/skServer'\n\n// eslint-disable-next-line no-undef\n__webpack_init_sharing__('default')\n\nReactDOM.render(\n <HashRouter>\n <Switch>\n <Provider store={store}>\n <Route path=\"/\" name=\"Home\" component={Full} />\n </Provider>\n </Switch>\n </HashRouter>,\n document.getElementById('root')\n)\n","export default __webpack_public_path__ + \"./fonts/signal-k-logo-image-text.d132ec2c4f0269c103c868aaa6868f01.svg\";","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-header .navbar-nav .dropdown-menu-right{right:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./scss/core/_dropdown-menu-right.scss\"],\"names\":[],\"mappings\":\"AAGI,6CACE,UAAA\",\"sourcesContent\":[\"// Temp fix for reactstrap\\n.app-header {\\n .navbar-nav {\\n .dropdown-menu-right {\\n right: auto;\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","export default __webpack_public_path__ + \"./fonts/signal-k-logo-image.200bef2a0bd5597ecdd8594980e10b8b.svg\";","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../public_src/img/signal-k-logo-image-text.svg\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../public_src/img/signal-k-logo-image.svg\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*!\\n * CoreUI - Open Source Bootstrap Admin Template\\n * @version v1.0.6\\n * @link http://coreui.io\\n * Copyright (c) 2017 creativeLabs Łukasz Holeczek\\n * @license MIT\\n *//*!\\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\\n * Copyright 2011-2022 The Bootstrap Authors\\n * Copyright 2011-2022 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\\n */:root{--blue: #003399;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #f86c6b;--orange: #f8cb00;--yellow: #ffcc00;--green: #4dbd74;--teal: #20c997;--cyan: #63c2de;--white: #fff;--gray: #536c79;--gray-dark: #29363d;--blue: #003399;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #f86c6b;--orange: #f8cb00;--yellow: #ffcc00;--green: #4dbd74;--teal: #20c997;--cyan: #63c2de;--white: #fff;--gray: #536c79;--primary: #003399;--secondary: #3e515b;--success: #4dbd74;--info: #63c2de;--warning: #ffcc00;--danger: #f86c6b;--light: #c2cfd6;--dark: #29363d;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, \\\"Noto Sans\\\", \\\"Liberation Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\";--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,\\\"Noto Sans\\\",\\\"Liberation Sans\\\",sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\";font-size:0.875rem;font-weight:400;line-height:1.5;color:#151b1e;text-align:left;background-color:#e4e5e6}[tabindex=\\\"-1\\\"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:#039;text-decoration:none;background-color:rgba(0,0,0,0)}a:hover{color:rgb(0,25.5,76.5);text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#536c79;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.1875rem}h2,.h2{font-size:1.75rem}h3,.h3{font-size:1.53125rem}h4,.h4{font-size:1.3125rem}h5,.h5{font-size:1.09375rem}h6,.h6{font-size:0.875rem}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}small,.small{font-size:0.875em;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote-footer{display:block;font-size:0.875em;color:#536c79}.blockquote-footer::before{content:\\\"— \\\"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#e4e5e6;border:1px solid #a4b7c1;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#536c79}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#151b1e;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#151b1e}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col-xl,.col-xl-auto,.col-xl-12,.col-xl-11,.col-xl-10,.col-xl-9,.col-xl-8,.col-xl-7,.col-xl-6,.col-xl-5,.col-xl-4,.col-xl-3,.col-xl-2,.col-xl-1,.col-lg,.col-lg-auto,.col-lg-12,.col-lg-11,.col-lg-10,.col-lg-9,.col-lg-8,.col-lg-7,.col-lg-6,.col-lg-5,.col-lg-4,.col-lg-3,.col-lg-2,.col-lg-1,.col-md,.col-md-auto,.col-md-12,.col-md-11,.col-md-10,.col-md-9,.col-md-8,.col-md-7,.col-md-6,.col-md-5,.col-md-4,.col-md-3,.col-md-2,.col-md-1,.col-sm,.col-sm-auto,.col-sm-12,.col-sm-11,.col-sm-10,.col-sm-9,.col-sm-8,.col-sm-7,.col-sm-6,.col-sm-5,.col-sm-4,.col-sm-3,.col-sm-2,.col-sm-1,.col,.col-auto,.col-12,.col-11,.col-10,.col-9,.col-8,.col-7,.col-6,.col-5,.col-4,.col-3,.col-2,.col-1{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}@media(min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-sm-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-sm-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-sm-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-sm-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}}@media(min-width: 768px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-md-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-md-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-md-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-md-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}}@media(min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-lg-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-lg-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-lg-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-lg-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}}@media(min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.3333333333%;max-width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.6666666667%;max-width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333333%;max-width:8.33333333%}.col-xl-2{flex:0 0 16.66666667%;max-width:16.66666667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333333%;max-width:33.33333333%}.col-xl-5{flex:0 0 41.66666667%;max-width:41.66666667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333333%;max-width:58.33333333%}.col-xl-8{flex:0 0 66.66666667%;max-width:66.66666667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333333%;max-width:83.33333333%}.col-xl-11{flex:0 0 91.66666667%;max-width:91.66666667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}}.table{width:100%;margin-bottom:1rem;color:#151b1e}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #a4b7c1}.table thead th{vertical-align:bottom;border-bottom:2px solid #a4b7c1}.table tbody+tbody{border-top:2px solid #a4b7c1}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #a4b7c1}.table-bordered th,.table-bordered td{border:1px solid #a4b7c1}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#151b1e;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:rgb(183.6,197.88,226.44)}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:rgb(122.4,148.92,201.96)}.table-hover .table-primary:hover{background-color:hsl(220,42.8571428571%,75.4%)}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:hsl(220,42.8571428571%,75.4%)}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:rgb(200.96,206.28,209.08)}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:rgb(154.64,164.52,169.72)}.table-hover .table-secondary:hover{background-color:hsl(200.6896551724,8.1232492997%,75.4%)}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:hsl(200.6896551724,8.1232492997%,75.4%)}.table-success,.table-success>th,.table-success>td{background-color:rgb(205.16,236.52,216.08)}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:rgb(162.44,220.68,182.72)}.table-hover .table-success:hover{background-color:rgb(186.5575409836,229.6224590164,201.5533606557)}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:rgb(186.5575409836,229.6224590164,201.5533606557)}.table-info,.table-info>th,.table-info>td{background-color:rgb(211.32,237.92,245.76)}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:rgb(173.88,223.28,237.84)}.table-hover .table-info:hover{background-color:rgb(190.2723809524,229.6898412698,241.3076190476)}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:rgb(190.2723809524,229.6898412698,241.3076190476)}.table-warning,.table-warning>th,.table-warning>td{background-color:hsl(48,100%,86%)}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:hsl(48,100%,74%)}.table-hover .table-warning:hover{background-color:hsl(48,100%,81%)}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:hsl(48,100%,81%)}.table-danger,.table-danger>th,.table-danger>td{background-color:rgb(253.04,213.84,213.56)}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:rgb(251.36,178.56,178.04)}.table-hover .table-danger:hover{background-color:hsl(.4255319149,90.9677419355%,86.4901960784%)}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:hsl(.4255319149,90.9677419355%,86.4901960784%)}.table-light,.table-light>th,.table-light>td{background-color:rgb(237.92,241.56,243.52)}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:rgb(223.28,230.04,233.68)}.table-hover .table-light:hover{background-color:rgb(222.67,229.56,233.27)}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:rgb(222.67,229.56,233.27)}.table-dark,.table-dark>th,.table-dark>td{background-color:rgb(195.08,198.72,200.68)}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:rgb(143.72,150.48,154.12)}.table-hover .table-dark:hover{background-color:hsl(201,4.9019607843%,72.6%)}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:hsl(201,4.9019607843%,72.6%)}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#29363d;border-color:rgb(56.375,74.25,83.875)}.table .thead-light th{color:#3e515b;background-color:#c2cfd6;border-color:#a4b7c1}.table-dark{color:#fff;background-color:#29363d}.table-dark th,.table-dark td,.table-dark thead th{border-color:rgb(56.375,74.25,83.875)}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media(max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media(max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media(max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media(max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.375rem .75rem;font-size:0.875rem;font-weight:400;line-height:1.5;color:#3e515b;background-color:#fff;background-clip:padding-box;border:1px solid #c2cfd6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:rgba(0,0,0,0);border:0}.form-control:focus{color:#3e515b;background-color:#fff;border-color:rgb(25.5,102,255);outline:0;box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.form-control::placeholder{color:#536c79;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#c2cfd6;opacity:1}input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{appearance:none}select.form-control:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #3e515b}select.form-control:focus::-ms-value{color:#3e515b;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.09375rem;line-height:1.5}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.765625rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:0.875rem;line-height:1.5;color:#151b1e;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:0.765625rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.09375rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{color:#536c79}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#4dbd74}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.765625rem;line-height:1.5;color:#fff;background-color:rgba(77,189,116,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#4dbd74;padding-right:calc(1.5em + 0.75rem) !important;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%234dbd74' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#4dbd74;box-shadow:0 0 0 .2rem rgba(77,189,116,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem !important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#4dbd74;padding-right:calc(0.75em + 2.3125rem) !important;background:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%2329363d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") right .75rem center/8px 10px no-repeat,#fff url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%234dbd74' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#4dbd74;box-shadow:0 0 0 .2rem rgba(77,189,116,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#4dbd74}.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip,.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip{display:block}.was-validated .custom-control-input:valid~.custom-control-label,.custom-control-input.is-valid~.custom-control-label{color:#4dbd74}.was-validated .custom-control-input:valid~.custom-control-label::before,.custom-control-input.is-valid~.custom-control-label::before{border-color:#4dbd74}.was-validated .custom-control-input:valid:checked~.custom-control-label::before,.custom-control-input.is-valid:checked~.custom-control-label::before{border-color:rgb(114.2049180328,202.7950819672,145.0532786885);background-color:rgb(114.2049180328,202.7950819672,145.0532786885)}.was-validated .custom-control-input:valid:focus~.custom-control-label::before,.custom-control-input.is-valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(77,189,116,.25)}.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before{border-color:#4dbd74}.was-validated .custom-file-input:valid~.custom-file-label,.custom-file-input.is-valid~.custom-file-label{border-color:#4dbd74}.was-validated .custom-file-input:valid:focus~.custom-file-label,.custom-file-input.is-valid:focus~.custom-file-label{border-color:#4dbd74;box-shadow:0 0 0 .2rem rgba(77,189,116,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#f86c6b}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.765625rem;line-height:1.5;color:#fff;background-color:rgba(248,108,107,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#f86c6b;padding-right:calc(1.5em + 0.75rem) !important;background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f86c6b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f86c6b' stroke='none'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#f86c6b;box-shadow:0 0 0 .2rem rgba(248,108,107,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem !important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#f86c6b;padding-right:calc(0.75em + 2.3125rem) !important;background:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%2329363d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") right .75rem center/8px 10px no-repeat,#fff url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23f86c6b' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f86c6b' stroke='none'/%3e%3c/svg%3e\\\") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#f86c6b;box-shadow:0 0 0 .2rem rgba(248,108,107,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#f86c6b}.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip,.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip{display:block}.was-validated .custom-control-input:invalid~.custom-control-label,.custom-control-input.is-invalid~.custom-control-label{color:#f86c6b}.was-validated .custom-control-input:invalid~.custom-control-label::before,.custom-control-input.is-invalid~.custom-control-label::before{border-color:#f86c6b}.was-validated .custom-control-input:invalid:checked~.custom-control-label::before,.custom-control-input.is-invalid:checked~.custom-control-label::before{border-color:hsl(.4255319149,90.9677419355%,79.6078431373%);background-color:hsl(.4255319149,90.9677419355%,79.6078431373%)}.was-validated .custom-control-input:invalid:focus~.custom-control-label::before,.custom-control-input.is-invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(248,108,107,.25)}.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before{border-color:#f86c6b}.was-validated .custom-file-input:invalid~.custom-file-label,.custom-file-input.is-invalid~.custom-file-label{border-color:#f86c6b}.was-validated .custom-file-input:invalid:focus~.custom-file-label,.custom-file-input.is-invalid:focus~.custom-file-label{border-color:#f86c6b;box-shadow:0 0 0 .2rem rgba(248,108,107,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media(min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#151b1e;text-align:center;vertical-align:middle;user-select:none;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);padding:.375rem .75rem;font-size:0.875rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#151b1e;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#039;border-color:#039}.btn-primary:hover{color:#fff;background-color:rgb(0,38.25,114.75);border-color:#026}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:rgb(0,38.25,114.75);border-color:#026;box-shadow:0 0 0 .2rem rgba(38.25,81.6,168.3,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#039;border-color:#039}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#026;border-color:rgb(0,29.75,89.25)}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38.25,81.6,168.3,.5)}.btn-secondary{color:#fff;background-color:#3e515b;border-color:#3e515b}.btn-secondary:hover{color:#fff;background-color:rgb(46.5,60.75,68.25);border-color:rgb(41.3333333333,54,60.6666666667)}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:rgb(46.5,60.75,68.25);border-color:rgb(41.3333333333,54,60.6666666667);box-shadow:0 0 0 .2rem rgba(90.95,107.1,115.6,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#3e515b;border-color:#3e515b}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:rgb(41.3333333333,54,60.6666666667);border-color:rgb(36.1666666667,47.25,53.0833333333)}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(90.95,107.1,115.6,.5)}.btn-success{color:#fff;background-color:#4dbd74;border-color:#4dbd74}.btn-success:hover{color:#fff;background-color:rgb(61.6045081967,166.1454918033,98.0071721311);border-color:rgb(58.1557377049,156.8442622951,92.5204918033)}.btn-success:focus,.btn-success.focus{color:#fff;background-color:rgb(61.6045081967,166.1454918033,98.0071721311);border-color:rgb(58.1557377049,156.8442622951,92.5204918033);box-shadow:0 0 0 .2rem rgba(103.7,198.9,136.85,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#4dbd74;border-color:#4dbd74}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:rgb(58.1557377049,156.8442622951,92.5204918033);border-color:rgb(54.7069672131,147.5430327869,87.0338114754)}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(103.7,198.9,136.85,.5)}.btn-info{color:#151b1e;background-color:#63c2de;border-color:#63c2de}.btn-info:hover{color:#151b1e;background-color:rgb(67.4285714286,181.6547619048,215.3214285714);border-color:rgb(56.9047619048,177.5396825397,213.0952380952)}.btn-info:focus,.btn-info.focus{color:#151b1e;background-color:rgb(67.4285714286,181.6547619048,215.3214285714);border-color:rgb(56.9047619048,177.5396825397,213.0952380952);box-shadow:0 0 0 .2rem rgba(87.3,168.95,193.2,.5)}.btn-info.disabled,.btn-info:disabled{color:#151b1e;background-color:#63c2de;border-color:#63c2de}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:rgb(56.9047619048,177.5396825397,213.0952380952);border-color:rgb(46.380952381,173.4246031746,210.869047619)}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(87.3,168.95,193.2,.5)}.btn-warning{color:#151b1e;background-color:#fc0;border-color:#fc0}.btn-warning:hover{color:#151b1e;background-color:hsl(48,100%,42.5%);border-color:rgb(204,163.2,0)}.btn-warning:focus,.btn-warning.focus{color:#151b1e;background-color:hsl(48,100%,42.5%);border-color:rgb(204,163.2,0);box-shadow:0 0 0 .2rem rgba(219.9,177.45,4.5,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#151b1e;background-color:#fc0;border-color:#fc0}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#151b1e;background-color:rgb(204,163.2,0);border-color:rgb(191.25,153,0)}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(219.9,177.45,4.5,.5)}.btn-danger{color:#fff;background-color:#f86c6b;border-color:#f86c6b}.btn-danger:hover{color:#fff;background-color:hsl(.4255319149,90.9677419355%,62.1078431373%);border-color:hsl(.4255319149,90.9677419355%,59.6078431373%)}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:hsl(.4255319149,90.9677419355%,62.1078431373%);border-color:hsl(.4255319149,90.9677419355%,59.6078431373%);box-shadow:0 0 0 .2rem rgba(249.05,130.05,129.2,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#f86c6b;border-color:#f86c6b}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:hsl(.4255319149,90.9677419355%,59.6078431373%);border-color:hsl(.4255319149,90.9677419355%,57.1078431373%)}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(249.05,130.05,129.2,.5)}.btn-light{color:#151b1e;background-color:#c2cfd6;border-color:#c2cfd6}.btn-light:hover{color:#151b1e;background-color:rgb(171.125,189,198.625);border-color:rgb(163.5,183,193.5)}.btn-light:focus,.btn-light.focus{color:#151b1e;background-color:rgb(171.125,189,198.625);border-color:rgb(163.5,183,193.5);box-shadow:0 0 0 .2rem rgba(168.05,180,186.4,.5)}.btn-light.disabled,.btn-light:disabled{color:#151b1e;background-color:#c2cfd6;border-color:#c2cfd6}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#151b1e;background-color:rgb(163.5,183,193.5);border-color:rgb(155.875,177,188.375)}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(168.05,180,186.4,.5)}.btn-dark{color:#fff;background-color:#29363d;border-color:#29363d}.btn-dark:hover{color:#fff;background-color:rgb(25.625,33.75,38.125);border-color:rgb(20.5,27,30.5)}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:rgb(25.625,33.75,38.125);border-color:rgb(20.5,27,30.5);box-shadow:0 0 0 .2rem rgba(73.1,84.15,90.1,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#29363d;border-color:#29363d}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:rgb(20.5,27,30.5);border-color:rgb(15.375,20.25,22.875)}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(73.1,84.15,90.1,.5)}.btn-outline-primary{color:#039;border-color:#039}.btn-outline-primary:hover{color:#fff;background-color:#039;border-color:#039}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(0,51,153,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#039;background-color:rgba(0,0,0,0)}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#039;border-color:#039}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,51,153,.5)}.btn-outline-secondary{color:#3e515b;border-color:#3e515b}.btn-outline-secondary:hover{color:#fff;background-color:#3e515b;border-color:#3e515b}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(62,81,91,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#3e515b;background-color:rgba(0,0,0,0)}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#3e515b;border-color:#3e515b}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(62,81,91,.5)}.btn-outline-success{color:#4dbd74;border-color:#4dbd74}.btn-outline-success:hover{color:#fff;background-color:#4dbd74;border-color:#4dbd74}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(77,189,116,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#4dbd74;background-color:rgba(0,0,0,0)}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#4dbd74;border-color:#4dbd74}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(77,189,116,.5)}.btn-outline-info{color:#63c2de;border-color:#63c2de}.btn-outline-info:hover{color:#151b1e;background-color:#63c2de;border-color:#63c2de}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(99,194,222,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#63c2de;background-color:rgba(0,0,0,0)}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#151b1e;background-color:#63c2de;border-color:#63c2de}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(99,194,222,.5)}.btn-outline-warning{color:#fc0;border-color:#fc0}.btn-outline-warning:hover{color:#151b1e;background-color:#fc0;border-color:#fc0}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,204,0,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#fc0;background-color:rgba(0,0,0,0)}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#151b1e;background-color:#fc0;border-color:#fc0}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,204,0,.5)}.btn-outline-danger{color:#f86c6b;border-color:#f86c6b}.btn-outline-danger:hover{color:#fff;background-color:#f86c6b;border-color:#f86c6b}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(248,108,107,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#f86c6b;background-color:rgba(0,0,0,0)}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#f86c6b;border-color:#f86c6b}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,108,107,.5)}.btn-outline-light{color:#c2cfd6;border-color:#c2cfd6}.btn-outline-light:hover{color:#151b1e;background-color:#c2cfd6;border-color:#c2cfd6}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(194,207,214,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#c2cfd6;background-color:rgba(0,0,0,0)}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#151b1e;background-color:#c2cfd6;border-color:#c2cfd6}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(194,207,214,.5)}.btn-outline-dark{color:#29363d;border-color:#29363d}.btn-outline-dark:hover{color:#fff;background-color:#29363d;border-color:#29363d}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(41,54,61,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#29363d;background-color:rgba(0,0,0,0)}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#29363d;border-color:#29363d}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(41,54,61,.5)}.btn-link{font-weight:400;color:#039;text-decoration:none}.btn-link:hover{color:rgb(0,25.5,76.5);text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#536c79;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.09375rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:0.765625rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.width{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.width{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:0 0;margin:.125rem 0 0;font-size:0.875rem;color:#151b1e;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #c2cfd6;border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\"}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=top],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #f0f3f5}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#151b1e;text-align:inherit;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:first-child{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.dropdown-item:last-child{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.dropdown-item:hover,.dropdown-item:focus{color:rgb(10.5,13.5,15);text-decoration:none;background-color:#c2cfd6}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#039}.dropdown-item.disabled,.dropdown-item:disabled{color:#678898;pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:0 1.5rem;margin-bottom:0;font-size:0.765625rem;color:#536c79;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#151b1e}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus~.custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.form-control:not(:last-child),.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:0.875rem;font-weight:400;line-height:1.5;color:#3e515b;text-align:center;white-space:nowrap;background-color:#f0f3f5;border:1px solid #c2cfd6;border-radius:.25rem}.input-group-text input[type=radio],.input-group-text input[type=checkbox]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.09375rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + 0.5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:0.765625rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.3125rem;padding-left:1.5rem;print-color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.15625rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#039;background-color:#039}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:rgb(25.5,102,255)}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:rgb(76.5,136,255);border-color:rgb(76.5,136,255)}.custom-control-input[disabled]~.custom-control-label,.custom-control-input:disabled~.custom-control-label{color:#536c79}.custom-control-input[disabled]~.custom-control-label::before,.custom-control-input:disabled~.custom-control-label::before{background-color:#c2cfd6}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.15625rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:\\\"\\\";background-color:#fff;border:1px solid #678898}.custom-control-label::after{position:absolute;top:.15625rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\\\"\\\";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\\\")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#039;background-color:#039}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\\\")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,51,153,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,51,153,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\\\")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,51,153,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(0.15625rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#678898;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(0.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,51,153,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:0.875rem;font-weight:400;line-height:1.5;color:#3e515b;vertical-align:middle;background:#fff url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%2329363d' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") right .75rem center/8px 10px no-repeat;border:1px solid #c2cfd6;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:rgb(25.5,102,255);outline:0;box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.custom-select:focus::-ms-value{color:#3e515b;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\\\"1\\\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#536c79;background-color:#c2cfd6}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #3e515b}.custom-select-sm{height:calc(1.5em + 0.5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.765625rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.09375rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + 0.75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + 0.75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:rgb(25.5,102,255);box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.custom-file-input[disabled]~.custom-file-label,.custom-file-input:disabled~.custom-file-label{background-color:#c2cfd6}.custom-file-input:lang(en)~.custom-file-label::after{content:\\\"Browse\\\"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + 0.75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#3e515b;background-color:#fff;border:1px solid #c2cfd6;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + 0.75rem);padding:.375rem .75rem;line-height:1.5;color:#3e515b;content:\\\"Browse\\\";background-color:#f0f3f5;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:rgba(0,0,0,0);appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #e4e5e6,0 0 0 .2rem rgba(0,51,153,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #e4e5e6,0 0 0 .2rem rgba(0,51,153,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #e4e5e6,0 0 0 .2rem rgba(0,51,153,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#039;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:rgb(76.5,136,255)}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#a4b7c1;border-color:rgba(0,0,0,0);border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#039;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:rgb(76.5,136,255)}.custom-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#a4b7c1;border-color:rgba(0,0,0,0);border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#039;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:rgb(76.5,136,255)}.custom-range::-ms-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#a4b7c1;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#a4b7c1;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#678898}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#678898}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#678898}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link,.navbar .dropdown-toggle{display:block;padding:.5rem 1rem}.nav-link:hover,.navbar .dropdown-toggle:hover,.nav-link:focus,.navbar .dropdown-toggle:focus{text-decoration:none}.nav-link.disabled,.navbar .disabled.dropdown-toggle{color:#536c79;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #a4b7c1}.nav-tabs .nav-link,.nav-tabs .navbar .dropdown-toggle,.navbar .nav-tabs .dropdown-toggle{margin-bottom:-1px;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .navbar .dropdown-toggle:hover,.navbar .nav-tabs .dropdown-toggle:hover,.nav-tabs .nav-link:focus,.nav-tabs .navbar .dropdown-toggle:focus,.navbar .nav-tabs .dropdown-toggle:focus{isolation:isolate;border-color:#c2cfd6 #c2cfd6 #a4b7c1}.nav-tabs .nav-link.disabled,.nav-tabs .navbar .disabled.dropdown-toggle,.navbar .nav-tabs .disabled.dropdown-toggle{color:#536c79;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.nav-tabs .nav-link.active,.nav-tabs .navbar .active.dropdown-toggle,.navbar .nav-tabs .active.dropdown-toggle,.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-item.show .navbar .dropdown-toggle,.navbar .nav-tabs .nav-item.show .dropdown-toggle{color:#3e515b;background-color:#e4e5e6;border-color:#a4b7c1 #a4b7c1 #e4e5e6}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link,.nav-pills .navbar .dropdown-toggle,.navbar .nav-pills .dropdown-toggle{background:none;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .navbar .active.dropdown-toggle,.navbar .nav-pills .active.dropdown-toggle,.nav-pills .show>.nav-link,.nav-pills .navbar .show>.dropdown-toggle,.navbar .nav-pills .show>.dropdown-toggle{color:#fff;background-color:#039}.nav-fill>.nav-link,.navbar .nav-fill>.dropdown-toggle,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.navbar .nav-justified>.dropdown-toggle,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3359375rem;padding-bottom:.3359375rem;margin-right:1rem;font-size:1.09375rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link,.navbar-nav .navbar .dropdown-toggle,.navbar .navbar-nav .dropdown-toggle{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.09375rem;line-height:1;background-color:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\\\"\\\";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media(max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media(min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link,.navbar-expand-sm .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-expand-sm .navbar-nav .dropdown-toggle{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media(max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media(min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link,.navbar-expand-md .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-expand-md .navbar-nav .dropdown-toggle{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media(max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media(min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link,.navbar-expand-lg .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-expand-lg .navbar-nav .dropdown-toggle{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media(max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media(min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link,.navbar-expand-xl .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-expand-xl .navbar-nav .dropdown-toggle{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link,.navbar-expand .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-expand .navbar-nav .dropdown-toggle{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link,.navbar-light .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-light .navbar-nav .dropdown-toggle{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .navbar .dropdown-toggle:hover,.navbar .navbar-light .navbar-nav .dropdown-toggle:hover,.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .navbar .dropdown-toggle:focus,.navbar .navbar-light .navbar-nav .dropdown-toggle:focus{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled,.navbar-light .navbar-nav .navbar .disabled.dropdown-toggle,.navbar .navbar-light .navbar-nav .disabled.dropdown-toggle{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .navbar .show>.dropdown-toggle,.navbar .navbar-light .navbar-nav .show>.dropdown-toggle,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .navbar .active>.dropdown-toggle,.navbar .navbar-light .navbar-nav .active>.dropdown-toggle,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .navbar .show.dropdown-toggle,.navbar .navbar-light .navbar-nav .show.dropdown-toggle,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .navbar .active.dropdown-toggle,.navbar .navbar-light .navbar-nav .active.dropdown-toggle{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link,.navbar-dark .navbar-nav .navbar .dropdown-toggle,.navbar .navbar-dark .navbar-nav .dropdown-toggle{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .navbar .dropdown-toggle:hover,.navbar .navbar-dark .navbar-nav .dropdown-toggle:hover,.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .navbar .dropdown-toggle:focus,.navbar .navbar-dark .navbar-nav .dropdown-toggle:focus{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled,.navbar-dark .navbar-nav .navbar .disabled.dropdown-toggle,.navbar .navbar-dark .navbar-nav .disabled.dropdown-toggle{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .navbar .show>.dropdown-toggle,.navbar .navbar-dark .navbar-nav .show>.dropdown-toggle,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .navbar .active>.dropdown-toggle,.navbar .navbar-dark .navbar-nav .active>.dropdown-toggle,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .navbar .show.dropdown-toggle,.navbar .navbar-dark .navbar-nav .show.dropdown-toggle,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .navbar .active.dropdown-toggle,.navbar .navbar-dark .navbar-nav .active.dropdown-toggle{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #c2cfd6;border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body,.card-block{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-0.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f0f3f5;border-bottom:1px solid #c2cfd6}.card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f0f3f5;border-top:1px solid #c2cfd6}.card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.card-header-tabs{margin-right:-0.625rem;margin-bottom:-0.75rem;margin-left:-0.625rem;border-bottom:0}.card-header-pills{margin-right:-0.625rem;margin-left:-0.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(0.25rem - 1px)}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.25rem - 1px);border-bottom-left-radius:calc(0.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media(min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media(min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1.5rem;list-style:none;background-color:#fff;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#536c79;content:\\\"/\\\"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#536c79}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link,.pagination-datatables li a,.pagination li a{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#039;background-color:#fff;border:1px solid #a4b7c1}.page-link:hover,.pagination-datatables li a:hover,.pagination li a:hover{z-index:2;color:rgb(0,25.5,76.5);text-decoration:none;background-color:#c2cfd6;border-color:#a4b7c1}.page-link:focus,.pagination-datatables li a:focus,.pagination li a:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,51,153,.25)}.page-item:first-child .page-link,.page-item:first-child .pagination-datatables li a,.pagination-datatables li .page-item:first-child a,.page-item:first-child .pagination li a,.pagination li .page-item:first-child a,.pagination-datatables li:first-child .page-link,.pagination-datatables li:first-child a,.pagination li:first-child .page-link,.pagination li:first-child a{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link,.page-item:last-child .pagination-datatables li a,.pagination-datatables li .page-item:last-child a,.page-item:last-child .pagination li a,.pagination li .page-item:last-child a,.pagination-datatables li:last-child .page-link,.pagination-datatables li:last-child a,.pagination li:last-child .page-link,.pagination li:last-child a{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link,.page-item.active .pagination-datatables li a,.pagination-datatables li .page-item.active a,.page-item.active .pagination li a,.pagination li .page-item.active a,.pagination-datatables li.active .page-link,.pagination-datatables li.active a,.pagination li.active .page-link,.pagination li.active a{z-index:3;color:#fff;background-color:#039;border-color:#039}.page-item.disabled .page-link,.page-item.disabled .pagination-datatables li a,.pagination-datatables li .page-item.disabled a,.page-item.disabled .pagination li a,.pagination li .page-item.disabled a,.pagination-datatables li.disabled .page-link,.pagination-datatables li.disabled a,.pagination li.disabled .page-link,.pagination li.disabled a{color:#536c79;pointer-events:none;cursor:auto;background-color:#fff;border-color:#a4b7c1}.pagination-lg .page-link,.pagination-lg .pagination-datatables li a,.pagination-datatables li .pagination-lg a,.pagination-lg .pagination li a,.pagination li .pagination-lg a{padding:.75rem 1.5rem;font-size:1.09375rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link,.pagination-lg .page-item:first-child .pagination-datatables li a,.pagination-datatables li .pagination-lg .page-item:first-child a,.pagination-lg .page-item:first-child .pagination li a,.pagination li .pagination-lg .page-item:first-child a,.pagination-lg .pagination-datatables li:first-child .page-link,.pagination-lg .pagination-datatables li:first-child a,.pagination-datatables .pagination-lg li:first-child .page-link,.pagination-datatables .pagination-lg li:first-child a,.pagination-lg .pagination li:first-child .page-link,.pagination-lg .pagination li:first-child a,.pagination .pagination-lg li:first-child .page-link,.pagination .pagination-lg li:first-child a{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link,.pagination-lg .page-item:last-child .pagination-datatables li a,.pagination-datatables li .pagination-lg .page-item:last-child a,.pagination-lg .page-item:last-child .pagination li a,.pagination li .pagination-lg .page-item:last-child a,.pagination-lg .pagination-datatables li:last-child .page-link,.pagination-lg .pagination-datatables li:last-child a,.pagination-datatables .pagination-lg li:last-child .page-link,.pagination-datatables .pagination-lg li:last-child a,.pagination-lg .pagination li:last-child .page-link,.pagination-lg .pagination li:last-child a,.pagination .pagination-lg li:last-child .page-link,.pagination .pagination-lg li:last-child a{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link,.pagination-sm .pagination-datatables li a,.pagination-datatables li .pagination-sm a,.pagination-sm .pagination li a,.pagination li .pagination-sm a{padding:.25rem .5rem;font-size:0.765625rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link,.pagination-sm .page-item:first-child .pagination-datatables li a,.pagination-datatables li .pagination-sm .page-item:first-child a,.pagination-sm .page-item:first-child .pagination li a,.pagination li .pagination-sm .page-item:first-child a,.pagination-sm .pagination-datatables li:first-child .page-link,.pagination-sm .pagination-datatables li:first-child a,.pagination-datatables .pagination-sm li:first-child .page-link,.pagination-datatables .pagination-sm li:first-child a,.pagination-sm .pagination li:first-child .page-link,.pagination-sm .pagination li:first-child a,.pagination .pagination-sm li:first-child .page-link,.pagination .pagination-sm li:first-child a{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link,.pagination-sm .page-item:last-child .pagination-datatables li a,.pagination-datatables li .pagination-sm .page-item:last-child a,.pagination-sm .page-item:last-child .pagination li a,.pagination li .pagination-sm .page-item:last-child a,.pagination-sm .pagination-datatables li:last-child .page-link,.pagination-sm .pagination-datatables li:last-child a,.pagination-datatables .pagination-sm li:last-child .page-link,.pagination-datatables .pagination-sm li:last-child a,.pagination-sm .pagination li:last-child .page-link,.pagination-sm .pagination li:last-child a,.pagination .pagination-sm li:last-child .page-link,.pagination .pagination-sm li:last-child a{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#039}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#026}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,51,153,.5)}.badge-secondary{color:#fff;background-color:#3e515b}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:rgb(41.3333333333,54,60.6666666667)}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(62,81,91,.5)}.badge-success{color:#fff;background-color:#4dbd74}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:rgb(58.1557377049,156.8442622951,92.5204918033)}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(77,189,116,.5)}.badge-info{color:#151b1e;background-color:#63c2de}a.badge-info:hover,a.badge-info:focus{color:#151b1e;background-color:rgb(56.9047619048,177.5396825397,213.0952380952)}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(99,194,222,.5)}.badge-warning{color:#151b1e;background-color:#fc0}a.badge-warning:hover,a.badge-warning:focus{color:#151b1e;background-color:rgb(204,163.2,0)}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,204,0,.5)}.badge-danger{color:#fff;background-color:#f86c6b}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:hsl(.4255319149,90.9677419355%,59.6078431373%)}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,108,107,.5)}.badge-light{color:#151b1e;background-color:#c2cfd6}a.badge-light:hover,a.badge-light:focus{color:#151b1e;background-color:rgb(163.5,183,193.5)}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(194,207,214,.5)}.badge-dark{color:#fff;background-color:#29363d}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:rgb(20.5,27,30.5)}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(41,54,61,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#c2cfd6;border-radius:.3rem}@media(min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid rgba(0,0,0,0);border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3.8125rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:rgb(0,26.52,79.56);background-color:rgb(204,214.2,234.6);border-color:rgb(183.6,197.88,226.44)}.alert-primary hr{border-top-color:hsl(220,42.8571428571%,75.4%)}.alert-primary .alert-link{color:rgb(0,9.52,28.56)}.alert-secondary{color:rgb(32.24,42.12,47.32);background-color:rgb(216.4,220.2,222.2);border-color:rgb(200.96,206.28,209.08)}.alert-secondary hr{border-top-color:hsl(200.6896551724,8.1232492997%,75.4%)}.alert-secondary .alert-link{color:rgb(11.5733333333,15.12,16.9866666667)}.alert-success{color:rgb(40.04,98.28,60.32);background-color:rgb(219.4,241.8,227.2);border-color:rgb(205.16,236.52,216.08)}.alert-success hr{border-top-color:rgb(186.5575409836,229.6224590164,201.5533606557)}.alert-success .alert-link{color:rgb(25.2768421053,62.0431578947,38.0793984962)}.alert-info{color:rgb(51.48,100.88,115.44);background-color:rgb(223.8,242.8,248.4);border-color:rgb(211.32,237.92,245.76)}.alert-info hr{border-top-color:rgb(190.2723809524,229.6898412698,241.3076190476)}.alert-info .alert-link{color:rgb(35.7510280374,70.0575700935,80.1689719626)}.alert-warning{color:hsl(48,100%,26%);background-color:hsl(48,100%,90%);border-color:hsl(48,100%,86%)}.alert-warning hr{border-top-color:hsl(48,100%,81%)}.alert-warning .alert-link{color:hsl(48,100%,16%)}.alert-danger{color:rgb(128.96,56.16,55.64);background-color:rgb(253.6,225.6,225.4);border-color:rgb(253.04,213.84,213.56)}.alert-danger hr{border-top-color:hsl(.4255319149,90.9677419355%,86.4901960784%)}.alert-danger .alert-link{color:rgb(93.3318309859,40.6445070423,40.2681690141)}.alert-light{color:rgb(100.88,107.64,111.28);background-color:rgb(242.8,245.4,246.8);border-color:rgb(237.92,241.56,243.52)}.alert-light hr{border-top-color:rgb(222.67,229.56,233.27)}.alert-light .alert-link{color:rgb(76.63,81.765,84.53)}.alert-dark{color:rgb(21.32,28.08,31.72);background-color:rgb(212.2,214.8,216.2);border-color:rgb(195.08,198.72,200.68)}.alert-dark hr{border-top-color:hsl(201,4.9019607843%,72.6%)}.alert-dark .alert-link{color:rgb(.82,1.08,1.22)}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;line-height:0;font-size:0.65625rem;background-color:#f0f3f5;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#039;transition:width .6s ease}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#3e515b;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#3e515b;text-decoration:none;background-color:#f0f3f5}.list-group-item-action:active{color:#151b1e;background-color:#c2cfd6}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#536c79;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#039;border-color:#039}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:rgb(0,26.52,79.56);background-color:rgb(183.6,197.88,226.44)}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:rgb(0,26.52,79.56);background-color:hsl(220,42.8571428571%,75.4%)}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:rgb(0,26.52,79.56);border-color:rgb(0,26.52,79.56)}.list-group-item-secondary{color:rgb(32.24,42.12,47.32);background-color:rgb(200.96,206.28,209.08)}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:rgb(32.24,42.12,47.32);background-color:hsl(200.6896551724,8.1232492997%,75.4%)}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:rgb(32.24,42.12,47.32);border-color:rgb(32.24,42.12,47.32)}.list-group-item-success{color:rgb(40.04,98.28,60.32);background-color:rgb(205.16,236.52,216.08)}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:rgb(40.04,98.28,60.32);background-color:rgb(186.5575409836,229.6224590164,201.5533606557)}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:rgb(40.04,98.28,60.32);border-color:rgb(40.04,98.28,60.32)}.list-group-item-info{color:rgb(51.48,100.88,115.44);background-color:rgb(211.32,237.92,245.76)}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:rgb(51.48,100.88,115.44);background-color:rgb(190.2723809524,229.6898412698,241.3076190476)}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:rgb(51.48,100.88,115.44);border-color:rgb(51.48,100.88,115.44)}.list-group-item-warning{color:hsl(48,100%,26%);background-color:hsl(48,100%,86%)}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:hsl(48,100%,26%);background-color:hsl(48,100%,81%)}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:hsl(48,100%,26%);border-color:hsl(48,100%,26%)}.list-group-item-danger{color:rgb(128.96,56.16,55.64);background-color:rgb(253.04,213.84,213.56)}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:rgb(128.96,56.16,55.64);background-color:hsl(.4255319149,90.9677419355%,86.4901960784%)}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:rgb(128.96,56.16,55.64);border-color:rgb(128.96,56.16,55.64)}.list-group-item-light{color:rgb(100.88,107.64,111.28);background-color:rgb(237.92,241.56,243.52)}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:rgb(100.88,107.64,111.28);background-color:rgb(222.67,229.56,233.27)}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:rgb(100.88,107.64,111.28);border-color:rgb(100.88,107.64,111.28)}.list-group-item-dark{color:rgb(21.32,28.08,31.72);background-color:rgb(195.08,198.72,200.68)}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:rgb(21.32,28.08,31.72);background-color:hsl(201,4.9019607843%,72.6%)}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:rgb(21.32,28.08,31.72);border-color:rgb(21.32,28.08,31.72)}.close{float:right;font-size:1.3125rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:rgba(0,0,0,0);border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:0.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#536c79;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;content:\\\"\\\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #a4b7c1;border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #a4b7c1;border-bottom-right-radius:calc(0.3rem - 1px);border-bottom-left-radius:calc(0.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media(min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media(min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,\\\"Noto Sans\\\",\\\"Liberation Sans\\\",sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:0.765625rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:\\\"\\\";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^=top]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^=top] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^=top] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^=right]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^=right] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^=right] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^=bottom] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^=bottom] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^=left]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^=left] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^=left] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,\\\"Segoe UI\\\",Roboto,\\\"Helvetica Neue\\\",Arial,\\\"Noto Sans\\\",\\\"Liberation Sans\\\",sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\",\\\"Noto Color Emoji\\\";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:0.765625rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:\\\"\\\";border-color:rgba(0,0,0,0);border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^=top]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^=top]>.arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^=top]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^=top]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^=right]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^=right]>.arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^=right]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^=right]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^=bottom]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^=bottom]>.arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^=bottom]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^=bottom]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-0.5rem;content:\\\"\\\";border-bottom:1px solid hsl(0,0%,97%)}.bs-popover-left,.bs-popover-auto[x-placement^=left]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^=left]>.arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^=left]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^=left]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:0.875rem;background-color:hsl(0,0%,97%);border-bottom:1px solid hsl(0,0%,92%);border-top-left-radius:calc(0.3rem - 1px);border-top-right-radius:calc(0.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#151b1e}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:\\\"\\\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\\\")}.carousel-control-next-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\\\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;border:.25em solid currentcolor;border-right-color:rgba(0,0,0,0);border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-0.125em;background-color:currentcolor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#039 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#026 !important}.bg-secondary{background-color:#3e515b !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:rgb(41.3333333333,54,60.6666666667) !important}.bg-success{background-color:#4dbd74 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:rgb(58.1557377049,156.8442622951,92.5204918033) !important}.bg-info{background-color:#63c2de !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:rgb(56.9047619048,177.5396825397,213.0952380952) !important}.bg-warning{background-color:#fc0 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:rgb(204,163.2,0) !important}.bg-danger{background-color:#f86c6b !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:hsl(.4255319149,90.9677419355%,59.6078431373%) !important}.bg-light{background-color:#c2cfd6 !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:rgb(163.5,183,193.5) !important}.bg-dark{background-color:#29363d !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:rgb(20.5,27,30.5) !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:rgba(0,0,0,0) !important}.border{border:1px solid #a4b7c1 !important}.border-top{border-top:1px solid #a4b7c1 !important}.border-right{border-right:1px solid #a4b7c1 !important}.border-bottom{border-bottom:1px solid #a4b7c1 !important}.border-left{border-left:1px solid #a4b7c1 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#039 !important}.border-secondary{border-color:#3e515b !important}.border-success{border-color:#4dbd74 !important}.border-info{border-color:#63c2de !important}.border-warning{border-color:#fc0 !important}.border-danger{border-color:#f86c6b !important}.border-light{border-color:#c2cfd6 !important}.border-dark{border-color:#29363d !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:\\\"\\\"}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media(min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media(min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media(min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media(min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:\\\"\\\"}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714286%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media(min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media(min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media(min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media(min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media(min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media(min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media(min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media(min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports(position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-0.25rem !important}.mt-n1,.my-n1{margin-top:-0.25rem !important}.mr-n1,.mx-n1{margin-right:-0.25rem !important}.mb-n1,.my-n1{margin-bottom:-0.25rem !important}.ml-n1,.mx-n1{margin-left:-0.25rem !important}.m-n2{margin:-0.5rem !important}.mt-n2,.my-n2{margin-top:-0.5rem !important}.mr-n2,.mx-n2{margin-right:-0.5rem !important}.mb-n2,.my-n2{margin-bottom:-0.5rem !important}.ml-n2,.mx-n2{margin-left:-0.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media(min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-0.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-0.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-0.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-0.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-0.25rem !important}.m-sm-n2{margin:-0.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-0.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-0.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-0.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-0.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media(min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-0.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-0.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-0.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-0.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-0.25rem !important}.m-md-n2{margin:-0.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-0.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-0.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-0.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-0.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media(min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-0.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-0.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-0.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-0.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-0.25rem !important}.m-lg-n2{margin:-0.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-0.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-0.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-0.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-0.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media(min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-0.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-0.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-0.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-0.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-0.25rem !important}.m-xl-n2{margin:-0.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-0.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-0.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-0.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-0.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\\\"\\\";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media(min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#039 !important}a.text-primary:hover,a.text-primary:focus{color:rgb(0,25.5,76.5) !important}.text-secondary{color:#3e515b !important}a.text-secondary:hover,a.text-secondary:focus{color:rgb(31,40.5,45.5) !important}.text-success{color:#4dbd74 !important}a.text-success:hover,a.text-success:focus{color:rgb(51.2581967213,138.2418032787,81.5471311475) !important}.text-info{color:#63c2de !important}a.text-info:hover,a.text-info:focus{color:rgb(42.6904761905,165.5873015873,201.8095238095) !important}.text-warning{color:#fc0 !important}a.text-warning:hover,a.text-warning:focus{color:hsl(48,100%,35%) !important}.text-danger{color:#f86c6b !important}a.text-danger:hover,a.text-danger:focus{color:hsl(.4255319149,90.9677419355%,54.6078431373%) !important}.text-light{color:#c2cfd6 !important}a.text-light:hover,a.text-light:focus{color:rgb(148.25,171,183.25) !important}.text-dark{color:#29363d !important}a.text-dark:hover,a.text-dark:focus{color:rgb(10.25,13.5,15.25) !important}.text-body{color:#151b1e !important}.text-muted{color:#536c79 !important}.text-black-50{color:rgba(0,0,0,.5) !important}.text-white-50{color:hsla(0,0%,100%,.5) !important}.text-hide{font:0/0 a;color:rgba(0,0,0,0);text-shadow:none;background-color:rgba(0,0,0,0);border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-break:break-word !important;word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:\\\" (\\\" attr(title) \\\")\\\"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #678898;page-break-inside:avoid}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #a4b7c1 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#a4b7c1}.table .thead-dark th{color:inherit;border-color:#a4b7c1}}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.font-xs{font-size:.75rem !important}.font-sm{font-size:.85rem !important}.font-lg{font-size:1rem !important}.font-xl{font-size:1.25rem !important}.font-2xl{font-size:1.5rem !important}.font-3xl{font-size:1.75rem !important}.font-4xl{font-size:2rem !important}.font-5xl{font-size:2.5rem !important}.animated{animation-duration:1s}.animated.infinite{animation-iteration-count:infinite}.animated.hinge{animation-duration:2s}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.fadeIn{animation-name:fadeIn}.aside-menu{z-index:1019;width:250px;color:#29363d;background:#fff;border-left:1px solid #a4b7c1}.aside-menu .nav-tabs{border-color:#a4b7c1}.aside-menu .nav-tabs .nav-link,.aside-menu .nav-tabs .navbar .dropdown-toggle,.navbar .aside-menu .nav-tabs .dropdown-toggle{padding:.75rem 1rem;color:#151b1e;border-top:0}.aside-menu .nav-tabs .nav-link.active,.aside-menu .nav-tabs .navbar .active.dropdown-toggle,.navbar .aside-menu .nav-tabs .active.dropdown-toggle{color:#039;border-right-color:#a4b7c1;border-left-color:#a4b7c1}.aside-menu .nav-tabs .nav-item:first-child .nav-link,.aside-menu .nav-tabs .nav-item:first-child .navbar .dropdown-toggle,.navbar .aside-menu .nav-tabs .nav-item:first-child .dropdown-toggle{border-left:0}.aside-menu .tab-content{position:relative;overflow-x:hidden;overflow-y:auto;border:0;border-top:1px solid #a4b7c1;-ms-overflow-style:-ms-autohiding-scrollbar}.aside-menu .tab-content::-webkit-scrollbar{width:10px;margin-left:-10px;-webkit-appearance:none}.aside-menu .tab-content::-webkit-scrollbar-track{background-color:#fff;border-right:1px solid hsl(0,0%,95%);border-left:1px solid hsl(0,0%,95%)}.aside-menu .tab-content::-webkit-scrollbar-thumb{height:50px;background-color:hsl(0,0%,90%);background-clip:content-box;border-color:rgba(0,0,0,0);border-style:solid;border-width:1px 2px}.aside-menu .tab-content .tab-pane{padding:0}.img-avatar{border-radius:50em}.avatar{position:relative;display:inline-block;width:36px}.avatar .img-avatar{width:36px;height:36px}.avatar .avatar-status{position:absolute;right:0;bottom:0;display:block;width:10px;height:10px;border:1px solid #fff;border-radius:50em}.avatar.avatar-xs{position:relative;display:inline-block;width:20px}.avatar.avatar-xs .img-avatar{width:20px;height:20px}.avatar.avatar-xs .avatar-status{position:absolute;right:0;bottom:0;display:block;width:8px;height:8px;border:1px solid #fff;border-radius:50em}.avatar.avatar-sm{position:relative;display:inline-block;width:24px}.avatar.avatar-sm .img-avatar{width:24px;height:24px}.avatar.avatar-sm .avatar-status{position:absolute;right:0;bottom:0;display:block;width:8px;height:8px;border:1px solid #fff;border-radius:50em}.avatar.avatar-lg{position:relative;display:inline-block;width:72px}.avatar.avatar-lg .img-avatar{width:72px;height:72px}.avatar.avatar-lg .avatar-status{position:absolute;right:0;bottom:0;display:block;width:12px;height:12px;border:1px solid #fff;border-radius:50em}.avatars-stack .avatar.avatar-xs{margin-right:-10px}.avatars-stack .avatar{margin-right:-15px;transition:margin-left .25s,margin-right .25s}.avatars-stack .avatar:hover{margin-right:0 !important}.badge-pill{border-radius:10rem}.breadcrumb-menu{margin-left:auto}.breadcrumb-menu::before{display:none}.breadcrumb-menu .btn-group{vertical-align:top}.breadcrumb-menu .btn{padding:0 .75rem;color:#536c79;vertical-align:top;border:0}.breadcrumb-menu .btn:hover,.breadcrumb-menu .btn.active{color:#151b1e;background:rgba(0,0,0,0)}.breadcrumb-menu .open .btn{color:#151b1e;background:rgba(0,0,0,0)}.breadcrumb-menu .dropdown-menu{min-width:180px;line-height:1.5}.breadcrumb{position:relative;border-bottom:1px solid #a4b7c1}button{cursor:pointer}.btn .badge{position:absolute;top:2px;right:6px;font-size:9px}.btn-transparent{color:#fff;background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.btn [class^=icon-],.btn [class*=\\\" icon-\\\"]{display:inline-block;margin-top:-2px;vertical-align:middle}.btn-facebook,.btn-twitter,.btn-linkedin,.btn-flickr,.btn-tumblr,.btn-xing,.btn-github,.btn-html5,.btn-openid,.btn-stack-overflow,.btn-youtube,.btn-css3,.btn-dribbble,.btn-google-plus,.btn-instagram,.btn-pinterest,.btn-vk,.btn-yahoo,.btn-behance,.btn-dropbox,.btn-reddit,.btn-spotify,.btn-vine,.btn-foursquare,.btn-vimeo{position:relative;overflow:hidden;color:#fff !important;text-align:center;padding:.375rem .75rem;font-size:.875rem;line-height:1.5;border:0;border-radius:.25rem}.btn-facebook::before,.btn-twitter::before,.btn-linkedin::before,.btn-flickr::before,.btn-tumblr::before,.btn-xing::before,.btn-github::before,.btn-html5::before,.btn-openid::before,.btn-stack-overflow::before,.btn-youtube::before,.btn-css3::before,.btn-dribbble::before,.btn-google-plus::before,.btn-instagram::before,.btn-pinterest::before,.btn-vk::before,.btn-yahoo::before,.btn-behance::before,.btn-dropbox::before,.btn-reddit::before,.btn-spotify::before,.btn-vine::before,.btn-foursquare::before,.btn-vimeo::before{position:absolute;top:0;left:0;display:block;font-family:\\\"FontAwesome\\\";font-style:normal;font-weight:normal;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.btn-facebook:hover,.btn-twitter:hover,.btn-linkedin:hover,.btn-flickr:hover,.btn-tumblr:hover,.btn-xing:hover,.btn-github:hover,.btn-html5:hover,.btn-openid:hover,.btn-stack-overflow:hover,.btn-youtube:hover,.btn-css3:hover,.btn-dribbble:hover,.btn-google-plus:hover,.btn-instagram:hover,.btn-pinterest:hover,.btn-vk:hover,.btn-yahoo:hover,.btn-behance:hover,.btn-dropbox:hover,.btn-reddit:hover,.btn-spotify:hover,.btn-vine:hover,.btn-foursquare:hover,.btn-vimeo:hover{color:#fff}.btn-facebook.icon span,.btn-twitter.icon span,.btn-linkedin.icon span,.btn-flickr.icon span,.btn-tumblr.icon span,.btn-xing.icon span,.btn-github.icon span,.btn-html5.icon span,.btn-openid.icon span,.btn-stack-overflow.icon span,.btn-youtube.icon span,.btn-css3.icon span,.btn-dribbble.icon span,.btn-google-plus.icon span,.btn-instagram.icon span,.btn-pinterest.icon span,.btn-vk.icon span,.btn-yahoo.icon span,.btn-behance.icon span,.btn-dropbox.icon span,.btn-reddit.icon span,.btn-spotify.icon span,.btn-vine.icon span,.btn-foursquare.icon span,.btn-vimeo.icon span{display:none}.btn-facebook.text::before,.btn-twitter.text::before,.btn-linkedin.text::before,.btn-flickr.text::before,.btn-tumblr.text::before,.btn-xing.text::before,.btn-github.text::before,.btn-html5.text::before,.btn-openid.text::before,.btn-stack-overflow.text::before,.btn-youtube.text::before,.btn-css3.text::before,.btn-dribbble.text::before,.btn-google-plus.text::before,.btn-instagram.text::before,.btn-pinterest.text::before,.btn-vk.text::before,.btn-yahoo.text::before,.btn-behance.text::before,.btn-dropbox.text::before,.btn-reddit.text::before,.btn-spotify.text::before,.btn-vine.text::before,.btn-foursquare.text::before,.btn-vimeo.text::before{display:none}.btn-facebook.text span,.btn-twitter.text span,.btn-linkedin.text span,.btn-flickr.text span,.btn-tumblr.text span,.btn-xing.text span,.btn-github.text span,.btn-html5.text span,.btn-openid.text span,.btn-stack-overflow.text span,.btn-youtube.text span,.btn-css3.text span,.btn-dribbble.text span,.btn-google-plus.text span,.btn-instagram.text span,.btn-pinterest.text span,.btn-vk.text span,.btn-yahoo.text span,.btn-behance.text span,.btn-dropbox.text span,.btn-reddit.text span,.btn-spotify.text span,.btn-vine.text span,.btn-foursquare.text span,.btn-vimeo.text span{margin-left:0 !important}.btn-facebook::before,.btn-twitter::before,.btn-linkedin::before,.btn-flickr::before,.btn-tumblr::before,.btn-xing::before,.btn-github::before,.btn-html5::before,.btn-openid::before,.btn-stack-overflow::before,.btn-youtube::before,.btn-css3::before,.btn-dribbble::before,.btn-google-plus::before,.btn-instagram::before,.btn-pinterest::before,.btn-vk::before,.btn-yahoo::before,.btn-behance::before,.btn-dropbox::before,.btn-reddit::before,.btn-spotify::before,.btn-vine::before,.btn-foursquare::before,.btn-vimeo::before{width:2.0625rem;height:2.0625rem;padding:.375rem 0;font-size:.875rem;line-height:1.5;border-radius:.25rem}.btn-facebook span,.btn-twitter span,.btn-linkedin span,.btn-flickr span,.btn-tumblr span,.btn-xing span,.btn-github span,.btn-html5 span,.btn-openid span,.btn-stack-overflow span,.btn-youtube span,.btn-css3 span,.btn-dribbble span,.btn-google-plus span,.btn-instagram span,.btn-pinterest span,.btn-vk span,.btn-yahoo span,.btn-behance span,.btn-dropbox span,.btn-reddit span,.btn-spotify span,.btn-vine span,.btn-foursquare span,.btn-vimeo span{margin-left:2.0625rem}.btn-facebook.icon,.btn-twitter.icon,.btn-linkedin.icon,.btn-flickr.icon,.btn-tumblr.icon,.btn-xing.icon,.btn-github.icon,.btn-html5.icon,.btn-openid.icon,.btn-stack-overflow.icon,.btn-youtube.icon,.btn-css3.icon,.btn-dribbble.icon,.btn-google-plus.icon,.btn-instagram.icon,.btn-pinterest.icon,.btn-vk.icon,.btn-yahoo.icon,.btn-behance.icon,.btn-dropbox.icon,.btn-reddit.icon,.btn-spotify.icon,.btn-vine.icon,.btn-foursquare.icon,.btn-vimeo.icon{width:2.0625rem;height:2.0625rem}.btn-facebook.btn-lg,.btn-group-lg>.btn-facebook.btn,.btn-twitter.btn-lg,.btn-group-lg>.btn-twitter.btn,.btn-linkedin.btn-lg,.btn-group-lg>.btn-linkedin.btn,.btn-flickr.btn-lg,.btn-group-lg>.btn-flickr.btn,.btn-tumblr.btn-lg,.btn-group-lg>.btn-tumblr.btn,.btn-xing.btn-lg,.btn-group-lg>.btn-xing.btn,.btn-github.btn-lg,.btn-group-lg>.btn-github.btn,.btn-html5.btn-lg,.btn-group-lg>.btn-html5.btn,.btn-openid.btn-lg,.btn-group-lg>.btn-openid.btn,.btn-stack-overflow.btn-lg,.btn-group-lg>.btn-stack-overflow.btn,.btn-youtube.btn-lg,.btn-group-lg>.btn-youtube.btn,.btn-css3.btn-lg,.btn-group-lg>.btn-css3.btn,.btn-dribbble.btn-lg,.btn-group-lg>.btn-dribbble.btn,.btn-google-plus.btn-lg,.btn-group-lg>.btn-google-plus.btn,.btn-instagram.btn-lg,.btn-group-lg>.btn-instagram.btn,.btn-pinterest.btn-lg,.btn-group-lg>.btn-pinterest.btn,.btn-vk.btn-lg,.btn-group-lg>.btn-vk.btn,.btn-yahoo.btn-lg,.btn-group-lg>.btn-yahoo.btn,.btn-behance.btn-lg,.btn-group-lg>.btn-behance.btn,.btn-dropbox.btn-lg,.btn-group-lg>.btn-dropbox.btn,.btn-reddit.btn-lg,.btn-group-lg>.btn-reddit.btn,.btn-spotify.btn-lg,.btn-group-lg>.btn-spotify.btn,.btn-vine.btn-lg,.btn-group-lg>.btn-vine.btn,.btn-foursquare.btn-lg,.btn-group-lg>.btn-foursquare.btn,.btn-vimeo.btn-lg,.btn-group-lg>.btn-vimeo.btn{padding:.5rem 1rem;font-size:1.09375rem;line-height:1.5;border:0;border-radius:.3rem}.btn-facebook.btn-lg::before,.btn-group-lg>.btn-facebook.btn::before,.btn-twitter.btn-lg::before,.btn-group-lg>.btn-twitter.btn::before,.btn-linkedin.btn-lg::before,.btn-group-lg>.btn-linkedin.btn::before,.btn-flickr.btn-lg::before,.btn-group-lg>.btn-flickr.btn::before,.btn-tumblr.btn-lg::before,.btn-group-lg>.btn-tumblr.btn::before,.btn-xing.btn-lg::before,.btn-group-lg>.btn-xing.btn::before,.btn-github.btn-lg::before,.btn-group-lg>.btn-github.btn::before,.btn-html5.btn-lg::before,.btn-group-lg>.btn-html5.btn::before,.btn-openid.btn-lg::before,.btn-group-lg>.btn-openid.btn::before,.btn-stack-overflow.btn-lg::before,.btn-group-lg>.btn-stack-overflow.btn::before,.btn-youtube.btn-lg::before,.btn-group-lg>.btn-youtube.btn::before,.btn-css3.btn-lg::before,.btn-group-lg>.btn-css3.btn::before,.btn-dribbble.btn-lg::before,.btn-group-lg>.btn-dribbble.btn::before,.btn-google-plus.btn-lg::before,.btn-group-lg>.btn-google-plus.btn::before,.btn-instagram.btn-lg::before,.btn-group-lg>.btn-instagram.btn::before,.btn-pinterest.btn-lg::before,.btn-group-lg>.btn-pinterest.btn::before,.btn-vk.btn-lg::before,.btn-group-lg>.btn-vk.btn::before,.btn-yahoo.btn-lg::before,.btn-group-lg>.btn-yahoo.btn::before,.btn-behance.btn-lg::before,.btn-group-lg>.btn-behance.btn::before,.btn-dropbox.btn-lg::before,.btn-group-lg>.btn-dropbox.btn::before,.btn-reddit.btn-lg::before,.btn-group-lg>.btn-reddit.btn::before,.btn-spotify.btn-lg::before,.btn-group-lg>.btn-spotify.btn::before,.btn-vine.btn-lg::before,.btn-group-lg>.btn-vine.btn::before,.btn-foursquare.btn-lg::before,.btn-group-lg>.btn-foursquare.btn::before,.btn-vimeo.btn-lg::before,.btn-group-lg>.btn-vimeo.btn::before{width:2.640625rem;height:2.640625rem;padding:.5rem 0;font-size:1.09375rem;line-height:1.5;border-radius:.3rem}.btn-facebook.btn-lg span,.btn-group-lg>.btn-facebook.btn span,.btn-twitter.btn-lg span,.btn-group-lg>.btn-twitter.btn span,.btn-linkedin.btn-lg span,.btn-group-lg>.btn-linkedin.btn span,.btn-flickr.btn-lg span,.btn-group-lg>.btn-flickr.btn span,.btn-tumblr.btn-lg span,.btn-group-lg>.btn-tumblr.btn span,.btn-xing.btn-lg span,.btn-group-lg>.btn-xing.btn span,.btn-github.btn-lg span,.btn-group-lg>.btn-github.btn span,.btn-html5.btn-lg span,.btn-group-lg>.btn-html5.btn span,.btn-openid.btn-lg span,.btn-group-lg>.btn-openid.btn span,.btn-stack-overflow.btn-lg span,.btn-group-lg>.btn-stack-overflow.btn span,.btn-youtube.btn-lg span,.btn-group-lg>.btn-youtube.btn span,.btn-css3.btn-lg span,.btn-group-lg>.btn-css3.btn span,.btn-dribbble.btn-lg span,.btn-group-lg>.btn-dribbble.btn span,.btn-google-plus.btn-lg span,.btn-group-lg>.btn-google-plus.btn span,.btn-instagram.btn-lg span,.btn-group-lg>.btn-instagram.btn span,.btn-pinterest.btn-lg span,.btn-group-lg>.btn-pinterest.btn span,.btn-vk.btn-lg span,.btn-group-lg>.btn-vk.btn span,.btn-yahoo.btn-lg span,.btn-group-lg>.btn-yahoo.btn span,.btn-behance.btn-lg span,.btn-group-lg>.btn-behance.btn span,.btn-dropbox.btn-lg span,.btn-group-lg>.btn-dropbox.btn span,.btn-reddit.btn-lg span,.btn-group-lg>.btn-reddit.btn span,.btn-spotify.btn-lg span,.btn-group-lg>.btn-spotify.btn span,.btn-vine.btn-lg span,.btn-group-lg>.btn-vine.btn span,.btn-foursquare.btn-lg span,.btn-group-lg>.btn-foursquare.btn span,.btn-vimeo.btn-lg span,.btn-group-lg>.btn-vimeo.btn span{margin-left:2.640625rem}.btn-facebook.btn-lg.icon,.btn-group-lg>.btn-facebook.icon.btn,.btn-twitter.btn-lg.icon,.btn-group-lg>.btn-twitter.icon.btn,.btn-linkedin.btn-lg.icon,.btn-group-lg>.btn-linkedin.icon.btn,.btn-flickr.btn-lg.icon,.btn-group-lg>.btn-flickr.icon.btn,.btn-tumblr.btn-lg.icon,.btn-group-lg>.btn-tumblr.icon.btn,.btn-xing.btn-lg.icon,.btn-group-lg>.btn-xing.icon.btn,.btn-github.btn-lg.icon,.btn-group-lg>.btn-github.icon.btn,.btn-html5.btn-lg.icon,.btn-group-lg>.btn-html5.icon.btn,.btn-openid.btn-lg.icon,.btn-group-lg>.btn-openid.icon.btn,.btn-stack-overflow.btn-lg.icon,.btn-group-lg>.btn-stack-overflow.icon.btn,.btn-youtube.btn-lg.icon,.btn-group-lg>.btn-youtube.icon.btn,.btn-css3.btn-lg.icon,.btn-group-lg>.btn-css3.icon.btn,.btn-dribbble.btn-lg.icon,.btn-group-lg>.btn-dribbble.icon.btn,.btn-google-plus.btn-lg.icon,.btn-group-lg>.btn-google-plus.icon.btn,.btn-instagram.btn-lg.icon,.btn-group-lg>.btn-instagram.icon.btn,.btn-pinterest.btn-lg.icon,.btn-group-lg>.btn-pinterest.icon.btn,.btn-vk.btn-lg.icon,.btn-group-lg>.btn-vk.icon.btn,.btn-yahoo.btn-lg.icon,.btn-group-lg>.btn-yahoo.icon.btn,.btn-behance.btn-lg.icon,.btn-group-lg>.btn-behance.icon.btn,.btn-dropbox.btn-lg.icon,.btn-group-lg>.btn-dropbox.icon.btn,.btn-reddit.btn-lg.icon,.btn-group-lg>.btn-reddit.icon.btn,.btn-spotify.btn-lg.icon,.btn-group-lg>.btn-spotify.icon.btn,.btn-vine.btn-lg.icon,.btn-group-lg>.btn-vine.icon.btn,.btn-foursquare.btn-lg.icon,.btn-group-lg>.btn-foursquare.icon.btn,.btn-vimeo.btn-lg.icon,.btn-group-lg>.btn-vimeo.icon.btn{width:2.640625rem;height:2.640625rem}.btn-facebook.btn-sm,.btn-group-sm>.btn-facebook.btn,.btn-twitter.btn-sm,.btn-group-sm>.btn-twitter.btn,.btn-linkedin.btn-sm,.btn-group-sm>.btn-linkedin.btn,.btn-flickr.btn-sm,.btn-group-sm>.btn-flickr.btn,.btn-tumblr.btn-sm,.btn-group-sm>.btn-tumblr.btn,.btn-xing.btn-sm,.btn-group-sm>.btn-xing.btn,.btn-github.btn-sm,.btn-group-sm>.btn-github.btn,.btn-html5.btn-sm,.btn-group-sm>.btn-html5.btn,.btn-openid.btn-sm,.btn-group-sm>.btn-openid.btn,.btn-stack-overflow.btn-sm,.btn-group-sm>.btn-stack-overflow.btn,.btn-youtube.btn-sm,.btn-group-sm>.btn-youtube.btn,.btn-css3.btn-sm,.btn-group-sm>.btn-css3.btn,.btn-dribbble.btn-sm,.btn-group-sm>.btn-dribbble.btn,.btn-google-plus.btn-sm,.btn-group-sm>.btn-google-plus.btn,.btn-instagram.btn-sm,.btn-group-sm>.btn-instagram.btn,.btn-pinterest.btn-sm,.btn-group-sm>.btn-pinterest.btn,.btn-vk.btn-sm,.btn-group-sm>.btn-vk.btn,.btn-yahoo.btn-sm,.btn-group-sm>.btn-yahoo.btn,.btn-behance.btn-sm,.btn-group-sm>.btn-behance.btn,.btn-dropbox.btn-sm,.btn-group-sm>.btn-dropbox.btn,.btn-reddit.btn-sm,.btn-group-sm>.btn-reddit.btn,.btn-spotify.btn-sm,.btn-group-sm>.btn-spotify.btn,.btn-vine.btn-sm,.btn-group-sm>.btn-vine.btn,.btn-foursquare.btn-sm,.btn-group-sm>.btn-foursquare.btn,.btn-vimeo.btn-sm,.btn-group-sm>.btn-vimeo.btn{padding:.25rem .5rem;font-size:.765625rem;line-height:1.5;border:0;border-radius:.2rem}.btn-facebook.btn-sm::before,.btn-group-sm>.btn-facebook.btn::before,.btn-twitter.btn-sm::before,.btn-group-sm>.btn-twitter.btn::before,.btn-linkedin.btn-sm::before,.btn-group-sm>.btn-linkedin.btn::before,.btn-flickr.btn-sm::before,.btn-group-sm>.btn-flickr.btn::before,.btn-tumblr.btn-sm::before,.btn-group-sm>.btn-tumblr.btn::before,.btn-xing.btn-sm::before,.btn-group-sm>.btn-xing.btn::before,.btn-github.btn-sm::before,.btn-group-sm>.btn-github.btn::before,.btn-html5.btn-sm::before,.btn-group-sm>.btn-html5.btn::before,.btn-openid.btn-sm::before,.btn-group-sm>.btn-openid.btn::before,.btn-stack-overflow.btn-sm::before,.btn-group-sm>.btn-stack-overflow.btn::before,.btn-youtube.btn-sm::before,.btn-group-sm>.btn-youtube.btn::before,.btn-css3.btn-sm::before,.btn-group-sm>.btn-css3.btn::before,.btn-dribbble.btn-sm::before,.btn-group-sm>.btn-dribbble.btn::before,.btn-google-plus.btn-sm::before,.btn-group-sm>.btn-google-plus.btn::before,.btn-instagram.btn-sm::before,.btn-group-sm>.btn-instagram.btn::before,.btn-pinterest.btn-sm::before,.btn-group-sm>.btn-pinterest.btn::before,.btn-vk.btn-sm::before,.btn-group-sm>.btn-vk.btn::before,.btn-yahoo.btn-sm::before,.btn-group-sm>.btn-yahoo.btn::before,.btn-behance.btn-sm::before,.btn-group-sm>.btn-behance.btn::before,.btn-dropbox.btn-sm::before,.btn-group-sm>.btn-dropbox.btn::before,.btn-reddit.btn-sm::before,.btn-group-sm>.btn-reddit.btn::before,.btn-spotify.btn-sm::before,.btn-group-sm>.btn-spotify.btn::before,.btn-vine.btn-sm::before,.btn-group-sm>.btn-vine.btn::before,.btn-foursquare.btn-sm::before,.btn-group-sm>.btn-foursquare.btn::before,.btn-vimeo.btn-sm::before,.btn-group-sm>.btn-vimeo.btn::before{width:1.6484375rem;height:1.6484375rem;padding:.25rem 0;font-size:.765625rem;line-height:1.5;border-radius:.2rem}.btn-facebook.btn-sm span,.btn-group-sm>.btn-facebook.btn span,.btn-twitter.btn-sm span,.btn-group-sm>.btn-twitter.btn span,.btn-linkedin.btn-sm span,.btn-group-sm>.btn-linkedin.btn span,.btn-flickr.btn-sm span,.btn-group-sm>.btn-flickr.btn span,.btn-tumblr.btn-sm span,.btn-group-sm>.btn-tumblr.btn span,.btn-xing.btn-sm span,.btn-group-sm>.btn-xing.btn span,.btn-github.btn-sm span,.btn-group-sm>.btn-github.btn span,.btn-html5.btn-sm span,.btn-group-sm>.btn-html5.btn span,.btn-openid.btn-sm span,.btn-group-sm>.btn-openid.btn span,.btn-stack-overflow.btn-sm span,.btn-group-sm>.btn-stack-overflow.btn span,.btn-youtube.btn-sm span,.btn-group-sm>.btn-youtube.btn span,.btn-css3.btn-sm span,.btn-group-sm>.btn-css3.btn span,.btn-dribbble.btn-sm span,.btn-group-sm>.btn-dribbble.btn span,.btn-google-plus.btn-sm span,.btn-group-sm>.btn-google-plus.btn span,.btn-instagram.btn-sm span,.btn-group-sm>.btn-instagram.btn span,.btn-pinterest.btn-sm span,.btn-group-sm>.btn-pinterest.btn span,.btn-vk.btn-sm span,.btn-group-sm>.btn-vk.btn span,.btn-yahoo.btn-sm span,.btn-group-sm>.btn-yahoo.btn span,.btn-behance.btn-sm span,.btn-group-sm>.btn-behance.btn span,.btn-dropbox.btn-sm span,.btn-group-sm>.btn-dropbox.btn span,.btn-reddit.btn-sm span,.btn-group-sm>.btn-reddit.btn span,.btn-spotify.btn-sm span,.btn-group-sm>.btn-spotify.btn span,.btn-vine.btn-sm span,.btn-group-sm>.btn-vine.btn span,.btn-foursquare.btn-sm span,.btn-group-sm>.btn-foursquare.btn span,.btn-vimeo.btn-sm span,.btn-group-sm>.btn-vimeo.btn span{margin-left:1.6484375rem}.btn-facebook.btn-sm.icon,.btn-group-sm>.btn-facebook.icon.btn,.btn-twitter.btn-sm.icon,.btn-group-sm>.btn-twitter.icon.btn,.btn-linkedin.btn-sm.icon,.btn-group-sm>.btn-linkedin.icon.btn,.btn-flickr.btn-sm.icon,.btn-group-sm>.btn-flickr.icon.btn,.btn-tumblr.btn-sm.icon,.btn-group-sm>.btn-tumblr.icon.btn,.btn-xing.btn-sm.icon,.btn-group-sm>.btn-xing.icon.btn,.btn-github.btn-sm.icon,.btn-group-sm>.btn-github.icon.btn,.btn-html5.btn-sm.icon,.btn-group-sm>.btn-html5.icon.btn,.btn-openid.btn-sm.icon,.btn-group-sm>.btn-openid.icon.btn,.btn-stack-overflow.btn-sm.icon,.btn-group-sm>.btn-stack-overflow.icon.btn,.btn-youtube.btn-sm.icon,.btn-group-sm>.btn-youtube.icon.btn,.btn-css3.btn-sm.icon,.btn-group-sm>.btn-css3.icon.btn,.btn-dribbble.btn-sm.icon,.btn-group-sm>.btn-dribbble.icon.btn,.btn-google-plus.btn-sm.icon,.btn-group-sm>.btn-google-plus.icon.btn,.btn-instagram.btn-sm.icon,.btn-group-sm>.btn-instagram.icon.btn,.btn-pinterest.btn-sm.icon,.btn-group-sm>.btn-pinterest.icon.btn,.btn-vk.btn-sm.icon,.btn-group-sm>.btn-vk.icon.btn,.btn-yahoo.btn-sm.icon,.btn-group-sm>.btn-yahoo.icon.btn,.btn-behance.btn-sm.icon,.btn-group-sm>.btn-behance.icon.btn,.btn-dropbox.btn-sm.icon,.btn-group-sm>.btn-dropbox.icon.btn,.btn-reddit.btn-sm.icon,.btn-group-sm>.btn-reddit.icon.btn,.btn-spotify.btn-sm.icon,.btn-group-sm>.btn-spotify.icon.btn,.btn-vine.btn-sm.icon,.btn-group-sm>.btn-vine.icon.btn,.btn-foursquare.btn-sm.icon,.btn-group-sm>.btn-foursquare.icon.btn,.btn-vimeo.btn-sm.icon,.btn-group-sm>.btn-vimeo.icon.btn{width:1.6484375rem;height:1.6484375rem}.btn-facebook{background:#3b5998}.btn-facebook::before{content:\\\"\\\";background:rgb(51.8696682464,78.2440758294,133.6303317536)}.btn-facebook:hover{background:rgb(51.8696682464,78.2440758294,133.6303317536)}.btn-facebook:hover::before{background:rgb(44.7393364929,67.4881516588,115.2606635071)}.btn-twitter{background:#00aced}.btn-twitter::before{content:\\\"\\\";background:rgb(0,153.4936708861,211.5)}.btn-twitter:hover{background:rgb(0,153.4936708861,211.5)}.btn-twitter:hover::before{background:rgb(0,134.9873417722,186)}.btn-linkedin{background:#4875b4}.btn-linkedin::before{content:\\\"\\\";background:hsl(215,42.8571428571%,44.4117647059%)}.btn-linkedin:hover{background:hsl(215,42.8571428571%,44.4117647059%)}.btn-linkedin:hover::before{background:hsl(215,42.8571428571%,39.4117647059%)}.btn-flickr{background:#ff0084}.btn-flickr::before{content:\\\"\\\";background:rgb(229.5,0,118.8)}.btn-flickr:hover{background:rgb(229.5,0,118.8)}.btn-flickr:hover::before{background:rgb(204,0,105.6)}.btn-tumblr{background:#32506d}.btn-tumblr::before{content:\\\"\\\";background:rgb(41.9811320755,67.1698113208,91.5188679245)}.btn-tumblr:hover{background:rgb(41.9811320755,67.1698113208,91.5188679245)}.btn-tumblr:hover::before{background:rgb(33.9622641509,54.3396226415,74.0377358491)}.btn-xing{background:#026466}.btn-xing::before{content:\\\"\\\";background:hsl(181.2,96.1538461538%,15.3921568627%)}.btn-xing:hover{background:hsl(181.2,96.1538461538%,15.3921568627%)}.btn-xing:hover::before{background:hsl(181.2,96.1538461538%,10.3921568627%)}.btn-github{background:#4183c4}.btn-github::before{content:\\\"\\\";background:rgb(55.8012048193,118.2228915663,179.6987951807)}.btn-github:hover{background:rgb(55.8012048193,118.2228915663,179.6987951807)}.btn-github:hover::before{background:rgb(49.7590361446,105.421686747,160.2409638554)}.btn-html5{background:#e34f26}.btn-html5::before{content:\\\"\\\";background:rgb(212.1285714286,67.4510204082,27.3714285714)}.btn-html5:hover{background:rgb(212.1285714286,67.4510204082,27.3714285714)}.btn-html5:hover::before{background:rgb(189.5428571429,60.2693877551,24.4571428571)}.btn-openid{background:#f78c40}.btn-openid::before{content:\\\"\\\";background:hsl(24.9180327869,91.959798995%,55.9803921569%)}.btn-openid:hover{background:hsl(24.9180327869,91.959798995%,55.9803921569%)}.btn-openid:hover::before{background:rgb(244.9497487437,110.527638191,15.0502512563)}.btn-stack-overflow{background:#fe7a15}.btn-stack-overflow::before{content:\\\"\\\";background:rgb(248.4382978723,108.2936170213,1.0617021277)}.btn-stack-overflow:hover{background:rgb(248.4382978723,108.2936170213,1.0617021277)}.btn-stack-overflow:hover::before{background:rgb(223.0468085106,97.2255319149,.9531914894)}.btn-css3{background:#0170ba}.btn-css3::before{content:\\\"\\\";background:hsl(204,98.9304812834%,31.6666666667%)}.btn-css3:hover{background:hsl(204,98.9304812834%,31.6666666667%)}.btn-css3:hover::before{background:hsl(204,98.9304812834%,26.6666666667%)}.btn-youtube{background:#b00}.btn-youtube::before{content:\\\"\\\";background:rgb(161.5,0,0)}.btn-youtube:hover{background:rgb(161.5,0,0)}.btn-youtube:hover::before{background:#800}.btn-dribbble{background:#ea4c89}.btn-dribbble::before{content:\\\"\\\";background:rgb(231.3225,53.1775,121.955)}.btn-dribbble:hover{background:rgb(231.3225,53.1775,121.955)}.btn-dribbble:hover::before{background:rgb(228.645,30.355,106.91)}.btn-google-plus{background:#d34836}.btn-google-plus::before{content:\\\"\\\";background:rgb(196.487755102,60.6081632653,43.012244898)}.btn-google-plus:hover{background:rgb(196.487755102,60.6081632653,43.012244898)}.btn-google-plus:hover::before{background:rgb(175.5673469388,54.1551020408,38.4326530612)}.btn-instagram{background:#517fa4}.btn-instagram::before{content:\\\"\\\";background:rgb(72.5693877551,113.7816326531,146.9306122449)}.btn-instagram:hover{background:rgb(72.5693877551,113.7816326531,146.9306122449)}.btn-instagram:hover::before{background:rgb(64.1387755102,100.5632653061,129.8612244898)}.btn-pinterest{background:#cb2027}.btn-pinterest::before{content:\\\"\\\";background:rgb(180.9723404255,28.5276595745,34.7680851064)}.btn-pinterest:hover{background:rgb(180.9723404255,28.5276595745,34.7680851064)}.btn-pinterest:hover::before{background:rgb(158.9446808511,25.0553191489,30.5361702128)}.btn-vk{background:#45668e}.btn-vk::before{content:\\\"\\\";background:rgb(60.6611374408,89.672985782,124.8388625592)}.btn-vk:hover{background:rgb(60.6611374408,89.672985782,124.8388625592)}.btn-vk:hover::before{background:rgb(52.3222748815,77.345971564,107.6777251185)}.btn-yahoo{background:#400191}.btn-yahoo::before{content:\\\"\\\";background:hsl(266.25,98.6301369863%,23.6274509804%)}.btn-yahoo:hover{background:hsl(266.25,98.6301369863%,23.6274509804%)}.btn-yahoo:hover::before{background:hsl(266.25,98.6301369863%,18.6274509804%)}.btn-behance{background:#1769ff}.btn-behance::before{content:\\\"\\\";background:rgb(0,89.2456896552,252.5)}.btn-behance:hover{background:rgb(0,89.2456896552,252.5)}.btn-behance:hover::before{background:rgb(0,80.2327586207,227)}.btn-dropbox{background:#007ee5}.btn-dropbox::before{content:\\\"\\\";background:rgb(0,111.9694323144,203.5)}.btn-dropbox:hover{background:rgb(0,111.9694323144,203.5)}.btn-dropbox:hover::before{background:rgb(0,97.9388646288,178)}.btn-reddit{background:#ff4500}.btn-reddit::before{content:\\\"\\\";background:rgb(229.5,62.1,0)}.btn-reddit:hover{background:rgb(229.5,62.1,0)}.btn-reddit:hover::before{background:rgb(204,55.2,0)}.btn-spotify{background:#7ab800}.btn-spotify::before{content:\\\"\\\";background:rgb(105.0923913043,158.5,0)}.btn-spotify:hover{background:rgb(105.0923913043,158.5,0)}.btn-spotify:hover::before{background:rgb(88.1847826087,133,0)}.btn-vine{background:#00bf8f}.btn-vine::before{content:\\\"\\\";background:rgb(0,165.5,123.9083769634)}.btn-vine:hover{background:rgb(0,165.5,123.9083769634)}.btn-vine:hover::before{background:rgb(0,140,104.8167539267)}.btn-foursquare{background:#1073af}.btn-foursquare::before{content:\\\"\\\";background:rgb(13.8638743455,99.6465968586,151.6361256545)}.btn-foursquare:hover{background:rgb(13.8638743455,99.6465968586,151.6361256545)}.btn-foursquare:hover::before{background:rgb(11.7277486911,84.2931937173,128.2722513089)}.btn-vimeo{background:#aad450}.btn-vimeo::before{content:\\\"\\\";background:rgb(160.0573394495,206.9701834862,59.5298165138)}.btn-vimeo:hover{background:rgb(160.0573394495,206.9701834862,59.5298165138)}.btn-vimeo:hover::before{background:rgb(147.0321100917,193.4633027523,47.5366972477)}.callout{position:relative;padding:0 1rem;margin:1rem 0;border:0 solid #a4b7c1;border-left-width:.25rem;border-radius:.25rem}.callout .chart-wrapper{position:absolute;top:10px;left:50%;float:right;width:50%}.callout-bordered{border:1px solid #a4b7c1;border-left-width:.25rem}.callout code{border-radius:.25rem}.callout h4{margin-top:0;margin-bottom:.25rem}.callout p:last-child{margin-bottom:0}.callout+.callout{margin-top:-0.25rem}.callout-default{border-left-color:#536c79}.callout-default h4{color:#536c79}.callout-primary{border-left-color:#039}.callout-primary h4{color:#039}.callout-secondary{border-left-color:#3e515b}.callout-secondary h4{color:#3e515b}.callout-success{border-left-color:#4dbd74}.callout-success h4{color:#4dbd74}.callout-info{border-left-color:#63c2de}.callout-info h4{color:#63c2de}.callout-warning{border-left-color:#fc0}.callout-warning h4{color:#fc0}.callout-danger{border-left-color:#f86c6b}.callout-danger h4{color:#f86c6b}.callout-light{border-left-color:#c2cfd6}.callout-light h4{color:#c2cfd6}.callout-dark{border-left-color:#29363d}.callout-dark h4{color:#29363d}.card{margin-bottom:1.5rem}.card.bg-primary{border-color:rgb(0,29.75,89.25)}.card.bg-primary .card-header{background-color:rgb(0,45.9,137.7);border-color:rgb(0,29.75,89.25)}.card.bg-secondary{border-color:rgb(36.1666666667,47.25,53.0833333333)}.card.bg-secondary .card-header{background-color:rgb(55.8,72.9,81.9);border-color:rgb(36.1666666667,47.25,53.0833333333)}.card.bg-success{border-color:rgb(54.7069672131,147.5430327869,87.0338114754)}.card.bg-success .card-header{background-color:rgb(67.812295082,182.887704918,107.8831967213);border-color:rgb(54.7069672131,147.5430327869,87.0338114754)}.card.bg-info{border-color:rgb(46.380952381,173.4246031746,210.869047619)}.card.bg-info .card-header{background-color:rgb(86.3714285714,189.0619047619,219.3285714286);border-color:rgb(46.380952381,173.4246031746,210.869047619)}.card.bg-warning{border-color:rgb(191.25,153,0)}.card.bg-warning .card-header{background-color:hsl(48,100%,47%);border-color:rgb(191.25,153,0)}.card.bg-danger{border-color:hsl(.4255319149,90.9677419355%,57.1078431373%)}.card.bg-danger .card-header{background-color:hsl(.4255319149,90.9677419355%,66.6078431373%);border-color:hsl(.4255319149,90.9677419355%,57.1078431373%)}.card.bg-light{border-color:rgb(155.875,177,188.375)}.card.bg-light .card-header{background-color:rgb(184.85,199.8,207.85);border-color:rgb(155.875,177,188.375)}.card.bg-dark{border-color:rgb(15.375,20.25,22.875)}.card.bg-dark .card-header{background-color:rgb(34.85,45.9,51.85);border-color:rgb(15.375,20.25,22.875)}.text-white .text-muted{color:hsla(0,0%,100%,.6) !important}.card-header .icon-bg{display:inline-body;padding:.75rem 1.25rem !important;margin-top:-0.75rem;margin-right:1.25rem;margin-bottom:-0.75rem;margin-left:-1.25rem;line-height:inherit;color:#151b1e;vertical-align:bottom;background:rgba(0,0,0,0);border-right:1px solid #c2cfd6}.card-header .nav.nav-tabs{margin-top:-0.75rem;margin-bottom:-0.75rem;border-bottom:0}.card-header .nav.nav-tabs .nav-item{border-top:0}.card-header .nav.nav-tabs .nav-link,.card-header .nav.nav-tabs .navbar .dropdown-toggle,.navbar .card-header .nav.nav-tabs .dropdown-toggle{padding:.75rem .625rem;color:#536c79;border-top:0}.card-header .nav.nav-tabs .nav-link.active,.card-header .nav.nav-tabs .navbar .active.dropdown-toggle,.navbar .card-header .nav.nav-tabs .active.dropdown-toggle{color:#151b1e;background:#fff}.card-header.card-header-inverse{color:#fff}.card-header .btn{margin-top:-0.375rem}.card-header .btn-sm,.card-header .btn-group-sm>.btn{margin-top:-0.25rem}.card-header .btn-lg,.card-header .btn-group-lg>.btn{margin-top:-0.5rem}.card-footer ul{display:table;width:100%;padding:0;margin:0;table-layout:fixed}.card-footer ul li{display:table-cell;padding:0 1.25rem;text-align:center}[class*=card-outline-] .card-body,[class*=card-outline-] .card-block{background:#fff !important}[class*=card-outline-].card-outline-top{border-top-width:2px;border-right-color:#a4b7c1;border-bottom-color:#a4b7c1;border-left-color:#a4b7c1}.card-accent-primary{border-top-width:2px;border-top-color:#039}.card-accent-secondary{border-top-width:2px;border-top-color:#3e515b}.card-accent-success{border-top-width:2px;border-top-color:#4dbd74}.card-accent-info{border-top-width:2px;border-top-color:#63c2de}.card-accent-warning{border-top-width:2px;border-top-color:#fc0}.card-accent-danger{border-top-width:2px;border-top-color:#f86c6b}.card-accent-light{border-top-width:2px;border-top-color:#c2cfd6}.card-accent-dark{border-top-width:2px;border-top-color:#29363d}.card-header>i{margin-right:.5rem}.card-header .card-actions{position:absolute;top:0;right:0}.card-header .card-actions a,.card-header .card-actions button{display:block;float:left;width:50px;padding:.75rem 0;margin:0 !important;color:#151b1e;text-align:center;background:rgba(0,0,0,0);border:0;border-left:1px solid #a4b7c1;box-shadow:0}.card-header .card-actions a:hover,.card-header .card-actions button:hover{text-decoration:none}.card-header .card-actions a [class^=icon-],.card-header .card-actions a [class*=\\\" icon-\\\"],.card-header .card-actions button [class^=icon-],.card-header .card-actions button [class*=\\\" icon-\\\"]{display:inline-body;vertical-align:middle}.card-header .card-actions a i,.card-header .card-actions button i{display:inline-body;transition:.4s}.card-header .card-actions a .r180,.card-header .card-actions button .r180{transform:rotate(180deg)}.card-header .card-actions .input-group{width:230px;margin:6px}.card-header .card-actions .input-group .input-group-addon{background:#fff}.card-header .card-actions .input-group input{border-left:0}.card-full{margin-top:-1rem;margin-right:-15px;margin-left:-15px;border:0;border-bottom:1px solid #a4b7c1}@media(min-width: 576px){.card-columns.cols-2{column-count:2}}.card.drag,.card .drag{cursor:move}.card-placeholder{background:rgba(0,0,0,.025);border:1px dashed #a4b7c1}.chart-wrapper canvas{width:100% !important}base-chart.chart{display:block !important}.dropdown-item{position:relative;padding:.375rem .75rem;border-bottom:1px solid #c2cfd6}.dropdown-item:last-child{border-bottom:0}.dropdown-item i{display:inline-block;width:20px;margin-right:10px;margin-left:-10px;color:#c2cfd6;text-align:center}.dropdown-item .badge{position:absolute;right:10px;margin-top:2px}.dropdown-header{padding:8px 20px;background:#f0f3f5;border-bottom:1px solid #c2cfd6}.dropdown-header .btn{margin-top:-7px;color:#536c79}.dropdown-header .btn:hover{color:#151b1e}.dropdown-header .btn.pull-right{margin-right:-20px}.dropdown-menu-lg{width:250px}.app-header .navbar-nav .dropdown-menu{position:absolute}.app-header .navbar-nav .dropdown-menu-right{right:0;left:auto}.app-header .navbar-nav .dropdown-menu-left{right:auto;left:0}.app-footer{display:flex;flex-wrap:wrap;align-items:center;padding:0 1rem;color:#151b1e;background:#f0f3f5;border-top:1px solid #a4b7c1}.row.row-equal{padding-right:7.5px;padding-left:7.5px;margin-right:-15px;margin-left:-15px}.row.row-equal [class*=col-]{padding-right:7.5px;padding-left:7.5px}.main .container-fluid,.main .container-sm,.main .container-md,.main .container-lg,.main .container-xl{padding:30px;height:100%}.input-group-addon,.input-group-btn{min-width:40px;white-space:nowrap;vertical-align:middle}#loading-bar,#loading-bar-spinner{-webkit-pointer-events:none;pointer-events:none;-moz-transition:350ms linear all;-o-transition:350ms linear all;-webkit-transition:350ms linear all;transition:350ms linear all}#loading-bar.ng-enter,#loading-bar.ng-leave.ng-leave-active,#loading-bar-spinner.ng-enter,#loading-bar-spinner.ng-leave.ng-leave-active{opacity:0}#loading-bar.ng-enter.ng-enter-active,#loading-bar.ng-leave,#loading-bar-spinner.ng-enter.ng-enter-active,#loading-bar-spinner.ng-leave{opacity:1}#loading-bar .bar{position:fixed;top:0;left:0;z-index:20002;width:100%;height:2px;background:#039;border-top-right-radius:1px;border-bottom-right-radius:1px;-moz-transition:width 350ms;-o-transition:width 350ms;-webkit-transition:width 350ms;transition:width 350ms}#loading-bar .peg{position:absolute;top:0;right:0;width:70px;height:2px;-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%;-moz-box-shadow:#29d 1px 0 6px 1px;-ms-box-shadow:#29d 1px 0 6px 1px;-webkit-box-shadow:#29d 1px 0 6px 1px;box-shadow:#29d 1px 0 6px 1px;opacity:.45}#loading-bar-spinner{position:fixed;top:10px;left:10px;z-index:10002;display:block}#loading-bar-spinner .spinner-icon{width:14px;height:14px;border:solid 2px rgba(0,0,0,0);border-top-color:#29d;border-left-color:#29d;border-radius:50%;-moz-animation:loading-bar-spinner 400ms linear infinite;-ms-animation:loading-bar-spinner 400ms linear infinite;-o-animation:loading-bar-spinner 400ms linear infinite;-webkit-animation:loading-bar-spinner 400ms linear infinite;animation:loading-bar-spinner 400ms linear infinite}@-webkit-keyframes loading-bar-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-bar-spinner{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-o-keyframes loading-bar-spinner{0%{-o-transform:rotate(0deg);transform:rotate(0deg)}100%{-o-transform:rotate(360deg);transform:rotate(360deg)}}@-ms-keyframes loading-bar-spinner{0%{-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-ms-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-bar-spinner{0%{transform:rotate(0deg);transform:rotate(0deg)}100%{transform:rotate(360deg);transform:rotate(360deg)}}.pace{-webkit-pointer-events:none;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.pace-inactive{display:none}.pace .pace-progress{position:fixed;top:0;right:100%;z-index:2000;width:100%;height:2px;background:#039}.modal-primary .modal-content{border-color:#039}.modal-primary .modal-header{color:#fff;background-color:#039}.modal-secondary .modal-content{border-color:#3e515b}.modal-secondary .modal-header{color:#fff;background-color:#3e515b}.modal-success .modal-content{border-color:#4dbd74}.modal-success .modal-header{color:#fff;background-color:#4dbd74}.modal-info .modal-content{border-color:#63c2de}.modal-info .modal-header{color:#fff;background-color:#63c2de}.modal-warning .modal-content{border-color:#fc0}.modal-warning .modal-header{color:#fff;background-color:#fc0}.modal-danger .modal-content{border-color:#f86c6b}.modal-danger .modal-header{color:#fff;background-color:#f86c6b}.modal-light .modal-content{border-color:#c2cfd6}.modal-light .modal-header{color:#fff;background-color:#c2cfd6}.modal-dark .modal-content{border-color:#29363d}.modal-dark .modal-header{color:#fff;background-color:#29363d}.nav-tabs .nav-link,.nav-tabs .navbar .dropdown-toggle,.navbar .nav-tabs .dropdown-toggle{color:#536c79}.nav-tabs .nav-link.active,.nav-tabs .navbar .active.dropdown-toggle,.navbar .nav-tabs .active.dropdown-toggle{color:#29363d;background:#fff;border-color:#a4b7c1;border-bottom-color:#fff}.nav-tabs .nav-link.active:focus,.nav-tabs .navbar .active.dropdown-toggle:focus,.navbar .nav-tabs .active.dropdown-toggle:focus{background:#fff;border-color:#a4b7c1;border-bottom-color:#fff}.tab-content{margin-top:-1px;background:#fff;border:1px solid #a4b7c1}.tab-content .tab-pane{padding:1rem}.card-block .tab-content{margin-top:0;border:0}.app-header.navbar{position:relative;flex-direction:row;height:55px;padding:0;margin:0;background-color:#fff;border-bottom:1px solid #a4b7c1}.app-header.navbar .navbar-brand{display:inline-block;width:130px;height:55px;padding:.5rem 1rem;margin-right:0;background-color:#fff;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");background-repeat:no-repeat;background-position:center center;background-size:110px auto;border-bottom:1px solid #a4b7c1}.app-header.navbar .navbar-toggler{min-width:50px;padding:.25rem 0}.app-header.navbar .navbar-toggler:hover .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%2329363d' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\")}.app-header.navbar .navbar-toggler-icon{height:23px;background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23536c79' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\")}.app-header.navbar .navbar-nav{flex-direction:row;align-items:center}.app-header.navbar .nav-item{position:relative;min-width:50px;margin:0 !important;text-align:center}.app-header.navbar .nav-item button{margin:0 auto}.app-header.navbar .nav-item .nav-link,.app-header.navbar .nav-item .dropdown-toggle{padding-top:0;padding-bottom:0;background:0;border:0}.app-header.navbar .nav-item .nav-link .badge,.app-header.navbar .nav-item .dropdown-toggle .badge{position:absolute;top:50%;left:50%;margin-top:-16px;margin-left:0}.app-header.navbar .nav-item .nav-link>.img-avatar,.app-header.navbar .nav-item .dropdown-toggle>.img-avatar{height:35px;margin:0 10px}.app-header.navbar .dropdown-menu{padding-bottom:0;line-height:1.5}.app-header.navbar .dropdown-item{min-width:180px}.navbar-brand{color:#29363d}.navbar-brand:hover,.navbar-brand:focus{color:#29363d}.navbar-nav .nav-link,.navbar-nav .navbar .dropdown-toggle,.navbar .navbar-nav .dropdown-toggle{color:#536c79}.navbar-nav .nav-link:hover,.navbar-nav .navbar .dropdown-toggle:hover,.navbar .navbar-nav .dropdown-toggle:hover,.navbar-nav .nav-link:focus,.navbar-nav .navbar .dropdown-toggle:focus,.navbar .navbar-nav .dropdown-toggle:focus{color:#29363d}.navbar-nav .open>.nav-link,.navbar-nav .navbar .open>.dropdown-toggle,.navbar .navbar-nav .open>.dropdown-toggle,.navbar-nav .open>.nav-link:hover,.navbar-nav .open>.nav-link:focus,.navbar-nav .active>.nav-link,.navbar-nav .navbar .active>.dropdown-toggle,.navbar .navbar-nav .active>.dropdown-toggle,.navbar-nav .active>.nav-link:hover,.navbar-nav .active>.nav-link:focus,.navbar-nav .nav-link.open,.navbar-nav .navbar .open.dropdown-toggle,.navbar .navbar-nav .open.dropdown-toggle,.navbar-nav .nav-link.open:hover,.navbar-nav .nav-link.open:focus,.navbar-nav .nav-link.active,.navbar-nav .navbar .active.dropdown-toggle,.navbar .navbar-nav .active.dropdown-toggle,.navbar-nav .nav-link.active:hover,.navbar-nav .nav-link.active:focus{color:#29363d}.navbar-divider{background-color:rgba(0,0,0,.075)}@media(min-width: 992px){.brand-minimized .app-header.navbar .navbar-brand{width:50px;background-color:#fff;background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-size:30px;border-bottom:1px solid #a4b7c1}}.progress-xs{height:4px}.progress-sm{height:8px}.progress-white{background-color:hsla(0,0%,100%,.2) !important}.progress-white .progress-bar{background-color:#fff}.sidebar{display:flex;flex-direction:column;padding:0;color:#fff;background:#29363d}.sidebar .sidebar-close{position:absolute;right:0;display:none;padding:0 1rem;font-size:24px;font-weight:800;line-height:55px;color:#fff;background:0;border:0;opacity:.8}.sidebar .sidebar-close:hover{opacity:1}.sidebar .sidebar-header{flex:0 0 auto;padding:.75rem 1rem;text-align:center;background:rgba(0,0,0,.2)}.sidebar .sidebar-form .form-control{color:#fff;background:rgb(20.5,27,30.5);border:0}.sidebar .sidebar-form .form-control::placeholder{color:hsla(0,0%,100%,.7)}.sidebar .sidebar-nav{position:relative;flex:1;overflow-x:hidden;overflow-y:auto;-ms-overflow-style:-ms-autohiding-scrollbar;width:200px}.sidebar .sidebar-nav::-webkit-scrollbar{position:absolute;width:10px;margin-left:-10px;-webkit-appearance:none}.sidebar .sidebar-nav::-webkit-scrollbar-track{background-color:rgb(51.25,67.5,76.25);border-right:1px solid rgb(30.75,40.5,45.75);border-left:1px solid rgb(30.75,40.5,45.75)}.sidebar .sidebar-nav::-webkit-scrollbar-thumb{height:50px;background-color:rgb(20.5,27,30.5);background-clip:content-box;border-color:rgba(0,0,0,0);border-style:solid;border-width:1px 2px}.sidebar .nav{width:200px;flex-direction:column;min-height:100%}.sidebar .nav-title{padding:.75rem 1rem;font-size:11px;font-weight:600;color:#c2cfd6;text-transform:uppercase}.sidebar .nav-divider,.sidebar .divider{height:10px}.sidebar .nav-item{position:relative;margin:0;transition:background .3s ease-in-out}.sidebar .nav-dropdown-items{max-height:0;padding:0;margin:0;overflow-y:hidden;transition:max-height .3s ease-in-out}.sidebar .nav-dropdown-items .nav-item{padding:0;list-style:none}.sidebar .nav-link,.sidebar .navbar .dropdown-toggle,.navbar .sidebar .dropdown-toggle{display:block;padding:.75rem 1rem;color:#fff;text-decoration:none;background:rgba(0,0,0,0)}.sidebar .nav-link i,.sidebar .navbar .dropdown-toggle i,.navbar .sidebar .dropdown-toggle i{display:inline-block;width:20px;margin:0 .5rem 0 0;font-size:14px;color:#536c79;text-align:center}.sidebar .nav-link .badge,.sidebar .navbar .dropdown-toggle .badge,.navbar .sidebar .dropdown-toggle .badge{float:right;margin-top:2px}.sidebar .nav-link.active,.sidebar .navbar .active.dropdown-toggle,.navbar .sidebar .active.dropdown-toggle{color:#fff;background:rgb(51.25,67.5,76.25)}.sidebar .nav-link.active i,.sidebar .navbar .active.dropdown-toggle i,.navbar .sidebar .active.dropdown-toggle i{color:#039}.sidebar .nav-link:hover,.sidebar .navbar .dropdown-toggle:hover,.navbar .sidebar .dropdown-toggle:hover{color:#fff;background:#039}.sidebar .nav-link:hover i,.sidebar .navbar .dropdown-toggle:hover i,.navbar .sidebar .dropdown-toggle:hover i{color:#fff}.sidebar .nav-link:hover.nav-dropdown-toggle::before,.sidebar .navbar .dropdown-toggle:hover.nav-dropdown-toggle::before,.navbar .sidebar .dropdown-toggle:hover.nav-dropdown-toggle::before{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\")}.sidebar .nav-link.nav-link-primary,.sidebar .navbar .nav-link-primary.dropdown-toggle,.navbar .sidebar .nav-link-primary.dropdown-toggle{background:#039}.sidebar .nav-link.nav-link-primary i,.sidebar .navbar .nav-link-primary.dropdown-toggle i,.navbar .sidebar .nav-link-primary.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-primary:hover,.sidebar .navbar .nav-link-primary.dropdown-toggle:hover,.navbar .sidebar .nav-link-primary.dropdown-toggle:hover{background:rgb(0,42.5,127.5) !important}.sidebar .nav-link.nav-link-primary:hover i,.sidebar .navbar .nav-link-primary.dropdown-toggle:hover i,.navbar .sidebar .nav-link-primary.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-secondary,.sidebar .navbar .nav-link-secondary.dropdown-toggle,.navbar .sidebar .nav-link-secondary.dropdown-toggle{background:#3e515b}.sidebar .nav-link.nav-link-secondary i,.sidebar .navbar .nav-link-secondary.dropdown-toggle i,.navbar .sidebar .nav-link-secondary.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-secondary:hover,.sidebar .navbar .nav-link-secondary.dropdown-toggle:hover,.navbar .sidebar .nav-link-secondary.dropdown-toggle:hover{background:rgb(51.6666666667,67.5,75.8333333333) !important}.sidebar .nav-link.nav-link-secondary:hover i,.sidebar .navbar .nav-link-secondary.dropdown-toggle:hover i,.navbar .sidebar .nav-link-secondary.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-success,.sidebar .navbar .nav-link-success.dropdown-toggle,.navbar .sidebar .nav-link-success.dropdown-toggle{background:#4dbd74}.sidebar .nav-link.nav-link-success i,.sidebar .navbar .nav-link-success.dropdown-toggle i,.navbar .sidebar .nav-link-success.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-success:hover,.sidebar .navbar .nav-link-success.dropdown-toggle:hover,.navbar .sidebar .nav-link-success.dropdown-toggle:hover{background:rgb(65.0532786885,175.4467213115,103.493852459) !important}.sidebar .nav-link.nav-link-success:hover i,.sidebar .navbar .nav-link-success.dropdown-toggle:hover i,.navbar .sidebar .nav-link-success.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-info,.sidebar .navbar .nav-link-info.dropdown-toggle,.navbar .sidebar .nav-link-info.dropdown-toggle{background:#63c2de}.sidebar .nav-link.nav-link-info i,.sidebar .navbar .nav-link-info.dropdown-toggle i,.navbar .sidebar .nav-link-info.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-info:hover,.sidebar .navbar .nav-link-info.dropdown-toggle:hover,.navbar .sidebar .nav-link-info.dropdown-toggle:hover{background:rgb(77.9523809524,185.7698412698,217.5476190476) !important}.sidebar .nav-link.nav-link-info:hover i,.sidebar .navbar .nav-link-info.dropdown-toggle:hover i,.navbar .sidebar .nav-link-info.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-warning,.sidebar .navbar .nav-link-warning.dropdown-toggle,.navbar .sidebar .nav-link-warning.dropdown-toggle{background:#fc0}.sidebar .nav-link.nav-link-warning i,.sidebar .navbar .nav-link-warning.dropdown-toggle i,.navbar .sidebar .nav-link-warning.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-warning:hover,.sidebar .navbar .nav-link-warning.dropdown-toggle:hover,.navbar .sidebar .nav-link-warning.dropdown-toggle:hover{background:hsl(48,100%,45%) !important}.sidebar .nav-link.nav-link-warning:hover i,.sidebar .navbar .nav-link-warning.dropdown-toggle:hover i,.navbar .sidebar .nav-link-warning.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-danger,.sidebar .navbar .nav-link-danger.dropdown-toggle,.navbar .sidebar .nav-link-danger.dropdown-toggle{background:#f86c6b}.sidebar .nav-link.nav-link-danger i,.sidebar .navbar .nav-link-danger.dropdown-toggle i,.navbar .sidebar .nav-link-danger.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-danger:hover,.sidebar .navbar .nav-link-danger.dropdown-toggle:hover,.navbar .sidebar .nav-link-danger.dropdown-toggle:hover{background:hsl(.4255319149,90.9677419355%,64.6078431373%) !important}.sidebar .nav-link.nav-link-danger:hover i,.sidebar .navbar .nav-link-danger.dropdown-toggle:hover i,.navbar .sidebar .nav-link-danger.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-light,.sidebar .navbar .nav-link-light.dropdown-toggle,.navbar .sidebar .nav-link-light.dropdown-toggle{background:#c2cfd6}.sidebar .nav-link.nav-link-light i,.sidebar .navbar .nav-link-light.dropdown-toggle i,.navbar .sidebar .nav-link-light.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-light:hover,.sidebar .navbar .nav-link-light.dropdown-toggle:hover,.navbar .sidebar .nav-link-light.dropdown-toggle:hover{background:rgb(178.75,195,203.75) !important}.sidebar .nav-link.nav-link-light:hover i,.sidebar .navbar .nav-link-light.dropdown-toggle:hover i,.navbar .sidebar .nav-link-light.dropdown-toggle:hover i{color:#fff}.sidebar .nav-link.nav-link-dark,.sidebar .navbar .nav-link-dark.dropdown-toggle,.navbar .sidebar .nav-link-dark.dropdown-toggle{background:#29363d}.sidebar .nav-link.nav-link-dark i,.sidebar .navbar .nav-link-dark.dropdown-toggle i,.navbar .sidebar .nav-link-dark.dropdown-toggle i{color:hsla(0,0%,100%,.7)}.sidebar .nav-link.nav-link-dark:hover,.sidebar .navbar .nav-link-dark.dropdown-toggle:hover,.navbar .sidebar .nav-link-dark.dropdown-toggle:hover{background:rgb(30.75,40.5,45.75) !important}.sidebar .nav-link.nav-link-dark:hover i,.sidebar .navbar .nav-link-dark.dropdown-toggle:hover i,.navbar .sidebar .nav-link-dark.dropdown-toggle:hover i{color:#fff}.sidebar .nav-dropdown-toggle{position:relative}.sidebar .nav-dropdown-toggle::before{position:absolute;top:50%;right:1rem;display:block;width:8px;height:8px;padding:0;margin-top:-4px;content:\\\"\\\";background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23536c79' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;background-position:center;transition:transform .3s}.sidebar .nav-dropdown.open{background:rgba(0,0,0,.2)}.sidebar .nav-dropdown.open>.nav-dropdown-items{max-height:1000px}.sidebar .nav-dropdown.open .nav-link,.sidebar .nav-dropdown.open .navbar .dropdown-toggle,.navbar .sidebar .nav-dropdown.open .dropdown-toggle{color:#fff;border-left:0 !important}.sidebar .nav-dropdown.open>.nav-link.nav-dropdown-toggle::before,.sidebar .navbar .nav-dropdown.open>.nav-dropdown-toggle.dropdown-toggle::before,.navbar .sidebar .nav-dropdown.open>.nav-dropdown-toggle.dropdown-toggle::before{transform:rotate(-90deg)}.sidebar .nav-dropdown.open .nav-dropdown.open{border-left:0}.sidebar .nav-label{display:block;padding:.09375rem 1rem;color:#c2cfd6}.sidebar .nav-label:hover{color:#fff;text-decoration:none}.sidebar .nav-label i{width:20px;margin:-3px .5rem 0 0;font-size:10px;color:#536c79;text-align:center;vertical-align:middle}.sidebar .progress{background-color:rgb(71.75,94.5,106.75) !important}.sidebar .sidebar-footer{flex:0 0 auto;padding:.75rem 1rem;background:rgba(0,0,0,.2)}.sidebar .sidebar-minimizer{position:relative;flex:0 0 50px;background-color:rgba(0,0,0,.2);border:0}.sidebar .sidebar-minimizer::before{position:absolute;top:0;right:0;width:50px;height:50px;content:\\\"\\\";background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23536c79' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\");background-repeat:no-repeat;background-position:center;background-size:12.5px;transition:.3s}.sidebar .sidebar-minimizer:focus,.sidebar .sidebar-minimizer.focus{outline:0}.sidebar .sidebar-minimizer:hover{background-color:rgba(0,0,0,.3)}.sidebar .sidebar-minimizer:hover::before{background-image:url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='%23fff' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\")}@media(min-width: 992px){.sidebar-compact .sidebar .sidebar-nav{width:150px}.sidebar-compact .sidebar .nav{width:150px}.sidebar-compact .sidebar .nav .nav-title{text-align:center}.sidebar-compact .sidebar .nav .nav-item{width:150px;border-left:0 !important}.sidebar-compact .sidebar .nav .nav-item .nav-link,.sidebar-compact .sidebar .nav .nav-item .navbar .dropdown-toggle,.navbar .sidebar-compact .sidebar .nav .nav-item .dropdown-toggle{text-align:center}.sidebar-compact .sidebar .nav .nav-item .nav-link i,.sidebar-compact .sidebar .nav .nav-item .navbar .dropdown-toggle i,.navbar .sidebar-compact .sidebar .nav .nav-item .dropdown-toggle i{display:block;width:100%;margin:.25rem 0;font-size:24px}.sidebar-compact .sidebar .nav .nav-item .nav-link .badge,.sidebar-compact .sidebar .nav .nav-item .navbar .dropdown-toggle .badge,.navbar .sidebar-compact .sidebar .nav .nav-item .dropdown-toggle .badge{position:absolute;top:18px;right:10px}.sidebar-compact .sidebar .nav .nav-item .nav-link.nav-dropdown-toggle::before,.sidebar-compact .sidebar .nav .nav-item .navbar .nav-dropdown-toggle.dropdown-toggle::before,.navbar .sidebar-compact .sidebar .nav .nav-item .nav-dropdown-toggle.dropdown-toggle::before{top:30px}.sidebar-minimized .hidden-cn{display:none}.sidebar-minimized .sidebar{z-index:1019}.sidebar-minimized .sidebar .sidebar-nav{overflow:visible;width:50px}.sidebar-minimized .sidebar .nav{width:50px}.sidebar-minimized .sidebar .nav-divider,.sidebar-minimized .sidebar .divider,.sidebar-minimized .sidebar .nav-title,.sidebar-minimized .sidebar .sidebar-footer,.sidebar-minimized .sidebar .sidebar-form,.sidebar-minimized .sidebar .sidebar-header{display:none}.sidebar-minimized .sidebar .sidebar-minimizer::before{width:100%;transform:rotate(-180deg)}.sidebar-minimized .sidebar .nav-item{width:50px;overflow:hidden;border-left:0 !important}.sidebar-minimized .sidebar .nav-item:hover{width:250px;overflow:visible}.sidebar-minimized .sidebar .nav-item:hover>.nav-link,.sidebar-minimized .sidebar .navbar .nav-item:hover>.dropdown-toggle,.navbar .sidebar-minimized .sidebar .nav-item:hover>.dropdown-toggle{background:#039}.sidebar-minimized .sidebar .nav-item:hover>.nav-link i,.sidebar-minimized .sidebar .navbar .nav-item:hover>.dropdown-toggle i,.navbar .sidebar-minimized .sidebar .nav-item:hover>.dropdown-toggle i{color:#fff}.sidebar-minimized .sidebar .nav-link,.sidebar-minimized .sidebar .navbar .dropdown-toggle,.navbar .sidebar-minimized .sidebar .dropdown-toggle{position:relative;padding-left:0;margin:0;white-space:nowrap;border-left:0 !important}.sidebar-minimized .sidebar .nav-link i,.sidebar-minimized .sidebar .navbar .dropdown-toggle i,.navbar .sidebar-minimized .sidebar .dropdown-toggle i{display:block;float:left;width:50px;font-size:18px}.sidebar-minimized .sidebar .nav-link .badge,.sidebar-minimized .sidebar .navbar .dropdown-toggle .badge,.navbar .sidebar-minimized .sidebar .dropdown-toggle .badge{position:absolute;right:15px;display:none}.sidebar-minimized .sidebar .nav-link:hover,.sidebar-minimized .sidebar .navbar .dropdown-toggle:hover,.navbar .sidebar-minimized .sidebar .dropdown-toggle:hover{width:250px;background:#039}.sidebar-minimized .sidebar .nav-link:hover .badge,.sidebar-minimized .sidebar .navbar .dropdown-toggle:hover .badge,.navbar .sidebar-minimized .sidebar .dropdown-toggle:hover .badge{display:inline}.sidebar-minimized .sidebar .nav-link.nav-dropdown-toggle::before,.sidebar-minimized .sidebar .navbar .nav-dropdown-toggle.dropdown-toggle::before,.navbar .sidebar-minimized .sidebar .nav-dropdown-toggle.dropdown-toggle::before{display:none}.sidebar-minimized .sidebar .nav-dropdown-items .nav-item{width:200px}.sidebar-minimized .sidebar .nav-dropdown-items .nav-item .nav-link,.sidebar-minimized .sidebar .nav-dropdown-items .nav-item .navbar .dropdown-toggle,.navbar .sidebar-minimized .sidebar .nav-dropdown-items .nav-item .dropdown-toggle{width:200px}.sidebar-minimized .sidebar .nav>.nav-dropdown>.nav-dropdown-items{display:none;max-height:1000px;background:#29363d}.sidebar-minimized .sidebar .nav>.nav-dropdown:hover{background:#039}.sidebar-minimized .sidebar .nav>.nav-dropdown:hover>.nav-dropdown-items{position:absolute;left:50px;display:inline}}.switch.switch-default{position:relative;display:inline-block;vertical-align:top;width:40px;height:24px;background-color:rgba(0,0,0,0);cursor:pointer}.switch.switch-default .switch-input{position:absolute;top:0;left:0;opacity:0}.switch.switch-default .switch-label{position:relative;display:block;height:inherit;font-size:10px;font-weight:600;text-transform:uppercase;background-color:#fff;border:1px solid #a4b7c1;border-radius:2px;transition:opacity background .15s ease-out}.switch.switch-default .switch-input:checked~.switch-label::before{opacity:0}.switch.switch-default .switch-input:checked~.switch-label::after{opacity:1}.switch.switch-default .switch-handle{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border:1px solid #a4b7c1;border-radius:1px;transition:left .15s ease-out}.switch.switch-default .switch-input:checked~.switch-handle{left:18px}.switch.switch-default.switch-lg{width:48px;height:28px}.switch.switch-default.switch-lg .switch-label{font-size:12px}.switch.switch-default.switch-lg .switch-handle{width:24px;height:24px}.switch.switch-default.switch-lg .switch-input:checked~.switch-handle{left:22px}.switch.switch-default.switch-sm{width:32px;height:20px}.switch.switch-default.switch-sm .switch-label{font-size:8px}.switch.switch-default.switch-sm .switch-handle{width:16px;height:16px}.switch.switch-default.switch-sm .switch-input:checked~.switch-handle{left:14px}.switch.switch-default.switch-xs{width:24px;height:16px}.switch.switch-default.switch-xs .switch-label{font-size:7px}.switch.switch-default.switch-xs .switch-handle{width:12px;height:12px}.switch.switch-default.switch-xs .switch-input:checked~.switch-handle{left:10px}.switch.switch-text{position:relative;display:inline-block;vertical-align:top;width:48px;height:24px;background-color:rgba(0,0,0,0);cursor:pointer}.switch.switch-text .switch-input{position:absolute;top:0;left:0;opacity:0}.switch.switch-text .switch-label{position:relative;display:block;height:inherit;font-size:10px;font-weight:600;text-transform:uppercase;background-color:#fff;border:1px solid #a4b7c1;border-radius:2px;transition:opacity background .15s ease-out}.switch.switch-text .switch-label::before,.switch.switch-text .switch-label::after{position:absolute;top:50%;width:50%;margin-top:-0.5em;line-height:1;text-align:center;transition:inherit}.switch.switch-text .switch-label::before{right:1px;color:#c2cfd6;content:attr(data-off)}.switch.switch-text .switch-label::after{left:1px;color:#fff;content:attr(data-on);opacity:0}.switch.switch-text .switch-input:checked~.switch-label::before{opacity:0}.switch.switch-text .switch-input:checked~.switch-label::after{opacity:1}.switch.switch-text .switch-handle{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border:1px solid #a4b7c1;border-radius:1px;transition:left .15s ease-out}.switch.switch-text .switch-input:checked~.switch-handle{left:26px}.switch.switch-text.switch-lg{width:56px;height:28px}.switch.switch-text.switch-lg .switch-label{font-size:12px}.switch.switch-text.switch-lg .switch-handle{width:24px;height:24px}.switch.switch-text.switch-lg .switch-input:checked~.switch-handle{left:30px}.switch.switch-text.switch-sm{width:40px;height:20px}.switch.switch-text.switch-sm .switch-label{font-size:8px}.switch.switch-text.switch-sm .switch-handle{width:16px;height:16px}.switch.switch-text.switch-sm .switch-input:checked~.switch-handle{left:22px}.switch.switch-text.switch-xs{width:32px;height:16px}.switch.switch-text.switch-xs .switch-label{font-size:7px}.switch.switch-text.switch-xs .switch-handle{width:12px;height:12px}.switch.switch-text.switch-xs .switch-input:checked~.switch-handle{left:18px}.switch.switch-icon{position:relative;display:inline-block;vertical-align:top;width:48px;height:24px;background-color:rgba(0,0,0,0);cursor:pointer}.switch.switch-icon .switch-input{position:absolute;top:0;left:0;opacity:0}.switch.switch-icon .switch-label{position:relative;display:block;height:inherit;font-family:FontAwesome;font-size:10px;font-weight:600;text-transform:uppercase;background-color:#fff;border:1px solid #a4b7c1;border-radius:2px;transition:opacity background .15s ease-out}.switch.switch-icon .switch-label::before,.switch.switch-icon .switch-label::after{position:absolute;top:50%;width:50%;margin-top:-0.5em;line-height:1;text-align:center;transition:inherit}.switch.switch-icon .switch-label::before{right:1px;color:#c2cfd6;content:attr(data-off)}.switch.switch-icon .switch-label::after{left:1px;color:#fff;content:attr(data-on);opacity:0}.switch.switch-icon .switch-input:checked~.switch-label::before{opacity:0}.switch.switch-icon .switch-input:checked~.switch-label::after{opacity:1}.switch.switch-icon .switch-handle{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border:1px solid #a4b7c1;border-radius:1px;transition:left .15s ease-out}.switch.switch-icon .switch-input:checked~.switch-handle{left:26px}.switch.switch-icon.switch-lg{width:56px;height:28px}.switch.switch-icon.switch-lg .switch-label{font-size:12px}.switch.switch-icon.switch-lg .switch-handle{width:24px;height:24px}.switch.switch-icon.switch-lg .switch-input:checked~.switch-handle{left:30px}.switch.switch-icon.switch-sm{width:40px;height:20px}.switch.switch-icon.switch-sm .switch-label{font-size:8px}.switch.switch-icon.switch-sm .switch-handle{width:16px;height:16px}.switch.switch-icon.switch-sm .switch-input:checked~.switch-handle{left:22px}.switch.switch-icon.switch-xs{width:32px;height:16px}.switch.switch-icon.switch-xs .switch-label{font-size:7px}.switch.switch-icon.switch-xs .switch-handle{width:12px;height:12px}.switch.switch-icon.switch-xs .switch-input:checked~.switch-handle{left:18px}.switch.switch-3d{position:relative;display:inline-block;vertical-align:top;width:40px;height:24px;background-color:rgba(0,0,0,0);cursor:pointer}.switch.switch-3d .switch-input{position:absolute;top:0;left:0;opacity:0}.switch.switch-3d .switch-label{position:relative;display:block;height:inherit;font-size:10px;font-weight:600;text-transform:uppercase;background-color:#f0f3f5;border:1px solid #a4b7c1;border-radius:2px;transition:opacity background .15s ease-out}.switch.switch-3d .switch-input:checked~.switch-label::before{opacity:0}.switch.switch-3d .switch-input:checked~.switch-label::after{opacity:1}.switch.switch-3d .switch-handle{position:absolute;top:0;left:0;width:24px;height:24px;background:#fff;border:1px solid #a4b7c1;border-radius:1px;transition:left .15s ease-out;border:0;box-shadow:0 2px 5px rgba(0,0,0,.3)}.switch.switch-3d .switch-input:checked~.switch-handle{left:16px}.switch.switch-3d.switch-lg{width:48px;height:28px}.switch.switch-3d.switch-lg .switch-label{font-size:12px}.switch.switch-3d.switch-lg .switch-handle{width:28px;height:28px}.switch.switch-3d.switch-lg .switch-input:checked~.switch-handle{left:20px}.switch.switch-3d.switch-sm{width:32px;height:20px}.switch.switch-3d.switch-sm .switch-label{font-size:8px}.switch.switch-3d.switch-sm .switch-handle{width:20px;height:20px}.switch.switch-3d.switch-sm .switch-input:checked~.switch-handle{left:12px}.switch.switch-3d.switch-xs{width:24px;height:16px}.switch.switch-3d.switch-xs .switch-label{font-size:7px}.switch.switch-3d.switch-xs .switch-handle{width:16px;height:16px}.switch.switch-3d.switch-xs .switch-input:checked~.switch-handle{left:8px}.switch-pill .switch-label,.switch.switch-3d .switch-label,.switch-pill .switch-handle,.switch.switch-3d .switch-handle{border-radius:50em !important}.switch-pill .switch-label::before,.switch.switch-3d .switch-label::before{right:2px !important}.switch-pill .switch-label::after,.switch.switch-3d .switch-label::after{left:2px !important}.switch-primary>.switch-input:checked~.switch-label{background:#039 !important;border-color:#026}.switch-primary>.switch-input:checked~.switch-handle{border-color:#026}.switch-primary-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#039}.switch-primary-outline>.switch-input:checked~.switch-label::after{color:#039}.switch-primary-outline>.switch-input:checked~.switch-handle{border-color:#039}.switch-primary-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#039}.switch-primary-outline-alt>.switch-input:checked~.switch-label::after{color:#039}.switch-primary-outline-alt>.switch-input:checked~.switch-handle{background:#039 !important;border-color:#039}.switch-secondary>.switch-input:checked~.switch-label{background:#3e515b !important;border-color:rgb(41.3333333333,54,60.6666666667)}.switch-secondary>.switch-input:checked~.switch-handle{border-color:rgb(41.3333333333,54,60.6666666667)}.switch-secondary-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#3e515b}.switch-secondary-outline>.switch-input:checked~.switch-label::after{color:#3e515b}.switch-secondary-outline>.switch-input:checked~.switch-handle{border-color:#3e515b}.switch-secondary-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#3e515b}.switch-secondary-outline-alt>.switch-input:checked~.switch-label::after{color:#3e515b}.switch-secondary-outline-alt>.switch-input:checked~.switch-handle{background:#3e515b !important;border-color:#3e515b}.switch-success>.switch-input:checked~.switch-label{background:#4dbd74 !important;border-color:rgb(58.1557377049,156.8442622951,92.5204918033)}.switch-success>.switch-input:checked~.switch-handle{border-color:rgb(58.1557377049,156.8442622951,92.5204918033)}.switch-success-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#4dbd74}.switch-success-outline>.switch-input:checked~.switch-label::after{color:#4dbd74}.switch-success-outline>.switch-input:checked~.switch-handle{border-color:#4dbd74}.switch-success-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#4dbd74}.switch-success-outline-alt>.switch-input:checked~.switch-label::after{color:#4dbd74}.switch-success-outline-alt>.switch-input:checked~.switch-handle{background:#4dbd74 !important;border-color:#4dbd74}.switch-info>.switch-input:checked~.switch-label{background:#63c2de !important;border-color:rgb(56.9047619048,177.5396825397,213.0952380952)}.switch-info>.switch-input:checked~.switch-handle{border-color:rgb(56.9047619048,177.5396825397,213.0952380952)}.switch-info-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#63c2de}.switch-info-outline>.switch-input:checked~.switch-label::after{color:#63c2de}.switch-info-outline>.switch-input:checked~.switch-handle{border-color:#63c2de}.switch-info-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#63c2de}.switch-info-outline-alt>.switch-input:checked~.switch-label::after{color:#63c2de}.switch-info-outline-alt>.switch-input:checked~.switch-handle{background:#63c2de !important;border-color:#63c2de}.switch-warning>.switch-input:checked~.switch-label{background:#fc0 !important;border-color:rgb(204,163.2,0)}.switch-warning>.switch-input:checked~.switch-handle{border-color:rgb(204,163.2,0)}.switch-warning-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#fc0}.switch-warning-outline>.switch-input:checked~.switch-label::after{color:#fc0}.switch-warning-outline>.switch-input:checked~.switch-handle{border-color:#fc0}.switch-warning-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#fc0}.switch-warning-outline-alt>.switch-input:checked~.switch-label::after{color:#fc0}.switch-warning-outline-alt>.switch-input:checked~.switch-handle{background:#fc0 !important;border-color:#fc0}.switch-danger>.switch-input:checked~.switch-label{background:#f86c6b !important;border-color:hsl(.4255319149,90.9677419355%,59.6078431373%)}.switch-danger>.switch-input:checked~.switch-handle{border-color:hsl(.4255319149,90.9677419355%,59.6078431373%)}.switch-danger-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#f86c6b}.switch-danger-outline>.switch-input:checked~.switch-label::after{color:#f86c6b}.switch-danger-outline>.switch-input:checked~.switch-handle{border-color:#f86c6b}.switch-danger-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#f86c6b}.switch-danger-outline-alt>.switch-input:checked~.switch-label::after{color:#f86c6b}.switch-danger-outline-alt>.switch-input:checked~.switch-handle{background:#f86c6b !important;border-color:#f86c6b}.switch-light>.switch-input:checked~.switch-label{background:#c2cfd6 !important;border-color:rgb(163.5,183,193.5)}.switch-light>.switch-input:checked~.switch-handle{border-color:rgb(163.5,183,193.5)}.switch-light-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#c2cfd6}.switch-light-outline>.switch-input:checked~.switch-label::after{color:#c2cfd6}.switch-light-outline>.switch-input:checked~.switch-handle{border-color:#c2cfd6}.switch-light-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#c2cfd6}.switch-light-outline-alt>.switch-input:checked~.switch-label::after{color:#c2cfd6}.switch-light-outline-alt>.switch-input:checked~.switch-handle{background:#c2cfd6 !important;border-color:#c2cfd6}.switch-dark>.switch-input:checked~.switch-label{background:#29363d !important;border-color:rgb(20.5,27,30.5)}.switch-dark>.switch-input:checked~.switch-handle{border-color:rgb(20.5,27,30.5)}.switch-dark-outline>.switch-input:checked~.switch-label{background:#fff !important;border-color:#29363d}.switch-dark-outline>.switch-input:checked~.switch-label::after{color:#29363d}.switch-dark-outline>.switch-input:checked~.switch-handle{border-color:#29363d}.switch-dark-outline-alt>.switch-input:checked~.switch-label{background:#fff !important;border-color:#29363d}.switch-dark-outline-alt>.switch-input:checked~.switch-label::after{color:#29363d}.switch-dark-outline-alt>.switch-input:checked~.switch-handle{background:#29363d !important;border-color:#29363d}.table-outline{border:1px solid #a4b7c1}.table-outline td{vertical-align:middle}.table-align-middle td{vertical-align:middle}.table-clear td{border:0}.social-box{min-height:160px;margin-bottom:1.5rem;text-align:center;background:#fff;border:1px solid #c2cfd6;border-radius:.25rem}.social-box i{display:block;margin:-1px -1px 0;font-size:40px;line-height:90px;background:#c2cfd6;border-radius:.25rem .25rem 0 0}.social-box .chart-wrapper{height:90px;margin:-90px 0 0}.social-box .chart-wrapper canvas{width:100% !important;height:90px !important}.social-box ul{padding:10px 0;list-style:none}.social-box ul li{display:block;float:left;width:50%}.social-box ul li:first-child{border-right:1px solid #a4b7c1}.social-box ul li strong{display:block;font-size:20px}.social-box ul li span{font-size:10px;font-weight:500;color:#a4b7c1;text-transform:uppercase}.social-box.facebook i{color:#fff;background:#3b5998}.social-box.twitter i{color:#fff;background:#00aced}.social-box.linkedin i{color:#fff;background:#4875b4}.social-box.google-plus i{color:#fff;background:#d34836}.horizontal-bars{padding:0;margin:0;list-style:none}.horizontal-bars li{position:relative;height:40px;line-height:40px;vertical-align:middle}.horizontal-bars li .title{width:100px;font-size:12px;font-weight:600;color:#536c79;vertical-align:middle}.horizontal-bars li .bars{position:absolute;top:15px;width:100%;padding-left:100px}.horizontal-bars li .bars .progress:first-child{margin-bottom:2px}.horizontal-bars li.legend{text-align:center}.horizontal-bars li.legend .badge{display:inline-block;width:8px;height:8px;padding:0}.horizontal-bars li.divider{height:40px}.horizontal-bars li.divider i{margin:0 !important}.horizontal-bars.type-2 li{overflow:hidden}.horizontal-bars.type-2 li i{display:inline-block;margin-right:1rem;margin-left:5px;font-size:18px;line-height:40px}.horizontal-bars.type-2 li .title{display:inline-block;width:auto;margin-top:-9px;font-size:.875rem;font-weight:normal;line-height:40px;color:#151b1e}.horizontal-bars.type-2 li .value{float:right;font-weight:600}.horizontal-bars.type-2 li .bars{position:absolute;top:auto;bottom:0;padding:0}.icons-list{padding:0;margin:0;list-style:none}.icons-list li{position:relative;height:40px;vertical-align:middle}.icons-list li i{display:block;float:left;width:35px !important;height:35px !important;margin:2px;line-height:35px !important;text-align:center}.icons-list li .desc{height:40px;margin-left:50px;border-bottom:1px solid #a4b7c1}.icons-list li .desc .title{padding:2px 0 0;margin:0}.icons-list li .desc small{display:block;margin-top:-4px;color:#536c79}.icons-list li .value{position:absolute;top:2px;right:45px;text-align:right}.icons-list li .value strong{display:block;margin-top:-3px}.icons-list li .actions{position:absolute;top:-4px;right:10px;width:40px;height:40px;line-height:40px;text-align:center}.icons-list li .actions i{float:none;width:auto;height:auto;padding:0;margin:0;line-height:normal}.icons-list li.divider{height:40px}.icons-list li.divider i{width:auto;height:auto;margin:2px 0 0;font-size:18px}@media all and (-ms-high-contrast: none){html{display:flex;flex-direction:column}}.app,app-dashboard,app-root{display:flex;flex-direction:column;min-height:100vh}.app-header{flex:0 0 55px}.app-footer{flex:0 0 50px}.app-body{display:flex;flex-direction:row;flex-grow:1;overflow-x:hidden}.app-body .main{flex:1;min-width:0}.app-body .sidebar{flex:0 0 200px;order:-1}.app-body .aside-menu{flex:0 0 250px}.header-fixed .app-header{position:fixed;z-index:1020;width:100%}.header-fixed .app-body{margin-top:55px}.sidebar-hidden .sidebar{margin-left:-200px}.sidebar-fixed .sidebar{position:fixed;z-index:1019;width:200px;height:calc(100vh - 55px)}.sidebar-fixed .main,.sidebar-fixed .app-footer{margin-left:200px}.sidebar-fixed.sidebar-hidden .main,.sidebar-fixed.sidebar-hidden .app-footer{margin-left:0}.sidebar-off-canvas .sidebar{position:fixed;z-index:1019;height:calc(100vh - 55px)}@media(min-width: 992px){.sidebar-compact .sidebar{flex:0 0 150px}.sidebar-compact.sidebar-hidden .sidebar{margin-left:-150px}.sidebar-compact.sidebar-fixed .main,.sidebar-compact.sidebar-fixed .app-footer{margin-left:150px}.sidebar-compact.sidebar-fixed .sidebar{width:150px}.sidebar-compact.sidebar-fixed.sidebar-hidden .main,.sidebar-compact.sidebar-fixed.sidebar-hidden .app-footer{margin-left:0}.sidebar-minimized .sidebar{flex:0 0 50px}.sidebar-minimized.sidebar-hidden .sidebar{margin-left:-50px}.sidebar-minimized.sidebar-fixed .main,.sidebar-minimized.sidebar-fixed .app-footer{margin-left:50px}.sidebar-minimized.sidebar-fixed .sidebar{width:50px}.sidebar-minimized.sidebar-fixed.sidebar-hidden .main,.sidebar-minimized.sidebar-fixed.sidebar-hidden .app-footer{margin-left:0}}.aside-menu-hidden .aside-menu{margin-right:-250px}.aside-menu-fixed .aside-menu{position:fixed;right:0;height:100%}.aside-menu-fixed .aside-menu .tab-content{height:calc(100vh - 2.375rem - 55px)}.aside-menu-fixed .main,.aside-menu-fixed .app-footer{margin-right:250px}.aside-menu-fixed.aside-menu-hidden .main,.aside-menu-fixed.aside-menu-hidden .app-footer{margin-right:0}.aside-menu-off-canvas .aside-menu{position:fixed;right:0;z-index:1019;height:100%}.aside-menu-off-canvas .aside-menu .tab-content{height:calc(100vh - 2.375rem - 55px)}.breadcrumb-fixed .main{padding-top:3.875rem}.breadcrumb-fixed .breadcrumb{position:fixed;top:55px;right:0;left:0;z-index:1018}.breadcrumb-fixed .main:nth-child(2) .breadcrumb{right:250px;left:200px}.breadcrumb-fixed .main:first-child .breadcrumb{right:250px;left:0}.breadcrumb-fixed .main:last-child .breadcrumb{right:0}.breadcrumb-fixed.sidebar-minimized .main .breadcrumb{left:50px}.breadcrumb-fixed.sidebar-hidden .main .breadcrumb,.breadcrumb-fixed.sidebar-off-canvas .main .breadcrumb{left:0}.breadcrumb-fixed.aside-menu-hidden .main .breadcrumb,.breadcrumb-fixed.aside-menu-off-canvas .main .breadcrumb{right:0}.footer-fixed .app-footer{position:fixed;right:0;bottom:0;left:0;z-index:1020;height:50px}.footer-fixed .app-body{margin-bottom:50px}.app-header,.app-footer,.sidebar,.main,.aside-menu{transition:margin-left .25s,margin-right .25s,width .25s,flex .25s}.sidebar-nav{transition:width .25s}.breadcrumb{transition:left .25s,right .25s,width .25s}@media(max-width: 991.98px){.app-header.navbar{position:fixed !important;z-index:1020;width:100%;text-align:center;background-color:#fff;border-bottom:1px solid #a4b7c1}.app-header.navbar .navbar-toggler{color:#536c79}.app-header.navbar .navbar-brand{position:absolute;left:50%;margin-left:-65px}.app-body{margin-top:55px}.breadcrumb-fixed .main:nth-child(2) .breadcrumb{right:auto;left:auto;width:100%}.sidebar{position:fixed;z-index:1019;width:220px;height:calc(100vh - 55px);margin-left:-220px}.sidebar .sidebar-nav,.sidebar .nav{width:220px;min-height:calc(100vh - 55px)}.sidebar .sidebar-minimizer{display:none}.main,.app-footer{margin-left:0 !important}.sidebar-hidden .sidebar{margin-left:-220px}.sidebar-mobile-show .sidebar{width:220px;margin-left:0}.sidebar-mobile-show .main{margin-right:-220px !important;margin-left:220px !important}}hr.transparent{border-top:1px solid rgba(0,0,0,0)}.bg-primary,.bg-success,.bg-info,.bg-warning,.bg-danger,.bg-inverse{color:#fff}.b-a-0{border:0 !important}.b-t-0{border-top:0 !important}.b-r-0{border-right:0 !important}.b-b-0{border-bottom:0 !important}.b-l-0{border-left:0 !important}.b-a-1{border:1px solid #a4b7c1 !important}.b-t-1{border-top:1px solid #a4b7c1 !important}.b-r-1{border-right:1px solid #a4b7c1 !important}.b-b-1{border-bottom:1px solid #a4b7c1 !important}.b-l-1{border-left:1px solid #a4b7c1 !important}.b-a-2{border:2px solid #a4b7c1 !important}.b-t-2{border-top:2px solid #a4b7c1 !important}.b-r-2{border-right:2px solid #a4b7c1 !important}.b-b-2{border-bottom:2px solid #a4b7c1 !important}.b-l-2{border-left:2px solid #a4b7c1 !important}@media(max-width: 575.98px){.d-down-none{display:none !important}}@media(max-width: 767.98px){.d-sm-down-none{display:none !important}}@media(max-width: 991.98px){.d-md-down-none{display:none !important}}@media(max-width: 1199.98px){.d-lg-down-none{display:none !important}}.d-xl-down-none{display:none !important}.label-pill{border-radius:1rem !important}.open>a,.show>a{outline:0}.navbar .dropdown-toggle .img-avatar{height:35px;margin:0 10px}*[dir=rtl]{direction:rtl;unicode-bidi:embed}*[dir=rtl] ul{-webkit-padding-start:0}*[dir=rtl] table tr th{text-align:right}*[dir=rtl] .breadcrumb-item{float:right}*[dir=rtl] .breadcrumb-menu{right:auto;left:1rem}*[dir=rtl] .dropdown-item{text-align:right}*[dir=rtl] .dropdown-item i{margin-right:-10px;margin-left:10px}*[dir=rtl] .dropdown-item .badge{right:auto;left:10px}*[dir=rtl] .sidebar-hidden .sidebar{margin-right:-200px}*[dir=rtl] .sidebar-fixed .main,*[dir=rtl] .sidebar-fixed .app-footer{margin-right:200px}*[dir=rtl] .sidebar-fixed.sidebar-hidden .main,*[dir=rtl] .sidebar-fixed.sidebar-hidden .app-footer{margin-right:0}*[dir=rtl] .sidebar-minimized .sidebar{flex:0 0 50px}*[dir=rtl] .sidebar-minimized.sidebar-hidden .sidebar{margin-right:-50px;margin-left:0}*[dir=rtl] .sidebar-minimized.sidebar-fixed .main,*[dir=rtl] .sidebar-minimized.sidebar-fixed .app-footer{margin-right:50px}*[dir=rtl] .sidebar-minimized.sidebar-fixed.sidebar-hidden .main,*[dir=rtl] .sidebar-minimized.sidebar-fixed.sidebar-hidden .app-footer{margin-left:0}*[dir=rtl] .aside-menu-hidden .aside-menu{margin-right:0;margin-left:-250px}*[dir=rtl] .aside-menu-fixed .aside-menu{right:auto;left:0}*[dir=rtl] .aside-menu-fixed .main,*[dir=rtl] .aside-menu-fixed .app-footer{margin-left:250px}*[dir=rtl] .aside-menu-fixed.aside-menu-hidden .main,*[dir=rtl] .aside-menu-fixed.aside-menu-hidden .app-footer{margin-left:0}*[dir=rtl] .aside-menu-off-canvas .aside-menu{position:fixed;right:0;z-index:1019;height:100%}*[dir=rtl] .aside-menu-off-canvas .aside-menu .tab-content{height:calc(100vh - 2.375rem - 55px)}*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .nav-link,*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .navbar .dropdown-toggle,.navbar *[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .dropdown-toggle{direction:rtl}*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .nav-link i,*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .navbar .dropdown-toggle i,.navbar *[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .dropdown-toggle i{margin:0 0 0 .5rem}*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .nav-link .badge,*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .navbar .dropdown-toggle .badge,.navbar *[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .dropdown-toggle .badge{float:left;margin-top:2px}*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .nav-link.nav-dropdown-toggle::before,*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .navbar .nav-dropdown-toggle.dropdown-toggle::before,.navbar *[dir=rtl] .sidebar .sidebar-nav .nav .nav-item .nav-dropdown-toggle.dropdown-toggle::before{position:absolute;right:auto !important;left:1rem;transform:rotate(180deg)}*[dir=rtl] .sidebar .sidebar-nav .nav .nav-item.nav-dropdown.open>.nav-link.nav-dropdown-toggle::before,*[dir=rtl] .sidebar .sidebar-nav .nav .navbar .nav-item.nav-dropdown.open>.nav-dropdown-toggle.dropdown-toggle::before,.navbar *[dir=rtl] .sidebar .sidebar-nav .nav .nav-item.nav-dropdown.open>.nav-dropdown-toggle.dropdown-toggle::before{transform:rotate(270deg)}*[dir=rtl] .sidebar-minimized .sidebar .nav-link,*[dir=rtl] .sidebar-minimized .sidebar .navbar .dropdown-toggle,.navbar *[dir=rtl] .sidebar-minimized .sidebar .dropdown-toggle{padding-right:0}*[dir=rtl] .sidebar-minimized .sidebar .nav-link i,*[dir=rtl] .sidebar-minimized .sidebar .navbar .dropdown-toggle i,.navbar *[dir=rtl] .sidebar-minimized .sidebar .dropdown-toggle i{float:right;padding:0;margin:0}*[dir=rtl] .sidebar-minimized .sidebar .nav-link .badge,*[dir=rtl] .sidebar-minimized .sidebar .navbar .dropdown-toggle .badge,.navbar *[dir=rtl] .sidebar-minimized .sidebar .dropdown-toggle .badge{right:auto;left:15px}*[dir=rtl] .sidebar-minimized .sidebar .nav>.nav-dropdown:hover>.nav-dropdown-items{right:50px;left:0}*[dir=rtl] .horizontal-bars li .bars{padding-right:100px;padding-left:0}*[dir=rtl] .horizontal-bars li .bars .progress:first-child{margin-bottom:2px}*[dir=rtl] .horizontal-bars.type-2 li i{margin-right:5px;margin-left:1rem}*[dir=rtl] .horizontal-bars.type-2 li .value{float:left;font-weight:600}*[dir=rtl] .horizontal-bars.type-2 li .bars{padding:0}*[dir=rtl] .icons-list li{position:relative;height:40px;vertical-align:middle}*[dir=rtl] .icons-list li i{float:right}*[dir=rtl] .icons-list li .desc{margin-right:50px;margin-left:0}*[dir=rtl] .icons-list li .value{right:auto;left:45px;text-align:left}*[dir=rtl] .icons-list li .value strong{display:block;margin-top:-3px}*[dir=rtl] .icons-list li .actions{right:auto;left:10px}*[dir=rtl] .callout{border:0 solid #a4b7c1;border-right-width:.25rem}*[dir=rtl] .callout.callout-primary{border-right-color:#039}*[dir=rtl] .callout.callout-secondary{border-right-color:#3e515b}*[dir=rtl] .callout.callout-success{border-right-color:#4dbd74}*[dir=rtl] .callout.callout-info{border-right-color:#63c2de}*[dir=rtl] .callout.callout-warning{border-right-color:#fc0}*[dir=rtl] .callout.callout-danger{border-right-color:#f86c6b}*[dir=rtl] .callout.callout-light{border-right-color:#c2cfd6}*[dir=rtl] .callout.callout-dark{border-right-color:#29363d}*[dir=rtl] .callout .chart-wrapper{left:0;float:left}*[dir=rtl] .callout-default{border-right-color:#536c79}form.rjsf label{margin-bottom:0}form.rjsf div>p.field-description{font-size:.7rem;font-style:italic;margin-bottom:0px}form.rjsf input{width:auto}form.rjsf div.row.array-item{background-color:#f0f8ff;margin-bottom:3px}form.rjsf button.btn-add,form.rjsf button.array-item-add button{background-color:#20a8d8 !important;border-color:#20a8d8 !important;color:#fff !important}form.rjsf button.btn-add:hover,form.rjsf button.array-item-add button:hover{background-color:#1985ac !important;border-color:#1985ac !important}form.rjsf button.btn-add:focus,form.rjsf button.array-item-add button:focus{background-color:#1985ac !important;border-color:#1985ac !important;box-shadow:0 0 0 .2rem rgba(32,168,216,.5) !important}form.rjsf button.array-item-remove{background-color:#f86c6b !important;border-color:#f86c6b !important;color:#fff !important}form.rjsf button.array-item-remove:hover{background-color:#f63c3a !important;border-color:#f63c3a !important}form.rjsf button.array-item-remove:focus{background-color:#f63c3a !important;border-color:#f63c3a !important;box-shadow:0 0 0 .2rem rgba(248,108,107,.5) !important}form.rjsf .array-button-style{flex:1 1 0%;padding-left:6px;padding-right:6px;font-weight:bold}form.rjsf .btn-group-flex{display:flex;justify-content:space-around}@media(max-width: 767px){.container-fluid,.container-sm,.container-md,.container-lg,.container-xl,.row{padding:0 2px !important}.navbar-header{margin:0px}}.text-pretty{text-wrap:balance;text-wrap:pretty}\", \"\",{\"version\":3,\"sources\":[\"webpack://./scss/style.scss\",\"webpack://./../../node_modules/bootstrap/scss/_root.scss\",\"webpack://./../../node_modules/bootstrap/scss/_reboot.scss\",\"webpack://./../../node_modules/bootstrap/scss/_variables.scss\",\"webpack://./../../node_modules/bootstrap/scss/vendor/_rfs.scss\",\"webpack://./scss/_bootstrap-variables.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_hover.scss\",\"webpack://./../../node_modules/bootstrap/scss/_type.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_lists.scss\",\"webpack://./../../node_modules/bootstrap/scss/_images.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_image.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_border-radius.scss\",\"webpack://./../../node_modules/bootstrap/scss/_code.scss\",\"webpack://./../../node_modules/bootstrap/scss/_grid.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_grid.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_breakpoints.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_grid-framework.scss\",\"webpack://./../../node_modules/bootstrap/scss/_tables.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_table-row.scss\",\"webpack://./../../node_modules/bootstrap/scss/_forms.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_transition.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_forms.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_gradients.scss\",\"webpack://./../../node_modules/bootstrap/scss/_buttons.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_buttons.scss\",\"webpack://./../../node_modules/bootstrap/scss/_transitions.scss\",\"webpack://./../../node_modules/bootstrap/scss/_dropdown.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_caret.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_nav-divider.scss\",\"webpack://./../../node_modules/bootstrap/scss/_button-group.scss\",\"webpack://./../../node_modules/bootstrap/scss/_input-group.scss\",\"webpack://./../../node_modules/bootstrap/scss/_custom-forms.scss\",\"webpack://./../../node_modules/bootstrap/scss/_nav.scss\",\"webpack://./../../node_modules/bootstrap/scss/_navbar.scss\",\"webpack://./../../node_modules/bootstrap/scss/_card.scss\",\"webpack://./../../node_modules/bootstrap/scss/_breadcrumb.scss\",\"webpack://./../../node_modules/bootstrap/scss/_pagination.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_pagination.scss\",\"webpack://./../../node_modules/bootstrap/scss/_badge.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_badge.scss\",\"webpack://./../../node_modules/bootstrap/scss/_jumbotron.scss\",\"webpack://./../../node_modules/bootstrap/scss/_alert.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_alert.scss\",\"webpack://./../../node_modules/bootstrap/scss/_progress.scss\",\"webpack://./../../node_modules/bootstrap/scss/_media.scss\",\"webpack://./../../node_modules/bootstrap/scss/_list-group.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_list-group.scss\",\"webpack://./../../node_modules/bootstrap/scss/_close.scss\",\"webpack://./../../node_modules/bootstrap/scss/_toasts.scss\",\"webpack://./../../node_modules/bootstrap/scss/_modal.scss\",\"webpack://./../../node_modules/bootstrap/scss/_tooltip.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_reset-text.scss\",\"webpack://./../../node_modules/bootstrap/scss/_popover.scss\",\"webpack://./../../node_modules/bootstrap/scss/_carousel.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_clearfix.scss\",\"webpack://./../../node_modules/bootstrap/scss/_spinners.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_align.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_background-variant.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_background.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_borders.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_display.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_embed.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_flex.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_float.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_interactions.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_position.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_screenreaders.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_screen-reader.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_shadows.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_sizing.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_spacing.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_stretched-link.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_text.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_text-truncate.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_text-emphasis.scss\",\"webpack://./../../node_modules/bootstrap/scss/mixins/_text-hide.scss\",\"webpack://./../../node_modules/bootstrap/scss/utilities/_visibility.scss\",\"webpack://./../../node_modules/bootstrap/scss/_print.scss\",\"webpack://./scss/core/_typography.scss\",\"webpack://./scss/core/_animate.scss\",\"webpack://./scss/core/_aside.scss\",\"webpack://./scss/core/_variables.scss\",\"webpack://./scss/core/_mixins.scss\",\"webpack://./scss/core/_avatars.scss\",\"webpack://./scss/core/_badge.scss\",\"webpack://./scss/core/_breadcrumb-menu.scss\",\"webpack://./scss/core/_breadcrumb.scss\",\"webpack://./scss/core/_buttons.scss\",\"webpack://./scss/core/_callout.scss\",\"webpack://./scss/core/_card.scss\",\"webpack://./scss/core/_charts.scss\",\"webpack://./scss/core/_dropdown.scss\",\"webpack://./scss/core/_footer.scss\",\"webpack://./scss/core/_grid.scss\",\"webpack://./scss/core/_input-group.scss\",\"webpack://./scss/core/_loading.scss\",\"webpack://./scss/core/_modal.scss\",\"webpack://./scss/core/_nav.scss\",\"webpack://./scss/core/_navbar.scss\",\"webpack://./scss/core/_progress.scss\",\"webpack://./scss/core/_sidebar.scss\",\"webpack://./scss/core/_switches.scss\",\"webpack://./scss/core/_tables.scss\",\"webpack://./scss/core/_widgets.scss\",\"webpack://./scss/core/_layout.scss\",\"webpack://./scss/core/_others.scss\",\"webpack://./scss/core/utilities/_background.scss\",\"webpack://./scss/core/utilities/_borders.scss\",\"webpack://./scss/core/utilities/_display.scss\",\"webpack://./scss/core/_temp.scss\",\"webpack://./scss/core/_rtl.scss\",\"webpack://./scss/_custom.scss\"],\"names\":[],\"mappings\":\"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A,CAGF,4DAEE,UrBJW,CqBKX,8BAAA,CAGF,+JAGE,UAAA,CACA,qBrBZW,CqBaX,iBrBbW,CqBeX,iLAKI,wCAAA,CDzBN,uBCPA,arBYa,CqBXb,oBrBWa,CGhEb,6BkBwDE,UALgD,CAMhD,wBrBOW,CqBNX,oBrBMW,CqBHb,0DAEE,wCAAA,CAGF,gEAEE,arBJW,CqBKX,8BAAA,CAGF,qKAGE,UAAA,CACA,wBrBZW,CqBaX,oBrBbW,CqBeX,uLAKI,wCAAA,CDzBN,qBCPA,arBYa,CqBXb,oBrBWa,CGhEb,2BkBwDE,UALgD,CAMhD,wBrBOW,CqBNX,oBrBMW,CqBHb,sDAEE,0CAAA,CAGF,4DAEE,arBJW,CqBKX,8BAAA,CAGF,+JAGE,UAAA,CACA,wBrBZW,CqBaX,oBrBbW,CqBeX,iLAKI,0CAAA,CDzBN,kBCPA,arBYa,CqBXb,oBrBWa,CGhEb,wBkBwDE,aALgD,CAMhD,wBrBOW,CqBNX,oBrBMW,CqBHb,gDAEE,0CAAA,CAGF,sDAEE,arBJW,CqBKX,8BAAA,CAGF,sJAGE,aAAA,CACA,wBrBZW,CqBaX,oBrBbW,CqBeX,wKAKI,0CAAA,CDzBN,qBCPA,UrBYa,CqBXb,iBrBWa,CGhEb,2BkBwDE,aALgD,CAMhD,qBrBOW,CqBNX,iBrBMW,CqBHb,sDAEE,yCAAA,CAGF,4DAEE,UrBJW,CqBKX,8BAAA,CAGF,+JAGE,aAAA,CACA,qBrBZW,CqBaX,iBrBbW,CqBeX,iLAKI,yCAAA,CDzBN,oBCPA,arBYa,CqBXb,oBrBWa,CGhEb,0BkBwDE,UALgD,CAMhD,wBrBOW,CqBNX,oBrBMW,CqBHb,oDAEE,2CAAA,CAGF,0DAEE,arBJW,CqBKX,8BAAA,CAGF,4JAGE,UAAA,CACA,wBrBZW,CqBaX,oBrBbW,CqBeX,8KAKI,2CAAA,CDzBN,mBCPA,arBYa,CqBXb,oBrBWa,CGhEb,yBkBwDE,aALgD,CAMhD,wBrBOW,CqBNX,oBrBMW,CqBHb,kDAEE,2CAAA,CAGF,wDAEE,arBJW,CqBKX,8BAAA,CAGF,yJAGE,aAAA,CACA,wBrBZW,CqBaX,oBrBbW,CqBeX,2KAKI,2CAAA,CDzBN,kBCPA,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sC,C4BvJtC,sBAAA,CACA,eAAA,CAEA,e5BhE4B,C4BiE5B,e5B5D4B,C4B6D5B,a1BrVS,C0BsVT,qB1B7VM,C0B8VN,wBAAA,CpBlVE,oBAAA,CoBsVF,0BACE,iBAAA,CACA,KAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,aAAA,CACA,4B5BiIoC,C4BhIpC,sBAAA,CACA,e5B5E0B,C4B6E1B,a1BrWO,C0BsWP,gBAAA,CT7WA,wBjBCO,C0B8WP,mBAAA,CpBnWA,+BAAA,CoB8WJ,cACE,UAAA,CACA,aAAA,CACA,SAAA,CACA,8BAAA,CACA,eAAA,CAEA,oBACE,SAAA,CAIA,0CAAA,2D5BoOyC,C4BnOzC,sCAAA,2D5BmOyC,C4BlOzC,+BAAA,2D5BkOyC,C4B/N3C,gCACE,QAAA,CAGF,oCACE,U5BoNyC,C4BnNzC,W5BmNyC,C4BlNzC,mBAAA,CTlZA,qBnBoP0B,C4BgK1B,Q5BmNyC,CQ3lBzC,kBAAA,CSFE,sGW6YF,CACA,eAAA,CX1YE,uCWiYJ,oCXhYM,eAAA,CAAA,CW2YJ,2CT1ZA,kCnB4mByC,C4B7M3C,6CACE,U5B6LgC,C4B5LhC,Y5B6LgC,C4B5LhC,mBAAA,CACA,c5B4LgC,C4B3LhC,wB1BjaO,C0BkaP,0BAAA,CpBzZA,kBAAA,CoB8ZF,gCACE,U5ByLyC,C4BxLzC,W5BwLyC,CmBpmBzC,qBnBoP0B,C4B0L1B,Q5ByLyC,CQ3lBzC,kBAAA,CSFE,sGWuaF,CACA,eAAA,CXpaE,uCW4ZJ,gCX3ZM,eAAA,CAAA,CWqaJ,uCTpbA,kCnB4mByC,C4BnL3C,gCACE,U5BmKgC,C4BlKhC,Y5BmKgC,C4BlKhC,mBAAA,CACA,c5BkKgC,C4BjKhC,wB1B3bO,C0B4bP,0BAAA,CpBnbA,kBAAA,CoBwbF,yBACE,U5B+JyC,C4B9JzC,W5B8JyC,C4B7JzC,YAAA,CACA,kB5BrE0B,C4BsE1B,iB5BtE0B,CmBnY1B,qBnBoP0B,C4BuN1B,Q5B4JyC,CQ3lBzC,kBAAA,CSFE,sGWocF,CACA,eAAA,CXjcE,uCWsbJ,yBXrbM,eAAA,CAAA,CWkcJ,gCTjdA,kCnB4mByC,C4BtJ3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,uCDyIkE,CCxIlE,mCDwIkE,CCrJxE,yBACE,4BDoJsE,CCnJtE,0CDmJuC,CvCxIzC,4GwCPM,4BD+IkE,CC9IlE,kEAAA,CAGF,uDACE,UzCRA,CyCSA,uCDyIkE,CCxIlE,mCDwIkE,CCrJxE,sBACE,8BDoJsE,CCnJtE,0CDmJuC,CvCxIzC,sGwCPM,8BD+IkE,CC9IlE,kEAAA,CAGF,oDACE,UzCRA,CyCSA,yCDyIkE,CCxIlE,qCDwIkE,CCrJxE,yBACE,sBDoJsE,CCnJtE,iCDmJuC,CvCxIzC,4GwCPM,sBD+IkE,CC9IlE,iCAAA,CAGF,uDACE,UzCRA,CyCSA,iCDyIkE,CCxIlE,6BDwIkE,CCrJxE,wBACE,6BDoJsE,CCnJtE,0CDmJuC,CvCxIzC,0GwCPM,6BD+IkE,CC9IlE,+DAAA,CAGF,sDACE,UzCRA,CyCSA,wCDyIkE,CCxIlE,oCDwIkE,CCrJxE,uBACE,+BDoJsE,CCnJtE,0CDmJuC,CvCxIzC,wGwCPM,+BD+IkE,CC9IlE,0CAAA,CAGF,qDACE,UzCRA,CyCSA,0CDyIkE,CCxIlE,sCDwIkE,CCrJxE,sBACE,4BDoJsE,CCnJtE,0CDmJuC,CvCxIzC,sGwCPM,4BD+IkE,CC9IlE,6CAAA,CAGF,oDACE,UzCRA,CyCSA,uCDyIkE,CCxIlE,mCDwIkE,CExJ1E,OACE,WAAA,C3CmLI,mBAAA,C2CjLJ,e5C8R4B,C4C7R5B,aAAA,CACA,U1CWM,C0CVN,wB5CylCkC,C4CxlClC,UAAA,CzCKA,ayCDE,U1CKI,C0CJJ,oBAAA,CzCIF,sFyCCI,WAAA,CAWN,aACE,SAAA,CACA,8BAAA,CACA,QAAA,CAMF,iBACE,mBAAA,CCtCF,OAGE,gB7C24BkC,C6C14BlC,e7C04BkC,CC1tB9B,kBAAA,C4C7KJ,oC7C44BkC,C6C34BlC,2BAAA,CACA,+BAAA,CACA,yC7C64BkC,C6C54BlC,SAAA,CrCOE,oBAAA,CqCJF,wBACE,oB7Cg4BgC,C6C73BlC,eACE,SAAA,CAGF,YACE,aAAA,CACA,SAAA,CAGF,YACE,YAAA,CAIJ,cACE,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,a3CxBS,C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\",\"sourcesContent\":[\"/*!\\n * CoreUI - Open Source Bootstrap Admin Template\\n * @version v1.0.6\\n * @link http://coreui.io\\n * Copyright (c) 2017 creativeLabs Łukasz Holeczek\\n * @license MIT\\n */\\n\\n// Override Boostrap variables\\n@import 'bootstrap-variables';\\n\\n// Import Bootstrap source files\\n@import '~bootstrap/scss/bootstrap';\\n\\n// Override core variables\\n@import 'core-variables';\\n\\n// Import core styles\\n@import 'core/core';\\n\\n// Custom styles\\n@import 'custom';\\n\",\":root {\\n // Custom variable values only support SassScript inside `#{}`.\\n @each $color, $value in $colors {\\n --#{$color}: #{$value};\\n }\\n\\n @each $color, $value in $theme-colors {\\n --#{$color}: #{$value};\\n }\\n\\n @each $bp, $value in $grid-breakpoints {\\n --breakpoint-#{$bp}: #{$value};\\n }\\n\\n // Use `inspect` for lists so that quoted items keep the quotes.\\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\\n --font-family-sans-serif: #{inspect($font-family-sans-serif)};\\n --font-family-monospace: #{inspect($font-family-monospace)};\\n}\\n\",\"// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\\n\\n// Reboot\\n//\\n// Normalization of HTML elements, manually forked from Normalize.css to remove\\n// styles targeting irrelevant browsers while applying new styles.\\n//\\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\\n\\n\\n// Document\\n//\\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\\n// 2. Change the default font family in all browsers.\\n// 3. Correct the line height in all browsers.\\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\\n// 5. Change the default tap highlight to be completely transparent in iOS.\\n\\n*,\\n*::before,\\n*::after {\\n box-sizing: border-box; // 1\\n}\\n\\nhtml {\\n font-family: sans-serif; // 2\\n line-height: 1.15; // 3\\n -webkit-text-size-adjust: 100%; // 4\\n -webkit-tap-highlight-color: rgba($black, 0); // 5\\n}\\n\\n// Shim for \\\"new\\\" HTML5 structural elements to display correctly (IE10, older browsers)\\n// TODO: remove in v5\\n// stylelint-disable-next-line selector-list-comma-newline-after\\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\\n display: block;\\n}\\n\\n// Body\\n//\\n// 1. Remove the margin in all browsers.\\n// 2. As a best practice, apply a default `background-color`.\\n// 3. Set an explicit initial text-align value so that we can later use\\n// the `inherit` value on things like `<th>` elements.\\n\\nbody {\\n margin: 0; // 1\\n font-family: $font-family-base;\\n @include font-size($font-size-base);\\n font-weight: $font-weight-base;\\n line-height: $line-height-base;\\n color: $body-color;\\n text-align: left; // 3\\n background-color: $body-bg; // 2\\n}\\n\\n// Future-proof rule: in browsers that support :focus-visible, suppress the focus outline\\n// on elements that programmatically receive focus but wouldn't normally show a visible\\n// focus outline. In general, this would mean that the outline is only applied if the\\n// interaction that led to the element receiving programmatic focus was a keyboard interaction,\\n// or the browser has somehow determined that the user is primarily a keyboard user and/or\\n// wants focus outlines to always be presented.\\n//\\n// See https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-visible\\n// and https://developer.paciellogroup.com/blog/2018/03/focus-visible-and-backwards-compatibility/\\n[tabindex=\\\"-1\\\"]:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n\\n\\n// Content grouping\\n//\\n// 1. Add the correct box sizing in Firefox.\\n// 2. Show the overflow in Edge and IE.\\n\\nhr {\\n box-sizing: content-box; // 1\\n height: 0; // 1\\n overflow: visible; // 2\\n}\\n\\n\\n//\\n// Typography\\n//\\n\\n// Remove top margins from headings\\n//\\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\\n// margin for easier control within type scales as it avoids margin collapsing.\\n// stylelint-disable-next-line selector-list-comma-newline-after\\nh1, h2, h3, h4, h5, h6 {\\n margin-top: 0;\\n margin-bottom: $headings-margin-bottom;\\n}\\n\\n// Reset margins on paragraphs\\n//\\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\\n// bottom margin to use `rem` units instead of `em`.\\np {\\n margin-top: 0;\\n margin-bottom: $paragraph-margin-bottom;\\n}\\n\\n// Abbreviations\\n//\\n// 1. Duplicate behavior to the data-* attribute for our tooltip plugin\\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n// 3. Add explicit cursor to indicate changed behavior.\\n// 4. Remove the bottom border in Firefox 39-.\\n// 5. Prevent the text-decoration to be skipped.\\n\\nabbr[title],\\nabbr[data-original-title] { // 1\\n text-decoration: underline; // 2\\n text-decoration: underline dotted; // 2\\n cursor: help; // 3\\n border-bottom: 0; // 4\\n text-decoration-skip-ink: none; // 5\\n}\\n\\naddress {\\n margin-bottom: 1rem;\\n font-style: normal;\\n line-height: inherit;\\n}\\n\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 1rem;\\n}\\n\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\n\\ndt {\\n font-weight: $dt-font-weight;\\n}\\n\\ndd {\\n margin-bottom: .5rem;\\n margin-left: 0; // Undo browser default\\n}\\n\\nblockquote {\\n margin: 0 0 1rem;\\n}\\n\\nb,\\nstrong {\\n font-weight: $font-weight-bolder; // Add the correct font weight in Chrome, Edge, and Safari\\n}\\n\\nsmall {\\n @include font-size(80%); // Add the correct font size in all browsers\\n}\\n\\n//\\n// Prevent `sub` and `sup` elements from affecting the line height in\\n// all browsers.\\n//\\n\\nsub,\\nsup {\\n position: relative;\\n @include font-size(75%);\\n line-height: 0;\\n vertical-align: baseline;\\n}\\n\\nsub { bottom: -.25em; }\\nsup { top: -.5em; }\\n\\n\\n//\\n// Links\\n//\\n\\na {\\n color: $link-color;\\n text-decoration: $link-decoration;\\n background-color: transparent; // Remove the gray background on active links in IE 10.\\n\\n @include hover() {\\n color: $link-hover-color;\\n text-decoration: $link-hover-decoration;\\n }\\n}\\n\\n// And undo these styles for placeholder links/named anchors (without href).\\n// It would be more straightforward to just use a[href] in previous block, but that\\n// causes specificity issues in many other styles that are too complex to fix.\\n// See https://github.com/twbs/bootstrap/issues/19402\\n\\na:not([href]):not([class]) {\\n color: inherit;\\n text-decoration: none;\\n\\n @include hover() {\\n color: inherit;\\n text-decoration: none;\\n }\\n}\\n\\n\\n//\\n// Code\\n//\\n\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-family: $font-family-monospace;\\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\\n}\\n\\npre {\\n // Remove browser default top margin\\n margin-top: 0;\\n // Reset browser default of `1em` to use `rem`s\\n margin-bottom: 1rem;\\n // Don't allow content to break outside\\n overflow: auto;\\n // Disable auto-hiding scrollbar in IE & legacy Edge to avoid overlap,\\n // making it impossible to interact with the content\\n -ms-overflow-style: scrollbar;\\n}\\n\\n\\n//\\n// Figures\\n//\\n\\nfigure {\\n // Apply a consistent margin strategy (matches our type styles).\\n margin: 0 0 1rem;\\n}\\n\\n\\n//\\n// Images and content\\n//\\n\\nimg {\\n vertical-align: middle;\\n border-style: none; // Remove the border on images inside links in IE 10-.\\n}\\n\\nsvg {\\n // Workaround for the SVG overflow bug in IE10/11 is still required.\\n // See https://github.com/twbs/bootstrap/issues/26878\\n overflow: hidden;\\n vertical-align: middle;\\n}\\n\\n\\n//\\n// Tables\\n//\\n\\ntable {\\n border-collapse: collapse; // Prevent double borders\\n}\\n\\ncaption {\\n padding-top: $table-cell-padding;\\n padding-bottom: $table-cell-padding;\\n color: $table-caption-color;\\n text-align: left;\\n caption-side: bottom;\\n}\\n\\n// 1. Removes font-weight bold by inheriting\\n// 2. Matches default `<td>` alignment by inheriting `text-align`.\\n// 3. Fix alignment for Safari\\n\\nth {\\n font-weight: $table-th-font-weight; // 1\\n text-align: inherit; // 2\\n text-align: -webkit-match-parent; // 3\\n}\\n\\n\\n//\\n// Forms\\n//\\n\\nlabel {\\n // Allow labels to use `margin` for spacing.\\n display: inline-block;\\n margin-bottom: $label-margin-bottom;\\n}\\n\\n// Remove the default `border-radius` that macOS Chrome adds.\\n//\\n// Details at https://github.com/twbs/bootstrap/issues/24093\\nbutton {\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: 0;\\n}\\n\\n// Explicitly remove focus outline in Chromium when it shouldn't be\\n// visible (e.g. as result of mouse click or touch tap). It already\\n// should be doing this automatically, but seems to currently be\\n// confused and applies its very visible two-tone outline anyway.\\n\\nbutton:focus:not(:focus-visible) {\\n outline: 0;\\n}\\n\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0; // Remove the margin in Firefox and Safari\\n font-family: inherit;\\n @include font-size(inherit);\\n line-height: inherit;\\n}\\n\\nbutton,\\ninput {\\n overflow: visible; // Show the overflow in Edge\\n}\\n\\nbutton,\\nselect {\\n text-transform: none; // Remove the inheritance of text transform in Firefox\\n}\\n\\n// Set the cursor for non-`<button>` buttons\\n//\\n// Details at https://github.com/twbs/bootstrap/pull/30562\\n[role=\\\"button\\\"] {\\n cursor: pointer;\\n}\\n\\n// Remove the inheritance of word-wrap in Safari.\\n//\\n// Details at https://github.com/twbs/bootstrap/issues/24990\\nselect {\\n word-wrap: normal;\\n}\\n\\n\\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\\n// controls in Android 4.\\n// 2. Correct the inability to style clickable types in iOS and Safari.\\nbutton,\\n[type=\\\"button\\\"], // 1\\n[type=\\\"reset\\\"],\\n[type=\\\"submit\\\"] {\\n -webkit-appearance: button; // 2\\n}\\n\\n// Opinionated: add \\\"hand\\\" cursor to non-disabled button elements.\\n@if $enable-pointer-cursor-for-buttons {\\n button,\\n [type=\\\"button\\\"],\\n [type=\\\"reset\\\"],\\n [type=\\\"submit\\\"] {\\n &:not(:disabled) {\\n cursor: pointer;\\n }\\n }\\n}\\n\\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\\nbutton::-moz-focus-inner,\\n[type=\\\"button\\\"]::-moz-focus-inner,\\n[type=\\\"reset\\\"]::-moz-focus-inner,\\n[type=\\\"submit\\\"]::-moz-focus-inner {\\n padding: 0;\\n border-style: none;\\n}\\n\\ninput[type=\\\"radio\\\"],\\ninput[type=\\\"checkbox\\\"] {\\n box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\\n padding: 0; // 2. Remove the padding in IE 10-\\n}\\n\\n\\ntextarea {\\n overflow: auto; // Remove the default vertical scrollbar in IE.\\n // Textareas should really only resize vertically so they don't break their (horizontal) containers.\\n resize: vertical;\\n}\\n\\nfieldset {\\n // Browsers set a default `min-width: min-content;` on fieldsets,\\n // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\\n // So we reset that to ensure fieldsets behave more like a standard block element.\\n // See https://github.com/twbs/bootstrap/issues/12359\\n // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\\n min-width: 0;\\n // Reset the default outline behavior of fieldsets so they don't affect page layout.\\n padding: 0;\\n margin: 0;\\n border: 0;\\n}\\n\\n// 1. Correct the text wrapping in Edge and IE.\\n// 2. Correct the color inheritance from `fieldset` elements in IE.\\nlegend {\\n display: block;\\n width: 100%;\\n max-width: 100%; // 1\\n padding: 0;\\n margin-bottom: .5rem;\\n @include font-size(1.5rem);\\n line-height: inherit;\\n color: inherit; // 2\\n white-space: normal; // 1\\n}\\n\\nprogress {\\n vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n}\\n\\n// Correct the cursor style of increment and decrement buttons in Chrome.\\n[type=\\\"number\\\"]::-webkit-inner-spin-button,\\n[type=\\\"number\\\"]::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n[type=\\\"search\\\"] {\\n // This overrides the extra rounded corners on search inputs in iOS so that our\\n // `.form-control` class can properly style them. Note that this cannot simply\\n // be added to `.form-control` as it's not specific enough. For details, see\\n // https://github.com/twbs/bootstrap/issues/11586.\\n outline-offset: -2px; // 2. Correct the outline style in Safari.\\n -webkit-appearance: none;\\n}\\n\\n//\\n// Remove the inner padding in Chrome and Safari on macOS.\\n//\\n\\n[type=\\\"search\\\"]::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n//\\n// 1. Correct the inability to style clickable types in iOS and Safari.\\n// 2. Change font properties to `inherit` in Safari.\\n//\\n\\n::-webkit-file-upload-button {\\n font: inherit; // 2\\n -webkit-appearance: button; // 1\\n}\\n\\n//\\n// Correct element displays\\n//\\n\\noutput {\\n display: inline-block;\\n}\\n\\nsummary {\\n display: list-item; // Add the correct display in all browsers\\n cursor: pointer;\\n}\\n\\ntemplate {\\n display: none; // Add the correct display in IE\\n}\\n\\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\\n// Needed for proper display in IE 10-.\\n[hidden] {\\n display: none !important;\\n}\\n\",\"// Variables\\n//\\n// Variables should follow the `$component-state-property-size` formula for\\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\\n\\n// Color system\\n\\n$white: #fff !default;\\n$gray-100: #f8f9fa !default;\\n$gray-200: #e9ecef !default;\\n$gray-300: #dee2e6 !default;\\n$gray-400: #ced4da !default;\\n$gray-500: #adb5bd !default;\\n$gray-600: #6c757d !default;\\n$gray-700: #495057 !default;\\n$gray-800: #343a40 !default;\\n$gray-900: #212529 !default;\\n$black: #000 !default;\\n\\n$grays: () !default;\\n$grays: map-merge(\\n (\\n \\\"100\\\": $gray-100,\\n \\\"200\\\": $gray-200,\\n \\\"300\\\": $gray-300,\\n \\\"400\\\": $gray-400,\\n \\\"500\\\": $gray-500,\\n \\\"600\\\": $gray-600,\\n \\\"700\\\": $gray-700,\\n \\\"800\\\": $gray-800,\\n \\\"900\\\": $gray-900\\n ),\\n $grays\\n);\\n\\n$blue: #007bff !default;\\n$indigo: #6610f2 !default;\\n$purple: #6f42c1 !default;\\n$pink: #e83e8c !default;\\n$red: #dc3545 !default;\\n$orange: #fd7e14 !default;\\n$yellow: #ffc107 !default;\\n$green: #28a745 !default;\\n$teal: #20c997 !default;\\n$cyan: #17a2b8 !default;\\n\\n$colors: () !default;\\n$colors: map-merge(\\n (\\n \\\"blue\\\": $blue,\\n \\\"indigo\\\": $indigo,\\n \\\"purple\\\": $purple,\\n \\\"pink\\\": $pink,\\n \\\"red\\\": $red,\\n \\\"orange\\\": $orange,\\n \\\"yellow\\\": $yellow,\\n \\\"green\\\": $green,\\n \\\"teal\\\": $teal,\\n \\\"cyan\\\": $cyan,\\n \\\"white\\\": $white,\\n \\\"gray\\\": $gray-600,\\n \\\"gray-dark\\\": $gray-800\\n ),\\n $colors\\n);\\n\\n$primary: $blue !default;\\n$secondary: $gray-600 !default;\\n$success: $green !default;\\n$info: $cyan !default;\\n$warning: $yellow !default;\\n$danger: $red !default;\\n$light: $gray-100 !default;\\n$dark: $gray-800 !default;\\n\\n$theme-colors: () !default;\\n$theme-colors: map-merge(\\n (\\n \\\"primary\\\": $primary,\\n \\\"secondary\\\": $secondary,\\n \\\"success\\\": $success,\\n \\\"info\\\": $info,\\n \\\"warning\\\": $warning,\\n \\\"danger\\\": $danger,\\n \\\"light\\\": $light,\\n \\\"dark\\\": $dark\\n ),\\n $theme-colors\\n);\\n\\n// Set a specific jump point for requesting color jumps\\n$theme-color-interval: 8% !default;\\n\\n// The yiq lightness value that determines when the lightness of color changes from \\\"dark\\\" to \\\"light\\\". Acceptable values are between 0 and 255.\\n$yiq-contrasted-threshold: 150 !default;\\n\\n// Customize the light and dark text colors for use in our YIQ color contrast function.\\n$yiq-text-dark: $gray-900 !default;\\n$yiq-text-light: $white !default;\\n\\n// Characters which are escaped by the escape-svg function\\n$escaped-characters: (\\n (\\\"<\\\", \\\"%3c\\\"),\\n (\\\">\\\", \\\"%3e\\\"),\\n (\\\"#\\\", \\\"%23\\\"),\\n (\\\"(\\\", \\\"%28\\\"),\\n (\\\")\\\", \\\"%29\\\"),\\n) !default;\\n\\n\\n// Options\\n//\\n// Quickly modify global styling by enabling or disabling optional features.\\n\\n$enable-caret: true !default;\\n$enable-rounded: true !default;\\n$enable-shadows: false !default;\\n$enable-gradients: false !default;\\n$enable-transitions: true !default;\\n$enable-prefers-reduced-motion-media-query: true !default;\\n$enable-hover-media-query: false !default; // Deprecated, no longer affects any compiled CSS\\n$enable-grid-classes: true !default;\\n$enable-pointer-cursor-for-buttons: true !default;\\n$enable-print-styles: true !default;\\n$enable-responsive-font-sizes: false !default;\\n$enable-validation-icons: true !default;\\n$enable-deprecation-messages: true !default;\\n\\n\\n// Spacing\\n//\\n// Control the default styling of most Bootstrap elements by modifying these\\n// variables. Mostly focused on spacing.\\n// You can add more entries to the $spacers map, should you need more variation.\\n\\n$spacer: 1rem !default;\\n$spacers: () !default;\\n$spacers: map-merge(\\n (\\n 0: 0,\\n 1: ($spacer * .25),\\n 2: ($spacer * .5),\\n 3: $spacer,\\n 4: ($spacer * 1.5),\\n 5: ($spacer * 3)\\n ),\\n $spacers\\n);\\n\\n// This variable affects the `.h-*` and `.w-*` classes.\\n$sizes: () !default;\\n$sizes: map-merge(\\n (\\n 25: 25%,\\n 50: 50%,\\n 75: 75%,\\n 100: 100%,\\n auto: auto\\n ),\\n $sizes\\n);\\n\\n\\n// Body\\n//\\n// Settings for the `<body>` element.\\n\\n$body-bg: $white !default;\\n$body-color: $gray-900 !default;\\n\\n\\n// Links\\n//\\n// Style anchor elements.\\n\\n$link-color: theme-color(\\\"primary\\\") !default;\\n$link-decoration: none !default;\\n$link-hover-color: darken($link-color, 15%) !default;\\n$link-hover-decoration: underline !default;\\n// Darken percentage for links with `.text-*` class (e.g. `.text-success`)\\n$emphasized-link-hover-darken-percentage: 15% !default;\\n\\n// Paragraphs\\n//\\n// Style p element.\\n\\n$paragraph-margin-bottom: 1rem !default;\\n\\n\\n// Grid breakpoints\\n//\\n// Define the minimum dimensions at which your layout will change,\\n// adapting to different screen sizes, for use in media queries.\\n\\n$grid-breakpoints: (\\n xs: 0,\\n sm: 576px,\\n md: 768px,\\n lg: 992px,\\n xl: 1200px\\n) !default;\\n\\n@include _assert-ascending($grid-breakpoints, \\\"$grid-breakpoints\\\");\\n@include _assert-starts-at-zero($grid-breakpoints, \\\"$grid-breakpoints\\\");\\n\\n\\n// Grid containers\\n//\\n// Define the maximum width of `.container` for different screen sizes.\\n\\n$container-max-widths: (\\n sm: 540px,\\n md: 720px,\\n lg: 960px,\\n xl: 1140px\\n) !default;\\n\\n@include _assert-ascending($container-max-widths, \\\"$container-max-widths\\\");\\n\\n\\n// Grid columns\\n//\\n// Set the number of columns and specify the width of the gutters.\\n\\n$grid-columns: 12 !default;\\n$grid-gutter-width: 30px !default;\\n$grid-row-columns: 6 !default;\\n\\n\\n// Components\\n//\\n// Define common padding and border radius sizes and more.\\n\\n$line-height-lg: 1.5 !default;\\n$line-height-sm: 1.5 !default;\\n\\n$border-width: 1px !default;\\n$border-color: $gray-300 !default;\\n\\n$border-radius: .25rem !default;\\n$border-radius-lg: .3rem !default;\\n$border-radius-sm: .2rem !default;\\n\\n$rounded-pill: 50rem !default;\\n\\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\\n\\n$component-active-color: $white !default;\\n$component-active-bg: theme-color(\\\"primary\\\") !default;\\n\\n$caret-width: .3em !default;\\n$caret-vertical-align: $caret-width * .85 !default;\\n$caret-spacing: $caret-width * .85 !default;\\n\\n$transition-base: all .2s ease-in-out !default;\\n$transition-fade: opacity .15s linear !default;\\n$transition-collapse: height .35s ease !default;\\n$transition-collapse-width: width .35s ease !default;\\n\\n$embed-responsive-aspect-ratios: () !default;\\n$embed-responsive-aspect-ratios: join(\\n (\\n (21 9),\\n (16 9),\\n (4 3),\\n (1 1),\\n ),\\n $embed-responsive-aspect-ratios\\n);\\n\\n// Typography\\n//\\n// Font, line-height, and color for body text, headings, and more.\\n\\n// stylelint-disable value-keyword-case\\n$font-family-sans-serif: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, \\\"Helvetica Neue\\\", Arial, \\\"Noto Sans\\\", \\\"Liberation Sans\\\", sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\" !default;\\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace !default;\\n$font-family-base: $font-family-sans-serif !default;\\n// stylelint-enable value-keyword-case\\n\\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\\n$font-size-lg: $font-size-base * 1.25 !default;\\n$font-size-sm: $font-size-base * .875 !default;\\n\\n$font-weight-lighter: lighter !default;\\n$font-weight-light: 300 !default;\\n$font-weight-normal: 400 !default;\\n$font-weight-bold: 700 !default;\\n$font-weight-bolder: bolder !default;\\n\\n$font-weight-base: $font-weight-normal !default;\\n$line-height-base: 1.5 !default;\\n\\n$h1-font-size: $font-size-base * 2.5 !default;\\n$h2-font-size: $font-size-base * 2 !default;\\n$h3-font-size: $font-size-base * 1.75 !default;\\n$h4-font-size: $font-size-base * 1.5 !default;\\n$h5-font-size: $font-size-base * 1.25 !default;\\n$h6-font-size: $font-size-base !default;\\n\\n$headings-margin-bottom: $spacer * .5 !default;\\n$headings-font-family: null !default;\\n$headings-font-weight: 500 !default;\\n$headings-line-height: 1.2 !default;\\n$headings-color: null !default;\\n\\n$display1-size: 6rem !default;\\n$display2-size: 5.5rem !default;\\n$display3-size: 4.5rem !default;\\n$display4-size: 3.5rem !default;\\n\\n$display1-weight: 300 !default;\\n$display2-weight: 300 !default;\\n$display3-weight: 300 !default;\\n$display4-weight: 300 !default;\\n$display-line-height: $headings-line-height !default;\\n\\n$lead-font-size: $font-size-base * 1.25 !default;\\n$lead-font-weight: 300 !default;\\n\\n$small-font-size: .875em !default;\\n\\n$text-muted: $gray-600 !default;\\n\\n$blockquote-small-color: $gray-600 !default;\\n$blockquote-small-font-size: $small-font-size !default;\\n$blockquote-font-size: $font-size-base * 1.25 !default;\\n\\n$hr-border-color: rgba($black, .1) !default;\\n$hr-border-width: $border-width !default;\\n\\n$mark-padding: .2em !default;\\n\\n$dt-font-weight: $font-weight-bold !default;\\n\\n$kbd-box-shadow: inset 0 -.1rem 0 rgba($black, .25) !default;\\n$nested-kbd-font-weight: $font-weight-bold !default;\\n\\n$list-inline-padding: .5rem !default;\\n\\n$mark-bg: #fcf8e3 !default;\\n\\n$hr-margin-y: $spacer !default;\\n\\n\\n// Tables\\n//\\n// Customizes the `.table` component with basic values, each used across all table variations.\\n\\n$table-cell-padding: .75rem !default;\\n$table-cell-padding-sm: .3rem !default;\\n\\n$table-color: $body-color !default;\\n$table-bg: null !default;\\n$table-accent-bg: rgba($black, .05) !default;\\n$table-hover-color: $table-color !default;\\n$table-hover-bg: rgba($black, .075) !default;\\n$table-active-bg: $table-hover-bg !default;\\n\\n$table-border-width: $border-width !default;\\n$table-border-color: $border-color !default;\\n\\n$table-head-bg: $gray-200 !default;\\n$table-head-color: $gray-700 !default;\\n$table-th-font-weight: null !default;\\n\\n$table-dark-color: $white !default;\\n$table-dark-bg: $gray-800 !default;\\n$table-dark-accent-bg: rgba($white, .05) !default;\\n$table-dark-hover-color: $table-dark-color !default;\\n$table-dark-hover-bg: rgba($white, .075) !default;\\n$table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;\\n\\n$table-striped-order: odd !default;\\n\\n$table-caption-color: $text-muted !default;\\n\\n$table-bg-level: -9 !default;\\n$table-border-level: -6 !default;\\n\\n\\n// Buttons + Forms\\n//\\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\\n\\n$input-btn-padding-y: .375rem !default;\\n$input-btn-padding-x: .75rem !default;\\n$input-btn-font-family: null !default;\\n$input-btn-font-size: $font-size-base !default;\\n$input-btn-line-height: $line-height-base !default;\\n\\n$input-btn-focus-width: .2rem !default;\\n$input-btn-focus-color: rgba($component-active-bg, .25) !default;\\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\\n\\n$input-btn-padding-y-sm: .25rem !default;\\n$input-btn-padding-x-sm: .5rem !default;\\n$input-btn-font-size-sm: $font-size-sm !default;\\n$input-btn-line-height-sm: $line-height-sm !default;\\n\\n$input-btn-padding-y-lg: .5rem !default;\\n$input-btn-padding-x-lg: 1rem !default;\\n$input-btn-font-size-lg: $font-size-lg !default;\\n$input-btn-line-height-lg: $line-height-lg !default;\\n\\n$input-btn-border-width: $border-width !default;\\n\\n\\n// Buttons\\n//\\n// For each of Bootstrap's buttons, define text, background, and border color.\\n\\n$btn-padding-y: $input-btn-padding-y !default;\\n$btn-padding-x: $input-btn-padding-x !default;\\n$btn-font-family: $input-btn-font-family !default;\\n$btn-font-size: $input-btn-font-size !default;\\n$btn-line-height: $input-btn-line-height !default;\\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\\n\\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\\n$btn-font-size-sm: $input-btn-font-size-sm !default;\\n$btn-line-height-sm: $input-btn-line-height-sm !default;\\n\\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\\n$btn-font-size-lg: $input-btn-font-size-lg !default;\\n$btn-line-height-lg: $input-btn-line-height-lg !default;\\n\\n$btn-border-width: $input-btn-border-width !default;\\n\\n$btn-font-weight: $font-weight-normal !default;\\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\\n$btn-focus-width: $input-btn-focus-width !default;\\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\\n$btn-disabled-opacity: .65 !default;\\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\\n\\n$btn-link-disabled-color: $gray-600 !default;\\n\\n$btn-block-spacing-y: .5rem !default;\\n\\n// Allows for customizing button radius independently from global border radius\\n$btn-border-radius: $border-radius !default;\\n$btn-border-radius-lg: $border-radius-lg !default;\\n$btn-border-radius-sm: $border-radius-sm !default;\\n\\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\\n\\n\\n// Forms\\n\\n$label-margin-bottom: .5rem !default;\\n\\n$input-padding-y: $input-btn-padding-y !default;\\n$input-padding-x: $input-btn-padding-x !default;\\n$input-font-family: $input-btn-font-family !default;\\n$input-font-size: $input-btn-font-size !default;\\n$input-font-weight: $font-weight-base !default;\\n$input-line-height: $input-btn-line-height !default;\\n\\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\\n$input-font-size-sm: $input-btn-font-size-sm !default;\\n$input-line-height-sm: $input-btn-line-height-sm !default;\\n\\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\\n$input-font-size-lg: $input-btn-font-size-lg !default;\\n$input-line-height-lg: $input-btn-line-height-lg !default;\\n\\n$input-bg: $white !default;\\n$input-disabled-bg: $gray-200 !default;\\n\\n$input-color: $gray-700 !default;\\n$input-border-color: $gray-400 !default;\\n$input-border-width: $input-btn-border-width !default;\\n$input-box-shadow: inset 0 1px 1px rgba($black, .075) !default;\\n\\n$input-border-radius: $border-radius !default;\\n$input-border-radius-lg: $border-radius-lg !default;\\n$input-border-radius-sm: $border-radius-sm !default;\\n\\n$input-focus-bg: $input-bg !default;\\n$input-focus-border-color: lighten($component-active-bg, 25%) !default;\\n$input-focus-color: $input-color !default;\\n$input-focus-width: $input-btn-focus-width !default;\\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\\n\\n$input-placeholder-color: $gray-600 !default;\\n$input-plaintext-color: $body-color !default;\\n\\n$input-height-border: $input-border-width * 2 !default;\\n\\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\\n\\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\\n$input-height-sm: add($input-line-height-sm * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\\n$input-height-lg: add($input-line-height-lg * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\\n\\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\\n\\n$form-text-margin-top: .25rem !default;\\n\\n$form-check-input-gutter: 1.25rem !default;\\n$form-check-input-margin-y: .3rem !default;\\n$form-check-input-margin-x: .25rem !default;\\n\\n$form-check-inline-margin-x: .75rem !default;\\n$form-check-inline-input-margin-x: .3125rem !default;\\n\\n$form-grid-gutter-width: 10px !default;\\n$form-group-margin-bottom: 1rem !default;\\n\\n$input-group-addon-color: $input-color !default;\\n$input-group-addon-bg: $gray-200 !default;\\n$input-group-addon-border-color: $input-border-color !default;\\n\\n$custom-forms-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\\n\\n$custom-control-gutter: .5rem !default;\\n$custom-control-spacer-x: 1rem !default;\\n$custom-control-cursor: null !default;\\n\\n$custom-control-indicator-size: 1rem !default;\\n$custom-control-indicator-bg: $input-bg !default;\\n\\n$custom-control-indicator-bg-size: 50% 50% !default;\\n$custom-control-indicator-box-shadow: $input-box-shadow !default;\\n$custom-control-indicator-border-color: $gray-500 !default;\\n$custom-control-indicator-border-width: $input-border-width !default;\\n\\n$custom-control-label-color: null !default;\\n\\n$custom-control-indicator-disabled-bg: $input-disabled-bg !default;\\n$custom-control-label-disabled-color: $gray-600 !default;\\n\\n$custom-control-indicator-checked-color: $component-active-color !default;\\n$custom-control-indicator-checked-bg: $component-active-bg !default;\\n$custom-control-indicator-checked-disabled-bg: rgba(theme-color(\\\"primary\\\"), .5) !default;\\n$custom-control-indicator-checked-box-shadow: null !default;\\n$custom-control-indicator-checked-border-color: $custom-control-indicator-checked-bg !default;\\n\\n$custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default;\\n$custom-control-indicator-focus-border-color: $input-focus-border-color !default;\\n\\n$custom-control-indicator-active-color: $component-active-color !default;\\n$custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;\\n$custom-control-indicator-active-box-shadow: null !default;\\n$custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;\\n\\n$custom-checkbox-indicator-border-radius: $border-radius !default;\\n$custom-checkbox-indicator-icon-checked: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/></svg>\\\") !default;\\n\\n$custom-checkbox-indicator-indeterminate-bg: $component-active-bg !default;\\n$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\\n$custom-checkbox-indicator-icon-indeterminate: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'><path stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/></svg>\\\") !default;\\n$custom-checkbox-indicator-indeterminate-box-shadow: null !default;\\n$custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicator-indeterminate-bg !default;\\n\\n$custom-radio-indicator-border-radius: 50% !default;\\n$custom-radio-indicator-icon-checked: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'><circle r='3' fill='#{$custom-control-indicator-checked-color}'/></svg>\\\") !default;\\n\\n$custom-switch-width: $custom-control-indicator-size * 1.75 !default;\\n$custom-switch-indicator-border-radius: $custom-control-indicator-size * .5 !default;\\n$custom-switch-indicator-size: subtract($custom-control-indicator-size, $custom-control-indicator-border-width * 4) !default;\\n\\n$custom-select-padding-y: $input-padding-y !default;\\n$custom-select-padding-x: $input-padding-x !default;\\n$custom-select-font-family: $input-font-family !default;\\n$custom-select-font-size: $input-font-size !default;\\n$custom-select-height: $input-height !default;\\n$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\\n$custom-select-font-weight: $input-font-weight !default;\\n$custom-select-line-height: $input-line-height !default;\\n$custom-select-color: $input-color !default;\\n$custom-select-disabled-color: $gray-600 !default;\\n$custom-select-bg: $input-bg !default;\\n$custom-select-disabled-bg: $gray-200 !default;\\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\\n$custom-select-indicator-color: $gray-800 !default;\\n$custom-select-indicator: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'><path fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>\\\") !default;\\n$custom-select-background: escape-svg($custom-select-indicator) right $custom-select-padding-x center / $custom-select-bg-size no-repeat !default; // Used so we can have multiple background elements (e.g., arrow and feedback icon)\\n\\n$custom-select-feedback-icon-padding-right: add(1em * .75, (2 * $custom-select-padding-y * .75) + $custom-select-padding-x + $custom-select-indicator-padding) !default;\\n$custom-select-feedback-icon-position: center right ($custom-select-padding-x + $custom-select-indicator-padding) !default;\\n$custom-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\\n\\n$custom-select-border-width: $input-border-width !default;\\n$custom-select-border-color: $input-border-color !default;\\n$custom-select-border-radius: $border-radius !default;\\n$custom-select-box-shadow: inset 0 1px 2px rgba($black, .075) !default;\\n\\n$custom-select-focus-border-color: $input-focus-border-color !default;\\n$custom-select-focus-width: $input-focus-width !default;\\n$custom-select-focus-box-shadow: 0 0 0 $custom-select-focus-width $input-btn-focus-color !default;\\n\\n$custom-select-padding-y-sm: $input-padding-y-sm !default;\\n$custom-select-padding-x-sm: $input-padding-x-sm !default;\\n$custom-select-font-size-sm: $input-font-size-sm !default;\\n$custom-select-height-sm: $input-height-sm !default;\\n\\n$custom-select-padding-y-lg: $input-padding-y-lg !default;\\n$custom-select-padding-x-lg: $input-padding-x-lg !default;\\n$custom-select-font-size-lg: $input-font-size-lg !default;\\n$custom-select-height-lg: $input-height-lg !default;\\n\\n$custom-range-track-width: 100% !default;\\n$custom-range-track-height: .5rem !default;\\n$custom-range-track-cursor: pointer !default;\\n$custom-range-track-bg: $gray-300 !default;\\n$custom-range-track-border-radius: 1rem !default;\\n$custom-range-track-box-shadow: inset 0 .25rem .25rem rgba($black, .1) !default;\\n\\n$custom-range-thumb-width: 1rem !default;\\n$custom-range-thumb-height: $custom-range-thumb-width !default;\\n$custom-range-thumb-bg: $component-active-bg !default;\\n$custom-range-thumb-border: 0 !default;\\n$custom-range-thumb-border-radius: 1rem !default;\\n$custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\\n$custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\\n$custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge\\n$custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;\\n$custom-range-thumb-disabled-bg: $gray-500 !default;\\n\\n$custom-file-height: $input-height !default;\\n$custom-file-height-inner: $input-height-inner !default;\\n$custom-file-focus-border-color: $input-focus-border-color !default;\\n$custom-file-focus-box-shadow: $input-focus-box-shadow !default;\\n$custom-file-disabled-bg: $input-disabled-bg !default;\\n\\n$custom-file-padding-y: $input-padding-y !default;\\n$custom-file-padding-x: $input-padding-x !default;\\n$custom-file-line-height: $input-line-height !default;\\n$custom-file-font-family: $input-font-family !default;\\n$custom-file-font-weight: $input-font-weight !default;\\n$custom-file-color: $input-color !default;\\n$custom-file-bg: $input-bg !default;\\n$custom-file-border-width: $input-border-width !default;\\n$custom-file-border-color: $input-border-color !default;\\n$custom-file-border-radius: $input-border-radius !default;\\n$custom-file-box-shadow: $input-box-shadow !default;\\n$custom-file-button-color: $custom-file-color !default;\\n$custom-file-button-bg: $input-group-addon-bg !default;\\n$custom-file-text: (\\n en: \\\"Browse\\\"\\n) !default;\\n\\n\\n// Form validation\\n\\n$form-feedback-margin-top: $form-text-margin-top !default;\\n$form-feedback-font-size: $small-font-size !default;\\n$form-feedback-valid-color: theme-color(\\\"success\\\") !default;\\n$form-feedback-invalid-color: theme-color(\\\"danger\\\") !default;\\n\\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\\n$form-feedback-icon-valid: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>\\\") !default;\\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\\n$form-feedback-icon-invalid: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\\\") !default;\\n\\n$form-validation-states: () !default;\\n$form-validation-states: map-merge(\\n (\\n \\\"valid\\\": (\\n \\\"color\\\": $form-feedback-valid-color,\\n \\\"icon\\\": $form-feedback-icon-valid\\n ),\\n \\\"invalid\\\": (\\n \\\"color\\\": $form-feedback-invalid-color,\\n \\\"icon\\\": $form-feedback-icon-invalid\\n ),\\n ),\\n $form-validation-states\\n);\\n\\n// Z-index master list\\n//\\n// Warning: Avoid customizing these values. They're used for a bird's eye view\\n// of components dependent on the z-axis and are designed to all work together.\\n\\n$zindex-dropdown: 1000 !default;\\n$zindex-sticky: 1020 !default;\\n$zindex-fixed: 1030 !default;\\n$zindex-modal-backdrop: 1040 !default;\\n$zindex-modal: 1050 !default;\\n$zindex-popover: 1060 !default;\\n$zindex-tooltip: 1070 !default;\\n\\n\\n// Navs\\n\\n$nav-link-padding-y: .5rem !default;\\n$nav-link-padding-x: 1rem !default;\\n$nav-link-disabled-color: $gray-600 !default;\\n\\n$nav-tabs-border-color: $gray-300 !default;\\n$nav-tabs-border-width: $border-width !default;\\n$nav-tabs-border-radius: $border-radius !default;\\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\\n$nav-tabs-link-active-color: $gray-700 !default;\\n$nav-tabs-link-active-bg: $body-bg !default;\\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\\n\\n$nav-pills-border-radius: $border-radius !default;\\n$nav-pills-link-active-color: $component-active-color !default;\\n$nav-pills-link-active-bg: $component-active-bg !default;\\n\\n$nav-divider-color: $gray-200 !default;\\n$nav-divider-margin-y: $spacer * .5 !default;\\n\\n\\n// Navbar\\n\\n$navbar-padding-y: $spacer * .5 !default;\\n$navbar-padding-x: $spacer !default;\\n\\n$navbar-nav-link-padding-x: .5rem !default;\\n\\n$navbar-brand-font-size: $font-size-lg !default;\\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\\n\\n$navbar-toggler-padding-y: .25rem !default;\\n$navbar-toggler-padding-x: .75rem !default;\\n$navbar-toggler-font-size: $font-size-lg !default;\\n$navbar-toggler-border-radius: $btn-border-radius !default;\\n\\n$navbar-nav-scroll-max-height: 75vh !default;\\n\\n$navbar-dark-color: rgba($white, .5) !default;\\n$navbar-dark-hover-color: rgba($white, .75) !default;\\n$navbar-dark-active-color: $white !default;\\n$navbar-dark-disabled-color: rgba($white, .25) !default;\\n$navbar-dark-toggler-icon-bg: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\\\") !default;\\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\\n\\n$navbar-light-color: rgba($black, .5) !default;\\n$navbar-light-hover-color: rgba($black, .7) !default;\\n$navbar-light-active-color: rgba($black, .9) !default;\\n$navbar-light-disabled-color: rgba($black, .3) !default;\\n$navbar-light-toggler-icon-bg: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>\\\") !default;\\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\\n\\n$navbar-light-brand-color: $navbar-light-active-color !default;\\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\\n\\n\\n// Dropdowns\\n//\\n// Dropdown menu container and contents.\\n\\n$dropdown-min-width: 10rem !default;\\n$dropdown-padding-x: 0 !default;\\n$dropdown-padding-y: .5rem !default;\\n$dropdown-spacer: .125rem !default;\\n$dropdown-font-size: $font-size-base !default;\\n$dropdown-color: $body-color !default;\\n$dropdown-bg: $white !default;\\n$dropdown-border-color: rgba($black, .15) !default;\\n$dropdown-border-radius: $border-radius !default;\\n$dropdown-border-width: $border-width !default;\\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\\n$dropdown-divider-bg: $gray-200 !default;\\n$dropdown-divider-margin-y: $nav-divider-margin-y !default;\\n$dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;\\n\\n$dropdown-link-color: $gray-900 !default;\\n$dropdown-link-hover-color: darken($gray-900, 5%) !default;\\n$dropdown-link-hover-bg: $gray-200 !default;\\n\\n$dropdown-link-active-color: $component-active-color !default;\\n$dropdown-link-active-bg: $component-active-bg !default;\\n\\n$dropdown-link-disabled-color: $gray-500 !default;\\n\\n$dropdown-item-padding-y: .25rem !default;\\n$dropdown-item-padding-x: 1.5rem !default;\\n\\n$dropdown-header-color: $gray-600 !default;\\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\\n\\n\\n// Pagination\\n\\n$pagination-padding-y: .5rem !default;\\n$pagination-padding-x: .75rem !default;\\n$pagination-padding-y-sm: .25rem !default;\\n$pagination-padding-x-sm: .5rem !default;\\n$pagination-padding-y-lg: .75rem !default;\\n$pagination-padding-x-lg: 1.5rem !default;\\n$pagination-line-height: 1.25 !default;\\n\\n$pagination-color: $link-color !default;\\n$pagination-bg: $white !default;\\n$pagination-border-width: $border-width !default;\\n$pagination-border-color: $gray-300 !default;\\n\\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\\n$pagination-focus-outline: 0 !default;\\n\\n$pagination-hover-color: $link-hover-color !default;\\n$pagination-hover-bg: $gray-200 !default;\\n$pagination-hover-border-color: $gray-300 !default;\\n\\n$pagination-active-color: $component-active-color !default;\\n$pagination-active-bg: $component-active-bg !default;\\n$pagination-active-border-color: $pagination-active-bg !default;\\n\\n$pagination-disabled-color: $gray-600 !default;\\n$pagination-disabled-bg: $white !default;\\n$pagination-disabled-border-color: $gray-300 !default;\\n\\n$pagination-border-radius-sm: $border-radius-sm !default;\\n$pagination-border-radius-lg: $border-radius-lg !default;\\n\\n\\n// Jumbotron\\n\\n$jumbotron-padding: 2rem !default;\\n$jumbotron-color: null !default;\\n$jumbotron-bg: $gray-200 !default;\\n\\n\\n// Cards\\n\\n$card-spacer-y: .75rem !default;\\n$card-spacer-x: 1.25rem !default;\\n$card-border-width: $border-width !default;\\n$card-border-radius: $border-radius !default;\\n$card-border-color: rgba($black, .125) !default;\\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\\n$card-cap-bg: rgba($black, .03) !default;\\n$card-cap-color: null !default;\\n$card-height: null !default;\\n$card-color: null !default;\\n$card-bg: $white !default;\\n\\n$card-img-overlay-padding: 1.25rem !default;\\n\\n$card-group-margin: $grid-gutter-width * .5 !default;\\n$card-deck-margin: $card-group-margin !default;\\n\\n$card-columns-count: 3 !default;\\n$card-columns-gap: 1.25rem !default;\\n$card-columns-margin: $card-spacer-y !default;\\n\\n\\n// Tooltips\\n\\n$tooltip-font-size: $font-size-sm !default;\\n$tooltip-max-width: 200px !default;\\n$tooltip-color: $white !default;\\n$tooltip-bg: $black !default;\\n$tooltip-border-radius: $border-radius !default;\\n$tooltip-opacity: .9 !default;\\n$tooltip-padding-y: .25rem !default;\\n$tooltip-padding-x: .5rem !default;\\n$tooltip-margin: 0 !default;\\n\\n$tooltip-arrow-width: .8rem !default;\\n$tooltip-arrow-height: .4rem !default;\\n$tooltip-arrow-color: $tooltip-bg !default;\\n\\n// Form tooltips must come after regular tooltips\\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\\n$form-feedback-tooltip-line-height: $line-height-base !default;\\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\\n\\n\\n// Popovers\\n\\n$popover-font-size: $font-size-sm !default;\\n$popover-bg: $white !default;\\n$popover-max-width: 276px !default;\\n$popover-border-width: $border-width !default;\\n$popover-border-color: rgba($black, .2) !default;\\n$popover-border-radius: $border-radius-lg !default;\\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\\n$popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;\\n\\n$popover-header-bg: darken($popover-bg, 3%) !default;\\n$popover-header-color: $headings-color !default;\\n$popover-header-padding-y: .5rem !default;\\n$popover-header-padding-x: .75rem !default;\\n\\n$popover-body-color: $body-color !default;\\n$popover-body-padding-y: $popover-header-padding-y !default;\\n$popover-body-padding-x: $popover-header-padding-x !default;\\n\\n$popover-arrow-width: 1rem !default;\\n$popover-arrow-height: .5rem !default;\\n$popover-arrow-color: $popover-bg !default;\\n\\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\\n\\n\\n// Toasts\\n\\n$toast-max-width: 350px !default;\\n$toast-padding-x: .75rem !default;\\n$toast-padding-y: .25rem !default;\\n$toast-font-size: .875rem !default;\\n$toast-color: null !default;\\n$toast-background-color: rgba($white, .85) !default;\\n$toast-border-width: 1px !default;\\n$toast-border-color: rgba(0, 0, 0, .1) !default;\\n$toast-border-radius: .25rem !default;\\n$toast-box-shadow: 0 .25rem .75rem rgba($black, .1) !default;\\n\\n$toast-header-color: $gray-600 !default;\\n$toast-header-background-color: rgba($white, .85) !default;\\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\\n\\n\\n// Badges\\n\\n$badge-font-size: 75% !default;\\n$badge-font-weight: $font-weight-bold !default;\\n$badge-padding-y: .25em !default;\\n$badge-padding-x: .4em !default;\\n$badge-border-radius: $border-radius !default;\\n\\n$badge-transition: $btn-transition !default;\\n$badge-focus-width: $input-btn-focus-width !default;\\n\\n$badge-pill-padding-x: .6em !default;\\n// Use a higher than normal value to ensure completely rounded edges when\\n// customizing padding or font-size on labels.\\n$badge-pill-border-radius: 10rem !default;\\n\\n\\n// Modals\\n\\n// Padding applied to the modal body\\n$modal-inner-padding: 1rem !default;\\n\\n// Margin between elements in footer, must be lower than or equal to 2 * $modal-inner-padding\\n$modal-footer-margin-between: .5rem !default;\\n\\n$modal-dialog-margin: .5rem !default;\\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\\n\\n$modal-title-line-height: $line-height-base !default;\\n\\n$modal-content-color: null !default;\\n$modal-content-bg: $white !default;\\n$modal-content-border-color: rgba($black, .2) !default;\\n$modal-content-border-width: $border-width !default;\\n$modal-content-border-radius: $border-radius-lg !default;\\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\\n$modal-content-box-shadow-xs: 0 .25rem .5rem rgba($black, .5) !default;\\n$modal-content-box-shadow-sm-up: 0 .5rem 1rem rgba($black, .5) !default;\\n\\n$modal-backdrop-bg: $black !default;\\n$modal-backdrop-opacity: .5 !default;\\n$modal-header-border-color: $border-color !default;\\n$modal-footer-border-color: $modal-header-border-color !default;\\n$modal-header-border-width: $modal-content-border-width !default;\\n$modal-footer-border-width: $modal-header-border-width !default;\\n$modal-header-padding-y: 1rem !default;\\n$modal-header-padding-x: 1rem !default;\\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\\n\\n$modal-xl: 1140px !default;\\n$modal-lg: 800px !default;\\n$modal-md: 500px !default;\\n$modal-sm: 300px !default;\\n\\n$modal-fade-transform: translate(0, -50px) !default;\\n$modal-show-transform: none !default;\\n$modal-transition: transform .3s ease-out !default;\\n$modal-scale-transform: scale(1.02) !default;\\n\\n\\n// Alerts\\n//\\n// Define alert colors, border radius, and padding.\\n\\n$alert-padding-y: .75rem !default;\\n$alert-padding-x: 1.25rem !default;\\n$alert-margin-bottom: 1rem !default;\\n$alert-border-radius: $border-radius !default;\\n$alert-link-font-weight: $font-weight-bold !default;\\n$alert-border-width: $border-width !default;\\n\\n$alert-bg-level: -10 !default;\\n$alert-border-level: -9 !default;\\n$alert-color-level: 6 !default;\\n\\n\\n// Progress bars\\n\\n$progress-height: 1rem !default;\\n$progress-font-size: $font-size-base * .75 !default;\\n$progress-bg: $gray-200 !default;\\n$progress-border-radius: $border-radius !default;\\n$progress-box-shadow: inset 0 .1rem .1rem rgba($black, .1) !default;\\n$progress-bar-color: $white !default;\\n$progress-bar-bg: theme-color(\\\"primary\\\") !default;\\n$progress-bar-animation-timing: 1s linear infinite !default;\\n$progress-bar-transition: width .6s ease !default;\\n\\n\\n// List group\\n\\n$list-group-color: null !default;\\n$list-group-bg: $white !default;\\n$list-group-border-color: rgba($black, .125) !default;\\n$list-group-border-width: $border-width !default;\\n$list-group-border-radius: $border-radius !default;\\n\\n$list-group-item-padding-y: .75rem !default;\\n$list-group-item-padding-x: 1.25rem !default;\\n\\n$list-group-hover-bg: $gray-100 !default;\\n$list-group-active-color: $component-active-color !default;\\n$list-group-active-bg: $component-active-bg !default;\\n$list-group-active-border-color: $list-group-active-bg !default;\\n\\n$list-group-disabled-color: $gray-600 !default;\\n$list-group-disabled-bg: $list-group-bg !default;\\n\\n$list-group-action-color: $gray-700 !default;\\n$list-group-action-hover-color: $list-group-action-color !default;\\n\\n$list-group-action-active-color: $body-color !default;\\n$list-group-action-active-bg: $gray-200 !default;\\n\\n\\n// Image thumbnails\\n\\n$thumbnail-padding: .25rem !default;\\n$thumbnail-bg: $body-bg !default;\\n$thumbnail-border-width: $border-width !default;\\n$thumbnail-border-color: $gray-300 !default;\\n$thumbnail-border-radius: $border-radius !default;\\n$thumbnail-box-shadow: 0 1px 2px rgba($black, .075) !default;\\n\\n\\n// Figures\\n\\n$figure-caption-font-size: 90% !default;\\n$figure-caption-color: $gray-600 !default;\\n\\n\\n// Breadcrumbs\\n\\n$breadcrumb-font-size: null !default;\\n\\n$breadcrumb-padding-y: .75rem !default;\\n$breadcrumb-padding-x: 1rem !default;\\n$breadcrumb-item-padding: .5rem !default;\\n\\n$breadcrumb-margin-bottom: 1rem !default;\\n\\n$breadcrumb-bg: $gray-200 !default;\\n$breadcrumb-divider-color: $gray-600 !default;\\n$breadcrumb-active-color: $gray-600 !default;\\n$breadcrumb-divider: quote(\\\"/\\\") !default;\\n\\n$breadcrumb-border-radius: $border-radius !default;\\n\\n\\n// Carousel\\n\\n$carousel-control-color: $white !default;\\n$carousel-control-width: 15% !default;\\n$carousel-control-opacity: .5 !default;\\n$carousel-control-hover-opacity: .9 !default;\\n$carousel-control-transition: opacity .15s ease !default;\\n\\n$carousel-indicator-width: 30px !default;\\n$carousel-indicator-height: 3px !default;\\n$carousel-indicator-hit-area-height: 10px !default;\\n$carousel-indicator-spacer: 3px !default;\\n$carousel-indicator-active-bg: $white !default;\\n$carousel-indicator-transition: opacity .6s ease !default;\\n\\n$carousel-caption-width: 70% !default;\\n$carousel-caption-color: $white !default;\\n\\n$carousel-control-icon-width: 20px !default;\\n\\n$carousel-control-prev-icon-bg: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/></svg>\\\") !default;\\n$carousel-control-next-icon-bg: url(\\\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' width='8' height='8' viewBox='0 0 8 8'><path d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/></svg>\\\") !default;\\n\\n$carousel-transition-duration: .6s !default;\\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\\n\\n\\n// Spinners\\n\\n$spinner-width: 2rem !default;\\n$spinner-height: $spinner-width !default;\\n$spinner-vertical-align: -.125em !default;\\n$spinner-border-width: .25em !default;\\n\\n$spinner-width-sm: 1rem !default;\\n$spinner-height-sm: $spinner-width-sm !default;\\n$spinner-border-width-sm: .2em !default;\\n\\n\\n// Close\\n\\n$close-font-size: $font-size-base * 1.5 !default;\\n$close-font-weight: $font-weight-bold !default;\\n$close-color: $black !default;\\n$close-text-shadow: 0 1px 0 $white !default;\\n\\n\\n// Code\\n\\n$code-font-size: 87.5% !default;\\n$code-color: $pink !default;\\n\\n$kbd-padding-y: .2rem !default;\\n$kbd-padding-x: .4rem !default;\\n$kbd-font-size: $code-font-size !default;\\n$kbd-color: $white !default;\\n$kbd-bg: $gray-900 !default;\\n\\n$pre-color: $gray-900 !default;\\n$pre-scrollable-max-height: 340px !default;\\n\\n\\n// Utilities\\n\\n$displays: none, inline, inline-block, block, table, table-row, table-cell, flex, inline-flex !default;\\n$overflows: auto, hidden !default;\\n$positions: static, relative, absolute, fixed, sticky !default;\\n$user-selects: all, auto, none !default;\\n\\n\\n// Printing\\n\\n$print-page-size: a3 !default;\\n$print-body-min-width: map-get($grid-breakpoints, \\\"lg\\\") !default;\\n\",\"// stylelint-disable property-blacklist, scss/dollar-variable-default\\n\\n// SCSS RFS mixin\\n//\\n// Automated responsive font sizes\\n//\\n// Licensed under MIT (https://github.com/twbs/rfs/blob/v8.x/LICENSE)\\n\\n// Configuration\\n\\n// Base font size\\n$rfs-base-font-size: 1.25rem !default;\\n$rfs-font-size-unit: rem !default;\\n\\n@if $rfs-font-size-unit != rem and $rfs-font-size-unit != px {\\n @error \\\"`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`.\\\";\\n}\\n\\n// Breakpoint at where font-size starts decreasing if screen width is smaller\\n$rfs-breakpoint: 1200px !default;\\n$rfs-breakpoint-unit: px !default;\\n\\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\\n @error \\\"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\\\";\\n}\\n\\n// Resize font size based on screen height and width\\n$rfs-two-dimensional: false !default;\\n\\n// Factor of decrease\\n$rfs-factor: 10 !default;\\n\\n@if type-of($rfs-factor) != \\\"number\\\" or $rfs-factor <= 1 {\\n @error \\\"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\\\";\\n}\\n\\n// Generate enable or disable classes. Possibilities: false, \\\"enable\\\" or \\\"disable\\\"\\n$rfs-class: false !default;\\n\\n// 1 rem = $rfs-rem-value px\\n$rfs-rem-value: 16 !default;\\n\\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\\n$rfs-safari-iframe-resize-bug-fix: false !default;\\n\\n// Disable RFS by setting $enable-responsive-font-sizes to false\\n$enable-responsive-font-sizes: true !default;\\n\\n// Cache $rfs-base-font-size unit\\n$rfs-base-font-size-unit: unit($rfs-base-font-size);\\n\\n@function divide($dividend, $divisor, $precision: 10) {\\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\\n $dividend: abs($dividend);\\n $divisor: abs($divisor);\\n @if $dividend == 0 {\\n @return 0;\\n }\\n @if $divisor == 0 {\\n @error \\\"Cannot divide by 0\\\";\\n }\\n $remainder: $dividend;\\n $result: 0;\\n $factor: 10;\\n @while ($remainder > 0 and $precision >= 0) {\\n $quotient: 0;\\n @while ($remainder >= $divisor) {\\n $remainder: $remainder - $divisor;\\n $quotient: $quotient + 1;\\n }\\n $result: $result * 10 + $quotient;\\n $factor: $factor * .1;\\n $remainder: $remainder * 10;\\n $precision: $precision - 1;\\n @if ($precision < 0 and $remainder >= $divisor * 5) {\\n $result: $result + 1;\\n }\\n }\\n $result: $result * $factor * $sign;\\n $dividend-unit: unit($dividend);\\n $divisor-unit: unit($divisor);\\n $unit-map: (\\n \\\"px\\\": 1px,\\n \\\"rem\\\": 1rem,\\n \\\"em\\\": 1em,\\n \\\"%\\\": 1%\\n );\\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\\n $result: $result * map-get($unit-map, $dividend-unit);\\n }\\n @return $result;\\n}\\n\\n// Remove px-unit from $rfs-base-font-size for calculations\\n@if $rfs-base-font-size-unit == \\\"px\\\" {\\n $rfs-base-font-size: divide($rfs-base-font-size, $rfs-base-font-size * 0 + 1);\\n}\\n@else if $rfs-base-font-size-unit == \\\"rem\\\" {\\n $rfs-base-font-size: divide($rfs-base-font-size, divide($rfs-base-font-size * 0 + 1, $rfs-rem-value));\\n}\\n\\n// Cache $rfs-breakpoint unit to prevent multiple calls\\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\\n\\n// Remove unit from $rfs-breakpoint for calculations\\n@if $rfs-breakpoint-unit-cache == \\\"px\\\" {\\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\\n}\\n@else if $rfs-breakpoint-unit-cache == \\\"rem\\\" or $rfs-breakpoint-unit-cache == \\\"em\\\" {\\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\\n}\\n\\n// Internal mixin that adds disable classes to the selector if needed.\\n@mixin _rfs-disable-class {\\n @if $rfs-class == \\\"disable\\\" {\\n // Adding an extra class increases specificity, which prevents the media query to override the font size\\n &,\\n .disable-responsive-font-size &,\\n &.disable-responsive-font-size {\\n @content;\\n }\\n }\\n @else {\\n @content;\\n }\\n}\\n\\n// Internal mixin that adds enable classes to the selector if needed.\\n@mixin _rfs-enable-class {\\n @if $rfs-class == \\\"enable\\\" {\\n .enable-responsive-font-size &,\\n &.enable-responsive-font-size {\\n @content;\\n }\\n }\\n @else {\\n @content;\\n }\\n}\\n\\n// Internal mixin used to determine which media query needs to be used\\n@mixin _rfs-media-query($mq-value) {\\n @if $rfs-two-dimensional {\\n @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) {\\n @content;\\n }\\n }\\n @else {\\n @media (max-width: #{$mq-value}) {\\n @content;\\n }\\n }\\n}\\n\\n// Responsive font size mixin\\n@mixin rfs($fs, $important: false) {\\n // Cache $fs unit\\n $fs-unit: if(type-of($fs) == \\\"number\\\", unit($fs), false);\\n\\n // Add !important suffix if needed\\n $rfs-suffix: if($important, \\\" !important\\\", \\\"\\\");\\n\\n // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\\n @if not $fs-unit or $fs-unit != \\\"\\\" and $fs-unit != \\\"px\\\" and $fs-unit != \\\"rem\\\" or $fs == 0 {\\n font-size: #{$fs}#{$rfs-suffix};\\n }\\n @else {\\n // Remove unit from $fs for calculations\\n @if $fs-unit == \\\"px\\\" {\\n $fs: divide($fs, $fs * 0 + 1);\\n }\\n @else if $fs-unit == \\\"rem\\\" {\\n $fs: divide($fs, divide($fs * 0 + 1, $rfs-rem-value));\\n }\\n\\n // Set default font size\\n $rfs-static: if($rfs-font-size-unit == rem, #{divide($fs, $rfs-rem-value)}rem, #{$fs}px);\\n\\n // Only add the media query if the font size is bigger than the minimum font size\\n @if $fs <= $rfs-base-font-size or not $enable-responsive-font-sizes {\\n font-size: #{$rfs-static}#{$rfs-suffix};\\n }\\n @else {\\n // Calculate the minimum font size for $fs\\n $fs-min: $rfs-base-font-size + divide($fs - $rfs-base-font-size, $rfs-factor);\\n\\n // Calculate difference between $fs and the minimum font size\\n $fs-diff: $fs - $fs-min;\\n\\n // Base font-size formatting\\n $min-width: if($rfs-font-size-unit == rem, #{divide($fs-min, $rfs-rem-value)}rem, #{$fs-min}px);\\n\\n // Use `vmin` if two-dimensional is enabled\\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\\n\\n // Calculate the variable width between 0 and $rfs-breakpoint\\n $variable-width: #{divide($fs-diff * 100, $rfs-breakpoint)}#{$variable-unit};\\n\\n // Set the calculated font-size\\n $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix};\\n\\n // Breakpoint formatting\\n $mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\\n\\n @include _rfs-disable-class {\\n font-size: #{$rfs-static}#{$rfs-suffix};\\n }\\n\\n @include _rfs-media-query($mq-value) {\\n @include _rfs-enable-class {\\n font-size: $rfs-fluid;\\n }\\n\\n // Include safari iframe resize fix if needed\\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\\n }\\n }\\n }\\n}\\n\\n// The font-size & responsive-font-size mixins use RFS to rescale the font size\\n@mixin font-size($fs, $important: false) {\\n @include rfs($fs, $important);\\n}\\n\\n@mixin responsive-font-size($fs, $important: false) {\\n @include rfs($fs, $important);\\n}\\n\",\"// Bootstrap overrides\\n\\n//\\n// Color system\\n//\\n\\n$white: #fff;\\n$gray-100: #f0f3f5;\\n$gray-200: #c2cfd6;\\n$gray-300: #a4b7c1;\\n$gray-400: #869fac;\\n$gray-500: #678898;\\n$gray-600: #536c79;\\n$gray-700: #3e515b;\\n$gray-800: #29363d;\\n$gray-900: #151b1e;\\n$black: #000 !default;\\n\\n$blue: #003399;\\n$indigo: #6610f2 !default;\\n$purple: #6f42c1 !default;\\n$pink: #e83e8c !default;\\n$red: #f86c6b;\\n$orange: #f8cb00;\\n$yellow: #ffcc00 !default;\\n$green: #4dbd74;\\n$teal: #20c997 !default;\\n$cyan: #63c2de;\\n\\n$colors: (\\n blue: $blue,\\n indigo: $indigo,\\n purple: $purple,\\n pink: $pink,\\n red: $red,\\n orange: $orange,\\n yellow: $yellow,\\n green: $green,\\n teal: $teal,\\n cyan: $cyan,\\n white: $white,\\n gray: $gray-600,\\n gray-dark: $gray-800\\n);\\n\\n$theme-colors: (\\n primary: $blue,\\n secondary: $gray-700,\\n success: $green,\\n info: $cyan,\\n warning: $yellow,\\n danger: $red,\\n light: $gray-200,\\n dark: $gray-800\\n);\\n\\n// Options\\n//\\n// Quickly modify global styling by enabling or disabling optional features.\\n\\n$enable-transitions: true;\\n$enable-rounded: true;\\n\\n// Body\\n//\\n// Settings for the `<body>` element.\\n\\n$body-bg: #e4e5e6;\\n\\n// Typography\\n//\\n// Font, line-height, and color for body text, headings, and more.\\n\\n$font-size-base: 0.875rem;\\n\\n// Breadcrumbs\\n\\n$breadcrumb-bg: #fff;\\n$breadcrumb-margin-bottom: 1.5rem;\\n\\n// Cards\\n\\n$card-border-color: $gray-200;\\n$card-cap-bg: $gray-100;\\n\\n// Dropdowns\\n\\n$dropdown-padding-y: 0;\\n$dropdown-border-color: $gray-200;\\n$dropdown-divider-bg: $gray-100;\\n\\n// Buttons\\n\\n$btn-secondary-border: $gray-300;\\n\\n// Progress bars\\n\\n$progress-bg: $gray-100;\\n\\n// Tables\\n\\n$table-bg-accent: $gray-100;\\n$table-bg-hover: $gray-100;\\n\\n// Forms\\n\\n$input-group-addon-bg: $gray-100;\\n$input-border-color: $gray-200;\\n$input-group-addon-border-color: $gray-200;\\n\",\"// Hover mixin and `$enable-hover-media-query` are deprecated.\\n//\\n// Originally added during our alphas and maintained during betas, this mixin was\\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\\n// would persist after initial touch.\\n//\\n// For backward compatibility, we've kept these mixins and updated them to\\n// always return their regular pseudo-classes instead of a shimmed media query.\\n//\\n// Issue: https://github.com/twbs/bootstrap/issues/25195\\n\\n@mixin hover() {\\n &:hover { @content; }\\n}\\n\\n@mixin hover-focus() {\\n &:hover,\\n &:focus {\\n @content;\\n }\\n}\\n\\n@mixin plain-hover-focus() {\\n &,\\n &:hover,\\n &:focus {\\n @content;\\n }\\n}\\n\\n@mixin hover-focus-active() {\\n &:hover,\\n &:focus,\\n &:active {\\n @content;\\n }\\n}\\n\",\"// stylelint-disable selector-list-comma-newline-after\\n\\n//\\n// Headings\\n//\\n\\nh1, h2, h3, h4, h5, h6,\\n.h1, .h2, .h3, .h4, .h5, .h6 {\\n margin-bottom: $headings-margin-bottom;\\n font-family: $headings-font-family;\\n font-weight: $headings-font-weight;\\n line-height: $headings-line-height;\\n color: $headings-color;\\n}\\n\\nh1, .h1 { @include font-size($h1-font-size); }\\nh2, .h2 { @include font-size($h2-font-size); }\\nh3, .h3 { @include font-size($h3-font-size); }\\nh4, .h4 { @include font-size($h4-font-size); }\\nh5, .h5 { @include font-size($h5-font-size); }\\nh6, .h6 { @include font-size($h6-font-size); }\\n\\n.lead {\\n @include font-size($lead-font-size);\\n font-weight: $lead-font-weight;\\n}\\n\\n// Type display classes\\n.display-1 {\\n @include font-size($display1-size);\\n font-weight: $display1-weight;\\n line-height: $display-line-height;\\n}\\n.display-2 {\\n @include font-size($display2-size);\\n font-weight: $display2-weight;\\n line-height: $display-line-height;\\n}\\n.display-3 {\\n @include font-size($display3-size);\\n font-weight: $display3-weight;\\n line-height: $display-line-height;\\n}\\n.display-4 {\\n @include font-size($display4-size);\\n font-weight: $display4-weight;\\n line-height: $display-line-height;\\n}\\n\\n\\n//\\n// Horizontal rules\\n//\\n\\nhr {\\n margin-top: $hr-margin-y;\\n margin-bottom: $hr-margin-y;\\n border: 0;\\n border-top: $hr-border-width solid $hr-border-color;\\n}\\n\\n\\n//\\n// Emphasis\\n//\\n\\nsmall,\\n.small {\\n @include font-size($small-font-size);\\n font-weight: $font-weight-normal;\\n}\\n\\nmark,\\n.mark {\\n padding: $mark-padding;\\n background-color: $mark-bg;\\n}\\n\\n\\n//\\n// Lists\\n//\\n\\n.list-unstyled {\\n @include list-unstyled();\\n}\\n\\n// Inline turns list items into inline-block\\n.list-inline {\\n @include list-unstyled();\\n}\\n.list-inline-item {\\n display: inline-block;\\n\\n &:not(:last-child) {\\n margin-right: $list-inline-padding;\\n }\\n}\\n\\n\\n//\\n// Misc\\n//\\n\\n// Builds on `abbr`\\n.initialism {\\n @include font-size(90%);\\n text-transform: uppercase;\\n}\\n\\n// Blockquotes\\n.blockquote {\\n margin-bottom: $spacer;\\n @include font-size($blockquote-font-size);\\n}\\n\\n.blockquote-footer {\\n display: block;\\n @include font-size($blockquote-small-font-size);\\n color: $blockquote-small-color;\\n\\n &::before {\\n content: \\\"\\\\2014\\\\00A0\\\"; // em dash, nbsp\\n }\\n}\\n\",\"// Lists\\n\\n// Unstyled keeps list items block level, just removes default browser padding and list-style\\n@mixin list-unstyled() {\\n padding-left: 0;\\n list-style: none;\\n}\\n\",\"// Responsive images (ensure images don't scale beyond their parents)\\n//\\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\\n// We previously tried the \\\"images are responsive by default\\\" approach in Bootstrap v2,\\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\\n// which weren't expecting the images within themselves to be involuntarily resized.\\n// See also https://github.com/twbs/bootstrap/issues/18178\\n.img-fluid {\\n @include img-fluid();\\n}\\n\\n\\n// Image thumbnails\\n.img-thumbnail {\\n padding: $thumbnail-padding;\\n background-color: $thumbnail-bg;\\n border: $thumbnail-border-width solid $thumbnail-border-color;\\n @include border-radius($thumbnail-border-radius);\\n @include box-shadow($thumbnail-box-shadow);\\n\\n // Keep them at most 100% wide\\n @include img-fluid();\\n}\\n\\n//\\n// Figures\\n//\\n\\n.figure {\\n // Ensures the caption's text aligns with the image.\\n display: inline-block;\\n}\\n\\n.figure-img {\\n margin-bottom: $spacer * .5;\\n line-height: 1;\\n}\\n\\n.figure-caption {\\n @include font-size($figure-caption-font-size);\\n color: $figure-caption-color;\\n}\\n\",\"// Image Mixins\\n// - Responsive image\\n// - Retina image\\n\\n\\n// Responsive image\\n//\\n// Keep images from scaling beyond the width of their parents.\\n\\n@mixin img-fluid() {\\n // Part 1: Set a maximum relative to the parent\\n max-width: 100%;\\n // Part 2: Override the height to auto, otherwise images will be stretched\\n // when setting a width and height attribute on the img element.\\n height: auto;\\n}\\n\\n\\n// Retina image\\n//\\n// Short retina mixin for setting background-image and -size.\\n\\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\\n background-image: url($file-1x);\\n\\n // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\\n // but doesn't convert dppx=>dpi.\\n // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\\n // Compatibility info: https://caniuse.com/css-media-resolution\\n @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\\n only screen and (min-resolution: 2dppx) { // Standardized\\n background-image: url($file-2x);\\n background-size: $width-1x $height-1x;\\n }\\n @include deprecate(\\\"`img-retina()`\\\", \\\"v4.3.0\\\", \\\"v5\\\");\\n}\\n\",\"// stylelint-disable property-disallowed-list\\n// Single side border-radius\\n\\n// Helper function to replace negative values with 0\\n@function valid-radius($radius) {\\n $return: ();\\n @each $value in $radius {\\n @if type-of($value) == number {\\n $return: append($return, max($value, 0));\\n } @else {\\n $return: append($return, $value);\\n }\\n }\\n @return $return;\\n}\\n\\n@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {\\n @if $enable-rounded {\\n border-radius: valid-radius($radius);\\n }\\n @else if $fallback-border-radius != false {\\n border-radius: $fallback-border-radius;\\n }\\n}\\n\\n@mixin border-top-radius($radius) {\\n @if $enable-rounded {\\n border-top-left-radius: valid-radius($radius);\\n border-top-right-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-right-radius($radius) {\\n @if $enable-rounded {\\n border-top-right-radius: valid-radius($radius);\\n border-bottom-right-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-bottom-radius($radius) {\\n @if $enable-rounded {\\n border-bottom-right-radius: valid-radius($radius);\\n border-bottom-left-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-left-radius($radius) {\\n @if $enable-rounded {\\n border-top-left-radius: valid-radius($radius);\\n border-bottom-left-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-top-left-radius($radius) {\\n @if $enable-rounded {\\n border-top-left-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-top-right-radius($radius) {\\n @if $enable-rounded {\\n border-top-right-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-bottom-right-radius($radius) {\\n @if $enable-rounded {\\n border-bottom-right-radius: valid-radius($radius);\\n }\\n}\\n\\n@mixin border-bottom-left-radius($radius) {\\n @if $enable-rounded {\\n border-bottom-left-radius: valid-radius($radius);\\n }\\n}\\n\",\"// Inline code\\ncode {\\n @include font-size($code-font-size);\\n color: $code-color;\\n word-wrap: break-word;\\n\\n // Streamline the style when inside anchors to avoid broken underline and more\\n a > & {\\n color: inherit;\\n }\\n}\\n\\n// User input typically entered via keyboard\\nkbd {\\n padding: $kbd-padding-y $kbd-padding-x;\\n @include font-size($kbd-font-size);\\n color: $kbd-color;\\n background-color: $kbd-bg;\\n @include border-radius($border-radius-sm);\\n @include box-shadow($kbd-box-shadow);\\n\\n kbd {\\n padding: 0;\\n @include font-size(100%);\\n font-weight: $nested-kbd-font-weight;\\n @include box-shadow(none);\\n }\\n}\\n\\n// Blocks of code\\npre {\\n display: block;\\n @include font-size($code-font-size);\\n color: $pre-color;\\n\\n // Account for some code outputs that place code tags in pre tags\\n code {\\n @include font-size(inherit);\\n color: inherit;\\n word-break: normal;\\n }\\n}\\n\\n// Enable scrollable blocks of code\\n.pre-scrollable {\\n max-height: $pre-scrollable-max-height;\\n overflow-y: scroll;\\n}\\n\",\"// Container widths\\n//\\n// Set the container width, and override it for fixed navbars in media queries.\\n\\n@if $enable-grid-classes {\\n // Single container class with breakpoint max-widths\\n .container,\\n // 100% wide container at all breakpoints\\n .container-fluid {\\n @include make-container();\\n }\\n\\n // Responsive containers that are 100% wide until a breakpoint\\n @each $breakpoint, $container-max-width in $container-max-widths {\\n .container-#{$breakpoint} {\\n @extend .container-fluid;\\n }\\n\\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\\n %responsive-container-#{$breakpoint} {\\n max-width: $container-max-width;\\n }\\n\\n // Extend each breakpoint which is smaller or equal to the current breakpoint\\n $extend-breakpoint: true;\\n\\n @each $name, $width in $grid-breakpoints {\\n @if ($extend-breakpoint) {\\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\\n @extend %responsive-container-#{$breakpoint};\\n }\\n\\n // Once the current breakpoint is reached, stop extending\\n @if ($breakpoint == $name) {\\n $extend-breakpoint: false;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n\\n// Row\\n//\\n// Rows contain your columns.\\n\\n@if $enable-grid-classes {\\n .row {\\n @include make-row();\\n }\\n\\n // Remove the negative margin from default .row, then the horizontal padding\\n // from all immediate children columns (to prevent runaway style inheritance).\\n .no-gutters {\\n margin-right: 0;\\n margin-left: 0;\\n\\n > .col,\\n > [class*=\\\"col-\\\"] {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n }\\n}\\n\\n// Columns\\n//\\n// Common styles for small and large grid columns\\n\\n@if $enable-grid-classes {\\n @include make-grid-columns();\\n}\\n\",\"/// Grid system\\n//\\n// Generate semantic grid columns with these mixins.\\n\\n@mixin make-container($gutter: $grid-gutter-width) {\\n width: 100%;\\n padding-right: $gutter * .5;\\n padding-left: $gutter * .5;\\n margin-right: auto;\\n margin-left: auto;\\n}\\n\\n@mixin make-row($gutter: $grid-gutter-width) {\\n display: flex;\\n flex-wrap: wrap;\\n margin-right: -$gutter * .5;\\n margin-left: -$gutter * .5;\\n}\\n\\n// For each breakpoint, define the maximum width of the container in a media query\\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\\n @each $breakpoint, $container-max-width in $max-widths {\\n @include media-breakpoint-up($breakpoint, $breakpoints) {\\n max-width: $container-max-width;\\n }\\n }\\n @include deprecate(\\\"The `make-container-max-widths` mixin\\\", \\\"v4.5.2\\\", \\\"v5\\\");\\n}\\n\\n@mixin make-col-ready($gutter: $grid-gutter-width) {\\n position: relative;\\n // Prevent columns from becoming too narrow when at smaller grid tiers by\\n // always setting `width: 100%;`. This works because we use `flex` values\\n // later on to override this initial width.\\n width: 100%;\\n padding-right: $gutter * .5;\\n padding-left: $gutter * .5;\\n}\\n\\n@mixin make-col($size, $columns: $grid-columns) {\\n flex: 0 0 percentage(divide($size, $columns));\\n // Add a `max-width` to ensure content within each column does not blow out\\n // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\\n // do not appear to require this.\\n max-width: percentage(divide($size, $columns));\\n}\\n\\n@mixin make-col-auto() {\\n flex: 0 0 auto;\\n width: auto;\\n max-width: 100%; // Reset earlier grid tiers\\n}\\n\\n@mixin make-col-offset($size, $columns: $grid-columns) {\\n $num: divide($size, $columns);\\n margin-left: if($num == 0, 0, percentage($num));\\n}\\n\\n// Row columns\\n//\\n// Specify on a parent element(e.g., .row) to force immediate children into NN\\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\\n// style grid.\\n@mixin row-cols($count) {\\n > * {\\n flex: 0 0 divide(100%, $count);\\n max-width: divide(100%, $count);\\n }\\n}\\n\",\"// Breakpoint viewport sizes and media queries.\\n//\\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\\n//\\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\\n//\\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\\n\\n// Name of the next breakpoint, or null for the last breakpoint.\\n//\\n// >> breakpoint-next(sm)\\n// md\\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\\n// md\\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\\n// md\\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\\n $n: index($breakpoint-names, $name);\\n @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\\n}\\n\\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\\n//\\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\\n// 576px\\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\\n $min: map-get($breakpoints, $name);\\n @return if($min != 0, $min, null);\\n}\\n\\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\\n// The maximum value is calculated as the minimum of the next one less 0.02px\\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\\n//\\n// >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\\n// 767.98px\\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\\n $next: breakpoint-next($name, $breakpoints);\\n @return if($next, breakpoint-min($next, $breakpoints) - .02, null);\\n}\\n\\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\\n// Useful for making responsive utilities.\\n//\\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\\n// \\\"\\\" (Returns a blank string)\\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\\n// \\\"-sm\\\"\\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\\n @return if(breakpoint-min($name, $breakpoints) == null, \\\"\\\", \\\"-#{$name}\\\");\\n}\\n\\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\\n// Makes the @content apply to the given breakpoint and wider.\\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n @if $min {\\n @media (min-width: $min) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\\n// Makes the @content apply to the given breakpoint and narrower.\\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\\n $max: breakpoint-max($name, $breakpoints);\\n @if $max {\\n @media (max-width: $max) {\\n @content;\\n }\\n } @else {\\n @content;\\n }\\n}\\n\\n// Media that spans multiple breakpoint widths.\\n// Makes the @content apply between the min and max breakpoints\\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($lower, $breakpoints);\\n $max: breakpoint-max($upper, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($lower, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($upper, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\\n// Media between the breakpoint's minimum and maximum widths.\\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\\n $min: breakpoint-min($name, $breakpoints);\\n $max: breakpoint-max($name, $breakpoints);\\n\\n @if $min != null and $max != null {\\n @media (min-width: $min) and (max-width: $max) {\\n @content;\\n }\\n } @else if $max == null {\\n @include media-breakpoint-up($name, $breakpoints) {\\n @content;\\n }\\n } @else if $min == null {\\n @include media-breakpoint-down($name, $breakpoints) {\\n @content;\\n }\\n }\\n}\\n\",\"// Framework grid generation\\n//\\n// Used only by Bootstrap to generate the correct number of grid classes given\\n// any value of `$grid-columns`.\\n\\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\\n // Common properties for all breakpoints\\n %grid-column {\\n position: relative;\\n width: 100%;\\n padding-right: $gutter * .5;\\n padding-left: $gutter * .5;\\n }\\n\\n @each $breakpoint in map-keys($breakpoints) {\\n $infix: breakpoint-infix($breakpoint, $breakpoints);\\n\\n @if $columns > 0 {\\n // Allow columns to stretch full width below their breakpoints\\n @for $i from 1 through $columns {\\n .col#{$infix}-#{$i} {\\n @extend %grid-column;\\n }\\n }\\n }\\n\\n .col#{$infix},\\n .col#{$infix}-auto {\\n @extend %grid-column;\\n }\\n\\n @include media-breakpoint-up($breakpoint, $breakpoints) {\\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\\n .col#{$infix} {\\n flex-basis: 0;\\n flex-grow: 1;\\n max-width: 100%;\\n }\\n\\n @if $grid-row-columns > 0 {\\n @for $i from 1 through $grid-row-columns {\\n .row-cols#{$infix}-#{$i} {\\n @include row-cols($i);\\n }\\n }\\n }\\n\\n .col#{$infix}-auto {\\n @include make-col-auto();\\n }\\n\\n @if $columns > 0 {\\n @for $i from 1 through $columns {\\n .col#{$infix}-#{$i} {\\n @include make-col($i, $columns);\\n }\\n }\\n }\\n\\n .order#{$infix}-first { order: -1; }\\n\\n .order#{$infix}-last { order: $columns + 1; }\\n\\n @for $i from 0 through $columns {\\n .order#{$infix}-#{$i} { order: $i; }\\n }\\n\\n @if $columns > 0 {\\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\\n @for $i from 0 through ($columns - 1) {\\n @if not ($infix == \\\"\\\" and $i == 0) { // Avoid emitting useless .offset-0\\n .offset#{$infix}-#{$i} {\\n @include make-col-offset($i, $columns);\\n }\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"//\\n// Basic Bootstrap table\\n//\\n\\n.table {\\n width: 100%;\\n margin-bottom: $spacer;\\n color: $table-color;\\n background-color: $table-bg; // Reset for nesting within parents with `background-color`.\\n\\n th,\\n td {\\n padding: $table-cell-padding;\\n vertical-align: top;\\n border-top: $table-border-width solid $table-border-color;\\n }\\n\\n thead th {\\n vertical-align: bottom;\\n border-bottom: (2 * $table-border-width) solid $table-border-color;\\n }\\n\\n tbody + tbody {\\n border-top: (2 * $table-border-width) solid $table-border-color;\\n }\\n}\\n\\n\\n//\\n// Condensed table w/ half padding\\n//\\n\\n.table-sm {\\n th,\\n td {\\n padding: $table-cell-padding-sm;\\n }\\n}\\n\\n\\n// Border versions\\n//\\n// Add or remove borders all around the table and between all the columns.\\n\\n.table-bordered {\\n border: $table-border-width solid $table-border-color;\\n\\n th,\\n td {\\n border: $table-border-width solid $table-border-color;\\n }\\n\\n thead {\\n th,\\n td {\\n border-bottom-width: 2 * $table-border-width;\\n }\\n }\\n}\\n\\n.table-borderless {\\n th,\\n td,\\n thead th,\\n tbody + tbody {\\n border: 0;\\n }\\n}\\n\\n// Zebra-striping\\n//\\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\\n\\n.table-striped {\\n tbody tr:nth-of-type(#{$table-striped-order}) {\\n background-color: $table-accent-bg;\\n }\\n}\\n\\n\\n// Hover effect\\n//\\n// Placed here since it has to come after the potential zebra striping\\n\\n.table-hover {\\n tbody tr {\\n @include hover() {\\n color: $table-hover-color;\\n background-color: $table-hover-bg;\\n }\\n }\\n}\\n\\n\\n// Table backgrounds\\n//\\n// Exact selectors below required to override `.table-striped` and prevent\\n// inheritance to nested tables.\\n\\n@each $color, $value in $theme-colors {\\n @include table-row-variant($color, theme-color-level($color, $table-bg-level), theme-color-level($color, $table-border-level));\\n}\\n\\n@include table-row-variant(active, $table-active-bg);\\n\\n\\n// Dark styles\\n//\\n// Same table markup, but inverted color scheme: dark background and light text.\\n\\n// stylelint-disable-next-line no-duplicate-selectors\\n.table {\\n .thead-dark {\\n th {\\n color: $table-dark-color;\\n background-color: $table-dark-bg;\\n border-color: $table-dark-border-color;\\n }\\n }\\n\\n .thead-light {\\n th {\\n color: $table-head-color;\\n background-color: $table-head-bg;\\n border-color: $table-border-color;\\n }\\n }\\n}\\n\\n.table-dark {\\n color: $table-dark-color;\\n background-color: $table-dark-bg;\\n\\n th,\\n td,\\n thead th {\\n border-color: $table-dark-border-color;\\n }\\n\\n &.table-bordered {\\n border: 0;\\n }\\n\\n &.table-striped {\\n tbody tr:nth-of-type(#{$table-striped-order}) {\\n background-color: $table-dark-accent-bg;\\n }\\n }\\n\\n &.table-hover {\\n tbody tr {\\n @include hover() {\\n color: $table-dark-hover-color;\\n background-color: $table-dark-hover-bg;\\n }\\n }\\n }\\n}\\n\\n\\n// Responsive tables\\n//\\n// Generate series of `.table-responsive-*` classes for configuring the screen\\n// size of where your table will overflow.\\n\\n.table-responsive {\\n @each $breakpoint in map-keys($grid-breakpoints) {\\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\\n $infix: breakpoint-infix($next, $grid-breakpoints);\\n\\n &#{$infix} {\\n @include media-breakpoint-down($breakpoint) {\\n display: block;\\n width: 100%;\\n overflow-x: auto;\\n -webkit-overflow-scrolling: touch;\\n\\n // Prevent double border on horizontal scroll due to use of `display: block;`\\n > .table-bordered {\\n border: 0;\\n }\\n }\\n }\\n }\\n}\\n\",\"// Tables\\n\\n@mixin table-row-variant($state, $background, $border: null) {\\n // Exact selectors below required to override `.table-striped` and prevent\\n // inheritance to nested tables.\\n .table-#{$state} {\\n &,\\n > th,\\n > td {\\n background-color: $background;\\n }\\n\\n @if $border != null {\\n th,\\n td,\\n thead th,\\n tbody + tbody {\\n border-color: $border;\\n }\\n }\\n }\\n\\n // Hover states for `.table-hover`\\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\\n .table-hover {\\n $hover-background: darken($background, 5%);\\n\\n .table-#{$state} {\\n @include hover() {\\n background-color: $hover-background;\\n\\n > td,\\n > th {\\n background-color: $hover-background;\\n }\\n }\\n }\\n }\\n}\\n\",\"// stylelint-disable selector-no-qualifying-type\\n\\n//\\n// Textual form controls\\n//\\n\\n.form-control {\\n display: block;\\n width: 100%;\\n height: $input-height;\\n padding: $input-padding-y $input-padding-x;\\n font-family: $input-font-family;\\n @include font-size($input-font-size);\\n font-weight: $input-font-weight;\\n line-height: $input-line-height;\\n color: $input-color;\\n background-color: $input-bg;\\n background-clip: padding-box;\\n border: $input-border-width solid $input-border-color;\\n\\n // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\\n @include border-radius($input-border-radius, 0);\\n\\n @include box-shadow($input-box-shadow);\\n @include transition($input-transition);\\n\\n // Unstyle the caret on `<select>`s in IE10+.\\n &::-ms-expand {\\n background-color: transparent;\\n border: 0;\\n }\\n\\n // Customize the `:focus` state to imitate native WebKit styles.\\n @include form-control-focus($ignore-warning: true);\\n\\n // Placeholder\\n &::placeholder {\\n color: $input-placeholder-color;\\n // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\\n opacity: 1;\\n }\\n\\n // Disabled and read-only inputs\\n //\\n // HTML5 says that controls under a fieldset > legend:first-child won't be\\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\\n // don't honor that edge case; we style them as disabled anyway.\\n &:disabled,\\n &[readonly] {\\n background-color: $input-disabled-bg;\\n // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\\n opacity: 1;\\n }\\n}\\n\\ninput[type=\\\"date\\\"],\\ninput[type=\\\"time\\\"],\\ninput[type=\\\"datetime-local\\\"],\\ninput[type=\\\"month\\\"] {\\n &.form-control {\\n appearance: none; // Fix appearance for date inputs in Safari\\n }\\n}\\n\\nselect.form-control {\\n // Remove select outline from select box in FF\\n &:-moz-focusring {\\n color: transparent;\\n text-shadow: 0 0 0 $input-color;\\n }\\n\\n &:focus::-ms-value {\\n // Suppress the nested default white text on blue background highlight given to\\n // the selected option text when the (still closed) <select> receives focus\\n // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\\n // match the appearance of the native widget.\\n // See https://github.com/twbs/bootstrap/issues/19398.\\n color: $input-color;\\n background-color: $input-bg;\\n }\\n}\\n\\n// Make file inputs better match text inputs by forcing them to new lines.\\n.form-control-file,\\n.form-control-range {\\n display: block;\\n width: 100%;\\n}\\n\\n\\n//\\n// Labels\\n//\\n\\n// For use with horizontal and inline forms, when you need the label (or legend)\\n// text to align with the form controls.\\n.col-form-label {\\n padding-top: add($input-padding-y, $input-border-width);\\n padding-bottom: add($input-padding-y, $input-border-width);\\n margin-bottom: 0; // Override the `<label>/<legend>` default\\n @include font-size(inherit); // Override the `<legend>` default\\n line-height: $input-line-height;\\n}\\n\\n.col-form-label-lg {\\n padding-top: add($input-padding-y-lg, $input-border-width);\\n padding-bottom: add($input-padding-y-lg, $input-border-width);\\n @include font-size($input-font-size-lg);\\n line-height: $input-line-height-lg;\\n}\\n\\n.col-form-label-sm {\\n padding-top: add($input-padding-y-sm, $input-border-width);\\n padding-bottom: add($input-padding-y-sm, $input-border-width);\\n @include font-size($input-font-size-sm);\\n line-height: $input-line-height-sm;\\n}\\n\\n\\n// Readonly controls as plain text\\n//\\n// Apply class to a readonly input to make it appear like regular plain\\n// text (without any border, background color, focus indicator)\\n\\n.form-control-plaintext {\\n display: block;\\n width: 100%;\\n padding: $input-padding-y 0;\\n margin-bottom: 0; // match inputs if this class comes on inputs with default margins\\n @include font-size($input-font-size);\\n line-height: $input-line-height;\\n color: $input-plaintext-color;\\n background-color: transparent;\\n border: solid transparent;\\n border-width: $input-border-width 0;\\n\\n &.form-control-sm,\\n &.form-control-lg {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n}\\n\\n\\n// Form control sizing\\n//\\n// Build on `.form-control` with modifier classes to decrease or increase the\\n// height and font-size of form controls.\\n//\\n// Repeated in `_input_group.scss` to avoid Sass extend issues.\\n\\n.form-control-sm {\\n height: $input-height-sm;\\n padding: $input-padding-y-sm $input-padding-x-sm;\\n @include font-size($input-font-size-sm);\\n line-height: $input-line-height-sm;\\n @include border-radius($input-border-radius-sm);\\n}\\n\\n.form-control-lg {\\n height: $input-height-lg;\\n padding: $input-padding-y-lg $input-padding-x-lg;\\n @include font-size($input-font-size-lg);\\n line-height: $input-line-height-lg;\\n @include border-radius($input-border-radius-lg);\\n}\\n\\n// stylelint-disable-next-line no-duplicate-selectors\\nselect.form-control {\\n &[size],\\n &[multiple] {\\n height: auto;\\n }\\n}\\n\\ntextarea.form-control {\\n height: auto;\\n}\\n\\n// Form groups\\n//\\n// Designed to help with the organization and spacing of vertical forms. For\\n// horizontal forms, use the predefined grid classes.\\n\\n.form-group {\\n margin-bottom: $form-group-margin-bottom;\\n}\\n\\n.form-text {\\n display: block;\\n margin-top: $form-text-margin-top;\\n}\\n\\n\\n// Form grid\\n//\\n// Special replacement for our grid system's `.row` for tighter form layouts.\\n\\n.form-row {\\n display: flex;\\n flex-wrap: wrap;\\n margin-right: -$form-grid-gutter-width * .5;\\n margin-left: -$form-grid-gutter-width * .5;\\n\\n > .col,\\n > [class*=\\\"col-\\\"] {\\n padding-right: $form-grid-gutter-width * .5;\\n padding-left: $form-grid-gutter-width * .5;\\n }\\n}\\n\\n\\n// Checkboxes and radios\\n//\\n// Indent the labels to position radios/checkboxes as hanging controls.\\n\\n.form-check {\\n position: relative;\\n display: block;\\n padding-left: $form-check-input-gutter;\\n}\\n\\n.form-check-input {\\n position: absolute;\\n margin-top: $form-check-input-margin-y;\\n margin-left: -$form-check-input-gutter;\\n\\n // Use [disabled] and :disabled for workaround https://github.com/twbs/bootstrap/issues/28247\\n &[disabled] ~ .form-check-label,\\n &:disabled ~ .form-check-label {\\n color: $text-muted;\\n }\\n}\\n\\n.form-check-label {\\n margin-bottom: 0; // Override default `<label>` bottom margin\\n}\\n\\n.form-check-inline {\\n display: inline-flex;\\n align-items: center;\\n padding-left: 0; // Override base .form-check\\n margin-right: $form-check-inline-margin-x;\\n\\n // Undo .form-check-input defaults and add some `margin-right`.\\n .form-check-input {\\n position: static;\\n margin-top: 0;\\n margin-right: $form-check-inline-input-margin-x;\\n margin-left: 0;\\n }\\n}\\n\\n\\n// Form validation\\n//\\n// Provide feedback to users when form field values are valid or invalid. Works\\n// primarily for client-side validation via scoped `:invalid` and `:valid`\\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\\n// server side validation.\\n\\n@each $state, $data in $form-validation-states {\\n @include form-validation-state($state, map-get($data, color), map-get($data, icon));\\n}\\n\\n// Inline forms\\n//\\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\\n// forms begin stacked on extra small (mobile) devices and then go inline when\\n// viewports reach <768px.\\n//\\n// Requires wrapping inputs and labels with `.form-group` for proper display of\\n// default HTML form controls and our custom form controls (e.g., input groups).\\n\\n.form-inline {\\n display: flex;\\n flex-flow: row wrap;\\n align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\\n\\n // Because we use flex, the initial sizing of checkboxes is collapsed and\\n // doesn't occupy the full-width (which is what we want for xs grid tier),\\n // so we force that here.\\n .form-check {\\n width: 100%;\\n }\\n\\n // Kick in the inline\\n @include media-breakpoint-up(sm) {\\n label {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin-bottom: 0;\\n }\\n\\n // Inline-block all the things for \\\"inline\\\"\\n .form-group {\\n display: flex;\\n flex: 0 0 auto;\\n flex-flow: row wrap;\\n align-items: center;\\n margin-bottom: 0;\\n }\\n\\n // Allow folks to *not* use `.form-group`\\n .form-control {\\n display: inline-block;\\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\\n vertical-align: middle;\\n }\\n\\n // Make static controls behave like regular ones\\n .form-control-plaintext {\\n display: inline-block;\\n }\\n\\n .input-group,\\n .custom-select {\\n width: auto;\\n }\\n\\n // Remove default margin on radios/checkboxes that were used for stacking, and\\n // then undo the floating of radios and checkboxes to match.\\n .form-check {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: auto;\\n padding-left: 0;\\n }\\n .form-check-input {\\n position: relative;\\n flex-shrink: 0;\\n margin-top: 0;\\n margin-right: $form-check-input-margin-x;\\n margin-left: 0;\\n }\\n\\n .custom-control {\\n align-items: center;\\n justify-content: center;\\n }\\n .custom-control-label {\\n margin-bottom: 0;\\n }\\n }\\n}\\n\",\"// stylelint-disable property-disallowed-list\\n@mixin transition($transition...) {\\n @if length($transition) == 0 {\\n $transition: $transition-base;\\n }\\n\\n @if length($transition) > 1 {\\n @each $value in $transition {\\n @if $value == null or $value == none {\\n @warn \\\"The keyword 'none' or 'null' must be used as a single argument.\\\";\\n }\\n }\\n }\\n\\n @if $enable-transitions {\\n @if nth($transition, 1) != null {\\n transition: $transition;\\n }\\n\\n @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none {\\n @media (prefers-reduced-motion: reduce) {\\n transition: none;\\n }\\n }\\n }\\n}\\n\",\"// Form control focus state\\n//\\n// Generate a customized focus state and for any input with the specified color,\\n// which defaults to the `$input-focus-border-color` variable.\\n//\\n// We highly encourage you to not customize the default value, but instead use\\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\\n// WebKit's default styles, but applicable to a wider range of browsers. Its\\n// usability and accessibility should be taken into account with any change.\\n//\\n// Example usage: change the default blue border and shadow to white for better\\n// contrast against a dark gray background.\\n@mixin form-control-focus($ignore-warning: false) {\\n &:focus {\\n color: $input-focus-color;\\n background-color: $input-focus-bg;\\n border-color: $input-focus-border-color;\\n outline: 0;\\n @if $enable-shadows {\\n @include box-shadow($input-box-shadow, $input-focus-box-shadow);\\n } @else {\\n // Avoid using mixin so we can pass custom focus shadow properly\\n box-shadow: $input-focus-box-shadow;\\n }\\n }\\n @include deprecate(\\\"The `form-control-focus()` mixin\\\", \\\"v4.4.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\\n// This mixin uses an `if()` technique to be compatible with Dart Sass\\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\\n@mixin form-validation-state-selector($state) {\\n @if ($state == \\\"valid\\\" or $state == \\\"invalid\\\") {\\n .was-validated #{if(&, \\\"&\\\", \\\"\\\")}:#{$state},\\n #{if(&, \\\"&\\\", \\\"\\\")}.is-#{$state} {\\n @content;\\n }\\n } @else {\\n #{if(&, \\\"&\\\", \\\"\\\")}.is-#{$state} {\\n @content;\\n }\\n }\\n}\\n\\n@mixin form-validation-state($state, $color, $icon) {\\n .#{$state}-feedback {\\n display: none;\\n width: 100%;\\n margin-top: $form-feedback-margin-top;\\n @include font-size($form-feedback-font-size);\\n color: $color;\\n }\\n\\n .#{$state}-tooltip {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n z-index: 5;\\n display: none;\\n max-width: 100%; // Contain to parent when possible\\n padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\\n margin-top: .1rem;\\n @include font-size($form-feedback-tooltip-font-size);\\n line-height: $form-feedback-tooltip-line-height;\\n color: color-yiq($color);\\n background-color: rgba($color, $form-feedback-tooltip-opacity);\\n @include border-radius($form-feedback-tooltip-border-radius);\\n\\n // See https://github.com/twbs/bootstrap/pull/31557\\n // Align tooltip to form elements\\n .form-row > .col > &,\\n .form-row > [class*=\\\"col-\\\"] > & {\\n left: $form-grid-gutter-width * .5;\\n }\\n }\\n\\n @include form-validation-state-selector($state) {\\n ~ .#{$state}-feedback,\\n ~ .#{$state}-tooltip {\\n display: block;\\n }\\n }\\n\\n .form-control {\\n @include form-validation-state-selector($state) {\\n border-color: $color;\\n\\n @if $enable-validation-icons {\\n padding-right: $input-height-inner !important; // stylelint-disable-line declaration-no-important\\n background-image: escape-svg($icon);\\n background-repeat: no-repeat;\\n background-position: right $input-height-inner-quarter center;\\n background-size: $input-height-inner-half $input-height-inner-half;\\n }\\n\\n &:focus {\\n border-color: $color;\\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\\n }\\n }\\n }\\n\\n // stylelint-disable-next-line selector-no-qualifying-type\\n select.form-control {\\n @include form-validation-state-selector($state) {\\n @if $enable-validation-icons {\\n padding-right: $input-padding-x * 4 !important; // stylelint-disable-line declaration-no-important\\n background-position: right $input-padding-x * 2 center;\\n }\\n }\\n }\\n\\n // stylelint-disable-next-line selector-no-qualifying-type\\n textarea.form-control {\\n @include form-validation-state-selector($state) {\\n @if $enable-validation-icons {\\n padding-right: $input-height-inner;\\n background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\\n }\\n }\\n }\\n\\n .custom-select {\\n @include form-validation-state-selector($state) {\\n border-color: $color;\\n\\n @if $enable-validation-icons {\\n padding-right: $custom-select-feedback-icon-padding-right !important; // stylelint-disable-line declaration-no-important\\n background: $custom-select-background, $custom-select-bg escape-svg($icon) $custom-select-feedback-icon-position / $custom-select-feedback-icon-size no-repeat;\\n }\\n\\n &:focus {\\n border-color: $color;\\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\\n }\\n }\\n }\\n\\n .form-check-input {\\n @include form-validation-state-selector($state) {\\n ~ .form-check-label {\\n color: $color;\\n }\\n\\n ~ .#{$state}-feedback,\\n ~ .#{$state}-tooltip {\\n display: block;\\n }\\n }\\n }\\n\\n .custom-control-input {\\n @include form-validation-state-selector($state) {\\n ~ .custom-control-label {\\n color: $color;\\n\\n &::before {\\n border-color: $color;\\n }\\n }\\n\\n &:checked {\\n ~ .custom-control-label::before {\\n border-color: lighten($color, 10%);\\n @include gradient-bg(lighten($color, 10%));\\n }\\n }\\n\\n &:focus {\\n ~ .custom-control-label::before {\\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\\n }\\n\\n &:not(:checked) ~ .custom-control-label::before {\\n border-color: $color;\\n }\\n }\\n }\\n }\\n\\n // custom file\\n .custom-file-input {\\n @include form-validation-state-selector($state) {\\n ~ .custom-file-label {\\n border-color: $color;\\n }\\n\\n &:focus {\\n ~ .custom-file-label {\\n border-color: $color;\\n box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\\n }\\n }\\n }\\n }\\n}\\n\",\"// Gradients\\n\\n@mixin gradient-bg($color) {\\n @if $enable-gradients {\\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\\n } @else {\\n background-color: $color;\\n }\\n}\\n\\n// Horizontal gradient, from left to right\\n//\\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\\n background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\\n background-repeat: repeat-x;\\n}\\n\\n// Vertical gradient, from top to bottom\\n//\\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\\n background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\\n background-repeat: repeat-x;\\n}\\n\\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\\n background-image: linear-gradient($deg, $start-color, $end-color);\\n background-repeat: repeat-x;\\n}\\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\\n background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\\n background-repeat: no-repeat;\\n}\\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\\n background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\\n background-repeat: no-repeat;\\n}\\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\\n background-image: radial-gradient(circle, $inner-color, $outer-color);\\n background-repeat: no-repeat;\\n}\\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\\n background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\\n}\\n\",\"// stylelint-disable selector-no-qualifying-type\\n\\n//\\n// Base styles\\n//\\n\\n.btn {\\n display: inline-block;\\n font-family: $btn-font-family;\\n font-weight: $btn-font-weight;\\n color: $body-color;\\n text-align: center;\\n text-decoration: if($link-decoration == none, null, none);\\n white-space: $btn-white-space;\\n vertical-align: middle;\\n user-select: none;\\n background-color: transparent;\\n border: $btn-border-width solid transparent;\\n @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-line-height, $btn-border-radius);\\n @include transition($btn-transition);\\n\\n @include hover() {\\n color: $body-color;\\n text-decoration: none;\\n }\\n\\n &:focus,\\n &.focus {\\n outline: 0;\\n box-shadow: $btn-focus-box-shadow;\\n }\\n\\n // Disabled comes first so active can properly restyle\\n &.disabled,\\n &:disabled {\\n opacity: $btn-disabled-opacity;\\n @include box-shadow(none);\\n }\\n\\n &:not(:disabled):not(.disabled) {\\n cursor: if($enable-pointer-cursor-for-buttons, pointer, null);\\n\\n &:active,\\n &.active {\\n @include box-shadow($btn-active-box-shadow);\\n\\n &:focus {\\n @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\\n }\\n }\\n }\\n}\\n\\n// Future-proof disabling of clicks on `<a>` elements\\na.btn.disabled,\\nfieldset:disabled a.btn {\\n pointer-events: none;\\n}\\n\\n\\n//\\n// Alternate buttons\\n//\\n\\n@each $color, $value in $theme-colors {\\n .btn-#{$color} {\\n @include button-variant($value, $value);\\n }\\n}\\n\\n@each $color, $value in $theme-colors {\\n .btn-outline-#{$color} {\\n @include button-outline-variant($value);\\n }\\n}\\n\\n\\n//\\n// Link buttons\\n//\\n\\n// Make a button look and behave like a link\\n.btn-link {\\n font-weight: $font-weight-normal;\\n color: $link-color;\\n text-decoration: $link-decoration;\\n\\n @include hover() {\\n color: $link-hover-color;\\n text-decoration: $link-hover-decoration;\\n }\\n\\n &:focus,\\n &.focus {\\n text-decoration: $link-hover-decoration;\\n }\\n\\n &:disabled,\\n &.disabled {\\n color: $btn-link-disabled-color;\\n pointer-events: none;\\n }\\n\\n // No need for an active state here\\n}\\n\\n\\n//\\n// Button Sizes\\n//\\n\\n.btn-lg {\\n @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\\n}\\n\\n.btn-sm {\\n @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\\n}\\n\\n\\n//\\n// Block button\\n//\\n\\n.btn-block {\\n display: block;\\n width: 100%;\\n\\n // Vertically space out multiple block buttons\\n + .btn-block {\\n margin-top: $btn-block-spacing-y;\\n }\\n}\\n\\n// Specificity overrides\\ninput[type=\\\"submit\\\"],\\ninput[type=\\\"reset\\\"],\\ninput[type=\\\"button\\\"] {\\n &.btn-block {\\n width: 100%;\\n }\\n}\\n\",\"// Button variants\\n//\\n// Easily pump out default styles, as well as :hover, :focus, :active,\\n// and disabled options for all buttons\\n\\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\\n color: color-yiq($background);\\n @include gradient-bg($background);\\n border-color: $border;\\n @include box-shadow($btn-box-shadow);\\n\\n @include hover() {\\n color: color-yiq($hover-background);\\n @include gradient-bg($hover-background);\\n border-color: $hover-border;\\n }\\n\\n &:focus,\\n &.focus {\\n color: color-yiq($hover-background);\\n @include gradient-bg($hover-background);\\n border-color: $hover-border;\\n @if $enable-shadows {\\n @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));\\n } @else {\\n // Avoid using mixin so we can pass custom focus shadow properly\\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\\n }\\n }\\n\\n // Disabled comes first so active can properly restyle\\n &.disabled,\\n &:disabled {\\n color: color-yiq($background);\\n background-color: $background;\\n border-color: $border;\\n // Remove CSS gradients if they're enabled\\n @if $enable-gradients {\\n background-image: none;\\n }\\n }\\n\\n &:not(:disabled):not(.disabled):active,\\n &:not(:disabled):not(.disabled).active,\\n .show > &.dropdown-toggle {\\n color: color-yiq($active-background);\\n background-color: $active-background;\\n @if $enable-gradients {\\n background-image: none; // Remove the gradient for the pressed/active state\\n }\\n border-color: $active-border;\\n\\n &:focus {\\n @if $enable-shadows and $btn-active-box-shadow != none {\\n @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5));\\n } @else {\\n // Avoid using mixin so we can pass custom focus shadow properly\\n box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5);\\n }\\n }\\n }\\n}\\n\\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\\n color: $color;\\n border-color: $color;\\n\\n @include hover() {\\n color: $color-hover;\\n background-color: $active-background;\\n border-color: $active-border;\\n }\\n\\n &:focus,\\n &.focus {\\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\\n }\\n\\n &.disabled,\\n &:disabled {\\n color: $color;\\n background-color: transparent;\\n }\\n\\n &:not(:disabled):not(.disabled):active,\\n &:not(:disabled):not(.disabled).active,\\n .show > &.dropdown-toggle {\\n color: color-yiq($active-background);\\n background-color: $active-background;\\n border-color: $active-border;\\n\\n &:focus {\\n @if $enable-shadows and $btn-active-box-shadow != none {\\n @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));\\n } @else {\\n // Avoid using mixin so we can pass custom focus shadow properly\\n box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\\n }\\n }\\n }\\n}\\n\\n// Button sizes\\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\\n padding: $padding-y $padding-x;\\n @include font-size($font-size);\\n line-height: $line-height;\\n // Manually declare to provide an override to the browser default\\n @include border-radius($border-radius, 0);\\n}\\n\",\".fade {\\n @include transition($transition-fade);\\n\\n &:not(.show) {\\n opacity: 0;\\n }\\n}\\n\\n.collapse {\\n &:not(.show) {\\n display: none;\\n }\\n}\\n\\n.collapsing {\\n position: relative;\\n height: 0;\\n overflow: hidden;\\n @include transition($transition-collapse);\\n\\n &.width {\\n width: 0;\\n height: auto;\\n @include transition($transition-collapse-width);\\n }\\n}\\n\",\"// The dropdown wrapper (`<div>`)\\n.dropup,\\n.dropright,\\n.dropdown,\\n.dropleft {\\n position: relative;\\n}\\n\\n.dropdown-toggle {\\n white-space: nowrap;\\n\\n // Generate the caret automatically\\n @include caret();\\n}\\n\\n// The dropdown menu\\n.dropdown-menu {\\n position: absolute;\\n top: 100%;\\n left: 0;\\n z-index: $zindex-dropdown;\\n display: none; // none by default, but block on \\\"open\\\" of the menu\\n float: left;\\n min-width: $dropdown-min-width;\\n padding: $dropdown-padding-y $dropdown-padding-x;\\n margin: $dropdown-spacer 0 0; // override default ul\\n @include font-size($dropdown-font-size);\\n color: $dropdown-color;\\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\\n list-style: none;\\n background-color: $dropdown-bg;\\n background-clip: padding-box;\\n border: $dropdown-border-width solid $dropdown-border-color;\\n @include border-radius($dropdown-border-radius);\\n @include box-shadow($dropdown-box-shadow);\\n}\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .dropdown-menu#{$infix}-left {\\n right: auto;\\n left: 0;\\n }\\n\\n .dropdown-menu#{$infix}-right {\\n right: 0;\\n left: auto;\\n }\\n }\\n}\\n\\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\\n// Just add .dropup after the standard .dropdown class and you're set.\\n.dropup {\\n .dropdown-menu {\\n top: auto;\\n bottom: 100%;\\n margin-top: 0;\\n margin-bottom: $dropdown-spacer;\\n }\\n\\n .dropdown-toggle {\\n @include caret(up);\\n }\\n}\\n\\n.dropright {\\n .dropdown-menu {\\n top: 0;\\n right: auto;\\n left: 100%;\\n margin-top: 0;\\n margin-left: $dropdown-spacer;\\n }\\n\\n .dropdown-toggle {\\n @include caret(right);\\n &::after {\\n vertical-align: 0;\\n }\\n }\\n}\\n\\n.dropleft {\\n .dropdown-menu {\\n top: 0;\\n right: 100%;\\n left: auto;\\n margin-top: 0;\\n margin-right: $dropdown-spacer;\\n }\\n\\n .dropdown-toggle {\\n @include caret(left);\\n &::before {\\n vertical-align: 0;\\n }\\n }\\n}\\n\\n// When Popper is enabled, reset the basic dropdown position\\n// stylelint-disable-next-line no-duplicate-selectors\\n.dropdown-menu {\\n &[x-placement^=\\\"top\\\"],\\n &[x-placement^=\\\"right\\\"],\\n &[x-placement^=\\\"bottom\\\"],\\n &[x-placement^=\\\"left\\\"] {\\n right: auto;\\n bottom: auto;\\n }\\n}\\n\\n// Dividers (basically an `<hr>`) within the dropdown\\n.dropdown-divider {\\n @include nav-divider($dropdown-divider-bg, $dropdown-divider-margin-y, true);\\n}\\n\\n// Links, buttons, and more within the dropdown menu\\n//\\n// `<button>`-specific styles are denoted with `// For <button>s`\\n.dropdown-item {\\n display: block;\\n width: 100%; // For `<button>`s\\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\\n clear: both;\\n font-weight: $font-weight-normal;\\n color: $dropdown-link-color;\\n text-align: inherit; // For `<button>`s\\n text-decoration: if($link-decoration == none, null, none);\\n white-space: nowrap; // prevent links from randomly breaking onto new lines\\n background-color: transparent; // For `<button>`s\\n border: 0; // For `<button>`s\\n\\n // Prevent dropdown overflow if there's no padding\\n // See https://github.com/twbs/bootstrap/pull/27703\\n @if $dropdown-padding-y == 0 {\\n &:first-child {\\n @include border-top-radius($dropdown-inner-border-radius);\\n }\\n\\n &:last-child {\\n @include border-bottom-radius($dropdown-inner-border-radius);\\n }\\n }\\n\\n @include hover-focus() {\\n color: $dropdown-link-hover-color;\\n text-decoration: none;\\n @include gradient-bg($dropdown-link-hover-bg);\\n }\\n\\n &.active,\\n &:active {\\n color: $dropdown-link-active-color;\\n text-decoration: none;\\n @include gradient-bg($dropdown-link-active-bg);\\n }\\n\\n &.disabled,\\n &:disabled {\\n color: $dropdown-link-disabled-color;\\n pointer-events: none;\\n background-color: transparent;\\n // Remove CSS gradients if they're enabled\\n @if $enable-gradients {\\n background-image: none;\\n }\\n }\\n}\\n\\n.dropdown-menu.show {\\n display: block;\\n}\\n\\n// Dropdown section headers\\n.dropdown-header {\\n display: block;\\n padding: $dropdown-header-padding;\\n margin-bottom: 0; // for use with heading elements\\n @include font-size($font-size-sm);\\n color: $dropdown-header-color;\\n white-space: nowrap; // as with > li > a\\n}\\n\\n// Dropdown text\\n.dropdown-item-text {\\n display: block;\\n padding: $dropdown-item-padding-y $dropdown-item-padding-x;\\n color: $dropdown-link-color;\\n}\\n\",\"@mixin caret-down() {\\n border-top: $caret-width solid;\\n border-right: $caret-width solid transparent;\\n border-bottom: 0;\\n border-left: $caret-width solid transparent;\\n}\\n\\n@mixin caret-up() {\\n border-top: 0;\\n border-right: $caret-width solid transparent;\\n border-bottom: $caret-width solid;\\n border-left: $caret-width solid transparent;\\n}\\n\\n@mixin caret-right() {\\n border-top: $caret-width solid transparent;\\n border-right: 0;\\n border-bottom: $caret-width solid transparent;\\n border-left: $caret-width solid;\\n}\\n\\n@mixin caret-left() {\\n border-top: $caret-width solid transparent;\\n border-right: $caret-width solid;\\n border-bottom: $caret-width solid transparent;\\n}\\n\\n@mixin caret($direction: down) {\\n @if $enable-caret {\\n &::after {\\n display: inline-block;\\n margin-left: $caret-spacing;\\n vertical-align: $caret-vertical-align;\\n content: \\\"\\\";\\n @if $direction == down {\\n @include caret-down();\\n } @else if $direction == up {\\n @include caret-up();\\n } @else if $direction == right {\\n @include caret-right();\\n }\\n }\\n\\n @if $direction == left {\\n &::after {\\n display: none;\\n }\\n\\n &::before {\\n display: inline-block;\\n margin-right: $caret-spacing;\\n vertical-align: $caret-vertical-align;\\n content: \\\"\\\";\\n @include caret-left();\\n }\\n }\\n\\n &:empty::after {\\n margin-left: 0;\\n }\\n }\\n}\\n\",\"// Horizontal dividers\\n//\\n// Dividers (basically an hr) within dropdowns and nav lists\\n\\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) {\\n height: 0;\\n margin: $margin-y 0;\\n overflow: hidden;\\n border-top: 1px solid $color;\\n @include deprecate(\\\"The `nav-divider()` mixin\\\", \\\"v4.4.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\",\"// stylelint-disable selector-no-qualifying-type\\n\\n// Make the div behave like a button\\n.btn-group,\\n.btn-group-vertical {\\n position: relative;\\n display: inline-flex;\\n vertical-align: middle; // match .btn alignment given font-size hack above\\n\\n > .btn {\\n position: relative;\\n flex: 1 1 auto;\\n\\n // Bring the hover, focused, and \\\"active\\\" buttons to the front to overlay\\n // the borders properly\\n @include hover() {\\n z-index: 1;\\n }\\n &:focus,\\n &:active,\\n &.active {\\n z-index: 1;\\n }\\n }\\n}\\n\\n// Optional: Group multiple button groups together for a toolbar\\n.btn-toolbar {\\n display: flex;\\n flex-wrap: wrap;\\n justify-content: flex-start;\\n\\n .input-group {\\n width: auto;\\n }\\n}\\n\\n.btn-group {\\n // Prevent double borders when buttons are next to each other\\n > .btn:not(:first-child),\\n > .btn-group:not(:first-child) {\\n margin-left: -$btn-border-width;\\n }\\n\\n // Reset rounded corners\\n > .btn:not(:last-child):not(.dropdown-toggle),\\n > .btn-group:not(:last-child) > .btn {\\n @include border-right-radius(0);\\n }\\n\\n > .btn:not(:first-child),\\n > .btn-group:not(:first-child) > .btn {\\n @include border-left-radius(0);\\n }\\n}\\n\\n// Sizing\\n//\\n// Remix the default button sizing classes into new ones for easier manipulation.\\n\\n.btn-group-sm > .btn { @extend .btn-sm; }\\n.btn-group-lg > .btn { @extend .btn-lg; }\\n\\n\\n//\\n// Split button dropdowns\\n//\\n\\n.dropdown-toggle-split {\\n padding-right: $btn-padding-x * .75;\\n padding-left: $btn-padding-x * .75;\\n\\n &::after,\\n .dropup &::after,\\n .dropright &::after {\\n margin-left: 0;\\n }\\n\\n .dropleft &::before {\\n margin-right: 0;\\n }\\n}\\n\\n.btn-sm + .dropdown-toggle-split {\\n padding-right: $btn-padding-x-sm * .75;\\n padding-left: $btn-padding-x-sm * .75;\\n}\\n\\n.btn-lg + .dropdown-toggle-split {\\n padding-right: $btn-padding-x-lg * .75;\\n padding-left: $btn-padding-x-lg * .75;\\n}\\n\\n\\n// The clickable button for toggling the menu\\n// Set the same inset shadow as the :active state\\n.btn-group.show .dropdown-toggle {\\n @include box-shadow($btn-active-box-shadow);\\n\\n // Show no shadow for `.btn-link` since it has no other button styles.\\n &.btn-link {\\n @include box-shadow(none);\\n }\\n}\\n\\n\\n//\\n// Vertical button groups\\n//\\n\\n.btn-group-vertical {\\n flex-direction: column;\\n align-items: flex-start;\\n justify-content: center;\\n\\n > .btn,\\n > .btn-group {\\n width: 100%;\\n }\\n\\n > .btn:not(:first-child),\\n > .btn-group:not(:first-child) {\\n margin-top: -$btn-border-width;\\n }\\n\\n // Reset rounded corners\\n > .btn:not(:last-child):not(.dropdown-toggle),\\n > .btn-group:not(:last-child) > .btn {\\n @include border-bottom-radius(0);\\n }\\n\\n > .btn:not(:first-child),\\n > .btn-group:not(:first-child) > .btn {\\n @include border-top-radius(0);\\n }\\n}\\n\\n\\n// Checkbox and radio options\\n//\\n// In order to support the browser's form validation feedback, powered by the\\n// `required` attribute, we have to \\\"hide\\\" the inputs via `clip`. We cannot use\\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\\n// certain cases which is prevented by using `clip` and `pointer-events`.\\n// This way, we ensure a DOM element is visible to position the popover from.\\n//\\n// See https://github.com/twbs/bootstrap/pull/12794 and\\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\\n\\n.btn-group-toggle {\\n > .btn,\\n > .btn-group > .btn {\\n margin-bottom: 0; // Override default `<label>` value\\n\\n input[type=\\\"radio\\\"],\\n input[type=\\\"checkbox\\\"] {\\n position: absolute;\\n clip: rect(0, 0, 0, 0);\\n pointer-events: none;\\n }\\n }\\n}\\n\",\"// stylelint-disable selector-no-qualifying-type\\n\\n//\\n// Base styles\\n//\\n\\n.input-group {\\n position: relative;\\n display: flex;\\n flex-wrap: wrap; // For form validation feedback\\n align-items: stretch;\\n width: 100%;\\n\\n > .form-control,\\n > .form-control-plaintext,\\n > .custom-select,\\n > .custom-file {\\n position: relative; // For focus state's z-index\\n flex: 1 1 auto;\\n width: 1%;\\n min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\\n margin-bottom: 0;\\n\\n + .form-control,\\n + .custom-select,\\n + .custom-file {\\n margin-left: -$input-border-width;\\n }\\n }\\n\\n // Bring the \\\"active\\\" form control to the top of surrounding elements\\n > .form-control:focus,\\n > .custom-select:focus,\\n > .custom-file .custom-file-input:focus ~ .custom-file-label {\\n z-index: 3;\\n }\\n\\n // Bring the custom file input above the label\\n > .custom-file .custom-file-input:focus {\\n z-index: 4;\\n }\\n\\n > .form-control,\\n > .custom-select {\\n &:not(:first-child) { @include border-left-radius(0); }\\n }\\n\\n // Custom file inputs have more complex markup, thus requiring different\\n // border-radius overrides.\\n > .custom-file {\\n display: flex;\\n align-items: center;\\n\\n &:not(:last-child) .custom-file-label,\\n &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }\\n &:not(:first-child) .custom-file-label { @include border-left-radius(0); }\\n }\\n\\n &:not(.has-validation) {\\n > .form-control:not(:last-child),\\n > .custom-select:not(:last-child),\\n > .custom-file:not(:last-child) .custom-file-label,\\n > .custom-file:not(:last-child) .custom-file-label::after {\\n @include border-right-radius(0);\\n }\\n }\\n\\n &.has-validation {\\n > .form-control:nth-last-child(n + 3),\\n > .custom-select:nth-last-child(n + 3),\\n > .custom-file:nth-last-child(n + 3) .custom-file-label,\\n > .custom-file:nth-last-child(n + 3) .custom-file-label::after {\\n @include border-right-radius(0);\\n }\\n }\\n}\\n\\n\\n// Prepend and append\\n//\\n// While it requires one extra layer of HTML for each, dedicated prepend and\\n// append elements allow us to 1) be less clever, 2) simplify our selectors, and\\n// 3) support HTML5 form validation.\\n\\n.input-group-prepend,\\n.input-group-append {\\n display: flex;\\n\\n // Ensure buttons are always above inputs for more visually pleasing borders.\\n // This isn't needed for `.input-group-text` since it shares the same border-color\\n // as our inputs.\\n .btn {\\n position: relative;\\n z-index: 2;\\n\\n &:focus {\\n z-index: 3;\\n }\\n }\\n\\n .btn + .btn,\\n .btn + .input-group-text,\\n .input-group-text + .input-group-text,\\n .input-group-text + .btn {\\n margin-left: -$input-border-width;\\n }\\n}\\n\\n.input-group-prepend { margin-right: -$input-border-width; }\\n.input-group-append { margin-left: -$input-border-width; }\\n\\n\\n// Textual addons\\n//\\n// Serves as a catch-all element for any text or radio/checkbox input you wish\\n// to prepend or append to an input.\\n\\n.input-group-text {\\n display: flex;\\n align-items: center;\\n padding: $input-padding-y $input-padding-x;\\n margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\\n @include font-size($input-font-size); // Match inputs\\n font-weight: $font-weight-normal;\\n line-height: $input-line-height;\\n color: $input-group-addon-color;\\n text-align: center;\\n white-space: nowrap;\\n background-color: $input-group-addon-bg;\\n border: $input-border-width solid $input-group-addon-border-color;\\n @include border-radius($input-border-radius);\\n\\n // Nuke default margins from checkboxes and radios to vertically center within.\\n input[type=\\\"radio\\\"],\\n input[type=\\\"checkbox\\\"] {\\n margin-top: 0;\\n }\\n}\\n\\n\\n// Sizing\\n//\\n// Remix the default form control sizing classes into new ones for easier\\n// manipulation.\\n\\n.input-group-lg > .form-control:not(textarea),\\n.input-group-lg > .custom-select {\\n height: $input-height-lg;\\n}\\n\\n.input-group-lg > .form-control,\\n.input-group-lg > .custom-select,\\n.input-group-lg > .input-group-prepend > .input-group-text,\\n.input-group-lg > .input-group-append > .input-group-text,\\n.input-group-lg > .input-group-prepend > .btn,\\n.input-group-lg > .input-group-append > .btn {\\n padding: $input-padding-y-lg $input-padding-x-lg;\\n @include font-size($input-font-size-lg);\\n line-height: $input-line-height-lg;\\n @include border-radius($input-border-radius-lg);\\n}\\n\\n.input-group-sm > .form-control:not(textarea),\\n.input-group-sm > .custom-select {\\n height: $input-height-sm;\\n}\\n\\n.input-group-sm > .form-control,\\n.input-group-sm > .custom-select,\\n.input-group-sm > .input-group-prepend > .input-group-text,\\n.input-group-sm > .input-group-append > .input-group-text,\\n.input-group-sm > .input-group-prepend > .btn,\\n.input-group-sm > .input-group-append > .btn {\\n padding: $input-padding-y-sm $input-padding-x-sm;\\n @include font-size($input-font-size-sm);\\n line-height: $input-line-height-sm;\\n @include border-radius($input-border-radius-sm);\\n}\\n\\n.input-group-lg > .custom-select,\\n.input-group-sm > .custom-select {\\n padding-right: $custom-select-padding-x + $custom-select-indicator-padding;\\n}\\n\\n\\n// Prepend and append rounded corners\\n//\\n// These rulesets must come after the sizing ones to properly override sm and lg\\n// border-radius values when extending. They're more specific than we'd like\\n// with the `.input-group >` part, but without it, we cannot override the sizing.\\n\\n\\n.input-group > .input-group-prepend > .btn,\\n.input-group > .input-group-prepend > .input-group-text,\\n.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,\\n.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,\\n.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,\\n.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,\\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\\n @include border-right-radius(0);\\n}\\n\\n.input-group > .input-group-append > .btn,\\n.input-group > .input-group-append > .input-group-text,\\n.input-group > .input-group-prepend:not(:first-child) > .btn,\\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\\n @include border-left-radius(0);\\n}\\n\",\"// Embedded icons from Open Iconic.\\n// Released under MIT and copyright 2014 Waybury.\\n// https://useiconic.com/open\\n\\n\\n// Checkboxes and radios\\n//\\n// Base class takes care of all the key behavioral aspects.\\n\\n.custom-control {\\n position: relative;\\n z-index: 1;\\n display: block;\\n min-height: $font-size-base * $line-height-base;\\n padding-left: $custom-control-gutter + $custom-control-indicator-size;\\n print-color-adjust: exact; // Keep themed appearance for print\\n}\\n\\n.custom-control-inline {\\n display: inline-flex;\\n margin-right: $custom-control-spacer-x;\\n}\\n\\n.custom-control-input {\\n position: absolute;\\n left: 0;\\n z-index: -1; // Put the input behind the label so it doesn't overlay text\\n width: $custom-control-indicator-size;\\n height: ($font-size-base * $line-height-base + $custom-control-indicator-size) * .5;\\n opacity: 0;\\n\\n &:checked ~ .custom-control-label::before {\\n color: $custom-control-indicator-checked-color;\\n border-color: $custom-control-indicator-checked-border-color;\\n @include gradient-bg($custom-control-indicator-checked-bg);\\n @include box-shadow($custom-control-indicator-checked-box-shadow);\\n }\\n\\n &:focus ~ .custom-control-label::before {\\n // the mixin is not used here to make sure there is feedback\\n @if $enable-shadows {\\n box-shadow: $input-box-shadow, $custom-control-indicator-focus-box-shadow;\\n } @else {\\n box-shadow: $custom-control-indicator-focus-box-shadow;\\n }\\n }\\n\\n &:focus:not(:checked) ~ .custom-control-label::before {\\n border-color: $custom-control-indicator-focus-border-color;\\n }\\n\\n &:not(:disabled):active ~ .custom-control-label::before {\\n color: $custom-control-indicator-active-color;\\n background-color: $custom-control-indicator-active-bg;\\n border-color: $custom-control-indicator-active-border-color;\\n @include box-shadow($custom-control-indicator-active-box-shadow);\\n }\\n\\n // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247\\n &[disabled],\\n &:disabled {\\n ~ .custom-control-label {\\n color: $custom-control-label-disabled-color;\\n\\n &::before {\\n background-color: $custom-control-indicator-disabled-bg;\\n }\\n }\\n }\\n}\\n\\n// Custom control indicators\\n//\\n// Build the custom controls out of pseudo-elements.\\n\\n.custom-control-label {\\n position: relative;\\n margin-bottom: 0;\\n color: $custom-control-label-color;\\n vertical-align: top;\\n cursor: $custom-control-cursor;\\n\\n // Background-color and (when enabled) gradient\\n &::before {\\n position: absolute;\\n top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;\\n left: -($custom-control-gutter + $custom-control-indicator-size);\\n display: block;\\n width: $custom-control-indicator-size;\\n height: $custom-control-indicator-size;\\n pointer-events: none;\\n content: \\\"\\\";\\n background-color: $custom-control-indicator-bg;\\n border: $custom-control-indicator-border-width solid $custom-control-indicator-border-color;\\n @include box-shadow($custom-control-indicator-box-shadow);\\n }\\n\\n // Foreground (icon)\\n &::after {\\n position: absolute;\\n top: ($font-size-base * $line-height-base - $custom-control-indicator-size) * .5;\\n left: -($custom-control-gutter + $custom-control-indicator-size);\\n display: block;\\n width: $custom-control-indicator-size;\\n height: $custom-control-indicator-size;\\n content: \\\"\\\";\\n background: 50% / #{$custom-control-indicator-bg-size} no-repeat;\\n }\\n}\\n\\n\\n// Checkboxes\\n//\\n// Tweak just a few things for checkboxes.\\n\\n.custom-checkbox {\\n .custom-control-label::before {\\n @include border-radius($custom-checkbox-indicator-border-radius);\\n }\\n\\n .custom-control-input:checked ~ .custom-control-label {\\n &::after {\\n background-image: escape-svg($custom-checkbox-indicator-icon-checked);\\n }\\n }\\n\\n .custom-control-input:indeterminate ~ .custom-control-label {\\n &::before {\\n border-color: $custom-checkbox-indicator-indeterminate-border-color;\\n @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);\\n @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\\n }\\n &::after {\\n background-image: escape-svg($custom-checkbox-indicator-icon-indeterminate);\\n }\\n }\\n\\n .custom-control-input:disabled {\\n &:checked ~ .custom-control-label::before {\\n @include gradient-bg($custom-control-indicator-checked-disabled-bg);\\n }\\n &:indeterminate ~ .custom-control-label::before {\\n @include gradient-bg($custom-control-indicator-checked-disabled-bg);\\n }\\n }\\n}\\n\\n// Radios\\n//\\n// Tweak just a few things for radios.\\n\\n.custom-radio {\\n .custom-control-label::before {\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: $custom-radio-indicator-border-radius;\\n }\\n\\n .custom-control-input:checked ~ .custom-control-label {\\n &::after {\\n background-image: escape-svg($custom-radio-indicator-icon-checked);\\n }\\n }\\n\\n .custom-control-input:disabled {\\n &:checked ~ .custom-control-label::before {\\n @include gradient-bg($custom-control-indicator-checked-disabled-bg);\\n }\\n }\\n}\\n\\n\\n// switches\\n//\\n// Tweak a few things for switches\\n\\n.custom-switch {\\n padding-left: $custom-switch-width + $custom-control-gutter;\\n\\n .custom-control-label {\\n &::before {\\n left: -($custom-switch-width + $custom-control-gutter);\\n width: $custom-switch-width;\\n pointer-events: all;\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: $custom-switch-indicator-border-radius;\\n }\\n\\n &::after {\\n top: add(($font-size-base * $line-height-base - $custom-control-indicator-size) * .5, $custom-control-indicator-border-width * 2);\\n left: add(-($custom-switch-width + $custom-control-gutter), $custom-control-indicator-border-width * 2);\\n width: $custom-switch-indicator-size;\\n height: $custom-switch-indicator-size;\\n background-color: $custom-control-indicator-border-color;\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: $custom-switch-indicator-border-radius;\\n @include transition(transform .15s ease-in-out, $custom-forms-transition);\\n }\\n }\\n\\n .custom-control-input:checked ~ .custom-control-label {\\n &::after {\\n background-color: $custom-control-indicator-bg;\\n transform: translateX($custom-switch-width - $custom-control-indicator-size);\\n }\\n }\\n\\n .custom-control-input:disabled {\\n &:checked ~ .custom-control-label::before {\\n @include gradient-bg($custom-control-indicator-checked-disabled-bg);\\n }\\n }\\n}\\n\\n\\n// Select\\n//\\n// Replaces the browser default select with a custom one, mostly pulled from\\n// https://primer.github.io/.\\n//\\n\\n.custom-select {\\n display: inline-block;\\n width: 100%;\\n height: $custom-select-height;\\n padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\\n font-family: $custom-select-font-family;\\n @include font-size($custom-select-font-size);\\n font-weight: $custom-select-font-weight;\\n line-height: $custom-select-line-height;\\n color: $custom-select-color;\\n vertical-align: middle;\\n background: $custom-select-bg $custom-select-background;\\n border: $custom-select-border-width solid $custom-select-border-color;\\n @include border-radius($custom-select-border-radius, 0);\\n @include box-shadow($custom-select-box-shadow);\\n appearance: none;\\n\\n &:focus {\\n border-color: $custom-select-focus-border-color;\\n outline: 0;\\n @if $enable-shadows {\\n @include box-shadow($custom-select-box-shadow, $custom-select-focus-box-shadow);\\n } @else {\\n // Avoid using mixin so we can pass custom focus shadow properly\\n box-shadow: $custom-select-focus-box-shadow;\\n }\\n\\n &::-ms-value {\\n // For visual consistency with other platforms/browsers,\\n // suppress the default white text on blue background highlight given to\\n // the selected option text when the (still closed) <select> receives focus\\n // in IE and (under certain conditions) Edge.\\n // See https://github.com/twbs/bootstrap/issues/19398.\\n color: $input-color;\\n background-color: $input-bg;\\n }\\n }\\n\\n &[multiple],\\n &[size]:not([size=\\\"1\\\"]) {\\n height: auto;\\n padding-right: $custom-select-padding-x;\\n background-image: none;\\n }\\n\\n &:disabled {\\n color: $custom-select-disabled-color;\\n background-color: $custom-select-disabled-bg;\\n }\\n\\n // Hides the default caret in IE11\\n &::-ms-expand {\\n display: none;\\n }\\n\\n // Remove outline from select box in FF\\n &:-moz-focusring {\\n color: transparent;\\n text-shadow: 0 0 0 $custom-select-color;\\n }\\n}\\n\\n.custom-select-sm {\\n height: $custom-select-height-sm;\\n padding-top: $custom-select-padding-y-sm;\\n padding-bottom: $custom-select-padding-y-sm;\\n padding-left: $custom-select-padding-x-sm;\\n @include font-size($custom-select-font-size-sm);\\n}\\n\\n.custom-select-lg {\\n height: $custom-select-height-lg;\\n padding-top: $custom-select-padding-y-lg;\\n padding-bottom: $custom-select-padding-y-lg;\\n padding-left: $custom-select-padding-x-lg;\\n @include font-size($custom-select-font-size-lg);\\n}\\n\\n\\n// File\\n//\\n// Custom file input.\\n\\n.custom-file {\\n position: relative;\\n display: inline-block;\\n width: 100%;\\n height: $custom-file-height;\\n margin-bottom: 0;\\n}\\n\\n.custom-file-input {\\n position: relative;\\n z-index: 2;\\n width: 100%;\\n height: $custom-file-height;\\n margin: 0;\\n overflow: hidden;\\n opacity: 0;\\n\\n &:focus ~ .custom-file-label {\\n border-color: $custom-file-focus-border-color;\\n box-shadow: $custom-file-focus-box-shadow;\\n }\\n\\n // Use [disabled] and :disabled to work around https://github.com/twbs/bootstrap/issues/28247\\n &[disabled] ~ .custom-file-label,\\n &:disabled ~ .custom-file-label {\\n background-color: $custom-file-disabled-bg;\\n }\\n\\n @each $lang, $value in $custom-file-text {\\n &:lang(#{$lang}) ~ .custom-file-label::after {\\n content: $value;\\n }\\n }\\n\\n ~ .custom-file-label[data-browse]::after {\\n content: attr(data-browse);\\n }\\n}\\n\\n.custom-file-label {\\n position: absolute;\\n top: 0;\\n right: 0;\\n left: 0;\\n z-index: 1;\\n height: $custom-file-height;\\n padding: $custom-file-padding-y $custom-file-padding-x;\\n overflow: hidden;\\n font-family: $custom-file-font-family;\\n font-weight: $custom-file-font-weight;\\n line-height: $custom-file-line-height;\\n color: $custom-file-color;\\n background-color: $custom-file-bg;\\n border: $custom-file-border-width solid $custom-file-border-color;\\n @include border-radius($custom-file-border-radius);\\n @include box-shadow($custom-file-box-shadow);\\n\\n &::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 3;\\n display: block;\\n height: $custom-file-height-inner;\\n padding: $custom-file-padding-y $custom-file-padding-x;\\n line-height: $custom-file-line-height;\\n color: $custom-file-button-color;\\n content: \\\"Browse\\\";\\n @include gradient-bg($custom-file-button-bg);\\n border-left: inherit;\\n @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\\n }\\n}\\n\\n// Range\\n//\\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\\n// elements cannot be mixed. As such, there are no shared styles for focus or\\n// active states on prefixed selectors.\\n\\n.custom-range {\\n width: 100%;\\n height: add($custom-range-thumb-height, $custom-range-thumb-focus-box-shadow-width * 2);\\n padding: 0; // Need to reset padding\\n background-color: transparent;\\n appearance: none;\\n\\n &:focus {\\n outline: 0;\\n\\n // Pseudo-elements must be split across multiple rulesets to have an effect.\\n // No box-shadow() mixin for focus accessibility.\\n &::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }\\n &::-moz-range-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }\\n &::-ms-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }\\n }\\n\\n &::-moz-focus-outer {\\n border: 0;\\n }\\n\\n &::-webkit-slider-thumb {\\n width: $custom-range-thumb-width;\\n height: $custom-range-thumb-height;\\n margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific\\n @include gradient-bg($custom-range-thumb-bg);\\n border: $custom-range-thumb-border;\\n @include border-radius($custom-range-thumb-border-radius);\\n @include box-shadow($custom-range-thumb-box-shadow);\\n @include transition($custom-forms-transition);\\n appearance: none;\\n\\n &:active {\\n @include gradient-bg($custom-range-thumb-active-bg);\\n }\\n }\\n\\n &::-webkit-slider-runnable-track {\\n width: $custom-range-track-width;\\n height: $custom-range-track-height;\\n color: transparent; // Why?\\n cursor: $custom-range-track-cursor;\\n background-color: $custom-range-track-bg;\\n border-color: transparent;\\n @include border-radius($custom-range-track-border-radius);\\n @include box-shadow($custom-range-track-box-shadow);\\n }\\n\\n &::-moz-range-thumb {\\n width: $custom-range-thumb-width;\\n height: $custom-range-thumb-height;\\n @include gradient-bg($custom-range-thumb-bg);\\n border: $custom-range-thumb-border;\\n @include border-radius($custom-range-thumb-border-radius);\\n @include box-shadow($custom-range-thumb-box-shadow);\\n @include transition($custom-forms-transition);\\n appearance: none;\\n\\n &:active {\\n @include gradient-bg($custom-range-thumb-active-bg);\\n }\\n }\\n\\n &::-moz-range-track {\\n width: $custom-range-track-width;\\n height: $custom-range-track-height;\\n color: transparent;\\n cursor: $custom-range-track-cursor;\\n background-color: $custom-range-track-bg;\\n border-color: transparent; // Firefox specific?\\n @include border-radius($custom-range-track-border-radius);\\n @include box-shadow($custom-range-track-box-shadow);\\n }\\n\\n &::-ms-thumb {\\n width: $custom-range-thumb-width;\\n height: $custom-range-thumb-height;\\n margin-top: 0; // Edge specific\\n margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.\\n margin-left: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.\\n @include gradient-bg($custom-range-thumb-bg);\\n border: $custom-range-thumb-border;\\n @include border-radius($custom-range-thumb-border-radius);\\n @include box-shadow($custom-range-thumb-box-shadow);\\n @include transition($custom-forms-transition);\\n appearance: none;\\n\\n &:active {\\n @include gradient-bg($custom-range-thumb-active-bg);\\n }\\n }\\n\\n &::-ms-track {\\n width: $custom-range-track-width;\\n height: $custom-range-track-height;\\n color: transparent;\\n cursor: $custom-range-track-cursor;\\n background-color: transparent;\\n border-color: transparent;\\n border-width: $custom-range-thumb-height * .5;\\n @include box-shadow($custom-range-track-box-shadow);\\n }\\n\\n &::-ms-fill-lower {\\n background-color: $custom-range-track-bg;\\n @include border-radius($custom-range-track-border-radius);\\n }\\n\\n &::-ms-fill-upper {\\n margin-right: 15px; // arbitrary?\\n background-color: $custom-range-track-bg;\\n @include border-radius($custom-range-track-border-radius);\\n }\\n\\n &:disabled {\\n &::-webkit-slider-thumb {\\n background-color: $custom-range-thumb-disabled-bg;\\n }\\n\\n &::-webkit-slider-runnable-track {\\n cursor: default;\\n }\\n\\n &::-moz-range-thumb {\\n background-color: $custom-range-thumb-disabled-bg;\\n }\\n\\n &::-moz-range-track {\\n cursor: default;\\n }\\n\\n &::-ms-thumb {\\n background-color: $custom-range-thumb-disabled-bg;\\n }\\n }\\n}\\n\\n.custom-control-label::before,\\n.custom-file-label,\\n.custom-select {\\n @include transition($custom-forms-transition);\\n}\\n\",\"// Base class\\n//\\n// Kickstart any navigation component with a set of style resets. Works with\\n// `<nav>`s, `<ul>`s or `<ol>`s.\\n\\n.nav {\\n display: flex;\\n flex-wrap: wrap;\\n padding-left: 0;\\n margin-bottom: 0;\\n list-style: none;\\n}\\n\\n.nav-link {\\n display: block;\\n padding: $nav-link-padding-y $nav-link-padding-x;\\n text-decoration: if($link-decoration == none, null, none);\\n\\n @include hover-focus() {\\n text-decoration: none;\\n }\\n\\n // Disabled state lightens text\\n &.disabled {\\n color: $nav-link-disabled-color;\\n pointer-events: none;\\n cursor: default;\\n }\\n}\\n\\n//\\n// Tabs\\n//\\n\\n.nav-tabs {\\n border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\\n\\n .nav-link {\\n margin-bottom: -$nav-tabs-border-width;\\n background-color: transparent;\\n border: $nav-tabs-border-width solid transparent;\\n @include border-top-radius($nav-tabs-border-radius);\\n\\n @include hover-focus() {\\n // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\\n isolation: isolate;\\n border-color: $nav-tabs-link-hover-border-color;\\n }\\n\\n &.disabled {\\n color: $nav-link-disabled-color;\\n background-color: transparent;\\n border-color: transparent;\\n }\\n }\\n\\n .nav-link.active,\\n .nav-item.show .nav-link {\\n color: $nav-tabs-link-active-color;\\n background-color: $nav-tabs-link-active-bg;\\n border-color: $nav-tabs-link-active-border-color;\\n }\\n\\n .dropdown-menu {\\n // Make dropdown border overlap tab border\\n margin-top: -$nav-tabs-border-width;\\n // Remove the top rounded corners here since there is a hard edge above the menu\\n @include border-top-radius(0);\\n }\\n}\\n\\n\\n//\\n// Pills\\n//\\n\\n.nav-pills {\\n .nav-link {\\n background: none;\\n border: 0;\\n @include border-radius($nav-pills-border-radius);\\n }\\n\\n .nav-link.active,\\n .show > .nav-link {\\n color: $nav-pills-link-active-color;\\n background-color: $nav-pills-link-active-bg;\\n }\\n}\\n\\n\\n//\\n// Justified variants\\n//\\n\\n.nav-fill {\\n > .nav-link,\\n .nav-item {\\n flex: 1 1 auto;\\n text-align: center;\\n }\\n}\\n\\n.nav-justified {\\n > .nav-link,\\n .nav-item {\\n flex-basis: 0;\\n flex-grow: 1;\\n text-align: center;\\n }\\n}\\n\\n\\n// Tabbable tabs\\n//\\n// Hide tabbable panes to start, show them when `.active`\\n\\n.tab-content {\\n > .tab-pane {\\n display: none;\\n }\\n > .active {\\n display: block;\\n }\\n}\\n\",\"// Contents\\n//\\n// Navbar\\n// Navbar brand\\n// Navbar nav\\n// Navbar text\\n// Navbar divider\\n// Responsive navbar\\n// Navbar position\\n// Navbar themes\\n\\n\\n// Navbar\\n//\\n// Provide a static navbar from which we expand to create full-width, fixed, and\\n// other navbar variations.\\n\\n.navbar {\\n position: relative;\\n display: flex;\\n flex-wrap: wrap; // allow us to do the line break for collapsing content\\n align-items: center;\\n justify-content: space-between; // space out brand from logo\\n padding: $navbar-padding-y $navbar-padding-x;\\n\\n // Because flex properties aren't inherited, we need to redeclare these first\\n // few properties so that content nested within behave properly.\\n %container-flex-properties {\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: space-between;\\n }\\n\\n .container,\\n .container-fluid {\\n @extend %container-flex-properties;\\n }\\n\\n @each $breakpoint, $container-max-width in $container-max-widths {\\n > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\\n @extend %container-flex-properties;\\n }\\n }\\n}\\n\\n\\n// Navbar brand\\n//\\n// Used for brand, project, or site names.\\n\\n.navbar-brand {\\n display: inline-block;\\n padding-top: $navbar-brand-padding-y;\\n padding-bottom: $navbar-brand-padding-y;\\n margin-right: $navbar-padding-x;\\n @include font-size($navbar-brand-font-size);\\n line-height: inherit;\\n white-space: nowrap;\\n\\n @include hover-focus() {\\n text-decoration: none;\\n }\\n}\\n\\n\\n// Navbar nav\\n//\\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\\n\\n.navbar-nav {\\n display: flex;\\n flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\\n padding-left: 0;\\n margin-bottom: 0;\\n list-style: none;\\n\\n .nav-link {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n\\n .dropdown-menu {\\n position: static;\\n float: none;\\n }\\n}\\n\\n\\n// Navbar text\\n//\\n//\\n\\n.navbar-text {\\n display: inline-block;\\n padding-top: $nav-link-padding-y;\\n padding-bottom: $nav-link-padding-y;\\n}\\n\\n\\n// Responsive navbar\\n//\\n// Custom styles for responsive collapsing and toggling of navbar contents.\\n// Powered by the collapse Bootstrap JavaScript plugin.\\n\\n// When collapsed, prevent the toggleable navbar contents from appearing in\\n// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`\\n// on the `.navbar` parent.\\n.navbar-collapse {\\n flex-basis: 100%;\\n flex-grow: 1;\\n // For always expanded or extra full navbars, ensure content aligns itself\\n // properly vertically. Can be easily overridden with flex utilities.\\n align-items: center;\\n}\\n\\n// Button for toggling the navbar when in its collapsed state\\n.navbar-toggler {\\n padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\\n @include font-size($navbar-toggler-font-size);\\n line-height: 1;\\n background-color: transparent; // remove default button style\\n border: $border-width solid transparent; // remove default button style\\n @include border-radius($navbar-toggler-border-radius);\\n\\n @include hover-focus() {\\n text-decoration: none;\\n }\\n}\\n\\n// Keep as a separate element so folks can easily override it with another icon\\n// or image file as needed.\\n.navbar-toggler-icon {\\n display: inline-block;\\n width: 1.5em;\\n height: 1.5em;\\n vertical-align: middle;\\n content: \\\"\\\";\\n background: 50% / 100% 100% no-repeat;\\n}\\n\\n.navbar-nav-scroll {\\n max-height: $navbar-nav-scroll-max-height;\\n overflow-y: auto;\\n}\\n\\n// Generate series of `.navbar-expand-*` responsive classes for configuring\\n// where your navbar collapses.\\n.navbar-expand {\\n @each $breakpoint in map-keys($grid-breakpoints) {\\n $next: breakpoint-next($breakpoint, $grid-breakpoints);\\n $infix: breakpoint-infix($next, $grid-breakpoints);\\n\\n &#{$infix} {\\n @include media-breakpoint-down($breakpoint) {\\n %container-navbar-expand-#{$breakpoint} {\\n padding-right: 0;\\n padding-left: 0;\\n }\\n\\n > .container,\\n > .container-fluid {\\n @extend %container-navbar-expand-#{$breakpoint};\\n }\\n\\n @each $size, $container-max-width in $container-max-widths {\\n > .container#{breakpoint-infix($size, $container-max-widths)} {\\n @extend %container-navbar-expand-#{$breakpoint};\\n }\\n }\\n }\\n\\n @include media-breakpoint-up($next) {\\n flex-flow: row nowrap;\\n justify-content: flex-start;\\n\\n .navbar-nav {\\n flex-direction: row;\\n\\n .dropdown-menu {\\n position: absolute;\\n }\\n\\n .nav-link {\\n padding-right: $navbar-nav-link-padding-x;\\n padding-left: $navbar-nav-link-padding-x;\\n }\\n }\\n\\n // For nesting containers, have to redeclare for alignment purposes\\n %container-nesting-#{$breakpoint} {\\n flex-wrap: nowrap;\\n }\\n\\n > .container,\\n > .container-fluid {\\n @extend %container-nesting-#{$breakpoint};\\n }\\n\\n @each $size, $container-max-width in $container-max-widths {\\n > .container#{breakpoint-infix($size, $container-max-widths)} {\\n @extend %container-nesting-#{$breakpoint};\\n }\\n }\\n\\n .navbar-nav-scroll {\\n overflow: visible;\\n }\\n\\n .navbar-collapse {\\n display: flex !important; // stylelint-disable-line declaration-no-important\\n\\n // Changes flex-bases to auto because of an IE10 bug\\n flex-basis: auto;\\n }\\n\\n .navbar-toggler {\\n display: none;\\n }\\n }\\n }\\n }\\n}\\n\\n\\n// Navbar themes\\n//\\n// Styles for switching between navbars with light or dark background.\\n\\n// Dark links against a light background\\n.navbar-light {\\n .navbar-brand {\\n color: $navbar-light-brand-color;\\n\\n @include hover-focus() {\\n color: $navbar-light-brand-hover-color;\\n }\\n }\\n\\n .navbar-nav {\\n .nav-link {\\n color: $navbar-light-color;\\n\\n @include hover-focus() {\\n color: $navbar-light-hover-color;\\n }\\n\\n &.disabled {\\n color: $navbar-light-disabled-color;\\n }\\n }\\n\\n .show > .nav-link,\\n .active > .nav-link,\\n .nav-link.show,\\n .nav-link.active {\\n color: $navbar-light-active-color;\\n }\\n }\\n\\n .navbar-toggler {\\n color: $navbar-light-color;\\n border-color: $navbar-light-toggler-border-color;\\n }\\n\\n .navbar-toggler-icon {\\n background-image: escape-svg($navbar-light-toggler-icon-bg);\\n }\\n\\n .navbar-text {\\n color: $navbar-light-color;\\n a {\\n color: $navbar-light-active-color;\\n\\n @include hover-focus() {\\n color: $navbar-light-active-color;\\n }\\n }\\n }\\n}\\n\\n// White links against a dark background\\n.navbar-dark {\\n .navbar-brand {\\n color: $navbar-dark-brand-color;\\n\\n @include hover-focus() {\\n color: $navbar-dark-brand-hover-color;\\n }\\n }\\n\\n .navbar-nav {\\n .nav-link {\\n color: $navbar-dark-color;\\n\\n @include hover-focus() {\\n color: $navbar-dark-hover-color;\\n }\\n\\n &.disabled {\\n color: $navbar-dark-disabled-color;\\n }\\n }\\n\\n .show > .nav-link,\\n .active > .nav-link,\\n .nav-link.show,\\n .nav-link.active {\\n color: $navbar-dark-active-color;\\n }\\n }\\n\\n .navbar-toggler {\\n color: $navbar-dark-color;\\n border-color: $navbar-dark-toggler-border-color;\\n }\\n\\n .navbar-toggler-icon {\\n background-image: escape-svg($navbar-dark-toggler-icon-bg);\\n }\\n\\n .navbar-text {\\n color: $navbar-dark-color;\\n a {\\n color: $navbar-dark-active-color;\\n\\n @include hover-focus() {\\n color: $navbar-dark-active-color;\\n }\\n }\\n }\\n}\\n\",\"//\\n// Base styles\\n//\\n\\n.card {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\\n height: $card-height;\\n word-wrap: break-word;\\n background-color: $card-bg;\\n background-clip: border-box;\\n border: $card-border-width solid $card-border-color;\\n @include border-radius($card-border-radius);\\n\\n > hr {\\n margin-right: 0;\\n margin-left: 0;\\n }\\n\\n > .list-group {\\n border-top: inherit;\\n border-bottom: inherit;\\n\\n &:first-child {\\n border-top-width: 0;\\n @include border-top-radius($card-inner-border-radius);\\n }\\n\\n &:last-child {\\n border-bottom-width: 0;\\n @include border-bottom-radius($card-inner-border-radius);\\n }\\n }\\n\\n // Due to specificity of the above selector (`.card > .list-group`), we must\\n // use a child selector here to prevent double borders.\\n > .card-header + .list-group,\\n > .list-group + .card-footer {\\n border-top: 0;\\n }\\n}\\n\\n.card-body {\\n // Enable `flex-grow: 1` for decks and groups so that card blocks take up\\n // as much space as possible, ensuring footers are aligned to the bottom.\\n flex: 1 1 auto;\\n // Workaround for the image size bug in IE\\n // See: https://github.com/twbs/bootstrap/pull/28855\\n min-height: 1px;\\n padding: $card-spacer-x;\\n color: $card-color;\\n}\\n\\n.card-title {\\n margin-bottom: $card-spacer-y;\\n}\\n\\n.card-subtitle {\\n margin-top: -$card-spacer-y * .5;\\n margin-bottom: 0;\\n}\\n\\n.card-text:last-child {\\n margin-bottom: 0;\\n}\\n\\n.card-link {\\n @include hover() {\\n text-decoration: none;\\n }\\n\\n + .card-link {\\n margin-left: $card-spacer-x;\\n }\\n}\\n\\n//\\n// Optional textual caps\\n//\\n\\n.card-header {\\n padding: $card-spacer-y $card-spacer-x;\\n margin-bottom: 0; // Removes the default margin-bottom of <hN>\\n color: $card-cap-color;\\n background-color: $card-cap-bg;\\n border-bottom: $card-border-width solid $card-border-color;\\n\\n &:first-child {\\n @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\\n }\\n}\\n\\n.card-footer {\\n padding: $card-spacer-y $card-spacer-x;\\n color: $card-cap-color;\\n background-color: $card-cap-bg;\\n border-top: $card-border-width solid $card-border-color;\\n\\n &:last-child {\\n @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\\n }\\n}\\n\\n\\n//\\n// Header navs\\n//\\n\\n.card-header-tabs {\\n margin-right: -$card-spacer-x * .5;\\n margin-bottom: -$card-spacer-y;\\n margin-left: -$card-spacer-x * .5;\\n border-bottom: 0;\\n}\\n\\n.card-header-pills {\\n margin-right: -$card-spacer-x * .5;\\n margin-left: -$card-spacer-x * .5;\\n}\\n\\n// Card image\\n.card-img-overlay {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n padding: $card-img-overlay-padding;\\n @include border-radius($card-inner-border-radius);\\n}\\n\\n.card-img,\\n.card-img-top,\\n.card-img-bottom {\\n flex-shrink: 0; // For IE: https://github.com/twbs/bootstrap/issues/29396\\n width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\\n}\\n\\n.card-img,\\n.card-img-top {\\n @include border-top-radius($card-inner-border-radius);\\n}\\n\\n.card-img,\\n.card-img-bottom {\\n @include border-bottom-radius($card-inner-border-radius);\\n}\\n\\n\\n// Card deck\\n\\n.card-deck {\\n .card {\\n margin-bottom: $card-deck-margin;\\n }\\n\\n @include media-breakpoint-up(sm) {\\n display: flex;\\n flex-flow: row wrap;\\n margin-right: -$card-deck-margin;\\n margin-left: -$card-deck-margin;\\n\\n .card {\\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\\n flex: 1 0 0%;\\n margin-right: $card-deck-margin;\\n margin-bottom: 0; // Override the default\\n margin-left: $card-deck-margin;\\n }\\n }\\n}\\n\\n\\n//\\n// Card groups\\n//\\n\\n.card-group {\\n // The child selector allows nested `.card` within `.card-group`\\n // to display properly.\\n > .card {\\n margin-bottom: $card-group-margin;\\n }\\n\\n @include media-breakpoint-up(sm) {\\n display: flex;\\n flex-flow: row wrap;\\n // The child selector allows nested `.card` within `.card-group`\\n // to display properly.\\n > .card {\\n // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\\n flex: 1 0 0%;\\n margin-bottom: 0;\\n\\n + .card {\\n margin-left: 0;\\n border-left: 0;\\n }\\n\\n // Handle rounded corners\\n @if $enable-rounded {\\n &:not(:last-child) {\\n @include border-right-radius(0);\\n\\n .card-img-top,\\n .card-header {\\n // stylelint-disable-next-line property-disallowed-list\\n border-top-right-radius: 0;\\n }\\n .card-img-bottom,\\n .card-footer {\\n // stylelint-disable-next-line property-disallowed-list\\n border-bottom-right-radius: 0;\\n }\\n }\\n\\n &:not(:first-child) {\\n @include border-left-radius(0);\\n\\n .card-img-top,\\n .card-header {\\n // stylelint-disable-next-line property-disallowed-list\\n border-top-left-radius: 0;\\n }\\n .card-img-bottom,\\n .card-footer {\\n // stylelint-disable-next-line property-disallowed-list\\n border-bottom-left-radius: 0;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n\\n//\\n// Columns\\n//\\n\\n.card-columns {\\n .card {\\n margin-bottom: $card-columns-margin;\\n }\\n\\n @include media-breakpoint-up(sm) {\\n column-count: $card-columns-count;\\n column-gap: $card-columns-gap;\\n orphans: 1;\\n widows: 1;\\n\\n .card {\\n display: inline-block; // Don't let them vertically span multiple columns\\n width: 100%; // Don't let their width change\\n }\\n }\\n}\\n\\n\\n//\\n// Accordion\\n//\\n\\n.accordion {\\n overflow-anchor: none;\\n\\n > .card {\\n overflow: hidden;\\n\\n &:not(:last-of-type) {\\n border-bottom: 0;\\n @include border-bottom-radius(0);\\n }\\n\\n &:not(:first-of-type) {\\n @include border-top-radius(0);\\n }\\n\\n > .card-header {\\n @include border-radius(0);\\n margin-bottom: -$card-border-width;\\n }\\n }\\n}\\n\",\".breadcrumb {\\n display: flex;\\n flex-wrap: wrap;\\n padding: $breadcrumb-padding-y $breadcrumb-padding-x;\\n margin-bottom: $breadcrumb-margin-bottom;\\n @include font-size($breadcrumb-font-size);\\n list-style: none;\\n background-color: $breadcrumb-bg;\\n @include border-radius($breadcrumb-border-radius);\\n}\\n\\n.breadcrumb-item {\\n // The separator between breadcrumbs (by default, a forward-slash: \\\"/\\\")\\n + .breadcrumb-item {\\n padding-left: $breadcrumb-item-padding;\\n\\n &::before {\\n float: left; // Suppress inline spacings and underlining of the separator\\n padding-right: $breadcrumb-item-padding;\\n color: $breadcrumb-divider-color;\\n content: escape-svg($breadcrumb-divider);\\n }\\n }\\n\\n // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\\n // without `<ul>`s. The `::before` pseudo-element generates an element\\n // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\\n //\\n // To trick IE into suppressing the underline, we give the pseudo-element an\\n // underline and then immediately remove it.\\n + .breadcrumb-item:hover::before {\\n text-decoration: underline;\\n }\\n // stylelint-disable-next-line no-duplicate-selectors\\n + .breadcrumb-item:hover::before {\\n text-decoration: none;\\n }\\n\\n &.active {\\n color: $breadcrumb-active-color;\\n }\\n}\\n\",\".pagination {\\n display: flex;\\n @include list-unstyled();\\n @include border-radius();\\n}\\n\\n.page-link {\\n position: relative;\\n display: block;\\n padding: $pagination-padding-y $pagination-padding-x;\\n margin-left: -$pagination-border-width;\\n line-height: $pagination-line-height;\\n color: $pagination-color;\\n text-decoration: if($link-decoration == none, null, none);\\n background-color: $pagination-bg;\\n border: $pagination-border-width solid $pagination-border-color;\\n\\n &:hover {\\n z-index: 2;\\n color: $pagination-hover-color;\\n text-decoration: none;\\n background-color: $pagination-hover-bg;\\n border-color: $pagination-hover-border-color;\\n }\\n\\n &:focus {\\n z-index: 3;\\n outline: $pagination-focus-outline;\\n box-shadow: $pagination-focus-box-shadow;\\n }\\n}\\n\\n.page-item {\\n &:first-child {\\n .page-link {\\n margin-left: 0;\\n @include border-left-radius($border-radius);\\n }\\n }\\n &:last-child {\\n .page-link {\\n @include border-right-radius($border-radius);\\n }\\n }\\n\\n &.active .page-link {\\n z-index: 3;\\n color: $pagination-active-color;\\n background-color: $pagination-active-bg;\\n border-color: $pagination-active-border-color;\\n }\\n\\n &.disabled .page-link {\\n color: $pagination-disabled-color;\\n pointer-events: none;\\n // Opinionated: remove the \\\"hand\\\" cursor set previously for .page-link\\n cursor: auto;\\n background-color: $pagination-disabled-bg;\\n border-color: $pagination-disabled-border-color;\\n }\\n}\\n\\n\\n//\\n// Sizing\\n//\\n\\n.pagination-lg {\\n @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $pagination-border-radius-lg);\\n}\\n\\n.pagination-sm {\\n @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $pagination-border-radius-sm);\\n}\\n\",\"// Pagination\\n\\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\\n .page-link {\\n padding: $padding-y $padding-x;\\n @include font-size($font-size);\\n line-height: $line-height;\\n }\\n\\n .page-item {\\n &:first-child {\\n .page-link {\\n @include border-left-radius($border-radius);\\n }\\n }\\n &:last-child {\\n .page-link {\\n @include border-right-radius($border-radius);\\n }\\n }\\n }\\n}\\n\",\"// Base class\\n//\\n// Requires one of the contextual, color modifier classes for `color` and\\n// `background-color`.\\n\\n.badge {\\n display: inline-block;\\n padding: $badge-padding-y $badge-padding-x;\\n @include font-size($badge-font-size);\\n font-weight: $badge-font-weight;\\n line-height: 1;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: baseline;\\n @include border-radius($badge-border-radius);\\n @include transition($badge-transition);\\n\\n @at-root a#{&} {\\n @include hover-focus() {\\n text-decoration: none;\\n }\\n }\\n\\n // Empty badges collapse automatically\\n &:empty {\\n display: none;\\n }\\n}\\n\\n// Quick fix for badges in buttons\\n.btn .badge {\\n position: relative;\\n top: -1px;\\n}\\n\\n// Pill badges\\n//\\n// Make them extra rounded with a modifier to replace v3's badges.\\n\\n.badge-pill {\\n padding-right: $badge-pill-padding-x;\\n padding-left: $badge-pill-padding-x;\\n @include border-radius($badge-pill-border-radius);\\n}\\n\\n// Colors\\n//\\n// Contextual variations (linked badges get darker on :hover).\\n\\n@each $color, $value in $theme-colors {\\n .badge-#{$color} {\\n @include badge-variant($value);\\n }\\n}\\n\",\"@mixin badge-variant($bg) {\\n color: color-yiq($bg);\\n background-color: $bg;\\n\\n @at-root a#{&} {\\n @include hover-focus() {\\n color: color-yiq($bg);\\n background-color: darken($bg, 10%);\\n }\\n\\n &:focus,\\n &.focus {\\n outline: 0;\\n box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5);\\n }\\n }\\n}\\n\",\".jumbotron {\\n padding: $jumbotron-padding ($jumbotron-padding * .5);\\n margin-bottom: $jumbotron-padding;\\n color: $jumbotron-color;\\n background-color: $jumbotron-bg;\\n @include border-radius($border-radius-lg);\\n\\n @include media-breakpoint-up(sm) {\\n padding: ($jumbotron-padding * 2) $jumbotron-padding;\\n }\\n}\\n\\n.jumbotron-fluid {\\n padding-right: 0;\\n padding-left: 0;\\n @include border-radius(0);\\n}\\n\",\"//\\n// Base styles\\n//\\n\\n.alert {\\n position: relative;\\n padding: $alert-padding-y $alert-padding-x;\\n margin-bottom: $alert-margin-bottom;\\n border: $alert-border-width solid transparent;\\n @include border-radius($alert-border-radius);\\n}\\n\\n// Headings for larger alerts\\n.alert-heading {\\n // Specified to prevent conflicts of changing $headings-color\\n color: inherit;\\n}\\n\\n// Provide class for links that match alerts\\n.alert-link {\\n font-weight: $alert-link-font-weight;\\n}\\n\\n\\n// Dismissible alerts\\n//\\n// Expand the right padding and account for the close button's positioning.\\n\\n.alert-dismissible {\\n padding-right: $close-font-size + $alert-padding-x * 2;\\n\\n // Adjust close link position\\n .close {\\n position: absolute;\\n top: 0;\\n right: 0;\\n z-index: 2;\\n padding: $alert-padding-y $alert-padding-x;\\n color: inherit;\\n }\\n}\\n\\n\\n// Alternate styles\\n//\\n// Generate contextual modifier classes for colorizing the alert.\\n\\n@each $color, $value in $theme-colors {\\n .alert-#{$color} {\\n @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\\n }\\n}\\n\",\"@mixin alert-variant($background, $border, $color) {\\n color: $color;\\n @include gradient-bg($background);\\n border-color: $border;\\n\\n hr {\\n border-top-color: darken($border, 5%);\\n }\\n\\n .alert-link {\\n color: darken($color, 10%);\\n }\\n}\\n\",\"// Disable animation if transitions are disabled\\n@if $enable-transitions {\\n @keyframes progress-bar-stripes {\\n from { background-position: $progress-height 0; }\\n to { background-position: 0 0; }\\n }\\n}\\n\\n.progress {\\n display: flex;\\n height: $progress-height;\\n overflow: hidden; // force rounded corners by cropping it\\n line-height: 0;\\n @include font-size($progress-font-size);\\n background-color: $progress-bg;\\n @include border-radius($progress-border-radius);\\n @include box-shadow($progress-box-shadow);\\n}\\n\\n.progress-bar {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n overflow: hidden;\\n color: $progress-bar-color;\\n text-align: center;\\n white-space: nowrap;\\n background-color: $progress-bar-bg;\\n @include transition($progress-bar-transition);\\n}\\n\\n.progress-bar-striped {\\n @include gradient-striped();\\n background-size: $progress-height $progress-height;\\n}\\n\\n@if $enable-transitions {\\n .progress-bar-animated {\\n animation: $progress-bar-animation-timing progress-bar-stripes;\\n\\n @if $enable-prefers-reduced-motion-media-query {\\n @media (prefers-reduced-motion: reduce) {\\n animation: none;\\n }\\n }\\n }\\n}\\n\",\".media {\\n display: flex;\\n align-items: flex-start;\\n}\\n\\n.media-body {\\n flex: 1;\\n}\\n\",\"// Base class\\n//\\n// Easily usable on <ul>, <ol>, or <div>.\\n\\n.list-group {\\n display: flex;\\n flex-direction: column;\\n\\n // No need to set list-style: none; since .list-group-item is block level\\n padding-left: 0; // reset padding because ul and ol\\n margin-bottom: 0;\\n @include border-radius($list-group-border-radius);\\n}\\n\\n\\n// Interactive list items\\n//\\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\\n// list items. Includes an extra `.active` modifier class for selected items.\\n\\n.list-group-item-action {\\n width: 100%; // For `<button>`s (anchors become 100% by default though)\\n color: $list-group-action-color;\\n text-align: inherit; // For `<button>`s (anchors inherit)\\n\\n // Hover state\\n @include hover-focus() {\\n z-index: 1; // Place hover/focus items above their siblings for proper border styling\\n color: $list-group-action-hover-color;\\n text-decoration: none;\\n background-color: $list-group-hover-bg;\\n }\\n\\n &:active {\\n color: $list-group-action-active-color;\\n background-color: $list-group-action-active-bg;\\n }\\n}\\n\\n\\n// Individual list items\\n//\\n// Use on `li`s or `div`s within the `.list-group` parent.\\n\\n.list-group-item {\\n position: relative;\\n display: block;\\n padding: $list-group-item-padding-y $list-group-item-padding-x;\\n color: $list-group-color;\\n text-decoration: if($link-decoration == none, null, none);\\n background-color: $list-group-bg;\\n border: $list-group-border-width solid $list-group-border-color;\\n\\n &:first-child {\\n @include border-top-radius(inherit);\\n }\\n\\n &:last-child {\\n @include border-bottom-radius(inherit);\\n }\\n\\n &.disabled,\\n &:disabled {\\n color: $list-group-disabled-color;\\n pointer-events: none;\\n background-color: $list-group-disabled-bg;\\n }\\n\\n // Include both here for `<a>`s and `<button>`s\\n &.active {\\n z-index: 2; // Place active items above their siblings for proper border styling\\n color: $list-group-active-color;\\n background-color: $list-group-active-bg;\\n border-color: $list-group-active-border-color;\\n }\\n\\n & + & {\\n border-top-width: 0;\\n\\n &.active {\\n margin-top: -$list-group-border-width;\\n border-top-width: $list-group-border-width;\\n }\\n }\\n}\\n\\n\\n// Horizontal\\n//\\n// Change the layout of list group items from vertical (default) to horizontal.\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .list-group-horizontal#{$infix} {\\n flex-direction: row;\\n\\n > .list-group-item {\\n &:first-child {\\n @include border-bottom-left-radius($list-group-border-radius);\\n @include border-top-right-radius(0);\\n }\\n\\n &:last-child {\\n @include border-top-right-radius($list-group-border-radius);\\n @include border-bottom-left-radius(0);\\n }\\n\\n &.active {\\n margin-top: 0;\\n }\\n\\n + .list-group-item {\\n border-top-width: $list-group-border-width;\\n border-left-width: 0;\\n\\n &.active {\\n margin-left: -$list-group-border-width;\\n border-left-width: $list-group-border-width;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n\\n// Flush list items\\n//\\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\\n// useful within other components (e.g., cards).\\n\\n.list-group-flush {\\n @include border-radius(0);\\n\\n > .list-group-item {\\n border-width: 0 0 $list-group-border-width;\\n\\n &:last-child {\\n border-bottom-width: 0;\\n }\\n }\\n}\\n\\n\\n// Contextual variants\\n//\\n// Add modifier classes to change text and background color on individual items.\\n// Organizationally, this must come after the `:hover` states.\\n\\n@each $color, $value in $theme-colors {\\n @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\\n}\\n\",\"// List Groups\\n\\n@mixin list-group-item-variant($state, $background, $color) {\\n .list-group-item-#{$state} {\\n color: $color;\\n background-color: $background;\\n\\n &.list-group-item-action {\\n @include hover-focus() {\\n color: $color;\\n background-color: darken($background, 5%);\\n }\\n\\n &.active {\\n color: $white;\\n background-color: $color;\\n border-color: $color;\\n }\\n }\\n }\\n}\\n\",\".close {\\n float: right;\\n @include font-size($close-font-size);\\n font-weight: $close-font-weight;\\n line-height: 1;\\n color: $close-color;\\n text-shadow: $close-text-shadow;\\n opacity: .5;\\n\\n // Override <a>'s hover style\\n @include hover() {\\n color: $close-color;\\n text-decoration: none;\\n }\\n\\n &:not(:disabled):not(.disabled) {\\n @include hover-focus() {\\n opacity: .75;\\n }\\n }\\n}\\n\\n// Additional properties for button version\\n// iOS requires the button element instead of an anchor tag.\\n// If you want the anchor version, it requires `href=\\\"#\\\"`.\\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\\n\\n// stylelint-disable-next-line selector-no-qualifying-type\\nbutton.close {\\n padding: 0;\\n background-color: transparent;\\n border: 0;\\n}\\n\\n// Future-proof disabling of clicks on `<a>` elements\\n\\n// stylelint-disable-next-line selector-no-qualifying-type\\na.close.disabled {\\n pointer-events: none;\\n}\\n\",\".toast {\\n // Prevents from shrinking in IE11, when in a flex container\\n // See https://github.com/twbs/bootstrap/issues/28341\\n flex-basis: $toast-max-width;\\n max-width: $toast-max-width;\\n @include font-size($toast-font-size);\\n color: $toast-color;\\n background-color: $toast-background-color;\\n background-clip: padding-box;\\n border: $toast-border-width solid $toast-border-color;\\n box-shadow: $toast-box-shadow;\\n opacity: 0;\\n @include border-radius($toast-border-radius);\\n\\n &:not(:last-child) {\\n margin-bottom: $toast-padding-x;\\n }\\n\\n &.showing {\\n opacity: 1;\\n }\\n\\n &.show {\\n display: block;\\n opacity: 1;\\n }\\n\\n &.hide {\\n display: none;\\n }\\n}\\n\\n.toast-header {\\n display: flex;\\n align-items: center;\\n padding: $toast-padding-y $toast-padding-x;\\n color: $toast-header-color;\\n background-color: $toast-header-background-color;\\n background-clip: padding-box;\\n border-bottom: $toast-border-width solid $toast-header-border-color;\\n @include border-top-radius(subtract($toast-border-radius, $toast-border-width));\\n}\\n\\n.toast-body {\\n padding: $toast-padding-x; // apply to both vertical and horizontal\\n}\\n\",\"// .modal-open - body class for killing the scroll\\n// .modal - container to scroll within\\n// .modal-dialog - positioning shell for the actual modal\\n// .modal-content - actual modal w/ bg and corners and stuff\\n\\n\\n.modal-open {\\n // Kill the scroll on the body\\n overflow: hidden;\\n\\n .modal {\\n overflow-x: hidden;\\n overflow-y: auto;\\n }\\n}\\n\\n// Container that the modal scrolls within\\n.modal {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: $zindex-modal;\\n display: none;\\n width: 100%;\\n height: 100%;\\n overflow: hidden;\\n // Prevent Chrome on Windows from adding a focus outline. For details, see\\n // https://github.com/twbs/bootstrap/pull/10951.\\n outline: 0;\\n // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\\n // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\\n // See also https://github.com/twbs/bootstrap/issues/17695\\n}\\n\\n// Shell div to position the modal with bottom padding\\n.modal-dialog {\\n position: relative;\\n width: auto;\\n margin: $modal-dialog-margin;\\n // allow clicks to pass through for custom click handling to close modal\\n pointer-events: none;\\n\\n // When fading in the modal, animate it to slide down\\n .modal.fade & {\\n @include transition($modal-transition);\\n transform: $modal-fade-transform;\\n }\\n .modal.show & {\\n transform: $modal-show-transform;\\n }\\n\\n // When trying to close, animate focus to scale\\n .modal.modal-static & {\\n transform: $modal-scale-transform;\\n }\\n}\\n\\n.modal-dialog-scrollable {\\n display: flex; // IE10/11\\n max-height: subtract(100%, $modal-dialog-margin * 2);\\n\\n .modal-content {\\n max-height: subtract(100vh, $modal-dialog-margin * 2); // IE10/11\\n overflow: hidden;\\n }\\n\\n .modal-header,\\n .modal-footer {\\n flex-shrink: 0;\\n }\\n\\n .modal-body {\\n overflow-y: auto;\\n }\\n}\\n\\n.modal-dialog-centered {\\n display: flex;\\n align-items: center;\\n min-height: subtract(100%, $modal-dialog-margin * 2);\\n\\n // Ensure `modal-dialog-centered` extends the full height of the view (IE10/11)\\n &::before {\\n display: block; // IE10\\n height: subtract(100vh, $modal-dialog-margin * 2);\\n height: min-content; // Reset height to 0 except on IE\\n content: \\\"\\\";\\n }\\n\\n // Ensure `.modal-body` shows scrollbar (IE10/11)\\n &.modal-dialog-scrollable {\\n flex-direction: column;\\n justify-content: center;\\n height: 100%;\\n\\n .modal-content {\\n max-height: none;\\n }\\n\\n &::before {\\n content: none;\\n }\\n }\\n}\\n\\n// Actual modal\\n.modal-content {\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\\n // counteract the pointer-events: none; in the .modal-dialog\\n color: $modal-content-color;\\n pointer-events: auto;\\n background-color: $modal-content-bg;\\n background-clip: padding-box;\\n border: $modal-content-border-width solid $modal-content-border-color;\\n @include border-radius($modal-content-border-radius);\\n @include box-shadow($modal-content-box-shadow-xs);\\n // Remove focus outline from opened modal\\n outline: 0;\\n}\\n\\n// Modal background\\n.modal-backdrop {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: $zindex-modal-backdrop;\\n width: 100vw;\\n height: 100vh;\\n background-color: $modal-backdrop-bg;\\n\\n // Fade for backdrop\\n &.fade { opacity: 0; }\\n &.show { opacity: $modal-backdrop-opacity; }\\n}\\n\\n// Modal header\\n// Top section of the modal w/ title and dismiss\\n.modal-header {\\n display: flex;\\n align-items: flex-start; // so the close btn always stays on the upper right corner\\n justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\\n padding: $modal-header-padding;\\n border-bottom: $modal-header-border-width solid $modal-header-border-color;\\n @include border-top-radius($modal-content-inner-border-radius);\\n\\n .close {\\n padding: $modal-header-padding;\\n // auto on the left force icon to the right even when there is no .modal-title\\n margin: (-$modal-header-padding-y) (-$modal-header-padding-x) (-$modal-header-padding-y) auto;\\n }\\n}\\n\\n// Title text within header\\n.modal-title {\\n margin-bottom: 0;\\n line-height: $modal-title-line-height;\\n}\\n\\n// Modal body\\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\\n.modal-body {\\n position: relative;\\n // Enable `flex-grow: 1` so that the body take up as much space as possible\\n // when there should be a fixed height on `.modal-dialog`.\\n flex: 1 1 auto;\\n padding: $modal-inner-padding;\\n}\\n\\n// Footer (for actions)\\n.modal-footer {\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center; // vertically center\\n justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\\n padding: $modal-inner-padding - $modal-footer-margin-between * .5;\\n border-top: $modal-footer-border-width solid $modal-footer-border-color;\\n @include border-bottom-radius($modal-content-inner-border-radius);\\n\\n // Place margin between footer elements\\n // This solution is far from ideal because of the universal selector usage,\\n // but is needed to fix https://github.com/twbs/bootstrap/issues/24800\\n > * {\\n margin: $modal-footer-margin-between * .5;\\n }\\n}\\n\\n// Measure scrollbar width for padding body during modal show/hide\\n.modal-scrollbar-measure {\\n position: absolute;\\n top: -9999px;\\n width: 50px;\\n height: 50px;\\n overflow: scroll;\\n}\\n\\n// Scale up the modal\\n@include media-breakpoint-up(sm) {\\n // Automatically set modal's width for larger viewports\\n .modal-dialog {\\n max-width: $modal-md;\\n margin: $modal-dialog-margin-y-sm-up auto;\\n }\\n\\n .modal-dialog-scrollable {\\n max-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\\n\\n .modal-content {\\n max-height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);\\n }\\n }\\n\\n .modal-dialog-centered {\\n min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);\\n\\n &::before {\\n height: subtract(100vh, $modal-dialog-margin-y-sm-up * 2);\\n height: min-content;\\n }\\n }\\n\\n .modal-content {\\n @include box-shadow($modal-content-box-shadow-sm-up);\\n }\\n\\n .modal-sm { max-width: $modal-sm; }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .modal-lg,\\n .modal-xl {\\n max-width: $modal-lg;\\n }\\n}\\n\\n@include media-breakpoint-up(xl) {\\n .modal-xl { max-width: $modal-xl; }\\n}\\n\",\"// Base class\\n.tooltip {\\n position: absolute;\\n z-index: $zindex-tooltip;\\n display: block;\\n margin: $tooltip-margin;\\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\\n // So reset our font and text properties to avoid inheriting weird values.\\n @include reset-text();\\n @include font-size($tooltip-font-size);\\n // Allow breaking very long words so they don't overflow the tooltip's bounds\\n word-wrap: break-word;\\n opacity: 0;\\n\\n &.show { opacity: $tooltip-opacity; }\\n\\n .arrow {\\n position: absolute;\\n display: block;\\n width: $tooltip-arrow-width;\\n height: $tooltip-arrow-height;\\n\\n &::before {\\n position: absolute;\\n content: \\\"\\\";\\n border-color: transparent;\\n border-style: solid;\\n }\\n }\\n}\\n\\n.bs-tooltip-top {\\n padding: $tooltip-arrow-height 0;\\n\\n .arrow {\\n bottom: 0;\\n\\n &::before {\\n top: 0;\\n border-width: $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\\n border-top-color: $tooltip-arrow-color;\\n }\\n }\\n}\\n\\n.bs-tooltip-right {\\n padding: 0 $tooltip-arrow-height;\\n\\n .arrow {\\n left: 0;\\n width: $tooltip-arrow-height;\\n height: $tooltip-arrow-width;\\n\\n &::before {\\n right: 0;\\n border-width: ($tooltip-arrow-width * .5) $tooltip-arrow-height ($tooltip-arrow-width * .5) 0;\\n border-right-color: $tooltip-arrow-color;\\n }\\n }\\n}\\n\\n.bs-tooltip-bottom {\\n padding: $tooltip-arrow-height 0;\\n\\n .arrow {\\n top: 0;\\n\\n &::before {\\n bottom: 0;\\n border-width: 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\\n border-bottom-color: $tooltip-arrow-color;\\n }\\n }\\n}\\n\\n.bs-tooltip-left {\\n padding: 0 $tooltip-arrow-height;\\n\\n .arrow {\\n right: 0;\\n width: $tooltip-arrow-height;\\n height: $tooltip-arrow-width;\\n\\n &::before {\\n left: 0;\\n border-width: ($tooltip-arrow-width * .5) 0 ($tooltip-arrow-width * .5) $tooltip-arrow-height;\\n border-left-color: $tooltip-arrow-color;\\n }\\n }\\n}\\n\\n.bs-tooltip-auto {\\n &[x-placement^=\\\"top\\\"] {\\n @extend .bs-tooltip-top;\\n }\\n &[x-placement^=\\\"right\\\"] {\\n @extend .bs-tooltip-right;\\n }\\n &[x-placement^=\\\"bottom\\\"] {\\n @extend .bs-tooltip-bottom;\\n }\\n &[x-placement^=\\\"left\\\"] {\\n @extend .bs-tooltip-left;\\n }\\n}\\n\\n// Wrapper for the tooltip content\\n.tooltip-inner {\\n max-width: $tooltip-max-width;\\n padding: $tooltip-padding-y $tooltip-padding-x;\\n color: $tooltip-color;\\n text-align: center;\\n background-color: $tooltip-bg;\\n @include border-radius($tooltip-border-radius);\\n}\\n\",\"@mixin reset-text() {\\n font-family: $font-family-base;\\n // We deliberately do NOT reset font-size or word-wrap.\\n font-style: normal;\\n font-weight: $font-weight-normal;\\n line-height: $line-height-base;\\n text-align: left; // Fallback for where `start` is not supported\\n text-align: start;\\n text-decoration: none;\\n text-shadow: none;\\n text-transform: none;\\n letter-spacing: normal;\\n word-break: normal;\\n white-space: normal;\\n word-spacing: normal;\\n line-break: auto;\\n}\\n\",\".popover {\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: $zindex-popover;\\n display: block;\\n max-width: $popover-max-width;\\n // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\\n // So reset our font and text properties to avoid inheriting weird values.\\n @include reset-text();\\n @include font-size($popover-font-size);\\n // Allow breaking very long words so they don't overflow the popover's bounds\\n word-wrap: break-word;\\n background-color: $popover-bg;\\n background-clip: padding-box;\\n border: $popover-border-width solid $popover-border-color;\\n @include border-radius($popover-border-radius);\\n @include box-shadow($popover-box-shadow);\\n\\n .arrow {\\n position: absolute;\\n display: block;\\n width: $popover-arrow-width;\\n height: $popover-arrow-height;\\n margin: 0 $popover-border-radius;\\n\\n &::before,\\n &::after {\\n position: absolute;\\n display: block;\\n content: \\\"\\\";\\n border-color: transparent;\\n border-style: solid;\\n }\\n }\\n}\\n\\n.bs-popover-top {\\n margin-bottom: $popover-arrow-height;\\n\\n > .arrow {\\n bottom: subtract(-$popover-arrow-height, $popover-border-width);\\n\\n &::before {\\n bottom: 0;\\n border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\\n border-top-color: $popover-arrow-outer-color;\\n }\\n\\n &::after {\\n bottom: $popover-border-width;\\n border-width: $popover-arrow-height ($popover-arrow-width * .5) 0;\\n border-top-color: $popover-arrow-color;\\n }\\n }\\n}\\n\\n.bs-popover-right {\\n margin-left: $popover-arrow-height;\\n\\n > .arrow {\\n left: subtract(-$popover-arrow-height, $popover-border-width);\\n width: $popover-arrow-height;\\n height: $popover-arrow-width;\\n margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners\\n\\n &::before {\\n left: 0;\\n border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\\n border-right-color: $popover-arrow-outer-color;\\n }\\n\\n &::after {\\n left: $popover-border-width;\\n border-width: ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5) 0;\\n border-right-color: $popover-arrow-color;\\n }\\n }\\n}\\n\\n.bs-popover-bottom {\\n margin-top: $popover-arrow-height;\\n\\n > .arrow {\\n top: subtract(-$popover-arrow-height, $popover-border-width);\\n\\n &::before {\\n top: 0;\\n border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\\n border-bottom-color: $popover-arrow-outer-color;\\n }\\n\\n &::after {\\n top: $popover-border-width;\\n border-width: 0 ($popover-arrow-width * .5) $popover-arrow-height ($popover-arrow-width * .5);\\n border-bottom-color: $popover-arrow-color;\\n }\\n }\\n\\n // This will remove the popover-header's border just below the arrow\\n .popover-header::before {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n display: block;\\n width: $popover-arrow-width;\\n margin-left: -$popover-arrow-width * .5;\\n content: \\\"\\\";\\n border-bottom: $popover-border-width solid $popover-header-bg;\\n }\\n}\\n\\n.bs-popover-left {\\n margin-right: $popover-arrow-height;\\n\\n > .arrow {\\n right: subtract(-$popover-arrow-height, $popover-border-width);\\n width: $popover-arrow-height;\\n height: $popover-arrow-width;\\n margin: $popover-border-radius 0; // make sure the arrow does not touch the popover's rounded corners\\n\\n &::before {\\n right: 0;\\n border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\\n border-left-color: $popover-arrow-outer-color;\\n }\\n\\n &::after {\\n right: $popover-border-width;\\n border-width: ($popover-arrow-width * .5) 0 ($popover-arrow-width * .5) $popover-arrow-height;\\n border-left-color: $popover-arrow-color;\\n }\\n }\\n}\\n\\n.bs-popover-auto {\\n &[x-placement^=\\\"top\\\"] {\\n @extend .bs-popover-top;\\n }\\n &[x-placement^=\\\"right\\\"] {\\n @extend .bs-popover-right;\\n }\\n &[x-placement^=\\\"bottom\\\"] {\\n @extend .bs-popover-bottom;\\n }\\n &[x-placement^=\\\"left\\\"] {\\n @extend .bs-popover-left;\\n }\\n}\\n\\n\\n// Offset the popover to account for the popover arrow\\n.popover-header {\\n padding: $popover-header-padding-y $popover-header-padding-x;\\n margin-bottom: 0; // Reset the default from Reboot\\n @include font-size($font-size-base);\\n color: $popover-header-color;\\n background-color: $popover-header-bg;\\n border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\\n @include border-top-radius($popover-inner-border-radius);\\n\\n &:empty {\\n display: none;\\n }\\n}\\n\\n.popover-body {\\n padding: $popover-body-padding-y $popover-body-padding-x;\\n color: $popover-body-color;\\n}\\n\",\"// Notes on the classes:\\n//\\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\\n// even when their scroll action started on a carousel, but for compatibility (with Firefox)\\n// we're preventing all actions instead\\n// 2. The .carousel-item-left and .carousel-item-right is used to indicate where\\n// the active slide is heading.\\n// 3. .active.carousel-item is the current slide.\\n// 4. .active.carousel-item-left and .active.carousel-item-right is the current\\n// slide in its in-transition state. Only one of these occurs at a time.\\n// 5. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right\\n// is the upcoming slide in transition.\\n\\n.carousel {\\n position: relative;\\n}\\n\\n.carousel.pointer-event {\\n touch-action: pan-y;\\n}\\n\\n.carousel-inner {\\n position: relative;\\n width: 100%;\\n overflow: hidden;\\n @include clearfix();\\n}\\n\\n.carousel-item {\\n position: relative;\\n display: none;\\n float: left;\\n width: 100%;\\n margin-right: -100%;\\n backface-visibility: hidden;\\n @include transition($carousel-transition);\\n}\\n\\n.carousel-item.active,\\n.carousel-item-next,\\n.carousel-item-prev {\\n display: block;\\n}\\n\\n.carousel-item-next:not(.carousel-item-left),\\n.active.carousel-item-right {\\n transform: translateX(100%);\\n}\\n\\n.carousel-item-prev:not(.carousel-item-right),\\n.active.carousel-item-left {\\n transform: translateX(-100%);\\n}\\n\\n\\n//\\n// Alternate transitions\\n//\\n\\n.carousel-fade {\\n .carousel-item {\\n opacity: 0;\\n transition-property: opacity;\\n transform: none;\\n }\\n\\n .carousel-item.active,\\n .carousel-item-next.carousel-item-left,\\n .carousel-item-prev.carousel-item-right {\\n z-index: 1;\\n opacity: 1;\\n }\\n\\n .active.carousel-item-left,\\n .active.carousel-item-right {\\n z-index: 0;\\n opacity: 0;\\n @include transition(opacity 0s $carousel-transition-duration);\\n }\\n}\\n\\n\\n//\\n// Left/right controls for nav\\n//\\n\\n.carousel-control-prev,\\n.carousel-control-next {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n z-index: 1;\\n // Use flex for alignment (1-3)\\n display: flex; // 1. allow flex styles\\n align-items: center; // 2. vertically center contents\\n justify-content: center; // 3. horizontally center contents\\n width: $carousel-control-width;\\n padding: 0;\\n color: $carousel-control-color;\\n text-align: center;\\n background: none;\\n border: 0;\\n opacity: $carousel-control-opacity;\\n @include transition($carousel-control-transition);\\n\\n // Hover/focus state\\n @include hover-focus() {\\n color: $carousel-control-color;\\n text-decoration: none;\\n outline: 0;\\n opacity: $carousel-control-hover-opacity;\\n }\\n}\\n.carousel-control-prev {\\n left: 0;\\n @if $enable-gradients {\\n background-image: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));\\n }\\n}\\n.carousel-control-next {\\n right: 0;\\n @if $enable-gradients {\\n background-image: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));\\n }\\n}\\n\\n// Icons for within\\n.carousel-control-prev-icon,\\n.carousel-control-next-icon {\\n display: inline-block;\\n width: $carousel-control-icon-width;\\n height: $carousel-control-icon-width;\\n background: 50% / 100% 100% no-repeat;\\n}\\n.carousel-control-prev-icon {\\n background-image: escape-svg($carousel-control-prev-icon-bg);\\n}\\n.carousel-control-next-icon {\\n background-image: escape-svg($carousel-control-next-icon-bg);\\n}\\n\\n\\n// Optional indicator pips\\n//\\n// Add an ordered list with the following class and add a list item for each\\n// slide your carousel holds.\\n\\n.carousel-indicators {\\n position: absolute;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 15;\\n display: flex;\\n justify-content: center;\\n padding-left: 0; // override <ol> default\\n // Use the .carousel-control's width as margin so we don't overlay those\\n margin-right: $carousel-control-width;\\n margin-left: $carousel-control-width;\\n list-style: none;\\n\\n li {\\n box-sizing: content-box;\\n flex: 0 1 auto;\\n width: $carousel-indicator-width;\\n height: $carousel-indicator-height;\\n margin-right: $carousel-indicator-spacer;\\n margin-left: $carousel-indicator-spacer;\\n text-indent: -999px;\\n cursor: pointer;\\n background-color: $carousel-indicator-active-bg;\\n background-clip: padding-box;\\n // Use transparent borders to increase the hit area by 10px on top and bottom.\\n border-top: $carousel-indicator-hit-area-height solid transparent;\\n border-bottom: $carousel-indicator-hit-area-height solid transparent;\\n opacity: .5;\\n @include transition($carousel-indicator-transition);\\n }\\n\\n .active {\\n opacity: 1;\\n }\\n}\\n\\n\\n// Optional captions\\n//\\n//\\n\\n.carousel-caption {\\n position: absolute;\\n right: (100% - $carousel-caption-width) * .5;\\n bottom: 20px;\\n left: (100% - $carousel-caption-width) * .5;\\n z-index: 10;\\n padding-top: 20px;\\n padding-bottom: 20px;\\n color: $carousel-caption-color;\\n text-align: center;\\n}\\n\",\"@mixin clearfix() {\\n &::after {\\n display: block;\\n clear: both;\\n content: \\\"\\\";\\n }\\n}\\n\",\"//\\n// Rotating border\\n//\\n\\n@keyframes spinner-border {\\n to { transform: rotate(360deg); }\\n}\\n\\n.spinner-border {\\n display: inline-block;\\n width: $spinner-width;\\n height: $spinner-height;\\n vertical-align: $spinner-vertical-align;\\n border: $spinner-border-width solid currentcolor;\\n border-right-color: transparent;\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: 50%;\\n animation: .75s linear infinite spinner-border;\\n}\\n\\n.spinner-border-sm {\\n width: $spinner-width-sm;\\n height: $spinner-height-sm;\\n border-width: $spinner-border-width-sm;\\n}\\n\\n//\\n// Growing circle\\n//\\n\\n@keyframes spinner-grow {\\n 0% {\\n transform: scale(0);\\n }\\n 50% {\\n opacity: 1;\\n transform: none;\\n }\\n}\\n\\n.spinner-grow {\\n display: inline-block;\\n width: $spinner-width;\\n height: $spinner-height;\\n vertical-align: $spinner-vertical-align;\\n background-color: currentcolor;\\n // stylelint-disable-next-line property-disallowed-list\\n border-radius: 50%;\\n opacity: 0;\\n animation: .75s linear infinite spinner-grow;\\n}\\n\\n.spinner-grow-sm {\\n width: $spinner-width-sm;\\n height: $spinner-height-sm;\\n}\\n\\n@if $enable-prefers-reduced-motion-media-query {\\n @media (prefers-reduced-motion: reduce) {\\n .spinner-border,\\n .spinner-grow {\\n animation-duration: 1.5s;\\n }\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n.align-baseline { vertical-align: baseline !important; } // Browser default\\n.align-top { vertical-align: top !important; }\\n.align-middle { vertical-align: middle !important; }\\n.align-bottom { vertical-align: bottom !important; }\\n.align-text-bottom { vertical-align: text-bottom !important; }\\n.align-text-top { vertical-align: text-top !important; }\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Contextual backgrounds\\n\\n@mixin bg-variant($parent, $color, $ignore-warning: false) {\\n #{$parent} {\\n background-color: $color !important;\\n }\\n a#{$parent},\\n button#{$parent} {\\n @include hover-focus() {\\n background-color: darken($color, 10%) !important;\\n }\\n }\\n @include deprecate(\\\"The `bg-variant` mixin\\\", \\\"v4.4.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\\n@mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {\\n #{$parent} {\\n background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\\n }\\n @include deprecate(\\\"The `bg-gradient-variant` mixin\\\", \\\"v4.5.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n@each $color, $value in $theme-colors {\\n @include bg-variant(\\\".bg-#{$color}\\\", $value, true);\\n}\\n\\n@if $enable-gradients {\\n @each $color, $value in $theme-colors {\\n @include bg-gradient-variant(\\\".bg-gradient-#{$color}\\\", $value, true);\\n }\\n}\\n\\n.bg-white {\\n background-color: $white !important;\\n}\\n\\n.bg-transparent {\\n background-color: transparent !important;\\n}\\n\",\"// stylelint-disable property-disallowed-list, declaration-no-important\\n\\n//\\n// Border\\n//\\n\\n.border { border: $border-width solid $border-color !important; }\\n.border-top { border-top: $border-width solid $border-color !important; }\\n.border-right { border-right: $border-width solid $border-color !important; }\\n.border-bottom { border-bottom: $border-width solid $border-color !important; }\\n.border-left { border-left: $border-width solid $border-color !important; }\\n\\n.border-0 { border: 0 !important; }\\n.border-top-0 { border-top: 0 !important; }\\n.border-right-0 { border-right: 0 !important; }\\n.border-bottom-0 { border-bottom: 0 !important; }\\n.border-left-0 { border-left: 0 !important; }\\n\\n@each $color, $value in $theme-colors {\\n .border-#{$color} {\\n border-color: $value !important;\\n }\\n}\\n\\n.border-white {\\n border-color: $white !important;\\n}\\n\\n//\\n// Border-radius\\n//\\n\\n.rounded-sm {\\n border-radius: $border-radius-sm !important;\\n}\\n\\n.rounded {\\n border-radius: $border-radius !important;\\n}\\n\\n.rounded-top {\\n border-top-left-radius: $border-radius !important;\\n border-top-right-radius: $border-radius !important;\\n}\\n\\n.rounded-right {\\n border-top-right-radius: $border-radius !important;\\n border-bottom-right-radius: $border-radius !important;\\n}\\n\\n.rounded-bottom {\\n border-bottom-right-radius: $border-radius !important;\\n border-bottom-left-radius: $border-radius !important;\\n}\\n\\n.rounded-left {\\n border-top-left-radius: $border-radius !important;\\n border-bottom-left-radius: $border-radius !important;\\n}\\n\\n.rounded-lg {\\n border-radius: $border-radius-lg !important;\\n}\\n\\n.rounded-circle {\\n border-radius: 50% !important;\\n}\\n\\n.rounded-pill {\\n border-radius: $rounded-pill !important;\\n}\\n\\n.rounded-0 {\\n border-radius: 0 !important;\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n//\\n// Utilities for common `display` values\\n//\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n @each $value in $displays {\\n .d#{$infix}-#{$value} { display: $value !important; }\\n }\\n }\\n}\\n\\n\\n//\\n// Utilities for toggling `display` in print\\n//\\n\\n@media print {\\n @each $value in $displays {\\n .d-print-#{$value} { display: $value !important; }\\n }\\n}\\n\",\"// Credit: Nicolas Gallagher and SUIT CSS.\\n\\n.embed-responsive {\\n position: relative;\\n display: block;\\n width: 100%;\\n padding: 0;\\n overflow: hidden;\\n\\n &::before {\\n display: block;\\n content: \\\"\\\";\\n }\\n\\n .embed-responsive-item,\\n iframe,\\n embed,\\n object,\\n video {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n border: 0;\\n }\\n}\\n\\n@each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios {\\n $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1);\\n $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2);\\n\\n .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} {\\n &::before {\\n padding-top: percentage(divide($embed-responsive-aspect-ratio-y, $embed-responsive-aspect-ratio-x));\\n }\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Flex variation\\n//\\n// Custom styles for additional flex alignment options.\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .flex#{$infix}-row { flex-direction: row !important; }\\n .flex#{$infix}-column { flex-direction: column !important; }\\n .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; }\\n .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\\n\\n .flex#{$infix}-wrap { flex-wrap: wrap !important; }\\n .flex#{$infix}-nowrap { flex-wrap: nowrap !important; }\\n .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\\n .flex#{$infix}-fill { flex: 1 1 auto !important; }\\n .flex#{$infix}-grow-0 { flex-grow: 0 !important; }\\n .flex#{$infix}-grow-1 { flex-grow: 1 !important; }\\n .flex#{$infix}-shrink-0 { flex-shrink: 0 !important; }\\n .flex#{$infix}-shrink-1 { flex-shrink: 1 !important; }\\n\\n .justify-content#{$infix}-start { justify-content: flex-start !important; }\\n .justify-content#{$infix}-end { justify-content: flex-end !important; }\\n .justify-content#{$infix}-center { justify-content: center !important; }\\n .justify-content#{$infix}-between { justify-content: space-between !important; }\\n .justify-content#{$infix}-around { justify-content: space-around !important; }\\n\\n .align-items#{$infix}-start { align-items: flex-start !important; }\\n .align-items#{$infix}-end { align-items: flex-end !important; }\\n .align-items#{$infix}-center { align-items: center !important; }\\n .align-items#{$infix}-baseline { align-items: baseline !important; }\\n .align-items#{$infix}-stretch { align-items: stretch !important; }\\n\\n .align-content#{$infix}-start { align-content: flex-start !important; }\\n .align-content#{$infix}-end { align-content: flex-end !important; }\\n .align-content#{$infix}-center { align-content: center !important; }\\n .align-content#{$infix}-between { align-content: space-between !important; }\\n .align-content#{$infix}-around { align-content: space-around !important; }\\n .align-content#{$infix}-stretch { align-content: stretch !important; }\\n\\n .align-self#{$infix}-auto { align-self: auto !important; }\\n .align-self#{$infix}-start { align-self: flex-start !important; }\\n .align-self#{$infix}-end { align-self: flex-end !important; }\\n .align-self#{$infix}-center { align-self: center !important; }\\n .align-self#{$infix}-baseline { align-self: baseline !important; }\\n .align-self#{$infix}-stretch { align-self: stretch !important; }\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .float#{$infix}-left { float: left !important; }\\n .float#{$infix}-right { float: right !important; }\\n .float#{$infix}-none { float: none !important; }\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n@each $value in $user-selects {\\n .user-select-#{$value} { user-select: $value !important; }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Common values\\n@each $position in $positions {\\n .position-#{$position} { position: $position !important; }\\n}\\n\\n// Shorthand\\n\\n.fixed-top {\\n position: fixed;\\n top: 0;\\n right: 0;\\n left: 0;\\n z-index: $zindex-fixed;\\n}\\n\\n.fixed-bottom {\\n position: fixed;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: $zindex-fixed;\\n}\\n\\n.sticky-top {\\n @supports (position: sticky) {\\n position: sticky;\\n top: 0;\\n z-index: $zindex-sticky;\\n }\\n}\\n\",\"//\\n// Screenreaders\\n//\\n\\n.sr-only {\\n @include sr-only();\\n}\\n\\n.sr-only-focusable {\\n @include sr-only-focusable();\\n}\\n\",\"// Only display content to screen readers\\n//\\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\\n\\n@mixin sr-only() {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border: 0;\\n}\\n\\n// Use in conjunction with .sr-only to only display content when it's focused.\\n//\\n// Useful for \\\"Skip to main content\\\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\\n//\\n// Credit: HTML5 Boilerplate\\n\\n@mixin sr-only-focusable() {\\n &:active,\\n &:focus {\\n position: static;\\n width: auto;\\n height: auto;\\n overflow: visible;\\n clip: auto;\\n white-space: normal;\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n.shadow-sm { box-shadow: $box-shadow-sm !important; }\\n.shadow { box-shadow: $box-shadow !important; }\\n.shadow-lg { box-shadow: $box-shadow-lg !important; }\\n.shadow-none { box-shadow: none !important; }\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Width and height\\n\\n@each $prop, $abbrev in (width: w, height: h) {\\n @each $size, $length in $sizes {\\n .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\\n }\\n}\\n\\n.mw-100 { max-width: 100% !important; }\\n.mh-100 { max-height: 100% !important; }\\n\\n// Viewport additional helpers\\n\\n.min-vw-100 { min-width: 100vw !important; }\\n.min-vh-100 { min-height: 100vh !important; }\\n\\n.vw-100 { width: 100vw !important; }\\n.vh-100 { height: 100vh !important; }\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Margin and Padding\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n @each $prop, $abbrev in (margin: m, padding: p) {\\n @each $size, $length in $spacers {\\n .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\\n .#{$abbrev}t#{$infix}-#{$size},\\n .#{$abbrev}y#{$infix}-#{$size} {\\n #{$prop}-top: $length !important;\\n }\\n .#{$abbrev}r#{$infix}-#{$size},\\n .#{$abbrev}x#{$infix}-#{$size} {\\n #{$prop}-right: $length !important;\\n }\\n .#{$abbrev}b#{$infix}-#{$size},\\n .#{$abbrev}y#{$infix}-#{$size} {\\n #{$prop}-bottom: $length !important;\\n }\\n .#{$abbrev}l#{$infix}-#{$size},\\n .#{$abbrev}x#{$infix}-#{$size} {\\n #{$prop}-left: $length !important;\\n }\\n }\\n }\\n\\n // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`)\\n @each $size, $length in $spacers {\\n @if \\\"#{$size}\\\" != \\\"0\\\" {\\n .m#{$infix}-n#{$size} { margin: -$length !important; }\\n .mt#{$infix}-n#{$size},\\n .my#{$infix}-n#{$size} {\\n margin-top: -$length !important;\\n }\\n .mr#{$infix}-n#{$size},\\n .mx#{$infix}-n#{$size} {\\n margin-right: -$length !important;\\n }\\n .mb#{$infix}-n#{$size},\\n .my#{$infix}-n#{$size} {\\n margin-bottom: -$length !important;\\n }\\n .ml#{$infix}-n#{$size},\\n .mx#{$infix}-n#{$size} {\\n margin-left: -$length !important;\\n }\\n }\\n }\\n\\n // Some special margin utils\\n .m#{$infix}-auto { margin: auto !important; }\\n .mt#{$infix}-auto,\\n .my#{$infix}-auto {\\n margin-top: auto !important;\\n }\\n .mr#{$infix}-auto,\\n .mx#{$infix}-auto {\\n margin-right: auto !important;\\n }\\n .mb#{$infix}-auto,\\n .my#{$infix}-auto {\\n margin-bottom: auto !important;\\n }\\n .ml#{$infix}-auto,\\n .mx#{$infix}-auto {\\n margin-left: auto !important;\\n }\\n }\\n}\\n\",\"//\\n// Stretched link\\n//\\n\\n.stretched-link {\\n &::after {\\n position: absolute;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: 1;\\n // Just in case `pointer-events: none` is set on a parent\\n pointer-events: auto;\\n content: \\\"\\\";\\n // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color\\n background-color: rgba(0, 0, 0, 0);\\n }\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n//\\n// Text\\n//\\n\\n.text-monospace { font-family: $font-family-monospace !important; }\\n\\n// Alignment\\n\\n.text-justify { text-align: justify !important; }\\n.text-wrap { white-space: normal !important; }\\n.text-nowrap { white-space: nowrap !important; }\\n.text-truncate { @include text-truncate(); }\\n\\n// Responsive alignment\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-up($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .text#{$infix}-left { text-align: left !important; }\\n .text#{$infix}-right { text-align: right !important; }\\n .text#{$infix}-center { text-align: center !important; }\\n }\\n}\\n\\n// Transformation\\n\\n.text-lowercase { text-transform: lowercase !important; }\\n.text-uppercase { text-transform: uppercase !important; }\\n.text-capitalize { text-transform: capitalize !important; }\\n\\n// Weight and italics\\n\\n.font-weight-light { font-weight: $font-weight-light !important; }\\n.font-weight-lighter { font-weight: $font-weight-lighter !important; }\\n.font-weight-normal { font-weight: $font-weight-normal !important; }\\n.font-weight-bold { font-weight: $font-weight-bold !important; }\\n.font-weight-bolder { font-weight: $font-weight-bolder !important; }\\n.font-italic { font-style: italic !important; }\\n\\n// Contextual colors\\n\\n.text-white { color: $white !important; }\\n\\n@each $color, $value in $theme-colors {\\n @include text-emphasis-variant(\\\".text-#{$color}\\\", $value, true);\\n}\\n\\n.text-body { color: $body-color !important; }\\n.text-muted { color: $text-muted !important; }\\n\\n.text-black-50 { color: rgba($black, .5) !important; }\\n.text-white-50 { color: rgba($white, .5) !important; }\\n\\n// Misc\\n\\n.text-hide {\\n @include text-hide($ignore-warning: true);\\n}\\n\\n.text-decoration-none { text-decoration: none !important; }\\n\\n.text-break {\\n word-break: break-word !important; // Deprecated, but avoids issues with flex containers\\n word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy\\n}\\n\\n// Reset\\n\\n.text-reset { color: inherit !important; }\\n\",\"// Text truncate\\n// Requires inline-block or block for proper styling\\n\\n@mixin text-truncate() {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n// Typography\\n\\n@mixin text-emphasis-variant($parent, $color, $ignore-warning: false) {\\n #{$parent} {\\n color: $color !important;\\n }\\n @if $emphasized-link-hover-darken-percentage != 0 {\\n a#{$parent} {\\n @include hover-focus() {\\n color: darken($color, $emphasized-link-hover-darken-percentage) !important;\\n }\\n }\\n }\\n @include deprecate(\\\"`text-emphasis-variant()`\\\", \\\"v4.4.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\",\"// CSS image replacement\\n@mixin text-hide($ignore-warning: false) {\\n // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\\n font: 0/0 a;\\n color: transparent;\\n text-shadow: none;\\n background-color: transparent;\\n border: 0;\\n\\n @include deprecate(\\\"`text-hide()`\\\", \\\"v4.1.0\\\", \\\"v5\\\", $ignore-warning);\\n}\\n\",\"// stylelint-disable declaration-no-important\\n\\n//\\n// Visibility utilities\\n//\\n\\n.visible {\\n visibility: visible !important;\\n}\\n\\n.invisible {\\n visibility: hidden !important;\\n}\\n\",\"// stylelint-disable declaration-no-important, selector-no-qualifying-type\\n\\n// Source: https://github.com/h5bp/main.css/blob/master/src/_print.css\\n\\n// ==========================================================================\\n// Print styles.\\n// Inlined to avoid the additional HTTP request:\\n// https://www.phpied.com/delay-loading-your-print-css/\\n// ==========================================================================\\n\\n@if $enable-print-styles {\\n @media print {\\n *,\\n *::before,\\n *::after {\\n // Bootstrap specific; comment out `color` and `background`\\n //color: $black !important; // Black prints faster\\n text-shadow: none !important;\\n //background: transparent !important;\\n box-shadow: none !important;\\n }\\n\\n a {\\n &:not(.btn) {\\n text-decoration: underline;\\n }\\n }\\n\\n // Bootstrap specific; comment the following selector out\\n //a[href]::after {\\n // content: \\\" (\\\" attr(href) \\\")\\\";\\n //}\\n\\n abbr[title]::after {\\n content: \\\" (\\\" attr(title) \\\")\\\";\\n }\\n\\n // Bootstrap specific; comment the following selector out\\n //\\n // Don't show links that are fragment identifiers,\\n // or use the `javascript:` pseudo protocol\\n //\\n\\n //a[href^=\\\"#\\\"]::after,\\n //a[href^=\\\"javascript:\\\"]::after {\\n // content: \\\"\\\";\\n //}\\n\\n pre {\\n white-space: pre-wrap !important;\\n }\\n pre,\\n blockquote {\\n border: $border-width solid $gray-500; // Bootstrap custom code; using `$border-width` instead of 1px\\n page-break-inside: avoid;\\n }\\n\\n tr,\\n img {\\n page-break-inside: avoid;\\n }\\n\\n p,\\n h2,\\n h3 {\\n orphans: 3;\\n widows: 3;\\n }\\n\\n h2,\\n h3 {\\n page-break-after: avoid;\\n }\\n\\n // Bootstrap specific changes start\\n\\n // Specify a size and min-width to make printing closer across browsers.\\n // We don't set margin here because it breaks `size` in Chrome. We also\\n // don't use `!important` on `size` as it breaks in Chrome.\\n @page {\\n size: $print-page-size;\\n }\\n body {\\n min-width: $print-body-min-width !important;\\n }\\n .container {\\n min-width: $print-body-min-width !important;\\n }\\n\\n // Bootstrap components\\n .navbar {\\n display: none;\\n }\\n .badge {\\n border: $border-width solid $black;\\n }\\n\\n .table {\\n border-collapse: collapse !important;\\n\\n td,\\n th {\\n background-color: $white !important;\\n }\\n }\\n\\n .table-bordered {\\n th,\\n td {\\n border: 1px solid $gray-300 !important;\\n }\\n }\\n\\n .table-dark {\\n color: inherit;\\n\\n th,\\n td,\\n thead th,\\n tbody + tbody {\\n border-color: $table-border-color;\\n }\\n }\\n\\n .table .thead-dark th {\\n color: inherit;\\n border-color: $table-border-color;\\n }\\n\\n // Bootstrap specific changes end\\n }\\n}\\n\",\"body {\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n.font-xs {\\n font-size: 0.75rem !important;\\n}\\n\\n.font-sm {\\n font-size: 0.85rem !important;\\n}\\n\\n.font-lg {\\n font-size: 1rem !important;\\n}\\n\\n.font-xl {\\n font-size: 1.25rem !important;\\n}\\n\\n.font-2xl {\\n font-size: 1.5rem !important;\\n}\\n\\n.font-3xl {\\n font-size: 1.75rem !important;\\n}\\n\\n.font-4xl {\\n font-size: 2rem !important;\\n}\\n\\n.font-5xl {\\n font-size: 2.5rem !important;\\n}\\n\",\"// scss-lint:disable all\\n.animated {\\n animation-duration: 1s;\\n // animation-fill-mode: both;\\n}\\n\\n.animated.infinite {\\n animation-iteration-count: infinite;\\n}\\n\\n.animated.hinge {\\n animation-duration: 2s;\\n}\\n\\n@keyframes fadeIn {\\n from {\\n opacity: 0;\\n }\\n\\n to {\\n opacity: 1;\\n }\\n}\\n\\n.fadeIn {\\n animation-name: fadeIn;\\n}\\n\",\".aside-menu {\\n z-index: $zindex-sticky - 1;\\n width: $aside-menu-width;\\n color: $aside-menu-color;\\n background: $aside-menu-bg;\\n @include borders($aside-menu-borders);\\n\\n .nav-tabs {\\n border-color: $border-color;\\n .nav-link {\\n padding: $aside-menu-nav-padding-y $aside-menu-nav-padding-x;\\n color: $body-color;\\n border-top: 0;\\n &.active {\\n color: theme-color('primary');\\n border-right-color: $border-color;\\n border-left-color: $border-color;\\n }\\n }\\n .nav-item:first-child {\\n .nav-link {\\n border-left: 0;\\n }\\n }\\n }\\n\\n .tab-content {\\n position: relative;\\n overflow-x: hidden;\\n overflow-y: auto;\\n border: 0;\\n border-top: 1px solid $border-color;\\n -ms-overflow-style: -ms-autohiding-scrollbar;\\n\\n &::-webkit-scrollbar {\\n width: 10px;\\n margin-left: -10px;\\n -webkit-appearance: none;\\n }\\n\\n // &::-webkit-scrollbar-button { }\\n\\n &::-webkit-scrollbar-track {\\n background-color: lighten($aside-menu-bg, 5%);\\n border-right: 1px solid darken($aside-menu-bg, 5%);\\n border-left: 1px solid darken($aside-menu-bg, 5%);\\n }\\n\\n // &::-webkit-scrollbar-track-piece { }\\n\\n &::-webkit-scrollbar-thumb {\\n height: 50px;\\n background-color: darken($aside-menu-bg, 10%);\\n background-clip: content-box;\\n border-color: transparent;\\n border-style: solid;\\n border-width: 1px 2px;\\n }\\n\\n .tab-pane {\\n padding: 0;\\n }\\n }\\n}\\n\",\"// scss-lint:disable all\\n// Core Admin Variables\\n\\n$enable-sidebar-nav-rounded: false !default;\\n\\n$border-color: $gray-200 !default;\\n$layout-transition-speed: 0.25s !default;\\n\\n// Social Colors\\n\\n$facebook: #3b5998 !default;\\n$twitter: #00aced !default;\\n$linkedin: #4875b4 !default;\\n$google-plus: #d34836 !default;\\n$flickr: #ff0084 !default;\\n$tumblr: #32506d !default;\\n$xing: #026466 !default;\\n$github: #4183c4 !default;\\n$html5: #e34f26 !default;\\n$openid: #f78c40 !default;\\n$stack-overflow: #fe7a15 !default;\\n$youtube: #b00 !default;\\n$css3: #0170ba !default;\\n$dribbble: #ea4c89 !default;\\n$google-plus: #bb4b39 !default;\\n$instagram: #517fa4 !default;\\n$pinterest: #cb2027 !default;\\n$vk: #45668e !default;\\n$yahoo: #400191 !default;\\n$behance: #1769ff !default;\\n$dropbox: #007ee5 !default;\\n$reddit: #ff4500 !default;\\n$spotify: #7ab800 !default;\\n$vine: #00bf8f !default;\\n$foursquare: #1073af !default;\\n$vimeo: #aad450 !default;\\n\\n// Navbar\\n\\n$navbar-height: 55px !default;\\n$navbar-bg: #fff !default;\\n$navbar-border: (\\n bottom: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n$navbar-brand-width: 130px !default;\\n$navbar-brand-bg: #fff !default;\\n$navbar-brand-logo: url('../public_src/img/signal-k-logo-image-text.svg') !default;\\n$navbar-brand-logo-size: 110px auto !default;\\n$navbar-brand-border: (\\n bottom: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n\\n$navbar-brand-minimized-width: 50px !default;\\n$navbar-brand-minimized-bg: $navbar-brand-bg !default;\\n$navbar-brand-minimized-logo: url('../public_src/img/signal-k-logo-image.svg') !default;\\n$navbar-brand-minimized-logo-size: 30px !default;\\n$navbar-brand-minimized-border: $navbar-brand-border !default;\\n\\n$navbar-color: $gray-600 !default;\\n$navbar-hover-color: $gray-800 !default;\\n$navbar-active-color: $gray-800 !default;\\n$navbar-disabled-color: $gray-300 !default;\\n\\n$navbar-toggler-icon: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n$navbar-toggler-icon-hover: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-hover-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n\\n// Sidebar\\n\\n$sidebar-width: 200px !default;\\n$sidebar-padding: 0 !default;\\n$sidebar-minimized-width: 50px !default;\\n$sidebar-minimized-height: $sidebar-minimized-width !default;\\n$sidebar-compact-width: 150px !default;\\n$sidebar-compact-height: $sidebar-compact-width !default;\\n$sidebar-color: #fff !default;\\n$sidebar-bg: $gray-800 !default;\\n$sidebar-borders: none !default;\\n$mobile-sidebar-width: 220px !default;\\n\\n// Sidebar Header\\n\\n$sidebar-header-height: auto !default;\\n$sidebar-header-bg: rgba(0, 0, 0, 0.2) !default;\\n$sidebar-header-padding-y: 0.75rem !default;\\n$sidebar-header-padding-x: 1rem !default;\\n\\n// Sidebar Form\\n\\n$sidebar-form-border: 0 !default;\\n$sidebar-form-bg: darken($sidebar-bg, 10%) !default;\\n$sidebar-form-color: #fff !default;\\n$sidebar-form-placeholder-color: rgba(255, 255, 255, 0.7) !default;\\n\\n// Sidebar Navigation\\n\\n$sidebar-nav-color: #fff !default;\\n$sidebar-nav-title-padding-y: 0.75rem !default;\\n$sidebar-nav-title-padding-x: 1rem !default;\\n$sidebar-nav-title-color: $gray-200 !default;\\n$sidebar-nav-link-padding-y: 0.75rem !default;\\n$sidebar-nav-link-padding-x: 1rem !default;\\n$sidebar-nav-link-color: #fff !default;\\n$sidebar-nav-link-bg: transparent !default;\\n$sidebar-nav-link-icon-color: $gray-600 !default;\\n$sidebar-nav-link-borders: 0 !default;\\n\\n$sidebar-nav-link-hover-color: #fff !default;\\n$sidebar-nav-link-hover-bg: theme-color('primary') !default;\\n$sidebar-nav-link-hover-icon-color: #fff !default;\\n$sidebar-nav-link-hover-borders: 0 !default;\\n\\n$sidebar-nav-link-active-color: #fff !default;\\n$sidebar-nav-link-active-bg: lighten($sidebar-bg, 5%) !default;\\n$sidebar-nav-link-active-icon-color: theme-color('primary') !default;\\n$sidebar-nav-link-active-borders: 0 !default;\\n\\n$sidebar-nav-dropdown-color: #fff !default;\\n$sidebar-nav-dropdown-bg: rgba(0, 0, 0, 0.2) !default;\\n$sidebar-nav-dropdown-borders: 0 !default;\\n$sidebar-nav-dropdown-indicator-color: $gray-600 !default;\\n$sidebar-nav-dropdown-indicator: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-dropdown-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n$sidebar-nav-dropdown-indicator-hover-color: $sidebar-nav-link-hover-color;\\n$sidebar-nav-dropdown-indicator-hover: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-dropdown-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n\\n// Sidebar Footer\\n\\n$sidebar-footer-height: auto !default;\\n$sidebar-footer-bg: rgba(0, 0, 0, 0.2) !default;\\n$sidebar-footer-padding-y: 0.75rem !default;\\n$sidebar-footer-padding-x: 1rem !default;\\n$sidebar-footer-borders: 0 !default;\\n\\n// Sidebar Minimizer\\n\\n$sidebar-minimizer-height: 50px !default;\\n$sidebar-minimizer-bg: rgba(0, 0, 0, 0.2) !default;\\n$sidebar-minimizer-borders: 0 !default;\\n$sidebar-minimizer-indicator-color: $gray-600 !default;\\n$sidebar-minimizer-indicator: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-minimizer-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n$sidebar-minimizer-hover-bg: rgba(0, 0, 0, 0.3) !default;\\n$sidebar-minimizer-hover-indicator-color: $sidebar-nav-link-hover-color !default;\\n$sidebar-minimizer-hover-indicator: str-replace(\\n url(\\\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-minimizer-hover-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E\\\"),\\n '#',\\n '%23'\\n) !default;\\n\\n// Top Navigation\\n\\n$top-nav-bg: #fff !default;\\n$top-nav-color: $body-color !default;\\n$top-nav-borders: (\\n bottom: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n$top-nav-ul-borders: (\\n all: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n\\n$top-nav-hover-color: #fff !default;\\n$top-nav-hover-bg: theme-color('primary') !default;\\n$top-nav-active-color: #fff !default;\\n$top-nav-active-bg: theme-color('primary') !default;\\n$top-nav-height: $navbar-height - 15px !default;\\n\\n// Breadcrumb\\n$breadcrumb-borders: (\\n bottom: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n\\n// Aside\\n\\n$aside-menu-width: 250px !default;\\n$aside-menu-color: $gray-800 !default;\\n$aside-menu-bg: #fff !default;\\n$aside-menu-borders: (\\n left: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n\\n$aside-menu-nav-padding-y: 0.75rem !default;\\n$aside-menu-nav-padding-x: 1rem !default;\\n\\n// Footer\\n\\n$footer-height: 50px !default;\\n$footer-bg: $gray-100 !default;\\n$footer-color: $body-color !default;\\n$footer-borders: (\\n top: (\\n size: 1px,\\n style: solid,\\n color: $border-color\\n )\\n) !default;\\n\\n// Cards\\n\\n$card-icon-bg: transparent !default;\\n$card-icon-color: $body-color !default;\\n\",\"@mixin button-social-size(\\n $padding-y,\\n $padding-x,\\n $font-size,\\n $line-height,\\n $border-radius\\n) {\\n padding: $padding-y $padding-x;\\n font-size: $font-size;\\n line-height: $line-height;\\n border: 0;\\n @include border-radius($border-radius);\\n\\n &::before {\\n width: ($padding-y * 2) + ($font-size * $line-height);\\n height: ($padding-y * 2) + ($font-size * $line-height);\\n padding: $padding-y 0;\\n font-size: $font-size;\\n line-height: $line-height;\\n @include border-radius($border-radius);\\n }\\n\\n span {\\n margin-left: ($padding-y * 2) + ($font-size * $line-height);\\n }\\n\\n &.icon {\\n width: ($padding-y * 2) + ($font-size * $line-height);\\n height: ($padding-y * 2) + ($font-size * $line-height);\\n }\\n}\\n\\n@mixin avatar($width, $status-width) {\\n position: relative;\\n display: inline-block;\\n width: $width;\\n\\n .img-avatar {\\n width: $width;\\n height: $width;\\n }\\n\\n .avatar-status {\\n position: absolute;\\n right: 0;\\n bottom: 0;\\n display: block;\\n width: $status-width;\\n height: $status-width;\\n border: 1px solid #fff;\\n border-radius: 50em;\\n }\\n}\\n\\n@mixin borders($borders) {\\n @each $border in $borders {\\n $direction: nth($border, 1);\\n @if $direction == 'all' {\\n $size: map-get(map-get($borders, $direction), size);\\n $style: map-get(map-get($borders, $direction), style);\\n $color: map-get(map-get($borders, $direction), color);\\n border: $size $style $color;\\n } @else if $direction == 'top' {\\n $size: map-get(map-get($borders, $direction), size);\\n $style: map-get(map-get($borders, $direction), style);\\n $color: map-get(map-get($borders, $direction), color);\\n border-top: $size $style $color;\\n } @else if $direction == 'right' {\\n $size: map-get(map-get($borders, $direction), size);\\n $style: map-get(map-get($borders, $direction), style);\\n $color: map-get(map-get($borders, $direction), color);\\n border-right: $size $style $color;\\n } @else if $direction == 'bottom' {\\n $size: map-get(map-get($borders, $direction), size);\\n $style: map-get(map-get($borders, $direction), style);\\n $color: map-get(map-get($borders, $direction), color);\\n border-bottom: $size $style $color;\\n } @else if $direction == 'left' {\\n $size: map-get(map-get($borders, $direction), size);\\n $style: map-get(map-get($borders, $direction), style);\\n $color: map-get(map-get($borders, $direction), color);\\n border-left: $size $style $color;\\n }\\n }\\n}\\n\\n@mixin sidebar-width($borders, $width) {\\n $sidebar-width: $width;\\n\\n @each $border in $borders {\\n $direction: nth($border, 1);\\n @if $direction == 'all' {\\n $size: map-get(map-get($borders, $direction), size);\\n $sidebar-width: ($sidebar-width - (2 * $size));\\n } @else if $direction == 'right' {\\n $size: map-get(map-get($borders, $direction), size);\\n $sidebar-width: $sidebar-width - $size;\\n } @else if $direction == 'left' {\\n $size: map-get(map-get($borders, $direction), size);\\n $sidebar-width: $sidebar-width - $size;\\n }\\n width: $sidebar-width;\\n }\\n}\\n\\n@mixin bg-variant($parent, $color) {\\n #{$parent} {\\n @include border-radius(\\n $card-border-radius-inner $card-border-radius-inner\\n $card-border-radius-inner $card-border-radius-inner\\n );\\n color: #fff !important;\\n background-color: $color !important;\\n }\\n a#{$parent} {\\n @include hover-focus {\\n background-color: darken($color, 10%);\\n }\\n }\\n}\\n\\n@mixin card-accent-variant($color) {\\n border-top-width: 2px;\\n border-top-color: $color;\\n}\\n\",\".img-avatar {\\n border-radius: 50em;\\n}\\n\\n.avatar {\\n $width: 36px;\\n $status-width: 10px;\\n @include avatar($width, $status-width);\\n}\\n\\n.avatar.avatar-xs {\\n $width: 20px;\\n $status-width: 8px;\\n @include avatar($width, $status-width);\\n}\\n\\n.avatar.avatar-sm {\\n $width: 24px;\\n $status-width: 8px;\\n @include avatar($width, $status-width);\\n}\\n\\n.avatar.avatar-lg {\\n $width: 72px;\\n $status-width: 12px;\\n @include avatar($width, $status-width);\\n}\\n\\n.avatars-stack {\\n .avatar.avatar-xs {\\n margin-right: -10px;\\n }\\n\\n // .avatar.avatar-sm {\\n //\\n // }\\n\\n .avatar {\\n margin-right: -15px;\\n transition:\\n margin-left $layout-transition-speed,\\n margin-right $layout-transition-speed;\\n\\n &:hover {\\n margin-right: 0 !important;\\n }\\n }\\n\\n // .avatar.avatar-lg {\\n //\\n // }\\n}\\n\",\".badge-pill {\\n border-radius: $badge-pill-border-radius;\\n}\\n\",\".breadcrumb-menu {\\n margin-left: auto;\\n\\n &::before {\\n display: none;\\n }\\n\\n .btn-group {\\n vertical-align: top;\\n }\\n\\n .btn {\\n padding: 0 $input-btn-padding-x;\\n color: $text-muted;\\n vertical-align: top;\\n border: 0;\\n\\n &:hover,\\n &.active {\\n color: $body-color;\\n background: transparent;\\n }\\n }\\n\\n .open {\\n .btn {\\n color: $body-color;\\n background: transparent;\\n }\\n }\\n\\n .dropdown-menu {\\n min-width: 180px;\\n line-height: $line-height-base;\\n }\\n}\\n\",\".breadcrumb {\\n position: relative;\\n @include borders($breadcrumb-borders);\\n}\\n\",\"button {\\n cursor: pointer;\\n}\\n\\n.btn {\\n .badge {\\n position: absolute;\\n top: 2px;\\n right: 6px;\\n font-size: 9px;\\n }\\n}\\n\\n.btn-transparent {\\n color: #fff;\\n background-color: transparent;\\n border-color: transparent;\\n}\\n\\n.btn {\\n [class^='icon-'],\\n [class*=' icon-'] {\\n display: inline-block;\\n margin-top: -2px;\\n vertical-align: middle;\\n }\\n}\\n\\n.btn-facebook,\\n.btn-twitter,\\n.btn-linkedin,\\n.btn-flickr,\\n.btn-tumblr,\\n.btn-xing,\\n.btn-github,\\n.btn-html5,\\n.btn-openid,\\n.btn-stack-overflow,\\n.btn-youtube,\\n.btn-css3,\\n.btn-dribbble,\\n.btn-google-plus,\\n.btn-instagram,\\n.btn-pinterest,\\n.btn-vk,\\n.btn-yahoo,\\n.btn-behance,\\n.btn-dropbox,\\n.btn-reddit,\\n.btn-spotify,\\n.btn-vine,\\n.btn-foursquare,\\n.btn-vimeo {\\n position: relative;\\n overflow: hidden;\\n color: #fff !important;\\n text-align: center;\\n\\n &::before {\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: block;\\n font-family: 'FontAwesome';\\n font-style: normal;\\n font-weight: normal;\\n -moz-osx-font-smoothing: grayscale;\\n -webkit-font-smoothing: antialiased;\\n }\\n\\n &:hover {\\n color: #fff;\\n }\\n\\n &.icon {\\n span {\\n display: none;\\n }\\n }\\n\\n &.text {\\n &::before {\\n display: none;\\n }\\n\\n span {\\n margin-left: 0 !important;\\n }\\n }\\n @include button-social-size(\\n $input-btn-padding-y,\\n $input-btn-padding-x,\\n $font-size-base,\\n $line-height-base,\\n $btn-border-radius\\n );\\n\\n &.btn-lg {\\n @include button-social-size(\\n $input-btn-padding-y-lg,\\n $input-btn-padding-x-lg,\\n $font-size-lg,\\n $line-height-lg,\\n $btn-border-radius-lg\\n );\\n }\\n\\n &.btn-sm {\\n @include button-social-size(\\n $input-btn-padding-y-sm,\\n $input-btn-padding-x-sm,\\n $font-size-sm,\\n $line-height-sm,\\n $btn-border-radius-sm\\n );\\n }\\n}\\n\\n.btn-facebook {\\n $color: $facebook;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f09a';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-twitter {\\n $color: $twitter;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f099';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-linkedin {\\n $color: $linkedin;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f0e1';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-flickr {\\n $color: $flickr;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f16e';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-tumblr {\\n $color: $tumblr;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f173';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-xing {\\n $color: $xing;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f168';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-github {\\n $color: $github;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f09b';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-html5 {\\n $color: $html5;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f13b';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-openid {\\n $color: $openid;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f19b';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-stack-overflow {\\n $color: $stack-overflow;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f16c';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-css3 {\\n $color: $css3;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f13c';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-youtube {\\n $color: $youtube;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f167';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-dribbble {\\n $color: $dribbble;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f17d';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-google-plus {\\n $color: $google-plus;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f0d5';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-instagram {\\n $color: $instagram;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f16d';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-pinterest {\\n $color: $pinterest;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f0d2';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-vk {\\n $color: $vk;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f189';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-yahoo {\\n $color: $yahoo;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f19e';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-behance {\\n $color: $behance;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f1b4';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-dropbox {\\n $color: $dropbox;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f16b';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-reddit {\\n $color: $reddit;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f1a1';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-spotify {\\n $color: $spotify;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f1bc';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-vine {\\n $color: $vine;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f1ca';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-foursquare {\\n $color: $foursquare;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f180';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\\n.btn-vimeo {\\n $color: $vimeo;\\n\\n background: $color;\\n &::before {\\n content: '\\\\f194';\\n background: darken($color, 5%);\\n }\\n\\n &:hover {\\n background: darken($color, 5%);\\n\\n &::before {\\n background: darken($color, 10%);\\n }\\n }\\n}\\n\",\".callout {\\n position: relative;\\n padding: 0 $spacer;\\n margin: $spacer 0;\\n border: 0 solid $border-color;\\n border-left-width: 0.25rem;\\n\\n @if $enable-rounded {\\n border-radius: 0.25rem;\\n }\\n\\n .chart-wrapper {\\n position: absolute;\\n top: 10px;\\n left: 50%;\\n float: right;\\n width: 50%;\\n }\\n}\\n\\n.callout-bordered {\\n border: 1px solid $border-color;\\n border-left-width: 0.25rem;\\n}\\n.callout code {\\n border-radius: 0.25rem;\\n}\\n.callout h4 {\\n margin-top: 0;\\n margin-bottom: 0.25rem;\\n}\\n.callout p:last-child {\\n margin-bottom: 0;\\n}\\n.callout + .callout {\\n margin-top: -0.25rem;\\n}\\n\\n.callout-default {\\n border-left-color: $text-muted;\\n\\n h4 {\\n color: $text-muted;\\n }\\n}\\n\\n@each $color, $value in $theme-colors {\\n .callout-#{$color} {\\n border-left-color: $value;\\n\\n h4 {\\n color: $value;\\n }\\n }\\n}\\n\",\".card {\\n margin-bottom: 1.5 * $spacer;\\n\\n // Cards with color accent\\n @each $color, $value in $theme-colors {\\n &.bg-#{$color} {\\n border-color: darken($value, 12.5%);\\n .card-header {\\n background-color: darken($value, 3%);\\n border-color: darken($value, 12.5%);\\n }\\n }\\n }\\n}\\n\\n.text-white .text-muted {\\n color: rgba(255, 255, 255, 0.6) !important;\\n}\\n\\n.card-header {\\n .icon-bg {\\n display: inline-body;\\n padding: $card-spacer-y $card-spacer-x !important;\\n margin-top: -$card-spacer-y;\\n margin-right: $card-spacer-x;\\n margin-bottom: -$card-spacer-y;\\n margin-left: -$card-spacer-x;\\n line-height: inherit;\\n color: $card-icon-color;\\n vertical-align: bottom;\\n background: $card-icon-bg;\\n border-right: $card-border-width solid $card-border-color;\\n }\\n\\n .nav.nav-tabs {\\n margin-top: -$card-spacer-y;\\n margin-bottom: -$card-spacer-y;\\n border-bottom: 0;\\n\\n .nav-item {\\n border-top: 0;\\n }\\n\\n .nav-link {\\n padding: $card-spacer-y $card-spacer-x / 2;\\n color: $text-muted;\\n border-top: 0;\\n\\n &.active {\\n color: $body-color;\\n background: #fff;\\n }\\n }\\n }\\n\\n &.card-header-inverse {\\n color: #fff;\\n }\\n\\n .btn {\\n margin-top: -$input-btn-padding-y;\\n }\\n .btn-sm {\\n margin-top: -$input-btn-padding-y-sm;\\n }\\n .btn-lg {\\n margin-top: -$input-btn-padding-y-lg;\\n }\\n}\\n//\\n.card-footer {\\n ul {\\n display: table;\\n width: 100%;\\n padding: 0;\\n margin: 0;\\n table-layout: fixed;\\n\\n li {\\n display: table-cell;\\n padding: 0 $card-spacer-x;\\n text-align: center;\\n }\\n }\\n}\\n\\n[class*='card-outline-'] {\\n .card-body {\\n background: #fff !important;\\n }\\n\\n &.card-outline-top {\\n border-top-width: 2px;\\n border-right-color: $border-color;\\n border-bottom-color: $border-color;\\n border-left-color: $border-color;\\n }\\n}\\n\\n// Cards with color accent\\n@each $color, $value in $theme-colors {\\n .card-accent-#{$color} {\\n @include card-accent-variant($value);\\n }\\n}\\n\\n// Card Actions\\n.card-header {\\n > i {\\n margin-right: $spacer / 2;\\n }\\n .card-actions {\\n position: absolute;\\n top: 0;\\n right: 0;\\n //height: inherit;\\n\\n a,\\n button {\\n display: block;\\n float: left;\\n width: 50px;\\n padding: $card-spacer-y 0;\\n margin: 0 !important;\\n color: $body-color;\\n text-align: center;\\n background: transparent;\\n border: 0;\\n border-left: 1px solid $border-color;\\n box-shadow: 0;\\n\\n &:hover {\\n text-decoration: none;\\n }\\n\\n [class^='icon-'],\\n [class*=' icon-'] {\\n display: inline-body;\\n vertical-align: middle;\\n }\\n\\n i {\\n display: inline-body;\\n transition: 0.4s;\\n }\\n\\n .r180 {\\n transform: rotate(180deg);\\n }\\n }\\n\\n .input-group {\\n width: 230px;\\n margin: 6px;\\n\\n .input-group-addon {\\n background: #fff;\\n }\\n\\n input {\\n border-left: 0;\\n }\\n }\\n }\\n}\\n\\n.card-full {\\n margin-top: -$spacer;\\n margin-right: -$grid-gutter-width / 2;\\n margin-left: -$grid-gutter-width / 2;\\n border: 0;\\n border-bottom: $card-border-width solid $border-color;\\n}\\n\\n@include media-breakpoint-up(sm) {\\n .card-columns {\\n &.cols-2 {\\n column-count: 2;\\n }\\n }\\n}\\n\\n.card {\\n &.drag,\\n .drag {\\n cursor: move;\\n }\\n}\\n\\n.card-placeholder {\\n background: rgba(0, 0, 0, 0.025);\\n border: 1px dashed $gray-300;\\n}\\n\",\".chart-wrapper {\\n canvas {\\n width: 100% !important;\\n }\\n}\\n// scss-lint:disable QualifyingElement\\nbase-chart.chart {\\n display: block !important;\\n}\\n\",\"// Links, buttons, and more within the dropdown menu\\n.dropdown-item {\\n position: relative;\\n padding: 0.375rem 0.75rem;\\n border-bottom: 1px solid $dropdown-border-color;\\n\\n &:last-child {\\n border-bottom: 0;\\n }\\n\\n i {\\n display: inline-block;\\n width: 20px;\\n margin-right: 10px;\\n margin-left: -10px;\\n color: $dropdown-border-color;\\n text-align: center;\\n }\\n\\n .badge {\\n position: absolute;\\n right: 10px;\\n margin-top: 2px;\\n }\\n}\\n\\n// Dropdown section headers\\n.dropdown-header {\\n padding: 8px 20px;\\n background: $dropdown-divider-bg;\\n border-bottom: 1px solid $dropdown-border-color;\\n\\n .btn {\\n margin-top: -7px;\\n color: $dropdown-header-color;\\n\\n &:hover {\\n color: $body-color;\\n }\\n\\n &.pull-right {\\n margin-right: -20px;\\n }\\n }\\n}\\n\\n.dropdown-menu-lg {\\n width: 250px;\\n}\\n.app-header {\\n .navbar-nav {\\n .dropdown-menu {\\n position: absolute;\\n }\\n // Menu positioning\\n //\\n // Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\\n // menu with the parent.\\n .dropdown-menu-right {\\n right: 0;\\n left: auto; // Reset the default from `.dropdown-menu`\\n }\\n\\n .dropdown-menu-left {\\n right: auto;\\n left: 0;\\n }\\n }\\n}\\n\",\".app-footer {\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n padding: 0 $spacer;\\n color: $footer-color;\\n background: $footer-bg;\\n @include borders($footer-borders);\\n}\\n\",\".row.row-equal {\\n padding-right: ($grid-gutter-width / 4);\\n padding-left: ($grid-gutter-width / 4);\\n margin-right: ($grid-gutter-width / -2);\\n margin-left: ($grid-gutter-width / -2);\\n\\n [class*='col-'] {\\n padding-right: ($grid-gutter-width / 4);\\n padding-left: ($grid-gutter-width / 4);\\n }\\n}\\n\\n.main .container-fluid {\\n padding: 30px;\\n height: 100%;\\n}\\n\",\".input-group-addon,\\n.input-group-btn {\\n min-width: 40px;\\n white-space: nowrap;\\n vertical-align: middle; // Match the inputs\\n}\\n\",\"// Angular Version\\n// Make clicks pass-through\\n// scss-lint:disable all\\n#loading-bar,\\n#loading-bar-spinner {\\n -webkit-pointer-events: none;\\n pointer-events: none;\\n -moz-transition: 350ms linear all;\\n -o-transition: 350ms linear all;\\n -webkit-transition: 350ms linear all;\\n transition: 350ms linear all;\\n}\\n\\n#loading-bar.ng-enter,\\n#loading-bar.ng-leave.ng-leave-active,\\n#loading-bar-spinner.ng-enter,\\n#loading-bar-spinner.ng-leave.ng-leave-active {\\n opacity: 0;\\n}\\n\\n#loading-bar.ng-enter.ng-enter-active,\\n#loading-bar.ng-leave,\\n#loading-bar-spinner.ng-enter.ng-enter-active,\\n#loading-bar-spinner.ng-leave {\\n opacity: 1;\\n}\\n\\n#loading-bar .bar {\\n position: fixed;\\n top: 0;\\n left: 0;\\n z-index: 20002;\\n width: 100%;\\n height: 2px;\\n background: theme-color('primary');\\n border-top-right-radius: 1px;\\n border-bottom-right-radius: 1px;\\n -moz-transition: width 350ms;\\n -o-transition: width 350ms;\\n -webkit-transition: width 350ms;\\n transition: width 350ms;\\n}\\n\\n// Fancy blur effect\\n#loading-bar .peg {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: 70px;\\n height: 2px;\\n -moz-border-radius: 100%;\\n -webkit-border-radius: 100%;\\n border-radius: 100%;\\n -moz-box-shadow: #29d 1px 0 6px 1px;\\n -ms-box-shadow: #29d 1px 0 6px 1px;\\n -webkit-box-shadow: #29d 1px 0 6px 1px;\\n box-shadow: #29d 1px 0 6px 1px;\\n opacity: 0.45;\\n}\\n\\n#loading-bar-spinner {\\n position: fixed;\\n top: 10px;\\n left: 10px;\\n z-index: 10002;\\n display: block;\\n}\\n\\n#loading-bar-spinner .spinner-icon {\\n width: 14px;\\n height: 14px;\\n\\n border: solid 2px transparent;\\n border-top-color: #29d;\\n border-left-color: #29d;\\n border-radius: 50%;\\n\\n -moz-animation: loading-bar-spinner 400ms linear infinite;\\n -ms-animation: loading-bar-spinner 400ms linear infinite;\\n -o-animation: loading-bar-spinner 400ms linear infinite;\\n -webkit-animation: loading-bar-spinner 400ms linear infinite;\\n animation: loading-bar-spinner 400ms linear infinite;\\n}\\n\\n@-webkit-keyframes loading-bar-spinner {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@-moz-keyframes loading-bar-spinner {\\n 0% {\\n -moz-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -moz-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@-o-keyframes loading-bar-spinner {\\n 0% {\\n -o-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -o-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@-ms-keyframes loading-bar-spinner {\\n 0% {\\n -ms-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -ms-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes loading-bar-spinner {\\n 0% {\\n transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n//Ajax & Static Version\\n.pace {\\n -webkit-pointer-events: none;\\n pointer-events: none;\\n\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n\\n.pace-inactive {\\n display: none;\\n}\\n\\n.pace .pace-progress {\\n position: fixed;\\n top: 0;\\n right: 100%;\\n z-index: 2000;\\n width: 100%;\\n height: 2px;\\n background: theme-color('primary');\\n}\\n\",\"@each $color, $value in $theme-colors {\\n .modal-#{$color} {\\n .modal-content {\\n border-color: $value;\\n }\\n\\n .modal-header {\\n color: #fff;\\n background-color: $value;\\n }\\n }\\n}\\n\",\".nav-tabs {\\n .nav-link {\\n color: $gray-600;\\n &.active {\\n color: $gray-800;\\n background: #fff;\\n border-color: $border-color;\\n border-bottom-color: #fff;\\n &:focus {\\n background: #fff;\\n border-color: $border-color;\\n border-bottom-color: #fff;\\n }\\n }\\n }\\n}\\n\\n.tab-content {\\n margin-top: -1px;\\n background: #fff;\\n border: 1px solid $border-color;\\n .tab-pane {\\n padding: $spacer;\\n }\\n}\\n\\n.card-block {\\n .tab-content {\\n margin-top: 0;\\n border: 0;\\n }\\n}\\n\",\".app-header.navbar {\\n position: relative;\\n flex-direction: row;\\n height: $navbar-height;\\n padding: 0;\\n margin: 0;\\n background-color: $navbar-bg;\\n @include borders($navbar-border);\\n\\n .navbar-brand {\\n display: inline-block;\\n width: $navbar-brand-width;\\n height: $navbar-height;\\n padding: $navbar-padding-y $navbar-padding-x;\\n margin-right: 0;\\n background-color: $navbar-brand-bg;\\n background-image: $navbar-brand-logo;\\n background-repeat: no-repeat;\\n background-position: center center;\\n background-size: $navbar-brand-logo-size;\\n @include borders($navbar-brand-border);\\n }\\n\\n .navbar-toggler {\\n min-width: 50px;\\n padding: $navbar-toggler-padding-y 0;\\n\\n &:hover .navbar-toggler-icon {\\n background-image: $navbar-toggler-icon-hover;\\n }\\n }\\n\\n .navbar-toggler-icon {\\n height: 23px;\\n background-image: $navbar-toggler-icon;\\n }\\n\\n .navbar-nav {\\n flex-direction: row;\\n align-items: center;\\n }\\n\\n .nav-item {\\n position: relative;\\n min-width: 50px;\\n margin: 0 !important;\\n text-align: center;\\n\\n button {\\n margin: 0 auto;\\n }\\n\\n .nav-link {\\n padding-top: 0;\\n padding-bottom: 0;\\n background: 0;\\n border: 0;\\n\\n .badge {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -16px;\\n margin-left: 0;\\n }\\n\\n > .img-avatar {\\n height: $navbar-height - 20px;\\n margin: 0 10px;\\n }\\n }\\n }\\n\\n .dropdown-menu {\\n padding-bottom: 0;\\n line-height: $line-height-base;\\n }\\n\\n .dropdown-item {\\n min-width: 180px;\\n }\\n}\\n\\n.navbar-brand {\\n color: $navbar-active-color;\\n\\n @include hover-focus {\\n color: $navbar-active-color;\\n }\\n}\\n\\n.navbar-nav {\\n .nav-link {\\n color: $navbar-color;\\n\\n @include hover-focus {\\n color: $navbar-hover-color;\\n }\\n }\\n\\n .open > .nav-link,\\n .active > .nav-link,\\n .nav-link.open,\\n .nav-link.active {\\n @include plain-hover-focus {\\n color: $navbar-active-color;\\n }\\n }\\n}\\n\\n.navbar-divider {\\n background-color: rgba(0, 0, 0, 0.075);\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .brand-minimized {\\n .app-header.navbar {\\n .navbar-brand {\\n width: $navbar-brand-minimized-width;\\n background-color: $navbar-brand-minimized-bg;\\n background-image: $navbar-brand-minimized-logo;\\n background-size: $navbar-brand-minimized-logo-size;\\n @include borders($navbar-brand-minimized-border);\\n }\\n }\\n }\\n}\\n\",\".progress-xs {\\n height: 4px;\\n}\\n\\n.progress-sm {\\n height: 8px;\\n}\\n\\n// White progress bar\\n.progress-white {\\n background-color: rgba(255, 255, 255, 0.2) !important;\\n .progress-bar {\\n background-color: #fff;\\n }\\n}\\n\",\"// scss-lint:disable NestingDepth, SelectorDepth\\n.sidebar {\\n display: flex;\\n flex-direction: column;\\n padding: $sidebar-padding;\\n color: $sidebar-color;\\n background: $sidebar-bg;\\n @include borders($sidebar-borders);\\n\\n .sidebar-close {\\n position: absolute;\\n right: 0;\\n display: none;\\n padding: 0 $spacer;\\n font-size: 24px;\\n font-weight: 800;\\n line-height: $navbar-height;\\n color: $sidebar-color;\\n background: 0;\\n border: 0;\\n opacity: 0.8;\\n\\n &:hover {\\n opacity: 1;\\n }\\n }\\n\\n // Will be added soon\\n // .sidebar-brand { }\\n\\n .sidebar-header {\\n flex: 0 0 $sidebar-header-height;\\n padding: $sidebar-header-padding-y $sidebar-header-padding-x;\\n text-align: center;\\n background: $sidebar-header-bg;\\n }\\n\\n .sidebar-form .form-control {\\n color: $sidebar-form-color;\\n background: $sidebar-form-bg;\\n border: $sidebar-form-border;\\n\\n &::placeholder {\\n color: $sidebar-form-placeholder-color;\\n }\\n }\\n\\n .sidebar-nav {\\n position: relative;\\n flex: 1;\\n overflow-x: hidden;\\n overflow-y: auto;\\n -ms-overflow-style: -ms-autohiding-scrollbar;\\n @include sidebar-width($sidebar-borders, $sidebar-width);\\n\\n &::-webkit-scrollbar {\\n position: absolute;\\n width: 10px;\\n margin-left: -10px;\\n -webkit-appearance: none;\\n }\\n\\n &::-webkit-scrollbar-track {\\n background-color: lighten($sidebar-bg, 5%);\\n border-right: 1px solid darken($sidebar-bg, 5%);\\n border-left: 1px solid darken($sidebar-bg, 5%);\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n height: 50px;\\n background-color: darken($sidebar-bg, 10%);\\n background-clip: content-box;\\n border-color: transparent;\\n border-style: solid;\\n border-width: 1px 2px;\\n }\\n }\\n\\n .nav {\\n @include sidebar-width($sidebar-borders, $sidebar-width);\\n flex-direction: column;\\n min-height: 100%;\\n }\\n\\n .nav-title {\\n padding: $sidebar-nav-title-padding-y $sidebar-nav-title-padding-x;\\n font-size: 11px;\\n font-weight: 600;\\n color: $sidebar-nav-title-color;\\n text-transform: uppercase;\\n }\\n\\n .nav-divider,\\n .divider {\\n height: 10px;\\n }\\n\\n .nav-item {\\n position: relative;\\n margin: 0;\\n transition: background 0.3s ease-in-out;\\n }\\n\\n .nav-dropdown-items {\\n max-height: 0;\\n padding: 0;\\n margin: 0;\\n overflow-y: hidden;\\n transition: max-height 0.3s ease-in-out;\\n\\n .nav-item {\\n padding: 0;\\n list-style: none;\\n }\\n }\\n\\n .nav-link {\\n display: block;\\n padding: $sidebar-nav-link-padding-y $sidebar-nav-link-padding-x;\\n color: $sidebar-nav-link-color;\\n text-decoration: none;\\n background: $sidebar-nav-link-bg;\\n @include borders($sidebar-nav-link-borders);\\n @if $enable-sidebar-nav-rounded {\\n border-radius: $border-radius;\\n }\\n\\n i {\\n display: inline-block;\\n width: 20px;\\n margin: 0 ($sidebar-nav-link-padding-x / 2) 0 0;\\n font-size: 14px;\\n color: $sidebar-nav-link-icon-color;\\n text-align: center;\\n }\\n\\n .badge {\\n float: right;\\n margin-top: 2px;\\n }\\n\\n &.active {\\n color: $sidebar-nav-link-active-color;\\n background: $sidebar-nav-link-active-bg;\\n @include borders($sidebar-nav-link-active-borders);\\n\\n i {\\n color: $sidebar-nav-link-active-icon-color;\\n }\\n }\\n\\n &:hover {\\n color: $sidebar-nav-link-hover-color;\\n background: $sidebar-nav-link-hover-bg;\\n @include borders($sidebar-nav-link-hover-borders);\\n\\n i {\\n color: $sidebar-nav-link-hover-icon-color;\\n }\\n\\n &.nav-dropdown-toggle::before {\\n background-image: $sidebar-nav-dropdown-indicator-hover;\\n }\\n }\\n\\n @each $color, $value in $theme-colors {\\n &.nav-link-#{$color} {\\n background: $value;\\n i {\\n color: rgba(255, 255, 255, 0.7);\\n }\\n &:hover {\\n background: darken($value, 5%) !important;\\n i {\\n color: #fff;\\n }\\n }\\n }\\n }\\n }\\n\\n // ex. <a class=\\\"nav-link nav-dropdown-toggle\\\" href=\\\"#\\\">Components</a>\\n .nav-dropdown-toggle {\\n position: relative;\\n\\n &::before {\\n position: absolute;\\n top: 50%;\\n right: $sidebar-nav-link-padding-x;\\n display: block;\\n width: 8px;\\n height: 8px;\\n padding: 0;\\n margin-top: -4px;\\n content: '';\\n background-image: $sidebar-nav-dropdown-indicator;\\n background-repeat: no-repeat;\\n background-position: center;\\n transition: transform 0.3s;\\n }\\n }\\n\\n // ex. <li class=\\\"nav-item nav-dropdown\\\">\\n .nav-dropdown.open {\\n background: $sidebar-nav-dropdown-bg;\\n @include borders($sidebar-nav-dropdown-borders);\\n @if $enable-sidebar-nav-rounded {\\n border-radius: $border-radius;\\n }\\n > .nav-dropdown-items {\\n max-height: 1000px;\\n }\\n\\n .nav-link {\\n color: $sidebar-nav-dropdown-color;\\n border-left: 0 !important;\\n }\\n\\n > .nav-link.nav-dropdown-toggle::before {\\n transform: rotate(-90deg);\\n }\\n\\n .nav-dropdown.open {\\n border-left: 0;\\n }\\n }\\n\\n .nav-label {\\n display: block;\\n padding: ($sidebar-nav-link-padding-y / 8) $sidebar-nav-link-padding-x;\\n color: $sidebar-nav-title-color;\\n\\n &:hover {\\n color: $sidebar-color;\\n text-decoration: none;\\n }\\n\\n i {\\n width: 20px;\\n margin: -3px ($sidebar-nav-link-padding-x / 2) 0 0;\\n font-size: 10px;\\n color: $sidebar-nav-link-icon-color;\\n text-align: center;\\n vertical-align: middle;\\n }\\n }\\n\\n @if (lightness($sidebar-bg) < 40) {\\n .progress {\\n background-color: lighten($sidebar-bg, 15%) !important;\\n }\\n }\\n\\n .sidebar-footer {\\n flex: 0 0 $sidebar-footer-height;\\n padding: $sidebar-footer-padding-y $sidebar-footer-padding-x;\\n background: $sidebar-footer-bg;\\n @include borders($sidebar-footer-borders);\\n }\\n\\n .sidebar-minimizer {\\n position: relative;\\n flex: 0 0 $sidebar-minimizer-height;\\n background-color: $sidebar-minimizer-bg;\\n border: 0;\\n @include borders($sidebar-minimizer-borders);\\n\\n &::before {\\n position: absolute;\\n top: 0;\\n right: 0;\\n width: $sidebar-minimizer-height;\\n height: $sidebar-minimizer-height;\\n content: '';\\n background-image: $sidebar-minimizer-indicator;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: $sidebar-minimizer-height / 4;\\n transition: 0.3s;\\n }\\n\\n &:focus,\\n &.focus {\\n outline: 0;\\n }\\n\\n &:hover {\\n background-color: $sidebar-minimizer-hover-bg;\\n &::before {\\n background-image: $sidebar-minimizer-hover-indicator;\\n }\\n }\\n }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .sidebar-compact {\\n .sidebar {\\n .sidebar-nav {\\n @include sidebar-width($sidebar-borders, $sidebar-compact-width);\\n }\\n\\n .nav {\\n @include sidebar-width($sidebar-borders, $sidebar-compact-width);\\n\\n .nav-title {\\n text-align: center;\\n }\\n\\n .nav-item {\\n width: $sidebar-compact-width;\\n border-left: 0 !important;\\n\\n .nav-link {\\n text-align: center;\\n\\n i {\\n display: block;\\n width: 100%;\\n margin: $spacer / 4 0;\\n font-size: 24px;\\n }\\n\\n .badge {\\n position: absolute;\\n top: 18px;\\n right: 10px;\\n }\\n\\n &.nav-dropdown-toggle {\\n &::before {\\n top: 30px;\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n // Minimized Sidebar\\n .sidebar-minimized {\\n .hidden-cn {\\n display: none;\\n }\\n .sidebar {\\n z-index: $zindex-sticky - 1;\\n\\n .sidebar-nav {\\n overflow: visible;\\n @include sidebar-width($sidebar-borders, $sidebar-minimized-width);\\n }\\n\\n .nav {\\n @include sidebar-width($sidebar-borders, $sidebar-minimized-width);\\n }\\n\\n .nav-divider,\\n .divider,\\n .nav-title,\\n .sidebar-footer,\\n .sidebar-form,\\n .sidebar-header {\\n display: none;\\n }\\n\\n .sidebar-minimizer::before {\\n width: 100%;\\n transform: rotate(-180deg);\\n }\\n\\n .nav-item {\\n width: $sidebar-minimized-width;\\n overflow: hidden;\\n border-left: 0 !important;\\n\\n &:hover {\\n width: $sidebar-width + $sidebar-minimized-width;\\n overflow: visible;\\n\\n > .nav-link {\\n background: $sidebar-nav-link-hover-bg;\\n\\n i {\\n color: $sidebar-nav-link-hover-color;\\n }\\n }\\n }\\n }\\n\\n .nav-link {\\n position: relative;\\n padding-left: 0;\\n margin: 0;\\n white-space: nowrap;\\n border-left: 0 !important;\\n\\n i {\\n display: block;\\n float: left;\\n width: $sidebar-minimized-height;\\n // padding: 0;\\n // margin: 0 !important;\\n font-size: 18px;\\n }\\n\\n .badge {\\n position: absolute;\\n right: 15px;\\n display: none;\\n }\\n\\n &:hover {\\n width: $sidebar-width + $sidebar-minimized-width;\\n background: $sidebar-nav-link-hover-bg;\\n\\n .badge {\\n display: inline;\\n }\\n }\\n\\n &.nav-dropdown-toggle::before {\\n display: none;\\n }\\n }\\n\\n .nav-dropdown-items {\\n .nav-item {\\n width: $sidebar-width;\\n\\n .nav-link {\\n width: $sidebar-width;\\n }\\n }\\n }\\n\\n .nav > .nav-dropdown {\\n > .nav-dropdown-items {\\n display: none;\\n max-height: 1000px;\\n background: $sidebar-bg;\\n }\\n\\n &:hover {\\n background: $sidebar-nav-link-hover-bg;\\n > .nav-dropdown-items {\\n position: absolute;\\n left: $sidebar-minimized-width;\\n display: inline;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\"@mixin switch-size($width, $height, $font-size, $handle-margin) {\\n width: $width;\\n height: $height;\\n\\n .switch-label {\\n font-size: $font-size;\\n }\\n\\n .switch-handle {\\n width: $height - $handle-margin * 2;\\n height: $height - $handle-margin * 2;\\n }\\n\\n .switch-input:checked ~ .switch-handle {\\n left: $width - $height + $handle-margin;\\n }\\n}\\n\\n@mixin switch($type, $width, $height, $font-size, $handle-margin) {\\n position: relative;\\n display: inline-block;\\n vertical-align: top;\\n width: $width;\\n height: $height;\\n background-color: transparent;\\n cursor: pointer;\\n\\n .switch-input {\\n position: absolute;\\n top: 0;\\n left: 0;\\n opacity: 0;\\n }\\n\\n .switch-label {\\n position: relative;\\n display: block;\\n height: inherit;\\n @if $type == icon {\\n font-family: FontAwesome;\\n }\\n font-size: $font-size;\\n font-weight: 600;\\n text-transform: uppercase;\\n @if $type == ddd {\\n background-color: $gray-100;\\n } @else {\\n background-color: #fff;\\n }\\n border: 1px solid $border-color;\\n border-radius: 2px;\\n transition: opacity background 0.15s ease-out;\\n }\\n @if $type == text or $type == icon {\\n .switch-label::before,\\n .switch-label::after {\\n position: absolute;\\n top: 50%;\\n width: 50%;\\n margin-top: -0.5em;\\n line-height: 1;\\n text-align: center;\\n transition: inherit;\\n }\\n .switch-label::before {\\n right: 1px;\\n color: $gray-200;\\n content: attr(data-off);\\n }\\n .switch-label::after {\\n left: 1px;\\n color: #fff;\\n content: attr(data-on);\\n opacity: 0;\\n }\\n }\\n .switch-input:checked ~ .switch-label {\\n //background: $gray-lightest;\\n }\\n .switch-input:checked ~ .switch-label::before {\\n opacity: 0;\\n }\\n .switch-input:checked ~ .switch-label::after {\\n opacity: 1;\\n }\\n\\n .switch-handle {\\n position: absolute;\\n top: $handle-margin;\\n left: $handle-margin;\\n width: $height - $handle-margin * 2;\\n height: $height - $handle-margin * 2;\\n background: #fff;\\n border: 1px solid $border-color;\\n border-radius: 1px;\\n transition: left 0.15s ease-out;\\n @if $type == ddd {\\n border: 0;\\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);\\n }\\n }\\n\\n .switch-input:checked ~ .switch-handle {\\n left: $width - $height + $handle-margin;\\n }\\n\\n @if $type == ddd {\\n @extend .switch-pill;\\n }\\n\\n //size variations\\n @if $type == default {\\n &.switch-lg {\\n @include switch-size(\\n $switch-lg-width,\\n $switch-lg-height,\\n $switch-lg-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-sm {\\n @include switch-size(\\n $switch-sm-width,\\n $switch-sm-height,\\n $switch-sm-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-xs {\\n @include switch-size(\\n $switch-xs-width,\\n $switch-xs-height,\\n $switch-xs-font-size,\\n $handle-margin\\n );\\n }\\n } @else if $type == text {\\n &.switch-lg {\\n @include switch-size(\\n $switch-text-lg-width,\\n $switch-text-lg-height,\\n $switch-text-lg-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-sm {\\n @include switch-size(\\n $switch-text-sm-width,\\n $switch-text-sm-height,\\n $switch-text-sm-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-xs {\\n @include switch-size(\\n $switch-text-xs-width,\\n $switch-text-xs-height,\\n $switch-text-xs-font-size,\\n $handle-margin\\n );\\n }\\n } @else if $type == icon {\\n &.switch-lg {\\n @include switch-size(\\n $switch-icon-lg-width,\\n $switch-icon-lg-height,\\n $switch-icon-lg-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-sm {\\n @include switch-size(\\n $switch-icon-sm-width,\\n $switch-icon-sm-height,\\n $switch-icon-sm-font-size,\\n $handle-margin\\n );\\n }\\n &.switch-xs {\\n @include switch-size(\\n $switch-icon-xs-width,\\n $switch-icon-xs-height,\\n $switch-icon-xs-font-size,\\n $handle-margin\\n );\\n }\\n } @else if $type == ddd {\\n &.switch-lg {\\n @include switch-size(\\n $switch-lg-width,\\n $switch-lg-height,\\n $switch-lg-font-size,\\n 0\\n );\\n }\\n &.switch-sm {\\n @include switch-size(\\n $switch-sm-width,\\n $switch-sm-height,\\n $switch-sm-font-size,\\n 0\\n );\\n }\\n &.switch-xs {\\n @include switch-size(\\n $switch-xs-width,\\n $switch-xs-height,\\n $switch-xs-font-size,\\n 0\\n );\\n }\\n }\\n}\\n\\n@mixin switch-variant($color) {\\n > .switch-input:checked ~ .switch-label {\\n background: $color !important;\\n border-color: darken($color, 10%);\\n }\\n\\n > .switch-input:checked ~ .switch-handle {\\n border-color: darken($color, 10%);\\n }\\n}\\n\\n@mixin switch-outline-variant($color) {\\n > .switch-input:checked ~ .switch-label {\\n background: #fff !important;\\n border-color: $color;\\n\\n &::after {\\n color: $color;\\n }\\n }\\n\\n > .switch-input:checked ~ .switch-handle {\\n border-color: $color;\\n }\\n}\\n\\n@mixin switch-outline-alt-variant($color) {\\n > .switch-input:checked ~ .switch-label {\\n background: #fff !important;\\n border-color: $color;\\n\\n &::after {\\n color: $color;\\n }\\n }\\n\\n > .switch-input:checked ~ .switch-handle {\\n background: $color !important;\\n border-color: $color;\\n }\\n}\\n\\n$switch-lg-width: 48px;\\n$switch-lg-height: 28px;\\n$switch-lg-font-size: 12px;\\n\\n$switch-width: 40px;\\n$switch-height: 24px;\\n$switch-font-size: 10px;\\n\\n$handle-margin: 2px;\\n\\n$switch-sm-width: 32px;\\n$switch-sm-height: 20px;\\n$switch-sm-font-size: 8px;\\n\\n$switch-xs-width: 24px;\\n$switch-xs-height: 16px;\\n$switch-xs-font-size: 7px;\\n\\n$switch-text-lg-width: 56px;\\n$switch-text-lg-height: 28px;\\n$switch-text-lg-font-size: 12px;\\n\\n$switch-text-width: 48px;\\n$switch-text-height: 24px;\\n$switch-text-font-size: 10px;\\n\\n$switch-text-sm-width: 40px;\\n$switch-text-sm-height: 20px;\\n$switch-text-sm-font-size: 8px;\\n\\n$switch-text-xs-width: 32px;\\n$switch-text-xs-height: 16px;\\n$switch-text-xs-font-size: 7px;\\n\\n$switch-icon-lg-width: 56px;\\n$switch-icon-lg-height: 28px;\\n$switch-icon-lg-font-size: 12px;\\n\\n$switch-icon-width: 48px;\\n$switch-icon-height: 24px;\\n$switch-icon-font-size: 10px;\\n\\n$switch-icon-sm-width: 40px;\\n$switch-icon-sm-height: 20px;\\n$switch-icon-sm-font-size: 8px;\\n\\n$switch-icon-xs-width: 32px;\\n$switch-icon-xs-height: 16px;\\n$switch-icon-xs-font-size: 7px;\\n\\n.switch.switch-default {\\n @include switch(\\n 'default',\\n $switch-width,\\n $switch-height,\\n $switch-font-size,\\n $handle-margin\\n );\\n}\\n\\n.switch.switch-text {\\n @include switch(\\n 'text',\\n $switch-text-width,\\n $switch-text-height,\\n $switch-text-font-size,\\n $handle-margin\\n );\\n}\\n\\n.switch.switch-icon {\\n @include switch(\\n 'icon',\\n $switch-icon-width,\\n $switch-icon-height,\\n $switch-icon-font-size,\\n $handle-margin\\n );\\n}\\n\\n.switch.switch-3d {\\n @include switch('ddd', $switch-width, $switch-height, $switch-font-size, 0);\\n}\\n\\n//pills style\\n.switch-pill {\\n .switch-label,\\n .switch-handle {\\n border-radius: 50em !important;\\n }\\n\\n .switch-label::before {\\n right: 2px !important;\\n }\\n .switch-label::after {\\n left: 2px !important;\\n }\\n}\\n\\n@each $color, $value in $theme-colors {\\n //normal style\\n .switch-#{$color} {\\n @include switch-variant($value);\\n }\\n //outline style\\n .switch-#{$color}-outline {\\n @include switch-outline-variant($value);\\n }\\n //outline alternative style\\n .switch-#{$color}-outline-alt {\\n @include switch-outline-alt-variant($value);\\n }\\n}\\n\",\".table-outline {\\n border: 1px solid $table-border-color;\\n\\n td {\\n vertical-align: middle;\\n }\\n}\\n\\n.table-align-middle {\\n td {\\n vertical-align: middle;\\n }\\n}\\n\\n.table-clear {\\n td {\\n border: 0;\\n }\\n}\\n\",\"// .social-box\\n.social-box {\\n min-height: 160px;\\n margin-bottom: 2 * $card-spacer-y;\\n text-align: center;\\n background: #fff;\\n border: $card-border-width solid $card-border-color;\\n @include border-radius($card-border-radius);\\n\\n i {\\n display: block;\\n margin: -1px -1px 0;\\n font-size: 40px;\\n line-height: 90px;\\n background: $gray-200;\\n\\n @include border-radius($card-border-radius $card-border-radius 0 0);\\n }\\n\\n .chart-wrapper {\\n height: 90px;\\n margin: -90px 0 0;\\n\\n canvas {\\n width: 100% !important;\\n height: 90px !important;\\n }\\n }\\n\\n ul {\\n padding: 10px 0;\\n list-style: none;\\n\\n li {\\n display: block;\\n float: left;\\n width: 50%;\\n\\n &:first-child {\\n border-right: 1px solid $border-color;\\n }\\n\\n strong {\\n display: block;\\n font-size: 20px;\\n }\\n\\n span {\\n font-size: 10px;\\n font-weight: 500;\\n color: $border-color;\\n text-transform: uppercase;\\n }\\n }\\n }\\n\\n &.facebook {\\n i {\\n color: #fff;\\n background: $facebook;\\n }\\n }\\n\\n &.twitter {\\n i {\\n color: #fff;\\n background: $twitter;\\n }\\n }\\n\\n &.linkedin {\\n i {\\n color: #fff;\\n background: $linkedin;\\n }\\n }\\n\\n &.google-plus {\\n i {\\n color: #fff;\\n background: $google-plus;\\n }\\n }\\n}\\n\\n.horizontal-bars {\\n padding: 0;\\n margin: 0;\\n list-style: none;\\n\\n li {\\n position: relative;\\n height: 40px;\\n line-height: 40px;\\n vertical-align: middle;\\n\\n .title {\\n width: 100px;\\n font-size: 12px;\\n font-weight: 600;\\n color: $text-muted;\\n vertical-align: middle;\\n }\\n\\n .bars {\\n position: absolute;\\n top: 15px;\\n width: 100%;\\n padding-left: 100px;\\n\\n .progress:first-child {\\n margin-bottom: 2px;\\n }\\n }\\n\\n &.legend {\\n text-align: center;\\n\\n .badge {\\n display: inline-block;\\n width: 8px;\\n height: 8px;\\n padding: 0;\\n }\\n }\\n\\n &.divider {\\n height: 40px;\\n\\n i {\\n margin: 0 !important;\\n }\\n }\\n }\\n\\n &.type-2 {\\n li {\\n overflow: hidden;\\n\\n i {\\n display: inline-block;\\n margin-right: $spacer;\\n margin-left: 5px;\\n font-size: 18px;\\n line-height: 40px;\\n }\\n\\n .title {\\n display: inline-block;\\n width: auto;\\n margin-top: -9px;\\n font-size: $font-size-base;\\n font-weight: normal;\\n line-height: 40px;\\n color: $body-color;\\n }\\n\\n .value {\\n float: right;\\n font-weight: 600;\\n }\\n\\n .bars {\\n position: absolute;\\n top: auto;\\n bottom: 0;\\n padding: 0;\\n }\\n }\\n }\\n}\\n\\n.icons-list {\\n padding: 0;\\n margin: 0;\\n list-style: none;\\n\\n li {\\n position: relative;\\n height: 40px;\\n vertical-align: middle;\\n\\n i {\\n display: block;\\n float: left;\\n width: 35px !important;\\n height: 35px !important;\\n margin: 2px;\\n line-height: 35px !important;\\n text-align: center;\\n }\\n\\n .desc {\\n height: 40px;\\n margin-left: 50px;\\n border-bottom: 1px solid $border-color;\\n\\n .title {\\n padding: 2px 0 0;\\n margin: 0;\\n }\\n small {\\n display: block;\\n margin-top: -4px;\\n color: $text-muted;\\n }\\n }\\n\\n .value {\\n position: absolute;\\n top: 2px;\\n right: 45px;\\n text-align: right;\\n\\n strong {\\n display: block;\\n margin-top: -3px;\\n }\\n }\\n\\n .actions {\\n position: absolute;\\n top: -4px;\\n right: 10px;\\n width: 40px;\\n height: 40px;\\n line-height: 40px;\\n text-align: center;\\n\\n i {\\n float: none;\\n width: auto;\\n height: auto;\\n padding: 0;\\n margin: 0;\\n line-height: normal;\\n }\\n }\\n\\n &.divider {\\n height: 40px;\\n\\n i {\\n width: auto;\\n height: auto;\\n margin: 2px 0 0;\\n font-size: 18px;\\n }\\n }\\n }\\n}\\n\",\"// IE10&11 Flexbox fix\\n@media all and (-ms-high-contrast: none) {\\n html {\\n display: flex;\\n flex-direction: column;\\n }\\n}\\n\\n// app-dashboard and app-root are Angular2+ selectors. You can add here your own selectors if you need.\\n.app,\\napp-dashboard,\\napp-root {\\n display: flex;\\n flex-direction: column;\\n min-height: 100vh;\\n}\\n\\n.app-header {\\n flex: 0 0 $navbar-height;\\n}\\n\\n.app-footer {\\n flex: 0 0 $footer-height;\\n}\\n\\n.app-body {\\n display: flex;\\n flex-direction: row;\\n flex-grow: 1;\\n overflow-x: hidden;\\n\\n .main {\\n flex: 1;\\n min-width: 0;\\n }\\n\\n .sidebar {\\n // $sidebar-width is the width of the columns\\n flex: 0 0 $sidebar-width;\\n // put the nav on the left\\n order: -1;\\n }\\n\\n .aside-menu {\\n // $aside-menu-width is the width of the columns\\n flex: 0 0 $aside-menu-width;\\n }\\n}\\n\\n//\\n// header\\n//\\n.header-fixed {\\n .app-header {\\n position: fixed;\\n z-index: $zindex-sticky;\\n width: 100%;\\n }\\n .app-body {\\n margin-top: $navbar-height;\\n }\\n}\\n\\n//\\n// Sidebar\\n//\\n.sidebar-hidden {\\n .sidebar {\\n margin-left: -$sidebar-width;\\n }\\n}\\n\\n.sidebar-fixed {\\n .sidebar {\\n position: fixed;\\n z-index: $zindex-sticky - 1;\\n width: $sidebar-width;\\n height: calc(100vh - #{$navbar-height});\\n // margin-top: - $navbar-height;\\n\\n // .sidebar-nav {\\n // height: calc(100vh - #{$navbar-height});\\n // }\\n }\\n\\n .main,\\n .app-footer {\\n margin-left: $sidebar-width;\\n }\\n\\n &.sidebar-hidden {\\n .main,\\n .app-footer {\\n margin-left: 0;\\n }\\n }\\n}\\n\\n.sidebar-off-canvas {\\n .sidebar {\\n position: fixed;\\n z-index: $zindex-sticky - 1;\\n height: calc(100vh - #{$navbar-height});\\n }\\n}\\n\\n@include media-breakpoint-up(lg) {\\n .sidebar-compact {\\n .sidebar {\\n flex: 0 0 $sidebar-compact-width;\\n }\\n\\n &.sidebar-hidden {\\n .sidebar {\\n margin-left: -$sidebar-compact-width;\\n }\\n }\\n\\n &.sidebar-fixed {\\n .main,\\n .app-footer {\\n margin-left: $sidebar-compact-width;\\n }\\n\\n .sidebar {\\n width: $sidebar-compact-width;\\n }\\n\\n &.sidebar-hidden {\\n .main,\\n .app-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n\\n .sidebar-minimized {\\n .sidebar {\\n flex: 0 0 $sidebar-minimized-width;\\n }\\n\\n &.sidebar-hidden {\\n .sidebar {\\n margin-left: -$sidebar-minimized-width;\\n }\\n }\\n\\n &.sidebar-fixed {\\n .main,\\n .app-footer {\\n margin-left: $sidebar-minimized-width;\\n }\\n\\n .sidebar {\\n width: $sidebar-minimized-width;\\n }\\n\\n &.sidebar-hidden {\\n .main,\\n .app-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n}\\n\\n//\\n// Aside Menu\\n//\\n.aside-menu-hidden {\\n .aside-menu {\\n margin-right: -$aside-menu-width;\\n }\\n}\\n\\n.aside-menu-fixed {\\n .aside-menu {\\n position: fixed;\\n right: 0;\\n height: 100%;\\n\\n .tab-content {\\n height: calc(\\n 100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} -\\n #{$navbar-height}\\n );\\n }\\n }\\n\\n .main,\\n .app-footer {\\n margin-right: $aside-menu-width;\\n }\\n\\n &.aside-menu-hidden {\\n .main,\\n .app-footer {\\n margin-right: 0;\\n }\\n }\\n}\\n\\n.aside-menu-off-canvas {\\n .aside-menu {\\n position: fixed;\\n right: 0;\\n z-index: $zindex-sticky - 1;\\n height: 100%;\\n\\n .tab-content {\\n height: calc(\\n 100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} -\\n #{$navbar-height}\\n );\\n }\\n }\\n}\\n\\n//\\n// Breadcrumb\\n//\\n.breadcrumb-fixed {\\n .main {\\n $breadcrumb-height: 2 * $breadcrumb-padding-y + $font-size-base + 1.5 *\\n $spacer;\\n padding-top: $breadcrumb-height;\\n }\\n\\n .breadcrumb {\\n position: fixed;\\n top: $navbar-height;\\n right: 0;\\n left: 0;\\n z-index: $zindex-sticky - 2;\\n }\\n\\n // if sidebar + main + aside\\n .main:nth-child(2) {\\n .breadcrumb {\\n right: $aside-menu-width;\\n left: $sidebar-width;\\n }\\n }\\n\\n // if sidebar + main\\n .main:first-child {\\n .breadcrumb {\\n right: $aside-menu-width;\\n left: 0;\\n }\\n }\\n\\n // if main + aside\\n .main:last-child {\\n .breadcrumb {\\n right: 0;\\n }\\n }\\n\\n &.sidebar-minimized {\\n .main .breadcrumb {\\n left: $sidebar-minimized-width;\\n }\\n }\\n\\n &.sidebar-hidden,\\n &.sidebar-off-canvas {\\n .main .breadcrumb {\\n left: 0;\\n }\\n }\\n\\n &.aside-menu-hidden,\\n &.aside-menu-off-canvas {\\n .main .breadcrumb {\\n right: 0;\\n }\\n }\\n}\\n\\n//\\n// Footer\\n//\\n.footer-fixed {\\n .app-footer {\\n position: fixed;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: $zindex-sticky;\\n height: $footer-height;\\n }\\n\\n .app-body {\\n margin-bottom: $footer-height;\\n }\\n}\\n\\n//\\n// Animations\\n//\\n.app-header,\\n.app-footer,\\n.sidebar,\\n.main,\\n.aside-menu {\\n transition:\\n margin-left $layout-transition-speed,\\n margin-right $layout-transition-speed,\\n width $layout-transition-speed,\\n flex $layout-transition-speed;\\n}\\n.sidebar-nav {\\n transition: width $layout-transition-speed;\\n}\\n.breadcrumb {\\n transition:\\n left $layout-transition-speed,\\n right $layout-transition-speed,\\n width $layout-transition-speed;\\n}\\n\\n//\\n// Mobile layout\\n//\\n\\n@include media-breakpoint-down(md) {\\n .app-header.navbar {\\n position: fixed !important;\\n z-index: $zindex-sticky;\\n width: 100%;\\n text-align: center;\\n background-color: $navbar-brand-bg;\\n @include borders($navbar-brand-border);\\n\\n .navbar-toggler {\\n @if (lightness($navbar-brand-bg) > 40) {\\n color: $navbar-color;\\n } @else {\\n color: #fff;\\n }\\n }\\n\\n .navbar-brand {\\n position: absolute;\\n left: 50%;\\n margin-left: -($navbar-brand-width / 2);\\n }\\n }\\n\\n .app-body {\\n margin-top: $navbar-height;\\n }\\n\\n .breadcrumb-fixed {\\n .main:nth-child(2) .breadcrumb {\\n right: auto;\\n left: auto;\\n width: 100%;\\n }\\n }\\n\\n .sidebar {\\n position: fixed;\\n z-index: $zindex-sticky - 1;\\n width: $mobile-sidebar-width;\\n height: calc(100vh - #{$navbar-height});\\n margin-left: -$mobile-sidebar-width;\\n\\n .sidebar-nav,\\n .nav {\\n width: $mobile-sidebar-width;\\n min-height: calc(100vh - #{$navbar-height});\\n }\\n\\n .sidebar-minimizer {\\n display: none;\\n }\\n }\\n\\n .main,\\n .app-footer {\\n margin-left: 0 !important;\\n }\\n\\n // .aside-menu {\\n // margin-right: - $aside-menu-width;\\n // }\\n\\n .sidebar-hidden {\\n .sidebar {\\n margin-left: -$mobile-sidebar-width;\\n }\\n }\\n\\n .sidebar-mobile-show {\\n .sidebar {\\n width: $mobile-sidebar-width;\\n margin-left: 0;\\n }\\n\\n .main {\\n margin-right: -$mobile-sidebar-width !important;\\n margin-left: $mobile-sidebar-width !important;\\n }\\n }\\n}\\n\",\"// scss-lint:disable QualifyingElement\\nhr.transparent {\\n border-top: 1px solid transparent;\\n}\\n\",\".bg-primary,\\n.bg-success,\\n.bg-info,\\n.bg-warning,\\n.bg-danger,\\n.bg-inverse {\\n color: #fff;\\n}\\n\",\"//border\\n@each $prop, $abbrev in (border: b) {\\n @each $size in (0, 1, 2) {\\n @if $size == 0 {\\n .#{$abbrev}-a-#{$size} {\\n #{$prop}: 0 !important;\\n } // a = All sides\\n .#{$abbrev}-t-#{$size} {\\n #{$prop}-top: 0 !important;\\n }\\n .#{$abbrev}-r-#{$size} {\\n #{$prop}-right: 0 !important;\\n }\\n .#{$abbrev}-b-#{$size} {\\n #{$prop}-bottom: 0 !important;\\n }\\n .#{$abbrev}-l-#{$size} {\\n #{$prop}-left: 0 !important;\\n }\\n } @else {\\n .#{$abbrev}-a-#{$size} {\\n #{$prop}: $size * $border-width solid $border-color !important;\\n } // a = All sides\\n .#{$abbrev}-t-#{$size} {\\n #{$prop}-top: $size * $border-width solid $border-color !important;\\n }\\n .#{$abbrev}-r-#{$size} {\\n #{$prop}-right: $size * $border-width solid $border-color !important;\\n }\\n .#{$abbrev}-b-#{$size} {\\n #{$prop}-bottom: $size * $border-width solid $border-color !important;\\n }\\n .#{$abbrev}-l-#{$size} {\\n #{$prop}-left: $size * $border-width solid $border-color !important;\\n }\\n }\\n }\\n}\\n\",\"//\\n// Utilities for common `display` values\\n//\\n\\n@each $breakpoint in map-keys($grid-breakpoints) {\\n @include media-breakpoint-down($breakpoint) {\\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\\n\\n .d#{$infix}-down-none {\\n display: none !important;\\n }\\n // .d#{$infix}-inline { display: inline !important; }\\n // .d#{$infix}-inline-block { display: inline-block !important; }\\n // .d#{$infix}-block { display: block !important; }\\n // .d#{$infix}-table { display: table !important; }\\n // .d#{$infix}-table-cell { display: table-cell !important; }\\n // .d#{$infix}-flex { display: flex !important; }\\n // .d#{$infix}-inline-flex { display: inline-flex !important; }\\n }\\n}\\n\",\".pagination-datatables,\\n.pagination {\\n li {\\n @extend .page-item;\\n\\n a {\\n @extend .page-link;\\n }\\n }\\n}\\n\\n.label-pill {\\n border-radius: 1rem !important;\\n}\\n\\n// temp fix for Vue & React\\n\\n// Open state for the dropdown\\n.open,\\n.show {\\n // Remove the outline when :focus is triggered\\n > a {\\n outline: 0;\\n }\\n}\\n\\n// navbar dropdown fix\\n.navbar .dropdown-toggle {\\n @extend .nav-link;\\n\\n .img-avatar {\\n height: $navbar-height - 20px;\\n margin: 0 10px;\\n }\\n}\\n\\n.card-block {\\n @extend .card-body;\\n}\\n\",\"//\\n// RTL Support\\n//\\n// scss-lint:disable NestingDepth, SelectorDepth\\n*[dir='rtl'] {\\n direction: rtl;\\n unicode-bidi: embed;\\n\\n ul {\\n -webkit-padding-start: 0;\\n }\\n\\n table tr th {\\n text-align: right;\\n }\\n\\n // Breadcrumb\\n\\n .breadcrumb-item {\\n float: right;\\n }\\n\\n .breadcrumb-menu {\\n right: auto;\\n left: $breadcrumb-padding-x;\\n }\\n\\n // Dropdown\\n .dropdown-item {\\n text-align: right;\\n\\n i {\\n margin-right: -10px;\\n margin-left: 10px;\\n }\\n\\n .badge {\\n right: auto;\\n left: 10px;\\n }\\n }\\n\\n //\\n // Sidebar\\n //\\n .sidebar-hidden {\\n .sidebar {\\n margin-right: -$sidebar-width;\\n }\\n }\\n\\n .sidebar-fixed {\\n .main,\\n .app-footer {\\n margin-right: $sidebar-width;\\n }\\n\\n &.sidebar-hidden {\\n .main,\\n .app-footer {\\n margin-right: 0;\\n }\\n }\\n }\\n\\n .sidebar-minimized {\\n .sidebar {\\n flex: 0 0 $sidebar-minimized-width;\\n }\\n\\n &.sidebar-hidden {\\n .sidebar {\\n margin-right: -$sidebar-minimized-width;\\n margin-left: 0;\\n }\\n }\\n\\n &.sidebar-fixed {\\n .main,\\n .app-footer {\\n margin-right: $sidebar-minimized-width;\\n }\\n\\n &.sidebar-hidden {\\n .main,\\n .app-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n\\n //\\n // Aside Menu\\n //\\n .aside-menu-hidden {\\n .aside-menu {\\n margin-right: 0;\\n margin-left: -$aside-menu-width;\\n }\\n }\\n\\n .aside-menu-fixed {\\n .aside-menu {\\n right: auto;\\n left: 0;\\n }\\n\\n .main,\\n .app-footer {\\n //margin-right: 0;\\n margin-left: $aside-menu-width;\\n }\\n\\n &.aside-menu-hidden {\\n .main,\\n .app-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n\\n .aside-menu-off-canvas {\\n .aside-menu {\\n position: fixed;\\n right: 0;\\n z-index: $zindex-sticky - 1;\\n height: 100%;\\n\\n .tab-content {\\n height: calc(\\n 100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} -\\n #{$navbar-height}\\n );\\n }\\n }\\n }\\n\\n // Sidebar Menu\\n .sidebar {\\n .sidebar-nav {\\n .nav {\\n .nav-item {\\n .nav-link {\\n direction: rtl;\\n i {\\n margin: 0 0 0 ($sidebar-nav-link-padding-x / 2);\\n }\\n .badge {\\n float: left;\\n margin-top: 2px;\\n // margin-left: 10px;\\n }\\n &.nav-dropdown-toggle {\\n &::before {\\n position: absolute;\\n right: auto !important;\\n left: $sidebar-nav-link-padding-x;\\n transform: rotate(180deg);\\n }\\n }\\n }\\n &.nav-dropdown {\\n &.open {\\n > .nav-link.nav-dropdown-toggle::before {\\n transform: rotate(270deg);\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n\\n .sidebar-minimized .sidebar {\\n .nav-link {\\n padding-right: 0;\\n i {\\n float: right;\\n padding: 0;\\n margin: 0;\\n }\\n .badge {\\n right: auto;\\n left: 15px;\\n }\\n }\\n .nav > .nav-dropdown {\\n &:hover {\\n > .nav-dropdown-items {\\n right: $sidebar-minimized-width;\\n left: 0;\\n }\\n }\\n }\\n }\\n\\n // Horizontal bars\\n .horizontal-bars {\\n li {\\n .bars {\\n padding-right: 100px;\\n padding-left: 0;\\n\\n .progress:first-child {\\n margin-bottom: 2px;\\n }\\n }\\n }\\n\\n &.type-2 {\\n li {\\n i {\\n margin-right: 5px;\\n margin-left: $spacer;\\n }\\n\\n .value {\\n float: left;\\n font-weight: 600;\\n }\\n\\n .bars {\\n padding: 0;\\n }\\n }\\n }\\n }\\n\\n // Icon list\\n .icons-list {\\n li {\\n position: relative;\\n height: 40px;\\n vertical-align: middle;\\n\\n i {\\n float: right;\\n }\\n\\n .desc {\\n margin-right: 50px;\\n margin-left: 0;\\n }\\n\\n .value {\\n right: auto;\\n left: 45px;\\n text-align: left;\\n\\n strong {\\n display: block;\\n margin-top: -3px;\\n }\\n }\\n\\n .actions {\\n right: auto;\\n left: 10px;\\n }\\n }\\n }\\n\\n // Callouts\\n .callout {\\n border: 0 solid $border-color;\\n border-right-width: 0.25rem;\\n\\n @each $color, $value in $theme-colors {\\n &.callout-#{$color} {\\n border-right-color: $value;\\n }\\n }\\n\\n .chart-wrapper {\\n left: 0;\\n float: left;\\n }\\n }\\n\\n .callout-default {\\n border-right-color: $text-muted;\\n }\\n}\\n\",\"// Here you can add other styles\\n\\n// RJSF Form Styling\\n\\n// Mixin for button state variants to reduce duplication\\n@mixin button-variant(\\n $bg-color,\\n $border-color,\\n $hover-bg,\\n $hover-border,\\n $shadow-color\\n) {\\n background-color: $bg-color !important;\\n border-color: $border-color !important;\\n color: white !important;\\n\\n &:hover {\\n background-color: $hover-bg !important;\\n border-color: $hover-border !important;\\n }\\n\\n &:focus {\\n background-color: $hover-bg !important;\\n border-color: $hover-border !important;\\n box-shadow: 0 0 0 0.2rem $shadow-color !important;\\n }\\n}\\n\\nform.rjsf {\\n // General form element styling\\n label {\\n margin-bottom: 0;\\n }\\n\\n div > p.field-description {\\n font-size: 0.7rem;\\n font-style: italic;\\n margin-bottom: 0px;\\n }\\n\\n input {\\n width: auto;\\n }\\n\\n div.row.array-item {\\n background-color: aliceblue;\\n margin-bottom: 3px;\\n }\\n\\n // Custom button styling for RJSF buttons to match original appearance\\n\\n // Add button styling - cyan color\\n button.btn-add,\\n button.array-item-add button {\\n @include button-variant(\\n #20a8d8,\\n // background\\n #20a8d8,\\n // border\\n #1985ac,\\n // hover background\\n #1985ac,\\n // hover border\\n rgba(32, 168, 216, 0.5) // focus shadow\\n );\\n }\\n\\n // Remove button styling - red color\\n button.array-item-remove {\\n @include button-variant(\\n #f86c6b,\\n // background\\n #f86c6b,\\n // border\\n #f63c3a,\\n // hover background\\n #f63c3a,\\n // hover border\\n rgba(248, 108, 107, 0.5) // focus shadow\\n );\\n }\\n\\n // Array button styling\\n .array-button-style {\\n flex: 1 1 0%;\\n padding-left: 6px;\\n padding-right: 6px;\\n font-weight: bold;\\n }\\n\\n // Button group flexbox layout\\n .btn-group-flex {\\n display: flex;\\n justify-content: space-around;\\n }\\n}\\n\\n@media (max-width: 767px) {\\n .container-fluid,\\n .row {\\n padding: 0 2px !important;\\n }\\n .navbar-header {\\n margin: 0px;\\n }\\n}\\n\\n/** Utility class to attempt to wrap text in a more balanced way. **/\\n.text-pretty {\\n text-wrap: balance; /* Fallback for older browsers */\\n text-wrap: pretty; /* Future spec */\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".appstore__warning{margin-bottom:20px}.appstore__warning .message__container{padding:10px;color:#9d8641;border:1px solid #9d8641;background-color:#fff2cd}.appstore__warning .message__container p{margin:0}.appstore__warning .message__container p span{margin-right:5px}.appstore__warning .message__container i{margin-right:5px}.appstore__header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}@media(max-width: 1080px){.appstore__header{flex-direction:column}.appstore__header .title__container{width:100%;justify-content:space-between;margin-bottom:10px}.appstore__header .action__container{width:100%;flex-direction:row-reverse}.appstore__header .action__container .search{min-width:none;justify-self:flex-start}}.appstore__header .title__container{display:flex;align-items:center}.appstore__header .title__container .card-title{margin:0 10px 0 0}.appstore__header .title__container .button-wrapper .badge__update{color:#fff;font-size:10px;border-radius:3px;background-color:#00cd79;margin-left:5px;padding:3px;vertical-align:middle}.appstore__header .title__container .button-wrapper button{margin:0 2px}.appstore__header .action__container{display:flex;align-items:center}.appstore__header .action__container button{margin:0 5px}.appstore__header .action__container .search{height:100%;position:relative;margin:0 5px}.appstore__header .action__container .search__icon{position:absolute;margin-left:5px;padding:10px;color:gray}.appstore__header .action__container .search__input{padding:10px;width:100%;text-indent:30px}.appstore__tags{margin-bottom:20px}.appstore__tags button{margin:5px 5px;border-radius:30px}.appstore__grid{flex:1 1 auto;background-color:#fff;max-height:80%;font-size:14px}.appstore__grid .grid__action{display:flex;justify-content:flex-end}.appstore__grid .cell-action{width:160px}.appstore__grid .cell-action .proress__wrapper{display:flex;flex-direction:column}.appstore__grid .cell-action .progress__status{text-align:center;width:100%}.appstore__grid .cell-action .progress__bar{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/appstore/appStore.scss\"],\"names\":[],\"mappings\":\"AACE,mBACE,kBAAA,CAEA,uCACE,YAAA,CACA,aAAA,CACA,wBAAA,CACA,wBAAA,CACA,yCAIE,QAAA,CAHA,8CACE,gBAAA,CAIJ,yCACE,gBAAA,CAKN,kBACE,YAAA,CACA,6BAAA,CACA,kBAAA,CACA,cAAA,CAEA,0BANF,kBAOI,qBAAA,CAEA,oCACE,UAAA,CACA,6BAAA,CACA,kBAAA,CAGF,qCACE,UAAA,CACA,0BAAA,CAEA,6CACE,cAAA,CACA,uBAAA,CAAA,CAKN,oCACE,YAAA,CACA,kBAAA,CAEA,gDACE,iBAAA,CAIA,mEACE,UAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,eAAA,CACA,WAAA,CACA,qBAAA,CAGF,2DACE,YAAA,CAKN,qCACE,YAAA,CACA,kBAAA,CAEA,4CACE,YAAA,CAGF,6CACE,WAAA,CACA,iBAAA,CACA,YAAA,CAEA,mDACE,iBAAA,CACA,eAAA,CACA,YAAA,CACA,UAAA,CAEF,oDACE,YAAA,CACA,UAAA,CACA,gBAAA,CAMR,gBAKE,kBAAA,CAJA,uBACE,cAAA,CACA,kBAAA,CAKJ,gBACE,aAAA,CACA,qBAAA,CACA,cAAA,CACA,cAAA,CAEA,8BACE,YAAA,CACA,wBAAA,CAGF,6BACE,WAAA,CAEA,+CACE,YAAA,CACA,qBAAA,CAGF,+CACE,iBAAA,CACA,UAAA,CAGF,4CACE,UAAA\",\"sourcesContent\":[\".appstore {\\n &__warning {\\n margin-bottom: 20px;\\n\\n .message__container {\\n padding: 10px;\\n color: #9d8641;\\n border: 1px solid #9d8641;\\n background-color: #fff2cd;\\n p {\\n span {\\n margin-right: 5px;\\n }\\n margin: 0;\\n }\\n i {\\n margin-right: 5px;\\n }\\n }\\n }\\n\\n &__header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n flex-wrap: wrap;\\n\\n @media (max-width: 1080px) {\\n flex-direction: column;\\n\\n .title__container {\\n width: 100%;\\n justify-content: space-between;\\n margin-bottom: 10px;\\n }\\n\\n .action__container {\\n width: 100%;\\n flex-direction: row-reverse;\\n\\n .search {\\n min-width: none;\\n justify-self: flex-start;\\n }\\n }\\n }\\n\\n .title__container {\\n display: flex;\\n align-items: center;\\n\\n .card-title {\\n margin: 0 10px 0 0;\\n }\\n\\n .button-wrapper {\\n .badge__update {\\n color: white;\\n font-size: 10px;\\n border-radius: 3px;\\n background-color: #00cd79;\\n margin-left: 5px;\\n padding: 3px;\\n vertical-align: middle;\\n }\\n\\n button {\\n margin: 0 2px;\\n }\\n }\\n }\\n\\n .action__container {\\n display: flex;\\n align-items: center;\\n\\n button {\\n margin: 0 5px;\\n }\\n\\n .search {\\n height: 100%;\\n position: relative;\\n margin: 0 5px;\\n\\n &__icon {\\n position: absolute;\\n margin-left: 5px;\\n padding: 10px;\\n color: grey;\\n }\\n &__input {\\n padding: 10px;\\n width: 100%;\\n text-indent: 30px;\\n }\\n }\\n }\\n }\\n\\n &__tags {\\n button {\\n margin: 5px 5px;\\n border-radius: 30px;\\n }\\n margin-bottom: 20px;\\n }\\n\\n &__grid {\\n flex: 1 1 auto;\\n background-color: white;\\n max-height: 80%;\\n font-size: 14px;\\n\\n .grid__action {\\n display: flex;\\n justify-content: flex-end;\\n }\\n\\n .cell-action {\\n width: 160px;\\n\\n .proress__wrapper {\\n display: flex;\\n flex-direction: column;\\n }\\n\\n .progress__status {\\n text-align: center;\\n width: 100%;\\n }\\n\\n .progress__bar {\\n width: 100%;\\n }\\n }\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".fa-pulse {\\n display: inline-block;\\n -moz-animation: pulse 2s infinite linear;\\n -o-animation: pulse 2s infinite linear;\\n -webkit-animation: pulse 2s infinite linear;\\n animation: pulse 2s infinite linear;\\n}\\n\\n.fa-pulse-fast {\\n display: inline-block;\\n -moz-animation: pulse 1s infinite linear;\\n -o-animation: pulse 1s infinite linear;\\n -webkit-animation: pulse 1s infinite linear;\\n animation: pulse 1s infinite linear;\\n}\\n\\n@-webkit-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-moz-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-o-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-ms-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/fa-pulse.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;EACrB,wCAAwC;EACxC,sCAAsC;EACtC,2CAA2C;EAC3C,mCAAmC;AACrC;;AAEA;EACE,qBAAqB;EACrB,wCAAwC;EACxC,sCAAsC;EACtC,2CAA2C;EAC3C,mCAAmC;AACrC;;AAEA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;AACA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;AACA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;AACA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF;AACA;EACE;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;AACF\",\"sourcesContent\":[\".fa-pulse {\\n display: inline-block;\\n -moz-animation: pulse 2s infinite linear;\\n -o-animation: pulse 2s infinite linear;\\n -webkit-animation: pulse 2s infinite linear;\\n animation: pulse 2s infinite linear;\\n}\\n\\n.fa-pulse-fast {\\n display: inline-block;\\n -moz-animation: pulse 1s infinite linear;\\n -o-animation: pulse 1s infinite linear;\\n -webkit-animation: pulse 1s infinite linear;\\n animation: pulse 1s infinite linear;\\n}\\n\\n@-webkit-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-moz-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-o-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@-ms-keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes pulse {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* The Circle */\\n.blinking-circle {\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n border-radius: 50%;\\n background-color: red;\\n animation: pulse 0.65s infinite ease-in-out;\\n}\\n\\n/* The Animation */\\n@keyframes pulse {\\n 0% {\\n opacity: 0.15;\\n }\\n\\n 50% {\\n opacity: 1;\\n }\\n\\n 100% {\\n opacity: 0.15;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/blinking-circle.css\"],\"names\":[],\"mappings\":\"AAAA,eAAe;AACf;EACE,qBAAqB;EACrB,UAAU;EACV,WAAW;EACX,kBAAkB;EAClB,qBAAqB;EACrB,2CAA2C;AAC7C;;AAEA,kBAAkB;AAClB;EACE;IACE,aAAa;EACf;;EAEA;IACE,UAAU;EACZ;;EAEA;IACE,aAAa;EACf;AACF\",\"sourcesContent\":[\"/* The Circle */\\n.blinking-circle {\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n border-radius: 50%;\\n background-color: red;\\n animation: pulse 0.65s infinite ease-in-out;\\n}\\n\\n/* The Animation */\\n@keyframes pulse {\\n 0% {\\n opacity: 0.15;\\n }\\n\\n 50% {\\n opacity: 1;\\n }\\n\\n 100% {\\n opacity: 0.15;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["options","locals","authFetch","url","fetch","credentials","async","login","dispatch","username","password","rememberMe","callback","payload","request","method","headers","body","JSON","stringify","response","json","status","type","data","message","fetchAllData","restart","confirm","window","serverRoutesPrefix","then","buildFetchAction","endpoint","prefix","isUndefined","fetchLoginStatus","fetchPlugins","fetchWebapps","fetchAddons","fetchApps","fetchAccessRequests","fetchServerSpecification","openServerEventsConnection","isReconnect","proto","location","protocol","ws","WebSocket","host","onmessage","event","serverEvent","parse","name","skSelf","self","messageHandler","onclose","console","log","onerror","onopen","reload","Header","Component","constructor","props","super","this","toggleDropdown","bind","state","dropdownOpen","componentDidMount","addEventListener","document","classList","toggle","setState","sidebarToggle","e","preventDefault","sidebarMinimize","mobileSidebarToggle","asideToggle","render","React","className","NavbarToggler","onClick","NavbarBrand","href","Nav","navbar","NavItem","loginStatus","userLevel","NavLink","restarting","logout","authenticationRequired","Dropdown","nav","isOpen","DropdownToggle","DropdownMenu","right","DropdownItem","connect","ok","Error","statusText","catch","error","SidebarFooter","SidebarForm","SidebarHeader","SidebarMinimizer","brandMinimize","Sidebar","handleClick","target","parentElement","activeRoute","routeName","pathname","indexOf","badge","classes","classNames","class","Badge","color","variant","text","navDropdown","item","key","icon","navList","children","navType","idx","title","wrapper","element","attributes","divider","navItem","navLink","isExternal","RsNavLink","_extends","link","to","activeClassName","items","map","index","substring","appUpdates","appStore","updates","length","updatesBadge","serverUpdateBadge","accessRequestsBadge","accessRequests","storeAvailable","serverUpdate","result","push","apply","security","allowDeviceAccessRequests","allowNewUserRegistration","rel","Aside","Footer","mmsi","uuid","vesselInfo","serverSpecification","server","version","Link","pluginNameLink","id","providerIdLink","startsWith","serverStatistics","websocketStatus","providerStatus","deltaRate","numberOfAvailablePaths","wsClients","providerStatistics","uptime","errorCount","filter","s","uptimeD","Math","floor","uptimeH","uptimeM","errors","getLinkType","providerId","find","statusType","_","inputPulseIconClass","providerStats","outputPulseIconClass","writeRate","renderActivity","linkType","history","style","deltaCount","transform","writeCount","toFixed","Progress","value","Card","CardHeader","CardBody","Row","Col","xs","md","fontSize","Object","keys","sort","some","Table","hover","responsive","bordered","striped","size","renderStatus","statusClass","lastError","warning","lastErrorTimeStamp","toLazyDynamicComponent","moduleName","component","Promise","resolve","reject","container","toSafeModuleId","undefined","init","__webpack_share_scopes__","default","get","factory","ex","replace","EnableSecurity","enabling","errorMessage","handleInputChange","handleInputKeyUp","userId","noUsers","Login","Container","CardGroup","securityWasEnabled","Form","InputGroup","InputGroupAddon","addonType","InputGroupText","Input","placeholder","onChange","onKeyUp","Button","loggingIn","loginErrorMessage","checked","Label","Dashboard","wsProto","Embedded","match","params","moduleId","websockets","adminUI","hideSideBar","dispatchEvent","Event","getApplicationUserData","appDataVersion","path","r","setApplicationUserData","openWebsocket","knownParams","queryParam","p","i","x","v","join","ReconnectingWebSocket","context","cParts","split","slice","componentWillUnmount","forEach","close","backgroundColor","height","Suspense","fallback","mapStateToProps","propTypes","webAppInfo","PropTypes","isRequired","description","signalk","displayName","appIcon","urlToWebapp","keywords","includes","Webapp","card","lead","header","backgroundSize","backgroundImage","width","blockIcon","Webapps","addonComponents","setAddonComponents","addons","componentDidUpdate","prevProps","webapps","lg","xl","c","UnitSelect","disabled","setValue","entries","UNITS","unit","Text","NumberValue","Number","MethodSelect","Array","isArray","splice","DISPLAYTYPES","DisplaySelect","lower","upper","power","METAFIELDRENDERERS","units","MetaFormRow","renderValue","longName","shortName","timeout","displayScale","zones","normalMethod","nominalMethod","alertMethod","warnMethod","alarmMethod","emergencyMethod","METAFIELDS","A","C","Hz","J","K","Pa","V","W","deg","kg","m","m2","m3","rad","ratio","bool","_key","setKey","deleteKey","FormGroup","row","fieldName","FontAwesomeIcon","faTrashCan","UnknownMetaFormRow","metaKey","STATES","Zone","zone","isEditing","showHint","setZone","deleteZone","FormText","Zones","setZones","action","encType","onSubmit","faPlusSquare","meta","setIsEditing","useState","localMeta","setLocalMeta","canEditMetadata","metaValues","reduce","acc","extraValues","o","prop","zonesMetaValue","faPencil","faSave","saveMeta","replaceAll","renderer","metaFieldValue","metaFieldKey","copy","faSquarePlus","metaFieldName","radiansToDegrees","radians","PI","NotificationRenderer","circleStyle","borderRadius","info","normal","nominal","warn","alert","alarm","emergency","display","marginLeft","verticalAlign","toUpperCase","gap","faEye","faEyeSlash","faBell","faBellSlash","MeterRenderer","min","max","low","high","optimum","pct","precision","txt","DefaultValueRenderer","formattedValue","Renderers","Position","PositionRenderer","longitude","latitude","SatellitesInView","SatellitesInViewRenderer","satellites","count","center","alignItems","border","cx","cy","fill","stroke","strokeWidth","maxRadius","x1","y1","x2","y2","y","textAnchor","sat","polarToCartesian","elevation","azimuth","elevationRadius","sin","cos","snr","SNR","hasSignal","snrText","fontWeight","minWidth","marginBottom","flexDirection","Meter","SimpleHTML","SimpleHTMLRenderer","html","h","ReactHtmlParser","LargeArray","LargeArrayRenderer","Notification","Attitude","AttitudeRenderer","pitch","roll","horizonHeight","attitudeText","overflow","position","transformOrigin","bottom","Direction","DirectionRenderer","directionDegrees","compassPoint","round","arrowStyle","transition","VALUE_RENDERERS","metaStorageKey","pauseStorageKey","rawStorageKey","contextStorageKey","searchStorageKey","selectedSourcesStorageKey","sourceFilterActiveStorageKey","fetchSources","sources","values","source","device","n2k","modelId","manufacturerCode","DataBrowser","hasData","webSocket","didSubscribe","pause","localStorage","getItem","includeMeta","raw","search","selectedSources","Set","sourceFilterActive","handlePause","handleMessage","handleContextChange","handleSearch","toggleMeta","toggleRaw","toggleSourceSelection","toggleSourceFilter","msg","isNew","contextMeta","update","pgn","sentence","vp","timestamp","moment","formattedTimestamp","isSame","format","k","$source","subscribeToDataIfNeeded","sub","subscribe","period","send","unsubscribeToData","unsubscribe","selectedOption","setItem","getContextLabel","contextKey","contextData","contextName","getContextOptions","contexts","selfLabel","label","contextLabel","getCurrentContextValue","option","resetAllTimestampAnimations","querySelectorAll","cell","remove","newSelectedSources","wasEmpty","has","delete","add","shouldActivateFilter","shouldDeactivateFilter","newSourceFilterActive","contextOptions","currentContext","Select","isSearchable","isClearable","noOptionsMessage","whiteSpace","htmlFor","marginRight","toLowerCase","CopyToClipboardWithFade","CustomRenderer","getValueRenderer","module","Renderer","comp","TimestampCell","isPaused","array","Meta","JSONTree","theme","invertTheme","sortObjectKeys","hideRoot","isUpdated","animationKey","timeoutId","clearTimeout","setTimeout","opacity","onCopy","CopyToClipboard","timestampFormat","inputStorageKey","DELTAS_TAB_ID","PATHS_TAB_ID","N2KJSON_TAB_ID","PUTRESULTS_TAB_ID","LINT_ERROR_TAB_ID","Playground","input","deltas","n2kJson","n2kOutAvailable","inputIsJson","isJson","sending","sendingN2K","activeTab","handleExecute","handleSendN2K","handleInput","beautify","inputWaitTimeout","jsonlint","jsonError","putResults","sendToServer","sendToN2K","start","trim","charAt","delta","tab","rows","CardFooter","paddingBottom","tabs","classnames","active","TabContent","TabPane","tabId","overflowY","maxHeight","padding","formatted","n2kData","app","showVersionsModal","setShowVersionsModal","versions","setVersions","loadingVersions","setLoadingVersions","handleInstallClick","content","progress","installing","isInstalling","isRemoving","isWaiting","isRemove","animated","installFailed","installedVersion","UncontrolledDropdown","group","installed","newVersion","faCloudArrowDown","isPlugin","role","faGear","faLink","caret","npmUrl","faArrowUpRightFromSquare","packageData","versionList","semver","handleRemoveClick","Modal","ModalHeader","ModalBody","ListGroup","ListGroupItem","handleInstallVersionClick","AppListItem","author","updated","ActionCellRenderer","AppList","apps","setApps","loadMore","useEffect","InfiniteScroll","dataLength","next","hasMore","WarningBox","faTriangleExclamation","installingCount","updateAvailable","view","setSelectedView","category","setSelectedCategory","setSearch","selectedViewFilter","selectedViewToFilter","selectedView","selectedCategoryFilter","categories","textSearchFilter","rowData","deriveAppList","allApps","available","a","b","Date","getTime","CardTitle","handleUpdateAll","faMagnifyingGlass","onInput","outline","AppsList","withTheme","Bootstrap4Theme","CSS_CLASSES","createButton","tabIndex","customTemplates","FieldTemplate","help","required","displayLabel","schema","isCheckbox","isObject","ObjectFieldTemplate","properties","idSchema","isArrayItem","parts","test","isArrayItemId","$id","ArrayFieldTemplate","canAdd","uiSchema","onAddClick","readonly","registry","uiOptions","getUiOptions","ResolvedArrayFieldItemTemplate","getTemplate","ButtonTemplates","AddButton","templates","itemProps","ArrayFieldItemTemplate","hasToolbar","hasMoveUp","hasMoveDown","hasRemove","onDropIndexClick","onReorderClick","MoveUpButton","MoveDownButton","RemoveButton","SubmitButton","submitText","plugin","enabled","enableLogging","enableDebug","validator","statusMessage","configuration","formData","EmbeddedPluginConfigurationForm","packageName","save","saveData","openPluginStorageKey","statusFilterStorageKey","PluginConfigurationList","plugins","statusFilter","searchResults","selectedPlugin","lastOpenedPlugin","handleStatusFilter","selectPlugin","handlePluginClick","searchPlugins","searchString","lowerCase","filterPluginsByStatus","configurationRequired","getFilteredPlugins","filtered","pluginId","currentTarget","getAttribute","currentlySelected","selectedPluginId","removeItem","scrollToSelectedPlugin","tableContainer","selectedRow","querySelector","containerRect","getBoundingClientRect","rowRect","top","targetScrollTop","offsetTop","clientHeight","scrollTo","behavior","currentPluginId","pluginid","lastOpenPluginId","requestAnimationFrame","pluginList","ref","zIndex","isSelected","cursor","PluginConfigCard","isConfigurator","onClose","Headers","pluginIndex","findIndex","pluginData","showSaveSuccess","showSuccessMessage","labelStyle","maxWidth","boxShadow","configCard","PluginConfigurationForm","formSubmitBtn","click","fetchSecurityConfig","adminUIOrigin","Settings","handleChange","handleSaveConfig","allow_readonly","expiration","allowedCorsOrigins","check","fetchSecurityUsers","users","Users","handleAddUser","handleCancel","handleApply","handleUserChange","deleteUser","selectedUser","selectedIndex","refs","scrollIntoView","confirmPassword","userClicked","user","fetchSecurityDevices","devices","Devices","handleDeviceChange","deleteDevice","selectedDevice","permissions","clientId","deviceClicked","convertPermissions","requestedPermissions","securityDevices","Register","email","registrationSent","handleCreate","targetName","sm","block","AccessRequests","selectedRequest","accessRequestsApproving","accessRequestsDenying","handleRequestChange","handleAccessRequest","identifier","approved","stateKey","config","requestClicked","req","accessIdentifier","accessDescription","ip","N2KFilters","handleAddFilter","handleEnabledChange","filterChanged","deleteFilter","filters","filtersEnabled","sourceName","useCanName","BasicProvider","hasAnalyzer","TypeComponent","NMEA2000","NMEA0183","SignalK","Seatalk","FileStream","LoggingInput","dummyEvent","OverrideTimestamps","onPropChange","TextInput","helpText","TextAreaInput","DeviceInput","serialports","portInfo","isManualEntry","isListedDevice","manualEntryValue","serialportListOptions","deviceListMap","concat","labels","j","logging","ValidateChecksumInput","validateChecksum","appendChecksum","overrideTimestamp","RemoveNullsInput","removeNulls","AppendChecksum","SentenceEventInput","sentenceEvent","DataTypeInput","dataType","BaudRateIntput","baudrate","BaudRateIntputCanboat","StdOutInput","getDerivedStateFromProps","toStdout","IgnoredSentences","ignoredSentences","PortInput","port","HostInput","NoDataReceivedTimeoutInput","noDataReceivedTimeout","RemoteSelfInput","remoteSelf","Suppress0183Checkbox","suppress0183event","UseCanNameInput","CamelCaseCompatInput","useCamelCompat","CollectNetworkStatsInput","sendNetworkStats","interface","uniqueNumber","mfgCode","serialParams","useDiscovery","selfsignedcert","subscription","selfHandling","gpios","gpio","gpioInvert","filename","SOURCEPRIOS_PRIO_CHANGED","SOURCEPRIOS_PRIO_DELETED","SOURCEPRIOS_PRIO_MOVED","SOURCEPRIOS_PATH_CHANGED","SOURCEPRIOS_PATH_DELETED","SOURCEPRIOS_SAVING","SOURCEPRIOS_SAVED","SOURCEPRIOS_SAVE_FAILED","SOURCEPRIOS_SAVE_FAILED_OVER","checkTimeouts","sourcePriorities","prio","thisOne","isNaN","reduceSourcePriorities","saveState","pathIndex","sourceRef","change","prios","priorities","dirty","timeoutsOk","tmp","isSaving","saveFailed","fetchSourceRefs","cb","pathResponse","sourceRefs","uniq","PrefsEditor","toggleEditor","Collapse","Width","Creatable","menuPortalTarget","SourcePriorities","availablePaths","pathsArray","Alert","pathPriority","sourcePrioritySave","paddingLeft","sourcePrioritiesData","fetchProviders","selectedProvider","selectedProviderId","provider","originalId","providers","runDiscovery","ProvidersConfiguration","handleProviderChange","handleProviderPropChange","handleAddProvider","handleDelete","set","editable","wasDiscovered","discoveredProviders","providerClicked","ProviderType","ApplicableStatus","applicable","scrollMarginTop","readOnly","fetchVessel","VesselConfiguration","handleSaveVessel","callsignVhf","aisShipType","draft","beam","gpsFromBow","gpsFromCenter","fetchLogfileList","okResponse","authorized","logfileslist","logfilesToRows","logfiles","datesWithHours","logfile","date","substr","hour","fetchSettings","ServerSettings","handleCourseApiChange","handleOptionChange","handleInterfaceChange","handleSaveSettings","courseApi","interfaces","fieldColWidthMd","runFromSystemd","ssl","sslport","lineHeight","SettableInterfaces","pruneContextsMinutes","loggingDirectory","keepMostRecentLogsOnly","logCountToKeep","apiOnly","applicationData","tcp","ReduxedSettings","LogFiles","BackupRestore","restoreFile","restoreState","includePlugins","fileChanged","handleRestoreFileChange","includePluginsChange","backup","validate","restore","cancelRestore","files","restoreContents","res","FormData","append","Accept","restoreStatus","percentComplete","ServerLogs","didSubScribe","debugKeys","handleDebug","fetchDebugKeys","subscribeToLogsIfNeeded","unsubscribeToLogs","doHandleDebug","handleDebugCheckbox","keysToSend","debugEnabled","toString","handleRememberDebug","isMulti","rememberDebug","LogList","end","fontFamily","logEntry","PureLogRow","d","el","ServerUpdate","chanelog","handleUpdate","fetchChangelog","changelog","pushState","isInstalled","canUpdateServer","isInDocker","withRouter","Full","suppressPadding","fluid","Switch","Route","loginOrOriginal","Apps","Configuration","ServerLog","SecuritySettings","Redirect","from","BaseComponent","componentSupportsReadOnly","Restricted","hasError","getDerivedStateFromError","readOnlyAccess","loginRequired","convert","Convert","logEntryCount","store","createStore","nameCollator","l","webSocketTimer","clearInterval","setInterval","isError","ts","toHtml","escape","shift","sourcePrioritiesMap","applyMiddleware","thunk","left","__webpack_init_sharing__","ReactDOM","HashRouter","Provider","getElementById","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___"],"sourceRoot":""}
|