Commit cbd507de authored by Gamage B.G.J's avatar Gamage B.G.J

Merge branch 'fix/project-re-structure' into 'master'

Fix/project re structure

See merge request !10
parents d95d1752 1f4a5557
......@@ -2,7 +2,6 @@ import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken';
import mongoose from 'mongoose';
import nodemailer from "nodemailer";
import { v4 as uuidv4 } from 'uuid';
import User from '../models/user.model.js';
export const signIn = async (req, res) => {
......@@ -28,89 +27,40 @@ export const signIn = async (req, res) => {
export const signUp = async (req, res) => {
const {
firstName,
lastName,
email,
contactNumber,
password,
confirmPassword,
type,
userFirstName,
userLastName,
userContactNumber,
userAddressLine1,
userAddressLine2,
userAddressLine3,
type
} = req.body;
try {
// if (!type) return res.status(400).json({ code: "02", message: "Type Field Required" })
if (!email) return res.status(400).json({ code: "02", message: "Email Field Required" })
if (!userFirstName) return res.status(400).json({ code: "02", message: "User First Name Field Required" })
if (!userLastName) return res.status(400).json({ code: "02", message: "User Last Name Field Required" })
if (!userContactNumber) return res.status(400).json({ code: "02", message: "User Contact Number Field Required" })
const existingUser = await User.findOne({ email })
if (existingUser) return res.status(400).json({ code: "02", message: "User already exists" })
// if (type === "buyer") {
// if (!password) return res.status(400).json({ code: "02", message: "Password Field Required" })
// if (password !== confirmPassword) return res.status(400).json({ code: "02", message: "Passwords do not match" })
// const hashedPassword = await bcrypt.hash(password, 12)
// const userDetails = new User({
// email,
// password: hashedPassword,
// type,
// userDetails: {
// userQNumber: uuidv4(),
// userEmail: email,
// userName: `${userFirstName} ${userLastName}`,
// userContactNumber,
// userAddress: `${userAddressLine1}, ${userAddressLine2}, ${userAddressLine3}`,
// userType: type,
// }
// })
// const userResult = await userDetails.save()
// const token = jwt.sign({ email: userResult.email, id: userResult._id }, 'test', { expiresIn: "1h" })
// res.status(200).json({ code: "01", result: userResult, token })
// } else if (type === "trader") {
// const userDetails = new User({
// email,
// type,
// userDetails: {
// userQNumber: uuidv4(),
// userEmail: email,
// userName: `${userFirstName} ${userLastName}`,
// userContactNumber,
// userAddress: `${userAddressLine1}, ${userAddressLine2}, ${userAddressLine3}`,
// userType: type,
// },
// states: 2
// })
// const userResult = await userDetails.save()
// const token = jwt.sign({ email: userResult.email, id: userResult._id }, 'test', { expiresIn: "1h" })
// res.status(200).json({ code: "01", result: userResult, token })
// }
if (!password) return res.status(400).json({ code: "02", message: "Password Field Required" })
if (password !== confirmPassword) return res.status(400).json({ code: "02", message: "Passwords do not match" })
const hashedPassword = await bcrypt.hash(password, 12)
if (type === null || typeof type == "undefined") return res.status(400).json({ code: "02", message: "Type Field Required" })
if (email === null || typeof email == "undefined") return res.status(400).json({ code: "02", message: "Email Field Required" })
if (firstName === null || typeof firstName == "undefined") return res.status(400).json({ code: "02", message: "First Name Field Required" })
if (lastName === null || typeof lastName == "undefined") return res.status(400).json({ code: "02", message: "Last Name Field Required" })
if (contactNumber === null || typeof contactNumber == "undefined") return res.status(400).json({ code: "02", message: "Contact Number Field Required" })
const existingUserByEmail = await User.findOne({ email: email })
if (existingUserByEmail) return res.status(400).json({ code: "02", message: `For the Email : ${email} User already exist` })
const existingUserByContactNo = await User.findOne({ contactNumber: contactNumber })
if (existingUserByContactNo) return res.status(400).json({ code: "02", message: `For the Contact No : ${contactNumber} User already exist` })
if (password === null || typeof password == "undefined") return res.status(400).json({ code: "02", message: "Password Field Required" })
if (password !== confirmPassword) return res.status(400).json({ code: "02", message: "Password doesn't match" })
const hashPassword = await bcrypt.hash(password, 12)
const userDetails = new User({
firstName,
lastName,
email,
password: hashedPassword,
contactNumber,
type,
userDetails: {
userQNumber: uuidv4(),
userEmail: email,
userName: `${userFirstName} ${userLastName}`,
userContactNumber,
userAddress: `${userAddressLine1}, ${userAddressLine2}, ${userAddressLine3}`,
}
password: hashPassword,
})
const userResult = await userDetails.save()
......@@ -249,3 +199,4 @@ export const deleteUser = async (req, res) => {
res.json({ code: "00", "message": error.message });
}
}
import mongoose from "mongoose";
const userSchema = mongoose.Schema({
firstName: {
type: String,
required: true,
},
lastName: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true
},
contactNumber: {
type: String,
required: true,
},
password: {
type: String
type: String,
required: true,
},
type: {
type: String,
type: String, // administrator/ member
required: true
},
userDetails: {
userQNumber: {
type: String,
required: true,
unique: true
},
userEmail: {
type: String,
required: true,
},
userName: {
type: String,
required: true
},
userContactNumber: {
type: String,
required: true
},
userAddress: {
type: String
},
userType: {
type: String,
default: "N/A",
required: true
},
},
states: {
type: String,
default: "1"
},
createdAt: {
type: Date
type: Date,
default: new Date()
},
updatedAt: {
type: Date
type: Date,
default: new Date()
}
});
const User = mongoose.model("Users", userSchema);
export default User;
......@@ -20,11 +20,11 @@ app.get("/", (req, res) => {
res.json({ message: "Welcome to Server Node" });
});
//implement routes
app.use("/rest_node/user", userRoutes);
//implement routes
app.use("/rest_node/ssl", translateRoutes);
app.use("/rest_node/user", userRoutes);
const CONNECTION_URL = `mongodb+srv://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@cluster0.dmza8yi.mongodb.net/?retryWrites=true&w=majority`;
const CONNECTION_URL = `mongodb+srv://${process.env.DB_USERNAME}:${process.env.DB_PASSWORD}@researchmanagement-appl.vzhn4.mongodb.net/?retryWrites=true&w=majority`;
const PORT = process.env.PORT || 5000;
mongoose
......
# TMP-23-029
SLIIT Final Year Project
\ No newline at end of file
# TMP-23-029
SLIIT Final Year Project
\ No newline at end of file
REACT_APP_VERSION = v2.1.0
GENERATE_SOURCEMAP = false
## Backend API URL
REACT_APP_API_URL_MOCK=https://mock-data-api-nextjs.vercel.app/
REACT_APP_API_URL=http://localhost:5000/
## Google Map Key
REACT_APP_GOOGLE_MAPS_API_KEY=
## Firebase - Google Auth
REACT_APP_FIREBASE_API_KEY=
REACT_APP_FIREBASE_AUTH_DOMAIN=
REACT_APP_FIREBASE_PROJECT_ID=
REACT_APP_FIREBASE_STORAGE_BUCKET=
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=
REACT_APP_FIREBASE_APP_ID=
REACT_APP_FIREBASE_MEASUREMENT_ID=
## AWS
REACT_APP_AWS_POOL_ID=
REACT_APP_AWS_APP_CLIENT_ID=
## Auth0
REACT_APP_AUTH0_CLIENT_ID=
REACT_APP_AUTH0_DOMAIN=
\ No newline at end of file
{
"plugins": ["prettier", "@typescript-eslint"],
"extends": ["react-app", "prettier"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "./tsconfig.json"
},
"settings": {
"import/resolver": {
"node": {
"moduleDirectory": ["node_modules", "src/"]
},
"typescript": {
"alwaysTryTypes": true
}
}
},
"rules": {
"react/jsx-filename-extension": "off",
"no-param-reassign": "off",
"react/prop-types": "off",
"react/require-default-props": "off",
"react/no-array-index-key": "off",
"react/react-in-jsx-scope": "off",
"react/jsx-props-no-spreading": "off",
"import/order": "off",
"no-console": "off",
"no-shadow": "off",
"@typescript-eslint/naming-convention": "off",
"@typescript-eslint/no-shadow": "off",
"import/no-cycle": "off",
"import/no-extraneous-dependencies": "off",
"jsx-a11y/label-has-associated-control": "off",
"jsx-a11y/no-autofocus": "off",
"no-restricted-imports": [
"error",
{
"patterns": ["@mui/*/*/*", "!@mui/material/test-utils/*"]
}
],
"@typescript-eslint/no-unused-vars": [
"error",
{
"vars": "all",
"args": "none"
}
],
"prettier/prettier": [
"warn",
{
"bracketSpacing": true,
"printWidth": 140,
"singleQuote": true,
"trailingComma": "none",
"tabWidth": 2,
"useTabs": false,
"endOfLine": "auto"
}
]
}
}
......@@ -5,7 +5,6 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
......@@ -37,13 +36,14 @@ bower_components
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
build
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
......@@ -54,9 +54,6 @@ web_modules/
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
......@@ -72,20 +69,15 @@ web_modules/
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# dotenv environment variables file
# .env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
......@@ -93,20 +85,13 @@ dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
......@@ -119,12 +104,5 @@ dist
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
\ No newline at end of file
# wincompare file
.bak
{
"bracketSpacing": true,
"printWidth": 140,
"singleQuote": true,
"trailingComma": "none",
"tabWidth": 2,
"useTabs": false
}
{
"cSpell.words": [
"Appstore",
"CARB",
"Formik",
"nutritions"
]
}
\ No newline at end of file
# FitsPro ERP Platform
Welcome to the FitsPro ERP Platform repository! This project aims to revolutionize the meal delivery experience through a robust and efficient backend system for the FitsPro dieting app. By seamlessly integrating meal planning and delivery coordination, we strive to enhance customer satisfaction and streamline business operations.
## Getting started
#### update packages
```
source-folder > yarn
```
#### Start the project
```
source-folder > yarn start
```
## Environments (Demonstration)
- [Development_Env](https://fit-pro-erp.netlify.app/)
- [Production_Env](https://fit-pro-erp.netlify.app/)
## Technology stack
- [Material UI V5](https://mui.com/core/)
- Built with React Hooks API.
- Redux & React context API for state management.
- Redux toolkit.
- React Router for navigation routing.
- Support for react-script.
- Code splitting.
- CSS-in-JS.
const webpack = require('webpack');
const WorkBoxPlugin = require('workbox-webpack-plugin');
module.exports = function override(config) {
config.resolve.fallback = {
process: require.resolve('process/browser'),
// zlib: require.resolve('browserify-zlib'),
stream: require.resolve('stream-browserify'),
crypto: require.resolve('crypto-browserify'),
util: require.resolve('util'),
buffer: require.resolve('buffer')
// asset: require.resolve('assert')
};
// https://stackoverflow.com/questions/69135310/workaround-for-cache-size-limit-in-create-react-app-pwa-service-worker
config.plugins.forEach((plugin) => {
if (plugin instanceof WorkBoxPlugin.InjectManifest) {
plugin.config.maximumFileSizeToCacheInBytes = 50 * 1024 * 1024;
}
});
config.plugins = [
...config.plugins,
new webpack.ProvidePlugin({
process: 'process/browser.js',
Buffer: ['buffer', 'Buffer']
})
];
return config;
};
{
"name": "sign-connect-plus",
"version": "2.1.0",
"private": true,
"dependencies": {
"@ant-design/colors": "^7.0.0",
"@ant-design/icons": "^5.0.1",
"@auth0/auth0-spa-js": "^2.0.4",
"@date-io/date-fns": "^2.16.0",
"@date-io/dayjs": "^2.16.0",
"@date-io/luxon": "^2.16.1",
"@date-io/moment": "^2.16.1",
"@emotion/cache": "^11.10.7",
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
"@fullcalendar/common": "^5.11.4",
"@fullcalendar/core": "^6.1.5",
"@fullcalendar/daygrid": "^6.1.5",
"@fullcalendar/interaction": "^6.1.5",
"@fullcalendar/list": "^6.1.5",
"@fullcalendar/react": "^6.1.5",
"@fullcalendar/timegrid": "^6.1.5",
"@fullcalendar/timeline": "^6.1.5",
"@hello-pangea/dnd": "^16.2.0",
"@mui/base": "^5.0.0-alpha.126",
"@mui/lab": "^5.0.0-alpha.127",
"@mui/material": "^5.12.1",
"@mui/system": "^5.12.1",
"@mui/x-date-pickers": "^6.2.0",
"@mui/x-date-pickers-pro": "^6.2.0",
"@react-pdf/renderer": "^3.1.9",
"@reduxjs/toolkit": "^1.9.5",
"@svgr/webpack": "^7.0.0",
"@testing-library/react": "^14.0.0",
"amazon-cognito-identity-js": "^6.2.0",
"apexcharts": "^3.40.0",
"autosuggest-highlight": "^3.3.4",
"axios": "^1.3.5",
"axios-mock-adapter": "^1.21.4",
"buffer": "^6.0.3",
"chance": "^1.1.11",
"crypto-browserify": "^3.12.0",
"crypto-js": "^4.1.1",
"currency.js": "^2.0.4",
"date-fns": "^2.29.3",
"draft-js": "^0.11.7",
"emoji-picker-react": "^4.4.8",
"firebase": "^9.19.1",
"formik": "^2.2.9",
"framer-motion": "^10.12.2",
"history": "^5.3.0",
"immutability-helper": "^3.1.1",
"jsonwebtoken": "^9.0.0",
"jwt-decode": "^3.1.2",
"lodash": "^4.17.21",
"match-sorter": "^6.3.1",
"notistack": "^3.0.1",
"process": "^0.11.10",
"react": "^18.2.0",
"react-apexcharts": "^1.4.0",
"react-app-rewired": "^2.2.1",
"react-compare-slider": "^2.2.0",
"react-copy-to-clipboard": "^5.1.0",
"react-csv": "^2.2.2",
"react-device-detect": "^2.2.3",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dnd-scrolling": "^1.3.3",
"react-dnd-touch-backend": "^16.0.1",
"react-dom": "^18.2.0",
"react-draft-wysiwyg": "^1.15.0",
"react-draggable": "^4.4.5",
"react-dropzone": "^14.2.3",
"react-fast-marquee": "^1.3.5",
"react-google-recaptcha": "^2.1.0",
"react-infinite-scroll-component": "^6.1.0",
"react-intersection-observer": "^9.4.3",
"react-intl": "^6.4.0",
"react-number-format": "^5.1.4",
"react-organizational-chart": "^2.2.1",
"react-quill": "^2.0.0",
"react-redux": "^8.0.5",
"react-router": "^6.10.0",
"react-router-dom": "^6.10.0",
"react-scripts": "^5.0.1",
"react-slick": "^0.29.0",
"react-spring": "9.7.1",
"react-swipeable-views": "^0.14.0",
"react-swipeable-views-utils": "^0.14.0",
"react-syntax-highlighter": "^15.5.0",
"react-table": "^7.8.0",
"react-table-sticky": "^1.1.3",
"react-timer-hook": "^3.0.5",
"react-to-print": "^2.14.12",
"react-window": "^1.8.9",
"react-zoom-pan-pinch": "^3.0.7",
"react18-input-otp": "^1.1.3",
"redux-persist": "^6.0.0",
"simplebar": "^6.2.5",
"simplebar-react": "^3.2.4",
"slick-carousel": "^1.8.1",
"stream-browserify": "^3.0.0",
"stylis-plugin-rtl": "^2.1.1",
"use-places-autocomplete": "^4.0.0",
"util": "^0.12.5",
"uuid": "^9.0.0",
"web-vitals": "^3.3.1",
"yup": "^1.1.1"
},
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"babel": {
"presets": [
"@babel/preset-react"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@babel/core": "^7.21.4",
"@babel/eslint-parser": "^7.21.3",
"@testing-library/jest-dom": "^5.16.5",
"@types/autosuggest-highlight": "^3.2.0",
"@types/chance": "^1.1.3",
"@types/jest": "^29.5.0",
"@types/jsonwebtoken": "^9.0.1",
"@types/lodash": "^4.14.194",
"@types/node": "^18.15.11",
"@types/react": "^18.0.37",
"@types/react-copy-to-clipboard": "^5.0.4",
"@types/react-csv": "^1.1.3",
"@types/react-dom": "^18.0.11",
"@types/react-draft-wysiwyg": "^1.13.4",
"@types/react-google-recaptcha": "^2.1.5",
"@types/react-slick": "^0.23.10",
"@types/react-swipeable-views": "^0.13.1",
"@types/react-swipeable-views-utils": "^0.13.4",
"@types/react-syntax-highlighter": "^15.5.6",
"@types/react-table": "^7.7.14",
"@types/react-window": "^1.8.5",
"@types/uuid": "^9.0.1",
"@types/webpack-env": "^1.18.0",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"eslint": "^8.38.0",
"eslint-config-prettier": "^8.8.0",
"eslint-config-react-app": "^7.0.1",
"eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"immutable": "^4.3.0",
"prettier": "^2.8.7",
"prettier-eslint-cli": "^7.1.0",
"react-error-overlay": "6.0.11",
"typescript": "^5.0.4"
}
}
\ No newline at end of file
<svg width="36" height="35" viewBox="0 0 36 35" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.64931 15.8644L6.96164 13.552L6.96405 13.5496H11.3143L9.58336 15.2806L9.13646 15.7275L7.36391 17.5L7.58344 17.7201L17.5137 27.6498L27.6634 17.5L25.8903 15.7275L25.7654 15.602L23.7131 13.5496H28.0633L28.0657 13.552L29.8781 15.3644L32.0137 17.5L17.5137 32L3.01367 17.5L4.64931 15.8644ZM17.5137 3L25.8921 11.3784H21.5419L17.5137 7.35024L13.4855 11.3784H9.13525L17.5137 3Z" fill="#096DD9"/>
<path d="M7.36453 17.4999L9.13708 15.7274L9.58398 15.2805L7.85366 13.5496H6.96467L6.96226 13.552L4.64993 15.8643L6.86938 18.0729L7.36453 17.4999Z" fill="url(#paint0_linear_112117_33940)"/>
<path d="M25.8911 15.7274L27.6643 17.4999L27.4888 17.6754L27.4894 17.676L29.8789 15.3643L28.0666 13.552L28.0641 13.5496H27.888L25.7663 15.6019L25.8911 15.7274Z" fill="url(#paint1_linear_112117_33940)"/>
<path d="M6.95946 13.5496L6.96187 13.552L9.13669 15.7274L17.5139 24.104L28.0684 13.5496H6.95946Z" fill="#1890FF"/>
<defs>
<linearGradient id="paint0_linear_112117_33940" x1="8.63954" y1="14.0887" x2="5.58137" y2="17.1469" gradientUnits="userSpaceOnUse">
<stop stop-color="#023B95"/>
<stop offset="0.9637" stop-color="#096CD9" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_112117_33940" x1="26.282" y1="14.1278" x2="28.7548" y2="16.9379" gradientUnits="userSpaceOnUse">
<stop stop-color="#023B95"/>
<stop offset="1" stop-color="#096DD9" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="apple-touch-icon" sizes="180x180" href="/resources/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/resources/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/resources/favicon-16x16.png">
<link rel="manifest" href="/resources/site.webmanifest">
<link rel="mask-icon" href="/resources/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#000000" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Web site created using create-react-app" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>SignConnect Plus</title>
<link rel="preconnect" href="https://fonts.gstatic.com" />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Poppins:wght@400;500;600;700&family=Roboto:wght@400;500;700&display=swap&family=Public+Sans:wght@400;500;600;700"
rel="stylesheet" />
<!-- this is to resolve issue in old safari browser in tablet -->
<script src="https://cdn.jsdelivr.net/npm/resize-observer-polyfill@1.5.1/dist/ResizeObserver.min.js"></script>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#da532c</TileColor>
</tile>
</msapplication>
</browserconfig>
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="261.000000pt" height="261.000000pt" viewBox="0 0 261.000000 261.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,261.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M744 2173 c-32 -36 -82 -92 -110 -123 -28 -31 -70 -88 -93 -126 -23
-38 -57 -90 -76 -116 -35 -50 -67 -129 -110 -269 -35 -113 -80 -188 -131 -216
-21 -12 -45 -27 -51 -33 -18 -15 -16 -197 2 -285 14 -66 77 -215 90 -215 4 0
40 16 81 35 99 47 161 59 249 50 130 -15 153 -12 280 37 66 25 153 53 193 63
88 21 115 41 137 103 10 26 29 76 43 110 19 48 23 68 15 80 -5 10 -7 26 -2 37
4 11 8 55 8 97 l1 77 -62 52 c-34 28 -86 67 -115 87 l-53 35 -89 -6 c-48 -3
-105 -13 -126 -21 -70 -30 -62 -12 27 55 98 74 102 76 192 82 79 6 79 6 121
-29 23 -19 57 -39 74 -45 28 -10 37 -9 59 8 41 31 40 57 -5 84 -21 13 -54 38
-74 56 -49 44 -77 53 -172 53 -80 0 -146 -15 -242 -54 l-40 -16 35 27 c19 16
53 45 75 65 45 40 166 90 249 102 75 12 122 72 81 106 -11 9 -36 9 -118 -3
-125 -18 -236 -67 -346 -150 -41 -31 -77 -55 -79 -52 -6 5 -9 0 95 130 44 55
83 110 87 121 8 25 -12 74 -29 74 -7 0 -38 -30 -71 -67z m290 -698 c18 -14 47
-30 64 -36 23 -8 34 -20 43 -47 6 -20 20 -53 31 -73 l20 -35 -39 -40 c-21 -21
-46 -54 -55 -72 -18 -33 -19 -33 -70 -27 -33 4 -73 1 -105 -8 l-52 -14 -31 43
c-17 24 -44 53 -60 64 -34 24 -38 55 -18 122 15 49 55 83 121 103 29 9 63 22
77 30 34 19 36 19 74 -10z"/>
<path d="M2303 1693 c-36 -20 -94 -41 -139 -50 -67 -13 -89 -14 -160 -3 l-83
13 -123 -43 c-68 -23 -163 -54 -213 -67 -49 -14 -100 -34 -111 -45 -22 -19
-104 -211 -104 -241 0 -9 4 -18 10 -22 6 -4 6 -15 0 -31 -6 -14 -10 -58 -10
-99 l0 -73 53 -45 c28 -25 79 -63 111 -86 51 -35 67 -41 111 -41 65 0 149 15
187 34 68 34 8 -27 -96 -99 -53 -37 -65 -40 -140 -45 l-81 -5 -45 37 c-59 49
-96 57 -133 28 -37 -29 -34 -54 11 -82 20 -12 53 -37 73 -55 49 -44 77 -53
169 -53 80 0 179 24 252 61 56 28 56 23 2 -17 -27 -21 -65 -51 -84 -69 -35
-32 -174 -87 -251 -100 -48 -7 -89 -40 -89 -70 0 -40 27 -46 134 -30 137 20
256 76 370 172 39 32 56 40 56 26 0 -5 -39 -55 -86 -113 -47 -58 -89 -116 -95
-129 -12 -29 7 -84 27 -79 23 5 245 262 271 313 14 28 41 68 58 90 41 50 74
124 119 267 44 140 87 215 141 244 22 13 46 28 53 34 17 16 16 183 -4 278 -15
76 -66 204 -88 221 -7 5 -35 -5 -73 -26z m-507 -343 c14 -21 41 -51 60 -65 37
-29 42 -52 23 -119 -13 -48 -56 -91 -107 -106 -20 -6 -57 -20 -82 -31 l-46
-21 -54 36 c-30 20 -60 36 -66 36 -7 0 -18 17 -24 38 -7 20 -22 54 -33 75
l-21 37 21 15 c11 8 37 39 57 70 l37 55 77 1 c42 0 86 4 97 9 31 13 33 12 61
-30z"/>
</g>
</svg>
{
"name": "",
"short_name": "",
"icons": [
{
"src": "/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
import { useEffect, useState } from 'react';
// project import
import Routes from 'routes';
import ThemeCustomization from 'themes';
import Loader from 'components/Loader';
import Locales from 'components/Locales';
import RTLLayout from 'components/RTLLayout';
import ScrollTop from 'components/ScrollTop';
import Snackbar from 'components/@extended/Snackbar';
import Notistack from 'components/third-party/Notistack';
import { dispatch } from 'store';
import { fetchMenu } from 'store/reducers/menu';
// auth-provider
import { JWTProvider as AuthProvider } from 'contexts/JWTContext';
// import { FirebaseProvider as AuthProvider } from 'contexts/FirebaseContext';
// import { AWSCognitoProvider as AuthProvider } from 'contexts/AWSCognitoContext';
// import { Auth0Provider as AuthProvider } from 'contexts/Auth0Context';
// ==============================|| APP - THEME, ROUTER, LOCAL ||============================== //
const App = () => {
const [loading, setLoading] = useState<boolean>(true);
useEffect(() => {
// fetch dashboard menu from API
dispatch(fetchMenu()).then(() => {
setLoading(false);
});
}, []);
if (loading) return <Loader />;
return (
<ThemeCustomization>
<RTLLayout>
<Locales>
<ScrollTop>
<AuthProvider>
<>
<Notistack>
<Routes />
<Snackbar />
</Notistack>
</>
</AuthProvider>
</ScrollTop>
</Locales>
</RTLLayout>
</ThemeCustomization>
);
};
export default App;
<svg width="40" height="40" viewBox="0 0 40 40" fill="white" xmlns="http://www.w3.org/2000/svg">
<circle cx="17.9412" cy="22.0589" r="17.9412" fill="#1890FF" />
<circle cx="18.235" cy="22.3526" r="12.6471" fill="white" />
<circle cx="18.0877" cy="21.9114" r="5.44118" fill="#1890FF" />
<path
d="M39.9663 3.78402C39.8869 3.54473 39.6788 3.37104 39.4292 3.33564L37.0103 2.99007L36.6648 0.571186C36.6291 0.321481 36.4554 0.113377 36.216 0.0336579C35.9767 -0.0460613 35.7129 0.0162928 35.5346 0.194717L30.9569 4.77241C30.7786 4.9508 30.7164 5.2146 30.7963 5.45383L31.4983 7.5601L17.5568 21.5018C17.3837 21.669 17.3143 21.9165 17.3752 22.1493C17.4362 22.3821 17.618 22.5639 17.8508 22.6249C18.0836 22.6858 18.3311 22.6164 18.4983 22.4433L32.4399 8.50187L34.5465 9.20407C34.7858 9.28382 35.0496 9.22152 35.2279 9.04314L39.8057 4.46545C39.9839 4.28707 40.0462 4.02326 39.9663 3.78402Z"
fill="#52C41A"
/>
</svg>
\ No newline at end of file
// material-ui
import { useTheme } from '@mui/material/styles';
import { Box } from '@mui/material';
// types
import { ThemeDirection, ThemeMode } from 'types/config';
// ==============================|| AUTH BLUR BACK SVG ||============================== //
const AuthBackground = () => {
const theme = useTheme();
return (
<Box
sx={{
position: 'absolute',
filter: 'blur(18px)',
zIndex: -1,
bottom: 0,
transform: theme.direction === ThemeDirection.RTL ? 'rotate(180deg)' : 'inherit'
}}
>
<svg width="100%" height="calc(100vh - 175px)" viewBox="0 0 405 809" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M-358.39 358.707L-293.914 294.23L-293.846 294.163H-172.545L-220.81 342.428L-233.272 354.889L-282.697 404.314L-276.575 410.453L0.316589 687.328L283.33 404.314L233.888 354.889L230.407 351.391L173.178 294.163H294.48L294.547 294.23L345.082 344.765L404.631 404.314L0.316589 808.629L-403.998 404.314L-358.39 358.707ZM0.316589 0L233.938 233.622H112.637L0.316589 121.301L-112.004 233.622H-233.305L0.316589 0Z"
fill={theme.palette.primary.light}
/>
<path
d="M-516.39 358.707L-451.914 294.23L-451.846 294.163H-330.545L-378.81 342.428L-391.272 354.889L-440.697 404.314L-434.575 410.453L-157.683 687.328L125.33 404.314L75.8879 354.889L72.4068 351.391L15.1785 294.163H136.48L136.547 294.23L187.082 344.765L246.631 404.314L-157.683 808.629L-561.998 404.314L-516.39 358.707ZM-157.683 0L75.9383 233.622H-45.3627L-157.683 121.301L-270.004 233.622H-391.305L-157.683 0Z"
fill={theme.palette.success.light}
opacity="0.6"
/>
<path
d="M-647.386 358.707L-582.91 294.23L-582.842 294.163H-461.541L-509.806 342.428L-522.268 354.889L-571.693 404.314L-565.571 410.453L-288.68 687.328L-5.66624 404.314L-55.1082 354.889L-58.5893 351.391L-115.818 294.163H5.48342L5.5507 294.23L56.0858 344.765L115.635 404.314L-288.68 808.629L-692.994 404.314L-647.386 358.707ZM-288.68 0L-55.0578 233.622H-176.359L-288.68 121.301L-401 233.622H-522.301L-288.68 0Z"
fill={theme.palette.error.lighter}
opacity={theme.palette.mode === ThemeMode.DARK ? '0.9' : '1'}
/>
</svg>
</Box>
);
};
export default AuthBackground;
<svg width="86" height="86" viewBox="0 0 86 86" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111494_19199" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="84" height="84">
<rect x="1" y="1" width="84" height="84" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111494_19199)">
<rect x="0.505859" y="1" width="84.9882" height="84" rx="2" fill="white"/>
<rect x="1" y="1" width="86.9647" height="6" fill="#BFBFBF"/>
<circle cx="3.97656" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="7.97656" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="11.9766" cy="4" r="1" fill="#FAFAFA"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M37.5645 14C37.5645 13.4477 38.0122 13 38.5645 13H72.5645C73.1167 13 73.5645 13.4477 73.5645 14V18C73.5645 18.5523 73.1167 19 72.5645 19H38.5645C38.0122 19 37.5645 18.5523 37.5645 18V14Z" fill="#595959"/>
<rect width="22.7294" height="78" transform="translate(1 7)" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.5 16C8.433 16 10 14.433 10 12.5C10 10.567 8.433 9 6.5 9C4.567 9 3 10.567 3 12.5C3 14.433 4.567 16 6.5 16Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 11.5C12 10.9477 12.4477 10.5 13 10.5H21C21.5523 10.5 22 10.9477 22 11.5V13.5C22 14.0523 21.5523 14.5 21 14.5H13C12.4477 14.5 12 14.0523 12 13.5V11.5Z" fill="#FAFAFA"/>
<rect width="18.7294" height="61" transform="matrix(-1 0 0 1 21.7295 22)" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 23C21.7295 22.4477 21.2818 22 20.7295 22H4.00008C3.44779 22 3.00008 22.4477 3.00008 23C3.00008 23.5523 3.44779 24 4.00008 24H20.7295C21.2818 24 21.7295 23.5523 21.7295 23Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 28C21.7295 27.4477 21.2818 27 20.7295 27H4.00008C3.44779 27 3.00008 27.4477 3.00008 28C3.00008 28.5523 3.44779 29 4.00008 29H20.7295C21.2818 29 21.7295 28.5523 21.7295 28Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 33C21.7295 32.4477 21.2818 32 20.7295 32H4.00008C3.44779 32 3.00008 32.4477 3.00008 33C3.00008 33.5523 3.44779 34 4.00008 34H20.7295C21.2818 34 21.7295 33.5523 21.7295 33Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 38C21.7295 37.4477 21.2818 37 20.7295 37H4.00008C3.44779 37 3.00008 37.4477 3.00008 38C3.00008 38.5523 3.44779 39 4.00008 39H20.7295C21.2818 39 21.7295 38.5523 21.7295 38Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 43C21.7295 42.4477 21.2818 42 20.7295 42H4.00008C3.44779 42 3.00008 42.4477 3.00008 43C3.00008 43.5523 3.44779 44 4.00008 44H20.7295C21.2818 44 21.7295 43.5523 21.7295 43Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 48C21.7295 47.4477 21.2818 47 20.7295 47H4.00008C3.44779 47 3.00008 47.4477 3.00008 48C3.00008 48.5523 3.44779 49 4.00008 49H20.7295C21.2818 49 21.7295 48.5523 21.7295 48Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 53C21.7295 52.4477 21.2818 52 20.7295 52H4.00008C3.44779 52 3.00008 52.4477 3.00008 53C3.00008 53.5523 3.44779 54 4.00008 54H20.7295C21.2818 54 21.7295 53.5523 21.7295 53Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 58C21.7295 57.4477 21.2818 57 20.7295 57H4.00008C3.44779 57 3.00008 57.4477 3.00008 58C3.00008 58.5523 3.44779 59 4.00008 59H20.7295C21.2818 59 21.7295 58.5523 21.7295 58Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M37.5645 77C37.5645 76.4477 38.0122 76 38.5645 76H72.5645C73.1167 76 73.5645 76.4477 73.5645 77V79C73.5645 79.5523 73.1167 80 72.5645 80H38.5645C38.0122 80 37.5645 79.5523 37.5645 79V77Z" fill="#595959"/>
<rect x="0.5" y="0.5" width="85" height="85" rx="2.5" stroke="#BFBFBF" stroke-linejoin="round"/>
</svg>
<svg width="86" height="86" viewBox="0 0 86 86" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111470_19126" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="84" height="84">
<rect x="1" y="1" width="84" height="84" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111470_19126)">
<rect x="1" y="1" width="84" height="84" rx="2" fill="#1F1F1F"/>
<rect x="1" y="1" width="86.9647" height="6" fill="black"/>
<circle cx="3.97656" cy="4" r="1" fill="#595959"/>
<circle cx="7.97656" cy="4" r="1" fill="#595959"/>
<circle cx="11.9766" cy="4" r="1" fill="#595959"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.6943 11C26.6943 10.4477 27.1421 10 27.6943 10H81.0355C81.5878 10 82.0355 10.4477 82.0355 11V15C82.0355 15.5523 81.5878 16 81.0355 16H27.6943C27.1421 16 26.6943 15.5523 26.6943 15V11Z" fill="#434343"/>
<path d="M1 7H23.7294V85H3C1.89543 85 1 84.1046 1 83V7Z" fill="#434343"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.5 16C8.433 16 10 14.433 10 12.5C10 10.567 8.433 9 6.5 9C4.567 9 3 10.567 3 12.5C3 14.433 4.567 16 6.5 16Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 12C12 11.4477 12.4477 11 13 11H21C21.5523 11 22 11.4477 22 12V13C22 13.5523 21.5523 14 21 14H13C12.4477 14 12 13.5523 12 13V12Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 23C21.7295 22.4477 21.2818 22 20.7295 22H4.00008C3.44779 22 3.00008 22.4477 3.00008 23V23C3.00008 23.5523 3.44779 24 4.00008 24H20.7295C21.2818 24 21.7295 23.5523 21.7295 23V23Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 28C21.7295 27.4477 21.2818 27 20.7295 27H4.00008C3.44779 27 3.00008 27.4477 3.00008 28V28C3.00008 28.5523 3.44779 29 4.00008 29H20.7295C21.2818 29 21.7295 28.5523 21.7295 28V28Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 33C21.7295 32.4477 21.2818 32 20.7295 32H4.00008C3.44779 32 3.00008 32.4477 3.00008 33V33C3.00008 33.5523 3.44779 34 4.00008 34H20.7295C21.2818 34 21.7295 33.5523 21.7295 33V33Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 38C21.7295 37.4477 21.2818 37 20.7295 37H4.00008C3.44779 37 3.00008 37.4477 3.00008 38V38C3.00008 38.5523 3.44779 39 4.00008 39H20.7295C21.2818 39 21.7295 38.5523 21.7295 38V38Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 43C21.7295 42.4477 21.2818 42 20.7295 42H4.00008C3.44779 42 3.00008 42.4477 3.00008 43V43C3.00008 43.5523 3.44779 44 4.00008 44H20.7295C21.2818 44 21.7295 43.5523 21.7295 43V43Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 48C21.7295 47.4477 21.2818 47 20.7295 47H4.00008C3.44779 47 3.00008 47.4477 3.00008 48V48C3.00008 48.5523 3.44779 49 4.00008 49H20.7295C21.2818 49 21.7295 48.5523 21.7295 48V48Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 53C21.7295 52.4477 21.2818 52 20.7295 52H4.00008C3.44779 52 3.00008 52.4477 3.00008 53V53C3.00008 53.5523 3.44779 54 4.00008 54H20.7295C21.2818 54 21.7295 53.5523 21.7295 53V53Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M21.7295 58C21.7295 57.4477 21.2818 57 20.7295 57H4.00008C3.44779 57 3.00008 57.4477 3.00008 58V58C3.00008 58.5523 3.44779 59 4.00008 59H20.7295C21.2818 59 21.7295 58.5523 21.7295 58V58Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.6943 79C26.6943 78.4477 27.1421 78 27.6943 78H81.0355C81.5878 78 82.0355 78.4477 82.0355 79V81C82.0355 81.5523 81.5878 82 81.0355 82H27.6943C27.1421 82 26.6943 81.5523 26.6943 81V79Z" fill="#434343"/>
<rect x="0.5" y="0.5" width="85" height="85" rx="2.5" stroke="black" stroke-linejoin="round"/>
</svg>
<svg width="87" height="86" viewBox="0 0 87 86" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111470_19003" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="85" height="84">
<rect x="1.3335" y="1" width="84" height="84" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111470_19003)">
<rect x="1.3335" y="1" width="84" height="84" rx="2" fill="white"/>
<rect x="1.3335" y="1" width="86.9647" height="6" fill="#BFBFBF"/>
<circle cx="4.31006" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="8.31006" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="12.3101" cy="4" r="1" fill="#FAFAFA"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.2046 10C26.2046 9.44772 26.6523 9 27.2046 9H82.5222C83.0745 9 83.5222 9.44772 83.5222 10V15C83.5222 15.5523 83.0745 16 82.5222 16H27.2046C26.6523 16 26.2046 15.5523 26.2046 15V10Z" fill="#D9D9D9"/>
<path d="M1.3335 7H24.0629V85H3.33349C2.22893 85 1.3335 84.1046 1.3335 83V7Z" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.8335 16C8.76649 16 10.3335 14.433 10.3335 12.5C10.3335 10.567 8.76649 9 6.8335 9C4.9005 9 3.3335 10.567 3.3335 12.5C3.3335 14.433 4.9005 16 6.8335 16Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3335 11.5C12.3335 10.9477 12.7812 10.5 13.3335 10.5H21.3335C21.8858 10.5 22.3335 10.9477 22.3335 11.5V13.5C22.3335 14.0523 21.8858 14.5 21.3335 14.5H13.3335C12.7812 14.5 12.3335 14.0523 12.3335 13.5V11.5Z" fill="#FAFAFA"/>
<rect width="18.7294" height="61" transform="matrix(-1 0 0 1 22.063 22)" fill="#D9D9D9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 23C22.063 22.4477 21.6153 22 21.063 22H4.33358C3.78129 22 3.33358 22.4477 3.33358 23V23C3.33358 23.5523 3.78129 24 4.33358 24H21.063C21.6153 24 22.063 23.5523 22.063 23V23Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 28C22.063 27.4477 21.6153 27 21.063 27H4.33358C3.78129 27 3.33358 27.4477 3.33358 28V28C3.33358 28.5523 3.78129 29 4.33358 29H21.063C21.6153 29 22.063 28.5523 22.063 28V28Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 33C22.063 32.4477 21.6153 32 21.063 32H4.33358C3.78129 32 3.33358 32.4477 3.33358 33V33C3.33358 33.5523 3.78129 34 4.33358 34H21.063C21.6153 34 22.063 33.5523 22.063 33V33Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 38C22.063 37.4477 21.6153 37 21.063 37H4.33358C3.78129 37 3.33358 37.4477 3.33358 38V38C3.33358 38.5523 3.78129 39 4.33358 39H21.063C21.6153 39 22.063 38.5523 22.063 38V38Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 43C22.063 42.4477 21.6153 42 21.063 42H4.33358C3.78129 42 3.33358 42.4477 3.33358 43V43C3.33358 43.5523 3.78129 44 4.33358 44H21.063C21.6153 44 22.063 43.5523 22.063 43V43Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 48C22.063 47.4477 21.6153 47 21.063 47H4.33358C3.78129 47 3.33358 47.4477 3.33358 48V48C3.33358 48.5523 3.78129 49 4.33358 49H21.063C21.6153 49 22.063 48.5523 22.063 48V48Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 53C22.063 52.4477 21.6153 52 21.063 52H4.33358C3.78129 52 3.33358 52.4477 3.33358 53V53C3.33358 53.5523 3.78129 54 4.33358 54H21.063C21.6153 54 22.063 53.5523 22.063 53V53Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.063 58C22.063 57.4477 21.6153 57 21.063 57H4.33358C3.78129 57 3.33358 57.4477 3.33358 58V58C3.33358 58.5523 3.78129 59 4.33358 59H21.063C21.6153 59 22.063 58.5523 22.063 58V58Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.0005 80C26.0005 79.4477 26.4482 79 27.0005 79H82.0005C82.5528 79 83.0005 79.4477 83.0005 80V82C83.0005 82.5523 82.5528 83 82.0005 83H27.0005C26.4482 83 26.0005 82.5523 26.0005 82V80Z" fill="#BFBFBF"/>
<rect x="0.833496" y="0.5" width="85" height="85" rx="2.5" stroke="#BFBFBF" stroke-linejoin="round"/>
</svg>
<svg width="87" height="86" viewBox="0 0 87 86" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111494_19323" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="85" height="84">
<rect x="1.66699" y="1" width="84" height="84" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111494_19323)">
<rect x="1.6748" y="1" width="84.3281" height="84" rx="2" fill="white"/>
<rect x="1.66699" y="1" width="86.9647" height="6" fill="#BFBFBF"/>
<circle cx="4.64355" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="8.64355" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="12.6436" cy="4" r="1" fill="#FAFAFA"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.001 11C14.001 10.4477 14.4487 10 15.001 10H82.001C82.5533 10 83.001 10.4477 83.001 11V15C83.001 15.5523 82.5533 16 82.001 16H15.001C14.4487 16 14.001 15.5523 14.001 15V11Z" fill="#D9D9D9"/>
<path d="M1.6748 7H10.6748V85H3.6748C2.57024 85 1.6748 84.1046 1.6748 83V7Z" fill="#595959"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.1748 15C7.83166 15 9.1748 13.6569 9.1748 12C9.1748 10.3431 7.83166 9 6.1748 9C4.51795 9 3.1748 10.3431 3.1748 12C3.1748 13.6569 4.51795 15 6.1748 15Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 21H3.6748V22H8.6748V21Z" fill="#40A9FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 25H3.6748V26H8.6748V25Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 29H3.6748V30H8.6748V29Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 33H3.6748V34H8.6748V33Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 37H3.6748V38H8.6748V37Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 41H3.6748V42H8.6748V41Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 45H3.6748V46H8.6748V45Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.6748 49H3.6748V50H8.6748V49Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.0225 79C14.0225 78.4477 14.4702 78 15.0225 78H81.2881C81.8404 78 82.2881 78.4477 82.2881 79V81C82.2881 81.5523 81.8404 82 81.2881 82H15.0225C14.4702 82 14.0225 81.5523 14.0225 81V79Z" fill="#BFBFBF"/>
<rect x="1.16699" y="0.5" width="85" height="85" rx="2.5" stroke="#BFBFBF" stroke-linejoin="round"/>
</svg>
<svg width="87" height="86" viewBox="0 0 87 86" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111494_19053" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="1" y="1" width="85" height="84">
<rect x="1.66699" y="1" width="84" height="84" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111494_19053)">
<rect x="1.66699" y="1" width="84" height="84" rx="2" fill="white"/>
<rect x="1.66699" y="1" width="86.9647" height="6" fill="#BFBFBF"/>
<circle cx="4.64355" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="8.64355" cy="4" r="1" fill="#FAFAFA"/>
<circle cx="12.6436" cy="4" r="1" fill="#FAFAFA"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.46777 11C4.46777 10.4477 4.91549 10 5.46777 10H58.8089C59.3612 10 59.8089 10.4477 59.8089 11V15C59.8089 15.5523 59.3612 16 58.8089 16H5.46777C4.91549 16 4.46777 15.5523 4.46777 15V11Z" fill="#D9D9D9"/>
<path d="M62.9375 7H85.6669V85H62.9375V7Z" fill="#595959"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M64.9375 11.5C64.9375 10.9477 65.3852 10.5 65.9375 10.5H73.9375C74.4898 10.5 74.9375 10.9477 74.9375 11.5V13.5C74.9375 14.0523 74.4898 14.5 73.9375 14.5H65.9375C65.3852 14.5 64.9375 14.0523 64.9375 13.5V11.5Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M80.4375 16C82.3705 16 83.9375 14.433 83.9375 12.5C83.9375 10.567 82.3705 9 80.4375 9C78.5045 9 76.9375 10.567 76.9375 12.5C76.9375 14.433 78.5045 16 80.4375 16Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 23C83.667 22.4477 83.2193 22 82.667 22H65.9376C65.3853 22 64.9376 22.4477 64.9376 23C64.9376 23.5523 65.3853 24 65.9376 24H82.667C83.2193 24 83.667 23.5523 83.667 23Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 28C83.667 27.4477 83.2193 27 82.667 27H65.9376C65.3853 27 64.9376 27.4477 64.9376 28C64.9376 28.5523 65.3853 29 65.9376 29H82.667C83.2193 29 83.667 28.5523 83.667 28Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 33C83.667 32.4477 83.2193 32 82.667 32H65.9376C65.3853 32 64.9376 32.4477 64.9376 33C64.9376 33.5523 65.3853 34 65.9376 34H82.667C83.2193 34 83.667 33.5523 83.667 33Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 38C83.667 37.4477 83.2193 37 82.667 37H65.9376C65.3853 37 64.9376 37.4477 64.9376 38C64.9376 38.5523 65.3853 39 65.9376 39H82.667C83.2193 39 83.667 38.5523 83.667 38Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 43C83.667 42.4477 83.2193 42 82.667 42H65.9376C65.3853 42 64.9376 42.4477 64.9376 43C64.9376 43.5523 65.3853 44 65.9376 44H82.667C83.2193 44 83.667 43.5523 83.667 43Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 48C83.667 47.4477 83.2193 47 82.667 47H65.9376C65.3853 47 64.9376 47.4477 64.9376 48C64.9376 48.5523 65.3853 49 65.9376 49H82.667C83.2193 49 83.667 48.5523 83.667 48Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 53C83.667 52.4477 83.2193 52 82.667 52H65.9376C65.3853 52 64.9376 52.4477 64.9376 53C64.9376 53.5523 65.3853 54 65.9376 54H82.667C83.2193 54 83.667 53.5523 83.667 53Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M83.667 58C83.667 57.4477 83.2193 57 82.667 57H65.9376C65.3853 57 64.9376 57.4477 64.9376 58C64.9376 58.5523 65.3853 59 65.9376 59H82.667C83.2193 59 83.667 58.5523 83.667 58Z" fill="#FAFAFA"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.00098 79C5.00098 78.4477 5.44869 78 6.00098 78H59.001C59.5533 78 60.001 78.4477 60.001 79V81C60.001 81.5523 59.5533 82 59.001 82H6.00098C5.44869 82 5.00098 81.5523 5.00098 81V79Z" fill="#BFBFBF"/>
<rect x="1.16699" y="0.5" width="85" height="85" rx="2.5" stroke="#BFBFBF" stroke-linejoin="round"/>
</svg>
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<mask id="mask0_111485_195892" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="40" height="40">
<rect width="40" height="40" rx="2" fill="white"/>
</mask>
<g mask="url(#mask0_111485_195892)">
<path d="M0 0H38C39.1046 0 40 0.895431 40 2V3H0V0Z" fill="white" fill-opacity="0.6"/>
<circle cx="1.45215" cy="1.5" r="0.5" fill="white"/>
<circle cx="3.45215" cy="1.5" r="0.5" fill="white"/>
<circle cx="5.45215" cy="1.5" r="0.5" fill="white"/>
</g>
<path opacity="0.2" fill-rule="evenodd" clip-rule="evenodd" d="M12 5C12 4.44772 12.4477 4 13 4H38C38.5523 4 39 4.44772 39 5V7C39 7.55228 38.5523 8 38 8H13C12.4477 8 12 7.55228 12 7V5Z" fill="white"/>
<path d="M0 3H11V40H2C0.895431 40 0 39.1046 0 38V3Z" fill="white" fill-opacity="0.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.5 7C3.32843 7 4 6.32843 4 5.5C4 4.67157 3.32843 4 2.5 4C1.67157 4 1 4.67157 1 5.5C1 6.32843 1.67157 7 2.5 7Z" fill="white" fill-opacity="0.5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M5 5.5C5 5.22386 5.22386 5 5.5 5H9.5C9.77614 5 10 5.22386 10 5.5C10 5.77614 9.77614 6 9.5 6H5.5C5.22386 6 5 5.77614 5 5.5Z" fill="white" fill-opacity="0.5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 9.5C10 9.22386 9.77614 9 9.5 9H1.5C1.22386 9 1 9.22386 1 9.5C1 9.77614 1.22386 10 1.5 10H9.5C9.77614 10 10 9.77614 10 9.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 11.5C10 11.2239 9.77614 11 9.5 11H1.5C1.22386 11 1 11.2239 1 11.5C1 11.7761 1.22386 12 1.5 12H9.5C9.77614 12 10 11.7761 10 11.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 13.5C10 13.2239 9.77614 13 9.5 13H1.5C1.22386 13 1 13.2239 1 13.5C1 13.7761 1.22386 14 1.5 14H9.5C9.77614 14 10 13.7761 10 13.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 15.5C10 15.2239 9.77614 15 9.5 15H1.5C1.22386 15 1 15.2239 1 15.5C1 15.7761 1.22386 16 1.5 16H9.5C9.77614 16 10 15.7761 10 15.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 17.5C10 17.2239 9.77614 17 9.5 17H1.5C1.22386 17 1 17.2239 1 17.5C1 17.7761 1.22386 18 1.5 18H9.5C9.77614 18 10 17.7761 10 17.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 19.5C10 19.2239 9.77614 19 9.5 19H1.5C1.22386 19 1 19.2239 1 19.5C1 19.7761 1.22386 20 1.5 20H9.5C9.77614 20 10 19.7761 10 19.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 21.5C10 21.2239 9.77614 21 9.5 21H1.5C1.22386 21 1 21.2239 1 21.5C1 21.7761 1.22386 22 1.5 22H9.5C9.77614 22 10 21.7761 10 21.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10 23.5C10 23.2239 9.77614 23 9.5 23H1.5C1.22386 23 1 23.2239 1 23.5C1 23.7761 1.22386 24 1.5 24H9.5C9.77614 24 10 23.7761 10 23.5Z" fill="white" fill-opacity="0.2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 36.5C12 36.2239 12.2239 36 12.5 36H38.5C38.7761 36 39 36.2239 39 36.5V38.5C39 38.7761 38.7761 39 38.5 39H12.5C12.2239 39 12 38.7761 12 38.5V36.5Z" fill="white" fill-opacity="0.2"/>
</svg>
<svg width="9" height="16" viewBox="0 0 9 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.04102 0.125034C3.96989 0.125034 2.29102 1.80391 2.29102 3.87503V5.75003H0.0410156V8.75003H2.29102V15.875H5.29102V8.75003H7.91602L8.29102 5.75003H5.29102V4.25003C5.29102 3.42166 5.96264 2.75003 6.79102 2.75003H8.29102V0.245784C7.57514 0.171909 6.76139 0.123534 6.04102 0.125034Z" fill="#4267B2"/>
</svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.6871 6.53113H15.083V6.5H8.33301V9.5H12.5716C11.9533 11.2464 10.2916 12.5 8.33301 12.5C5.84788 12.5 3.83301 10.4851 3.83301 8C3.83301 5.51487 5.84788 3.5 8.33301 3.5C9.48013 3.5 10.5238 3.93275 11.3184 4.63962L13.4398 2.51825C12.1003 1.26987 10.3085 0.5 8.33301 0.5C4.19113 0.5 0.833008 3.85812 0.833008 8C0.833008 12.1419 4.19113 15.5 8.33301 15.5C12.4749 15.5 15.833 12.1419 15.833 8C15.833 7.49713 15.7813 7.00625 15.6871 6.53113Z" fill="#FFC107"/>
<path d="M1.69824 4.50913L4.16237 6.31625C4.82912 4.6655 6.44387 3.5 8.33349 3.5C9.48062 3.5 10.5242 3.93275 11.3189 4.63963L13.4402 2.51825C12.1007 1.26988 10.309 0.5 8.33349 0.5C5.45274 0.5 2.95449 2.12638 1.69824 4.50913Z" fill="#FF3D00"/>
<path d="M8.33312 15.5C10.2704 15.5 12.0306 14.7586 13.3615 13.553L11.0402 11.5888C10.2872 12.1591 9.35125 12.5 8.33312 12.5C6.38237 12.5 4.726 11.2561 4.102 9.52026L1.65625 11.4046C2.8975 13.8335 5.41825 15.5 8.33312 15.5Z" fill="#4CAF50"/>
<path d="M15.6871 6.53113H15.083V6.5H8.33301V9.5H12.5716C12.2746 10.3389 11.735 11.0622 11.039 11.5891C11.0394 11.5887 11.0398 11.5887 11.0401 11.5884L13.3614 13.5526C13.1971 13.7019 15.833 11.75 15.833 8C15.833 7.49713 15.7813 7.00625 15.6871 6.53113Z" fill="#1976D2"/>
</svg>
<svg width="16" height="13" viewBox="0 0 16 13" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.5 1.42863C14.9488 1.67278 14.3559 1.83568 13.7306 1.91276C14.3663 1.53529 14.8555 0.933256 15.085 0.222065C14.4901 0.570786 13.831 0.827014 13.1298 0.962003C12.5698 0.368303 11.7711 0 10.8862 0C9.18636 0 7.80856 1.36572 7.80856 3.04975C7.80856 3.28806 7.83647 3.52012 7.88897 3.74552C5.33168 3.6172 3.06354 2.40147 1.54616 0.55662C1.27952 1.00742 1.12953 1.53529 1.12953 2.09233C1.12953 3.15099 1.67157 4.08299 2.49817 4.63211C1.99363 4.6167 1.51866 4.47629 1.10287 4.25131C1.10287 4.26048 1.10287 4.27423 1.10287 4.28714C1.10287 5.7666 2.16403 6.99858 3.57058 7.27898C3.31352 7.34939 3.04187 7.38855 2.76189 7.38855C2.56316 7.38855 2.36943 7.36605 2.18194 7.33231C2.57358 8.54137 3.70973 9.42505 5.05587 9.4513C4.00262 10.2679 2.67607 10.757 1.23369 10.757C0.984543 10.757 0.740813 10.7429 0.5 10.7137C1.8628 11.5765 3.481 12.0823 5.21794 12.0823C10.8779 12.0823 13.9743 7.43438 13.9743 3.40222C13.9743 3.27014 13.9701 3.13849 13.9639 3.0085C14.568 2.58187 15.0888 2.04358 15.5 1.42863Z" fill="#03A9F4"/>
</svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment