├── .gitignore ├── README.md ├── client └── cl_main.lua ├── fxmanifest.lua ├── server └── sv_main.lua ├── shared └── config.lua └── svelte-source ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── src ├── App.svelte ├── components │ ├── AdminReports.svelte │ ├── Chat.svelte │ └── NewReport.svelte ├── hooks │ ├── useFetchNui.ts │ └── useNuiEvent.ts ├── main.ts ├── providers │ └── VisibilityProvider.svelte ├── store │ └── visibility.ts ├── styles │ └── globals.css ├── utils │ ├── debugData.ts │ └── misc.ts └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | html 2 | .vscode -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # qw_reports 2 | 3 | Standalone FiveM reporting system that works with ace permissions 4 | 5 | ## [INSTALL FROM THE LATEST RELEASE PLEASE](https://github.com/qw-scripts/qw_reports/releases/latest) 6 | 7 | ## [INSTALL FROM THE LATEST RELEASE PLEASE](https://github.com/qw-scripts/qw_reports/releases/latest) 8 | 9 | ## [INSTALL FROM THE LATEST RELEASE PLEASE](https://github.com/qw-scripts/qw_reports/releases/latest) 10 | 11 | ## [INSTALL FROM THE LATEST RELEASE PLEASE](https://github.com/qw-scripts/qw_reports/releases/latest) 12 | 13 | make sure to configure your ace permssion name in the config file that you use for admins / who ever is going to have access to all of the reports 14 | 15 | ## Requirements 16 | 17 | - [ox_lib](https://github.com/overextended/ox_lib) - for callbacks to work and for notifications 18 | 19 | ## Preview 20 | 21 | [preview](https://youtu.be/WdKHmcQWHms) 22 | 23 | ## Contributors 24 | 25 | [Panther](https://github.com/PantherBruv) - Notifications for Reports 26 | -------------------------------------------------------------------------------- /client/cl_main.lua: -------------------------------------------------------------------------------- 1 | -- COMMANDS -- 2 | 3 | RegisterCommand(Config.CreateReportCommand, function() 4 | SendNUIMessage({ action = 'setVisible', data = { show = true, type = 'user' } }) 5 | SetNuiFocus(true, true) 6 | end, false) 7 | 8 | RegisterCommand(Config.ViewReportsMenu, function() 9 | lib.callback('qw_reports:server:checkPerms', false, function(allowed) 10 | if allowed then 11 | SendNUIMessage({ action = 'setVisible', data = { show = true, type = 'admin' } }) 12 | SetNuiFocus(true, true) 13 | end 14 | end) 15 | end, false) 16 | 17 | -- REPORTING CALLBACKS AND EVENTS -- 18 | 19 | RegisterNetEvent('qw_reports:client:sendNotification', function() 20 | lib.notify({ 21 | title = 'Reports', 22 | description = 'new report has been submitted...', 23 | type = 'info', 24 | icon = 'flag' 25 | }) 26 | end) 27 | 28 | RegisterNUICallback('reports/CreateReport', function(data, cb) 29 | TriggerServerEvent('qw_reports:server:createReport', data) 30 | 31 | cb("ok") 32 | end) 33 | 34 | RegisterNUICallback('reports/DeleteReport', function(data, cb) 35 | TriggerServerEvent('qw_reports:server:deleteReport', data) 36 | 37 | cb("ok") 38 | end) 39 | 40 | RegisterNUICallback('reports/GetReports', function(_, cb) 41 | lib.callback('qw_reports:server:getCurrentReports', false, function(reports) 42 | cb(reports) 43 | end) 44 | end) 45 | 46 | RegisterNUICallback('reports/GetReportTypes', function(_, cb) 47 | cb(Config.ReportTypes) 48 | end) 49 | 50 | -- REPORTING ACTIONS CALLBACKS -- 51 | 52 | RegisterNUICallback('actions/actionHandler', function(data, cb) 53 | local reportingPlayer = data.report_src 54 | local action = data.action 55 | TriggerServerEvent('qw_reports:server:actionHandler', reportingPlayer, action) 56 | cb('ok') 57 | end) 58 | 59 | -- GENERIC CALLBACKS -- 60 | 61 | RegisterNUICallback('hideUI', function(_, cb) 62 | cb('ok') 63 | SetNuiFocus(false, false) 64 | end) 65 | -------------------------------------------------------------------------------- /fxmanifest.lua: -------------------------------------------------------------------------------- 1 | -- Credits: 2 | -- UI build process (vite, rollup): https://github.com/JustLazzy 3 | -- initial idea for svelte boilerplate: https://github.com/project-error 4 | fx_version 'cerulean' 5 | 6 | game 'gta5' 7 | 8 | author 'qw-scripts' 9 | version '0.2.0' 10 | description 'standalone reporting system for FiveM' 11 | 12 | lua54 'yes' 13 | 14 | shared_scripts { 15 | 'shared/config.lua', 16 | '@ox_lib/init.lua' 17 | } 18 | 19 | client_scripts { 'client/*.lua' } 20 | 21 | server_scripts { 'server/*.lua' } 22 | 23 | ui_page 'html/index.html' 24 | 25 | files { 'html/index.html', 'html/js/index.js', 'html/assets/index.css' } 26 | -------------------------------------------------------------------------------- /server/sv_main.lua: -------------------------------------------------------------------------------- 1 | local reports = {} 2 | 3 | -- yoinked from here: https://gist.github.com/jrus/3197011 4 | local function uuid() 5 | local template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' 6 | return string.gsub(template, '[xy]', function(c) 7 | local v = (c == 'x') and math.random(0, 0xf) or math.random(8, 0xb) 8 | return string.format('%x', v) 9 | end) 10 | end 11 | 12 | local function sendNotificationToStaff() 13 | for _, playerId in ipairs(GetPlayers()) do 14 | if IsPlayerAceAllowed(playerId, Config.AcePermName) then 15 | TriggerClientEvent('qw_reports:client:sendNotification', playerId) 16 | end 17 | end 18 | end 19 | 20 | local function buildDiscordMessage(reportingPlayerId, reportData) 21 | local message = '**Identifiers:** \n\n' 22 | 23 | for _, v in pairs(GetPlayerIdentifiers(reportingPlayerId)) do 24 | if string.sub(v, 1, string.len("steam:")) == "steam:" then 25 | message = message .. '**SteamID: **' .. '||' .. v .. '||' .. '\n' 26 | elseif string.sub(v, 1, string.len("license:")) == "license:" then 27 | message = message .. '**License: **' .. '||' .. v .. '||' .. '\n' 28 | elseif string.sub(v, 1, string.len("xbl:")) == "xbl:" then 29 | message = message .. '**XBL: **' .. '||' .. v .. '||' .. '\n' 30 | elseif string.sub(v, 1, string.len("ip:")) == "ip:" then 31 | message = message .. '**IP: **' .. '||' .. v .. '||' .. '\n' 32 | elseif string.sub(v, 1, string.len("discord:")) == "discord:" then 33 | message = message .. '**Discord: **' .. '||' .. v .. '||' .. '\n' 34 | elseif string.sub(v, 1, string.len("live:")) == "live:" then 35 | message = message .. '**Live: **' .. '||' .. v .. '||' .. '\n' 36 | end 37 | end 38 | 39 | message = message .. '\n' .. '**Report Details:** \n\n' 40 | 41 | message = message .. 'Report Title: ' .. '**' .. reportData.report_title .. '**' .. '\n' 42 | message = message .. 'Report Details: ' .. '**' .. reportData.report_details .. '**' .. '\n' 43 | message = message .. 'Report Type: ' .. '**' .. reportData.report_type .. '**' .. '\n' 44 | message = message .. 'Report ID: ' .. '**' .. reportData.report_id .. '**' .. '\n' 45 | 46 | return message 47 | end 48 | 49 | local function sendDiscordNotification(reportingPlayerId, reportData) 50 | local message = buildDiscordMessage(reportingPlayerId, reportData) 51 | local playerName = GetPlayerName(reportingPlayerId) 52 | 53 | local embedData = { 54 | ['title'] = 'Report from ' .. playerName .. ' (' .. tostring(reportingPlayerId) .. ')', 55 | ['type'] = 'rich', 56 | ['color'] = 9807270, 57 | ['footer'] = { 58 | ['text'] = os.date('%c'), 59 | }, 60 | ['description'] = message, 61 | ['author'] = { 62 | ['name'] = 'Reporting System', 63 | ['icon_url'] = Config.Webhook.webnhookImage, 64 | }, 65 | } 66 | PerformHttpRequest(Config.Webhook.webhookUrl, function(err, text, headers) end, 'POST', 67 | json.encode({ username = 'Reporting System', embeds = { embedData }, avatar_url = Config.Webhook.webnhookImage }) 68 | , 69 | { ['Content-Type'] = 'application/json' }) 70 | 71 | end 72 | 73 | RegisterNetEvent('qw_reports:server:createReport', function(data) 74 | local src = source 75 | local reportId = uuid() 76 | 77 | reports[#reports + 1] = { 78 | report_title = data.name, 79 | report_details = data.detail, 80 | report_type = data.report_type, 81 | report_src = src, 82 | report_id = reportId 83 | } 84 | 85 | if Config.Webhook.enabled then 86 | sendDiscordNotification(src, { 87 | report_title = data.name, 88 | report_details = data.detail, 89 | report_type = data.report_type, 90 | report_src = src, 91 | report_id = reportId 92 | }) 93 | end 94 | 95 | sendNotificationToStaff() 96 | end) 97 | 98 | RegisterNetEvent('qw_reports:server:deleteReport', function(data) 99 | local tempTable = {} 100 | 101 | for _, v in ipairs(reports) do 102 | if v.report_id == data.report_id then goto continue end 103 | 104 | tempTable[#tempTable + 1] = v 105 | 106 | ::continue:: 107 | end 108 | 109 | reports = tempTable 110 | end) 111 | 112 | RegisterNetEvent('qw_reports:server:actionHandler', function(reportingPlayerId, action) 113 | 114 | if not reportingPlayerId or not action then return end 115 | 116 | local src = source 117 | 118 | if action == 'bring' then 119 | local staffMember = GetPlayerPed(src) 120 | local reportingPlayer = GetPlayerPed(reportingPlayerId) 121 | local staffCoords = GetEntityCoords(staffMember) 122 | 123 | SetEntityCoords(reportingPlayer, staffCoords.x, staffCoords.y, staffCoords.z, false, false, false, false) 124 | else 125 | local staffMember = GetPlayerPed(src) 126 | local reportingPlayer = GetPlayerPed(reportingPlayerId) 127 | 128 | local reportingPlayerCoords = GetEntityCoords(reportingPlayer) 129 | 130 | SetEntityCoords(staffMember, reportingPlayerCoords.x, reportingPlayerCoords.y, reportingPlayerCoords.z, false, 131 | false, false, false) 132 | end 133 | 134 | end) 135 | 136 | lib.callback.register('qw_reports:server:getCurrentReports', function() 137 | return reports 138 | end) 139 | 140 | lib.callback.register('qw_reports:server:checkPerms', function(source) 141 | local src = source 142 | 143 | if IsPlayerAceAllowed(src, Config.AcePermName) then 144 | return true 145 | else 146 | return false 147 | end 148 | end) 149 | -------------------------------------------------------------------------------- /shared/config.lua: -------------------------------------------------------------------------------- 1 | Config = {} 2 | 3 | -- Permissions 4 | 5 | Config.AcePermName = 'command' 6 | 7 | -- Commands 8 | 9 | Config.CreateReportCommand = 'report' 10 | Config.ViewReportsMenu = 'view-reports' 11 | 12 | -- Report Types 13 | 14 | Config.ReportTypes = { -- Fill out your own custom report types 15 | "Player Report", 16 | "Bug Report", 17 | "Staff Report", 18 | "Other" 19 | } 20 | 21 | -- Webhook Stuff 22 | 23 | Config.Webhook = { 24 | enabled = false, 25 | webhookUrl = '', -- PUT YOUR WEBHOOK URL HERE 26 | webnhookImage = '' -- PUT YOUR WEBHOOK IMAGE HERE 27 | } 28 | -------------------------------------------------------------------------------- /svelte-source/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /svelte-source/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["svelte.svelte-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /svelte-source/README.md: -------------------------------------------------------------------------------- 1 | # Svelte + TS + Vite 2 | 3 | This template should help get you started developing with Svelte and TypeScript in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode). 8 | 9 | ## Need an official Svelte framework? 10 | 11 | Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more. 12 | 13 | ## Technical considerations 14 | 15 | **Why use this over SvelteKit?** 16 | 17 | - It brings its own routing solution which might not be preferable for some users. 18 | - It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app. 19 | 20 | This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project. 21 | 22 | Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate. 23 | 24 | **Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?** 25 | 26 | Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information. 27 | 28 | **Why include `.vscode/extensions.json`?** 29 | 30 | Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project. 31 | 32 | **Why enable `allowJs` in the TS template?** 33 | 34 | While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant. 35 | 36 | **Why is HMR not preserving my local component state?** 37 | 38 | HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr). 39 | 40 | If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR. 41 | 42 | ```ts 43 | // store.ts 44 | // An extremely simple external store 45 | import { writable } from 'svelte/store' 46 | export default writable(0) 47 | ``` 48 | -------------------------------------------------------------------------------- /svelte-source/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + Svelte + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /svelte-source/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-source", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "dev:game": "vite build --watch", 9 | "build": "vite build", 10 | "preview": "vite preview", 11 | "check": "svelte-check --tsconfig ./tsconfig.json" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 15 | "@tsconfig/svelte": "^3.0.0", 16 | "autoprefixer": "^10.4.13", 17 | "postcss": "^8.4.21", 18 | "svelte": "^3.54.0", 19 | "svelte-check": "^2.10.0", 20 | "tailwindcss": "^3.2.4", 21 | "tslib": "^2.4.1", 22 | "typescript": "^4.9.3", 23 | "vite": "^4.0.0" 24 | }, 25 | "dependencies": { 26 | "html-minifier": "^4.0.0" 27 | } 28 | } -------------------------------------------------------------------------------- /svelte-source/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@sveltejs/vite-plugin-svelte': ^2.0.0 5 | '@tsconfig/svelte': ^3.0.0 6 | autoprefixer: ^10.4.13 7 | html-minifier: ^4.0.0 8 | postcss: ^8.4.21 9 | svelte: ^3.54.0 10 | svelte-check: ^2.10.0 11 | tailwindcss: ^3.2.4 12 | tslib: ^2.4.1 13 | typescript: ^4.9.3 14 | vite: ^4.0.0 15 | 16 | dependencies: 17 | html-minifier: 4.0.0 18 | 19 | devDependencies: 20 | '@sveltejs/vite-plugin-svelte': 2.0.2_svelte@3.55.1+vite@4.0.4 21 | '@tsconfig/svelte': 3.0.0 22 | autoprefixer: 10.4.13_postcss@8.4.21 23 | postcss: 8.4.21 24 | svelte: 3.55.1 25 | svelte-check: 2.10.3_pehl75e5jsy22vp33udjja4soi 26 | tailwindcss: 3.2.4_postcss@8.4.21 27 | tslib: 2.4.1 28 | typescript: 4.9.4 29 | vite: 4.0.4 30 | 31 | packages: 32 | 33 | /@esbuild/android-arm/0.16.17: 34 | resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} 35 | engines: {node: '>=12'} 36 | cpu: [arm] 37 | os: [android] 38 | requiresBuild: true 39 | dev: true 40 | optional: true 41 | 42 | /@esbuild/android-arm64/0.16.17: 43 | resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} 44 | engines: {node: '>=12'} 45 | cpu: [arm64] 46 | os: [android] 47 | requiresBuild: true 48 | dev: true 49 | optional: true 50 | 51 | /@esbuild/android-x64/0.16.17: 52 | resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} 53 | engines: {node: '>=12'} 54 | cpu: [x64] 55 | os: [android] 56 | requiresBuild: true 57 | dev: true 58 | optional: true 59 | 60 | /@esbuild/darwin-arm64/0.16.17: 61 | resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} 62 | engines: {node: '>=12'} 63 | cpu: [arm64] 64 | os: [darwin] 65 | requiresBuild: true 66 | dev: true 67 | optional: true 68 | 69 | /@esbuild/darwin-x64/0.16.17: 70 | resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} 71 | engines: {node: '>=12'} 72 | cpu: [x64] 73 | os: [darwin] 74 | requiresBuild: true 75 | dev: true 76 | optional: true 77 | 78 | /@esbuild/freebsd-arm64/0.16.17: 79 | resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} 80 | engines: {node: '>=12'} 81 | cpu: [arm64] 82 | os: [freebsd] 83 | requiresBuild: true 84 | dev: true 85 | optional: true 86 | 87 | /@esbuild/freebsd-x64/0.16.17: 88 | resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} 89 | engines: {node: '>=12'} 90 | cpu: [x64] 91 | os: [freebsd] 92 | requiresBuild: true 93 | dev: true 94 | optional: true 95 | 96 | /@esbuild/linux-arm/0.16.17: 97 | resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} 98 | engines: {node: '>=12'} 99 | cpu: [arm] 100 | os: [linux] 101 | requiresBuild: true 102 | dev: true 103 | optional: true 104 | 105 | /@esbuild/linux-arm64/0.16.17: 106 | resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} 107 | engines: {node: '>=12'} 108 | cpu: [arm64] 109 | os: [linux] 110 | requiresBuild: true 111 | dev: true 112 | optional: true 113 | 114 | /@esbuild/linux-ia32/0.16.17: 115 | resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} 116 | engines: {node: '>=12'} 117 | cpu: [ia32] 118 | os: [linux] 119 | requiresBuild: true 120 | dev: true 121 | optional: true 122 | 123 | /@esbuild/linux-loong64/0.16.17: 124 | resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} 125 | engines: {node: '>=12'} 126 | cpu: [loong64] 127 | os: [linux] 128 | requiresBuild: true 129 | dev: true 130 | optional: true 131 | 132 | /@esbuild/linux-mips64el/0.16.17: 133 | resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} 134 | engines: {node: '>=12'} 135 | cpu: [mips64el] 136 | os: [linux] 137 | requiresBuild: true 138 | dev: true 139 | optional: true 140 | 141 | /@esbuild/linux-ppc64/0.16.17: 142 | resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} 143 | engines: {node: '>=12'} 144 | cpu: [ppc64] 145 | os: [linux] 146 | requiresBuild: true 147 | dev: true 148 | optional: true 149 | 150 | /@esbuild/linux-riscv64/0.16.17: 151 | resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} 152 | engines: {node: '>=12'} 153 | cpu: [riscv64] 154 | os: [linux] 155 | requiresBuild: true 156 | dev: true 157 | optional: true 158 | 159 | /@esbuild/linux-s390x/0.16.17: 160 | resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} 161 | engines: {node: '>=12'} 162 | cpu: [s390x] 163 | os: [linux] 164 | requiresBuild: true 165 | dev: true 166 | optional: true 167 | 168 | /@esbuild/linux-x64/0.16.17: 169 | resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} 170 | engines: {node: '>=12'} 171 | cpu: [x64] 172 | os: [linux] 173 | requiresBuild: true 174 | dev: true 175 | optional: true 176 | 177 | /@esbuild/netbsd-x64/0.16.17: 178 | resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} 179 | engines: {node: '>=12'} 180 | cpu: [x64] 181 | os: [netbsd] 182 | requiresBuild: true 183 | dev: true 184 | optional: true 185 | 186 | /@esbuild/openbsd-x64/0.16.17: 187 | resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} 188 | engines: {node: '>=12'} 189 | cpu: [x64] 190 | os: [openbsd] 191 | requiresBuild: true 192 | dev: true 193 | optional: true 194 | 195 | /@esbuild/sunos-x64/0.16.17: 196 | resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} 197 | engines: {node: '>=12'} 198 | cpu: [x64] 199 | os: [sunos] 200 | requiresBuild: true 201 | dev: true 202 | optional: true 203 | 204 | /@esbuild/win32-arm64/0.16.17: 205 | resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} 206 | engines: {node: '>=12'} 207 | cpu: [arm64] 208 | os: [win32] 209 | requiresBuild: true 210 | dev: true 211 | optional: true 212 | 213 | /@esbuild/win32-ia32/0.16.17: 214 | resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} 215 | engines: {node: '>=12'} 216 | cpu: [ia32] 217 | os: [win32] 218 | requiresBuild: true 219 | dev: true 220 | optional: true 221 | 222 | /@esbuild/win32-x64/0.16.17: 223 | resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} 224 | engines: {node: '>=12'} 225 | cpu: [x64] 226 | os: [win32] 227 | requiresBuild: true 228 | dev: true 229 | optional: true 230 | 231 | /@jridgewell/resolve-uri/3.1.0: 232 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 233 | engines: {node: '>=6.0.0'} 234 | dev: true 235 | 236 | /@jridgewell/sourcemap-codec/1.4.14: 237 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 238 | dev: true 239 | 240 | /@jridgewell/trace-mapping/0.3.17: 241 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 242 | dependencies: 243 | '@jridgewell/resolve-uri': 3.1.0 244 | '@jridgewell/sourcemap-codec': 1.4.14 245 | dev: true 246 | 247 | /@nodelib/fs.scandir/2.1.5: 248 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 249 | engines: {node: '>= 8'} 250 | dependencies: 251 | '@nodelib/fs.stat': 2.0.5 252 | run-parallel: 1.2.0 253 | dev: true 254 | 255 | /@nodelib/fs.stat/2.0.5: 256 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 257 | engines: {node: '>= 8'} 258 | dev: true 259 | 260 | /@nodelib/fs.walk/1.2.8: 261 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 262 | engines: {node: '>= 8'} 263 | dependencies: 264 | '@nodelib/fs.scandir': 2.1.5 265 | fastq: 1.15.0 266 | dev: true 267 | 268 | /@sveltejs/vite-plugin-svelte/2.0.2_svelte@3.55.1+vite@4.0.4: 269 | resolution: {integrity: sha512-xCEan0/NNpQuL0l5aS42FjwQ6wwskdxC3pW1OeFtEKNZwRg7Evro9lac9HesGP6TdFsTv2xMes5ASQVKbCacxg==} 270 | engines: {node: ^14.18.0 || >= 16} 271 | peerDependencies: 272 | svelte: ^3.54.0 273 | vite: ^4.0.0 274 | dependencies: 275 | debug: 4.3.4 276 | deepmerge: 4.2.2 277 | kleur: 4.1.5 278 | magic-string: 0.27.0 279 | svelte: 3.55.1 280 | svelte-hmr: 0.15.1_svelte@3.55.1 281 | vite: 4.0.4 282 | vitefu: 0.2.4_vite@4.0.4 283 | transitivePeerDependencies: 284 | - supports-color 285 | dev: true 286 | 287 | /@tsconfig/svelte/3.0.0: 288 | resolution: {integrity: sha512-pYrtLtOwku/7r1i9AMONsJMVYAtk3hzOfiGNekhtq5tYBGA7unMve8RvUclKLMT3PrihvJqUmzsRGh0RP84hKg==} 289 | dev: true 290 | 291 | /@types/node/18.11.18: 292 | resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} 293 | dev: true 294 | 295 | /@types/pug/2.0.6: 296 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 297 | dev: true 298 | 299 | /@types/sass/1.43.1: 300 | resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} 301 | dependencies: 302 | '@types/node': 18.11.18 303 | dev: true 304 | 305 | /acorn-node/1.8.2: 306 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 307 | dependencies: 308 | acorn: 7.4.1 309 | acorn-walk: 7.2.0 310 | xtend: 4.0.2 311 | dev: true 312 | 313 | /acorn-walk/7.2.0: 314 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 315 | engines: {node: '>=0.4.0'} 316 | dev: true 317 | 318 | /acorn/7.4.1: 319 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 320 | engines: {node: '>=0.4.0'} 321 | hasBin: true 322 | dev: true 323 | 324 | /anymatch/3.1.3: 325 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 326 | engines: {node: '>= 8'} 327 | dependencies: 328 | normalize-path: 3.0.0 329 | picomatch: 2.3.1 330 | dev: true 331 | 332 | /arg/5.0.2: 333 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 334 | dev: true 335 | 336 | /autoprefixer/10.4.13_postcss@8.4.21: 337 | resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} 338 | engines: {node: ^10 || ^12 || >=14} 339 | hasBin: true 340 | peerDependencies: 341 | postcss: ^8.1.0 342 | dependencies: 343 | browserslist: 4.21.4 344 | caniuse-lite: 1.0.30001446 345 | fraction.js: 4.2.0 346 | normalize-range: 0.1.2 347 | picocolors: 1.0.0 348 | postcss: 8.4.21 349 | postcss-value-parser: 4.2.0 350 | dev: true 351 | 352 | /balanced-match/1.0.2: 353 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 354 | dev: true 355 | 356 | /binary-extensions/2.2.0: 357 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 358 | engines: {node: '>=8'} 359 | dev: true 360 | 361 | /brace-expansion/1.1.11: 362 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 363 | dependencies: 364 | balanced-match: 1.0.2 365 | concat-map: 0.0.1 366 | dev: true 367 | 368 | /braces/3.0.2: 369 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 370 | engines: {node: '>=8'} 371 | dependencies: 372 | fill-range: 7.0.1 373 | dev: true 374 | 375 | /browserslist/4.21.4: 376 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 377 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 378 | hasBin: true 379 | dependencies: 380 | caniuse-lite: 1.0.30001446 381 | electron-to-chromium: 1.4.284 382 | node-releases: 2.0.8 383 | update-browserslist-db: 1.0.10_browserslist@4.21.4 384 | dev: true 385 | 386 | /buffer-crc32/0.2.13: 387 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 388 | dev: true 389 | 390 | /callsites/3.1.0: 391 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 392 | engines: {node: '>=6'} 393 | dev: true 394 | 395 | /camel-case/3.0.0: 396 | resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} 397 | dependencies: 398 | no-case: 2.3.2 399 | upper-case: 1.1.3 400 | dev: false 401 | 402 | /camelcase-css/2.0.1: 403 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 404 | engines: {node: '>= 6'} 405 | dev: true 406 | 407 | /caniuse-lite/1.0.30001446: 408 | resolution: {integrity: sha512-fEoga4PrImGcwUUGEol/PoFCSBnSkA9drgdkxXkJLsUBOnJ8rs3zDv6ApqYXGQFOyMPsjh79naWhF4DAxbF8rw==} 409 | dev: true 410 | 411 | /chokidar/3.5.3: 412 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 413 | engines: {node: '>= 8.10.0'} 414 | dependencies: 415 | anymatch: 3.1.3 416 | braces: 3.0.2 417 | glob-parent: 5.1.2 418 | is-binary-path: 2.1.0 419 | is-glob: 4.0.3 420 | normalize-path: 3.0.0 421 | readdirp: 3.6.0 422 | optionalDependencies: 423 | fsevents: 2.3.2 424 | dev: true 425 | 426 | /clean-css/4.2.4: 427 | resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} 428 | engines: {node: '>= 4.0'} 429 | dependencies: 430 | source-map: 0.6.1 431 | dev: false 432 | 433 | /color-name/1.1.4: 434 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 435 | dev: true 436 | 437 | /commander/2.20.3: 438 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 439 | dev: false 440 | 441 | /concat-map/0.0.1: 442 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 443 | dev: true 444 | 445 | /cssesc/3.0.0: 446 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 447 | engines: {node: '>=4'} 448 | hasBin: true 449 | dev: true 450 | 451 | /debug/4.3.4: 452 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 453 | engines: {node: '>=6.0'} 454 | peerDependencies: 455 | supports-color: '*' 456 | peerDependenciesMeta: 457 | supports-color: 458 | optional: true 459 | dependencies: 460 | ms: 2.1.2 461 | dev: true 462 | 463 | /deepmerge/4.2.2: 464 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 465 | engines: {node: '>=0.10.0'} 466 | dev: true 467 | 468 | /defined/1.0.1: 469 | resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} 470 | dev: true 471 | 472 | /detect-indent/6.1.0: 473 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 474 | engines: {node: '>=8'} 475 | dev: true 476 | 477 | /detective/5.2.1: 478 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 479 | engines: {node: '>=0.8.0'} 480 | hasBin: true 481 | dependencies: 482 | acorn-node: 1.8.2 483 | defined: 1.0.1 484 | minimist: 1.2.7 485 | dev: true 486 | 487 | /didyoumean/1.2.2: 488 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 489 | dev: true 490 | 491 | /dlv/1.1.3: 492 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 493 | dev: true 494 | 495 | /electron-to-chromium/1.4.284: 496 | resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} 497 | dev: true 498 | 499 | /es6-promise/3.3.1: 500 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 501 | dev: true 502 | 503 | /esbuild/0.16.17: 504 | resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} 505 | engines: {node: '>=12'} 506 | hasBin: true 507 | requiresBuild: true 508 | optionalDependencies: 509 | '@esbuild/android-arm': 0.16.17 510 | '@esbuild/android-arm64': 0.16.17 511 | '@esbuild/android-x64': 0.16.17 512 | '@esbuild/darwin-arm64': 0.16.17 513 | '@esbuild/darwin-x64': 0.16.17 514 | '@esbuild/freebsd-arm64': 0.16.17 515 | '@esbuild/freebsd-x64': 0.16.17 516 | '@esbuild/linux-arm': 0.16.17 517 | '@esbuild/linux-arm64': 0.16.17 518 | '@esbuild/linux-ia32': 0.16.17 519 | '@esbuild/linux-loong64': 0.16.17 520 | '@esbuild/linux-mips64el': 0.16.17 521 | '@esbuild/linux-ppc64': 0.16.17 522 | '@esbuild/linux-riscv64': 0.16.17 523 | '@esbuild/linux-s390x': 0.16.17 524 | '@esbuild/linux-x64': 0.16.17 525 | '@esbuild/netbsd-x64': 0.16.17 526 | '@esbuild/openbsd-x64': 0.16.17 527 | '@esbuild/sunos-x64': 0.16.17 528 | '@esbuild/win32-arm64': 0.16.17 529 | '@esbuild/win32-ia32': 0.16.17 530 | '@esbuild/win32-x64': 0.16.17 531 | dev: true 532 | 533 | /escalade/3.1.1: 534 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 535 | engines: {node: '>=6'} 536 | dev: true 537 | 538 | /fast-glob/3.2.12: 539 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 540 | engines: {node: '>=8.6.0'} 541 | dependencies: 542 | '@nodelib/fs.stat': 2.0.5 543 | '@nodelib/fs.walk': 1.2.8 544 | glob-parent: 5.1.2 545 | merge2: 1.4.1 546 | micromatch: 4.0.5 547 | dev: true 548 | 549 | /fastq/1.15.0: 550 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 551 | dependencies: 552 | reusify: 1.0.4 553 | dev: true 554 | 555 | /fill-range/7.0.1: 556 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 557 | engines: {node: '>=8'} 558 | dependencies: 559 | to-regex-range: 5.0.1 560 | dev: true 561 | 562 | /fraction.js/4.2.0: 563 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 564 | dev: true 565 | 566 | /fs.realpath/1.0.0: 567 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 568 | dev: true 569 | 570 | /fsevents/2.3.2: 571 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 572 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 573 | os: [darwin] 574 | requiresBuild: true 575 | dev: true 576 | optional: true 577 | 578 | /function-bind/1.1.1: 579 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 580 | dev: true 581 | 582 | /glob-parent/5.1.2: 583 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 584 | engines: {node: '>= 6'} 585 | dependencies: 586 | is-glob: 4.0.3 587 | dev: true 588 | 589 | /glob-parent/6.0.2: 590 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 591 | engines: {node: '>=10.13.0'} 592 | dependencies: 593 | is-glob: 4.0.3 594 | dev: true 595 | 596 | /glob/7.2.3: 597 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 598 | dependencies: 599 | fs.realpath: 1.0.0 600 | inflight: 1.0.6 601 | inherits: 2.0.4 602 | minimatch: 3.1.2 603 | once: 1.4.0 604 | path-is-absolute: 1.0.1 605 | dev: true 606 | 607 | /graceful-fs/4.2.10: 608 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 609 | dev: true 610 | 611 | /has/1.0.3: 612 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 613 | engines: {node: '>= 0.4.0'} 614 | dependencies: 615 | function-bind: 1.1.1 616 | dev: true 617 | 618 | /he/1.2.0: 619 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 620 | hasBin: true 621 | dev: false 622 | 623 | /html-minifier/4.0.0: 624 | resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} 625 | engines: {node: '>=6'} 626 | hasBin: true 627 | dependencies: 628 | camel-case: 3.0.0 629 | clean-css: 4.2.4 630 | commander: 2.20.3 631 | he: 1.2.0 632 | param-case: 2.1.1 633 | relateurl: 0.2.7 634 | uglify-js: 3.17.4 635 | dev: false 636 | 637 | /import-fresh/3.3.0: 638 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 639 | engines: {node: '>=6'} 640 | dependencies: 641 | parent-module: 1.0.1 642 | resolve-from: 4.0.0 643 | dev: true 644 | 645 | /inflight/1.0.6: 646 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 647 | dependencies: 648 | once: 1.4.0 649 | wrappy: 1.0.2 650 | dev: true 651 | 652 | /inherits/2.0.4: 653 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 654 | dev: true 655 | 656 | /is-binary-path/2.1.0: 657 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 658 | engines: {node: '>=8'} 659 | dependencies: 660 | binary-extensions: 2.2.0 661 | dev: true 662 | 663 | /is-core-module/2.11.0: 664 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 665 | dependencies: 666 | has: 1.0.3 667 | dev: true 668 | 669 | /is-extglob/2.1.1: 670 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 671 | engines: {node: '>=0.10.0'} 672 | dev: true 673 | 674 | /is-glob/4.0.3: 675 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 676 | engines: {node: '>=0.10.0'} 677 | dependencies: 678 | is-extglob: 2.1.1 679 | dev: true 680 | 681 | /is-number/7.0.0: 682 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 683 | engines: {node: '>=0.12.0'} 684 | dev: true 685 | 686 | /kleur/4.1.5: 687 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 688 | engines: {node: '>=6'} 689 | dev: true 690 | 691 | /lilconfig/2.0.6: 692 | resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} 693 | engines: {node: '>=10'} 694 | dev: true 695 | 696 | /lower-case/1.1.4: 697 | resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} 698 | dev: false 699 | 700 | /magic-string/0.25.9: 701 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 702 | dependencies: 703 | sourcemap-codec: 1.4.8 704 | dev: true 705 | 706 | /magic-string/0.27.0: 707 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 708 | engines: {node: '>=12'} 709 | dependencies: 710 | '@jridgewell/sourcemap-codec': 1.4.14 711 | dev: true 712 | 713 | /merge2/1.4.1: 714 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 715 | engines: {node: '>= 8'} 716 | dev: true 717 | 718 | /micromatch/4.0.5: 719 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 720 | engines: {node: '>=8.6'} 721 | dependencies: 722 | braces: 3.0.2 723 | picomatch: 2.3.1 724 | dev: true 725 | 726 | /min-indent/1.0.1: 727 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 728 | engines: {node: '>=4'} 729 | dev: true 730 | 731 | /minimatch/3.1.2: 732 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 733 | dependencies: 734 | brace-expansion: 1.1.11 735 | dev: true 736 | 737 | /minimist/1.2.7: 738 | resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 739 | dev: true 740 | 741 | /mkdirp/0.5.6: 742 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 743 | hasBin: true 744 | dependencies: 745 | minimist: 1.2.7 746 | dev: true 747 | 748 | /mri/1.2.0: 749 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 750 | engines: {node: '>=4'} 751 | dev: true 752 | 753 | /ms/2.1.2: 754 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 755 | dev: true 756 | 757 | /nanoid/3.3.4: 758 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 759 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 760 | hasBin: true 761 | dev: true 762 | 763 | /no-case/2.3.2: 764 | resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} 765 | dependencies: 766 | lower-case: 1.1.4 767 | dev: false 768 | 769 | /node-releases/2.0.8: 770 | resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} 771 | dev: true 772 | 773 | /normalize-path/3.0.0: 774 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 775 | engines: {node: '>=0.10.0'} 776 | dev: true 777 | 778 | /normalize-range/0.1.2: 779 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 780 | engines: {node: '>=0.10.0'} 781 | dev: true 782 | 783 | /object-hash/3.0.0: 784 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 785 | engines: {node: '>= 6'} 786 | dev: true 787 | 788 | /once/1.4.0: 789 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 790 | dependencies: 791 | wrappy: 1.0.2 792 | dev: true 793 | 794 | /param-case/2.1.1: 795 | resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} 796 | dependencies: 797 | no-case: 2.3.2 798 | dev: false 799 | 800 | /parent-module/1.0.1: 801 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 802 | engines: {node: '>=6'} 803 | dependencies: 804 | callsites: 3.1.0 805 | dev: true 806 | 807 | /path-is-absolute/1.0.1: 808 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 809 | engines: {node: '>=0.10.0'} 810 | dev: true 811 | 812 | /path-parse/1.0.7: 813 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 814 | dev: true 815 | 816 | /picocolors/1.0.0: 817 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 818 | dev: true 819 | 820 | /picomatch/2.3.1: 821 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 822 | engines: {node: '>=8.6'} 823 | dev: true 824 | 825 | /pify/2.3.0: 826 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 827 | engines: {node: '>=0.10.0'} 828 | dev: true 829 | 830 | /postcss-import/14.1.0_postcss@8.4.21: 831 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 832 | engines: {node: '>=10.0.0'} 833 | peerDependencies: 834 | postcss: ^8.0.0 835 | dependencies: 836 | postcss: 8.4.21 837 | postcss-value-parser: 4.2.0 838 | read-cache: 1.0.0 839 | resolve: 1.22.1 840 | dev: true 841 | 842 | /postcss-js/4.0.0_postcss@8.4.21: 843 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 844 | engines: {node: ^12 || ^14 || >= 16} 845 | peerDependencies: 846 | postcss: ^8.3.3 847 | dependencies: 848 | camelcase-css: 2.0.1 849 | postcss: 8.4.21 850 | dev: true 851 | 852 | /postcss-load-config/3.1.4_postcss@8.4.21: 853 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 854 | engines: {node: '>= 10'} 855 | peerDependencies: 856 | postcss: '>=8.0.9' 857 | ts-node: '>=9.0.0' 858 | peerDependenciesMeta: 859 | postcss: 860 | optional: true 861 | ts-node: 862 | optional: true 863 | dependencies: 864 | lilconfig: 2.0.6 865 | postcss: 8.4.21 866 | yaml: 1.10.2 867 | dev: true 868 | 869 | /postcss-nested/6.0.0_postcss@8.4.21: 870 | resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} 871 | engines: {node: '>=12.0'} 872 | peerDependencies: 873 | postcss: ^8.2.14 874 | dependencies: 875 | postcss: 8.4.21 876 | postcss-selector-parser: 6.0.11 877 | dev: true 878 | 879 | /postcss-selector-parser/6.0.11: 880 | resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} 881 | engines: {node: '>=4'} 882 | dependencies: 883 | cssesc: 3.0.0 884 | util-deprecate: 1.0.2 885 | dev: true 886 | 887 | /postcss-value-parser/4.2.0: 888 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 889 | dev: true 890 | 891 | /postcss/8.4.21: 892 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 893 | engines: {node: ^10 || ^12 || >=14} 894 | dependencies: 895 | nanoid: 3.3.4 896 | picocolors: 1.0.0 897 | source-map-js: 1.0.2 898 | dev: true 899 | 900 | /queue-microtask/1.2.3: 901 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 902 | dev: true 903 | 904 | /quick-lru/5.1.1: 905 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 906 | engines: {node: '>=10'} 907 | dev: true 908 | 909 | /read-cache/1.0.0: 910 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 911 | dependencies: 912 | pify: 2.3.0 913 | dev: true 914 | 915 | /readdirp/3.6.0: 916 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 917 | engines: {node: '>=8.10.0'} 918 | dependencies: 919 | picomatch: 2.3.1 920 | dev: true 921 | 922 | /relateurl/0.2.7: 923 | resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} 924 | engines: {node: '>= 0.10'} 925 | dev: false 926 | 927 | /resolve-from/4.0.0: 928 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 929 | engines: {node: '>=4'} 930 | dev: true 931 | 932 | /resolve/1.22.1: 933 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 934 | hasBin: true 935 | dependencies: 936 | is-core-module: 2.11.0 937 | path-parse: 1.0.7 938 | supports-preserve-symlinks-flag: 1.0.0 939 | dev: true 940 | 941 | /reusify/1.0.4: 942 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 943 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 944 | dev: true 945 | 946 | /rimraf/2.7.1: 947 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 948 | hasBin: true 949 | dependencies: 950 | glob: 7.2.3 951 | dev: true 952 | 953 | /rollup/3.10.1: 954 | resolution: {integrity: sha512-3Er+yel3bZbZX1g2kjVM+FW+RUWDxbG87fcqFM5/9HbPCTpbVp6JOLn7jlxnNlbu7s/N/uDA4EV/91E2gWnxzw==} 955 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 956 | hasBin: true 957 | optionalDependencies: 958 | fsevents: 2.3.2 959 | dev: true 960 | 961 | /run-parallel/1.2.0: 962 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 963 | dependencies: 964 | queue-microtask: 1.2.3 965 | dev: true 966 | 967 | /sade/1.8.1: 968 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 969 | engines: {node: '>=6'} 970 | dependencies: 971 | mri: 1.2.0 972 | dev: true 973 | 974 | /sander/0.5.1: 975 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 976 | dependencies: 977 | es6-promise: 3.3.1 978 | graceful-fs: 4.2.10 979 | mkdirp: 0.5.6 980 | rimraf: 2.7.1 981 | dev: true 982 | 983 | /sorcery/0.10.0: 984 | resolution: {integrity: sha512-R5ocFmKZQFfSTstfOtHjJuAwbpGyf9qjQa1egyhvXSbM7emjrtLXtGdZsDJDABC85YBfVvrOiGWKSYXPKdvP1g==} 985 | hasBin: true 986 | dependencies: 987 | buffer-crc32: 0.2.13 988 | minimist: 1.2.7 989 | sander: 0.5.1 990 | sourcemap-codec: 1.4.8 991 | dev: true 992 | 993 | /source-map-js/1.0.2: 994 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 995 | engines: {node: '>=0.10.0'} 996 | dev: true 997 | 998 | /source-map/0.6.1: 999 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1000 | engines: {node: '>=0.10.0'} 1001 | dev: false 1002 | 1003 | /sourcemap-codec/1.4.8: 1004 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1005 | deprecated: Please use @jridgewell/sourcemap-codec instead 1006 | dev: true 1007 | 1008 | /strip-indent/3.0.0: 1009 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1010 | engines: {node: '>=8'} 1011 | dependencies: 1012 | min-indent: 1.0.1 1013 | dev: true 1014 | 1015 | /supports-preserve-symlinks-flag/1.0.0: 1016 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1017 | engines: {node: '>= 0.4'} 1018 | dev: true 1019 | 1020 | /svelte-check/2.10.3_pehl75e5jsy22vp33udjja4soi: 1021 | resolution: {integrity: sha512-Nt1aWHTOKFReBpmJ1vPug0aGysqPwJh2seM1OvICfM2oeyaA62mOiy5EvkXhltGfhCcIQcq2LoE0l1CwcWPjlw==} 1022 | hasBin: true 1023 | peerDependencies: 1024 | svelte: ^3.24.0 1025 | dependencies: 1026 | '@jridgewell/trace-mapping': 0.3.17 1027 | chokidar: 3.5.3 1028 | fast-glob: 3.2.12 1029 | import-fresh: 3.3.0 1030 | picocolors: 1.0.0 1031 | sade: 1.8.1 1032 | svelte: 3.55.1 1033 | svelte-preprocess: 4.10.7_oifjsu5oar4lzyaoppb2hxramu 1034 | typescript: 4.9.4 1035 | transitivePeerDependencies: 1036 | - '@babel/core' 1037 | - coffeescript 1038 | - less 1039 | - node-sass 1040 | - postcss 1041 | - postcss-load-config 1042 | - pug 1043 | - sass 1044 | - stylus 1045 | - sugarss 1046 | dev: true 1047 | 1048 | /svelte-hmr/0.15.1_svelte@3.55.1: 1049 | resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==} 1050 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1051 | peerDependencies: 1052 | svelte: '>=3.19.0' 1053 | dependencies: 1054 | svelte: 3.55.1 1055 | dev: true 1056 | 1057 | /svelte-preprocess/4.10.7_oifjsu5oar4lzyaoppb2hxramu: 1058 | resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} 1059 | engines: {node: '>= 9.11.2'} 1060 | requiresBuild: true 1061 | peerDependencies: 1062 | '@babel/core': ^7.10.2 1063 | coffeescript: ^2.5.1 1064 | less: ^3.11.3 || ^4.0.0 1065 | node-sass: '*' 1066 | postcss: ^7 || ^8 1067 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 1068 | pug: ^3.0.0 1069 | sass: ^1.26.8 1070 | stylus: ^0.55.0 1071 | sugarss: ^2.0.0 1072 | svelte: ^3.23.0 1073 | typescript: ^3.9.5 || ^4.0.0 1074 | peerDependenciesMeta: 1075 | '@babel/core': 1076 | optional: true 1077 | coffeescript: 1078 | optional: true 1079 | less: 1080 | optional: true 1081 | node-sass: 1082 | optional: true 1083 | postcss: 1084 | optional: true 1085 | postcss-load-config: 1086 | optional: true 1087 | pug: 1088 | optional: true 1089 | sass: 1090 | optional: true 1091 | stylus: 1092 | optional: true 1093 | sugarss: 1094 | optional: true 1095 | typescript: 1096 | optional: true 1097 | dependencies: 1098 | '@types/pug': 2.0.6 1099 | '@types/sass': 1.43.1 1100 | detect-indent: 6.1.0 1101 | magic-string: 0.25.9 1102 | postcss: 8.4.21 1103 | sorcery: 0.10.0 1104 | strip-indent: 3.0.0 1105 | svelte: 3.55.1 1106 | typescript: 4.9.4 1107 | dev: true 1108 | 1109 | /svelte/3.55.1: 1110 | resolution: {integrity: sha512-S+87/P0Ve67HxKkEV23iCdAh/SX1xiSfjF1HOglno/YTbSTW7RniICMCofWGdJJbdjw3S+0PfFb1JtGfTXE0oQ==} 1111 | engines: {node: '>= 8'} 1112 | dev: true 1113 | 1114 | /tailwindcss/3.2.4_postcss@8.4.21: 1115 | resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} 1116 | engines: {node: '>=12.13.0'} 1117 | hasBin: true 1118 | peerDependencies: 1119 | postcss: ^8.0.9 1120 | dependencies: 1121 | arg: 5.0.2 1122 | chokidar: 3.5.3 1123 | color-name: 1.1.4 1124 | detective: 5.2.1 1125 | didyoumean: 1.2.2 1126 | dlv: 1.1.3 1127 | fast-glob: 3.2.12 1128 | glob-parent: 6.0.2 1129 | is-glob: 4.0.3 1130 | lilconfig: 2.0.6 1131 | micromatch: 4.0.5 1132 | normalize-path: 3.0.0 1133 | object-hash: 3.0.0 1134 | picocolors: 1.0.0 1135 | postcss: 8.4.21 1136 | postcss-import: 14.1.0_postcss@8.4.21 1137 | postcss-js: 4.0.0_postcss@8.4.21 1138 | postcss-load-config: 3.1.4_postcss@8.4.21 1139 | postcss-nested: 6.0.0_postcss@8.4.21 1140 | postcss-selector-parser: 6.0.11 1141 | postcss-value-parser: 4.2.0 1142 | quick-lru: 5.1.1 1143 | resolve: 1.22.1 1144 | transitivePeerDependencies: 1145 | - ts-node 1146 | dev: true 1147 | 1148 | /to-regex-range/5.0.1: 1149 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1150 | engines: {node: '>=8.0'} 1151 | dependencies: 1152 | is-number: 7.0.0 1153 | dev: true 1154 | 1155 | /tslib/2.4.1: 1156 | resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} 1157 | dev: true 1158 | 1159 | /typescript/4.9.4: 1160 | resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} 1161 | engines: {node: '>=4.2.0'} 1162 | hasBin: true 1163 | dev: true 1164 | 1165 | /uglify-js/3.17.4: 1166 | resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} 1167 | engines: {node: '>=0.8.0'} 1168 | hasBin: true 1169 | dev: false 1170 | 1171 | /update-browserslist-db/1.0.10_browserslist@4.21.4: 1172 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 1173 | hasBin: true 1174 | peerDependencies: 1175 | browserslist: '>= 4.21.0' 1176 | dependencies: 1177 | browserslist: 4.21.4 1178 | escalade: 3.1.1 1179 | picocolors: 1.0.0 1180 | dev: true 1181 | 1182 | /upper-case/1.1.3: 1183 | resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} 1184 | dev: false 1185 | 1186 | /util-deprecate/1.0.2: 1187 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1188 | dev: true 1189 | 1190 | /vite/4.0.4: 1191 | resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} 1192 | engines: {node: ^14.18.0 || >=16.0.0} 1193 | hasBin: true 1194 | peerDependencies: 1195 | '@types/node': '>= 14' 1196 | less: '*' 1197 | sass: '*' 1198 | stylus: '*' 1199 | sugarss: '*' 1200 | terser: ^5.4.0 1201 | peerDependenciesMeta: 1202 | '@types/node': 1203 | optional: true 1204 | less: 1205 | optional: true 1206 | sass: 1207 | optional: true 1208 | stylus: 1209 | optional: true 1210 | sugarss: 1211 | optional: true 1212 | terser: 1213 | optional: true 1214 | dependencies: 1215 | esbuild: 0.16.17 1216 | postcss: 8.4.21 1217 | resolve: 1.22.1 1218 | rollup: 3.10.1 1219 | optionalDependencies: 1220 | fsevents: 2.3.2 1221 | dev: true 1222 | 1223 | /vitefu/0.2.4_vite@4.0.4: 1224 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 1225 | peerDependencies: 1226 | vite: ^3.0.0 || ^4.0.0 1227 | peerDependenciesMeta: 1228 | vite: 1229 | optional: true 1230 | dependencies: 1231 | vite: 4.0.4 1232 | dev: true 1233 | 1234 | /wrappy/1.0.2: 1235 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1236 | dev: true 1237 | 1238 | /xtend/4.0.2: 1239 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1240 | engines: {node: '>=0.4'} 1241 | dev: true 1242 | 1243 | /yaml/1.10.2: 1244 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1245 | engines: {node: '>= 6'} 1246 | dev: true 1247 | -------------------------------------------------------------------------------- /svelte-source/postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /svelte-source/src/App.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /svelte-source/src/components/AdminReports.svelte: -------------------------------------------------------------------------------- 1 | 74 | 75 |
80 |
83 |

