integrate theme

This commit is contained in:
Jonny_Bro (Nikita) 2023-06-19 14:21:58 +05:00
parent d330ae315f
commit 08275381dc
180 changed files with 146874 additions and 1 deletions

View file

@ -1,5 +1,6 @@
const EventEmitter = require('events'); const EventEmitter = require('events');
const DBDEvents = new EventEmitter(); const DBDEvents = new EventEmitter();
const version = require("./package.json").version;
const err = (text) => { const err = (text) => {
return text + ` Do you need help? Join our Discord server: ${'https://discord.gg/CzfMGtrdaA'.blue}`; return text + ` Do you need help? Join our Discord server: ${'https://discord.gg/CzfMGtrdaA'.blue}`;
@ -105,5 +106,6 @@ module.exports = {
Dashboard, Dashboard,
formTypes: require('./ModuleExportsFunctions/formTypes'), formTypes: require('./ModuleExportsFunctions/formTypes'),
customPagesTypes: require('./ModuleExportsFunctions/customPagesTypes'), customPagesTypes: require('./ModuleExportsFunctions/customPagesTypes'),
DBDEvents DBDEvents,
version
} }

Binary file not shown.

538
theme/dbd-soft-ui/dbd-soft-ui.d.ts vendored Normal file
View file

@ -0,0 +1,538 @@
declare module "dbd-soft-ui" {
import { Express, Request, Response } from "express";
type themeConfig = {
customThemeOptions: {
index: ({ req, res, config }: {
req: Request,
res: Response,
config: any
}) => {
cards: {
title: string,
icon: string,
getValue: string,
progressBar: {
enabled: boolean,
getProgress: number
}
}[],
graph: {
values: number[],
labels: string[]
}
}
},
addons: string[],
websiteName: string,
colorScheme: "dark" | "pink" | "blue" | "red" | "green" | "yellow" | "custom",
themeColors?: {
primaryColor: string,
secondaryColor: string
}
supporteMail: string,
locales: Record<string, any>,
footer: {
replaceDefault: boolean,
text: string,
}
admin: {
pterodactyl: {
enabled: boolean,
apiKey: string,
panelLink: string,
serverUUIDs: string[]
},
logs?: {
enabled?: boolean,
key?: string,
}
},
icons: {
favicon: string,
noGuildIcon: string,
sidebar: {
darkUrl: string,
lightUrl: string,
hideName: boolean,
borderRadius: boolean,
alignCenter: boolean
}
},
index: {
graph: {
enabled: boolean,
lineGraph: boolean,
tag: string,
max: number
}
},
premium: {
enabled: boolean,
card: {
title: string,
description: string,
bgImage: string,
button: {
text: string,
url: string
}
}
},
preloader: {
image: string,
spinner: boolean,
text: string
},
sidebar?: {
gestures: {
disabled: boolean,
gestureTimer: number,
gestureSensitivity: number
}
},
shardspage?: {
enabled: boolean,
key: string,
},
meta: {
author: string,
owner: string,
description: string,
ogLocale: string,
ogTitle: string,
ogImage: string,
ogType: string,
ogUrl: string,
ogSiteName: string,
ogDescription: string,
twitterTitle: string,
twitterDescription: string,
twitterDomain: string,
twitterUrl: string,
twitterCard: string,
twitterSite: string,
twitterSiteId: string,
twitterCreator: string,
twitterCreatorId: string,
twitterImage: string
},
error: {
error404: {
title: string,
subtitle: string,
description: string
},
dbdError: {
disableSecretMenu: boolean,
secretMenuCombination: string[]
}
},
sweetalert: {
errors: {
requirePremium: string
},
success: {
login: string
}
},
blacklisted: {
title: string,
subtitle: string,
description: string,
button: {
enabled: boolean,
text: string,
link: string
}
},
commands?: [
{
category: string,
subTitle: string,
categoryId: string,
image: string,
hideAlias: boolean,
hideDescription: boolean,
hideSidebarItem: boolean,
list: [
{
commandName: string,
commandUsage: string,
commandDescription: string,
commandAlias: string
}
]
}
]
}
export default function (options: themeConfig): {
themeCodename: string,
viewsPath: string,
staticPath: string,
embedBuilderComponent: string,
themeConfig: themeConfig,
init: (app: Express, config: Record<string, any>) => void;
};
export const partials: any;
export const formTypes: FormTypes;
export const cmdHandler: (commands: Record<string, any>[], prefix: string) => Record<string, any>[];
/**
* @see [utils/feedHandler](./utils/feedHandler.js).
*/
export class Feed {
color: FeedColor;
description: string;
icon: FeedIcon;
id: string | number;
setColor: (color: FeedColor) => Feed;
setDescription: (description: string) => Feed;
setIcon: (icon: FeedIcon) => Feed;
getFeed: (id: string | number) => Feed;
delete: () => Feed;
send: () => Promise<void>;
constructor();
}
/**
* All possible colors that can be used against the
* `Feed#setColor()` method. They can be accessed with
* dot notation, eg `FeedColor.Red`.
*/
export enum FeedColor {
Red = "red",
Orange = "orange",
Pink = "pink",
Gray = "gray",
Green = "green",
Blue = "blue",
Dark = "dark"
}
/**
* All possible icons that can be used against the
* `Feed#setIcon()` method. They can be accessed with
* bracket notation, eg `FeedIcon["address-book"]`.
*/
export enum FeedIcon {
"address-book",
"address-card",
"adjust",
"air-freshener",
"align-center",
"align-left",
"align-right",
"ambulance",
"angle-double-down",
"angle-double-left",
"angle-double-right",
"angle-double-up",
"angle-down",
"angle-left",
"angle-right",
"angle-up",
"archive",
"arrow-alt-circle-down",
"arrow-alt-circle-left",
"arrow-alt-circle-right",
"arrow-alt-circle-up",
"arrow-down",
"arrow-left",
"arrow-right",
"arrow-up",
"arrows-alt",
"arrows-alt-h",
"arrows-alt-v",
"assistive-listening-systems",
"asterisk",
"at",
"atlas",
"award",
"backspace",
"backward",
"bahai",
"ban",
"band-aid",
"bars",
"battery-empty",
"battery-full",
"battery-half",
"battery-quarter",
"battery-three-quarters",
"bed",
"beer",
"bell",
"bell-slash",
"birthday-cake",
"bolt",
"bomb",
"bone",
"book",
"book-dead",
"book-medical",
"book-open",
"bookmark",
"border-all",
"border-none",
"border-style",
"bowling-ball",
"box",
"box-open",
"briefcase",
"broadcast-tower",
"bug",
"building",
"bullhorn",
"calculator",
"calendar",
"calendar-alt",
"calendar-check",
"calendar-day",
"calendar-minus",
"calendar-plus",
"calendar-times",
"calendar-week",
"camera",
"caret-down",
"caret-left",
"caret-right",
"caret-up",
"certificate",
"chair",
"chalkboard",
"charging-station",
"chart-bar",
"chart-line",
"chart-pie",
"check",
"check-circle",
"check-square",
"circle",
"circle-notch",
"clipboard",
"clock",
"clone",
"cloud",
"cloud-download-alt",
"cloud-meatball",
"cloud-moon",
"cloud-moon-rain",
"cloud-rain",
"cloud-showers-heavy",
"cloud-sun",
"cloud-sun-rain",
"cloud-upload-alt",
"code",
"code-branch",
"cog",
"cogs",
"columns",
"comment",
"comment-alt",
"comment-dollar",
"comment-dots",
"comment-medical",
"comment-slash",
"comments",
"comments-dollar",
"compact-disc",
"compass",
"compress-alt",
"cookie",
"cookie-bite",
"copy",
"credit-card",
"crop",
"crop-alt",
"cut",
"database",
"desktop",
"edit",
"envelope",
"envelope-open",
"eraser",
"ethernet",
"exchange-alt",
"exclamation",
"exclamation-circle",
"exclamation-triangle",
"expand",
"expand-alt",
"external-link-alt",
"eye",
"eye-dropper",
"eye-slash",
"fan",
"file",
"file-alt",
"file-archive",
"file-audio",
"file-code",
"file-download",
"fill",
"fill-drip",
"filter",
"fingerprint",
"fire",
"fire-alt",
"folder",
"folder-open",
"forward",
"gamepad",
"ghost",
"gift",
"gifts",
"globe",
"globe-africa",
"globe-asia",
"globe-europe",
"headphones",
"headphones-alt",
"headset",
"heart",
"heart-broken",
"heartbeat",
"history",
"home",
"info",
"keyboard",
"layer-group",
"list",
"lock",
"lock-open",
"map-marker",
"map-marker-alt",
"microphone",
"microphone-alt",
"microphone-alt-slash",
"minus",
"mobile",
"mobile-alt",
"moon",
"mouse",
"mouse-pointer",
"music",
"network-wired",
"neuter",
"paperclip",
"paste",
"pause",
"paw",
"pen",
"pencil-alt",
"percent",
"percentage",
"phone",
"phone-alt",
"phone-slash",
"phone-volume",
"photo-video",
"power-off",
"question",
"question-circle",
"redo",
"redo-alt",
"reply",
"robot",
"rocket",
"rss",
"satellite-dish",
"save",
"search",
"server",
"shapes",
"share",
"share-alt",
"shield-alt",
"signal",
"skull",
"skull-crossbones",
"sliders-h",
"sort",
"spinner",
"times",
"times-circle",
"toggle-off",
"toggle-on",
"toolbox",
"tools",
"trash",
"trash-alt",
"tv",
"undo",
"undo-alt",
"unlink",
"unlock",
"unlock-alt",
"upload",
"user",
"user-alt",
"volume-down",
"volume-mute",
"volume-off",
"volume-up",
"wifi",
"wrench",
"youtube",
"discord",
"node",
"apple",
"sellsy",
"app-store",
"cloudflare",
"dev",
"github-alt",
"gitlab",
"google",
"itunes-note",
"node-js",
"npm",
"spotify",
"usb",
"windows"
}
/**
* @see [utils/formtypes](./utils/formtypes.js).
*/
export interface FormTypes {
spacer: (themeOptions: Record<string, any>) => {
type: string,
themeOptions: Record<string, any>
}
emojiPicker: (disabled: boolean, themeOptions: Record<string, any>) => {
type: string,
disabled: boolean,
themeOptions: Record<string, any>
}
slider: (min: number, max: number, step: number, disabled: boolean, themeOptions: Record<string, any>) => {
type: string,
min: number,
max: number,
step: number,
disabled: boolean,
themeOptions: Record<string, any>
},
date: (disabled: boolean, themeOptions: Record<string, any>) => {
type: string,
disabled: boolean,
themeOptions: Record<string, any>
},
numberPicker: (min: number, max: number, disabled: boolean, themeOptions: Record<string, any>) => {
type: string,
disabled: boolean,
themeOptions: Record<string, any>
},
tagInput: (disabled: boolean, themeOptions: Record<string, any>) => {
type: string,
disabled: boolean,
themeOptions: Record<string, any>
}
}
}

File diff suppressed because it is too large Load diff

288
theme/dbd-soft-ui/icons.js Normal file
View file

@ -0,0 +1,288 @@
const icons = [
'address-book',
'address-card',
'adjust',
'air-freshener',
'align-center',
'align-left',
'align-right',
'ambulance',
'angle-double-down',
'angle-double-left',
'angle-double-right',
'angle-double-up',
'angle-down',
'angle-left',
'angle-right',
'angle-up',
'archive',
'arrow-alt-circle-down',
'arrow-alt-circle-left',
'arrow-alt-circle-right',
'arrow-alt-circle-up',
'arrow-down',
'arrow-left',
'arrow-right',
'arrow-up',
'arrows-alt',
'arrows-alt-h',
'arrows-alt-v',
'assistive-listening-systems',
'asterisk',
'at',
'atlas',
'award',
'backspace',
'backward',
'bahai',
'ban',
'band-aid',
'bars',
'battery-empty',
'battery-full',
'battery-half',
'battery-quarter',
'battery-three-quarters',
'bed',
'beer',
'bell',
'bell-slash',
'birthday-cake',
'bolt',
'bomb',
'bone',
'book',
'book-dead',
'book-medical',
'book-open',
'bookmark',
'border-all',
'border-none',
'border-style',
'bowling-ball',
'box',
'box-open',
'briefcase',
'broadcast-tower',
'bug',
'building',
'bullhorn',
'calculator',
'calendar',
'calendar-alt',
'calendar-check',
'calendar-day',
'calendar-minus',
'calendar-plus',
'calendar-times',
'calendar-week',
'camera',
'caret-down',
'caret-left',
'caret-right',
'caret-up',
'certificate',
'chair',
'chalkboard',
'charging-station',
'chart-bar',
'chart-line',
'chart-pie',
'check',
'check-circle',
'check-square',
'circle',
'circle-notch',
'clipboard',
'clock',
'clone',
'cloud',
'cloud-download-alt',
'cloud-meatball',
'cloud-moon',
'cloud-moon-rain',
'cloud-rain',
'cloud-showers-heavy',
'cloud-sun',
'cloud-sun-rain',
'cloud-upload-alt',
'code',
'code-branch',
'cog',
'cogs',
'columns',
'comment',
'comment-alt',
'comment-dollar',
'comment-dots',
'comment-medical',
'comment-slash',
'comments',
'comments-dollar',
'compact-disc',
'compass',
'compress-alt',
'cookie',
'cookie-bite',
'copy',
'credit-card',
'crop',
'crop-alt',
'cut',
'database',
'desktop',
'edit',
'envelope',
'envelope-open',
'eraser',
'ethernet',
'exchange-alt',
'exclamation',
'exclamation-circle',
'exclamation-triangle',
'expand',
'expand-alt',
'external-link-alt',
'eye',
'eye-dropper',
'eye-slash',
'fan',
'file',
'file-alt',
'file-archive',
'file-audio',
'file-code',
'file-download',
'fill',
'fill-drip',
'filter',
'fingerprint',
'fire',
'fire-alt',
'folder',
'folder-open',
'forward',
'gamepad',
'ghost',
'gift',
'gifts',
'globe',
'globe-africa',
'globe-asia',
'globe-europe',
'headphones',
'headphones-alt',
'headset',
'heart',
'heart-broken',
'heartbeat',
'history',
'home',
'info',
'keyboard',
'layer-group',
'list',
'lock',
'lock-open',
'map-marker',
'map-marker-alt',
'microphone',
'microphone-alt',
'microphone-alt-slash',
'minus',
'mobile',
'mobile-alt',
'moon',
'mouse',
'mouse-pointer',
'music',
'network-wired',
'neuter',
'paperclip',
'paste',
'pause',
'paw',
'pen',
'pencil-alt',
'percent',
'percentage',
'phone',
'phone-alt',
'phone-slash',
'phone-volume',
'photo-video',
'power-off',
'question',
'question-circle',
'redo',
'redo-alt',
'reply',
'robot',
'rocket',
'rss',
'satellite-dish',
'save',
'search',
'server',
'shapes',
'share',
'share-alt',
'shield-alt',
'signal',
'skull',
'skull-crossbones',
'sliders-h',
'sort',
'spinner',
'times',
'times-circle',
'toggle-off',
'toggle-on',
'toolbox',
'tools',
'trash',
'trash-alt',
'tv',
'undo',
'undo-alt',
'unlink',
'unlock',
'unlock-alt',
'upload',
'user',
'user-alt',
'volume-down',
'volume-mute',
'volume-off',
'volume-up',
'wifi',
'wrench'
]
const otherIcons = [
'youtube',
'discord',
'node',
'apple',
'sellsy',
'app-store',
'cloudflare',
'dev',
'github-alt',
'gitlab',
'google',
'itunes-note',
'node-js',
'npm',
'spotify',
'usb',
'windows'
]
function run() {
return {
icons,
otherIcons
}
}
module.exports = run()

View file

@ -0,0 +1,69 @@
const colors = require('colors')
const npmUpdater = require('./utils/updater/npm')
const fileUpdater = require('./utils/updater/files')
const consolePrefix = `${'['.blue}${'dbd-soft-ui'.yellow}${']'.blue} `
const Keyv = require('keyv')
const path = require('path')
module.exports = (themeConfig = {}) => {
return {
themeCodename: 'softui',
viewsPath: path.join(__dirname, '/views'),
staticPath: path.join(__dirname, '/views/src'),
themeConfig: {
...themeConfig,
defaultLocales: require('./locales.js')
},
messages: {
error: {
addonLicense: `${consolePrefix}${'Failed to initialise {{ADDON}}.\nThe license this addon was installed with does not match your current discord-dashboard license.'
.cyan
}`
},
success: {
addonLoaded: `${consolePrefix}${'Successfully loaded {{ADDON}}.'.cyan
}`
}
},
embedBuilderComponent: require('fs').readFileSync(
path.join(__dirname, '/embedBuilderComponent.txt'),
'utf8'
),
init: async (app, config) => {
if(!config?.useTheme404) return console.log(`${consolePrefix}${'You need to set useTheme404 to true in your DBD config otherwise Soft-UI will not work correctly!\n\nDashboard has not fully initialised due to this. Pages will 404!'.red}`);
let outdated = false
; (async () => {
let check = await npmUpdater.update()
await fileUpdater.update()
if (!check) outdated = true
})()
const db = new Keyv(
themeConfig.dbdriver ||
'sqlite://' + path.join(__dirname, '/database.sqlite')
)
db.on('error', (err) => {
console.log('Connection Error', err)
process.exit()
})
themeConfig = {
...themeConfig,
defaultLocales: require('./locales.js')
}
require('./utils/functions/errorHandler')(config, themeConfig, db)
require('./utils/functions/settingsPage')(config, themeConfig, db)
// await require('./utils/addonManager').execute(themeConfig, config, app, module.exports.messages);
require('./utils/initPages').init(config, themeConfig, app, db)
}
}
}
module.exports.partials = __dirname + '/views/partials'
module.exports.formTypes = require('./utils/formtypes')
module.exports.Feed = require('./utils/feedHandler')
module.exports.cmdHandler = require('./utils/cmdHandler')
module.exports.version = require('./package.json').version

View file

@ -0,0 +1,95 @@
module.exports = {
enUS: {
name: 'English',
index: {
feeds: ['Current Users', 'CPU', 'System Platform', 'Server Count'],
card: {
category: 'Soft UI',
title: 'Assistants - The center of everything',
description:
"Assistants Discord Bot management panel. Assistants Bot was created to give others the ability to do what they want. Just.<br>That's an example text.<br><br><b><i>Feel free to use HTML</i></b>",
footer: 'Learn More',
image: '/img/soft-ui.webp',
linkText: 'Learn more'
},
feedsTitle: 'Feeds',
graphTitle: 'Graphs'
},
manage: {
settings: {
memberCount: 'Members',
info: {
info: 'Info',
server: 'Server Information'
}
}
},
privacyPolicy: {
title: 'Privacy Policy',
description: 'Privacy Policy and Terms of Service'
},
partials: {
sidebar: {
dash: 'Dashboard',
manage: 'Manage Guilds',
commands: 'Commands',
pp: 'Privacy Policy',
admin: 'Admin',
account: 'Account Pages',
login: 'Sign In',
logout: 'Sign Out'
},
navbar: {
home: 'Home',
pages: {
manage: 'Manage Guilds',
settings: 'Manage Guilds',
commands: 'Commands',
pp: 'Privacy Policy',
admin: 'Admin Panel',
error: 'Error',
credits: 'Credits',
debug: 'Debug',
leaderboard: 'Leaderboard',
profile: 'Profile',
maintenance: 'Under Maintenance'
}
},
title: {
pages: {
manage: 'Manage Guilds',
settings: 'Manage Guilds',
commands: 'Commands',
pp: 'Privacy Policy',
admin: 'Admin Panel',
error: 'Error',
credits: 'Credits',
debug: 'Debug',
leaderboard: 'Leaderboard',
profile: 'Profile',
maintenance: 'Under Maintenance'
}
},
preloader: {
text: 'Page is loading...'
},
premium: {
title: 'Want more from Assistants?',
description: 'Check out premium features below!',
buttonText: 'Become Premium'
},
settings: {
title: 'Site Configuration',
description: 'Configurable Viewing Options',
theme: {
title: 'Site Theme',
description: 'Make the site more appealing for your eyes!'
},
language: {
title: 'Site Language',
description: 'Select your preferred language!'
}
}
}
}
}

View file

@ -0,0 +1,49 @@
{
"name": "dbd-soft-ui",
"version": "1.6.48-beta.1",
"typings": "dbd-soft-ui.d.ts",
"author": {
"name": "iMidnight"
},
"contributors": [
"PlainDevelopment",
"Breftejk"
],
"bugs": {
"url": "https://github.com/Assistants-Center/dbd-soft-ui/issues"
},
"bundleDependencies": [],
"dependencies": {
"@keyv/sqlite": "^3.6.1",
"colors": "1.4.0",
"keyv": "^4.5.0",
"node-fetch": "2.6.7",
"nodeactyl": "^3.2.2",
"quick.db": "^7.1.3"
},
"deprecated": false,
"description": "Soft UI DBD Theme: An awesome - feature packed theme to use with discord-dashboard!",
"homepage": "https://softui.assistantscenter.com/",
"keywords": [
"discord",
"discord.js",
"discordjs",
"discord dashboard",
"discord web dashboard",
"web dashboard",
"dashboard"
],
"license": "MIT",
"main": "index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/Assistants-Center/DBD-Soft-UI.git"
},
"scripts": {
"test": "echo \"Error: no test specified\""
},
"devDependencies": {
"express": "^4.18.2",
"prettier": "2.7.1"
}
}

View file

@ -0,0 +1,27 @@
const npmUpdater = require('../../utils/updater/npm')
const fileUpdater = require('../../utils/updater/files')
module.exports = {
page: '/control',
execute: async (req, res, app, config, themeConfig, info) => {
const { uuid, action } = req.query
if (!uuid && action && req.query.type) {
if (req.query.type === 'npm') await npmUpdater.update()
if (req.query.type === 'live') await fileUpdater.update()
return res.redirect('/admin?result=true')
}
if (!uuid || !action) return res.sendStatus(412)
try {
if (action === 'start') await themeConfig.nodeactyl.startServer(uuid)
if (action === 'restart') await themeConfig.nodeactyl.restartServer(uuid)
if (action === 'stop') await themeConfig.nodeactyl.stopServer(uuid)
if (action === 'kill') await themeConfig.nodeactyl.killServer(uuid)
} catch (error) {
console.error(error)
return res.redirect('/admin?result=false')
}
return res.redirect('/admin?result=true')
}
}

View file

@ -0,0 +1,193 @@
const db = require('quick.db')
const { icons, otherIcons } = require('../../icons')
module.exports = {
page: '/feed',
execute: async (req, res, app, config, themeConfig, info) => {
if (req.query.action === 'delete') {
const deleteFeed = req.query.feed
if (!deleteFeed) return res.redirect('/admin?error=invalidFeed')
if (!/^\d+$/.test(deleteFeed))
return res.redirect('/admin?error=invalidFeed')
if (deleteFeed !== '1' && deleteFeed !== '2' && deleteFeed !== '3')
return res.redirect('/admin?error=invalidFeed')
if (deleteFeed === '1') {
if (!db.get('feeds.one'))
return res.redirect('/admin?error=invalidFeed')
if (db.get('feeds.two')) {
const f = await db.get('feeds.two')
await db.set('feeds.one', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
} else {
await db.delete('feeds.one')
}
if (db.get('feeds.three')) {
const f = await db.get('feeds.three')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
await db.delete('feeds.three')
}
} else if (deleteFeed === '2') {
if (!db.get('feeds.two'))
return res.redirect('/admin?error=invalidFeed')
if (db.get('feeds.one')) {
const f = await db.get('feeds.one')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
await db.delete('feeds.one')
} else {
await db.delete('feeds.two')
}
} else if (deleteFeed === '3') {
if (!db.get('feeds.three'))
return res.redirect('/admin?error=invalidFeed')
await db.delete('feeds.three')
if (db.get('feeds.two')) {
const f = await db.get('feeds.two')
await db.set('feeds.three', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
}
if (db.get('feeds.one')) {
const f = await db.get('feeds.one')
await db.set('feeds.two', {
color: f.color,
description: f.description,
published: f.published,
icon: f.icon,
diff: f.diff
})
}
}
return res.redirect('/admin')
} else if (req.query.action === 'create') {
const { color, description, icon } = req.query
if (!color || !description || !icon)
return res.redirect('/admin?error=missingData')
if (
color !== 'red' &&
color !== 'orange' &&
color !== 'pink' &&
color !== 'gray' &&
color !== 'green' &&
color !== 'blue' &&
color !== 'dark'
)
return res.redirect('/admin?error=invalidData')
if (description.length < 3 || description.length > 128)
return res.redirect('/admin?error=invalidData')
if (!icons.includes(icon) && !otherIcons.includes(icon))
return res.redirect('/admin?error=invalidData')
let diff
let col
if (otherIcons.includes(icon)) diff = true
if (color === 'red') col = 'danger'
if (color === 'orange') col = 'warning'
if (color === 'pink') col = 'primary'
if (color === 'gray') col = 'secondary'
if (color === 'green') col = 'success'
if (color === 'blue') col = 'info'
if (color === 'dark') col = 'dark'
if (
db.get('feeds.three') &&
db.get('feeds.two') &&
db.get('feeds.one')
) {
await db.delete('feeds.one')
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
if (!db.get('feeds.three'))
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
else if (!db.get('feeds.two')) {
const f3 = db.get('feeds.three')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
}
}
return res.redirect('/admin')
}
}
}

View file

@ -0,0 +1,48 @@
const db = require('quick.db')
module.exports = {
page: '/admin',
execute: async (req, res, app, config, themeConfig, info, database) => {
if (!req.session.user) return res.redirect('/discord?r=/admin/')
if (!config.ownerIDs?.includes(req.session.user.id))
return res.redirect('/')
if (!themeConfig.nodeactyl && themeConfig.admin?.pterodactyl?.enabled)
return res.send(
'Unable to contact Pterodactyl, are your details correct?'
)
async function getServers() {
if (!themeConfig?.admin?.pterodactyl?.enabled) return []
const serverData = []
for (const uuid of themeConfig?.admin?.pterodactyl?.serverUUIDs) {
let dataStatus = await themeConfig?.nodeactyl?.getServerStatus(uuid)
let data = await themeConfig?.nodeactyl?.getServerDetails(uuid)
serverData.push({
name: data.name.toString(),
uuid: data.uuid.toString(),
desc: data.description.toString(),
node: data.node.toString(),
status: dataStatus.toString()
})
}
return serverData
}
let allFeedsUsed = false
if (db.get('feeds.one') && db.get('feeds.two') && db.get('feeds.three'))
allFeedsUsed = true
const d = await getServers()
res.render('admin', {
req,
sData: d,
ldata: await database.get('logs'),
themeConfig: req.themeConfig,
node: themeConfig.nodeactyl,
bot: config.bot,
allFeedsUsed,
config,
require
})
}
}

View file

@ -0,0 +1,11 @@
module.exports = {
page: '/blacklisted',
execute: async (req, res, app, config, themeConfig, info) => {
res.render('blacklisted', {
req,
config,
themeConfig,
info
})
}
}

View file

@ -0,0 +1,12 @@
module.exports = {
page: '/commands',
execute: async (req, res, app, config, themeConfig, info) => {
if (themeConfig.commands)
res.render('commands.ejs', {
req,
config,
themeConfig,
info
})
}
}

View file

@ -0,0 +1,11 @@
module.exports = {
page: '/credits',
execute: async (req, res, app, config, themeConfig, info) => {
res.render('credits', {
req: req,
config,
themeConfig,
info
})
}
}

View file

@ -0,0 +1,70 @@
const fetch = require('node-fetch')
const fs = require('fs')
let DBD = require('discord-dashboard')
module.exports = {
page: '/debug',
execute: async (req, res, app, config, themeConfig, info) => {
/*
Do not remove this page.
It will be used with support in the discord server.
*/
if (!req.session.user) return res.redirect('/discord?r=/debug/')
if (!config.ownerIDs?.includes(req.session.user.id))
return res.redirect('/')
let onlineFiles = {
index: await fetch(
`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/index.ejs`
),
guild: await fetch(
`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/guild.ejs`
),
guilds: await fetch(
`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/guilds.ejs`
)
}
onlineFiles.index = await onlineFiles.index.text()
onlineFiles.guild = await onlineFiles.guild.text()
onlineFiles.guilds = await onlineFiles.guilds.text()
let localFiles = {
index: await fs.readFileSync(
`${__dirname}/../..//views/index.ejs`,
'utf-8'
),
guild: await fs.readFileSync(
`${__dirname}/../../views/settings.ejs`,
'utf-8'
),
guilds: await fs.readFileSync(
`${__dirname}/../../views/guilds.ejs`,
'utf-8'
)
}
let onlineV = await fetch(
`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/utils/updater/versionsOnline.json`
)
const localV = require(`${__dirname}/../../utils/updater/versions.json`)
onlineV = await onlineV.json()
res.render('debug', {
license: require(`discord-dashboard`).licenseInfo().type, // replace with discord-dashboard
onlineV,
localV,
onlineFiles,
localFiles,
rawUptime: process.uptime(),
nodeVersion: process.version,
themeConfig,
discordVersion: require('discord.js').version,
dbdVersion: DBD.version,
themeVersion: require(`dbd-soft-ui`).version,
themePartials: require(`${__dirname}/../../utils/updater/versions.json`),
req,
config,
info
})
}
}

View file

@ -0,0 +1,8 @@
module.exports = {
page: '/shards/get',
execute: async (req, res, app, config, themeConfig, info, db) => {
let returned = await db.get('stats')
res.json(returned)
}
}

View file

@ -0,0 +1,11 @@
module.exports = {
page: '/privacy-policy',
execute: async (req, res, app, config, themeConfig, info) => {
res.render('pp', {
req,
config,
themeConfig,
info
})
}
}

View file

@ -0,0 +1,11 @@
module.exports = {
page: '/settings/:id/:category',
execute: async (req, res, app, config, themeConfig, info) => {
const categoryExists = config.settings?.find(
(s) => s.categoryId === req.params.category
)
if (!categoryExists) return config.errorPage(req, res, null, 404)
await config.guildSettings(req, res, false, req.params.category)
}
}

View file

@ -0,0 +1,6 @@
module.exports = {
page: '/settings/:id/',
execute: async (req, res, app, config, themeConfig, info) => {
await config.guildSettings(req, res, true)
}
}

View file

@ -0,0 +1,11 @@
module.exports = {
page: '/shards',
execute: async (req, res, app, config, themeConfig, info, db) => {
res.render('shards', {
req: req,
config,
themeConfig,
info
})
}
}

View file

@ -0,0 +1,476 @@
module.exports = {
page: '/guild/update/:guildId/',
execute: async (req, res, app, config, themeConfig, info) => {
const data = req.body
let setNewRes
let errors = []
let successes = []
if (!req.session?.user)
return res.send({
success: false,
message: 'User is not logged in'
})
const userGuildMemberObject = config.bot.guilds.cache
.get(req.params.guildId)
.members.cache.get(req.session.user.id)
const guildObject = config.bot.guilds.cache.get(req.params.guildId)
let category = config.settings?.find((c) => c.categoryId == req.query.categoryId)
let catO = [];
let catToggle = [];
if (data.categoryToggle) {
for (const s of data.categoryToggle) {
if (!config.useCategorySet) try {
let category = config.settings?.find(
(c) => c?.categoryId == s.id
)
await category.setNew({
guild: { id: req.params.guildId },
newData: s.value
})
} catch (err) {
errors.push(`Category ${s.id} %is%Failed to save%is%categoryToggle`);
}
else {
if (category?.categoryId == s.id) catO.push({
optionId: category.categoryId == s.id ? "categoryToggle" : s.id,
data: s.value
});
else catToggle.push({
optionId: s.id,
data: s.value
});
}
}
if ("categoryToggle" in data && !category) {
return res.send({
success: true,
message: "Saved toggle",
errors: [],
successes: [],
})
}
}
if (!category)
return res.send({
error: true,
message: "No category found",
})
const subOptions = category.categoryOptionsList.filter((o) => o.optionType.type == "multiRow")
.map((o) => o.optionType.options)
.flat()
const newOptionsList = [
...category.categoryOptionsList.filter((o) => o.optionType.type != "multiRow"),
...subOptions
]
if (data.options) for (let option of newOptionsList) {
let d = data.options.find((o) => o.id === option.optionId);
let canUse = {}
if (!d && !d?.id) continue;
if (option.allowedCheck) canUse = await option.allowedCheck({
guild: { id: req.params.guildId },
user: { id: req.session.user.id },
})
else canUse = { allowed: true, errorMessage: null }
if (canUse.allowed == false) {
setNewRes = { error: canUse.errorMessage }
errors.push(
option.optionName +
"%is%" +
setNewRes.error +
"%is%" +
option.optionId
)
} else if (option.optionType != "spacer") {
if (config.useCategorySet) {
if (option.optionType.type == "rolesMultiSelect" || option.optionType.type == "channelsMultiSelect" || option.optionType.type == "multiSelect" || option.optionType.type == 'tagInput') {
if (!d.value || d.value == null || d.value == undefined) catO.push({
optionId: option.optionId,
data: [],
})
else if (typeof d.value != "object") catO.push({
optionId: option.optionId,
data: [d.value],
})
else catO.push({
optionId: option.optionId,
data: d.value,
})
} else if (option.optionType.type == "switch") {
if (
d.value ||
d.value == null ||
d.value == undefined ||
d.value == false
) {
if (d.value || d.value == null || d.value == undefined || d.value == false) {
if (d.value == null || d.value == undefined || d.value == false)
catO.push({
optionId: option.optionId,
data: false
});
else
catO.push({
optionId: option.optionId,
data: true
});
}
}
} else if (option.optionType.type == "embedBuilder") {
if (
d.value == null ||
d.value == undefined
)
catO.push({
optionId: option.optionId,
data: option.optionType.data,
})
else {
try {
const parsedResponse = JSON.parse(
d.value
)
catO.push({
optionId: option.optionId,
data: parsedResponse,
})
} catch (err) {
catO.push({
optionId: option.optionId,
data: option.optionType.data,
})
}
}
} else {
if (
d.value == undefined ||
d.value == null
)
catO.push({
optionId: option.optionId,
data: null,
})
else
catO.push({
optionId: option.optionId,
data: d.value,
})
}
} else {
if (
option.optionType.type ==
'rolesMultiSelect' ||
option.optionType.type ==
'channelsMultiSelect' ||
option.optionType.type == 'multiSelect' ||
option.optionType.type == 'tagInput'
) {
if (
!d.value ||
d.value == null ||
d.value == undefined
) {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: []
})
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
} else if (
typeof d.value != 'object'
) {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: [d.value]
})
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
} else {
setNewRes = await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: d.value
})
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
}
} else if (
option.optionType.type == 'embedBuilder'
) {
if (
d.value !== null ||
d.value !== undefined
) {
setNewRes =
(await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: JSON.parse(
d.value
)
})) || {}
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
} else {
try {
const parsedResponse = JSON.parse(
d.value
)
setNewRes =
(await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: parsedResponse
})) || {}
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(
option.optionName
)
}
} catch (err) {
setNewRes =
(await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData:
option.optionType.data
})) || {}
setNewRes = {
error: 'JSON parse for embed builder went wrong, your settings have been reset.'
}
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(
option.optionName
)
}
}
}
} else {
if (
d.value == undefined ||
d.value == null
) {
setNewRes =
(await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: null
})) || {}
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
} else {
setNewRes =
(await option.setNew({
guild: {
id: req.params.guildId,
object: guildObject
},
user: {
id: req.session.user.id,
object: userGuildMemberObject
},
newData: d.value
})) || {}
setNewRes ? null : (setNewRes = {})
if (setNewRes.error) {
errors.push(
option.optionName +
'%is%' +
setNewRes.error +
'%is%' +
option.optionId
)
} else {
successes.push(option.optionName)
}
}
}
}
}
}
if (config.useCategorySet && catO.length) {
let sNR = await category.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
data: catO,
})
sNR ? null : (sNR = {})
if (sNR.error) {
errors.push(category.categoryId + "%is%" + sNR.error)
} else {
successes.push(category.categoryId)
}
}
if (config.useCategorySet && catToggle.length) for (const opt of catToggle) {
let cat = config.settings?.find((c) => c.categoryId == opt.optionId);
if (!cat) {
errors.push(`Category ${opt.optionId} %is%Doesn't exist%is%categoryToggle`);
continue;
}
try {
await cat.setNew({
guild: {
id: req.params.guildId,
object: guildObject,
},
user: {
id: req.session.user.id,
object: userGuildMemberObject,
},
data: [{
optionId: "categoryToggle",
data: opt.data
}],
});
} catch (err) {
errors.push(`Category ${opt.optionId} %is%${err}%is%categoryToggle`);
}
}
req.DBDEvents.emit('guildSettingsUpdated', {
user: req.session.user,
changes: { successes, errors }
})
res.send({
success: true,
message: 'saved changed',
errors,
successes
})
}
}

View file

@ -0,0 +1,23 @@
module.exports = {
page: '/stats/logs/update',
execute: async (req, res, app, config, themeConfig, info, db) => {
if (
'Bearer ' + themeConfig.admin?.logs?.key !==
req.headers.authorization
)
return res.json({ status: 'Invalid sharding key' })
const logs = await db.get('logs')
let newLogs = []
if (!logs || !logs.length || !logs[0])
newLogs = [req.body]
else
newLogs = [req.body, ...logs]
await db.set('logs', newLogs)
res.json({ status: 'Completed' })
}
}

View file

@ -0,0 +1,36 @@
module.exports = {
page: '/stats/shards/update',
execute: async (req, res, app, config, themeConfig, info, db) => {
if (
'Bearer ' + themeConfig.shardspage?.key !==
req.headers.authorization
)
return res.json({ status: 'Invalid sharding key' })
const stats = await db.get('stats')
const clean = req.body.map((s) => {
if (!stats) return {
...s,
ping: [0, 0, 0, 0, 0, 0, 0, 0, 0, s.ping]
}
const currentSaved = stats?.find((x) => x.id === s.id)
if (!currentSaved) return {
...s,
ping: [0, 0, 0, 0, 0, 0, 0, 0, 0, s.ping]
}
const nextPing = currentSaved?.ping?.slice(1, 10)
return {
...s,
ping: nextPing ? [...nextPing, s.ping] : [0, 0, 0, 0, 0, 0, 0, 0, 0, s.ping],
}
})
await db.set('stats', clean)
res.json({ status: 'Completed' })
}
}

View file

@ -0,0 +1,52 @@
module.exports = (commands, prefix) => {
if (!commands)
throw new Error('No commands were provided to the Soft UI cmdHandler.')
if (!prefix) prefix = '!'
let finalCategories = []
let categories = []
commands.map((cmd) => {
if (!categories.includes(cmd.category)) {
categories.push(cmd.category)
}
})
for (const category of categories) {
if (
category.toLowerCase().includes('admin') ||
category.toLowerCase().includes('owner') ||
category.toLowerCase().includes('development')
)
continue
let commandsArr = []
commands
.filter((cmd) => cmd.category === category)
.map((cmd) => {
let obj = {
commandName: cmd.name,
commandUsage: `${cmd.usage ? cmd.usage : `${prefix}${cmd.name}`}`,
commandDescription: cmd.description,
commandAlias: cmd.aliases?.join(', ') || 'None'
}
commandsArr.push(obj)
})
const categoryObj = {
categoryId: category,
category: `${capitalizeFirstLetter(category)}`,
subTitle: `${capitalizeFirstLetter(category)} commands`,
list: commandsArr
}
finalCategories.push(categoryObj)
}
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1)
}
return finalCategories
}

View file

@ -0,0 +1,165 @@
const db = require('quick.db')
const consolePrefix = `${'['.blue}${'dbd-soft-ui'.yellow}${']'.blue} `
const colors = require('colors')
const { icons, otherIcons } = require('../icons')
module.exports = class Feed {
constructor() {
this.setColor = function (color) {
if (!color) throw new Error(`${consolePrefix}${`Failed to modify feed. ${colors.red('Invalid color.')}`.cyan}`);
if (
color !== 'red' &&
color !== 'orange' &&
color !== 'pink' &&
color !== 'gray' &&
color !== 'green' &&
color !== 'blue' &&
color !== 'dark'
) {
throw new Error(`${consolePrefix}${`Failed to modify feed. ${colors.red('Invalid color.')}`.cyan}`);
}
this.color = color;
return this;
}
this.setDescription = function (description) {
if (!description) throw new Error(`${consolePrefix}${`Failed to modify feed. ${colors.red('Invalid description.')}`.cyan}`);
if (description.length < 3 || description.length > 128) console.log(`${consolePrefix}${'Invalid description'.cyan}`);
this.description = description;
return this;
}
this.setIcon = function (icon) {
if (!icon) throw new Error(`${consolePrefix}${`Failed to modify feed. ${colors.red('Invalid icon.')}`.cyan}`);
if (!icons.includes(icon) && !otherIcons.includes(icon)) throw new Error(`${consolePrefix}${`Failed to modify feed. ${colors.red('Invalid icon.')}`.cyan}`);
this.icon = icon;
return this;
}
this.getFeed = function (id) {
if (!id) throw new Error(`${consolePrefix}${`Failed to get feed. ${colors.red('Invalid id.')}`.cyan}`);
let feedName = '';
switch (id) {
case 1:
feedName = 'one';
break;
case 2:
feedName = 'two';
break;
case 3:
feedName = 'three';
break;
case "all":
feedName = 'all';
break;
default:
throw new Error(`${consolePrefix}${`Failed to get feed. ${colors.red('Invalid id.')}`.cyan}`);
}
let feed = db.get(`feeds${feedName === "all" ? "" : `.${feedName}`}`)
if (!feed) throw new Error(`${consolePrefix}${`Failed to get feed. ${colors.red('Feed not found.')}`.cyan}`);
this.feed = feed;
return this;
}
this.delete = function () {
if (!this.feed)throw new Error(`${consolePrefix}${`Failed to delete feed. ${colors.red('Feed not selected')}`.cyan}`);
db.delete(`feeds.${this.feed.id}`);
return this;
}
this.send = async function () {
const { color, description, icon } = this;
let diff;
let col;
if (otherIcons.includes(icon)) diff = true;
if (color === 'red') col = 'danger';
if (color === 'orange') col = 'warning';
if (color === 'pink') col = 'primary';
if (color === 'gray') col = 'secondary';
if (color === 'green') col = 'success';
if (color === 'blue') col = 'info';
if (color === 'dark') col = 'dark';
if (db.get('feeds.three') && db.get('feeds.two') && db.get('feeds.one')) {
await db.delete('feeds.one')
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
if (!db.get('feeds.three')) {
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else if (!db.get('feeds.two')) {
const f3 = db.get('feeds.three')
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
} else {
const f3 = db.get('feeds.three')
const f2 = db.get('feeds.two')
await db.set('feeds.one', {
color: f2.color,
description: f2.description,
published: f2.published,
icon: f2.icon,
diff: f2.diff
})
await db.set('feeds.two', {
color: f3.color,
description: f3.description,
published: f3.published,
icon: f3.icon,
diff: f3.diff
})
await db.set('feeds.three', {
color: col,
description: description,
published: Date.now(),
icon: icon,
diff: diff
})
}
}
}
}
}

View file

@ -0,0 +1,63 @@
module.exports = {
multiRow: (options) => {
// Validate Data
if (options && (!options.length || !options[0])) throw new Error("Options in the 'collapsable' form type should be an array.");
const hasType = (object) => object.hasOwnProperty('optionType') && object.optionType?.hasOwnProperty('type');
if (options && !options.every(hasType)) throw new Error("Invalid form type provided in the 'multiRow' form type.");
if (options && options.find(obj => obj.optionType.type == "multiRow")) throw new Error("You cannot use the form type 'multiRow' in the 'multiRow' form type.");
return {
type: "multiRow",
options
}
},
spacer: (themeOptions = {}) => {
return {
type: 'spacer',
themeOptions
}
},
emojiPicker: (disabled, themeOptions = {}) => {
return {
type: 'emojiPicker',
disabled,
themeOptions
}
},
slider: (min, max, step, disabled, themeOptions = {}) => {
return {
type: 'slider',
min,
max,
step,
disabled,
themeOptions
}
},
date: (disabled, themeOptions = {}) => {
return {
type: 'date',
disabled,
themeOptions
}
},
numberPicker: (min, max, disabled, themeOptions = {}) => {
return {
type: 'numberPicker',
min,
max,
disabled,
themeOptions
}
},
tagInput: (disabled, themeOptions = {}) => {
return {
type: 'tagInput',
disabled,
themeOptions
}
}
}

View file

@ -0,0 +1,47 @@
module.exports = function (config, themeConfig) {
config.errorPage = function (req, res, error, type) {
if (type == 404) {
title = themeConfig?.error?.error404?.title || '404'
subtitle =
themeConfig?.error?.error404?.subtitle || 'Page not found'
description =
themeConfig?.error?.error404?.description ||
'The page you are looking for does not exist.'
}
title = themeConfig?.error?.dbdError?.title || type.toString()
subtitle = themeConfig?.error?.dbdError?.subtitle || 'An error occurred'
description =
themeConfig?.error?.dbdError?.description ||
'Please contact us if the issue persists or try again later.'
if (error) {
console.error(error)
}
if (themeConfig?.error?.errorHandler)
themeConfig.error.errorHandler({
req,
res,
error: {
type,
path: error?.path || null,
error: error?.stack || `Page ${req.originalUrl} not found!`
},
user: req?.session?.user || null
})
return res.render('error', {
strError: error?.stack?.split('\n'),
req,
bot: config.bot,
config,
type,
themeConfig,
title,
subtitle,
description,
error: error || undefined
})
}
}

View file

@ -0,0 +1,399 @@
const Discord = require('discord.js')
module.exports = function (config, themeConfig) {
config.guildSettings = async function (req, res, home, category) {
if (!req.session.user) return res.redirect('/discord?r=/guild/' + req.params.id)
let bot = config.bot
if (!bot.guilds.cache.get(req.params.id)) {
try {
await bot.guilds.fetch(req.params.id)
} catch (err) { }
}
if (!bot.guilds.cache.get(req.params.id)) return res.redirect('/manage?error=noPermsToManageGuild')
if (
!bot.guilds.cache
.get(req.params.id)
.members.cache.get(req.session.user.id)
) {
try {
await bot.guilds.cache
.get(req.params.id)
.members.fetch(req.session.user.id)
} catch (err) { }
}
for (let PermissionRequired of req.requiredPermissions) {
let converted = PermissionRequired[0]
const DiscordJsVersion = Discord.version.split('.')[0]
if (DiscordJsVersion === '14') converted = await convert14(PermissionRequired[0])
if (
!bot.guilds.cache
.get(req.params.id)
.members.cache.get(req.session.user.id)
.permissions.has(converted)
) {
return res.redirect('/manage?error=noPermsToManageGuild')
}
}
if (bot.guilds.cache.get(req.params.id).channels.cache.size < 1) {
try {
await bot.guilds.cache.get(req.params.id).channels.fetch()
} catch (err) { }
}
if (bot.guilds.cache.get(req.params.id).roles.cache.size < 2) {
try {
await bot.guilds.cache.get(req.params.id).roles.fetch()
} catch (err) { }
}
let actual = {}
let toggle = {}
let premium = {}
let canUseList = {}
if (config.settings?.length) for (const category of config.settings) {
if (!canUseList[category.categoryId]) canUseList[category.categoryId] = {};
if (!actual[category.categoryId]) actual[category.categoryId] = {}
if (config.useCategorySet) {
let catGAS = await category.getActualSet({
guild: {
id: req.params.id,
object: bot.guilds.cache.get(req.params.id),
},
user: {
id: req.session.user.id,
object: bot.guilds.cache
.get(req.params.id)
.members.cache.get(req.session.user.id),
},
});
if (category.toggleable) {
if (!toggle[category.categoryId]) {
toggle[category.categoryId] = {}
}
toggle[category.categoryId] = catGAS.find(o => o.optionId === "categoryToggle") || null;
catGAS = catGAS.filter((c) => c.optionId !== 'categoryToggle')
}
if (category.premium) {
if (!premium[category.categoryId]) {
premium[category.categoryId] = {}
}
premium[category.categoryId] = await s.premiumUser({
guild: {
id: req.params.id
},
user: {
id: req.session.user.id,
tag: req.session.user.tag
}
})
}
if (category.premium && premium[category.categoryId] == false) return res.redirect(
`/settings/${req.params.id}?error=premiumRequired`
)
for (const o of catGAS) {
if (!o || !o?.optionId) {
console.log(
"WARNING: You haven't set the optionId for a category option in your config. This is required for the category option to work."
)
continue;
}
const option = category.categoryOptionsList.find(
(c) => c.optionId == o.optionId
)
if (option) {
if (option.allowedCheck) {
const canUse = await option.allowedCheck({
guild: {
id: req.params.id,
},
user: {
id: req.session.user.id,
},
})
if (typeof canUse != "object")
throw new TypeError(
`${category.categoryId} category option with id ${option.optionId} allowedCheck function need to return {allowed: Boolean, errorMessage: String | null}`
)
canUseList[category.categoryId][
option.optionId
] = canUse
} else {
canUseList[category.categoryId][
option.optionId
] = {
allowed: true,
errorMessage: null,
}
}
if (option.optionType !== "spacer") {
if (!actual[category.categoryId]) {
actual[category.categoryId] = {}
}
if (
!actual[category.categoryId][
option.optionId
]
) {
actual[category.categoryId][
option.optionId
] = o.data
}
} else actual[category.categoryId][option.optionId] = {
type: 'spacer',
themeOptions: option.themeOptions
}
} else console.log(`WARNING: Option ${o.optionId} in category ${category.categoryId} doesn't exist in your config.`)
}
} else for (const s of config.settings) {
if (!canUseList[s.categoryId]) canUseList[s.categoryId] = {}
if (s.toggleable) {
if (!toggle[s.categoryId]) {
toggle[s.categoryId] = {}
}
toggle[s.categoryId] = await s.getActualSet({
guild: {
id: req.params.id
}
})
}
if (s.premium) {
if (!premium[s.categoryId]) {
premium[s.categoryId] = {}
}
premium[s.categoryId] = await s.premiumUser({
guild: {
id: req.params.id
},
user: {
id: req.session.user.id,
tag: req.session.user.tag
}
})
}
if (category) {
if (s.premium && premium[category] == false) {
return res.redirect(
`/settings/${req.params.id}?error=premiumRequired`
)
}
}
for (const c of s.categoryOptionsList) {
if (c.allowedCheck) {
const canUse = await c.allowedCheck({
guild: { id: req.params.id },
user: { id: req.session.user.id }
})
if (typeof canUse != 'object') {
throw new TypeError(
`${s.categoryId} category option with id ${c.optionId} allowedCheck function need to return {allowed: Boolean, errorMessage: String | null}`
)
}
canUseList[s.categoryId][c.optionId] = canUse
} else {
canUseList[s.categoryId][c.optionId] = {
allowed: true,
errorMessage: null
}
}
if (!actual[s.categoryId]) actual[s.categoryId] = {}
if (c.optionType.type == 'spacer') {
actual[s.categoryId][c.optionId] = {
type: 'spacer',
themeOptions: c.themeOptions
}
} else if (
c.optionType.type == 'collapsable' ||
c.optionType.type == 'modal'
) {
for (const item of c.optionType.options) {
if (
item.optionType.type == 'channelsMultiSelect' ||
item.optionType.type == 'roleMultiSelect' ||
item.optionType.type == 'tagInput'
) {
actual[s.categoryId][item.optionId] = []
}
}
} else {
if (!actual[s.categoryId]) {
actual[s.categoryId] = {}
}
if (!actual[s.categoryId][c.optionId]) {
if (c.optionType.type === "multiRow") {
for (const item of c.optionType.options) {
actual[s.categoryId][item.optionId] = await item.getActualSet(
{
guild: {
id: req.params.id,
object: bot.guilds.cache.get(req.params.id)
},
user: {
id: req.session.user.id,
object: bot.guilds.cache
.get(req.params.id)
.members.cache.get(req.session.user.id)
}
}
)
}
continue
}
actual[s.categoryId][c.optionId] = await c.getActualSet(
{
guild: {
id: req.params.id,
object: bot.guilds.cache.get(req.params.id)
},
user: {
id: req.session.user.id,
object: bot.guilds.cache
.get(req.params.id)
.members.cache.get(req.session.user.id)
}
}
)
}
}
}
}
}
let errors
let success
// boo
if (req.session.errors) {
if (String(req.session.errors).includes('%is%')) {
errors = req.session.errors.split('%and%')
}
}
if (req.session.success) {
if (typeof req.session.success == 'boolean') {
success = true
} else {
if (String(req.session.success).includes('%is%')) {
success = req.session.success.split('%and%')
}
}
}
req.session.errors = null
req.session.success = null
const guild = bot.guilds.cache.get(req.params.id)
let gIcon
if (!guild.iconURL()) gIcon = themeConfig?.icons?.noGuildIcon
else gIcon = guild.iconURL()
res.render('settings', {
successes: success,
errors: errors,
settings: config.settings,
actual: actual,
toggle,
premium,
canUseList,
bot: config.bot,
guild,
userid: req.session.user.id,
gIcon,
req: req,
guildid: req.params.id,
themeConfig: req.themeConfig,
config
})
}
}
async function convert14(perm) {
var final = 'NULL'
switch (perm) {
case 'CREATE_INSTANT_INVITE':
final = 'CreateInstantInvite'
break
case 'KICK_MEMBERS':
final = 'KickMembers'
break
case 'BAN_MEMBERS':
final = 'BanMembers'
break
case 'ADMINISTRATOR':
final = 'Administrator'
break
case 'MANAGE_CHANNELS':
final = 'ManageChannels'
break
case 'MANAGE_GUILD':
final = 'ManageGuild'
break
case 'ADD_REACTIONS':
final = 'AddReactions'
break
case 'VIEW_AUDIT_LOG':
final = 'ViewAuditLog'
break
case 'PRIORITY_SPEAKER':
final = 'PrioritySpeaker'
break
case 'STREAM':
final = 'Stream'
break
case 'VIEW_CHANNEL':
final = 'ViewChannel'
break
case 'SEND_MESSAGES':
final = 'SendMessages'
break
case 'SEND_TTS_MESSAGES':
final = 'SendTTSMessages'
break
case 'MANAGE_MESSAGES':
final = 'ManageMessages'
break
case 'EMBED_LINKS':
final = 'ManageMessages'
break
case 'ATTACH_FILES':
final = 'AttachFiles'
break
case 'READ_MESSAGE_HISTORY':
final = 'ReadMessageHistory'
break
case 'MENTION_EVERYONE':
final = 'MentionEveryone'
break
case 'USE_EXTERNAL_EMOJIS':
final = 'UseExternalEmojis'
break
case 'VIEW_GUILD_INSIGHTS':
final = 'ViewGuildInsughts'
break
case 'CONNECT':
final = 'Connect'
break
case 'SPEAK':
final = 'Speak'
break
}
return final
}

View file

@ -0,0 +1,89 @@
const fs = require('fs')
const colors = require('colors')
const consolePrefix = `${'['.blue}${'dbd-soft-ui'.yellow}${']'.blue} `
const Nodeactyl = require('nodeactyl')
module.exports = {
init: async function (config, themeConfig, app, db) {
let info;
if (themeConfig?.customThemeOptions?.info) info = await themeConfig.customThemeOptions.info({ config: config });
if(themeConfig?.admin?.pterodactyl?.enabled) {
themeConfig.nodeactyl = new Nodeactyl.NodeactylClient(
themeConfig.admin?.pterodactyl?.panelLink,
themeConfig.admin?.pterodactyl?.apiKey
)
try {
await themeConfig.nodeactyl.getAccountDetails();
} catch (error) {
console.log(`${consolePrefix}${('Failed to connect to Pterodactyl panel!\nEnsure you\'ve used a CLIENT api key, (found at ' + themeConfig.admin.pterodactyl.panelLink + '/account/api)').red}`);
}
}
const eventFolders = fs.readdirSync(`${__dirname}/../pages`)
for (const folder of eventFolders) {
const eventFiles = fs
.readdirSync(`${__dirname}/../pages/${folder}`)
.filter((file) => file.endsWith('.js'));
for (const file of eventFiles) {
const e = require(`${__dirname}/../pages/${folder}/${file}`);
try {
if (folder === 'admin') {
await app.get(e.page, async function (req, res) {
if (!req.session.user) return res.sendStatus(401)
if (!config.ownerIDs?.includes(req.session.user.id)) return res.sendStatus(403);
e.execute(
req,
res,
app,
config,
themeConfig,
info,
db
)
})
} else if (folder === 'post') {
await app.post(e.page, function (req, res) {
e.execute(
req,
res,
app,
config,
themeConfig,
info,
db
)
})
} else if (folder === 'get') {
await app.use(e.page, async function (req, res) {
e.execute(
req,
res,
app,
config,
themeConfig,
info,
db
)
})
}
} catch (error) {
console.log(`${consolePrefix}${'Failed to load:'.cyan} ${colors.red(e.page)}`);
console.log(`Page handler ${file}: ${error}`);
}
}
}
app.use('*', async function (req, res) {
res.status(404)
config.errorPage(req, res, undefined, 404)
})
app.use((err, req, res, next) => {
res.status(500)
config.errorPage(req, res, err, 500)
})
console.log(`${consolePrefix}${'Initialised all pages!'.cyan}`);
}
}

View file

@ -0,0 +1,80 @@
const fetch = require('node-fetch')
const fs = require('fs')
const consolePrefix = `\x1b[34m[\x1b[33mdbd-soft-ui\x1b[34m]\x1b[36m `
const colors = require('colors')
async function update() {
let failed3 = 0
let failed4 = 0
try {
await fetch(`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/utils/updater/versionsOnline.json`);
} catch (error) {
failed3++
console.log(`${consolePrefix}Failed to check live for updates.`)
}
if (failed3 === 0) {
let checkArray = await fetch(`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/utils/updater/versionsOnline.json`);
try {
checkArray = await checkArray.json()
} catch (error) {
failed4++
console.log(`${consolePrefix}Failed to check live for updates.`)
}
if (failed4 === 0) {
let latestVersions = [];
let currentVersions = fs.readFileSync(__dirname + '/versions.json');
currentVersions = JSON.parse(currentVersions);
let needsUpdating = [];
for (const latestFile of checkArray) {
if (latestFile.version > currentVersions[latestFile.name]) {
needsUpdating.push({
name: latestFile.name,
type: latestFile.type
})
const { name, type } = latestFile
if (type === 'partial') {
let failedFile = 0
let fileRaw = await fetch(`https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/partials/${name}.ejs`);
try {
fileRaw = await fileRaw.text()
} catch (error) {
failedFile++
console.log(
`${consolePrefix}Failed to update ${colors.red(
name
)}.`
)
}
if (failedFile === 0) {
await fs.writeFileSync(
`${__dirname}/../../views/partials/${name}.ejs`,
fileRaw
)
currentVersions[name] = latestFile.version
await fs.writeFileSync(
`${__dirname}/versions.json`,
JSON.stringify(currentVersions)
)
console.log(
`${consolePrefix}Successfully updated ${colors.green(
name
)}`
)
}
}
}
}
}
}
}
exports.update = async () => {
await update()
}

View file

@ -0,0 +1,21 @@
const consolePrefix = `${'['.blue}${'dbd-soft-ui'.yellow}${']'.blue} `
async function npmDashCheck() {
await npmThemeCheck();
const latestVersion = checkArray['dist-tags'].latest
const currentVersion = require("../../../../index").version
if (currentVersion < latestVersion) console.log(`${consolePrefix}${'Your version of discord-dashboard is'.cyan} ${'outdated'.red}${'!'.cyan}`);
else console.log(`${consolePrefix}${'Your version of discord-dashboard is'.cyan} ${'up-to-date'.green}${'!'.cyan}`);
}
async function npmThemeCheck() {
const latestVersion = checkArray['dist-tags'].latest
const currentVersion = require("../../package.json").version
if (currentVersion < latestVersion) console.log(`${consolePrefix}${'Your version of dbd-soft-ui is'.cyan} ${'outdated'.red}${'!'.cyan}`);
else console.log(`${consolePrefix}${'Your version of dbd-soft-ui is'.cyan} ${'up-to-date'.green}${'!'.cyan}`);
}
exports.update = async () => {
await npmDashCheck()
}

View file

@ -0,0 +1,17 @@
{
"colorscheme": "1.0.64",
"feeds": "1.0.62",
"footer": "1.0.1",
"graph": "1.0.2",
"iconsList": "1.0.0",
"meta": "0.0.0",
"navbar": "1.0.11",
"popup": "1.1.5",
"preload": "0.0.0",
"preloader": "1.1.14",
"premium": "1.0.0",
"scripts": "0.0.0",
"secret": "1.0.0",
"sidebar": "0.0.0",
"theme": "1.1.0"
}

View file

@ -0,0 +1,57 @@
[
{
"name": "colorscheme",
"version": "1.0.64",
"type": "partial"
},
{
"name": "footer",
"version": "1.0.1",
"type": "partial"
},
{
"name": "graph",
"version": "1.0.2",
"type": "partial"
},
{
"name": "iconsList",
"version": "1.0.0",
"type": "partial"
},
{
"name": "navbar",
"version": "1.0.11",
"type": "partial"
},
{
"name": "popup",
"version": "1.1.5",
"type": "partial"
},
{
"name": "preloader",
"version": "1.1.14",
"type": "partial"
},
{
"name": "premium",
"version": "1.0.0",
"type": "partial"
},
{
"name": "secret",
"version": "1.0.0",
"type": "partial"
},
{
"name": "theme",
"version": "1.1.0",
"type": "partial"
},
{
"name": "preload",
"version": "0.0.0",
"type": "partial"
}
]

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,167 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now: 'commands'}) %>
<script>
// docuemnt on read
document.addEventListener('DOMContentLoaded', function() {
$('.glow').removeClass('active');
$('.active_all').addClass('active');
});
$(function () {
$('#all').click(function () {
$('.item').slideDown("slow");
$('.glow').removeClass('active');
$('.active_all').addClass('active');
return false;
});
<% themeConfig.commands?.forEach(category => { %>
$('#<%= category.categoryId %>').click(function () {
$('.item').not('.<%= category.categoryId %>').slideUp(300);
$('.<%= category.categoryId %>').slideDown("slow");
$('.glow').removeClass('active');
$('.active_<%= category.categoryId %>').addClass('active');
return false;
});
<% }) %>
});
</script>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'commands'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now:'commands'}) %>
<!-- End Navbar -->
<div class="container-fluid py-4">
<div class="row">
<div class="container-fluid">
<% themeConfig.commands?.forEach(category => { %>
<section id="<%= category.categoryId %>">
<div class="col-12 item <%= category.categoryId %>" id="divtable">
<div class="card mb-4 command-card">
<div class="card-header pb-0">
<h4><%= category.category %></h4>
<a><%= category.subTitle %></a>
</div>
<div class="card-body px-0 pt-0 pb-2">
<div class="table-responsive p-0">
<table class="table align-items-center mb-0" name="commandsTable" id="table">
<thead>
<tr>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
Name
</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7 ps-2">
Command Usage
</th>
<% if(!category.hideDescription) { %>
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
Description
</th>
<% } %>
<% if(!category.hideAlias) { %>
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
Aliases
</th>
<% } %>
<th class="text-secondary opacity-7"></th>
</tr>
</thead>
<tbody>
<% category.list.forEach((item)=>{ %>
<tr>
<td>
<div class="d-flex px-2 py-1">
<div>
<% if(category.image){ %>
<%- category.image %>
<% } %>
</div>
<div class="d-flex flex-column justify-content-center">
<h6 class="mb-0 text-sm"><%= item.commandName %></h6>
</div>
</div>
</td>
<td>
<p class="text-xs font-weight-bold mb-0"><%= item.commandUsage %></p>
</td>
<% if(!category.hideDescription) { %>
<td class="align-middle text-center text-sm">
<p class="text-xs font-weight-bold mb-0"><%= item.commandDescription %></p>
</td>
<% } %>
<% if(!category.hideAlias) { %>
<td class="align-middle text-center">
<span class="text-secondary text-xs font-weight-bold"><%= item.commandAlias %></span>
</td>
<% } %>
<td class="align-middle">
<a class="text-secondary font-weight-bold text-xs"
data-toggle="tooltip"
data-original-title="Edit user">
</a>
</td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
</div>
</div>
</section>
<% }) %>
</div>
</div>
</main>
<%- include('partials/footer.ejs') %>
<script>
$('#searchBar').on('change keyup paste enter', function () {
var input = $(this).val().toLowerCase();
const divs = $(".command-card").toArray()
if (!input || input.length <= 0) {
$('.item').show();
$(divs).show();
}
$('tr').show()
$('tr:not(:contains(' + input + '))').hide()
for (const item of divs) {
try {
const tbody = item.firstChild.nextElementSibling.nextElementSibling.firstChild.nextElementSibling.firstChild.nextElementSibling.firstChild.nextElementSibling.nextElementSibling
if ($(tbody).children(':visible').length == 0) $(item).hide()
} catch (error) {
console.log(error)
}
}
});
</script>
<%- include('partials/scripts.ejs', {now: "commands"}) %>
</body>
</html>

View file

@ -0,0 +1,32 @@
<style>
.select2-results__option.select2-results__option--selectable:before {
content: "# ";
}
</style>
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select placeholder="Select" class="multiSelect form-control"
formType="channelMultiSelect"
id="<%= option.optionId %>"
defaultValue=""
<% if(option.optionType.disabled){ %>disabled
<% } %>
<% if(option.optionType.required){ %>required
<% } %>
style="width:100%;background: #f9f9ff;border-color: #f9f9ff;<% if(!Allowed.allowed){ %>border-color: red;<% } %>"
multiple="multiple"
<% if(!Allowed.allowed || option.optionType.disabled){ %>disabled<% } %>
>
<% if (actual[s.categoryId][option.optionId]) {
let ioooooo = 0;
let functiona = option.optionType.function(bot, guildid, userid);
functiona.values.forEach(value=>{ %>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId].includes(value)){ %>selected
<% } %>
><%= functiona.keys[ioooooo] %></option>
<% ioooooo++; })} %>
</select>
<br>

View file

@ -0,0 +1,19 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select
<% if(!Allowed.allowed || option.optionType.disabled){ %>disabled<% } %>
formType="channelSelect"
defaultValue=""
class="form-select"
id="<%= option.optionId %>" class="col-md-12"
style="<% if(!Allowed.allowed){ %>border-color: red;<% } %> ">
<%
let ioooooo = 0;
let functiona = option.optionType.function(bot, guildid, userid);
functiona.values.forEach(value=>{ %>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId] == value){ %>selected
<% } %>
><%= functiona.keys[ioooooo] %></option>
<% ioooooo++; }); %>
</select>

View file

@ -0,0 +1,14 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<label class="container">
<input type="checkbox" id="<%= option.optionId %>"
formType="checkbox"
id="<%= option.optionId %>"
formType="checkbox"
defaultValue=""
<% if(!Allowed.allowed || option.optionType.disabled){ %>disabled<% } %>
<% if(!Allowed.allowed){ %>style="border-color: red;"<% } %>
>
<span class="checkmark round"></span>
</label>
<br>

View file

@ -0,0 +1,9 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<input type="color" id="<%= option.optionId %>"
id="<%= option.optionId %>"
formType="colorSelect"
class="form-control form-control-color"
value="<%= actual[s.categoryId][option.optionId] || option.optionType.data || "#ffffff" %>"
<% if(option.optionType.disabled){ %>disabled<% } %>
<% if(!Allowed.allowed){ %>style="border-color: red;" disabled<% } %>
>

View file

@ -0,0 +1,26 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<input
defaultValue=""
class="form-control"
type="date"
id="<%= option.optionId %>"
formType="date"
<% if(actual[s.categoryId][option.optionId]){ %>
value="<%= actual[s.categoryId][option.optionId] %>"
<% } else { %>
value="<%- new Date().toISOString().slice(0, 10) %>"
<% } %>
<% if(option?.themeOptions?.min) { %>
min="<%= option.themeOptions.min%>"
<% } %>
<% if(option?.themeOptions?.max) { %>
max="<%= option.themeOptions.max%>"
<% } %>
<% if(!Allowed.allowed){ %>
style="border-color: red;"
<% } %>
<% if (!Allowed.allowed || option.optionType.disabled) { %>
disabled
<% } %>
>

View file

@ -0,0 +1,106 @@
<style>
.iframe-container {
position: relative;
overflow: hidden;
width: 100%;
padding-top: 56.25%; /* 16:9 Aspect Ratio (divide 9 by 16 = 0.5625) */
}
@media (max-width: 570px) {
.iframe-container {
padding-top: 150%;
}
}
@media (min-width: 570px) and (max-width: 760px) {
.iframe-container {
padding-top: 130%;
}
}
@media (min-width: 760px) and (max-width: 980px) {
.iframe-container {
padding-top: 110%;
}
}
@media (min-width: 980px) and (max-width: 1247px) {
.iframe-container {
padding-top: 95%;
}
}
.responsive-iframe {
border: none;
border-radius: 10px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
}
</style>
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<textarea id="<%= option.optionId %>" name="<%= option.optionId %>" formType="embedBuilder"
style="visibility: hidden;width: .1px;height: .1px"><%- JSON.stringify(actual[s.categoryId][option.optionId]) || "" %></textarea>
<div class="iframe-container">
<%
let embedContent;
if (actual[s.categoryId][option.optionId] == null) {
if (option.optionType.data.defaultJson) {
embedContent = JSON.stringify(option.optionType.data.defaultJson, null, 3);
} else {
embedContent = `{
content: "Did you know that if you don't know something, you don't know it? This riddle was solved by me. Don't thank me.",
embed: {
timestamp: new Date().toISOString(),
url: "https://discord.com",
description: "There was a boar, everyone liked a boar. One day the boar ate my dinner and escaped through the chimney. I haven't seen a boar since then.",
author: {
name: "Assistants Center",
url: "https://assistants.ga",
icon_url: "https://media.discordapp.net/attachments/911644960590270484/934513385402413076/ac_fixed.png"
},
image: {
url: "https://unsplash.it/380/200"
},
footer: {
text: "Crated with Discord-Dashboard",
icon_url: "https://cdn.discordapp.com/emojis/870635912437047336.png"
},
fields: [
{
name: "Hello",
value: "Hi, Assistants Center loves you <:ac_love:806492057996230676>"
},
{
name: "Do you know that",
value: "You can use custom emojis there, even from server where bot isn't <:Kekwlaugh:722088222766923847>",
inline: false
},
]
}
}`;
}
} else {
if (typeof actual[s.categoryId][option.optionId] === "string") embedContent = actual[s.categoryId][option.optionId];
else embedContent = JSON.stringify(actual[s.categoryId][option.optionId], null, 3);
}
%>
<iframe class="responsive-iframe"
src="data:text/html;charset=utf-8,<%= encodeURIComponent(config.theme.embedBuilderComponent.replace('{{ContentJsonReplacer}}', embedContent).replace('{{msgSource}}', option.optionId).replace('{{botusername}}', option.optionType.data.username).replace('{{botavatar}}', option.optionType.data.avatarURL)) %>"></iframe>
</div>
<script>
setTimeout(() => {
window.addEventListener('message', function (e) {
if (e.data[0] === '<%= option.optionId %>') {
document.getElementById('<%= option.optionId %>').innerHTML = JSON.stringify(e.data[1]);
optionEdited(document.getElementById('<%= option.optionId %>'))
}
}, false);
}, 1200);
</script>

View file

@ -0,0 +1,176 @@
<style>
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
img {
display: block;
}
.emoji-picker {
background-color: #303841;
width: 400px;
border-radius: 5px;
height: 400px;
display: flex;
}
.emoji-selectables {
background-color: #212427;
width: 45px;
height: 100%;
padding: 10px 15px;
display: flex;
flex-direction: column;
align-items: center;
}
.emoji-selectables span {
margin-bottom: 7px;
cursor: pointer;
}
.emoji-selectables span.active img {
filter: none;
}
.emoji-selectables span img {
width: 25px;
display: block;
display: flex;
align-items: center;
filter: grayscale(100%)
}
.emoji-content div {
width: 100%;
flex-wrap: wrap;
justify-content: center;
padding: 5px;
}
.emoji-content span {
display: block;
padding: 5px;
cursor: pointer;
}
.emoji-content span:hover {
transform: scale(1.1);
background-color: #3f4953;
border-radius: 5px;
}
.picker-emoji-content {
display: none;
}
.picker-emoji-sel.face {
color: aliceblue;
font-size: 10px;
}
.picker-emoji-content.active {
display: flex;
display: flex;
height: 100%;
overflow-y: scroll;
}
.emoji-content span img {
width: 32px;
height: 32px;
}
.picker-emoji-content::-webkit-scrollbar-thumb {
height: 10px;
background-color: #65B88D;
border-radius: 100px;
}
.picker-emoji-content::-webkit-scrollbar-track {
background-color: #303841;
}
.picker-emoji-content::-webkit-scrollbar {
width: 6px;
}
img {
display: block;
}
</style>
<link href="https://www.jqueryscript.net/css/jquerysctipttop.css" rel="stylesheet" type="text/css">
<% if(!Allowed.allowed){ %>
<span style="color: red;">
<%- Allowed.errorMessage %>
</span>
<br>
<% } %>
<input defaultValue="<%= actual[s.categoryId][option.optionId] || "" %>" class="d-none" type="text" id="<%= option.optionId %>" formType="emojiPicker" type="text" onchange="optionEdited(this)">
<div class="dropdown">
<a href="javascript:;" class="btn bg-transparent" data-bs-toggle="dropdown" id="navbarDropdownMenuLink2" style="width: fit-content; height: fit-content; aspect-ratio: 1/1; justify-content: center; display: flex; align-items: center; max-width: 100px; <% if (option.optionType.disabled && !Allowed.allowed) { %>border-color: red;<% } %>">
<% if(actual[s.categoryId][option.optionId]){ %>
<% if (/\d/.test(actual[s.categoryId][option.optionId])) { %>
<img src="https://cdn.discordapp.com/emojis/<%= actual[s.categoryId][option.optionId] %>.png" style="width: 72px; height: 72px;">
<% } else { %>
<span style="font-size: 20px;"><%= actual[s.categoryId][option.optionId] %></span>
<% } %>
<% } %>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink2">
<div id="emojis">
</div>
</div>
</div>
<script src="/js/core/DisMojiPicker.js"></script>
<script src="https://twemoji.maxcdn.com/v/latest/twemoji.min.js" crossorigin="anonymous"></script>
<% if(!option.optionType.disabled && Allowed.allowed){ %>
<script>
const emojis = <%- JSON.stringify(bot.guilds.cache.get(req.params.id).emojis.cache.map(e => {
return {
animated: e.animated,
name: e.name,
id: e.id
}
})) %>
$(".dropdown").click(function(e){
e.stopPropagation();
})
$("#emojis").disMojiPicker(emojis)
$("#emojis").picker(emoji => {
let custom = {}
if (emoji)
$("#navbarDropdownMenuLink2").dropdown("toggle")
if (emojis.find(x => x.name === emoji)) {
custom = emojis.find(x => x.name === emoji)
}
$("#<%= option.optionId %>").val(custom ? custom.id : emoji)
$("#<%= option.optionId %>").trigger("change")
if (custom?.id)
return $("#navbarDropdownMenuLink2").html(
`<img src="https://cdn.discordapp.com/emojis/${custom.id}.${custom.animated ? "gif" : "png"}" alt="${custom.name}" style="width: 72px; height: 72px;"/>`
)
else $("#navbarDropdownMenuLink2").html(`
<span style="width: 72px; height: 72px;">
${twemoji.parse(emoji)}
</span>
`)
});
twemoji.parse(document.body, "<%= bot.guilds.cache.get(req.params.id).emojis.cache.map(e => e.id) %>");
</script>
<% } %>

View file

@ -0,0 +1,33 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<input <% if(!Allowed.allowed){ %>style="border-color: red;" disabled
<% } %>
type="text" id="<%= option.optionId %>" class="col-md-12 form-control"
id="<%= option.optionId %>"
formType="input"
defaultValue="<% if(actual[s.categoryId][option.optionId]){ %><%= actual[s.categoryId][option.optionId] %><% } %>"
<% if(option.optionType.required){ %>required
<% } %>
<% if(option.optionType.disabled){ %>disabled
<% } %>
placeholder="<%= option.optionType.data %>"
<% if(actual[s.categoryId][option.optionId]){ %>value="<%= actual[s.categoryId][option.optionId] %>"
<% } %>
<% if(option.optionType.min){ %>minlength="<%= option.optionType.min %>"
<% } %>
<% if(option.optionType.max){ %>maxlength="<%= option.optionType.max %>"
<% } %>
/>
<% if (option?.themeOptions?.optionPlaceholder) { %>
<div style="margin: 0px -5px;">
<% option?.themeOptions?.optionPlaceholder?.values.forEach(array => { %>
<span style="<% if(option.themeOptions.optionPlaceholder.clickable && Allowed.allowed){ %>cursor: pointer;<% } %> color: #9db4cc;"
class="_87eb"
<% if(option.themeOptions.optionPlaceholder.clickable && Allowed.allowed){ %>
onclick="$('#<%= option.optionId %>').val(this.innerHTML);"
<% } %>
><%- array %></span>
<% }) %>
</div>
<% } %>

View file

@ -0,0 +1,10 @@
<div class="formTypes">
<% option.optionType.options.forEach(opt => { %>
<div class="formtype-item mt-3">
<h4 class="m-0"><%- opt?.optionName || ""%></h4>
<p><%- opt?.optionDescription || ""%></p>
<%- include(`./${opt.optionType.type}.ejs`, {option: opt, s, Allowed}) %>
</div>
<% }) %>
</div>

View file

@ -0,0 +1,29 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select placeholder="Select" class="multiSelect js-example-basic-multiple"
<% if(option.optionType.disabled){ %>disabled
<% } %>
<% if(option.optionType.required){ %>required
<% } %>
id="<%= option.optionId %>"
defaultValue=""
formType="multiSelect"
style="width:100%;background: #f9f9ff;border-color: #f9f9ff;"
class="col-md-12" multiple="multiple"
<% if(!Allowed.allowed){ %>style="border-color: red;" disabled<% } %>
>
<%
let ioo = 0;
option.optionType.data.values.forEach(value => {
%>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId].includes(value)) { %>
selected
<% }
%>
> <%= option.optionType.data.keys[ioo] %> </option>
<%
ioo++;
})
%>
</select>

View file

@ -0,0 +1,27 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<input
<% if(actual[s.categoryId][option.optionId]){ %>
defaultValue="<%= actual[s.categoryId][option.optionId] %>"
value="<%= actual[s.categoryId][option.optionId] %>"
<% } %>
class="form-control"
type="number"
id="<%= option.optionId %>"
formType="numberPicker"
<% if (option.optionType.min) { %>
min="<%= option.optionType.min %>"
onkeyup="if(this.value < <%= option.optionType.min %>) this.value = <%= option.optionType.min %>"
<% } %>
<% if (option.optionType.max) { %>
max="<%= option.optionType.max %>"
onkeyup="if(this.value > <%= option.optionType.max %>) this.value = <%= option.optionType.max %>"
<% } %>
<% if(!Allowed.allowed ){ %>
style="border-color: red !important"
disabled
<% } %>
<% if (Allowed.allowed && option.optionType.disabled) { %>
disabled
<% } %>
>

View file

@ -0,0 +1,26 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select placeholder="Select" class="multiSelect form-control"
formType="rolesMultiSelect"
id="<%= option.optionId %>"
defaultValue=""
<% if(option.optionType.disabled){ %>disabled
<% } %>
<% if(option.optionType.required){ %>required
<% } %>
style="width:100%;background: #f9f9ff;border-color: #f9f9ff;<% if(!Allowed.allowed){ %>border-color: red;<% } %>"
multiple="multiple"
<% if(!Allowed.allowed || option.optionType.disabled){ %>disabled<% } %>
>
<% if (actual[s.categoryId][option.optionId]) {
let ioooooo = 0;
let functiona = option.optionType.function(bot, guildid, userid);
functiona.values.forEach(value=>{ %>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId].includes(value)){ %>selected
<% } %>
><%= functiona.keys[ioooooo] %></option>
<% ioooooo++; })} %>
</select>
<br>

View file

@ -0,0 +1,21 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select class="form-control"
<% if(option.optionType.disabled){ %>disabled
<% } %>
id="<%= option.optionId %>" class="col-md-12"
formType="rolesSelect"
defaultValue=""
<% if(!Allowed.allowed){ %>style="border-color: red;" disabled<% } %>
>
<%
let iooooooo = 0;
let functiona = option.optionType.function(bot, guildid, userid);
functiona.values.forEach(value=>{ %>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId] == value){ %>selected
<% } %>
><%= functiona.keys[iooooooo] %></option>
<%
iooooooo++;
}) %>
</select>

View file

@ -0,0 +1,22 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select class="form-control"
<% if(!Allowed.allowed){ %>style="border-color: red;"
<% } %>
formType="select"
id="<%= option.optionId %>"
<% if(!Allowed.allowed || option.optionType.disabled){ %>
disabled
<% } %>
name="<%= option.optionId %>">
<%
let ioo = 0;
option.optionType.data.values.forEach(value=>{ %>
<option value="<%= value %>"
<% if(actual[s.categoryId][option.optionId] == value){ %>selected
<% } %>
><%= option.optionType.data.keys[ioo] %>
</option>
<%
ioo++;
}) %>
</select>

View file

@ -0,0 +1,99 @@
<style>
.form-control.slider {
padding: 0 .75rem;
}
datalist.slider {
margin: 0 !important;
}
option.slider.text-sm {
font-weight: bold;
}
option.slider:nth-last-child(1) {
margin-right: 5px;
}
.form-control.slider::after {
background: none !important;
}
.form-control.slider::before {
background: none !important;
}
.form-control:focus {
box-shadow: none !important;
border: none !important;
}
.form-control.slider.slider {
-webkit-appearance: none;
padding: 0 !important;
margin-top: 10px;
width: 97.8%;
height: 15px;
border-radius: 5px;
background-image: linear-gradient(var(--gradient));
outline: none;
opacity: 0.7;
-webkit-transition: .2s;
transition: opacity .2s;
}
.form-control.slider.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
margin-bottom: 8px;
width: 25px;
height: 25px;
border-radius: 50%;
background-image: linear-gradient(310deg, rgb(16, 18, 31) 0%, rgb(46, 52, 89) 100%);
cursor: pointer;
}
.form-control.slider.slider::-moz-range-thumb {
width: 25px;
height: 25px;
border-radius: 50%;
background-image: linear-gradient(310deg, rgb(16, 18, 31) 0%, rgb(46, 52, 89) 100%);
cursor: pointer;
}
</style>
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<% if(option?.themeOptions?.dataList) { %>
<datalist class="slider" id="steplist">
<% option.themeOptions.dataList.forEach(data => { %>
<option class="slider text-sm" style="user-select: none;"><strong><%- data %></strong></option>
<% }) %>
</datalist>
<% } %>
<input
<% if(actual[s.categoryId][option.optionId]){ %>
defaultValue="<%= actual[s.categoryId][option.optionId] %>"
value="<%= actual[s.categoryId][option.optionId] %>"
<% } %>
class="form-control slider"
formType="slider"
id="<%= option.optionId %>"
type="range"
list="steplist"
step="<%= option.optionType.step %>"
min="<%= option.optionType.min %>"
max="<%= option.optionType.max %>"
<% if (option.themeOptions?.showValue) { %>
oninput="updateSlider(this.value, this.id)"
<% } %>
style="border: none !important; <% if(!Allowed.allowed){ %> border-color: red; <% } %>"
<% if(!Allowed.allowed){ %>
disabled
<% } %>
<% if (Allowed.allowed && option.optionType.disabled) { %>
disabled
<% } %>
>
<% if (option.themeOptions?.showValue) { %>
<p class="mt-2" style="margin-bottom: 0 !important;">Slider is set to <b><span id="value_<%= option.optionId %>"><% if(actual[s.categoryId][option.optionId]){ %><%= actual[s.categoryId][option.optionId] %><% } %></span></b></p>
<% } %>

View file

@ -0,0 +1,3 @@
<h3><b><%- option.title %></b></h3>
<%- option.description %>
<br>

View file

@ -0,0 +1,78 @@
<% let val = "";
if (actual[s.categoryId][option.optionId]) val = "checked";
%>
<style>
/* The switch - the box around the slider */
.toggleSwitch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Hide default HTML checkbox */
.toggleSwitch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.tslider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
.tslider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .tslider {
background-color: #2196F3;
}
input:focus + .tslider {
box-shadow: 0 0 1px #2196F3;
}
input:checked + .tslider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.tslider.round {
border-radius: 34px;
}
.tslider.round:before {
border-radius: 50%;
}
</style>
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<label class="toggleSwitch">
<input type="checkbox" id="<%= option.optionId %>"
formtype="switch"
defaultValue=""
id="<%= option.optionId %>" <%- val %>
<% if(option.optionType.disabled || !Allowed.allowed ){ %>disabled<% } %>
>
<span class="tslider round"></span>

View file

@ -0,0 +1,25 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<select
<% if (actual[s.categoryId][option.optionId]) {%>
defaultValue="<%= JSON.stringify(actual[s.categoryId][option.optionId])%>"
<% } %>
id="<%= option.optionId %>"
getValue="<%= option.optionId %>"
class="tags form-control"
multiple="multiple"
formType="tagInput"
<% if(!Allowed.allowed){ %>
style="border-color: red;"
disabled
<% } %>
<% if (Allowed.allowed && option.optionType.disabled) { %>
disabled
<% } %>
>
<% if (actual[s.categoryId][option.optionId]) {%>
<% actual[s.categoryId][option.optionId].forEach(value=>{ %>
<option value="<%= value %>" selected><%= value %></option>
<% }) %>
<% } %>
</select>

View file

@ -0,0 +1,2 @@
<% if(!Allowed.allowed){ %><span style="color: red;"><%- Allowed.errorMessage %></span><br><% } %>
<textarea id="<%= option.optionId %>"<%if(option.optionType.required){%>required<% } %><% if(option.optionType.disabled || !Allowed.allowed ){ %>disabled <% } %><% if(option.optionType.min){ %>minlength="<%= option.optionType.min %>"<% } %><% if(option.optionType.max){ %>maxlength="<%= option.optionType.max %>"<% } %>rows="4" class="col-md-12 form-control" defaultValue="<% if(actual[s.categoryId][option.optionId]){ %><%= actual[s.categoryId][option.optionId] %><% }else{ %><%= option.optionType.data %><% } %>" formType="textarea"><% if(actual[s.categoryId][option.optionId]){ %><%= actual[s.categoryId][option.optionId] %><% }else{ %><%= option.optionType.data %><% } %></textarea>

View file

@ -0,0 +1,227 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now: 'credits'}) %>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'credits'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now:'credits'}) %>
<!-- End Navbar -->
<div class="container-fluid py-4" style="padding-bottom: 0px !important;">
<div id="discordRocket" style="display: none;">
<div id="rocketDiscord"
style="position: absolute; margin: 0; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); z-index: 420;">
<i class="fab fa-discord fa-10x" aria-hidden="true"></i>
</div>
<p style="font-size: 150%; position: absolute; margin: 0; top: 50%; left: 50%; transform: translate(-50%, -50%);">
Taking you to <b>discord.gg</b></p>
<!-- i cant figure out how to center this -->
</div>
<section class="py-sm-7 py-5 position-relative" id="mainSection" style="padding-top: 0px !important;">
<div>
<div class="row mb-4">
<div class="col-lg-12 mb-lg-0 mb-4" style="padding: 0px">
<div class="card">
<div class="card-body p-3">
<div class="row">
<div class="col-lg-6">
<div class="d-flex flex-column h-100">
<p class="mb-1 pt-2 text-bold">Soft-UI Theme</p>
<h5 class="font-weight-bolder">Soft UI Theme</h5>
<p>The Discord-Dashboard Soft UI theme was created as a feature-packed theme for DBD users!</p>
<p class="mb-1 mt-5"> Made with <i class="fa fa-heart"></i> by <a
href="https://github.com/PlainDevelopment"
class="font-weight-bold text-gradient text-primary"
style="font-weight: 700 !important;">PlainDevelopment</a> and <a
href="https://github.com/iMidnights"
class="font-weight-bold text-gradient text-primary"
style="font-weight: 700 !important;">iMidnight</a></p>
<a class="text-body text-sm font-weight-bold mb-0 icon-move-right"
href="https://github.com/Assistants-Center">
Visit our Github page
<i class="fas fa-arrow-right text-sm ms-1" aria-hidden="true"></i>
</a>
</div>
</div>
<div class="col-lg-5 ms-auto text-center mt-5 mt-lg-0">
<div class="bg-gradient-primary border-radius-lg h-100"
style="background-image: url('/img/soft-ui.webp') !important; background-repeat: no-repeat; background-size: contain; background-position: center;">
<div class="position-relative d-flex align-items-center justify-content-center h-100"
style="min-height: 210px !important;">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row mt-4 d-flex" style="justify-content: space-between;">
<div class="card" style="width: 300px; height: 465px; text-align: center;">
<div class="p-3">
<img class="img border-radius-lg max-width-200 w-100 position-relative z-index-2"
src="https://cdn.discordapp.com/avatars/715195498495082627/1eae1059ab1d33da0f99cd370c2014cf.webp"
style="width: 200px; height: 200px;"
alt="Plain">
</div>
<hr>
<div>
<div class="p-3 text-center" style="text-align: left !important; padding-top: 0 !important;">
<h2 class="text-gradient text-primary">Plain</h2>
<h5 class="mt-1" style="margin-bottom: 0;">Soft UI Developer</h5>
<p>Spent over 6 hours typing out all the feed icons.</p>
<div style="position: absolute; bottom: 15px;">
<a class="text-body text-bg font-weight-bold mb-0 icon-move-right"
href="https://github.com/PlainDevelopment">
Plain's Github
<i class="fas fa-arrow-right text-sm ms-1" aria-hidden="true"></i>
</a>
</div>
</div>
</div>
</div>
<div class="card" style="width: 300px; height: 465px; text-align: center;">
<div class="p-3">
<img class="img border-radius-lg max-width-200 w-100 position-relative z-index-2"
src="https://cdn.discordapp.com/avatars/427534456169955352/5cff8985bb22c7b2bad7e0823412a45e.webp"
style="width: 200px; height: 200px;"
alt="iMidnight">
</div>
<hr>
<div>
<div class="p-3 text-center" style="text-align: left !important; padding-top: 0 !important;">
<h2 class="text-gradient text-primary">iMidnight</h2>
<h5 class="mt-1" style="margin-bottom: 0;">Soft UI Developer</h5>
<p>Potato Brain.</p>
<div style="position: absolute; bottom: 15px;">
<a class="text-body text-bg font-weight-bold mb-0 icon-move-right"
href="https://github.com/iMidnights">
iMidnight's Github
<i class="fas fa-arrow-right text-sm ms-1" aria-hidden="true"></i>
</a>
</div>
</div>
</div>
</div>
<div class="card" style="width: 300px; height: 465px; text-align: center;">
<div class="p-3">
<img class="img border-radius-lg max-width-200 w-100 position-relative z-index-2"
src="https://avatars.githubusercontent.com/u/62174194"
style="width: 200px; height: 200px;"
alt="Breathtake">
</div>
<hr>
<div>
<div class="p-3 text-center" style="text-align: left !important; padding-top: 0 !important;">
<h2 class="text-gradient text-primary">Breathtake</h2>
<h5 class="mt-1" style="margin-bottom: 0;">Discord Dashboard Developer</h5>
<p>Project Ants.</p>
<div style="position: absolute; bottom: 15px;">
<a class="text-body text-bg font-weight-bold mb-0 icon-move-right"
href="https://github.com/breftejk">
Breathtake's Github
<i class="fas fa-arrow-right text-sm ms-1" aria-hidden="true"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
<%
const images = ["curved-1", "curved-2", "curved-3", "curved-4", "curved-5", "curved-6", "curved-7", "curved-8", "curved-9", "curved-10", "curved-11", "curved-12", "curved-13", "curved-14", "curved-15", "curved-16", "curved-17", "curved-18"];
const image = images[Math.floor(Math.random() * images.length)];
%>
<section class="pb-7 position-relative" id="getHelp">
<div class="page-header min-vh-50 m-3 border-radius-xl"
style="background-image: url('/img/curved-images/<%- image %>.webp');">
<span class="mask bg-gradient-dark opacity-8"></span>
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-6 text-center mx-auto">
<h1 class="text-white mt-4 mb-1">Got a question?</h1>
<p class="lead text-white mb-6">Join our discord server!</p>
</div>
<button type="button" style="border: none; background: none; cursor: pointer;" id="discordButton"
onclick="supportServer()">
<i class="fab fa-discord fa-7x" aria-hidden="true"></i>
</button>
</div>
</div>
</div>
<%- include('partials/footer.ejs') %>
</section>
</div>
</main>
<script>
let disableFunc = false;
var win;
function supportServer() {
if (disableFunc) return;
disableFunc = true;
$('#discordButton').parent().css('overflow', 'hidden');
$('#discordButton').animate({'margin-top': '-=50px'});
$('#discordButton').animate({'margin-top': '+=500px', opacity: 0}, function () {
$(this).hide();
});
$("#discordRocket").fadeIn();
setTimeout(function () {
$('#rocketDiscord').animate({'margin-top': '+=600px'}, 1);
$("#mainSection").fadeOut();
$("#main2").fadeOut();
$("#getHelp").fadeOut();
}, 1000)
setTimeout(function () {
setTimeout(function () {
$('#rocketDiscord').animate({'margin-top': '+=75px'});
$('#rocketDiscord').animate({'margin-top': '-=1000px'}, 1500);
setTimeout(function () {
window.open('https://discord.gg/EdJFwNvNS9', '_blank', 'location=yes,height=1200,width=800');
$("#rocketDiscord").fadeOut();
$("#discordRocket").fadeOut();
setTimeout(function () {
disableFunc = false;
location.reload();
}, 3500)
}, 1200)
}, 1500)
}, 2000);
}
</script>
<%- include('partials/scripts.ejs', {now: "credits"}) %>
</body>
</html>

View file

@ -0,0 +1,386 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../testcdn/a05ee437b7ade39c78f8.css" data-n-p="">
<%- include('partials/preloader.ejs', {now: 'debug'}) %>
<%
let seconds = Math.round(rawUptime % 60);
if (seconds > 59) seconds = Math.round(seconds % 60);
let minutes = Math.floor(rawUptime / 60);
let hours = Math.floor(minutes / 60);
let days = Math.floor(hours / 24);
minutes = minutes % 60;
hours = hours % 24;
let filterUptime = `${days}d, ${hours}h, ${minutes}m, ${seconds}s`;
if (!days) filterUptime = `${hours}h, ${minutes}m, ${seconds}s`;
if (!hours) filterUptime = `${minutes}m, ${seconds}s`;
if (!minutes) filterUptime = `${seconds}s`;
let modified = 0;
if (onlineFiles.index.replace(/\s+/g, '') !== localFiles.index.replace(/\s+/g, '')) modified++;
if (onlineFiles.guild.replace(/\s+/g, '') !== localFiles.guild.replace(/\s+/g, '')) modified++;
if (onlineFiles.guilds.replace(/\s+/g, '') !== localFiles.guilds.replace(/\s+/g, '')) modified++;
const info = []
const versions = []
if (modified !== 0) modded = "true"
else modded = "false"
let information = [
{name: "Theme", value: "Soft UI Theme"},
{name: "Modified", value: `${modded}`},
{name: "License Type", value: `${license}`},
{name: "Uptime", value: `${filterUptime}`},
{name: "Permissions", value: req.requiredPermissions},
{name: "Redirect URI", value: `${config.redirectUri?.includes("/discord/callback")}`}
]
let modules = [
{name: "Node JS", version: `${nodeVersion.split("v")[1]}`},
{name: "Discord JS", version: `${discordVersion}`, npm: "discord.js"},
{name: "Discord Dashboard", version: `${dbdVersion}`, npm: "discord-dashboard"},
{name: "Theme", version: `${themeVersion}`, npm: "soft-ui"},
]
onlineV.forEach(online => {
const current = localV[online.name];
const latest = online.version;
const name = online.name;
versions.push({name: name, current: current, latest: latest})
});
const settings = config.settings
let debug = {information, modules, versions, settings, themeConfig}
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(debug));
%>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'debug'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now:'debug'}) %>
<!-- End Navbar -->
<div class="container-fluid py-4">
<div class="modal fade" id="exampleModalSignUp" tabindex="-1" role="dialog"
aria-labelledby="exampleModalSignTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-sm" role="document">
<div class="modal-content">
<div class="modal-body p-0">
<div class="card card-plain">
<div class="card-header pb-0 text-left">
<h4 class="font-weight-bolder text-primary text-gradient">Download Log file.</h4>
<p class="mb-0"
style="text-align: center;">This log contains the dashboard's Theme Config and all options with any personal information redacted.</p>
</div>
<div class="card-body pb-3" id="form1">
<form role="form text-left">
<div class="text-center">
<%
//new date
const date = new Date();
//convert unix to string
const dateString = date.toString();
//split date string
const dateSplit = dateString.split(" ");
//get date
const dateFinal = dateSplit[2] + "-" + dateSplit[1] + "-" + dateSplit[3];
//get time
const timeFinal = dateSplit[4];
//split by space and join by -
const timeFinal2 = timeFinal.replace(/[&\/\\#, +()$~%.'":*?<>{}]/g, '-');
%>
<a href="data:<%- data %>"
download="Log_SoftUI_<%- timeFinal2 %>_<%- dateFinal %>.json"
class="btn bg-gradient-primary">download JSON</a>
</div>
</form>
</div>
<div class="card-footer text-center pt-0 px-sm-4 px-1">
Paste this in the <a
href="https://discord.com/channels/803034737261936670/803036935785414717"
target="_blank" class="text-dark font-weight-bolder">#😖»get-help</a> channel.
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="row">
<div class="col-lg-12">
<div class="row">
<div class="col-xl-6">
<div class="row pb-4">
<div class="col-md-6">
<div class="card">
<div class="card-header mx-4 p-3 text-center">
<div class="icon icon-shape icon-lg bg-gradient-primary shadow text-center border-radius-lg">
<i class="fab fa-node-js opacity-10" aria-hidden="true"></i>
</div>
</div>
<div class="card-body pt-0 p-3 text-center">
<h6 class="text-center mb-0">Node JS</h6>
<span class="text-xs">Version</span>
<hr class="horizontal dark my-3">
<h5 class="mb-0"><%- nodeVersion.split("v")[1] %></h5>
</div>
</div>
</div>
<div class="col-md-6 mt-md-0 mt-4">
<div class="card">
<div class="card-header mx-4 p-3 text-center">
<div class="icon icon-shape icon-lg bg-gradient-primary shadow text-center border-radius-lg">
<i class="fab fa-discord opacity-10" aria-hidden="true"></i>
</div>
</div>
<div class="card-body pt-0 p-3 text-center">
<h6 class="text-center mb-0">Discord.JS</h6>
<span class="text-xs">Version</span>
<hr class="horizontal dark my-3">
<h5 class="mb-0"><%- discordVersion %></h5>
</div>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<style>
.fab {
color: rgb(232, 230, 227) !important;
}
.fas {
color: rgb(232, 230, 227) !important;
}
</style>
<div class="row">
<div class="col-md-6 mb-4">
<div class="card">
<div class="card-header mx-4 p-3 text-center">
<div class="icon icon-shape icon-lg bg-gradient-primary shadow text-center border-radius-lg">
<i class="fas fa-landmark opacity-10" aria-hidden="true"></i>
</div>
</div>
<div class="card-body pt-0 p-3 text-center">
<h6 class="text-center mb-0">Discord Dashboard</h6>
<span class="text-xs">Version</span>
<hr class="horizontal dark my-3">
<h5 class="mb-0"><%- dbdVersion %></h5>
</div>
</div>
</div>
<div class="col-md-6 mt-md-0 mt-4 mb-4">
<div class="card">
<div class="card-header mx-4 p-3 text-center">
<div class="icon icon-shape icon-lg bg-gradient-primary shadow text-center border-radius-lg">
<i class="fas fa-cloud opacity-10" aria-hidden="true"></i>
</div>
</div>
<div class="card-body pt-0 p-3 text-center">
<h6 class="text-center mb-0">Theme</h6>
<span class="text-xs">Version</span>
<hr class="horizontal dark my-3">
<h5 class="mb-0"><%- themeVersion %></h5>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-lg-0 mb-4">
<div class="card">
<div class="card-header pb-0 p-3">
<div class="row">
<div class="col-6 d-flex align-items-center">
<h6 class="mb-0">Dashboard Logs</h6>
</div>
</div>
</div>
<div class="card-body p-3">
<div class="row">
<div class="col-md-12 mb-md-0 mb-4">
<div data-bs-toggle="modal" style="cursor: pointer;"
data-bs-target="#exampleModalSignUp"
class="alert alert-primary text-white font-weight-bold text-center"
role="alert">
Download Logs
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-lg-0 mb-4">
<div class="card">
<div class="card-header pb-0 p-3">
<div class="row">
<div class="col-6 d-flex align-items-center">
<h6 class="mb-0">Theme Modification</h6>
</div>
</div>
</div>
<div class="card-body p-3">
<div class="row">
<div class="col-md-12 mb-md-0 mb-4">
<% if(modified !== 0){ %>
<div class="alert alert-danger text-white font-weight-bold"
role="alert">
This theme has been modified!
</div>
<% } else{ %>
<div class="alert alert-success text-white font-weight-bold"
role="alert">
This theme has not been modified!
</div>
<% } %>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-lg-0 mb-4">
<div class="card">
<div class="card-header pb-0 p-3">
<div class="row">
<div class="col-6 d-flex align-items-center">
<h6 class="mb-0">Dashboard Information</h6>
</div>
<div style="text-align: right;" class="col-6 align-items-right">
<a style="text-align: right;">Uptime: <%- filterUptime %></a>
</div>
</div>
</div>
<div class="card-body p-3">
<div class="row">
<div class="col-md-12 mb-md-0 mb-4">
<% if (license == "opensource") { %>
<div class="alert alert-primary text-white font-weight-bold"
role="alert">
License type: <span
style="text-transform: capitalize;"><%- license %></span>
</div>
<% } else if (license == "personal") { %>
<div class="alert alert-success text-white font-weight-bold"
role="alert">
License type: <span
style="text-transform: capitalize;"><%- license %></span>
</div>
<% } else if (license == "production") { %>
<div class="alert alert-info text-white font-weight-bold" role="alert">
License type: <span
style="text-transform: capitalize;"><%- license %></span>
</div>
<% } else { %>
<div class="alert alert-warning text-white font-weight-bold"
role="alert">
License type: <span
style="text-transform: capitalize;">Unknown</span>
</div>
<% } %>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12 mt-4">
<div class="col-12 col-lg-12 mb-4">
<div class="card ">
<div class="card-header pb-0 p-3">
<div class="d-flex justify-content-between">
<h6 class="mb-2">Partial Information</h6>
</div>
</div>
<div class="table-responsive">
<table class="table align-items-center ">
<tbody>
<% onlineV.forEach(online => { %>
<%
const latest = onlineV[online.version];
const current = localV[online.name];
const newest = online.version;
%>
<tr>
<td class="w-30">
<div class="d-flex px-2 py-1 align-items-center">
<div class="ms-2">
<p class="text-xs font-weight-bold mb-0">Name:</p>
<h6 class="text-sm mb-0"
style="text-transform: capitalize;"><%- online.name %></h6>
</div>
</div>
</td>
<td>
<div class="text-center">
<p class="text-xs font-weight-bold mb-0">Version:</p>
<h6 class="text-sm mb-0"><%- current %></h6>
</div>
</td>
<td>
<div class="text-center">
<p class="text-xs font-weight-bold mb-0">Type:</p>
<h6 class="text-sm mb-0"
style="text-transform: capitalize;"><%- online.type %></h6>
</div>
</td>
<td class="align-middle text-sm">
<div class="col text-center">
<p class="text-xs font-weight-bold mb-0">Latest:</p>
<%
let update = true;
if (newest > current) update = true;
if (newest == current) update = false;
%>
<% if (update) { %>
<span class="badge bg-gradient-danger"><%- online.version %></span>
<% } else { %>
<span class="badge bg-gradient-success"><%- online.version %></span>
<% } %>
</div>
</td>
</tr>
<% }) %>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
</div>
<%- include('partials/footer.ejs') %>
</div>
</main>
</div>
<%- include('partials/scripts.ejs', {now: "debug"}) %>
</body>
</html>

View file

@ -0,0 +1,152 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now: 'error'}) %>
<%
let data
if (error !== undefined && error && config.ownerIDs?.includes(req.session?.user?.id) && !themeConfig?.error?.dbdError?.disableSecretMenu) {
data = "text/json;charset=utf-8," + encodeURIComponent(error) + "\n"
data += `${error.path}`
}
%>
<% if (error !== undefined && error && config.ownerIDs?.includes(req.session?.user?.id) && !themeConfig?.error?.dbdError?.disableSecretMenu) { %>
<script>
function copyToClipboard(text) {
if (window.clipboardData && window.clipboardData.setData) {
return window.clipboardData.setData("Text", text);
}
else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var textarea = document.createElement("textarea");
textarea.textContent = text;
textarea.style.position = "fixed";
document.body.appendChild(textarea);
textarea.select();
try {
document.execCommand("copy");
}
catch (ex) {
console.warn("Copy to clipboard failed.", ex);
prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
finally {
document.body.removeChild(textarea);
sweetalert("success", "Copied to clipboard", 3000)
}
}
}
</script>
<% } %>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<header>
<div class="page-header min-vh-85">
<%
const images = ["curved-1", "curved-2", "curved-3", "curved-4", "curved-5", "curved-6", "curved-7", "curved-8", "curved-9", "curved-10", "curved-11", "curved-12", "curved-13", "curved-14", "curved-15", "curved-16", "curved-17", "curved-18"];
const image = images[Math.floor(Math.random() * images.length)];
%>
<div style="background-image: url('/img/curved-images/<%- image %>.webp') !important; background: no-repeat; background-size: cover;"
class="position-absolute fixed-top ms-auto w-50 h-100 z-index-0 d-none d-sm-none d-md-block border-radius-section border-top-end-radius-0 border-top-start-radius-0 border-bottom-end-radius-0">
<span class="mask bg-gradient-primary ms-auto h-100 z-index-0 d-none d-sm-none d-md-block border-radius-section border-top-end-radius-0 border-top-start-radius-0 border-bottom-end-radius-0">
</span>
</div>
<div class="container">
<div class="row">
<div class="col-lg-7 d-flex">
<div class="card card-body blur text-md-start text-center px-sm-5 shadow-lg mt-sm-5 py-sm-5">
<h2 class="text-gradient text-primary mb-0"> <%- title %></h2>
<h2 class="text-dark mb-4"><%- subtitle %></h2>
<p class="lead text-dark pe-md-5 me-md-5">
<%- description %>
</p>
<% if (req.originalUrl !== "/") { %>
<div class="buttons">
<a href="/" class="btn btn-rounded bg-gradient-primary mt-4">Return to home</a>
<!-- <a target="_blank" href="https://discord.gg/CHbfcSbEgd" class="btn btn-rounded btn-outline-secondary mt-4 ms-2">Get help</a> -->
</div>
<% } %>
</div>
</div>
</div>
</div>
</div>
</header>
</main>
<%- include('partials/scripts.ejs', {now: "index"}) %>
<% if(error !== undefined && error && config.ownerIDs?.includes(req.session?.user?.id) && !themeConfig?.error?.dbdError?.disableSecretMenu) { %>
<div class="modal fade" id="exampleModalSignUp" tabindex="-1" role="dialog" aria-labelledby="exampleModalSignTitle"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-sm" role="document" style="max-width: 700px;">
<div class="modal-content">
<div class="modal-body p-0">
<div class="card card-plain">
<div class="card-body pb-3" id="form1">
<h4 class="font-weight-bolder text-primary text-gradient">Viewing Error</h4>
<pre><%= error %><br><br>Error occured at: <%- error.path %><br>Check console logs for more information</pre>
</div>
<div class="d-flex" style="justify-content: flex-end; margin-right: 20px">
<!--
<button onclick="copyToClipboard(`<%= strError %>`)" class="btn btn-primary" style="margin-left: 10px;">Copy
error
</button>
-->
</div>
</div>
</div>
</div>
</div>
</div>
<% if (error !== undefined && error && config.ownerIDs?.includes(req.session?.user?.id) && !themeConfig?.error?.dbdError?.disableSecretMenu) { %>
<script>
if (window.addEventListener) {
const konami = <%- JSON.stringify(themeConfig?.error?.dbdError?.secretMenuCombination || ["69", "82", "82", "79", "82"]) %> //this spells error
let
currentCount = 0;
let entered = [];
window.addEventListener("keydown", function (e) {
if (e.keyCode.toString() === konami[currentCount]) {
if (currentCount !== 0 && entered[currentCount - 1] !== konami[currentCount - 1]) {
// User has messed with variables in console to try show it smh
entered = [];
return currentCount = 0;
}
if (!konami[currentCount + 1]) {
// Correct code
$('#exampleModalSignUp').modal('show');
currentCount = 0;
return entered = [];
}
entered.push(e.keyCode.toString());
currentCount++;
} else {
currentCount = 0;
return entered = [];
}
}, true);
}
</script>
<% } %>
<% } %>
</body>
</html>

View file

@ -0,0 +1,32 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<script>
window.onload = function () {
if(window.location.search.startsWith("?redirect=")) window.opener.location = window.location.replace("?redirect=", "");
else window.location.href = `settings/<%= req.params.id %>`;
}
</script>
</head>
<body class="g-sidenav-show bg-gray-100">
</body>
</html>

View file

@ -0,0 +1,115 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now:'manage'}) %>
<link rel="stylesheet" href="/css/dashboard/guilds.css">
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'manage'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<%- include('partials/navbar.ejs', {now:'manage'}) %>
<div class="container-fluid py-4" style="padding-bottom: 0px !important;">
<div class="row">
<div class="col-12" id="divtable">
<div class="card mb-4">
<div class="card-header pb-0" style="text-align: center;">
<h2 class="mb-1">
Your servers
</h2>
<p class="mb-0 font-weight-bold text-sm">
Select the server you want to configure
</p>
</div>
<div class="card-body px-0 pt-0 pb-2">
<div style="margin-bottom: 35px; margin-top: 0px; text-align: center;">
<%
for(var i in req.session.guilds){ %>
<% if((req.session.guilds[i].permissions & 0x00000020) == 0x00000020){ %>
<% if(bot.guilds.cache.get(req.session.guilds[i].id)){
const guild = bot.guilds.cache.get(req.session.guilds[i].id);
let icon;
if (!guild.iconURL()) icon = themeConfig?.icons?.noGuildIcon;
else icon = guild.iconURL() + "?size=256";
%>
<a oncontextmenu="window.location='/guild/<%- guild.id %>'; return false;"
onclick="window.location='/settings/<%- guild.id %>'">
<div max="20" scale="110" perspective="400" class="_82d1"
data-guildname="<%- guild.name %>"
style="background-image: url(&quot;<%- icon %>&quot;);"></div>
</a>
<% } } } %>
</div>
<div class="_4204" style="margin-bottom: 35px; text-align: center;">
<% for (var i in req.session.guilds){ %>
<% if((req.session.guilds[i].permissions & 0x00000020) == 0x00000020){ %>
<%
if(!bot.guilds.cache.get(req.session.guilds[i].id)){
let icon = `https://cdn.discordapp.com/icons/${req.session.guilds[i].id}/${req.session.guilds[i].icon}.png`;
const friendlyName = req.session.guilds[i].name.replace('`', '');
if (!req.session.guilds[i].icon) icon = themeConfig.icons.noGuildIcon;
else icon = icon + "?size=256"
%>
<!--href="../invite?g=<%- req.session.guilds[i].id %>"-->
<a onclick="const newWindow = window.open(`/invite?g=<%- req.session.guilds[i].id %><%- config.invite?.redirectUri ? `&redirect=${config.invite.redirectUri.replace('{SERVER}', req.session.guilds[i].id)}` : '' %>`, 'Add bot to guild', 'scrollbars=no, resizable=no, status=no, location=no, toolbar=no, menubar=no, width=500, height=800'); checkRefresh()">
<div max="20" scale="110" perspective="700" class="_82d1"
data-guildname="<%- req.session.guilds[i].name %>"
style="background-image: url(&quot;<%- icon %>&quot;); filter: grayscale(1);"></div>
</a>
<% } } } %>
<script>
function checkRefresh() {
setInterval(() => {
if (newWindow.closed) location.reload();
}, 500);
}
</script>
</div>
</div>
</div>
</div>
<%- include('partials/footer.ejs') %>
</div>
</div>
<!-- Core JS Files -->
<script src="../assets/js/core/popper.min.js"></script>
<script src="../assets/js/core/bootstrap.min.js"></script>
<script src="../assets/js/plugins/perfect-scrollbar.min.js"></script>
<script src="../assets/js/plugins/smooth-scrollbar.min.js"></script>
<script>
var win = navigator.platform.indexOf('Win') > -1;
if (win && document.querySelector('#sidenav-scrollbar')) {
var options = {
damping: '0.5'
}
Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
}
</script>
<!-- Github buttons -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<!-- Control Center for Soft Dashboard: parallax effects, scripts for the example pages etc -->
<%- include('partials/scripts.ejs', {now: "guilds"}) %>
</body>
</html>

View file

@ -0,0 +1,161 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<%- include('partials/preloader.ejs', {now:'index', req: req}) %>
<% if (req.query?.guild_id) { %>
<script>
window.onload = function () {
window.onunload = refreshParent;
function refreshParent() {
window.opener.location = `/settings/<%= req.query?.guild_id %>`;
window.close();
return
};
window.opener.location = `/settings/<%= req.query?.guild_id %>`;
window.close();
}
</script>
<%- themeConfig?.customHtml %>
<% } %>
<head>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'index'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now:'index'}) %>
<!-- End Navbar -->
<div class="container-fluid py-4" style="padding-bottom: 0px !important;">
<div class="row mb-3">
<%
let i = 0;
customThemeOptions.cards.forEach((stats) => {
%>
<div class="col-xl-3 col-sm-6 mb-xl-0 mb-4">
<div class="card">
<div class="card-body p-3">
<div class="row">
<div class="col-8">
<div class="numbers">
<p class="text-sm mb-0 text-capitalize font-weight-bold">
<%- req?.locales?.index?.feeds[i] || stats.title %></p>
<h5 class="font-weight-bolder mb-0">
<%- stats.getValue %>
</h5>
</div>
<% if(stats.progressBar && stats.progressBar.enabled){ %>
<div class="progress w-150" style="margin-top: 6px;">
<div style="width: <%= stats.progressBar.getProgress %>% !important"
aria-label="Progress Bar"
class="progress-bar bg-gradient-primary"
role="progressbar" aria-valuenow="80" aria-valuemin="0"
aria-valuemax="100"></div>
</div>
<% } %>
</div>
<div class="col-4 text-end">
<div class="icon icon-shape bg-gradient-primary shadow text-center border-radius-md">
<i class="ni ni-<%= stats.icon %> text-lg opacity-10" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<% i++ }); %>
</div>
<div class="row">
<div class="col-lg-12 mb-lg-0 mb-4">
<div class="card">
<div class="card-body p-3">
<div class="row">
<div class="col-lg-6">
<div class="d-flex flex-column h-100">
<p class="mb-1 pt-2 text-bold"><%- req?.locales?.index?.card?.category %></p>
<h5 class="font-weight-bolder"><%- req?.locales?.index?.card?.title %></h5>
<p><%- req?.locales?.index?.card?.description %></p>
<p class="mb-5"><%= req?.locales?.index?.card?.footer %></p>
<% if(themeConfig.index?.card?.link?.enabled) { %>
<a class="text-body text-sm font-weight-bold mb-0 icon-move-right mt-auto"
href="<%- themeConfig.index.card.link.url %>">
<%- req?.locales?.index?.card?.link?.text %>
<i class="fas fa-arrow-right text-sm ms-1" aria-hidden="true"></i>
</a>
<% } %>
</div>
</div>
<div class="col-lg-5 ms-auto text-center mt-5 mt-lg-0">
<div class="bg-gradient-primary border-radius-lg h-100"
style="background-image: url('<%= req?.locales?.index?.card?.image %>') !important; background-repeat: no-repeat; background-size: contain; background-position: center;">
<div class="position-relative d-flex align-items-center justify-content-center h-100"
style="min-height: 210px !important;">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row mt-3">
<div class="col-lg-7 mb-lg-0 mb-4">
<div class="card z-index-2">
<div class="card-body p-3">
<h5 class="font-weight-bolder"><%- req?.locales?.index?.feeds.title || "Feeds" %></h5>
<%- include('partials/feeds.ejs', {require, admin:false}) %>
</div>
</div>
</div>
<div class="col-lg-5 mb-4">
<% if(themeConfig.index?.graph?.enabled) { %>
<div class="card z-index-2">
<div class="card-body p-3">
<h5 class="font-weight-bolder"><%- req?.locales?.index?.graph?.title %></h5>
<% if(themeConfig.index.graph.lineGraph) { %>
<div class="bg-gradient-dark border-radius-lg py-3 pe-1 mb-3">
<% } %>
<div class="chart">
<% if(!themeConfig.index.graph.lineGraph) { %>
<canvas id="chart-line" class="chart-canvas" height="300"></canvas>
<% } else { %>
<canvas id="chart-bars" class="chart-canvas" height="170"></canvas>
<% } %>
</div>
<% if(themeConfig.index.graph.lineGraph) { %>
</div>
<% } %>
</div>
</div>
</div>
</div>
<% } %>
</div>
<%- include('partials/footer.ejs') %>
</div>
</div>
</main>
</div>
<%- include('partials/scripts.ejs', {now: "index"}) %>
<!-- Graph Code !-->
<%- include('partials/graph.ejs') %>
</body>
</html>

View file

@ -0,0 +1,140 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/css/soft-ui-dashboard.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Alatsi">
<link rel="stylesheet" href="/css/nucleo-icons.css">
<link rel="stylesheet" href="/css/nucleo-svg.css">
<link rel="stylesheet" href="/css/soft-ui-dashboard.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-dark@4/dark.css">
<link rel="stylesheet" href="/css/jquery-ui.css">
<%- include('partials/colorscheme.ejs') %>
<title><%= themeConfig.websiteName %> - Loading</title>
<% if(req.cookies?.selectedTheme == "dark" || req.cookies?.selectedTheme == "auto" || !req.cookies?.selectedTheme) { %>
<link href="/css/darkMode.css" rel='stylesheet'
<% if(req?.cookies?.selectedTheme == "auto" || !req.cookies?.selectedTheme) { %>
media="(prefers-color-scheme: dark)"
<% } %>
>
<% } %>
<%- themeConfig?.customHtml %>
</head>
<body>
<style>
@media all and (min-width: 0px) and (max-width: 600px) {
.responsive {
width: calc(100vw - 30px)
}
}
@media all and (min-width: 0px) and (max-width: 590px) {
.responsive {
margin-top: calc(100vh / 4) !important;
}
}
.preloader {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100vh;
z-index: 99999999;
background-repeat: no-repeat;
background-image: none;
background-color: #FFF;
background-position: center;
}
#scroll {
height: 100% !important;
/* overflow: hidden; */
}
.progress-bar {
transition: width 1s ease !important;
}
</style>
<div class="preloader">
<div class="progress-wrapper">
<div id="progress-bar" class="progress">
<div id="progress" class="progress-bar bg-gradient-primary" role="progressbar" aria-valuenow="60"
aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>
</div>
</div>
<% if(themeConfig.preloader){ %>
<% if(themeConfig.preloader.image) { %>
<% if(!themeConfig.preloader.spinner) { %>
<div class="loader">
<img class="responsive preloader-image" src="<%- themeConfig.preloader.image %>" alt=""
style="border-radius: 5%; display: block; margin-left: auto; margin-right: auto; margin-top: calc(100vh / 5.8);">
</div>
<% } %>
<% } %>
<% if(themeConfig.preloader.text){ %>
<br>
<div style="text-align: center;<% if(themeConfig.preloader.spinner) { %>margin-top: calc(100vh / 2.7);<% } %>">
<h1 class="font-weight-bolder text-primary text-gradient"><span id="stateText">Loading...</span></h1>
<% if(themeConfig.preloader.spinner) { %>
<div style="transform: scale(3); padding-top: 30px;">
<div style="text-align: center; " class="spinner-border text-primary text-gradient"
role="status">
<span class="visually-hidden">Loading...</span>
</div>
<span id="stateText"></span>
</div>
<% } %>
</div>
<% } %>
<% } %>
</div>
<script>
<% if (req.session.user) { %>
window.onload = function () {
window.close()
}
<% } %>
let i = 0;
const reFetch = async () => {
const res = await fetch('/discord/status/');
const json = await res.json();
if (json.loading == false && json.success == true) {
location.href = '<%= `${req.session.r}?swal=logged` || `/?swal=logged` %>';
} else if (json.loading == false && json.success == false) {
location.href = '/?error=' + json.state.error;
}
if (json.loading == false && json.success == true) {
<% if (req.session.r == "/manage") { %>
location.href = '<%= `${req.session.r}?swal=logged` || `/?swal=logged` %>';
<% } else { %>
window.close();
<% } %>
document.getElementById('progress').style.width = 100 + '%';
return;
}
;
if (json.loading == true) {
document.getElementById('stateText').innerHTML = json.state.data;
document.getElementById('progress').style.width = i + '%';
if (i > 100) {
document.getElementById('stateText').innerHTML = "Finishing up...";
}
i = i + 10;
} else if (json.loading == false && json.success == false) {
location.href = '/?error=' + json.state.error;
}
;
}
setInterval(() => {
reFetch()
}, 300);
</script>
</body>
</html>

View file

@ -0,0 +1,174 @@
<!--
=========================================================
* Soft UI Design System - v1.0.5
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-design-system
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
Coded by www.creative-tim.com
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -->
<%
let logged = `<a id="login" onclick="auth()" class="btn btn-sm bg-gradient-primary btn-round mb-0 me-1 mt-2 mt-md-0">Login</a>`;
if (loggedIn) logged = '<a href="/discord/logout" class="btn btn-sm bg-gradient-primary btn-round mb-0 me-1 mt-2 mt-md-0">Logout</a>';
let title,
contentTitle,
texts;
if (defaultMaintenanceConfig !== {}) {
title = defaultMaintenanceConfig.title;
contentTitle = defaultMaintenanceConfig.contentTitle;
texts = defaultMaintenanceConfig.texts;
if (!texts) texts = [];
}
%>
<!DOCTYPE html>
<html lang="en" itemscope itemtype="http://schema.org/WebPage">
<head>
<%- include('partials/preloader.ejs', {now: 'maintenance'}) %>
<%- include('partials/colorscheme.ejs') %>
<style>
.blur.blur-rounded {
border-radius: 17px;
}
a.btn.btn-sm.bg-gradient-primary.btn-round.mb-0.me-1.mt-2.mt-md-0 {
margin-top: auto !important;
margin-bottom: auto !important;
}
</style>
<script>
function auth() {
<% if (!req.session.user) { %>
const newWindow = window.open('/discord?r=/close%3Flogin=true', 'Log in with discord', `directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width=500, height=800`);
newWindow.focus();
setInterval(() => {
if (newWindow.closed) window.location.href = `<%= req.originalUrl%>?swal=logged`
}, 500);
<% } else { %>
window.location.href = `<%= req.originalUrl%>?swal=logged`
<% } %>
}
</script>
<%- themeConfig?.customHtml %>
</head>
<body class="presentation-page">
<%- include('partials/preload.ejs') %>
<!-- Navbar -->
<div class="container position-sticky z-index-sticky top-0">
<div class="row">
<div class="col-12">
<nav class="maintenance navbar navbar-expand-lg blur blur-rounded top-0 z-index-fixed shadow position-absolute my-3 py-2 start-0 end-0 mx-4">
<div class="container-fluid px-0" style="flex-wrap: unset;">
<a class="navbar-brand font-weight-bolder ms-sm-3" href="/">
<img src="<%- themeConfig.icons.favicon %>" class="h-100"
style="border-radius: 50%; width:40px;" alt="main_logo">
<a style="margin-top: auto !important; margin-bottom: auto !important; font-weight: 800;"><%- themeConfig.websiteName %></a>
</a>
<ul class="navbar-nav navbar-nav-hover ms-lg-12 ps-lg-5 w-100" style="flex-direction: row-reverse;">
<li class="nav navbar-nav navbar-right">
<%- logged %>
</li>
</ul>
</div>
</nav>
<!-- End Navbar -->
</div>
</div>
</div>
<header class="header-2">
<%
const images = ["curved-1", "curved-2", "curved-3", "curved-4", "curved-5", "curved-6", "curved-7", "curved-8", "curved-9", "curved-10", "curved-11", "curved-12", "curved-13", "curved-14", "curved-15", "curved-16", "curved-17", "curved-18"];
const image = images[Math.floor(Math.random() * images.length)];
%>
<div id="background" class="page-header min-vh-75 relative"
style="background-image: url('/img/curved-images/<%- image %>.webp');">
<span class="mask bg-gradient-primary opacity-6"></span>
<div class="container" style="margin-top: 10vh">
<div class="row">
<div class="col-lg-7 text-center mx-auto">
<h1 class="text-white pt-3 mt-n5"><%- contentTitle %></h1>
<p class="lead text-white mt-3">
<%- texts.map(text => '<p class="text-white">' + text + '</p>').join('') %>
</p>
</div>
</div>
</div>
<div class="position-absolute w-100 z-index-1 bottom-0">
<svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 24 150 40" preserveAspectRatio="none" shape-rendering="auto">
<defs>
<path id="gentle-wave"
d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"/>
</defs>
<g class="moving-waves">
<use class="dark-wave-1" xlink:href="#gentle-wave" x="48" y="-1" fill="rgba(255,255,255,0.40"/>
<use class="dark-wave-2" xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.35)"/>
<use class="dark-wave-3" xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.25)"/>
<use class="dark-wave-4" xlink:href="#gentle-wave" x="48" y="8" fill="rgba(255,255,255,0.20)"/>
<use class="dark-wave-5" xlink:href="#gentle-wave" x="48" y="13" fill="rgba(255,255,255,0.15)"/>
<use class="dark-wave-6" xlink:href="#gentle-wave" x="48" y="16" fill="rgba(255,255,255,0.95"/>
</g>
</svg>
</div>
</div>
</header>
<% if(defaultMaintenanceConfig.infoCards){ %>
<section class="pt-4 pb-5 info-maintenance" id="count-stats" style="padding-top: 7rem !important;">
<div class="container">
<div class="row">
<div style="box-shadow: none !important;"
class="maintenance info col-lg-9 z-index-2 border-radius-xl mt-n10 mx-auto py-4 blur shadow-blur">
<div class="row">
<% let c = 1; defaultMaintenanceConfig.infoCards.forEach(card => { %>
<div class="col-md-4 position-relative">
<div class="p-3 text-center">
<% if(card.title){ %><h1 class="text-gradient text-primary">
<span><%- card.title %></span></h1>
<% } %>
<% if(card.subtitle){ %><h5 class="mt-3"><%- card.subtitle %></h5>
<% } %>
<% if(card.description){ %><p class="text-sm"><%- card.description %></p>
<% } %>
</div>
<% c++; if(c != 4) { %>
<hr class="vertical dark">
<% } %>
</div>
<% }) %>
<!-- <div class="col-md-4 position-relative">
<div class="p-3 text-center">
<h1 class="text-gradient text-primary"> <span id="state2" countTo="15">0</span>+</h1>
<h5 class="mt-3">Design Blocks</h5>
<p class="text-sm">Mix the sections, change the colors and unleash your creativity</p>
</div>
<hr class="vertical dark">
</div>
<div class="col-md-4">
<div class="p-3 text-center">
<h1 class="text-gradient text-primary" id="state3" countTo="4">0</h1>
<h5 class="mt-3">Pages</h5>
<p class="text-sm">Save 3-4 weeks of work when you use our pre-made pages for your website</p>
</div>
</div> -->
</div>
</div>
</div>
</div>
</section>
<% } %>
<!-- Core JS Files -->
<script src="./js/core/popper.min.js" type="text/javascript"></script>
<script src="./js/core/bootstrap.min.js" type="text/javascript"></script>
<script src="./js/plugins/perfect-scrollbar.min.js"></script>
<%- include('partials/scripts.ejs', {now: "maintenance"}) %>
</body>
</html>

View file

@ -0,0 +1,203 @@
<html>
<head>
<link href="/types/styles.css" rel="stylesheet"/>
<script src="/types/code.js"></script>
<link rel="stylesheet" href="/testcdn/f47b986ff7b093031dc7.css">
<link rel="stylesheet" href="/testcdn/guild.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
</head>
<body class="gui emptyContent emptyEmbed">
<button class="emojipicker">Emoji picker</button>
<hr>
<div class="slidecontainer">
<input type="range" min="1" max="100" value="50" class="slider" id="myRange">
</div>
<p>Slider is set to <b><span id="val"></span></b></p>
<hr>
<select id="channelSelect">
<optgroup label="Category Name">
<option value="54321">general</option>
<option value="12345">commands</option>
</optgroup>
</select>
<hr>
<div style="max-width: 640px;"><input type="number" value="0"></div>
<hr>
<label class="f76c">
<input type="checkbox" checked="">
<span class="_3319"></span>Checkbox
</label>
<hr>
<div class="c945" style="width: 90%; margin: 5rem;">
<h2>Message content</h2>
<hr>
<div class="a437">
<div class="e91f">
<input type="text" placeholder="Message Content">
</div>
<div class="f039" style="border-left-color: rgb(134, 194, 50);">
<div class="_221e"></div>
<div class="_8d09">
<div class="e91f">
<input type="text" placeholder="Embed Author">
</div>
</div>
<div class="_4956">
<div class="e91f">
<input type="text" placeholder="Title" value="New User! :D">
</div>
</div>
<div class="_9c2a">
<div class="e91f">
<input type="text" placeholder="Description" value="Embed Description">
</div>
</div>
<div class="_3594">
<div class="e91f">
<input type="text" placeholder="Footer Text" value="Look ma, this is a footer!">
</div>
</div>
</div>
</div>
<br>
<div><label class="f76c"><input type="checkbox" checked=""><span class="_3319"></span>Show embed</label></div>
<div style="width: 1px; height: 5px;"></div>
<div><label class="f76c"><input type="checkbox"><span class="_3319"></span>Show welcoming image</label></div>
</div>
<script>
/* -- ON SLIDER CHANGE, UPDATE PREVIEW COUNTER -- */
var slider = document.getElementById("myRange");
var output = document.getElementById("val");
output.innerHTML = slider.value;
slider.oninput = function () {
output.innerHTML = this.value;
}
/* -- -- */
function formatState(state) {
if (!state.id) {
return state.text;
}
var $state = $(
`<span>#${state.text}</span>`
);
return $state;
}
$("#channelSelect").select2({
templateResult: formatState
});
new EmojiPicker({
trigger: [
{
selector: '.emojipicker'
}
],
closeButton: true
});
</script>
<hr>
<div class="c945" style="width: 90%; margin: 5rem;">
<h2>Items</h2>
<h3>Manage your shop. Add, edit or remove items.</h3>
<hr>
<div class="_2242">
<span>
<div class="_46a4">Item</div>
</span>
<div class="_46a4 _34a1"><i class="fa fa-plus">+</i></div>
</div>
</div>
<div class="c945" style="width: 90%; margin: 5rem;">
<script>
function myFunction(type) {
var x = document.getElementById(`${type}input`).value;
document.getElementById(type).innerHTML = x;
}
function setHref(item) {
var a = document.getElementById(item); //or grab it by tagname etc
var x = document.getElementById("authorurlinput").value;
a.href = x
}
</script>
<div class="row">
<div class="col-12 col-sm-6">
<h2>Currency</h2>
<h3>Set a custom currency symbol.</h3>
<hr>
<div>
<div class="row" style="display: flex;">
<div class="col-sm" style="width: 30%;">
<p>Basic Settings</p>
<div style="max-width: 270px;">
<input id="titleinput" style="margin-top: 10px;" type="text" placeholder="Title"
onkeyup="myFunction('title')">
<input id="descriptioninput" style="margin-top: 10px;" type="text" placeholder="Description"
onkeyup="myFunction('description')">
<input id="" style="margin-top: 10px;" type="text" placeholder="Url">
</div>
<br>
<label class="f76c">
<input type="checkbox">
<span class="_3319">
</span>Wallet enabled
</label>
</div>
<div class="col-sm" style="width: 30%;">
<p>Author settings</p>
<div style="max-width: 270px;">
<input id="authorinput" style="margin-top: 10px;" type="text" placeholder="Author Name"
onkeyup="myFunction('author')">
<input id="authorurlinput" style="margin-top: 10px;" type="text" placeholder="Author Link"
onkeyup="setHref('author')">
<input id="" style="margin-top: 10px;" type="text" placeholder="Author Icon">
</div>
<br>
<label class="f76c">
<input type="checkbox">
<span class="_3319">
</span>Wallet enabled
</label>
</div>
<div class="co-sm" style="width: 40%;">
<div class="">
<div class="bce7">
<div class="fcd5">
<div class="_25cb" style="font-size: 1.3rem;"><a id="author"></a></div>
<div id="title" class="_25cb">Server's store</div>
<div id="description" class="_03aa">You have <b>10$</b> in your bank.</div>
</div>
</div>
</div>
</div>
</div>
<hr>
<div class="row" style="display: flex;">
<div class="col-sm" style="width: 30%;">
<p>Fields</p>
<div style="max-width: 270px;">
<input style="margin-top: 10px;" type="text" placeholder="Title">
<input style="margin-top: 10px;" type="text" placeholder="Description">
<input style="margin-top: 10px;" type="text" placeholder="Url">
</div>
<br>
<label class="f76c">
<input type="checkbox">
<span class="_3319">
</span>Wallet enabled
</label>
</div>
</div>
</div>
</div>
</div>
</div>
<%- include('partials/scripts.ejs') %>
</body>
</html>

View file

@ -0,0 +1,187 @@
<%
let currentScheme = themeConfig.colorScheme,
currentCode = "310deg, #7928CA 0%, #FF0080 100%",
colone,
coltwo;
if (currentScheme == "pink") {
currentCode = "310deg, #7928CA 0%, #FF0080 100%";
colone = "#FF0080";
coltwo = "#7928CA";
}
if (currentScheme == "red") {
currentCode = "310deg, #ea0606 0%, #ff667c 100%";
colone = "#ea0606";
coltwo = "#ff667c";
}
if (currentScheme == "green") {
currentCode = "310deg, #17ad37 0%, #98ec2d 100%";
colone = "#17ad37";
coltwo = "#98ec2d";
}
if (currentScheme == "yellow") {
currentCode = "310deg, #f53939 0%, #fbcf33 100%";
colone = "#f53939";
coltwo = "#fbcf33";
}
if (currentScheme == "dark") {
currentCode = "310deg, #141727 0%, #3A416F 100%";
colone = "#141727";
coltwo = "#3A416F";
}
if (currentScheme == "blue") {
currentCode = "310deg, #2152ff 0%, #21d4fd 100%";
colone = "#2152ff";
coltwo = "#21d4fd";
}
if (currentScheme == "custom") {
if (!themeConfig.themeColors || !themeConfig.themeColors.primaryColor || !themeConfig.themeColors.secondaryColor) {
currentCode = "310deg, #7928CA 0%, #FF0080 100%";
colone = "#FF0080";
coltwo = "#7928CA";
} else {
currentCode = "310deg, " + themeConfig.themeColors.primaryColor + " 0%, " + themeConfig.themeColors.secondaryColor + " 100%";
colone = themeConfig.themeColors.primaryColor;
coltwo = themeConfig.themeColors.secondaryColor;
}
}
%>
<meta name="theme-color" content="<%- colone %>">
<style>
:root {
--gradient: <%= currentCode%> !important;
--colone: <%= colone%> !important;
--coltwo: <%= coltwo%> !important;
}
input:checked + .tslider {
background: linear-gradient(var(--gradient)) !important;
}
option {
color: var(--colone);
}
option:hover {
background-color: none !important;
}
.fixed-plugin .btn.bg-gradient-primary:not(:disabled):not(.disabled):not(.active) {
border: 1px solid var(--colone) !important;
color: var(--colone) !important;
}
.card.card-background.card-background-mask-primary::after, .swal2-popup.swal2-toast {
background-image: linear-gradient(var(--gradient)) !important;
}
.form-switch .form-check-input:checked {
border-color: var(--colone) !important;
background-image: linear-gradient(var(--gradient)) !important;
}
.swal2-title {
color: #ebdddd !important;
-webkit-font-smoothing: antialiased;
}
.swal2-success-fix, .swal2-success-circular-line-left, .swal2-success-circular-line-right {
background: none !important;
}
.swal2-success-ring {
color: rgba(0, 0, 0, 0) !important;
border: rgba(0, 0, 0, 0) !important;
}
.swal2-icon.swal2-error, .swal2-icon.swal2-success {
border-color: #f9f9f9 !important;
color: #f9f9f9 !important;
}
.swal2-x-mark-line-right, .swal2-x-mark-line-left, .swal2-success-line-long, .swal2-success-line-tip {
background-color: #f9f9f9 !important;
}
.swal2-success-fix {
color: white !important;
}
.swal2-icon.swal2-success [class^=swal2-success-line] {
display: block;
position: absolute;
z-index: 2;
height: 0.3125em;
border-radius: 0.125em;
background-color: var(#f9f9f9) !important;
}
.bg-gradient-primary {
background-image: linear-gradient(var(--gradient));
}
.card.card-background.card-background-mask-primary:after {
background-image: linear-gradient(var(--gradient));
opacity: .85;
}
.navbar-vertical .navbar-nav > .nav-item .nav-link.active .icon {
background-image: linear-gradient(var(--gradient)) !important;
}
.text-gradient.text-primary {
background-image: linear-gradient(var(--gradient));
}
.btn-outline-primary {
color: var(--colone);
border-color: var(--colone);
}
.nav-tabs .nav-link.active {
background-size: 100% 4px;
border-bottom: 4px solid var(--colone) !important;
color: var(--colone) !important;
}
.nav-tabs .nav-link:hover {
border: 0;
border-bottom: 0px solid;
}
.pagination.pagination-primary .page-item.active > .page-link,
.pagination.pagination-primary .page-item.active > .page-link:focus,
.pagination.pagination-primary .page-item.active > .page-link:hover {
background-image: linear-gradient(var(--gradient));
border: none;
}
.sidenav[data-color="primary"] .navbar-nav > .nav-item > .nav-link.active .icon {
background-image: linear-gradient(var(--gradient));
}
.blur-section.blur-gradient-primary {
background-image: linear-gradient(var(--gradient));
}
.blur-section.blur-gradient-primary {
background-image: linear-gradient(var(--gradient));
}
.form-control:focus {
box-shadow: var(--colone) 0px 0px 0px 2px !important;
}
.input-group .form-control:focus {
border-color: var(--colone) !important;
}
.themecol {
color: var(--colone) !important;
}
.input-group .form-control:focus {
border-left-color: var(--colone) !important;
border-right-color: var(--colone) !important;
}
</style>

View file

@ -0,0 +1,118 @@
<div class="card-body px-0 pt-0 pb-2">
<div class="table-responsive p-0">
<%
let feeds = [];
const db = require('quick.db');
if (db.get('feeds.three')) {
const fd = db.get('feeds.three');
const fdata = {
color: fd.color,
description: fd.description,
icon: fd.icon,
published: fd.published,
diff: fd.diff,
feedNum: 3
}
feeds.push(fdata);
}
if (db.get('feeds.two')) {
const fd = db.get('feeds.two');
const fdata = {
color: fd.color,
description: fd.description,
icon: fd.icon,
published: fd.published,
diff: fd.diff,
feedNum: 2
}
feeds.push(fdata);
}
if (db.get('feeds.one')) {
const fd = db.get('feeds.one');
const fdata = {
color: fd.color,
description: fd.description,
published: fd.published,
icon: fd.icon,
diff: fd.diff,
feedNum: 1
}
feeds.push(fdata);
}
feeds.forEach(feed => {
var delta = Math.abs(Date.now() - feed.published) / 1000;
// calculate (and subtract) whole days
var days = Math.floor(delta / 86400);
delta -= days * 86400;
// calculate (and subtract) whole hours
var hours = Math.floor(delta / 3600) % 24;
delta -= hours * 3600;
// calculate (and subtract) whole minutes
var minutes = Math.floor(delta / 60) % 60;
delta -= minutes * 60;
// what's left is seconds
var seconds = delta % 60; // in theory the modulus is not required
let dateString = `loading`;
//stupid variable names but yeah :sweat_smile:
if (seconds < 2) secsingle = "second";
else secsingle = "seconds";
if (minutes < 2) minsingle = "minute";
else minsingle = "minutes";
if (hours < 2) hrsingle = "hour";
else hrsingle = "hours";
if (days < 2) daysingle = "day";
else daysingle = "days";
if (minutes < 1) dateString = `${Math.round(seconds)} ${secsingle} ago`;
else if (hours < 1) dateString = `${minutes} ${minsingle} ago`;
else if (days < 1) dateString = `${hours} ${hrsingle} ago`;
else dateString = `${days} ${daysingle} ago`;
let faString = "fas fa-";
if (feed.diff) faString = "fab fa-";
%>
<div>
<div class="alert alert-<%- feed.color %> text-white font-weight-bold" role="alert"
style="display: flex; margin-top: 20px;">
<div class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center gray-icon-bg"
style="margin: auto 0px; width: 30px !important; height: 30px !important;">
<i class="<%- faString %><%- feed.icon %> invert-img" style="font-size: 80%; color: black;"></i>
</div>
<span style="margin: auto 0px"><%- feed.description %></span>
<span class="tagnamecolor-date"
style="color:rgb(155, 148, 148); margin: auto 0px; font-size: 75%; flex: 1; text-align: right; white-space: nowrap;">
<%- dateString %>
</span>
<% if(admin) { %>
<div class="ms-auto text-end">
<a id="deleteFeed<%- feed.feedNum %>" class="btn btn-link text-text-gradient px-3 mb-0"
style="color:white;" href="javascript:"><i class="far fa-trash-alt me-2"></i>Delete</a>
</div>
<% } %>
</div>
</div>
<%
})
if(!feeds[0]) {
%>
<div>
<span class="tagnamecolor-date" style="color:rgb(155, 148, 148); white-space: nowrap;">
There are no feeds.
</span>
</div>
<%
}
%>
</div>
</div>

View file

@ -0,0 +1,16 @@
<footer class="footer">
<div class="container-fluid">
<div class="row align-items-center justify-content-lg-between">
<div class="col-lg-6 mb-lg-0 mb-4">
<div class="copyright text-center text-sm text-muted text-lg-start">
© <%= new Date().getFullYear() %>
<% if(themeConfig?.footer?.replaceDefault === true) { %>
<a href="/credits" class="font-weight-bold" target="_blank">Assistants</a><% if(themeConfig?.footer?.text?.length) { %> | <%= themeConfig?.footer?.text %> <% } %>
<% } else { %>
Made with <i class="fa fa-heart"></i> by <a href="/credits" class="font-weight-bold" target="_blank">PlainDevelopment</a> and <a href="/credits" class="font-weight-bold" target="_blank">iMidnight</a>
<% } %>
</div>
</div>
</div>
</div>
</footer>

View file

@ -0,0 +1,226 @@
<%
const data = customThemeOptions.graph;
let currentScheme = themeConfig.colorScheme;
let colone;
let coltwo;
let gradone;
let gradtwo;
function hexToRgba(hex, alpha) {
var r = parseInt(hex.substring(1,3), 16);
var g = parseInt(hex.substring(3,5), 16);
var b = parseInt(hex.substring(5,7), 16);
return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alpha + ')';
}
if (currentScheme == "blue") {
colone = "#21d4fd";
coltwo = "#2152ff";
gradone = "rgba(33,212,253,0.1)";
gradtwo = "rgba(33,82,255,0.1)";
}
if (currentScheme == "pink") {
colone = "#FF0080";
coltwo = "#7928CA";
gradone = "rgba(255,0,128,0.1)";
gradtwo = "rgba(121,40,202,0.1)";
}
if (currentScheme == "red") {
colone = "#ea0606";
coltwo = "#ff667c";
gradone = "rgba(255,102,124,0.1)";
gradtwo = "rgba(234,6,6,0.1)";
}
if (currentScheme == "green") {
colone = "#17ad37";
coltwo = "#98ec2d";
gradone = "rgba(23,173,55,0.1)";
gradtwo = "rgba(152,236,45,0.1)";
}
if (currentScheme == "yellow") {
colone = "#f53939";
coltwo = "#fbcf33";
gradone = "rgba(245,57,57,0.1)";
gradtwo = "rgba(251,207,51,0.1)";
}
if (currentScheme == "dark") {
colone = "#141727";
coltwo = "#3A416F";
gradone = "rgba(20,23,39,0.1)";
gradtwo = "rgba(58,65,111,0.1)";
}
if (currentScheme == "custom") {
if (!themeConfig.themeColors || !themeConfig.themeColors.primaryColor || !themeConfig.themeColors.secondaryColor) {
currentCode = "310deg, #7928CA 0%, #FF0080 100%";
colone = "#FF0080";
coltwo = "#7928CA";
gradone = "rgba(255,0,128,0.1)";
gradtwo = "rgba(121,40,202,0.1)";
} else {
currentCode = "310deg, " + themeConfig.themeColors.primaryColor + " 0%, " + themeConfig.themeColors.secondaryColor + " 100%";
colone = themeConfig.themeColors.primaryColor;
coltwo = themeConfig.themeColors.secondaryColor;
gradone = hexToRgba(themeConfig.themeColors.primaryColor, 0.1);
gradtwo = hexToRgba(themeConfig.themeColors.secondaryColor, 0.1);
}
}
%>
<script>
<%
let graphType = "chart-bars"; // line-graph
if (!themeConfig.index.graph.lineGraph) graphType = "chart-line";
%>
let ctx = document.getElementById("<%- graphType %>").getContext("2d"); // line graph
<% if(graphType === "chart-bars") { %>
new Chart(ctx, {
type: "bar",
data: {
labels: <%- JSON.stringify(customThemeOptions.graph.labels) %>,
datasets: [{
label: "<%= themeConfig.index.graph.tag %>",
tension: 0.4,
borderWidth: 0,
borderRadius: 4,
borderSkipped: false,
backgroundColor: "#fff",
data: <%- JSON.stringify(data.values) %>,
maxBarThickness: 6
},],
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false,
}
},
interaction: {
intersect: false,
mode: 'index',
},
scales: {
y: {
grid: {
drawBorder: false,
display: false,
drawOnChartArea: false,
drawTicks: false,
},
ticks: {
suggestedMin: 0,
suggestedMax: 500,
beginAtZero: true,
padding: 15,
font: {
size: 14,
family: "Open Sans",
style: 'normal',
lineHeight: 2
},
color: "#fff"
},
},
x: {
grid: {
drawBorder: false,
display: false,
drawOnChartArea: false,
drawTicks: false
},
ticks: {
display: false
},
},
},
},
});
<% } else { %>
var gradientStroke1 = ctx.createLinearGradient(0, 230, 0, 50);
gradientStroke1.addColorStop(1, '<%= colone %>');
gradientStroke1.addColorStop(0.1, '<%= gradone %>');
gradientStroke1.addColorStop(0, '<%= gradtwo %>'); //purple colors
new Chart(ctx, {
type: "line",
data: {
labels: <%- JSON.stringify(customThemeOptions.graph.labels) %>,
datasets: [{
label: "<%= themeConfig.index.graph.tag %>",
tension: 0.4,
borderWidth: 0,
pointRadius: 0,
borderColor: "<%- colone %>",
borderWidth: 3,
backgroundColor: gradientStroke1,
fill: true,
data: <%- JSON.stringify(data.values) %>,
maxBarThickness: 6
},
],
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false,
}
},
interaction: {
intersect: false,
mode: 'index',
},
scales: {
y: {
suggestedMin: 0,
suggestedMax: <%- themeConfig.index.graph.max %>,
grid: {
drawBorder: false,
display: true,
drawOnChartArea: true,
drawTicks: false,
borderDash: [5, 5]
},
ticks: {
display: true,
padding: 10,
color: '#b2b9bf',
font: {
size: 11,
family: "Open Sans",
style: 'normal',
lineHeight: 2
},
}
},
x: {
grid: {
drawBorder: false,
display: false,
drawOnChartArea: false,
drawTicks: false,
borderDash: [5, 5]
},
ticks: {
display: true,
color: '#b2b9bf',
padding: 20,
font: {
size: 11,
family: "Open Sans",
style: 'normal',
lineHeight: 2
},
}
},
},
},
});
<% } %>
</script>

View file

@ -0,0 +1,22 @@
<div id="bigIconsList" style="display: none;">
<% icons.forEach(async(icon) => { %>
<div style="text-align:center;width:15%;float: left;padding-right:10px;">
<div class="icon-shape icon-sm shadow border-radius-md bg-white gray-icon-bg" style="margin: 0 auto">
<i class="fas fa-<%- icon %> feeds-icon"></i>
</div>
<span class="tagnamecolor feeds-desc">
<%- icon %>
</span>
</div>
<% });
otherIcons.forEach(async(icon) => { %>
<div style="text-align:center;width:15%;float: left;padding-right:10px;">
<div class="icon-shape icon-sm shadow border-radius-md bg-white gray-icon-bg" style="margin: 0 auto">
<i class="fab fa-<%- icon %> feeds-icon"></i>
</div>
<span class="tagnamecolor feeds-desc">
<%- icon %>
</span>
</div>
<% }); %>
</div>

View file

@ -0,0 +1,25 @@
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Meta Information -->
<% if(themeConfig?.meta?.author){ %><meta name="author" content="<%- themeConfig.meta.author %>"><% } %>
<% if(themeConfig?.meta?.owner){ %><meta name="owner" content="<%- themeConfig.meta.owner %>"><% } %>
<% if(themeConfig?.meta?.ogLocale){ %><meta property="og:locale" content="<%- themeConfig.meta.ogLocale %>"><% } %>
<% if(themeConfig?.meta?.ogTitle){ %><meta property="og:title" content="<%- themeConfig.meta.ogTitle %>"><% } %>
<% if(themeConfig?.meta?.twitterTitle){ %><meta property="twitter:title" content="<%- themeConfig.meta.twitterTitle %>"><% } %>
<% if(themeConfig?.meta?.description){ %><meta name="description" content="<%- themeConfig.meta.description %>"><% } %>
<% if(themeConfig?.meta?.ogDescription){ %><meta property="og:description" content="<%- themeConfig.meta.ogDescription %>"><% } %>
<% if(themeConfig?.meta?.twitterDescription){ %><meta property="twitter:description" content="<%- themeConfig.meta.twitterDescription %>"><% } %>
<% if(themeConfig?.meta?.twitterDomain){ %><meta property="twitter:domain" content="<%- themeConfig.meta.twitterDomain %>"><% } %>
<% if(themeConfig?.meta?.twitterUrl){ %><meta property="twitter:url" content="<%- themeConfig.meta.twitterUrl %>"><% } %>
<% if(themeConfig?.meta?.twitterCard){ %><meta property="twitter:card" content="<%- themeConfig.meta.twitterCard %>"><% } %>
<% if(themeConfig?.meta?.twitterSite){ %><meta property="twitter:site" content="<%- themeConfig.meta.twitterSite %>"><% } %>
<% if(themeConfig?.meta?.twitterSiteId){ %><meta property="twitter:site:id" content="<%- themeConfig.meta.twitterSiteId %>"><% } %>
<% if(themeConfig?.meta?.twitterCreator){ %><meta property="twitter:creator" content="<%- themeConfig.meta.twitterCreator %>"><% } %>
<% if(themeConfig?.meta?.twitterCreatorId){ %><meta property="twitter:creator:id" content="<%- themeConfig.meta.twitterCreatorId %>"><% } %>
<% if(themeConfig?.meta?.twitterImage){ %><meta property="twitter:image" content="<%- themeConfig.meta.twitterImage %>"><% } %>
<% if(themeConfig?.meta?.ogImage){ %><meta property="og:image" itemprop="image" content="<%- themeConfig.meta.ogImage %>"><% } %>
<% if(themeConfig?.meta?.ogType){ %><meta property="og:type" content="<%- themeConfig.meta.ogType %>"><% } %>
<% if(themeConfig?.meta?.ogUrl){ %><meta property="og:url" content="<%- themeConfig.meta.ogUrl %>"><% } %>
<% if(themeConfig?.meta?.ogSiteName){ %><meta property="og:site_name" content="<%- themeConfig.meta.ogSiteName %>"><% } %>
<!-- End of Meta Information -->

View file

@ -0,0 +1,64 @@
<%
let currentPage = "Dashboard";
if (now) {
const pages = req?.locales?.partials?.navbar?.pages;
if (now === 'manage') currentPage = pages?.manage || "Manage Guilds";
if (now === 'settings') currentPage = pages?.settings || "Manage Guilds";
if (now === 'commands') currentPage = pages?.commands || "Commands";
if (now === 'pp') currentPage = pages?.pp || "Privacy Policy";
if (now === 'admin') currentPage = pages?.admin || "Admin Panel";
if (now === 'error') currentPage = pages?.error || "Error";
if (now === 'credits') currentPage = pages?.credits || "Credits";
if (now === 'debug') currentPage = pages?.debug || "Debug";
if (now === 'leaderboard') currentPage = pages?.leaderboard || "Leaderboard";
if (now === 'profile') currentPage = pages?.profile || "Profile";
if (now === 'maintenance') currentPage = pages?.maintenance || "Under Maintenance";
if (now === 'shards') currentPage = pages?.shards || "Shards";
}
%>
<!-- Navbar -->
<nav style="padding-bottom: 0;" class="navbar navbar-main navbar-expand-lg px-0 mx-4 shadow-none border-radius-xl"
id="navbarBlur" navbar-scroll="false">
<div class="container-fluid py-1 px-3">
<nav aria-label="breadcrumb">
<ol class="breadcrumb bg-transparent mb-0 pb-0 pt-1 px-0 me-sm-6 me-5">
<li class="breadcrumb-item text-sm"><a class="opacity-9 text-dark" href="/"><%- req?.locales?.partials?.navbar?.home || "Home" %></a></li>
<li class="breadcrumb-item text-sm text-dark active" aria-current="page"><%- currentPage %></li>
</ol>
<h6 class="font-weight-bolder mb-0"><%- currentPage %></h6>
</nav>
<div class="collapse navbar-collapse mt-sm-0 mt-2 me-md-0 me-sm-4" id="navbar">
<div class="ms-md-auto pe-md-3 d-flex align-items-center">
</div>
<ul class="navbar-nav justify-content-end">
<li class="nav-item d-xl-none ps-3 d-flex align-items-center">
<a onclick="toggleSidenav()" style="cursor: pointer;" class="nav-link text-body p-0"
id="iconNavbarSidenav">
<div class="sidenav-toggler-inner">
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
</div>
</a>
</li>
<!--<% if(req.session.user) { %>
<li class="nav-item dropdown pe-2 d-flex align-items-center">
<a href="javascript:;" class="avatar rounded-circle" style="margin-top: 5px;">
<img alt="Image placeholder"
src="<%= req.session.user.avatarURL || "https://w5fc.org/wp-content/uploads/2021/05/s9biyhs4lix61.jpg" %>">
</a>
</li>
<% } else { %>
<li class="nav-item dropdown pe-2 d-flex align-items-center">
<a onclick="const newWindow = window.open('/discord?r=/close%3Flogin=true', 'Log in with discord', `scrollbars=no, resizable=no, status=no, location=no, toolbar=no, menubar=no, width=500, height=800`);" class="nav-link text-body p-0">
<i class="fa fa-user me-sm-1" aria-hidden="true"></i>
<span class="d-sm-inline d-none">Sign In</span>
</a>
</li>
<% } %>-->
</ul>
</div>
</div>
</nav>
<!-- End Navbar -->

View file

@ -0,0 +1,29 @@
<div class="row">
<div class="col-md-4">
<div class="modal fade" id="modal-default" tabindex="-1" role="dialog" aria-labelledby="modal-default"
aria-hidden="true">
<div class="modal-dialog modal- modal-dialog-centered modal-" role="document">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title" id="modal-title-default"><%- title %></h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"
onclick="resetURL()">
</button>
</div>
<div class="modal-body">
<h5><%- subtitle %></h5>
<% errors.forEach(e=>{ %>
<%= e.split('%is%')[0] %>: <%= e.split('%is%')[1] %> <!--(id: <%= e.split('%is%')[2] %>)-->
<br>
<% }) %>
</div>
<div class="modal-footer">
<button type="button" class="btn bg-gradient-primary" data-bs-dismiss="modal"
onclick="resetURL()">Close
</button>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,67 @@
<style>
@media all and (min-width: 0px) and (max-width: 600px) {
.responsive {
width: calc(100vw - 30px)
}
}
@media all and (min-width: 0px) and (max-width: 590px) {
.responsive {
margin-top: calc(100vh / 4) !important;
}
}
.preloader {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100vh;
z-index: 99999999;
background-repeat: no-repeat;
background-image: none;
background-color: #FFF;
background-position: center;
}
#scroll {
height: 100% !important;
/* overflow: hidden; */
}
</style>
<div class="preloader">
<div class="progress-wrapper">
<div id="progress-bar" class="progress">
<div id="progress" class="progress-bar bg-gradient-primary" role="progressbar" aria-valuenow="60"
aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>
</div>
</div>
<% if(themeConfig.preloader){ %>
<% if(themeConfig.preloader.image) { %>
<% if(!themeConfig.preloader.spinner) { %>
<div class="loader">
<img class="responsive preloader-image" src="<%- themeConfig.preloader.image %>" alt=""
style="border-radius: 5%; display: block; margin-left: auto; margin-right: auto; margin-top: calc(100vh / 5.8);">
</div>
<% } %>
<% } %>
<% if(themeConfig.preloader.text){ %>
<br>
<div style="text-align: center;<% if(themeConfig.preloader.spinner) { %>margin-top: calc(100vh / 2.7);<% } %>">
<h1 class="font-weight-bolder text-primary text-gradient"><%- req?.locales?.partials?.preloader?.text %></h1>
<% if(themeConfig.preloader.spinner) { %>
<div style="transform: scale(3); padding-top: 30px;">
<div style="text-align: center; " class="spinner-border text-primary text-gradient"
role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
<% } %>
</div>
<% } %>
<% } %>
</div>

View file

@ -0,0 +1,194 @@
<%
let currentPage = "Dashboard";
if (now) {
const pages = req?.locales?.partials?.navbar?.pages;
if (now === 'manage') currentPage = pages?.manage || "Manage Guilds";
if (now === 'settings') currentPage = pages?.settings || "Manage Guilds";
if (now === 'commands') currentPage = pages?.commands || "Commands";
if (now === 'pp') currentPage = pages?.pp || "Privacy Policy";
if (now === 'admin') currentPage = pages?.admin || "Admin Panel";
if (now === 'error') currentPage = pages?.error || "Error";
if (now === 'credits') currentPage = pages?.credits || "Credits";
if (now === 'debug') currentPage = pages?.debug || "Debug";
if (now === 'leaderboard') currentPage = pages?.leaderboard || "Leaderboard";
if (now === 'profile') currentPage = pages?.profile || "Profile";
if (now === 'maintenance') currentPage = pages?.maintenance || "Under Maintenance";
}
%>
<%- include('meta.ejs', {now: now}) %>
<!-- Page Information -->
<link rel="icon" type="image/png" href="<%= themeConfig.icons.favicon %>">
<title>
<%= themeConfig.websiteName %> - <%- currentPage %>
</title>
<!-- End of Page Information -->
<!-- Stylesheets -->
<% if(themeConfig.preloader.image) { %>
<link rel="prefetch" href="<%- themeConfig.preloader.image %>"/><% } %>
<link rel="preload" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://fonts.googleapis.com/css?family=Alatsi" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/nucleo-icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/nucleo-svg.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/soft-ui-dashboard.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-dark@4/dark.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<link rel="preload" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/jquery-ui.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Alatsi">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/nucleo-icons.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/nucleo-svg.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/soft-ui-dashboard.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@sweetalert2/theme-dark@4/dark.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/css/jquery-ui.min.css">
</noscript>
<% // By default system theme is loaded, unless a user has changed it. Probably could be optimised further but :shrug:
if(req.cookies?.selectedTheme == "dark" || req.cookies?.selectedTheme == "auto" || !req.cookies?.selectedTheme) { %>
<link href="/css/darkMode.css" rel='stylesheet' <% if(req?.cookies?.selectedTheme == "auto" || !req.cookies?.selectedTheme) { %> media="(prefers-color-scheme: dark)"<% } %>>
<% if (themeConfig?.icons?.sidebar?.darkUrl) { %>
<style <% if(req?.cookies?.selectedTheme == "auto" || !req.cookies?.selectedTheme) { %> media="(prefers-color-scheme: dark)"<% } %>>
.navbar-brand-img {
content:url("<%= themeConfig.icons.sidebar.darkUrl %>") !important;
}
</style>
<% } %>
<% } %>
<!-- End of Stylesheets -->
<!-- Scripts -->
<script src="/js/jquery.min.js"></script>
<script src="./js/jquery-ui.js"></script>
<%- include('colorscheme.ejs') %>
<script>
$(document).ready(function () {
const params = new URLSearchParams(window.location.search);
const swal = params.get('swal');
const result = params.get('result');
if (swal) {
if (swal === "savedSuccess") sweetalert('success', '<%= themeConfig?.sweetalert?.success?.settingsSave || 'Successfully saved setttings!' %>', 3000);
if (swal === "savedError") sweetalert('error', '<%= themeConfig?.sweetalert?.error?.settingsSave || 'Failed to save setttings!' %>', 3000);
<% if (req.session.user) { %>if (swal === "logged") sweetalert('success', '<%= themeConfig?.sweetalert?.success?.login || 'Successfully logged in!' %>', 3000); <% } %>
<% if (!req.session.user) { %>if (swal === "loggedout") sweetalert('success', '<%= themeConfig?.sweetalert?.success?.logout || 'Successfully logged out!' %>', 3000); <% } %>
params.delete('swal');
}
if (result) {
if (result === "true") sweetalert('success', 'Checked for updates!', 3000);
if (result === "false") sweetalert('error', 'Failed to check for updates!', 3000);
params.delete('result');
}
window.history.replaceState({}, document.title, `${window.location.pathname}${params.toString() ? "?" + params.toString() : ""}`);
});
var win = navigator.platform.indexOf('Win') > -1;
if (win && document.querySelector('#sidenav-scrollbar')) {
var options = {
damping: '0.5'
}
Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
}
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function deleteCookie(name) {
document.cookie = name + '=; Max-Age=0'
}
let prog_width = 0;
let disabled = false;
document.onreadystatechange = function (e) {
if (disabled) return;
if (document.readyState === "interactive") {
var all = document.getElementsByTagName("*");
for (var i = 0, max = all.length; i < max; i++) {
checkProgress(all[i]);
}
}
}
function checkProgress(ele) {
var all = document.getElementsByTagName("*");
var per_inc = 100 / all.length;
if (disabled) return;
prog_width = prog_width + per_inc;
$("#progress").width(`${Math.floor(prog_width)}%`);
if (prog_width >= 100 && !disabled) {
disabled = true;
$(".preloader").fadeOut("slow")
//() => { $(".preloader").remove() }
$("#scroll").css('overflow', 'auto');
} else {
checkProgress(ele);
}
}
<% if (req.session.user) { %>
let userID = '<%- req.session.user.id %>';
let userTag = '<%- req.session.user.tag %>';
<% } %>
var win = navigator.platform.indexOf('Win') > -1;
if (win && document.querySelector('#sidenav-scrollbar')) {
var options = {
damping: '0.5'
}
Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
</script>
<!-- End of Scripts -->
<% if(now !== "maintenance" && now !== "error") { %>
<%- include('theme.ejs') %>
<% } %>

View file

@ -0,0 +1,72 @@
<% if (req.cookies?.premiumCard == "false" || !req.cookies?.premiumCard) { %>
<div class="rightCircle"><i class="fas fa-times"></i></div>
<div class="premium-card card card-background shadow-none card-background-mask-primary" id="sidenavCard">
<div class="full-background"
style="background-image: url('<%- themeConfig.premium.card.bgImage %>'); margin-bottom: 0 !important;"></div>
<div class="card-body text-start p-3 w-100">
<div class="docs-info">
<h6 class="hide-click text-white up mb-0"><%- req?.locales?.partials?.premium?.title %></h6>
<p class="hide-click text-xs font-weight-bold"><%- req?.locales?.partials?.premium?.description %></p>
<a style="margin-bottom: 0 !important;" class="premium-button btn bg-gradient-primary mt-4 w-100"
target="_blank"
href="<%- themeConfig.premium.card.button.url %>"
type="button"><%- req?.locales?.partials?.premium?.buttonText %></a>
</div>
</div>
</div>
<% } %>
<script>
$('.rightCircle').on('click', function () {
var date = new Date();
date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
document.cookie = "premiumCard=true" + expires + "; path=/";
$(".sidenav-footer").fadeOut("slow");
});
</script>
<style>
.margin-top-0 {
margin-top: 0 !important;
}
.sidenav-footer {
width: 90%;
}
.rightCircle {
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
user-select: none;
position: absolute;
right: -5px;
top: -5px;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #fff;
box-shadow: 0 0 0 1px #fff;
z-index: 100;
}
.sidebarPremium {
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
user-select: none;
position: absolute;
right: 10px;
width: 20px;
height: 7px;
border-radius: 50%;
background-color: transparent;
z-index: 100;
}
</style>

View file

@ -0,0 +1,172 @@
<!-- Core JS Files -->
<script src="https://cdn.jsdelivr.net/npm/jquery.skeleton.loader@1.2.0/dist/jquery.scheletrone.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js"
integrity="sha256-eTyxS0rkjpLEo16uXTS0uVCS4815lc40K2iVpWDvdSY=" crossorigin="anonymous"></script>
<script>
function login(url) {
<% if (!req.session.user) { %>
const newWindow = window.open('/discord', 'Log in with discord', `directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no, width=500, height=800`);
newWindow.focus();
setInterval(() => {
if (newWindow.closed) window.location.href = `${url}?swal=logged`;
}, 500);
<% } else { %>
window.location.href = `${url}?swal=alreadyloggedin`;
<% } %>
}
$('.account').click(function (e) {
e.preventDefault();
login(e.currentTarget.href)
});
$('.theme').click(function () {
$('.theme').removeClass('active');
$(this).addClass('active');
const theme = $(this).attr('data-theme');
setCookie('selectedTheme', theme, 365);
location.reload();
});
const sidenav = document.getElementById('sidenav-main');
function hideSidenav() {
body.classList.remove(className);
setTimeout(function () {
sidenav.classList.remove('bg-white');
}, 100);
sidenav.classList.remove('bg-transparent');
}
function showSidenav() {
try {
body.classList.add(className);
sidenav.classList.add('bg-white');
sidenav.classList.remove('bg-transparent');
iconSidenav.classList.remove('d-none');
} catch (error) {
}
}
<% if (!themeConfig?.sidebar?.gestures?.disabled) { %>
document.addEventListener('touchstart', handleTouchStart, false);
document.addEventListener('touchmove', handleTouchMove, false);
document.addEventListener('touchend', handleTouchEnd, false);
const SWIPE_BLOCK_ELEMS = [
'swipBlock',
'handle',
'drag-ruble'
]
let xDown = null;
let yDown = null;
let xDiff = null;
let yDiff = null;
let timeDown = null;
const TIME_THRESHOLD = <%= themeConfig?.sidebar?.gestures?.gestureTimer || 200 %>;
const DIFF_THRESHOLD = <%= themeConfig?.sidebar?.gestures?.gestureSensitivity || 50 %>;
function handleTouchEnd() {
let timeDiff = Date.now() - timeDown;
if (Math.abs(xDiff) > Math.abs(yDiff)) {
if (Math.abs(xDiff) > DIFF_THRESHOLD && timeDiff < TIME_THRESHOLD) {
if (xDiff > 0) {
hideSidenav()
xDown = null;
yDown = null;
timeDown = null;
} else {
showSidenav()
xDown = null;
yDown = null;
timeDown = null;
}
}
}
xDown = null;
yDown = null;
timeDown = null;
}
function containsClassName(evntarget, classArr) {
for (var i = classArr.length - 1; i >= 0; i--) {
if (evntarget.classList.contains(classArr[i])) {
return true;
}
}
}
function handleTouchStart(evt) {
let touchStartTarget = evt.target;
if (containsClassName(touchStartTarget, SWIPE_BLOCK_ELEMS)) {
return;
}
timeDown = Date.now()
xDown = evt.touches[0].clientX;
yDown = evt.touches[0].clientY;
xDiff = 0;
yDiff = 0;
}
function handleTouchMove(evt) {
if (!xDown || !yDown) {
return;
}
var xUp = evt.touches[0].clientX;
var yUp = evt.touches[0].clientY;
xDiff = xDown - xUp;
yDiff = yDown - yUp;
}
<% } %>
function sweetalert(icons, text, timer) {
var is_mobile = !!navigator.userAgent.match(/iphone|android|blackberry/ig);
let pos = 'top-end';
if (is_mobile) pos = 'bottom-end';
const Toast = Swal.mixin({
toast: true,
position: pos,
showConfirmButton: false,
timer: timer,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer)
}
})
Toast.fire({
icon: icons,
title: text
})
}
<% if (req.displayLoggedInInfo == true) { %>
window.onload = function () {
sweetalert("success", "<%= themeConfig?.sweetalert?.success?.login || 'Successfully signed in.' %>", 2000)
};
<% } %>
</script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/plugins/chartjs.min.js"></script>
<script src="js/dashboard/sweetalert.js"></script>
<script src="js/dashboard/themeselect.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/custom.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/sidebarmenu.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/perfect-scrollbar.jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/core/popper.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/core/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/plugins/perfect-scrollbar.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/plugins/smooth-scrollbar.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/Assistants-Center/DBD-Soft-UI/views/src/js/core/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="https://kit.fontawesome.com/5c57f03f9b.js" crossorigin="anonymous"></script>
<script src="https://kit.fontawesome.com/42d5adcbca.js" crossorigin="anonymous"></script>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,47 @@
<%
for(var i in req.session.guilds){ %>
<% if((req.session.guilds[i].permissions & 0x00000020) == 0x00000020){ %>
<% if(!bot.guilds.cache.get(req.session.guilds[i].id)){
let icon = `https://cdn.discordapp.com/icons/${req.session.guilds[i].id}/${req.session.guilds[i].icon}.png`;
const friendlyName = req.session.guilds[i].name.replace('`', '');
if (!req.session.guilds[i].icon) icon = themeConfig.iconURL;
%>
<a href="#">
<img id="servericon" onclick="select<%- req.session.guilds[i].id %>()" onerror="this.src = '<%= icon %>';"
src="https://cdn.discordapp.com/icons/<%= req.session.guilds[i].id %>/<%= req.session.guilds[i].icon %>.png">
</a>
<script>
async function select<%- req.session.guilds[i].id %>() {
$('#select').html(`<%= friendlyName %>`);
$('#selectedImg').attr('src', '<%= icon %>');
$("#inviteButton").attr('href', "../invite?g=<%- req.session.guilds[i].id %>");
$("#notInServer").show();
setUser(`<%= friendlyName %>`, `<%= icon %>`, `Server ID: <%= req.session.guilds[i].id %>`);
}
</script>
<% }else{
const guild = bot.guilds.cache.get(req.session.guilds[i].id);
let icon;
if (!guild.iconURL()) icon = themeConfig.iconURL;
else icon = guild.iconURL();
const friendlyName = guild.name.replace('`', '');
%>
<a href="#" onclick="select<%- guild.id %>()">
<img id="servericon" onerror="this.src = '<%= themeConfig.iconURL %>';" src="<%= icon %>">
</a>
<script>
async function select<%- guild.id %>() {
$('#select').html(`<%= friendlyName %>`);
$('#selectedImg').attr('src', '<%= icon %>');
$("#notInServer").hide();
setUser(`<%= friendlyName %>`, `<%= icon %>`, `Server ID: <%= req.session.guilds[i].id %>`);
window.location = "../guild/<%= req.session.guilds[i].id %>";
}
</script>
<!--/guild/<%= req.session.guilds[i].id %>-->
<%
}
}
}
%>

View file

@ -0,0 +1,342 @@
<style>
.navbar-vertical.navbar-expand-xs .navbar-collapse {
height: auto !important;
}
</style>
<aside class="sidenav navbar navbar-vertical navbar-expand-xs border-0 border-radius-xl my-3 fixed-start ms-3 ps"
style="float:left;" id="sidenav-main">
<div id="sidebarMain">
<div class="sidenav-header">
<a onclick="toggleSidenav()"><i
class="fas fa-times p-3 cursor-pointer text-secondary opacity-5 position-absolute end-0 top-0 d-none d-xl-none"
aria-hidden="true" id="iconSidenav"></i></a>
<a
<% if(themeConfig.icons.sidebar.alignCenter) { %> style="text-align: center;"
<% } %>
class="navbar-brand m-0" href="/">
<img src="<%- themeConfig.icons.sidebar.lightUrl %>"
class="navbar-brand-img h-100"
<% if(themeConfig.icons.sidebar.borderRadius) { %>style="border-radius: <%- themeConfig.icons.sidebar.borderRadius %>;"
<% } %>
alt="main_logo">
<% if(!themeConfig.icons.sidebar.hideName){ %>
<span class="ms-1 font-weight-bold" id="sitename"><%= themeConfig.websiteName %></span>
<% } %>
</a>
</div>
<hr class="horizontal dark mt-0">
<div class="collapse navbar-collapse w-auto max-height-vh-80 h-80" id="sidenav-collapse-main">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link <% if(now == 'index'){ %>active<% } else { %>" href='/'
<% } %>
">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 45 40" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>shop </title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-1716.000000, -439.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="shop-" transform="translate(0.000000, 148.000000)">
<path class="color-background"
d="M46.7199583,10.7414583 L40.8449583,0.949791667 C40.4909749,0.360605034 39.8540131,0 39.1666667,0 L7.83333333,0 C7.1459869,0 6.50902508,0.360605034 6.15504167,0.949791667 L0.280041667,10.7414583 C0.0969176761,11.0460037 -1.23209662e-05,11.3946378 -1.23209662e-05,11.75 C-0.00758042603,16.0663731 3.48367543,19.5725301 7.80004167,19.5833333 L7.81570833,19.5833333 C9.75003686,19.5882688 11.6168794,18.8726691 13.0522917,17.5760417 C16.0171492,20.2556967 20.5292675,20.2556967 23.494125,17.5760417 C26.4604562,20.2616016 30.9794188,20.2616016 33.94575,17.5760417 C36.2421905,19.6477597 39.5441143,20.1708521 42.3684437,18.9103691 C45.1927731,17.649886 47.0084685,14.8428276 47.0000295,11.75 C47.0000295,11.3946378 46.9030823,11.0460037 46.7199583,10.7414583 Z"
id="Path" opacity="0.598981585"></path>
<path class="color-background"
d="M39.198,22.4912623 C37.3776246,22.4928106 35.5817531,22.0149171 33.951625,21.0951667 L33.92225,21.1107282 C31.1430221,22.6838032 27.9255001,22.9318916 24.9844167,21.7998837 C24.4750389,21.605469 23.9777983,21.3722567 23.4960833,21.1018359 L23.4745417,21.1129513 C20.6961809,22.6871153 17.4786145,22.9344611 14.5386667,21.7998837 C14.029926,21.6054643 13.533337,21.3722507 13.0522917,21.1018359 C11.4250962,22.0190609 9.63246555,22.4947009 7.81570833,22.4912623 C7.16510551,22.4842162 6.51607673,22.4173045 5.875,22.2911849 L5.875,44.7220845 C5.875,45.9498589 6.7517757,46.9451667 7.83333333,46.9451667 L19.5833333,46.9451667 L19.5833333,33.6066734 L27.4166667,33.6066734 L27.4166667,46.9451667 L39.1666667,46.9451667 C40.2482243,46.9451667 41.125,45.9498589 41.125,44.7220845 L41.125,22.2822926 C40.4887822,22.4116582 39.8442868,22.4815492 39.198,22.4912623 Z"
id="Path"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.dash || "Dashboard" %></span>
</a>
</li>
<li class="nav-item">
<a href="/manage" id="serverSelector"
class="account nav-link <% if(now == 'manage'){ %>active<% } %>">
<div id="icon" class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 40 40" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>settings</title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-2020.000000, -442.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="settings" transform="translate(304.000000, 151.000000)">
<polygon class="color-background" id="Path" opacity="0.596981957"
points="18.0883333 15.7316667 11.1783333 8.82166667 13.3333333 6.66666667 6.66666667 0 0 6.66666667 6.66666667 13.3333333 8.82166667 11.1783333 15.315 17.6716667">
</polygon>
<path class="color-background"
d="M31.5666667,23.2333333 C31.0516667,23.2933333 30.53,23.3333333 30,23.3333333 C29.4916667,23.3333333 28.9866667,23.3033333 28.48,23.245 L22.4116667,30.7433333 L29.9416667,38.2733333 C32.2433333,40.575 35.9733333,40.575 38.275,38.2733333 L38.275,38.2733333 C40.5766667,35.9716667 40.5766667,32.2416667 38.275,29.94 L31.5666667,23.2333333 Z"
id="Path" opacity="0.596981957"></path>
<path class="color-background"
d="M33.785,11.285 L28.715,6.215 L34.0616667,0.868333333 C32.82,0.315 31.4483333,0 30,0 C24.4766667,0 20,4.47666667 20,10 C20,10.99 20.1483333,11.9433333 20.4166667,12.8466667 L2.435,27.3966667 C0.95,28.7083333 0.0633333333,30.595 0.00333333333,32.5733333 C-0.0583333333,34.5533333 0.71,36.4916667 2.11,37.89 C3.47,39.2516667 5.27833333,40 7.20166667,40 C9.26666667,40 11.2366667,39.1133333 12.6033333,37.565 L27.1533333,19.5833333 C28.0566667,19.8516667 29.01,20 30,20 C35.5233333,20 40,15.5233333 40,10 C40,8.55166667 39.685,7.18 39.1316667,5.93666667 L33.785,11.285 Z"
id="Path"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.manage || "Manage Guilds" %></span>
</a>
</li>
<% if(themeConfig.shardspage?.enabled == true) { %>
<li class="nav-item">
<a class="nav-link <% if(now == 'shards'){ %>active<% } else { %>" href='/shards'
<% } %>
">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 640 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z"/></svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.shards || "Shards" %></span>
</a>
</li>
<% } %>
<% if (now == "commands") { %>
<li class="nav-item">
<a data-bs-toggle="collapse" href="#dashboardsExamples"
class="nav-link <% if(now == 'commands'){ %>active<% } %> collapsed"
aria-controls="dashboardsExamples" role="button"
aria-expanded="<% if(now == "commands"){ %>true<% } else{ %>false<% } %>">
<div class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center d-flex align-items-center justify-content-center me-2">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 43 36" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>credit-card</title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-2169.000000, -745.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="credit-card" transform="translate(453.000000, 454.000000)">
<path class="color-background"
d="M43,10.7482083 L43,3.58333333 C43,1.60354167 41.3964583,0 39.4166667,0 L3.58333333,0 C1.60354167,0 0,1.60354167 0,3.58333333 L0,10.7482083 L43,10.7482083 Z"
id="Path" opacity="0.593633743"></path>
<path class="color-background"
d="M0,16.125 L0,32.25 C0,34.2297917 1.60354167,35.8333333 3.58333333,35.8333333 L39.4166667,35.8333333 C41.3964583,35.8333333 43,34.2297917 43,32.25 L43,16.125 L0,16.125 Z M19.7083333,26.875 L7.16666667,26.875 L7.16666667,23.2916667 L19.7083333,23.2916667 L19.7083333,26.875 Z M35.8333333,26.875 L28.6666667,26.875 L28.6666667,23.2916667 L35.8333333,23.2916667 L35.8333333,26.875 Z">
</path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.commands || "Commands" %></span>
</a>
<div class="collapse <% if(now == 'commands'){ %>show<% } %>" id="dashboardsExamples">
<ul class="nav ms-4 ps-3">
<li class="nav-item ">
<a id="all" class="nav-link glow active_all" href="#">
<span class="sidenav-mini-icon"> A </span>
<span class="sidenav-normal"> All </span>
</a>
</li>
<% themeConfig.commands.forEach(category => {
if (category.hideSidebarItem) return;
%>
<li class="nav-item">
<a id="<%= category.categoryId %>" class="nav-link glow active_<%= category.categoryId %>"
href="<% if(now !== 'commands'){ %>/commands<% } %>#<%= category.categoryId %>">
<span class="sidenav-mini-icon"> A </span>
<span class="sidenav-normal"> <%= category.category %> </span>
</a>
</li>
<% }) %>
</ul>
</div>
</li>
<% } else { %>
<li class="nav-item">
<a class="nav-link" href="/commands">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 43 36" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>credit-card</title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-2169.000000, -745.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="credit-card" transform="translate(453.000000, 454.000000)">
<path class="color-background"
d="M43,10.7482083 L43,3.58333333 C43,1.60354167 41.3964583,0 39.4166667,0 L3.58333333,0 C1.60354167,0 0,1.60354167 0,3.58333333 L0,10.7482083 L43,10.7482083 Z"
id="Path" opacity="0.593633743"></path>
<path class="color-background"
d="M0,16.125 L0,32.25 C0,34.2297917 1.60354167,35.8333333 3.58333333,35.8333333 L39.4166667,35.8333333 C41.3964583,35.8333333 43,34.2297917 43,32.25 L43,16.125 L0,16.125 Z M19.7083333,26.875 L7.16666667,26.875 L7.16666667,23.2916667 L19.7083333,23.2916667 L19.7083333,26.875 Z M35.8333333,26.875 L28.6666667,26.875 L28.6666667,23.2916667 L35.8333333,23.2916667 L35.8333333,26.875 Z">
</path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.commands || "Commands" %></span>
</a>
</li>
<% } %>
<li class="nav-item">
<a class="nav-link <% if(now == 'pp'){ %>active"
<% } else { %>" href='/privacy-policy'
<% } %>
>
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 40 44" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>document</title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-1870.000000, -591.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="document" transform="translate(154.000000, 300.000000)">
<path class="color-background"
d="M40,40 L36.3636364,40 L36.3636364,3.63636364 L5.45454545,3.63636364 L5.45454545,0 L38.1818182,0 C39.1854545,0 40,0.814545455 40,1.81818182 L40,40 Z"
id="Path" opacity="0.603585379"></path>
<path class="color-background"
d="M30.9090909,7.27272727 L1.81818182,7.27272727 C0.814545455,7.27272727 0,8.08727273 0,9.09090909 L0,41.8181818 C0,42.8218182 0.814545455,43.6363636 1.81818182,43.6363636 L30.9090909,43.6363636 C31.9127273,43.6363636 32.7272727,42.8218182 32.7272727,41.8181818 L32.7272727,9.09090909 C32.7272727,8.08727273 31.9127273,7.27272727 30.9090909,7.27272727 Z M18.1818182,34.5454545 L7.27272727,34.5454545 L7.27272727,30.9090909 L18.1818182,30.9090909 L18.1818182,34.5454545 Z M25.4545455,27.2727273 L7.27272727,27.2727273 L7.27272727,23.6363636 L25.4545455,23.6363636 L25.4545455,27.2727273 Z M25.4545455,20 L7.27272727,20 L7.27272727,16.3636364 L25.4545455,16.3636364 L25.4545455,20 Z"
id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.pp || "Privacy Policy" %></span>
</a>
</li>
<% if(req.session.user && config.ownerIDs?.includes(req.session.user.id)) { %>
<li class="nav-item">
<a class="nav-link <% if(now == 'admin'){ %>active"
<% } else { %>" href='/admin'
<% } %>
>
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 42 42" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-2319.000000, -291.000000)"
fill="#FFFFFF"
fill-rule="nonzero">
<g id="Icons-with-opacity" transform="translate(1716.000000, 291.000000)">
<g id="box-3d-50" transform="translate(603.000000, 0.000000)">
<path class="color-background"
d="M22.7597136,19.3090182 L38.8987031,11.2395234 C39.3926816,10.9925342 39.592906,10.3918611 39.3459167,9.89788265 C39.249157,9.70436312 39.0922432,9.5474453 38.8987261,9.45068056 L20.2741875,0.1378125 L20.2741875,0.1378125 C19.905375,-0.04725 19.469625,-0.04725 19.0995,0.1378125 L3.1011696,8.13815822 C2.60720568,8.38517662 2.40701679,8.98586148 2.6540352,9.4798254 C2.75080129,9.67332903 2.90771305,9.83023153 3.10122239,9.9269862 L21.8652864,19.3090182 C22.1468139,19.4497819 22.4781861,19.4497819 22.7597136,19.3090182 Z"
id="Path"></path>
<path class="color-background"
d="M23.625,22.429159 L23.625,39.8805372 C23.625,40.4328219 24.0727153,40.8805372 24.625,40.8805372 C24.7802551,40.8805372 24.9333778,40.8443874 25.0722402,40.7749511 L41.2741875,32.673375 L41.2741875,32.673375 C41.719125,32.4515625 42,31.9974375 42,31.5 L42,14.241659 C42,13.6893742 41.5522847,13.241659 41,13.241659 C40.8447549,13.241659 40.6916418,13.2778041 40.5527864,13.3472318 L24.1777864,21.5347318 C23.8390024,21.7041238 23.625,22.0503869 23.625,22.429159 Z"
id="Path" opacity="0.7"></path>
<path class="color-background"
d="M20.4472136,21.5347318 L1.4472136,12.0347318 C0.953235098,11.7877425 0.352562058,11.9879669 0.105572809,12.4819454 C0.0361450918,12.6208008 6.47121774e-16,12.7739139 0,12.929159 L0,30.1875 L0,30.1875 C0,30.6849375 0.280875,31.1390625 0.7258125,31.3621875 L19.5528096,40.7750766 C20.0467945,41.0220531 20.6474623,40.8218132 20.8944388,40.3278283 C20.963859,40.1889789 21,40.0358742 21,39.8806379 L21,22.429159 C21,22.0503869 20.7859976,21.7041238 20.4472136,21.5347318 Z"
id="Path" opacity="0.7"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.admin || "Admin" %></span>
</a>
</li>
<% } %>
<% if(now == 'commands'){ %>
<li class="nav-item mt-3">
<h6 class="ps-4 ms-2 text-uppercase text-xs font-weight-bolder opacity-6"><%- req?.locales?.partials?.sidebar.commands || "Commands" %></h6>
</li>
<div class="form-group" style="width: 190px; margin-left: 33px !important;">
<div class="input-group mb-4" style="margin-bottom: 0px !important;">
<span class="input-group-text"><i class="ni ni-zoom-split-in"></i></span>
<input class="form-control" type="text" id="searchBar"
placeholder="Search for commands..">
</div>
</div>
<% } %>
<li class="nav-item mt-3">
<h6 class="ps-4 ms-2 text-uppercase text-xs font-weight-bolder opacity-6"><%- req?.locales?.partials?.sidebar.account || "Account pages" %></h6>
</li>
<% if(!req.session.user) { %>
<li class="nav-item">
<a class="nav-link account" href="<%= req.originalUrl %>">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg width="12px" height="12px" viewBox="0 0 40 44" version="1.1"
xmlns="http://www.w3.org/2000/svg"
>
<title>document</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-1870.000000, -591.000000)" fill="#FFFFFF"
fill-rule="nonzero">
<g transform="translate(1716.000000, 291.000000)">
<g transform="translate(154.000000, 300.000000)">
<path class="color-background opacity-6"
d="M40,40 L36.3636364,40 L36.3636364,3.63636364 L5.45454545,3.63636364 L5.45454545,0 L38.1818182,0 C39.1854545,0 40,0.814545455 40,1.81818182 L40,40 Z">
</path>
<path class="color-background"
d="M30.9090909,7.27272727 L1.81818182,7.27272727 C0.814545455,7.27272727 0,8.08727273 0,9.09090909 L0,41.8181818 C0,42.8218182 0.814545455,43.6363636 1.81818182,43.6363636 L30.9090909,43.6363636 C31.9127273,43.6363636 32.7272727,42.8218182 32.7272727,41.8181818 L32.7272727,9.09090909 C32.7272727,8.08727273 31.9127273,7.27272727 30.9090909,7.27272727 Z M18.1818182,34.5454545 L7.27272727,34.5454545 L7.27272727,30.9090909 L18.1818182,30.9090909 L18.1818182,34.5454545 Z M25.4545455,27.2727273 L7.27272727,27.2727273 L7.27272727,23.6363636 L25.4545455,23.6363636 L25.4545455,27.2727273 Z M25.4545455,20 L7.27272727,20 L7.27272727,16.3636364 L25.4545455,16.3636364 L25.4545455,20 Z">
</path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.login || "Sign In" %></span>
</a>
</li>
<% } else { %>
<li class="nav-item">
<a class="nav-link" href="/discord/logout?r=/?swal=loggedout">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg width="12px" height="20px" viewBox="0 0 40 40" version="1.1"
xmlns="http://www.w3.org/2000/svg"
>
<title>spaceship</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(-1720.000000, -592.000000)" fill="#FFFFFF"
fill-rule="nonzero">
<g transform="translate(1716.000000, 291.000000)">
<g transform="translate(4.000000, 301.000000)">
<path class="color-background"
d="M39.3,0.706666667 C38.9660984,0.370464027 38.5048767,0.192278529 38.0316667,0.216666667 C14.6516667,1.43666667 6.015,22.2633333 5.93166667,22.4733333 C5.68236407,23.0926189 5.82664679,23.8009159 6.29833333,24.2733333 L15.7266667,33.7016667 C16.2013871,34.1756798 16.9140329,34.3188658 17.535,34.065 C17.7433333,33.98 38.4583333,25.2466667 39.7816667,1.97666667 C39.8087196,1.50414529 39.6335979,1.04240574 39.3,0.706666667 Z M25.69,19.0233333 C24.7367525,19.9768687 23.3029475,20.2622391 22.0572426,19.7463614 C20.8115377,19.2304837 19.9992882,18.0149658 19.9992882,16.6666667 C19.9992882,15.3183676 20.8115377,14.1028496 22.0572426,13.5869719 C23.3029475,13.0710943 24.7367525,13.3564646 25.69,14.31 C26.9912731,15.6116662 26.9912731,17.7216672 25.69,19.0233333 L25.69,19.0233333 Z">
</path>
<path class="color-background opacity-6"
d="M1.855,31.4066667 C3.05106558,30.2024182 4.79973884,29.7296005 6.43969145,30.1670277 C8.07964407,30.6044549 9.36054508,31.8853559 9.7979723,33.5253085 C10.2353995,35.1652612 9.76258177,36.9139344 8.55833333,38.11 C6.70666667,39.9616667 0,40 0,40 C0,40 0,33.2566667 1.855,31.4066667 Z">
</path>
<path class="color-background opacity-6"
d="M17.2616667,3.90166667 C12.4943643,3.07192755 7.62174065,4.61673894 4.20333333,8.04166667 C3.31200265,8.94126033 2.53706177,9.94913142 1.89666667,11.0416667 C1.5109569,11.6966059 1.61721591,12.5295394 2.155,13.0666667 L5.47,16.3833333 C8.55036617,11.4946947 12.5559074,7.25476565 17.2616667,3.90166667 L17.2616667,3.90166667 Z">
</path>
<path class="color-background opacity-6"
d="M36.0983333,22.7383333 C36.9280725,27.5056357 35.3832611,32.3782594 31.9583333,35.7966667 C31.0587397,36.6879974 30.0508686,37.4629382 28.9583333,38.1033333 C28.3033941,38.4890431 27.4704606,38.3827841 26.9333333,37.845 L23.6166667,34.53 C28.5053053,31.4496338 32.7452344,27.4440926 36.0983333,22.7383333 L36.0983333,22.7383333 Z">
</path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1"><%- req?.locales?.partials?.sidebar.logout || "Sign Out" %></span>
</a>
</li>
<% } %>
</ul>
</div>
<% if(themeConfig?.premium && req.session.user) { %>
<div class="sidenav-footer mx-3 pb-4" style="position: absolute;bottom: 0;">
<%- include('premium.ejs') %>
</div>
<% } %>
</aside>

View file

@ -0,0 +1,71 @@
<div class="fixed-plugin">
<a id="themeButton" class="fixed-plugin-button text-dark position-fixed px-3 py-2">
<i class="fa fa-cog py-2"> </i>
</a>
<div class="card shadow-lg ">
<div class="card-header pb-0 pt-3 ">
<div class="float-start">
<h5 class="mt-3 mb-0"><%- req?.locales?.partials?.settings?.title || "Site Configuration" %></h5>
<p><%- req?.locales?.partials?.settings?.description || "Configurable Viewing Options" %></p>
</div>
<div class="float-end mt-4">
<button aria-label="Close Panel" class="btn btn-link text-dark p-0 fixed-plugin-close-button">
<i class="fa fa-close"></i>
</button>
</div>
<!-- End Toggle Button -->
</div>
<hr class="horizontal dark my-1">
<div class="card-body pt-sm-3 pt-0">
<!-- Sidebar Backgrounds -->
<!-- Sidenav Type -->
<div class="mt-3">
<h6 class="mb-0"><%- req?.locales?.partials?.settings?.theme?.title || "Site Theme" %></h6>
<p class="text-sm"><%- req?.locales?.partials?.settings?.theme?.description || "Make the site more appealing for your eyes!" %></p>
</div>
<div class="d-flex">
<button data-theme="auto"
class="theme btn bg-gradient-primary w-100 px-3 mb-2 ms-2 <% if (req.cookies?.selectedTheme == "auto") { %>active<% } %>"
data-class="bg-white">
Auto
</button>
<button data-theme="light"
class="theme btn bg-gradient-primary w-100 mb-2 ms-2 <% if (req.cookies?.selectedTheme == "light") { %>active<% } %>"
data-class="bg-transparent">
Light
</button>
<button data-theme="dark"
class="theme btn bg-gradient-primary w-100 px-3 mb-2 ms-2 <% if (req.cookies?.selectedTheme == "dark") { %>active<% } %>"
data-class="bg-white">
Dark
</button>
</div>
<div class="mt-5">
<h6 class="mb-0"><%- req?.locales?.partials?.settings?.language?.title || "Site Language" %></h6>
<p class="text-sm"><%- req?.locales?.partials?.settings?.language?.description || "Select your preferred language!" %></p>
</div>
<div class="d-flex">
<select name="languages" id="lang" class="form-control">
<%
let locales = {};
locales = (themeConfig.locales) ? themeConfig.locales : themeConfig.defaultLocales;
Object.keys(locales).forEach((lang) => { %>
<option value="<%= lang %>" <%= lang === req?.lang ? 'selected' : '' %>><%= locales[lang].name %></option>
<% }) %>
</select>
</div>
<p class="text-sm d-xl-none d-block mt-2">You can change the sidenav type just on desktop view.</p>
</div>
</div>
</div>
<script>
$("#lang").change(function () {
var lang = $(this).val();
setCookie('lang', lang, 365);
location.reload()
});
</script>
<script src="./js/configMenu.js"></script>

View file

@ -0,0 +1,479 @@
<!--
=========================================================
* Now UI Dashboard - v1.5.0
=========================================================
* Product Page: https://www.creative-tim.com/product/now-ui-dashboard
* Copyright 2019 Creative Tim (http://www.creative-tim.com)
* Designed by www.invisionapp.com Coded by www.creative-tim.com
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now: 'pp'}) %>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now: 'pp'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now: 'pp'}) %>
<!-- End Navbar -->
<div class="container-fluid py-4">
<div class="content">
<div class="row">
<div class="col-md-12 mb-4">
<div class="card">
<div class="card-header">
<h4 class="card-title"><%- req?.locales?.privacyPolicy?.title || "Privacy Policy" %></h4>
<p class="category"><%- req?.locales?.privacyPolicy?.description || "Privacy Policy and Terms of Service" %></p>
</div>
<div class="card-body">
<% if (req?.locales?.privacyPolicy?.pp){ %>
<%- req.locales.privacyPolicy.pp %>
<% } else { %>
<p>Last updated: October 10, 2021</p>
<p>This Privacy Policy describes Our policies and procedures on the collection, use and
disclosure of Your information when You use the Service and tells You about Your
privacy
rights and how the law protects You.</p>
<p>We use Your Personal data to provide and improve the Service. By using the Service,
You
agree to the collection and use of information in accordance with this Privacy
Policy.
This Privacy Policy has been created with the help of the <a
href="https://www.termsfeed.com/privacy-policy-generator/" target="_blank">Privacy
Policy Generator</a>.</p>
<h1>Interpretation and Definitions</h1>
<h2>Interpretation</h2>
<p>The words of which the initial letter is capitalized have meanings defined under the
following conditions. The following definitions shall have the same meaning
regardless
of whether they appear in singular or in plural.</p>
<h2>Definitions</h2>
<p>For the purposes of this Privacy Policy:</p>
<ul>
<li>
<p><strong>Account</strong> means a unique account created for You to access our
Service or parts of our Service.</p>
</li>
<li>
<p><strong>Company</strong> (referred to as either "the Company", "We", "Us" or
"Our" in this Agreement) refers to <%= themeConfig.websiteName %>.</p>
</li>
<li>
<p><strong>Cookies</strong> are small files that are placed on Your computer,
mobile
device or any other device by a website, containing the details of Your
browsing
history on that website among its many uses.</p>
</li>
<li>
<p><strong>Country</strong> refers to: United Kingdom</p>
</li>
<li>
<p><strong>Device</strong> means any device that can access the Service such as
a
computer, a cellphone or a digital tablet.</p>
</li>
<li>
<p><strong>Personal Data</strong> is any information that relates to an
identified
or identifiable individual.</p>
</li>
<li>
<p><strong>Service</strong> refers to the Website.</p>
</li>
<li>
<p><strong>Service Provider</strong> means any natural or legal person who
processes
the data on behalf of the Company. It refers to third-party companies or
individuals employed by the Company to facilitate the Service, to provide
the
Service on behalf of the Company, to perform services related to the Service
or
to assist the Company in analyzing how the Service is used.</p>
</li>
<li>
<p><strong>Third-party Social Media Service</strong> refers to any website or
any
social network website through which a User can log in or create an account
to
use the Service.</p>
</li>
<li>
<p><strong>Usage Data</strong> refers to data collected automatically, either
generated by the use of the Service or from the Service infrastructure
itself
(for example, the duration of a page visit).</p>
</li>
<li>
<p><strong>Website</strong> refers to <%= themeConfig.websiteName %>, accessible
from <a href="<%= config.domain %>" rel="external nofollow noopener"
target="_blank"><%= config.domain %></a></p>
</li>
<li>
<p><strong>You</strong> means the individual accessing or using the Service, or
the
company, or other legal entity on behalf of which such individual is
accessing
or using the Service, as applicable.</p>
</li>
</ul>
<h1>Collecting and Using Your Personal Data</h1>
<h2>Types of Data Collected</h2>
<h3>Personal Data</h3>
<p>While using Our Service, We may ask You to provide Us with certain personally
identifiable information that can be used to contact or identify You. Personally
identifiable information may include, but is not limited to:</p>
<ul>
<li>Usage Data</li>
</ul>
<h3>Usage Data</h3>
<p>Usage Data is collected automatically when using the Service.</p>
<p>Usage Data may include information such as Your Device's Internet Protocol address
(e.g.
IP address), browser type, browser version, the pages of our Service that You visit,
the
time and date of Your visit, the time spent on those pages, unique device
identifiers
and other diagnostic data.</p>
<p>When You access the Service by or through a mobile device, We may collect certain
information automatically, including, but not limited to, the type of mobile device
You
use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile
operating system, the type of mobile Internet browser You use, unique device
identifiers
and other diagnostic data.</p>
<p>We may also collect information that Your browser sends whenever You visit our
Service or
when You access the Service by or through a mobile device.</p>
<h3>Information from Third-Party Social Media Services</h3>
<p>The Company allows You to create an account and log in to use the Service through the
following Third-party Social Media Services:</p>
<ul>
<li>Google</li>
<li>Facebook</li>
<li>Twitter</li>
</ul>
<p>If You decide to register through or otherwise grant us access to a Third-Party
Social
Media Service, We may collect Personal data that is already associated with Your
Third-Party Social Media Service's account, such as Your name, Your email address,
Your
activities or Your contact list associated with that account.</p>
<p>You may also have the option of sharing additional information with the Company
through
Your Third-Party Social Media Service's account. If You choose to provide such
information and Personal Data, during registration or otherwise, You are giving the
Company permission to use, share, and store it in a manner consistent with this
Privacy
Policy.</p>
<h3>Tracking Technologies and Cookies</h3>
<p>We use Cookies and similar tracking technologies to track the activity on Our Service
and
store certain information. Tracking technologies used are beacons, tags, and scripts
to
collect and track information and to improve and analyze Our Service. The
technologies
We use may include:</p>
<ul>
<li><strong>Cookies or Browser Cookies.</strong> A cookie is a small file placed on
Your
Device. You can instruct Your browser to refuse all Cookies or to indicate when
a
Cookie is being sent. However, if You do not accept Cookies, You may not be able
to
use some parts of our Service. Unless you have adjusted Your browser setting so
that
it will refuse Cookies, our Service may use Cookies.
</li>
<li><strong>Flash Cookies.</strong> Certain features of our Service may use local
stored
objects (or Flash Cookies) to collect and store information about Your
preferences
or Your activity on our Service. Flash Cookies are not managed by the same
browser
settings as those used for Browser Cookies. For more information on how You can
delete Flash Cookies, please read "Where can I change the settings for
disabling, or
deleting local shared objects?" available at <a
href="https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_"
rel="external nofollow noopener" target="_blank">https://helpx.adobe.com/flash-player/kb/disable-local-shared-objects-flash.html#main_Where_can_I_change_the_settings_for_disabling__or_deleting_local_shared_objects_</a>
</li>
<li><strong>Web Beacons.</strong> Certain sections of our Service and our emails may
contain small electronic files known as web beacons (also referred to as clear
gifs,
pixel tags, and single-pixel gifs) that permit the Company, for example, to
count
users who have visited those pages or opened an email and for other related
website
statistics (for example, recording the popularity of a certain section and
verifying
system and server integrity).
</li>
</ul>
<p>Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your
personal computer or mobile device when You go offline, while Session Cookies are
deleted as soon as You close Your web browser. You can learn more about cookies
here: <a
href="https://www.termsfeed.com/privacy-policy-generator/#faq-8"
target="_blank">Cookies by TermsFeed Generator</a>.</p>
<p>We use both Session and Persistent Cookies for the purposes set out below:</p>
<ul>
<li>
<p><strong>Necessary / Essential Cookies</strong></p>
<p>Type: Session Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies are essential to provide You with services available
through the Website and to enable You to use some of its features. They help
to
authenticate users and prevent fraudulent use of user accounts. Without
these
Cookies, the services that You have asked for cannot be provided, and We
only
use these Cookies to provide You with those services.</p>
</li>
<li>
<p><strong>Cookies Policy / Notice Acceptance Cookies</strong></p>
<p>Type: Persistent Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies identify if users have accepted the use of cookies on
the
Website.</p>
</li>
<li>
<p><strong>Functionality Cookies</strong></p>
<p>Type: Persistent Cookies</p>
<p>Administered by: Us</p>
<p>Purpose: These Cookies allow us to remember choices You make when You use the
Website, such as remembering your login details or language preference. The
purpose of these Cookies is to provide You with a more personal experience
and
to avoid You having to re-enter your preferences every time You use the
Website.</p>
</li>
</ul>
<p>For more information about the cookies we use and your choices regarding cookies,
please
visit our Cookies Policy or the Cookies section of our Privacy Policy.</p>
<h2>Use of Your Personal Data</h2>
<p>The Company may use Personal Data for the following purposes:</p>
<ul>
<li>
<p><strong>To provide and maintain our Service</strong>, including to monitor
the
usage of our Service.</p>
</li>
<li>
<p><strong>To manage Your Account:</strong> to manage Your registration as a
user of
the Service. The Personal Data You provide can give You access to different
functionalities of the Service that are available to You as a registered
user.
</p>
</li>
<li>
<p><strong>For the performance of a contract:</strong> the development,
compliance
and undertaking of the purchase contract for the products, items or services
You
have purchased or of any other contract with Us through the Service.</p>
</li>
<li>
<p><strong>To contact You:</strong> To contact You by email, telephone calls,
SMS,
or other equivalent forms of electronic communication, such as a mobile
application's push notifications regarding updates or informative
communications
related to the functionalities, products or contracted services, including
the
security updates, when necessary or reasonable for their implementation.</p>
</li>
<li>
<p><strong>To provide You</strong> with news, special offers and general
information
about other goods, services and events which we offer that are similar to
those
that you have already purchased or enquired about unless You have opted not
to
receive such information.</p>
</li>
<li>
<p><strong>To manage Your requests:</strong> To attend and manage Your requests
to
Us.</p>
</li>
<li>
<p><strong>For business transfers:</strong> We may use Your information to
evaluate
or conduct a merger, divestiture, restructuring, reorganization,
dissolution, or
other sale or transfer of some or all of Our assets, whether as a going
concern
or as part of bankruptcy, liquidation, or similar proceeding, in which
Personal
Data held by Us about our Service users is among the assets transferred.</p>
</li>
<li>
<p><strong>For other purposes</strong>: We may use Your information for other
purposes, such as data analysis, identifying usage trends, determining the
effectiveness of our promotional campaigns and to evaluate and improve our
Service, products, services, marketing and your experience.</p>
</li>
</ul>
<p>We may share Your personal information in the following situations:</p>
<ul>
<li><strong>With Service Providers:</strong> We may share Your personal information
with
Service Providers to monitor and analyze the use of our Service, to contact You.
</li>
<li><strong>For business transfers:</strong> We may share or transfer Your personal
information in connection with, or during negotiations of, any merger, sale of
Company assets, financing, or acquisition of all or a portion of Our business to
another company.
</li>
<li><strong>With Affiliates:</strong> We may share Your information with Our
affiliates,
in which case we will require those affiliates to honor this Privacy Policy.
Affiliates include Our parent company and any other subsidiaries, joint venture
partners or other companies that We control or that are under common control
with
Us.
</li>
<li><strong>With business partners:</strong> We may share Your information with Our
business partners to offer You certain products, services or promotions.
</li>
<li><strong>With other users:</strong> when You share personal information or
otherwise
interact in the public areas with other users, such information may be viewed by
all
users and may be publicly distributed outside. If You interact with other users
or
register through a Third-Party Social Media Service, Your contacts on the
Third-Party Social Media Service may see Your name, profile, pictures and
description of Your activity. Similarly, other users will be able to view
descriptions of Your activity, communicate with You and view Your profile.
</li>
<li><strong>With Your consent</strong>: We may disclose Your personal information
for
any other purpose with Your consent.
</li>
</ul>
<h2>Retention of Your Personal Data</h2>
<p>The Company will retain Your Personal Data only for as long as is necessary for the
purposes set out in this Privacy Policy. We will retain and use Your Personal Data
to
the extent necessary to comply with our legal obligations (for example, if we are
required to retain your data to comply with applicable laws), resolve disputes, and
enforce our legal agreements and policies.</p>
<p>The Company will also retain Usage Data for internal analysis purposes. Usage Data is
generally retained for a shorter period of time, except when this data is used to
strengthen the security or to improve the functionality of Our Service, or We are
legally obligated to retain this data for longer time periods.</p>
<h2>Transfer of Your Personal Data</h2>
<p>Your information, including Personal Data, is processed at the Company's operating
offices and in any other places where the parties involved in the processing are
located. It means that this information may be transferred to — and maintained on —
computers located outside of Your state, province, country or other governmental
jurisdiction where the data protection laws may differ than those from Your
jurisdiction.</p>
<p>Your consent to this Privacy Policy followed by Your submission of such information
represents Your agreement to that transfer.</p>
<p>The Company will take all steps reasonably necessary to ensure that Your data is
treated
securely and in accordance with this Privacy Policy and no transfer of Your Personal
Data will take place to an organization or a country unless there are adequate
controls
in place including the security of Your data and other personal information.</p>
<h2>Disclosure of Your Personal Data</h2>
<h3>Business Transactions</h3>
<p>If the Company is involved in a merger, acquisition or asset sale, Your Personal Data
may
be transferred. We will provide notice before Your Personal Data is transferred and
becomes subject to a different Privacy Policy.</p>
<h3>Law enforcement</h3>
<p>Under certain circumstances, the Company may be required to disclose Your Personal
Data
if required to do so by law or in response to valid requests by public authorities
(e.g.
a court or a government agency).</p>
<h3>Other legal requirements</h3>
<p>The Company may disclose Your Personal Data in the good faith belief that such action
is
necessary to:</p>
<ul>
<li>Comply with a legal obligation</li>
<li>Protect and defend the rights or property of the Company</li>
<li>Prevent or investigate possible wrongdoing in connection with the Service</li>
<li>Protect the personal safety of Users of the Service or the public</li>
<li>Protect against legal liability</li>
</ul>
<h2>Security of Your Personal Data</h2>
<p>The security of Your Personal Data is important to Us, but remember that no method of
transmission over the Internet, or method of electronic storage is 100% secure.
While We
strive to use commercially acceptable means to protect Your Personal Data, We cannot
guarantee its absolute security.</p>
<h1>Children's Privacy</h1>
<p>Our Service does not address anyone under the age of 13. We do not knowingly collect
personally identifiable information from anyone under the age of 13. If You are a
parent
or guardian and You are aware that Your child has provided Us with Personal Data,
please
contact Us. If We become aware that We have collected Personal Data from anyone
under
the age of 13 without verification of parental consent, We take steps to remove that
information from Our servers.</p>
<p>If We need to rely on consent as a legal basis for processing Your information and
Your
country requires consent from a parent, We may require Your parent's consent before
We
collect and use that information.</p>
<h1>Links to Other Websites</h1>
<p>Our Service may contain links to other websites that are not operated by Us. If You
click
on a third party link, You will be directed to that third party's site. We strongly
advise You to review the Privacy Policy of every site You visit.</p>
<p>We have no control over and assume no responsibility for the content, privacy
policies or
practices of any third party sites or services.</p>
<h1>Changes to this Privacy Policy</h1>
<p>We may update Our Privacy Policy from time to time. We will notify You of any changes
by
posting the new Privacy Policy on this page.</p>
<p>We will let You know via email and/or a prominent notice on Our Service, prior to the
change becoming effective and update the "Last updated" date at the top of this
Privacy
Policy.</p>
<p>You are advised to review this Privacy Policy periodically for any changes. Changes
to
this Privacy Policy are effective when they are posted on this page.</p>
<h1>Contact Us</h1>
<p>If you have any questions about this Privacy Policy, You can contact us:</p>
<ul>
<li>By email: <a
href="mailto: <%= themeConfig.supporteMail %>"><%= themeConfig.supporteMail %></a>
</li>
<% } %>
</div>
</div>
</div>
</div>
</div>
<%- include('partials/footer.ejs', {now: 'pp'}) %>
</div>
</div>
<%- include('partials/scripts.ejs', {now: "pp"}) %>
</body>
</html>

View file

@ -0,0 +1,488 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<%- include('partials/preloader.ejs', {now:'settings'}) %>
<link href='/css/dashboard/settings.css' rel='stylesheet'>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100">
<%- include('partials/preload.ejs') %>
<aside
class="sidenav navbar navbar-vertical navbar-expand-xs border-0 border-radius-xl my-3 fixed-start ms-3 ps"
style="float:left;" id="sidenav-main">
<div id="sidebarMain">
<div class="sidenav-header">
<a onclick="toggleSidenav()"><i
class="fas fa-times p-3 cursor-pointer text-secondary opacity-5 position-absolute end-0 top-0 d-none d-xl-none"
aria-hidden="true" id="iconSidenav"></i></a>
<a <% if(themeConfig?.icons?.sidebar?.alignCenter) { %> style="text-align: center;"
<% } %>
class="navbar-brand m-0" href="/">
<img src="<%= themeConfig.icons.sidebar.lightUrl %>" class="navbar-brand-img h-100" <%
if(themeConfig.icons.sidebar.borderRadius) { %>style="border-radius: <%-
themeConfig.icons.sidebar.borderRadius %>;"
<% } %>
alt="main_logo">
<% if(!themeConfig.icons.sidebar.hideName){ %>
<span class="ms-1 font-weight-bold" id="sitename">
<%= themeConfig.websiteName %>
</span>
<% } %>
</a>
</div>
<hr class="horizontal dark mt-0">
<div class="collapse navbar-collapse w-auto max-height-vh-80 h-80" id="sidenav-collapse-main">
<ul class="navbar-nav">
<li class="nav-item" style="text-align: center;">
<div class="configIcon border-radius-xl"
style="margin: 0 auto;width: fit-content;text-align: center;">
<img class="border-radius-xl" style="width: 100px; padding: 10px;"
src="<%= gIcon %>?size=64" alt="">
</div>
<h5 style="margin-top: 10px;">
<%= guild.name %>
</h5>
<p style="margin: 0 !important;"><i class="fa fa-user-friends" aria-hidden="true"></i>
<%= guild.memberCount %> Members
</p>
</li>
<li class="nav-item mt-3">
<a class="nav-link <% if(!req.params.category) { %>active<% } %>"
href="/settings/<%- req.params.id %>/">
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<svg class="text-dark" width="16px" height="16px" viewBox="0 0 45 40" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<title>shop </title>
<g id="Basic-Elements" stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
<g id="Rounded-Icons" transform="translate(-1716.000000, -439.000000)"
fill="#FFFFFF" fill-rule="nonzero">
<g id="Icons-with-opacity"
transform="translate(1716.000000, 291.000000)">
<g id="shop-" transform="translate(0.000000, 148.000000)">
<path class="color-background"
d="M46.7199583,10.7414583 L40.8449583,0.949791667 C40.4909749,0.360605034 39.8540131,0 39.1666667,0 L7.83333333,0 C7.1459869,0 6.50902508,0.360605034 6.15504167,0.949791667 L0.280041667,10.7414583 C0.0969176761,11.0460037 -1.23209662e-05,11.3946378 -1.23209662e-05,11.75 C-0.00758042603,16.0663731 3.48367543,19.5725301 7.80004167,19.5833333 L7.81570833,19.5833333 C9.75003686,19.5882688 11.6168794,18.8726691 13.0522917,17.5760417 C16.0171492,20.2556967 20.5292675,20.2556967 23.494125,17.5760417 C26.4604562,20.2616016 30.9794188,20.2616016 33.94575,17.5760417 C36.2421905,19.6477597 39.5441143,20.1708521 42.3684437,18.9103691 C45.1927731,17.649886 47.0084685,14.8428276 47.0000295,11.75 C47.0000295,11.3946378 46.9030823,11.0460037 46.7199583,10.7414583 Z"
id="Path" opacity="0.598981585"></path>
<path class="color-background"
d="M39.198,22.4912623 C37.3776246,22.4928106 35.5817531,22.0149171 33.951625,21.0951667 L33.92225,21.1107282 C31.1430221,22.6838032 27.9255001,22.9318916 24.9844167,21.7998837 C24.4750389,21.605469 23.9777983,21.3722567 23.4960833,21.1018359 L23.4745417,21.1129513 C20.6961809,22.6871153 17.4786145,22.9344611 14.5386667,21.7998837 C14.029926,21.6054643 13.533337,21.3722507 13.0522917,21.1018359 C11.4250962,22.0190609 9.63246555,22.4947009 7.81570833,22.4912623 C7.16510551,22.4842162 6.51607673,22.4173045 5.875,22.2911849 L5.875,44.7220845 C5.875,45.9498589 6.7517757,46.9451667 7.83333333,46.9451667 L19.5833333,46.9451667 L19.5833333,33.6066734 L27.4166667,33.6066734 L27.4166667,46.9451667 L39.1666667,46.9451667 C40.2482243,46.9451667 41.125,45.9498589 41.125,44.7220845 L41.125,22.2822926 C40.4887822,22.4116582 39.8442868,22.4815492 39.198,22.4912623 Z"
id="Path"></path>
</g>
</g>
</g>
</g>
</svg>
</div>
<span class="nav-link-text ms-1">Home</span>
</a>
</li>
<li class="nav-item mt-3">
<h6 class="ps-4 ms-2 text-uppercase text-xs font-weight-bolder opacity-6">Settings
Categories</h6>
</li>
<% settings.forEach(s=> { %>
<a class="<%- s.categoryId %>">
<% if(s.premium) { %>
<div class="sidebarPremium"><i style="color: var(--colone) !important;"
class="fas fa-crown"></i></div>
<% } %>
<li class="nav-item categories" id="<%- s.categoryId %>">
<a class="nav-link <% if (req.params.category == s.categoryId) { %>active<% } %>"
id="<%- s.categoryId %>">
<% if(s.categoryImageURL) { %>
<div
class="icon icon-shape icon-sm shadow border-radius-md bg-white text-center me-2 d-flex align-items-center justify-content-center">
<img width="20px" src="<%= s.categoryImageURL %>">
</div>
<% } %>
<span class="nav-link-text ms-1">
<%- s.categoryName %>
</span>
<% if(s.toggleable) { %>
<span style="text-align: right; width: 100%;">
<div class="form-check form-switch ps-0"
style="float: right !important;">
<input name="<%- s.categoryId %>"
category="<%- s.categoryName %>" switch="true"
class="form-check-input ms-auto category-toggle"
style="height: 20px !important; margin-left: 10px !important;"
type="checkbox" id="switch-<%= s.categoryId %>"
<%=toggle[s.categoryId] ? "checked" : "" %>
>
<label style="z-index: 100; position: relative;"
class="form-check-label text-body ms-3 text-truncate w-80 mb-0 d-none"
for="switch-<%= s.categoryId %>"></label>
</div>
</span>
<% } %>
</a>
</li>
<% }) %>
</ul>
</div>
<% if(themeConfig?.premium && req.session.user) { %>
<div class="sidenav-footer mx-3 pb-4" style="position: absolute;bottom: 0;">
<%- include('partials/premium.ejs') %>
</div>
<% } %>
</div>
</aside>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<nav style="padding-bottom: 0;"
class="navbar navbar-main navbar-expand-lg px-0 mx-4 shadow-none border-radius-xl pb-4" id="navbarBlur"
navbar-scroll="false">
<div class="container-fluid py-1 px-3">
<nav aria-label="breadcrumb">
<ol class="breadcrumb bg-transparent mb-0 pb-0 pt-1 px-0 me-sm-6 me-5">
<li class="breadcrumb-item text-sm"><a class="opacity-9 text-dark"
href="javascript:">Pages</a>
</li>
<li class="breadcrumb-item text-sm text-dark active" aria-current="page">Dashboard</li>
</ol>
<h6 class="font-weight-bolder mb-0">Manage Guilds</h6>
</nav>
<div class="collapse navbar-collapse mt-sm-0 mt-2 me-md-0 me-sm-4" id="navbar">
<div class="ms-md-auto pe-md-3 d-flex align-items-center">
</div>
<ul class="navbar-nav justify-content-end">
<div class="_3a41" style="display: contents;">
<% for(var i in req.session.guilds){ if((req.session.guilds[i].permissions &
0x00000020)==0x00000020){ if(bot.guilds.cache.get(req.session.guilds[i].id)){ const
g=bot.guilds.cache.get(req.session.guilds[i].id); let icon; if (!g.iconURL())
icon=themeConfig.icons.noGuildIcon; else icon=g.iconURL(); let gClass="server" ; if
(g.id===guild.id) gClass="server activeServer" ; %>
<a href="/settings/<%- g.id %>" style="padding-right: 10px;">
<div class="<%- gClass %>"><img height="64" width="64" src="<%- icon %>"
alt="<%- g.name %>"></div>
</a>
<% } } } %>
<a href="/manage">
<div class="server">
<div class="newServer"><i class="fa fa-plus"
style="margin: 0;position: absolute;top: 50%;left: 50%;-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);"></i>
</div>
</div>
</a>
</div>
<li class="nav-item d-xl-none ps-3 d-flex align-items-center">
<a onclick="toggleSidenav()" style="cursor: pointer;" class="nav-link text-body p-0"
id="iconNavbarSidenav">
<div class="sidenav-toggler-inner">
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
<i class="sidenav-toggler-line"></i>
</div>
</a>
</li>
</ul>
</div>
</div>
</nav>
<% const images=["curved-1", "curved-2" , "curved-3" , "curved-4" , "curved-5" , "curved-6" , "curved-7"
, "curved-8" , "curved-9" , "curved-10" , "curved-11" , "curved-12" , "curved-13" , "curved-14"
, "curved-15" , "curved-16" , "curved-17" , "curved-18" ]; const image=images[Math.floor(Math.random() *
images.length)]; %>
<div class="container-fluid">
<div class="page-header min-height-300 border-radius-xl mt-4"
style="background-image: url('/img/curved-images/<%- image %>.webp'); background-position-y: 50%;">
<span class="mask bg-gradient-primary opacity-6"></span>
</div>
<div class="card card-body blur shadow-blur mx-4 mt-n6 overflow-hidden">
<div class="row gx-4">
<% if(gIcon) { %>
<div class="col-auto">
<div class="avatar avatar-xl position-relative">
<img id="img" src="<%= gIcon %>" alt="profile_image"
class="w-100 border-radius-lg shadow-sm">
</div>
</div>
<% } %>
<div class="col-auto my-auto">
<div class="h-100">
<h5 id="title" class="mb-1">
<%= guild.name %>
</h5>
<p id="desc" class="mb-0 font-weight-bold text-sm">
<b>Server ID: </b>
<%= guild.id %>
</p>
</div>
</div>
<% if (themeConfig.leaderboard) { %>
<div class="col-lg-4 col-md-6 my-sm-auto ms-sm-auto me-sm-0 mx-auto mt-3">
<div class="nav-wrapper position-relative end-0">
<ul class="nav nav-pills nav-fill p-1 bg-transparent" role="tablist">
<li class="nav-item">
<a class="nav-link mb-0 px-0 py-1"
href="/leaderboard/<%= req.params.id %>">
<svg class="text-dark" width="16px" height="16px"
viewBox="0 0 42 42" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
<g transform="translate(-2319.000000, -291.000000)"
fill="#FFFFFF" fill-rule="nonzero">
<g transform="translate(1716.000000, 291.000000)">
<g transform="translate(603.000000, 0.000000)">
<path class="color-background"
d="M22.7597136,19.3090182 L38.8987031,11.2395234 C39.3926816,10.9925342 39.592906,10.3918611 39.3459167,9.89788265 C39.249157,9.70436312 39.0922432,9.5474453 38.8987261,9.45068056 L20.2741875,0.1378125 L20.2741875,0.1378125 C19.905375,-0.04725 19.469625,-0.04725 19.0995,0.1378125 L3.1011696,8.13815822 C2.60720568,8.38517662 2.40701679,8.98586148 2.6540352,9.4798254 C2.75080129,9.67332903 2.90771305,9.83023153 3.10122239,9.9269862 L21.8652864,19.3090182 C22.1468139,19.4497819 22.4781861,19.4497819 22.7597136,19.3090182 Z">
</path>
<path class="color-background"
d="M23.625,22.429159 L23.625,39.8805372 C23.625,40.4328219 24.0727153,40.8805372 24.625,40.8805372 C24.7802551,40.8805372 24.9333778,40.8443874 25.0722402,40.7749511 L41.2741875,32.673375 L41.2741875,32.673375 C41.719125,32.4515625 42,31.9974375 42,31.5 L42,14.241659 C42,13.6893742 41.5522847,13.241659 41,13.241659 C40.8447549,13.241659 40.6916418,13.2778041 40.5527864,13.3472318 L24.1777864,21.5347318 C23.8390024,21.7041238 23.625,22.0503869 23.625,22.429159 Z"
opacity="0.7"></path>
<path class="color-background"
d="M20.4472136,21.5347318 L1.4472136,12.0347318 C0.953235098,11.7877425 0.352562058,11.9879669 0.105572809,12.4819454 C0.0361450918,12.6208008 6.47121774e-16,12.7739139 0,12.929159 L0,30.1875 L0,30.1875 C0,30.6849375 0.280875,31.1390625 0.7258125,31.3621875 L19.5528096,40.7750766 C20.0467945,41.0220531 20.6474623,40.8218132 20.8944388,40.3278283 C20.963859,40.1889789 21,40.0358742 21,39.8806379 L21,22.429159 C21,22.0503869 20.7859976,21.7041238 20.4472136,21.5347318 Z"
opacity="0.7"></path>
</g>
</g>
</g>
</g>
</svg>
<span class="ms-1">Leaderboard</span>
</a>
</li>
</div>
</div>
<% } %>
</div>
</div>
<style>
.form-switch.larger .form-check-input:checked:after {
transform: scale(1.5) translate(23px, 3px);
}
.form-switch.larger .form-check-input::after {
transform: scale(1.5) translate(5px, 3px);
}
</style>
<% if (!req.params.category) { %>
<div class="container-fluid py-4 settings">
<div class="row">
<% settings.forEach(s=> { %>
<a style="color: inherit; text-decoration: none;" href="/settings/<%- req.params.id %>/<%= s.categoryId %>">
<div style="flex: 50%;" class="item" id="divtable">
<div class="card mb-4">
<div class="card-header d-flex"
style="border-radius: 10px; justify-content: space-between;">
<div>
<h4>
<%- s.categoryName %>
</h4>
<p>
<%- s.categoryDescription %>
</p>
</div>
<div>
<% if(s.toggleable) { %>
<span style="text-align: right; width: 100%;">
<div class="form-check form-switch ps-0 larger"
style="float: right !important;">
<input name="<%- s.categoryId %>"
category="<%- s.categoryName %>" switch="true"
class="form-check-input ms-auto category-toggle"
style="height: 20px !important; margin-left: 10px !important; height: 30px !important; width: 60px !important;"
type="checkbox" id="switch-<%= s.categoryId %>"
<%=toggle[s.categoryId] ? "checked" : "" %>
>
<label style="z-index: 100; position: relative;"
class="form-check-label text-body ms-3 text-truncate w-80 mb-0 d-none"
for="switch-<%= s.categoryId %>"></label>
</div>
</span>
<% } %>
</div>
</div>
</div>
</div>
</a>
<% }) %>
</div>
</div>
<% } %>
</div>
<div style="padding-bottom: 100px;">
<% settings.forEach(s=> {
if (s.categoryId !== req.params.category) return;
%>
<script>
document.addEventListener("DOMContentLoaded", function () {
$(`#title`).html(`<%- s.categoryName %>`)
$(`#desc`).html(`<%- s.categoryDescription %>`)
<% if(s.categoryImageURL) { %>
$("#img").attr("src", `<%- s.categoryImageURL %>`);
<% } %>
});
</script>
<div class="container-fluid settings mb-4" id="<%= s.categoryId %>div">
<% s.categoryOptionsList.forEach( option=> {
let Allowed = canUseList[s.categoryId][option.optionId];
%>
<% if (!option.themeOptions) option.themeOptions={}; let
themeOptions=option.themeOptions; %>
<% if (themeOptions?.startNewSection?.first || !themeOptions?.startNewSection) { %>
<div class="mt-4">
<div class="col-12 item starting">
<div class="card mb-4">
<div class="card-header pb-0">
<% if(option.optionType.type !=="collapsable" &&
option.optionType.type !=="modal" ) { if
(!option.themeOptions?.hideOptionName || !option.optionName)
{ %>
<% if (themeOptions?.startNewSection?.first &&
themeOptions?.startNewSection?.title ) { %>
<h4>
<%- themeOptions?.startNewSection?.title %>
</h4>
<% } else { %>
<h4>
<%- option.optionName %>
</h4>
<% } %>
<% } %>
<% if (!option.themeOptions?.hideOptionDesc
|| !option.optionDescription) { %>
<% if
(themeOptions?.startNewSection?.first
&&
themeOptions?.startNewSection?.description)
{ %>
<a>
<%- themeOptions?.startNewSection?.description
%>
</a>
<% } else { %>
<a>
<%- option.optionDescription
%>
</a>
<% } %>
<% } } %>
</div>
<% if(option.optionType.type !=="collapsable" &&
option.optionType.type !=="modal" ) { %>
<hr>
<% } %>
<div class="card-body px-0 pt-0 pb-2"
style="padding: 0 1.5rem 1.5rem !important;">
<% } %>
<div class="mt-3">
<%- include(`components/formTypes/${option.optionType.type}.ejs`,
{option, s, Allowed}); %>
</div>
<% if (!themeOptions?.startNewSection ||
themeOptions?.startNewSection &&
themeOptions?.startNewSection?.last &&
!themeOptions?.startNewSection?.first) { %>
</div>
</div>
</div>
</div>
<% } %>
<% }); %>
<% }); %>
</div>
<div id="saveChanges"
class="animated card card-body blur shadow-blur mx-4 mt-n6 overflow-hidden">
<div class="row gx-4">
<div class="col-auto my-auto">
<div class="h-100">
<h5 class="mb-1">
Changes Detected!
</h5>
</div>
</div>
<div class="buttons col-lg-4">
<div class="nav-wrapper position-relative end-0" style="width: max-content;">
<ul class="nav nav-pills nav-fill p-1 bg-transparent" role="tablist">
<li class="nav-item" style="height: min-content;">
<a style="float: right; margin: 0;" class="btn" data-bs-toggle="tab"
onclick="discardChanges()" role="tab" aria-selected="false">
<span class="ms-1">Reset</span>
</a>
</li>
<li class="nav-item">
<a style="margin: 0 20px; float: right;" class="btn bg-gradient-primary"
data-bs-toggle="tab" onclick="saveChanges()" role="tab"
aria-selected="false">
<span class="ms-1">Save Changes</span>
</a>
</li>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- Core JS Files -->
<script id="helper" category="<%= req.params.category %>" gid="<%= req.params.id %>" refresh="<%= settings.find(s => s.categoryId === req.params?.category)?.refreshOnSave || false %>"
src="/js/dashboard/functions.js"></script>
<script src="../assets/js/core/popper.min.js"></script>
<script src="../assets/js/core/bootstrap.min.js"></script>
<script src="../assets/js/plugins/perfect-scrollbar.min.js"></script>
<script src="../assets/js/plugins/smooth-scrollbar.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/bootstrap.tagsinput/0.4.2/bootstrap-tagsinput.min.js"></script>
<script>
var win = navigator.platform.indexOf('Win') > -1;
if (win && document.querySelector('#sidenav-scrollbar')) {
var options = {
damping: '0.5'
}
Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
}
</script>
<script>
$(document).ready(function () {
<% if ( req.query.error === "premiumRequired" ) { %>
sweetalert("error", "<%= themeConfig?.sweetalert?.error?.requirePremium || 'Premium is required for this category' %>", 2000);
window.history.replaceState({}, title, window.location.href.split('?')[0]);
<% } %>
$('.multiSelect').select2({ closeOnSelect: true });
$(".tags").select2({ theme: "classic", tags: true })
$(".select2-selection").addClass("form-control")
$(".select2-search__field").attr('formType', 'tagInput');
});
function updateSlider(slideAmount, id) {
var sliderDiv = document.getElementById(`value_${id}`);
sliderDiv.innerHTML = slideAmount;
}
</script>
<!-- Github buttons -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<!-- Control Center for Soft Dashboard: parallax effects, scripts for the example pages etc -->
<%- include('partials/scripts.ejs', {now: "settings" }) %>
</body>
</html>

View file

@ -0,0 +1,314 @@
<!--
=========================================================
* Soft UI Dashboard - v1.0.3
=========================================================
* Product Page: https://www.creative-tim.com/product/soft-ui-dashboard
* Copyright 2021 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://www.creative-tim.com/license)
* Coded by Creative Tim
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->
<!DOCTYPE html>
<html lang="en">
<%- include('partials/preloader.ejs', {now:'index', req: req}) %>
<%
let currentScheme = themeConfig.colorScheme;
let colone;
let coltwo;
let gradone;
let gradtwo;
if (currentScheme == "blue") {
colone = "#21d4fd";
coltwo = "#2152ff";
gradone = "rgba(33,212,253,0.1)";
gradtwo = "rgba(33,82,255,0.1)";
}
if (currentScheme == "pink") {
colone = "#FF0080";
coltwo = "#7928CA";
gradone = "rgba(255,0,128,0.1)";
gradtwo = "rgba(121,40,202,0.1)";
}
if (currentScheme == "red") {
colone = "#ea0606";
coltwo = "#ff667c";
gradone = "rgba(255,102,124,0.1)";
gradtwo = "rgba(234,6,6,0.1)";
}
if (currentScheme == "green") {
colone = "#17ad37";
coltwo = "#98ec2d";
gradone = "rgba(23,173,55,0.1)";
gradtwo = "rgba(152,236,45,0.1)";
}
if (currentScheme == "yellow") {
colone = "#f53939";
coltwo = "#fbcf33";
gradone = "rgba(245,57,57,0.1)";
gradtwo = "rgba(251,207,51,0.1)";
}
if (currentScheme == "dark") {
colone = "#141727";
coltwo = "#3A416F";
gradone = "rgba(20,23,39,0.1)";
gradtwo = "rgba(58,65,111,0.1)";
}
if (currentScheme == "custom") {
colone = themeConfig.themeColors.primaryColor;
coltwo = themeConfig.themeColors.secondaryColor;
gradone = hexToRgbA(themeConfig.themeColors.primaryColor, 0.1);
gradtwo = hexToRgbA(themeConfig.themeColors.secondaryColor, 0.1);
}
function hexToRgbA(hex){
var c;
if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)){
c= hex.substring(1).split('');
if(c.length== 3){
c= [c[0], c[0], c[1], c[1], c[2], c[2]];
}
c= '0x'+c.join('');
return 'rgba('+[(c>>16)&255, (c>>8)&255, c&255].join(',')+',1)';
}
throw new Error('Bad Hex');
}
%>
<head>
<style>
.unselectable {
-webkit-user-select: none;
-webkit-touch-callout: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>
<%- themeConfig?.customHtml %>
</head>
<body class="g-sidenav-show bg-gray-100" id="scroll">
<%- include('partials/preload.ejs') %>
<%- include('partials/sidebar.ejs', {config: config, now:'shards'}) %>
<div class="main-content position-relative bg-gray-100 max-height-vh-100 h-100">
<!-- Navbar -->
<%- include('partials/navbar.ejs', {now:'shards'}) %>
<!-- End Navbar -->
<% let image; if (themeConfig.shardspage.backgroundUrl) { image=themeConfig.shardspage.backgroundUrl } else { const images=["curved-1", "curved-2" , "curved-3" , "curved-4" , "curved-5" , "curved-6" , "curved-7"
, "curved-8" , "curved-9" , "curved-10" , "curved-11" , "curved-12" , "curved-13" , "curved-14"
, "curved-15" , "curved-16" , "curved-17" , "curved-18" ]; image="/img/curved-images/" + images[Math.floor(Math.random() *
images.length)]+ ".webp";} %>
<div class="container-fluid">
<div class="page-header min-height-300 border-radius-xl mt-4"
style="background-image: url('<%- image %>'); background-position-y: 50%;">
<span class="mask bg-gradient-primary opacity-6"></span>
</div>
<div class="card card-body blur shadow-blur mx-4 mt-n6 overflow-hidden">
<div class="row gx-4">
<div class="col-auto">
<div class="avatar avatar-xl position-relative">
<img id="img" src="<%- themeConfig.icons.sidebar.darkUrl %>" alt="profile_image"
class="w-100 border-radius-lg shadow-sm">
</div>
</div>
<div class="col-auto my-auto">
<div class="h-100">
<h5 id="title" class="mb-1">
Bot Shards Status
</h5>
<p id="desc" class="mb-0 font-weight-bold text-sm">
<b>Total Shards: </b>
<span id="totalshards">Loading</span>
</p>
</div>
</div>
</div>
</div>
<div class="row mt-4">
<div class="container">
<div class="row" style="row-gap: 1rem;" id="shardlist">
<span>
Loading...
</span>
</div>
</div>
</div>
<%- include('partials/footer.ejs') %>
</div>
</main>
</div>
<!-- Graph Code !-->
<%- include('partials/scripts.ejs', {now: "shards"}) %>
<script>
let graphs = {};
async function updateshards(first){
let timeout
await $.get("/shards/get", function(data, status){
if (first)
$('#shardlist').empty()
data = data.sort((a, b) => a.id - b.id);
$('#totalshards').html(data.length)
if (!first) {
for (const shard in data) {
const shardObj = data[shard];
$(`userCount-${shardObj.id}`).html(shardObj.users)
$(`serverCount-${shardObj.id}`).html(shardObj.servers)
$(`channelCount-${shardObj.id}`).html(shardObj.channels)
const graph = Chart.getChart(`chart-line-${shardObj.id}`)
graph.data.datasets[0].data = data[shard].ping;
graph.update();
}
}
if (first)
for (const shard in data) {
let row = $(`
<div class="col-sm-12 col-md-6">
<div class="card">
<div class="card-body p-3">
<div class="d-flex flex-column h-100">
<p class="mb-1 pt-2 text-bold">Shard - ${data[shard].id}</p>
<div class="m-0 d-flex" style="gap: 5px;">
<i class="ni ni-circle-08 align-self-center"></i> Users: <span id="userCount-${data[shard].id}">${data[shard].users.toLocaleString()}</span><br>
</div>
<div class="m-0 d-flex" style="gap: 5px;">
<i class="ni ni-laptop align-self-center"></i> Servers: <span id="serverCount-${data[shard].id}">${data[shard].guilds.toLocaleString()}</span><br>
</div>
<div class="m-0 d-flex" style="gap: 5px;">
<i class="ni ni-collection align-self-center"></i> Channels: <span id="channelCount-${data[shard].id}">${data[shard].channels.toLocaleString()}</span><br>
</div>
<div class="chart-container">
<canvas id="chart-line-${data[shard].id}" class="chart-canvas"></canvas>
</div>
</div>
</div>
</div>
</div>
`)
$('#shardlist').append(row.clone(true))
}
if (first) {
for (const shard in data) {
const graph = createGraph(data[shard]);
graphs[data[shard].id] = graph;
}
}
timeout = data[0].interval
});
return timeout
}
window.onload = async function() {
const interval = await updateshards(true)
setInterval(function(){
updateshards(false)
}, interval || 15000);
};
</script>
<script>
function createGraph(shard) {
const { id, ping, interval } = shard;
const seconds = interval / 1000;
let labels = [];
for (let i = 0; i < 10; i++) {
labels.push(`${i * seconds}s`);
}
let ctx = document.getElementById(`chart-line-${id}`).getContext("2d");
var gradientStroke1 = ctx.createLinearGradient(0, 230, 0, 50);
gradientStroke1.addColorStop(1, '<%= colone %>');
gradientStroke1.addColorStop(0.1, '<%= gradone %>');
gradientStroke1.addColorStop(0, '<%= gradtwo %>'); //purple colors
const chart = new Chart(ctx, {
type: "line",
data: {
labels,
datasets: [{
label: "ping",
tension: 0.4,
borderWidth: 0,
pointRadius: 0,
borderColor: "<%- colone %>",
borderWidth: 3,
backgroundColor: gradientStroke1,
fill: true,
data: ping,
maxBarThickness: 6
},
],
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false,
}
},
interaction: {
intersect: false,
mode: 'index',
},
scales: {
y: {
suggestedMin: 0,
grid: {
drawBorder: false,
display: true,
drawOnChartArea: true,
drawTicks: false,
borderDash: [5, 5]
},
ticks: {
display: true,
padding: 10,
color: '#b2b9bf',
font: {
size: 11,
family: "Open Sans",
style: 'normal',
lineHeight: 2
},
}
},
x: {
grid: {
drawBorder: false,
display: false,
drawOnChartArea: false,
drawTicks: false,
borderDash: [5, 5]
},
ticks: {
display: true,
color: '#b2b9bf',
padding: 20,
font: {
size: 11,
family: "Open Sans",
style: 'normal',
lineHeight: 2
},
}
},
},
},
});
return chart
}
</script>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,106 @@
.select2-selection.select2-selection--multiple {
background-color: #101112 !important;
border: none !important;
}
.select2-container--default .select2-selection--multiple {
background-color: #101112 !important;
border: none !important;
}
.select2-results__option.select2-results__option--selectable {
background: #101112 !important;
background-color: #101112 !important;
}
#select2-prefix-3r-results {
border: none !important;
}
.select2-selection__choice {
background-color: rgb(32, 31, 31) !important;
border: 1px solid rgb(32, 31, 31) !important;
border-radius: 4px;
box-sizing: border-box;
display: inline-block;
margin-left: 5px;
margin-top: 5px;
padding: 0;
padding-left: 20px;
position: relative;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: bottom;
white-space: nowrap;
}
.scrollbar-nav {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
}
h4 {
margin-top: 0px !important;
}
.svgText {
text-transform: capitalize !important;
font-weight: 500 !important;
letter-spacing: 0.05em;
}
.mleft15 {
margin-left: 15px;
}
.mbottom6 {
margin-bottom: 6px;
}
.cgray {
color: rgb(199, 196, 196) !important;
}
.column {
width: 30%;
margin-left: 30px;
}
.column2 {
width: 14%;
padding-left: 20px;
}
/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.column {
width: 100%;
margin-top: 10px;
}
.column2 {
width: 100%;
}
}
.nav-tabs .nav-link {
color: gray;
border: 0;
border-bottom: 1px solid grey;
}
.nav-tabs .nav-link:hover {
border: 0;
border-bottom: 1px solid grey;
}
.nav-tabs .nav-link.active {
color: #101112;
border: 0;
border-radius: 0;
border-bottom: 5px solid #101112;
}

View file

@ -0,0 +1,410 @@
._9e34 {
display: inline-block;
float: right;
background: #121416;
width: 4.5rem;
height: 3.7rem;
line-height: 3.7rem;
text-align: center;
border-radius: 5px;
margin-top: -0.8rem;
margin-right: -0.4rem;
}
._9ba7 {
font-family: Poppins, sans-serif;
display: -moz-box;
display: flex;
-moz-box-pack: justify;
justify-content: space-between;
-moz-box-align: center;
align-items: center;
align-content: center;
padding: 21px 50px;
}
._9ba7,
._9ba7 * {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
._9ba7 a {
color: inherit !important;
text-decoration: inherit !important;
}
._9ba7 img {
width: 30px;
}
._9ba7 ._04bd {
color: gold;
text-shadow: 0 0 6px #fff;
-webkit-animation-name: _04bd;
-moz-animation-name: _04bd;
animation-name: _04bd;
-webkit-animation-duration: 1s;
-moz-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-moz-animation-timing-function: linear;
animation-timing-function: linear;
-webkit-animation-direction: alternate;
-moz-animation-direction: alternate;
animation-direction: alternate;
}
@-webkit-keyframes _04bd {
0% {
text-shadow: 0 0 6px #fff;
}
to {
text-shadow: 0 0 12px #fff;
}
}
@-moz-keyframes _04bd {
0% {
text-shadow: 0 0 6px #fff;
}
to {
text-shadow: 0 0 12px #fff;
}
}
@keyframes _04bd {
0% {
text-shadow: 0 0 6px #fff;
}
to {
text-shadow: 0 0 12px #fff;
}
}
._9ba7 ._2957 {
font-family: Hind, sans-serif;
font-weight: 700;
font-size: 19px;
color: #fff;
cursor: pointer;
}
._9ba7 ._2957 img {
margin-right: 6px;
}
._9ba7 li._5bae {
display: -moz-inline-box;
display: inline-flex;
text-transform: uppercase;
font-weight: 700;
justify-content: space-around;
-moz-box-align: center;
align-items: center;
align-content: center;
list-style: none;
margin: 0;
padding: 0;
}
._9ba7 li._5bae ul {
font-size: 15px;
cursor: pointer;
margin: 0 0 0 50px;
padding: 0;
display: inline-block;
}
._9ba7 li._5bae ul:hover {
color: #fff;
}
._9ba7 li._5bae ul._508e {
background-color: #86c232;
color: #fff;
text-transform: none;
padding: 0.8rem 2.5rem;
border-radius: 1000px;
-webkit-box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.5);
box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.5);
text-shadow: 0 0 2px rgba(0, 0, 0, 0.3);
-webkit-transition: all 0.2s ease-in-out;
-moz-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
._9ba7 li._5bae ul._508e:hover {
background-color: #7eb62f;
padding: 0.8rem 3.2rem;
-webkit-box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.5), inset 0 0 3px #212325;
box-shadow: 0 0 36px 0 rgba(0, 0, 0, 0.5), inset 0 0 3px #212325;
}
._9ba7 li._5bae ul:first-child,
._9ba7 li._5bae ul:last-child,
._9ba7 li._5bae ul:nth-last-child(2) {
border: unset;
}
._9ba7 ._16cf {
width: 38px;
position: relative;
display: inline-block;
}
._9ba7 ._16cf ._2c18 {
display: inline-block;
position: absolute;
right: 0;
top: 67px;
background-color: #17191a;
padding: 1rem 0.8rem;
-webkit-box-shadow: 5px 5px 0 0 #121416;
box-shadow: 5px 5px 0 0 #121416;
border-radius: 7px;
min-width: 21rem;
z-index: 1010;
}
._9ba7 ._16cf ._2c18 li {
list-style: none;
padding: 0.8rem 1.3rem;
cursor: pointer;
border-radius: 6px;
}
._9ba7 ._16cf ._2c18 li:hover {
background-color: #121416;
}
._9ba7 ._16cf ._2c18 li._61b6 {
color: grey;
cursor: default;
}
._9ba7 ._16cf ._2c18 li._61b6:hover {
background-color: unset;
}
._9ba7 ._16cf img {
cursor: pointer;
border-radius: 50%;
width: 38px;
}
@media (max-width: 1200px) {
._9ba7 {
padding: 10px 14px;
}
._9ba7 .fc79 {
width: 100%;
display: -moz-box;
display: flex;
-moz-box-pack: justify;
justify-content: space-between;
}
._9ba7 ._2957 {
font-size: 0 !important;
}
._9ba7 ._2957 img {
margin-right: 14px !important;
}
._9ba7 ul {
margin: 0 0 0 15px !important;
}
}
._85d7 {
max-width: 1024px;
margin: 0 5%;
}
@media (max-width: 1200px) {
._85d7 {
margin: 0 1rem;
}
}
._98a6 {
position: relative;
text-align: center;
margin-bottom: -120px;
}
._98a6 h1,
._98a6 h2 {
margin: 0;
}
._98a6 h1 {
margin-top: 10rem;
font-size: 3.3em;
font-weight: 800;
}
._98a6 h2 {
margin-top: 1.5rem;
font-size: 2rem;
font-weight: 600;
}
._98a6 ._9b89 {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
._82d1 {
background-color: rgba(0, 0, 0, 0.2);
position: relative;
width: 120px;
height: 120px;
-webkit-box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.2);
box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.2);
border-radius: 8px;
overflow: hidden;
display: inline-block;
cursor: pointer;
margin: 20px;
opacity: 0.95;
background-size: 100%;
background-position: 50%;
-webkit-transition: background-size 0.1s linear, opacity 0.1s linear;
-moz-transition: background-size 0.1s linear, opacity 0.1s linear;
transition: background-size 0.1s linear, opacity 0.1s linear;
}
._82d1:hover {
background-size: 110% !important;
opacity: 1 !important;
}
._82d1:before {
-webkit-box-shadow: inset 0 0 0 #9d9d9d;
box-shadow: inset 0 0 0 #9d9d9d;
-webkit-filter: blur(0);
filter: blur(0);
overflow: hidden;
display: block;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
content: "";
background: inherit;
-webkit-transition: -webkit-box-shadow 0.1s linear,
-webkit-filter 0.1s linear;
transition: -webkit-box-shadow 0.1s linear, -webkit-filter 0.1s linear;
-moz-transition: box-shadow 0.1s linear, filter 0.1s linear;
transition: box-shadow 0.1s linear, filter 0.1s linear;
transition: box-shadow 0.1s linear, filter 0.1s linear,
-webkit-box-shadow 0.1s linear, -webkit-filter 0.1s linear;
}
._82d1:hover:before {
-webkit-box-shadow: inset 0 0 1000px hsla(0, 0%, 61.6%, 0.8);
box-shadow: inset 0 0 1000px hsla(0, 0%, 61.6%, 0.8);
-webkit-filter: blur(2px);
filter: blur(2px);
}
._82d1:hover:after {
opacity: 1;
padding-top: 0;
}
._82d1:after {
content: attr(data-guildname);
text-align: center;
color: #fff;
font-size: 15px;
padding: 30px 0.5rem 0.5rem;
display: -moz-box;
display: flex;
-moz-box-pack: center;
justify-content: center;
-moz-box-align: center;
align-items: center;
height: 100%;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
font-weight: 700;
opacity: 0;
-webkit-transition: opacity 0.1s linear, padding-top 0.1s linear;
-moz-transition: opacity 0.1s linear, padding-top 0.1s linear;
transition: opacity 0.1s linear, padding-top 0.1s linear;
}
._4204 ._82d1 {
border-radius: 50%;
height: 64px;
width: 64px;
margin: 10px;
}
._4204 ._82d1:after {
font-weight: lighter;
font-size: 10px;
}
@media (max-width: 1200px) {
._98a6 {
padding: 10px;
margin-bottom: -5vw;
}
._98a6 h1 {
margin-top: 10vw;
font-size: 6vw;
}
._98a6 h2 {
margin-top: 1.5vw;
font-size: 2.5vw;
}
._82d1 {
margin: 1rem;
width: 15rem;
height: 15rem;
}
._82d1:before {
-webkit-filter: blur(3px) saturate(80%) contrast(80%) brightness(0.5);
filter: blur(3px) saturate(80%) contrast(80%) brightness(0.5);
background: inherit;
}
._82d1:after {
opacity: 1;
padding-top: 0;
font-size: 2rem;
font-weight: 600;
}
._4204 ._82d1 {
margin: 1rem;
width: 12rem;
height: 12rem;
}
}

View file

@ -0,0 +1,860 @@
@media only screen and (max-width: 820px) {
.card.card-body.w-40 {
width: 100% !important;
margin-top: 1rem;
}
.flexy-info {
display: block !important;
}
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
[type="text"] {
outline: 0;
-webkit-appearance: none;
-moz-appearance: textfield;
}
.input-div {
position: relative;
}
.select2-container--classic .select2-selection--multiple,
.select2-container--default .select2-selection--multiple {
padding-top: 7px !important;
padding-bottom: 7px !important;
padding-left: 7px !important;
padding-right: 5px !important;
}
.input-div [type="text"] {
cursor: text !important;
letter-spacing: 0.6px;
-webkit-user-select: none !important;
-moz-user-select: none !important;
-ms-user-select: none !important;
user-select: none !important;
white-space: pre-wrap;
min-height: 4.4rem;
}
.embed-content {
padding: 2rem 4rem;
border-radius: 8px;
color: #dcddde;
background: #36393f;
font-family: Whitney, sans-serif;
margin: 3rem 2rem 0;
font-size: 1.6rem;
line-height: 2.2rem;
letter-spacing: normal;
font-weight: 400;
position: relative;
}
.embed-content .embed-box {
transform: scale(0.75);
transform-origin: top left;
background: #2f3136;
border-left: 4px solid transparent;
position: relative;
border-radius: 4px;
margin: 2px 0;
padding: 0.8rem 1.6rem 1.6rem 1.2rem;
max-width: 490px;
}
.embed-content .author-unknown {
position: absolute;
cursor: pointer;
top: 0;
left: -4px;
bottom: 0;
width: 10px;
}
.embed-content [type="text"] {
padding: 0;
min-height: 0;
border: unset;
-webkit-box-shadow: unset !important;
box-shadow: unset !important;
background: none;
font-size: inherit;
line-height: inherit;
letter-spacing: inherit;
font-weight: inherit;
color: inherit;
}
.embed-content [type="text"]::-webkit-input-placeholder {
font-style: italic !important;
color: grey !important;
}
.embed-content [type="text"]:-ms-input-placeholder {
font-style: italic !important;
color: grey !important;
}
.embed-content [type="text"]::placeholder {
font-style: italic !important;
color: grey !important;
}
.embed-content .embed-author [type="text"] {
line-height: 1.4rem;
font-weight: 500;
color: #fff;
}
.embed-content .embed-author [type="text"],
.embed-content .embed-desc [type="text"] {
font-size: 1.4rem;
min-height: 1.4rem;
letter-spacing: normal;
margin-top: 8px;
}
.embed-content .embed-desc [type="text"] {
line-height: 1.8rem;
font-weight: 400;
color: #dcddde;
}
.embed-content .embed-title [type="text"] {
font-size: 1.6rem;
min-height: 1.6rem;
line-height: 2.2rem;
letter-spacing: normal;
font-weight: 600;
margin-top: 8px;
color: #fff;
}
.embed-content .embed-footer [type="text"] {
font-size: 1.2rem;
min-height: 1.2rem;
line-height: 1.6rem;
letter-spacing: normal;
font-weight: 500;
margin-top: 8px;
color: #dcddde;
}
._3a41 .server.activeServer:before {
content: "" !important;
cursor: default !important;
position: absolute !important;
display: block !important;
bottom: 6px !important;
top: 50px !important;
border-radius: 6px !important;
left: 2px !important;
width: 41px !important;
height: 5px !important;
background-image: linear-gradient(
310deg,
#7928ca 0%,
#ff0080 100%
) !important;
}
/*! CSS Used from: http://panel.imidnight.ml:1100/testcdn/f47b986ff7b093031dc7.css */
*,
:after,
:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
img {
vertical-align: middle;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
img {
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
a,
a:hover {
text-decoration: inherit;
}
/*! CSS Used from: http://panel.imidnight.ml:1100/testcdn/guild.css */
*,
:after,
:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
div {
margin: 0;
padding: 0;
border: 0;
font-weight: inherit;
font-style: inherit;
font-family: inherit;
vertical-align: baseline;
}
::-webkit-input-placeholder {
font-family: var(--font-primary);
font-weight: 400;
}
::-moz-placeholder {
font-family: var(--font-primary);
font-weight: 400;
}
:-ms-input-placeholder {
font-family: var(--font-primary);
font-weight: 400;
}
::placeholder {
font-family: var(--font-primary);
font-weight: 400;
}
::-webkit-input-placeholder {
font-family: var(--font-primary);
text-rendering: optimizeLegibility;
}
::-moz-placeholder {
font-family: var(--font-primary);
text-rendering: optimizeLegibility;
}
:-ms-input-placeholder {
font-family: var(--font-primary);
text-rendering: optimizeLegibility;
}
::placeholder {
font-family: var(--font-primary);
text-rendering: optimizeLegibility;
}
div {
outline: 0;
}
._3a41 {
overflow: auto;
}
._3a41 {
display: -moz-box;
display: flex;
-moz-box-pack: left;
justify-content: left;
-moz-box-orient: vertical;
-moz-box-direction: normal;
flex-direction: column;
-moz-box-align: center;
align-items: center;
scrollbar-width: none;
-ms-overflow-style: none;
}
._3a41::-webkit-scrollbar {
display: none;
}
._3a41 .server {
margin: 4px 0;
cursor: pointer;
position: relative;
}
._3a41 .server.activeServer:before {
content: "";
cursor: default;
position: absolute;
display: block;
top: 6px;
bottom: 6px;
left: -10px;
width: 3px;
border-radius: 6px;
background: #b4b7b9;
}
._3a41 .server .newServer,
._3a41 .server img {
width: 42px;
height: 42px;
border-radius: 50%;
-webkit-transition: border-radius 0.2s ease;
-moz-transition: border-radius 0.2s ease;
transition: border-radius 0.2s ease;
}
._3a41 .server .newServer {
background: #1a1a1a;
color: #b4b7b9;
line-height: 42px;
text-align: center;
font-size: 13px;
}
._3a41 .server.activeServer img,
._3a41 .server:hover .newServer,
._3a41 .server:hover img {
border-radius: 15px;
}
@media (max-width: 1200px) {
.sidebar ._3a41 {
opacity: 0;
z-index: -1;
pointer-events: none;
}
}
/*! CSS Used from: Embedded ; media=all */
@media all {
.fa {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.fa-plus:before {
content: "\f067";
}
.fa {
font-family: "Font Awesome 5 Free";
}
.fa {
font-weight: 900;
}
}
/*! CSS Used from: Embedded ; media=all */
@media all {
.fa {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.fa-plus:before {
content: "\f067";
}
.fa {
font-family: "Font Awesome 5 Free";
}
.fa {
font-weight: 900;
}
}
/*! CSS Used fontfaces */
@font-face {
font-family: "Font Awesome 5 Free";
font-style: normal;
font-weight: 400;
font-display: block;
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.eot);
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.eot?#iefix)
format("embedded-opentype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.woff2)
format("woff2"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.woff)
format("woff"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.ttf)
format("truetype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.svg#fontawesome)
format("svg");
}
@font-face {
font-family: "Font Awesome 5 Free";
font-style: normal;
font-weight: 900;
font-display: block;
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.eot);
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.eot?#iefix)
format("embedded-opentype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.woff2)
format("woff2"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.woff)
format("woff"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.ttf)
format("truetype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.svg#fontawesome)
format("svg");
}
@font-face {
font-family: "Font Awesome 5 Free";
font-style: normal;
font-weight: 400;
font-display: block;
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.eot);
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.eot?#iefix)
format("embedded-opentype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.woff2)
format("woff2"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.woff)
format("woff"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.ttf)
format("truetype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-regular-400.svg#fontawesome)
format("svg");
}
@font-face {
font-family: "Font Awesome 5 Free";
font-style: normal;
font-weight: 900;
font-display: block;
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.eot);
src: url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.eot?#iefix)
format("embedded-opentype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.woff2)
format("woff2"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.woff)
format("woff"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.ttf)
format("truetype"),
url(https://ka-f.fontawesome.com/releases/v5.15.4/webfonts/free-fa-solid-900.svg#fontawesome)
format("svg");
}
.nav-link:not(.active) {
cursor: pointer;
}
@media only screen and (max-width: 820px) {
.card.card-body.w-40 {
width: 100% !important;
margin-top: 1rem;
}
.flexy-info {
display: block !important;
}
}
._3a41 .server.activeServer:before {
content: "" !important;
cursor: default !important;
position: absolute !important;
display: block !important;
bottom: 6px !important;
top: 50px !important;
border-radius: 6px !important;
left: 2px !important;
width: 41px !important;
height: 5px !important;
background-image: linear-gradient(var(--gradient)) !important;
}
@media only screen and (max-width: 1199px) {
.animated {
width: calc(100% - 45px) !important;
}
}
.animated .row {
justify-content: space-between;
}
.animated .row .buttons {
margin-right: 20px;
width: auto !important;
}
.animated {
position: fixed;
width: calc(100% - 323px);
bottom: -250px;
box-shadow: var(--colone) 0px 0px 10px 3px !important;
border-radius: 0.5rem;
border-color: var(--colone) !important;
transition: bottom 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55) 0s,
background-color 400ms ease-out 0s;
}
datalist {
display: flex !important;
justify-content: space-between !important;
color: #ff0080 !important;
width: 100% !important;
width: 98.99% !important;
margin-left: 15px;
}
input {
width: 50%;
}
* datalist {
display: flex;
justify-content: space-between;
color: red;
width: 100%;
}
input {
width: 50%;
}
.select2-container--default .select2-selection--multiple,
.select2-container--classic .select2-selection--multiple {
border: 1px solid #d2d6da !important;
}
/*! CSS Used from: https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css */
.select2-hidden-accessible {
border: 0 !important;
clip: rect(0 0 0 0) !important;
-webkit-clip-path: inset(50%) !important;
clip-path: inset(50%) !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
white-space: nowrap !important;
}
/*! CSS Used from: https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css */
.select2-hidden-accessible {
border: 0 !important;
clip: rect(0 0 0 0) !important;
-webkit-clip-path: inset(50%) !important;
clip-path: inset(50%) !important;
height: 1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important;
white-space: nowrap !important;
}
/*! CSS Used from: http://panel.imidnight.ml:1100/testcdn/f47b986ff7b093031dc7.css */
*,
:after,
:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
a {
color: #0d6efd;
text-decoration: underline;
}
a:hover {
color: #0a58ca;
}
img {
vertical-align: middle;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
img {
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
a,
a:hover {
text-decoration: inherit;
}
._3a41 {
overflow: auto;
}
._3a41 {
display: -moz-box;
display: flex;
-moz-box-pack: left;
justify-content: left;
-moz-box-orient: vertical;
-moz-box-direction: normal;
flex-direction: column;
-moz-box-align: center;
align-items: center;
scrollbar-width: none;
-ms-overflow-style: none;
}
._3a41::-webkit-scrollbar {
display: none;
}
._3a41 .server {
margin: 4px 0;
cursor: pointer;
position: relative;
}
._3a41 .server.activeServer:before {
content: "";
cursor: default;
position: absolute;
display: block;
top: 6px;
bottom: 6px;
left: -10px;
width: 3px;
border-radius: 6px;
background: #b4b7b9;
}
._3a41 .server .newServer,
._3a41 .server img {
width: 42px;
height: 42px;
border-radius: 50%;
-webkit-transition: border-radius 0.2s ease;
-moz-transition: border-radius 0.2s ease;
transition: border-radius 0.2s ease;
}
._3a41 .server .newServer {
background: #1a1a1a;
color: #b4b7b9;
line-height: 42px;
text-align: center;
font-size: 13px;
}
._3a41 .server.activeServer img,
._3a41 .server:hover .newServer,
._3a41 .server:hover img {
border-radius: 15px;
}
@media (max-width: 1200px) {
.sidebar ._3a41 {
opacity: 0;
z-index: -1;
pointer-events: none;
}
}
/*! CSS Used from: Embedded ; media=all */
@media all {
.fa {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.fa-plus:before {
content: "\f067";
}
.fa {
font-family: "Font Awesome 5 Free";
}
.fa {
font-weight: 900;
}
}
/*! CSS Used from: Embedded ; media=all */
@media all {
.fa {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
}
.fa-plus:before {
content: "\f067";
}
.fa {
font-family: "Font Awesome 5 Free";
}
.fa {
font-weight: 900;
}
}
.placeholder {
margin: 0;
padding: 0;
border: 0;
font-weight: inherit;
font-style: inherit;
font-family: inherit;
vertical-align: baseline;
}
.placeholder {
outline: 0;
}
._87eb {
font-size: 1.1rem;
margin: 13px 5px 5px;
display: inline-block;
padding: 3px 9px;
border-radius: 3px;
background: #232629;
letter-spacing: 0.5px;
}
.select2select2-container.select2-container--classic.select2-container--focus {
width: 100% !important;
}
.select2.select2-container.select2-container--classic {
width: 100% !important;
}
.select2-container--classic.select2-container--open
.select2-selection--multiple {
box-shadow: var(--colone) 0px 0px 0px 2px !important;
border-color: var(--colone) !important;
}
.select2-container--classic.select2-container--open .select2-dropdown {
box-shadow: var(--colone) 0px 0px 0px 2px !important;
border-color: var(--colone) !important;
}
.select2-selection.select2-selection--multiple.form-control[aria-expanded="true"] {
box-shadow: var(--colone) 0px 0px 0px 2px !important;
border-color: var(--colone) !important;
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
.select2-container--classic
.select2-results__option--highlighted.select2-results__option--selectable {
background: linear-gradient(var(--gradient)) !important;
box-shadow: var(--colone) 0px 0px 0px 2px !important;
border-color: var(--colone) !important;
color: #fff;
}
.select2-selection__choice {
border: 0 !important;
background: var(--bs-gray-dark) !important;
}
.select2-selection__choice__display {
color: white;
}
.select2-dropdown.select2-dropdown--below {
box-shadow: var(--colone) 0px 0px 0px 2px !important;
border-color: var(--colone) !important;
}
.select2-container--default
.select2-results__option--highlighted.select2-results__option--selectable {
background: linear-gradient(var(--gradient)) !important;
color: white !important;
}
.select2-container--default
.select2-selection--multiple
.select2-selection__choice,
.select2-container--classic
.select2-selection--multiple
.select2-selection__choice {
margin: 0 0 0 2px !important;
}
.select2-results__option.select2-results__option--selectable {
border-radius: 6px;
margin: 10px;
}
.select2-container--classic .select2-selection--multiple,
.select2-container--default .select2-selection--multiple {
border-radius: 0.5rem !important;
}
.navbar-vertical.navbar-expand-xs .navbar-collapse {
height: auto !important;
}
.pillactive {
border-radius: 0.5rem;
color: rgb(232, 230, 227);
box-shadow: rgb(236, 241, 243) 0px 1px 5px 1px;
background-image: initial;
background-color: rgb(255, 255, 255);
}
.column {
width: 50%;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,440 @@
@font-face {
font-family: NucleoIcons;
src: url("../fonts/nucleo-icons.eot");
src: url("../fonts/nucleo-icons.eot") format("embedded-opentype"),
url("../fonts/nucleo-icons.woff2") format("woff2"),
url("../fonts/nucleo-icons.woff") format("woff"),
url("../fonts/nucleo-icons.ttf") format("truetype"),
url("../fonts/nucleo-icons.svg") format("svg");
font-weight: 400;
font-style: normal;
}
.ni {
display: inline-block;
font: normal normal normal 14px/1 NucleoIcons;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.ni-lg {
font-size: 1.33333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.ni-2x {
font-size: 2em;
}
.ni-3x {
font-size: 3em;
}
.ni-4x {
font-size: 4em;
}
.ni-5x {
font-size: 5em;
}
.ni.circle,
.ni.square {
padding: 0.33333333em;
vertical-align: -16%;
background-color: #eee;
}
.ni.circle {
border-radius: 50%;
}
.ni-ul {
padding-left: 0;
margin-left: 2.14285714em;
list-style-type: none;
}
.ni-ul > li {
position: relative;
}
.ni-ul > li > .ni {
position: absolute;
left: -1.57142857em;
top: 0.14285714em;
text-align: center;
}
.ni-ul > li > .ni.lg {
top: 0;
left: -1.35714286em;
}
.ni-ul > li > .ni.circle,
.ni-ul > li > .ni.square {
top: -0.19047619em;
left: -1.9047619em;
}
.ni.spin {
-webkit-animation: nc-spin 2s infinite linear;
-moz-animation: nc-spin 2s infinite linear;
animation: nc-spin 2s infinite linear;
}
@-webkit-keyframes nc-spin {
0% {
-webkit-transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@-moz-keyframes nc-spin {
0% {
-moz-transform: rotate(0);
}
100% {
-moz-transform: rotate(360deg);
}
}
@keyframes nc-spin {
0% {
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
}
.ni.rotate-90 {
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
.ni.rotate-180 {
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);
}
.ni.rotate-270 {
-webkit-transform: rotate(270deg);
-moz-transform: rotate(270deg);
-ms-transform: rotate(270deg);
-o-transform: rotate(270deg);
transform: rotate(270deg);
}
.ni.flip-y {
-webkit-transform: scale(-1, 1);
-moz-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
transform: scale(-1, 1);
}
.ni.flip-x {
-webkit-transform: scale(1, -1);
-moz-transform: scale(1, -1);
-ms-transform: scale(1, -1);
-o-transform: scale(1, -1);
transform: scale(1, -1);
}
.ni-active-40::before {
content: "\ea02";
}
.ni-air-baloon::before {
content: "\ea03";
}
.ni-album-2::before {
content: "\ea04";
}
.ni-align-center::before {
content: "\ea05";
}
.ni-align-left-2::before {
content: "\ea06";
}
.ni-ambulance::before {
content: "\ea07";
}
.ni-app::before {
content: "\ea08";
}
.ni-archive-2::before {
content: "\ea09";
}
.ni-atom::before {
content: "\ea0a";
}
.ni-badge::before {
content: "\ea0b";
}
.ni-bag-17::before {
content: "\ea0c";
}
.ni-basket::before {
content: "\ea0d";
}
.ni-bell-55::before {
content: "\ea0e";
}
.ni-bold-down::before {
content: "\ea0f";
}
.ni-bold-left::before {
content: "\ea10";
}
.ni-bold-right::before {
content: "\ea11";
}
.ni-bold-up::before {
content: "\ea12";
}
.ni-bold::before {
content: "\ea13";
}
.ni-book-bookmark::before {
content: "\ea14";
}
.ni-books::before {
content: "\ea15";
}
.ni-box-2::before {
content: "\ea16";
}
.ni-briefcase-24::before {
content: "\ea17";
}
.ni-building::before {
content: "\ea18";
}
.ni-bulb-61::before {
content: "\ea19";
}
.ni-bullet-list-67::before {
content: "\ea1a";
}
.ni-bus-front-12::before {
content: "\ea1b";
}
.ni-button-pause::before {
content: "\ea1c";
}
.ni-button-play::before {
content: "\ea1d";
}
.ni-button-power::before {
content: "\ea1e";
}
.ni-calendar-grid-58::before {
content: "\ea1f";
}
.ni-camera-compact::before {
content: "\ea20";
}
.ni-caps-small::before {
content: "\ea21";
}
.ni-cart::before {
content: "\ea22";
}
.ni-chart-bar-32::before {
content: "\ea23";
}
.ni-chart-pie-35::before {
content: "\ea24";
}
.ni-chat-round::before {
content: "\ea25";
}
.ni-check-bold::before {
content: "\ea26";
}
.ni-circle-08::before {
content: "\ea27";
}
.ni-cloud-download-95::before {
content: "\ea28";
}
.ni-cloud-upload-96::before {
content: "\ea29";
}
.ni-compass-04::before {
content: "\ea2a";
}
.ni-controller::before {
content: "\ea2b";
}
.ni-credit-card::before {
content: "\ea2c";
}
.ni-curved-next::before {
content: "\ea2d";
}
.ni-delivery-fast::before {
content: "\ea2e";
}
.ni-diamond::before {
content: "\ea2f";
}
.ni-email-83::before {
content: "\ea30";
}
.ni-fat-add::before {
content: "\ea31";
}
.ni-fat-delete::before {
content: "\ea32";
}
.ni-fat-remove::before {
content: "\ea33";
}
.ni-favourite-28::before {
content: "\ea34";
}
.ni-folder-17::before {
content: "\ea35";
}
.ni-glasses-2::before {
content: "\ea36";
}
.ni-hat-3::before {
content: "\ea37";
}
.ni-headphones::before {
content: "\ea38";
}
.ni-html5::before {
content: "\ea39";
}
.ni-istanbul::before {
content: "\ea3a";
}
.ni-key-25::before {
content: "\ea3b";
}
.ni-laptop::before {
content: "\ea3c";
}
.ni-like-2::before {
content: "\ea3d";
}
.ni-lock-circle-open::before {
content: "\ea3e";
}
.ni-map-big::before {
content: "\ea3f";
}
.ni-mobile-button::before {
content: "\ea40";
}
.ni-money-coins::before {
content: "\ea41";
}
.ni-note-03::before {
content: "\ea42";
}
.ni-notification-70::before {
content: "\ea43";
}
.ni-palette::before {
content: "\ea44";
}
.ni-paper-diploma::before {
content: "\ea45";
}
.ni-pin-3::before {
content: "\ea46";
}
.ni-planet::before {
content: "\ea47";
}
.ni-ruler-pencil::before {
content: "\ea48";
}
.ni-satisfied::before {
content: "\ea49";
}
.ni-scissors::before {
content: "\ea4a";
}
.ni-send::before {
content: "\ea4b";
}
.ni-settings-gear-65::before {
content: "\ea4c";
}
.ni-settings::before {
content: "\ea4d";
}
.ni-single-02::before {
content: "\ea4e";
}
.ni-single-copy-04::before {
content: "\ea4f";
}
.ni-sound-wave::before {
content: "\ea50";
}
.ni-spaceship::before {
content: "\ea51";
}
.ni-square-pin::before {
content: "\ea52";
}
.ni-support-16::before {
content: "\ea53";
}
.ni-tablet-button::before {
content: "\ea54";
}
.ni-tag::before {
content: "\ea55";
}
.ni-tie-bow::before {
content: "\ea56";
}
.ni-time-alarm::before {
content: "\ea57";
}
.ni-trophy::before {
content: "\ea58";
}
.ni-tv-2::before {
content: "\ea59";
}
.ni-umbrella-13::before {
content: "\ea5a";
}
.ni-user-run::before {
content: "\ea5b";
}
.ni-vector::before {
content: "\ea5c";
}
.ni-watch-time::before {
content: "\ea5d";
}
.ni-world::before {
content: "\ea5e";
}
.ni-zoom-split-in::before {
content: "\ea5f";
}
.ni-collection::before {
content: "\ea60";
}
.ni-image::before {
content: "\ea61";
}
.ni-shop::before {
content: "\ea62";
}
.ni-ungroup::before {
content: "\ea63";
}
.ni-world-2::before {
content: "\ea64";
}
.ni-ui-04::before {
content: "\ea65";
}

View file

@ -0,0 +1,135 @@
/* Generated using nucleoapp.com */
/* --------------------------------
Icon colors
-------------------------------- */
.icon {
display: inline-block;
/* icon primary color */
color: #111111;
height: 1em;
width: 1em;
}
.icon use {
/* icon secondary color - fill */
fill: #7ea6f6;
}
.icon.icon-outline use {
/* icon secondary color - stroke */
stroke: #7ea6f6;
}
/* --------------------------------
Change icon size
-------------------------------- */
.icon-xs {
height: 0.5em;
width: 0.5em;
}
.icon-sm {
height: 0.8em;
width: 0.8em;
}
.icon-lg {
height: 1.6em;
width: 1.6em;
}
.icon-xl {
height: 2em;
width: 2em;
}
/* --------------------------------
Align icon and text
-------------------------------- */
.icon-text-aligner {
/* add this class to parent element that contains icon + text */
display: flex;
align-items: center;
}
.icon-text-aligner .icon {
color: inherit;
margin-right: 0.4em;
}
.icon-text-aligner .icon use {
color: inherit;
fill: currentColor;
}
.icon-text-aligner .icon.icon-outline use {
stroke: currentColor;
}
/* --------------------------------
Icon reset values - used to enable color customizations
-------------------------------- */
.icon {
fill: currentColor;
stroke: none;
}
.icon.icon-outline {
fill: none;
stroke: currentColor;
}
.icon use {
stroke: none;
}
.icon.icon-outline use {
fill: none;
}
/* --------------------------------
Stroke effects - Nucleo outline icons
- 16px icons -> up to 1px stroke (16px outline icons do not support stroke changes)
- 24px, 32px icons -> up to 2px stroke
- 48px, 64px icons -> up to 4px stroke
-------------------------------- */
.icon-outline.icon-stroke-1 {
stroke-width: 1px;
}
.icon-outline.icon-stroke-2 {
stroke-width: 2px;
}
.icon-outline.icon-stroke-3 {
stroke-width: 3px;
}
.icon-outline.icon-stroke-4 {
stroke-width: 4px;
}
.icon-outline.icon-stroke-1 use,
.icon-outline.icon-stroke-3 use {
-webkit-transform: translateX(0.5px) translateY(0.5px);
-moz-transform: translateX(0.5px) translateY(0.5px);
-ms-transform: translateX(0.5px) translateY(0.5px);
-o-transform: translateX(0.5px) translateY(0.5px);
transform: translateX(0.5px) translateY(0.5px);
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -0,0 +1,411 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="hermes-dashboard-icons" horiz-adv-x="256">
<font-face font-family="hermes-dashboard-icons"
units-per-em="256" ascent="256"
descent="0"/>
<missing-glyph horiz-adv-x="0"/>
<glyph glyph-name="active-40"
unicode="&#xEA02;"
horiz-adv-x="256"
d=" M193.36128 154.90432L106.6666666666667 170.6666666666667V222.8587733333333C106.6666666666667 233.48576 99.4055466666667 243.33472 88.9166933333333 245.0417066666667C75.5508266666667 247.2154666666667 64 236.9576533333334 64 224V106.6666666666667H53.3333333333333V138.6666666666667H42.6666666666667C30.8848 138.6666666666667 21.3333333333333 129.11584 21.3333333333333 117.3333333333334V86.44992C21.3333333333333 71.9173333333334 26.2792533333333 57.8170666666667 35.35808 46.4688L64 10.6666666666667H202.6666666666667L219.26496 118.5546666666667C221.9003733333333 135.6868266666667 210.416 151.8034133333334 193.36128 154.90432z"/>
<glyph glyph-name="air-baloon"
unicode="&#xEA03;"
horiz-adv-x="256"
d=" M149.3333333333333 42.6666666666667H106.6666666666667C100.768 42.6666666666667 96 37.888 96 32V10.6666666666667C96 4.7786666666667 100.768 0 106.6666666666667 0H149.3333333333333C155.232 0 160 4.7786666666667 160 10.6666666666667V32C160 37.888 155.232 42.6666666666667 149.3333333333333 42.6666666666667z M128.736 255.9573333333334C128.6613333333333 255.9573333333334 128.5866666666667 255.968 128.512 255.968C128.3413333333333 255.9786666666667 128.1706666666667 256 128 256C127.84 256 127.68 255.9786666666667 127.5093333333333 255.9786666666667C127.4133333333333 255.9786666666667 127.3386666666667 255.968 127.2426666666667 255.968C80.544 255.552 42.6666666666667 217.4613333333333 42.6666666666667 170.6666666666667C42.6666666666667 138.6773333333333 82.4853333333333 75.936 87.0293333333333 68.8853333333333C89.0026666666667 65.8453333333333 92.3733333333333 64 96 64H106.6346666666667C106.6453333333333 64 106.656 64 106.6666666666667 64C106.6773333333333 64 106.688 64 106.6986666666667 64H160C163.6266666666667 64 166.9973333333333 65.8453333333333 168.9706666666667 68.8853333333333C173.5146666666667 75.936 213.3333333333333 138.6773333333333 213.3333333333333 170.6666666666667C213.3333333333333 217.472 175.4453333333334 255.5626666666667 128.736 255.9573333333334z"/>
<glyph glyph-name="album-2"
unicode="&#xEA04;"
horiz-adv-x="256"
d=" M245.3333333333333 234.6666666666667H192V256H170.6666666666667V234.6666666666667H138.6666666666667V256H117.3333333333333V234.6666666666667H85.3333333333333V256H64V234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.8986666666667 0 224V10.6666666666667C0 4.768 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.768 256 10.6666666666667V224C256 229.8986666666667 251.2213333333333 234.6666666666667 245.3333333333333 234.6666666666667zM234.6666666666667 21.3333333333333H21.3333333333333V213.3333333333334H64V192H85.3333333333333V213.3333333333334H117.3333333333333V192H138.6666666666667V213.3333333333334H170.6666666666667V192H192V213.3333333333334H234.6666666666667V21.3333333333333z M158.3786666666667 144.32C156.7146666666667 146.9866666666667 153.952 148.7786666666667 150.848 149.2266666666667C147.744 149.6853333333334 144.5973333333334 148.7253333333333 142.24 146.6453333333333L46.24 61.312C42.9333333333333 58.368 41.792 53.6853333333333 43.36 49.5466666666667S48.9066666666667 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C206.5493333333333 42.6666666666667 210.112 44.768 212 48.16S213.7706666666667 55.7013333333334 211.7226666666667 58.9866666666667L158.3786666666667 144.32z M53.3333333333333 144C53.3333333333333 135.1634440027073 60.4967773360406 128 69.3333333333333 128C78.169889330626 128 85.3333333333333 135.1634440027073 85.3333333333333 144C85.3333333333333 152.8365559972927 78.169889330626 160 69.3333333333333 160C60.4967773360406 160 53.3333333333333 152.8365559972927 53.3333333333333 144z"/>
<glyph glyph-name="align-center"
unicode="&#xEA05;"
horiz-adv-x="256"
d=" M245.3333333333333 213.3333333333334H10.6666666666667C4.776 213.3333333333334 0 218.1093333333333 0 224S4.776 234.6666666666667 10.6666666666667 234.6666666666667H245.3333333333333C251.224 234.6666666666667 256 229.8906666666667 256 224S251.224 213.3333333333334 245.3333333333333 213.3333333333334z M192 149.3333333333334H64C58.1093333333333 149.3333333333334 53.3333333333333 154.1093333333333 53.3333333333333 160S58.1093333333333 170.6666666666667 64 170.6666666666667H192C197.8906666666667 170.6666666666667 202.6666666666667 165.8906666666667 202.6666666666667 160S197.8906666666667 149.3333333333334 192 149.3333333333334z M245.3333333333333 85.3333333333333H10.6666666666667C4.776 85.3333333333333 0 90.1093333333334 0 96S4.776 106.6666666666667 10.6666666666667 106.6666666666667H245.3333333333333C251.224 106.6666666666667 256 101.8906666666667 256 96S251.224 85.3333333333333 245.3333333333333 85.3333333333333z M192 21.3333333333333H64C58.1093333333333 21.3333333333333 53.3333333333333 26.1093333333334 53.3333333333333 32S58.1093333333333 42.6666666666667 64 42.6666666666667H192C197.8906666666667 42.6666666666667 202.6666666666667 37.8906666666666 202.6666666666667 32S197.8906666666667 21.3333333333333 192 21.3333333333333z"/>
<glyph glyph-name="align-left-2"
unicode="&#xEA06;"
horiz-adv-x="256"
d=" M245.3333333333333 213.3333333333334H10.6666666666667C4.776 213.3333333333334 0 218.1093333333333 0 224S4.776 234.6666666666667 10.6666666666667 234.6666666666667H245.3333333333333C251.224 234.6666666666667 256 229.8906666666667 256 224S251.224 213.3333333333334 245.3333333333333 213.3333333333334z M138.6666666666667 149.3333333333334H10.6666666666667C4.776 149.3333333333334 0 154.1093333333333 0 160S4.776 170.6666666666667 10.6666666666667 170.6666666666667H138.6666666666667C144.5573333333333 170.6666666666667 149.3333333333333 165.8906666666667 149.3333333333333 160S144.5573333333333 149.3333333333334 138.6666666666667 149.3333333333334z M245.3333333333333 85.3333333333333H10.6666666666667C4.776 85.3333333333333 0 90.1093333333334 0 96S4.776 106.6666666666667 10.6666666666667 106.6666666666667H245.3333333333333C251.224 106.6666666666667 256 101.8906666666667 256 96S251.224 85.3333333333333 245.3333333333333 85.3333333333333z M138.6666666666667 21.3333333333333H10.6666666666667C4.776 21.3333333333333 0 26.1093333333334 0 32S4.776 42.6666666666667 10.6666666666667 42.6666666666667H138.6666666666667C144.5573333333333 42.6666666666667 149.3333333333333 37.8906666666666 149.3333333333333 32S144.5573333333333 21.3333333333333 138.6666666666667 21.3333333333333z"/>
<glyph glyph-name="ambulance"
unicode="&#xEA07;"
horiz-adv-x="256"
d=" M249.6 126.9333333333333L234.6666666666667 134.4V170.6666666666667C234.6666666666667 177.0666666666667 230.4 181.3333333333334 224 181.3333333333334H170.6666666666667V213.3333333333334C170.6666666666667 219.7333333333334 166.4 224 160 224H10.6666666666667C4.2666666666667 224 0 219.7333333333334 0 213.3333333333334V74.6666666666667C0 68.2666666666667 4.2666666666667 64 10.6666666666667 64H22.4C26.6666666666667 45.8666666666667 43.7333333333333 32 64 32S100.2666666666667 45.8666666666667 105.6 64H150.4C152.5333333333333 45.8666666666667 168.5333333333333 32 186.6666666666666 32S220.8 45.8666666666667 222.9333333333333 64H245.3333333333333C251.7333333333333 64 256 68.2666666666667 256 74.6666666666667V117.3333333333334C256 121.6 253.8666666666667 124.8 249.6 126.9333333333333zM64 53.3333333333333C52.2666666666667 53.3333333333333 42.6666666666667 62.9333333333333 42.6666666666667 74.6666666666667C42.6666666666667 86.4 52.2666666666667 96 64 96S85.3333333333333 86.4 85.3333333333333 74.6666666666667C85.3333333333333 62.9333333333333 75.7333333333333 53.3333333333333 64 53.3333333333333zM117.3333333333333 149.3333333333334H96V128H74.6666666666667V149.3333333333334H53.3333333333333V170.6666666666667H74.6666666666667V192H96V170.6666666666667H117.3333333333333V149.3333333333334zM186.6666666666667 53.3333333333333C178.1333333333333 53.3333333333333 170.6666666666667 60.8 170.6666666666667 69.3333333333333S178.1333333333333 85.3333333333333 186.6666666666667 85.3333333333333S202.6666666666667 77.8666666666667 202.6666666666667 69.3333333333333S195.2 53.3333333333333 186.6666666666667 53.3333333333333zM213.3333333333333 144C213.3333333333333 140.8 211.2 138.6666666666667 208 138.6666666666667H186.6666666666666C183.4666666666667 138.6666666666667 181.3333333333333 140.8 181.3333333333333 144V154.6666666666667C181.3333333333333 157.8666666666667 183.4666666666667 160 186.6666666666667 160H208C211.2 160 213.3333333333333 157.8666666666667 213.3333333333333 154.6666666666667V144z"/>
<glyph glyph-name="app"
unicode="&#xEA08;"
horiz-adv-x="256"
d=" M128 161.0666666666667L222.9333333333333 203.7333333333333L132.2666666666667 244.2666666666667C129.0666666666667 245.3333333333333 125.8666666666667 245.3333333333333 123.7333333333334 244.2666666666667L33.0666666666667 203.7333333333334L128 161.0666666666667z M138.6666666666667 142.9333333333333V14.9333333333333L228.2666666666667 54.4C232.5333333333334 56.5333333333333 234.6666666666667 59.7333333333334 234.6666666666667 64V185.6L138.6666666666667 142.9333333333333z M117.3333333333333 142.9333333333333L21.3333333333333 185.6V64C21.3333333333333 59.7333333333333 23.4666666666667 55.4666666666667 27.7333333333333 54.4L117.3333333333333 14.9333333333333V142.9333333333333z"/>
<glyph glyph-name="archive-2"
unicode="&#xEA09;"
horiz-adv-x="256"
d=" M224 170.6666666666667H32C26.112 170.6666666666667 21.3333333333333 165.8986666666667 21.3333333333333 160V10.6666666666667C21.3333333333333 4.768 26.112 0 32 0H224C229.888 0 234.6666666666667 4.768 234.6666666666667 10.6666666666667V160C234.6666666666667 165.8986666666667 229.888 170.6666666666667 224 170.6666666666667zM181.3333333333333 96C181.3333333333333 90.1013333333333 176.5546666666667 85.3333333333333 170.6666666666667 85.3333333333333H85.3333333333333C79.4453333333333 85.3333333333333 74.6666666666667 90.1013333333333 74.6666666666667 96V128H96V106.6666666666667H160V128H181.3333333333334V96z M42.6666666666667 213.3333333333334H213.3333333333333V192H42.6666666666667V213.3333333333333z M74.6666666666667 256H181.3333333333333V234.6666666666667H74.6666666666667V256z"/>
<glyph glyph-name="atom"
unicode="&#xEA0A;"
horiz-adv-x="256"
d=" M235.7973333333334 197.0133333333333C229.6106666666667 206.6666666666667 214.784 216.5013333333333 179.264 208.5546666666667C176.5546666666667 207.9466666666667 173.7706666666667 207.2213333333334 170.9546666666667 206.432C162.1226666666667 235.6053333333334 147.7013333333333 256 128 256C109.8026666666667 256 94.7946666666667 238.3786666666667 85.0986666666667 206.336C57.1413333333333 214.208 31.2426666666667 214.272 20.2133333333333 197.0133333333333C14.0266666666667 187.3493333333333 11.2853333333333 169.76 33.3866666666667 140.8426666666667C36.64 136.5866666666667 40.352 132.2986666666667 44.3413333333333 128C40.352 123.7013333333334 36.64 119.4133333333333 33.3866666666667 115.1466666666667C11.2853333333333 86.2293333333333 14.0266666666667 68.64 20.2133333333333 58.976C26.3786666666667 49.344 37.7173333333333 44.4906666666667 53.312 44.4906666666667C62.4746666666667 44.4906666666667 73.1413333333333 46.208 85.0666666666667 49.568C93.472 21.6533333333334 107.3813333333333 0 128 0C147.7013333333334 0 162.1226666666667 20.3946666666667 170.9653333333333 49.5786666666667C173.7813333333333 48.7893333333333 176.5546666666667 48.064 179.2746666666667 47.456C199.4133333333333 42.944 224.7253333333333 41.6533333333333 235.7973333333333 58.9973333333333C246.3893333333333 75.5306666666667 237.5786666666667 99.7546666666667 211.4133333333333 127.712C233.8666666666667 151.6693333333333 247.9893333333333 177.9733333333333 235.7973333333334 197.0133333333333zM217.8346666666667 185.5146666666667C222.5386666666667 178.1653333333333 211.5093333333333 155.008 181.3333333333333 128.192C181.3226666666666 147.9466666666667 179.5413333333333 167.7653333333333 176.0426666666667 185.696C185.952 188.5226666666667 212.2986666666666 194.144 217.8346666666667 185.5146666666667zM74.8586666666667 128C97.76 148.288 127.392 166.9546666666667 155.6053333333333 178.528C161.2906666666667 147.6586666666667 161.632 110.2293333333333 155.6053333333333 77.472C127.4133333333333 89.0346666666667 97.7813333333333 107.7013333333333 74.8586666666667 128zM128 234.6666666666667C134.9973333333333 234.6666666666667 143.9573333333334 221.76 150.6133333333334 199.5413333333334C143.2213333333333 196.6186666666667 135.6373333333333 193.1626666666667 128 189.312C120.672 192.992 113.024 196.4373333333334 105.28 199.4773333333334C112.9173333333333 224.992 122.752 234.6666666666667 128 234.6666666666667zM38.176 185.5146666666667C42.7626666666667 192.704 68.3306666666667 192.5226666666667 105.12 176.5226666666667C88.3626666666667 166.272 73.504 155.392 59.584 142.9226666666667C51.6693333333333 151.52 32 175.8933333333334 38.176 185.5146666666667zM38.1653333333333 70.4853333333334C32.0106666666667 80.1066666666667 51.648 104.4586666666667 59.584 113.0773333333334C64.704 108.4906666666667 70.1653333333333 103.968 75.9146666666667 99.5413333333333C76.768 89.8666666666667 78.1013333333333 80 79.9893333333333 70.368C54.3893333333333 63.04 40.992 66.1013333333333 38.1653333333333 70.4853333333334zM128 21.3333333333333C119.2746666666667 21.3333333333333 105.696 43.1146666666667 99.392 82.9973333333333C116.5013333333333 72.0533333333333 134.0053333333334 63.0186666666667 150.6133333333333 56.4586666666667C143.9573333333334 34.24 134.9973333333333 21.3333333333333 128 21.3333333333333zM217.824 70.4853333333334C212.32 61.824 185.92 67.488 176.0426666666667 70.2933333333334C177.856 79.6053333333334 179.1573333333333 89.44 180.0426666666667 99.488C185.504 103.7013333333334 190.9226666666667 108.1706666666667 196.1493333333333 112.8533333333334C217.1093333333333 90.3253333333333 220.9386666666667 75.3386666666667 217.824 70.4853333333334z M117.3333333333333 128C117.3333333333333 122.1089626684716 122.1089626684715 117.3333333333334 128 117.3333333333334C133.8910373315285 117.3333333333334 138.6666666666667 122.1089626684716 138.6666666666667 128C138.6666666666667 133.8910373315285 133.8910373315285 138.6666666666667 128 138.6666666666667C122.1089626684715 138.6666666666667 117.3333333333333 133.8910373315285 117.3333333333333 128z"/>
<glyph glyph-name="badge"
unicode="&#xEA0B;"
horiz-adv-x="256"
d=" M149.3333333333333 181.3333333333334H106.6666666666667V234.6666666666667C106.6666666666667 246.4533333333333 116.2133333333333 256 128 256H128C139.7866666666667 256 149.3333333333333 246.4533333333333 149.3333333333333 234.6666666666667V181.3333333333334z M245.3333333333333 202.6666666666667H170.6666666666667V160H85.3333333333333V202.6666666666667H10.6666666666667C4.7786666666667 202.6666666666667 0 197.888 0 192V10.6666666666667C0 4.7786666666667 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.7786666666667 256 10.6666666666667V192C256 197.888 251.2213333333333 202.6666666666667 245.3333333333333 202.6666666666667zM85.3333333333333 128C97.12 128 106.6666666666667 118.4533333333333 106.6666666666667 106.6666666666667C106.6666666666667 94.88 97.12 85.3333333333333 85.3333333333333 85.3333333333333S64 94.88 64 106.6666666666667C64 118.4533333333334 73.5466666666667 128 85.3333333333333 128zM42.6666666666667 42.6666666666667C42.6666666666667 60.3413333333334 56.992 74.6666666666667 74.6666666666667 74.6666666666667H96C113.6746666666667 74.6666666666667 128 60.3413333333334 128 42.6666666666667H42.6666666666667zM213.3333333333333 53.3333333333333H149.3333333333333V74.6666666666667H213.3333333333333V53.3333333333333zM213.3333333333333 96H149.3333333333333V117.3333333333334H213.3333333333333V96z"/>
<glyph glyph-name="bag-17"
unicode="&#xEA0C;"
horiz-adv-x="256"
d=" M213.3333333333333 256H42.6666666666667C24.5333333333333 256 10.6666666666667 242.1333333333334 10.6666666666667 224V10.6666666666667C10.6666666666667 4.2666666666667 14.9333333333333 0 21.3333333333333 0H234.6666666666667C241.0666666666667 0 245.3333333333333 4.2666666666667 245.3333333333333 10.6666666666667V224C245.3333333333333 242.1333333333334 231.4666666666667 256 213.3333333333333 256zM128 85.3333333333333C92.8 85.3333333333333 64 114.1333333333334 64 149.3333333333334C64 155.7333333333334 68.2666666666667 160 74.6666666666667 160S85.3333333333333 155.7333333333334 85.3333333333333 149.3333333333334C85.3333333333333 125.8666666666667 104.5333333333334 106.6666666666667 128 106.6666666666667S170.6666666666667 125.8666666666667 170.6666666666667 149.3333333333334C170.6666666666667 155.7333333333334 174.9333333333333 160 181.3333333333333 160S192 155.7333333333334 192 149.3333333333334C192 114.1333333333333 163.2 85.3333333333333 128 85.3333333333333zM213.3333333333333 213.3333333333334H42.6666666666667C36.2666666666667 213.3333333333334 32 217.6 32 224S36.2666666666667 234.6666666666667 42.6666666666667 234.6666666666667H213.3333333333333C219.7333333333333 234.6666666666667 224 230.4 224 224S219.7333333333334 213.3333333333334 213.3333333333333 213.3333333333334z"/>
<glyph glyph-name="basket"
unicode="&#xEA0D;"
horiz-adv-x="256"
d=" M245.3333333333333 181.3333333333334H208.8533333333333L169.2586666666667 250.624C166.3466666666667 255.7333333333334 159.8293333333334 257.5253333333333 154.7093333333334 254.592C149.6 251.6693333333334 147.8186666666667 245.152 150.7413333333334 240.0426666666667L184.288 181.3333333333334H71.712L105.2586666666667 240.0426666666667C108.1813333333333 245.152 106.4 251.6693333333334 101.2906666666667 254.592C96.1813333333333 257.5253333333333 89.664 255.7333333333334 86.7413333333333 250.624L47.1466666666667 181.3333333333334H10.6666666666667C4.7786666666667 181.3333333333334 0 176.5653333333334 0 170.6666666666667V149.3333333333334C0 143.4346666666667 4.7786666666667 138.6666666666667 10.6666666666667 138.6666666666667H245.3333333333333C251.2213333333333 138.6666666666667 256 143.4346666666667 256 149.3333333333334V170.6666666666667C256 176.5653333333334 251.2213333333333 181.3333333333334 245.3333333333333 181.3333333333334z M234.6666666666667 117.3333333333334H21.3333333333333V10.6666666666667C21.3333333333333 4.7786666666667 26.112 0 32 0H224C229.888 0 234.6666666666667 4.7786666666667 234.6666666666667 10.6666666666667V117.3333333333334zM96 32H74.6666666666667L74.6666666666667 85.3333333333333H96L96 32zM138.6666666666667 32H117.3333333333333L117.3333333333333 85.3333333333333H138.6666666666667L138.6666666666667 32zM181.3333333333333 32H160L160 85.3333333333333H181.3333333333333L181.3333333333333 32z"/>
<glyph glyph-name="bell-55"
unicode="&#xEA0E;"
horiz-adv-x="256"
d=" M202.6666666666667 138.6666666666667C202.6666666666667 155.7333333333334 202.6666666666667 170.6666666666667 202.6666666666667 170.6666666666667C202.6666666666667 212.2666666666667 169.6 245.3333333333333 128 245.3333333333333S53.3333333333333 212.2666666666667 53.3333333333333 170.6666666666667C53.3333333333333 170.6666666666667 53.3333333333333 155.7333333333334 53.3333333333333 138.6666666666667C53.3333333333333 103.4666666666667 21.3333333333333 94.9333333333333 21.3333333333333 74.6666666666667C21.3333333333333 56.5333333333334 62.9333333333333 42.6666666666667 128 42.6666666666667S234.6666666666667 56.5333333333334 234.6666666666667 74.6666666666667C234.6666666666667 94.9333333333333 202.6666666666667 103.4666666666667 202.6666666666667 138.6666666666667z M128 21.3333333333333C114.1333333333333 21.3333333333333 102.4 22.4 90.6666666666667 23.4666666666667C98.1333333333333 9.6 112 0 128 0S158.9333333333333 9.6 165.3333333333333 23.4666666666667C153.6 22.4 141.8666666666667 21.3333333333333 128 21.3333333333333z"/>
<glyph glyph-name="bold-down"
unicode="&#xEA0F;"
horiz-adv-x="256"
d=" M21.3333333333333 160L64 202.6666666666667L128 138.6666666666667L192 202.6666666666667L234.6666666666667 160L128 53.3333333333333z"/>
<glyph glyph-name="bold-left"
unicode="&#xEA10;"
horiz-adv-x="256"
d=" M160 234.6666666666667L202.6666666666667 192L138.6666666666667 128L202.6666666666667 64L160 21.3333333333333L53.3333333333333 128z"/>
<glyph glyph-name="bold-right"
unicode="&#xEA11;"
horiz-adv-x="256"
d=" M96 234.6666666666667L53.3333333333333 192L117.3333333333333 128L53.3333333333333 64L96 21.3333333333333L202.6666666666667 128z"/>
<glyph glyph-name="bold-up"
unicode="&#xEA12;"
horiz-adv-x="256"
d=" M234.6666666666667 96L192 53.3333333333333L128 117.3333333333334L64 53.3333333333333L21.3333333333333 96L128 202.6666666666667z"/>
<glyph glyph-name="bold"
unicode="&#xEA13;"
horiz-adv-x="256"
d=" M32 10.6666666666667V35.9504L45.86976 40.3169066666667C50.312 41.71552 53.3333333333333 45.83424 53.3333333333333 50.4913066666667V205.2781866666667C53.3333333333333 210.0450133333334 50.17056 214.23328 45.5856 215.5377066666667L32 219.4029866666667V245.3333333333334H139.8369066666667C195.2605866666667 245.3333333333334 210.81888 220.0496 210.81888 187.9698133333333C210.81888 157.1700266666667 191.0510933333333 139.9886933333334 171.2833066666667 133.50944V132.5461333333333C208.2324266666667 128.3233066666667 224 107.0763733333334 224 74.6666666666667C224 26.6987733333334 187.8048 10.6666666666667 136.9205333333334 10.6666666666667H32zM119.0925866666667 146.7978666666667C142.42336 146.7978666666667 163.16768 152.3138133333333 163.16768 179.8673066666667C163.16768 206.4442666666667 146.3162666666667 210.0072533333333 123.9488 210.0072533333333H106.6666666666667V146.7978666666667H119.0925866666667zM128.4882133333333 45.6759466666667C155.7117866666666 45.6759466666667 173.5397333333333 52.1552 173.5397333333333 80.3553066666667C173.5397333333333 107.2621866666667 155.3950933333333 114.38816 133.3575466666666 114.38816H106.6666666666667V45.6759466666667H128.4882133333333z"/>
<glyph glyph-name="book-bookmark"
unicode="&#xEA14;"
horiz-adv-x="256"
d=" M42.6666666666667 32C42.6666666666667 37.888 47.4453333333333 42.6666666666667 53.3333333333333 42.6666666666667H213.3333333333333C225.12 42.6666666666667 234.6666666666667 52.2133333333333 234.6666666666667 64V224C234.6666666666667 241.6746666666667 220.3413333333333 256 202.6666666666667 256H128V170.6666666666667L96 192L64 170.6666666666667V256H53.3333333333333C35.6586666666667 256 21.3333333333333 241.6746666666667 21.3333333333333 224V32C21.3333333333333 14.3253333333333 35.6586666666667 0 53.3333333333333 0H224C229.888 0 234.6666666666667 4.7786666666667 234.6666666666667 10.6666666666667C234.6666666666667 16.5546666666667 229.888 21.3333333333333 224 21.3333333333333H53.3333333333333C47.4453333333333 21.3333333333333 42.6666666666667 26.112 42.6666666666667 32z"/>
<glyph glyph-name="books"
unicode="&#xEA15;"
horiz-adv-x="256"
d=" M53.3333333333333 234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.8986666666667 0 224V32C0 26.1013333333333 4.7786666666667 21.3333333333333 10.6666666666667 21.3333333333333H53.3333333333333C59.2213333333333 21.3333333333333 64 26.1013333333333 64 32V224C64 229.8986666666667 59.2213333333333 234.6666666666667 53.3333333333333 234.6666666666667z M138.6666666666667 234.6666666666667H96C90.112 234.6666666666667 85.3333333333333 229.8986666666667 85.3333333333333 224V32C85.3333333333333 26.1013333333333 90.112 21.3333333333333 96 21.3333333333333H138.6666666666667C144.5546666666667 21.3333333333333 149.3333333333333 26.1013333333333 149.3333333333333 32V224C149.3333333333333 229.8986666666667 144.5546666666667 234.6666666666667 138.6666666666667 234.6666666666667z M255.7013333333334 44.5546666666667L210.5173333333334 231.1573333333334C209.1306666666667 236.8853333333334 203.3173333333334 240.4373333333334 197.6426666666667 239.008L156.1706666666667 228.9813333333334C153.4186666666667 228.32 151.0506666666667 226.5813333333334 149.5786666666667 224.1706666666667C148.1066666666667 221.76 147.648 218.8586666666667 148.3093333333334 216.1066666666667L193.4826666666667 29.4933333333333C194.1440000000001 26.7413333333333 195.8826666666667 24.3733333333333 198.2933333333334 22.9013333333333C200 21.8666666666667 201.92 21.3333333333333 203.8613333333333 21.3333333333333C204.704 21.3333333333333 205.5466666666667 21.44 206.368 21.632L247.84 31.6693333333333C253.568 33.0666666666667 257.088 38.8266666666667 255.7013333333334 44.5546666666667z"/>
<glyph glyph-name="box-2"
unicode="&#xEA16;"
horiz-adv-x="256"
d=" M167.4666666666667 202.6666666666667H249.6L188.8 253.8666666666667C186.6666666666667 254.9333333333334 183.4666666666667 256 181.3333333333333 256H147.2L167.4666666666667 202.6666666666667z M170.6666666666667 181.3333333333334V106.6666666666667H85.3333333333333V181.3333333333334H0V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H245.3333333333333C251.7333333333333 0 256 4.2666666666667 256 10.6666666666667V181.3333333333334H170.6666666666667z M88.5333333333333 202.6666666666667L108.8 256H74.6666666666667C72.5333333333333 256 69.3333333333333 254.9333333333334 68.2666666666667 253.8666666666667L6.4 202.6666666666667H88.5333333333333z"/>
<glyph glyph-name="briefcase-24"
unicode="&#xEA17;"
horiz-adv-x="256"
d=" M160 64V42.6666666666667H96V64H10.6666666666667V10.6666666666667C10.6666666666667 4.7786666666667 15.4453333333333 0 21.3333333333333 0H234.6666666666667C240.5546666666667 0 245.3333333333333 4.7786666666667 245.3333333333333 10.6666666666667V64H160z M245.3333333333333 213.3333333333334H181.3333333333333V245.3333333333334C181.3333333333333 251.2213333333334 176.5546666666667 256 170.6666666666667 256H85.3333333333333C79.4453333333333 256 74.6666666666667 251.2213333333334 74.6666666666667 245.3333333333334V213.3333333333334H10.6666666666667C4.7786666666667 213.3333333333334 0 208.5546666666667 0 202.6666666666667V96C0 90.112 4.7786666666667 85.3333333333333 10.6666666666667 85.3333333333333H96V117.3333333333334H160V85.3333333333333H245.3333333333333C251.2213333333333 85.3333333333333 256 90.112 256 96V202.6666666666667C256 208.5546666666667 251.2213333333333 213.3333333333334 245.3333333333333 213.3333333333334zM160 213.3333333333334H96V234.6666666666667H160V213.3333333333334z"/>
<glyph glyph-name="building"
unicode="&#xEA18;"
horiz-adv-x="256"
d=" M74.6666666666667 149.3333333333334H53.3333333333333V245.3333333333334C53.3333333333333 251.232 58.1013333333333 256 64 256H192C197.8986666666667 256 202.6666666666667 251.232 202.6666666666667 245.3333333333334V181.3333333333333H181.3333333333333V234.6666666666667H74.6666666666667V149.3333333333334z M245.3333333333333 170.6666666666667H149.3333333333333C143.4346666666667 170.6666666666667 138.6666666666667 165.8986666666667 138.6666666666667 160V21.3333333333333H117.3333333333333V117.3333333333334C117.3333333333333 123.232 112.5653333333333 128 106.6666666666667 128H10.6666666666667C4.768 128 0 123.232 0 117.3333333333334V10.6666666666667C0 4.768 4.768 0 10.6666666666667 0H245.3333333333333C251.232 0 256 4.768 256 10.6666666666667V160C256 165.8986666666667 251.232 170.6666666666667 245.3333333333333 170.6666666666667zM74.6666666666667 32H42.6666666666667V53.3333333333333H74.6666666666667V32zM74.6666666666667 74.6666666666667H42.6666666666667V96H74.6666666666667V74.6666666666667zM213.3333333333333 32H181.3333333333333V53.3333333333333H213.3333333333333V32zM213.3333333333333 74.6666666666667H181.3333333333333V96H213.3333333333333V74.6666666666667zM213.3333333333333 117.3333333333334H181.3333333333333V138.6666666666667H213.3333333333333V117.3333333333334z"/>
<glyph glyph-name="bulb-61"
unicode="&#xEA19;"
horiz-adv-x="256"
d=" M85.3333333333333 74.0266666666667V42.6666666666667H170.6666666666667V74.0266666666667C203.296 90.1760000000001 224 123.168 224 160C224 212.9386666666667 180.928 256 128 256S32 212.9386666666667 32 160C32 123.1786666666667 52.704 90.176 85.3333333333333 74.0266666666667zM74.6666666666667 160C74.6666666666667 189.408 98.592 213.3333333333333 128 213.3333333333333H138.6666666666667V192H128C110.3573333333333 192 96 177.6426666666667 96 160V149.3333333333333H74.6666666666667V160z M85.3333333333333 21.3333333333333V10.6666666666667C85.3333333333333 4.768 90.112 0 96 0H160C165.888 0 170.6666666666667 4.768 170.6666666666667 10.6666666666667V21.3333333333333H85.3333333333333z"/>
<glyph glyph-name="bullet-list-67"
unicode="&#xEA1A;"
horiz-adv-x="256"
d=" M10.6666666666667 213.3333333333334C10.6666666666667 195.6602213387479 24.9935546720813 181.3333333333334 42.6666666666667 181.3333333333334C60.3397786612521 181.3333333333334 74.6666666666667 195.6602213387479 74.6666666666667 213.3333333333334C74.6666666666667 231.0064453279188 60.3397786612521 245.3333333333334 42.6666666666667 245.3333333333334C24.9935546720813 245.3333333333334 10.6666666666667 231.0064453279188 10.6666666666667 213.3333333333334z M10.6666666666667 128C10.6666666666667 110.3268880054146 24.9935546720813 96 42.6666666666667 96C60.3397786612521 96 74.6666666666667 110.3268880054146 74.6666666666667 128C74.6666666666667 145.6731119945854 60.3397786612521 160 42.6666666666667 160C24.9935546720813 160 10.6666666666667 145.6731119945854 10.6666666666667 128z M10.6666666666667 42.6666666666667C10.6666666666667 24.9935546720813 24.9935546720813 10.6666666666667 42.6666666666667 10.6666666666667C60.3397786612521 10.6666666666667 74.6666666666667 24.9935546720813 74.6666666666667 42.6666666666667C74.6666666666667 60.3397786612521 60.3397786612521 74.6666666666667 42.6666666666667 74.6666666666667C24.9935546720813 74.6666666666667 10.6666666666667 60.3397786612521 10.6666666666667 42.6666666666667z M96 224H245.3333333333333V202.6666666666667H96V224z M96 138.6666666666667H245.3333333333333V117.3333333333334H96V138.6666666666667z M96 53.3333333333333H245.3333333333333V32H96V53.3333333333333z"/>
<glyph glyph-name="bus-front-12"
unicode="&#xEA1B;"
horiz-adv-x="256"
d=" M42.6666666666667 21.3333333333333V10.6666666666667C42.6666666666667 4.7786666666667 47.4346666666667 0 53.3333333333333 0H85.3333333333333C91.232 0 96 4.7786666666667 96 10.6666666666667V21.3333333333333H42.6666666666667z M160 21.3333333333333V10.6666666666667C160 4.7786666666667 164.768 0 170.6666666666667 0H202.6666666666667C208.5653333333333 0 213.3333333333333 4.7786666666667 213.3333333333333 10.6666666666667V21.3333333333333H160z M0 170.6666666666667H21.3333333333333V117.3333333333334H0V170.6666666666667z M234.6666666666667 170.6666666666667H256V117.3333333333334H234.6666666666667V170.6666666666667z M192 256H64C46.3573333333333 256 32 241.6426666666667 32 224V42.6666666666667C32 36.7786666666667 36.7786666666667 32 42.6666666666667 32H213.3333333333333C219.2213333333333 32 224 36.7786666666667 224 42.6666666666667V224C224 241.6426666666667 209.6426666666667 256 192 256zM74.6666666666667 64C68.7786666666667 64 64 68.7786666666667 64 74.6666666666667C64 80.5546666666667 68.7786666666667 85.3333333333333 74.6666666666667 85.3333333333333S85.3333333333333 80.5546666666667 85.3333333333333 74.6666666666667C85.3333333333333 68.7786666666667 80.5546666666667 64 74.6666666666667 64zM181.3333333333333 64C175.4453333333333 64 170.6666666666667 68.7786666666667 170.6666666666667 74.6666666666667C170.6666666666667 80.5546666666667 175.4453333333334 85.3333333333333 181.3333333333333 85.3333333333333S192 80.5546666666667 192 74.6666666666667C192 68.7786666666667 187.2213333333333 64 181.3333333333333 64zM202.6666666666667 117.3333333333334H53.3333333333333V213.3333333333334H202.6666666666666V117.3333333333334z"/>
<glyph glyph-name="button-pause"
unicode="&#xEA1C;"
horiz-adv-x="256"
d=" M96 245.3333333333334H32C26.1013333333333 245.3333333333334 21.3333333333333 240.5653333333334 21.3333333333333 234.6666666666667V21.3333333333333C21.3333333333333 15.4346666666667 26.1013333333333 10.6666666666667 32 10.6666666666667H96C101.8986666666667 10.6666666666667 106.6666666666667 15.4346666666667 106.6666666666667 21.3333333333333V234.6666666666667C106.6666666666667 240.5653333333334 101.8986666666667 245.3333333333334 96 245.3333333333334z M224 245.3333333333334H160C154.1013333333334 245.3333333333334 149.3333333333334 240.5653333333334 149.3333333333334 234.6666666666667V21.3333333333333C149.3333333333334 15.4346666666667 154.1013333333334 10.6666666666667 160 10.6666666666667H224C229.8986666666667 10.6666666666667 234.6666666666667 15.4346666666667 234.6666666666667 21.3333333333333V234.6666666666667C234.6666666666667 240.5653333333334 229.8986666666667 245.3333333333334 224 245.3333333333334z"/>
<glyph glyph-name="button-play"
unicode="&#xEA1D;"
horiz-adv-x="256"
d=" M219.2533333333333 136.8746666666667L59.2533333333333 243.5413333333334C55.9786666666667 245.7173333333334 51.7653333333333 245.9306666666667 48.3093333333333 244.0746666666667C44.832 242.2186666666667 42.6666666666667 238.6026666666667 42.6666666666667 234.6666666666667V21.3333333333333C42.6666666666667 17.3973333333333 44.832 13.7813333333334 48.2986666666667 11.9253333333334C49.8773333333333 11.0826666666667 51.6053333333333 10.6666666666667 53.3333333333333 10.6666666666667C55.4026666666667 10.6666666666667 57.472 11.2746666666667 59.2533333333333 12.4586666666667L219.2533333333333 119.1253333333334C222.2186666666667 121.1093333333333 224 124.4373333333334 224 128S222.2186666666667 134.8906666666667 219.2533333333333 136.8746666666667z"/>
<glyph glyph-name="button-power"
unicode="&#xEA1E;"
horiz-adv-x="256"
d=" M186.6346666666667 218.9866666666667C181.536 221.9306666666667 175.008 220.192 172.064 215.0826666666667C169.12 209.984 170.8693333333333 203.456 175.968 200.512C205.5893333333334 183.3813333333334 224 151.5093333333334 224 117.3333333333334C224 64.3946666666667 180.9386666666667 21.3333333333333 128 21.3333333333333S32 64.3946666666667 32 117.3333333333334C32 151.4986666666667 50.4 183.36 80.0106666666667 200.5013333333333C85.1093333333333 203.4453333333334 86.8586666666667 209.9733333333333 83.8933333333333 215.072C80.96 220.1813333333333 74.432 221.9413333333333 69.3226666666667 218.9546666666667C33.1413333333333 198.0266666666667 10.6666666666667 159.0826666666667 10.6666666666667 117.3333333333334C10.6666666666667 52.64 63.3066666666667 0 128 0S245.3333333333333 52.64 245.3333333333333 117.3333333333333C245.3333333333333 159.104 222.848 198.0586666666667 186.6346666666667 218.9866666666667z M128 160C133.8986666666667 160 138.6666666666667 164.768 138.6666666666667 170.6666666666667V245.3333333333334C138.6666666666667 251.232 133.8986666666667 256 128 256S117.3333333333333 251.232 117.3333333333333 245.3333333333334V170.6666666666667C117.3333333333333 164.768 122.1013333333333 160 128 160z"/>
<glyph glyph-name="calendar-grid-58"
unicode="&#xEA1F;"
horiz-adv-x="256"
d=" M245.3333333333333 234.6666666666667H202.6666666666667V256H181.3333333333333V234.6666666666667H138.6666666666667V256H117.3333333333333V234.6666666666667H74.6666666666667V256H53.3333333333333V234.6666666666667H10.6666666666667C4.7786666666667 234.6666666666667 0 229.888 0 224V10.6666666666667C0 4.7786666666667 4.7786666666667 0 10.6666666666667 0H245.3333333333333C251.2213333333333 0 256 4.7786666666667 256 10.6666666666667V224C256 229.888 251.2213333333333 234.6666666666667 245.3333333333333 234.6666666666667zM234.6666666666667 21.3333333333333H21.3333333333333V170.6666666666667H234.6666666666667V21.3333333333333z M42.6666666666667 138.6666666666667H85.3333333333333V106.6666666666667H42.6666666666667V138.6666666666667z M106.6666666666667 138.6666666666667H149.3333333333333V106.6666666666667H106.6666666666667V138.6666666666667z M42.6666666666667 85.3333333333333H85.3333333333333V53.3333333333333H42.6666666666667V85.3333333333333z M106.6666666666667 85.3333333333333H149.3333333333333V53.3333333333333H106.6666666666667V85.3333333333333z M170.6666666666667 138.6666666666667H213.3333333333333V106.6666666666667H170.6666666666667V138.6666666666667z"/>
<glyph glyph-name="camera-compact"
unicode="&#xEA20;"
horiz-adv-x="256"
d=" M32 245.3333333333334H96V224H32V245.3333333333334z M245.3333333333333 213.3333333333334H10.6666666666667C4.768 213.3333333333334 0 208.5546666666667 0 202.6666666666667V21.3333333333334C0 15.4453333333334 4.768 10.6666666666667 10.6666666666667 10.6666666666667H245.3333333333333C251.232 10.6666666666667 256 15.4453333333334 256 21.3333333333334V202.6666666666667C256 208.5546666666667 251.232 213.3333333333334 245.3333333333333 213.3333333333334zM64 138.6666666666667C58.112 138.6666666666667 53.3333333333333 143.4453333333334 53.3333333333333 149.3333333333334C53.3333333333333 155.2213333333334 58.112 160 64 160S74.6666666666667 155.2213333333334 74.6666666666667 149.3333333333334C74.6666666666667 143.4453333333334 69.888 138.6666666666667 64 138.6666666666667zM160 53.3333333333333C130.5493333333333 53.3333333333333 106.6666666666667 77.216 106.6666666666667 106.6666666666667S130.5493333333333 160 160 160S213.3333333333333 136.1173333333334 213.3333333333333 106.6666666666667S189.4506666666667 53.3333333333333 160 53.3333333333333z"/>
<glyph glyph-name="caps-small"
unicode="&#xEA21;"
horiz-adv-x="256"
d=" M42.6666666666667 21.3333333333333V38.44448L70.7122133333333 40.0974933333333C74.0183466666667 40.3381333333334 74.6666666666667 41.2797866666667 74.6666666666667 44.816V213.3333333333334H23.34144C20.7467733333333 213.3333333333334 20.0353066666667 213.09792 19.5645866666667 210.7386666666667L15.79808 192H0V234.6666666666667H170.6666666666667V192H154.8685866666667L151.1021866666667 210.7386666666667C150.63136 213.09792 149.9198933333333 213.3333333333334 147.3252266666667 213.3333333333334H96V44.816C96 41.5098666666667 96.40768 40.56832 99.944 40.3381333333333L128 38.44448V21.3333333333333H42.6666666666667z M160 21.3333333333333V38.44448L177.37888 40.0974933333333C180.6850133333333 40.3381333333334 181.3333333333333 41.2797866666667 181.3333333333333 44.816V138.6666666666667H151.34144C148.7467733333333 138.6666666666667 148.0353066666667 138.4312533333334 147.5645866666667 136.072L143.79808 117.3333333333334H128V160H256V117.3333333333334H240.20192L236.43552 136.072C235.9646933333334 138.4312533333334 235.2532266666667 138.6666666666667 232.65856 138.6666666666667H202.6666666666667V44.816C202.6666666666667 41.5098666666667 203.0743466666667 40.56832 206.6106666666667 40.3381333333333L224 38.44448V21.3333333333333H160z"/>
<glyph glyph-name="cart"
unicode="&#xEA22;"
horiz-adv-x="256"
d=" M245.3333333333333 85.3333333333333H32L48 106.6666666666667H202.6666666666667C207.264 106.6666666666667 211.328 109.6 212.7786666666667 113.9626666666667L244.7786666666667 209.9626666666667C245.8773333333334 213.216 245.3226666666667 216.7893333333333 243.3173333333333 219.5733333333334C241.312 222.3573333333334 238.0906666666667 224 234.6666666666667 224H47.0826666666667L18.208 252.8746666666667C14.0373333333333 257.0453333333334 7.296 257.0453333333334 3.1253333333333 252.8746666666667S-1.0453333333333 241.9626666666667 3.1253333333333 237.792L32 208.9173333333334V120.896L2.1333333333333 81.0666666666667C-0.2986666666667 77.8346666666667 -0.6826666666667 73.5146666666667 1.12 69.8986666666667C2.9333333333333 66.2826666666667 6.624 64 10.6666666666667 64H245.3333333333333C251.232 64 256 68.7786666666667 256 74.6666666666667S251.232 85.3333333333333 245.3333333333333 85.3333333333333z M21.3333333333333 21.3333333333333C21.3333333333333 9.5512586702764 30.8845920036097 0 42.6666666666667 0C54.4487413297236 0 64 9.5512586702764 64 21.3333333333333C64 33.1154079963903 54.4487413297236 42.6666666666667 42.6666666666667 42.6666666666667C30.8845920036097 42.6666666666667 21.3333333333333 33.1154079963903 21.3333333333333 21.3333333333333z M192 21.3333333333333C192 9.5512586702764 201.5512586702764 0 213.3333333333333 0C225.1154079963903 0 234.6666666666667 9.5512586702764 234.6666666666667 21.3333333333333C234.6666666666667 33.1154079963903 225.1154079963903 42.6666666666667 213.3333333333333 42.6666666666667C201.5512586702764 42.6666666666667 192 33.1154079963903 192 21.3333333333333z"/>
<glyph glyph-name="chart-bar-32"
unicode="&#xEA23;"
horiz-adv-x="256"
d=" M149.3333333333333 234.6666666666667H106.6666666666667C100.7786666666667 234.6666666666667 96 229.888 96 224V32C96 26.112 100.7786666666667 21.3333333333333 106.6666666666667 21.3333333333333H149.3333333333334C155.2213333333334 21.3333333333333 160 26.112 160 32V224C160 229.888 155.2213333333333 234.6666666666667 149.3333333333333 234.6666666666667z M53.3333333333333 117.3333333333334H10.6666666666667C4.7786666666667 117.3333333333334 0 112.5546666666667 0 106.6666666666667V32C0 26.112 4.7786666666667 21.3333333333334 10.6666666666667 21.3333333333334H53.3333333333333C59.2213333333333 21.3333333333334 64 26.112 64 32V106.6666666666667C64 112.5546666666667 59.2213333333333 117.3333333333334 53.3333333333333 117.3333333333334z M245.3333333333333 170.6666666666667H202.6666666666667C196.7786666666667 170.6666666666667 192 165.888 192 160V32C192 26.112 196.7786666666667 21.3333333333333 202.6666666666667 21.3333333333333H245.3333333333333C251.2213333333333 21.3333333333333 256 26.112 256 32V160C256 165.888 251.2213333333333 170.6666666666667 245.3333333333333 170.6666666666667z"/>
<glyph glyph-name="chart-pie-35"
unicode="&#xEA24;"
horiz-adv-x="256"
d=" M138.6666666666667 138.6666666666667H255.456C250.304 200.736 200.736 250.304 138.6666666666667 255.456V138.6666666666667z M132.416 117.3333333333334L45.4293333333333 30.3466666666667C67.744 11.456 96.544 0 128 0C194.976 0 250.0053333333334 51.744 255.456 117.3333333333333H132.416z M117.3333333333333 132.416V255.456C51.744 250.0053333333334 0 194.976 0 128C0 96.544 11.456 67.744 30.3466666666667 45.4293333333333L117.3333333333333 132.416z"/>
<glyph glyph-name="chat-round"
unicode="&#xEA25;"
horiz-adv-x="256"
d=" M128 245.3333333333334C57.6 245.3333333333334 0 197.3333333333334 0 138.6666666666667S57.6 32 128 32C138.6666666666667 32 149.3333333333334 33.0666666666667 160 35.2L219.7333333333333 11.7333333333333C220.8 11.7333333333333 221.8666666666667 10.6666666666667 224 10.6666666666667C226.1333333333334 10.6666666666667 228.2666666666667 11.7333333333333 230.4 12.8C233.6 14.9333333333333 234.6666666666667 19.2 234.6666666666667 22.4L229.3333333333334 72.5333333333333C246.4 91.7333333333333 256 114.1333333333333 256 137.6C256 197.3333333333334 198.4 245.3333333333334 128 245.3333333333334z"/>
<glyph glyph-name="check-bold"
unicode="&#xEA26;"
horiz-adv-x="256"
d=" M21.3333333333333 138.6666666666667L42.6666666666667 160L96 128L213.3333333333333 213.3333333333334L234.6666666666667 192L96 53.3333333333333z"/>
<glyph glyph-name="circle-08"
unicode="&#xEA27;"
horiz-adv-x="256"
d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM85.3333333333333 149.3333333333334C85.3333333333333 172.896 105.0026666666667 192 128 192S170.6666666666667 172.896 170.6666666666667 149.3333333333334V138.6666666666667C170.6666666666667 115.104 150.9973333333333 96 128 96S85.3333333333333 115.104 85.3333333333333 138.6666666666667V149.3333333333334zM128 21.3333333333333C102.048 21.3333333333333 78.24 30.6773333333333 59.7226666666667 46.144C68.672 63.0293333333333 86.2186666666667 74.6666666666667 106.6666666666667 74.6666666666667H149.3333333333333C169.7813333333333 74.6666666666667 187.328 63.0293333333333 196.2773333333333 46.144C177.76 30.6773333333334 153.952 21.3333333333333 128 21.3333333333333z"/>
<glyph glyph-name="cloud-download-95"
unicode="&#xEA28;"
horiz-adv-x="256"
d=" M211.968 148.5226666666667C204.6826666666667 191.52 167.104 224 122.6666666666667 224C76.7573333333333 224 38.6453333333333 189.9093333333333 32.864 145.1093333333333C13.184 136.9493333333334 0 117.728 0 96C0 66.592 23.9253333333333 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C232.0746666666667 42.6666666666667 256 66.592 256 96C256 122.24 236.96 144.1066666666667 211.968 148.5226666666667zM128 74.6666666666667L74.6666666666667 128H117.3333333333334V170.6666666666667H138.6666666666667V128H181.3333333333334L128 74.6666666666667z"/>
<glyph glyph-name="cloud-upload-96"
unicode="&#xEA29;"
horiz-adv-x="256"
d=" M211.968 148.5226666666667C204.6826666666667 191.52 167.104 224 122.6666666666667 224C76.7573333333333 224 38.656 189.9093333333333 32.864 145.1093333333333C13.1733333333333 136.9493333333334 0 117.728 0 96C0 66.592 23.9253333333333 42.6666666666667 53.3333333333333 42.6666666666667H202.6666666666666C232.0746666666667 42.6666666666667 256 66.592 256 96C256 122.24 236.96 144.1173333333333 211.968 148.5226666666667zM138.6666666666667 117.3333333333334V74.6666666666667H117.3333333333333V117.3333333333334H74.6666666666667L128 170.6666666666667L181.3333333333333 117.3333333333334H138.6666666666667z"/>
<glyph glyph-name="compass-04"
unicode="&#xEA2A;"
horiz-adv-x="256"
d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM138.6666666666667 21.8773333333333V42.6666666666667H117.3333333333333V21.8773333333334C67.0186666666667 26.8906666666667 26.8906666666667 67.0186666666667 21.8773333333333 117.3333333333334H42.6666666666667V138.6666666666667H21.8773333333333C26.8906666666667 188.9813333333334 67.0186666666667 229.1093333333333 117.3333333333333 234.1226666666667V213.3333333333334H138.6666666666667V234.1226666666667C188.9813333333333 229.0986666666667 229.1093333333333 188.9813333333334 234.1226666666667 138.6666666666667H213.3333333333333V117.3333333333334H234.1226666666667C229.1093333333333 67.0186666666667 188.9813333333333 26.8906666666667 138.6666666666667 21.8773333333333z M98.5386666666667 157.4613333333334L54.3573333333333 54.3573333333333L157.4613333333333 98.5386666666667L201.6426666666667 201.6426666666667L98.5386666666667 157.4613333333334zM94.976 94.976L114.7946666666667 141.2053333333333L141.216 114.784L94.976 94.976z"/>
<glyph glyph-name="controller"
unicode="&#xEA2B;"
horiz-adv-x="256"
d=" M138.6666666666667 234.6666666666667C138.6666666666667 240.5546666666667 133.888 245.3333333333334 128 245.3333333333334S117.3333333333333 240.5546666666667 117.3333333333333 234.6666666666667V181.3333333333334H138.6666666666667V234.6666666666667z M192 160H64C28.704 160 0 131.296 0 96S28.704 32 64 32C86.9866666666667 32 108.0213333333333 44.352 119.3706666666667 64H136.6186666666667C147.968 44.352 169.0026666666667 32 191.9893333333333 32C227.2853333333333 32 255.9893333333333 60.704 255.9893333333333 96S227.296 160 192 160zM96 85.3333333333333H74.6666666666667V64H53.3333333333333V85.3333333333333H32V106.6666666666667H53.3333333333333V128H74.6666666666667V106.6666666666667H96V85.3333333333333zM181.3333333333333 64C175.4453333333333 64 170.6666666666667 68.7786666666667 170.6666666666667 74.6666666666667C170.6666666666667 80.5546666666667 175.4453333333334 85.3333333333333 181.3333333333333 85.3333333333333S192 80.5546666666667 192 74.6666666666667C192 68.7786666666667 187.2213333333333 64 181.3333333333333 64zM213.3333333333333 96C207.4453333333333 96 202.6666666666667 100.7786666666667 202.6666666666667 106.6666666666667C202.6666666666667 112.5546666666667 207.4453333333334 117.3333333333333 213.3333333333333 117.3333333333333S224 112.5546666666667 224 106.6666666666667C224 100.7786666666667 219.2213333333333 96 213.3333333333333 96z"/>
<glyph glyph-name="credit-card"
unicode="&#xEA2C;"
horiz-adv-x="256"
d=" M256 170.6773333333333V213.3333333333334C256 225.12 246.4533333333333 234.6666666666667 234.6666666666667 234.6666666666667H21.3333333333333C9.5466666666667 234.6666666666667 0 225.12 0 213.3333333333334V170.6773333333333H256z M0 138.6666666666667V42.6666666666667C0 30.88 9.5466666666667 21.3333333333333 21.3333333333333 21.3333333333333H234.6666666666667C246.4533333333333 21.3333333333333 256 30.88 256 42.6666666666667V138.6666666666667H0zM117.3333333333333 74.6666666666667H42.6666666666667V96H117.3333333333333V74.6666666666667zM213.3333333333333 74.6666666666667H170.6666666666667V96H213.3333333333333V74.6666666666667z"/>
<glyph glyph-name="curved-next"
unicode="&#xEA2D;"
horiz-adv-x="256"
d=" M138.6666666666667 96V27.7333333333334L249.6 138.6666666666667L138.6666666666667 249.6V181.3333333333334C89.6 179.2 0 158.9333333333333 0 42.6666666666667V3.2L20.2666666666667 37.3333333333333C45.8666666666667 81.0666666666667 71.4666666666667 94.9333333333333 138.6666666666667 96z"/>
<glyph glyph-name="delivery-fast"
unicode="&#xEA2E;"
horiz-adv-x="256"
d=" M0 245.3333333333334H96V224H0V245.3333333333334z M21.3333333333333 202.6666666666667H96V181.3333333333334H21.3333333333333V202.6666666666667z M42.6666666666667 160H96V138.6666666666667H42.6666666666667V160z M64 117.3333333333334H96V96H64V117.3333333333334z M250.1013333333333 137.5466666666667L211.8186666666667 156.6826666666667L202.3466666666666 194.5813333333333C201.1626666666667 199.3386666666667 196.896 202.6666666666667 192 202.6666666666667H174.6666666666667H117.3333333333333C117.3333333333333 202.6666666666667 117.3333333333333 69.856 117.3333333333333 64S117.8773333333333 53.3333333333333 117.8773333333333 53.3333333333333C120.5653333333333 29.3973333333333 140.6933333333333 10.6666666666667 165.3333333333333 10.6666666666667S210.1013333333333 29.3973333333333 212.7893333333333 53.3333333333333H245.3333333333333C251.2213333333333 53.3333333333333 256 58.112 256 64V128C256 132.0426666666667 253.7173333333334 135.7333333333334 250.1013333333333 137.5466666666667zM165.3333333333333 32C150.6346666666667 32 138.6666666666667 43.9573333333333 138.6666666666667 58.6666666666667S150.6346666666667 85.3333333333333 165.3333333333333 85.3333333333333S192 73.376 192 58.6666666666667S180.032 32 165.3333333333333 32zM138.6666666666667 149.3333333333334V181.3333333333334H185.0026666666667L192 149.3333333333334H138.6666666666667z"/>
<glyph glyph-name="diamond"
unicode="&#xEA2F;"
horiz-adv-x="256"
d=" M200.192 241.4933333333334C198.1653333333333 243.9253333333334 195.168 245.3333333333334 192 245.3333333333334H64C60.832 245.3333333333334 57.8346666666667 243.9253333333334 55.808 241.4933333333334L2.4746666666667 177.4933333333334C-0.6613333333333 173.728 -0.832 168.3093333333334 2.0586666666667 164.3626666666667L119.392 4.3626666666667C121.408 1.6213333333334 124.608 0 128 0S134.592 1.6213333333333 136.608 4.3626666666667L253.9413333333333 164.3626666666667C256.832 168.32 256.672 173.728 253.5253333333333 177.4933333333334L200.192 241.4933333333334zM202.6666666666667 160H53.3333333333333V181.3333333333334H202.6666666666666V160z"/>
<glyph glyph-name="email-83"
unicode="&#xEA30;"
horiz-adv-x="256"
d=" M245.3333333333333 234.6666666666667H10.6666666666667C4.2666666666667 234.6666666666667 0 230.4 0 224V192C0 187.7333333333334 2.1333333333333 184.5333333333333 5.3333333333333 182.4L122.6666666666667 118.4C124.8 117.3333333333334 125.8666666666667 117.3333333333334 128 117.3333333333334S131.2 117.3333333333334 133.3333333333334 118.4L250.6666666666667 182.4C253.8666666666667 184.5333333333333 256 187.7333333333334 256 192V224C256 230.4 251.7333333333334 234.6666666666667 245.3333333333333 234.6666666666667z M142.9333333333333 100.2666666666667C138.6666666666667 97.0666666666667 133.3333333333333 96 128 96S117.3333333333333 97.0666666666667 113.0666666666667 100.2666666666667L0 161.0666666666667V32C0 25.6 4.2666666666667 21.3333333333333 10.6666666666667 21.3333333333333H245.3333333333333C251.7333333333333 21.3333333333333 256 25.6 256 32V161.0666666666667L142.9333333333333 100.2666666666667z"/>
<glyph glyph-name="fat-add"
unicode="&#xEA31;"
horiz-adv-x="256"
d=" M192 149.3333333333334L149.3333333333333 149.3333333333334L149.3333333333333 192L106.6666666666667 192L106.6666666666667 149.3333333333334L64 149.3333333333334L64 106.6666666666667L106.6666666666667 106.6666666666667L106.6666666666667 64L149.3333333333333 64L149.3333333333333 106.6666666666667L192 106.6666666666667z"/>
<glyph glyph-name="fat-delete"
unicode="&#xEA32;"
horiz-adv-x="256" d=" M64 149.3333333333334H192V106.6666666666667H64V149.3333333333334z"/>
<glyph glyph-name="fat-remove"
unicode="&#xEA33;"
horiz-adv-x="256"
d=" M188.8 98.1333333333333L157.8666666666667 128L188.8 157.8666666666667L157.8666666666667 188.8L128 157.8666666666667L98.1333333333333 188.8L67.2 157.8666666666667L98.1333333333333 128L67.2 98.1333333333333L98.1333333333333 67.2L128 98.1333333333333L157.8666666666667 67.2z"/>
<glyph glyph-name="favourite-28"
unicode="&#xEA34;"
horiz-adv-x="256"
d=" M181.3333333333333 256C161.0666666666667 256 141.8666666666667 247.4666666666667 128 233.6C114.1333333333333 247.4666666666667 94.9333333333333 256 74.6666666666667 256C33.0666666666667 256 0 222.9333333333333 0 181.3333333333334C0 113.0666666666667 116.2666666666667 17.0666666666667 121.6 12.8C123.7333333333333 10.6666666666667 125.8666666666667 10.6666666666667 128 10.6666666666667S132.2666666666667 11.7333333333333 134.4 12.8C139.7333333333333 17.0666666666667 256 113.0666666666667 256 181.3333333333334C256 222.9333333333333 222.9333333333333 256 181.3333333333333 256z"/>
<glyph glyph-name="folder-17"
unicode="&#xEA35;"
horiz-adv-x="256"
d=" M101.3333333333333 224C107.7333333333333 224 114.1333333333333 220.8 118.4 215.4666666666667L144 181.3333333333334H234.6666666666667V245.3333333333334C234.6666666666667 251.7333333333333 230.4 256 224 256H32C25.6 256 21.3333333333333 251.7333333333333 21.3333333333333 245.3333333333334V224H101.3333333333333z M245.3333333333333 160H133.3333333333333L104.5333333333333 198.4C102.4 201.6 99.2 202.6666666666667 96 202.6666666666667H10.6666666666667C4.2666666666667 202.6666666666667 0 198.4 0 192V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H245.3333333333333C251.7333333333333 0 256 4.2666666666667 256 10.6666666666667V149.3333333333334C256 155.7333333333334 251.7333333333334 160 245.3333333333333 160z"/>
<glyph glyph-name="glasses-2"
unicode="&#xEA36;"
horiz-adv-x="256"
d=" M213.3333333333333 245.3333333333334H202.6666666666667V224H213.3333333333333C225.0986666666667 224 234.6666666666667 214.432 234.6666666666667 202.6666666666667V114.5493333333334C224.512 122.944 211.4986666666667 128 197.3333333333333 128C176.2133333333333 128 157.7173333333333 116.7466666666667 147.392 99.9466666666667C141.9946666666667 104.096 135.3173333333333 106.6666666666667 128 106.6666666666667S114.0053333333334 104.096 108.608 99.9466666666667C98.2826666666667 116.7466666666667 79.7866666666667 128 58.6666666666667 128C44.5013333333333 128 31.488 122.944 21.3333333333333 114.5493333333333V202.6666666666667C21.3333333333333 214.432 30.9013333333333 224 42.6666666666667 224H53.3333333333333V245.3333333333334H42.6666666666667C19.136 245.3333333333334 0 226.1973333333334 0 202.6666666666667V69.3333333333334C0 36.992 26.3253333333333 10.6666666666667 58.6666666666667 10.6666666666667C89.2053333333333 10.6666666666667 114.3573333333333 34.144 117.0666666666667 64H117.3333333333333V74.6666666666667C117.3333333333333 80.5546666666667 122.112 85.3333333333333 128 85.3333333333333S138.6666666666667 80.5546666666667 138.6666666666667 74.6666666666667V64H138.9333333333333C141.6426666666667 34.144 166.784 10.6666666666667 197.3333333333333 10.6666666666667C229.6746666666667 10.6666666666667 256 36.992 256 69.3333333333333V202.6666666666667C256 226.1973333333334 236.864 245.3333333333334 213.3333333333333 245.3333333333334z"/>
<glyph glyph-name="hat-3"
unicode="&#xEA37;"
horiz-adv-x="256"
d=" M234.6666666666667 138.6666666666667H256V74.6666666666667H234.6666666666667V138.6666666666667z M141.2373333333333 88.2133333333333C137.0346666666667 86.2933333333334 132.5866666666667 85.3333333333333 128 85.3333333333333S118.9653333333333 86.2933333333334 114.7733333333334 88.2026666666667L42.6666666666667 120.9813333333334V64C42.6666666666667 35.9893333333333 85.5893333333333 21.3333333333333 128 21.3333333333333S213.3333333333333 35.9893333333334 213.3333333333333 64V120.9706666666667L141.2373333333333 88.2133333333333z M249.7493333333334 180.3733333333333L132.416 233.7066666666667C129.6106666666667 234.976 126.4 234.976 123.5946666666667 233.7066666666667L6.2613333333333 180.3733333333333C2.4426666666667 178.6453333333333 0 174.8586666666667 0 170.6666666666667S2.4426666666667 162.688 6.2506666666667 160.96L123.584 107.6266666666667C124.992 106.9866666666667 126.496 106.6666666666667 128 106.6666666666667S131.008 106.9866666666667 132.416 107.6266666666667L249.7493333333333 160.96C253.5573333333334 162.688 256 166.4746666666667 256 170.6666666666667S253.5573333333334 178.6453333333333 249.7493333333334 180.3733333333333z"/>
<glyph glyph-name="headphones"
unicode="&#xEA38;"
horiz-adv-x="256"
d=" M245.3333333333333 106.112V160C245.3333333333333 212.928 202.2613333333333 256 149.3333333333333 256H106.6666666666667C53.7386666666667 256 10.6666666666667 212.928 10.6666666666667 160V106.112C3.9466666666667 95.4346666666667 0 82.848 0 69.3333333333334C0 31.104 31.104 0 69.3333333333333 0C75.6266666666667 0 81.984 0.896 88.2346666666667 2.6666666666667C92.832 3.968 96 8.16 96 12.928V125.7386666666667C96 130.5066666666667 92.832 134.6986666666667 88.2346666666667 136C81.984 137.7706666666667 75.6266666666667 138.6666666666667 69.3333333333333 138.6666666666667C55.584 138.6666666666667 42.7946666666667 134.592 32 127.6586666666667V160C32 201.1733333333334 65.4933333333333 234.6666666666667 106.6666666666667 234.6666666666667H149.3333333333333C190.5066666666667 234.6666666666667 224 201.1733333333333 224 160V127.6586666666667C213.2053333333333 134.592 200.416 138.6666666666667 186.6666666666667 138.6666666666667C180.3733333333333 138.6666666666667 174.016 137.7706666666667 167.7653333333333 136C163.168 134.6986666666667 160 130.5066666666667 160 125.7386666666667V12.9386666666667C160 8.1706666666667 163.168 3.9786666666667 167.7653333333333 2.6773333333334C174.016 0.896 180.3733333333333 0 186.6666666666667 0C224.896 0 256 31.104 256 69.3333333333333C256 82.848 252.0533333333333 95.4346666666667 245.3333333333333 106.112z"/>
<glyph glyph-name="html5"
unicode="&#xEA39;"
horiz-adv-x="256"
d=" M231.9466666666667 241.7813333333333C229.9306666666667 244.0426666666667 227.04 245.3333333333334 224 245.3333333333334H32C28.96 245.3333333333334 26.0693333333333 244.0426666666667 24.0533333333333 241.7813333333333C22.0266666666667 239.52 21.0666666666667 236.5013333333333 21.3973333333333 233.4933333333334L42.7306666666667 41.4933333333333C43.2 37.1946666666667 46.24 33.6106666666667 50.4 32.4053333333333L125.0666666666667 11.072C126.0266666666667 10.8053333333334 127.0186666666667 10.6666666666667 128 10.6666666666667S129.9733333333333 10.8053333333334 130.9333333333333 11.072L205.6 32.4053333333334C209.76 33.6000000000001 212.7893333333333 37.184 213.2693333333333 41.4933333333334L234.6026666666667 233.4933333333334C234.9333333333333 236.5013333333333 233.9733333333333 239.52 231.9466666666667 241.7813333333333zM192 181.3333333333334H86.2613333333333L89.8133333333333 138.6666666666667H187.7866666666667L180.5333333333333 66.1333333333334L128 53.0026666666667L74.6666666666667 66.336V96H96V82.9973333333333L128 74.9973333333333L160.8 83.2L164.2133333333334 117.3333333333333H70.1866666666667L63.072 202.6666666666667H192V181.3333333333334z"/>
<glyph glyph-name="istanbul"
unicode="&#xEA3A;"
horiz-adv-x="256"
d=" M234.6666666666667 221.8666666666667V245.3333333333334C234.6666666666667 251.7333333333333 230.4 256 224 256S213.3333333333334 251.7333333333333 213.3333333333334 245.3333333333334V221.8666666666667C200.5333333333333 217.6 192 205.8666666666667 192 192V160V128C192 160 168.5333333333333 185.6 138.6666666666667 190.9333333333333V213.3333333333334C138.6666666666667 219.7333333333334 134.4 224 128 224S117.3333333333334 219.7333333333334 117.3333333333334 213.3333333333334V190.9333333333333C87.4666666666667 185.6 64 160 64 128V160V192C64 205.8666666666667 55.4666666666667 217.6 42.6666666666667 221.8666666666667V245.3333333333334C42.6666666666667 251.7333333333333 38.4 256 32 256S21.3333333333333 251.7333333333333 21.3333333333333 245.3333333333334V221.8666666666667C8.5333333333333 217.6 0 205.8666666666667 0 192V160V10.6666666666667C0 4.2666666666667 4.2666666666667 0 10.6666666666667 0H106.6666666666667V21.3333333333334C106.6666666666667 33.0666666666667 116.2666666666667 42.6666666666667 128 42.6666666666667L128 42.6666666666667C139.7333333333334 42.6666666666667 149.3333333333334 33.0666666666667 149.3333333333334 21.3333333333334V0H245.3333333333334C251.7333333333334 0 256 4.2666666666667 256 10.6666666666667V160V192C256 205.8666666666667 247.4666666666667 217.6 234.6666666666667 221.8666666666667zM42.6666666666667 170.6666666666667H21.3333333333333V192C21.3333333333333 198.4 25.6 202.6666666666667 32 202.6666666666667S42.6666666666667 198.4 42.6666666666667 192V170.6666666666667zM170.6666666666667 117.3333333333334H85.3333333333333V128C85.3333333333333 151.4666666666667 104.5333333333333 170.6666666666667 128 170.6666666666667C151.4666666666667 170.6666666666667 170.6666666666667 151.4666666666667 170.6666666666667 128V117.3333333333334zM234.6666666666667 170.6666666666667H213.3333333333333V192C213.3333333333333 198.4 217.6 202.6666666666667 224 202.6666666666667S234.6666666666667 198.4 234.6666666666667 192V170.6666666666667z"/>
<glyph glyph-name="key-25"
unicode="&#xEA3B;"
horiz-adv-x="256"
d=" M252.8746666666667 178.208L217.7493333333334 213.3333333333334L242.208 237.792C246.3786666666667 241.9626666666667 246.3786666666667 248.704 242.208 252.8746666666667S231.296 257.0453333333334 227.1253333333334 252.8746666666667L116.2773333333333 142.0266666666667C119.072 139.8506666666667 121.792 137.5466666666667 124.3413333333333 135.008C126.8906666666667 132.4586666666667 129.184 129.7386666666667 131.36 126.944L170.6666666666667 166.2506666666667L205.792 131.1253333333334C207.872 129.0453333333334 210.6026666666667 128 213.3333333333333 128S218.7946666666667 129.0453333333333 220.8746666666667 131.1253333333334L252.8746666666667 163.1253333333334C257.0453333333333 167.296 257.0453333333333 174.0373333333333 252.8746666666667 178.208z M64 10.6666666666667C81.0986666666667 10.6666666666667 97.1626666666667 17.3226666666667 109.2586666666667 29.408S128 57.568 128 74.6666666666667S121.344 107.8293333333334 109.2586666666667 119.9253333333334S81.0986666666667 138.6666666666667 64 138.6666666666667S30.8373333333333 132.0106666666667 18.7413333333333 119.9253333333334S0 91.7653333333333 0 74.6666666666667S6.656 41.504 18.7413333333333 29.408S46.9013333333333 10.6666666666667 64 10.6666666666667z"/>
<glyph glyph-name="laptop"
unicode="&#xEA3C;"
horiz-adv-x="256"
d=" M224 108.8533333333334V213.3333333333334C224 225.0986666666667 214.432 234.6666666666667 202.6666666666667 234.6666666666667H53.3333333333333C41.568 234.6666666666667 32 225.0986666666667 32 213.3333333333334V108.8533333333334L7.232 51.072C4.4053333333333 44.4586666666667 5.0773333333333 36.928 9.0346666666667 30.9226666666667C12.992 24.9173333333333 19.648 21.3333333333333 26.848 21.3333333333333H229.1626666666667C236.352 21.3333333333333 243.008 24.9173333333333 246.976 30.9226666666667C250.9333333333334 36.928 251.6053333333334 44.4586666666667 248.768 51.072L224 108.8533333333334zM202.6666666666667 117.3333333333334H53.3333333333333V213.3333333333334H202.6666666666666V117.3333333333334z"/>
<glyph glyph-name="like-2"
unicode="&#xEA3D;"
horiz-adv-x="256"
d=" M53.3333333333333 21.3333333333333H32C25.6 21.3333333333333 21.3333333333333 25.6 21.3333333333333 32V128C21.3333333333333 134.4 25.6 138.6666666666667 32 138.6666666666667H53.3333333333333C59.7333333333333 138.6666666666667 64 134.4 64 128V32C64 25.6 59.7333333333333 21.3333333333333 53.3333333333333 21.3333333333333z M213.3333333333333 149.3333333333334H160V181.3333333333334C160 199.4666666666667 149.3333333333334 224 133.3333333333334 233.6C125.8666666666667 236.8 117.3333333333333 232.5333333333334 117.3333333333333 224V181.3333333333334L85.3333333333333 142.9333333333333V32L88.5333333333333 30.9333333333333C100.2666666666667 24.5333333333334 114.1333333333333 21.3333333333333 128 21.3333333333333H202.6666666666667C214.4 21.3333333333333 224 30.9333333333333 224 42.6666666666667L234.6666666666667 128C234.6666666666667 139.7333333333334 225.0666666666667 149.3333333333334 213.3333333333333 149.3333333333334z"/>
<glyph glyph-name="lock-circle-open"
unicode="&#xEA3E;"
horiz-adv-x="256"
d=" M128 170.6666666666667C112.448 170.6666666666667 97.8986666666667 166.4213333333333 85.3333333333333 159.1253333333334V192C85.3333333333333 215.5306666666667 104.4693333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.5306666666667 170.6666666666667 192H192C192 227.296 163.296 256 128 256S64 227.296 64 192V141.5893333333334C50.7626666666667 126.5493333333334 42.6666666666667 106.8906666666667 42.6666666666667 85.3333333333333C42.6666666666667 38.2826666666667 80.9493333333333 0 128 0S213.3333333333333 38.2826666666667 213.3333333333333 85.3333333333333S175.0506666666667 170.6666666666667 128 170.6666666666667zM138.6666666666667 65.9626666666667V42.6666666666667H117.3333333333333V65.9626666666667C104.9493333333333 70.3786666666667 96 82.112 96 96C96 113.6426666666667 110.3573333333333 128 128 128S160 113.6426666666667 160 96C160 82.112 151.0506666666667 70.3786666666667 138.6666666666667 65.9626666666667z"/>
<glyph glyph-name="map-big"
unicode="&#xEA3F;"
horiz-adv-x="256"
d=" M181.3333333333333 241.2586666666667L138.6666666666667 219.9253333333333L138.6666666666667 14.7413333333334L181.3333333333333 36.0746666666667z M117.3333333333333 219.9253333333333L74.6666666666667 241.2586666666667L74.6666666666667 36.0746666666667L117.3333333333333 14.7413333333334z M53.3333333333333 240.704L5.1733333333333 211.808C1.9733333333333 209.888 0 206.4213333333333 0 202.6666666666667V0L53.3333333333333 34.496V240.704z M250.8266666666667 211.808L202.6666666666667 240.704V34.496L256 0V202.6666666666667C256 206.4213333333333 254.0266666666667 209.888 250.8266666666667 211.808z"/>
<glyph glyph-name="mobile-button"
unicode="&#xEA40;"
horiz-adv-x="256"
d=" M192 256H64C46.3573333333333 256 32 241.6426666666667 32 224V32C32 14.3573333333333 46.3573333333333 0 64 0H192C209.6426666666667 0 224 14.3573333333333 224 32V224C224 241.6426666666667 209.6426666666667 256 192 256zM128 21.3333333333333C122.112 21.3333333333333 117.3333333333333 26.112 117.3333333333333 32S122.112 42.6666666666667 128 42.6666666666667S138.6666666666667 37.888 138.6666666666667 32S133.888 21.3333333333333 128 21.3333333333333zM202.6666666666667 74.6666666666667C202.6666666666667 68.7786666666667 197.888 64 192 64H64C58.112 64 53.3333333333333 68.7786666666667 53.3333333333333 74.6666666666667V213.3333333333334C53.3333333333333 219.2213333333334 58.112 224 64 224H192C197.888 224 202.6666666666667 219.2213333333334 202.6666666666667 213.3333333333334V74.6666666666667z"/>
<glyph glyph-name="money-coins"
unicode="&#xEA41;"
horiz-adv-x="256"
d=" M85.3333333333333 106.6666666666667H10.6666666666667C4.7786666666667 106.6666666666667 0 111.4453333333333 0 117.3333333333334V245.3333333333334C0 251.2213333333334 4.7786666666667 256 10.6666666666667 256H202.6666666666667C208.5546666666667 256 213.3333333333333 251.2213333333334 213.3333333333333 245.3333333333334V192H192V234.6666666666667H21.3333333333333V128H85.3333333333333V106.6666666666667z M181.3333333333333 85.3333333333333C149.856 85.3333333333333 123.7013333333333 92.1493333333334 106.6666666666667 103.5946666666667C106.6666666666667 95.6373333333334 106.6666666666667 90.3893333333334 106.6666666666667 85.3333333333333C106.6666666666667 67.6586666666667 140.096 53.3333333333333 181.3333333333333 53.3333333333333S256 67.6586666666667 256 85.3333333333333C256 90.3893333333334 256 95.6373333333334 256 103.5946666666667C238.9653333333333 92.1493333333334 212.8106666666667 85.3333333333333 181.3333333333333 85.3333333333333z M181.3333333333333 32C149.856 32 123.7013333333333 38.816 106.6666666666667 50.2613333333333C106.6666666666667 42.304 106.6666666666667 37.056 106.6666666666667 32C106.6666666666667 14.3253333333333 140.096 0 181.3333333333333 0S256 14.3253333333333 256 32C256 37.056 256 42.304 256 50.2613333333333C238.9653333333333 38.816 212.8106666666667 32 181.3333333333333 32z M95.0293333333333 163.4986666666667C102.3466666666667 172.0426666666667 113.5253333333333 179.0186666666667 127.7333333333333 183.936C126.4426666666667 194.4533333333334 117.5466666666667 202.6666666666667 106.6666666666667 202.6666666666667C94.9013333333333 202.6666666666667 85.3333333333333 193.0986666666667 85.3333333333333 181.3333333333334C85.3333333333333 173.8666666666667 89.2053333333333 167.3066666666667 95.0293333333333 163.4986666666667z M106.6666666666667 138.6666666666667C106.6666666666667 120.9935546720813 140.0960720126341 106.6666666666667 181.3333333333333 106.6666666666667C222.5705946540326 106.6666666666667 256 120.9935546720813 256 138.6666666666667C256 156.3397786612521 222.5705946540326 170.6666666666667 181.3333333333333 170.6666666666667C140.0960720126341 170.6666666666667 106.6666666666667 156.3397786612521 106.6666666666667 138.6666666666667z"/>
<glyph glyph-name="note-03"
unicode="&#xEA42;"
horiz-adv-x="256"
d=" M245.3333333333333 256H85.3333333333333C79.4453333333333 256 74.6666666666667 251.2213333333334 74.6666666666667 245.3333333333334V87.872C67.0293333333333 92.992 57.8666666666667 96 48 96C21.536 96 0 74.464 0 48S21.536 0 48 0S96 21.536 96 48V170.6666666666667H234.6666666666667V109.2053333333333C227.0293333333333 114.3253333333333 217.8666666666667 117.3333333333334 208 117.3333333333334C181.536 117.3333333333334 160 95.7973333333333 160 69.3333333333333S181.536 21.3333333333333 208 21.3333333333333S256 42.8693333333333 256 69.3333333333333V245.3333333333334C256 251.2213333333334 251.2213333333333 256 245.3333333333333 256z"/>
<glyph glyph-name="notification-70"
unicode="&#xEA43;"
horiz-adv-x="256"
d=" M202.6666666666667 256C170.6666666666667 256 140.8 240 122.6666666666667 213.3333333333334H85.3333333333333H74.6666666666667H32C13.8666666666667 213.3333333333334 0 190.9333333333333 0 160S13.8666666666667 106.6666666666667 32 106.6666666666667H56.5333333333333L102.4 28.8C108.8 18.1333333333334 121.6 14.9333333333333 131.2 21.3333333333333C141.8666666666667 27.7333333333334 145.0666666666667 40.5333333333333 138.6666666666667 50.1333333333334L105.6 106.6666666666667H122.6666666666667C140.8 80 170.6666666666667 64 202.6666666666667 64C233.6 64 256 105.6 256 160S233.6 256 202.6666666666667 256zM202.6666666666667 85.3333333333333C193.0666666666667 85.3333333333333 182.4 99.2 176 120.5333333333333C192 126.9333333333333 202.6666666666667 141.8666666666667 202.6666666666667 160S192 193.0666666666667 176 199.4666666666667C182.4 220.8 193.0666666666667 234.6666666666667 202.6666666666667 234.6666666666667C217.6 234.6666666666667 234.6666666666667 202.6666666666667 234.6666666666667 160S217.6 85.3333333333333 202.6666666666667 85.3333333333333z"/>
<glyph glyph-name="palette"
unicode="&#xEA44;"
horiz-adv-x="256"
d=" M217.6 190.9333333333333C205.8666666666666 196.2666666666667 194.1333333333333 199.4666666666667 181.3333333333333 199.4666666666667C164.2666666666667 199.4666666666667 149.3333333333333 194.1333333333333 135.4666666666667 189.8666666666667C126.9333333333333 186.6666666666667 118.4 184.5333333333334 112 184.5333333333334C107.7333333333333 184.5333333333334 105.6 185.6 104.5333333333333 187.7333333333334C104.5333333333333 188.8 105.6 194.1333333333334 106.6666666666666 197.3333333333334C109.8666666666667 206.9333333333333 113.0666666666667 218.6666666666667 104.5333333333333 230.4C99.2 236.8 90.6666666666666 241.0666666666667 81.0666666666666 241.0666666666667C71.4666666666666 241.0666666666667 62.9333333333333 237.8666666666667 54.4 232.5333333333334C20.2666666666667 209.0666666666667 0 169.6 0 128C0 57.6 57.6 0 128 0C184.5333333333333 0 235.7333333333333 38.4 251.7333333333333 93.8666666666667C252.8 100.2666666666667 267.7333333333334 166.4 217.6 190.9333333333333zM32 128C32 139.7333333333334 41.6 149.3333333333333 53.3333333333333 149.3333333333333S74.6666666666667 139.7333333333334 74.6666666666667 128S65.0666666666667 106.6666666666667 53.3333333333333 106.6666666666667S32 116.2666666666667 32 128zM80 53.3333333333333C68.2666666666667 53.3333333333333 58.6666666666667 62.9333333333333 58.6666666666667 74.6666666666667S68.2666666666667 96 80 96S101.3333333333333 86.4 101.3333333333333 74.6666666666667S91.7333333333333 53.3333333333333 80 53.3333333333333zM138.6666666666667 32C126.9333333333333 32 117.3333333333333 41.6 117.3333333333333 53.3333333333333S126.9333333333333 74.6666666666667 138.6666666666667 74.6666666666667S160 65.0666666666667 160 53.3333333333333S150.4 32 138.6666666666667 32zM181.3333333333333 96C163.2 96 149.3333333333333 109.8666666666667 149.3333333333333 128S163.2 160 181.3333333333333 160S213.3333333333333 146.1333333333333 213.3333333333333 128S199.4666666666667 96 181.3333333333333 96z"/>
<glyph glyph-name="paper-diploma"
unicode="&#xEA45;"
horiz-adv-x="256"
d=" M74.6666666666667 37.3333333333333C74.6666666666667 24.608 61.9306666666667 21.8986666666667 58.24 21.376C49.6106666666667 21.6106666666667 42.6666666666667 28.6613333333333 42.6666666666667 37.3333333333333V234.6666666666667H138.6666666666667V256H32C26.112 256 21.3333333333333 251.2213333333334 21.3333333333333 245.3333333333334V37.3333333333333C21.3333333333333 16.7466666666667 38.08 0 58.6666666666667 0H218.6666666666667C239.2533333333334 0 256 16.7466666666667 256 37.3333333333333V53.3333333333333H74.6666666666667V37.3333333333333z M202.6666666666667 128C186.8053333333333 128 172.1066666666667 133.0133333333333 160 141.4826666666667V74.6666666666667L202.6666666666667 106.6666666666667L245.3333333333333 74.6666666666667V141.4826666666667C233.2266666666667 133.0133333333334 218.528 128 202.6666666666667 128z M149.3333333333333 202.6666666666667C149.3333333333333 173.2114800090244 173.2114800090243 149.3333333333334 202.6666666666667 149.3333333333334C232.121853324309 149.3333333333334 256 173.2114800090244 256 202.6666666666667C256 232.121853324309 232.121853324309 256 202.6666666666667 256C173.2114800090243 256 149.3333333333333 232.121853324309 149.3333333333333 202.6666666666667z"/>
<glyph glyph-name="pin-3"
unicode="&#xEA46;"
horiz-adv-x="256"
d=" M128 256C81.0666666666667 256 32 219.7333333333334 32 160C32 103.4666666666667 117.3333333333333 17.0666666666667 120.5333333333333 13.8666666666667C122.6666666666667 11.7333333333333 124.8 10.6666666666667 128 10.6666666666667S133.3333333333334 11.7333333333333 135.4666666666667 13.8666666666667C138.6666666666667 17.0666666666667 224 103.4666666666667 224 160C224 219.7333333333334 174.9333333333333 256 128 256zM128 128C109.8666666666667 128 96 141.8666666666667 96 160S109.8666666666667 192 128 192S160 178.1333333333333 160 160S146.1333333333333 128 128 128z"/>
<glyph glyph-name="planet"
unicode="&#xEA47;"
horiz-adv-x="256"
d=" M228.608 54.624C235.7653333333333 37.5253333333333 236.032 26.4426666666667 232.5333333333333 22.9333333333333C228.1066666666667 18.5066666666667 211.1466666666667 21.7066666666667 185.984 35.8186666666667C209.2053333333333 55.4133333333334 224 84.6613333333334 224 117.3333333333334C224 176.1493333333334 176.1493333333334 224 117.3333333333334 224C84.6613333333333 224 55.4133333333333 209.2053333333333 35.8293333333333 185.9946666666667C21.7066666666667 211.1573333333333 18.5173333333333 228.1173333333334 22.9333333333333 232.544C26.4426666666667 236.0426666666667 37.5253333333333 235.776 54.624 228.6186666666667C62.7093333333333 233.2053333333334 71.3386666666667 236.8426666666667 80.384 239.6053333333334C47.2853333333333 257.952 21.3866666666667 261.1840000000001 7.84 247.6373333333334C-7.8293333333333 231.936 1.3653333333333 200.7466666666667 22.6666666666667 166.2826666666667C15.04 151.6053333333333 10.6666666666667 134.9866666666667 10.6666666666667 117.3333333333334C10.6666666666667 58.5173333333333 58.5173333333333 10.6666666666667 117.3333333333333 10.6666666666667C134.9866666666667 10.6666666666667 151.6053333333333 15.04 166.2826666666667 22.6666666666667C200.7573333333334 1.3653333333334 231.936 -7.8293333333333 247.6266666666667 7.8613333333334C261.1733333333334 21.408 257.9413333333333 47.296 239.5946666666667 80.4053333333334C236.8426666666667 71.3493333333333 233.1946666666667 62.7093333333334 228.608 54.624zM69.3333333333333 96C60.5013333333333 96 53.3333333333333 103.168 53.3333333333333 112S60.5013333333333 128 69.3333333333333 128S85.3333333333333 120.832 85.3333333333333 112S78.1653333333333 96 69.3333333333333 96zM138.6666666666667 74.6666666666667C132.7786666666667 74.6666666666667 128 79.4453333333333 128 85.3333333333333C128 91.2213333333334 132.7786666666667 96 138.6666666666667 96C144.5546666666667 96 149.3333333333333 91.2213333333334 149.3333333333333 85.3333333333333C149.3333333333333 79.4453333333333 144.5546666666667 74.6666666666667 138.6666666666667 74.6666666666667zM133.3333333333333 138.6666666666667C124.5013333333333 138.6666666666667 117.3333333333333 145.8346666666667 117.3333333333333 154.6666666666667S124.5013333333333 170.6666666666667 133.3333333333333 170.6666666666667S149.3333333333333 163.4986666666667 149.3333333333333 154.6666666666667S142.1653333333333 138.6666666666667 133.3333333333333 138.6666666666667z"/>
<glyph glyph-name="ruler-pencil"
unicode="&#xEA48;"
horiz-adv-x="256"
d=" M202.6666666666667 0C199.3173333333333 0 196.1493333333333 1.5786666666667 194.1333333333333 4.2666666666667L162.1333333333333 46.9333333333333C160.7466666666667 48.7786666666667 160 51.0293333333333 160 53.3333333333333V202.6666666666667H245.3333333333333V53.3333333333334C245.3333333333333 51.0293333333334 244.5866666666667 48.7786666666667 243.2 46.9333333333334L211.2 4.2666666666667C209.184 1.5786666666667 206.016 0 202.6666666666667 0z M234.6666666666667 256H170.6666666666667C164.7786666666667 256 160 251.2213333333334 160 245.3333333333334V224H245.3333333333333V245.3333333333334C245.3333333333333 251.2213333333334 240.5546666666667 256 234.6666666666667 256z M106.6666666666667 256H21.3333333333333C14.9333333333333 256 10.6666666666667 251.7333333333333 10.6666666666667 245.3333333333334V202.6666666666667H53.3333333333333V181.3333333333334H10.6666666666667V160H42.6666666666667V138.6666666666667H10.6666666666667V117.3333333333334H53.3333333333333V96H10.6666666666667V74.6666666666667H42.6666666666667V53.3333333333333H10.6666666666667V10.6666666666667C10.6666666666667 4.2666666666667 14.9333333333333 0 21.3333333333333 0H106.6666666666667C113.0666666666667 0 117.3333333333333 4.2666666666667 117.3333333333333 10.6666666666667V245.3333333333334C117.3333333333333 251.7333333333333 113.0666666666667 256 106.6666666666667 256z"/>
<glyph glyph-name="satisfied"
unicode="&#xEA49;"
horiz-adv-x="256"
d=" M128 256C57.6 256 0 198.4 0 128S57.6 0 128 0C198.4 0 256 57.6 256 128S198.4 256 128 256zM53.3333333333333 160C53.3333333333333 178.1333333333333 67.2 192 85.3333333333333 192C103.4666666666667 192 117.3333333333333 178.1333333333333 117.3333333333333 160H96C96 166.4 91.7333333333333 170.6666666666667 85.3333333333333 170.6666666666667C78.9333333333333 170.6666666666667 74.6666666666667 166.4 74.6666666666667 160H53.3333333333333zM202.6666666666667 117.3333333333334C202.6666666666667 75.7333333333334 169.6 42.6666666666667 128 42.6666666666667C86.4 42.6666666666667 53.3333333333333 75.7333333333334 53.3333333333333 117.3333333333334H74.6666666666667C74.6666666666667 87.4666666666667 98.1333333333333 64 128 64C157.8666666666667 64 181.3333333333333 87.4666666666667 181.3333333333333 117.3333333333333H202.6666666666667zM181.3333333333333 160C181.3333333333333 166.4 177.0666666666666 170.6666666666667 170.6666666666667 170.6666666666667C164.2666666666667 170.6666666666667 160 166.4 160 160H138.6666666666667C138.6666666666667 178.1333333333333 152.5333333333333 192 170.6666666666667 192C188.8 192 202.6666666666667 178.1333333333333 202.6666666666667 160H181.3333333333333z"/>
<glyph glyph-name="scissors"
unicode="&#xEA4A;"
horiz-adv-x="256"
d=" M197.3333333333333 96C189.568 96 182.336 93.9733333333333 175.8293333333333 90.6773333333333L152.2773333333333 118.144L212.2773333333333 178.144C232.96 198.8266666666667 236.9173333333333 230.9226666666667 221.8666666666667 256L128 146.4853333333334L34.1333333333333 256C19.0826666666667 230.9226666666667 23.04 198.8266666666667 43.7226666666667 178.1546666666667L103.7226666666667 118.1546666666667L80.1706666666667 90.688C73.664 93.9733333333334 66.432 96 58.6666666666667 96C32.2026666666667 96 10.6666666666667 74.464 10.6666666666667 48S32.2026666666667 0 58.6666666666667 0S106.6666666666667 21.536 106.6666666666667 48C106.6666666666667 55.168 104.9813333333333 61.9093333333333 102.1546666666667 68.0213333333333L128 93.8666666666667L153.8453333333334 68.0213333333333C151.0186666666667 61.9093333333333 149.3333333333333 55.168 149.3333333333333 48C149.3333333333333 21.536 170.8693333333333 0 197.3333333333333 0S245.3333333333333 21.536 245.3333333333333 48S223.7973333333334 96 197.3333333333333 96zM58.6666666666667 21.3333333333333C43.968 21.3333333333333 32 33.2906666666667 32 48S43.968 74.6666666666667 58.6666666666667 74.6666666666667S85.3333333333333 62.7093333333334 85.3333333333333 48S73.3653333333333 21.3333333333333 58.6666666666667 21.3333333333333zM170.6666666666667 48C170.6666666666667 62.7093333333334 182.6346666666667 74.6666666666667 197.3333333333333 74.6666666666667S224 62.7093333333333 224 48S212.032 21.3333333333333 197.3333333333333 21.3333333333333S170.6666666666667 33.2906666666667 170.6666666666667 48z"/>
<glyph glyph-name="send"
unicode="&#xEA4B;"
horiz-adv-x="256"
d=" M15.1786666666667 138.1546666666667L42.6666666666667 117.3333333333334L138.6666666666667 160L64.2453333333333 101.344V29.3546666666667C64.2453333333333 19.4026666666667 76.6613333333333 14.8693333333333 83.072 22.4853333333333L116.4693333333333 62.1653333333333L185.8026666666667 10.1546666666667C192.0853333333333 5.4506666666667 201.12 8.896 202.6666666666667 16.5973333333334L245.376 229.9306666666667C247.04 238.24 238.816 245.0773333333334 230.9546666666667 241.9306666666667L17.6213333333333 156.5973333333333C9.8986666666667 153.504 8.5226666666667 143.1466666666667 15.1786666666667 138.1546666666667z"/>
<glyph glyph-name="settings-gear-65"
unicode="&#xEA4C;"
horiz-adv-x="256"
d=" M224 149.3333333333334H210.1333333333333C208 156.8 204.8 164.2666666666667 200.5333333333333 171.7333333333334L210.1333333333333 181.3333333333334C218.6666666666667 189.8666666666667 218.6666666666667 202.6666666666667 210.1333333333333 211.2H210.1333333333333C201.6 219.7333333333334 188.8 219.7333333333334 180.2666666666667 211.2L170.6666666666667 201.6C164.2666666666667 205.8666666666667 156.8 209.0666666666667 148.2666666666667 211.2V224C148.2666666666667 235.7333333333334 138.6666666666667 245.3333333333334 126.9333333333333 245.3333333333334S105.6 235.7333333333334 105.6 224V210.1333333333333C99.2 208 91.7333333333333 205.8666666666667 84.2666666666667 201.6L75.7333333333333 211.2C67.2 219.7333333333334 54.4 219.7333333333334 45.8666666666667 211.2H45.8666666666667C37.3333333333333 202.6666666666667 37.3333333333333 189.8666666666667 45.8666666666667 181.3333333333334L55.4666666666667 171.7333333333334C50.1333333333333 164.2666666666667 48 156.8 45.8666666666667 149.3333333333334H32C20.2666666666667 149.3333333333334 10.6666666666667 139.7333333333334 10.6666666666667 128C10.6666666666667 116.2666666666667 20.2666666666667 106.6666666666667 32 106.6666666666667H45.8666666666667C48 99.2 51.2 91.7333333333334 55.4666666666667 84.2666666666667L45.8666666666667 74.6666666666667C37.3333333333333 66.1333333333334 37.3333333333333 53.3333333333333 45.8666666666667 44.8H45.8666666666667C54.4 36.2666666666667 67.2 36.2666666666667 75.7333333333333 44.8L85.3333333333333 54.4C91.7333333333333 50.1333333333333 99.2 46.9333333333333 107.7333333333333 44.8V32C107.7333333333333 20.2666666666667 117.3333333333333 10.6666666666667 129.0666666666667 10.6666666666667S150.4 20.2666666666667 150.4 32V45.8666666666667C157.8666666666667 48 165.3333333333334 51.2 172.8 55.4666666666667L182.4 45.8666666666667C190.9333333333333 37.3333333333333 203.7333333333334 37.3333333333333 212.2666666666667 45.8666666666667H212.2666666666667C220.8 54.4 220.8 67.2 212.2666666666667 75.7333333333334L202.6666666666667 85.3333333333333C206.9333333333334 91.7333333333334 210.1333333333334 99.2 212.2666666666667 107.7333333333334H224C235.7333333333334 107.7333333333334 245.3333333333334 117.3333333333334 245.3333333333334 129.0666666666667C245.3333333333333 139.7333333333334 235.7333333333334 149.3333333333334 224 149.3333333333334zM128 96C109.8666666666667 96 96 109.8666666666667 96 128S109.8666666666667 160 128 160S160 146.1333333333333 160 128S146.1333333333333 96 128 96z"/>
<glyph glyph-name="settings"
unicode="&#xEA4D;"
horiz-adv-x="256"
d=" M115.7653333333333 155.3173333333334L71.5413333333333 199.5413333333334L85.3333333333333 213.3333333333334L42.6666666666667 256L0 213.3333333333334L42.6666666666667 170.6666666666667L56.4586666666667 184.4586666666667L98.016 142.9013333333334z M202.0266666666667 107.3066666666667C198.7306666666667 106.9226666666667 195.392 106.6666666666667 192 106.6666666666667C188.7466666666667 106.6666666666667 185.5146666666667 106.8586666666667 182.272 107.232L143.4346666666667 59.2426666666667L191.6266666666667 11.0506666666667C206.3573333333334 -3.6799999999999 230.2293333333334 -3.6799999999999 244.96 11.0506666666667V11.0506666666667C259.6906666666667 25.7813333333334 259.6906666666667 49.6533333333334 244.96 64.384L202.0266666666667 107.3066666666667z M216.224 183.776L183.776 216.224L217.9946666666667 250.4426666666667C210.048 253.984 201.2693333333333 256 192 256C156.6506666666667 256 128 227.3493333333334 128 192C128 185.664 128.9493333333333 179.5626666666667 130.6666666666667 173.7813333333334L15.584 80.6613333333334C6.08 72.2666666666667 0.4053333333333 60.192 0.0213333333333 47.5306666666667C-0.3733333333333 34.8586666666667 4.544 22.4533333333333 13.504 13.504C22.208 4.7893333333334 33.7813333333333 0 46.0906666666667 0C59.3066666666667 0 71.9146666666667 5.6746666666667 80.6613333333333 15.584L173.7813333333334 130.6666666666667C179.5626666666667 128.9493333333334 185.664 128 192 128C227.3493333333334 128 256 156.6506666666667 256 192C256 201.2693333333334 253.984 210.048 250.4426666666667 218.0053333333334L216.224 183.776z"/>
<glyph glyph-name="single-02"
unicode="&#xEA4E;"
horiz-adv-x="256"
d=" M164.9173333333333 106.4213333333333C153.856 99.9253333333334 141.4186666666667 96 128 96S102.144 99.9253333333333 91.0826666666667 106.4213333333333C52.2026666666667 103.872 21.3333333333333 71.5093333333334 21.3333333333333 32V13.5466666666667L28.7466666666667 11.168C30.176 10.72 64.4053333333333 0 128 0S225.824 10.72 227.2533333333334 11.168L234.6666666666667 13.5466666666667V32C234.6666666666667 71.5093333333334 203.7973333333334 103.872 164.9173333333333 106.4213333333333z M128 117.3333333333334C164.0426666666667 117.3333333333334 192 157.472 192 192C192 227.296 163.296 256 128 256S64 227.296 64 192C64 157.472 91.9573333333333 117.3333333333334 128 117.3333333333334z"/>
<glyph glyph-name="single-copy-04"
unicode="&#xEA4F;"
horiz-adv-x="256"
d=" M245.3333333333333 21.3333333333333H224V234.6666666666667H42.6666666666667V256H234.6666666666667C240.5546666666667 256 245.3333333333333 251.2213333333334 245.3333333333333 245.3333333333334V21.3333333333333z M192 213.3333333333334H21.3333333333333C15.4453333333333 213.3333333333334 10.6666666666667 208.5546666666667 10.6666666666667 202.6666666666667V10.6666666666667C10.6666666666667 4.7786666666667 15.4453333333333 0 21.3333333333333 0H192C197.888 0 202.6666666666667 4.7786666666667 202.6666666666667 10.6666666666667V202.6666666666667C202.6666666666667 208.5546666666667 197.888 213.3333333333334 192 213.3333333333334zM117.3333333333333 53.3333333333333H53.3333333333333V74.6666666666667H117.3333333333333V53.3333333333333zM160 96H53.3333333333333V117.3333333333334H160V96zM160 138.6666666666667H53.3333333333333V160H160V138.6666666666667z"/>
<glyph glyph-name="sound-wave"
unicode="&#xEA50;"
horiz-adv-x="256"
d=" M96 32C91.6586666666667 32 87.7226666666667 34.6453333333333 86.0906666666667 38.6986666666667L50.9546666666667 126.5386666666667L40.8746666666667 111.4133333333333C38.8906666666667 108.448 35.5626666666667 106.6666666666667 32 106.6666666666667H0V128H26.2933333333333L44.4586666666667 155.2533333333333C46.656 158.5386666666667 50.4213333333333 160.3093333333334 54.4426666666667 159.9466666666667C58.3786666666667 159.5306666666667 61.7813333333333 156.9813333333334 63.2426666666667 153.3013333333333L94.7626666666667 74.4746666666667L139.1573333333333 216.512C140.544 220.9706666666667 144.6613333333333 224 149.3333333333333 224C149.344 224 149.344 224 149.3546666666667 224C154.0266666666667 223.9893333333333 158.1546666666667 220.9386666666667 159.5306666666666 216.4693333333334L196.032 97.824L215.4666666666667 123.7333333333334C217.472 126.4213333333333 220.64 128 224 128H256V106.6666666666667H229.3333333333333L200.5333333333333 68.2666666666667C198.1333333333333 65.0666666666667 194.144 63.488 190.1653333333333 64.16C186.2186666666667 64.8533333333334 182.9866666666667 67.7013333333334 181.8026666666667 71.5306666666667L149.248 177.312L106.176 39.488C104.832 35.1786666666667 100.928 32.1813333333334 96.416 32.0106666666667C96.2666666666667 32 96.1386666666667 32 96 32z"/>
<glyph glyph-name="spaceship"
unicode="&#xEA51;"
horiz-adv-x="256"
d=" M254.592 243.3493333333334A10.623999999999999 10.623999999999999 0 0 1 243.392 254.6026666666667C198.6453333333333 252.2666666666667 162.4 238.6773333333334 133.4613333333334 220.7893333333333C98.4 233.6 59.424 225.376 32.7573333333334 198.6986666666667A96.544 96.544 0 0 1 18.0053333333334 179.5093333333333C15.5413333333334 175.328 16.224 169.9946666666667 19.6586666666667 166.5493333333333L50.4 135.808C42.0373333333334 121.9733333333333 38.0906666666667 112.5226666666667 37.952 112.1706666666667C36.3626666666667 108.2026666666667 37.2906666666667 103.6693333333333 40.3093333333334 100.6506666666666L100.6506666666667 40.3093333333333A10.666666666666666 10.666666666666666 0 0 1 112.2346666666667 37.9733333333333C112.5866666666667 38.112 121.9626666666667 42.0906666666666 135.7226666666667 50.496L166.56 19.6586666666666A10.613333333333335 10.613333333333335 0 0 1 179.5200000000001 18.016A95.93599999999998 95.93599999999998 0 0 1 198.7093333333334 32.768C225.6106666666667 59.6693333333333 233.7813333333334 98.8266666666667 220.6720000000001 133.9946666666667C238.4853333333334 162.8586666666667 252.0746666666668 198.9333333333333 254.5920000000001 243.3493333333334zM110.4853333333333 60.64L60.5866666666667 110.528C69.3013333333333 128.5333333333334 98.3253333333333 179.7013333333334 157.1306666666667 210.1013333333334L209.824 157.408C179.3706666666666 98.7093333333334 128.4693333333334 69.4613333333334 110.4853333333333 60.64z M128 149.3333333333334C128 137.5512586702764 137.5512586702764 128 149.3333333333333 128C161.1154079963903 128 170.6666666666667 137.5512586702764 170.6666666666667 149.3333333333334C170.6666666666667 161.1154079963903 161.1154079963903 170.6666666666667 149.3333333333333 170.6666666666667C137.5512586702764 170.6666666666667 128 161.1154079963903 128 149.3333333333334z M11.872 54.9973333333333A30.32533333333333 30.32533333333333 0 1 0 54.7733333333333 12.096C42.9226666666667 0.2453333333333 0 0 0 0S0.0213333333333 43.1573333333333 11.872 54.9973333333333z"/>
<glyph glyph-name="square-pin"
unicode="&#xEA52;"
horiz-adv-x="256"
d=" M234.6666666666667 0H21.3333333333333C17.632 0 14.208 1.92 12.256 5.056C10.3146666666667 8.2026666666667 10.1333333333333 12.128 11.7866666666667 15.4346666666667L43.7866666666667 79.4346666666667C46.4213333333333 84.704 52.8213333333333 86.8373333333334 58.1013333333333 84.2026666666667C63.3706666666667 81.568 65.504 75.1573333333334 62.8693333333333 69.888L38.592 21.3333333333333H217.408L193.1306666666666 69.8986666666667C190.496 75.168 192.6293333333333 81.5786666666667 197.8986666666666 84.2133333333333C203.1786666666666 86.848 209.5786666666666 84.704 212.2133333333333 79.4453333333333L244.2133333333333 15.4453333333333C245.8666666666667 12.1386666666666 245.6853333333333 8.2133333333333 243.744 5.0666666666666C241.792 1.92 238.368 0 234.6666666666667 0z M128 256C86.048 256 42.6666666666667 224.0853333333333 42.6666666666667 170.6666666666667C42.6666666666667 121.6 112.4693333333333 49.8453333333333 120.4266666666667 41.8133333333333C122.432 39.7973333333333 125.152 38.6666666666667 128 38.6666666666667S133.568 39.7973333333333 135.5733333333333 41.8133333333333C143.5306666666667 49.8453333333333 213.3333333333333 121.6 213.3333333333333 170.6666666666667C213.3333333333333 224.0853333333333 169.952 256 128 256zM128 149.3333333333334C116.2133333333334 149.3333333333334 106.6666666666667 158.88 106.6666666666667 170.6666666666667C106.6666666666667 182.4533333333333 116.2133333333334 192 128 192S149.3333333333334 182.4533333333333 149.3333333333334 170.6666666666667C149.3333333333333 158.88 139.7866666666667 149.3333333333334 128 149.3333333333334z"/>
<glyph glyph-name="support-16"
unicode="&#xEA53;"
horiz-adv-x="256"
d=" M245.3333333333333 160H240.9173333333333C229.856 199.2533333333333 199.264 229.856 160 240.9173333333334V245.3333333333334C160 251.2213333333334 155.232 256 149.3333333333334 256H106.6666666666667C100.768 256 96 251.2213333333334 96 245.3333333333334V240.9173333333334C56.736 229.856 26.144 199.2533333333333 15.0826666666667 160H10.6666666666667C4.768 160 0 155.2213333333334 0 149.3333333333333V106.6666666666667C0 100.7786666666667 4.768 96 10.6666666666667 96H15.0826666666667C26.144 56.7466666666667 56.736 26.144 96 15.0826666666667V10.6666666666667C96 4.7786666666667 100.768 0 106.6666666666667 0H149.3333333333334C155.232 0 160 4.7786666666667 160 10.6666666666667V15.0826666666667C199.264 26.144 229.856 56.7466666666667 240.9173333333333 96H245.3333333333333C251.232 96 256 100.7786666666667 256 106.6666666666667V149.3333333333333C256 155.2213333333334 251.232 160 245.3333333333333 160zM128 85.3333333333333C104.4693333333333 85.3333333333333 85.3333333333333 104.4693333333333 85.3333333333333 128S104.4693333333333 170.6666666666667 128 170.6666666666667S170.6666666666667 151.5306666666667 170.6666666666667 128S151.5306666666667 85.3333333333333 128 85.3333333333333zM218.4746666666667 160H183.3386666666667C177.728 169.6746666666667 169.6746666666667 177.728 160 183.3386666666667V218.4746666666667C187.3813333333333 208.8533333333334 208.8533333333333 187.3813333333334 218.4746666666667 160zM96 218.4746666666667V183.3386666666667C86.3253333333333 177.728 78.272 169.6746666666667 72.6613333333333 160H37.5253333333333C47.1466666666667 187.3813333333334 68.6186666666667 208.8533333333334 96 218.4746666666667zM37.5253333333333 96H72.6613333333333C78.272 86.3253333333333 86.3253333333333 78.272 96 72.6613333333334V37.5253333333334C68.6186666666667 47.1466666666667 47.1466666666667 68.6186666666667 37.5253333333333 96zM160 37.5253333333334V72.6613333333334C169.6746666666667 78.272 177.728 86.336 183.3386666666667 96H218.4746666666667C208.8533333333333 68.6186666666667 187.3813333333333 47.1466666666667 160 37.5253333333334z"/>
<glyph glyph-name="tablet-button"
unicode="&#xEA54;"
horiz-adv-x="256"
d=" M213.3333333333333 256H42.6666666666667C25.024 256 10.6666666666667 241.6426666666667 10.6666666666667 224V32C10.6666666666667 14.3573333333333 25.024 0 42.6666666666667 0H213.3333333333333C230.976 0 245.3333333333333 14.3573333333333 245.3333333333333 32V224C245.3333333333333 241.6426666666667 230.976 256 213.3333333333333 256zM128 21.3333333333333C122.112 21.3333333333333 117.3333333333333 26.112 117.3333333333333 32S122.112 42.6666666666667 128 42.6666666666667S138.6666666666667 37.888 138.6666666666667 32S133.888 21.3333333333333 128 21.3333333333333zM224 74.6666666666667C224 68.7786666666667 219.2213333333334 64 213.3333333333334 64H42.6666666666667C36.7786666666667 64 32 68.7786666666667 32 74.6666666666667V213.3333333333334C32 219.2213333333334 36.7786666666667 224 42.6666666666667 224H213.3333333333333C219.2213333333333 224 224 219.2213333333334 224 213.3333333333334V74.6666666666667z"/>
<glyph glyph-name="tag"
unicode="&#xEA55;"
horiz-adv-x="256"
d=" M242.208 124.8746666666667L124.8746666666667 242.2080000000001C122.88 244.2026666666667 120.16 245.3333333333334 117.3333333333333 245.3333333333334H21.3333333333333C15.4453333333333 245.3333333333334 10.6666666666667 240.5546666666667 10.6666666666667 234.6666666666667V138.6666666666667C10.6666666666667 135.84 11.7866666666667 133.12 13.792 131.1253333333334L131.1253333333333 13.792C133.2053333333333 11.7013333333334 135.936 10.6666666666667 138.6666666666667 10.6666666666667S144.128 11.712 146.208 13.792L242.208 109.792C246.3786666666667 113.952 246.3786666666667 120.704 242.208 124.8746666666667zM74.6666666666667 160C62.88 160 53.3333333333333 169.5466666666667 53.3333333333333 181.3333333333334C53.3333333333333 193.12 62.88 202.6666666666667 74.6666666666667 202.6666666666667S96 193.12 96 181.3333333333334C96 169.5466666666667 86.4533333333333 160 74.6666666666667 160z"/>
<glyph glyph-name="tie-bow"
unicode="&#xEA56;"
horiz-adv-x="256"
d=" M128 74.6666666666667L128 74.6666666666667C116.2666666666667 74.6666666666667 106.6666666666667 84.2666666666667 106.6666666666667 96V160C106.6666666666667 171.7333333333334 116.2666666666667 181.3333333333333 128 181.3333333333333H128C139.7333333333334 181.3333333333333 149.3333333333334 171.7333333333334 149.3333333333334 160V96C149.3333333333333 84.2666666666667 139.7333333333333 74.6666666666667 128 74.6666666666667z M240 204.8C230.4 210.1333333333333 218.6666666666667 211.2 208 204.8L165.3333333333333 181.3333333333334C168.5333333333333 174.9333333333333 170.6666666666667 167.4666666666667 170.6666666666667 160V138.6666666666667H202.6666666666667V117.3333333333334H170.6666666666667V96C170.6666666666667 88.5333333333333 168.5333333333333 81.0666666666667 165.3333333333333 74.6666666666667L209.0666666666666 50.1333333333333C214.4 46.9333333333333 219.7333333333333 45.8666666666666 225.0666666666666 45.8666666666666C230.4 45.8666666666666 235.7333333333333 46.9333333333333 241.0666666666667 50.1333333333333C250.6666666666667 55.4666666666667 257.0666666666666 66.1333333333333 257.0666666666666 77.8666666666667V177.0666666666667C256 188.8 249.6 198.4 240 204.8z M85.3333333333333 117.3333333333334H53.3333333333333V138.6666666666667H85.3333333333333V160C85.3333333333333 167.4666666666667 87.4666666666667 174.9333333333333 90.6666666666667 181.3333333333333L48 204.8C38.4 210.1333333333333 25.6 210.1333333333333 16 204.8C6.4 198.4 0 188.8 0 177.0666666666667V78.9333333333333C0 67.2 6.4 57.6 16 51.2C21.3333333333333 48 26.6666666666667 46.9333333333333 32 46.9333333333333C37.3333333333333 46.9333333333333 42.6666666666667 48 48 51.2L90.6666666666667 74.6666666666667C87.4666666666667 81.0666666666667 85.3333333333333 88.5333333333334 85.3333333333333 96V117.3333333333334z"/>
<glyph glyph-name="time-alarm"
unicode="&#xEA57;"
horiz-adv-x="256"
d=" M244.2666666666667 158.9333333333333C246.4 160 248.5333333333334 161.0666666666667 249.6 163.2C253.8666666666667 172.8 256 182.4 256 192C256 227.2 227.2 256 192 256C176 256 161.0666666666667 249.6 149.3333333333334 238.9333333333334C147.2 236.8 146.1333333333334 234.6666666666667 146.1333333333334 232.5333333333334C189.8666666666667 227.2 227.2 198.4 244.2666666666667 158.9333333333333z M11.7333333333333 158.9333333333333C29.8666666666667 198.4 66.1333333333333 226.1333333333334 109.8666666666667 232.5333333333334C109.8666666666667 234.6666666666667 108.8 236.8 106.6666666666667 238.9333333333334C94.9333333333333 249.6 80 256 64 256C28.8 256 0 227.2 0 192C0 182.4 2.1333333333333 172.8 6.4 164.2666666666667C7.4666666666667 162.1333333333333 9.6 160 11.7333333333333 158.9333333333333z M231.4666666666667 18.1333333333333L210.1333333333333 39.4666666666667C225.0666666666666 57.6 234.6666666666667 81.0666666666667 234.6666666666667 106.6666666666667C234.6666666666667 165.3333333333333 186.6666666666666 213.3333333333333 128 213.3333333333333S21.3333333333333 165.3333333333334 21.3333333333333 106.6666666666667C21.3333333333333 81.0666666666667 29.8666666666667 57.6 45.8666666666667 39.4666666666667L24.5333333333333 18.1333333333334C20.2666666666667 13.8666666666667 20.2666666666667 7.4666666666667 24.5333333333333 3.2C26.6666666666667 1.0666666666667 28.8 0 32 0S37.3333333333333 1.0666666666667 39.4666666666667 3.2L60.8 24.5333333333333C78.9333333333333 8.5333333333334 102.4 0 128 0C153.6 0 177.0666666666667 8.5333333333333 195.2 24.5333333333333L216.5333333333333 3.2C218.6666666666667 1.0666666666667 221.8666666666667 0 224 0S229.3333333333334 1.0666666666667 231.4666666666667 3.2C235.7333333333334 7.4666666666667 235.7333333333334 13.8666666666667 231.4666666666667 18.1333333333333zM181.3333333333333 96H117.3333333333333V160H138.6666666666667V117.3333333333334H181.3333333333333V96z"/>
<glyph glyph-name="trophy"
unicode="&#xEA58;"
horiz-adv-x="256"
d=" M213.3333333333333 234.6666666666667V256H42.6666666666667V234.6666666666667H0V170.6666666666667C0 147.1406250666667 19.1354165333333 128 42.6666666666667 128H48.9492192C59.0195317333333 103.2167968 80.4055989333333 84.2721354666667 106.6666666666667 77.4752608V42.6666666666667H96C78.3541664 42.6666666666667 64 28.3125002666667 64 10.6666666666667V0H192V10.6666666666667C192 28.3125002666667 177.6458336 42.6666666666667 160 42.6666666666667H149.3333333333334V77.4752608C175.5944010666667 84.2721354666667 196.9804682666667 103.2167968 207.0507808 128H213.3333333333333C236.8645834666667 128 256 147.1406250666667 256 170.6666666666667V234.6666666666667H213.3333333333333zM42.6666666666667 149.3333333333334C30.9062496 149.3333333333334 21.3333333333333 158.9010421333333 21.3333333333333 170.6666666666667V213.3333333333334H42.6666666666667V160C42.6666666666667 156.380208 42.9680992 152.8359370666667 43.407552 149.3333333333333H42.6666666666667zM234.6666666666667 170.6666666666667C234.6666666666667 158.9010421333333 225.0937504 149.3333333333334 213.3333333333333 149.3333333333334H212.592448C213.0319008 152.8359370666667 213.3333333333333 156.380208 213.3333333333333 160V213.3333333333334H234.6666666666667V170.6666666666667z"/>
<glyph glyph-name="tv-2"
unicode="&#xEA59;"
horiz-adv-x="256"
d=" M181.3333333333333 32H74.6666666666667C68.7786666666667 32 64 27.2213333333333 64 21.3333333333333S68.7786666666667 10.6666666666667 74.6666666666667 10.6666666666667H181.3333333333333C187.2213333333333 10.6666666666667 192 15.4453333333333 192 21.3333333333333S187.2213333333333 32 181.3333333333333 32z M245.3333333333333 245.3333333333334H10.6666666666667C4.7786666666667 245.3333333333334 0 240.5546666666667 0 234.6666666666667V64C0 58.112 4.7786666666667 53.3333333333333 10.6666666666667 53.3333333333333H245.3333333333333C251.2213333333333 53.3333333333333 256 58.112 256 64V234.6666666666667C256 240.5546666666667 251.2213333333333 245.3333333333334 245.3333333333333 245.3333333333334zM234.6666666666667 74.6666666666667H21.3333333333333V224H234.6666666666667V74.6666666666667z"/>
<glyph glyph-name="umbrella-13"
unicode="&#xEA5A;"
horiz-adv-x="256"
d=" M245.28 129.056C239.6586666666667 185.7066666666667 194.6773333333333 229.2266666666667 138.6666666666667 234.1653333333334V256H117.3333333333333V234.1653333333334C61.3226666666667 229.2266666666667 16.3413333333333 185.7066666666667 10.72 129.056L9.5573333333333 117.3333333333334H246.4533333333333L245.28 129.056z M192 53.3333333333333C186.112 53.3333333333333 181.3333333333334 48.5546666666667 181.3333333333334 42.6666666666667C181.3333333333334 30.9013333333334 171.7653333333333 21.3333333333333 160 21.3333333333333S138.6666666666667 30.9013333333334 138.6666666666667 42.6666666666667V96H117.3333333333333V42.6666666666667C117.3333333333333 19.136 136.4693333333334 0 160 0S202.6666666666667 19.136 202.6666666666667 42.6666666666667C202.6666666666667 48.5546666666667 197.888 53.3333333333333 192 53.3333333333333z"/>
<glyph glyph-name="user-run"
unicode="&#xEA5B;"
horiz-adv-x="256"
d=" M170.6666666666667 224C170.6666666666667 206.3268880054146 184.9935546720813 192 202.6666666666667 192C220.3397786612521 192 234.6666666666667 206.3268880054146 234.6666666666667 224C234.6666666666667 241.6731119945854 220.3397786612521 256 202.6666666666667 256C184.9935546720813 256 170.6666666666667 241.6731119945854 170.6666666666667 224z M237.7916672 178.2083328L219.2916672 159.7083328C215.4322912 155.8645834666667 209.3333333333333 155.5364586666667 205.0833333333333 158.9218752L128.2395829333333 220.4010421333334C115.4947914666667 230.6041674666667 97.1770826666667 229.5885418666667 85.6249994666667 218.0416672L67.1249994666667 199.5416672C62.9583328 195.3750005333334 62.9583328 188.6250005333334 67.1249994666667 184.4583338666667S78.0416661333333 180.2916672 82.2083328 184.4583338666667L100.7083328 202.9583338666667C104.5520832 206.8177088 110.6510410666667 207.1406250666667 114.9166656 203.7447925333334L144.0332021333333 180.4498709333333L109.7916661333333 146.2083349333333C102.9843744 139.4010432 99.6249994666666 130.0052096 100.5729162666666 120.4270848S106.6614581333333 102.2968746666667 114.6666666666667 96.9583338666667L147.1666666666667 74.9583338666667L119.5 38.4427093333334C115.9427082666667 33.7447925333334 116.8645834666667 27.0572928 121.5572917333333 23.5000010666667C123.4843754666667 22.0364586666667 125.75 21.3333333333333 127.9895829333334 21.3333333333333C131.2187498666667 21.3333333333333 134.4062496 22.7916672 136.5 25.5572917333333L164 61.8541664C167.7239584 66.510416 169.3333333333334 72.5624992 168.4166666666667 78.4583328C167.5 84.3489578666667 164.1249994666667 89.6249994666667 159.1666666666667 92.9270826666667L126.5 114.7083328C123.8333333333333 116.4895829333334 122.119792 119.3385408 121.8020832 122.5312490666667C121.4895829333334 125.7239573333333 122.6093749333333 128.8541653333333 124.8749994666667 131.1249994666667L160.7923168 167.0423168L191.760416 142.2656245333333C197.640624 137.5572917333333 204.7031242666667 135.2395829333334 211.7447914666667 135.2395829333334C219.9687498666667 135.2395829333334 228.1562496 138.4062496 234.3749994666667 144.6249994666667L252.8749994666667 163.1249994666667C257.0416661333334 167.2916661333333 257.0416661333334 174.0416661333333 252.8749994666667 178.2083328S241.9583338666667 182.3749994666667 237.7916672 178.2083328z M67.1250005333333 103.5416661333333L3.1250005333333 39.5416661333333C-1.0416661333333 35.3749994666667 -1.0416661333333 28.6249994666667 3.1250005333333 24.4583328C5.2083328 22.3749994666667 7.9374997333333 21.3333333333333 10.6666666666667 21.3333333333333S16.1250005333333 22.3749994666667 18.2083328 24.4583338666667L82.2083328 88.4583338666667C86.3749994666667 92.6250005333333 86.3749994666667 99.3750005333333 82.2083328 103.5416672S71.2916672 107.7083328 67.1250005333333 103.5416661333333z"/>
<glyph glyph-name="vector"
unicode="&#xEA5C;"
horiz-adv-x="256"
d=" M99.68 177.3973333333333C54.5813333333333 164.9493333333334 21.3333333333333 123.6693333333333 21.3333333333333 74.6666666666667H42.6666666666667C42.6666666666667 121.7173333333333 80.9493333333333 160 128 160C115.616 160 105.0026666666667 167.104 99.68 177.3973333333333z M156.32 177.3973333333333C150.9973333333333 167.104 140.384 160 128 160C175.0506666666667 160 213.3333333333333 121.7173333333333 213.3333333333333 74.6666666666667H234.6666666666667C234.6666666666667 123.6693333333333 201.4186666666667 164.9493333333334 156.32 177.3973333333333z M32 181.3333333333334H97.9626666666667C96.768 184.6826666666667 96 188.2346666666667 96 192S96.768 199.3173333333334 97.9626666666667 202.6666666666667H32C26.112 202.6666666666667 21.3333333333333 197.888 21.3333333333333 192S26.112 181.3333333333334 32 181.3333333333334z M224 181.3333333333334C229.888 181.3333333333334 234.6666666666667 186.112 234.6666666666667 192S229.888 202.6666666666667 224 202.6666666666667H158.0373333333333C159.232 199.3173333333334 160 195.7653333333333 160 192S159.232 184.6826666666667 158.0373333333333 181.3333333333333H224z M0 192C0 180.2179253369431 9.5512586702764 170.6666666666667 21.3333333333333 170.6666666666667C33.1154079963903 170.6666666666667 42.6666666666667 180.2179253369431 42.6666666666667 192C42.6666666666667 203.7820746630569 33.1154079963903 213.3333333333334 21.3333333333333 213.3333333333334C9.5512586702764 213.3333333333334 0 203.7820746630569 0 192z M0 213.3333333333334H42.6666666666667V170.6666666666667H0V213.3333333333334z M213.3333333333333 213.3333333333334H256V170.6666666666667H213.3333333333333V213.3333333333334z M128 149.3333333333334C104.4693333333333 149.3333333333334 85.3333333333333 168.4693333333334 85.3333333333333 192S104.4693333333333 234.6666666666667 128 234.6666666666667S170.6666666666667 215.5306666666667 170.6666666666667 192S151.5306666666667 149.3333333333334 128 149.3333333333334zM128 213.3333333333334C116.2346666666667 213.3333333333334 106.6666666666667 203.7653333333333 106.6666666666667 192S116.2346666666667 170.6666666666667 128 170.6666666666667S149.3333333333334 180.2346666666667 149.3333333333334 192S139.7653333333333 213.3333333333334 128 213.3333333333334z M53.3333333333333 21.3333333333333H10.6666666666667C4.7786666666667 21.3333333333333 0 26.112 0 32V74.6666666666667C0 80.5546666666667 4.7786666666667 85.3333333333333 10.6666666666667 85.3333333333333H53.3333333333333C59.2213333333333 85.3333333333333 64 80.5546666666667 64 74.6666666666667V32C64 26.112 59.2213333333333 21.3333333333333 53.3333333333333 21.3333333333333z M245.3333333333333 21.3333333333333H202.6666666666667C196.7786666666667 21.3333333333333 192 26.112 192 32V74.6666666666667C192 80.5546666666667 196.7786666666667 85.3333333333333 202.6666666666667 85.3333333333333H245.3333333333333C251.2213333333333 85.3333333333333 256 80.5546666666667 256 74.6666666666667V32C256 26.112 251.2213333333333 21.3333333333333 245.3333333333333 21.3333333333333z"/>
<glyph glyph-name="watch-time"
unicode="&#xEA5D;"
horiz-adv-x="256"
d=" M224 192C224 207.6586666666667 212.6826666666667 220.6613333333334 197.8133333333333 223.4133333333333L191.68 247.9253333333334C190.496 252.672 186.2293333333333 256 181.3333333333333 256H74.6666666666667C69.7706666666667 256 65.504 252.672 64.32 247.9253333333334L58.1866666666667 223.4133333333333C43.3173333333333 220.6613333333334 32 207.6586666666667 32 192V64C32 48.3413333333333 43.3173333333333 35.3386666666667 58.1866666666667 32.5866666666667L64.3093333333333 8.0746666666667C65.504 3.328 69.7706666666667 0 74.6666666666667 0H181.3333333333333C186.2293333333333 0 190.496 3.328 191.68 8.0746666666667L197.8026666666667 32.5866666666667C212.6826666666667 35.3386666666667 224 48.3413333333334 224 64V96H245.3333333333334V160H224V192zM202.6666666666667 64C202.6666666666667 58.1226666666667 197.8773333333333 53.3333333333333 192 53.3333333333333H64C58.1226666666667 53.3333333333333 53.3333333333333 58.1226666666667 53.3333333333333 64V192C53.3333333333333 197.8773333333333 58.1226666666667 202.6666666666667 64 202.6666666666667H192C197.8773333333333 202.6666666666667 202.6666666666667 197.8773333333333 202.6666666666667 192V64z M138.6666666666667 181.3333333333334L117.3333333333333 181.3333333333334L117.3333333333333 117.3333333333334L181.3333333333333 117.3333333333334L181.3333333333333 138.6666666666667L138.6666666666667 138.6666666666667z"/>
<glyph glyph-name="world"
unicode="&#xEA5E;"
horiz-adv-x="256"
d=" M128 256C57.4186666666667 256 0 198.5813333333333 0 128S57.4186666666667 0 128 0S256 57.4186666666667 256 128S198.5813333333333 256 128 256zM128 21.3333333333333C101.3333333333333 21.3333333333333 76.9813333333333 31.2426666666667 58.2613333333333 47.4773333333334C58.3466666666667 47.616 58.464 47.7333333333334 58.5386666666667 47.872C76.16 77.3973333333333 65.0773333333333 95.4346666666667 56.896 103.5626666666667C54.7413333333333 105.7066666666667 52.2773333333333 107.6586666666667 49.7386666666667 109.6213333333333C43.104 114.7733333333334 38.7093333333333 118.176 38.7093333333333 128C38.7093333333333 132.6293333333333 41.2906666666667 134.4426666666667 54.0373333333333 138.7946666666667C62.8053333333333 141.792 72.736 145.184 79.1466666666667 153.472C94.0266666666667 172.7146666666667 77.664 202.3893333333334 74.2293333333333 208.1493333333334C72.4693333333333 211.104 70.56 213.8773333333334 68.576 216.5333333333333C84.608 227.328 103.744 233.7706666666667 124.3093333333333 234.4853333333334C127.6373333333333 228.8426666666667 133.1306666666667 224.0853333333333 138.528 219.4453333333334C143.136 215.4773333333333 150.4533333333333 213.8133333333333 154.2186666666667 209.12C156.3733333333333 206.432 155.328 201.248 155.4026666666667 197.856C155.552 191.1253333333334 159.6266666666666 181.3653333333333 173.3653333333333 181.3653333333333C173.9733333333333 181.3653333333333 174.6026666666666 181.3866666666667 175.2533333333333 181.4293333333333C180.5653333333333 181.8026666666667 197.1413333333333 185.6 213.8026666666666 191.104C226.8586666666667 173.3973333333333 234.6666666666667 151.616 234.6666666666667 128C234.6666666666667 69.184 186.816 21.3333333333333 128 21.3333333333333z M165.4826666666667 161.0346666666667C148.672 161.0346666666667 131.5093333333333 153.0453333333333 122.784 141.1626666666667C116.928 133.184 115.2213333333333 123.9573333333334 117.9733333333333 115.1786666666667C123.4666666666667 97.664 124 87.3386666666667 120.5653333333333 75.7653333333333C117.5146666666667 65.4826666666667 117.216 50.5706666666667 134.6346666666667 43.4666666666667C137.92 42.1226666666667 141.5253333333333 41.44 145.3226666666666 41.44C158.272 41.44 173.6 49.4506666666667 187.392 63.4346666666667C203.968 80.2346666666667 213.7173333333333 100.8213333333333 213.4826666666666 118.528C213.1626666666667 142.3573333333334 192.0746666666667 161.0346666666667 165.4826666666667 161.0346666666667z"/>
<glyph glyph-name="zoom-split-in"
unicode="&#xEA5F;"
horiz-adv-x="256"
d=" M210.208 60.8746666666667C206.0373333333333 65.0453333333334 199.296 65.0453333333334 195.1253333333334 60.8746666666667S190.9546666666667 49.9626666666667 195.1253333333334 45.792L227.1253333333334 13.792C229.2053333333334 11.712 231.936 10.6666666666667 234.6666666666667 10.6666666666667S240.128 11.712 242.208 13.792C246.3786666666667 17.9626666666667 246.3786666666667 24.704 242.208 28.8746666666667L210.208 60.8746666666667z M106.6666666666667 256C47.8506666666667 256 0 208.1493333333334 0 149.3333333333334S47.8506666666667 42.6666666666667 106.6666666666667 42.6666666666667S213.3333333333333 90.5173333333333 213.3333333333333 149.3333333333334S165.4826666666667 256 106.6666666666667 256zM149.3333333333333 138.6666666666667H117.3333333333333V106.6666666666667H96V138.6666666666667H64V160H96V192H117.3333333333333V160H149.3333333333333V138.6666666666667z"/>
<glyph glyph-name="collection"
unicode="&#xEA60;"
horiz-adv-x="256"
d=" M22 224L22 192L11 192L0 192L0 181.534L0 171.068L10.75 170.784L21.5 170.5L21.775 154.75L22.051 139L11.025 139L0 139L0 128L0 117L11.025 117L22.051 117L21.775 101.25L21.5 85.5L10.75 85.216L0 84.932L0 74.466L0 64L11 64L22 64L22 32L22 0L139 0L256 0L256 128L256 256L139 256L22 256L22 224M235 127.995L235 20.99L138.75 21.245L42.5 21.5L42.23 42.75L41.96 64L52.98 64L64 64L64 74.466L64 84.932L53.25 85.216L42.5 85.5L42.225 101.25L41.949 117L52.975 117L64 117L64 128L64 139L52.975 139L41.949 139L42.225 154.75L42.5 170.5L53.25 170.784L64 171.068L64 181.534L64 192L53 192L42 192L42 212.833C42 224.292 42.3 233.967 42.667 234.333C43.033 234.7 86.458 235 139.167 235L235 235L235 127.995M96 128L96 85L149 85L202 85L202 128L202 171L149 171L96 171L96 128M182 128L182 107L149.5 107L117 107L117 128L117 149L149.5 149L182 149L182 128"/>
<glyph glyph-name="image"
unicode="&#xEA61;"
horiz-adv-x="256"
d=" M0 128L0 11L128 11L256 11L256 128L256 245L128 245L0 245L0 128M235 171.441C235 129.656 234.744 119.037 233.75 119.64C232.497 120.401 186.403 158.598 182.333 162.249L180.166 164.193L148.462 127.096C131.024 106.693 116.35 90 115.853 90C115.356 90 103.722 99 90 110C76.278 121 64.575 130 63.994 130C63.412 130 54.063 122.888 43.218 114.196C32.373 105.504 22.938 98.052 22.25 97.637C21.255 97.036 21 109.858 21 160.441L21 224L128 224L235 224L235 171.441M101.217 201.79C94.355 200.773 89.484 198.189 84.334 192.833C78.207 186.461 75.763 181.031 75.244 172.642C74.637 162.822 77.446 155.424 84.435 148.435C91.424 141.446 98.822 138.637 108.642 139.244C132.89 140.743 146.408 167.943 132.981 188.215C126.076 198.64 114.202 203.715 101.217 201.79M114.077 178.077C116.367 175.787 117 174.257 117 171.011C117 165.83 115.745 163.437 112.02 161.51C107.141 158.987 103.227 159.573 99.4 163.4C95.578 167.222 94.987 171.14 97.5 176C99.47 179.809 101.579 180.933 106.827 180.97C110.299 180.994 111.731 180.423 114.077 178.077M209.49 112.147L235 90.794L235 61.397L235 32L128 32L21 32L21.015 50.75L21.03 69.5L42.004 86.25C53.54 95.463 63.449 103 64.025 103C64.601 103 72.818 96.793 82.286 89.208C91.754 81.622 103.827 71.987 109.115 67.796L118.731 60.177L150.428 97.151C167.861 117.487 182.542 133.984 183.053 133.813C183.563 133.641 195.46 123.891 209.49 112.147"/>
<glyph glyph-name="shop"
unicode="&#xEA62;"
horiz-adv-x="256"
d=" M34.245 209.497C12.648 166.291 11.003 162.622 11.036 157.747C11.133 143.439 18.248 129.336 28.597 122.94L32 120.837L32 60.418L32 0L74.5 0L117 0L117 26.5L117 53L128 53L139 53L139 26.5L139 0L181.5 0L224 0L224 60.418L224 120.837L227.403 122.94C237.752 129.336 244.867 143.439 244.964 157.747C244.997 162.622 243.352 166.291 221.755 209.497L198.51 256L128 256L57.49 256L34.245 209.497M204.907 196.187C223.169 159.623 224.25 157.146 223.564 153.437C222.445 147.398 219.973 142.955 216.58 140.886C212.251 138.246 203.786 138.351 199.337 141.101C195.802 143.286 192 149.431 192 152.96C192 154.881 191.4 155 181.707 155L171.415 155L170.254 150.658C169.472 147.737 167.767 145.119 165.043 142.658C161.37 139.34 160.46 139 155.247 139.004C146.467 139.009 140.689 143.395 139.078 151.275L138.418 154.5L128 154.5L117.582 154.5L116.922 151.275C115.311 143.395 109.533 139.009 100.753 139.004C95.54 139 94.63 139.34 90.957 142.658C88.233 145.119 86.528 147.737 85.746 150.658L84.585 155L74.293 155C64.287 155 64 154.937 63.995 152.75C63.988 149.586 59.934 143.255 56.442 140.953C52.487 138.346 43.642 138.311 39.42 140.886C36.049 142.941 33.186 148.08 32.271 153.716C31.747 156.944 33.75 161.463 51.082 196.165L70.479 235L128 235L185.521 235L204.907 196.187M78.317 125.614C85.924 119.913 92.23 117.851 101.95 117.885C109.8 117.912 115.707 119.827 122.696 124.612L127.893 128.17L132.602 124.93C139.805 119.974 146.284 117.889 154.481 117.889C163.912 117.889 170.158 120.158 180.205 127.232C181.597 128.213 182.332 128.056 184.205 126.378C188 122.98 193.223 120.22 198.25 118.957L203 117.763L203 69.381L203 21L181.5 21L160 21L160 48L160 75L128 75L96 75L96 48L96 21L74.5 21L53 21L53 69.381L53 117.763L57.669 118.938C62.601 120.18 70.011 124.103 72.038 126.545C73.683 128.527 74.614 128.389 78.317 125.614"/>
<glyph glyph-name="ungroup"
unicode="&#xEA63;"
horiz-adv-x="256"
d=" M11 160L11 75L43 75L75 75L75 43L75 11L160 11L245 11L245 96L245 181L213 181L181 181L181 213L181 245L96 245L11 245L11 160M160 160L160 96L96 96L32 96L32 160L32 224L96 224L160 224L160 160M224 96L224 32L160 32L96 32L96 53.5L96 75L138.5 75L181 75L181 117.5L181 160L202.5 160L224 160L224 96"/>
<glyph glyph-name="world-2"
unicode="&#xEA64;"
horiz-adv-x="256"
d=" M113.63 255.01C85.844 251.5 59.791 239.266 40.142 220.5C-13.081 169.67 -12.827 85.301 40.7 34.967C58.266 18.449 79.155 7.785 104.5 2.394C115.485 0.058 140.515 0.058 151.5 2.395C178.843 8.21 201.725 20.562 219.599 39.156C261.858 83.115 267.53 148.763 233.496 200C227.079 209.66 209.552 227.243 200.227 233.375C185.482 243.071 168.553 250.085 151.752 253.46C142.18 255.383 122.816 256.17 113.63 255.01M80.346 218.25C66.451 198.907 56.913 172.408 54.43 146.25L53.742 139L37.777 139L21.812 139L22.523 144.25C25.978 169.767 42.212 197.015 63.568 213.139C68.734 217.04 83.793 226 85.182 226C85.584 226 83.408 222.513 80.346 218.25M118 182.5L118 139L96.362 139L74.724 139L75.414 145.75C77.565 166.792 84.971 187.624 96.299 204.5C100.481 210.73 115.161 226 116.968 226C117.662 226 118 211.733 118 182.5M147.869 218.25C160.281 205.924 168.942 191.36 174.777 173C177.748 163.652 181 147.358 181 141.824L181 139L159.5 139L138 139L138 182.5C138 211.733 138.338 226 139.032 226C139.6 226 143.576 222.513 147.869 218.25M179.209 221.634C189.762 215.62 194.242 212.203 203.334 203.231C219.215 187.559 230.64 165.203 233.477 144.25L234.188 139L218.223 139L202.258 139L201.57 146.25C199.087 172.408 189.549 198.907 175.654 218.25C172.592 222.513 170.416 226 170.818 226C171.22 226 174.996 224.035 179.209 221.634M54.43 109.75C56.913 83.592 66.451 57.093 80.346 37.75C83.408 33.488 85.632 30 85.289 30C83.97 30 71.221 37.411 65.5 41.503C57.79 47.018 46.284 58.732 40.553 66.901C31.812 79.361 24.418 97.753 22.523 111.75L21.812 117L37.777 117L53.742 117L54.43 109.75M118 73.5C118 42.032 117.69 30 116.879 30C115.044 30 100.666 45.028 96.309 51.5C90.327 60.386 84.629 72.284 81.223 83C78.252 92.348 75 108.642 75 114.176L75 117L96.5 117L118 117L118 73.5M180.597 110.75C178.324 89.269 170.845 68.073 159.69 51.5C155.335 45.029 140.957 30 139.121 30C138.31 30 138 42.032 138 73.5L138 117L159.629 117L181.258 117L180.597 110.75M233.477 111.75C231.505 97.182 223.389 77.661 214.099 65.139C208.576 57.694 197.706 46.665 191.185 41.891C186.51 38.467 172.006 30 170.818 30C170.416 30 172.481 33.337 175.407 37.415C189.532 57.101 199.078 83.495 201.57 109.75L202.258 117L218.223 117L234.188 117L233.477 111.75"/>
<glyph glyph-name="ui-04"
unicode="&#xEA65;"
horiz-adv-x="256"
d=" M60.5 255.324C40.632 252.533 21.376 236.603 14.192 217.015C10.95 208.175 10.152 193.2 12.411 183.613C17.247 163.1 34.884 145.303 55.103 140.537C64.339 138.36 190.028 138.299 200.257 140.467C220.62 144.782 238.673 162.757 243.589 183.613C244.773 188.639 245.069 193.202 244.685 200.5C243.863 216.087 239.53 226.326 229.07 237.394C222.26 244.601 215.845 248.832 206 252.614L198.5 255.494L131 255.62C93.875 255.689 62.15 255.556 60.5 255.324M76.535 233.909C84.449 232.446 89.339 229.795 95.474 223.641C104.462 214.625 108.134 203.334 106.022 191.208C104.582 182.935 102.027 177.966 95.862 171.448C76.111 150.564 40.67 160.048 33.024 188.263C29.798 200.164 34.161 215.079 43.432 223.847C49.448 229.537 53.541 231.875 60.5 233.594C66.951 235.188 69.358 235.236 76.535 233.909M202 231.375C214.639 225.298 222.802 213.504 223.774 199.913C224.765 186.064 219.127 174.436 207.594 166.542C198.545 160.348 195.021 159.943 152.724 160.238L115.091 160.5L118.373 165.5C130.863 184.534 130.922 210.024 118.519 228.837C116.583 231.773 115 234.388 115 234.649C115 234.91 133.113 234.983 155.25 234.812L195.5 234.5L202 231.375M59 116.326C52.281 115.159 43.125 111.303 36.415 106.815C15.804 93.029 6.649 68.331 12.978 43.585C15.552 33.522 19.121 27.064 26.5 19.122C33.741 11.328 42.085 5.737 50.928 2.753C57.413 0.564 58.379 0.531 124.094 0.222C198.612 -0.129 199.271 -0.081 213 6.649C221.879 11.001 232.882 21.414 237.83 30.147C244.395 41.735 246.694 59.188 243.463 72.897C239.136 91.251 223.631 107.957 205.072 114.262C198.54 116.481 198.078 116.496 130 116.628C92.325 116.701 60.375 116.565 59 116.326M140.351 94.75C139.929 94.062 138.268 91.547 136.66 89.16C125.199 72.145 125.603 44.679 137.577 26.885C139.46 24.088 141 21.619 141 21.4C141 20.4 66.724 21.08 61.799 22.124C44.292 25.839 32.022 40.828 32.022 58.5C32.022 69.276 35.346 77.251 43.048 84.952C53.609 95.514 55.166 95.802 102.309 95.911C133.117 95.982 140.96 95.742 140.351 94.75M196.546 94.632C205.268 92.31 210.633 88.462 217.182 79.832C224.666 69.97 226.081 55.233 220.669 43.5C209.72 19.763 179.402 13.833 161.11 31.851C154.503 38.358 151.397 44.176 149.855 52.935C148.593 60.098 149.906 68.935 153.187 75.367C155.644 80.183 163.108 88.286 167.704 91.126C175.097 95.695 187.084 97.152 196.546 94.632"/>
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more