├── src ├── react-app-env.d.ts ├── models │ └── responses │ │ ├── GetAllProductsModel.ts │ │ └── ProductModel.ts ├── utils │ ├── customValidations.ts │ └── axiosInterceptors.ts ├── index.css ├── store │ ├── configureStore.ts │ └── slices │ │ ├── productSlice.ts │ │ └── cartSlice.ts ├── services │ └── ProductService.ts ├── index.tsx ├── contexts │ └── AuthContext.tsx ├── components │ ├── FormikInput │ │ └── FormikInput.tsx │ ├── ProductCard │ │ └── ProductCard.tsx │ └── Navbar │ │ └── Navbar.tsx ├── App.tsx └── pages │ ├── ProductDetail │ └── ProductDetail.tsx │ ├── Login │ └── Login.tsx │ ├── Homepage │ └── Homepage.tsx │ └── AddProduct │ └── AddProduct.tsx ├── public ├── robots.txt ├── favicon.ico ├── logo192.png ├── logo512.png ├── manifest.json └── index.html ├── .gitignore ├── tsconfig.json ├── package.json ├── README.md └── .excalidraw /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/halit-kalayci-instruction/tobeto-b-react/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/halit-kalayci-instruction/tobeto-b-react/HEAD/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/halit-kalayci-instruction/tobeto-b-react/HEAD/public/logo512.png -------------------------------------------------------------------------------- /src/models/responses/GetAllProductsModel.ts: -------------------------------------------------------------------------------- 1 | import {ProductModel} from "./ProductModel"; 2 | 3 | export interface GetAllProductsModel { 4 | total: number; 5 | skip: number; 6 | limit: number; 7 | products: ProductModel[]; 8 | } 9 | -------------------------------------------------------------------------------- /src/models/responses/ProductModel.ts: -------------------------------------------------------------------------------- 1 | // CTRL + ALT + V 2 | // COMMAND + ALT + V 3 | 4 | export interface ProductModel { 5 | id: number; 6 | title: string; 7 | description: string; 8 | price: number; 9 | discountPercentage: number; 10 | rating: number; 11 | stock: number; 12 | brand: string; 13 | category: string; 14 | thumbnail: string; 15 | images: string[]; 16 | } 17 | -------------------------------------------------------------------------------- /src/utils/customValidations.ts: -------------------------------------------------------------------------------- 1 | import {AnyObject, TestContext} from "yup"; 2 | 3 | export const passwordValidator = ( 4 | value: string, 5 | context: TestContext, 6 | ) => { 7 | return ( 8 | /[a-zçğıöşü]/.test(value) && 9 | /[A-ZÇĞİÖŞÜ]/.test(value) && 10 | /[0-9]/.test(value) 11 | ); 12 | }; 13 | // redux - context api 14 | 15 | // BE Heavy 16 | // FE Heavy 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /src/store/configureStore.ts: -------------------------------------------------------------------------------- 1 | import {combineReducers, configureStore} from "@reduxjs/toolkit"; 2 | import {cartReducer} from "./slices/cartSlice"; 3 | import {productReducer} from "./slices/productSlice"; 4 | 5 | const rootReducer = combineReducers({ 6 | cart: cartReducer, 7 | product: productReducer, 8 | }); 9 | 10 | export const store = configureStore({reducer: rootReducer}); 11 | export type AppDispatch = typeof store.dispatch; 12 | -------------------------------------------------------------------------------- /src/services/ProductService.ts: -------------------------------------------------------------------------------- 1 | import {GetAllProductsModel} from "../models/responses/GetAllProductsModel"; 2 | import {ProductModel} from "../models/responses/ProductModel"; 3 | import axiosInstance from "../utils/axiosInterceptors"; 4 | 5 | class ProductService { 6 | getAll() { 7 | return axiosInstance.get("products"); 8 | } 9 | 10 | getById(id: number) { 11 | return axiosInstance.get("products/" + id); 12 | } 13 | } 14 | 15 | export default ProductService; 16 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import "bootstrap/dist/css/bootstrap.css"; 4 | import "./index.css"; 5 | import App from "./App"; 6 | import {BrowserRouter} from "react-router-dom"; 7 | import {AuthProvider} from "./contexts/AuthContext"; 8 | import {Provider} from "react-redux"; 9 | import {store} from "./store/configureStore"; 10 | 11 | const root = ReactDOM.createRoot( 12 | document.getElementById("root") as HTMLElement, 13 | ); 14 | root.render( 15 | 16 | 17 | 18 | 19 | 20 | 21 | , 22 | ); 23 | -------------------------------------------------------------------------------- /src/contexts/AuthContext.tsx: -------------------------------------------------------------------------------- 1 | import {createContext, useState} from "react"; 2 | 3 | // her state bir initial state'e sahip olmalıdır! 4 | export const AuthContext = createContext({}); // depo create 5 | 6 | // props.children => react tarafından oto. bu component tagleri arasına yazılan yapıyı taşır. 7 | export const AuthProvider = (props: any) => { 8 | const [isAuthenticated, setIsAuthenticated] = useState( 9 | localStorage.getItem("token") != null, 10 | ); 11 | 12 | return ( 13 | 14 | {props.children} 15 | 16 | ); 17 | }; // depoyu uygulamaya sağlayacak component 18 | 19 | // KALICI HAFIZA DEĞİLDİR!! 20 | -------------------------------------------------------------------------------- /src/components/FormikInput/FormikInput.tsx: -------------------------------------------------------------------------------- 1 | import {ErrorMessage, Field} from "formik"; 2 | import React from "react"; 3 | 4 | type Props = { 5 | label: string; 6 | name: string; 7 | type?: string; 8 | placeHolder?: string; 9 | }; 10 | 11 | const FormikInput = (props: Props) => { 12 | return ( 13 |
14 | 15 | 21 | 22 | {message => {message}} 23 | 24 |
25 | ); 26 | }; 27 | 28 | export default FormikInput; 29 | -------------------------------------------------------------------------------- /src/utils/axiosInterceptors.ts: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | const axiosInstance = axios.create({ 4 | baseURL: "https://dummyjson.com/", 5 | }); 6 | 7 | axiosInstance.interceptors.request.use(config => { 8 | console.log("İstek atılıyor.."); 9 | 10 | config.headers.Authorization = "MyToken"; 11 | config.headers["Accept-Language"] = "tr"; 12 | 13 | return config; 14 | }); 15 | 16 | axiosInstance.interceptors.response.use( 17 | response => { 18 | //... 19 | console.log("Cevap geldi"); 20 | 21 | return response; 22 | }, 23 | error => { 24 | // switch (error.data.error) { 25 | // case "Validation failed": 26 | // break; 27 | // case "ResourceAlreadyExists": 28 | // break; 29 | // } 30 | console.log(error); 31 | }, 32 | ); 33 | 34 | export default axiosInstance; 35 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import {ReactElement} from "react"; 2 | import {BrowserRouter, Route, Routes} from "react-router-dom"; 3 | import Homepage from "./pages/Homepage/Homepage"; 4 | import ProductDetail from "./pages/ProductDetail/ProductDetail"; 5 | import Navbar from "./components/Navbar/Navbar"; 6 | import AddProduct from "./pages/AddProduct/AddProduct"; 7 | import Login from "./pages/Login/Login"; 8 | 9 | function App(): ReactElement { 10 | return ( 11 | <> 12 | 13 | 14 | }> 15 | }> 16 | }> 17 | }> 18 | 19 | 20 | ); 21 | } 22 | 23 | export default App; 24 | -------------------------------------------------------------------------------- /src/pages/ProductDetail/ProductDetail.tsx: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import React, {useEffect} from "react"; 3 | import {useLocation, useParams} from "react-router-dom"; 4 | import {ProductModel} from "../../models/responses/ProductModel"; 5 | import ProductService from "../../services/ProductService"; 6 | 7 | type Props = {}; 8 | 9 | const ProductDetail = (props: Props) => { 10 | // const location = useLocation(); 11 | // useEffect(() => { 12 | // let query = new URLSearchParams(location.search); 13 | // console.log(query.get("id")); 14 | // }, []); 15 | const params = useParams<{id: string}>(); 16 | useEffect(() => { 17 | if (params.id) { 18 | // eğer bu değişken var ise 19 | // detay sayfasına istek at.. 20 | fetchDetails(params.id); 21 | } 22 | }, []); 23 | 24 | const fetchDetails = async (id: string) => { 25 | let service: ProductService = new ProductService(); 26 | let response = await service.getById(parseInt(id)); 27 | console.log(response); 28 | }; 29 | 30 | return
ProductDetail
; 31 | }; 32 | 33 | export default ProductDetail; 34 | // getbyid?id=1 query string 1. yol 35 | // getById/1 path variable 2. yol 36 | -------------------------------------------------------------------------------- /src/components/ProductCard/ProductCard.tsx: -------------------------------------------------------------------------------- 1 | import {Link} from "react-router-dom"; 2 | import {ProductModel} from "../../models/responses/ProductModel"; 3 | import {useDispatch} from "react-redux"; 4 | import {addToCart} from "../../store/slices/cartSlice"; 5 | 6 | type Props = { 7 | product: ProductModel; 8 | title?: string; 9 | }; 10 | 11 | // ? => Bir alanı nullable yapar 12 | // ! => Nullable alan içerisinden veri okurken null değilse kontrolü yapar. 13 | const ProductCard = (props: Props) => { 14 | const dispatch = useDispatch(); 15 | 16 | const addProductToCard = () => { 17 | dispatch(addToCart(props.product)); 18 | }; 19 | 20 | return ( 21 |
22 | ... 27 |
28 |
{props.product.title}
29 |

{props.product.description}

30 | 34 | Detail 35 | 36 | 39 | 40 |
41 |
42 | ); 43 | }; 44 | 45 | export default ProductCard; 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@reduxjs/toolkit": "^2.0.1", 7 | "@testing-library/jest-dom": "^5.17.0", 8 | "@testing-library/react": "^13.4.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "@types/jest": "^27.5.2", 11 | "@types/node": "^16.18.68", 12 | "@types/react": "^18.2.45", 13 | "@types/react-dom": "^18.2.18", 14 | "axios": "^1.6.3", 15 | "bootstrap": "^5.3.2", 16 | "formik": "^2.4.5", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "react-redux": "^9.0.4", 20 | "react-router-dom": "^6.21.1", 21 | "react-scripts": "5.0.1", 22 | "redux": "^5.0.1", 23 | "typescript": "^4.9.5", 24 | "web-vitals": "^2.1.4", 25 | "yup": "^1.3.3" 26 | }, 27 | "scripts": { 28 | "start": "react-scripts start", 29 | "build": "react-scripts build", 30 | "test": "react-scripts test", 31 | "eject": "react-scripts eject" 32 | }, 33 | "eslintConfig": { 34 | "extends": [ 35 | "react-app", 36 | "react-app/jest" 37 | ] 38 | }, 39 | "browserslist": { 40 | "production": [ 41 | ">0.2%", 42 | "not dead", 43 | "not op_mini all" 44 | ], 45 | "development": [ 46 | "last 1 chrome version", 47 | "last 1 firefox version", 48 | "last 1 safari version" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/store/slices/productSlice.ts: -------------------------------------------------------------------------------- 1 | import {createAsyncThunk, createSlice} from "@reduxjs/toolkit"; 2 | import ProductService from "../../services/ProductService"; 3 | import {ProductModel} from "../../models/responses/ProductModel"; 4 | 5 | export const fetchProducts = createAsyncThunk( 6 | "products/fetchProducts", 7 | async (args, thunkAPI) => { 8 | const state: any = thunkAPI.getState(); 9 | 10 | if ( 11 | state.product.products.length > 0 && 12 | !(new Date().getTime() - state.product.lastFetch > 60000) 13 | ) { 14 | return state.product.products; 15 | } 16 | 17 | const service: ProductService = new ProductService(); 18 | const response = await service.getAll(); 19 | return response.data.products; 20 | }, 21 | ); 22 | 23 | const productSlice = createSlice({ 24 | name: "product", 25 | initialState: { 26 | loading: "initial", 27 | products: [] as any[], 28 | lastFetch: new Date().getTime(), 29 | }, 30 | reducers: {}, 31 | extraReducers: builder => { 32 | builder.addCase(fetchProducts.pending, state => { 33 | state.loading = "loading"; 34 | }); 35 | builder.addCase(fetchProducts.fulfilled, (state, action) => { 36 | state.loading = "loaded"; 37 | state.products = action.payload; 38 | }); 39 | builder.addCase(fetchProducts.rejected, state => { 40 | state.loading = "error"; 41 | }); 42 | }, 43 | }); 44 | 45 | export const productReducer = productSlice.reducer; 46 | export const {} = productSlice.actions; 47 | -------------------------------------------------------------------------------- /src/store/slices/cartSlice.ts: -------------------------------------------------------------------------------- 1 | import {createSlice} from "@reduxjs/toolkit"; 2 | import {ProductModel} from "../../models/responses/ProductModel"; 3 | 4 | interface CartItem { 5 | product: ProductModel; 6 | quantity: number; 7 | } 8 | 9 | // [ürün1,ürün2] 10 | // [{ürün1,adet}, {ürün2,adet}] 11 | const cartSlice = createSlice({ 12 | name: "cart", 13 | initialState: { 14 | //cartItems:localStorage.getItem("cart") ? JSON.parse(localStorage.getItem("cart")!) : [], 15 | cartItems: (JSON.parse(localStorage.getItem("cart")!) || []) as CartItem[], 16 | }, 17 | reducers: { 18 | addToCart: (state, action) => { 19 | let existingItem = state.cartItems.find( 20 | (i: CartItem) => i.product.id === action.payload.id, 21 | ); 22 | 23 | if (existingItem) { 24 | // sepette bu üründen var 25 | existingItem.quantity++; 26 | } else { 27 | state.cartItems.push({product: action.payload, quantity: 1}); 28 | } 29 | localStorage.setItem("cart", JSON.stringify(state.cartItems)); 30 | }, 31 | removeFromCart: (state, action) => { 32 | state.cartItems = state.cartItems.filter( 33 | (i: any) => i.id !== action.payload.id, 34 | ); 35 | localStorage.setItem("cart", JSON.stringify(state.cartItems)); 36 | }, 37 | clearCart: state => { 38 | state.cartItems = []; 39 | localStorage.setItem("cart", JSON.stringify(state.cartItems)); 40 | }, 41 | }, 42 | }); 43 | export const cartReducer = cartSlice.reducer; 44 | export const {addToCart, removeFromCart, clearCart} = cartSlice.actions; 45 | -------------------------------------------------------------------------------- /src/pages/Login/Login.tsx: -------------------------------------------------------------------------------- 1 | import React, {useContext} from "react"; 2 | import {AuthContext} from "../../contexts/AuthContext"; 3 | import {useNavigate} from "react-router-dom"; 4 | 5 | type Props = {}; 6 | 7 | const Login = (props: Props) => { 8 | const authContext: any = useContext(AuthContext); 9 | const navigate = useNavigate(); 10 | 11 | return ( 12 |
13 |
14 |

Please sign in

15 | 16 |
17 | 23 | 24 |
25 |
26 | 32 | 33 |
34 | 35 |
36 | 42 | 43 |
44 | 55 |

© 2017–2023

56 |
57 |
58 | ); 59 | }; 60 | 61 | export default Login; 62 | -------------------------------------------------------------------------------- /src/pages/Homepage/Homepage.tsx: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | import {useEffect, useState} from "react"; 3 | import {GetAllProductsModel} from "../../models/responses/GetAllProductsModel"; 4 | import {ProductModel} from "../../models/responses/ProductModel"; 5 | import ProductCard from "../../components/ProductCard/ProductCard"; 6 | import ProductService from "../../services/ProductService"; 7 | import {useDispatch, useSelector} from "react-redux"; 8 | import {fetchProducts} from "../../store/slices/productSlice"; 9 | import {AppDispatch} from "../../store/configureStore"; 10 | 11 | type Props = {}; 12 | 13 | const Homepage = (props: Props) => { 14 | // const [products, setProducts] = useState([]); 15 | 16 | // useEffect(() => { 17 | // fetchProducts(); 18 | // }, []); 19 | 20 | // // 1- Birden fazla noktada kullanılabilir 21 | // // 2- Sorumluluğun UI dosyası üzerinden kalkması 22 | // // 3- Ortak bi noktadan yönetebilmek için 23 | // const fetchProducts = () => { 24 | // let service: ProductService = new ProductService(); 25 | // service.getAll().then(response => { 26 | // setProducts(response.data.products); 27 | // }); 28 | // }; 29 | 30 | const productsState = useSelector((state: any) => state.product); 31 | const dispatch = useDispatch(); 32 | useEffect(() => { 33 | dispatch(fetchProducts()); 34 | }, []); 35 | 36 | //14:00 37 | return ( 38 |
39 |
40 | {productsState.products.map((product: any) => ( 41 |
42 | 43 |
44 | ))} 45 |
46 |
47 | ); 48 | }; 49 | 50 | export default Homepage; 51 | 52 | // Formik-Yup CUMA! 53 | // Global State Management (Redux-Context API) 54 | // Interceptors 55 | // toastr, loader 56 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/pages/AddProduct/AddProduct.tsx: -------------------------------------------------------------------------------- 1 | import {ErrorMessage, Field, Form, Formik} from "formik"; 2 | import {number, object, string} from "yup"; 3 | import FormikInput from "../../components/FormikInput/FormikInput"; 4 | import {passwordValidator} from "../../utils/customValidations"; 5 | 6 | type Props = {}; 7 | 8 | const AddProduct = (props: Props) => { 9 | const initialValues = { 10 | title: "", 11 | description: "", 12 | price: 0, 13 | stock: 0, 14 | }; 15 | 16 | const validationSchema = object({ 17 | title: string() 18 | .required("Başlık alanı zorunludur.") 19 | .min(3, "Başlık alanı en az 3 karakter olmalıdır.") 20 | .max(50) 21 | .test( 22 | "my-custom-rule", 23 | "En az 1 büyük, 1 küçük harf ve 1 rakam içermelidir.", 24 | passwordValidator, 25 | ), 26 | description: string().required().min(5).max(300), 27 | price: number().required().min(0), 28 | stock: number().required().min(0).integer(), 29 | }); 30 | 31 | return ( 32 |
33 | { 36 | console.log(values); 37 | }} 38 | validationSchema={validationSchema} 39 | > 40 |
41 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 60 | 61 |
62 |
63 | ); 64 | }; 65 | 66 | export default AddProduct; 67 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `npm start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 13 | 14 | The page will reload if you make edits.\ 15 | You will also see any lint errors in the console. 16 | 17 | ### `npm test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `npm run build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `npm run eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 35 | 36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 39 | 40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | -------------------------------------------------------------------------------- /src/components/Navbar/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import {useContext, useEffect} from "react"; 2 | import {Link} from "react-router-dom"; 3 | import {AuthContext} from "../../contexts/AuthContext"; 4 | import {useSelector} from "react-redux"; 5 | 6 | type Props = {}; 7 | 8 | const Navbar = (props: Props) => { 9 | const cartState = useSelector((state: any) => state.cart); 10 | 11 | // useEffect(() => { 12 | // localStorage.setItem("token", "abc"); 13 | // localStorage.setItem("token", "abc123"); 14 | // let user = localStorage.getItem("user"); 15 | // let userObj = JSON.parse(user!); 16 | // console.log(user); 17 | // console.log(userObj); 18 | // localStorage.removeItem("token"); 19 | // localStorage.clear(); 20 | // }, []); 21 | 22 | const authContext: any = useContext(AuthContext); 23 | 24 | return ( 25 | 83 | ); 84 | }; 85 | 86 | export default Navbar; 87 | -------------------------------------------------------------------------------- /.excalidraw: -------------------------------------------------------------------------------- 1 | { 2 | "type": "excalidraw", 3 | "version": 2, 4 | "source": "https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor", 5 | "elements": [ 6 | { 7 | "type": "rectangle", 8 | "version": 226, 9 | "versionNonce": 1349669434, 10 | "isDeleted": false, 11 | "id": "P5HMkrN5KpjjwYPCkH60K", 12 | "fillStyle": "solid", 13 | "strokeWidth": 2, 14 | "strokeStyle": "solid", 15 | "roughness": 1, 16 | "opacity": 100, 17 | "angle": 0, 18 | "x": 1081.305436876085, 19 | "y": -336.4451866149903, 20 | "strokeColor": "#1e1e1e", 21 | "backgroundColor": "transparent", 22 | "width": 269.7917175292969, 23 | "height": 113.94857406616211, 24 | "seed": 548335141, 25 | "groupIds": [], 26 | "frameId": null, 27 | "roundness": { 28 | "type": 3 29 | }, 30 | "boundElements": [ 31 | { 32 | "type": "text", 33 | "id": "rGyonH3D4d_jmN4P_HMuM" 34 | }, 35 | { 36 | "id": "bQQ7ZZXobVHBVx-C2ljbH", 37 | "type": "arrow" 38 | } 39 | ], 40 | "updated": 1704711012254, 41 | "link": null, 42 | "locked": false 43 | }, 44 | { 45 | "type": "text", 46 | "version": 182, 47 | "versionNonce": 1939744570, 48 | "isDeleted": false, 49 | "id": "rGyonH3D4d_jmN4P_HMuM", 50 | "fillStyle": "solid", 51 | "strokeWidth": 2, 52 | "strokeStyle": "solid", 53 | "roughness": 1, 54 | "opacity": 100, 55 | "angle": 0, 56 | "x": 1178.7413347032334, 57 | "y": -291.97089958190924, 58 | "strokeColor": "#1e1e1e", 59 | "backgroundColor": "transparent", 60 | "width": 74.919921875, 61 | "height": 25, 62 | "seed": 1172613861, 63 | "groupIds": [], 64 | "frameId": null, 65 | "roundness": null, 66 | "boundElements": [], 67 | "updated": 1704711005057, 68 | "link": null, 69 | "locked": false, 70 | "fontSize": 20, 71 | "fontFamily": 1, 72 | "text": "index.ts", 73 | "textAlign": "center", 74 | "verticalAlign": "middle", 75 | "containerId": "P5HMkrN5KpjjwYPCkH60K", 76 | "originalText": "index.ts", 77 | "lineHeight": 1.25, 78 | "baseline": 21 79 | }, 80 | { 81 | "type": "rectangle", 82 | "version": 152, 83 | "versionNonce": 791278522, 84 | "isDeleted": false, 85 | "id": "zZl0N6tZS0_8HGTx_5aEp", 86 | "fillStyle": "solid", 87 | "strokeWidth": 2, 88 | "strokeStyle": "solid", 89 | "roughness": 1, 90 | "opacity": 100, 91 | "angle": 0, 92 | "x": 984.4304368760849, 93 | "y": 371.844741821289, 94 | "strokeColor": "#1e1e1e", 95 | "backgroundColor": "transparent", 96 | "width": 278.125, 97 | "height": 106.65691375732422, 98 | "seed": 1246089829, 99 | "groupIds": [], 100 | "frameId": null, 101 | "roundness": { 102 | "type": 3 103 | }, 104 | "boundElements": [], 105 | "updated": 1704711007159, 106 | "link": null, 107 | "locked": false 108 | }, 109 | { 110 | "type": "text", 111 | "version": 126, 112 | "versionNonce": 2106421380, 113 | "isDeleted": false, 114 | "id": "p-9SsGFmRxEmaupOAtHIo", 115 | "fillStyle": "solid", 116 | "strokeWidth": 2, 117 | "strokeStyle": "solid", 118 | "roughness": 1, 119 | "opacity": 100, 120 | "angle": 0, 121 | "x": 1045.4721544053818, 122 | "y": 417.66833496093744, 123 | "strokeColor": "#1e1e1e", 124 | "backgroundColor": "transparent", 125 | "width": 60.47993469238281, 126 | "height": 25, 127 | "seed": 691220197, 128 | "groupIds": [], 129 | "frameId": null, 130 | "roundness": null, 131 | "boundElements": [], 132 | "updated": 1705059168755, 133 | "link": null, 134 | "locked": false, 135 | "fontSize": 20, 136 | "fontFamily": 1, 137 | "text": "App.ts", 138 | "textAlign": "left", 139 | "verticalAlign": "top", 140 | "containerId": null, 141 | "originalText": "App.ts", 142 | "lineHeight": 1.25, 143 | "baseline": 18 144 | }, 145 | { 146 | "type": "arrow", 147 | "version": 131, 148 | "versionNonce": 995732549, 149 | "isDeleted": false, 150 | "id": "CFsvgpOs2g2F6nrBKFF9s", 151 | "fillStyle": "solid", 152 | "strokeWidth": 2, 153 | "strokeStyle": "solid", 154 | "roughness": 1, 155 | "opacity": 100, 156 | "angle": 0, 157 | "x": 959.4304750230575, 158 | "y": 522.8864212036133, 159 | "strokeColor": "#1e1e1e", 160 | "backgroundColor": "transparent", 161 | "width": 147.91667938232422, 162 | "height": 122.28191375732422, 163 | "seed": 313164523, 164 | "groupIds": [], 165 | "frameId": null, 166 | "roundness": { 167 | "type": 2 168 | }, 169 | "boundElements": [], 170 | "updated": 1704709768767, 171 | "link": null, 172 | "locked": false, 173 | "startBinding": null, 174 | "endBinding": { 175 | "elementId": "zoe82egBMjsXg5EhXFFjV", 176 | "focus": 0.1863058349047197, 177 | "gap": 12.093086242675781 178 | }, 179 | "lastCommittedPoint": null, 180 | "startArrowhead": null, 181 | "endArrowhead": "arrow", 182 | "points": [ 183 | [ 184 | 0, 185 | 0 186 | ], 187 | [ 188 | -147.91667938232422, 189 | 122.28191375732422 190 | ] 191 | ] 192 | }, 193 | { 194 | "type": "arrow", 195 | "version": 139, 196 | "versionNonce": 1525656747, 197 | "isDeleted": false, 198 | "id": "xNtPXXf_Anyf2zllYgHhU", 199 | "fillStyle": "solid", 200 | "strokeWidth": 2, 201 | "strokeStyle": "solid", 202 | "roughness": 1, 203 | "opacity": 100, 204 | "angle": 0, 205 | "x": 1140.680436876085, 206 | "y": 529.1364212036133, 207 | "strokeColor": "#1e1e1e", 208 | "backgroundColor": "transparent", 209 | "width": 2.083282470703125, 210 | "height": 97.28191375732422, 211 | "seed": 282071941, 212 | "groupIds": [], 213 | "frameId": null, 214 | "roundness": { 215 | "type": 2 216 | }, 217 | "boundElements": [], 218 | "updated": 1704709768764, 219 | "link": null, 220 | "locked": false, 221 | "startBinding": null, 222 | "endBinding": null, 223 | "lastCommittedPoint": null, 224 | "startArrowhead": null, 225 | "endArrowhead": "arrow", 226 | "points": [ 227 | [ 228 | 0, 229 | 0 230 | ], 231 | [ 232 | -2.083282470703125, 233 | 97.28191375732422 234 | ] 235 | ] 236 | }, 237 | { 238 | "type": "arrow", 239 | "version": 136, 240 | "versionNonce": 2125799173, 241 | "isDeleted": false, 242 | "id": "kmXhgkVew65DIDnsoMubc", 243 | "fillStyle": "solid", 244 | "strokeWidth": 2, 245 | "strokeStyle": "solid", 246 | "roughness": 1, 247 | "opacity": 100, 248 | "angle": 0, 249 | "x": 1301.0971544053818, 250 | "y": 507.2614212036133, 251 | "strokeColor": "#1e1e1e", 252 | "backgroundColor": "transparent", 253 | "width": 204.16664123535145, 254 | "height": 112.90691375732422, 255 | "seed": 951022763, 256 | "groupIds": [], 257 | "frameId": null, 258 | "roundness": { 259 | "type": 2 260 | }, 261 | "boundElements": [], 262 | "updated": 1704709768767, 263 | "link": null, 264 | "locked": false, 265 | "startBinding": null, 266 | "endBinding": { 267 | "elementId": "71Pqo7gvfeclrMFROpLJS", 268 | "focus": 0.2531508471990101, 269 | "gap": 10.009765625 270 | }, 271 | "lastCommittedPoint": null, 272 | "startArrowhead": null, 273 | "endArrowhead": "arrow", 274 | "points": [ 275 | [ 276 | 0, 277 | 0 278 | ], 279 | [ 280 | 204.16664123535145, 281 | 112.90691375732422 282 | ] 283 | ] 284 | }, 285 | { 286 | "type": "rectangle", 287 | "version": 138, 288 | "versionNonce": 1782963109, 289 | "isDeleted": false, 290 | "id": "zoe82egBMjsXg5EhXFFjV", 291 | "fillStyle": "solid", 292 | "strokeWidth": 2, 293 | "strokeStyle": "solid", 294 | "roughness": 1, 295 | "opacity": 100, 296 | "angle": 0, 297 | "x": 633.3888147142196, 298 | "y": 657.2614212036133, 299 | "strokeColor": "#1e1e1e", 300 | "backgroundColor": "transparent", 301 | "width": 178.12498092651367, 302 | "height": 80.615234375, 303 | "seed": 1161605797, 304 | "groupIds": [], 305 | "frameId": null, 306 | "roundness": { 307 | "type": 3 308 | }, 309 | "boundElements": [ 310 | { 311 | "type": "text", 312 | "id": "WS_YVfqTWviOs3tWzzaDO" 313 | }, 314 | { 315 | "id": "Ggk1MemN9RQIIOt-GE064", 316 | "type": "arrow" 317 | }, 318 | { 319 | "id": "CFsvgpOs2g2F6nrBKFF9s", 320 | "type": "arrow" 321 | } 322 | ], 323 | "updated": 1704709768767, 324 | "link": null, 325 | "locked": false 326 | }, 327 | { 328 | "type": "text", 329 | "version": 114, 330 | "versionNonce": 1791871115, 331 | "isDeleted": false, 332 | "id": "WS_YVfqTWviOs3tWzzaDO", 333 | "fillStyle": "solid", 334 | "strokeWidth": 2, 335 | "strokeStyle": "solid", 336 | "roughness": 1, 337 | "opacity": 100, 338 | "angle": 0, 339 | "x": 688.0613286760116, 340 | "y": 685.0690383911133, 341 | "strokeColor": "#1e1e1e", 342 | "backgroundColor": "transparent", 343 | "width": 68.77995300292969, 344 | "height": 25, 345 | "seed": 1527779141, 346 | "groupIds": [], 347 | "frameId": null, 348 | "roundness": null, 349 | "boundElements": [], 350 | "updated": 1704709768764, 351 | "link": null, 352 | "locked": false, 353 | "fontSize": 20, 354 | "fontFamily": 1, 355 | "text": "Navbar", 356 | "textAlign": "center", 357 | "verticalAlign": "middle", 358 | "containerId": "zoe82egBMjsXg5EhXFFjV", 359 | "originalText": "Navbar", 360 | "lineHeight": 1.25, 361 | "baseline": 21 362 | }, 363 | { 364 | "type": "rectangle", 365 | "version": 152, 366 | "versionNonce": 2098684363, 367 | "isDeleted": false, 368 | "id": "pc1mk4cZ9gp3Z74WFByKE", 369 | "fillStyle": "solid", 370 | "strokeWidth": 2, 371 | "strokeStyle": "solid", 372 | "roughness": 1, 373 | "opacity": 100, 374 | "angle": 0, 375 | "x": 1054.2221544053818, 376 | "y": 649.9697418212891, 377 | "strokeColor": "#1e1e1e", 378 | "backgroundColor": "transparent", 379 | "width": 215.625, 380 | "height": 92.07359313964844, 381 | "seed": 490303275, 382 | "groupIds": [], 383 | "frameId": null, 384 | "roundness": { 385 | "type": 3 386 | }, 387 | "boundElements": [ 388 | { 389 | "type": "text", 390 | "id": "FJ6HyyEaHnyeQhWXyHqqs" 391 | }, 392 | { 393 | "id": "7K6CEPKA1A3EdlCMQ8dkZ", 394 | "type": "arrow" 395 | }, 396 | { 397 | "id": "mz2N2ZlwvnUH50hHWXeaN", 398 | "type": "arrow" 399 | } 400 | ], 401 | "updated": 1704709768764, 402 | "link": null, 403 | "locked": false 404 | }, 405 | { 406 | "type": "text", 407 | "version": 114, 408 | "versionNonce": 654241899, 409 | "isDeleted": false, 410 | "id": "FJ6HyyEaHnyeQhWXyHqqs", 411 | "fillStyle": "solid", 412 | "strokeWidth": 2, 413 | "strokeStyle": "solid", 414 | "roughness": 1, 415 | "opacity": 100, 416 | "angle": 0, 417 | "x": 1127.4846895005967, 418 | "y": 683.5065383911133, 419 | "strokeColor": "#1e1e1e", 420 | "backgroundColor": "transparent", 421 | "width": 69.09992980957031, 422 | "height": 25, 423 | "seed": 1767861579, 424 | "groupIds": [], 425 | "frameId": null, 426 | "roundness": null, 427 | "boundElements": [], 428 | "updated": 1704709768764, 429 | "link": null, 430 | "locked": false, 431 | "fontSize": 20, 432 | "fontFamily": 1, 433 | "text": "Routes", 434 | "textAlign": "center", 435 | "verticalAlign": "middle", 436 | "containerId": "pc1mk4cZ9gp3Z74WFByKE", 437 | "originalText": "Routes", 438 | "lineHeight": 1.25, 439 | "baseline": 21 440 | }, 441 | { 442 | "type": "rectangle", 443 | "version": 168, 444 | "versionNonce": 2133128805, 445 | "isDeleted": false, 446 | "id": "71Pqo7gvfeclrMFROpLJS", 447 | "fillStyle": "solid", 448 | "strokeWidth": 2, 449 | "strokeStyle": "solid", 450 | "roughness": 1, 451 | "opacity": 100, 452 | "angle": 0, 453 | "x": 1418.805436876085, 454 | "y": 630.1781005859375, 455 | "strokeColor": "#1e1e1e", 456 | "backgroundColor": "transparent", 457 | "width": 273.958282470703, 458 | "height": 99.365234375, 459 | "seed": 1071736645, 460 | "groupIds": [], 461 | "frameId": null, 462 | "roundness": { 463 | "type": 3 464 | }, 465 | "boundElements": [ 466 | { 467 | "id": "kmXhgkVew65DIDnsoMubc", 468 | "type": "arrow" 469 | } 470 | ], 471 | "updated": 1704709768767, 472 | "link": null, 473 | "locked": false 474 | }, 475 | { 476 | "type": "text", 477 | "version": 126, 478 | "versionNonce": 10668476, 479 | "isDeleted": false, 480 | "id": "-AJ39LKjvt1GJvflAenfv", 481 | "fillStyle": "solid", 482 | "strokeWidth": 2, 483 | "strokeStyle": "solid", 484 | "roughness": 1, 485 | "opacity": 100, 486 | "angle": 0, 487 | "x": 1497.9721544053818, 488 | "y": 670.1683349609375, 489 | "strokeColor": "#1e1e1e", 490 | "backgroundColor": "transparent", 491 | "width": 64.47993469238281, 492 | "height": 25, 493 | "seed": 480299301, 494 | "groupIds": [], 495 | "frameId": null, 496 | "roundness": null, 497 | "boundElements": [], 498 | "updated": 1705059168756, 499 | "link": null, 500 | "locked": false, 501 | "fontSize": 20, 502 | "fontFamily": 1, 503 | "text": "Footer", 504 | "textAlign": "left", 505 | "verticalAlign": "top", 506 | "containerId": null, 507 | "originalText": "Footer", 508 | "lineHeight": 1.25, 509 | "baseline": 18 510 | }, 511 | { 512 | "type": "arrow", 513 | "version": 221, 514 | "versionNonce": 1180885445, 515 | "isDeleted": false, 516 | "id": "7K6CEPKA1A3EdlCMQ8dkZ", 517 | "fillStyle": "solid", 518 | "strokeWidth": 2, 519 | "strokeStyle": "solid", 520 | "roughness": 1, 521 | "opacity": 100, 522 | "angle": 0, 523 | "x": 1078.180436876085, 524 | "y": 762.4697418212891, 525 | "strokeColor": "#1e1e1e", 526 | "backgroundColor": "transparent", 527 | "width": 77.08328247070312, 528 | "height": 84.78191375732422, 529 | "seed": 202697899, 530 | "groupIds": [], 531 | "frameId": null, 532 | "roundness": { 533 | "type": 2 534 | }, 535 | "boundElements": [], 536 | "updated": 1704709768767, 537 | "link": null, 538 | "locked": false, 539 | "startBinding": { 540 | "elementId": "pc1mk4cZ9gp3Z74WFByKE", 541 | "focus": 0.15652022351889397, 542 | "gap": 20.426406860351562 543 | }, 544 | "endBinding": null, 545 | "lastCommittedPoint": null, 546 | "startArrowhead": null, 547 | "endArrowhead": "arrow", 548 | "points": [ 549 | [ 550 | 0, 551 | 0 552 | ], 553 | [ 554 | -77.08328247070312, 555 | 84.78191375732422 556 | ] 557 | ] 558 | }, 559 | { 560 | "type": "arrow", 561 | "version": 128, 562 | "versionNonce": 758670379, 563 | "isDeleted": false, 564 | "id": "3qlSjxDIQxQzIvqurm1Z5", 565 | "fillStyle": "solid", 566 | "strokeWidth": 2, 567 | "strokeStyle": "solid", 568 | "roughness": 1, 569 | "opacity": 100, 570 | "angle": 0, 571 | "x": 1186.5137956407334, 572 | "y": 765.5947418212891, 573 | "strokeColor": "#1e1e1e", 574 | "backgroundColor": "transparent", 575 | "width": 4.1666412353515625, 576 | "height": 85.82359313964844, 577 | "seed": 1959921797, 578 | "groupIds": [], 579 | "frameId": null, 580 | "roundness": { 581 | "type": 2 582 | }, 583 | "boundElements": [], 584 | "updated": 1704709768764, 585 | "link": null, 586 | "locked": false, 587 | "startBinding": null, 588 | "endBinding": null, 589 | "lastCommittedPoint": null, 590 | "startArrowhead": null, 591 | "endArrowhead": "arrow", 592 | "points": [ 593 | [ 594 | 0, 595 | 0 596 | ], 597 | [ 598 | 4.1666412353515625, 599 | 85.82359313964844 600 | ] 601 | ] 602 | }, 603 | { 604 | "type": "arrow", 605 | "version": 225, 606 | "versionNonce": 1041167493, 607 | "isDeleted": false, 608 | "id": "mz2N2ZlwvnUH50hHWXeaN", 609 | "fillStyle": "solid", 610 | "strokeWidth": 2, 611 | "strokeStyle": "solid", 612 | "roughness": 1, 613 | "opacity": 100, 614 | "angle": 0, 615 | "x": 1268.805436876085, 616 | "y": 761.4281005859375, 617 | "strokeColor": "#1e1e1e", 618 | "backgroundColor": "transparent", 619 | "width": 140.625, 620 | "height": 97.28187561035156, 621 | "seed": 1388378827, 622 | "groupIds": [], 623 | "frameId": null, 624 | "roundness": { 625 | "type": 2 626 | }, 627 | "boundElements": [], 628 | "updated": 1704709768769, 629 | "link": null, 630 | "locked": false, 631 | "startBinding": { 632 | "elementId": "pc1mk4cZ9gp3Z74WFByKE", 633 | "focus": -0.06997676731523012, 634 | "gap": 19.384765625 635 | }, 636 | "endBinding": { 637 | "elementId": "_SihkyIZpuK5SqkdWvUBS", 638 | "focus": 0.10763975249002208, 639 | "gap": 6.884765625 640 | }, 641 | "lastCommittedPoint": null, 642 | "startArrowhead": null, 643 | "endArrowhead": "arrow", 644 | "points": [ 645 | [ 646 | 0, 647 | 0 648 | ], 649 | [ 650 | 140.625, 651 | 97.28187561035156 652 | ] 653 | ] 654 | }, 655 | { 656 | "type": "rectangle", 657 | "version": 146, 658 | "versionNonce": 1493669227, 659 | "isDeleted": false, 660 | "id": "On2FofC4zolQKWQqBhAhF", 661 | "fillStyle": "solid", 662 | "strokeWidth": 2, 663 | "strokeStyle": "solid", 664 | "roughness": 1, 665 | "opacity": 100, 666 | "angle": 0, 667 | "x": 849.0137956407333, 668 | "y": 876.0114212036133, 669 | "strokeColor": "#1e1e1e", 670 | "backgroundColor": "transparent", 671 | "width": 205.20835876464844, 672 | "height": 80.61519622802734, 673 | "seed": 1407289989, 674 | "groupIds": [], 675 | "frameId": null, 676 | "roundness": { 677 | "type": 3 678 | }, 679 | "boundElements": [], 680 | "updated": 1704709768764, 681 | "link": null, 682 | "locked": false 683 | }, 684 | { 685 | "type": "text", 686 | "version": 134, 687 | "versionNonce": 1729413124, 688 | "isDeleted": false, 689 | "id": "1j2PADVfcqmrTzBRtxHB5", 690 | "fillStyle": "solid", 691 | "strokeWidth": 2, 692 | "strokeStyle": "solid", 693 | "roughness": 1, 694 | "opacity": 100, 695 | "angle": 0, 696 | "x": 901.7221544053817, 697 | "y": 901.4183349609375, 698 | "strokeColor": "#1e1e1e", 699 | "backgroundColor": "transparent", 700 | "width": 89.85990905761719, 701 | "height": 25, 702 | "seed": 1217869573, 703 | "groupIds": [], 704 | "frameId": null, 705 | "roundness": null, 706 | "boundElements": [], 707 | "updated": 1705059168757, 708 | "link": null, 709 | "locked": false, 710 | "fontSize": 20, 711 | "fontFamily": 1, 712 | "text": "Homepage", 713 | "textAlign": "left", 714 | "verticalAlign": "top", 715 | "containerId": null, 716 | "originalText": "Homepage", 717 | "lineHeight": 1.25, 718 | "baseline": 18 719 | }, 720 | { 721 | "type": "rectangle", 722 | "version": 143, 723 | "versionNonce": 690714283, 724 | "isDeleted": false, 725 | "id": "raT8DUiVfVJGywjLR-yxO", 726 | "fillStyle": "solid", 727 | "strokeWidth": 2, 728 | "strokeStyle": "solid", 729 | "roughness": 1, 730 | "opacity": 100, 731 | "angle": 0, 732 | "x": 1124.0137956407334, 733 | "y": 872.8864212036133, 734 | "strokeColor": "#1e1e1e", 735 | "backgroundColor": "transparent", 736 | "width": 159.375, 737 | "height": 81.65691375732422, 738 | "seed": 1118892491, 739 | "groupIds": [], 740 | "frameId": null, 741 | "roundness": { 742 | "type": 3 743 | }, 744 | "boundElements": [ 745 | { 746 | "type": "text", 747 | "id": "GyHswqv_2t6SQ430VVrDW" 748 | } 749 | ], 750 | "updated": 1704709768764, 751 | "link": null, 752 | "locked": false 753 | }, 754 | { 755 | "type": "text", 756 | "version": 121, 757 | "versionNonce": 1702717771, 758 | "isDeleted": false, 759 | "id": "GyHswqv_2t6SQ430VVrDW", 760 | "fillStyle": "solid", 761 | "strokeWidth": 2, 762 | "strokeStyle": "solid", 763 | "roughness": 1, 764 | "opacity": 100, 765 | "angle": 0, 766 | "x": 1134.8013627794053, 767 | "y": 901.2148780822754, 768 | "strokeColor": "#1e1e1e", 769 | "backgroundColor": "transparent", 770 | "width": 137.79986572265625, 771 | "height": 25, 772 | "seed": 511969003, 773 | "groupIds": [], 774 | "frameId": null, 775 | "roundness": null, 776 | "boundElements": [], 777 | "updated": 1704709768764, 778 | "link": null, 779 | "locked": false, 780 | "fontSize": 20, 781 | "fontFamily": 1, 782 | "text": "ProductDetail", 783 | "textAlign": "center", 784 | "verticalAlign": "middle", 785 | "containerId": "raT8DUiVfVJGywjLR-yxO", 786 | "originalText": "ProductDetail", 787 | "lineHeight": 1.25, 788 | "baseline": 21 789 | }, 790 | { 791 | "type": "rectangle", 792 | "version": 165, 793 | "versionNonce": 799546341, 794 | "isDeleted": false, 795 | "id": "_SihkyIZpuK5SqkdWvUBS", 796 | "fillStyle": "solid", 797 | "strokeWidth": 2, 798 | "strokeStyle": "solid", 799 | "roughness": 1, 800 | "opacity": 100, 801 | "angle": 0, 802 | "x": 1344.8471544053818, 803 | "y": 865.5947418212891, 804 | "strokeColor": "#1e1e1e", 805 | "backgroundColor": "transparent", 806 | "width": 226.04164123535145, 807 | "height": 78.53187561035156, 808 | "seed": 1336330053, 809 | "groupIds": [], 810 | "frameId": null, 811 | "roundness": { 812 | "type": 3 813 | }, 814 | "boundElements": [ 815 | { 816 | "type": "text", 817 | "id": "hGtnLZQ8O0ccZqMxrjxUT" 818 | }, 819 | { 820 | "id": "mz2N2ZlwvnUH50hHWXeaN", 821 | "type": "arrow" 822 | } 823 | ], 824 | "updated": 1704709768769, 825 | "link": null, 826 | "locked": false 827 | }, 828 | { 829 | "type": "text", 830 | "version": 128, 831 | "versionNonce": 459657867, 832 | "isDeleted": false, 833 | "id": "hGtnLZQ8O0ccZqMxrjxUT", 834 | "fillStyle": "solid", 835 | "strokeWidth": 2, 836 | "strokeStyle": "solid", 837 | "roughness": 1, 838 | "opacity": 100, 839 | "angle": 0, 840 | "x": 1401.4380281236433, 841 | "y": 892.3606796264648, 842 | "strokeColor": "#1e1e1e", 843 | "backgroundColor": "transparent", 844 | "width": 112.85989379882812, 845 | "height": 25, 846 | "seed": 893887397, 847 | "groupIds": [], 848 | "frameId": null, 849 | "roundness": null, 850 | "boundElements": [], 851 | "updated": 1704709768764, 852 | "link": null, 853 | "locked": false, 854 | "fontSize": 20, 855 | "fontFamily": 1, 856 | "text": "AddProduct", 857 | "textAlign": "center", 858 | "verticalAlign": "middle", 859 | "containerId": "_SihkyIZpuK5SqkdWvUBS", 860 | "originalText": "AddProduct", 861 | "lineHeight": 1.25, 862 | "baseline": 21 863 | }, 864 | { 865 | "type": "arrow", 866 | "version": 138, 867 | "versionNonce": 2076264747, 868 | "isDeleted": false, 869 | "id": "XSNhe-RSXqLBS3DgUdH8q", 870 | "fillStyle": "solid", 871 | "strokeWidth": 2, 872 | "strokeStyle": "solid", 873 | "roughness": 1, 874 | "opacity": 100, 875 | "angle": 0, 876 | "x": 870.8887956407333, 877 | "y": 984.3447418212891, 878 | "strokeColor": "#1e1e1e", 879 | "backgroundColor": "transparent", 880 | "width": 91.66664123535156, 881 | "height": 103.53187561035156, 882 | "seed": 2127703435, 883 | "groupIds": [], 884 | "frameId": null, 885 | "roundness": { 886 | "type": 2 887 | }, 888 | "boundElements": [], 889 | "updated": 1704709768764, 890 | "link": null, 891 | "locked": false, 892 | "startBinding": null, 893 | "endBinding": null, 894 | "lastCommittedPoint": null, 895 | "startArrowhead": null, 896 | "endArrowhead": "arrow", 897 | "points": [ 898 | [ 899 | 0, 900 | 0 901 | ], 902 | [ 903 | -91.66664123535156, 904 | 103.53187561035156 905 | ] 906 | ] 907 | }, 908 | { 909 | "type": "arrow", 910 | "version": 151, 911 | "versionNonce": 984935371, 912 | "isDeleted": false, 913 | "id": "JGD7xCinJ5V9nz2ACtJql", 914 | "fillStyle": "solid", 915 | "strokeWidth": 2, 916 | "strokeStyle": "solid", 917 | "roughness": 1, 918 | "opacity": 100, 919 | "angle": 0, 920 | "x": 987.5554368760849, 921 | "y": 985.3863830566406, 922 | "strokeColor": "#1e1e1e", 923 | "backgroundColor": "transparent", 924 | "width": 97.91671752929688, 925 | "height": 99.365234375, 926 | "seed": 1372268005, 927 | "groupIds": [], 928 | "frameId": null, 929 | "roundness": { 930 | "type": 2 931 | }, 932 | "boundElements": [], 933 | "updated": 1704709768764, 934 | "link": null, 935 | "locked": false, 936 | "startBinding": null, 937 | "endBinding": null, 938 | "lastCommittedPoint": null, 939 | "startArrowhead": null, 940 | "endArrowhead": "arrow", 941 | "points": [ 942 | [ 943 | 0, 944 | 0 945 | ], 946 | [ 947 | 97.91671752929688, 948 | 99.365234375 949 | ] 950 | ] 951 | }, 952 | { 953 | "type": "rectangle", 954 | "version": 148, 955 | "versionNonce": 744176235, 956 | "isDeleted": false, 957 | "id": "uoFRhQ5h2cPYNVF1dQb25", 958 | "fillStyle": "solid", 959 | "strokeWidth": 2, 960 | "strokeStyle": "solid", 961 | "roughness": 1, 962 | "opacity": 100, 963 | "angle": 0, 964 | "x": 631.3054750230575, 965 | "y": 1108.3031005859375, 966 | "strokeColor": "#1e1e1e", 967 | "backgroundColor": "transparent", 968 | "width": 232.29167938232422, 969 | "height": 69.15687561035156, 970 | "seed": 1098445771, 971 | "groupIds": [], 972 | "frameId": null, 973 | "roundness": { 974 | "type": 3 975 | }, 976 | "boundElements": [], 977 | "updated": 1704709768764, 978 | "link": null, 979 | "locked": false 980 | }, 981 | { 982 | "type": "text", 983 | "version": 149, 984 | "versionNonce": 1369059900, 985 | "isDeleted": false, 986 | "id": "9-Gj0P5DIkj6BkkSh42Th", 987 | "fillStyle": "solid", 988 | "strokeWidth": 2, 989 | "strokeStyle": "solid", 990 | "roughness": 1, 991 | "opacity": 100, 992 | "angle": 0, 993 | "x": 687.763833787706, 994 | "y": 1131.616928100586, 995 | "strokeColor": "#1e1e1e", 996 | "backgroundColor": "transparent", 997 | "width": 123.17988586425781, 998 | "height": 25, 999 | "seed": 1844499979, 1000 | "groupIds": [], 1001 | "frameId": null, 1002 | "roundness": null, 1003 | "boundElements": [], 1004 | "updated": 1705059168758, 1005 | "link": null, 1006 | "locked": false, 1007 | "fontSize": 20, 1008 | "fontFamily": 1, 1009 | "text": "ProductCard", 1010 | "textAlign": "left", 1011 | "verticalAlign": "top", 1012 | "containerId": null, 1013 | "originalText": "ProductCard", 1014 | "lineHeight": 1.25, 1015 | "baseline": 18 1016 | }, 1017 | { 1018 | "type": "text", 1019 | "version": 158, 1020 | "versionNonce": 1376132996, 1021 | "isDeleted": false, 1022 | "id": "JjsDTc-zaM_xeGouKMybZ", 1023 | "fillStyle": "solid", 1024 | "strokeWidth": 2, 1025 | "strokeStyle": "solid", 1026 | "roughness": 1, 1027 | "opacity": 100, 1028 | "angle": 0, 1029 | "x": 1071.930436876085, 1030 | "y": 1132.6683349609375, 1031 | "strokeColor": "#1e1e1e", 1032 | "backgroundColor": "transparent", 1033 | "width": 65.75994873046875, 1034 | "height": 25, 1035 | "seed": 296321925, 1036 | "groupIds": [], 1037 | "frameId": null, 1038 | "roundness": null, 1039 | "boundElements": [], 1040 | "updated": 1705059168758, 1041 | "link": null, 1042 | "locked": false, 1043 | "fontSize": 20, 1044 | "fontFamily": 1, 1045 | "text": "............", 1046 | "textAlign": "left", 1047 | "verticalAlign": "top", 1048 | "containerId": null, 1049 | "originalText": "............", 1050 | "lineHeight": 1.25, 1051 | "baseline": 18 1052 | }, 1053 | { 1054 | "type": "freedraw", 1055 | "version": 163, 1056 | "versionNonce": 685190731, 1057 | "isDeleted": false, 1058 | "id": "QSqFuvXDEQzBJgmcDoh8M", 1059 | "fillStyle": "solid", 1060 | "strokeWidth": 2, 1061 | "strokeStyle": "solid", 1062 | "roughness": 1, 1063 | "opacity": 100, 1064 | "angle": 0, 1065 | "x": 601.8292972625246, 1066 | "y": 1188.9696742466515, 1067 | "strokeColor": "#e03131", 1068 | "backgroundColor": "transparent", 1069 | "width": 58.33331298828125, 1070 | "height": 10.6510009765625, 1071 | "seed": 1150724459, 1072 | "groupIds": [], 1073 | "frameId": null, 1074 | "roundness": null, 1075 | "boundElements": [], 1076 | "updated": 1704709768764, 1077 | "link": null, 1078 | "locked": false, 1079 | "points": [ 1080 | [ 1081 | 0, 1082 | 0 1083 | ], 1084 | [ 1085 | 1.6666259765625, 1086 | 0.6510009765625 1087 | ], 1088 | [ 1089 | 3.33331298828125, 1090 | 0.6510009765625 1091 | ], 1092 | [ 1093 | 6.6666259765625, 1094 | 0.6510009765625 1095 | ], 1096 | [ 1097 | 10, 1098 | 0.6510009765625 1099 | ], 1100 | [ 1101 | 15, 1102 | 0.6510009765625 1103 | ], 1104 | [ 1105 | 18.33331298828125, 1106 | 0.6510009765625 1107 | ], 1108 | [ 1109 | 23.33331298828125, 1110 | 0.6510009765625 1111 | ], 1112 | [ 1113 | 25, 1114 | 0.6510009765625 1115 | ], 1116 | [ 1117 | 26.6666259765625, 1118 | 0.6510009765625 1119 | ], 1120 | [ 1121 | 28.33331298828125, 1122 | 0.6510009765625 1123 | ], 1124 | [ 1125 | 26.6666259765625, 1126 | 0.6510009765625 1127 | ], 1128 | [ 1129 | 23.33331298828125, 1130 | 0.6510009765625 1131 | ], 1132 | [ 1133 | 20, 1134 | 0.6510009765625 1135 | ], 1136 | [ 1137 | 16.6666259765625, 1138 | 0.6510009765625 1139 | ], 1140 | [ 1141 | 13.33331298828125, 1142 | 0.6510009765625 1143 | ], 1144 | [ 1145 | 8.33331298828125, 1146 | 0.6510009765625 1147 | ], 1148 | [ 1149 | 3.33331298828125, 1150 | 0.6510009765625 1151 | ], 1152 | [ 1153 | 1.6666259765625, 1154 | 0.6510009765625 1155 | ], 1156 | [ 1157 | -1.66668701171875, 1158 | 0.6510009765625 1159 | ], 1160 | [ 1161 | 1.6666259765625, 1162 | 0.6510009765625 1163 | ], 1164 | [ 1165 | 6.6666259765625, 1166 | 0.6510009765625 1167 | ], 1168 | [ 1169 | 13.33331298828125, 1170 | 0.6510009765625 1171 | ], 1172 | [ 1173 | 23.33331298828125, 1174 | 2.317626953125 1175 | ], 1176 | [ 1177 | 31.6666259765625, 1178 | 3.984375 1179 | ], 1180 | [ 1181 | 40, 1182 | 3.984375 1183 | ], 1184 | [ 1185 | 46.6666259765625, 1186 | 3.984375 1187 | ], 1188 | [ 1189 | 51.6666259765625, 1190 | 5.6510009765625 1191 | ], 1192 | [ 1193 | 55, 1194 | 5.6510009765625 1195 | ], 1196 | [ 1197 | 56.6666259765625, 1198 | 5.6510009765625 1199 | ], 1200 | [ 1201 | 53.33331298828125, 1202 | 7.317626953125 1203 | ], 1204 | [ 1205 | 50, 1206 | 7.317626953125 1207 | ], 1208 | [ 1209 | 46.6666259765625, 1210 | 7.317626953125 1211 | ], 1212 | [ 1213 | 41.6666259765625, 1214 | 7.317626953125 1215 | ], 1216 | [ 1217 | 35, 1218 | 7.317626953125 1219 | ], 1220 | [ 1221 | 30, 1222 | 7.317626953125 1223 | ], 1224 | [ 1225 | 26.6666259765625, 1226 | 7.317626953125 1227 | ], 1228 | [ 1229 | 23.33331298828125, 1230 | 8.984375 1231 | ], 1232 | [ 1233 | 20, 1234 | 8.984375 1235 | ], 1236 | [ 1237 | 18.33331298828125, 1238 | 8.984375 1239 | ], 1240 | [ 1241 | 16.6666259765625, 1242 | 8.984375 1243 | ], 1244 | [ 1245 | 18.33331298828125, 1246 | 10.6510009765625 1247 | ], 1248 | [ 1249 | 20, 1250 | 10.6510009765625 1251 | ], 1252 | [ 1253 | 25, 1254 | 10.6510009765625 1255 | ], 1256 | [ 1257 | 26.6666259765625, 1258 | 10.6510009765625 1259 | ], 1260 | [ 1261 | 31.6666259765625, 1262 | 10.6510009765625 1263 | ], 1264 | [ 1265 | 35, 1266 | 10.6510009765625 1267 | ], 1268 | [ 1269 | 40, 1270 | 10.6510009765625 1271 | ], 1272 | [ 1273 | 43.33331298828125, 1274 | 10.6510009765625 1275 | ], 1276 | [ 1277 | 46.6666259765625, 1278 | 10.6510009765625 1279 | ], 1280 | [ 1281 | 48.33331298828125, 1282 | 10.6510009765625 1283 | ], 1284 | [ 1285 | 46.6666259765625, 1286 | 10.6510009765625 1287 | ], 1288 | [ 1289 | 45, 1290 | 10.6510009765625 1291 | ], 1292 | [ 1293 | 43.33331298828125, 1294 | 10.6510009765625 1295 | ], 1296 | [ 1297 | 43.33331298828125, 1298 | 10.6510009765625 1299 | ] 1300 | ], 1301 | "lastCommittedPoint": null, 1302 | "simulatePressure": true, 1303 | "pressures": [] 1304 | }, 1305 | { 1306 | "type": "freedraw", 1307 | "version": 148, 1308 | "versionNonce": 1376857323, 1309 | "isDeleted": false, 1310 | "id": "hFrTCKSSFYBbcKQpm6nev", 1311 | "fillStyle": "solid", 1312 | "strokeWidth": 2, 1313 | "strokeStyle": "solid", 1314 | "roughness": 1, 1315 | "opacity": 100, 1316 | "angle": 0, 1317 | "x": 600.1626102508059, 1318 | "y": 745.6363002232141, 1319 | "strokeColor": "#1971c2", 1320 | "backgroundColor": "transparent", 1321 | "width": 41.66668701171875, 1322 | "height": 12.3177490234375, 1323 | "seed": 908878789, 1324 | "groupIds": [], 1325 | "frameId": null, 1326 | "roundness": null, 1327 | "boundElements": [], 1328 | "updated": 1704709768764, 1329 | "link": null, 1330 | "locked": false, 1331 | "points": [ 1332 | [ 1333 | 0, 1334 | 0 1335 | ], 1336 | [ 1337 | 3.33331298828125, 1338 | 0 1339 | ], 1340 | [ 1341 | 5, 1342 | 0.65106201171875 1343 | ], 1344 | [ 1345 | 10, 1346 | 2.3177490234375 1347 | ], 1348 | [ 1349 | 15, 1350 | 2.3177490234375 1351 | ], 1352 | [ 1353 | 18.33331298828125, 1354 | 3.984375 1355 | ], 1356 | [ 1357 | 21.66668701171875, 1358 | 3.984375 1359 | ], 1360 | [ 1361 | 25, 1362 | 3.984375 1363 | ], 1364 | [ 1365 | 28.33331298828125, 1366 | 3.984375 1367 | ], 1368 | [ 1369 | 30, 1370 | 3.984375 1371 | ], 1372 | [ 1373 | 26.66668701171875, 1374 | 3.984375 1375 | ], 1376 | [ 1377 | 21.66668701171875, 1378 | 3.984375 1379 | ], 1380 | [ 1381 | 18.33331298828125, 1382 | 3.984375 1383 | ], 1384 | [ 1385 | 13.33331298828125, 1386 | 3.984375 1387 | ], 1388 | [ 1389 | 6.66668701171875, 1390 | 3.984375 1391 | ], 1392 | [ 1393 | 1.66668701171875, 1394 | 3.984375 1395 | ], 1396 | [ 1397 | -5, 1398 | 3.984375 1399 | ], 1400 | [ 1401 | -8.33331298828125, 1402 | 3.984375 1403 | ], 1404 | [ 1405 | -11.66668701171875, 1406 | 3.984375 1407 | ], 1408 | [ 1409 | -10, 1410 | 3.984375 1411 | ], 1412 | [ 1413 | -6.66668701171875, 1414 | 3.984375 1415 | ], 1416 | [ 1417 | -1.66668701171875, 1418 | 5.65106201171875 1419 | ], 1420 | [ 1421 | 3.33331298828125, 1422 | 5.65106201171875 1423 | ], 1424 | [ 1425 | 6.66668701171875, 1426 | 5.65106201171875 1427 | ], 1428 | [ 1429 | 10, 1430 | 5.65106201171875 1431 | ], 1432 | [ 1433 | 11.66668701171875, 1434 | 5.65106201171875 1435 | ], 1436 | [ 1437 | 13.33331298828125, 1438 | 5.65106201171875 1439 | ], 1440 | [ 1441 | 10, 1442 | 5.65106201171875 1443 | ], 1444 | [ 1445 | 6.66668701171875, 1446 | 5.65106201171875 1447 | ], 1448 | [ 1449 | 3.33331298828125, 1450 | 5.65106201171875 1451 | ], 1452 | [ 1453 | 0, 1454 | 8.984375 1455 | ], 1456 | [ 1457 | -1.66668701171875, 1458 | 8.984375 1459 | ], 1460 | [ 1461 | -3.33331298828125, 1462 | 10.65106201171875 1463 | ], 1464 | [ 1465 | -1.66668701171875, 1466 | 12.3177490234375 1467 | ], 1468 | [ 1469 | 1.66668701171875, 1470 | 12.3177490234375 1471 | ], 1472 | [ 1473 | 5, 1474 | 12.3177490234375 1475 | ], 1476 | [ 1477 | 8.33331298828125, 1478 | 12.3177490234375 1479 | ], 1480 | [ 1481 | 11.66668701171875, 1482 | 12.3177490234375 1483 | ], 1484 | [ 1485 | 13.33331298828125, 1486 | 12.3177490234375 1487 | ], 1488 | [ 1489 | 13.33331298828125, 1490 | 12.3177490234375 1491 | ] 1492 | ], 1493 | "lastCommittedPoint": null, 1494 | "simulatePressure": true, 1495 | "pressures": [] 1496 | }, 1497 | { 1498 | "type": "freedraw", 1499 | "version": 122, 1500 | "versionNonce": 1288853387, 1501 | "isDeleted": false, 1502 | "id": "72-Tte2rcjCiXstfgYw9w", 1503 | "fillStyle": "solid", 1504 | "strokeWidth": 2, 1505 | "strokeStyle": "solid", 1506 | "roughness": 1, 1507 | "opacity": 100, 1508 | "angle": 0, 1509 | "x": 705.1626102508059, 1510 | "y": 1048.9696742466515, 1511 | "strokeColor": "#e03131", 1512 | "backgroundColor": "transparent", 1513 | "width": 104.99999999999989, 1514 | "height": 83.33331298828114, 1515 | "seed": 1143295301, 1516 | "groupIds": [], 1517 | "frameId": null, 1518 | "roundness": null, 1519 | "boundElements": [], 1520 | "updated": 1704709768764, 1521 | "link": null, 1522 | "locked": false, 1523 | "points": [ 1524 | [ 1525 | 0, 1526 | 0 1527 | ], 1528 | [ 1529 | 1.66668701171875, 1530 | 0.6510009765625 1531 | ], 1532 | [ 1533 | 5, 1534 | -1.015625 1535 | ], 1536 | [ 1537 | 8.33331298828125, 1538 | -2.682373046875 1539 | ], 1540 | [ 1541 | 15, 1542 | -7.682373046875 1543 | ], 1544 | [ 1545 | 21.66668701171875, 1546 | -11.015625 1547 | ], 1548 | [ 1549 | 28.33331298828125, 1550 | -17.682373046875 1551 | ], 1552 | [ 1553 | 36.666687011718636, 1554 | -24.3489990234375 1555 | ], 1556 | [ 1557 | 44.999999999999886, 1558 | -29.3489990234375 1559 | ], 1560 | [ 1561 | 53.333312988281136, 1562 | -36.015625 1563 | ], 1564 | [ 1565 | 59.999999999999886, 1566 | -41.015625 1567 | ], 1568 | [ 1569 | 66.66668701171864, 1570 | -47.682373046875 1571 | ], 1572 | [ 1573 | 73.33331298828114, 1574 | -52.682373046875 1575 | ], 1576 | [ 1577 | 78.33331298828114, 1578 | -56.015625 1579 | ], 1580 | [ 1581 | 83.33331298828114, 1582 | -61.015624999999886 1583 | ], 1584 | [ 1585 | 86.66668701171864, 1586 | -64.34899902343739 1587 | ], 1588 | [ 1589 | 89.99999999999989, 1590 | -66.01562499999989 1591 | ], 1592 | [ 1593 | 91.66668701171864, 1594 | -67.68237304687489 1595 | ], 1596 | [ 1597 | 93.33331298828114, 1598 | -69.34899902343739 1599 | ], 1600 | [ 1601 | 94.99999999999989, 1602 | -71.01562499999989 1603 | ], 1604 | [ 1605 | 96.66668701171864, 1606 | -72.68237304687489 1607 | ], 1608 | [ 1609 | 98.33331298828114, 1610 | -74.34899902343739 1611 | ], 1612 | [ 1613 | 99.99999999999989, 1614 | -76.01562499999989 1615 | ], 1616 | [ 1617 | 101.66668701171864, 1618 | -77.68237304687489 1619 | ], 1620 | [ 1621 | 103.33331298828114, 1622 | -79.34899902343739 1623 | ], 1624 | [ 1625 | 103.33331298828114, 1626 | -81.01562499999989 1627 | ], 1628 | [ 1629 | 104.99999999999989, 1630 | -82.68231201171864 1631 | ], 1632 | [ 1633 | 104.99999999999989, 1634 | -82.68231201171864 1635 | ] 1636 | ], 1637 | "lastCommittedPoint": null, 1638 | "simulatePressure": true, 1639 | "pressures": [] 1640 | }, 1641 | { 1642 | "type": "freedraw", 1643 | "version": 120, 1644 | "versionNonce": 928329259, 1645 | "isDeleted": false, 1646 | "id": "_Qnm4UG0XDwOVuHq2vqJ5", 1647 | "fillStyle": "solid", 1648 | "strokeWidth": 2, 1649 | "strokeStyle": "solid", 1650 | "roughness": 1, 1651 | "opacity": 100, 1652 | "angle": 0, 1653 | "x": 790.1626102508058, 1654 | "y": 958.9696742466516, 1655 | "strokeColor": "#e03131", 1656 | "backgroundColor": "transparent", 1657 | "width": 35, 1658 | "height": 39.999938964843636, 1659 | "seed": 359777061, 1660 | "groupIds": [], 1661 | "frameId": null, 1662 | "roundness": null, 1663 | "boundElements": [], 1664 | "updated": 1704709768764, 1665 | "link": null, 1666 | "locked": false, 1667 | "points": [ 1668 | [ 1669 | 0, 1670 | 0 1671 | ], 1672 | [ 1673 | 1.66668701171875, 1674 | 0.6510009765625 1675 | ], 1676 | [ 1677 | 5, 1678 | 0.6510009765625 1679 | ], 1680 | [ 1681 | 8.33331298828125, 1682 | 0.6510009765625 1683 | ], 1684 | [ 1685 | 11.66668701171875, 1686 | -1.015625 1687 | ], 1688 | [ 1689 | 16.66668701171875, 1690 | -1.015625 1691 | ], 1692 | [ 1693 | 21.66668701171875, 1694 | -2.68231201171875 1695 | ], 1696 | [ 1697 | 26.66668701171875, 1698 | -2.68231201171875 1699 | ], 1700 | [ 1701 | 30, 1702 | -2.68231201171875 1703 | ], 1704 | [ 1705 | 31.66668701171875, 1706 | -2.68231201171875 1707 | ], 1708 | [ 1709 | 31.66668701171875, 1710 | -1.015625 1711 | ], 1712 | [ 1713 | 33.33331298828125, 1714 | 2.31768798828125 1715 | ], 1716 | [ 1717 | 33.33331298828125, 1718 | 7.31768798828125 1719 | ], 1720 | [ 1721 | 33.33331298828125, 1722 | 12.317626953125 1723 | ], 1724 | [ 1725 | 35, 1726 | 17.317626953125 1727 | ], 1728 | [ 1729 | 35, 1730 | 20.6510009765625 1731 | ], 1732 | [ 1733 | 35, 1734 | 23.984375 1735 | ], 1736 | [ 1737 | 35, 1738 | 27.317626953125 1739 | ], 1740 | [ 1741 | 35, 1742 | 28.984375 1743 | ], 1744 | [ 1745 | 35, 1746 | 32.317626953125 1747 | ], 1748 | [ 1749 | 35, 1750 | 33.984374999999886 1751 | ], 1752 | [ 1753 | 35, 1754 | 35.651000976562386 1755 | ], 1756 | [ 1757 | 33.33331298828125, 1758 | 35.651000976562386 1759 | ], 1760 | [ 1761 | 31.66668701171875, 1762 | 37.317626953124886 1763 | ], 1764 | [ 1765 | 30, 1766 | 37.317626953124886 1767 | ], 1768 | [ 1769 | 30, 1770 | 37.317626953124886 1771 | ] 1772 | ], 1773 | "lastCommittedPoint": null, 1774 | "simulatePressure": true, 1775 | "pressures": [] 1776 | }, 1777 | { 1778 | "type": "freedraw", 1779 | "version": 119, 1780 | "versionNonce": 75772107, 1781 | "isDeleted": false, 1782 | "id": "hslf0kUzcRg2v5UiCIrAf", 1783 | "fillStyle": "solid", 1784 | "strokeWidth": 2, 1785 | "strokeStyle": "solid", 1786 | "roughness": 1, 1787 | "opacity": 100, 1788 | "angle": 0, 1789 | "x": 725.1626102508059, 1790 | "y": 1015.636300223214, 1791 | "strokeColor": "#e03131", 1792 | "backgroundColor": "transparent", 1793 | "width": 26.666687011718636, 1794 | "height": 55.6510009765625, 1795 | "seed": 2007562821, 1796 | "groupIds": [], 1797 | "frameId": null, 1798 | "roundness": null, 1799 | "boundElements": [], 1800 | "updated": 1704709768764, 1801 | "link": null, 1802 | "locked": false, 1803 | "points": [ 1804 | [ 1805 | 0, 1806 | 0 1807 | ], 1808 | [ 1809 | -1.66668701171875, 1810 | 6.6666259765625 1811 | ], 1812 | [ 1813 | -3.33331298828125, 1814 | 8.984375 1815 | ], 1816 | [ 1817 | -6.66668701171875, 1818 | 13.984375 1819 | ], 1820 | [ 1821 | -8.33331298828125, 1822 | 18.984375 1823 | ], 1824 | [ 1825 | -11.66668701171875, 1826 | 22.3177490234375 1827 | ], 1828 | [ 1829 | -13.33331298828125, 1830 | 27.3177490234375 1831 | ], 1832 | [ 1833 | -15, 1834 | 30.6510009765625 1835 | ], 1836 | [ 1837 | -15, 1838 | 33.984375 1839 | ], 1840 | [ 1841 | -15, 1842 | 38.984375 1843 | ], 1844 | [ 1845 | -15, 1846 | 43.984375 1847 | ], 1848 | [ 1849 | -15, 1850 | 47.3177490234375 1851 | ], 1852 | [ 1853 | -13.33331298828125, 1854 | 50.6510009765625 1855 | ], 1856 | [ 1857 | -11.66668701171875, 1858 | 53.984375 1859 | ], 1860 | [ 1861 | -8.33331298828125, 1862 | 55.6510009765625 1863 | ], 1864 | [ 1865 | -5, 1866 | 55.6510009765625 1867 | ], 1868 | [ 1869 | -3.33331298828125, 1870 | 55.6510009765625 1871 | ], 1872 | [ 1873 | -1.66668701171875, 1874 | 55.6510009765625 1875 | ], 1876 | [ 1877 | 1.66668701171875, 1878 | 55.6510009765625 1879 | ], 1880 | [ 1881 | 3.33331298828125, 1882 | 55.6510009765625 1883 | ], 1884 | [ 1885 | 5, 1886 | 52.3177490234375 1887 | ], 1888 | [ 1889 | 8.33331298828125, 1890 | 45.6510009765625 1891 | ], 1892 | [ 1893 | 9.999999999999886, 1894 | 42.3177490234375 1895 | ], 1896 | [ 1897 | 11.666687011718636, 1898 | 38.984375 1899 | ], 1900 | [ 1901 | 11.666687011718636, 1902 | 38.984375 1903 | ] 1904 | ], 1905 | "lastCommittedPoint": null, 1906 | "simulatePressure": true, 1907 | "pressures": [] 1908 | }, 1909 | { 1910 | "type": "freedraw", 1911 | "version": 115, 1912 | "versionNonce": 1710874475, 1913 | "isDeleted": false, 1914 | "id": "6YeBiIyFFeVcncwmIhRS4", 1915 | "fillStyle": "solid", 1916 | "strokeWidth": 2, 1917 | "strokeStyle": "solid", 1918 | "roughness": 1, 1919 | "opacity": 100, 1920 | "angle": 0, 1921 | "x": 923.495923239087, 1922 | "y": 853.9696742466516, 1923 | "strokeColor": "#e03131", 1924 | "backgroundColor": "transparent", 1925 | "width": 90, 1926 | "height": 89.3489990234375, 1927 | "seed": 822390277, 1928 | "groupIds": [], 1929 | "frameId": null, 1930 | "roundness": null, 1931 | "boundElements": [], 1932 | "updated": 1704709768764, 1933 | "link": null, 1934 | "locked": false, 1935 | "points": [ 1936 | [ 1937 | 0, 1938 | 0 1939 | ], 1940 | [ 1941 | 3.3333740234375, 1942 | -3.3333740234375 1943 | ], 1944 | [ 1945 | 6.66668701171875, 1946 | -2.68231201171875 1947 | ], 1948 | [ 1949 | 10, 1950 | -7.68231201171875 1951 | ], 1952 | [ 1953 | 15, 1954 | -9.3489990234375 1955 | ], 1956 | [ 1957 | 20, 1958 | -14.3489990234375 1959 | ], 1960 | [ 1961 | 25, 1962 | -19.3489990234375 1963 | ], 1964 | [ 1965 | 31.66668701171875, 1966 | -24.3489990234375 1967 | ], 1968 | [ 1969 | 38.3333740234375, 1970 | -32.68231201171875 1971 | ], 1972 | [ 1973 | 46.66668701171875, 1974 | -39.3489990234375 1975 | ], 1976 | [ 1977 | 53.3333740234375, 1978 | -47.68231201171875 1979 | ], 1980 | [ 1981 | 60, 1982 | -54.3489990234375 1983 | ], 1984 | [ 1985 | 66.66668701171875, 1986 | -62.68231201171875 1987 | ], 1988 | [ 1989 | 73.3333740234375, 1990 | -69.3489990234375 1991 | ], 1992 | [ 1993 | 78.3333740234375, 1994 | -76.015625 1995 | ], 1996 | [ 1997 | 83.3333740234375, 1998 | -81.015625 1999 | ], 2000 | [ 2001 | 85, 2002 | -84.3489990234375 2003 | ], 2004 | [ 2005 | 88.3333740234375, 2006 | -87.68231201171875 2007 | ], 2008 | [ 2009 | 88.3333740234375, 2010 | -89.3489990234375 2011 | ], 2012 | [ 2013 | 90, 2014 | -89.3489990234375 2015 | ], 2016 | [ 2017 | 90, 2018 | -89.3489990234375 2019 | ] 2020 | ], 2021 | "lastCommittedPoint": null, 2022 | "simulatePressure": true, 2023 | "pressures": [] 2024 | }, 2025 | { 2026 | "type": "freedraw", 2027 | "version": 122, 2028 | "versionNonce": 1979759115, 2029 | "isDeleted": false, 2030 | "id": "mAaOZuKVXyjS3tfZzGkch", 2031 | "fillStyle": "solid", 2032 | "strokeWidth": 2, 2033 | "strokeStyle": "solid", 2034 | "roughness": 1, 2035 | "opacity": 100, 2036 | "angle": 0, 2037 | "x": 986.8292972625245, 2038 | "y": 757.3029872349329, 2039 | "strokeColor": "#e03131", 2040 | "backgroundColor": "transparent", 2041 | "width": 45, 2042 | "height": 25, 2043 | "seed": 1556479045, 2044 | "groupIds": [], 2045 | "frameId": null, 2046 | "roundness": null, 2047 | "boundElements": [], 2048 | "updated": 1704709768764, 2049 | "link": null, 2050 | "locked": false, 2051 | "points": [ 2052 | [ 2053 | 0, 2054 | 0 2055 | ], 2056 | [ 2057 | 3.33331298828125, 2058 | 0 2059 | ], 2060 | [ 2061 | 5, 2062 | 0.65106201171875 2063 | ], 2064 | [ 2065 | 10, 2066 | 0.65106201171875 2067 | ], 2068 | [ 2069 | 13.333251953125, 2070 | 0.65106201171875 2071 | ], 2072 | [ 2073 | 16.6666259765625, 2074 | -1.015625 2075 | ], 2076 | [ 2077 | 20, 2078 | -1.015625 2079 | ], 2080 | [ 2081 | 23.333251953125, 2082 | -2.68231201171875 2083 | ], 2084 | [ 2085 | 26.6666259765625, 2086 | -4.34893798828125 2087 | ], 2088 | [ 2089 | 28.333251953125, 2090 | -4.34893798828125 2091 | ], 2092 | [ 2093 | 31.6666259765625, 2094 | -6.015625 2095 | ], 2096 | [ 2097 | 33.333251953125, 2098 | -6.015625 2099 | ], 2100 | [ 2101 | 35, 2102 | -7.68231201171875 2103 | ], 2104 | [ 2105 | 38.333251953125, 2106 | -7.68231201171875 2107 | ], 2108 | [ 2109 | 40, 2110 | -7.68231201171875 2111 | ], 2112 | [ 2113 | 41.6666259765625, 2114 | -7.68231201171875 2115 | ], 2116 | [ 2117 | 43.333251953125, 2118 | -7.68231201171875 2119 | ], 2120 | [ 2121 | 45, 2122 | -7.68231201171875 2123 | ], 2124 | [ 2125 | 45, 2126 | -6.015625 2127 | ], 2128 | [ 2129 | 43.333251953125, 2130 | -2.68231201171875 2131 | ], 2132 | [ 2133 | 41.6666259765625, 2134 | -1.015625 2135 | ], 2136 | [ 2137 | 40, 2138 | 2.31768798828125 2139 | ], 2140 | [ 2141 | 36.6666259765625, 2142 | 5.65106201171875 2143 | ], 2144 | [ 2145 | 35, 2146 | 8.984375 2147 | ], 2148 | [ 2149 | 33.333251953125, 2150 | 12.31768798828125 2151 | ], 2152 | [ 2153 | 30, 2154 | 15.65106201171875 2155 | ], 2156 | [ 2157 | 30, 2158 | 17.31768798828125 2159 | ], 2160 | [ 2161 | 30, 2162 | 17.31768798828125 2163 | ] 2164 | ], 2165 | "lastCommittedPoint": null, 2166 | "simulatePressure": true, 2167 | "pressures": [] 2168 | }, 2169 | { 2170 | "type": "freedraw", 2171 | "version": 121, 2172 | "versionNonce": 563298475, 2173 | "isDeleted": false, 2174 | "id": "cYamgQaol95Tk2lDfwCCa", 2175 | "fillStyle": "solid", 2176 | "strokeWidth": 2, 2177 | "strokeStyle": "solid", 2178 | "roughness": 1, 2179 | "opacity": 100, 2180 | "angle": 0, 2181 | "x": 926.8292972625245, 2182 | "y": 820.6363002232141, 2183 | "strokeColor": "#e03131", 2184 | "backgroundColor": "transparent", 2185 | "width": 51.6666259765625, 2186 | "height": 43.984375, 2187 | "seed": 1531449893, 2188 | "groupIds": [], 2189 | "frameId": null, 2190 | "roundness": null, 2191 | "boundElements": [], 2192 | "updated": 1704709768764, 2193 | "link": null, 2194 | "locked": false, 2195 | "points": [ 2196 | [ 2197 | 0, 2198 | 0 2199 | ], 2200 | [ 2201 | 0, 2202 | 8.3333740234375 2203 | ], 2204 | [ 2205 | 0, 2206 | 10.65106201171875 2207 | ], 2208 | [ 2209 | 1.6666259765625, 2210 | 12.3177490234375 2211 | ], 2212 | [ 2213 | 1.6666259765625, 2214 | 15.65106201171875 2215 | ], 2216 | [ 2217 | 3.33331298828125, 2218 | 17.3177490234375 2219 | ], 2220 | [ 2221 | 3.33331298828125, 2222 | 20.65106201171875 2223 | ], 2224 | [ 2225 | 3.33331298828125, 2226 | 23.984375 2227 | ], 2228 | [ 2229 | 5, 2230 | 25.65106201171875 2231 | ], 2232 | [ 2233 | 5, 2234 | 30.65106201171875 2235 | ], 2236 | [ 2237 | 5, 2238 | 32.3177490234375 2239 | ], 2240 | [ 2241 | 6.6666259765625, 2242 | 35.65106201171875 2243 | ], 2244 | [ 2245 | 10, 2246 | 38.984375 2247 | ], 2248 | [ 2249 | 13.33331298828125, 2250 | 40.65106201171875 2251 | ], 2252 | [ 2253 | 16.6666259765625, 2254 | 43.984375 2255 | ], 2256 | [ 2257 | 21.6666259765625, 2258 | 43.984375 2259 | ], 2260 | [ 2261 | 25, 2262 | 43.984375 2263 | ], 2264 | [ 2265 | 30, 2266 | 43.984375 2267 | ], 2268 | [ 2269 | 33.33331298828125, 2270 | 43.984375 2271 | ], 2272 | [ 2273 | 38.33331298828125, 2274 | 42.3177490234375 2275 | ], 2276 | [ 2277 | 41.6666259765625, 2278 | 40.65106201171875 2279 | ], 2280 | [ 2281 | 45, 2282 | 37.3177490234375 2283 | ], 2284 | [ 2285 | 46.6666259765625, 2286 | 33.984375 2287 | ], 2288 | [ 2289 | 48.33331298828125, 2290 | 30.65106201171875 2291 | ], 2292 | [ 2293 | 51.6666259765625, 2294 | 25.65106201171875 2295 | ], 2296 | [ 2297 | 51.6666259765625, 2298 | 23.984375 2299 | ], 2300 | [ 2301 | 51.6666259765625, 2302 | 23.984375 2303 | ] 2304 | ], 2305 | "lastCommittedPoint": null, 2306 | "simulatePressure": true, 2307 | "pressures": [] 2308 | }, 2309 | { 2310 | "type": "freedraw", 2311 | "version": 119, 2312 | "versionNonce": 1381757771, 2313 | "isDeleted": false, 2314 | "id": "9b52cf_bfXbbaF17CcKZ2", 2315 | "fillStyle": "solid", 2316 | "strokeWidth": 2, 2317 | "strokeStyle": "solid", 2318 | "roughness": 1, 2319 | "opacity": 100, 2320 | "angle": 0, 2321 | "x": 1071.8292972625245, 2322 | "y": 625.6363002232142, 2323 | "strokeColor": "#e03131", 2324 | "backgroundColor": "transparent", 2325 | "width": 6.666748046875, 2326 | "height": 109.34893798828125, 2327 | "seed": 1748318373, 2328 | "groupIds": [], 2329 | "frameId": null, 2330 | "roundness": null, 2331 | "boundElements": [], 2332 | "updated": 1704709768764, 2333 | "link": null, 2334 | "locked": false, 2335 | "points": [ 2336 | [ 2337 | 0, 2338 | 0 2339 | ], 2340 | [ 2341 | 0, 2342 | -2.6822509765625 2343 | ], 2344 | [ 2345 | 0, 2346 | -7.6822509765625 2347 | ], 2348 | [ 2349 | 0, 2350 | -14.34893798828125 2351 | ], 2352 | [ 2353 | 0, 2354 | -21.015625 2355 | ], 2356 | [ 2357 | 0, 2358 | -29.34893798828125 2359 | ], 2360 | [ 2361 | 0, 2362 | -36.015625 2363 | ], 2364 | [ 2365 | 0, 2366 | -41.015625 2367 | ], 2368 | [ 2369 | 0, 2370 | -49.34893798828125 2371 | ], 2372 | [ 2373 | -1.666748046875, 2374 | -54.34893798828125 2375 | ], 2376 | [ 2377 | -1.666748046875, 2378 | -57.6822509765625 2379 | ], 2380 | [ 2381 | -3.3333740234375, 2382 | -61.015625 2383 | ], 2384 | [ 2385 | -3.3333740234375, 2386 | -69.34893798828125 2387 | ], 2388 | [ 2389 | -5, 2390 | -74.34893798828125 2391 | ], 2392 | [ 2393 | -5, 2394 | -81.015625 2395 | ], 2396 | [ 2397 | -6.666748046875, 2398 | -84.34893798828125 2399 | ], 2400 | [ 2401 | -6.666748046875, 2402 | -91.015625 2403 | ], 2404 | [ 2405 | -6.666748046875, 2406 | -96.015625 2407 | ], 2408 | [ 2409 | -6.666748046875, 2410 | -97.6822509765625 2411 | ], 2412 | [ 2413 | -6.666748046875, 2414 | -101.015625 2415 | ], 2416 | [ 2417 | -6.666748046875, 2418 | -104.34893798828125 2419 | ], 2420 | [ 2421 | -6.666748046875, 2422 | -106.015625 2423 | ], 2424 | [ 2425 | -6.666748046875, 2426 | -107.6822509765625 2427 | ], 2428 | [ 2429 | -6.666748046875, 2430 | -109.34893798828125 2431 | ], 2432 | [ 2433 | -6.666748046875, 2434 | -109.34893798828125 2435 | ] 2436 | ], 2437 | "lastCommittedPoint": null, 2438 | "simulatePressure": true, 2439 | "pressures": [] 2440 | }, 2441 | { 2442 | "type": "freedraw", 2443 | "version": 122, 2444 | "versionNonce": 1488277995, 2445 | "isDeleted": false, 2446 | "id": "9EzMzUruXiyphkUYmv1tx", 2447 | "fillStyle": "solid", 2448 | "strokeWidth": 2, 2449 | "strokeStyle": "solid", 2450 | "roughness": 1, 2451 | "opacity": 100, 2452 | "angle": 0, 2453 | "x": 1053.495923239087, 2454 | "y": 550.6363002232142, 2455 | "strokeColor": "#e03131", 2456 | "backgroundColor": "transparent", 2457 | "width": 36.6666259765625, 2458 | "height": 56.66668701171875, 2459 | "seed": 381662309, 2460 | "groupIds": [], 2461 | "frameId": null, 2462 | "roundness": null, 2463 | "boundElements": [], 2464 | "updated": 1704709768764, 2465 | "link": null, 2466 | "locked": false, 2467 | "points": [ 2468 | [ 2469 | 0, 2470 | 0 2471 | ], 2472 | [ 2473 | 0, 2474 | -3.33331298828125 2475 | ], 2476 | [ 2477 | 0, 2478 | -6.015625 2479 | ], 2480 | [ 2481 | 0, 2482 | -7.6822509765625 2483 | ], 2484 | [ 2485 | 0, 2486 | -11.015625 2487 | ], 2488 | [ 2489 | 3.3333740234375, 2490 | -14.34893798828125 2491 | ], 2492 | [ 2493 | 3.3333740234375, 2494 | -17.6822509765625 2495 | ], 2496 | [ 2497 | 5, 2498 | -21.015625 2499 | ], 2500 | [ 2501 | 6.6666259765625, 2502 | -24.34893798828125 2503 | ], 2504 | [ 2505 | 8.3333740234375, 2506 | -29.34893798828125 2507 | ], 2508 | [ 2509 | 10, 2510 | -32.6822509765625 2511 | ], 2512 | [ 2513 | 10, 2514 | -36.015625 2515 | ], 2516 | [ 2517 | 10, 2518 | -39.34893798828125 2519 | ], 2520 | [ 2521 | 10, 2522 | -41.015625 2523 | ], 2524 | [ 2525 | 11.6666259765625, 2526 | -42.6822509765625 2527 | ], 2528 | [ 2529 | 11.6666259765625, 2530 | -44.34893798828125 2531 | ], 2532 | [ 2533 | 11.6666259765625, 2534 | -42.6822509765625 2535 | ], 2536 | [ 2537 | 13.3333740234375, 2538 | -37.6822509765625 2539 | ], 2540 | [ 2541 | 15, 2542 | -31.015625 2543 | ], 2544 | [ 2545 | 18.3333740234375, 2546 | -21.015625 2547 | ], 2548 | [ 2549 | 20, 2550 | -12.6822509765625 2551 | ], 2552 | [ 2553 | 25, 2554 | -4.34893798828125 2555 | ], 2556 | [ 2557 | 26.6666259765625, 2558 | 2.3177490234375 2559 | ], 2560 | [ 2561 | 30, 2562 | 5.65106201171875 2563 | ], 2564 | [ 2565 | 31.6666259765625, 2566 | 8.984375 2567 | ], 2568 | [ 2569 | 33.3333740234375, 2570 | 10.65106201171875 2571 | ], 2572 | [ 2573 | 36.6666259765625, 2574 | 12.3177490234375 2575 | ], 2576 | [ 2577 | 36.6666259765625, 2578 | 12.3177490234375 2579 | ] 2580 | ], 2581 | "lastCommittedPoint": null, 2582 | "simulatePressure": true, 2583 | "pressures": [] 2584 | }, 2585 | { 2586 | "type": "freedraw", 2587 | "version": 124, 2588 | "versionNonce": 363453579, 2589 | "isDeleted": false, 2590 | "id": "-WSIzkiOHdl5b1H6Wx6rB", 2591 | "fillStyle": "solid", 2592 | "strokeWidth": 2, 2593 | "strokeStyle": "solid", 2594 | "roughness": 1, 2595 | "opacity": 100, 2596 | "angle": 0, 2597 | "x": 1058.495923239087, 2598 | "y": 602.302987234933, 2599 | "strokeColor": "#e03131", 2600 | "backgroundColor": "transparent", 2601 | "width": 43.3333740234375, 2602 | "height": 25, 2603 | "seed": 133191237, 2604 | "groupIds": [], 2605 | "frameId": null, 2606 | "roundness": null, 2607 | "boundElements": [], 2608 | "updated": 1704709768764, 2609 | "link": null, 2610 | "locked": false, 2611 | "points": [ 2612 | [ 2613 | 0, 2614 | 0 2615 | ], 2616 | [ 2617 | 0, 2618 | 2.31768798828125 2619 | ], 2620 | [ 2621 | 1.6666259765625, 2622 | 5.65106201171875 2623 | ], 2624 | [ 2625 | 3.3333740234375, 2626 | 8.984375 2627 | ], 2628 | [ 2629 | 5, 2630 | 10.65106201171875 2631 | ], 2632 | [ 2633 | 6.6666259765625, 2634 | 12.31768798828125 2635 | ], 2636 | [ 2637 | 8.3333740234375, 2638 | 15.65106201171875 2639 | ], 2640 | [ 2641 | 11.6666259765625, 2642 | 17.31768798828125 2643 | ], 2644 | [ 2645 | 13.3333740234375, 2646 | 18.984375 2647 | ], 2648 | [ 2649 | 16.6666259765625, 2650 | 18.984375 2651 | ], 2652 | [ 2653 | 18.3333740234375, 2654 | 20.65106201171875 2655 | ], 2656 | [ 2657 | 20, 2658 | 20.65106201171875 2659 | ], 2660 | [ 2661 | 21.6666259765625, 2662 | 20.65106201171875 2663 | ], 2664 | [ 2665 | 25, 2666 | 20.65106201171875 2667 | ], 2668 | [ 2669 | 26.6666259765625, 2670 | 20.65106201171875 2671 | ], 2672 | [ 2673 | 28.3333740234375, 2674 | 20.65106201171875 2675 | ], 2676 | [ 2677 | 31.6666259765625, 2678 | 20.65106201171875 2679 | ], 2680 | [ 2681 | 35, 2682 | 20.65106201171875 2683 | ], 2684 | [ 2685 | 36.6666259765625, 2686 | 20.65106201171875 2687 | ], 2688 | [ 2689 | 40, 2690 | 17.31768798828125 2691 | ], 2692 | [ 2693 | 40, 2694 | 15.65106201171875 2695 | ], 2696 | [ 2697 | 41.6666259765625, 2698 | 12.31768798828125 2699 | ], 2700 | [ 2701 | 43.3333740234375, 2702 | 8.984375 2703 | ], 2704 | [ 2705 | 43.3333740234375, 2706 | 7.31768798828125 2707 | ], 2708 | [ 2709 | 43.3333740234375, 2710 | 3.984375 2711 | ], 2712 | [ 2713 | 43.3333740234375, 2714 | 0.65106201171875 2715 | ], 2716 | [ 2717 | 43.3333740234375, 2718 | -1.015625 2719 | ], 2720 | [ 2721 | 43.3333740234375, 2722 | -2.68231201171875 2723 | ], 2724 | [ 2725 | 43.3333740234375, 2726 | -4.34893798828125 2727 | ], 2728 | [ 2729 | 43.3333740234375, 2730 | -4.34893798828125 2731 | ] 2732 | ], 2733 | "lastCommittedPoint": null, 2734 | "simulatePressure": true, 2735 | "pressures": [] 2736 | }, 2737 | { 2738 | "type": "freedraw", 2739 | "version": 116, 2740 | "versionNonce": 1693717291, 2741 | "isDeleted": false, 2742 | "id": "dsJ2nRhMKKb3uadTw_Mag", 2743 | "fillStyle": "solid", 2744 | "strokeWidth": 2, 2745 | "strokeStyle": "solid", 2746 | "roughness": 1, 2747 | "opacity": 100, 2748 | "angle": 0, 2749 | "x": 1011.8292972625245, 2750 | "y": 520.6363002232142, 2751 | "strokeColor": "#e03131", 2752 | "backgroundColor": "transparent", 2753 | "width": 106.66668701171875, 2754 | "height": 107.3177490234375, 2755 | "seed": 1643194085, 2756 | "groupIds": [], 2757 | "frameId": null, 2758 | "roundness": null, 2759 | "boundElements": [], 2760 | "updated": 1704709768764, 2761 | "link": null, 2762 | "locked": false, 2763 | "points": [ 2764 | [ 2765 | 0, 2766 | 0 2767 | ], 2768 | [ 2769 | -3.3333740234375, 2770 | 5 2771 | ], 2772 | [ 2773 | -5, 2774 | 7.3177490234375 2775 | ], 2776 | [ 2777 | -6.666748046875, 2778 | 8.984375 2779 | ], 2780 | [ 2781 | -10, 2782 | 15.65106201171875 2783 | ], 2784 | [ 2785 | -13.3333740234375, 2786 | 18.984375 2787 | ], 2788 | [ 2789 | -18.3333740234375, 2790 | 23.984375 2791 | ], 2792 | [ 2793 | -23.3333740234375, 2794 | 28.984375 2795 | ], 2796 | [ 2797 | -30, 2798 | 35.65106201171875 2799 | ], 2800 | [ 2801 | -38.3333740234375, 2802 | 43.984375 2803 | ], 2804 | [ 2805 | -48.3333740234375, 2806 | 50.65106201171875 2807 | ], 2808 | [ 2809 | -58.3333740234375, 2810 | 60.65106201171875 2811 | ], 2812 | [ 2813 | -68.3333740234375, 2814 | 68.984375 2815 | ], 2816 | [ 2817 | -80, 2818 | 78.984375 2819 | ], 2820 | [ 2821 | -86.66668701171875, 2822 | 88.984375 2823 | ], 2824 | [ 2825 | -95, 2826 | 95.65106201171875 2827 | ], 2828 | [ 2829 | -100, 2830 | 100.65106201171875 2831 | ], 2832 | [ 2833 | -103.3333740234375, 2834 | 103.984375 2835 | ], 2836 | [ 2837 | -105, 2838 | 105.65106201171875 2839 | ], 2840 | [ 2841 | -106.66668701171875, 2842 | 105.65106201171875 2843 | ], 2844 | [ 2845 | -106.66668701171875, 2846 | 107.3177490234375 2847 | ], 2848 | [ 2849 | -106.66668701171875, 2850 | 107.3177490234375 2851 | ] 2852 | ], 2853 | "lastCommittedPoint": null, 2854 | "simulatePressure": true, 2855 | "pressures": [] 2856 | }, 2857 | { 2858 | "type": "freedraw", 2859 | "version": 121, 2860 | "versionNonce": 1191081419, 2861 | "isDeleted": false, 2862 | "id": "2JRnyK3xJ2NyS1yVz_C5c", 2863 | "fillStyle": "solid", 2864 | "strokeWidth": 2, 2865 | "strokeStyle": "solid", 2866 | "roughness": 1, 2867 | "opacity": 100, 2868 | "angle": 0, 2869 | "x": 898.495923239087, 2870 | "y": 600.6363002232142, 2871 | "strokeColor": "#e03131", 2872 | "backgroundColor": "transparent", 2873 | "width": 41.66668701171875, 2874 | "height": 38.984375, 2875 | "seed": 761897093, 2876 | "groupIds": [], 2877 | "frameId": null, 2878 | "roundness": null, 2879 | "boundElements": [], 2880 | "updated": 1704709768764, 2881 | "link": null, 2882 | "locked": false, 2883 | "points": [ 2884 | [ 2885 | 0, 2886 | 0 2887 | ], 2888 | [ 2889 | -1.6666259765625, 2890 | 5 2891 | ], 2892 | [ 2893 | -1.6666259765625, 2894 | 7.3177490234375 2895 | ], 2896 | [ 2897 | -3.33331298828125, 2898 | 10.65106201171875 2899 | ], 2900 | [ 2901 | -3.33331298828125, 2902 | 13.984375 2903 | ], 2904 | [ 2905 | -3.33331298828125, 2906 | 18.984375 2907 | ], 2908 | [ 2909 | -3.33331298828125, 2910 | 22.3177490234375 2911 | ], 2912 | [ 2913 | -3.33331298828125, 2914 | 27.3177490234375 2915 | ], 2916 | [ 2917 | -1.6666259765625, 2918 | 30.65106201171875 2919 | ], 2920 | [ 2921 | 1.66668701171875, 2922 | 33.984375 2923 | ], 2924 | [ 2925 | 5, 2926 | 35.65106201171875 2927 | ], 2928 | [ 2929 | 8.3333740234375, 2930 | 37.3177490234375 2931 | ], 2932 | [ 2933 | 11.66668701171875, 2934 | 38.984375 2935 | ], 2936 | [ 2937 | 16.66668701171875, 2938 | 38.984375 2939 | ], 2940 | [ 2941 | 18.3333740234375, 2942 | 38.984375 2943 | ], 2944 | [ 2945 | 23.3333740234375, 2946 | 37.3177490234375 2947 | ], 2948 | [ 2949 | 25, 2950 | 35.65106201171875 2951 | ], 2952 | [ 2953 | 26.66668701171875, 2954 | 33.984375 2955 | ], 2956 | [ 2957 | 28.3333740234375, 2958 | 30.65106201171875 2959 | ], 2960 | [ 2961 | 30, 2962 | 28.984375 2963 | ], 2964 | [ 2965 | 31.66668701171875, 2966 | 27.3177490234375 2967 | ], 2968 | [ 2969 | 33.3333740234375, 2970 | 23.984375 2971 | ], 2972 | [ 2973 | 35, 2974 | 20.65106201171875 2975 | ], 2976 | [ 2977 | 35, 2978 | 18.984375 2979 | ], 2980 | [ 2981 | 36.66668701171875, 2982 | 15.65106201171875 2983 | ], 2984 | [ 2985 | 38.3333740234375, 2986 | 15.65106201171875 2987 | ], 2988 | [ 2989 | 38.3333740234375, 2990 | 15.65106201171875 2991 | ] 2992 | ], 2993 | "lastCommittedPoint": null, 2994 | "simulatePressure": true, 2995 | "pressures": [] 2996 | }, 2997 | { 2998 | "type": "freedraw", 2999 | "version": 125, 3000 | "versionNonce": 1256424555, 3001 | "isDeleted": false, 3002 | "id": "YIjKUnbS470k99yr6a_EM", 3003 | "fillStyle": "solid", 3004 | "strokeWidth": 2, 3005 | "strokeStyle": "solid", 3006 | "roughness": 1, 3007 | "opacity": 100, 3008 | "angle": 0, 3009 | "x": 990.1626102508058, 3010 | "y": 518.9696742466517, 3011 | "strokeColor": "#e03131", 3012 | "backgroundColor": "transparent", 3013 | "width": 29.99993896484375, 3014 | "height": 46.66668701171875, 3015 | "seed": 1986492165, 3016 | "groupIds": [], 3017 | "frameId": null, 3018 | "roundness": null, 3019 | "boundElements": [], 3020 | "updated": 1704709768764, 3021 | "link": null, 3022 | "locked": false, 3023 | "points": [ 3024 | [ 3025 | 0, 3026 | 0 3027 | ], 3028 | [ 3029 | 1.66668701171875, 3030 | -1.66668701171875 3031 | ], 3032 | [ 3033 | 3.33331298828125, 3034 | -1.015625 3035 | ], 3036 | [ 3037 | 4.99993896484375, 3038 | -1.015625 3039 | ], 3040 | [ 3041 | 6.66668701171875, 3042 | -1.015625 3043 | ], 3044 | [ 3045 | 9.99993896484375, 3046 | -1.015625 3047 | ], 3048 | [ 3049 | 13.33331298828125, 3050 | -1.015625 3051 | ], 3052 | [ 3053 | 16.66668701171875, 3054 | -1.015625 3055 | ], 3056 | [ 3057 | 19.99993896484375, 3058 | -1.015625 3059 | ], 3060 | [ 3061 | 21.66668701171875, 3062 | -1.015625 3063 | ], 3064 | [ 3065 | 24.99993896484375, 3066 | -2.68231201171875 3067 | ], 3068 | [ 3069 | 26.66668701171875, 3070 | -2.68231201171875 3071 | ], 3072 | [ 3073 | 26.66668701171875, 3074 | -4.3489990234375 3075 | ], 3076 | [ 3077 | 28.33331298828125, 3078 | -4.3489990234375 3079 | ], 3080 | [ 3081 | 28.33331298828125, 3082 | -2.68231201171875 3083 | ], 3084 | [ 3085 | 28.33331298828125, 3086 | 0.6510009765625 3087 | ], 3088 | [ 3089 | 28.33331298828125, 3090 | 3.984375 3091 | ], 3092 | [ 3093 | 29.99993896484375, 3094 | 7.31768798828125 3095 | ], 3096 | [ 3097 | 29.99993896484375, 3098 | 8.984375 3099 | ], 3100 | [ 3101 | 29.99993896484375, 3102 | 12.31768798828125 3103 | ], 3104 | [ 3105 | 29.99993896484375, 3106 | 15.6510009765625 3107 | ], 3108 | [ 3109 | 29.99993896484375, 3110 | 18.984375 3111 | ], 3112 | [ 3113 | 29.99993896484375, 3114 | 22.31768798828125 3115 | ], 3116 | [ 3117 | 28.33331298828125, 3118 | 25.6510009765625 3119 | ], 3120 | [ 3121 | 28.33331298828125, 3122 | 28.984375 3123 | ], 3124 | [ 3125 | 26.66668701171875, 3126 | 32.31768798828125 3127 | ], 3128 | [ 3129 | 26.66668701171875, 3130 | 35.6510009765625 3131 | ], 3132 | [ 3133 | 26.66668701171875, 3134 | 38.984375 3135 | ], 3136 | [ 3137 | 26.66668701171875, 3138 | 40.6510009765625 3139 | ], 3140 | [ 3141 | 26.66668701171875, 3142 | 42.31768798828125 3143 | ], 3144 | [ 3145 | 26.66668701171875, 3146 | 42.31768798828125 3147 | ] 3148 | ], 3149 | "lastCommittedPoint": null, 3150 | "simulatePressure": true, 3151 | "pressures": [] 3152 | }, 3153 | { 3154 | "type": "rectangle", 3155 | "version": 177, 3156 | "versionNonce": 2035485800, 3157 | "isDeleted": false, 3158 | "id": "YR23mr3j--H8cIibs9_he", 3159 | "fillStyle": "solid", 3160 | "strokeWidth": 2, 3161 | "strokeStyle": "solid", 3162 | "roughness": 1, 3163 | "opacity": 100, 3164 | "angle": 0, 3165 | "x": -366.2540615021235, 3166 | "y": 133.39023444766076, 3167 | "strokeColor": "#1e1e1e", 3168 | "backgroundColor": "transparent", 3169 | "width": 870.8333587646482, 3170 | "height": 377.8971481323241, 3171 | "seed": 492380933, 3172 | "groupIds": [], 3173 | "frameId": null, 3174 | "roundness": { 3175 | "type": 3 3176 | }, 3177 | "boundElements": [ 3178 | { 3179 | "id": "PLuooq3WeMSV8qcvvspuB", 3180 | "type": "arrow" 3181 | } 3182 | ], 3183 | "updated": 1704710276761, 3184 | "link": null, 3185 | "locked": false 3186 | }, 3187 | { 3188 | "type": "text", 3189 | "version": 154, 3190 | "versionNonce": 1351649980, 3191 | "isDeleted": false, 3192 | "id": "inw4wG-3nuZcrimsU6Vez", 3193 | "fillStyle": "solid", 3194 | "strokeWidth": 2, 3195 | "strokeStyle": "solid", 3196 | "roughness": 1, 3197 | "opacity": 100, 3198 | "angle": 0, 3199 | "x": -345.0040615021235, 3200 | "y": 67.93453071230923, 3201 | "strokeColor": "#1e1e1e", 3202 | "backgroundColor": "transparent", 3203 | "width": 129.8584442138672, 3204 | "height": 54.99382695628756, 3205 | "seed": 950472165, 3206 | "groupIds": [], 3207 | "frameId": null, 3208 | "roundness": null, 3209 | "boundElements": [], 3210 | "updated": 1705059168760, 3211 | "link": null, 3212 | "locked": false, 3213 | "fontSize": 43.99506156503005, 3214 | "fontFamily": 1, 3215 | "text": "State", 3216 | "textAlign": "left", 3217 | "verticalAlign": "top", 3218 | "containerId": null, 3219 | "originalText": "State", 3220 | "lineHeight": 1.25, 3221 | "baseline": 38 3222 | }, 3223 | { 3224 | "type": "text", 3225 | "version": 138, 3226 | "versionNonce": 647991044, 3227 | "isDeleted": false, 3228 | "id": "UdiSz5TIDTv2CnBgo7HdL", 3229 | "fillStyle": "solid", 3230 | "strokeWidth": 2, 3231 | "strokeStyle": "solid", 3232 | "roughness": 1, 3233 | "opacity": 100, 3234 | "angle": 0, 3235 | "x": -332.92070273747504, 3236 | "y": 181.26785132998498, 3237 | "strokeColor": "#1e1e1e", 3238 | "backgroundColor": "transparent", 3239 | "width": 301.97796630859375, 3240 | "height": 48.73046875, 3241 | "seed": 1668831973, 3242 | "groupIds": [], 3243 | "frameId": null, 3244 | "roundness": null, 3245 | "boundElements": [ 3246 | { 3247 | "id": "fkyy64sAetyODL_0p3TMG", 3248 | "type": "arrow" 3249 | }, 3250 | { 3251 | "id": "Ggk1MemN9RQIIOt-GE064", 3252 | "type": "arrow" 3253 | } 3254 | ], 3255 | "updated": 1705059168762, 3256 | "link": null, 3257 | "locked": false, 3258 | "fontSize": 38.984375, 3259 | "fontFamily": 1, 3260 | "text": "CartItems = []", 3261 | "textAlign": "left", 3262 | "verticalAlign": "top", 3263 | "containerId": null, 3264 | "originalText": "CartItems = []", 3265 | "lineHeight": 1.25, 3266 | "baseline": 34 3267 | }, 3268 | { 3269 | "type": "arrow", 3270 | "version": 246, 3271 | "versionNonce": 375740229, 3272 | "isDeleted": false, 3273 | "id": "fkyy64sAetyODL_0p3TMG", 3274 | "fillStyle": "solid", 3275 | "strokeWidth": 2, 3276 | "strokeStyle": "solid", 3277 | "roughness": 1, 3278 | "opacity": 100, 3279 | "angle": 0, 3280 | "x": 602.4958622039308, 3281 | "y": 1114.6401963006876, 3282 | "strokeColor": "#1e1e1e", 3283 | "backgroundColor": "transparent", 3284 | "width": 714.5832824707028, 3285 | "height": 870.0194931030269, 3286 | "seed": 2040636363, 3287 | "groupIds": [], 3288 | "frameId": null, 3289 | "roundness": { 3290 | "type": 2 3291 | }, 3292 | "boundElements": [], 3293 | "updated": 1704709768769, 3294 | "link": null, 3295 | "locked": false, 3296 | "startBinding": null, 3297 | "endBinding": { 3298 | "elementId": "UdiSz5TIDTv2CnBgo7HdL", 3299 | "focus": -0.22106000049550553, 3300 | "gap": 14.622383117675781 3301 | }, 3302 | "lastCommittedPoint": null, 3303 | "startArrowhead": null, 3304 | "endArrowhead": "arrow", 3305 | "points": [ 3306 | [ 3307 | 0, 3308 | 0 3309 | ], 3310 | [ 3311 | -714.5832824707028, 3312 | -870.0194931030269 3313 | ] 3314 | ] 3315 | }, 3316 | { 3317 | "type": "arrow", 3318 | "version": 363, 3319 | "versionNonce": 1158810117, 3320 | "isDeleted": false, 3321 | "id": "Ggk1MemN9RQIIOt-GE064", 3322 | "fillStyle": "solid", 3323 | "strokeWidth": 2, 3324 | "strokeStyle": "solid", 3325 | "roughness": 1, 3326 | "opacity": 100, 3327 | "angle": 0, 3328 | "x": -22.504061502123704, 3329 | "y": 237.55691382998498, 3330 | "strokeColor": "#1e1e1e", 3331 | "backgroundColor": "transparent", 3332 | "width": 645.8333587646482, 3333 | "height": 417.4804687499999, 3334 | "seed": 448925259, 3335 | "groupIds": [], 3336 | "frameId": null, 3337 | "roundness": { 3338 | "type": 2 3339 | }, 3340 | "boundElements": [], 3341 | "updated": 1704709768769, 3342 | "link": null, 3343 | "locked": false, 3344 | "startBinding": { 3345 | "elementId": "UdiSz5TIDTv2CnBgo7HdL", 3346 | "focus": -0.5830749148390189, 3347 | "gap": 8.404891550540697 3348 | }, 3349 | "endBinding": { 3350 | "elementId": "zoe82egBMjsXg5EhXFFjV", 3351 | "focus": -0.22009637616058983, 3352 | "gap": 10.059517451695115 3353 | }, 3354 | "lastCommittedPoint": null, 3355 | "startArrowhead": null, 3356 | "endArrowhead": "arrow", 3357 | "points": [ 3358 | [ 3359 | 0, 3360 | 0 3361 | ], 3362 | [ 3363 | 645.8333587646482, 3364 | 417.4804687499999 3365 | ] 3366 | ] 3367 | }, 3368 | { 3369 | "type": "text", 3370 | "version": 283, 3371 | "versionNonce": 1076351804, 3372 | "isDeleted": false, 3373 | "id": "eqsGlB-3ku7uBGOiy2yzn", 3374 | "fillStyle": "solid", 3375 | "strokeWidth": 2, 3376 | "strokeStyle": "solid", 3377 | "roughness": 1, 3378 | "opacity": 100, 3379 | "angle": 0, 3380 | "x": -594.4485144236728, 3381 | "y": -203.84979901994961, 3382 | "strokeColor": "#1e1e1e", 3383 | "backgroundColor": "transparent", 3384 | "width": 519.5878295898438, 3385 | "height": 50.651000976562514, 3386 | "seed": 7653931, 3387 | "groupIds": [], 3388 | "frameId": null, 3389 | "roundness": null, 3390 | "boundElements": [], 3391 | "updated": 1705059168765, 3392 | "link": null, 3393 | "locked": false, 3394 | "fontSize": 40.52080078125001, 3395 | "fontFamily": 1, 3396 | "text": "Global State Management", 3397 | "textAlign": "left", 3398 | "verticalAlign": "top", 3399 | "containerId": null, 3400 | "originalText": "Global State Management", 3401 | "lineHeight": 1.25, 3402 | "baseline": 35 3403 | }, 3404 | { 3405 | "type": "text", 3406 | "version": 344, 3407 | "versionNonce": 358551172, 3408 | "isDeleted": false, 3409 | "id": "TxQ2IXqOwiasWTlqfiVax", 3410 | "fillStyle": "solid", 3411 | "strokeWidth": 2, 3412 | "strokeStyle": "solid", 3413 | "roughness": 1, 3414 | "opacity": 100, 3415 | "angle": 0, 3416 | "x": -1306.8373694041413, 3417 | "y": 1216.3430059523805, 3418 | "strokeColor": "#1e1e1e", 3419 | "backgroundColor": "transparent", 3420 | "width": 1826.8751220703125, 3421 | "height": 519.2264715879376, 3422 | "seed": 84561323, 3423 | "groupIds": [], 3424 | "frameId": null, 3425 | "roundness": null, 3426 | "boundElements": [], 3427 | "updated": 1705059168777, 3428 | "link": null, 3429 | "locked": false, 3430 | "fontSize": 83.07623545407, 3431 | "fontFamily": 1, 3432 | "text": "Redux Core ( JS Library )\n\nRedux Toolkit ( Redux Core sadeleştirilmiş )\n\nContext API ( React Feature v16 )", 3433 | "textAlign": "left", 3434 | "verticalAlign": "top", 3435 | "containerId": null, 3436 | "originalText": "Redux Core ( JS Library )\n\nRedux Toolkit ( Redux Core sadeleştirilmiş )\n\nContext API ( React Feature v16 )", 3437 | "lineHeight": 1.25, 3438 | "baseline": 488 3439 | }, 3440 | { 3441 | "type": "text", 3442 | "version": 58, 3443 | "versionNonce": 1052904380, 3444 | "isDeleted": false, 3445 | "id": "5pNoAcJFHZsHsOSKJWq3T", 3446 | "fillStyle": "solid", 3447 | "strokeWidth": 2, 3448 | "strokeStyle": "solid", 3449 | "roughness": 1, 3450 | "opacity": 100, 3451 | "angle": 0, 3452 | "x": -337.494209928646, 3453 | "y": 253.5021265423478, 3454 | "strokeColor": "#1e1e1e", 3455 | "backgroundColor": "transparent", 3456 | "width": 94.83578491210938, 3457 | "height": 51.931432088216184, 3458 | "seed": 277196904, 3459 | "groupIds": [], 3460 | "frameId": null, 3461 | "roundness": null, 3462 | "boundElements": [], 3463 | "updated": 1705059168778, 3464 | "link": null, 3465 | "locked": false, 3466 | "fontSize": 41.54514567057295, 3467 | "fontFamily": 1, 3468 | "text": "Auth", 3469 | "textAlign": "left", 3470 | "verticalAlign": "top", 3471 | "containerId": null, 3472 | "originalText": "Auth", 3473 | "lineHeight": 1.25, 3474 | "baseline": 36 3475 | }, 3476 | { 3477 | "type": "arrow", 3478 | "version": 27, 3479 | "versionNonce": 1836009320, 3480 | "isDeleted": false, 3481 | "id": "bPQ21qZRLiBp6BAJLCvoT", 3482 | "fillStyle": "solid", 3483 | "strokeWidth": 2, 3484 | "strokeStyle": "solid", 3485 | "roughness": 1, 3486 | "opacity": 100, 3487 | "angle": 0, 3488 | "x": 1352.7835508949215, 3489 | "y": 751.5707198854467, 3490 | "strokeColor": "#1e1e1e", 3491 | "backgroundColor": "transparent", 3492 | "width": 288.8888549804685, 3493 | "height": 56.098073323567746, 3494 | "seed": 1396994328, 3495 | "groupIds": [], 3496 | "frameId": null, 3497 | "roundness": { 3498 | "type": 2 3499 | }, 3500 | "boundElements": [], 3501 | "updated": 1704710239663, 3502 | "link": null, 3503 | "locked": false, 3504 | "startBinding": null, 3505 | "endBinding": null, 3506 | "lastCommittedPoint": null, 3507 | "startArrowhead": null, 3508 | "endArrowhead": "arrow", 3509 | "points": [ 3510 | [ 3511 | 0, 3512 | 0 3513 | ], 3514 | [ 3515 | 288.8888549804685, 3516 | 56.098073323567746 3517 | ] 3518 | ] 3519 | }, 3520 | { 3521 | "type": "rectangle", 3522 | "version": 49, 3523 | "versionNonce": 150158318, 3524 | "isDeleted": false, 3525 | "id": "aBqKmR2atwvvycw4s0kn1", 3526 | "fillStyle": "solid", 3527 | "strokeWidth": 2, 3528 | "strokeStyle": "solid", 3529 | "roughness": 1, 3530 | "opacity": 100, 3531 | "angle": 0, 3532 | "x": 1636.1169859535153, 3533 | "y": 856.2798873659154, 3534 | "strokeColor": "#f08c00", 3535 | "backgroundColor": "transparent", 3536 | "width": 241.66666666666674, 3537 | "height": 78.3203125, 3538 | "seed": 434248296, 3539 | "groupIds": [], 3540 | "frameId": null, 3541 | "roundness": { 3542 | "type": 3 3543 | }, 3544 | "boundElements": [ 3545 | { 3546 | "type": "text", 3547 | "id": "RWBd1aSsV4szQwg7qtV3U" 3548 | } 3549 | ], 3550 | "updated": 1704711264339, 3551 | "link": null, 3552 | "locked": false 3553 | }, 3554 | { 3555 | "type": "text", 3556 | "version": 7, 3557 | "versionNonce": 534856178, 3558 | "isDeleted": false, 3559 | "id": "RWBd1aSsV4szQwg7qtV3U", 3560 | "fillStyle": "solid", 3561 | "strokeWidth": 2, 3562 | "strokeStyle": "solid", 3563 | "roughness": 1, 3564 | "opacity": 100, 3565 | "angle": 0, 3566 | "x": 1733.5503406491534, 3567 | "y": 882.9400436159154, 3568 | "strokeColor": "#f08c00", 3569 | "backgroundColor": "transparent", 3570 | "width": 46.799957275390625, 3571 | "height": 25, 3572 | "seed": 1457754136, 3573 | "groupIds": [], 3574 | "frameId": null, 3575 | "roundness": null, 3576 | "boundElements": [], 3577 | "updated": 1704711264339, 3578 | "link": null, 3579 | "locked": false, 3580 | "fontSize": 20, 3581 | "fontFamily": 1, 3582 | "text": "Login", 3583 | "textAlign": "center", 3584 | "verticalAlign": "middle", 3585 | "containerId": "aBqKmR2atwvvycw4s0kn1", 3586 | "originalText": "Login", 3587 | "lineHeight": 1.25, 3588 | "baseline": 21 3589 | }, 3590 | { 3591 | "type": "arrow", 3592 | "version": 52, 3593 | "versionNonce": 641834008, 3594 | "isDeleted": false, 3595 | "id": "jpVq_zTmV0d0I7sgfjOej", 3596 | "fillStyle": "solid", 3597 | "strokeWidth": 2, 3598 | "strokeStyle": "solid", 3599 | "roughness": 1, 3600 | "opacity": 100, 3601 | "angle": 0, 3602 | "x": -363.8831157717449, 3603 | "y": 276.5707198854468, 3604 | "strokeColor": "#1e1e1e", 3605 | "backgroundColor": "transparent", 3606 | "width": 134.72218831380212, 3607 | "height": 18.598073323567746, 3608 | "seed": 334645352, 3609 | "groupIds": [], 3610 | "frameId": null, 3611 | "roundness": { 3612 | "type": 2 3613 | }, 3614 | "boundElements": [], 3615 | "updated": 1704710267913, 3616 | "link": null, 3617 | "locked": false, 3618 | "startBinding": null, 3619 | "endBinding": null, 3620 | "lastCommittedPoint": null, 3621 | "startArrowhead": null, 3622 | "endArrowhead": "arrow", 3623 | "points": [ 3624 | [ 3625 | 0, 3626 | 0 3627 | ], 3628 | [ 3629 | -134.72218831380212, 3630 | 18.598073323567746 3631 | ] 3632 | ] 3633 | }, 3634 | { 3635 | "type": "text", 3636 | "version": 37, 3637 | "versionNonce": 251829764, 3638 | "isDeleted": false, 3639 | "id": "b2xh5i-JPjwhq6rlwE9vM", 3640 | "fillStyle": "solid", 3641 | "strokeWidth": 2, 3642 | "strokeStyle": "solid", 3643 | "roughness": 1, 3644 | "opacity": 100, 3645 | "angle": 0, 3646 | "x": -686.655354922907, 3647 | "y": 297.1001998659155, 3648 | "strokeColor": "#1e1e1e", 3649 | "backgroundColor": "transparent", 3650 | "width": 131.05723571777344, 3651 | "height": 41.97052001953132, 3652 | "seed": 686184728, 3653 | "groupIds": [], 3654 | "frameId": null, 3655 | "roundness": null, 3656 | "boundElements": [], 3657 | "updated": 1705059168779, 3658 | "link": null, 3659 | "locked": false, 3660 | "fontSize": 33.57641601562506, 3661 | "fontFamily": 1, 3662 | "text": "Context", 3663 | "textAlign": "left", 3664 | "verticalAlign": "top", 3665 | "containerId": null, 3666 | "originalText": "Context", 3667 | "lineHeight": 1.25, 3668 | "baseline": 29 3669 | }, 3670 | { 3671 | "type": "arrow", 3672 | "version": 35, 3673 | "versionNonce": 345405800, 3674 | "isDeleted": false, 3675 | "id": "PLuooq3WeMSV8qcvvspuB", 3676 | "fillStyle": "solid", 3677 | "strokeWidth": 2, 3678 | "strokeStyle": "solid", 3679 | "roughness": 1, 3680 | "opacity": 100, 3681 | "angle": 0, 3682 | "x": -369.43863741888003, 3683 | "y": 204.3484807090145, 3684 | "strokeColor": "#1e1e1e", 3685 | "backgroundColor": "transparent", 3686 | "width": 169.4444783528645, 3687 | "height": 17.20921834309894, 3688 | "seed": 919172888, 3689 | "groupIds": [], 3690 | "frameId": null, 3691 | "roundness": { 3692 | "type": 2 3693 | }, 3694 | "boundElements": [], 3695 | "updated": 1704710276761, 3696 | "link": null, 3697 | "locked": false, 3698 | "startBinding": { 3699 | "elementId": "YR23mr3j--H8cIibs9_he", 3700 | "focus": 0.6970681214264287, 3701 | "gap": 3.1845759167565575 3702 | }, 3703 | "endBinding": null, 3704 | "lastCommittedPoint": null, 3705 | "startArrowhead": null, 3706 | "endArrowhead": "arrow", 3707 | "points": [ 3708 | [ 3709 | 0, 3710 | 0 3711 | ], 3712 | [ 3713 | -169.4444783528645, 3714 | 17.20921834309894 3715 | ] 3716 | ] 3717 | }, 3718 | { 3719 | "type": "text", 3720 | "version": 43, 3721 | "versionNonce": 1317090364, 3722 | "isDeleted": false, 3723 | "id": "c0_RKPh3hwJJffacvDIw6", 3724 | "fillStyle": "solid", 3725 | "strokeWidth": 2, 3726 | "strokeStyle": "solid", 3727 | "roughness": 1, 3728 | "opacity": 100, 3729 | "angle": 0, 3730 | "x": -686.1053040855467, 3731 | "y": 207.6687423463842, 3732 | "strokeColor": "#1e1e1e", 3733 | "backgroundColor": "transparent", 3734 | "width": 105.67332458496094, 3735 | "height": 45.18736302607163, 3736 | "seed": 1594179432, 3737 | "groupIds": [], 3738 | "frameId": null, 3739 | "roundness": null, 3740 | "boundElements": [], 3741 | "updated": 1705059168780, 3742 | "link": null, 3743 | "locked": false, 3744 | "fontSize": 36.149890420857304, 3745 | "fontFamily": 1, 3746 | "text": "Redux", 3747 | "textAlign": "left", 3748 | "verticalAlign": "top", 3749 | "containerId": null, 3750 | "originalText": "Redux", 3751 | "lineHeight": 1.25, 3752 | "baseline": 32 3753 | }, 3754 | { 3755 | "type": "text", 3756 | "version": 86, 3757 | "versionNonce": 1015561604, 3758 | "isDeleted": false, 3759 | "id": "bwql3KRl-uVVnKLPlfOBZ", 3760 | "fillStyle": "solid", 3761 | "strokeWidth": 2, 3762 | "strokeStyle": "solid", 3763 | "roughness": 1, 3764 | "opacity": 100, 3765 | "angle": 0, 3766 | "x": 260.2586955721415, 3767 | "y": -0.17649347767182633, 3768 | "strokeColor": "#1e1e1e", 3769 | "backgroundColor": "transparent", 3770 | "width": 207.46383666992188, 3771 | "height": 109.2460871191646, 3772 | "seed": 498625446, 3773 | "groupIds": [], 3774 | "frameId": null, 3775 | "roundness": null, 3776 | "boundElements": [], 3777 | "updated": 1705059168783, 3778 | "link": null, 3779 | "locked": false, 3780 | "fontSize": 87.39686969533167, 3781 | "fontFamily": 1, 3782 | "text": "Depo", 3783 | "textAlign": "left", 3784 | "verticalAlign": "top", 3785 | "containerId": null, 3786 | "originalText": "Depo", 3787 | "lineHeight": 1.25, 3788 | "baseline": 77 3789 | }, 3790 | { 3791 | "type": "rectangle", 3792 | "version": 160, 3793 | "versionNonce": 1921169018, 3794 | "isDeleted": false, 3795 | "id": "T5V9cziwe1_rTXs0p0cHX", 3796 | "fillStyle": "solid", 3797 | "strokeWidth": 2, 3798 | "strokeStyle": "solid", 3799 | "roughness": 1, 3800 | "opacity": 100, 3801 | "angle": 0, 3802 | "x": 549.5920645093108, 3803 | "y": -29.16087129380992, 3804 | "strokeColor": "#1e1e1e", 3805 | "backgroundColor": "transparent", 3806 | "width": 1641.6664886474603, 3807 | "height": 1292.480373382568, 3808 | "seed": 359456570, 3809 | "groupIds": [], 3810 | "frameId": null, 3811 | "roundness": { 3812 | "type": 3 3813 | }, 3814 | "boundElements": [], 3815 | "updated": 1704710709333, 3816 | "link": null, 3817 | "locked": false 3818 | }, 3819 | { 3820 | "type": "text", 3821 | "version": 24, 3822 | "versionNonce": 1564953788, 3823 | "isDeleted": false, 3824 | "id": "JSDmFIQ4nFCEV5PECC2Te", 3825 | "fillStyle": "solid", 3826 | "strokeWidth": 2, 3827 | "strokeStyle": "solid", 3828 | "roughness": 1, 3829 | "opacity": 100, 3830 | "angle": 0, 3831 | "x": 1475.425423273959, 3832 | "y": 71.65293714735219, 3833 | "strokeColor": "#1e1e1e", 3834 | "backgroundColor": "transparent", 3835 | "width": 143.63986206054688, 3836 | "height": 25, 3837 | "seed": 9363450, 3838 | "groupIds": [], 3839 | "frameId": null, 3840 | "roundness": null, 3841 | "boundElements": [], 3842 | "updated": 1705059168783, 3843 | "link": null, 3844 | "locked": false, 3845 | "fontSize": 20, 3846 | "fontFamily": 1, 3847 | "text": "BrowserRouter", 3848 | "textAlign": "left", 3849 | "verticalAlign": "top", 3850 | "containerId": null, 3851 | "originalText": "BrowserRouter", 3852 | "lineHeight": 1.25, 3853 | "baseline": 18 3854 | }, 3855 | { 3856 | "type": "rectangle", 3857 | "version": 106, 3858 | "versionNonce": 144346042, 3859 | "isDeleted": false, 3860 | "id": "R9Q1eRerhtTQkJp_SeqTF", 3861 | "fillStyle": "solid", 3862 | "strokeWidth": 2, 3863 | "strokeStyle": "solid", 3864 | "roughness": 1, 3865 | "opacity": 100, 3866 | "angle": 0, 3867 | "x": 518.3420645093108, 3868 | "y": -79.16087129380989, 3869 | "strokeColor": "#1e1e1e", 3870 | "backgroundColor": "transparent", 3871 | "width": 1870.8333587646478, 3872 | "height": 1390.3970909118648, 3873 | "seed": 1081820518, 3874 | "groupIds": [], 3875 | "frameId": null, 3876 | "roundness": { 3877 | "type": 3 3878 | }, 3879 | "boundElements": [ 3880 | { 3881 | "id": "bQQ7ZZXobVHBVx-C2ljbH", 3882 | "type": "arrow" 3883 | } 3884 | ], 3885 | "updated": 1704711012254, 3886 | "link": null, 3887 | "locked": false 3888 | }, 3889 | { 3890 | "type": "text", 3891 | "version": 23, 3892 | "versionNonce": 1999498500, 3893 | "isDeleted": false, 3894 | "id": "dIqfp4ZwPt_GQEMcesGCi", 3895 | "fillStyle": "solid", 3896 | "strokeWidth": 2, 3897 | "strokeStyle": "solid", 3898 | "roughness": 1, 3899 | "opacity": 100, 3900 | "angle": 0, 3901 | "x": 2245.4254232739586, 3902 | "y": -3.3470628526478094, 3903 | "strokeColor": "#1e1e1e", 3904 | "backgroundColor": "transparent", 3905 | "width": 124.31986999511719, 3906 | "height": 25, 3907 | "seed": 1165858278, 3908 | "groupIds": [], 3909 | "frameId": null, 3910 | "roundness": null, 3911 | "boundElements": [], 3912 | "updated": 1705059168784, 3913 | "link": null, 3914 | "locked": false, 3915 | "fontSize": 20, 3916 | "fontFamily": 1, 3917 | "text": "AuthProvider", 3918 | "textAlign": "left", 3919 | "verticalAlign": "top", 3920 | "containerId": null, 3921 | "originalText": "AuthProvider", 3922 | "lineHeight": 1.25, 3923 | "baseline": 18 3924 | }, 3925 | { 3926 | "type": "arrow", 3927 | "version": 30, 3928 | "versionNonce": 1772092154, 3929 | "isDeleted": false, 3930 | "id": "bQQ7ZZXobVHBVx-C2ljbH", 3931 | "fillStyle": "solid", 3932 | "strokeWidth": 2, 3933 | "strokeStyle": "solid", 3934 | "roughness": 1, 3935 | "opacity": 100, 3936 | "angle": 0, 3937 | "x": 1229.342089940626, 3938 | "y": -216.29326036241378, 3939 | "strokeColor": "#1e1e1e", 3940 | "backgroundColor": "transparent", 3941 | "width": 22.2222900390625, 3942 | "height": 131.640625, 3943 | "seed": 32452646, 3944 | "groupIds": [], 3945 | "frameId": null, 3946 | "roundness": { 3947 | "type": 2 3948 | }, 3949 | "boundElements": [], 3950 | "updated": 1704711012254, 3951 | "link": null, 3952 | "locked": false, 3953 | "startBinding": { 3954 | "elementId": "P5HMkrN5KpjjwYPCkH60K", 3955 | "focus": -0.1647305984975087, 3956 | "gap": 6.203352186414406 3957 | }, 3958 | "endBinding": { 3959 | "elementId": "R9Q1eRerhtTQkJp_SeqTF", 3960 | "focus": -0.34662985351135395, 3961 | "gap": 5.49176406860397 3962 | }, 3963 | "lastCommittedPoint": null, 3964 | "startArrowhead": null, 3965 | "endArrowhead": "arrow", 3966 | "points": [ 3967 | [ 3968 | 0, 3969 | 0 3970 | ], 3971 | [ 3972 | -22.2222900390625, 3973 | 131.640625 3974 | ] 3975 | ] 3976 | }, 3977 | { 3978 | "type": "freedraw", 3979 | "version": 36, 3980 | "versionNonce": 1095867630, 3981 | "isDeleted": false, 3982 | "id": "gkReYM166-cFXXq4mV2xt", 3983 | "fillStyle": "solid", 3984 | "strokeWidth": 2, 3985 | "strokeStyle": "solid", 3986 | "roughness": 1, 3987 | "opacity": 100, 3988 | "angle": 0, 3989 | "x": 794.2349063933852, 3990 | "y": 749.9384135897194, 3991 | "strokeColor": "#f08c00", 3992 | "backgroundColor": "transparent", 3993 | "width": 33.3333740234375, 3994 | "height": 11.6666259765625, 3995 | "seed": 1040724914, 3996 | "groupIds": [], 3997 | "frameId": null, 3998 | "roundness": null, 3999 | "boundElements": [], 4000 | "updated": 1704711267188, 4001 | "link": null, 4002 | "locked": false, 4003 | "points": [ 4004 | [ 4005 | 0, 4006 | 0 4007 | ], 4008 | [ 4009 | 5, 4010 | 0 4011 | ], 4012 | [ 4013 | 10, 4014 | 0.6510009765625 4015 | ], 4016 | [ 4017 | 13.3333740234375, 4018 | 0.6510009765625 4019 | ], 4020 | [ 4021 | 16.66668701171875, 4022 | 0.6510009765625 4023 | ], 4024 | [ 4025 | 20, 4026 | 0.6510009765625 4027 | ], 4028 | [ 4029 | 25, 4030 | 0.6510009765625 4031 | ], 4032 | [ 4033 | 28.3333740234375, 4034 | 0.6510009765625 4035 | ], 4036 | [ 4037 | 30, 4038 | -1.015625 4039 | ], 4040 | [ 4041 | 28.3333740234375, 4042 | -1.015625 4043 | ], 4044 | [ 4045 | 26.66668701171875, 4046 | -1.015625 4047 | ], 4048 | [ 4049 | 21.66668701171875, 4050 | -1.015625 4051 | ], 4052 | [ 4053 | 20, 4054 | -1.015625 4055 | ], 4056 | [ 4057 | 18.3333740234375, 4058 | 0.6510009765625 4059 | ], 4060 | [ 4061 | 15, 4062 | 2.31768798828125 4063 | ], 4064 | [ 4065 | 13.3333740234375, 4066 | 2.31768798828125 4067 | ], 4068 | [ 4069 | 11.66668701171875, 4070 | 2.31768798828125 4071 | ], 4072 | [ 4073 | 10, 4074 | 2.31768798828125 4075 | ], 4076 | [ 4077 | 10, 4078 | 3.984375 4079 | ], 4080 | [ 4081 | 11.66668701171875, 4082 | 3.984375 4083 | ], 4084 | [ 4085 | 15, 4086 | 3.984375 4087 | ], 4088 | [ 4089 | 20, 4090 | 3.984375 4091 | ], 4092 | [ 4093 | 23.3333740234375, 4094 | 3.984375 4095 | ], 4096 | [ 4097 | 26.66668701171875, 4098 | 3.984375 4099 | ], 4100 | [ 4101 | 30, 4102 | 3.984375 4103 | ], 4104 | [ 4105 | 31.66668701171875, 4106 | 3.984375 4107 | ], 4108 | [ 4109 | 28.3333740234375, 4110 | 3.984375 4111 | ], 4112 | [ 4113 | 26.66668701171875, 4114 | 3.984375 4115 | ], 4116 | [ 4117 | 25, 4118 | 3.984375 4119 | ], 4120 | [ 4121 | 25, 4122 | 5.6510009765625 4123 | ], 4124 | [ 4125 | 25, 4126 | 7.31768798828125 4127 | ], 4128 | [ 4129 | 25, 4130 | 8.984375 4131 | ], 4132 | [ 4133 | 30, 4134 | 10.6510009765625 4135 | ], 4136 | [ 4137 | 33.3333740234375, 4138 | 10.6510009765625 4139 | ], 4140 | [ 4141 | 33.3333740234375, 4142 | 10.6510009765625 4143 | ] 4144 | ], 4145 | "lastCommittedPoint": null, 4146 | "simulatePressure": true, 4147 | "pressures": [] 4148 | }, 4149 | { 4150 | "type": "freedraw", 4151 | "version": 37, 4152 | "versionNonce": 858361902, 4153 | "isDeleted": false, 4154 | "id": "aY5pd7dMrXjyE-r1sW8DL", 4155 | "fillStyle": "solid", 4156 | "strokeWidth": 2, 4157 | "strokeStyle": "solid", 4158 | "roughness": 1, 4159 | "opacity": 100, 4160 | "angle": 0, 4161 | "x": 1865.9015323699477, 4162 | "y": 963.2717265780007, 4163 | "strokeColor": "#f08c00", 4164 | "backgroundColor": "transparent", 4165 | "width": 40, 4166 | "height": 20, 4167 | "seed": 2040431282, 4168 | "groupIds": [], 4169 | "frameId": null, 4170 | "roundness": null, 4171 | "boundElements": [], 4172 | "updated": 1704711268190, 4173 | "link": null, 4174 | "locked": false, 4175 | "points": [ 4176 | [ 4177 | 0, 4178 | 0 4179 | ], 4180 | [ 4181 | 6.666748046875, 4182 | 0 4183 | ], 4184 | [ 4185 | 10, 4186 | 0.65106201171875 4187 | ], 4188 | [ 4189 | 15, 4190 | 0.65106201171875 4191 | ], 4192 | [ 4193 | 18.3333740234375, 4194 | -1.015625 4195 | ], 4196 | [ 4197 | 23.3333740234375, 4198 | -2.68231201171875 4199 | ], 4200 | [ 4201 | 26.666748046875, 4202 | -4.34893798828125 4203 | ], 4204 | [ 4205 | 30, 4206 | -4.34893798828125 4207 | ], 4208 | [ 4209 | 35, 4210 | -6.015625 4211 | ], 4212 | [ 4213 | 36.666748046875, 4214 | -6.015625 4215 | ], 4216 | [ 4217 | 38.3333740234375, 4218 | -7.68231201171875 4219 | ], 4220 | [ 4221 | 40, 4222 | -7.68231201171875 4223 | ], 4224 | [ 4225 | 38.3333740234375, 4226 | -7.68231201171875 4227 | ], 4228 | [ 4229 | 35, 4230 | -7.68231201171875 4231 | ], 4232 | [ 4233 | 31.666748046875, 4234 | -6.015625 4235 | ], 4236 | [ 4237 | 26.666748046875, 4238 | -4.34893798828125 4239 | ], 4240 | [ 4241 | 23.3333740234375, 4242 | -2.68231201171875 4243 | ], 4244 | [ 4245 | 21.666748046875, 4246 | -1.015625 4247 | ], 4248 | [ 4249 | 20, 4250 | 0.65106201171875 4251 | ], 4252 | [ 4253 | 18.3333740234375, 4254 | 0.65106201171875 4255 | ], 4256 | [ 4257 | 20, 4258 | 2.31768798828125 4259 | ], 4260 | [ 4261 | 23.3333740234375, 4262 | 2.31768798828125 4263 | ], 4264 | [ 4265 | 26.666748046875, 4266 | 2.31768798828125 4267 | ], 4268 | [ 4269 | 30, 4270 | 2.31768798828125 4271 | ], 4272 | [ 4273 | 31.666748046875, 4274 | 2.31768798828125 4275 | ], 4276 | [ 4277 | 33.3333740234375, 4278 | 2.31768798828125 4279 | ], 4280 | [ 4281 | 33.3333740234375, 4282 | 3.984375 4283 | ], 4284 | [ 4285 | 31.666748046875, 4286 | 3.984375 4287 | ], 4288 | [ 4289 | 31.666748046875, 4290 | 5.65106201171875 4291 | ], 4292 | [ 4293 | 31.666748046875, 4294 | 7.31768798828125 4295 | ], 4296 | [ 4297 | 30, 4298 | 8.984375 4299 | ], 4300 | [ 4301 | 30, 4302 | 10.65106201171875 4303 | ], 4304 | [ 4305 | 31.666748046875, 4306 | 10.65106201171875 4307 | ], 4308 | [ 4309 | 33.3333740234375, 4310 | 12.31768798828125 4311 | ], 4312 | [ 4313 | 35, 4314 | 12.31768798828125 4315 | ], 4316 | [ 4317 | 35, 4318 | 12.31768798828125 4319 | ] 4320 | ], 4321 | "lastCommittedPoint": null, 4322 | "simulatePressure": true, 4323 | "pressures": [] 4324 | }, 4325 | { 4326 | "type": "rectangle", 4327 | "version": 62, 4328 | "versionNonce": 1093152406, 4329 | "isDeleted": false, 4330 | "id": "DqPC4XN-fzn8wywn3MeL9", 4331 | "fillStyle": "solid", 4332 | "strokeWidth": 2, 4333 | "strokeStyle": "solid", 4334 | "roughness": 1, 4335 | "opacity": 100, 4336 | "angle": 0, 4337 | "x": 7.349571106925509, 4338 | "y": 162.97163754417772, 4339 | "strokeColor": "#1e1e1e", 4340 | "backgroundColor": "transparent", 4341 | "width": 118.31593831380201, 4342 | "height": 69.14062499999999, 4343 | "seed": 160469910, 4344 | "groupIds": [], 4345 | "frameId": null, 4346 | "roundness": { 4347 | "type": 3 4348 | }, 4349 | "boundElements": [], 4350 | "updated": 1704882703548, 4351 | "link": null, 4352 | "locked": false 4353 | }, 4354 | { 4355 | "type": "rectangle", 4356 | "version": 47, 4357 | "versionNonce": 1308480842, 4358 | "isDeleted": false, 4359 | "id": "YkSMjy4mW5hFp7J9PwSty", 4360 | "fillStyle": "solid", 4361 | "strokeWidth": 2, 4362 | "strokeStyle": "solid", 4363 | "roughness": 1, 4364 | "opacity": 100, 4365 | "angle": 0, 4366 | "x": 136.84611244807127, 4367 | "y": 163.7441900344121, 4368 | "strokeColor": "#1e1e1e", 4369 | "backgroundColor": "transparent", 4370 | "width": 118.88020833333348, 4371 | "height": 67.20919291178382, 4372 | "seed": 932791702, 4373 | "groupIds": [], 4374 | "frameId": null, 4375 | "roundness": { 4376 | "type": 3 4377 | }, 4378 | "boundElements": [], 4379 | "updated": 1704882689634, 4380 | "link": null, 4381 | "locked": false 4382 | }, 4383 | { 4384 | "type": "arrow", 4385 | "version": 30, 4386 | "versionNonce": 2045916201, 4387 | "isDeleted": false, 4388 | "id": "Txh2cDhNkgj49e9Y9jXG2", 4389 | "fillStyle": "solid", 4390 | "strokeWidth": 2, 4391 | "strokeStyle": "solid", 4392 | "roughness": 1, 4393 | "opacity": 100, 4394 | "angle": 0, 4395 | "x": 2186.580477275543, 4396 | "y": -180.84865461077004, 4397 | "strokeColor": "#1e1e1e", 4398 | "backgroundColor": "transparent", 4399 | "width": 598.871459960937, 4400 | "height": 301.6927083333332, 4401 | "seed": 844697671, 4402 | "groupIds": [], 4403 | "frameId": null, 4404 | "roundness": { 4405 | "type": 2 4406 | }, 4407 | "boundElements": [], 4408 | "updated": 1704888317999, 4409 | "link": null, 4410 | "locked": false, 4411 | "startBinding": null, 4412 | "endBinding": null, 4413 | "lastCommittedPoint": null, 4414 | "startArrowhead": null, 4415 | "endArrowhead": "arrow", 4416 | "points": [ 4417 | [ 4418 | 0, 4419 | 0 4420 | ], 4421 | [ 4422 | 598.871459960937, 4423 | -301.6927083333332 4424 | ] 4425 | ] 4426 | }, 4427 | { 4428 | "type": "rectangle", 4429 | "version": 49, 4430 | "versionNonce": 358396169, 4431 | "isDeleted": false, 4432 | "id": "vDo0rzoVdP_0UVqd0lGAZ", 4433 | "fillStyle": "solid", 4434 | "strokeWidth": 2, 4435 | "strokeStyle": "solid", 4436 | "roughness": 1, 4437 | "opacity": 100, 4438 | "angle": 0, 4439 | "x": 2817.1358971974178, 4440 | "y": -644.7375604538688, 4441 | "strokeColor": "#1e1e1e", 4442 | "backgroundColor": "transparent", 4443 | "width": 621.09375, 4444 | "height": 301.08505249023426, 4445 | "seed": 600557321, 4446 | "groupIds": [], 4447 | "frameId": null, 4448 | "roundness": { 4449 | "type": 3 4450 | }, 4451 | "boundElements": [], 4452 | "updated": 1704888320094, 4453 | "link": null, 4454 | "locked": false 4455 | }, 4456 | { 4457 | "type": "text", 4458 | "version": 83, 4459 | "versionNonce": 1287017788, 4460 | "isDeleted": false, 4461 | "id": "nD1fHLp6KMf9SJ9HfW7F8", 4462 | "fillStyle": "solid", 4463 | "strokeWidth": 2, 4464 | "strokeStyle": "solid", 4465 | "roughness": 1, 4466 | "opacity": 100, 4467 | "angle": 0, 4468 | "x": 2897.101310608876, 4469 | "y": -537.5674046107699, 4470 | "strokeColor": "#1e1e1e", 4471 | "backgroundColor": "transparent", 4472 | "width": 493.44384765625, 4473 | "height": 95.52953084309894, 4474 | "seed": 797491913, 4475 | "groupIds": [], 4476 | "frameId": null, 4477 | "roundness": null, 4478 | "boundElements": [], 4479 | "updated": 1705059168788, 4480 | "link": null, 4481 | "locked": false, 4482 | "fontSize": 76.42362467447916, 4483 | "fontFamily": 1, 4484 | "text": "LocalStorage", 4485 | "textAlign": "left", 4486 | "verticalAlign": "top", 4487 | "containerId": null, 4488 | "originalText": "LocalStorage", 4489 | "lineHeight": 1.25, 4490 | "baseline": 67 4491 | }, 4492 | { 4493 | "type": "text", 4494 | "version": 88, 4495 | "versionNonce": 1081191556, 4496 | "isDeleted": false, 4497 | "id": "QQYAYdKbfNpVnEW7mC38g", 4498 | "fillStyle": "solid", 4499 | "strokeWidth": 2, 4500 | "strokeStyle": "solid", 4501 | "roughness": 1, 4502 | "opacity": 100, 4503 | "angle": 0, 4504 | "x": -388.8811723012773, 4505 | "y": 2588.458637055896, 4506 | "strokeColor": "#1e1e1e", 4507 | "backgroundColor": "transparent", 4508 | "width": 1246.754638671875, 4509 | "height": 276.08510335286445, 4510 | "seed": 788918619, 4511 | "groupIds": [], 4512 | "frameId": null, 4513 | "roundness": null, 4514 | "boundElements": [], 4515 | "updated": 1705059168792, 4516 | "link": null, 4517 | "locked": false, 4518 | "fontSize": 220.86808268229154, 4519 | "fontFamily": 1, 4520 | "text": "Interceptor", 4521 | "textAlign": "left", 4522 | "verticalAlign": "top", 4523 | "containerId": null, 4524 | "originalText": "Interceptor", 4525 | "lineHeight": 1.25, 4526 | "baseline": 194 4527 | }, 4528 | { 4529 | "type": "rectangle", 4530 | "version": 77, 4531 | "versionNonce": 1008187835, 4532 | "isDeleted": false, 4533 | "id": "0iy5-odVXA3G7RrbskpH-", 4534 | "fillStyle": "solid", 4535 | "strokeWidth": 2, 4536 | "strokeStyle": "solid", 4537 | "roughness": 1, 4538 | "opacity": 100, 4539 | "angle": 0, 4540 | "x": -1058.3257523794018, 4541 | "y": 3085.6807745070673, 4542 | "strokeColor": "#1e1e1e", 4543 | "backgroundColor": "transparent", 4544 | "width": 631.6406249999995, 4545 | "height": 478.8628641764317, 4546 | "seed": 1468259733, 4547 | "groupIds": [], 4548 | "frameId": null, 4549 | "roundness": { 4550 | "type": 3 4551 | }, 4552 | "boundElements": [], 4553 | "updated": 1705058540878, 4554 | "link": null, 4555 | "locked": false 4556 | }, 4557 | { 4558 | "type": "arrow", 4559 | "version": 46, 4560 | "versionNonce": 1040243323, 4561 | "isDeleted": false, 4562 | "id": "iAG4Qru6pSiBwYPTJ7c-C", 4563 | "fillStyle": "solid", 4564 | "strokeWidth": 2, 4565 | "strokeStyle": "solid", 4566 | "roughness": 1, 4567 | "opacity": 100, 4568 | "angle": 0, 4569 | "x": -320.52200075179826, 4570 | "y": 3184.595722016833, 4571 | "strokeColor": "#1e1e1e", 4572 | "backgroundColor": "transparent", 4573 | "width": 692.7516682942705, 4574 | "height": 1.085103352864735, 4575 | "seed": 517856469, 4576 | "groupIds": [], 4577 | "frameId": null, 4578 | "roundness": { 4579 | "type": 2 4580 | }, 4581 | "boundElements": [], 4582 | "updated": 1705058542386, 4583 | "link": null, 4584 | "locked": false, 4585 | "startBinding": null, 4586 | "endBinding": null, 4587 | "lastCommittedPoint": null, 4588 | "startArrowhead": null, 4589 | "endArrowhead": "arrow", 4590 | "points": [ 4591 | [ 4592 | 0, 4593 | 0 4594 | ], 4595 | [ 4596 | 692.7516682942705, 4597 | 1.085103352864735 4598 | ] 4599 | ] 4600 | }, 4601 | { 4602 | "type": "arrow", 4603 | "version": 56, 4604 | "versionNonce": 427003477, 4605 | "isDeleted": false, 4606 | "id": "QAn8q1GpviMXfoygbOhL5", 4607 | "fillStyle": "solid", 4608 | "strokeWidth": 2, 4609 | "strokeStyle": "solid", 4610 | "roughness": 1, 4611 | "opacity": 100, 4612 | "angle": 0, 4613 | "x": 373.92237587580576, 4614 | "y": 3376.2623886835, 4615 | "strokeColor": "#1e1e1e", 4616 | "backgroundColor": "transparent", 4617 | "width": 685.025939941406, 4618 | "height": 4.47041829427144, 4619 | "seed": 2006307611, 4620 | "groupIds": [], 4621 | "frameId": null, 4622 | "roundness": { 4623 | "type": 2 4624 | }, 4625 | "boundElements": [], 4626 | "updated": 1705058544879, 4627 | "link": null, 4628 | "locked": false, 4629 | "startBinding": null, 4630 | "endBinding": null, 4631 | "lastCommittedPoint": null, 4632 | "startArrowhead": null, 4633 | "endArrowhead": "arrow", 4634 | "points": [ 4635 | [ 4636 | 0, 4637 | 0 4638 | ], 4639 | [ 4640 | -685.025939941406, 4641 | -4.47041829427144 4642 | ] 4643 | ] 4644 | }, 4645 | { 4646 | "type": "diamond", 4647 | "version": 47, 4648 | "versionNonce": 384227061, 4649 | "isDeleted": false, 4650 | "id": "3XUZWj6v8_7kAnD_ZADev", 4651 | "fillStyle": "solid", 4652 | "strokeWidth": 2, 4653 | "strokeStyle": "solid", 4654 | "roughness": 1, 4655 | "opacity": 100, 4656 | "angle": 0, 4657 | "x": 448.92237587580576, 4658 | "y": 2998.4846787225624, 4659 | "strokeColor": "#1e1e1e", 4660 | "backgroundColor": "transparent", 4661 | "width": 506.64062499999955, 4662 | "height": 545.5294799804683, 4663 | "seed": 486079413, 4664 | "groupIds": [], 4665 | "frameId": null, 4666 | "roundness": { 4667 | "type": 2 4668 | }, 4669 | "boundElements": [], 4670 | "updated": 1705058547302, 4671 | "link": null, 4672 | "locked": false 4673 | }, 4674 | { 4675 | "type": "line", 4676 | "version": 521, 4677 | "versionNonce": 133584181, 4678 | "isDeleted": false, 4679 | "id": "mYSU-rq91SiEmzzHE2Y1V", 4680 | "fillStyle": "solid", 4681 | "strokeWidth": 2, 4682 | "strokeStyle": "solid", 4683 | "roughness": 1, 4684 | "opacity": 100, 4685 | "angle": 0, 4686 | "x": 48.097953675285, 4687 | "y": 3039.326668875557, 4688 | "strokeColor": "#e03131", 4689 | "backgroundColor": "transparent", 4690 | "width": 3.3072102864582575, 4691 | "height": 509.4183756510415, 4692 | "seed": 301951867, 4693 | "groupIds": [], 4694 | "frameId": null, 4695 | "roundness": { 4696 | "type": 2 4697 | }, 4698 | "boundElements": [], 4699 | "updated": 1705058738923, 4700 | "link": null, 4701 | "locked": false, 4702 | "startBinding": null, 4703 | "endBinding": null, 4704 | "lastCommittedPoint": null, 4705 | "startArrowhead": null, 4706 | "endArrowhead": null, 4707 | "points": [ 4708 | [ 4709 | 0, 4710 | 0 4711 | ], 4712 | [ 4713 | 3.3072102864582575, 4714 | 509.4183756510415 4715 | ] 4716 | ] 4717 | }, 4718 | { 4719 | "type": "text", 4720 | "version": 11, 4721 | "versionNonce": 2049985980, 4722 | "isDeleted": false, 4723 | "id": "pVLOqoa9FTkunmpycBMNz", 4724 | "fillStyle": "solid", 4725 | "strokeWidth": 2, 4726 | "strokeStyle": "solid", 4727 | "roughness": 1, 4728 | "opacity": 100, 4729 | "angle": 0, 4730 | "x": -305.8101273794025, 4731 | "y": 3125.14090837751, 4732 | "strokeColor": "#1e1e1e", 4733 | "backgroundColor": "transparent", 4734 | "width": 79.87992858886719, 4735 | "height": 25, 4736 | "seed": 644345307, 4737 | "groupIds": [], 4738 | "frameId": null, 4739 | "roundness": null, 4740 | "boundElements": [], 4741 | "updated": 1705059168793, 4742 | "link": null, 4743 | "locked": false, 4744 | "fontSize": 20, 4745 | "fontFamily": 1, 4746 | "text": "Request", 4747 | "textAlign": "left", 4748 | "verticalAlign": "top", 4749 | "containerId": null, 4750 | "originalText": "Request", 4751 | "lineHeight": 1.25, 4752 | "baseline": 18 4753 | }, 4754 | { 4755 | "type": "text", 4756 | "version": 43, 4757 | "versionNonce": 974224388, 4758 | "isDeleted": false, 4759 | "id": "_nlguy1dFCkRnTfnnkEfp", 4760 | "fillStyle": "solid", 4761 | "strokeWidth": 2, 4762 | "strokeStyle": "solid", 4763 | "roughness": 1, 4764 | "opacity": 100, 4765 | "angle": 0, 4766 | "x": 273.1742476205975, 4767 | "y": 3410.7919703892285, 4768 | "strokeColor": "#1e1e1e", 4769 | "backgroundColor": "transparent", 4770 | "width": 87.43991088867188, 4771 | "height": 25, 4772 | "seed": 1271069461, 4773 | "groupIds": [], 4774 | "frameId": null, 4775 | "roundness": null, 4776 | "boundElements": [], 4777 | "updated": 1705059168793, 4778 | "link": null, 4779 | "locked": false, 4780 | "fontSize": 20, 4781 | "fontFamily": 1, 4782 | "text": "Response", 4783 | "textAlign": "left", 4784 | "verticalAlign": "top", 4785 | "containerId": null, 4786 | "originalText": "Response", 4787 | "lineHeight": 1.25, 4788 | "baseline": 18 4789 | }, 4790 | { 4791 | "type": "text", 4792 | "version": 41, 4793 | "versionNonce": 1188509244, 4794 | "isDeleted": false, 4795 | "id": "OSiu-4y1QU_yLZGXn6vno", 4796 | "fillStyle": "solid", 4797 | "strokeWidth": 2, 4798 | "strokeStyle": "solid", 4799 | "roughness": 1, 4800 | "opacity": 100, 4801 | "angle": 0, 4802 | "x": -475.1591264028399, 4803 | "y": 2979.1252986362992, 4804 | "strokeColor": "#1e1e1e", 4805 | "backgroundColor": "transparent", 4806 | "width": 342.8769836425781, 4807 | "height": 52.3177032470703, 4808 | "seed": 1337598011, 4809 | "groupIds": [], 4810 | "frameId": null, 4811 | "roundness": null, 4812 | "boundElements": [], 4813 | "updated": 1705059168795, 4814 | "link": null, 4815 | "locked": false, 4816 | "fontSize": 41.85416259765624, 4817 | "fontFamily": 1, 4818 | "text": "Accept-Language", 4819 | "textAlign": "left", 4820 | "verticalAlign": "top", 4821 | "containerId": null, 4822 | "originalText": "Accept-Language", 4823 | "lineHeight": 1.25, 4824 | "baseline": 36 4825 | } 4826 | ], 4827 | "appState": { 4828 | "gridSize": null, 4829 | "viewBackgroundColor": "#ffffff" 4830 | }, 4831 | "files": {} 4832 | } --------------------------------------------------------------------------------