Active Reports

84 |

85 | {reports.length} total {reports.length > 1 || reports.length == 0 86 | ? "reports" 87 | : "report"} 88 |

89 |
90 |
91 | {#each reports as report} 92 |
96 |
97 |
98 |

{report.report_title}

99 |

100 | {report.report_type} - Player ID: {report.report_src} 101 |

102 |
103 |

106 | {report.report_id} 107 |

108 |
109 |

110 | {report.report_details} 111 |

112 |
113 |
114 | 120 |
121 |
122 | 128 | 134 | 141 |
142 |
143 |
144 | {/each} 145 |
146 |
147 | 148 | 159 | -------------------------------------------------------------------------------- /svelte-source/src/components/Chat.svelte: -------------------------------------------------------------------------------- 1 | 21 | 22 |
27 |
30 |

Report Chat

31 |
32 |
33 | {#each chatMessages as message} 34 |
35 |
38 | {message.sender} 41 |

{message.text}

42 |
43 |
44 | {/each} 45 |
46 |
47 |
51 | 57 | 64 |
65 |
66 |
67 | 68 | 79 | -------------------------------------------------------------------------------- /svelte-source/src/components/NewReport.svelte: -------------------------------------------------------------------------------- 1 | 52 | 53 |
58 |
59 |

New Report

60 |
61 |
65 |
66 | 67 | 75 |
76 |
77 | 78 | 89 |
90 |
91 | 94 |