From 35b36121e86f8e973a544390d24c7ee7ca2c4697 Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sat, 25 Dec 2021 20:11:02 +0100 Subject: [PATCH 01/25] deleting the unecessary stuff --- arts-gallery/README.md | 104 --- arts-gallery/dummy_data.js | 30 - arts-gallery/server/db/index.js | 3 - arts-gallery/server/index.js | 3 - gift-store/README.md | 115 --- gift-store/dummy_data.js | 34 - gift-store/server/db/index.js | 3 - gift-store/server/index.js | 3 - hacker-news/README.md | 127 --- hacker-news/assets/author-search-a.png | Bin 26708 -> 0 bytes hacker-news/assets/author-search-b.png | Bin 53139 -> 0 bytes hacker-news/assets/recommended-stories.png | Bin 46617 -> 0 bytes hacker-news/assets/top-ten-stories.png | Bin 40905 -> 0 bytes hacker-news/assets/top-ten-story-authors.png | Bin 38899 -> 0 bytes hacker-news/dummy_data.js | 22 - hacker-news/server/db/index.js | 3 - hacker-news/server/index.js | 3 - hacker-news/worker.js | 36 - poke-mongo/README.md | 104 --- poke-mongo/data/pokemon.json | 908 ------------------- poke-mongo/server/db/index.js | 3 - poke-mongo/server/index.js | 3 - 22 files changed, 1504 deletions(-) delete mode 100644 arts-gallery/README.md delete mode 100644 arts-gallery/dummy_data.js delete mode 100644 arts-gallery/server/db/index.js delete mode 100644 arts-gallery/server/index.js delete mode 100644 gift-store/README.md delete mode 100644 gift-store/dummy_data.js delete mode 100644 gift-store/server/db/index.js delete mode 100644 gift-store/server/index.js delete mode 100644 hacker-news/README.md delete mode 100644 hacker-news/assets/author-search-a.png delete mode 100644 hacker-news/assets/author-search-b.png delete mode 100644 hacker-news/assets/recommended-stories.png delete mode 100644 hacker-news/assets/top-ten-stories.png delete mode 100644 hacker-news/assets/top-ten-story-authors.png delete mode 100644 hacker-news/dummy_data.js delete mode 100644 hacker-news/server/db/index.js delete mode 100644 hacker-news/server/index.js delete mode 100644 hacker-news/worker.js delete mode 100644 poke-mongo/README.md delete mode 100644 poke-mongo/data/pokemon.json delete mode 100644 poke-mongo/server/db/index.js delete mode 100644 poke-mongo/server/index.js diff --git a/arts-gallery/README.md b/arts-gallery/README.md deleted file mode 100644 index 9cc366c..0000000 --- a/arts-gallery/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# ArtsGallery - -You will be creating a full-stack application to save paintings into a gallery by uploading them and saving them into a database. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Paintings Gallery - -1. **As a user**, I want to be able to view the paintings I have in my gallery. If no paintings are present in the database, I will have to see a message indicating that `No paintings in Gallery` and a button to upload new ones. - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create a Painting Schema under `server/models/Painting.js`. It should have these following attributes: - - `id`: Number - - `artist`: String _(for the author field)_ - - `name`: String - - `year`: Number -- Complete the route `/api/paintings` in `server/routes/paintings.routes.js` so that requests to this route are responded to with the data for all the paintings, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- Render each painting in a `Card` containing the image, the name, the artist, and the date. -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Create new Paintings - -1. **As a user**, I want to be able to create new Paintings and save them in the database. First, make this feature work with a simple form where the user can manually input: - -- Name -- Artist -- Year -- Painting url - For consistency, use real data from the internet when you test your application. - -2. **As a user**, I want to be able create new Paintings by uploading images from my local machine. - For this, you should: - -- Add an input of type `file` to your form where user can upload images -- Use `FormData` to send a request including data and files -- Use [multer](https://www.npmjs.com/package/multer) to handle requests including files -- Use [Cloudinary](https://cloudinary.com/) to store images in the cloud and generate urls -- Save the Painting with the data from the inputs and the url generated by Cloudinary - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Edit Existing Paintings - -1. **As a user**, I want to update existing paintings in the database. - -- With every Painting Card, there should be an `Edit` button. -- When the user clicks on `Edit`, a new `Modal` should be rendered -- The `Modal` will contain a **prefilled** form with the data of the selected painting -- The user can click on `Cancel` to close the Modal -- The user can update the data and click on `save` -- The modal will be closed and the data of the painting will be updated in the `PaitningList` component - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Delete Painting - -1. **As a user**, I want to be able to delete existing paintings from the database - -- Each painting card will contain a `Delete` button -- When the user clicks on the `Delete` button, a `Modal` will be rendered with 2 options: `Confirm` and `Cancel` -- Clicking on `Confirm` will delete the painting and close the modal -- The painting will no longuer exist in the `PaintingList` component - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### API Structure - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: - -| URL | HTTP Verb | Request Body | Result | -| :----------------: | :-------: | :----------: | :--------------------------------------------------------------------: | -| /api/paintings | GET | empty | Return JSON of all Paintings | -| /api/paintings | POST | JSON | Create new Painting and return JSON of created Painting | -| /api/paintings/:id | DELETE | empty | Return JSON of single Painting with matching `number` | -| /api/paintings/:id | PUT | FormData | Update Painting with matching `id` and return JSON of updated Painting | - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [Cloudinary API](https://cloudinary.com/documentation/node_integration) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [Academind Node-Multer](https://www.youtube.com/watch?v=srPXMt1Q0nY&ab_channel=Academind) to learn how to handle uploaded images in Node -- [Academind React Image Upload](https://www.youtube.com/watch?v=XeiOnkEI7XI&ab_channel=Academind) to learn how to upload images in React -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use diff --git a/arts-gallery/dummy_data.js b/arts-gallery/dummy_data.js deleted file mode 100644 index 39ce787..0000000 --- a/arts-gallery/dummy_data.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = [ - { - 'id': 1234, - 'name': 'Guernica', - 'artist': 'Picasso', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/ca/27/70/shutterstock-337184468.jpg', - 'year': 1937 - }, - { - 'id': 5265, - 'name': 'The Girl With A Pearl Earring', - 'artist': 'Johannes Vermeer', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/9d/d2/c4/meisje-met-de-parel.jpg', - 'year': 1665 - }, - { - 'id': 4487, - 'name': 'The Scream', - 'artist': 'Edvard Munch', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/5f/96/29/edvard-munch-1893-the-scream-oil-tempera-and-pastel-on-cardboard-91-x-73-cm-national-gallery-of-norway.jpg', - 'year': 1893 - }, - { - 'id': 8357, - 'name': 'The Starry Night', - 'artist': 'Vincent van Gogh', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/1f/e7/fd/1280px-van-gogh-starry-night-google-art-project.jpg', - 'year': 1889 - } - ]; \ No newline at end of file diff --git a/arts-gallery/server/db/index.js b/arts-gallery/server/db/index.js deleted file mode 100644 index 433babf..0000000 --- a/arts-gallery/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your Database Connection comes here - */ \ No newline at end of file diff --git a/arts-gallery/server/index.js b/arts-gallery/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/arts-gallery/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file diff --git a/gift-store/README.md b/gift-store/README.md deleted file mode 100644 index c78a400..0000000 --- a/gift-store/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# Gift Store - -You will be creating a full-stack application to manage your gift store. It will allow the owner of the stoer to execute all CRUD operations on his gifts,. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Products Table - -1. **As a user**, I want to be able to view the products I have in my database. If no product are present in the database, I will have to see a message indicating that `You have no product` and a button to create new ones. - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command to create a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create a Product Schema under `server/models/Product.js`. It should have these following attributes: - - `id`: Number - - `category`: String - - `quantity`: Number - - `brand`: String - - `image`: String _(the url of the image)_ -- Complete the route `/api/products` in `server/routes/products.routes.js` so that requests to this route are responded to with the data for all the products, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- Render the products in a `Table` containing the image, the name, the brand, the category, the price and the quantity -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Create new Products - -1. **As a user**, I want to be able to create new products and save them in the database. Create a `NewTask` component containing these inputs: - -- `Name`: text -- `Category`: text -- `Quantity`: positive number -- `Price`: positive number -- `Image`: text (the url of the image) - -The data from the form should be sent to `/api/products` and saved to the database. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Edit Existing Products - -1. **As a user**, I want to update the existing products in my management system. - -- With every `Row` in the products table, there should be an `Edit` button. -- When the user clicks on `Edit`, a `Modal` should be rendered -- The `Modal` should contain a form similar to the `CreateProduct` form -- The inputs should be prefilled with `defualtValues` of the product data with 2 buttons (`save` / `cancel`) -- The user can click on `Cancel` to cancel changes -- The user can update the data and click on `save` -- The Modal should be closed and the `Table` should be updated with the nes data -- You should send a PUT request to `/api/products/:id` with the new data from the form - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Delete existing products - -1. **As a user**, I want to delete products. - -- With every `Row` in the products table, there should be a `Delete` button. -- When the user clicks on `Delete`, a `Modal` should be rendered -- The `Modal` should contain 2 buttons: `Confirm` and `Cancel` -- Clicking on `Cancel` will close the Modal -- Clicking on `Delete` should delete the selected Product and close the Modal -- The deleted Product should no longer appear in the `ProductsList` - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### Part 5 - Predefined Categories - -1. **As a user**, I want to group products by category - -- Create a `Category.js` model, `categories.routes.js` router, and a `categories.controller.js` controller -- Each Category should have: - - id: String - - title: String -- Create new categories through Postman -- Refactor the Category input in `CreateProduct` form to be a `Dropdown` containing the categories' titles - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** - -### API Structure - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: - -| URL | HTTP Verb | Request Body | Result | -| :---------------: | :-------: | :----------: | :----------------------------------------------------------: | -| /api/products | GET | empty | Return JSON of all products | -| /api/products | POST | JSON | Create new Product and return JSON of created Product | -| /api/products/:id | DELETE | empty | Return JSON of single Product with matching `id` | -| /api/products/:id | PUT | JSON | Update Product with matching `id` and return updated Product | -| /api/categories | POST | JSON | Create a new category | -| /api/categories | GET | JSON | Return JSON of all categories | - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [Cloudinary API](https://cloudinary.com/documentation/node_integration) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use diff --git a/gift-store/dummy_data.js b/gift-store/dummy_data.js deleted file mode 100644 index 860ee91..0000000 --- a/gift-store/dummy_data.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = [ - { - 'id': 1234, - 'name': 'JBL Live 460NC', - 'category': 'Audio', - 'brand': 'JBL', - 'image': 'https://m.media-amazon.com/images/I/61Kq-Pz8d-L._AC_SL1200_.jpg', - 'quantity': 10 - }, - { - 'id': 5265, - 'name': 'JBL CHARGE 5', - 'category': 'Audio', - 'brand': 'JBL', - 'image': 'https://m.media-amazon.com/images/I/71Gk3H-tIqL._AC_SL1500_.jpg', - 'quantity': 5 - }, - { - 'id': 4487, - 'name': 'Roku Smart TV', - 'category': 'Video', - 'brand': 'Roku', - 'image': 'https://m.media-amazon.com/images/I/71gzlKauNQL._AC_SL1500_.jpg', - 'quantity': 7 - }, - { - 'id': 8357, - 'name': 'Razer Viper Ultimate', - 'category': 'Accessories', - 'brand': 'Razer', - 'image': 'https://m.media-amazon.com/images/I/6157EeRHinL._AC_SL1500_.jpg', - 'quantity': 1 - } -]; \ No newline at end of file diff --git a/gift-store/server/db/index.js b/gift-store/server/db/index.js deleted file mode 100644 index 05aaea5..0000000 --- a/gift-store/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Connect to the Database with Mongoose here - */ \ No newline at end of file diff --git a/gift-store/server/index.js b/gift-store/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/gift-store/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file diff --git a/hacker-news/README.md b/hacker-news/README.md deleted file mode 100644 index 8bae6dd..0000000 --- a/hacker-news/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# HackerNews - -You will be creating a full-stack application to display analytics about [HackerNews](https://news.ycombinator.com/) and its users. In order to do this you will be interacting with the [HackerNews API](https://github.com/HackerNews/API) using a worker process, and storing data from your calls to the API in MongoDB, using the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Top Ten Stories - -1. **As a user**, I want to be able to view the Top Ten Stories on Hacker News (for now, this will be accomplished with the dummy data provided, not live data from the Hacker News API). - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![top-ten-stories](./assets/top-ten-stories.png) - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create the Story Schema under `server/models/Story.js`. It should have these following attributes: - - `id`: Number - - `by`: String _(for the author field)_ - - `title`: String - - `score`: String -- Complete the route `/api/stories` in `server/routes/stories.routes.js` so that requests to this route are responded to with the data for the top ten stories, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Authors of Top Stories - -1. **As a user**, I want to be able to view the authors of the top ten stories, sorted by their karma (for now, this will be accomplished with the seed data retrieved from the server, not live data from the Hacker News API). -1. **As a user**, I want to be able to switch between the top ten stories view and the top ten authors view. - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![top-ten-authors](./assets/top-ten-story-authors.png) - -To implement this user story, you should: - -- Create any new components or directives as necessary -- Create any new server side routes as necessary -- Create or update any database schemas and models as necessary -- Modify the seed.js file to also add author information to the mongo database (if needed, look up how to drop your existing stories collection) - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Worker - -1. **As a user**, I want up to date information about the top ten stories, not just seed data. -1. **As a developer**, I want an easy way to add up to date information about the top ten stories to the database. - -To implement this user and developer story, you should: - -- Build out `worker.js` to store the top stories and top authors it gets from the [HackerNews API](https://github.com/HackerNews/API) in MongoDB, using `db/models/story.js`. You will have to use the ids from your initial request to the API, in order to make additional API requests for stories, as well as use the author username to make additional API requests for author information. (_NOTE: A story's score is not directly related to its rank. You may confirm the current top 10 stories by going to [Hacker News](https://news.ycombinator.com/)_). -- Add an additional npm script to the `package.json` so that a developer could run the worker.js file to populate the database instead of the seed.js script - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Author Search - -1. **As a user**, I want to be able to see a list of stories by a certain author. -1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, and the author search view. -1. **As a developer**, I want to be able to save the story information retrieved from the HackerNews API in the database so that I don't have to fetch it from the API every time. - -_Please see mockups below - remember, you do NOT need to match the styling, just the content structure._ - -![author-search-a](./assets/author-search-a.png) -![author-search-b](./assets/author-search-b.png) - -To implement this user and developer story, you should: - -- Create any new components or directives as necessary -- Create any new server side routes as necessary -- Create or update any database schemas and models as necessary - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### Part 5 - Story Recommendations - -1. **As a user**, when I click on a story in the top ten view, I want to be able to see 10 other stories _similar_ to this story. -1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, the author search view, and the recommended story view. - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![recommended-stories.png](./assets/recommended-stories.png) - -To implement this user story, you should: - -- Find ten similar stories using the following specification: - - - Recommend stories based on number of shared commenters it has with the story you clicked on. For example, if the story you clicked on has, 4 commenters, _CommenterA_, _CommenterB_, _CommenterC_, and _CommenterD_, a highly recommended story would be another story that all 4 of these same commenters have commented on. A less recommended story would be one that only 3 of the 4 commenters commented on. You would never recommend a story that none of the 4 commenters have commented on. These recommended stories do not have to, and will most likely not, be in the top ten current stories. - - If the story has the same number of shared commenters, sort the story with the highest score first. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** - -### Part 6 - Live Update - -1. **As a developer**, I want the top ten stories in the database to refresh every minute. - -To implement this developer story, you should: - -- Refactor your application so that `worker.js` runs every minute. -- Refactor you application so that your views automatically refresh when `worker.js` provides it with new data that would affect the view. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 6 Complete`** - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [HackerNews API](https://github.com/HackerNews/API) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use -- [Google Search](https://google.com) to search for the correct page on any of the documentation above diff --git a/hacker-news/assets/author-search-a.png b/hacker-news/assets/author-search-a.png deleted file mode 100644 index 8cacfef9cbded0bdcd23b5c3b94ec75c617131af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26708 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 pn)85-$1*OAnyCFLnAyzY74R4(c)Rf*`?a$l9d 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⁣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 B(G&mx diff --git a/hacker-news/assets/top-ten-stories.png b/hacker-news/assets/top-ten-stories.png deleted file mode 100644 index 65a246796c401cbe0f1c6908375c6523517ae8e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40905 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 BbP@mn diff --git a/hacker-news/assets/top-ten-story-authors.png b/hacker-news/assets/top-ten-story-authors.png deleted file mode 100644 index 7f0b92b4afdbaffe6916cffcdc9492eb2f84a019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38899 zcmeFY<9npf^9CC1#@dOs;jH3 zYpQYI^-QR&vZFE{}mNu%?_qyu1+dwT`r1P)Xy zSe-6X;z8hd3H;O81)eY%_~)_E-dn65p@u7PPlRCr0g&n&+QVi~hQ_iLxP;B=vid23 zDmoAsYN+4?*iZK{UYme6*5AP#Uyk$PZ?0hZ6_F9!mo|d;fPp-)^XfS1>0P0xh*kT~ zdEZJ?laZFvXVSSGnM=6Aeags3h^)2aB z)+CbHCM!g*gch5W*mIjRVYtSRb9~et%wHzA;IFP&sUHuiI4HUw;5s)q3#|O~NM-Q~WyK7(H+ zTH_nptBF*Z#)lSdhtQnwV4RrW`zHDnRBVDl&vq~kAJds41d|)@ZPp56fX237u1KbU zKuf@}hXm)~m6;RQe}P4KoKy}ucZ;eK4ni>4Hw!?7}BrGVh(K)dp>$#49izXI*t zaQN;p+?0vu^#jCk8^ZZ;}2Elij^+Vi69df&2 z1G~m*2cCz34Phc`GhA69ov4CT-e_jjG?CZ2o!KWVY@zQ&AGYR2b*77J9dQv@lmv7O zK>Ip`bPGHe>=upLA7P*kj9jpUjCqUJm(xXD2Ohts?d`*Rge~)d?x3v;Hi*dizLoDF zP;LS^$_YeRgfg|N=jg@Xi82$x6^n7*ax@l z%^A!Cx2V@YZkC?Q?rrEe01P5{!^I@o|r#j@6Fu0S}I|Heh?__h5Qi!F`P^0n)ajC@V{AWDzRR?6KT# zk$&qWF1MrNW8}cqPMw!H_`Ky!Q&u4@hxnL~>|KdQzyziMVrbz>-%-nN<#cbv$ovna z=}k6#vMv|Gv+eEuic6$BU9)DJq0FIBP2DInS1T&f@z2w!#xi28wQ z__$&SzQK*~k4|fg!ZQYz6Os+1-URvO*dCE502T5b=7dk9mf*C)F7QR?6wBh@LAirZ z@NeZRp+w~IGvqbP@{>~}Fp5JP`PB-Yi@4>(<>twSmN1oQDk7eM{ldD3xQF>3f+ga` zPtyxj6p*UNqY9!Nq^K_7)-Bl(RKGTxtJV11~bnA04p zE?_`EwWe2<#L$LA@4Z^2y14r5GNmO`BRr?CR{xHzC7WFa$0UeIZ{SXxExIkMtyHu3 zI?4rE7Sfb|^1$hC<~84wt0&wCMQ7>SZ^^~jqD-m>!Y7kP@g^?7%N5&7eV?LyB1H@N#ysN9JdiExR~ zN^A?5zbq6d6stF@(7UsL2|UhC+BtF-u5FBTKkTqU8?dR1_W+d~$Ph z5DRAV*nc2P#S1tj7X=$fCHX0bCj3v6@?!9!djA4C-aVDmw>=rtE!#UiNk0%`gksFBe`g?R&_1#}!8Rp0^=-;< z$}xo^`j~KzjcJ^^-?AU4J7dx_*e%2@F)&;xd?21AurRJL+bA{BUnzbe{(E9Wm{W{X zVq~&Z^h7p|e?^d00`3Iup!ERWh<9j5rdO1ItUzR6CUN2}+zI>luH9WAa4z5lvH7+SGe798B23Js52e&oX!)LZ< znCIT-$}6YaigTn*qb4eEm4!+A80^3Q1s8#ZaH5lUqn7AJ|jN-o?Aa$ zzcKz^emH)zK=T0O0JXr#fc!wJfUOV&A!b3iP?S)Z5PhLUp?4u@L5~4heJFh%eK&pX z-{f{eb~@J}*PRY*gead=vbdpI2coS;%K3q$KxU@;>TB6bj3 z3aQ1;s*dvfU$<QEYZ zwVt|x4Yl>7buYR!243^6eL+13ITKFlBpOz0j%!QKM9w?TG!M)Vv=93aV{ol-hd6_{ zg*XN{+3Yo(&m0RJyBX)15}D|a$LC|4towP}aeIvQIEOD)5_Ct(DI08GZVu!TUMJ|L+|acWbjha)X{1(PE!t9bJ{1`hwaAg3mr@yCSJ^* z_MQixPM&lx-nUG5RCgK=O;=q9U6|VlvZx{OjdGI&z=FkUlJUHvt>ez!J?I(_b;Q`qYKIk>9M0CGR3cU6<`W%D(;ar45g$f0wL{3F? zxczv3dl&4JZ_VtAYz>$WXod#rZ|G}8UE@n|v7nkDs5ocXt^=NKU5}p}uAw2}An!vp zL+wJ5$zY@vzsZrs#s|s#%A}SQCVM4yDIPA=6n#!SiCs-4%}k1K^d5azJTyz4Ybj=( za?L!JR*~#-MDt)dI+G0&7G7a*b(lFMWt?Cvt8=ZBuS2VaH|Cv)ouc59VZ-QvVr)lO4xwWB#&bxn0r(`b=*dv=;UJw`1Fy9!&ure$@vIoT|)NGNHS zAJ9y6hF*v2y1#BbJPZeJ{IteR}DEYz;} z_y8RNU&4CAy1`@QmbCfCOv+--BE(9=63jfsedEnMV_&`RRAzAcBV9?urA_QLe&{7y zgR`C^Evtmr%=OnxeWgN6-9hT_x)a*K%GW8>tgTDsv&sv(lhSjg?(_A$?) z58|`^W!b?}rQ6VRsm-2E`j*VQ?yH>@pLed&jJ=&Dg{_$t`#ss(R4wX$Vw6(w!g0f} z)4Kab(2?*vUA&GB3n(kAfT-c@Lm5znVnQ-H&{h@j4@Z!nz$3d5^PJC1mmmTfX5c^% zG2iYW7r@AJtmxBJ^>8?|68(a6q|K!FWw<1?M3_X#_%26e$Ju(Q2ayI=`=$GKy48B` z{Y~I)h_)QOIe;yC=J=-sf0ksVBtJcGWFn2p6U{0!+SQ`k`$LfnVHUoRmQpVKx_m%b zNPKKHFEHI)bkFx+Qkr*I;qU^9kEg-F3lc}^|XSg-RmyPpeMQJ$Ra<(b~8Hz=HA zI&^tG&`Nr&!u?YD1t~o}pe-r5;gF9`#wIR0@)D0%+h^E^D~ICBUY5UFCS;$`h|z|e z=gwkT*402z&G2Anx#Xv5F|n}7fmlyg6irF{yyDZ@O?P5!-u3U5xIp_36AS!>hDBCh*J)dTo|1u^f}KN8 z{#nxeV!oC4IZHGurz)p%Rs`?)vFBTP!|BXz(8aH;_04IXOmBTaIJz6Cwm+0WO76~1 zZ8BmNvq&{DuBazPdn(=ph5~lFtB1R$)!STK@8cr!mEc0b#@?vnV(3Kw~Cq`%}fW}4>)XHjQa8OIrC7^&)FRO44JYNGAr z?MLh`cSCnOdY9@?zXS3J3K62K{X$|(%2X3v4=&b_wBnd%O)+^^xa}uz^q|bbNW`5+ zr<69!XwQ0nIh-ZV(9gk4i!XH+&Xv8Y;oEc@ky{j)SepE{#xitX=2|4`xd~8;bE=j4 zbxzTy_$nAoE`m>{VY1ua2``8@?%W|{Zg=Wv^Vocudg;`^)+4f-JnAx8wbaFv z!$nU=&dtUX;5i&vjya0lipGNB%|t{odtR-b;8@>{Seb9hAX!sCR6UgRdlUaMqAN2d z6T?m4C+=Eo!*C8o{^Yv8tQapFkMowq>-x-o@OKM->aALK-JyMF2EfhtAx~Ue*4vEl zu`slEWlTY36Rm^tg38Ulp{9OE-DKtP)D!j9W^c<=X~1>t&6&~Oy<$DN{Gnu|?7V7- zE5?TH=}OSROhLe5H~*BzM8jZ}Xl)m-*ad})!rQ&{cD(M2HvJH3nfNRTrD7 zzhq7_xeNw$asI#zcZz8_iZhxE>ZJgoP!0c40d+yxH+6-vS=l-2na(_mB07^{!w9__ z<3?jS6I3GueGQZBoufm`yXCP%lyKKlxsvNG*;vSrS=oeeba{U)SSv+mN(5K9i{MTw5$km z)wOb71#HxPhPQq7qGF3{a;}@jDoX<~C(9SOdU}WB7H;yD@|}tzqbt&IXROCRiu&Y4 z49G}}n!AM$b{;IyzojfnK7JgT;oKRgj}rpGX1KC>w1-a@cEkgsre#Nia1gsb`hwd zS{#d5$!_bM+N^xkvG-q$kVMtl*kj+g3Muauv5pho%+`-%nVM!5rd~`iGV*yJ*&K8Z zG?g72m7^Y>_n@D`OWoqXS|%GpE76u|%8|!WqEYO$jVg<~M9K=wN&5@Ny}&M|lTq0y zcQiM6i|ke2b~rq~nqydGp4^-UW7ES6VZ)}ar$uwO&d)BtG+Ny<=mbw9Ultd0*zjVX ztRA7AuPk|V+METRbszW8^|8>M3O{L^M2mM6dZV+avLN5DyuHqbEiArVzQHvqRfho? z61f$A=PAeG z(|cxYF}WfJ^Oa_NkM!@TV7Ldrj0~&SASfea2V3>%*$y_>H7C3Bcmj1sfr#wIwM+Z*dtN9Js3eIg2`q`cWf7$hWlk4nDmH6t zxib~)dEfIp3ZU<*huMQ!`?2LP6jJHaZc<0m(>1=R8LNF)m03YL-#gF5(Z`|VY+#pZ zlf6jh(e=41v4AXHJ1-9YSsb|pc?p)S#ET1n2BzY>=y?ym8-dlk*-?r`3bqlsWS_-G z_KaY%Cg-7=x$B=DDNooaJul{(qA%>4aLr;*>qs5*kR#c;o9!8s6H1m4t`tkq=_J%* z_kJDi0R5ielnDEp-ml@hdY_HrBzGTjM+0jJ6W)H};c$HZ{P>QqX`;e2=hJbGOD#%Q zN^MhFP`OwMTh6;o{()LsTJPokW37vQ8WfJ;i=i(VJt!>!Lcbr3EXc_Z_!JOq1g39a zF$J_`K@`7m`)%e=lj|i=ghjN5m(Lo*5Kg8GPC6*$%JlOvlyT#!P1L~PM1eJtt*KN2va2r7vB+sIt}q;GzXS(7_vL-KHfo%)XYJ(iPZ z?4aGMQ7h@)D42A}W)kZ4w`LapHV?+Z>h9p>#eVF$+g90{$E?Xj^okB`Hw!({k-n|N zun40>iMOiYQ$t8>U%j01%&~~}AjH5RPCDB~=8yE{RFtF$DfZMLou?UeUoiVWqkuF%{?QgkzrQdlx3QWaj(Uh*B;bqhUc>^htbc9upT zUh-o$WWbw!zbr$S|3nV~X5U6T0>LMQ62)QkAC{$^hw&0*$aj>}E0LdvkOar>3AJTv z_f-}U$^S%%7&MZU#u!v#+)=m#=L4ua*H5}{K!H#~z`#OR#4z$F@;o{6x$c7X-@J38 zig)tOikxz_@;D{v_y8G%A+f`%g9Q_JLF{3H>4oX{FzMKBEWsFL#D`c*u}E&XYLc z+*GXQR|_*s$I4aAwk-us)=k`JxRz%p)fbKXCs#VhW~Pq^c<7R|!I3lxR3ra@6P{N(sS(?Sh+xgGAhLo{=<=(49QVy}1#cK(Ylrf$h~7~|^}>^t|9bhu(<$eWc*9G~@Kh3#&YHfARo$8LO~*04JgUzD7hgf23=g1hh) zI<(W}>F#nK^*rPCZ!IOf(+3P3hy06kr~2DS+vx5&9+*0h@FnqCyj$4qcOwUm#@DW{ zBOkBhuN2>y%}IBNU*>9B=ydM7geTBFIp4Y8f-j=?15d*b!mE-!lai8%lT3VC-_F!# z)Jj!JDuc=&swm3$E4?&W)#=oA)~Yv}pP@hYpH2r!>&=?nye!@YI`#~ks^CM!v4O^y z4-Vi7foub#bwL1F;T&`x2ngYU1rNdOQuiSci{ zxC4Zr^@B_^MO8;tDM=0k8!K8pLmPb~T30LE&yoTV5SJ^*=cAR8qaJ~)m8G=pLu`P)w;SF`_(WbN?Jv_2HqfpKP~_C{2`EAUwdylwhI>LuX5k!1AE)V8RAywC`> z`8=`iT)eaE!#(p|t~ytdD1qv$=~5OhWs3rqiFi$I@**5H4UN%xed_9QcC0){B5a@N zo%}Z)_4005B$5r&pPceV%!{+Y7IoEV0hJ5Y9u;>@ZI_qqhwu3+jc+<1#INj_YL^}# zT!(HvhoXlw&$mT8*?{NlM4$I1pReGg-Ct6Gkaa;Me?peKfLwkg`#ht!A97#z44~_@ zZ#o&h|JzFMD9nSLP{Bhh>=OpB+2AHV#akjc7$IK&|3mM~B&zm?oFBIh8@HD_)T}J-ubKAc)^C6rDF7}eL@RW0&gS> zz*AbL<;S!6g490Le~yK9kFwF8>iyQ2!&o#s*tf+w?%wvCqdlFsR1W_qN4qV*C=c4D zRb*Eej4kb5(~4 zlj-7A<0wW~tV+&VR`lv0T?p6K7_%wsis;508Hu4+7(ipqc5N46r`_EXr8Wxn@m4J1 z@-S)Y<znjY&sR@nz@#it5>;AUT`cqYlYO;3yP?;V#)Udl30`q}RBHj5qh4 zs*A3-G1O3IC8<-v2=m5V9+SSomrj{4#y(}PEzvIjE&%D+IdMPDFvR-+QMWj(%~2mB+NgtbHp1i{1Tw?xrou@s zWhfldOwO0VWMx-T*v${?%itMva&2|_u604ZUr;Gwujv_PDK^WBKSf zWHi$#MLI@}(=*yiDw8-DP_dDp7?v`IWfm{)3Rk>fDl%$g9w*-7IrR5#h#l8GdS-_i zN|Yu_7%Mt{lUHvF(Z>v;1l`jA&Q?j*{1TIz0y0y)ghI-ge|2QW77_3a;XoKw6qPUh zi!PQ`;If=J}SwB>L7AYcfG~%Lic`sj5ty=Oy;AxDGRd{zot$TAPY4?GTp(iV06dl zKMY3b<>q>4dY~HJnY)<&&TlZ%Y9c0DhY2D@sWMGUtng zMcRygybjuyV&vGbR8vrg6p4e{Y_M?Lo^i#*76eCpwxDFi`Zi)r-fHX%x3Cu99Q9nO zZ|WHL!9t#WdJ78foNB+xuzkOzxCIRdB2_WG;V;J+OqwagfA$19i1P7>F-BbOV%|_u z>L68n2pXox-r0C-Dcc?)0dWh3?{o! z`b5}27lsLG#YF?}S}?%l1kUSoo!w0XeCYKB@xn~@op=}w$7h@U-c2h|B;Bygn5@Rh zo7Tez7lBMK!_kgbXqll6(%xo}B`+nKCN@{CheL~RSHD}u;LR3GM;I2=zGO%Mn{`ZR zp4(1-37r!VKxJa%4_n|2xxTi0zF8}CjImep9QY^MBDzO2DDw&vYXs3@`|4ohnU_%% zmRIVlD5cBlP|u}f75NFtq!UnLrsfQ;pdEY3(|c!jQvGv>ts*>_A(Zi_ux1ivr%4zs zddl@oG}7^Cwq9S}=Q7X`rTouBvd)=jOHr^Y&^Y7_;{=Nhezaowf|@kl?Rhjk&C-xtmqAown|Icrrn9ZG{QhCJpoG$Kdk z%s!(!PFVRI2bwRI;J#)XauH2hi{aQ7DhC(L49oR_wo4fBfF?eNjwAw?XZFg+#J3{4gNFt`0g-j)R~)+H{>UWOv*I*IK4Uh2)AS7)rJ~HW;~`O z^y-|K1u>@EILHQDwV>w8TFHXx1NF52l5y6p4$YfXdHszS`6Q84ufRS>e$!M5p_lp` zx8tv}te3O2#(iK0rKTf|rQZ{ipESjT@`@Ni)p7MlqF3itM-^C=WYUt>i4HQS6j_+2 zNG)V!RC7CIT0`F^|8^}spnG(@IfWD-?eZcK;n8NG^O(~Gm)14IxxQ6Hj|xt23)o;) zKv^!&#CQH%vnkDSGfTcex_VpCdO@_AbH9Gt3L@%kk-|_0YIe|q8LCW9ZYn0#{(KR^ z0ky)KpvNl#*h{dTtTK1R5AvVQ$uOySNtWr9!^ed!dHMR7=WN^_!C5l#Ql{TSFzKPi zE3DJRk;HL|_OoAo6S6k_7jGs_)CR>kWLnx{!iEsT@Op>q#TsM#G7+klpHSN8M$Hp% zu>ZcdS^fZ_+HIx=SLD&&sfUR$p5Aw!t=54fakDI(wX0dqxT%*jvTTX)RvI=s)^q-? zXWWPhpYL$rk8t@2a?EGB;UJ5Kd2GqwThUG935Qr>xgvB@G$-s|JreK?NPv1d;`FoZ z{9>|jU(SVei^<@lG-uCDgb=;6UFpU6@dV5pg!MkV!(lbq0<#u?Q8p*V2rscj9V?xS zp>pnY*HAL%novpSM{+c;X24&uF|%7)`;BaM7_O;HrSnIWSyU2iT`4&S9Nzc(O>}XA zW1H_6&;K49EWS=n>`U#}iwrS*x@mJnX~fx)QZkPVr?7|zw>NVGM$#bQpQxMU3aM)@-xdMD|nD~3f0xtPt#^ku&0$b>aC zu_W3Hu83*WNb>I>UJFaNe^w_Xr6F2*iTkOry*GxS7D63&yCtA_!G2y9-~sxXDU}#VRvp z7B`Y)ROysPYKE-zfM24FUZGS?r)W_-VsjpKVPHHI_qtSSUhRnP^9ufaQrHJI;_ZQ^ zL4H+ZPpQ2^*)co0LNR65+38Uf`ELA)u$+5L20wfp6H6z^!O*gdlm}6{2qvxq{sBLH zrNU8tTL#)MQNd zU5Q0r#U35t#Q&^DOR3`(&vabL<2htWr1QTckumyBXZWXvo!@}xsIfdGM-lAyDo`1G zJ<}$xUZ2}Y3Z6C#aW;c&I1`;YIefir5hpDaw|i6)%jjf)Sxlzr37N6v@j?6QeFT8a zlt^voZoG(C>XCZIF7>@X&fMYoF8Y^8;4Z(~=bA^+c?RMgx&ySCuKECPmz}t#WU6P{ ztf)~iohAV~e9ch-Mt|LeeJ6h87)uDDz36yE3IS2U(%gPsjn`+rNdbuHxi5;lTP_Z5 zxy%{7nZbQ!XgSb>pr_3^7svq^)|7|G647ejAimml&4qlYV@|1BfKmQ3DEUeu%z-df zcB-Q6-n=%iTKlHzC6MR5b0i#xr?kc61zOpF8ae`V#2ZtN)b9fv!zcMIY#+y+XS^3A zQ?2%xJ+#o9eXOmGS0R`6y?6{&Z=_L-!r9d$BI^fs**R)0AGUQH%o=XV2NyPHPzd5X zcv6vUOXvR8R|Xb#(-VQBa?g=}j)0^e{;HI#onD-@oln1=Obi*a^CzlKgb^h2QCZq5 z-eTBi8)eBwGlf>~dQ{F5hvz5~@)~6Z`Cp07l)b8itfWxM673xoOJfrdrgH06kATgf zOC*wrZ?S0j#i*=!8YWI1=ap}t3uzV_pGoMbMPl*flP3;jYgI#KV;`Wu%k$<0Ptz=y zYN&E&`~wJ1{JUG7HBUeZE&g%w52{AGLQR-nNKQ5RQ3J^&FRTNoV4jp=PUOAN}NRgz-S9b z<&=LR$^l7t)YyTQM`Ol6k{=t0x-xL8I>hIU9cljFYz- zxk)~qx*isNemW!c&)j82zFgDyc-l$Lf1KO+P~j#`d0jX>?UC_@^1jyb z`Y)JQgj%B2a)BTtBO{#OzTHj{qlNF7@V;W6Ilsc>5=~iUcffi8(xCzST_5Z``T&__ zyOk)+XEyzN$aW>RU={l=frG%U?c-wUZJ)O@A4RLag{26Kzffs8oNpQjZ6H5zMMZ_{ z%W<*Y0IEuP)K|^1IEc4C-ZxO5`%;;m%a4o8Y6FoK3O9q_PW9SrVYx%mJ2&v&x?;60 z(%t@QktkRyc&do9WXv{!%hZ-+AG*>a{)k$i>S~$M^2Z)c(+wu)sB4VrO1%XEj4tCQ*P0><8^8mN452 z2~u0JU6u^0_Q{YNP&AH$p5Ku`|84r52JqkSz$YHyCFgooXAdm=;5HTdp8& z$!m^<3}+p0$`KQCb4?1EZwo`_XDIE@T+Zj4bQavs2QWNdD>zV+5*&~6Fpoii5OANn zS5bh2h<8*mM|#n|W~PR-rgAXTQt#)FyNXmYB0tkks+u7xBc&In9meRJ6E5D| zo06l3g-E8|V5=U0_fT0+8E+_K>?hx#YwUNTbXrX|xwu@P-%qvsx7tOv0`71MABn(wlo7cA@~ zds?R4uElme#8+ymkP&xA=G$AGPA}X6tw#cF`V%$a;=o^Qw`T@<&X{;U&a_QpQ%c@l zwhv#jLbJNv5RF!d4#Rj{#UgRb?4AAva)P=}IOxBI^=pRFr$dCFPuKZX_Mh}=eSc~I z01@jDh4#Xrh5Q{D5k&~_&kF#$p<^LtE&5q1x_Ng&RJ8CCJ|DUvlU;w?F@Vb;q>l{> z`$jQ&0m2nLk(31QyLNH;*zviDvP|-?<3#j!grB3qn{RFIQ^7oGhYWf`4tfvZ>Dk*QK#Ab$%%_ zN)JRX_pB}T7z9QJwrdpSjvDT@MFeKV=rl%hndo2FPDbedRz`;BADu+ePxsN0eJ=2V z%ATMQ<>303#lz)x^OfsmUt|7m4WIvD0$NE)c0bhD2fIHfol}|Kq51Vo&zCev7E$*0#yyu7a=fs%UOf5o~{l^@FRP~uxsyjYRV_JcR=q$3Ap6Vp7oc9@E9D9C~_0*6vhI}o9*y@NzVPk#MLJ7xfN!d z6GtIww?`W*L472w`u!B^CVf3#QV<2B($PiZwVUJCLuE4S{xV)sNpY>w1om$j>YMHX zt3_XBI{90~FSm~kqPJ9cii80m_1cC!@%>E z=qfw*3AEn7OhI-u*nZGB3GZj*o_@^;@4w#Ds7F40PyP)?vjvOarpV#gJA%deAmw@Q zqVoF{-phYBd*Flnaa$?%5+v)*9-8CA`->JluE3rN{O|P|kLyyZ*N8hu#p>1QX$_V9 z{rAg(Ilw#Ey3qSx8$5nr4L)A~)a3^J5I3D^!{6{&*8$1((Vd=iVT;fFPLF5?x=gl& zL<;mld3_nN_x=1mEsV!-_8nnOcfG=ZoS8ZI_JeJ8_Z)hwN?tPex!cZhXprHkL9As{ znG?%-GsN`7`-|cJ4>unu8g4=fquM>BdI6f;QsPa^bByr)nfglvjz?H*NLn3ucMp#l zbDMxB7lcj$Vsc@ynN58m!cF*C2S*~{rt&J(-M#IzRy+LPk5pIY@?deu5X0OI>@e~f z9L}>a(zn3f=>Cia2X~)5gxPYa*9O3X4m`{?1MnxQmJ6kmIa2hNpRpr)wG&TGeF7 zX3(zQbJvf@;4414lcH0*1*5i^>*r#Gr*~Ww!gVmLJq5G%2L?N-`%Ke86&<1><0SXl zSQ`-h^MM8x*<-58p$d#{mHcA6bmMT8knn=dlke|dyaXR6#a8$&csf4A;U*Vs(Rj61 z;Mxi%0>g{z#J?)CKaPY9Pdi-SrM4;4Qd_8?93#1cv&t3#*e9jqENA8)P<~x+Tv6)< zi?$P9{fq>vSwp*d441E5)@@?zK1g()rr2;@j=n7PbJQpuY=2*5h<%;5o2MhheH$C$ znw5%$8vVXH7e`m#kcS~^w7hliPu1W=$SUJLcPLn!>t)s-Gjv5KW14x)t^ zEodV1VXo|OYzV<{FoWO3LBf(d-YSsbWGaP!Y#oFgRv#fu;~oh*Gy@0q?>x5z_YG!~ zuQ;1c$bHNjb4wRN={Q}Ri5!uN9CRko7i%g9Up2!vJj5W=5~mMoI~xJ!200ryv1NAn zB)r9Bv-fYl#vC6_!}kz)uv%i$AQP_B!|(MN%hyEObQ^p(19{UL4 zlytRrf7K!_89`2UOG^Y_8GlUqmfk`2tLnnhYV7~mTo!#)v}WKttBdu;!KeWg$PVXE z9|_y)0%_5(2+ZHL3h@^@n=kTngni`JOE#>Yncg?fd4VVxFr*SD43}a``P?4w?jw4)ZfNaYO@)#iSE z>yQk8+Jf*zBkH>!JkfZC6cw+M&a8zvG6Yq{b8WVHf~NCKBW;vEqRLr$T04BRZ7K_0 zUFbAu?mUr+x+wjFn`{~9TJ;pH5=?yYA=CW}cJ`Xg-+w`938PG4gm~e}bW$55-~Ff~ zHaSkqK;5YfS=#MlIcK8SNAOJgE!3;;N57p9|GTGZi%){dhen6h=ZQ$OT9Y!_8jV<- zx{nLpJz&oZwD@>F&ec2e<>f1f*t81~8P&k?r10@~E|JzL2=|wW0Q-J8_fBZjsWHqR zVR)O)$n3fMD60kCX~uQ#t-j~z^8w$k_uTnQA8tp^P&Pg$$yOlmzc9BY56Ee+o!yI> zBku8!pATjz67@K7M?+cu#b!Sr;!pDecQcQO4hu!+m_qq@;p824=*};v=g_aLYno=I zv2yB0WF!QbPx;4K2m#WLcs$HD$L0os6$3K+(gst`yhv(k9l4k>nn}|4%?t5@AIjKL z3)6k~{AMjN>#V(G+CJmlDFH|PzoWw@Z>aC$OV~@Y7 zcF=95spV!$vt(Q^23)*V*azg?SOsFRt`EYWDA@@<*+_FMlZdQKanBbXPMWrX*k{lQ z6tAcFgez)4#9#4_K5tPPh55OhT5FA((#HTnveaP)rlxq>$-B;dV&@iW$EEWvfrB%* z#DPrjQM>P*wjD7{OombKUz*mRF*3RG3X6E#eVORGL{pv3$SREw4l(`$amEDIq#l}k z6#M*`RUO;`GoHRIyBD$P5<+2RWI-jKKhs%=*fhx<5T=h2uiKAl`hNP7s%*G zCnHfikc(xPTY{y3!(a>briyU@3pS}M?Z4@Vie`q+7-0q;_3GPzhx+@-fLmMAjuD?D zN(W6_Bga`@J+Rp(NYkCyh6WGM1Z~Q#PJ0k<;4c)gyVIlHOC0hm^%MYWt&(eKhnt^g z{wUZM2G4BGvub60I?{7_pZ)3l%^$LUhN4i9JNCdk?pm4V@MbH3*nTsGVA(Gn|K+Q8 z*E>`57|DV5{Pg`5ovD9$niy^CG=S}0NgVJi$$M*<$+SgqO6%P#yhPLjKGtAp!DTy{ z*Ats{Mi(%?p`PmOJ{jH^>m2S#v{|Ye7Ry*)e$b@idV*Hr!#_&E;C|9Wt(h7tgv0y)f6^4O8J%j z{>4!{>sjy3h0kPZ0cF?k3L+7~kD;FXzmxM#_OPE?4$~cPj?&!|n{D>MPYw);gXsQ3 zl`rb1bfO4ebhUnN3Xn`Y-shGI;c=BW977ZuA_>vYk`o5fiO ziv>4D4R%2u(iJImFiDJA>+`3-&51J}!ZO!=dnkoi8g30RqO`MY6-^H>{2=8OS(LyT z@Zqh-SgGS?chTmohdJEhDz^6PFbp;m-u~|1Ic8$3LF%7gl|%B)-FvKY%sB<@Fi@Oz zKYs!jG5d06{eL*UVHxH+Djot>d^ zTV&$$min>~vL@Ms z)AxtSERpy;>Y~Tq){pe+@3`WgZ|$P)MSkE=Rc_>TeViFY{uN7;t@KtILvs-?Cd^1x|Tbp+i1 zM>$GEyj@58^kdt!`z~pFz|NSWkV$9c0Pa|Swq3NA9bnb&$~zQL$Na-tb{~-DkVAbO z*nEJ|bv_YgdA}T|^?tILMQmyq|GAih?0Pdoc3qeK4in8K{{e4)Utid{WEedrPjzVj zhqC#*Y&}R~dpp4@v8zdo9)-`VjVz#Id?+cUXh8U%%8w3Ygh>ep2PW?;fBgA=6m801 zkiux6%)>u#BaI7hZvo!7X6EMuG-;d8=7hOE)5Iw1UoN-%i#h+c)}?zg7b!OvSG%R# zSu-^@A@pDOn!kKFAfBF?@r@^wnM}6Ybad7{5bDSL*EYTHKGJf71-kcrnGTH#jPkys z-0{{2yf|PBpw?J>PrI#khtlH%hz69nFu}aDrf~=9dG`G6nFNvTb&|x@1+SaTLamCX z-PcCT75VR046$Xq%`tPI5TFU8gT+vLtgR{U&PD-yurbnjD##3jCE&07gz%UCX8QD9 z`xznhou;n$^V;vbg?UEAhQR-YrQ7_II5uh!b>RM=sP+$$Z5crQZ*+l>RcZd@9GY2W z@IL|n6tR2~*GZ8vU;q9E{zS1%=riXQh$im;CmJLDB&ur>Yk~gdvL$sJAj(U3?RO@Y zVtAfGwBP$A9drN_&}57!ErV3zd017^BU18&#NEn7lnd4V?6kL%B# zp$4=fhf|rFpNZEFXuG5p=-v*#^`=?#;&Z4S7lbqdjyzz~Ev$M^Ww`yavt8R3_0{nH z8HK^O!AVncFqju0W%!F4vs8_i;I_Z-N~;aKZL0h|2ajtMIgFVk39o`5^sv7djWjWP7pK*T4NG%j364f;arcW=7xcGJYSXdX|T~Y~8#1Z^y>=A5J?Hb5F;~T?KY6U$?M4%?FWW)Y6};W@9~k zPu&^rrq8?U9*N$IT42~M=nk(67LD^F;Y3CsLNcndTw!?3WjZG2suB+O_aelXx$^Dd zcssNj$dEh1UAQGcvO2JJusk<)4J$LN{w|l~@IaQ=>=J?HtzC~P2sDF{*^P0N{gUT; z9J|~};(Vzw+Cmf*_Wqep^GR1MHMpw71)yKODDd(cV~C5EdPNL$G8c86grFm&JSe0g6RB$DklVHlGl^a6R&YJk$j?f7Nuq7x;T zlk=+ZDrNlk1o?4WA^VkdTFT1%FCOO$u7~>79#!uQl9eNY@8zu=+x_c}EZkx37VMKNMRvU+q~j6uKa**jed-;eOctJ; zQ(dSBV0hy^6`(BK>=-;vD!kf#z$fUAi@IKqv3{VnnJwmhExsPdwew_6?6Jbn|C-W~ zOzc>Qk8TP-@*E$%W1|fgWi+`xrvhQOl)wM~kn>hiaco_*a0EgK!7X@z-~ocW1b26L zZ?u8n0fM``)40=EW5I&EyGsL&yZ+>y?~e2OKi~UWqh#0GwRf#K*PJU<`ZQz|CJx#C zs5LawxfDA4O?8f-kdMScc4v{3$}CF;qVrih?L_pWz?s`2T2sYJ01GN_nEI-FkgZ90 za6X8_D^bh|V; z<@a-Q1IQ_x(O9tnKESCxa#Q`wamWE9)qK+C{TA78fUr7#|*bOv!Qpk z^I@g-FBH=gx*m-8mw55x7~ik;N*|$_*|Q~F(&iY#?L zV3!QMbe=ZJDO^j_p3Az-uoeY2?+!ETicv;dv2R^AaGSoI9Y2#vnXJE#Q})HJyP!M0 zob~>>E7y&dPmw-kN8G{k=3Fn%DLYi>_v-l%hKt}K*PX3%PM>}f=&$5PBEh?a(aB6A zQsuq-o={L#X%VtRyqr4r=%8ly{nb3^LHWzV`wYfjHFrql-zxPQ$}qxx~kDF6u@FF1ro<;%FzR0W+~HmJa(-?9-a z>x!hy^;+2sQ&@StiP5rhNS$r<%#OdE#Cud7EmxBP-ES&T>|0%R@S@-Kg#N_ol7M8P zO)r_ea=GdO-qi{G|8{&%-%F;=+!Pu!?94{SNbRGgD0AwgcTH>?Y`pH_a-WE9xdM68 zrqa!`VvnT>id3l9`=Xxko9o<9caYu_dl2x*NVB+4?6>Ow0;GN?Y1ytkef$L5=txx~dXv-OH8qMrJpwJ?lFdNW&UJk?Zp{e)$k(4g! zezx6U=^{4tA;kXmZg<(Rc!SDN_MX>TCmq+kIY0e*;`1JK`%|0IznTSi%Bq)icBuU! z?QLtLDitl}3SE-4_oY%Kv5G74uJ<|bk!_py&W{W;861KN$kVyX))!ky#ybVl;{;s$ zYg>Ufrzy{Ui)tn7xb`7KBmiyXSfFWj@r^AvpbmbKUxb6PJ$Pu|iBlf6%;Vx}w9ogh zQ_~rB;3F~)mvW6LF`s~>v_s|iN{-VH22ZLZjHjIB1g-coj+2{ZD&MPiRxWy>W_k-K zr^K-X?{%y_@w69T7KA)deU&$eg^Ku(tV#v64+fsyc3hGf6dE1NETq!UMQ#KN?KgEa zpS~Ji@NAI&`qtK0M=e)bI4a9Cf-n{LB!SN=OMwVGVpbcxRVPVoB%$y>E)w3C%|)ks zO|+07tiMF-uwd=*K(G%Y3~*ViBz_`8YsJli)WBz1EJp#v+kCYJK6nNtejXXihKL3i zN0Wwzndim(pAO!~%C7}Xp|kQ`%Brpq3wWb267jWl&24Bg)M=@!a_VgSj)~Dz666C+ zZ#=&SjDV0^hG#pg@6~u8*X`EYTzI@Mf09H!i8bG5%#vKp^@7ah;j9%;44 zoSfI8xkFlQoR{pO%Gw8R`@IIfSQ4RJvO}oWU-h}?|hne>CvQ_=}S?06#jMeTrt{J_B zl!m&8j*RKw8FuxVasBQEc&GQ zjB%)=`JQr24y0B&Ccy6BG}k~FUE?KfNA8J@F#Mmm<2RgI@(Y-w`2!F%8`C139K>C-FWse|ID~t&~@6)&J>ehLD-nXf*4Bb3Ca@B=9-T2Ru z@&bm?)3PqF_uGJ~WqD8zBkLG!=Js3N|g5T!m)%m{XV#~F92UL~!sv&xIt zOC&}Q)C8m*PSlDu4XZ5}r2yAkf`o92RX)t?RF|yju**U%vCLRNR>jW5nzWyF-=;|g z5LWjK#g@hlIm<;(8~>f6uc5#3xfv+B)2v8`C&E z(qr6g+=lykzz+{h6k^xU>4fCOcp?y8&V_LuVz@AP6J>{s`g@1e6P0hY-PN_QS8GUQ zEd0JQ%pZGCULPLHmJ>;Ysg~ZODcwr3otXp?trQdH|7foe&tDlE zc0ayUj~XQYYf%Z$v6wXU#K5KqNiGe0M6HJ6@HNUcc_~uS*P0Kmq9t9T&p*-Xw7IZi z-V?Fe2Dmr<5NMe+3l_QeXnjm(a#NHbT_X|UP7`XMrCIEiysgRQrpKC4v_fSo?|}9g zumbF5P%p{8eG=teK&7fHk6WOR86=nH4!-|eP#=E$X=1iHRS9N&De2dic`FKJyBw1E zwJm5$h^|lHIbv zwdSL=$1UfPHR*z{5*0k9LK^pcVjO=Z(A=rFsl`_Z%cC>*lrj>kx%2MVHC|u9Cm2MD z7u=F<)~tkRG_+h_h{l^R7hG808e@{Bm=J6eh1z{CmWdEmxvd~JjX%47&nIzJ)FHL?Ea8V@mKIuFt3p<-wi-yiyqwlyaI{h z`p@c0;#TzDh9ZW@FfT+b^iK0-i}=w}{UEa%4@r(k8huq~t%P_TLmc0r&0fZ!ZoMd> zKzc1VEPrezpuEV zmpe5?&>wl1X<<|=QwtL!d1U!~;a@0^c<|M;Iz@;p@bBhQCHFq~xNQ5~%O*ia_(5I7 zSttCUX4B~7(k8m|D@1cv52^%y<`obZnsJQnOZx{cGbSe5^U}91>;_Hm!e6uQV7`r( zM?t9>QxW5)<9C#c^Hm6$n#Z++a5!hmZaFrX2s{UUMCL^nD$jd5n~k`VYgT3 zWJry}Wl2v#44~A>f9zm8)0yg+E&Re_)eMCd{kf*Wqt~l5mN`|_=6)ylVr8!jpkh|D zm4``@wD5@uC}2%D?Zu4zl5kbwbikBq7?%h3_Ly@5OZ*Wi%A6($m5Y;H=!w*HG0XKY zRZo?imqj$EV<^pMPAIARUSHAVr3&YVm0syV8;c%($>_F?t}!z-rQBy87M`7}$TIi- zV}P2;6r?9iQoUWxksKF&$8>${J6Qq4t>S{BoYc>;apBB$bN|9Qgn`RUqz$N9U-VM} zd0j@Z9xMyl&gr8-Rk3k3gX*ctS$JLEuX10om}ZjDE<uedI-%?` zSDi$klZs)VCjwqAC4NO2+m~H6u-=(M=HIlekkEqlU zJrVn|Mha!a<7n-3$rVdpAG$OUJpR18?~7pO!YYmcT)E``fk}J}hz7+;&*yb1CGPQv z**8VFG;l9t>57E4F@nZv?^F7;X|YUV@^a7);r9_KkOc2TL?pJ)_5jWU2Ub31^g>69 zV3^I%!P%GVa976A%Dxyib-=)uWM%e~=GkLMtaq8yl8Kaw+HaHoAsfr=-dIC=P4!q= zKS4Wy#o~C!A%bsRU`^;5VDUdv_xNJQhU9=9cp`!VrhZdEdWuOX4OS@i*jmCU?i$KF zCbYxYxANr3QbwP{3!M52djxlUn|rKio8|_|04=hE%3p9wiOS1u;R2PiQwTqznnpb0 z)k@bHE2M}pV~AKwBfY79k(jUsRsW2w9V`=-ifQ?Puj9{<&MzTH0vkt@(@Va}(kNgv z3)2VB8s?vi<_9G0g=U*Z?xd*c(9(JOy~*gCZ!5(k%5aFcsEqbu4YUodOw`AT^`V}Q z|K1LMAEgSn|5kMWTYwO8fEb70+qZjG)&2RJ&l<}Ll)Y$(R~@l@p(By(hf51Tqup2{ z)j0X4qDYMeX38)k;B?#f(OHxtZ2sj&=cwUkpy7i?Cp(|7JRp8}Um)pL9iA#}*21H# zhB#xW)`W$de<<2@@9R?i+j9^jstL8aUE9gS71~#CD73SYtAyQ3xs8QuSzhBKFCL+e z**T{Y?8yl|ckq|z!Y_v+w+{m{_ITJr^o+qXtc6*7(*Wu)h6%Bmt0%I+jn`nS@nS&& zUF6^F`s+2x*v&PQ?=-UCHoJt-6Um6{U=y_VMhpiu5cEA8;bvh?bvQRig2ZalOm-vOvwS@1Ll2cYmenS*1H7ckxxQ zKA?axGKx^7-M(95)h0eOM`+VkzlO*OwK7Zvh&aDJXJ-wMp3uQG#*opT0<#kJ7<=1i z%7B_tQNsXX*P0T}iwMn-8y`X*j>W2Z@0RvWNRa}PrMbJLs_|msc@Zsb6@o}fqXz z&wjrCzAOz7H|_EL-52f8ud%SrTZ&fbcjDOxe_c-ek4LopiB9amKDrlj_ULM4j zv!8ZjeI6K1NS#}5j0zJ`5Z3?lw&9a{S!>@fB#R@PuJ?SzqVM!SVLp~GAV2yQZWj>~ zX7@x8bNlf%n~C{yF_ty@*kCmk5I7juegaReAyGO!gJ0|H8dfOs9*}cIf7VV#*5-XH z30IIXyRo!) zI3cKj=3fL-wf21A?%7YB9m0V3O;m=MnqkcS7lk!7XBqz%N+nSTt(CSzgw}_?l;p4- zn4PagWt)FOSV%2Ovgp7R(Q*04C)A?d_g#*Rdm_+FY_a(px3@rkSRM`e%Fx*`25sRM zwK?``5t+d1KPYTJUC^IX^-JcA`)Lm@<2=@B3+6&;%ifuy-CJ%cbQy{Tx^^F2`j8J} zHg5saF_SlUYvkUi2l_YDBB6L6QVOdb%pR49A0rFFfAECP-m@MGG4KY8xDn-OVTT3h z>F;#D`hcS~Xf+j~kqvjd3Ljj<8XY%qiF@Y2dbohV{asj^C5*MLQ>!{i(gn^xC;9T* zRhi0`?wo9l*^$%~0)FXb9G6IND^sqIqJJm1y#D~Vh)Ae8U2PyzD~^8`SU-*BA;PletBTnSuj*FF2ABJpbtq6kDk_*~yG}l? zFv1 zsYpTk#L$_`;@pKCBgy}8l-TDN@FQj+TK~^N_ zs*p@uv1)WC+$+GQ?FA4U^uw`7ZVKsxbvf!uGt<26^_fAcbQ(fMhII9TH7wR&P1lzo z*g4QE?AkqN4ugX$*k4~nJv%4*@V>A&VsSJHvi1vB1lcVwyz-%DQ@-L3?H64f_cTV} z=E-v$lL>lrf?8phLD7c2?{oVDb73L%TkCw%j0r{lH8_VWGp*qVO_tzdgl^yHl>?c_ zBjCjXP#zyl-(v6g z%29;Tx$d?(rxqjM=C}6Rh*S%<+idOut~bF|m7NfbT-Y$D=Td-#*_${_ybDgbyu2n7 zw*mFw>s;9HZ=M~B;qu|+ct?LueAzDwfV~AmbCAZEE3VFDr9cC!h_lnYPjY4YUdR@7 zQ_qJ_k}@(foirVv>gZ29--IFAr`*q$#p2WSaNqBSm}t-hp_w||N%kTF>A&}HFErSD zn6Uw8;KH^dUescXb-*GSt-GTvQ}!P{_j5J+9T zT0aT4*DeU~BqZwfHK2@iDa4LYqq@VC1m4@kD-P8Yf)r`}6p{$oOOeZ;yhSY5xCtf7 z4lk~GVX4x;)@BxTz`C@B^`fNMLh1rcoP5DoztOxUYehTx36Fm^JUj3Td4V`eMseb! z_pZBENjPk1^53n)rjIOd$rebWAB8VoH~64g8i#y|`tI{;Tt#R^&5bRk$A-|mLHSCQ zqk7^pRZO>8H{(fth+<4W3uzsKJs~`?V#EERQu%S{N58j|d}f6;1ONMmz5^gRRv}1* zT==!HH=~dlReiMIDi3vr9vcDuYtdr4)`}I2OT157N_hJuxfIljQhgNl^IuPA1s3&E zQ;I7<^Zbs=NiSySJgn)%={DS4%jFIDJ<-}EfA5BcCtozBdER+rbg{o;KLbAWzjWQ% z2+uL~Afm}=Y-q2if`#{Y#9pxkjmD@7Xd6${D@|o7k;H%vg7{~@wo#;*)yQ*YO+z8{=UGe!^`5UNUO&@ zM&^<)#)duQ3xvy4cVyv~*I2vuG;jM6O_?!O4$dxUs>g$K)NOP=B!LEe)GD7N0z_BU z0EA)j_ih}Q_Xbh!$06Yfsw}$DGNQKE6d2?D`tHxEN_dSjUH~hZ3#PgX8W;;Hzi^xH z`^!q(gedZ&GpfMc%Fw5x#7TaSRGnK*7iYS42?b+V4hD<=d|OXL*uoA38Iws>T%P2z z+(ZV7>6HNt4-v~!uVm^GcN5h=2onjf**K?YS28OZVfxEV`To3-Vc;-;5hh7ee0^8k zmT%Z4!d!H7C$>wXLS=M@RJ?c*Q0^lc#yBC#l|6|&(@3h7@(C7W`pYgBv3XC6EDRxRCpWb>~S8xk?SLEFLT;qo&`YlM6yW@efyC z5q?VKfaeY&6?#F&Z$jwCwVX-4HU4Z{G#KL2%fI3vlNuBqQCpyLT;n8sTey|^A*Fca z>82AeHPcn9yjBU%YwZo$)yH zTUbej67B-cdOj4*ffpoVcb7uz0AM;2;e|EYyF-uv!ZrgZg8s?nuGQm;ftox321R%7x<8q zeyBj5Um9#-moQs#VD8Hy2oA)Rv({4eeBnBOe?Zrm0X2h80HyY zLm6%|W8}oLXlTDlooP4vLco3Ip`{o99K6{f>W+Qp#tK0|BYdCRBL*s?&(<&DBpl66 zmLGgwGW)4}V0-piHAdy)vw^hGCYKDtt3O0k?HC z&e@huaJ6+v9mm3V>7U>%ngHMfrzcGB$08pmk?eT&G&M3WxKK1Q#tja?esEH9BR*wv zG2jzGCX=p6nC_AuUq`gPKdzTYaLKQAWWZZYXr|@4|4+ss{#k3^J9KJKy99g3=h7p%$+0tmj z0AAgRkocxQqHN{p<*!jufJbpC3SUk9Tc=Qfz%{Y6VBQ#Sn!I@F(puycn$3J^eth+V zQZ+>68X&8bmO1;x)>Wonyx?L|RP=G9zmGj2xZ^CAR^$|k==1lhw3u1KBc ze+9>!?q{K!^q~dq@SXO_O~VNz&hY#}Bb}Z1|{!fY6 zY_?Y}b-t7m-zL^UrrcV7q!}2GFiwd!<78kO-d78-qK$8&hlQI2oVIkcXJJHrbg2-l zpmm&tgRr@T4zwbj&kmrwEJ3_iDRUCk_WMA}nRSwC7=4K@z9G40ucfAf_f9|J z`SE`A#JSN`u@$`5_C>)}DLVHsPQtbmu(LcRF`DZyAB%!mw!EXWuqlz|fGF8x{h6yR z8z%7L00?Mvji|}Ay#$9s9HLFk$*`eD=P(*C`8>5Qiw5fBRP^@G@M>S;+-q|7X<{6l z-{#w9={-)}Sls>!-&$ARdQyq;l~elIr_60Cw*faS6~wie0NhV2P?j(AToJLI0Vc?M zLJ5Q{8v^V5RThC(Hl0%(idWR8gBDJ^f_WMjv4Hbe$|CP8>nW4$y`@{`zt+047VF1zFI|p7uZY1F?9!)g~eUGw90sb zH1h!~ZN;WJb|E@ul*^&jjB`U(xptBL$aC0UjbzJZ+5MDF{y(Z=xqy-BL%gt%;l=H? z6{7s%rwQ-s91ri-KSo~I+g|**%auX0_X$Hck%&_)uTSxGZ7t9u!+w*;$qesT~XNaIvE$tiKXc-Zc<&5kBP}HJj`l1r<%20q|_X+ ziRnfaihcvsci03ae~(sP@r!%aLThN&oLY+Q5!D@KAWhEaV-^6!ct-Y1F096v=@wd8 zl2)QHQvEtEgPOp^n3wF#s6RT}z9Y>jt<_K0pSrN3h0F@Lqn?l+QW~E5=$B_vYUO23 zamhZYXWu-g$8jf>ZH}J+L%-MBv6C)m*VH@FX!5qK535Z1ZAM+>B{heDW?GMp%X zkw+Ild6lP9fD6^`C&@*ypEtWtEgu?neOa>q@D|Cx?><)6zj5ZJKW=Q|XqHpu*?~&vJ6XAdBvHy>qbG-5`v5NE{N{}hY zg4Nfi?G-C~CluIq;L=(1#LC7xV6IH9rM(8Oh)o2&nSk=z(9>&F)6S~$V8zI88^Upv5a+>-Z|D%yLH zX2g`^v+wEFPqMp!A6z;NJvq8>`M0OK@0e~>sUMCz?)~YnW&MS=1KCFBzH7)<7lZ7c2=Vc-Im|60GqV1+)Y=|&TQdV*OrUVzl z$Z?{CuDGRO{HBT8rH%+r$Lmv?O0?`)Sy-+C8D>ssV0EE@;^v1W1_ly=&~>=s_m&+( zd0B%sQnmCdg+0*T?ru0pI-SCFapFD(@&aerDYM7Jp;xn))>j`a%zS+u-(be+ zPVck>4&H18tQbPQG9Se#q2T`A#Bo*L}R36zR zI*DZg&6Fe#_1v#t1}Tiek9&~v!BsY7U3?QA7p!Z9uU?~9WVdcBAAZ>o`3AgCu z1(`WT=42qJ)}I#$E2M@6Vt)Pnc>=66ee68YB3Hs#YKpCjU5f~3l8Wh@12=Jsc9*AF z+;bs-1VEtS5O)kIo~rDStxx`ha;d~4fL-gN1bT2Fk)SiB) zk-qRqDd!MVNkEaGwgEGHFi%Q{!8E;dLd&(Q(MS>Lrm2K`F{TW`)MW|0tM5KoC^^-yj$IMCR65ls!5=3{?{mKp6s#8 zodH32q*f6wKADIBno8*yIxgoqId3Agx=MV-6-fd7ep2@KC-FYQwBN!z z)=eQyhPZ*P{9Djf;kd2hig>F8s&S}%-=VZpH!mdl&gfcD1M#W|;ubui%0S!^n zWxx*`Q;HD=h_|{JV&0zSD`$N*1~Wpp>~G_@y7MtkLx2j;gsQQ5hJgM$?ONZ3Kk@wd zGaA+p%-@~e1}1UUjACBr9X2W$MDlZ~FAQAHHVKqY-R?ewr_3XITwb9cu0fSM@67vg z<8B65=}{di0w@pdS#dzv)hrfPZNZEwuPuQEVHxlKV#qs4!l!U%`GF z?@om(oH=}u(ZR9)!i#nRw{`yAG*l5(tbbQhTQn9;*VZDcx6BpKUr=z>UBrD;@)nK@ z^9*S*=LWbd@v0o3l}h9!`Bdo|UB2jXeN*xIXchLM@-Tq;k&)4w&h&T z4Ia#UkGx=crIbJ*@O8t2s{{)TcS``AlvLJ@@kVs}gAsGXcyc7RBb{nZmprk?Vh863 zUmOjK5WzB9ie;C(=0*d6gR*a)#p3*{q)GyqEn`a#sat4Kd>Tz@D@Z2@q-a5rh#>`* z5h?i9Y>+>p<;o)~{82rIG@k)X^Z~w;ca44cNz1_XPC`gew-c>X$967&7OM=%9gb7J z$NCFr+yZ|1Nd>MwByM>b9svfx2p`T-P{2kFc&Au3F~wOY`yIf$bwS?P(y_9sV`G$lCWzRBzLa5z7Wj{BMb*4C zt7fU?Y5w~4oz0bf8~Oa<(SsMix!KixiqlB`*M5ZgXLfIi@?bC{X!7a`1>y}u3g}p| zArlxr$^OQguF)Y;5iRh_-8~~AoJgOlw|{3eAW#eR)F`SmIy{=ygT&Bx z9-1xLJL|t>v8cPiZ_vc*vcN*K!!>p3DjJTZrh~R0<;A-QX;^@ygQMx(0+Pl^C@BY* zvch1$VuOwnUgqI`-?S%aecv;qRdl+8){2D7p%g#q<9)@PgS@x|^PW_cHX~*4arbY* zv-L(>UG)aGjIrl&@94I=_KaJ_C+EsEfeDz)a$@ST>R|nH;ZajYpI8me@Os(f-5gAy z&PllA^2T)Dr`1*iVLWbmAA#e{uX|f;&hA{QStn`)wX$7BH=x-2c{?S_#m8-KInCa7 z7vP979926zzdm*2R(c)8k6!IR*0de~Z?4}p(=sPVm_&4hn*{tN*9dd$cV58V9}8_> zb*=_Yzi5{Zfdb!UyJna7H^6B>3Tl1dJ)XJtKoH|h&8c#?bkEwo=7|or=HE}vn>?9B zh9!2Dw0%wpX9f4z)+67-sw=I0{>aSg3p`4AVd_uwKr6DEj+S%Uvdgy)^=D7gwLcvJ zuRUsh?;iwA4bPqYsn2O>P=Bs*BcL2p!vZ4i_T!e^XEP?6Vt3sPSj4V@;xe1)@1bz@ zv9&m>jS$Fns-oo0gH6uSWP#m;GhyO28)SFr%d^5IhfT{UzzOLrEeZC?j7}qK6Nual zFRgHVt#ReH!+)!QxDvFg@AO*d#I)Av8w8SbN*oKY-H@YLW1lnEy{l&0C|EAR zSXdcx_F~=$JV(rzO-AWD$8O*#;WjuZwRLyzUj$JHK z@fg5czx|`}Ro13D6IaKFF+Q)W6zxp+Qg`E9`Vq#>@L4G}o+Ixg@koJGhdfk$>eqKe zvWFZpcC3Xs+^Yfa|quvQwMLQmj_>j5I8bF`?@_gEZ(6eXB zp444zS~`B2t+hAgkV^ha*KqSnHH1BEh}KT7oVdBOE0%Uj^#WA2Ny+Bo&|LP+$h|kH z-~L(O3_JGG#G!5A^-?u+G&T{aIc zP4!b}C91$oM}6pr3}orj!ID?$gt)aJzXO%>A%^wL2Kh{m5ylIl=hlO#1*06xU~?j4 z`W;(lE%-~vCN0fb%Bq2y=~fkWmO@}OzX$JjL9G8O+bG_EtwYIH* zZ!dq$33=MXtj#Q)ot@7znf5xSsc!lLtK;gZQt0f}>y9?x!(kOu&j$6>p?0Mlm- zRZ@qa+Le&*fN|vRE#R(0clFHF$48%tvbf+${Owad&-ENb#(vmz#de8kRNWiysd0ry zjve1rqMyUt+{*@%NkD!1Mn5eoqRhRCg4kcpsFX{<+J)yroLoj2u~!iz6jqZ#iH~p} zP@z0}zI#+B_kA7_5YJZiWwlc|tQ!(sUp}yz7_Wm4z`JSQ` zr1-epk4T$wxFkSzw$Hdw@5wMpzby6Qwa&}hqq{j=f01qLPYnm{8cS8wJ6lTx64V|| zGU^}Ht0)!^ZU-{HBi?7eujWy)25tOK(&`H*P!UQYai4Y+=J`qRNq33}H%*Pc`iS3t zQhva@=5dhaiBfvD*>fVLaK zFhV7yB;urqENb4XO;p!ujJ~Vpe#2`Y2r`JgOLmD4QtqYe%(dhi*3)de(GOnDKfmff z|D(&AIe1vP%h24zp5r$Rni&l7lh-@!6|@A(Y*HTB`W*Nd_`|Fv zb7wY*+fyf-sjLE;7OOBbeNbv=oN)?aNxi*R5n#@J&$pZuzcmNRwB61hwbc2&UKx*Q z=@3~xmG}4wP(F5;v8+suRU|mA9@?m}yE?Lkj+7rwa-J2{)ZUhyQI@+pXPd%qIIJYk zXg!uW<}(i(|`tdba4L-86G3QJvfhUMa09xaO76j+*+@91{?_zpE*$E|3*P^USR)ssx>+ z{YcqWT9yzwGhG;(SwGUI)AJixvyc@Q@1L$WG({V>z#K$eUhG(lT!9?8so>Q(--V=|c24oc1j{c~r8KDhWQ0{U| zaI)S8)Do3ZVE^2G2(?1ucG7;}t&f@>SdSk}8)l7cv!d8ph@~(o=h(m6ewf?3v{WxQ zJr-TSpg6}XDJycyxB1~wr3o0{Di1QV!X963DdB0e@hr#K;kwVKO`t5#sBzvu_E^=I zKQ^z|kFZXwHNIRjKAfs{y3-g*`mS`^Udg;c=TqnqIYiNG5?ET>N4|*QMVGxFRH&z6 zx@00y={5`?{xaFhS2T1xP&dz+kR^b?9>&qW_r;|YE`y<{hTU?oO6o~%y?!T_2)Cc> zYx~DmHKcrTwUDLWoOUa&M%E-S(6I!|dyN1ky;gtmG^@T*Dv?PEkE0giWYxv3-BP!$ z<7_dhCc57-Wz485uXT)Np6q6mxMIF%`>EcCPg0K^jcu~Vr*}1{n}n1;YFq8j@yXiq@uV-W&9Ay z7NtyNTpOr$$$VJ9o&h0a6AV+I=ht?+9GqRb+0IZsV*k$Ga(Tc9$(OE=Ke%0#TZ|RW ze;gnYo(Zm>k0us2zqxfAonstbq#7ldwV}foXdZZ4Xe`^m$LZB@hTt%Io&zaj*>5=0 z7AVU7v>Ku>q$MMX5|nG1&jh&BD!S}CJ)TFed?A|$M5A$bk4*=MPK(WO_NACfWyN#N zKc@=H*_x(`S#Pm3GMBtwvoF?8q&zYnA$g+DZHW(fmIK-t)(*l1o{_-y6u2JFD)W=7 zIiNDTV92HUqx6NUnjX>Kn!xD&BS+9tL=XrSBKjG}Xsm-Pc6xc{R>U)Y@*E&$xg|2vvL# zO@}?~Tn=LEs6wO{d}MiS&=&2D-@sbhDIfRKAG?0oImvo;%&GRZZGBjapjm0dUJdQ; z;T}8H&%Zl6Ru=!>Pq7V-Xm$pJEB~R)LS~Dg29VIj3BF=2V03;0R~+?+jUuCV=}| zjWZ$=O?{&Jr?ORak{td?fV&UkrNJ;p#9b+$2a;DP6&H2fu9QZQcpWKM&X>is3%6Li z!b<&97n*N?UHvq=di8!7>NHi~WtM%{JIG zVcJ|^8oI^iy z)T|_V9UDCFK8#oh9YZ3oW@o%?emnFLm}NlIw9r2buhfd}BhSJ|z1k9+ag1Hh{=7p@ z!444u=M4r(9@o{m!?CM6KF|J{-C0*nLo7O^&Sa;Mc+RQaG zQG4rc(o5*6RfUEWw7%tq~!8frFK zVBCzLTd^58dP$f{Q&%ss!++VXW^^EFrBHZ4qVKer+QCl(J08C)pJ_mzsg}=5)0uQ~ z5Nm#vCW2bM#YxaV^ePGZfBheb!q@KI;`ER zoSM_VDt3I3^5xpIR@sAt%Z}a^oN+xZbKK@-)D>bCAOJ+oEJ}SK=gSkuJY4L3T=v%T zNFlND4rIrcxK3bS=4MCob$@wdchnVK$+ewSVeMLJz#UW%o~~jn?oa$d`6Pceqtd}C zST!mZy0rVOSX)<^YGg=z>(>xcz8VStsH$glyi}B$fy2|_NkTgF^mt^>E*`6MBgwzz zvrl2;>@ww*pTC`wy3;nd=wdmNXe%0(=2HjND;uH#DP|?35>rV^a$nhN%Tn<0JEFGz zC|3BGy_XDhX~gOSu#)6Q)`L^F+yYymG;zfs(PgIFiS9t(NIoMB$*(3Se2|z(lgsnu)*oJg&>Z z{xA|n%Y7EO&@PkNJ%w_>+t^0L_Z@CdfYjp%_ro!B8x5VY`v|KWpR_O zzZX=IFW00;2UQ3V=g@A8HKBX2K_?6&1^OK*1+?JVw9k9xr2Uo31DHRO9E)_LbTRpMb7$n|N6as)%uE|63ov z=2waGsCu=bhpTo&#oaW)ehI-zYYs}2<8Ak)chMmFzU)N^AovJ9sbOZ>_Gmres;aqT zf}Da_ACgPV%vtF!NVN@6zq>#h{#KkRby?J*DbSD!RdqSopJ^4#4vNNpx9o)nfikI& z`NPdh`@6F*3O@^0H}x#MxJkWuP`6xxnlR%Ggt|GwH9H=Heacgb~M^&3?3 zn}^NqEuYkmhlZ@y$d}ffnQP7;B`-UT!|D*HX3*s)i*mb~8CffaR@ON7VZ9>jaYe8E z$AmPuscS6DgyGsu3G2leKve3_`x)_>1E_>858&a4SM8bA$GVqPapVxh7h-nsNx#I| z7FQ_XI=|o5E9F>`%ZcN) zWQX%Ox|i5;3{{-dlGOu{)Eengul`lCrr$%;l9A47(ELf_Ll<|%dVq_65l`zIV^vpx zw!FNi?ovd{$s+WiVDC!)>=(p!Arg}>h^#4@JjgSy*i~y_SVl*W$R%qCXL)g1Xfa`M zIJipf@0|0&SEMp(sBozFQkYvcn6B_yR>M=zD|SwJ1?2Z6ZX}I=u{^aNtDla=d6v}n z=1R@s(xJ4J+>jxxB)6Q``r33mP2bRFAzuQsCwj~)83bCCO1@havKqKtX;Mcrv zAx2AN&~-DPFHaPUgH1rf&Iz0^{jIFmv0sAtQ&9WE(q4IPsUD-z6Fb&ec~jZBARh~~ zXD1B2=;`rW+mR9068U)6@F$RRnrThwOpw>3C<(dlbaOx1zF**%EP@&=M}MCD>2;w`pLy^YM=z1aiKYB+wctb{rJz2klz3tN{bBBeh@%@QlPW+NM`UtbECwqOwc+V&&^9C&UO_G~bIDH+m@6%`MSMz6^QzGIZu7 zVkBLx7>Z09hNWS)-Fq|t!~L+&FYjO8@AvEL=k4g~T&(r+*xM#Dt zO2!{uZbCe0@@!%7Y;PKsPJIXa3V7oVh^jsX>bkoY_j-~{VKr(!cKrqke_cw8q?8k8 z*ptMx(6`NX-Sx!c&i%zV4rX>)cI|0w$ko|j6==WtvwcZTM;Yu}9iqd)nJ!}?Z{@gv z*J92Y&3Hwn@G3cbPS<#Dk*9|tS0D;KW5N*E!_pMGcd;IOL2*4sBNQ#1i!p~#+}lm} zXZl-PkBywe7c6Iq?hklm>1|P7i8b1H% zX3clt5HcSKIZ^TWB4J*BC@Oy30b$t`Kagr;W7+Im=NDPo@V;MnHCl8Nn8?~|bMySVnWRJ;K`$D@iP>8U- zAJTUxi{A8SE6Lkfay0w=ntG z0Rb+|G#Gqr_p6B9=-Qb|5nQm88Otx3_c1Ap`*L9p#kXFpK-r+RsX8rBpET+52VoH< zIfYzweJb2|6W0if_L@1(tFS`lvE}|-sNvpeekVsO$j&a;;PY~KwJL63eugYNLQ_;4 zGOq7}BlTq(Qc0dyubjZ>o%LxO(@mErDV5|P$Wfo7-IvwYlh%$n;4<^9TN-l9LepK6 z+Rdp&aCg~hRY;rBjtEVrHc5F@sV1dMDE}N~lu$-QW#UjK$^RE1NDevX1Evs+Fr{Mt zytM-7s6s|FTbYt2tH6~uk2J6&)L*jFm*_|EzH1`KMxf16+KQ4a=nBWA5@C10FM53O zhRIs17>r{TtcaRVrADH}(`cEPg!dt1veAN2Ue z{ zQkYNj$o{5^6VS>ebHvqOCIFX9b?Olag3q>wOF==;b+ok^1>%{&IUZI@oCq2(?u+-#AzpCD|EdS zf-;=d1`G1z`-W*05=m1kmeRxHc|*4i&0?*cD|tHz(i^amhQuC3!+ z0Esbb-&@jCwqz@8fHQL(e}#1Z=jM8QDap|S0Ah^O??)7vw_a~YL~wr5`9q2e?&qqI z&=#g03Pm^$YusYg9zR*Vp~#oA;wTq7Auswsg8&EM_Rzy!Z=edEg3JLu*YpL2-d`dC zJGj#Zp&IKhp;4<3=$W_2Y;1=CcItO)At4IEy)*$m{fqV++sS~PVFPv8b%i{1h{VKE WfKR1t=j>Af-!W&m! **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Pokémon API: - -| URL | HTTP Verb | Request Body | Result | -| :------------------: | :-------: | :----------: | :----------------------------------------------------------------------: | -| /api/pokemon | GET | empty | Return JSON of all Pokémon | -| /api/pokemon | POST | JSON | Create new Pokémon and return JSON of created Pokémon | -| /api/pokemon | DELETE | empty | Delete all Pokémon in and return JSON of deleted Pokémon | -| /api/pokemon/:number | GET | empty | Return JSON of single Pokémon with matching `number` | -| /api/pokemon/:number | PUT | JSON | Update Pokémon with matching `number` and return JSON of updated Pokémon | -| /api/pokemon/:number | DELETE | empty | Delete Pokémon with matching `number` and return JSON of deleted Pokémon | - -- [ ] Connect Mongoose to your local Mongo database in `db/index.js` -- [ ] Create a Pokémon model in `resources/pokemon/Pokemon.js` and register it with Mongoose as the `Pokemon` collection with the following properties: - - [ ] `number`, a unique number - - [ ] `name`, a unique string - - [ ] `types`, an array of strings - - [ ] `imgUrl`, a string -- [ ] Populate your Mongo database with the 151 original Pokémon found in `data/pokemon.json` -- [ ] Create a controller in `resources/pokemon/pokemonController.js` that interacts with your Pokémon model -- [ ] Create a router in `resources/pokemon/pokemonRouter.js` that utilizes each of your controller's methods. Be sure to handle errors appropriately. -- [ ] Import `pokemon.router` into `server.js` and assign it to the correct route - -### Front-end - -Inside of `client/`, implement a single page front end to interact with this API using React. - -Your front end should be served from Express and should allow the user to: - -- [ ] Display all Pokémon (with their images) -- [ ] Add a new Pokémon -- [ ] Filter Pokémon based on their type -- [ ] Edit existing Pokémon -- [ ] Delete Pokémon - -> **Instructions:** follow these instructions to have a well structured client application - -- [ ] Run this command a brand new React App in a folder named `client`. Then navigate to it. - -``` -npx create-react-app client -cd client/ -``` - -- [ ] Create a new folder called `components` -- [ ] Create the components that you'll need there: - - PokemonList.js - - PokemonDetails.js - - -- [ ] Use [React Router](https://reactrouter.com/) to route and pass data between components -- [ ] Create a `.env` file for your [environment variables](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project), like so: - -``` -REACT_APP_API_URL="http://localhost:8000/api" -``` - -### Middleware (bonus) - -> **Important:** You must complete all of the steps in [back-end](#back-end) before moving onto this section. - -Inside of `server/middleware/rateLimiter.js`, create a custom middleware function in which you implement rate limiting for your API with the following guidelines. - -- [ ] Require each request to `/api/pokemon` to include a `User` property in the header -- [ ] Only allow a single user to make 100 requests per hour -- [ ] Mount your middleware in an appropriate location in `server/server.js` -- [ ] Update your front-end to send `user` property with each request - -### Available Resources - -You may visit each of these resources directly, or search for them on Google with the [`site:`](https://support.google.com/websearch/answer/2466433?hl=en) operator: - -- [MDN](https://developer.mozilla.org/en-US/) -- [Stack Overflow](http://stackoverflow.com/) -- [Express docs](https://expressjs.com/) -- [Mongo docs](https://docs.mongodb.com/) -- [Mongoose docs](http://mongoosejs.com/docs/index.html) -- [React docs](https://facebook.github.io/react/docs/getting-started.html) -- [Angular docs](https://docs.angularjs.org/api) -- [Backbone docs](http://backbonejs.org/) -- [Webpack docs](https://webpack.github.io/docs/) diff --git a/poke-mongo/data/pokemon.json b/poke-mongo/data/pokemon.json deleted file mode 100644 index 863c9ad..0000000 --- a/poke-mongo/data/pokemon.json +++ /dev/null @@ -1,908 +0,0 @@ -[ - { - "number": 1, - "name": "Bulbasaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/001.png?raw=true" - }, - { - "number": 2, - "name": "Ivysaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/002.png?raw=true" - }, - { - "number": 3, - "name": "Venusaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/003.png?raw=true" - }, - { - "number": 4, - "name": "Charmander", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/004.png?raw=true" - }, - { - "number": 5, - "name": "Charmeleon", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/005.png?raw=true" - }, - { - "number": 6, - "name": "Charizard", - "types": ["Fire", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/006.png?raw=true" - }, - { - "number": 7, - "name": "Squirtle", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/007.png?raw=true" - }, - { - "number": 8, - "name": "Wartortle", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/008.png?raw=true" - }, - { - "number": 9, - "name": "Blastoise", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/009.png?raw=true" - }, - { - "number": 10, - "name": "Caterpie", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/010.png?raw=true" - }, - { - "number": 11, - "name": "Metapod", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/011.png?raw=true" - }, - { - "number": 12, - "name": "Butterfree", - "types": ["Bug", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/012.png?raw=true" - }, - { - "number": 13, - "name": "Weedle", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/013.png?raw=true" - }, - { - "number": 14, - "name": "Kakuna", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/014.png?raw=true" - }, - { - "number": 15, - "name": "Beedrill", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/015.png?raw=true" - }, - { - "number": 16, - "name": "Pidgey", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/016.png?raw=true" - }, - { - "number": 17, - "name": "Pidgeotto", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/017.png?raw=true" - }, - { - "number": 18, - "name": "Pidgeot", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/018.png?raw=true" - }, - { - "number": 19, - "name": "Rattata", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/019.png?raw=true" - }, - { - "number": 20, - "name": "Raticate", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/020.png?raw=true" - }, - { - "number": 21, - "name": "Spearow", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/021.png?raw=true" - }, - { - "number": 22, - "name": "Fearow", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/022.png?raw=true" - }, - { - "number": 23, - "name": "Ekans", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/023.png?raw=true" - }, - { - "number": 24, - "name": "Arbok", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/024.png?raw=true" - }, - { - "number": 25, - "name": "Pikachu", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/025.png?raw=true" - }, - { - "number": 26, - "name": "Raichu", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/026.png?raw=true" - }, - { - "number": 27, - "name": "Sandshrew", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/027.png?raw=true" - }, - { - "number": 28, - "name": "Sandslash", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/028.png?raw=true" - }, - { - "number": 29, - "name": "Nidoran (♀)", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/029.png?raw=true" - }, - { - "number": 30, - "name": "Nidorina", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/030.png?raw=true" - }, - { - "number": 31, - "name": "Nidoqueen", - "types": ["Poison", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/031.png?raw=true" - }, - { - "number": 32, - "name": "Nidoran (♂)", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/032.png?raw=true" - }, - { - "number": 33, - "name": "Nidorino", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/033.png?raw=true" - }, - { - "number": 34, - "name": "Nidoking", - "types": ["Poison", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/034.png?raw=true" - }, - { - "number": 35, - "name": "Clefairy", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/035.png?raw=true" - }, - { - "number": 36, - "name": "Clefable", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/036.png?raw=true" - }, - { - "number": 37, - "name": "Vulpix", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/037.png?raw=true" - }, - { - "number": 38, - "name": "Ninetales", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/038.png?raw=true" - }, - { - "number": 39, - "name": "Jigglypuff", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/039.png?raw=true" - }, - { - "number": 40, - "name": "Wigglytuff", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/040.png?raw=true" - }, - { - "number": 41, - "name": "Zubat", - "types": ["Poison", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/041.png?raw=true" - }, - { - "number": 42, - "name": "Golbat", - "types": ["Poison", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/042.png?raw=true" - }, - { - "number": 43, - "name": "Oddish", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/043.png?raw=true" - }, - { - "number": 44, - "name": "Gloom", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/044.png?raw=true" - }, - { - "number": 45, - "name": "Vileplume", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/045.png?raw=true" - }, - { - "number": 46, - "name": "Paras", - "types": ["Bug", "Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/046.png?raw=true" - }, - { - "number": 47, - "name": "Parasect", - "types": ["Bug", "Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/047.png?raw=true" - }, - { - "number": 48, - "name": "Venonat", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/048.png?raw=true" - }, - { - "number": 49, - "name": "Venomoth", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/049.png?raw=true" - }, - { - "number": 50, - "name": "Diglett", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/050.png?raw=true" - }, - { - "number": 51, - "name": "Dugtrio", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/051.png?raw=true" - }, - { - "number": 52, - "name": "Meowth", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/052.png?raw=true" - }, - { - "number": 53, - "name": "Persian", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/053.png?raw=true" - }, - { - "number": 54, - "name": "Psyduck", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/054.png?raw=true" - }, - { - "number": 55, - "name": "Golduck", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/055.png?raw=true" - }, - { - "number": 56, - "name": "Mankey", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/056.png?raw=true" - }, - { - "number": 57, - "name": "Primeape", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/057.png?raw=true" - }, - { - "number": 58, - "name": "Growlithe", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/058.png?raw=true" - }, - { - "number": 59, - "name": "Arcanine", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/059.png?raw=true" - }, - { - "number": 60, - "name": "Poliwag", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/060.png?raw=true" - }, - { - "number": 61, - "name": "Poliwhirl", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/061.png?raw=true" - }, - { - "number": 62, - "name": "Poliwrath", - "types": ["Water", "Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/062.png?raw=true" - }, - { - "number": 63, - "name": "Abra", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/063.png?raw=true" - }, - { - "number": 64, - "name": "Kadabra", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/064.png?raw=true" - }, - { - "number": 65, - "name": "Alakazam", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/065.png?raw=true" - }, - { - "number": 66, - "name": "Machop", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/066.png?raw=true" - }, - { - "number": 67, - "name": "Machoke", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/067.png?raw=true" - }, - { - "number": 68, - "name": "Machamp", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/068.png?raw=true" - }, - { - "number": 69, - "name": "Bellsprout", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/069.png?raw=true" - }, - { - "number": 70, - "name": "Weepinbell", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/070.png?raw=true" - }, - { - "number": 71, - "name": "Victreebel", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/071.png?raw=true" - }, - { - "number": 72, - "name": "Tentacool", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/072.png?raw=true" - }, - { - "number": 73, - "name": "Tentacruel", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/073.png?raw=true" - }, - { - "number": 74, - "name": "Geodude", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/074.png?raw=true" - }, - { - "number": 75, - "name": "Graveler", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/075.png?raw=true" - }, - { - "number": 76, - "name": "Golem", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/076.png?raw=true" - }, - { - "number": 77, - "name": "Ponyta", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/077.png?raw=true" - }, - { - "number": 78, - "name": "Rapidash", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/078.png?raw=true" - }, - { - "number": 79, - "name": "Slowpoke", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/079.png?raw=true" - }, - { - "number": 80, - "name": "Slowbro", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/080.png?raw=true" - }, - { - "number": 81, - "name": "Magnemite", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/081.png?raw=true" - }, - { - "number": 82, - "name": "Magneton", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/082.png?raw=true" - }, - { - "number": 83, - "name": "Farfetch'd", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/083.png?raw=true" - }, - { - "number": 84, - "name": "Doduo", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/084.png?raw=true" - }, - { - "number": 85, - "name": "Dodrio", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/085.png?raw=true" - }, - { - "number": 86, - "name": "Seel", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/086.png?raw=true" - }, - { - "number": 87, - "name": "Dewgong", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/087.png?raw=true" - }, - { - "number": 88, - "name": "Grimer", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/088.png?raw=true" - }, - { - "number": 89, - "name": "Muk", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/089.png?raw=true" - }, - { - "number": 90, - "name": "Shellder", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/090.png?raw=true" - }, - { - "number": 91, - "name": "Cloyster", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/091.png?raw=true" - }, - { - "number": 92, - "name": "Gastly", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/092.png?raw=true" - }, - { - "number": 93, - "name": "Haunter", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/093.png?raw=true" - }, - { - "number": 94, - "name": "Gengar", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/094.png?raw=true" - }, - { - "number": 95, - "name": "Onix", - "types": ["Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/095.png?raw=true" - }, - { - "number": 96, - "name": "Drowzee", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/096.png?raw=true" - }, - { - "number": 97, - "name": "Hypno", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/097.png?raw=true" - }, - { - "number": 98, - "name": "Krabby", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/098.png?raw=true" - }, - { - "number": 99, - "name": "Kingler", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/099.png?raw=true" - }, - { - "number": 100, - "name": "Voltorb", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/100.png?raw=true" - }, - { - "number": 101, - "name": "Electrode", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/101.png?raw=true" - }, - { - "number": 102, - "name": "Exeggcute", - "types": ["Grass", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/102.png?raw=true" - }, - { - "number": 103, - "name": "Exeggutor", - "types": ["Grass", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/103.png?raw=true" - }, - { - "number": 104, - "name": "Cubone", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/104.png?raw=true" - }, - { - "number": 105, - "name": "Marowak", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/105.png?raw=true" - }, - { - "number": 106, - "name": "Hitmonlee", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/106.png?raw=true" - }, - { - "number": 107, - "name": "Hitmonchan", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/107.png?raw=true" - }, - { - "number": 108, - "name": "Lickitung", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/108.png?raw=true" - }, - { - "number": 109, - "name": "Koffing", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/109.png?raw=true" - }, - { - "number": 110, - "name": "Weezing", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/110.png?raw=true" - }, - { - "number": 111, - "name": "Rhyhorn", - "types": ["Ground", "Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/111.png?raw=true" - }, - { - "number": 112, - "name": "Rhydon", - "types": ["Ground", "Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/112.png?raw=true" - }, - { - "number": 113, - "name": "Chansey", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/113.png?raw=true" - }, - { - "number": 114, - "name": "Tangela", - "types": ["Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/114.png?raw=true" - }, - { - "number": 115, - "name": "Kangaskhan", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/115.png?raw=true" - }, - { - "number": 116, - "name": "Horsea", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/116.png?raw=true" - }, - { - "number": 117, - "name": "Seadra", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/117.png?raw=true" - }, - { - "number": 118, - "name": "Goldeen", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/118.png?raw=true" - }, - { - "number": 119, - "name": "Seaking", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/119.png?raw=true" - }, - { - "number": 120, - "name": "Staryu", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/120.png?raw=true" - }, - { - "number": 121, - "name": "Starmie", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/121.png?raw=true" - }, - { - "number": 122, - "name": "Mr. Mime", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/122.png?raw=true" - }, - { - "number": 123, - "name": "Scyther", - "types": ["Bug", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/123.png?raw=true" - }, - { - "number": 124, - "name": "Jynx", - "types": ["Ice", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/124.png?raw=true" - }, - { - "number": 125, - "name": "Electabuzz", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/125.png?raw=true" - }, - { - "number": 126, - "name": "Magmar", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/126.png?raw=true" - }, - { - "number": 127, - "name": "Pinsir", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/127.png?raw=true" - }, - { - "number": 128, - "name": "Tauros", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/128.png?raw=true" - }, - { - "number": 129, - "name": "Magikarp", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/129.png?raw=true" - }, - { - "number": 130, - "name": "Gyarados", - "types": ["Water", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/130.png?raw=true" - }, - { - "number": 131, - "name": "Lapras", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/131.png?raw=true" - }, - { - "number": 132, - "name": "Ditto", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/132.png?raw=true" - }, - { - "number": 133, - "name": "Eevee", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/133.png?raw=true" - }, - { - "number": 134, - "name": "Vaporeon", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/134.png?raw=true" - }, - { - "number": 135, - "name": "Jolteon", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/135.png?raw=true" - }, - { - "number": 136, - "name": "Flareon", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/136.png?raw=true" - }, - { - "number": 137, - "name": "Porygon", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/137.png?raw=true" - }, - { - "number": 138, - "name": "Omanyte", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/138.png?raw=true" - }, - { - "number": 139, - "name": "Omastar", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/139.png?raw=true" - }, - { - "number": 140, - "name": "Kabuto", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/140.png?raw=true" - }, - { - "number": 141, - "name": "Kabutops", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/141.png?raw=true" - }, - { - "number": 142, - "name": "Aerodactyl", - "types": ["Rock", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/142.png?raw=true" - }, - { - "number": 143, - "name": "Snorlax", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/143.png?raw=true" - }, - { - "number": 144, - "name": "Articuno", - "types": ["Ice", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/144.png?raw=true" - }, - { - "number": 145, - "name": "Zapdos", - "types": ["Electric", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/145.png?raw=true" - }, - { - "number": 146, - "name": "Moltres", - "types": ["Fire", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/146.png?raw=true" - }, - { - "number": 147, - "name": "Dratini", - "types": ["Dragon"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/147.png?raw=true" - }, - { - "number": 148, - "name": "Dragonair", - "types": ["Dragon"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/148.png?raw=true" - }, - { - "number": 149, - "name": "Dragonite", - "types": ["Dragon", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/149.png?raw=true" - }, - { - "number": 150, - "name": "Mewtwo", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/150.png?raw=true" - }, - { - "number": 151, - "name": "Mew", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/151.png?raw=true" - } - ] \ No newline at end of file diff --git a/poke-mongo/server/db/index.js b/poke-mongo/server/db/index.js deleted file mode 100644 index 433babf..0000000 --- a/poke-mongo/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your Database Connection comes here - */ \ No newline at end of file diff --git a/poke-mongo/server/index.js b/poke-mongo/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/poke-mongo/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file From 32103896e10f31893da04f977ddc39e10ed07aab Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sat, 25 Dec 2021 20:15:07 +0100 Subject: [PATCH 02/25] updated team names --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index df53d8a..f66f69e 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ Make sure that you have already created your own **organisation** with your team Edit this file by filling your team composition here: -- [ ] _Student full name_ | _Github username_ | **Scrum Master** -- [ ] _Student full name_ | _Gihub username_ -- [ ] _Student full name_ | _Gihub username_ +- [ ] Mohamed Mouyaed Rassas | mohachmadim | **Scrum Master** +- [ ] Mohamed Ashraf Zohdi | AshrafZohdi +- [ ] Mohamed Bliwa | BLIWA ## Technologies From 15050f7724546ff8fb97ad0eac8d846ed0895ed8 Mon Sep 17 00:00:00 2001 From: AshrafZohdi Date: Sun, 26 Dec 2021 19:26:53 +0100 Subject: [PATCH 03/25] Create seeder.js seeder created --- task-management/seeder.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 task-management/seeder.js diff --git a/task-management/seeder.js b/task-management/seeder.js new file mode 100644 index 0000000..15c1487 --- /dev/null +++ b/task-management/seeder.js @@ -0,0 +1,29 @@ +onst fs = require('fs') +const util = require('util') +const readDir = util.promisify(fs.readdir).bind(fs) +const path = require('path') +const mongoose = require('mongoose') + +function toTitleCase (str) { + return str.replace(/\w\S*/g, (txt) => { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase() + }) +} + +async function seedDatabase (runSaveMiddleware = false) { + const dir = await readDir(__dirname) + const seedFiles = dir.filter(f => f.endsWith('.seed.js')) + + for (const file of seedFiles) { + const fileName = file.split('.seed.js')[0] + const modelName = toTitleCase(fileName) + const model = mongoose.models[modelName] + + if (!model) throw new Error(`Cannot find Model '${modelName}'`) + const fileContents = require(path.join(__dirname, file)) + + runSaveMiddleware + ? await model.create(fileContents) + : await model.insertMany(fileContents) + } +} \ No newline at end of file From dd275dcb22bd07a65146bc9d7c2a46e0a8b26816 Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sun, 26 Dec 2021 19:31:52 +0100 Subject: [PATCH 04/25] create-react-app --- task-management/client/.gitignore | 23 ++++++ task-management/client/README.md | 70 ++++++++++++++++++ task-management/client/package.json | 38 ++++++++++ task-management/client/public/favicon.ico | Bin 0 -> 3870 bytes task-management/client/public/index.html | 43 +++++++++++ task-management/client/public/logo192.png | Bin 0 -> 5347 bytes task-management/client/public/logo512.png | Bin 0 -> 9664 bytes task-management/client/public/manifest.json | 25 +++++++ task-management/client/public/robots.txt | 3 + task-management/client/src/App.css | 38 ++++++++++ task-management/client/src/App.js | 25 +++++++ task-management/client/src/App.test.js | 8 ++ task-management/client/src/index.css | 13 ++++ task-management/client/src/index.js | 17 +++++ task-management/client/src/logo.svg | 1 + task-management/client/src/reportWebVitals.js | 13 ++++ task-management/client/src/setupTests.js | 5 ++ 17 files changed, 322 insertions(+) create mode 100644 task-management/client/.gitignore create mode 100644 task-management/client/README.md create mode 100644 task-management/client/package.json create mode 100644 task-management/client/public/favicon.ico create mode 100644 task-management/client/public/index.html create mode 100644 task-management/client/public/logo192.png create mode 100644 task-management/client/public/logo512.png create mode 100644 task-management/client/public/manifest.json create mode 100644 task-management/client/public/robots.txt create mode 100644 task-management/client/src/App.css create mode 100644 task-management/client/src/App.js create mode 100644 task-management/client/src/App.test.js create mode 100644 task-management/client/src/index.css create mode 100644 task-management/client/src/index.js create mode 100644 task-management/client/src/logo.svg create mode 100644 task-management/client/src/reportWebVitals.js create mode 100644 task-management/client/src/setupTests.js diff --git a/task-management/client/.gitignore b/task-management/client/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/task-management/client/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/task-management/client/README.md b/task-management/client/README.md new file mode 100644 index 0000000..58beeac --- /dev/null +++ b/task-management/client/README.md @@ -0,0 +1,70 @@ +# Getting Started with Create React App + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in your browser. + +The page will reload when you make changes.\ +You may also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can't go back!** + +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. + +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. + +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. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). + +### Code Splitting + +This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) + +### Analyzing the Bundle Size + +This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) + +### Making a Progressive Web App + +This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) + +### Advanced Configuration + +This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) + +### Deployment + +This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) + +### `npm run build` fails to minify + +This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/task-management/client/package.json b/task-management/client/package.json new file mode 100644 index 0000000..ff55f51 --- /dev/null +++ b/task-management/client/package.json @@ -0,0 +1,38 @@ +{ + "name": "client", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.16.1", + "@testing-library/react": "^12.1.2", + "@testing-library/user-event": "^13.5.0", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-scripts": "5.0.0", + "web-vitals": "^2.1.2" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/task-management/client/public/favicon.ico b/task-management/client/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/task-management/client/public/index.html b/task-management/client/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/task-management/client/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/task-management/client/public/logo192.png b/task-management/client/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/task-management/client/public/manifest.json b/task-management/client/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/task-management/client/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/task-management/client/public/robots.txt b/task-management/client/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/task-management/client/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/task-management/client/src/App.css b/task-management/client/src/App.css new file mode 100644 index 0000000..74b5e05 --- /dev/null +++ b/task-management/client/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/task-management/client/src/App.js b/task-management/client/src/App.js new file mode 100644 index 0000000..3784575 --- /dev/null +++ b/task-management/client/src/App.js @@ -0,0 +1,25 @@ +import logo from './logo.svg'; +import './App.css'; + +function App() { + return ( + + ); +} + +export default App; diff --git a/task-management/client/src/App.test.js b/task-management/client/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/task-management/client/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/task-management/client/src/index.css b/task-management/client/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/task-management/client/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/task-management/client/src/index.js b/task-management/client/src/index.js new file mode 100644 index 0000000..ef2edf8 --- /dev/null +++ b/task-management/client/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/task-management/client/src/logo.svg b/task-management/client/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/task-management/client/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/task-management/client/src/reportWebVitals.js b/task-management/client/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/task-management/client/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/task-management/client/src/setupTests.js b/task-management/client/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/task-management/client/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; From 2a2e39f87fef21be982756bc1a183d97f31ee886 Mon Sep 17 00:00:00 2001 From: AshrafZohdi Date: Sun, 26 Dec 2021 19:32:50 +0100 Subject: [PATCH 05/25] Update seeder.js --- task-management/seeder.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/task-management/seeder.js b/task-management/seeder.js index 15c1487..da526cf 100644 --- a/task-management/seeder.js +++ b/task-management/seeder.js @@ -1,8 +1,9 @@ -onst fs = require('fs') +const fs = require('fs') const util = require('util') const readDir = util.promisify(fs.readdir).bind(fs) const path = require('path') const mongoose = require('mongoose') +import dummy_data from './dummy_data' function toTitleCase (str) { return str.replace(/\w\S*/g, (txt) => { @@ -20,7 +21,7 @@ async function seedDatabase (runSaveMiddleware = false) { const model = mongoose.models[modelName] if (!model) throw new Error(`Cannot find Model '${modelName}'`) - const fileContents = require(path.join(__dirname, file)) + const fileContents = require(path.join(__dirname, dummy_data.js)) runSaveMiddleware ? await model.create(fileContents) From 4d50da4647ee1b435a7eff868c013bddec8dd0f7 Mon Sep 17 00:00:00 2001 From: AshrafZohdi Date: Sun, 26 Dec 2021 20:13:33 +0100 Subject: [PATCH 06/25] Mod to seeder, created ExpressJS server, Edited Package.Json --- task-management/client/package.json | 1 + task-management/seeder.js | 24 ++++++++++++++++++++++-- task-management/server/index.js | 14 +++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/task-management/client/package.json b/task-management/client/package.json index ff55f51..c7eed8d 100644 --- a/task-management/client/package.json +++ b/task-management/client/package.json @@ -12,6 +12,7 @@ "web-vitals": "^2.1.2" }, "scripts": { + "seed-database": "node seed-database", "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", diff --git a/task-management/seeder.js b/task-management/seeder.js index da526cf..e8daf68 100644 --- a/task-management/seeder.js +++ b/task-management/seeder.js @@ -1,3 +1,5 @@ +/** + const fs = require('fs') const util = require('util') const readDir = util.promisify(fs.readdir).bind(fs) @@ -6,7 +8,7 @@ const mongoose = require('mongoose') import dummy_data from './dummy_data' function toTitleCase (str) { - return str.replace(/\w\S*/g, (txt) => { + return str.replace(/\w\S/g, (txt) => { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase() }) } @@ -27,4 +29,22 @@ async function seedDatabase (runSaveMiddleware = false) { ? await model.create(fileContents) : await model.insertMany(fileContents) } -} \ No newline at end of file +} +*/ + +import { Seeder } from 'mongoose-data-seed'; +import { dummy_data } from '../task-management/dummy_data'; + +class DataSeeder extends Seeder { + async shouldRun() { + return dummy_data.countDocuments() + .exec() + .then(count => count === 0); + } + + async run() { + return dummy_data.create(data); + } +} + +export default DataSeeder; diff --git a/task-management/server/index.js b/task-management/server/index.js index 66cd61e..d006f1e 100644 --- a/task-management/server/index.js +++ b/task-management/server/index.js @@ -1,3 +1,15 @@ /** * Your server comes here - */ \ No newline at end of file + */ + const express = require('express') + const app = express() + const port = 8000 + + app.get('/', (req, res) => { + res.send('Hello World!') + }) + + app.listen(port, () => { + console.log(`Example app listening at http://localhost:${port}`) + }) + \ No newline at end of file From 7fae7971813216e07f4529f4c2396599d7f06951 Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sun, 26 Dec 2021 20:20:29 +0100 Subject: [PATCH 07/25] created schema and connected to db --- task-management/server/db/index.js | 11 ++++++++++- task-management/server/models/Task.js | Bin 0 -> 938 bytes 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 task-management/server/models/Task.js diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js index 05aaea5..604b0fd 100644 --- a/task-management/server/db/index.js +++ b/task-management/server/db/index.js @@ -1,3 +1,12 @@ /** * Connect to the Database with Mongoose here - */ \ No newline at end of file + */ + +const mongoose = require('mongoose'); + +main().catch(err => console.log(err)); + +// open a connection to the test database on our locally running instance of MongoDB. +async function main() { + await mongoose.connect('mongodb://localhost:27017/test'); +} diff --git a/task-management/server/models/Task.js b/task-management/server/models/Task.js new file mode 100644 index 0000000000000000000000000000000000000000..bf17f90574fe233be88429f6a28358c1d78427b3 GIT binary patch literal 938 zcmZvbK~KU!5QX2_#Q)G6kZ7x3OfY&tu6n^gP)mU-?P`S(V)*OoH@j&mU>bIp+1Hu( z-b{ag5+#Z>SFROLp^EdRzBs3y5~{&Xmc4u-izbKhIemk(|gqznash)?~6% zU%eAtPXpcgY?iU4j#cdwjme*qJJW*yIT>o7^?|ji?6l-2W_2)aP=kY*@HII9f4kZPFCHxE_t@ZYvL78@GtUv@UQ}B zxt(ULPweKf(^w-^m;+W}OElwt=JRwJcKwO;?caz%rrPi;;C$K%^U>-wY7e_GMb(h5 zC*H%LVgcUx4t1kjUFn)NY5mxDY}fYfcp6^3j(1I{ZEhOxFcHRL^DoOTw%^fa`U>W5 z$o`BYC5&wvE?V`5ur999kbB&ObM1YfAK|7TQnD@mZ9tESSho)|7I^T86D5;lc@1G4 tM#RG0rFd$}cL(#<%%=6C@gZnG{zhVQJGkWJx2`nk9!&P{c718Sl|RO(m{$M* literal 0 HcmV?d00001 From 0c1e1e563a8caee7c4f9149b8bd33909776c52fd Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sun, 26 Dec 2021 20:22:11 +0100 Subject: [PATCH 08/25] task and index for schema and db --- task-management/server/db/index.js | 3 +++ task-management/server/models/Task.js | Bin 938 -> 324 bytes 2 files changed, 3 insertions(+) diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js index 604b0fd..8ba400f 100644 --- a/task-management/server/db/index.js +++ b/task-management/server/db/index.js @@ -10,3 +10,6 @@ main().catch(err => console.log(err)); async function main() { await mongoose.connect('mongodb://localhost:27017/test'); } + + +const Task = mongoose.model('Task', TaskSchema); \ No newline at end of file diff --git a/task-management/server/models/Task.js b/task-management/server/models/Task.js index bf17f90574fe233be88429f6a28358c1d78427b3..d22b873e21a09e5714faca9b23638e83090cf280 100644 GIT binary patch delta 16 XcmZ3*euQa)!Dcfi0Y(;H1}+8wD1ie{ literal 938 zcmZvbK~KU!5QX2_#Q)G6kZ7x3OfY&tu6n^gP)mU-?P`S(V)*OoH@j&mU>bIp+1Hu( z-b{ag5+#Z>SFROLp^EdRzBs3y5~{&Xmc4u-izbKhIemk(|gqznash)?~6% zU%eAtPXpcgY?iU4j#cdwjme*qJJW*yIT>o7^?|ji?6l-2W_2)aP=kY*@HII9f4kZPFCHxE_t@ZYvL78@GtUv@UQ}B zxt(ULPweKf(^w-^m;+W}OElwt=JRwJcKwO;?caz%rrPi;;C$K%^U>-wY7e_GMb(h5 zC*H%LVgcUx4t1kjUFn)NY5mxDY}fYfcp6^3j(1I{ZEhOxFcHRL^DoOTw%^fa`U>W5 z$o`BYC5&wvE?V`5ur999kbB&ObM1YfAK|7TQnD@mZ9tESSho)|7I^T86D5;lc@1G4 tM#RG0rFd$}cL(#<%%=6C@gZnG{zhVQJGkWJx2`nk9!&P{c718Sl|RO(m{$M* From 0927640a09417667e26bb2118284856b453f11f2 Mon Sep 17 00:00:00 2001 From: AshrafZohdi Date: Sun, 26 Dec 2021 20:31:30 +0100 Subject: [PATCH 09/25] Update seeder.js --- task-management/seeder.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/task-management/seeder.js b/task-management/seeder.js index e8daf68..377b784 100644 --- a/task-management/seeder.js +++ b/task-management/seeder.js @@ -33,18 +33,19 @@ async function seedDatabase (runSaveMiddleware = false) { */ import { Seeder } from 'mongoose-data-seed'; -import { dummy_data } from '../task-management/dummy_data'; +import { Task } from '../server/models'; +import dummy_data from './dummy_data'; -class DataSeeder extends Seeder { +class TaskSeeder extends Seeder { async shouldRun() { - return dummy_data.countDocuments() + return Task.countDocuments() .exec() .then(count => count === 0); } async run() { - return dummy_data.create(data); + return Task.create(dummy_data); } } -export default DataSeeder; +export default TaskSeeder; From fe7c9134d03452c6e0293daed2cf253840caaaa9 Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sun, 26 Dec 2021 21:01:26 +0100 Subject: [PATCH 10/25] index and task --- task-management/server/db/index.js | 2 +- task-management/server/models/Task.js | Bin 324 -> 542 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js index 8ba400f..988b2dd 100644 --- a/task-management/server/db/index.js +++ b/task-management/server/db/index.js @@ -2,6 +2,7 @@ * Connect to the Database with Mongoose here */ + const mongoose = require('mongoose'); main().catch(err => console.log(err)); @@ -12,4 +13,3 @@ async function main() { } -const Task = mongoose.model('Task', TaskSchema); \ No newline at end of file diff --git a/task-management/server/models/Task.js b/task-management/server/models/Task.js index d22b873e21a09e5714faca9b23638e83090cf280..594a426eb8da5ff5871d1e35247fe324a929698b 100644 GIT binary patch delta 197 zcmX@YG>>J1foC#9K0_WuF+&N10z)pCoem`Pfg-6u5nCWG0u5;tGZWphywWg~d=8!8BVl007dmBl-XU delta 22 ecmbQoa)fDu!Q>`JnaQ^pc_uD;!NSYH#Q*?Yh6f7( From 96f922a334a8739e3d73ad4c6aea0fd7b86f85d5 Mon Sep 17 00:00:00 2001 From: AshrafZohdi Date: Sun, 26 Dec 2021 21:10:34 +0100 Subject: [PATCH 11/25] moreeeee seeder code stuufz --- task-management/seeder.js | 26 +++++++++++++++++++++++++- task-management/server/db/index.js | 22 +++++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/task-management/seeder.js b/task-management/seeder.js index 377b784..d011a40 100644 --- a/task-management/seeder.js +++ b/task-management/seeder.js @@ -1,5 +1,4 @@ /** - const fs = require('fs') const util = require('util') const readDir = util.promisify(fs.readdir).bind(fs) @@ -32,6 +31,7 @@ async function seedDatabase (runSaveMiddleware = false) { } */ +/** import { Seeder } from 'mongoose-data-seed'; import { Task } from '../server/models'; import dummy_data from './dummy_data'; @@ -49,3 +49,27 @@ class TaskSeeder extends Seeder { } export default TaskSeeder; +*/ + +/* +import seeder from "mongoose-seed"; +import dummy_data from "./dummy_data"; + +const db = 'mongodb://localhost:27017/test'; + +seeder.connect(db, function () { + seeder.loadModels(modelpaths: [ + "task-management\server\models\Task.js" + ]); + seeder.clearModels(models: ["task-management\server\models\Task.js"]); + seeder.populateModels(dummy_data, cb: function(err,done) { + if(err) { + return console.log("seed err", err) + } + if(done) { + return console.log("seed done", done); + } + + seeder.disconnect() + }) +})*/ \ No newline at end of file diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js index 8ba400f..9dd8726 100644 --- a/task-management/server/db/index.js +++ b/task-management/server/db/index.js @@ -12,4 +12,24 @@ async function main() { } -const Task = mongoose.model('Task', TaskSchema); \ No newline at end of file +import seeder from "mongoose-seed"; +import dummy_data from "./dummy_data"; + +const db = 'mongodb://localhost:27017/test'; + +seeder.connect(db, function () { + seeder.loadModels(modelpaths: [ + "task-management\server\models\Task.js" + ]); + seeder.clearModels(models: ["task-management\server\models\Task.js"]); + seeder.populateModels(dummy_data, cb: function(err,done) { + if(err) { + return console.log("seed err", err) + } + if(done) { + return console.log("seed done", done); + } + + seeder.disconnect() + }) +}) \ No newline at end of file From 79841792f368cce95175a3b8ea233121e3acd571 Mon Sep 17 00:00:00 2001 From: BLIWA <38180632+BLIWA@users.noreply.github.com> Date: Sun, 26 Dec 2021 21:44:55 +0100 Subject: [PATCH 12/25] part 2 --- task-management/server/tasks control.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 task-management/server/tasks control.js diff --git a/task-management/server/tasks control.js b/task-management/server/tasks control.js new file mode 100644 index 0000000..e69de29 From eaea105500c6578cef8f5a361b4076863abf4150 Mon Sep 17 00:00:00 2001 From: stuprog <69085906+stuprog@users.noreply.github.com> Date: Fri, 31 Dec 2021 20:39:18 +0100 Subject: [PATCH 13/25] Add files via upload frontend complete part 1,2,3,4,5 --- gift-store/public/favicon.ico | Bin 0 -> 3870 bytes gift-store/public/index.html | 43 ++++ gift-store/public/logo192.png | Bin 0 -> 5347 bytes gift-store/public/logo512.png | Bin 0 -> 9664 bytes gift-store/public/manifest.json | 25 +++ gift-store/public/robots.txt | 3 + gift-store/src/App.css | 38 ++++ gift-store/src/App.js | 32 +++ gift-store/src/App.test.js | 8 + gift-store/src/Pages/AddCategory.js | 85 ++++++++ gift-store/src/Pages/AddProduct.js | 121 +++++++++++ gift-store/src/Pages/CategoriesList.js | 148 +++++++++++++ gift-store/src/Pages/ProductList.js | 242 +++++++++++++++++++++ gift-store/src/SharedComponents/history.js | 3 + gift-store/src/index.css | 13 ++ gift-store/src/index.js | 17 ++ gift-store/src/logo.svg | 1 + gift-store/src/reportWebVitals.js | 13 ++ gift-store/src/setupTests.js | 5 + 19 files changed, 797 insertions(+) create mode 100644 gift-store/public/favicon.ico create mode 100644 gift-store/public/index.html create mode 100644 gift-store/public/logo192.png create mode 100644 gift-store/public/logo512.png create mode 100644 gift-store/public/manifest.json create mode 100644 gift-store/public/robots.txt create mode 100644 gift-store/src/App.css create mode 100644 gift-store/src/App.js create mode 100644 gift-store/src/App.test.js create mode 100644 gift-store/src/Pages/AddCategory.js create mode 100644 gift-store/src/Pages/AddProduct.js create mode 100644 gift-store/src/Pages/CategoriesList.js create mode 100644 gift-store/src/Pages/ProductList.js create mode 100644 gift-store/src/SharedComponents/history.js create mode 100644 gift-store/src/index.css create mode 100644 gift-store/src/index.js create mode 100644 gift-store/src/logo.svg create mode 100644 gift-store/src/reportWebVitals.js create mode 100644 gift-store/src/setupTests.js diff --git a/gift-store/public/favicon.ico b/gift-store/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/gift-store/public/index.html b/gift-store/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/gift-store/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/gift-store/public/logo192.png b/gift-store/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/gift-store/public/manifest.json b/gift-store/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/gift-store/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/gift-store/public/robots.txt b/gift-store/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/gift-store/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/gift-store/src/App.css b/gift-store/src/App.css new file mode 100644 index 0000000..74b5e05 --- /dev/null +++ b/gift-store/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/gift-store/src/App.js b/gift-store/src/App.js new file mode 100644 index 0000000..cb91697 --- /dev/null +++ b/gift-store/src/App.js @@ -0,0 +1,32 @@ +import React from 'react' +import './App.css' +import Dash from './Pages/ProductList' +import AddProduct from './Pages/AddProduct' +import AddCategory from './Pages/AddCategory' +import ViewCategories from './Pages/CategoriesList' +import {BrowserRouter as Router, Routes, Route} from 'react-router-dom' +import history from './SharedComponents/history' +import { SnackbarProvider } from 'notistack'; + + +export default function App() +{ + return( + + + +
+ + }> + }> + }> + }> + +
+ +
+ +
+ + ) +} \ No newline at end of file diff --git a/gift-store/src/App.test.js b/gift-store/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/gift-store/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/gift-store/src/Pages/AddCategory.js b/gift-store/src/Pages/AddCategory.js new file mode 100644 index 0000000..21b3aa2 --- /dev/null +++ b/gift-store/src/Pages/AddCategory.js @@ -0,0 +1,85 @@ +import React from "react"; +import Grid from "@material-ui/core/Grid"; +import Typography from "@material-ui/core/Typography"; +import TextField from "@material-ui/core/TextField"; +import FormControlLabel from "@material-ui/core/FormControlLabel"; +import Checkbox from "@material-ui/core/Checkbox"; +import {makeStyles} from "@material-ui/core/styles"; +import InfoIcon from "@material-ui/icons/Info"; +import Button from "@material-ui/core/Button"; +import {blue} from "@mui/material/colors"; +import { useNavigate } from "react-router-dom"; + +const divStyle = { + display: "flex", + alignItems: "center", +}; + +const useStyles = makeStyles((theme) => ({ + seeMore: { + marginTop: theme.spacing(3), + }, + marginText: { + marginRight: 6, + }, + buttons: { + display: "flex", + justifyContent: "flex-end", + }, + button: { + marginTop: theme.spacing(8), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3) + }, + title: { + marginTop: theme.spacing(1), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + color: theme.palette.secondary.dark + }, +})); +export default function CreateCategory() { + const classes = useStyles(); + let history = useNavigate(); + return ( + + + Create Category + + + + + + +
+ + +
+
+ ); +} diff --git a/gift-store/src/Pages/AddProduct.js b/gift-store/src/Pages/AddProduct.js new file mode 100644 index 0000000..97af534 --- /dev/null +++ b/gift-store/src/Pages/AddProduct.js @@ -0,0 +1,121 @@ +import React from "react"; +import Grid from "@material-ui/core/Grid"; +import Typography from "@material-ui/core/Typography"; +import TextField from "@material-ui/core/TextField"; +import FormControlLabel from "@material-ui/core/FormControlLabel"; +import Checkbox from "@material-ui/core/Checkbox"; +import {makeStyles} from "@material-ui/core/styles"; +import InfoIcon from "@material-ui/icons/Info"; +import Button from "@material-ui/core/Button"; +import {blue} from "@mui/material/colors"; +import { useNavigate } from "react-router-dom"; + +const divStyle = { + display: "flex", + alignItems: "center", +}; + +const useStyles = makeStyles((theme) => ({ + seeMore: { + marginTop: theme.spacing(3), + }, + marginText: { + marginRight: 6, + }, + buttons: { + display: "flex", + justifyContent: "flex-end", + }, + button: { + marginTop: theme.spacing(8), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3) + }, + title: { + marginTop: theme.spacing(1), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + color: theme.palette.secondary.dark + }, +})); +export default function CreateProduct() { + const classes = useStyles(); + let history = useNavigate(); + return ( + + + Create Product + + + + + + + + + + + + + + + + + + +
+ + +
+
+ ); +} diff --git a/gift-store/src/Pages/CategoriesList.js b/gift-store/src/Pages/CategoriesList.js new file mode 100644 index 0000000..73f72d7 --- /dev/null +++ b/gift-store/src/Pages/CategoriesList.js @@ -0,0 +1,148 @@ +import React from 'react'; +import axios from 'axios'; +import Button from "@material-ui/core/Button"; +import {makeStyles} from '@material-ui/core/styles'; +import { useNavigate } from "react-router-dom"; +import { + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Paper, + Avatar, + Grid, + Typography, + TablePagination, + TableFooter +} from '@material-ui/core'; +const baseURL = "http://localhost:5000/api/categories"; +const useStyles = makeStyles((theme) => ({ + table: { + minWidth: 650, + }, + tableContainer: { + borderRadius: 15, + margin: '10px 10px', + }, + tableHeaderCell: { + fontWeight: 'bold', + backgroundColor: theme.palette.primary.dark, + color: theme.palette.getContrastText(theme.palette.primary.dark) + }, + avatar: { + backgroundColor: theme.palette.primary.light, + color: theme.palette.getContrastText(theme.palette.primary.light) + }, + name: { + fontWeight: 'bold', + color: theme.palette.secondary.dark + }, + deleteButton: { + fontWeight: 'bold', + background: "#ff3333", + margin: '10px 10px' + }, + updateButton: { + fontWeight: 'bold', + background: "#22bb33", + margin: '10px 10px' + }, + buttons: { + display: "flex", + justifyContent: "flex-end", + marginTop: theme.spacing(2), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + marginBottom: theme.spacing(3) + }, + button: { + display: "flex", + marginTop: theme.spacing(2), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + marginBottom: theme.spacing(3) + }, + status: { + fontWeight: 'bold', + fontSize: '0.75rem', + color: 'white', + backgroundColor: 'grey', + borderRadius: 8, + padding: '3px 10px', + display: 'inline-block' + } +})); + + +function CategoryList() { + + const [categories, setCategories] = React.useState([]); + const classes = useStyles(); + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + let history = useNavigate(); + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(+event.target.value); + setPage(0); + }; + + React.useEffect(() => { + axios.get(baseURL).then(response => { + console.log(response) + setCategories(response.data.categories); + }) + .catch(err => console.log(err)); + }, []); + + return ( + + + + + Category ID + title + + + + {categories.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row) => ( + + {row._id} + {row.title} + + ))} + + + + +
+
+ +
+
+ ); +} + +export default CategoryList; \ No newline at end of file diff --git a/gift-store/src/Pages/ProductList.js b/gift-store/src/Pages/ProductList.js new file mode 100644 index 0000000..2b3a3a1 --- /dev/null +++ b/gift-store/src/Pages/ProductList.js @@ -0,0 +1,242 @@ +import React from 'react'; +import Button from "@material-ui/core/Button"; +import {makeStyles} from '@material-ui/core/styles'; +import { useNavigate } from "react-router-dom"; +import axios from 'axios'; +import {useSnackbar} from "notistack"; +import { useState, useEffect } from 'react'; +import { + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Paper, + Avatar, + Grid, + Typography, + TablePagination, + TableFooter +} from '@material-ui/core'; + +const deleteName = "Delete"; +const updateName = "Update"; +const baseURL = "http://localhost:5000/api/products"; + +const useStyles = makeStyles((theme) => ({ + title: { + marginTop: theme.spacing(1), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + color: theme.palette.secondary.dark + }, + table: { + minWidth: 650, + }, + tableContainer: { + borderRadius: 15, + margin: '10px 10px', + }, + tableHeaderCell: { + fontWeight: 'bold', + backgroundColor: theme.palette.primary.dark, + color: theme.palette.getContrastText(theme.palette.primary.dark) + }, + avatar: { + backgroundColor: theme.palette.primary.light, + color: theme.palette.getContrastText(theme.palette.primary.light) + }, + name: { + fontWeight: 'bold', + color: theme.palette.secondary.dark + }, + deleteButton: { + fontWeight: 'bold', + background: "#ff3333", + margin: '10px 10px' + }, + updateButton: { + fontWeight: 'bold', + background: "#22bb33", + margin: '10px 10px' + }, + buttons: { + display: "flex", + justifyContent: "flex-end", + marginTop: theme.spacing(2), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + marginBottom: theme.spacing(3) + }, + button: { + display: "flex", + marginTop: theme.spacing(2), + marginLeft: theme.spacing(1), + marginRight: theme.spacing(3), + marginBottom: theme.spacing(3) + }, + status: { + fontWeight: 'bold', + fontSize: '0.75rem', + color: 'white', + backgroundColor: 'grey', + borderRadius: 8, + padding: '3px 10px', + display: 'inline-block' + } +})); + + + + + +function ProductList() { + + const [products, setProducts] = useState([]); + const classes = useStyles(); + const [page, setPage] = useState(0); + const [rowsPerPage, setRowsPerPage] = useState(10); + let history = useNavigate(); + const {enqueueSnackbar} = useSnackbar(); + + + + useEffect(() => { + axios.get(baseURL).then(response => { + setProducts(response.data.products); + }) + .catch(err => console.log(err)); + }, []); + const DeleteCategory = (id) => { + axios + .delete(baseURL+"/"+id) + .then(() => { + enqueueSnackbar("Product Deleted successfuly ", { variant: "success" }); + window.location.reload() + }) + .catch((err) => { + console.log(err); + enqueueSnackbar("Something went wrong with the server", { + variant: "error", + }); + }); +}; + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(+event.target.value); + setPage(0); + }; + + return ( +
+ + GIFT STORE CHAKROUN + + + + + + Product ID + Name + Price + Quantity + Category + Creation Date + Last Updated + Actions + + + + {products.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row) => ( + + + + {row._id} + + + + {row.quantity} + + {row.price} + {row.quantity} + {row.category} + {row.created} + {row.updated} + + + + + ))} + + + + +
+
+ + + +
+
+
+ ); +} + +export default ProductList; \ No newline at end of file diff --git a/gift-store/src/SharedComponents/history.js b/gift-store/src/SharedComponents/history.js new file mode 100644 index 0000000..847cdec --- /dev/null +++ b/gift-store/src/SharedComponents/history.js @@ -0,0 +1,3 @@ +import { createBrowserHistory as history} from 'history'; + +export default history(); \ No newline at end of file diff --git a/gift-store/src/index.css b/gift-store/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/gift-store/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/gift-store/src/index.js b/gift-store/src/index.js new file mode 100644 index 0000000..ef2edf8 --- /dev/null +++ b/gift-store/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/gift-store/src/logo.svg b/gift-store/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/gift-store/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gift-store/src/reportWebVitals.js b/gift-store/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/gift-store/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/gift-store/src/setupTests.js b/gift-store/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/gift-store/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; From d98400ac1f30dd779a9f67c3e798bcd699f2e0b6 Mon Sep 17 00:00:00 2001 From: stuprog <69085906+stuprog@users.noreply.github.com> Date: Fri, 31 Dec 2021 20:40:08 +0100 Subject: [PATCH 14/25] Add files via upload backend complete part 1,2,3,4,5 --- gift-store/app.js | 24 +++++++ gift-store/models/Category.js | 26 +++++++ gift-store/models/Product.js | 40 +++++++++++ gift-store/routes/CategoryRoutes.js | 19 ++++++ gift-store/routes/ProductRoutes.js | 29 ++++++++ gift-store/services/CategoryService.js | 65 ++++++++++++++++++ gift-store/services/ProductService.js | 95 ++++++++++++++++++++++++++ 7 files changed, 298 insertions(+) create mode 100644 gift-store/app.js create mode 100644 gift-store/models/Category.js create mode 100644 gift-store/models/Product.js create mode 100644 gift-store/routes/CategoryRoutes.js create mode 100644 gift-store/routes/ProductRoutes.js create mode 100644 gift-store/services/CategoryService.js create mode 100644 gift-store/services/ProductService.js diff --git a/gift-store/app.js b/gift-store/app.js new file mode 100644 index 0000000..8e230c2 --- /dev/null +++ b/gift-store/app.js @@ -0,0 +1,24 @@ +const express = require('express') +const cors = require('cors'); +const mongoose = require('mongoose'); +const app = express() +const router = express.Router(); +const PORT = process.env.PORT || 5000 +const apiBaseUrl= '/api' +bodyParser = require('body-parser') // to read the json (type de communication ) +app.use(express.urlencoded({ extended: false})) // to froce JSON +app.use(express.json()) + +mongoose.connect('mongodb://localhost:27017/gift-store') +.then(()=> console.log('MongoDB Connected ...')) +.catch(err=>console.log(err)) +app.use(cors({ + origin: '*' +})); + + +app.use(apiBaseUrl, require('./routes/ProductRoutes')) + +app.use(apiBaseUrl, require('./routes/CategoryRoutes')) + +app.listen(PORT,console.log('Server started on PORT: '+ PORT)) \ No newline at end of file diff --git a/gift-store/models/Category.js b/gift-store/models/Category.js new file mode 100644 index 0000000..31b8631 --- /dev/null +++ b/gift-store/models/Category.js @@ -0,0 +1,26 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + + +let categorySchema = new Schema({ // mongo works with schema (entity) + _id: { + type: mongoose.Schema.Types.ObjectId, + auto: true + }, + title: { + type: String, + required: true + }, + created: { + type: Date, + default : Date.now() + }, + updated: { + type: Date, + default : Date.now() + } +}, { + collection: 'category' + }) + +module.exports = mongoose.model('Category', categorySchema) \ No newline at end of file diff --git a/gift-store/models/Product.js b/gift-store/models/Product.js new file mode 100644 index 0000000..08a1724 --- /dev/null +++ b/gift-store/models/Product.js @@ -0,0 +1,40 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; + +let productSchema = new Schema({ // mongo works with schema (entity) + _id: { + type: mongoose.Schema.Types.ObjectId, + auto: true + }, + name: { + type: String, + required: true + }, + price: { + type: Number, + required: true + }, + quantity: { + type: Number, + default: 0 + }, + category: { + type: String, + required: true + }, + image: { + type: String + }, + created: { + type: Date, + default : Date.now() + }, + updated: { + type: Date, + default : Date.now() + } +}, { + collection: 'product' + }) + +module.exports = mongoose.model('Product', productSchema) \ No newline at end of file diff --git a/gift-store/routes/CategoryRoutes.js b/gift-store/routes/CategoryRoutes.js new file mode 100644 index 0000000..94f3877 --- /dev/null +++ b/gift-store/routes/CategoryRoutes.js @@ -0,0 +1,19 @@ +let express = require('express'); +let router = express.Router(); + +const controllerUrl = '/categories' + +let service = require('../services/CategoryService'); + + + +// GET All Categories "/api/categories" +router.get(controllerUrl, (req, res, next) => { + service.findAllCategories(req,res); +}); +// POST add a Category "/api/categories" +router.post(controllerUrl, (req, res, next) => { + service.saveCategory(req,res); +}); + +module.exports = router; \ No newline at end of file diff --git a/gift-store/routes/ProductRoutes.js b/gift-store/routes/ProductRoutes.js new file mode 100644 index 0000000..5960d85 --- /dev/null +++ b/gift-store/routes/ProductRoutes.js @@ -0,0 +1,29 @@ +let express = require('express'); +let router = express.Router(); + +const controllerUrl = '/products' + +let service = require('../services/ProductService'); + + + +// GET All Product "/api/products" +router.get(controllerUrl, (req, res, next) => { + service.findAllProducts(req,res); +}); +// POST add a Product "/api/products" +router.post(controllerUrl, (req, res, next) => { + service.saveProduct(req,res); +}); +// DELETE delete a Product by id "/api/products" +router.delete(controllerUrl+'/:id', (req, res, next) => { + service.deleteProduct(req,res); +}); + +// Put add a Product "/api/products" +router.put(controllerUrl+'/:id', (req, res, next) => { + service.updateProduct(req,res); +}); + + +module.exports = router; \ No newline at end of file diff --git a/gift-store/services/CategoryService.js b/gift-store/services/CategoryService.js new file mode 100644 index 0000000..91ce74e --- /dev/null +++ b/gift-store/services/CategoryService.js @@ -0,0 +1,65 @@ +mongoose = require('mongoose'); + +let Category = require('../models/Category'); +const { search } = require('../routes/ProductRoutes'); + + +const DIR = './src/images/'; + +exports.findAllCategories = function (req, res) { // exports public + Category.find().then(data => { + if (data.length) { + res.status(200).json({ + message: "Categories retrieved successfully!", + categories: data + }); + } else { + res.status(404).json({ + message: "There are no Categories" + }); + } + }); +} + +exports.saveCategory = function (req, res) { + + + + let newCategory = new Category({ + title: req.body.title + + }); + + newCategory.save(newCategory).then(result => { + console.log("this is the result of a Category", result); + + res.status(201).json({ + message: "Category created successfully!", + CategoryCreated: { + _id: result._id, + title: result.title + + } + }) + }).catch(err => { + console.log(err), + res.status(500).json({ + error: err + }); + }); + +} + +exports.findCategory = function (req, res) { + + Category.find({title: req.body.category}) + .then(data => { + if(!data.length){ + let newCategory = new Category({ + title: req.body.category + + }); + newCategory.save(newCategory).then(result => {}) + } + }); +} \ No newline at end of file diff --git a/gift-store/services/ProductService.js b/gift-store/services/ProductService.js new file mode 100644 index 0000000..2954f71 --- /dev/null +++ b/gift-store/services/ProductService.js @@ -0,0 +1,95 @@ +mongoose = require('mongoose'); + +let Product = require('../models/Product'); +let CategoryService = require('../services/CategoryService'); + +const DIR = './src/images/'; + +exports.findAllProducts = function (req, res) { // exports public + Product.find().then(data => { + console.log(data) + if (data.length) { + res.status(200).json({ + message: "Products retrieved successfully!", + products: data + }); + } else { + res.status(404).json({ + message: "There are no products", + }); + } + }); +} + + +exports.saveProduct = function (req, res) { + + const url = req.protocol + '://' + req.get('host') + CategoryService.findCategory(req,res); + + let newProduct = new Product({ + name: req.body.name, + price: req.body.price, + category: req.body.category, + quantity: req.body.quantity + //image: url + '/public/' +req.body.image + }); + + newProduct.save(newProduct).then(result => { + console.log("this is the result of a product", result); + + res.status(201).json({ + message: "Product created successfully!", + productCreated: { + _id: result._id, + name: result.name, + price: result.price, + category: result.category, + quantity: result.quantity, + } + }) + }).catch(err => { + console.log(err), + res.status(500).json({ + error: err + }); + }); + +} + +exports.deleteProduct = function (req, res) { + Product.deleteOne({_id: req.params.id}).then(result => { + if (result.deletedCount > 0) { + res.status(204).json({message: "Product deleted successfully!"}); + } else { + res.status(404).json({message: "Product not found!"}); + } + }).catch(err => { + console.log(err), + res.status(500).json({ + error: err + }); + }); +} +exports.updateProduct = function (req, res) { +console.log(req.params) + Product.findOne({_id: req.params.id}) + .then(data => { + if(data){ + data.name = req.body.name; + data.price = req.body.price; + data.quantity = req.body.quantity; + CategoryService.findCategory(req,res); + data.category= req.body.category; + data.updated= Date.now() + Product.updateOne(data).then(result =>{ + if (result) { + res.status(200).json({message: "Product updated successfully!"}); + } else { + res.status(500).json({message: "ERROR"}); + } + }) + + } + }); +} \ No newline at end of file From f176bd17375a119b190937b09a9fc3ebd59b6ef5 Mon Sep 17 00:00:00 2001 From: stuprog <69085906+stuprog@users.noreply.github.com> Date: Fri, 31 Dec 2021 21:56:51 +0100 Subject: [PATCH 15/25] Create Team Composition --- gift-store/Team Composition | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 gift-store/Team Composition diff --git a/gift-store/Team Composition b/gift-store/Team Composition new file mode 100644 index 0000000..2cda389 --- /dev/null +++ b/gift-store/Team Composition @@ -0,0 +1,14 @@ +our project is a full stack application that we created using react js, node js and mongoDB + +We did the work as follow: + +lina Barkaoui: part 1 and 2 + +Sami chakroun: part 3 and 4 + +Mohab elfaraa: part 5 + +we've done most of the work in face to face meetings. + +We've created a demo to show how our application works + From 6187b929f497a1b976cc321f7398b1a7834d2534 Mon Sep 17 00:00:00 2001 From: mohachmadim <72310049+mohachmadim@users.noreply.github.com> Date: Sat, 1 Jan 2022 03:05:48 +0100 Subject: [PATCH 16/25] Revert "Part 1 and 2 caffeine-overflow" --- README.md | 6 +- arts-gallery/README.md | 104 ++ arts-gallery/dummy_data.js | 30 + arts-gallery/server/db/index.js | 3 + arts-gallery/server/index.js | 3 + gift-store/README.md | 115 +++ gift-store/dummy_data.js | 34 + gift-store/server/db/index.js | 3 + gift-store/server/index.js | 3 + hacker-news/README.md | 127 +++ hacker-news/assets/author-search-a.png | Bin 0 -> 26708 bytes hacker-news/assets/author-search-b.png | Bin 0 -> 53139 bytes hacker-news/assets/recommended-stories.png | Bin 0 -> 46617 bytes hacker-news/assets/top-ten-stories.png | Bin 0 -> 40905 bytes hacker-news/assets/top-ten-story-authors.png | Bin 0 -> 38899 bytes hacker-news/dummy_data.js | 22 + hacker-news/server/db/index.js | 3 + hacker-news/server/index.js | 3 + hacker-news/worker.js | 36 + poke-mongo/README.md | 104 ++ poke-mongo/data/pokemon.json | 908 ++++++++++++++++++ poke-mongo/server/db/index.js | 3 + poke-mongo/server/index.js | 3 + task-management/client/.gitignore | 23 - task-management/client/README.md | 70 -- task-management/client/package.json | 39 - task-management/client/public/favicon.ico | Bin 3870 -> 0 bytes task-management/client/public/index.html | 43 - task-management/client/public/logo192.png | Bin 5347 -> 0 bytes task-management/client/public/logo512.png | Bin 9664 -> 0 bytes task-management/client/public/manifest.json | 25 - task-management/client/public/robots.txt | 3 - task-management/client/src/App.css | 38 - task-management/client/src/App.js | 25 - task-management/client/src/App.test.js | 8 - task-management/client/src/index.css | 13 - task-management/client/src/index.js | 17 - task-management/client/src/logo.svg | 1 - task-management/client/src/reportWebVitals.js | 13 - task-management/client/src/setupTests.js | 5 - task-management/seeder.js | 75 -- task-management/server/db/index.js | 35 +- task-management/server/index.js | 14 +- task-management/server/models/Task.js | Bin 542 -> 0 bytes task-management/server/tasks control.js | 0 45 files changed, 1509 insertions(+), 448 deletions(-) create mode 100644 arts-gallery/README.md create mode 100644 arts-gallery/dummy_data.js create mode 100644 arts-gallery/server/db/index.js create mode 100644 arts-gallery/server/index.js create mode 100644 gift-store/README.md create mode 100644 gift-store/dummy_data.js create mode 100644 gift-store/server/db/index.js create mode 100644 gift-store/server/index.js create mode 100644 hacker-news/README.md create mode 100644 hacker-news/assets/author-search-a.png create mode 100644 hacker-news/assets/author-search-b.png create mode 100644 hacker-news/assets/recommended-stories.png create mode 100644 hacker-news/assets/top-ten-stories.png create mode 100644 hacker-news/assets/top-ten-story-authors.png create mode 100644 hacker-news/dummy_data.js create mode 100644 hacker-news/server/db/index.js create mode 100644 hacker-news/server/index.js create mode 100644 hacker-news/worker.js create mode 100644 poke-mongo/README.md create mode 100644 poke-mongo/data/pokemon.json create mode 100644 poke-mongo/server/db/index.js create mode 100644 poke-mongo/server/index.js delete mode 100644 task-management/client/.gitignore delete mode 100644 task-management/client/README.md delete mode 100644 task-management/client/package.json delete mode 100644 task-management/client/public/favicon.ico delete mode 100644 task-management/client/public/index.html delete mode 100644 task-management/client/public/logo192.png delete mode 100644 task-management/client/public/logo512.png delete mode 100644 task-management/client/public/manifest.json delete mode 100644 task-management/client/public/robots.txt delete mode 100644 task-management/client/src/App.css delete mode 100644 task-management/client/src/App.js delete mode 100644 task-management/client/src/App.test.js delete mode 100644 task-management/client/src/index.css delete mode 100644 task-management/client/src/index.js delete mode 100644 task-management/client/src/logo.svg delete mode 100644 task-management/client/src/reportWebVitals.js delete mode 100644 task-management/client/src/setupTests.js delete mode 100644 task-management/seeder.js delete mode 100644 task-management/server/models/Task.js delete mode 100644 task-management/server/tasks control.js diff --git a/README.md b/README.md index f66f69e..df53d8a 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ Make sure that you have already created your own **organisation** with your team Edit this file by filling your team composition here: -- [ ] Mohamed Mouyaed Rassas | mohachmadim | **Scrum Master** -- [ ] Mohamed Ashraf Zohdi | AshrafZohdi -- [ ] Mohamed Bliwa | BLIWA +- [ ] _Student full name_ | _Github username_ | **Scrum Master** +- [ ] _Student full name_ | _Gihub username_ +- [ ] _Student full name_ | _Gihub username_ ## Technologies diff --git a/arts-gallery/README.md b/arts-gallery/README.md new file mode 100644 index 0000000..9cc366c --- /dev/null +++ b/arts-gallery/README.md @@ -0,0 +1,104 @@ +# ArtsGallery + +You will be creating a full-stack application to save paintings into a gallery by uploading them and saving them into a database. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). + +Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. + +### Part 1 - Paintings Gallery + +1. **As a user**, I want to be able to view the paintings I have in my gallery. If no paintings are present in the database, I will have to see a message indicating that `No paintings in Gallery` and a button to upload new ones. + +To implement this user story, you should: + +- Write an ExpressJS web server that listens to request on port `8000`. +- Run this command a brand new React App in a folder named `client`. Then navigate to it. + ``` + npx create-react-app client + cd client/ + ``` +- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. +- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. + \_Note: Create a Painting Schema under `server/models/Painting.js`. It should have these following attributes: + - `id`: Number + - `artist`: String _(for the author field)_ + - `name`: String + - `year`: Number +- Complete the route `/api/paintings` in `server/routes/paintings.routes.js` so that requests to this route are responded to with the data for all the paintings, retrieved from the database. +- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. +- Render each painting in a `Card` containing the image, the name, the artist, and the date. +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** + +### Part 2 - Create new Paintings + +1. **As a user**, I want to be able to create new Paintings and save them in the database. First, make this feature work with a simple form where the user can manually input: + +- Name +- Artist +- Year +- Painting url + For consistency, use real data from the internet when you test your application. + +2. **As a user**, I want to be able create new Paintings by uploading images from my local machine. + For this, you should: + +- Add an input of type `file` to your form where user can upload images +- Use `FormData` to send a request including data and files +- Use [multer](https://www.npmjs.com/package/multer) to handle requests including files +- Use [Cloudinary](https://cloudinary.com/) to store images in the cloud and generate urls +- Save the Painting with the data from the inputs and the url generated by Cloudinary + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** + +### Part 3 - Edit Existing Paintings + +1. **As a user**, I want to update existing paintings in the database. + +- With every Painting Card, there should be an `Edit` button. +- When the user clicks on `Edit`, a new `Modal` should be rendered +- The `Modal` will contain a **prefilled** form with the data of the selected painting +- The user can click on `Cancel` to close the Modal +- The user can update the data and click on `save` +- The modal will be closed and the data of the painting will be updated in the `PaitningList` component + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** + +### Part 4 - Delete Painting + +1. **As a user**, I want to be able to delete existing paintings from the database + +- Each painting card will contain a `Delete` button +- When the user clicks on the `Delete` button, a `Modal` will be rendered with 2 options: `Confirm` and `Cancel` +- Clicking on `Confirm` will delete the painting and close the modal +- The painting will no longuer exist in the `PaintingList` component + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** + +### API Structure + +> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section + +Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: + +| URL | HTTP Verb | Request Body | Result | +| :----------------: | :-------: | :----------: | :--------------------------------------------------------------------: | +| /api/paintings | GET | empty | Return JSON of all Paintings | +| /api/paintings | POST | JSON | Create new Painting and return JSON of created Painting | +| /api/paintings/:id | DELETE | empty | Return JSON of single Painting with matching `number` | +| /api/paintings/:id | PUT | FormData | Update Painting with matching `id` and return JSON of updated Painting | + +## Available Resources + +- [Stack Overflow](http://stackoverflow.com/) +- [MDN](https://developer.mozilla.org/) +- [ExpressJS Docs](https://expressjs.com/) +- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) +- [Mongo Docs](https://www.mongodb.com/) +- [Mongoose ODM Docs](http://mongoosejs.com/) +- [Cloudinary API](https://cloudinary.com/documentation/node_integration) +- [ReactJS Docs](https://facebook.github.io/react/) +- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) +- [NodeJS Docs](https://nodejs.org/) +- [Academind Node-Multer](https://www.youtube.com/watch?v=srPXMt1Q0nY&ab_channel=Academind) to learn how to handle uploaded images in Node +- [Academind React Image Upload](https://www.youtube.com/watch?v=XeiOnkEI7XI&ab_channel=Academind) to learn how to upload images in React +- [Postman](https://www.getpostman.com/) +- Docs for any npm packages you might use diff --git a/arts-gallery/dummy_data.js b/arts-gallery/dummy_data.js new file mode 100644 index 0000000..39ce787 --- /dev/null +++ b/arts-gallery/dummy_data.js @@ -0,0 +1,30 @@ +module.exports = [ + { + 'id': 1234, + 'name': 'Guernica', + 'artist': 'Picasso', + 'image': 'https://www.worldatlas.com/r/w960-q80/upload/ca/27/70/shutterstock-337184468.jpg', + 'year': 1937 + }, + { + 'id': 5265, + 'name': 'The Girl With A Pearl Earring', + 'artist': 'Johannes Vermeer', + 'image': 'https://www.worldatlas.com/r/w960-q80/upload/9d/d2/c4/meisje-met-de-parel.jpg', + 'year': 1665 + }, + { + 'id': 4487, + 'name': 'The Scream', + 'artist': 'Edvard Munch', + 'image': 'https://www.worldatlas.com/r/w960-q80/upload/5f/96/29/edvard-munch-1893-the-scream-oil-tempera-and-pastel-on-cardboard-91-x-73-cm-national-gallery-of-norway.jpg', + 'year': 1893 + }, + { + 'id': 8357, + 'name': 'The Starry Night', + 'artist': 'Vincent van Gogh', + 'image': 'https://www.worldatlas.com/r/w960-q80/upload/1f/e7/fd/1280px-van-gogh-starry-night-google-art-project.jpg', + 'year': 1889 + } + ]; \ No newline at end of file diff --git a/arts-gallery/server/db/index.js b/arts-gallery/server/db/index.js new file mode 100644 index 0000000..433babf --- /dev/null +++ b/arts-gallery/server/db/index.js @@ -0,0 +1,3 @@ +/** + * Your Database Connection comes here + */ \ No newline at end of file diff --git a/arts-gallery/server/index.js b/arts-gallery/server/index.js new file mode 100644 index 0000000..66cd61e --- /dev/null +++ b/arts-gallery/server/index.js @@ -0,0 +1,3 @@ +/** + * Your server comes here + */ \ No newline at end of file diff --git a/gift-store/README.md b/gift-store/README.md new file mode 100644 index 0000000..c78a400 --- /dev/null +++ b/gift-store/README.md @@ -0,0 +1,115 @@ +# Gift Store + +You will be creating a full-stack application to manage your gift store. It will allow the owner of the stoer to execute all CRUD operations on his gifts,. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). + +Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. + +### Part 1 - Products Table + +1. **As a user**, I want to be able to view the products I have in my database. If no product are present in the database, I will have to see a message indicating that `You have no product` and a button to create new ones. + +To implement this user story, you should: + +- Write an ExpressJS web server that listens to request on port `8000`. +- Run this command to create a brand new React App in a folder named `client`. Then navigate to it. + ``` + npx create-react-app client + cd client/ + ``` +- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. +- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. + \_Note: Create a Product Schema under `server/models/Product.js`. It should have these following attributes: + - `id`: Number + - `category`: String + - `quantity`: Number + - `brand`: String + - `image`: String _(the url of the image)_ +- Complete the route `/api/products` in `server/routes/products.routes.js` so that requests to this route are responded to with the data for all the products, retrieved from the database. +- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. +- Render the products in a `Table` containing the image, the name, the brand, the category, the price and the quantity +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** + +### Part 2 - Create new Products + +1. **As a user**, I want to be able to create new products and save them in the database. Create a `NewTask` component containing these inputs: + +- `Name`: text +- `Category`: text +- `Quantity`: positive number +- `Price`: positive number +- `Image`: text (the url of the image) + +The data from the form should be sent to `/api/products` and saved to the database. + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** + +### Part 3 - Edit Existing Products + +1. **As a user**, I want to update the existing products in my management system. + +- With every `Row` in the products table, there should be an `Edit` button. +- When the user clicks on `Edit`, a `Modal` should be rendered +- The `Modal` should contain a form similar to the `CreateProduct` form +- The inputs should be prefilled with `defualtValues` of the product data with 2 buttons (`save` / `cancel`) +- The user can click on `Cancel` to cancel changes +- The user can update the data and click on `save` +- The Modal should be closed and the `Table` should be updated with the nes data +- You should send a PUT request to `/api/products/:id` with the new data from the form + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** + +### Part 4 - Delete existing products + +1. **As a user**, I want to delete products. + +- With every `Row` in the products table, there should be a `Delete` button. +- When the user clicks on `Delete`, a `Modal` should be rendered +- The `Modal` should contain 2 buttons: `Confirm` and `Cancel` +- Clicking on `Cancel` will close the Modal +- Clicking on `Delete` should delete the selected Product and close the Modal +- The deleted Product should no longer appear in the `ProductsList` + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** + +### Part 5 - Predefined Categories + +1. **As a user**, I want to group products by category + +- Create a `Category.js` model, `categories.routes.js` router, and a `categories.controller.js` controller +- Each Category should have: + - id: String + - title: String +- Create new categories through Postman +- Refactor the Category input in `CreateProduct` form to be a `Dropdown` containing the categories' titles + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** + +### API Structure + +> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section + +Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: + +| URL | HTTP Verb | Request Body | Result | +| :---------------: | :-------: | :----------: | :----------------------------------------------------------: | +| /api/products | GET | empty | Return JSON of all products | +| /api/products | POST | JSON | Create new Product and return JSON of created Product | +| /api/products/:id | DELETE | empty | Return JSON of single Product with matching `id` | +| /api/products/:id | PUT | JSON | Update Product with matching `id` and return updated Product | +| /api/categories | POST | JSON | Create a new category | +| /api/categories | GET | JSON | Return JSON of all categories | + +## Available Resources + +- [Stack Overflow](http://stackoverflow.com/) +- [MDN](https://developer.mozilla.org/) +- [ExpressJS Docs](https://expressjs.com/) +- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) +- [Mongo Docs](https://www.mongodb.com/) +- [Mongoose ODM Docs](http://mongoosejs.com/) +- [Cloudinary API](https://cloudinary.com/documentation/node_integration) +- [ReactJS Docs](https://facebook.github.io/react/) +- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) +- [NodeJS Docs](https://nodejs.org/) +- [Postman](https://www.getpostman.com/) +- Docs for any npm packages you might use diff --git a/gift-store/dummy_data.js b/gift-store/dummy_data.js new file mode 100644 index 0000000..860ee91 --- /dev/null +++ b/gift-store/dummy_data.js @@ -0,0 +1,34 @@ +module.exports = [ + { + 'id': 1234, + 'name': 'JBL Live 460NC', + 'category': 'Audio', + 'brand': 'JBL', + 'image': 'https://m.media-amazon.com/images/I/61Kq-Pz8d-L._AC_SL1200_.jpg', + 'quantity': 10 + }, + { + 'id': 5265, + 'name': 'JBL CHARGE 5', + 'category': 'Audio', + 'brand': 'JBL', + 'image': 'https://m.media-amazon.com/images/I/71Gk3H-tIqL._AC_SL1500_.jpg', + 'quantity': 5 + }, + { + 'id': 4487, + 'name': 'Roku Smart TV', + 'category': 'Video', + 'brand': 'Roku', + 'image': 'https://m.media-amazon.com/images/I/71gzlKauNQL._AC_SL1500_.jpg', + 'quantity': 7 + }, + { + 'id': 8357, + 'name': 'Razer Viper Ultimate', + 'category': 'Accessories', + 'brand': 'Razer', + 'image': 'https://m.media-amazon.com/images/I/6157EeRHinL._AC_SL1500_.jpg', + 'quantity': 1 + } +]; \ No newline at end of file diff --git a/gift-store/server/db/index.js b/gift-store/server/db/index.js new file mode 100644 index 0000000..05aaea5 --- /dev/null +++ b/gift-store/server/db/index.js @@ -0,0 +1,3 @@ +/** + * Connect to the Database with Mongoose here + */ \ No newline at end of file diff --git a/gift-store/server/index.js b/gift-store/server/index.js new file mode 100644 index 0000000..66cd61e --- /dev/null +++ b/gift-store/server/index.js @@ -0,0 +1,3 @@ +/** + * Your server comes here + */ \ No newline at end of file diff --git a/hacker-news/README.md b/hacker-news/README.md new file mode 100644 index 0000000..8bae6dd --- /dev/null +++ b/hacker-news/README.md @@ -0,0 +1,127 @@ +# HackerNews + +You will be creating a full-stack application to display analytics about [HackerNews](https://news.ycombinator.com/) and its users. In order to do this you will be interacting with the [HackerNews API](https://github.com/HackerNews/API) using a worker process, and storing data from your calls to the API in MongoDB, using the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). + +Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. + +### Part 1 - Top Ten Stories + +1. **As a user**, I want to be able to view the Top Ten Stories on Hacker News (for now, this will be accomplished with the dummy data provided, not live data from the Hacker News API). + +_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ + +![top-ten-stories](./assets/top-ten-stories.png) + +To implement this user story, you should: + +- Write an ExpressJS web server that listens to request on port `8000`. +- Run this command a brand new React App in a folder named `client`. Then navigate to it. + ``` + npx create-react-app client + cd client/ + ``` +- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. +- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. + \_Note: Create the Story Schema under `server/models/Story.js`. It should have these following attributes: + - `id`: Number + - `by`: String _(for the author field)_ + - `title`: String + - `score`: String +- Complete the route `/api/stories` in `server/routes/stories.routes.js` so that requests to this route are responded to with the data for the top ten stories, retrieved from the database. +- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** + +### Part 2 - Authors of Top Stories + +1. **As a user**, I want to be able to view the authors of the top ten stories, sorted by their karma (for now, this will be accomplished with the seed data retrieved from the server, not live data from the Hacker News API). +1. **As a user**, I want to be able to switch between the top ten stories view and the top ten authors view. + +_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ + +![top-ten-authors](./assets/top-ten-story-authors.png) + +To implement this user story, you should: + +- Create any new components or directives as necessary +- Create any new server side routes as necessary +- Create or update any database schemas and models as necessary +- Modify the seed.js file to also add author information to the mongo database (if needed, look up how to drop your existing stories collection) + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** + +### Part 3 - Worker + +1. **As a user**, I want up to date information about the top ten stories, not just seed data. +1. **As a developer**, I want an easy way to add up to date information about the top ten stories to the database. + +To implement this user and developer story, you should: + +- Build out `worker.js` to store the top stories and top authors it gets from the [HackerNews API](https://github.com/HackerNews/API) in MongoDB, using `db/models/story.js`. You will have to use the ids from your initial request to the API, in order to make additional API requests for stories, as well as use the author username to make additional API requests for author information. (_NOTE: A story's score is not directly related to its rank. You may confirm the current top 10 stories by going to [Hacker News](https://news.ycombinator.com/)_). +- Add an additional npm script to the `package.json` so that a developer could run the worker.js file to populate the database instead of the seed.js script + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** + +### Part 4 - Author Search + +1. **As a user**, I want to be able to see a list of stories by a certain author. +1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, and the author search view. +1. **As a developer**, I want to be able to save the story information retrieved from the HackerNews API in the database so that I don't have to fetch it from the API every time. + +_Please see mockups below - remember, you do NOT need to match the styling, just the content structure._ + +![author-search-a](./assets/author-search-a.png) +![author-search-b](./assets/author-search-b.png) + +To implement this user and developer story, you should: + +- Create any new components or directives as necessary +- Create any new server side routes as necessary +- Create or update any database schemas and models as necessary + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** + +### Part 5 - Story Recommendations + +1. **As a user**, when I click on a story in the top ten view, I want to be able to see 10 other stories _similar_ to this story. +1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, the author search view, and the recommended story view. + +_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ + +![recommended-stories.png](./assets/recommended-stories.png) + +To implement this user story, you should: + +- Find ten similar stories using the following specification: + + - Recommend stories based on number of shared commenters it has with the story you clicked on. For example, if the story you clicked on has, 4 commenters, _CommenterA_, _CommenterB_, _CommenterC_, and _CommenterD_, a highly recommended story would be another story that all 4 of these same commenters have commented on. A less recommended story would be one that only 3 of the 4 commenters commented on. You would never recommend a story that none of the 4 commenters have commented on. These recommended stories do not have to, and will most likely not, be in the top ten current stories. + - If the story has the same number of shared commenters, sort the story with the highest score first. + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** + +### Part 6 - Live Update + +1. **As a developer**, I want the top ten stories in the database to refresh every minute. + +To implement this developer story, you should: + +- Refactor your application so that `worker.js` runs every minute. +- Refactor you application so that your views automatically refresh when `worker.js` provides it with new data that would affect the view. + +- **WHEN COMPLETE AND WORKING, make a commit that says `Part 6 Complete`** + +## Available Resources + +- [Stack Overflow](http://stackoverflow.com/) +- [MDN](https://developer.mozilla.org/) +- [ExpressJS Docs](https://expressjs.com/) +- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) +- [Mongo Docs](https://www.mongodb.com/) +- [Mongoose ODM Docs](http://mongoosejs.com/) +- [HackerNews API](https://github.com/HackerNews/API) +- [ReactJS Docs](https://facebook.github.io/react/) +- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) +- [NodeJS Docs](https://nodejs.org/) +- [ExpressJS Docs](https://expressjs.com/) +- [Postman](https://www.getpostman.com/) +- Docs for any npm packages you might use +- [Google Search](https://google.com) to search for the correct page on any of the documentation above diff --git a/hacker-news/assets/author-search-a.png b/hacker-news/assets/author-search-a.png new file mode 100644 index 0000000000000000000000000000000000000000..8cacfef9cbded0bdcd23b5c3b94ec75c617131af GIT binary patch literal 26708 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 pn)85-$1*OAnyCFLnAyzY74R4(c)Rf*`?a$l9d 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⁣Hu~dWoo3@Lt|WP1gD9B*Z6+M!&etd-tAi%!5SRtx zk>qZoYbtBqMhS;C%u2Z(?`v3kQ#%|Z*s|^#p4Lm}G!nadtvGS5GY$e-3-%sj6tYd- zZR;KzMm6Deq}-8Ktc4guVxzzgQ?&CN^AwoUwN}8O^M-8CE;QqW?t2{Xl1VH**phmg z|K7I)jU-W~y^#gFY*kU?AIxzzHR#7)Z(MDioT#nn3bXZjzO$>hvnz4s0|$VQI=Vz%zL6tDJ6cIUctXpRb(to(7mSgo?Th!|=>Mn^@xEa6}0uAmK?vf1_8KfI{*771G1iNxfdnU+QYQqP(8qlQ;S5J=x zCc~c!o{+PZD5+&xI7ak+aeIqGB?lWFi};}u>wrEG(GH|y+@!#|H#gsE5F}i( ziA|SQZ!kO+T4zy4PV|+ZT>`s{V%_a0t(*{A_Mw77%Ke??Myb5y=wLg9|^ zO=zNPV;TuLxci$9QIZv_Z0|i02PKrN`u#S>xRt``lCPt9UQAmoOc2F~kjw!p3yqiH zla-Mb(Re?%*%#Y84X}bOaC$u8He;LhuTl5nS zwjN-cEuY{P8+m`Ep4p_2!d>*;m6aYEqazV|rY#7cpIko3d;F)`>KB{un<^d_8qoG) zXMR$WzuEnH@<>nwR^aCTvB>W&hyti{(zj&!g;*Y+9Du8k-3^*k$qBS?z}%~_mG#a5h&edgkV zvV2|a9yL~c4EQ^L=C$u8C5RPERR7YlJ*{T&OjJ%Rdo=Whmv8B0M3ZFFGo13Fkz>M@ zm1~;DFQu_pLQEC>tUmM~_*>8{n=LD6!Y37K6=$m+EbI^xYB#_Q!5B3!xj1bPL;5bV z3n#96srziusQZgG&iOyv@T8}F?WJEmYN!_4egwJ%!et{9noTnnpyKg$Upw@iT{A*S zTYG(u?3bRpJJ?-J;zsY3SxBwlB~2ZrN36o3>N_e?nDNyTlYKF|Mq8Bzi-*X)F}oxG z>fPE%PC?j0LW0=)$1_v}esz(8=E#~UA50$KAiNo1fMA;Pk>K)78?L!clkwMpXj!!o z*=|JFg=p0hy*JAgJYmjL#g?7Ro_Z;Sb+UUR@oi$^?h>bg* zI*8mHsgkwk_iZ8*Bwwv#m`j37IIoui8J6e4<{BTx1cL{9 z{k>@LBE53dk1w6(2O%k*9BccVNAwHi8!yi8p6+>0@+<6AktUtO{0Oc%iTe&e;$=`8 zU%>nMLTqX*X8lv$*2jno(t)ywhP2{C)Nh|20RvbsNC<;E6rdTR{j!Dbi#Q_p5#Am+ z1AEr)y2547sH&G}OsCs{@ zIt$yh`+d$BzMKZ``_O5mE~mQRDTP1rGQki8=!l7Kb`rs{i&FBx!a|o0$p`DHbLwiv z_7{O9ApWo|#u1}z^xug()kq(#XZ0O-WBR|d_+ma(43Z(vi247qo+`gtPZjs9mGS>h z_rZD^;0_%9RV*;df3u$DJd>v%5#~PyiUW<7uGH?RGj)w?WKozETFk_;* z`z$pw>s*7I%Y3b(Q!i<5d5+)8`dd)zON;QJg?@Esr{tf2ZzRL(UdE_zhKwb_=W?zz ztA5nFi`CN zymrh|tFS}Ne}Jtopeuwra%C?gmp_^N{oIFx4Y}FSD8Yb4C*=EAO~2Y)YBohvy2A{4 zlb^%RIi+8q8T>xC>&e;YhBhFApD!UZ4G({>HbWhePUpZ!jvGC6LnlJE`(B8Gqcqc9 z@RI}d`<#|G)<-p#nOhWfy4gs;5-HS*?!=@+qT~>D0VW0_9k8v$_}9>8VAVPJBBa31 zxV`6BwTQkSZnF;?W*y>PhwzO$yHsTt%T7!q@8^`%ZmdAzS?{=|Qkng+r&W5PZPLAa z{z^ZlR8ihcQI+=4x7z(%Ypz^Jq+PQ-pOG`nA3&Sw3WuL>Ui1!(?WFKl{Tv9z6Yrmq zm?mUj`KT@@2jb~o;kW>=py}G8U7mE7z24yk;>MSE*;xuBGR+R9*YQD0u|&Pi`e#q* zJlR33r`f-V3SaJR!@NTsJPI+24RKMH9w5D>Pcz!z*C6 zjmSVCKQF4PhMj~EQAglJLUE{2E?aA)1ySmghCwUkGSN91%ZdRnP=+#&Dy7xs8DMwxAQlF{EHsqKJ&jM8 z1!e2)2#X}8g}<5sT`7IZ%Qy>^K%^%59+J_C($K_>VvH5b>dlEps~OtklmW2Vi&SZ_ zVU1f@ia|n$1Ht_C$go{)ql#DyEhd|R9+hZX$G}-9Fw&SX)WAvM*Jc+oN@ujL1_s#Je5TyEfMyfoIOEAdPId0Bp5B|D zWv%yT;PvM=2=^ngsV@?7n*ilz|Gl6 z^ya~Zsz;ymA6BBkWxT>*g3x5&G;vv2(?OC6+Tf+^I-vCkSrVMp*3 zh9#?*rPmy#+wstRv&Dff4|HcwbR1E7li-IB+3)wr8eC6mFTGNn%U3wJD1Unay!qT8 zp%U-k6sunl{`3h`S^r>LcU1$d1I^YG;GP7R5C28ogNyKCMO7U^`euPja~aX~vg5(MKbD7* zQ#}$krb28s;xv5KN@@0MD8e_-(XcpPffukD2KgfswtXE_8X2|o01AN}7D8GgobA2I z;71O!6T>grHzN`slOSOchsH{MSAKk*l}{+-dzyX6BOEgku(E|3i9a107R__uI$<4& z%M4YJ$I<+fLr4UpstCt%onNnxiij6pzAsl3H#amQ8XOB#XzI|OR|~{pD<;WutBb*? zOK3O3C~G1&(r>JsMx%ft=F+C0sE~zw$#Vfh4xxCf~Nsf-1(yddDVTr z=iPbmGk5D-GP~Hl_8Z%{e#Gn!kbKcAX4yGzD4@dolRHjAcZ^@;D1JBFig&Q${P_%% zBR>|+{!uivEu;6{tGq6Sc3?4_e2b>&!X)r`yE*Zmuy9w0HPhXY+`{%|LLNj>C0_~Nbj z$r4^D6|6W4z0KOf;KTwqVmStPu4KF*(dcTI%fatwn6(x&OB>)izc+{q3iZXOz+6tSX}^p&Yr!3~i_no-ijp@A(lnyHN^iAaiO)SaVD;NbGMpR%F!SD=R3 z1l}B3s_%>U8N*Rqhs-ae(d4>8(!3)|bc7f(P#}domV!nUh8SU;k3&-YlB)M(uFFG< z3%4;EvU?oxL_zv3bT;-PA3}r0jj=--%%{rc88_bcGz8-1BJUwb>lm#15O&O?aOU6~xi3s&ef3O5n0wmWjBj1_ zk!FVRDDzLpjIPdx2=LL7Q;Az;gzC6Z4f=NaF?kH!Ru4X#LK@V|FeG>92|4f23J>^X zYO$7~>Ox}2G!nws7?cFY!;8sll3dj?$<*1B(6mbQLNGFyDqt6IIfgPqHcQPZq7ifT z`b1LAnj}xN!-x(oNTfUUFPEcH}yec_+>vWlc zZF5iEy2nHiqH$t=+v{Z3qee zlc6;!uD*it)ZLt8Oe#XWSUAe=u)&SOG!g>Mn!=9GQ>|JbdO_ThKz9xX#TH|~0SbPI zC=xU_ikyUHl7@qk@8lA$E(~OTF?ni|(ils%no03^(_F)?xWaKCOr<4UyIpG;vP~pYpCD7Wm(gth%GDCL%8u7Dkx zY)4_nLJHAn7OoU=uE-QxnW!)aOO%<)ASX3$E5QV1+A7~RpEy?7UM@fiy@cq|Jd0OP zawk+SeCKed`Xq!;$`EgfD{lf3gF)@&OKE@5h(v$Wtf-B)nHYAgb|doT4}%*CjL2z) z^IFYI@}e~WgBjXo?yghv`B7r+i`~49KJi{NG_oBsQErP~(_N})IUN_tv2SAhITw=Kl& zOi!kSRP*BlFU_Tdq#Gt??5yD(Q$5u|L=z)*5A?+xh$2d4{fmlJ>=*t;P-^mdawj4ikd3C-6gS1w8|TRVVg>2 z(45}<$Q8YbsZv5=JIk-^;>Nj0IT32+Y09ugUp9!DtlZRvE(&&V*n2mirvh%I&c#1z zp#P4XbG#uP7PKyYF5f=Sapkg|_XhZjvH255z+_q_ovJZ#KG4{+&X{e>s%1tm(sNlp zW(tS%T)Iq*5;oa4?>MY($;H7{?v*m(Y zxEYNvDrMCBGCt8fclEBvj!C@DNzeN2OvTMLIGn6e_wrpeU-%v6zOH*KGUWVEBtkTm zEhyTEa@HzP&#fQ}3H|6mox#dq!TLE7HqfB!CKF9rKoZbK^%*(wHj^rsBeS8q-T%;y zTI+>sAx^gVGsnLXufw+-?WADNITIgJs6k!-Jr^cEM}r@K6ciswn6JRTYIu72h6H!C z$A4*yUrP*jPjKDP$qc6Cg%SeTKlcj+&9@${FMPDa-u&(n3=(@ zX3qbH+&>hSLp(Ox5B&Gv9#c0AA4h+}U{@ae-;hJ}hc>ddJy7`fKlHx5zZEWgko}|o zhR%MYEAFdJDE|s5A4&MZ-$&Q~rGfk35YLA>4$;`jA1LI%O{ktyK924QlTr4kH_h+J zzeVK3oHN^PxxfGUzigIAm3#jS-R{GEqm9PX&v)RAf4jZ-`E^z23fexlp8E+b+$FRj zEl+8!xG}vg$H+dcPi?lV21+lrTi3^Q>sg!LsB(z>k)Zf4kmxFTwF^4Zt2H=>6MQK{@(BZ9}vRl{ZZds2q>}7{BO<4zxUhFK;yq|TLTd%*{kGWxt z?jN5!xMXvlH`0h%@8b9!PY%q^9^1AcYLyNz2*Q0h{qb#go5?aNL@qRT*)|A(>kGe_ zdkj8~wS&h$wcQ8Az^AxlKi%3AI<}Rc=k(T}^j;WfmW|W6YEiwLy|BE>B7x38vy~(9 zll2_Cg~~lo`RiX(kLyCHYTH>uV2a_}qFRyd4c3P^n0(s7WysDY7Tr!hOXOdYrwBUo zv%bx6q94zmAK5YWh^#~PUYNho?nk%(imvuj#e+(f02@p-bHnxDHDEA`D`Hx(CL|6x zGxWgBVsC~ImM#?*Jys@PdrV_5W)bh8xFIA44T;cmIq|_k&As? zG#?|?Bx!ZpSYDP_+Y_#N$||1qiG|I{PB#?f%IKbeKZR*LagRZNUKCGRd?8k_BnERX ztI3zu3VD~}yY6j|4_@W2J{^ty&iA*`TXZewRtp$>Bz+PiSF1eicb9P7oZ`dp1tTp%*s(&N^)L)CJ7MSXb_hRzauq4;T`j1PPs_V90$ zf~O##)&smx&sp06g z^sn`Y-6jrK8n0{y@bj7WA#A&C*p%W1qxCuLo#26Ay;PpSZuSmp%rBp@!9dMf&*?S=gR?$bQ^qEH!2of zwBw&L)-TCW%C({f@xJ%du>r!xPCkA4ajh)kHHHV+jdD1d}_>H&;i<^tX; zQbzPwwWSimflrtT)>p}6icQ|7OxhnSzn4cYrMGHpZfMFj*hAj!#7DeBf9!7}`4XRP{4lw)azBp~P zLNse(NP^pJnD2lS`$Miwwh_SQsLaJx8oCT?NLmtFqD6?j^(oXJ8A+pAdx0OLOBTdA z=elicS*TXyC9#!^qu5`gdkb747Shb)MtQ@3PuJX=Vq7Z=L8=pij$mi?Vkqr28SuR4 z4UmMkyGYsAEm!%qh&^9{PT}+`z}LL~0K+tM>FC01 zM{W8cbm#%>Ee;Ti_fsh(G-b^|7lhey-=(iOky?)9-xvQm5{5mrCtVp6YCI$97P`FA zuMQ#S>1ffXGtyonyHl9VZ3_reNrqSfzflyHT8F$)h(+EITS8PcMEfqKf6M zXmVqS{*;x2>qi9%7ca1xtSsqP&pjPaqXi8IA<4*no`p~3BdC2YC<3=(_|wvKb4D~@ zuV6#+mXN2AQp%V)E~Vr+A_&2loxfVjju*?Gr4q@i1*pmoP@#V@N2~bC66e9fHXxA; z!7)9v^dKS}4q=bhl-wAg4kncOa0T2Rt|jA#qdK_m>(DapZGzS?#<0m2Zlv?GM_d0; zrNW5C9^efcIK2g*KS0+nNWG4{ZB9vM2S~K*`>)%dyykF=+#I+w-NFU2%!5kRX z2AYiI5+s%hj_N`}5`;xtzgGsR(&6;FLk~p~kr7Br4Tpu5`*jmj`}1hOHi|j;bY<$4go7 zvMixs=pB?puO=W&p{eazuapj|kQzw9s*h>oz>-DI9w7`aIUh^*s2N&zxwUU;G5@wR z=J+R9=M&Bckr!u55#oWmU{QGPc)8YY%!F3aptDy-+7FmcT=1M;Z*(&WQIX;hZw(JX zrjuzulvcTUNN49C%Z{Nz zdA|w6G)S0=B2SBTy^kfUj(jm!!;M@_ZpE352aJgyrU9T0&l0C*FQZ`w)xR+?qLfKb ziv_Z)8O)lM=hoDxCUvAuX2yE)q~x))-HRc&5IXQt!-xLpHKL1W?rV2|oKjn{E}H7S z{>Et4QIVG9RY^ppWO|x{8LjhNroFj7C~x}SDMnyQ16L*`yQb44^v65S83a9WZ}F!$ zovtJ2zD4C&Clv>miFGs@pmHHmr51|m46%ZNh!r0G>?#pNDwoZ>2iPZy^T5t7SQCn$ zu;>rFGOi)Hbbc8AdQVs+o!mK7$xtwS^O6x_EY;yJT9&lk7#*%DrIz9^xrc5OeWY!V z&oQ2*btPY_zS0X?(D@d%WpF$XCkfn#Q3SnwK^6ss$lt1b)<*n-`_7GNR(rE;IS2eS z-DwJfCW%c4Z%(7-{b_hqzD5XJd^oz~0k*$eg=%9X`_+!fs){*{+HsQ^m60-`{E$_1 zol3D*=65X7r9(P3ZCd+gXUg;Og6JcK-sCHrD1BCM*!Ey1&5++S5*Um!HHRn(d^HuM ziliH#puB@Ed_-F$LtHWQe>(}$t9%4oj4EzvD}NjC5)6Gf>_|JfLq~tJ%NW$ZbJEm2gJ67T4^L`}+O6tuR0Prf%}RebouDkfe3&$C+$eL=KvaMGBI#WG zw&vpIqgTYgaUq|~Z)-|gqZ9vUjmvLqT%OX@|Mp-aDEV#8+}hyC|E%HuZ4I~QIL+U@ zJi^>>YmUzJcmHP%9`IW>46+F+993zlg-^G1WY5cg{=k)H7l#oyNiM_&;fuA=SY$57R zv<)o!TK>NsVjNl}uP}4Hq9d7{$~HU?(NoyDN-50{5YdByUcP-U`fig`ln2AoK>wwH zlt9DTS}f9kT;sD~@njN6QYj@n5!l^^j*ri6C`RxaTtJ}X<#~_qduMxNuw;4Y*?V++ zHcHln^dO~>OTjnYc;JR>G0~k09V!=24PSXzc~C%NyI7bd(IS)vKX@e{1#tQ|UrDG3 zq1cE7;JfUv2o#~Qc@SQx4l(GvZ=J?QXS;q351)Tp8&mhTJFic87@e*5j-@tlU!q*O zBHZRa_fV+C85h3jC)lDJYU~vqXme);)AlkBXZ>P1k#RN--dg84D^UMcahdccVu$W5 z<*bg_8u-azTs0osV2UOHfmP>+HPVBa8**8fhTSO@Z}fi8ok9JI(3#bRRbWZ%7UwQ2 zMzsK8CDR%nabRoB`JTfIb||lj%CO9g8H^Rl)f%w$veGBRXFQ2>(qDUej^c>&(Y9sb z2FCkjO3rgiUf&&2LA6S049GIPcpfq;Y2O$x^c@O7F@07G84&e!hrIWFOZ ziH zy^e$(#ynN=yZkTi4o^>fyC?Q*=&w?!3tI}M^CfcMQ{JTudLq(qj!p^N?B|3%9kEHE zJh}24MR4}rTNrNXk<_^(r@;-do6o?Gln-yan~}y8zhdb-bg0tFoxlzbT>o+pdyBYs z<0}-BcWeZitc=zxE*{Zm?~~VGEZE-WW=S`M+HU{6o8=W3G5rg9li;$UYx66XJcH9D zpkV8gAu(NYgsk41K5d|W;slZzw}CudS3jz?4!L040aG5N4h!!-#wq6Y0$+ll;%#i! zk=Y`V0x?pqfx|)b2fVZGRIw3uj9OkIAD6nKh1GckQ9FQ8$K2n_-yhS;i7*Yn3o?B102~y#i%_*5z6hhKvViSpu zmRRdr^z7mA{miiy2*M=v)Rx+K@+{_yfn`X z+8R4a=fR@7S~&)`R$9WQyK;(o6FwysF51Svbp~D&F3a(x_s_*jZnv}uvDfc^^o!1R zltEtwzvL-e_JNIfCbx=rX5c4YluVM9XppYujm0oh`m|HB)4LuG(nJ@0~P}UufaYe7mXJ z=Azn4INDseIeR6n2s{0n;Gd4%G-(5C*KF^=V}Kzi*mU-l*3Qi(Ie7e3S7?F^Axxj# zQ!jE(20Lhzn4(OMN);nTw%0CE9A;Fq14X%515(7HRbfKTM;Fe#b}o z!nFAk6p2?-nxwoW0{{Fl;tN|aZ;-i9Z6wLD#Ifd1di_Nd%cd;^&1=eg8~B< zv(K|p(hAM{FSKS8JTh`)MvQ|@pNrR3;Km&ccE@<)DHY1)r1teUK*Hk|U2R_!a&_1oBbTRfp>%O9yk0JoK2FqBdJ=IC8eka(eH+x1zPz>)#fok~bTBnvoU!;VV_BO7HCwTA4)&YDWR2q1PZI_@Yb9Hl@k6ni3e~IH2k~c%rPDM&yc= zAQg<}DmPHsmfN?IU?RY`7$qT|oC}2dbC_9`?E}8V86-;8)9{Qq1{=BNJFr?Vt5*bF z!fAdx<5E1Q~t? z3?}FbnmhD^Lla&(hx_|SEqfPhVq*RKP8RRMTVzW4<_go|6;0zQgi*E1Vg7g+7a;5j zvS9&Y(o6CO6T`HF8XEZ_B~H2tq}S#92eig0w90FXte*SP&NnFitT+=fcG7N@7b zk1JKT*FNwv*AlQ)CJ}>P*d$%;t-uq2Ty(8b8`7Hob^pw;fm5Vnp$&_C#J`FVc;C)R z4^}hZb?KT_>+TuBaFyYh&0A;PEIliaOY4Z^vm6_e~tCxEOy#0z}_%m6a7N)5;PYxRn9&O}zNUoHQt+$<;O^DB# z0X8GP43VGRA6N_*?a2y8zI_iEl>&}n1mdhB#!$l8)D_D1_7d99WiQmzg&Lf3Fayby z7R?Ow=e3^~*M0H87%-yBXzPaHGqsKe2#<>cf`+f>4(m(oour@=L&tX?-5!)Qdj-Me zrM|XY$*Hh;1SD{ouszRFT&>y$_3%nL zC~DSy1jy31=(w}h8-uGXCu*faPabcn9b5QrNP+Y8jy_R6PD==6vc;l)qx6M8QI3#P z+!f760Z3;}o5T`4nf7%g)TA;|%BUKIjPo$^DNb8Py%XEgU3;Xy`EaP0sr>EZ8OcpY zE?M@A$J+z}-^G*1QqXohmS7nsCup-LXQrSz=p|XpOSwYaUMZ9YmpDpw9#l+5I|$TR zWgRA^@b4H+L`E>1tKub5G4Yvg9}JE3aPA;B*~a&r^Y)NdiZ7sCB0@ZJ3%TeNl6);z#Tcs44^Q7X zYj>7hB)o?>%H1lIp!JUu0C;eeSfAyd5>~B!&#PN-lyXJR*QQnVoN`D)>sW=2`ZoVcm^*G;?B z((3F-7Z)jf4v$L7Tk{AA)dCJSXI&@8a{Q0Cq%j0mo&lvqs9M6yxp&9RYhOGfCx9zI ze+y9&xrNkPp0^>L;?Bb%Z805LJo{H}^>ut2GJJnLN)(>%*@`p(|4vecuAhG4^%2Cv zKBpRu(5ek({(6h*80$gfk+OejzxdT8g0~xQFL(hU-?5(m%L@GQ;Tw;?MAXZ!Ep8QW z#FU18kKMQPBZy_^MdcA43)KOc>JB0Wzw9&d)pvQduAUhQa^wxP9=J<-ylt%a^B|@K zXm^vzMs7*e#Pp!ctRG0bOwaUo+GH!#zvlBdr;>umGe!~1{OlWRLTk-Cs#@QxirQXA z5E?YtzN;IjQeOLol#VXJ%F}{C-g|t@FJ@F3F!(Hqy5H8Zv(dWc z6}O`((+umn)Dovj;S6 zy9iMa?oV^(*UV8zs6B>nKvw`SD1UR+0lL+Y*5s3}E9dOhofzI!fO7}ThopU3<{4Ih zYdM|YH(|b9p)nJCv~I7^-|LFAUZ@NXe)GLU`jCF#9lEgr2HKQArb-B-Ym0P>G4i`t z2yh^h%T*5q{aUf~67h00t}Gg35;99669j2h`=sdJ;D_?sL z4t4^C7D6b9_XWoP6b@z`*daGq_2(RmTG)s)gixWNdq#~dokg5z_Jv<6|Qts-JJn$8H@Vpck z{dxsV%QC!h9z&<}Gyk$Ke(=zKqYiy!WjrTsYOxE#*eXUaA>~#U?+g5aIvpe%bFjte+lm_MDSjB(w z+DpXjOibTu(8JhTKF5+!&_L(!ch&5F%{Pw}1}Xahccc^6!fWn*Gy=oLADk;97+$s? z-Q3SQbhds*Ow(m`{3O|FDmTgRGdKjcrK^|`4cQN(ZX~Qkb2iWo0`qF{J#V|X!`ZXo zf>?RuUkNX#^|z$!scR+0GYCN^m^ILuXH2OZbPXFd-;>?uz^IYbsiHSgr%0mGN=FZo zX9V-F<4|_y9OM&=z)lMJpN?RGy8Rku$(q~V)U(z z*$MBv*a{Y(7Z<)_=71A{7T=>Vahc}q-PeQHaxCQ(J9=uxfn*J ztQ;-N+)V3+U4Gu`PD)!Yuw>-<^|%o8M#xjPP1e|%Qw2=p-Vo*qMm=rl%2xiyO^o8Q z7Pba3lwsWsq@+;{j=0#-SbqGbQG-hI{Jz~&lSqs3Q!vP7Cm_W7&29q&N9>{~X)Mmx zz)45T(X}9sqt#}H>iOE0jHI~=hQ)a&&VeYf(}L+;_grXw-AZgZ_mjn2?rnw*I3rf! z(IeMfo5?$cx(0NjoEcO=7y#Ze(Px3i2( zd}mgW*~oC6#nFY+cZqGeWX#OivzJJGr8N{rHCe(Rv2&nQx_jG2VwR{2tOs@YiB85s z;+zYkVo0uonrs-H_Gbq;y(5Z-^iaMZy#e8U`M&XxpIm)qEN3?{rm}3nr;>xc?P38s zq1!L2)o;0;_MIEw#n@6Bql6r%bcm~CG%^$c1GBXVDCKhGqD{seu!HsbQbn0f6Z6Vr zgM!)$!z8H3-6jnz#Zy}w*BeGx$UbF}-#Hq_`eocE+PL+HBP<2o$-H4*Lys%U$(>(4 zsY)|~?GF;DLTXERm&9!Ob3Tj4=oo#2A=jp3FnGbjkeI|&)5eCIjGBBKb6Uc(0;at_ zNismZyAj0r`n4mv=n<+dO|S>1N%qZ1AL6bEHEew#Dsm5u78uNx3Y?6rxLE_mM_6NoK+l-d88} znu%#h>0k%o+o2Pm>n#s6jTYxdEj7dSMNIzwWlqH+4mM~@DlWs40(xT(U#3)=jT;SHrXJ*L z(1O9Sn&NfYv(IZ7xH_WM6=G7xSSzJAbz1DGB2V4p>N}n0vE>1SGF)V>=}h@=g|l?$eekaQRiNus6o? z0>w0$hc)^StUY`mTo@n8BN%BV6ICq)HIonrl4P$=TNuiy>*6ZY0wSCfIV0wr_hKT{ zEym9k^~eXOMg9@+@F0Af1&E9BGuN9O+m@{$Zz7j$#T3kFUpWseD$Zc8-@Zd0_V||N zxl8joBgjEQe#XBPf#R%-NfZ`S?MDRR`|+2_7iw5!45reZto2WWK$}mJ$mWtHprcjxZ+K@YFaZ-6s0K;{y0*i;qei zBjC>kKr<&ONNzo+pIAJ>-wppib!hX0Qw6`s!?Yn#AX5;kuzA0zBim_OU;p4uDlRbd z+u4&7OJZT%FZ<%ry$!$&svJq8$LU&L_5(Dlu>X()ZJ|^d|7<|$y|d%U$-^vhC>_py z@jO;6OS5zsu=2v$7qUZjWvuABrJR}}aW}Vj7n30_Q^&yilP-)0-6E;G-^sqy=*LH% z4LM^%^-W#hX5V7pI%{mISbFpU5B-g5X9Pt@)%^3WL5_a1%MV+br*6hPhbzV{K^>@f zMV%G*ifM?>UsXAx9X>i?ZRJ5k+4(jr!OGoOcU=w^<1Bl&AICoIe(z3_RfVzEK&M+( zc2I9-yppV8k0MtutCMv*8g$9~EC{C7SNv+YlTa$9Q%UMo`>@2%Uy=Q06tT~@5xCG_ z+V9}TS<+&FshZ;5snsG-0EekWA75XIJ%l121B0_Ui=cd%f z=c1rT7Uf{-FG#5ps2@>{_hDaCVj-lbf1Nja-dxeRUi{uwu61i9;+S2k_A95f_-5CG zS$V^QsUbuEpAK0fX)UTsgFWbNC`**Is0%sJ@BxqDDc7+K})EUWLWvH8N0vtWkg zivo89`#924t9YiWlo1ae8}!g=>4~u-?rssIXJVeiuND3J2G5LjY)|~qcv74@gq%)9 z9-QKSIBnsQ^(JtZqq+}SwE<~?X+w#))=nzPk`%5&^M;VxoDAWyWT7;t9j%NR(lRk< zizD=-#1qBgycGz$!v~H@7ur;!+3;xi1^L9@!pIh!Bp0#Yd-3L{Q6}+v9fI@jsiT#n zrwRxgt6m|q*LP>wCY9}Ynl6={Rmu$&CvS%7&+*dONTw0o{dx)lE=x4(XRL_jv385( zz|(CXl0_R=XB=wt&)x2}`C1+Nncfi2Q`*a>OmezJl+}x)>RYUQSufb=sc_4G_P>4E z7)vH^T;Zin&1{2E#871WWwl@Cza;riMI;5u=>c-Co3w(PciR-P?Z41>i2t=Ns(i%w zXGFS}o5vfsrjB=}t6l|uKzXog}0dMM;5 z6le!IvbC3H7&atIWVwBa0~K-wyZsXlce{K|$jV#%Bt&I4vURis*^_tHJliX?kbeMF z6w0sY-8?1^Yz|CZ@Nz?(3E4$Ln?`8jqE$TU^xr(cAwz_PFqz)mBF=>6my1>G?p72M zt2o9pC~T&eGwD*58SYBdq$l`d&`YbCUhB)qJ_$%chiZ?~PBRb^QW%Y<{{@cTR4)O@ zpI^Z|nMl@|+SUn?(C0A)dx@WM!I4g+em_8_c^%IlJ5SB9@iU=ii8yL12LlxOC zm+R>lbam8huxq7ES1yRRS$--YTs!TKu^4$fTtzy@Rq@cSGF2~oHBA4aL{_k3^ewV8 zhl39%8{5Y>6<3X@$lx3*^ry8nV>zGLjpVhYO~JXtidyP9_%<^3Xs)zmaX%I zQ4jy*HI>5I1}jSUla>qW_(X35r)mwAJ9xOGN#PZ|exp(Env7t6I+Of*M4KamIo2&R zvPI79I#~epO|^pV7p2gfAxWMZi6EO9>w(UCsl_b3FNOLXHdss=O7;)|?G7yjzrk^{ z5h9U9CVtu%3nAY$C&j$ z?NM9KQ|GWU$(3@74bAeY_@$nsWBoc|bVK7IH5zf=PqlT-kYa#`R>i-o;;^^m!N?=6 ztgMSs)BzW!qgB9UqsT1vfu#6?FpMP|x?Ld4dS<^Swtmbh!8@Py_RE`Iwb|ZH<+p)o z4H=b&BM6ySUVWvRxJK40Du0R@GPm-Qj7(d{Aq4(`bIDSvV;Pam8D~D8)SBE3G&+&? z6P&5oz3)u6B*ygbcxsE z_zPyG9T6)C%T2Ayf(>&MNdtK#<0zHG;jccDg5b|Fy4|D572teKt~L2=A5DmaI-~-t z(9|rQA;%U#rIW1R??xV!V>C1_u-wR^sR`ZS9 z;-KIgBYb8WCSZsaQpS9W>G$!Ce0oQQOC-(hJrh7i{}o(brj_&9endF9_r+0--HLrm z-m$7`_qKbRKSb+%_SSw1#Y=P1W6_v#M7c_y8`e{$$FA~oX^Y2&7EoL^-KNZe97;ll z8Y#!9tx)FTN=5u5e#*!Ma=P#n>)fZ3g)BM7#P94MB2|vua-1o-*6~GAkqe7o`^gXj zUgZ@~xL-2~GCZCF6^T69;hv!w@T?c+m&lYbdtP=pmY>jpxSNpdusUaewPjGfM-5{E z+~iRbOBSi2fhN7=!oKcG#Mcu8k=(T=+l0Vm%WAt+0s!!Y5%0i;O>-}55@HFZMj{k2 zyd0H9Q7`; zIithLiRcNR-5=jI&eKa|OCyrLC2t8){hUr?atAhBelS2++d)C=w|!#s$HKw+bP;k6 z(R!VD4(mY7?$Qe(B~!Ylmh0|ylXyRLbSw@aT!NavWp>GLL`vU5g%p&7XD00dLg7rZ z=Jh_996CGX3>GP{y(C^d1_F9(tB1q&t`BZc^Zsl42l_{!XO?4MG=5wjS5{E_7G*>$ z>}Wyk;UdpWPaDfE=>Da;zIyGGRVOxC#>~|;g1K|#;i1ZkjgBImhfjr1*(2%AH9L$E z)iJYJyqN3Z=?;E}+fArr?-P+Dl@|MXV)PCM4$2AR-Q-xW(ZXI1Ut}7x=LZ7FL9wi8 zPx~I4*e-`MQp-pJlf@CSC?(9!e!=Sj^|;jW5XbH8%7Z=Rpw^<14!Kn#Hm>FC53Ti4 zn>EXi)i2g{u(F9;mgpAW_=Vj%RoRaZ4IlELTdz98W#s)--qj)-U z{QAh3C8H4=Lgls%1*$|*sgk_}T+n`BR7E*Sx|*Rc)g%^7@jy0XsmB{oywEKA4mZI+ zMuOow=YtdNaaf5?Ee+A|7Zc58&SfMZ?GaFu9pq@zWRe(gULp#O_y9|gyGXVr;GWr} z`hW{#ta{{euX6Uy2@jtyfU-cAdZi)M z{PSL^)aN}s=9~C)a56W0F}l~;X8s|b&K&nL>6f;0 zL;vDncR$BW+IMlIpxrftooV^w3y<8qS&vsE-9wc^JZ(Jh5o9+d$`Xlu-4C&bIKtc9 zN8PBbRASCiJCBT>X2dUJJ<=wxy-^6Y`C3oOT6hX{wvM}VH5rXVczIz8G3&UU%3o4q zs;^X2Ac8RD>Fy(cAr>d{px&|>FG7T879&bEPI9&B>Lvq4`061rCxxT-NUr+=# zxE&{Hap4vC(Lhdhz0xUkIQi!+R6*E7pS)isD<@)84B)pvsMmXiY7cL~ktJFYPzH)$ zd3)ZSM|11-_t?_0WX(4x@l`c_$nMY0BT<9^mV!mw^NA% z@Q7x~kk#Gyke6zh4AV(mK2-kOL^s)ub8yf^1@;c9P*Uad34cp+q`Lk6R>f!#o(zBZ zH>NEtf7{(5awHL6t6Z0I)Sh7o#d;H8yh8{EzTBzsJiOjr6`OJrI=K1o3}7=Sas2MTH5!hU;OmQgsL zrcK$o@P@{r!^7R3#fjmWB~y{2?K|pOZSh8Gb5%<_&Zw|9MS)YOoz%l~>w^rf&+kC) zz2q0dbGu^`*RY1`96rAJK5Ty`k}`~n$niAR^BT%RE9_G4?}f`u?YP5RnH|&zWnG36 zBH^Jq7Z^L9UfAc<2F}>AJRD@JU#Oe7zJ#v`+4P#})1w1rTi%gTY{}iul-*wp_VLOP zp)oqhz3I)pnQJgHn7h*hL=!XuO~9GiGoEDIb;5CUk&Be({l`rqafpvXVZsC`3X~eh zx3d&<(hq}`)E8-~ekN3l@v<2NA5o)W&D*eB5^~|#vw@a-(oz7-pLW38G@@~A1Li`( zfD``W=*ajcidaHIA2cPWH$IFNy@SbKJnwaRcrs!QwWP<_NFg+Kss1ek z)rEZ@dNSsi-rg?`v`!W2#q9|`?F6T8 z`1k|%{cK8{uC;7(*8-?$`CJ-+0ZsRWq=}~Qx1g&p#wAzHAC(0&QGcm#_!m&hAV;Rf zkP~zS5~L0d*Y{FU1W(Y&E_kCvJf+cacrTNml-WNtaJ*3U9sQdJKT;3tvYl8{!&$A$ z9a?#}%X+VEuRp&VS%L%@>Weyyg_0b(+}FyZh?U- zGM*G$5nkUOpPFb3?Sld)psV^>xV;n0$EHZ+!X-u@$gW!^El2obmOO<|5WH+iLXRBM zAw|a|4ry=@r2RodH^C9mw+(9AJp`~;0L4^Uub$*hL$^C=+QswY`dAeZ>P>IHrdu{> zib86*PH(~Xe?z+b-G|@LQ}Q&Um}}M82X1YLMMPnNC~H31e~{X|Z`CJje%RV%jv7iA z2HO!-(op~#Dp5E3(QDGw7?{bI>ozj3LkwkaDLgr?+E_jD?^R&`MZ3nj-QK9i%<&v>LF# zz-o6dkZS#_Z7yRiS(Q$n7vanuKXNLr_I{f1Y0Tfm?=nW$KTP(vHJ)IN}{FF+9++=$;?aziQOdK~i1Gg8WjtPdwP$?96W_>N! z#D0p;TbI{#r;7e$)zON@S8cSnVg0cUnTn!IG#cS51z|l2wTEaOHml8wq$m>Xb!br$ z%lky0G4YBe3F-6-m)uE~M1IcLEIJwS)C$XKv38xWH+yAEG&tePb8UKaW83lAKZzK? zDU7;c`tJ~XD8Q3o{-F<;MK-ygebvL;%y2~Z&iOQsn}#wOHEK1~NM5Z6`Vu$1N3Bd? zo8KUq3c@edWi1T&$f)+g)kjA6D5?AnmgFL0T*S{$BdUJs-Et@sq)!#d2@ss4X^zX) zn2IW~OVwZJRqjm8Qs%jaQLjH951R>N8hY`cOU;5~nilhC>&j2lNI29#Q(el(=;i_K=E^!Lv#3gakRvdZ>kmCG zKl{BMcvL(D#uTkoY)H)1)vY|b+Smb{_Ai6%8%~3VXE7bXz4`07)*iQ{v;*6tLO~}H zTM$3BcI16~dYmJ7)_&<2)8GK)8Mu>$)%Bxw@DoE~SkYEL)IaY9G#IXs3C4X5Viu`x zl}j6bi2*=mNCi!-2Yt%uy=aYgk6!nBTXcPjph#vL4q(*i>QlL^IqYzMO7bG3+ENzY z5kF!uT!+;jyV1CN+GMH1JuPFoIQl*LKP-NAwe%-}0`-xo1Hydag{ zaZ`{FWeyK99W0~0Y8KIqDw;$1ds5MyuYU4K$oy0aoK$)x*yU4w!$;ZSbkWImlU>+r zIeu%HsxDb#u5^+P2;?C={;~;rL4|Z(vV4X9Ns*=yMA=b!GWg<0s)KXng(X4mYmtKM ziRqq-ozEIigF88+o=z@3tGOdJfBOdML&Cr5qXc*&{i3-&#v4CMB~eh#7aKWEvk?rf z0^S!XOxKCsUg%yY+@~9KUBiN&0X1DzoR?B;jr+k}U~T`%?vucQZqZ{e%6%0I$K$2& z{@#IJl<%l=s?V4&&kfutENaIT6<*3b^fYZ8%V?iLW#=XX0B1zorgu{&7+6cZ2*&&R z_Q5`|6^c(s=omMngo!aI0mMpQJGfqp3p-hVRRVPJ-O6|hEk=%DY@a42pRynCj*;D7 zV9ex^_kq=vBY_b0enocSlTyb!SYMD_umLm_yd8GR2k6KL(c{@{2ll`i( zv7PlOY`UxF7vDy(=tGeHbE``gNOM!+RS0D@OW1f8xfgp0yva^E10C5pw-e;={}7kJ zu!aL=E@tBLEiJJvF11(4A0^SbkXKh$=Ma!!W%ag+8r>szc-AKhUFZ_tGLC<315hkg&*r<<@%J6YJ9cm{uK?tK zJ;3uxmMoY~&ov42RvqZ(aK@|__2D+S>R*pWg+J|;DWm~`=1)Fj>e zX>D7-ku3uvyV}z3OXe{VCv3hg-#v|7bhxRX@2sP{`qn!or6JQZrSU@tJ{YHfwVp#h zq-AkpH!=;{zz^}q7f5$@bgay8Y3}6IKI2rjfxBmFUPHWz8+@GKQD8s=>G1B>AkZqe z{>E}%LL(c@V;=ZgzRz~yW+{W4S|%GLwuC6Ow&3M5q`SlDWc3$ur)%3%%j_THpt~L{ zA$XihO|)eUMII@Ri6$DBKRQDcH*amnPJqck_i=T^k7Fh746M)ZmNQhW7EUqz-<@oP zeUy?sG;`yqH*P+cdB8?nN_ZN$8#m?HOBPK-6*-*>m9ka z03N%}rjw+jwIM5Hng-rx{yW!<@)2)ngj|}SqPeGaf-ST&W7_O#*-N)L=hmkZ{6xqG zVbl$xV=sS42gFUsJET319k-+jBm(FOz~1=Gt&Rdw_YNekSojx4bQ~%;$MIgvyWk)d zK09pUJaKX&(A&K}^-?|feQK!$4=3Hn{Xr-?w2NNSMatU0lYDp++7q*QxO%`U0f!=P z;{+OPnDTe8Fp3kyXA?V`qQMGG`^|XOE7SheG-6<`xA)DSOuiZjAbdI}V7L+{Ci?)H z=1)vQs>^l}OK$CM@i>f|{PxjS+1M9dPoyo7FYJz=P3i0tVn=m z*XVT}f3)ewMIx!1>WXmSz?MGt7^hZxSf)Ts;}#-f2dz`YRFI|&I<_YN9>oi4;2gd| zuU*yxf_1qeoGnD=hDh<14~nsUhKZ4Nils@?2t2%MEc`}cw59H(LF9gN(SZsyg(b^d zbAbvH*zzs2z%tpUy+S3&$f&&W8p|~98vW6(2{T96>6BuSH+1LoN37$kk314jhErFT zdr@S%$3L{O<(N~m*`rcs<5QRPN0rhPxWR*rF_ckPB^RSO;w8}|x4=*&-*==^ay6uh zr^$9Dy1R}^Ydwa04Z32>2>sQI76seHnwG)V;<$gNk&ho=AN_PSR^}Zr3~F9uR9tGv zdZ`Ow59Q+?cOP%j>VOo&afrAPS5}`RFOp2qLHTJq)DRRut-_ii{zqYZHrXr}^Ch>syL0(pg{sh7Vufg%AE- zUR93VkIue@XHWHD;nI#HPw$sd#%Gj5>x`S$E#AA^vw=e-76QoJ?Fz~h`bPQqw>e!T zu(X!rj(ty^r^E-W1ySmSfNlmN>#QxzZ!P+_l_&?gH$Tr(ACbzCeZ7kF0~f^+xPD6b z{Gno1Nlt?v!5I`*Cy$Q2MM`xP#V}x?0k3htiR7~E#mOmy07MK*WKOwLgavyp+Nqa5 z&5Fg0<>xx}KaDqrrSZ#T%v2iqoWhO_PE zshpA)W6C%B`I9@YG63&RDR^fa{jFe9Oq$7PjdNtA5X@5Ca^P0~b}P5U)PsY1(81pPV{z%Ls#tyu%)|3sTYWikO{-_ ztDl+{QWgD5#7gir$rH8SA?9qu+etw@AIcX?17Qo(cY>iz>vY0?l8w4oh%t35v;dOP zhX8UZj;bxKihTQ}X2}F<8F|A{i2=JcJogP$DT$8xL`DL6ZQ%Ll8q|AVU^O%20@*bc zmEsK@yD%I5LM`P<0zwt-7Om5K)g5@cUrf7l1fl`>m){|+v+DjzilO%JOd$-z@huZ* z`0f->^6XQ|KGJ;BV}?5^!%3VMcziqOHyO!OTw+%81sQHuwDnB(7BqTR>%27~K6GlY z?t}jdscd>a<2pN+L(NIsNp&_<2r5L&!}u5?@$GW@9slN+_tzwpgeWD{dWmIfLO2X2 z3Y-Od-x%NHO}2b4qp4aA%$C!jZ|)KF^{<~RIacG(X%!oh${c$Q3 z@U$+Sw9b?hD}j$1%@jz&nYwp1qaa+`u5tPWc5XDUwVp_g0SaJHbdmyAGCMy&>Ruo$ zh|r?cndV^5K?<6MABFtwhSVLsNZS%1lgy@Sojsb|hR?vb>)KJ#m%`Tp+3HzN6cEhL-ZT?!3e!?eN^Qo%Jt03Wtp$Fsf zBZ9}=8)503@jv+?MOqM!RPzKL+#eF!S5ckG?kX7|{NfU36ME0?ybkmkwz((Ry#tDIOT{7!YxmFNB&fKfO)ne&`d#YCrR zE%s9K$%E3-*nKzWS~*t&U$6^X@7M}6PYWaNQ;Ib865F~f3r^lIV;(a}`a*p{?tl`S zphBL{FNI*_24V&puda`Y-%vGTBlA2R>hB4W(<;LI=0J^Ol#d9Fdo~dfz z%E9xytB4sD3dmdp6o+*H5&n6ZAbvMeHS<_Nqs|kfk}NPS=RJT-5IZthGQ@)hLMc-D zYpp(;<#xN9E*M9iQZD;AVD7>TjN#Rfuc@YYUqiwoH38=7y&B`u3 z*6_BC&0pL8-Qt9ov|=#0^)KJvV9a3#Lkz|sUK9>OOwLIoV4i;2G_RghPX-+lOkYt1 zk`vl-yd36pXDA*0C;uZ4 zm3>R5cOGhr$mS#tKXDlGsghG9X=Erwy9!McO+Q7%`4g-zq6yE0M6^NrYK>K#AC8r3 z>bZU3>n~^3#sF;B(A?-r z>x~vtUyRwJGPJ0VZklk7$CG>JF5nHX8D1*YeR2-bDc%p|lO(n2^VOy%NDvNlqzOR#img@R z2N#a{#PSn5u(Fh=Z)ia;%*zO!rSKV_{TrvtskQ<*`h7-bp{{-C$1J+bWtsH@oSQ5# zN8{Pq+24ctwEeaTqDuz9#`c{yvh(*e*VL-Yo9_@V`uU_5R1_`x=aL(wBg`T%6VDta zFQr~?Ptl80?5RB)$=fA^$af2^N~t=wn=FoNZ$PN*`M4$y;K^OfClw_xFC6=TVD-R% z4;J|{3>)yJlI3;ilEN9f&nQ?3_Z1}S+fdeqeu65eM5iXtfcJY}+k-Kl&FgXlQJYXO z_yvBrIFGv@b+{~8Q<4YgS<5JdLBdJf>hTof&?r4Kb_JXbRIUDTXee#*U^I_XVn-pn zc2^m{fwiXtx-&bRLr;{xI`;uPTstkKq~8izxasT>n5lVy{v?ZoW6PRtc6A>&qPK6^ z&mM@TG}T&kB2tj@s5Dpck#sX@ogZ+1Hv-6n`TK^p(ANR%)S$;ET}AnJ?ej}_czuSM zkz@LyI2pY^a46h_ESLxq4qEB?TCDgp5QPxtJz(;*m1p)y!+q#VT`JO0uEnC$66SFv zv8t4Zc-h$lK35v>`jFvwE1${-gtJzmJos@Cv7v&{By@w4Q3>=2U`FA*Mi0*HgR#GB zc?CxzU`^;Mj;HY#Q^p|TTwF{Z@15X#PBhY5_{=k^7~H_P%N3z--(Sc>4+T}#*yaUI zqe`spB2^t;GJN=|o+aK1cXoggc;q$l=p{%LMUlnh7Y3)QsOBgWeZTiu%%=>bJwWCV zf(SNA!B^t!U+2q}@#*EhU3;f}?b2Cn3NgVdcMa~46IU_0(PPigENtp> z=cjwbAI@-xd^_?{n`Ss=A-jM6QQ$Be6b9`+0YU6%{DI8$a2BnnlEb+BdPVE{huK{Q zFh(iKv4%9KctQ;}&lkfiNCh2!@+eIlJMIdNsGI;d{B4YtN!jwodzJ-IWNAoFXH)(w9>bZZP~iKGkU;*df1lABdQKiY(- zvw^76KlW67n8YG2_#9r{68}q8gk$j3jXhA$pJ=6hCc>-Ux@+3s>DP&1gI)k2@`Z|4 z;iij~ZnEk;ie|qvzQgW9(elCooPAQvU}Hp^7^a3 z(b*fV_+bc6ipc|h1c{;Il0-K%G; zaB^9HnS3$Z0Iz(Gl zkxsmlF)1k#h9Uqn$q~LxU7hy#z$mePQ5Y>DdiP}bJ!z~$8KilizJWQb(PpTeR;nVD zBL*Lte)W=~!K}^NkWhTUH7vD8Ed)U!_5#LO?%w2H7QH(y*Cj6o+n@(zRHK{hP zBP;YEy@t_l6Gq6+TKCH=4K)k{d()OL*zx$wMI$F}ZRvaBmjb$aI z<9XQf;xV#~xkAH%XMB0S9XaY{+`PKE8DS@Z8P$pTRK0->D6s8R4zb~BeX*HCsVc6! z7!++{R>vtko;}CwOmdf|z&j86OCnk5pB(-Ll{vEZOA@Hru4i#E;v^4t&Gd3CEhhL2 ztk75@=?3_GzuZv@V^Se)4<_3EkldJoC5Wn!GE6;XaZ4bl70yt?YOxs;=2;3o1kL>C zVxp!>YnUL)BJv?Q)d&gYV*~t{mvqd?yb)%G7OC#Ly*3Xnt)zwHlQp3}(-mngI8!Aw zkBvxI;=Hx@BxV?tQ&-1Q$sElIY?|jxr_?fz@%E3_x|lU94VumC@4qJJJQ_)VUH>wx zTF);J3n~BklKs$^oA1Q+hajb)2m*-;QvAvLRF@QbfT?-=0$Zo(r}fNbx=@|LKSG}J zAy)A7b;Q=QeO0ksy}xbv5D#`_20W7jv>aKYwDu6s)HMNs6## z5SNDRu<$lOIH$h6lC`3K(M_)$?xoh_jHo3?VW8EYexADERBF_Q^b2gMyEXm$@})i{lg$iMNrhZVjE; zXHo6bm(e^kWt$~kmM7S>rrECvI?3F2)hw@}42xv&N*4|*n%7^>AdpalHV3-QDU7sJ z2IBH05uHKAU@l&CWbNY$JR41Vk^x^PQQwzt6CcW3CLbS`2%LMtZ=4@$?%D-Q?{##J zDG$7Q4G^cbSwGwVc!k$CRI$LSZG)oXz6?^q?uHQ*UrVm5ispD_j(X4=sy8yCJ(GVw zB-!5ZZT|#jMpILS@{!t|DY=Dr=$(M!I5L<2&8{oFp7pS z#E=t*RA~t23nBfDmm-mGMq$?-?%x>_;aXY7R~6n_Bq7G0t}3fD@H}$?D!)=n9gghr z_&*~100ZV}m<@;npv}(r=ekL`vdp7E%G$k8U?c7KylcOG6dlG5B`YXMQ8B8<3^7=33vjEdsEkB+>NdTxAr zbzO?R-rX`9n5To~PbT^|8`NzIg1asaQ3>^evLabSgD_Qn+Ul5n&REy%tC@h)hQM+A z@MM|UnH#mir*NW|Cvd8`yR-Cd$MsI%_2C>=i%d^@%ZjUo$!X+_Y6uJe63kqUSx!n+ z;BSfo7u08st2eFpX!BcOOal3t+odUTLyykj-FiJflZ$X)T=_EPQw?Rq4c&DlFk@lM$7Hz3l^DGsul6m`(5 zQXWs?R8sel3a3G_w>+_<+7*?NoEDt4db4$dzlO%{9Ay!=Mh%9Q<{IAG@U_G91E%BY zI_wHorc$=x@T|?j>DabC(z`DB84g0^1+K?PiL%vImHse|wi?TwEg7cN!GH$(+kO1QzZ#Ycoc8pd zT2mOK>5!ARw=$lQ-YxmI%*bAAXgJCy?BM?H#mkM94)d3ey*<`2|A5o`3{i@2M3fy&8DE$0OL9$N4^qw&cf2pp0_Ni_=nS$ z1_@6-xz^mU)zjJ%R9OF777XsNs9q=UO-!BHiSQv0R|vuMh< z)UK`J#S%CCvtVCRZS z5?f2&5SyT&o_51Q3M?X0OxiUb;OQmGQM7@AKrhejh>Oy`CDvg+F2NhH{c77#IU1zx zx=`_Rd`_X8y~m9hb?ON`m@Uq#RHjC(r5O&$Lu0I&ko?7+TjkAVpp3K4R1tMk9L`4{ zR_qATMxb_&A=gNL?Clji9XM&v&D}=7Wv22HmHZ6P7jwpw9T2nOjL%ZtY_NG23+y`y|lOOj0-;UlUlYMW|~2iK{~5PBq`nbOwaC zLS1OUUIN1TWHy6r#5xk>DIhG>G2Xr?y-0STcoy$uAU4`%MPWYUaGxhRz?zbjzQS^j zwH;SX%XBY4_e8R+se)67$(o)r-m%1^#wEGdZxB%@U8Q=dn`||~0neoXn36|cvy5tK zn9+)r3lW0nogSQI}C8cWZ+>`%%(mDsG zEgx~M9^=P*Ykos4G+rz!@-2Lsqx8(D+31vo5g+$;)0c}wJ#ZO4zneej$CZ#PPA~>C z@iiIO-0S2IHNldek(>&Hd>?;9Iiq@ipd6)*6zS35`r~Y1i1i1GOVsWXg|1bc(dI4Q20eS93I)+;sS+E+@cp=}H(VexwJw$4%rG0l3&IT0Y_%~8@ zeN%xz?cyov)pJH%C!Y9KX(u}hzFpCLew|$sc)L?n_T%(HmiDv@sZ@zda&HY|Mya9# zmqCx$<9>t`MW$mSzEqH_>(QTzB0nz8KtAyWnB6}wlG%Ftjv@%b{Y_i`fHe2+_M@OG zI$~_u@N-CCEZU5+(hZ`|&*L&@{t3;7z4MuCAEG^pzU8Znqu=Ny8Tw!N#<{E!P{-DpV)u>hnXS;IhY^6V7D;40T zGi9)cGnKIr<#hOlv8!9~9lHRtx&7nm7vyn4JyWiAi^RNbCO2+onUkr%twkyS(=4^X z$Rqsdq#HS|^d%yLCzbb=KAd-UsXmKDiv)V32)6)MYV$SGe^^(Y8!%iAlWBd-dp|_* zer~Fl$Kx9!&f%9wXq4J`sYjc9O_(qBT%65IF0ZeSzW}!kRRvKC)xsfJdhIsTZ4Z|b zvn3k|jiEKq`gHZ&ModHkg1cDtd417L891d6M%5Sk*5wbz3wfN#s1^R`Auk4d1*4!# zQL`S;@m#rYiwFiefeC*KS9J2r8;5FSYP5+7_ux-IN!vf}BL!42o^2C(o4bYayO-qazTC|3w za9h{=USK3FfUYFBIFR=&iWxp|2D8v*V|VW_tkPaL8&stmq~_uIb1Lhl<~q=c#~o=x ze-NUIWGHbKxa~aLIpD6GTGfcH8)IQ_m0m5wI4w08(^ki!qFLXHc|7_7esY5hP?7>_ zyJl=UMfFJuc676zah&z*H~^h0s9eR{dD3VY=^lk($e2-HSu!|(#1bePK(R!<>fd6C zenp#qsOv`Y&7K5QPZ4T|tS~XUB_13ZDDgnGk3{yOSs(Av5dNSI9lC0oy1g%|bv2&KxHzB9j(F4WbkAPk zc^9eD;Q%2!)Uz**y(I-jl~_owSGeZ9++;s6YwVlx9J*+g=! z&>6C2Z|?rS%GTlb27RSf#*)?hDdqH7XWIN~btux<_CM*-e4CMAj*H|Ekv8+5-yecK z%gl?=4KVsH;~pGrC?J}|cGrE17_oaD!PJ6Y2DBce9Mz#D=*SuOF<59BTrR&x^+gFs z%*6w&uKQExCf3jina!iik9YQ`zvut07-;_i((biHd>cTLSKr>vo=EVoBmfnRxuBl& z@%C3;F)W$?fAj@FX@&zZ7uy`C=I1{S0>5});LaxQ~%pn|NAohkstkk^x;_36bxKE%zC{ocv)zQjQpk2`fCPoP6d0v z;rWPD(O&d#OPcBReI4?89U|V1X8dPC0O?~Svbpi`wsGY3e&EF{SL;Sb)%EexCH--4 z_0fpH`yB!QpSfi72|WGtK2r9&Q%399)A-jb=RvT= zzyL|1_bt44-5qEc{gq*nu!)b8g{oWNgP+{4biJ+ILU>(5+_HGxu-pROq^bR!0W0$F zVt|tnq+J_}=fGuf@A6WH>%(h@#Z#Z+PeX?yVVZ#U(!um3DiAbo^+fs!?0Sy+Pq5o98P5#UAAqj%eH-b?X}jozvuby|8sNZ)tGNa zL`FpB$PsUh5hgDy1_zA=4Fm)PCm}AZ2m}Pe00abF0SWO3*=nhB00P1ww-6GNmk<&n zkaqx>T3DL^0jUQixkIt5Y%hQDK5dL1q#tRRGES4+aZd|TEpyMah{VOhCK-zp1__6Y zDhUQB8js0`qX?EM2TQvnlwVzad4FBq@m~34cU~P;cP??}bUv+l<~Y*>;ZzpJ#sZ>27cV0i)#dYjVbWnujJA6;VFpkI#M24@pEv((3v&>-+-b-Ce^v ze*>x)uFViD^(64W0{&_0ia;0w{PRR)|2@utP|FRtH_|we07(5E?QyF&Q)|WMn-t(| zMe~e69UX`pHB9&s;-|+rA0V)uZ8wAy?4$tU_8Lx585yx-c{5}m7|0Vlzk!Q^!3}1b zSbgAv@7?W-k9YI)l_aj?Yd5RT8oi?$U@i_sdHThU`{fA*3;A^ysUu!=ONgxrh{8;3 zX8h7mpp_2#9ZbOH2m>}x{2W#@{Oc19?*@vk@vVyQ2(LU~0#hGi#LzR=N#=Xx1Zg9jpT-*vah+U6|kj0{QfYR=$QNTx?IX>gqNH9!dH`3|P>QwCF{aLTU-zlP=BNr|sW8R_l=XMh}d`no@_3`C9#+Lg;chuE~7((Rw z*e-Assx(Lw9; z#WA$)VEMx`Xq#r^^LF{A;sHR<`Sn8#Z=__jn`OuNnQjA^&p)RR&JON(P{wb~78swF zpfAzBeHW5<_w)x=Hs67mD}3A&=o5{Thp$JcIRM1|#RG&vc1Zs()<9W1ag^2Nb@E6x z7>+m|_bC4jQrEjN$#DwcTIa4S9DKgY=4qSI)+2mOD30zV6JP@KFJc(cDZepml1ln_ zVr0QbvJ7Y-*UHWQQA94rd({A7F#dpZSk@l6XFo_rGL2lwg`Z?IphG<%DJYYj;eM2vj6+lp8UFT8h&Kw9BttX?K$?UMDj|S!aAUZU zn9CBnA#l(zt*%d<)EK~N@KGyPTT%qg+&%?tjMvkP%MCTFNdVMY;Bu~boA-c4Rup-?GNenIJ8 zURt3N@fflX%-Nr|H^weAR;rYw5qayokG!JdWxjG=WBz?nWWhvHhsaCdE$#s{Do+wd z5_}Sj3i~2vxs~#ya!skv_b_3?e6raz3{h?&8uDLA!=Zd-n5Cp;QKdYkF$zZtYD!N^ zzIl1Mh=sHH9Q?>K2||u3#UZBA$^NRLsv*h3*iso{T4G$%?c&4yk0I=^`ndH?XH{s04==$X##|2-AkBi}bO#V{CZf?~>ScyAppvkdz>?Gy z?i}l!6qOJ!$P#sgIk6h-#yK($qm%a(S6H=xYq?y`BZLwOx2c(;^8{HSp7v`%2DCTEckAfexAEE%XfQbNp z@0~xc|F~eEAiN-XkY%80phi$sU_lUd;CASD5oTfdFqAOZP(zU zq0^K`f2W^LVfR*;9+*aHZfPEASM`SVm-X)Tpbo+u-mOLsO%B`pg9khZ^rPL%`tl4) z>}50gwRxq5;;NO(nJP%~4k}}6SgNMVzm$24-i5&n@~a%Aiv&zWR1{dGAEHmySfE&Z zo6anmJOiKHE-6=;^17t53VlSpz38uWmpfCQqOGniVwuC4x2$fhJj|0VWv#+2Uo19f zUh`?IWR|*WIx7pxkqhQ4Va~9Qi%(t7X3thnbQZAZw~MZ-^z!%sx%zekxvSre%nefw z*sTXl_HC7InE{o?I7S<$f+mJW4zv56WvP^_ja#rLrq;<8k3-rs+#?-BAnF(z#+s3u z&{}x)Uiv{z^^Ic&q@gE;}x?kIavBj|Y$A@NMu% zI77HaI7T=*9CchToQs@$nHO17S?EtE7vo!O2l>C__Zb`Y+`e``z?W!b(nT6b~1IE zc{6)CcpZ8LE-!%svd699CADM1edmAy}?Fi$+?M{Ef`DWTZ%2{3Yo$ZY_;0D>>np&)A3Zkww~k zYYE%5Th@uJnsm1lnkVb=xqPsw=qg8>*PIuz;w zicth{IA7vQij%fVm!|HRZn|olJ?-(DTbi?mR;!}>i}Tdk32JHhb@(ba9h(Q>bgQx| zv9v>RP&>&5W&^tW;pW%bMIINKtL7!uc2x(t8~qn=|Hp!5DQCGy*HDRR$5Pp^nyHrR zBHgObPtehC%UI7?w|I;^(f|@>GFDqw5jI-Z5awx~TOa0GhuQ<@3Zpar3>7Wcc8Rxy z;nx@~u13!E>{31pxANDPv;wvI~`ys;l++<&~P* zuj8Q0h+$As&}oRtZ*Rfp!MgD6urb~DZX9=1zZaY1LgSj2?Ewq`MKKF8$07FN@U8H! zDl9b|-)Gq;on_CAryBANa$cEW*=jjb9|E6|w8J#IoVYBD)Ww{OkCv;wg_2k~D@Tc( z6W$|V#21IFio@k<_u-c^z&;>jTkb>u&E7`9C(mTo!QPtE&ccS{fqZ?s9`zt8S|w!h zq-n%?!{ajeSoDKFK@Y$R%El%nZanu`0Tij6n1T+pT?5ST1o9JjbPsZY>t*>0L`cix z8_;7c$vxB}1bMCvL%O;F4p(-Pe@L#Zh3tVGx0H?;lNhY|aAL4>5$E2$cw-YCmagpxcYK<*v|~Z}`TVvgDK7tJcQrmp z@fk}gO}+KeIVF4qTZ8RN`BBBYUB*@HvU;*}=FO~P-0IW{f3azajn8ey?#n>M$X&_a zvA5tnd10x*#^-`H29-;lOEo)^@8ZPky|U?S_AdCcJbPnnhBwQ{@GAn{9aJ{}S|~Md zXQw^|v4&Z!mKayui?SmPZxTZZJHyS>L)+$kzP;~h3He%hv2b&LOnE6}6Femq&ZqSkE7{Lmcg92?^V<18a}L#%qj>SbMw zy`saY{ncLBUT5EO;~C3WK0(pO<+#HR5)isI=_V?_yG4j$JXsrSvf!_aOke%hTzPQ#HySLT zm^&80{(LQLWT7PFxL0sSYo=wiMzp?%SK^AoP3hxNb~n**O_yTFW{JN>7ifj z_P8RpEr;jGn*-V%=mnRC@FMz&cSCGR=rHR#s-I^1aw*rDGp(Ab##{4Ptz;8vUDM5O z9w42YLLr9%Q&KQE%adweiQJn!3@>J$WY5HXXp6HdcS<1?r?N(a%X%kX)1^0JE1tz9P%ORC*>TeCIuRmZA*q6 z2NE>uT-Hjtc*9BGo!EO089eAen+DDsF$)&LF1- zsCKqA`H1aT-*q}Zy;)*dWu4xhg~!U^ER zK3zLTyI5WJ>;jwzo%fvd()Y8{pNT%}n#D+V7Wtraq_HADtiHd^g)c6>UcJLNtJH=A z856k|e^?Ywfy62V?580B=@SC!OMvyLg6GPrf+Px%{(P5v@8lyOxfvklAZPjwoX?Lp z$}Ho@6wiSVK`Ack4$AEBa}8W6bRSDm7`7jhH)BD9ZyiD=|2-U`DC(9!OSrznXMt)0 zA)|NJ4wE}_s6b`b@7VC38kT1WY;;7k?z<{7c8E={f!$C`LraPquNP2PG>F&^zk+C; zBm=QFA&pYHQnEr`*+!{mnEwFEF1n@GDFn&mHc6Zf>E`sD+~eQ%UVRMMo>MAjs}ipa9Z3g=4;HNg6M z-fR^|K1)GoA+$z$={zVp!Ar3uP6Ng;8 z{ACKSzVCIZ6;#>!MM=odlBi{CK7N= zAzgV8WiTH9t%4Z}gG9>k$hJ^R5$_-l1LS84ZE(5#)!C(EW+yI)zEY!TeLVf8I;<72 zb0r+wDJWOeC)}E#=>gwd`GS$cRN`Y|t1j6Sad(8#z)@vTVbom{OUcvzg?VOK=FP^} z#z`m7lk{WfV=hc<4AHm=rzFZOjmQ_waY9woB}-Q7UkK+4IKt6LvNBT=)v&fkc$V1; zTkT$EE-$xMFtyNLNM009sw+~$TFUZ~x;Wj~#C|D-$@wY83BBW$BU2-As66i8CZM4G0itz7YSNt2N0S^h_cR}IT(skd z9X7vol0QsB$c6z^&~Lli+4#SCF%H-EhORCT;x62`E7m>d%qC-2_2_z78HkPz?HotM z7^O;m)P%Dyn=~4S%`V(e`pCVJRb8omt^AJnb&qPXP&74eAdQE>VaN^J}@}#xzbT-;q9(#N( zh~1R?*5U`Y0#o@DJrtPZH`*}>J|VO?4r9QGJlz7UxA2bwCk2C2#RW*|Z`i$Ic1#_9 zszPD~e;6VLtu&P>26Z@3H16QVAnMM|v;I3!5VQy|u*fwrtm3I6Z?0mVhj1f_Pi}O{ zPJuBnYxbgrSVyPS~(o{q6UvA)~|1( zo^BGZmEV~y$##fe=j&SO_3pbxC(*sQK6u_kE@KXY&LR#YYErzClaq;)&3xP5&oyQ> z%G61#gDW3vC@T-Dy|vgh={5D%Yd2e7U_K9?&xXhvEt=iEtv-Z0_l=ut5JDxffhJZC z4-p7~?2dp|Mpibosn<3(C`99<*npV7oxe9XcrVX@#D2NJIETXxeZ27{e}SM$O_1#2 z4if%(e~@LNtnQ>PBh6_9u%R*AOvtQAz-0nreh%Dg(e^%;C3)JqmhG! zos$K?mf$bD28IAIsI+5WfY{~Gy6lbimp0RC4% ze`o7I=$~})LUYsqPwIK0mpx<}fPnacB!mT&-GI+K5!6*wy1u?#s>g05;BuH_OuT!$ zR(mTz*Q9qMjZ#s?NYC)Ld z+kuy}{uWQ|xhB32*db?>n)t7*6G&xG9MTc>*ox z{A-ATqz8I}!I~K@?O#Nk{0}021+4A+$Fcu-(jN;%&Cp*vt8V-+LY(ynA@2NU_mTFG ztFS_UribkpHH!NeiTr;K{r{IC22MpFZoHWEBvP!|M;(+zc%Ebb;khm z3!Uh3(?LyTwupb_n=PXx>y$VUOvm$8q)J!D&2I(^Kr&5kA8-y1ysk(?M}4#i%|eT? zkU%xCLkXjlDId~hlo9SMmU=a@X=7OCT0CJ4x~BYR&-?8N5D-B}>Zus@dFDJ#x~fn8 zhW#n0x}BzH6a3zXRDg;}CWg5#_xz#04_Wm7jPyJe+)=Jg@UONHa%cyLBdfIWJ@&9h zq8$NF#k>NFCDtKLIaNg8KX*iK4H!{P&%FvrG#>?+D*YHRJv8+$&mjU&6B4xuj~7 zaps11ugKWSS~=EiJg}p*G_0Zcl>F45OYh=oo;9Uh+!R{CNcwy-VHE+4jC)v~@W~JE zjY;1a@ood zr<@t%sJnTea&&5(LZ&N~#>Y2t`OM!)j;+@#_Q|YXFmJq;Z!m)-jl`}6*G?t9>%od; zrkgfA;tWBX6u@m!_Mh-fACe6Xp z=G3x>OLHYT2*Fda<$fLr?EhJ>qDGCB3D&9zepZ|BkNvvHwpXNsU=){)YCV(}jn zJFAiracwe`)3T2TR%1f<4T*hi46mtim^uGB(NcRjMEQ^DLR&x*6!9R6le1A%qeV$M z^m`Z+iTS>?eS`cZZRn;i?Pu-|;;dj35B)ae{7$S@9VSf%kEm(MNGlqOM8nuZp6qn7 zN=?8I*M&GKt-4WCVMR)bJ?~_o6}r=8DA@9IM7AL%QMYUrgGSlWm5 zzB_6XR|-*Hh`6(?#qDOK5Af-A8UE)K^m9!AIio`a09DfQ3t#hCSXz3#&gr9)lousd zU^pt*iMa6Kci_cZ=M<>o|KgfmQV&4kfjv{O+Il^&7Sw(vBW5mWfw##b$`U-G5|E5L zTq-CXtI~7g^UxW=Mi*@6F$_g7y5y@ zw{(#mOeYX8W#Oa6eWG`MC0kBlrD|*P?guF*!Ez{|( z;FR|FRXdgTPd~HC_B#P=VnrxL)`!b9$a=!G(}Sj|#d+Bz zS01OPk26Jf>{81JTG6hlp1{ys!_En`HF10Xvxizm_3cdcAxfV~*-zzlHNwU?$&uRE zC+1QdWon*9HRw>PmXCzvceFE%1CPnkGH?gGEHF0L**!KND8xepeuN}wNB%0tQIEpd z9f){E^0pmFnon(#prhlD_Z>nZPmi>vj&cI!36mWI zUL7)z?t&9)U@RUb;OTKX_uaIXun^@{fvZ~Mz*OXVC_^E}c#wI;iNuEU$RI5t%;OS2 zcjf#rbrPmqS|Dm{Y#jN5*NTPTr4FC|`-%P=hwS@{j(Fq#oOXstzr9>PDI90EhjfG% z8cGEVA(RCa(Fjbl)H%O>K~oZM%~dh3gv`T=@{+eaN?p`V3`GC$Jx%6%OH|{qk#r`h z)K>GjOWK$h@Mxd|5x4nVttzqgnBZ3rVJ+H5(9uNXi(=qWOLnYUkHr7iasPD*gF9nV zg0(%tq+%tsrG?&%X2^;Y4<#Gq@N*Z#{XR<>e-yF&n;$}2L_sGok&92nwsRk$a-*WE znn*~<=H!?cOW|QBW$>E8UVoQ5evUc(11YiQ8l?9FK7jUE&ZIWQdB!Mr3G&|?>VlSK z%*nXlRbNhx)7>e9G}lr>*b(Zz3S$xJWGtVDVVr4G{5g}xti8jiMNZrg`Wp+(e@cnJ zI_0@bK*&dVjjpYh2Gj*ET(y;vz9fIfCyCykTGK3yeV6iEC>}z}vGm$B&sk1oDI+wNzG6>wHMGs9UI5Qqcxkyn2M5p_#*fcR#(orm9;C9XB)dj(OySPl1 zT3{knT0e?Pm~hoOXZ{V*YGm#Fv-ifW4yH6FpRKE0=?n_Hi$8In`MTDeBIms3Rf z9NW{63*2@K%zte1TBc-bg_Zj&=jK7~9d6SnD4PxCEmil>IU(#&RLQA~6>mz2gvJ5q z`F7ZPqg0D3RiHx&EVpVZV3#B1ML>rlMrD>uZs4~|zXJ3Qelo2QqSkyIrh=Acj0~mg zmvApjp;rCM!^@^>>biLeJH5sG!`h6R8l`C4RB3s5m+_3tWEZMS4-S`!AS695~%s<;C z^31uMlUZ?9l3QV4Ni;MK{izxjgS}*4A5NqSc_Le!%-2hr2o}&e^yNrh+*RgW#9tG1 z;%EsGEjUEvHOC%G31nu_hmXe1{w4toAds0V(2>g>{h_8{Z5(o-w{sP6fSffX(2zVQ zWuvNw(a?gNmh$jO0j|~+Gv@LTiENWF+tFDapQwOLrv3baX(jLjMS+QM8_Ia|&- zM)h8z#92jUmXBrUObo4Z#1c*>1US4sMXsBkv=qE!%(}C{OeEuojrU@miPfiWTT8lG z@rfHsi*h|~%q>x?AoV!$9M(tIQE|pT5lBqiO&;b-ZKS4~chl%CWPAKj;tLk*Y*QM>^L-Hj-!nk6%0 zyNR-rT59KSE|5)S`MwcZEn_G9Ve)ktbd!pH@Vk(dC}lCIQloiC$?w@ zW5wr^4DH~s5|cXoGj#1&vqkAU0mSm>#$b-|wKt6DK?Sx@!ujd2=Y-0><3EKjFj(Lv z(hDEy_o<$<=DooV>JlN!XatOrCO=htyLQ|?DLB&N*?YuB+nY#Wt@AjAEI>~XQfUvx zJrtMb?KLH8aqq7x*=++OXtv?SsrC=t{9l}W2PNc~7Oy4S(9+XfnG2k6E-+>FZV(@nhzsOwZP>t5bm)Arz{08e6Gvo!$8~T5CJ_(4RU)Tsze9)(4 zZ5_LQ5g}P3aRzDz;_y3qJlpuqQ2;O>R++v=YhWDuhihLJ4=Je+G2^pUw4LN77o5pmk zg@;%?ez3JRKJEdqjt!A*!^F=|cGh-C#IHhWWJleXs5uIehtWhz_>3Y4O8?{>5lj?{ z*7W`P#!SbAr;3g-UIk8sW>$4z#n21Cg4klywmDHF5FEa*FF8NSrOJ(&3kzmdW~H)? zR@AtH%7wMn+)9ZVim=PfEGiG7Do7z&T5K`m7bIboaUmA6;!9}dexBnQU{ml2M;8{s z`@Fhr6uf3oGLYL?4n^kUC$A~`F9&p84xEU;*+DS6pHhkJPNj-|FuG)N@;}V@4<(}d zdjaO;p(YOgE>ZqNfBC=bg9pC>|Gi3oaE5cpKRo+9Jrew1=G_CP?zhAH51;;X!^3j@ zMVH&jjQswk%M8G(`Yj0mHQFEj7wN7ZRoDMJLw`L%Q86w-|7{th_S6#pA?meOjA*I< zeWYqQ2|G8m3JHcsD- zqk89%k%jA>xPEzV9@53z@VahGtxBU-tXV<@^AlC0zl z^^}IU6yS>?hSWAral_>E?q-?e*Z%c+^)*!0ycO>IlH%Jt?eoa=e#iI4Bp!z8Hk2up z1J&5nB+xkg4d3hM*qCI;=j&PRs`cjW4(nO)ex#?}de#luaSD*PMYEP|C%6iEVBco*MaS@!E%ZDhAR-))@m4E*XMBV^nIM*{z92jXe!8_OS=Go zaHY=Z8(ru9TwI@>`oi6n?-y5f`z5E>^G--A7J}cK-M$DgJ0R{RU`NH4WNsn0jt(Us_N(h|TBmGlR+xM|gT4jh8OrV*!b z{QgQFpz{H(x@8xdgR9@hs2=`Bjf^7YaxA&%6Kb13b% zy&|`xi*!T|WaJ;IyDU==7y7|fR39a3I zzebqi2gB_Om5I-TcyU>CBjfqa=eZw0yB!ryv0=VM&ZuX-bTEFPF9;^Ucv{zt7}!8t zM^A6s#)Xwt7Ba2nLJ){kDnO)taq+4zDGbW2ERbf&j*Q{z)J^%T%!6GmZ@V5r-EXzQ zEM~)I0RY9m6N~hnt3Mi#XUvARaDi9}qglt89p0JFvK=>}Ju0}(n(k_YoPp`m;r(UW zm-mSpt1uW;RexYfdy5J;@Lc26`DPGZN{iICp`p>w12JN~8lBzDKGvMAZZEW1GG{P~ zIZ~uSHX|G}We|Q3>t6337*K%6Vu^CB#V$Z{om-X%rK|2A7?-l_kCCp}^!OczTft5b zV12mH2k=E9P@DD^@ntZGXr zdCkhzye`G+Hyrdz##Z@Dcm-nSrsI-qVLrIMurM&&! zaYOgQg^J)Oy&TR~jF1jGp?&m~ zn6lw-<;_q~dxwU;^oilvTyaS=LUO01I{L8{B*69+9<)$d zlBxp`8L$3eG@7(y5n>MYsO!yu6r!R;*8DNTrPfV5&idcZi3HSTe9)ojqy<9;sL&FZ znW3XqjxcMcM|Pek57m>HL8KYSR0R;>^VOaqylrQ3d!>Tq4UqX9I*F`w^HD>xr+c7R zU3uedgOF=3#n;)gAxfJ<+j=~U4h-*|c4U!4ho6dV=(rzU=mFFWI&OREt!~HqcCF~V zhr$|DD!rg$rB`MLa!q5o*65Uqv@~OFT~>d9>_QB=bnxuh+oc ze3$W(Zs(j=zQ!1(3oC}^ygJsJFt8h5=jn9Z9{gL~P~1trvb&-n?+QD(up)}Y2cvA1t2JdwlF%Df z#ScgeI^u2t@$17$Q>=-_K#OVa=C|RyJf&0>qAC?)V{=dVFgUn2=4YXqbEt~Jj!m8S z;R*h#M2YA-W0H+7iu6LC9-AwT-pG-MjgVEO5VzkMZ#2FeurKmdzFC>4X&RPx7)y00 zrEC>OA#J~BetFi3m@Z?jXCb*-fU9E=g3_ zbVk4B@qZ9>msqD*&p(g(lC_x)wZT^Mb6xs92}*99CbsPkuI1{p*?lWv(i*hpvK{9` zq4z;^qbG1BU#WKzapEQM8G^)Npcw*dYO6N*gRssC9 zB0QFVzNSEwl%OWxFS*d4qX|bLaF9rHCWiNmY;3stU~i=2r_?g-{<q%`vMXc_(i8K9wvD3rYcMB^gjC0IxA-x zepv~gGLCd)#{I;Z%Uozmqo8pZwJKy06&Vj$xAgMgwH3FkxZsU}28F>Xb4M2SFtQ>l zywRc%2AQyhou^W_^2!P^FqWiRV%BXFq)c?EO;!2dMCZR$7t|67R36I|>`;_n))EADnn*Q$v4gqjHBk*RXS9M*x$AUV#z3MzWN+`pZ zH-8d^ocK_e<{s$M+Qh!e1hzz)!8Kv>fS#IYompVX?@Tadi-3Q03^#7PBcRL10-oB; z7G9L>lpbsLP2SYH9*Tqj-I1`GRH2>v9C+`WT+ioPJm9$9HbYWRG$jly9d7Hq7?j;S z{%ZIyO^A=}bKdeHM!6q=B)99hlsY3bQXks+Pb~Ti>!DfDtKYp=!nzIDXGnUwQ3un% zT}iL>hkwzkOBzT4yusQL@cZ+c7p(}_r97k4z^sO&vC@YlKNaP zKV1qKNpv*a(aH?(+nCTJv|l2ncpZcvIKDOQf zq8IB7-=X+%-?O89mZUrMN8GP{ha#nj%~kE{&zt&v?IKe^mSQ?CeGSuChDqe%EeZ?H zjiiN4mST1WO-+InwkNIJbaSHyy@Uc*#9|}mOOd3Bd!Ar8#6eP3qr9w#mqN_`xnNNT zyBaN95w{x$ZTiLyrlf^Q*4)OD!GeU$OrG-LS$zq`fv3fkgoP@jaoT7-9ZS)wB_?JP zW0gkm^FC}*^ev4X8Rnjp3Hv0K1>*sA63c<4OULWCD=IBvT&+awI5zvr$_fR^ruv36 z;nrTAW7ab(Pm7x%oSTJg60z#ooN6g-?~Cu!Se=&vOS<(l@I}fa#OsYhqbVJ2Pa+Ml zlSK<=U|-Ruqq~MR4Lwb z1L3bOq6WA!@~UI+iVjj?Izjz0^`#7r!@ z)^t}{80)r11rs;|tsy9np-utkUZk?AU)5c>;Ew;8=_;vNZRya-WlDSD`#~ed${ls0*X-$GU zbaSoUHp{F>RQF7~x-!P@5FB}ZL&k_MI5ZADwG zj0TfkDd}Z&F@37)4aSkj9yGP%L}dU8Cpk9Oh0kzfS7sG2Jn!$0V-46%^_N>T939Of zlUjw7+RalGXRow?QM=`>sC1e#pIJzvQ?uZ&5`OTE6g_$ti-`4l}sm6gx8 zTk~;qil81p-k{fWtM!c9DFyh8#d7vVu>BI$P$u|T`{n*m&%H!3f%;u}P!ONQ3ju0O z=ucDCIoGU&FEg^Yv_O{C*2N@(UO_ABe!PbGKuD=@#Agsv4L`b7vG)hJ4Ebcz8mNK` z?*o~{)QHMyI#;7Qt)hVhB_M9uCaJv75HD8KQdvYoc-Dl1IT4vx)Mn_!6oq^$Sa)Jp!FmM%uU<(@AG%{`2B z%^I)AcK%^Xbq4JIx;7mOhK!4i{9^h%#`*hev3%@4P#I-ntFz_dZL^3C{c14hx?sUo z#RqXViW-kZhGJ%1-hw!|%9Bz|-ue{Z=c?`#ki~(?$Q$(l53Mdny#xpICQ|r$_vk5% z-_};wn~W8clHP?iUD9-@gC(en-_6y!VDBjF_DnC8;VtsTlK0F#C73;PPuynEJN<6> zmpyiKxkWVlK@)H7s299VvJZk98wGwxB^Bv37N}!Ey#VZ?RF2Z4g~60iSMPJcvM=d8 z@4B1#EGh=EO+h)c_E(20DK zQ_`P&W?`*#YYvsyh=A~$Dj2T z$<)TU7P1r!1!cQtJ?;X&Z-_TRF6vQpw6&zhGb+^F%vok}$hR-G>ol6MFy|VLq8g&} zuPAtz{*7uV!nR5hP}a88MMdu$Dsweki{UsjKO2QJ?veS>TDK139l)rElhegINxxk# zskWq#z!#5&J(!%;Wqr;IA(yGvByLfI7wvA)jWuC}X=>z0rlx|~6SxbT1WE<-l=jwy zxbVjkw@2j2x&M#+|HlZmY@;DxXCAWw_!39hcf-6A!IiPcZkz07OkyrC%dU zGI?1xyV{PsiOJp_x=o$X^9zqELRI48c}$x9xrYfhsnQq5Dxd~3jq|HyH0i9+qnNAW z4JAZP1DJ8R9%i1KEMPt%@=qyQ$reFpC)ra4n+77dD#kg7!oZt3a55S4wCCqa(ibLO z+l{Q_C7u#726Y^{PMpW4clm-S$<|`chc2EJ`~VTevhJy1t2uP3H&|h3!kgPVH;+3y z=6S__D9zw#&gwPoL{7ba6FnJGH8qs$MOh8?{*qz4sG^{$JG)8g+mvW)S{M92S|^{< zdzM#k5XX{o!d=%_Qdalb1Jnpi zWzsr-ddbaHV^y8sk&oXKS-zIeA(=(rHvKNak^!5-UqS$2edA2ngEUYGBV)? z;l;fj(k5a1#2awsaMIJ(CjytnT73GkNeHgQ zh&rUh7zijkHessxXltED1LqgQO}%*-g(Hw}D9!Dtm*!mIFfegR7)B%y^jZ(_s?qIv zAmCFF;rf0o!M{|Ci)Wo_IWwqD@{zDmKy|G8UCN~z^>je?M$YsF<@p=YR%Oz&o?+&y z3PVxR(DT{ltoNGo`A_(D+<(;5%BW|hMYqlm_3F-{G=_e<2hZ!~w=O)+j)$UMh+J%- zqn|t?LE8^f8N>;5{w_CBZ!|}oTUPQ6wW_yA6q2_?uY3SCgs`GN)gyAPFdavXC3-Ge zgfA+w=sgiV~EF30CiIIJxA4J;ft%Vt-N_;T5E(C?Fd&l<**<{8BA6 zUCd?9fQGiF|Ih?5Ey_=mD`4pKpt}Q^Eq_9{YBcY--0}4dNNZ<`IV1==mq}%&Pdg%1Q;`6Tv&vyQ)qwM{@^r9DXWDJr5U7LoU&c)PO>{aJs`5g-z@PReyou#z4g6esa|~sTiju7oqS6#f#2yojdFXwtfTODfSXIG z7C5h}k!Y&%CC&0I6U|AZiu+NM6sb*Z9?Q}R?0Ni#b?*#kaZTNQTE7XE!ZztvfgW5X zXn!0rZ^kZ3ooTmnpV&CbF)hI;TtPqI=87Q}GcFMxyAjsc{_OL+M0#C2|qG zFwBsVB{*j_8_qnptU{hhxsxwan9Ej+B^THh`=KDd@o zlP)tNhzK`|8Z9AC4nCBDT6UEfXiGm!vo2A0r|3CH$$?tuyX&Va5g4bPKJ|)W@V#749O*9l*0S<_F!xI<@kY1Od}GB{LVn_F3~TiYx3 zJQW9LF%3z-Ke@ziT)K0{rQ@cZO1i@ix_BmoL$xcQKs|iC@i*I5YS0^*?T{yq`@m6cKCM2${Gf=Mt2v56$ z;riN{o>~g{69=#c6cUHHpt%pA*xCReZg=NESbnpSN0o(TUH`#0DY335;)Zy*B?oHg z6TPim9l16hGngFc1w9??CB zgLpT;D2%(k?QSFvMTis4yD-MEiIq9-Tz7z^a8?C#&Vg#bDZ@ptXtG<+oU}F~w38zO zjzbx^u0Y~^4k=uY=i)vsr&Uu&6G_X9&7{0N-Mp%Q&lcQ!IR-+?YNofoIo|^wrlgbN z;ZfQ+4rz}t%`yTf7mJ9GzD&+RxUKUvt3o{7dPQa|qSOqQc0P1i4tO$E!yHJe`0gG= zF%?|T3~NrpcNSbN1w}v#QJL*_NvHOc@RwRiQD`--i$T*|JW?HnIHZT8naIf;}HLlLq5TF>otq8 z02kCvM>xDSWs0Jfb1^BCjcsm0$%$riJM(p>mMdJ3L)vD8S8GI7aF$3@DtOg&-PC?!W^?X9Lm`wk-=FibH97*~gfa0V{}46qE1wvOL3GKwCY{#jj>BA9FEVUEh~b z#SKl;EB@&k&^dWaadpCf{vYn%GB&bg>lQSX*=3iRnVHJWE;BPTGc%RTWoBl(%*@Qp z%*>o-hBQ3)*SGt=KX0Vb{Fu>5A*B>2a!2gQopEBFy<(ljxIsf=8V0^b;Rd)8Ma=Cq zSEAUHQpI?=pt!V}1P<~eRq9r(@>V!1U5Odjx?y*!KuM%FQNJ~^jqTZbI0=ijvQI4e z%_EV`lI%<97O`9Eoi*)xW0Uq;0U>Mz4*80 z{OPahoAB-h@Pbcbl^tn`sHIl5i;(Xw7s|(Lyz`=^L>@*hmgW`A(h9XADGGkf`B7?X zEivT@TKNi%Eq?NEA|H!uW$~``sX)4s7_E}@EG2DNsYO@X66OZV0Y&r%cq(B@hv`oI z*7G~fugR^aH!o2;>v|mz-*&Uh8j_7AxbGz48oYkL2t5KLM=z`uVBb~=HK>xOLb|;a zhD)%EPr1o`;vT)p_Zi`NT>|7bDB0-jF=mNGw*2da*oAnND~%QLYx!1Z%w9dkpZ{oX z5#pK<90qF(c)ZBy9rFxr<}T8*M^*j%Ef`E5}4ty3%K z^5BU{!vK>2ZYArM2Kdsppd%mDQ#eAGP zA~ws`|K?10gHpp}hlZirH#ni`UdO;Q)#4QOg*@hrrq`TZK53|Q0Z-E3N1`9cLiU(G z;Hd}#+5&S@s*VQVfJ|b`t|o2qj}F>hgHjQ=q)l3e%OAuCU|?{pOA{r&C;08`nYgnv z<^$!1B9v#y%2(!9)XjvV#2fe%^FoQ`nh-VUGWAYC-e4p=Jdo& zlG5+{M^QHs?au*{T->Ysa*_^>^{{DhBBQnSfH$L4(O;G$(h>6G4N()1dAnr zQ2A0wSb-%&&YkHmF;WunEyR263r*k~u?(RitaSdt?&~B17>SBMr!X614tHdrH9yjv zOy<|j7^94DV0TQ0wv{YGS#TzQQQ;z_!OYI#$A_(>a!S5;4Im;M^-u<`*)kS?_08e| zXL*VcbAyCsIQ6U9TrRMm>1J%*$$wJC-NPgTe#tP=d@q#m zFH2p9Ls57EV4n^N_Kc?f*GId~XL4P?H<$LCQJQbTM5rmCYu!JzsV8IpO*msdK-jjP zkZT0*?;Bfhb@J}sV|ml0hlGz~{ntvL|4(_tzoc6!4yTtB-WZkgh z;^I#7)9-vZ*AHRA;Q!|2{l$@x{4NB%_vw+NBHc*@V{iXA&VB|60}%qJBmMt28AO4G%zdzg}@ZYLGpNs)4N}`2Xw_Vz%x51F(tugxz!A2i@ z7p6h%q=}JVG&y%?r>DbG`hScRG?d`uTk+q(#F$SrfbZkq-MpxDOW;1;ig85M+{w8W z`8&)pnoWMPzeOLpfl)=Pd_6;Aojv&$PK;)Qzhl7gIq$wjxq`49>V%%`35j0f=j5SX zzNyg+%BF+{-qHi`eH)*heM6)9YzN%-=!JIMQ=p}mMBYppqWlo0KX$yA$weN@a(e=K zL!%onyR*OgK>%_vxoy9qf9!kGW_;&#zpM5x!EbZhLqTNp+Cfl`u13y`6&K@sM-r12 z9r>j8xbc%Pf0fLk=<4@sd&n(tqD98o`pK!3YkxN#Y|e4#ra#KFT$T0{(N#V>BrB9` zN!!3P>Yh*rNKyQL#W*ON6+p%xc|tUMb<4L08`0E&9-d^J+gyX90TWQ9S+6=^Fhl*P zMyZDoeQyiAoxXoU4+51c#MYhv++G$HqwAIoGUv= ztjexPC=1-8ZB7pF>p_&h*S{G^iMMa#w4P=(S-wX^?&H2M&x@(Uoj@{ew-b4ISm3YBKLOh6CZL$>$5|9zN|?VSmnrcP8C+vBxh1A1iWr z-F||e!hWE3r$7wdnne0u+r5exqb ztPJ5-;3L{P!8ABeiZ|uZLZ<{wM7}B7d}b)I0h#6#G`*H#NZE1GVPQPW^}$s`D&Y;B zQsy8iGw}-AYQJeUVQ*Mfx@#KItf(qeRIU}<%QIl}(G%r2i5+Od6rGTi=CR1N=k7dngNZ* zw0f&uMI{w5FZhuQhaL_2@O+-xMsPD+bH*x4YJnbr3=&5?3v5l&W)$)PGupz60z_F~ zRN*f&d(Je4L~>&$PCFXv#X~|LpN6|}%5p)4D7?)V?0Uy@xDdTm`x8Vz-C2mVZ^P8sztNG{whjD{PenjKv6(BgiV)+JO zcU{EL&%OU8B&suLzY7D-%<@Ybwf!A~)^%@ZG@}n>;!+K`Nw%-F^wHiEvpy}(zW6>Y< zYqCapJ$^9Fs1&bnmaYj3TjVW91l@hP1nytA0|Ab>i6viii;ZdU-wt3u-ii8JuN3al zQGKLsM3;^<4)>Dw6UAqe@dGnHh+gh>8`fv)Y79@fI4V2E3(@(ZHhr^R`m~zu^zu$X0Wm>5^IXy zNwk{T!T3&vUE!bZ487ps+Hgk{zD!-a)-|&WPKDdqZ_lZYFQQIe7W?^#yw8c~GrWN) zS1H|T<5b;KIrwa!I~wW`&1IXVirKhS&8UjGCGS~ia_M?6AUs)a-4@4A)jSW2dw?uW zoC!@3G;Z@&QKBxtXo6aIA=e3QWXoAb^Z@bF_z#aOdy6f`V&b&IXuVj|!jfWh!RG6! z#BY@KwKKRlLa$iU;Z9Od{SzE1RV?xo%y&jwiZ!f)+lZl3(;rCk+OZ}{lgFFv?Vucy zskV^04=Y!rj5TXZ3S2OFZO9Uh%49^e3zL&#EDcI>ooxP0($fY;?rVtzc)%V|L3*hL z2K0_0W$Q$=|5jDOw+z^yHJ#@IO8~7WHdCf$i}g#V5{egJ4w+j** zbyuj&l?(u-GCy!doK;icEf^DUupqW%QB!b-OhcnE)Rx_ilaSyh3M;RU4q%a?>sn-j zl@ccyW~dU(9f-^|Nll=~v4N$cw~1O-*1TYr-YVKl5NkA92o1#*QqdRU~}`KOjw>4yRTe5){FTj_4&$Sk{tp zoKsZpB`wc=dM-!|xmH!kl(;&>rWBb^Qu!*ar5f~!xx*g*{8%JO1}JQId5er{`;*8% zq&_8RCnTT}w(8pCZ98hPR`TL@0wEqN-o9v3x{D0rf8IzXVaKU+y47#w-?y!Ko`8DW zDO7MZ*0%(8e7%`kdW_GdMKg|)ery?X^xdlGgAdWHI99ik4hJQk>vylh?}9e~QPe80 zU-&=tazh}CGdB#2Po~y<3Ggk~!^5jyNF>pHLl1E37NBhIxDxoCg}dkNF*b+we%2~& zFe{xtEyG4!K0&)#j|2Gj*k174pR}MRx!ciB@}(unqc=j>g%<37N%*GGVGD!jypNA} zK2|l`rghOmQ8Ql;gXSFncI|5QLR6%GgY2T<^MgTt`;dQ{YPT!7iP8(MC_CEO%2NN8 z>4?;hFL%Hjc#_TKWx=l^0Ug%>FafZ$Z*{`am}Q=+B*D3D1U6*jle;4Rd1b13eIU!4 zPKYi`R^6My3idjO!y{*_$(LT|F~hfJF=E`9dKm0qle2H=ityo%x%`sft-O~PX~~~> zAM%E*0qV0c9A?bWiJ-3X5V7+`(K*ZWP6fMOM%Q`uDi`lmv-A2fpC(h~$`@h0EeE@+ z0R-|9Bu>?sMgUYV#Vn#nLDHD9j<{-FFks*@^>z zQQ~oQ#I2?%Ag(G!7{J0}HQBYgj<^w3M&pP%q!e(nV3yzbaf@LLR3J=9_pV<+@6Jkr z5K{oRbo8&iL#~fgu;L5k8d*+c7FJqtaD3DGz!N|JtO~vg`QN-%&A4ZydbftlfVsyZAJxhqC1~_WoNid zNXLM!Jl9sakXE&SQI2_ZMk6t}z8p*$8B9__5^W`uqjtL-rNO~U{SJaSYQ>|(_IkL| zT39y?Pom^&!o0B(1jagFhWKPvz^w9`j7Lrhp8Gl~FF#b2GPfe0hj|%|XwU*&I31eE zflx7O8kQspnUGPeRtK~$mb-i}`8qGFT`iFB|x zxFyPF6ste>Y&3s)BJy69_LocZO+e=N%H9`SmI=ECq2Vj>8e`3{?W2|0#E7xTg)TB4 z#D#i&thBsgwO>I|bf|0=Q8N&?s{8(7_u8ue-r+$@*P|3pu@~8-a&Ta%sJ^NFsD`@b z9ZlOk_sa9t8Eh|-QwE#S>0x_dZD~d;-X5yP#EXWGsxb^MB6PBEETNNU&%uMv6pown zZDxbjio}P$yNcP>;It#Xex)>^nDedy9ph=}=s;a3pN1hpjs0LCgj$Zi(;IxWq#c33 zMFHWDe`nw*clDdcy&!8ABsHwx?IyA|t)ce^*t_#_KK9ZbPO0xPj|8s*N8Cpvzu{V| zWqI|a*xhlevGh7`7gOH7M(U|Wk_%#(T?~8RxWP4oU;iSMUaz%B!32kM{Y*J#%M9v= zU|cdJBJXQ)M(i}PpI&rPHZU;zhS{ulB<8%R;OixlP!i{or3=wwc1Wq8ul!^N2rG-j zf(Q|?7uS;{$wp8@Yxu%sF5A~%CEtC${?HY*!$*MLDG0#8*U5V8`n;#^#XV6Qx4UB{ zHo88)G^9>26mIpnO_i6;6YyA#YsXi74~NaTwBJ52;~}Wkk<&h|^(5Bb(unPPuKR?7 z75%cG5qYL}k?UoKf#0fa(-Q4wowI_M)_}r*xId^}`;~#O70&8Nm!axDyYoRsZ=>%_ z%Z4?*go5nXrL>{yeq1wMFUxAwr>h&q$R(5lqXtP zw6k(LB>ws_rx{2V)UJ)Mh|hBas-0%W9%L9!7kbG4I}E8m7Fk4?d66MKsCFNIKVH#5 zjz%C$d-5cUcpyuE->R+%M8?&qgmx911g;u_YVgQ}NO;k+e|~WmUIOJ@*-}X3yGjNi zujqDGMbk2uA#_WFwH)joAcEPzg|+f*Aztucf2d(XTUDtRE`7W%(iLa{!z}$)L+sy= zz8V)H#6O~JRz?-%3nrG5R?UDJ`K3{oJdOth001&anR-n_0w8&E>A>qzWz~qL_ z;1uOG{&61M`pa3@A-6%n&hdnH+yjF9vAHQ{(dH`=iEbJjf!v#vo2#Ob?KdfwJIHst zG~A)I>>j|;JI1?%WF|8@tfcT5RiCKgb=U$RZaM+y%HA4_cm2fX2uLrTb|k<=--|uj0HXhOJ(H(4OVW9JrFXA=EB{Fw7h1cz2&SIL$_fo|WD?1a=k_DiE?DHFj*xDXY zs~QN;AMV$*`!Q%^(OemPK!@e?>a8uvO*c5#jU^?8Nyj?8=7$_mW7KL-#!HDc34XTt>WG^`&4Mk`qmH<(B~e zLRG&vB=T&+z#uft{GeD0eqH?b&dB$4M_SlevOd&b*h5~wisU0W-|!nU47}}B;Z1Mt zsz$5o)Zpy(irzV*YLL$00fPyye#Rl5O?YXcgMQYG9RGblCPlJV=8Y38cvdkgrQ;L3ZfNbW1R@TKk@4$mZm3(OU)(gK}P!g&j(;k$|m5<@=^KXm1WU&^C{_agi zCk98Bk?dp+w>G#f#In zgWiJiK;XVpuKO$Q`#^`=rh6l0zT5H0MLD!z|m!;>Eckca?Q8qql;5KYzTL}6~ zmX=40o!h?pxnLoU>`~-mJ*3Xpb4)-B=y?lK?ngkD$WXm=Lz{1K9&j*k?=+w^+Pg+0 zr^7imj*UX6!;O~ZfLSFxNtRM5zW(->+m zgH7ReLwQexteD%J!?a2bTGqfQK}^5&9w@uy*yRd?bf1{XoO39RgltMp@fmS{-P@EbXbI&PrFhw2+Zk+A3`I}Nn`eQB& z5X_|Z=P8+NR`i%5t1sagr@nb?n6VWeLCWgtSdIc{mam89=wiV~VX>XB#5A3*0}O6< zs$;wT5wO9-+|4(8law=_ng=)<;v)q{;biqj#GD^lvBW;i=h%o-XyFLxZO%E(M-iE% z{v^9S%yZq+_5LvmB3pXyeJfX)fb|;yCuRZHUY3cPoyxvFV`Up>A=`l09X{Ds9S=Di zeL~0OENtskcaZr*GrN2 zCfp9^5?Ox8c#*5~XN_;PBKfaD#u#zwNyv`WJoUe0f=kH*6H-Mv^Au*Mv2*d!e`r}q z6z7gGWCbVL{KWJK(6A0=eUy(hF*Xi^=QcENA)*Uhw8o$l#G;!bUHNf&8juG@#c7$o z-uXj0OTOjT;eO$H2d9d-_?VD_3JR*CX+QP&1F{R&Sh9riWP9c3!-Qp5-Ba4QF$Ng) z=rj*`Q1G#WgJfK0a#`^_lT_-s24Yvg9wio z!U%LF>^7Y24|p8zs9-xW3+tHf>=)>(3dsuM778d^*b&1SBzku>EW}xD$X@4wUJVkP zs>6}8yz0%nIfVB8;oK$eWvOaKktaft|{JS2h(U$Qkl zqtj+PAhpH~e4p=K1;HUY@Zi|VT{AVa7jW#y#-GJATu2lv(-w_(vjA={x1QF^*XWEk z1=_@3&&g!Xnx~Z6_4W5Ddd;9>h#h6rp}m#H8)Z-DRjP4@$m2TE-<#~F3wO5$P^$3$ zNCs{BGK=lmJTgW(#~@;Lgausm#+nTFvT_o-cM_6Vc%;)8rBdD-YaBXU+^ z@iQN>ysuiYsjUrvbam_@{^|f6S@^<<)h7q!8K0F+LKFwImzv_JUqW!~u}t~@C?ClXud$}SfbFlBjRH|8b|=$gf0L={L}PU{*a?*E&PGec zT=m>BJFoW8_Mhemx-C#ITTj&EP(Ws>VgO3IA!sZpdN54$IgAtiA)qY4Pfqed2K4DB zSfNeK-`{{Ee-U%3BRNjGpse0VBnPUS#{GqN}Q9+ebkrTXRJ5H4Ob9-P-L z)HcjUbnA;~m=3Tf`rFbaQ=p3QUnrp_v-VAn=xAmA9PeecHXW7?}0cPSmcciRF@ zRgeCLp(y@-Q)Cs}aOtTj>80icy%q8~VR09oRvyqaSs9V$mx4yFgn@+xMHlTqbG^ak z;LaDH`lP+*X;)>PoY_}>C4HI{FrPaERpfkyl@{-qXs~$V%U@3f{lp`^u329`mG_Da z27nC1{)G<b+L;YU73f)4W6Wx5s44YsyQOpS00w1?Co_#Ignbnb%b)4uxoqhBf?JrWj} z1oUgn7adI|i%w-72Aj_b*n~U)LzCh?G5K#LE%cmXtg+avUzylagp7)$yHnx~hK0ri zJ|tOSO*F~qv+CB(^GY0(DvCOhzIfg6Qldca<)fBsDg}iP$>n8=y)YxM;A?-6@7zJw z^=WdP``}^YbFbQJ(jSbU_4-cs1o!sQ zG|`k7gs()GWoL{YT4$)AN7psOigM7yW?aP^vV!^vuBH{z6_+z$n8a%oHQ5hlWFS@I z*Y{0Xvd(p>jicpWbGfjL(_d#buvk?R78YPTEV zMEU3iacA>Ly8t1fHiAw1SL(-`7zs!8=SlXR@-|5O>uDTVcu$*VX-|V9=T(!ne+JaE zNOPS+J{#~TS>GpI>~tUHbP8LamLVFvFtBID+Lc;k1Qwf5yTJ52(8C0h)-7h2qX~iHuJc3-0ApSixu@=z!47taH?-is_eEVi z5PvSOpWx17`(899Cmf%wuFOipuc1ApxHjXuxUd$hB@sqR#S+AlZFzKql=-`H(6N84 zmfRpsS(n*7lu}N0O;=uwg~vo4l|A&Pu$7iXD`oaGBtBmh#P9>tdMKU@?H-)j16Gcn z*QUuRp~jcHa3~N%FGHe`y^7OfikREBbNo7`vR!?6`dqLkVE8CE@5m@Z!lP!cGM=n{ z!d~_Uyi{>}BRn&|Jwr^Zm?5d^8`Sk+C4Wxv_SF?0>tsH{ zt8{A_i#-PP*b!@FZzZS#YV^2ARw~#yB{ds4kDTod`~Ku16Dv;6skNsh#sR?dk`#D` zAAFr`s;Dcv6|%DGxR&jDp7cO%Sv%)=-zVyddYcc0AnCX4Pt$A7|2;a~9Os&AD=q{8 zGn2F=149@7(jDD9B`%@7@x@rnA<#7{#>e25r#4wrGTT0es{dA1IyO$ zWKa#QPws@IYT3N*Mrd?v!^5(xupow0a|w7culp*jBpEpxqqEd!41!O?`!)V1_v^OW z$9{BuS>UQ8*b4odV$1EqePL?XhduNFKde-(^PULzRxqegs8Fuvue{D_PG~+ zsSi19}`F5-FCH%QVq@inPN z!2s?1`$r0?y%WYDc2y-!nDSn&ql*jc{o`KX}LxM@LF0hNm-y zKYBG5XTm8wHiUGswav-PgEdcLEmne8qbh0Z`xl1_^OSor*M!5gS$$CQy(GX#ya+8K zNAHjFZ%L!PhGhd>XQYdo92TA%>8hT{Y^JgVtwxReIf547hRU28MR|4@B7`aKjm?C% zTsU9uC9wECHA4#M=$8EPTJ7628+rWr(P!q!p`^V|IfJ$M!{lxVKGG7(XL=ite`TGP zm~9O0QLWC9suGh2-lDDOdqCNA>3<6(Xb{0^_=4t+zd{nbd3gj$4u@401b|c46ayxg z&I-Jp3jyp5F>jo}PZ$OtuAY~xA2gQRjWGmaM?L!4sx#&?KQn2lTTBYR13>y>f`$^U zqp9$VNlDBaz>eYPR(dPR{(JH?Pv1!yU+9aIYnZ#&@3=!Zzu?IeW#Cf61?#URUdA`V z`Ml`2?RkmMEogMsDzW^o?b250<(RzRG+L(Zw^v@`j!4b9qgObr@-lPm*O$}&S&0v& z#{%V-X3eiYjedU2)HqVZDf8fF0PVCb@xfIPBf~E3U}?UF`3s(x-1ZQj5Ho_Guw+Fa zvXm~oMFirT;1X*eFY=O}B$?R#0&>}L?@<*gxkV z%_i*ATodnHoW}0^WykJGMUb+`E8X0ji+?_yL*S&HuIy z^_2bb_yO5PNN=$G4U@oyPxM27JZ6md2^OA;A#3u1s0#BRzECWQJ{IrS%}Z{QWTGSI zNhBnnJ!wkD_TSEv&P0{a{}C_oj}`tTEXB?(YX3)>MIY=4{*!k!nOe9X_K!LVCg)$| zBu<-&@Bc%p`>eK~{FFdB%&?IBzikNejhj(W!81DN+D;EV=}*o+C#Vv6)(@{GkrZw- z$tH1~Z1%kCwGnZ6e{|tukT@Kgv4T6n=z$8jg?CThh;))bf1fA#n%4-#NXs8X z93-&POGjSSJO@o3KeI!<>@gV#5i9L3e#~F{JZ*GvJM`U_#d4r=yc~TO?|Ni|Z9`D# z*zXnmn^MN846&-f>i0#mq#2Fja&R!)&F}e4BJQC}#ZczNqTFkTO7*MHmy{6{a?R)GGeNjJxb=mYe>ksUCg?@Q-yy@ZnbYMmAIn zUFTotuwSujFvf+>Dx$X|dBu#q-wpoaLNfa25KYT>1|>xCa5Sxho@oXI?R7e?Ju2@m zJ+?#M5+qtsdO!?tN9XuVSv{?c>Y#ccR<_-n;4Z}beA2a(_yY=dTYP&QQM+t>E3*ZJ zEjnMui>@NXsIODse}x;d;_vTG@Dk|1ReT=jwmEe6JoM(lfX-n0LXMQxr8yfoH43Mo z=m?>cG}3Hcg3WDv0xul_tIqo3%Fk?C-W`u-RI_t%bOnUdai=^GeZ4q0@)x=K{&$eV zLxM7N{IG?rl+%l_N}^99Yi}JZ;>dWC%rvlg1O&R}bhN|T`7Q(&!%^&cP5@sx<9+Jr zq4auu9`Sp0wAglc3g~%!jw0P}t1+osuMT-b#r>|(K2N|#+$=5S_}pS^vy)_>nf^W% z68=&k(}F{$M<=iw$fLzjlM%pg76~>NS-}X>7L$;8Yo@=@8p-Uw&B2oz7C(TX#46 zOus^xW~TkKhVS49svptt=9d%>Cno%@I7zc5;>YWPSvd&s5_cdb?@}_uK&jehTp?tn z-Zb&tHE(kj*l_7)@b0dOd(ky#*az&y?31qcUy2oD7k)!JaJ@|fu>&_#)kOB9 z5$-_ABB{C6wss*P+f;W9`bX^WIa<3WvoN+_C`=k&`tL10hxs<-I!JvO21kRTzo~{D z-#Gj?$f|~+gUweC`=5&(j-4DdLW26-b_-Jv&0Md%Tkn=+uFIFQSC;6zO;1^ayJSa;m#n?P zmh^9aHeLrRkq`Y(j7GSF4L$A=8T1NW%y3_-%GGZf)*7{2m>Q#nK1>bF&Wp?j%~mmX zVmd$sC4!;Mlk1qD)h!up>~)^I_UfNSGKl+QIZTY8{SO-yp3YzRGGrzB%d+eK7Sp45 z#~J-uvl;z`@6C7bBqK%rJ1n%zZ)fO|Q;xiyuJe81?GwpL^cc?_#AY7!ZOU+*@826| zPr^bCvqUokXM~>YzoKw>+2~78=S`{=5#k_TEKy)LOjDAYZXx1o2W%x=2)8{#@R5W+ zlqoK5pUAbKq$Az@kN&Mb5;Sh#XM50DTNWyYTue{4qPaROmF2f4loa3Rsbg=9u(1=) zxASl9HI9MG9Cy4}D0#!Kkb0j22mNP~m-Lo}GV~Z5ZbK~QudfiY^1cikr+X0s);UuFh8SDesHLuB19#~xx}pjJ&BkCP6I8@<^2 z(*NRg(Q!2Ircw0OF4Jl*dh?ax<%r@V^L=ga<6PWN;Ny1UBjt!kvOy{uwFsXr8^wRQ z&FykN018pHvrwH@RI+6HVJ`ebY%W}%-qZXb9oqfjAp0XQdH=2Ga_;eYD@70#6bS?r zNu9v|$*t?p$`rlr{Epnmf!_0%smEjBWcf=Z*Iw59{fDGqd)!Ias~H3>dw@sY;>gF7 z9@YEU$IdEWWjIFVdAHim8}Jb|6bmz3rtEUCD>{E;;UtF)`X>nVIv41(e@ka}GA^{k z_OF|8sqOe-|K|Zbd~MFZF8@`!iNT=t(G_|){~F3)#a|pn00iY^$KQbv1nln;4o&z| z%u*+>>ihl?0=Sh>uc5+u;r{9Jd7LFb7&*uv_-@tvu zFaPQFv+qR_kgAwP5#+c3jQ-O_tj~Vjg0RE>9o%Od(D7FBT!Mc+;wJeCayTh3{Ow<- zTmSM1L*fqnpTXIiK_GRnV_8yy{o{Z-#;4&^;!xjz4PQinfTeH?zg>qF#uFikE)KCn z&u7e5^AlR3bA*Eb)msRkf2v5p+MON?$KbIa4Bw^@1S7!|VA4{vPiNJ0y&%!HAyuMH z&rZRu*4ipODgx{~WErHaTM*P=qvyi`6YOGP0oFIfeY`*u)_pVSeENkg1sse%#!WnZoIP=sId^|ou1ur5#}(V=Vpc2)>H+=f^I zW|sZP;n;y={tM z9vYoWxL<}{?@pE&&YN>!PYd?oU&24KzzW1){$knW;S=Lq1M{^1jCT7m2vb(;x-HjN zEpoM-hv|EW9xQYl=&dc$98uGdtyr$U9);~qw`@dWtw9EfHi@M_Lt0zYw`$0pf4o&8 zHaonEY!xvFB`1a|+T$8;lIa!}s2&{^rvQ824JBL^!ikGFwMix6HPk12<(3aoDo#_C zS{IoPV}Ht*XxDs_xd1}>6>&b}=VcRxt7B`PB5s|UYWKWrNs3bC&GHp3JXL8Gt)o^Q zt~hNznvY9diJMa@yyv4_r7CXDiC(lQ8=Edki0Mu`&x`6~41;t-jmW2#TuZ}m2U@ES zxACoXQ)((jONu69YGS9RT2hS{$d4Q4o~>y{HRp<)r^lT)UNQ^Z7saJcnH_ab3#m;L zWsB)7gXhbM8%iDQ<89V@P9rsIemcy)cF|?6c5+o?*D)|U^lH&d+U!nKNr(*&C?MVk_%Y`v2ZE7LBzcb2vKx6Bkr zCR@k1a;}!<-b;I&Yo!X)tIcd+Q1qQtQSLMq21Rai!cm?!Orx8Kz*AM3_?gfnPPg$w zjrT}F2Ei$V+BT8%;@nZ`&=Fw1MMCoy>Ne1Fw2x;?;Q}Gw2&;|VWwoyB2|2zQbiDn% z6R=HH6~Iy8$;DXeh|r{6yqUFZ36vKU~BV@EqR9U??YxNtlTjMiV03ms2FSAy| zzvI5>(6emmO!d)ZDf7vH$~}0Ca~rVT3ir-agY#;V(BA+ZulTT=x3(AGY3ZmJOrI=^ zOEr<>>@;VkG$FHK3%~UWtF+}#Nl6GFI}H~eEqH3DcVHF`gWn`@z{!1SXZU7kZEW24 zR*nDGOD>1iL^t-N28za}q!V-;)_Ch$$PWTmNPXX<{iNQv@j825|0tFQ(b(k`a?7!7gvmNO00Iu zai!f_-ezupazHWO`O+rq=SIDH%E5{HBUiIaj*x{XRRtgAh)hcqM*Tgb=!#-$SPK{$ zwphY^GTCBtyQ#O1q1xmlIgMw@c5u-$9FZNT~FOQV#kN&N2X=-KxrzDbY9 z>l}Kvy0XEsO0|q=L_Ig5h>U96MjOf-jQQe%<<8W}$C_Bg;f(WmZfRGBCkRlaW*M*& z;;yW%>@EFl>c>v9$Igawy_=W*%_FhxO-FtDyogf< zs_X;1knAsO$Yq=Ud6Jd%Pa=)magzj+|9$Nuj>#&>3$y=&rO{=tAUs{6rQY$wY~!6f-wmVrgdwU3_hdnB1utE96d{k z_HnC%6S<`P?IPH^$O)r2Bp)FtcHvYMNU09hhxOZS%ljMFb)r!CsMxiYFf1$L=<2P) zBu=7KX07I?lHmgb*sRC;y)eUVK;?b@-TdRx}U9{&>banSnp7AJ8<9S&#uVMW%q(Yt8+RLrr(F{S)%dcwUh^EYHN2o)-zsvnWCq+8CDA8HWe%8p@2YQR z$auqr{$U15exFb(?R*s5Q)X?<7GMXzM|95PSIAk!7T)e7G5`z3G)EQbem~pDLmG~? zIvjFVK(dz#tIMn8eN(~nOx2W=ej1(H)YjO6YPNoxmxYgk{i+&b20@--@L?aG#mf%P zg?<_}SJ+c!qH8zj>m`m3r4t|;>$<-YzP@#hs)89-4j+dmfSiDU4avLWQK&~Zz|JP2 z3$Vs`wCJuw%58gcr}(qv$C&>0WB@VyxRX@BejEm&Stuxg$OEyi2Y48xW+wBTv3zft zPHnxEVCF*p2JU%tt|e;ur0eDoARwVwGwFX=rp5!8K(R;l*!IW!%$?4Bv_>i;>w+br ziCcL;(KKm!(0`?`0?(68L)t@upW}0HSp5|Y<{VMCZfp8IIsj#_%x0rzgk|uivpoh~ zt+$L~MJ%`9U<1%zxqWh^&j+ z#nT%z#^jOfHh;olO7{zkUHYby5ry5NEC{_rT8Y+KKQlvWIEq`HZQ*MmKpd>B4pv-q zc|^~H;zW89Vl6wfJ_Aju@|^6RT>0_f{drkK!DKB|+Py zC-)bVN|%{QmA!%tQmc>e%c1j|m|4v<6WTyY8NJ?X;>f=y#2yD?5YMb2#)%>6)I}xk z3wpvL9MR+o|I3?r%Xnu1k016GH{6Afm%%Tu%c|q#{a%ba9~_=(GY-&a{PNHHBXWH7 zr)aBvR~gzfyYlj%1?=GZIBjH!AQ@8h{f4V?e^N(B)gs@-Z^yso6HR4`fb#6IBzAJ~iTzS;xdN5Mw@DHv`S z-D9cO=#uBjM#0ZF^GTE# zJ1v$MsQ=lQe{Qf{pcrE%b|d*b)!n~?hFfk~J0&S5aT$U4j4f0Xe)*qP%|xGDcXo)7 zLwbKym!((gnRBeq`{>`7qzReJV(4*#jQ&9fph(c4@PIr5elp-6F!LknbF)4C6#@QV zH1q$9CeU9eoSE}`hBaqusStqRwWc&|Vl016Lo)*yOE_fHewXPSl?>f`fL(jlj82;_ z1f!Lh=k3>u9eNwyi&@FXmGS(Is-|LYjm8EMF;Rc)02S~elS&}H3!M=L;MXS*o+usB`E(=oazpgt^DXb~;W!Ku$%pzAX#KFy-@PVP;HpV8x#qC3 zm)fM&D4h3s4r@Jh9&s&G?vm0eTMlOXj2<`P?OKNFzp;$rMFO^5_H=lYg=Gh4L0uh+ zWzyW8H;}0z`8^gR7p&+qvb*C8i-(pnE$^F zY^2HmDTg)x6 z4Z)QZ(392X>E)nUf!L`;zG47)C^2XGY9F7&I7E#>2AM+g@0-YpUOv>ew(`s)Q;7j2 zqqR{F!>B5h+06cKmzyQ&sGSdqY0+99WHtv3TBT)57YF%S3q#MAN-mng)D;INbV?XT zDzifx3uky`hgmvJ>)d-uf*MsCji13XA1JOx225E~OP6U#Zn_V<@NTFCcs0@$B&j>( zXgYc5e%EqIT=G0;a|PC4RJl-hWS4oaCb}q>T^v(Cs*|^NoYE4o9kt$6)FkOeXhqqO zEiO1$#sbHh>d%iTT(q*PN@c4Go`wSWF3dNqtw#9h9kwP)i^@3B*XR@LqHNQ*tV%Z> z#8fg*&oVR1CfjXv8#XhTY=)|;us@e2mZI{1J zW^F4}1Y@tz$Lm9__dadgmZ8U`Vpgict9&-w?&w;cP3N1=L-b%9 z-(7m$OPo&Xngc}8uLUf>8D@S09m^Icz>4Sp8R`_>TTH$0N=ffRGTt^8J;=n^WpOl2 zskr#Yw;*oD-GZn9=3#!OJ)k5Sp|7cWsAqE{Ui?{Uv}Ne5+a>L4kAj2 zbPU}o0@5ul-7z!_HFP)6K`*$kyPo_0zj$8!*K@I0yx8lk%{hC{IeUNh=lfgZS>hUn z@TtUG;^iaKG;BxMnkITELALIrKIjKjKOFS4Qo!~Hc0pD@)|4o#7&gTjI{Qx)Id>(Z zi5;7%41eWcz#T*urQJPqe??^fwKtDZ3i6X6dn~ zw2vt=65pPj1JfT?^aqjRNvTOjwND?%CT4wh^O7trsnFp`*6{8`5iq<>Zk{~BFMg2O zc|@?$C?@t~^cJccWV{(-fynoDAyjz7NvB+5KJMAZcqsiu+;m5mzA1>&M4x=jE7=s( z&nmr4{r>U$di`GCiLuvX^M|AL(Hn3od(q(eA{=Kq!D+JN+FVn87I=mB4G+th~%0<5tLh2ajRKK=}BqS^{E|OJZj{I=@i%6nmHrrvhpP@ zV0ybzMwIjXi2W``805H!MR9Vg)9{^~4IdN5E1N@BE<5i*3Ez^q$0u*-CBtCt*8Myv zT#Ha`Twn=;jqyqpCQ#j-MziahH1$E#oNcTrJRW3@KynCH*9wMG(C21rG=QE8Y%ZnR znuHg{d70QR`60GLPPl%i$^HVMw?4lBh+*FP{f7HL@=p-uBqfp6!~FVZYVl8mtj4Ah zHu8`HBvF-E6=bY~p!}edLsn|`=CCQO%XB}xa#Xl@nk=YTlJDdCwqxGS(sH8QlRFgj z;*uUVt1d!yhwh{F_bXP1L-s@0ri0o7c_|gMG*k8$FjtJtx}SG6oB7gOZ-kRdxvp)&^)@DGycsUSEx6+D&f|4m{l}Zbiwn* z>ypQN-809o=+Wm>B`f-gly8;8CfAC!_+gVoE)9&TqP|Yls)bsMMkq>ULpu7KcqHil z(xhJQj(dml;NEk)uLOK?RIZNEt~fpU22!3;CUPaRr5ti-2%*Fm9Fi^Mosq`H2YW7o zE+|9_#IxHrQT#0{3R{-|LsCuaNqNpzoxJ_N!Qz7F9Vf_x33hBQpP=I|LPI-A1*X=3 zV;Z>%*3@WW-NxFe-j8cK!O((sQVKhTcg#j4AMYd0p)!9k#b;cQ{XUM|hH+Um;KD*sJ z#r6`ba4=NAAJlNeMEAvRPvC|OW^OE_;DJi)aR{QTeW$4n0YPYbbFLn|ln=nggE2qW z8;gF^$=y~kuP@xBGiEXJc)zd>Wup0+lh()Wt4NXr-*MN#9+Y2{(4CsuO&9YEhMt?d zh`ep=B3OFEPc|r=7t!EM8o_^5SLPD{MRz#C<~-fIt$DoewJMD+)*9XQfmxU5UXaZo zS%uk6dz*ofPA^DqQN|BjS$h?O9-(-Ki7LHh_ca@0?rR~mgedZNRSpdW!uA|L=H6W` zGv*+3a7roQK-7`J+8GAvMOAJ|91K|ugl=5<^=uN1P*&(yC!A1XGcC?a{+vFumXiY;m}-hS=`MWAKF7M5bOcY_@6WFA?bIW1?W=jZa}O64!PcoOXw{6lv&Bh{Ouv?V}sGex7g{#=WC)RvE2j8T|3&aLhUTSy}m-XO`s9 z`5xncV5nLp0;?IE6DFE2%+9+KUp-~CXptxFF+?pdr)ZV(q{s7E)b#nwIgs^83`Ax6 zjs}~IVEVUc)5sS5Pe0i0{c;ZDCT#7rz+kQX;glip#BFSkW2W`1&%=`mUY%$*J*}sY z#&XrtML&$44X-^1CwCP3zVNZFQ=q(-E20Nxh)MA-ABK+dB_6MKkq^9~JrIB=FfQoI zh*##k#9g#_fZ}EN`HP#hxF7!(B`;#mr^aU54KWJ-<#PWIqJ?HfPo){9WAa=lk-QpT zexuK*C%`>qQ_tT92z!?q!9o{y{D9@-FK)U<;MvBM9IwW6=||99%>i@tV^|pd!lB%L z2{cgiva{n}2pg(sphNQ~UoLIUix8l}^X84V%WkeQ0Pq!!M|&xo@acet#H&{eF1^bS z9I6jE23K(|?2YgXpuuaQriSH$;r?Hq%EzmmF*gj^^HshZOVyoz$R74?UrQQpORP=P z-*PtpD0h2*6lXLF6wz(X+wT&`_d_cg^&IU^ZFiA-`S+a?Y32qh&S2Z>@x)c#;Q=BF z63q8ERPdt1u8{O`{Zc*ctqU(8z#4r4zrPAF`u-HpEcgo1simZ^(^Uch>ejV zbshVNJB?8R19x4o4m&hXio1-M+i+zXpGFI z4^Rd^eIFbcICGEiy{1-Ol5iIVAq8)uo88@LcpnbUz&DBuu#_?$zpE)~g(j^ysePS$#;*x>3g_p{ zJKut#LFXhbI?%NGvj)m>Uo%Kjpy8}vlZa8!s>#>hV1OeIERw1(IzS&LV1jZ={1$muq!uhYNc^(?g+2D)D^ z-M9A@-_qZDK^9R7@vkjOY0n&_+7%Eyz8}B<|tTZY$Eop#|3hCY(|oD|A2xy|^#>FsUP95%pP*=qCwtY( z*;J=vU-nByVv7~xlOO}-2Hxo;m^+$S{@**G5H`!i;^>n+=QHF7;MRm_Xdg~`AqP;^I-kl(p`&=0>4`^(}T!Zn%IxK{d)d4 zBy&^qTl5(B9xp0YMYVpXGC7cXUL}1b&nYJ~1k7HeA;Ou>x%1qI*7btskIB1mJ5rAJ z^L;_84WQDn`bEQ)PyX#V6f0)Et;Fhm0Z%SAc;D83g&M()PA_9Let~Xs(I3*~3o;g4Ly|i{f zj-0isC|0xT!2y+_`0eq zB<=Zo)?G~IeYy@ma$o(BDN5FskdwXbMJzQf{waQn;Hwczo|rr*jJG{y(B5{2+~z_= zoAaH?S)dP{;?o65O3m4I=$5xvpZOfCPq3{#^DVj~Kx(8WLzcy%n8P5%5+>OuW0+T>>V`!j!*j(R8s~j19(@;bu=$8kYD-eIbaLX^v=P)B*U+E7IBOpGyPwS}%|&^)r8zO0~OBBh?d zTY(Vc6`#l#G&Hhh$rmC@!jtdOE9^eHg&UuII$X`AD#(F53x>1VS%J&_rVZ_Af;@p_=6?FPIP2T zMD=E=5?8#@Ba-5VXNxu(Uk}(yozKb9T=5^xPzK{#!hy5>1J&gdAcTwY*?%tH>(j`8$- zxGvJTau%E-7jTP^Cg$wi7%gvFn{=U<+Vv$7v8B@mN~%f z55!P0ApG+ETd>TD8me~JfPvMZA;d^svJ$7?xzt6_Rz+!eFbqs5`2>ytYkOZp#)_PdK za(I)xH4lyx|4Aa3yEBIMQ^|f9d_`B+u}yF`mk`n-3fY2OFTkA_LBj~6VP75cA=1!# z`E^iPl1NqIHRuzM!P&x3U3IpCHLA`ywi#StQ({JQz4U=?e}H^=xkR5P?iG?V8$vIL z&gRBs?bTIiA@!O2b+YfTXTGQ?`iIbwJPDL2x#OoP8~ZduO2?ExK}*jLeS9VoJ?2hr zPSED*oSYABgzUL23WBmohmmxCm3eCMwAL2%ULYJd_!bjOn!3KFwJ9ee>QAZ&G`#$3 zIm^t`?KzBa-!(z{RcX~>zs5f6u<}F-s$3ioc*g`hh<66fpB)^B+xC9NHU9-XXA!5M zezg(MK`b7O3}oX|r%wN^!|qq$tp#l^j3n_${Q-N5NU{7$;}ZcFNSallG?e1m_)onA z#b0m$ytq`MXm=uM#|yhe81^J;5=XcZ(J3J*9YezFmH{+Z`p>~*-A5S6jDdbUoM_=n zO)sAVdqH)cg#4x!ryvaKg6oUH$=FH2c>jiyKhjt?Q!c56`vDL!qu=fVWclxdCN+VG zSt;?d!u1P0GQR`hk?FHrCjZ;IG0j-{?TzyGF1%57mOiJ?;R?-rs5mqQ-vPMhM7a+q zKPKf)27Oa|)A?G{Z;hM`d!Wso4tc!4AfYjpe?daeKnAYbVkhbF5 z^=>kBQ{U8Y;Ye9+1^02KNf)W7l$mIh3DWno_VlEFO(ZY@&XZc=JRMgl0;J=LwhJT2 zoJU}c?bGWb(!D-FVC*6oS1mS_rrJgY{h{5L^OB8d#)^bv7x8#QNIs1wlY}H}c++jS z=4eMSMj-(*QC$$xgNZF{OvIo8+rbyT z<5%gRZ-?9c+#vFYI0ioL4C0ex<rFB`5HquJ9G&!_B>$rIT zoXu~7(EFnz1tw$0yBg4~dS_ogTfQrDxhz+j&%Kd)<8FKCB^Wi7AMF1y(U((rU^8m8 zgN~ym-Oj%9X#NzH6123ay`Y3GZ%|r^jHdB(yVIuXYPRqF#|8u9FxX)Xb#G}`u3qt-AOhnS0WaWUS?y7#tnV|O-`V~a zk3(VLiB!*=nlmj@J}E-ZTpFXp^`(HU=_aX>`Pe1O2-w8t8|P>>%JWdc1oGxuhWUWf zNWAR4a!Xr&8oAbE(vbY1$MA*&0nvZUNdGY=7a|<5Yc;DPuW!i`)uZ3o9V4-{`)VS; zo-I)ZQNS zeSXRo{8qiKe33%gU_N4L*`CT`dvx1goi|}=Z^uwnQiMz)^d~yt*H}`PieG0iO$2;j z7Ad9bd=>uOh)=hp=f%aAOQID%6uMQ};;qP}I890~*#pz?-SDF{qW^PJ&Ub>K`!^*0 zFiGJdgHI{X7=Uk`RTxX#$w~lk(E({H<=Me4GG|^LN*>ai3z+jg&Q2Rg6uHW5Gh1ZK zio1(@MTIm| z8z4Fn)))qjDij#d(_tU)#4 zwar!WfC;2K4;JvqLN6uIx{%kGw!7(r_(HceoirbP@43)Gu|Xs@(CU5klOI zDEyb4 zH3eGeci>d6;Nv5ZVHpig+aZxyI#0ne8%q9m1nyNC_d@im6;=f*1=D8_GXf}t2C`a> zpE*a4Gx9e5;^jM6H2F6^Ix7JLR8E4xD#$55wAG`eZ#Z#gItqTN)zQ2<8n}-v((ayr z4{Jd&%E1eX3R%|L7T&>Q3qXvNMGxux@sPpPw_`{m`V=!c%3{Q^a`OX+Z&W?<_4vMZ z9ElY*5|Y->%%sBO87XI2pA}AP$3}cXL7aqtPeC1(voWf5|KxxEh|N`k2HLqp{wX#$ z#j^M6f8c)#7Qg(X{vr6k$L1CsG;BovAvJe|53nI(vPPm&Qw6G4@p>_RU$vU{h$n3i zA1fZHn5gl__CR4T9@kdh|K zL{wP~*|1v9vSk+Cb<-4BcBa0-B7#rnSfuN5bXxHni~f@Vio5HOz#CMvl#L!lWUCV? z)Xh9}x}1#6j<7TVWpF2yf%ZC^I=q>V%C<7=aWZ31Ir}YD&`LG_F+aCThg!*)-luN< zm7nVuXmT`Ex3!}N=Qt=!#%?WP+evRCkQ;X>w4*Uum8Su@!A(Dp2{can*yrfz#%$%%3JsOCt+abO|$fGB3WEF4e3g0gKoej zSelKdBHb9zUY?T?M%iQ}dJEy32lHmM=!poSFXW+&^19z3%rc@KcD8yyy;^aK9J^o4 z{gVXZj8(R@2P6>Z-(~0)`s>Ww_q|v*nT-jnz|8J44``Ql-K2B$uf|2hizhd?dNHA+%Pj8}b- zt*jThX3KvR`Urm!)>V0c+5Y3Qlm_kEr}KKD4lII88RJO+G<3VVs$J626wu+P0#}R+ zIHF2C4}n>0YZF~M9UdUEH)TxqyCe#5PM!~e27HQp5ttYJbXyK6I^rQapMHM-QcD31 zFR-!nFRPILIu!tL{u&iPfcuq~Jh5T=ygIvk5*)x>9Pgf>R zSrfyt{}zu}h1bZt94ZFcy@^3KUh%!RBY(CnkNS?|d^s&TiD8^>P@V;d5EkM!d8YNZ1Mpo{vP7$Q z)T;{zn7u0<_v8fZ*0qsxE~i^@y}4(HxxEu-CliV+MCzrKkAc#u-{Fz{<7>x9)n|Ms zb7rUXC%^@)j7)#pTbtEwbRwL^?)%5*5`|2gZ&%VnyaxHI_>T66ciLB#hq2}8dcjG)%y4tuW+)PHs$j! zB3r|^iCs2`x95Rxv)Zm)a}GEKMy-+X+=%?H$6hD7{l(=C_%x7Ljh^*vKsrO|HR62| zJ3q%&E2Aqi5wD_umr9%uy(|27Nhnx?`_Z+(Z8{52zP*-hLfF&v@HxfBk_{+A$3Cxi zj`tM2TwSf6M|Job@boS}d=wQ><4tk58~bwnVt|#NRa!~Hjf;hyHU+S-%XXta{QbcL ze@hgBUGLSq+##2DW40U6v5mqD%FB+Sz>=jcX4;+O;(T0fZVRIo-1J_!deQNu9I)M6 zsyM2EbukP;;m|eh0TF!X%W%;sBXA8+Z?d14*DxRgbjd_cNrPR`;v$>lZh zo|l4Si*5tiy5Hk#o_4^2B+o>o92VyUa;wBMl|3@QdI86*Js)v{|}HO B(G&mx literal 0 HcmV?d00001 diff --git a/hacker-news/assets/top-ten-stories.png b/hacker-news/assets/top-ten-stories.png new file mode 100644 index 0000000000000000000000000000000000000000..65a246796c401cbe0f1c6908375c6523517ae8e3 GIT binary patch literal 40905 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 BbP@mn literal 0 HcmV?d00001 diff --git a/hacker-news/assets/top-ten-story-authors.png b/hacker-news/assets/top-ten-story-authors.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0b92b4afdbaffe6916cffcdc9492eb2f84a019 GIT binary patch literal 38899 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 WfKR1t=j>Af-!W&m! **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section + +Using the existing code provided in `server/`, follow the steps below to build out a Pokémon API: + +| URL | HTTP Verb | Request Body | Result | +| :------------------: | :-------: | :----------: | :----------------------------------------------------------------------: | +| /api/pokemon | GET | empty | Return JSON of all Pokémon | +| /api/pokemon | POST | JSON | Create new Pokémon and return JSON of created Pokémon | +| /api/pokemon | DELETE | empty | Delete all Pokémon in and return JSON of deleted Pokémon | +| /api/pokemon/:number | GET | empty | Return JSON of single Pokémon with matching `number` | +| /api/pokemon/:number | PUT | JSON | Update Pokémon with matching `number` and return JSON of updated Pokémon | +| /api/pokemon/:number | DELETE | empty | Delete Pokémon with matching `number` and return JSON of deleted Pokémon | + +- [ ] Connect Mongoose to your local Mongo database in `db/index.js` +- [ ] Create a Pokémon model in `resources/pokemon/Pokemon.js` and register it with Mongoose as the `Pokemon` collection with the following properties: + - [ ] `number`, a unique number + - [ ] `name`, a unique string + - [ ] `types`, an array of strings + - [ ] `imgUrl`, a string +- [ ] Populate your Mongo database with the 151 original Pokémon found in `data/pokemon.json` +- [ ] Create a controller in `resources/pokemon/pokemonController.js` that interacts with your Pokémon model +- [ ] Create a router in `resources/pokemon/pokemonRouter.js` that utilizes each of your controller's methods. Be sure to handle errors appropriately. +- [ ] Import `pokemon.router` into `server.js` and assign it to the correct route + +### Front-end + +Inside of `client/`, implement a single page front end to interact with this API using React. + +Your front end should be served from Express and should allow the user to: + +- [ ] Display all Pokémon (with their images) +- [ ] Add a new Pokémon +- [ ] Filter Pokémon based on their type +- [ ] Edit existing Pokémon +- [ ] Delete Pokémon + +> **Instructions:** follow these instructions to have a well structured client application + +- [ ] Run this command a brand new React App in a folder named `client`. Then navigate to it. + +``` +npx create-react-app client +cd client/ +``` + +- [ ] Create a new folder called `components` +- [ ] Create the components that you'll need there: + - PokemonList.js + - PokemonDetails.js + - +- [ ] Use [React Router](https://reactrouter.com/) to route and pass data between components +- [ ] Create a `.env` file for your [environment variables](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project), like so: + +``` +REACT_APP_API_URL="http://localhost:8000/api" +``` + +### Middleware (bonus) + +> **Important:** You must complete all of the steps in [back-end](#back-end) before moving onto this section. + +Inside of `server/middleware/rateLimiter.js`, create a custom middleware function in which you implement rate limiting for your API with the following guidelines. + +- [ ] Require each request to `/api/pokemon` to include a `User` property in the header +- [ ] Only allow a single user to make 100 requests per hour +- [ ] Mount your middleware in an appropriate location in `server/server.js` +- [ ] Update your front-end to send `user` property with each request + +### Available Resources + +You may visit each of these resources directly, or search for them on Google with the [`site:`](https://support.google.com/websearch/answer/2466433?hl=en) operator: + +- [MDN](https://developer.mozilla.org/en-US/) +- [Stack Overflow](http://stackoverflow.com/) +- [Express docs](https://expressjs.com/) +- [Mongo docs](https://docs.mongodb.com/) +- [Mongoose docs](http://mongoosejs.com/docs/index.html) +- [React docs](https://facebook.github.io/react/docs/getting-started.html) +- [Angular docs](https://docs.angularjs.org/api) +- [Backbone docs](http://backbonejs.org/) +- [Webpack docs](https://webpack.github.io/docs/) diff --git a/poke-mongo/data/pokemon.json b/poke-mongo/data/pokemon.json new file mode 100644 index 0000000..863c9ad --- /dev/null +++ b/poke-mongo/data/pokemon.json @@ -0,0 +1,908 @@ +[ + { + "number": 1, + "name": "Bulbasaur", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/001.png?raw=true" + }, + { + "number": 2, + "name": "Ivysaur", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/002.png?raw=true" + }, + { + "number": 3, + "name": "Venusaur", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/003.png?raw=true" + }, + { + "number": 4, + "name": "Charmander", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/004.png?raw=true" + }, + { + "number": 5, + "name": "Charmeleon", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/005.png?raw=true" + }, + { + "number": 6, + "name": "Charizard", + "types": ["Fire", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/006.png?raw=true" + }, + { + "number": 7, + "name": "Squirtle", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/007.png?raw=true" + }, + { + "number": 8, + "name": "Wartortle", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/008.png?raw=true" + }, + { + "number": 9, + "name": "Blastoise", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/009.png?raw=true" + }, + { + "number": 10, + "name": "Caterpie", + "types": ["Bug"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/010.png?raw=true" + }, + { + "number": 11, + "name": "Metapod", + "types": ["Bug"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/011.png?raw=true" + }, + { + "number": 12, + "name": "Butterfree", + "types": ["Bug", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/012.png?raw=true" + }, + { + "number": 13, + "name": "Weedle", + "types": ["Bug", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/013.png?raw=true" + }, + { + "number": 14, + "name": "Kakuna", + "types": ["Bug", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/014.png?raw=true" + }, + { + "number": 15, + "name": "Beedrill", + "types": ["Bug", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/015.png?raw=true" + }, + { + "number": 16, + "name": "Pidgey", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/016.png?raw=true" + }, + { + "number": 17, + "name": "Pidgeotto", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/017.png?raw=true" + }, + { + "number": 18, + "name": "Pidgeot", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/018.png?raw=true" + }, + { + "number": 19, + "name": "Rattata", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/019.png?raw=true" + }, + { + "number": 20, + "name": "Raticate", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/020.png?raw=true" + }, + { + "number": 21, + "name": "Spearow", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/021.png?raw=true" + }, + { + "number": 22, + "name": "Fearow", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/022.png?raw=true" + }, + { + "number": 23, + "name": "Ekans", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/023.png?raw=true" + }, + { + "number": 24, + "name": "Arbok", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/024.png?raw=true" + }, + { + "number": 25, + "name": "Pikachu", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/025.png?raw=true" + }, + { + "number": 26, + "name": "Raichu", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/026.png?raw=true" + }, + { + "number": 27, + "name": "Sandshrew", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/027.png?raw=true" + }, + { + "number": 28, + "name": "Sandslash", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/028.png?raw=true" + }, + { + "number": 29, + "name": "Nidoran (♀)", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/029.png?raw=true" + }, + { + "number": 30, + "name": "Nidorina", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/030.png?raw=true" + }, + { + "number": 31, + "name": "Nidoqueen", + "types": ["Poison", "Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/031.png?raw=true" + }, + { + "number": 32, + "name": "Nidoran (♂)", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/032.png?raw=true" + }, + { + "number": 33, + "name": "Nidorino", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/033.png?raw=true" + }, + { + "number": 34, + "name": "Nidoking", + "types": ["Poison", "Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/034.png?raw=true" + }, + { + "number": 35, + "name": "Clefairy", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/035.png?raw=true" + }, + { + "number": 36, + "name": "Clefable", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/036.png?raw=true" + }, + { + "number": 37, + "name": "Vulpix", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/037.png?raw=true" + }, + { + "number": 38, + "name": "Ninetales", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/038.png?raw=true" + }, + { + "number": 39, + "name": "Jigglypuff", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/039.png?raw=true" + }, + { + "number": 40, + "name": "Wigglytuff", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/040.png?raw=true" + }, + { + "number": 41, + "name": "Zubat", + "types": ["Poison", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/041.png?raw=true" + }, + { + "number": 42, + "name": "Golbat", + "types": ["Poison", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/042.png?raw=true" + }, + { + "number": 43, + "name": "Oddish", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/043.png?raw=true" + }, + { + "number": 44, + "name": "Gloom", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/044.png?raw=true" + }, + { + "number": 45, + "name": "Vileplume", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/045.png?raw=true" + }, + { + "number": 46, + "name": "Paras", + "types": ["Bug", "Grass"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/046.png?raw=true" + }, + { + "number": 47, + "name": "Parasect", + "types": ["Bug", "Grass"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/047.png?raw=true" + }, + { + "number": 48, + "name": "Venonat", + "types": ["Bug", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/048.png?raw=true" + }, + { + "number": 49, + "name": "Venomoth", + "types": ["Bug", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/049.png?raw=true" + }, + { + "number": 50, + "name": "Diglett", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/050.png?raw=true" + }, + { + "number": 51, + "name": "Dugtrio", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/051.png?raw=true" + }, + { + "number": 52, + "name": "Meowth", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/052.png?raw=true" + }, + { + "number": 53, + "name": "Persian", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/053.png?raw=true" + }, + { + "number": 54, + "name": "Psyduck", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/054.png?raw=true" + }, + { + "number": 55, + "name": "Golduck", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/055.png?raw=true" + }, + { + "number": 56, + "name": "Mankey", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/056.png?raw=true" + }, + { + "number": 57, + "name": "Primeape", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/057.png?raw=true" + }, + { + "number": 58, + "name": "Growlithe", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/058.png?raw=true" + }, + { + "number": 59, + "name": "Arcanine", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/059.png?raw=true" + }, + { + "number": 60, + "name": "Poliwag", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/060.png?raw=true" + }, + { + "number": 61, + "name": "Poliwhirl", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/061.png?raw=true" + }, + { + "number": 62, + "name": "Poliwrath", + "types": ["Water", "Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/062.png?raw=true" + }, + { + "number": 63, + "name": "Abra", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/063.png?raw=true" + }, + { + "number": 64, + "name": "Kadabra", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/064.png?raw=true" + }, + { + "number": 65, + "name": "Alakazam", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/065.png?raw=true" + }, + { + "number": 66, + "name": "Machop", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/066.png?raw=true" + }, + { + "number": 67, + "name": "Machoke", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/067.png?raw=true" + }, + { + "number": 68, + "name": "Machamp", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/068.png?raw=true" + }, + { + "number": 69, + "name": "Bellsprout", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/069.png?raw=true" + }, + { + "number": 70, + "name": "Weepinbell", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/070.png?raw=true" + }, + { + "number": 71, + "name": "Victreebel", + "types": ["Grass", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/071.png?raw=true" + }, + { + "number": 72, + "name": "Tentacool", + "types": ["Water", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/072.png?raw=true" + }, + { + "number": 73, + "name": "Tentacruel", + "types": ["Water", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/073.png?raw=true" + }, + { + "number": 74, + "name": "Geodude", + "types": ["Rock", "Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/074.png?raw=true" + }, + { + "number": 75, + "name": "Graveler", + "types": ["Rock", "Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/075.png?raw=true" + }, + { + "number": 76, + "name": "Golem", + "types": ["Rock", "Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/076.png?raw=true" + }, + { + "number": 77, + "name": "Ponyta", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/077.png?raw=true" + }, + { + "number": 78, + "name": "Rapidash", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/078.png?raw=true" + }, + { + "number": 79, + "name": "Slowpoke", + "types": ["Water", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/079.png?raw=true" + }, + { + "number": 80, + "name": "Slowbro", + "types": ["Water", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/080.png?raw=true" + }, + { + "number": 81, + "name": "Magnemite", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/081.png?raw=true" + }, + { + "number": 82, + "name": "Magneton", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/082.png?raw=true" + }, + { + "number": 83, + "name": "Farfetch'd", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/083.png?raw=true" + }, + { + "number": 84, + "name": "Doduo", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/084.png?raw=true" + }, + { + "number": 85, + "name": "Dodrio", + "types": ["Normal", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/085.png?raw=true" + }, + { + "number": 86, + "name": "Seel", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/086.png?raw=true" + }, + { + "number": 87, + "name": "Dewgong", + "types": ["Water", "Ice"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/087.png?raw=true" + }, + { + "number": 88, + "name": "Grimer", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/088.png?raw=true" + }, + { + "number": 89, + "name": "Muk", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/089.png?raw=true" + }, + { + "number": 90, + "name": "Shellder", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/090.png?raw=true" + }, + { + "number": 91, + "name": "Cloyster", + "types": ["Water", "Ice"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/091.png?raw=true" + }, + { + "number": 92, + "name": "Gastly", + "types": ["Ghost", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/092.png?raw=true" + }, + { + "number": 93, + "name": "Haunter", + "types": ["Ghost", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/093.png?raw=true" + }, + { + "number": 94, + "name": "Gengar", + "types": ["Ghost", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/094.png?raw=true" + }, + { + "number": 95, + "name": "Onix", + "types": ["Rock"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/095.png?raw=true" + }, + { + "number": 96, + "name": "Drowzee", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/096.png?raw=true" + }, + { + "number": 97, + "name": "Hypno", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/097.png?raw=true" + }, + { + "number": 98, + "name": "Krabby", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/098.png?raw=true" + }, + { + "number": 99, + "name": "Kingler", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/099.png?raw=true" + }, + { + "number": 100, + "name": "Voltorb", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/100.png?raw=true" + }, + { + "number": 101, + "name": "Electrode", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/101.png?raw=true" + }, + { + "number": 102, + "name": "Exeggcute", + "types": ["Grass", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/102.png?raw=true" + }, + { + "number": 103, + "name": "Exeggutor", + "types": ["Grass", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/103.png?raw=true" + }, + { + "number": 104, + "name": "Cubone", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/104.png?raw=true" + }, + { + "number": 105, + "name": "Marowak", + "types": ["Ground"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/105.png?raw=true" + }, + { + "number": 106, + "name": "Hitmonlee", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/106.png?raw=true" + }, + { + "number": 107, + "name": "Hitmonchan", + "types": ["Fighting"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/107.png?raw=true" + }, + { + "number": 108, + "name": "Lickitung", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/108.png?raw=true" + }, + { + "number": 109, + "name": "Koffing", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/109.png?raw=true" + }, + { + "number": 110, + "name": "Weezing", + "types": ["Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/110.png?raw=true" + }, + { + "number": 111, + "name": "Rhyhorn", + "types": ["Ground", "Rock"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/111.png?raw=true" + }, + { + "number": 112, + "name": "Rhydon", + "types": ["Ground", "Rock"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/112.png?raw=true" + }, + { + "number": 113, + "name": "Chansey", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/113.png?raw=true" + }, + { + "number": 114, + "name": "Tangela", + "types": ["Grass"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/114.png?raw=true" + }, + { + "number": 115, + "name": "Kangaskhan", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/115.png?raw=true" + }, + { + "number": 116, + "name": "Horsea", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/116.png?raw=true" + }, + { + "number": 117, + "name": "Seadra", + "types": ["Water", "Poison"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/117.png?raw=true" + }, + { + "number": 118, + "name": "Goldeen", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/118.png?raw=true" + }, + { + "number": 119, + "name": "Seaking", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/119.png?raw=true" + }, + { + "number": 120, + "name": "Staryu", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/120.png?raw=true" + }, + { + "number": 121, + "name": "Starmie", + "types": ["Water", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/121.png?raw=true" + }, + { + "number": 122, + "name": "Mr. Mime", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/122.png?raw=true" + }, + { + "number": 123, + "name": "Scyther", + "types": ["Bug", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/123.png?raw=true" + }, + { + "number": 124, + "name": "Jynx", + "types": ["Ice", "Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/124.png?raw=true" + }, + { + "number": 125, + "name": "Electabuzz", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/125.png?raw=true" + }, + { + "number": 126, + "name": "Magmar", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/126.png?raw=true" + }, + { + "number": 127, + "name": "Pinsir", + "types": ["Bug"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/127.png?raw=true" + }, + { + "number": 128, + "name": "Tauros", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/128.png?raw=true" + }, + { + "number": 129, + "name": "Magikarp", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/129.png?raw=true" + }, + { + "number": 130, + "name": "Gyarados", + "types": ["Water", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/130.png?raw=true" + }, + { + "number": 131, + "name": "Lapras", + "types": ["Water", "Ice"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/131.png?raw=true" + }, + { + "number": 132, + "name": "Ditto", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/132.png?raw=true" + }, + { + "number": 133, + "name": "Eevee", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/133.png?raw=true" + }, + { + "number": 134, + "name": "Vaporeon", + "types": ["Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/134.png?raw=true" + }, + { + "number": 135, + "name": "Jolteon", + "types": ["Electric"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/135.png?raw=true" + }, + { + "number": 136, + "name": "Flareon", + "types": ["Fire"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/136.png?raw=true" + }, + { + "number": 137, + "name": "Porygon", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/137.png?raw=true" + }, + { + "number": 138, + "name": "Omanyte", + "types": ["Rock", "Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/138.png?raw=true" + }, + { + "number": 139, + "name": "Omastar", + "types": ["Rock", "Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/139.png?raw=true" + }, + { + "number": 140, + "name": "Kabuto", + "types": ["Rock", "Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/140.png?raw=true" + }, + { + "number": 141, + "name": "Kabutops", + "types": ["Rock", "Water"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/141.png?raw=true" + }, + { + "number": 142, + "name": "Aerodactyl", + "types": ["Rock", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/142.png?raw=true" + }, + { + "number": 143, + "name": "Snorlax", + "types": ["Normal"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/143.png?raw=true" + }, + { + "number": 144, + "name": "Articuno", + "types": ["Ice", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/144.png?raw=true" + }, + { + "number": 145, + "name": "Zapdos", + "types": ["Electric", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/145.png?raw=true" + }, + { + "number": 146, + "name": "Moltres", + "types": ["Fire", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/146.png?raw=true" + }, + { + "number": 147, + "name": "Dratini", + "types": ["Dragon"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/147.png?raw=true" + }, + { + "number": 148, + "name": "Dragonair", + "types": ["Dragon"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/148.png?raw=true" + }, + { + "number": 149, + "name": "Dragonite", + "types": ["Dragon", "Flying"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/149.png?raw=true" + }, + { + "number": 150, + "name": "Mewtwo", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/150.png?raw=true" + }, + { + "number": 151, + "name": "Mew", + "types": ["Psychic"], + "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/151.png?raw=true" + } + ] \ No newline at end of file diff --git a/poke-mongo/server/db/index.js b/poke-mongo/server/db/index.js new file mode 100644 index 0000000..433babf --- /dev/null +++ b/poke-mongo/server/db/index.js @@ -0,0 +1,3 @@ +/** + * Your Database Connection comes here + */ \ No newline at end of file diff --git a/poke-mongo/server/index.js b/poke-mongo/server/index.js new file mode 100644 index 0000000..66cd61e --- /dev/null +++ b/poke-mongo/server/index.js @@ -0,0 +1,3 @@ +/** + * Your server comes here + */ \ No newline at end of file diff --git a/task-management/client/.gitignore b/task-management/client/.gitignore deleted file mode 100644 index 4d29575..0000000 --- a/task-management/client/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/task-management/client/README.md b/task-management/client/README.md deleted file mode 100644 index 58beeac..0000000 --- a/task-management/client/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Getting Started with Create React App - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in your browser. - -The page will reload when you make changes.\ -You may also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` - -**Note: this is a one-way operation. Once you `eject`, you can't go back!** - -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. - -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. - -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. - -## Learn More - -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). - -To learn React, check out the [React documentation](https://reactjs.org/). - -### Code Splitting - -This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) - -### Analyzing the Bundle Size - -This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) - -### Making a Progressive Web App - -This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) - -### Advanced Configuration - -This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) - -### Deployment - -This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) - -### `npm run build` fails to minify - -This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) diff --git a/task-management/client/package.json b/task-management/client/package.json deleted file mode 100644 index c7eed8d..0000000 --- a/task-management/client/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "client", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.16.1", - "@testing-library/react": "^12.1.2", - "@testing-library/user-event": "^13.5.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-scripts": "5.0.0", - "web-vitals": "^2.1.2" - }, - "scripts": { - "seed-database": "node seed-database", - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/task-management/client/public/favicon.ico b/task-management/client/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB
3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/task-management/client/public/index.html b/task-management/client/public/index.html deleted file mode 100644 index aa069f2..0000000 --- a/task-management/client/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
- - - diff --git a/task-management/client/public/logo192.png b/task-management/client/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/task-management/client/public/manifest.json b/task-management/client/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/task-management/client/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/task-management/client/public/robots.txt b/task-management/client/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/task-management/client/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/task-management/client/src/App.css b/task-management/client/src/App.css deleted file mode 100644 index 74b5e05..0000000 --- a/task-management/client/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/task-management/client/src/App.js b/task-management/client/src/App.js deleted file mode 100644 index 3784575..0000000 --- a/task-management/client/src/App.js +++ /dev/null @@ -1,25 +0,0 @@ -import logo from './logo.svg'; -import './App.css'; - -function App() { - return ( - - ); -} - -export default App; diff --git a/task-management/client/src/App.test.js b/task-management/client/src/App.test.js deleted file mode 100644 index 1f03afe..0000000 --- a/task-management/client/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/task-management/client/src/index.css b/task-management/client/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/task-management/client/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/task-management/client/src/index.js b/task-management/client/src/index.js deleted file mode 100644 index ef2edf8..0000000 --- a/task-management/client/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; - -ReactDOM.render( - - - , - document.getElementById('root') -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/task-management/client/src/logo.svg b/task-management/client/src/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/task-management/client/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/task-management/client/src/reportWebVitals.js b/task-management/client/src/reportWebVitals.js deleted file mode 100644 index 5253d3a..0000000 --- a/task-management/client/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/task-management/client/src/setupTests.js b/task-management/client/src/setupTests.js deleted file mode 100644 index 8f2609b..0000000 --- a/task-management/client/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; diff --git a/task-management/seeder.js b/task-management/seeder.js deleted file mode 100644 index d011a40..0000000 --- a/task-management/seeder.js +++ /dev/null @@ -1,75 +0,0 @@ -/** -const fs = require('fs') -const util = require('util') -const readDir = util.promisify(fs.readdir).bind(fs) -const path = require('path') -const mongoose = require('mongoose') -import dummy_data from './dummy_data' - -function toTitleCase (str) { - return str.replace(/\w\S/g, (txt) => { - return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase() - }) -} - -async function seedDatabase (runSaveMiddleware = false) { - const dir = await readDir(__dirname) - const seedFiles = dir.filter(f => f.endsWith('.seed.js')) - - for (const file of seedFiles) { - const fileName = file.split('.seed.js')[0] - const modelName = toTitleCase(fileName) - const model = mongoose.models[modelName] - - if (!model) throw new Error(`Cannot find Model '${modelName}'`) - const fileContents = require(path.join(__dirname, dummy_data.js)) - - runSaveMiddleware - ? await model.create(fileContents) - : await model.insertMany(fileContents) - } -} -*/ - -/** -import { Seeder } from 'mongoose-data-seed'; -import { Task } from '../server/models'; -import dummy_data from './dummy_data'; - -class TaskSeeder extends Seeder { - async shouldRun() { - return Task.countDocuments() - .exec() - .then(count => count === 0); - } - - async run() { - return Task.create(dummy_data); - } -} - -export default TaskSeeder; -*/ - -/* -import seeder from "mongoose-seed"; -import dummy_data from "./dummy_data"; - -const db = 'mongodb://localhost:27017/test'; - -seeder.connect(db, function () { - seeder.loadModels(modelpaths: [ - "task-management\server\models\Task.js" - ]); - seeder.clearModels(models: ["task-management\server\models\Task.js"]); - seeder.populateModels(dummy_data, cb: function(err,done) { - if(err) { - return console.log("seed err", err) - } - if(done) { - return console.log("seed done", done); - } - - seeder.disconnect() - }) -})*/ \ No newline at end of file diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js index 3485cf7..05aaea5 100644 --- a/task-management/server/db/index.js +++ b/task-management/server/db/index.js @@ -1,36 +1,3 @@ /** * Connect to the Database with Mongoose here - */ - - -const mongoose = require('mongoose'); - -main().catch(err => console.log(err)); - -// open a connection to the test database on our locally running instance of MongoDB. -async function main() { - await mongoose.connect('mongodb://localhost:27017/test'); -} - - -import seeder from "mongoose-seed"; -import dummy_data from "./dummy_data"; - -const db = 'mongodb://localhost:27017/test'; - -seeder.connect(db, function () { - seeder.loadModels(modelpaths: [ - "task-management\server\models\Task.js" - ]); - seeder.clearModels(models: ["task-management\server\models\Task.js"]); - seeder.populateModels(dummy_data, cb: function(err,done) { - if(err) { - return console.log("seed err", err) - } - if(done) { - return console.log("seed done", done); - } - - seeder.disconnect() - }) -}) + */ \ No newline at end of file diff --git a/task-management/server/index.js b/task-management/server/index.js index d006f1e..66cd61e 100644 --- a/task-management/server/index.js +++ b/task-management/server/index.js @@ -1,15 +1,3 @@ /** * Your server comes here - */ - const express = require('express') - const app = express() - const port = 8000 - - app.get('/', (req, res) => { - res.send('Hello World!') - }) - - app.listen(port, () => { - console.log(`Example app listening at http://localhost:${port}`) - }) - \ No newline at end of file + */ \ No newline at end of file diff --git a/task-management/server/models/Task.js b/task-management/server/models/Task.js deleted file mode 100644 index 594a426eb8da5ff5871d1e35247fe324a929698b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 542 zcmaiw&2EBF6ohBp#CKo^O)Ttd+|;hS!56?nD3+fJ7)^|?Zu^}}NyIiWH}`UWhB?p4w; zTuj{ldN9SMAQIS0*B#KWRLq|#vS5Q1j#T<`yoNCD7w3~rN^sCNKi~CX*!|Y$&^c;~ lO6TwBnvW7sV|MM~wco~;;)f{-xkq$1Y~7=Km^U&k^aCA2SBL-r diff --git a/task-management/server/tasks control.js b/task-management/server/tasks control.js deleted file mode 100644 index e69de29..0000000 From ba2809573f2dc5ccf4a261dfe06ca8e28352669e Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:56:02 +0000 Subject: [PATCH 17/25] Delete README.md --- README.md | 56 ------------------------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index df53d8a..0000000 --- a/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# Final Projects - -## Introduction - -Welcome to Final Projects. This repository will serve as the starter for your final full-stack project. -Before starting, make sure: - -- [ ] You have chosen your teammates for the project -- [ ] You have created an organisation and all your teammates are members - -Make sure that you have already created your own **organisation** with your teammates - -## Get Started - -- [ ] Fork the repository under your organisation -- [ ] Each member should clone the forked repository on his local machine -- [ ] Choose one of the projects that has not been reserved - -## Team composition - -Edit this file by filling your team composition here: - -- [ ] _Student full name_ | _Github username_ | **Scrum Master** -- [ ] _Student full name_ | _Gihub username_ -- [ ] _Student full name_ | _Gihub username_ - -## Technologies - -In you assignment, you have to use all the following Technologies - -- React -- NodeJS -- Express - -Choose one of these Technologies for your DBMS and your ORM - -- [ ] MongoDB + Mongoose -- [ ] MySQL + Sequelize - -Feel free to use any of these technologies - -- Redux -- Bootstrap -- Tailwind -- Gatsby -- ... - -## Submission - -Your final Deadline for submission is **`the 11th of December 2021`**. A weekly follow up session can be organised on demand. - -To submit your work: - -- [ ] Make a demo of your project and upload it to [this folder](https://drive.google.com/drive/folders/14ndlnd1BK9EF7XdZLrgrNdtidr3X-r0a?usp=sharing). If you feel like you need help to get over this, refer to the steps in the [recording guidelines](./RECORDING.md). -- [ ] Deploy your application to one of these [free hosting services](https://blogs.devchallenges.io/posts/tJ26U8MhZTPgBSRSwpqr) or to [heroku](https://www.heroku.com/) -- [ ] Create a Pull Request from your forked repository From 03b23455e111ca328d9209b546bad360e7e8d883 Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:57:09 +0000 Subject: [PATCH 18/25] Delete arts-gallery directory --- arts-gallery/README.md | 104 -------------------------------- arts-gallery/dummy_data.js | 30 --------- arts-gallery/server/db/index.js | 3 - arts-gallery/server/index.js | 3 - 4 files changed, 140 deletions(-) delete mode 100644 arts-gallery/README.md delete mode 100644 arts-gallery/dummy_data.js delete mode 100644 arts-gallery/server/db/index.js delete mode 100644 arts-gallery/server/index.js diff --git a/arts-gallery/README.md b/arts-gallery/README.md deleted file mode 100644 index 9cc366c..0000000 --- a/arts-gallery/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# ArtsGallery - -You will be creating a full-stack application to save paintings into a gallery by uploading them and saving them into a database. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Paintings Gallery - -1. **As a user**, I want to be able to view the paintings I have in my gallery. If no paintings are present in the database, I will have to see a message indicating that `No paintings in Gallery` and a button to upload new ones. - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create a Painting Schema under `server/models/Painting.js`. It should have these following attributes: - - `id`: Number - - `artist`: String _(for the author field)_ - - `name`: String - - `year`: Number -- Complete the route `/api/paintings` in `server/routes/paintings.routes.js` so that requests to this route are responded to with the data for all the paintings, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- Render each painting in a `Card` containing the image, the name, the artist, and the date. -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Create new Paintings - -1. **As a user**, I want to be able to create new Paintings and save them in the database. First, make this feature work with a simple form where the user can manually input: - -- Name -- Artist -- Year -- Painting url - For consistency, use real data from the internet when you test your application. - -2. **As a user**, I want to be able create new Paintings by uploading images from my local machine. - For this, you should: - -- Add an input of type `file` to your form where user can upload images -- Use `FormData` to send a request including data and files -- Use [multer](https://www.npmjs.com/package/multer) to handle requests including files -- Use [Cloudinary](https://cloudinary.com/) to store images in the cloud and generate urls -- Save the Painting with the data from the inputs and the url generated by Cloudinary - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Edit Existing Paintings - -1. **As a user**, I want to update existing paintings in the database. - -- With every Painting Card, there should be an `Edit` button. -- When the user clicks on `Edit`, a new `Modal` should be rendered -- The `Modal` will contain a **prefilled** form with the data of the selected painting -- The user can click on `Cancel` to close the Modal -- The user can update the data and click on `save` -- The modal will be closed and the data of the painting will be updated in the `PaitningList` component - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Delete Painting - -1. **As a user**, I want to be able to delete existing paintings from the database - -- Each painting card will contain a `Delete` button -- When the user clicks on the `Delete` button, a `Modal` will be rendered with 2 options: `Confirm` and `Cancel` -- Clicking on `Confirm` will delete the painting and close the modal -- The painting will no longuer exist in the `PaintingList` component - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### API Structure - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: - -| URL | HTTP Verb | Request Body | Result | -| :----------------: | :-------: | :----------: | :--------------------------------------------------------------------: | -| /api/paintings | GET | empty | Return JSON of all Paintings | -| /api/paintings | POST | JSON | Create new Painting and return JSON of created Painting | -| /api/paintings/:id | DELETE | empty | Return JSON of single Painting with matching `number` | -| /api/paintings/:id | PUT | FormData | Update Painting with matching `id` and return JSON of updated Painting | - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [Cloudinary API](https://cloudinary.com/documentation/node_integration) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [Academind Node-Multer](https://www.youtube.com/watch?v=srPXMt1Q0nY&ab_channel=Academind) to learn how to handle uploaded images in Node -- [Academind React Image Upload](https://www.youtube.com/watch?v=XeiOnkEI7XI&ab_channel=Academind) to learn how to upload images in React -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use diff --git a/arts-gallery/dummy_data.js b/arts-gallery/dummy_data.js deleted file mode 100644 index 39ce787..0000000 --- a/arts-gallery/dummy_data.js +++ /dev/null @@ -1,30 +0,0 @@ -module.exports = [ - { - 'id': 1234, - 'name': 'Guernica', - 'artist': 'Picasso', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/ca/27/70/shutterstock-337184468.jpg', - 'year': 1937 - }, - { - 'id': 5265, - 'name': 'The Girl With A Pearl Earring', - 'artist': 'Johannes Vermeer', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/9d/d2/c4/meisje-met-de-parel.jpg', - 'year': 1665 - }, - { - 'id': 4487, - 'name': 'The Scream', - 'artist': 'Edvard Munch', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/5f/96/29/edvard-munch-1893-the-scream-oil-tempera-and-pastel-on-cardboard-91-x-73-cm-national-gallery-of-norway.jpg', - 'year': 1893 - }, - { - 'id': 8357, - 'name': 'The Starry Night', - 'artist': 'Vincent van Gogh', - 'image': 'https://www.worldatlas.com/r/w960-q80/upload/1f/e7/fd/1280px-van-gogh-starry-night-google-art-project.jpg', - 'year': 1889 - } - ]; \ No newline at end of file diff --git a/arts-gallery/server/db/index.js b/arts-gallery/server/db/index.js deleted file mode 100644 index 433babf..0000000 --- a/arts-gallery/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your Database Connection comes here - */ \ No newline at end of file diff --git a/arts-gallery/server/index.js b/arts-gallery/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/arts-gallery/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file From 423eed38749cd6cf5ddee4ee301508955911d120 Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:57:53 +0000 Subject: [PATCH 19/25] Delete gift-store directory --- gift-store/README.md | 115 ---------- gift-store/Team Composition | 14 -- gift-store/app.js | 24 -- gift-store/dummy_data.js | 34 --- gift-store/models/Category.js | 26 --- gift-store/models/Product.js | 40 ---- gift-store/public/favicon.ico | Bin 3870 -> 0 bytes gift-store/public/index.html | 43 ---- gift-store/public/logo192.png | Bin 5347 -> 0 bytes gift-store/public/logo512.png | Bin 9664 -> 0 bytes gift-store/public/manifest.json | 25 --- gift-store/public/robots.txt | 3 - gift-store/routes/CategoryRoutes.js | 19 -- gift-store/routes/ProductRoutes.js | 29 --- gift-store/server/db/index.js | 3 - gift-store/server/index.js | 3 - gift-store/services/CategoryService.js | 65 ------ gift-store/services/ProductService.js | 95 -------- gift-store/src/App.css | 38 ---- gift-store/src/App.js | 32 --- gift-store/src/App.test.js | 8 - gift-store/src/Pages/AddCategory.js | 85 -------- gift-store/src/Pages/AddProduct.js | 121 ----------- gift-store/src/Pages/CategoriesList.js | 148 ------------- gift-store/src/Pages/ProductList.js | 242 --------------------- gift-store/src/SharedComponents/history.js | 3 - gift-store/src/index.css | 13 -- gift-store/src/index.js | 17 -- gift-store/src/logo.svg | 1 - gift-store/src/reportWebVitals.js | 13 -- gift-store/src/setupTests.js | 5 - 31 files changed, 1264 deletions(-) delete mode 100644 gift-store/README.md delete mode 100644 gift-store/Team Composition delete mode 100644 gift-store/app.js delete mode 100644 gift-store/dummy_data.js delete mode 100644 gift-store/models/Category.js delete mode 100644 gift-store/models/Product.js delete mode 100644 gift-store/public/favicon.ico delete mode 100644 gift-store/public/index.html delete mode 100644 gift-store/public/logo192.png delete mode 100644 gift-store/public/logo512.png delete mode 100644 gift-store/public/manifest.json delete mode 100644 gift-store/public/robots.txt delete mode 100644 gift-store/routes/CategoryRoutes.js delete mode 100644 gift-store/routes/ProductRoutes.js delete mode 100644 gift-store/server/db/index.js delete mode 100644 gift-store/server/index.js delete mode 100644 gift-store/services/CategoryService.js delete mode 100644 gift-store/services/ProductService.js delete mode 100644 gift-store/src/App.css delete mode 100644 gift-store/src/App.js delete mode 100644 gift-store/src/App.test.js delete mode 100644 gift-store/src/Pages/AddCategory.js delete mode 100644 gift-store/src/Pages/AddProduct.js delete mode 100644 gift-store/src/Pages/CategoriesList.js delete mode 100644 gift-store/src/Pages/ProductList.js delete mode 100644 gift-store/src/SharedComponents/history.js delete mode 100644 gift-store/src/index.css delete mode 100644 gift-store/src/index.js delete mode 100644 gift-store/src/logo.svg delete mode 100644 gift-store/src/reportWebVitals.js delete mode 100644 gift-store/src/setupTests.js diff --git a/gift-store/README.md b/gift-store/README.md deleted file mode 100644 index c78a400..0000000 --- a/gift-store/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# Gift Store - -You will be creating a full-stack application to manage your gift store. It will allow the owner of the stoer to execute all CRUD operations on his gifts,. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Products Table - -1. **As a user**, I want to be able to view the products I have in my database. If no product are present in the database, I will have to see a message indicating that `You have no product` and a button to create new ones. - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command to create a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create a Product Schema under `server/models/Product.js`. It should have these following attributes: - - `id`: Number - - `category`: String - - `quantity`: Number - - `brand`: String - - `image`: String _(the url of the image)_ -- Complete the route `/api/products` in `server/routes/products.routes.js` so that requests to this route are responded to with the data for all the products, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- Render the products in a `Table` containing the image, the name, the brand, the category, the price and the quantity -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Create new Products - -1. **As a user**, I want to be able to create new products and save them in the database. Create a `NewTask` component containing these inputs: - -- `Name`: text -- `Category`: text -- `Quantity`: positive number -- `Price`: positive number -- `Image`: text (the url of the image) - -The data from the form should be sent to `/api/products` and saved to the database. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Edit Existing Products - -1. **As a user**, I want to update the existing products in my management system. - -- With every `Row` in the products table, there should be an `Edit` button. -- When the user clicks on `Edit`, a `Modal` should be rendered -- The `Modal` should contain a form similar to the `CreateProduct` form -- The inputs should be prefilled with `defualtValues` of the product data with 2 buttons (`save` / `cancel`) -- The user can click on `Cancel` to cancel changes -- The user can update the data and click on `save` -- The Modal should be closed and the `Table` should be updated with the nes data -- You should send a PUT request to `/api/products/:id` with the new data from the form - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Delete existing products - -1. **As a user**, I want to delete products. - -- With every `Row` in the products table, there should be a `Delete` button. -- When the user clicks on `Delete`, a `Modal` should be rendered -- The `Modal` should contain 2 buttons: `Confirm` and `Cancel` -- Clicking on `Cancel` will close the Modal -- Clicking on `Delete` should delete the selected Product and close the Modal -- The deleted Product should no longer appear in the `ProductsList` - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### Part 5 - Predefined Categories - -1. **As a user**, I want to group products by category - -- Create a `Category.js` model, `categories.routes.js` router, and a `categories.controller.js` controller -- Each Category should have: - - id: String - - title: String -- Create new categories through Postman -- Refactor the Category input in `CreateProduct` form to be a `Dropdown` containing the categories' titles - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** - -### API Structure - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: - -| URL | HTTP Verb | Request Body | Result | -| :---------------: | :-------: | :----------: | :----------------------------------------------------------: | -| /api/products | GET | empty | Return JSON of all products | -| /api/products | POST | JSON | Create new Product and return JSON of created Product | -| /api/products/:id | DELETE | empty | Return JSON of single Product with matching `id` | -| /api/products/:id | PUT | JSON | Update Product with matching `id` and return updated Product | -| /api/categories | POST | JSON | Create a new category | -| /api/categories | GET | JSON | Return JSON of all categories | - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [Cloudinary API](https://cloudinary.com/documentation/node_integration) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use diff --git a/gift-store/Team Composition b/gift-store/Team Composition deleted file mode 100644 index 2cda389..0000000 --- a/gift-store/Team Composition +++ /dev/null @@ -1,14 +0,0 @@ -our project is a full stack application that we created using react js, node js and mongoDB - -We did the work as follow: - -lina Barkaoui: part 1 and 2 - -Sami chakroun: part 3 and 4 - -Mohab elfaraa: part 5 - -we've done most of the work in face to face meetings. - -We've created a demo to show how our application works - diff --git a/gift-store/app.js b/gift-store/app.js deleted file mode 100644 index 8e230c2..0000000 --- a/gift-store/app.js +++ /dev/null @@ -1,24 +0,0 @@ -const express = require('express') -const cors = require('cors'); -const mongoose = require('mongoose'); -const app = express() -const router = express.Router(); -const PORT = process.env.PORT || 5000 -const apiBaseUrl= '/api' -bodyParser = require('body-parser') // to read the json (type de communication ) -app.use(express.urlencoded({ extended: false})) // to froce JSON -app.use(express.json()) - -mongoose.connect('mongodb://localhost:27017/gift-store') -.then(()=> console.log('MongoDB Connected ...')) -.catch(err=>console.log(err)) -app.use(cors({ - origin: '*' -})); - - -app.use(apiBaseUrl, require('./routes/ProductRoutes')) - -app.use(apiBaseUrl, require('./routes/CategoryRoutes')) - -app.listen(PORT,console.log('Server started on PORT: '+ PORT)) \ No newline at end of file diff --git a/gift-store/dummy_data.js b/gift-store/dummy_data.js deleted file mode 100644 index 860ee91..0000000 --- a/gift-store/dummy_data.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = [ - { - 'id': 1234, - 'name': 'JBL Live 460NC', - 'category': 'Audio', - 'brand': 'JBL', - 'image': 'https://m.media-amazon.com/images/I/61Kq-Pz8d-L._AC_SL1200_.jpg', - 'quantity': 10 - }, - { - 'id': 5265, - 'name': 'JBL CHARGE 5', - 'category': 'Audio', - 'brand': 'JBL', - 'image': 'https://m.media-amazon.com/images/I/71Gk3H-tIqL._AC_SL1500_.jpg', - 'quantity': 5 - }, - { - 'id': 4487, - 'name': 'Roku Smart TV', - 'category': 'Video', - 'brand': 'Roku', - 'image': 'https://m.media-amazon.com/images/I/71gzlKauNQL._AC_SL1500_.jpg', - 'quantity': 7 - }, - { - 'id': 8357, - 'name': 'Razer Viper Ultimate', - 'category': 'Accessories', - 'brand': 'Razer', - 'image': 'https://m.media-amazon.com/images/I/6157EeRHinL._AC_SL1500_.jpg', - 'quantity': 1 - } -]; \ No newline at end of file diff --git a/gift-store/models/Category.js b/gift-store/models/Category.js deleted file mode 100644 index 31b8631..0000000 --- a/gift-store/models/Category.js +++ /dev/null @@ -1,26 +0,0 @@ -const mongoose = require('mongoose'); -const Schema = mongoose.Schema; - - -let categorySchema = new Schema({ // mongo works with schema (entity) - _id: { - type: mongoose.Schema.Types.ObjectId, - auto: true - }, - title: { - type: String, - required: true - }, - created: { - type: Date, - default : Date.now() - }, - updated: { - type: Date, - default : Date.now() - } -}, { - collection: 'category' - }) - -module.exports = mongoose.model('Category', categorySchema) \ No newline at end of file diff --git a/gift-store/models/Product.js b/gift-store/models/Product.js deleted file mode 100644 index 08a1724..0000000 --- a/gift-store/models/Product.js +++ /dev/null @@ -1,40 +0,0 @@ -const mongoose = require('mongoose'); -const Schema = mongoose.Schema; - -let productSchema = new Schema({ // mongo works with schema (entity) - _id: { - type: mongoose.Schema.Types.ObjectId, - auto: true - }, - name: { - type: String, - required: true - }, - price: { - type: Number, - required: true - }, - quantity: { - type: Number, - default: 0 - }, - category: { - type: String, - required: true - }, - image: { - type: String - }, - created: { - type: Date, - default : Date.now() - }, - updated: { - type: Date, - default : Date.now() - } -}, { - collection: 'product' - }) - -module.exports = mongoose.model('Product', productSchema) \ No newline at end of file diff --git a/gift-store/public/favicon.ico b/gift-store/public/favicon.ico deleted file mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ diff --git a/gift-store/public/index.html b/gift-store/public/index.html deleted file mode 100644 index aa069f2..0000000 --- a/gift-store/public/index.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - React App - - - -
- - - diff --git a/gift-store/public/logo192.png b/gift-store/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN diff --git a/gift-store/public/manifest.json b/gift-store/public/manifest.json deleted file mode 100644 index 080d6c7..0000000 --- a/gift-store/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/gift-store/public/robots.txt b/gift-store/public/robots.txt deleted file mode 100644 index e9e57dc..0000000 --- a/gift-store/public/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: diff --git a/gift-store/routes/CategoryRoutes.js b/gift-store/routes/CategoryRoutes.js deleted file mode 100644 index 94f3877..0000000 --- a/gift-store/routes/CategoryRoutes.js +++ /dev/null @@ -1,19 +0,0 @@ -let express = require('express'); -let router = express.Router(); - -const controllerUrl = '/categories' - -let service = require('../services/CategoryService'); - - - -// GET All Categories "/api/categories" -router.get(controllerUrl, (req, res, next) => { - service.findAllCategories(req,res); -}); -// POST add a Category "/api/categories" -router.post(controllerUrl, (req, res, next) => { - service.saveCategory(req,res); -}); - -module.exports = router; \ No newline at end of file diff --git a/gift-store/routes/ProductRoutes.js b/gift-store/routes/ProductRoutes.js deleted file mode 100644 index 5960d85..0000000 --- a/gift-store/routes/ProductRoutes.js +++ /dev/null @@ -1,29 +0,0 @@ -let express = require('express'); -let router = express.Router(); - -const controllerUrl = '/products' - -let service = require('../services/ProductService'); - - - -// GET All Product "/api/products" -router.get(controllerUrl, (req, res, next) => { - service.findAllProducts(req,res); -}); -// POST add a Product "/api/products" -router.post(controllerUrl, (req, res, next) => { - service.saveProduct(req,res); -}); -// DELETE delete a Product by id "/api/products" -router.delete(controllerUrl+'/:id', (req, res, next) => { - service.deleteProduct(req,res); -}); - -// Put add a Product "/api/products" -router.put(controllerUrl+'/:id', (req, res, next) => { - service.updateProduct(req,res); -}); - - -module.exports = router; \ No newline at end of file diff --git a/gift-store/server/db/index.js b/gift-store/server/db/index.js deleted file mode 100644 index 05aaea5..0000000 --- a/gift-store/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Connect to the Database with Mongoose here - */ \ No newline at end of file diff --git a/gift-store/server/index.js b/gift-store/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/gift-store/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file diff --git a/gift-store/services/CategoryService.js b/gift-store/services/CategoryService.js deleted file mode 100644 index 91ce74e..0000000 --- a/gift-store/services/CategoryService.js +++ /dev/null @@ -1,65 +0,0 @@ -mongoose = require('mongoose'); - -let Category = require('../models/Category'); -const { search } = require('../routes/ProductRoutes'); - - -const DIR = './src/images/'; - -exports.findAllCategories = function (req, res) { // exports public - Category.find().then(data => { - if (data.length) { - res.status(200).json({ - message: "Categories retrieved successfully!", - categories: data - }); - } else { - res.status(404).json({ - message: "There are no Categories" - }); - } - }); -} - -exports.saveCategory = function (req, res) { - - - - let newCategory = new Category({ - title: req.body.title - - }); - - newCategory.save(newCategory).then(result => { - console.log("this is the result of a Category", result); - - res.status(201).json({ - message: "Category created successfully!", - CategoryCreated: { - _id: result._id, - title: result.title - - } - }) - }).catch(err => { - console.log(err), - res.status(500).json({ - error: err - }); - }); - -} - -exports.findCategory = function (req, res) { - - Category.find({title: req.body.category}) - .then(data => { - if(!data.length){ - let newCategory = new Category({ - title: req.body.category - - }); - newCategory.save(newCategory).then(result => {}) - } - }); -} \ No newline at end of file diff --git a/gift-store/services/ProductService.js b/gift-store/services/ProductService.js deleted file mode 100644 index 2954f71..0000000 --- a/gift-store/services/ProductService.js +++ /dev/null @@ -1,95 +0,0 @@ -mongoose = require('mongoose'); - -let Product = require('../models/Product'); -let CategoryService = require('../services/CategoryService'); - -const DIR = './src/images/'; - -exports.findAllProducts = function (req, res) { // exports public - Product.find().then(data => { - console.log(data) - if (data.length) { - res.status(200).json({ - message: "Products retrieved successfully!", - products: data - }); - } else { - res.status(404).json({ - message: "There are no products", - }); - } - }); -} - - -exports.saveProduct = function (req, res) { - - const url = req.protocol + '://' + req.get('host') - CategoryService.findCategory(req,res); - - let newProduct = new Product({ - name: req.body.name, - price: req.body.price, - category: req.body.category, - quantity: req.body.quantity - //image: url + '/public/' +req.body.image - }); - - newProduct.save(newProduct).then(result => { - console.log("this is the result of a product", result); - - res.status(201).json({ - message: "Product created successfully!", - productCreated: { - _id: result._id, - name: result.name, - price: result.price, - category: result.category, - quantity: result.quantity, - } - }) - }).catch(err => { - console.log(err), - res.status(500).json({ - error: err - }); - }); - -} - -exports.deleteProduct = function (req, res) { - Product.deleteOne({_id: req.params.id}).then(result => { - if (result.deletedCount > 0) { - res.status(204).json({message: "Product deleted successfully!"}); - } else { - res.status(404).json({message: "Product not found!"}); - } - }).catch(err => { - console.log(err), - res.status(500).json({ - error: err - }); - }); -} -exports.updateProduct = function (req, res) { -console.log(req.params) - Product.findOne({_id: req.params.id}) - .then(data => { - if(data){ - data.name = req.body.name; - data.price = req.body.price; - data.quantity = req.body.quantity; - CategoryService.findCategory(req,res); - data.category= req.body.category; - data.updated= Date.now() - Product.updateOne(data).then(result =>{ - if (result) { - res.status(200).json({message: "Product updated successfully!"}); - } else { - res.status(500).json({message: "ERROR"}); - } - }) - - } - }); -} \ No newline at end of file diff --git a/gift-store/src/App.css b/gift-store/src/App.css deleted file mode 100644 index 74b5e05..0000000 --- a/gift-store/src/App.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/gift-store/src/App.js b/gift-store/src/App.js deleted file mode 100644 index cb91697..0000000 --- a/gift-store/src/App.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react' -import './App.css' -import Dash from './Pages/ProductList' -import AddProduct from './Pages/AddProduct' -import AddCategory from './Pages/AddCategory' -import ViewCategories from './Pages/CategoriesList' -import {BrowserRouter as Router, Routes, Route} from 'react-router-dom' -import history from './SharedComponents/history' -import { SnackbarProvider } from 'notistack'; - - -export default function App() -{ - return( - - - -
- - }> - }> - }> - }> - -
- -
- -
- - ) -} \ No newline at end of file diff --git a/gift-store/src/App.test.js b/gift-store/src/App.test.js deleted file mode 100644 index 1f03afe..0000000 --- a/gift-store/src/App.test.js +++ /dev/null @@ -1,8 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; - -test('renders learn react link', () => { - render(); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/gift-store/src/Pages/AddCategory.js b/gift-store/src/Pages/AddCategory.js deleted file mode 100644 index 21b3aa2..0000000 --- a/gift-store/src/Pages/AddCategory.js +++ /dev/null @@ -1,85 +0,0 @@ -import React from "react"; -import Grid from "@material-ui/core/Grid"; -import Typography from "@material-ui/core/Typography"; -import TextField from "@material-ui/core/TextField"; -import FormControlLabel from "@material-ui/core/FormControlLabel"; -import Checkbox from "@material-ui/core/Checkbox"; -import {makeStyles} from "@material-ui/core/styles"; -import InfoIcon from "@material-ui/icons/Info"; -import Button from "@material-ui/core/Button"; -import {blue} from "@mui/material/colors"; -import { useNavigate } from "react-router-dom"; - -const divStyle = { - display: "flex", - alignItems: "center", -}; - -const useStyles = makeStyles((theme) => ({ - seeMore: { - marginTop: theme.spacing(3), - }, - marginText: { - marginRight: 6, - }, - buttons: { - display: "flex", - justifyContent: "flex-end", - }, - button: { - marginTop: theme.spacing(8), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3) - }, - title: { - marginTop: theme.spacing(1), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - color: theme.palette.secondary.dark - }, -})); -export default function CreateCategory() { - const classes = useStyles(); - let history = useNavigate(); - return ( - - - Create Category - - - - - - -
- - -
-
- ); -} diff --git a/gift-store/src/Pages/AddProduct.js b/gift-store/src/Pages/AddProduct.js deleted file mode 100644 index 97af534..0000000 --- a/gift-store/src/Pages/AddProduct.js +++ /dev/null @@ -1,121 +0,0 @@ -import React from "react"; -import Grid from "@material-ui/core/Grid"; -import Typography from "@material-ui/core/Typography"; -import TextField from "@material-ui/core/TextField"; -import FormControlLabel from "@material-ui/core/FormControlLabel"; -import Checkbox from "@material-ui/core/Checkbox"; -import {makeStyles} from "@material-ui/core/styles"; -import InfoIcon from "@material-ui/icons/Info"; -import Button from "@material-ui/core/Button"; -import {blue} from "@mui/material/colors"; -import { useNavigate } from "react-router-dom"; - -const divStyle = { - display: "flex", - alignItems: "center", -}; - -const useStyles = makeStyles((theme) => ({ - seeMore: { - marginTop: theme.spacing(3), - }, - marginText: { - marginRight: 6, - }, - buttons: { - display: "flex", - justifyContent: "flex-end", - }, - button: { - marginTop: theme.spacing(8), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3) - }, - title: { - marginTop: theme.spacing(1), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - color: theme.palette.secondary.dark - }, -})); -export default function CreateProduct() { - const classes = useStyles(); - let history = useNavigate(); - return ( - - - Create Product - - - - - - - - - - - - - - - - - - -
- - -
-
- ); -} diff --git a/gift-store/src/Pages/CategoriesList.js b/gift-store/src/Pages/CategoriesList.js deleted file mode 100644 index 73f72d7..0000000 --- a/gift-store/src/Pages/CategoriesList.js +++ /dev/null @@ -1,148 +0,0 @@ -import React from 'react'; -import axios from 'axios'; -import Button from "@material-ui/core/Button"; -import {makeStyles} from '@material-ui/core/styles'; -import { useNavigate } from "react-router-dom"; -import { - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, - Paper, - Avatar, - Grid, - Typography, - TablePagination, - TableFooter -} from '@material-ui/core'; -const baseURL = "http://localhost:5000/api/categories"; -const useStyles = makeStyles((theme) => ({ - table: { - minWidth: 650, - }, - tableContainer: { - borderRadius: 15, - margin: '10px 10px', - }, - tableHeaderCell: { - fontWeight: 'bold', - backgroundColor: theme.palette.primary.dark, - color: theme.palette.getContrastText(theme.palette.primary.dark) - }, - avatar: { - backgroundColor: theme.palette.primary.light, - color: theme.palette.getContrastText(theme.palette.primary.light) - }, - name: { - fontWeight: 'bold', - color: theme.palette.secondary.dark - }, - deleteButton: { - fontWeight: 'bold', - background: "#ff3333", - margin: '10px 10px' - }, - updateButton: { - fontWeight: 'bold', - background: "#22bb33", - margin: '10px 10px' - }, - buttons: { - display: "flex", - justifyContent: "flex-end", - marginTop: theme.spacing(2), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - marginBottom: theme.spacing(3) - }, - button: { - display: "flex", - marginTop: theme.spacing(2), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - marginBottom: theme.spacing(3) - }, - status: { - fontWeight: 'bold', - fontSize: '0.75rem', - color: 'white', - backgroundColor: 'grey', - borderRadius: 8, - padding: '3px 10px', - display: 'inline-block' - } -})); - - -function CategoryList() { - - const [categories, setCategories] = React.useState([]); - const classes = useStyles(); - const [page, setPage] = React.useState(0); - const [rowsPerPage, setRowsPerPage] = React.useState(5); - let history = useNavigate(); - const handleChangePage = (event, newPage) => { - setPage(newPage); - }; - - const handleChangeRowsPerPage = (event) => { - setRowsPerPage(+event.target.value); - setPage(0); - }; - - React.useEffect(() => { - axios.get(baseURL).then(response => { - console.log(response) - setCategories(response.data.categories); - }) - .catch(err => console.log(err)); - }, []); - - return ( - - - - - Category ID - title - - - - {categories.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row) => ( - - {row._id} - {row.title} - - ))} - - - - -
-
- -
-
- ); -} - -export default CategoryList; \ No newline at end of file diff --git a/gift-store/src/Pages/ProductList.js b/gift-store/src/Pages/ProductList.js deleted file mode 100644 index 2b3a3a1..0000000 --- a/gift-store/src/Pages/ProductList.js +++ /dev/null @@ -1,242 +0,0 @@ -import React from 'react'; -import Button from "@material-ui/core/Button"; -import {makeStyles} from '@material-ui/core/styles'; -import { useNavigate } from "react-router-dom"; -import axios from 'axios'; -import {useSnackbar} from "notistack"; -import { useState, useEffect } from 'react'; -import { - Table, - TableBody, - TableCell, - TableContainer, - TableHead, - TableRow, - Paper, - Avatar, - Grid, - Typography, - TablePagination, - TableFooter -} from '@material-ui/core'; - -const deleteName = "Delete"; -const updateName = "Update"; -const baseURL = "http://localhost:5000/api/products"; - -const useStyles = makeStyles((theme) => ({ - title: { - marginTop: theme.spacing(1), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - color: theme.palette.secondary.dark - }, - table: { - minWidth: 650, - }, - tableContainer: { - borderRadius: 15, - margin: '10px 10px', - }, - tableHeaderCell: { - fontWeight: 'bold', - backgroundColor: theme.palette.primary.dark, - color: theme.palette.getContrastText(theme.palette.primary.dark) - }, - avatar: { - backgroundColor: theme.palette.primary.light, - color: theme.palette.getContrastText(theme.palette.primary.light) - }, - name: { - fontWeight: 'bold', - color: theme.palette.secondary.dark - }, - deleteButton: { - fontWeight: 'bold', - background: "#ff3333", - margin: '10px 10px' - }, - updateButton: { - fontWeight: 'bold', - background: "#22bb33", - margin: '10px 10px' - }, - buttons: { - display: "flex", - justifyContent: "flex-end", - marginTop: theme.spacing(2), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - marginBottom: theme.spacing(3) - }, - button: { - display: "flex", - marginTop: theme.spacing(2), - marginLeft: theme.spacing(1), - marginRight: theme.spacing(3), - marginBottom: theme.spacing(3) - }, - status: { - fontWeight: 'bold', - fontSize: '0.75rem', - color: 'white', - backgroundColor: 'grey', - borderRadius: 8, - padding: '3px 10px', - display: 'inline-block' - } -})); - - - - - -function ProductList() { - - const [products, setProducts] = useState([]); - const classes = useStyles(); - const [page, setPage] = useState(0); - const [rowsPerPage, setRowsPerPage] = useState(10); - let history = useNavigate(); - const {enqueueSnackbar} = useSnackbar(); - - - - useEffect(() => { - axios.get(baseURL).then(response => { - setProducts(response.data.products); - }) - .catch(err => console.log(err)); - }, []); - const DeleteCategory = (id) => { - axios - .delete(baseURL+"/"+id) - .then(() => { - enqueueSnackbar("Product Deleted successfuly ", { variant: "success" }); - window.location.reload() - }) - .catch((err) => { - console.log(err); - enqueueSnackbar("Something went wrong with the server", { - variant: "error", - }); - }); -}; - const handleChangePage = (event, newPage) => { - setPage(newPage); - }; - - const handleChangeRowsPerPage = (event) => { - setRowsPerPage(+event.target.value); - setPage(0); - }; - - return ( -
- - GIFT STORE CHAKROUN - - - - - - Product ID - Name - Price - Quantity - Category - Creation Date - Last Updated - Actions - - - - {products.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((row) => ( - - - - {row._id} - - - - {row.quantity} - - {row.price} - {row.quantity} - {row.category} - {row.created} - {row.updated} - - - - - ))} - - - - -
-
- - - -
-
-
- ); -} - -export default ProductList; \ No newline at end of file diff --git a/gift-store/src/SharedComponents/history.js b/gift-store/src/SharedComponents/history.js deleted file mode 100644 index 847cdec..0000000 --- a/gift-store/src/SharedComponents/history.js +++ /dev/null @@ -1,3 +0,0 @@ -import { createBrowserHistory as history} from 'history'; - -export default history(); \ No newline at end of file diff --git a/gift-store/src/index.css b/gift-store/src/index.css deleted file mode 100644 index ec2585e..0000000 --- a/gift-store/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/gift-store/src/index.js b/gift-store/src/index.js deleted file mode 100644 index ef2edf8..0000000 --- a/gift-store/src/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import reportWebVitals from './reportWebVitals'; - -ReactDOM.render( - - - , - document.getElementById('root') -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/gift-store/src/logo.svg b/gift-store/src/logo.svg deleted file mode 100644 index 9dfc1c0..0000000 --- a/gift-store/src/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/gift-store/src/reportWebVitals.js b/gift-store/src/reportWebVitals.js deleted file mode 100644 index 5253d3a..0000000 --- a/gift-store/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/gift-store/src/setupTests.js b/gift-store/src/setupTests.js deleted file mode 100644 index 8f2609b..0000000 --- a/gift-store/src/setupTests.js +++ /dev/null @@ -1,5 +0,0 @@ -// jest-dom adds custom jest matchers for asserting on DOM nodes. -// allows you to do things like: -// expect(element).toHaveTextContent(/react/i) -// learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; From dd49f963fb5b29768cecf7ad07469f41db22850b Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:58:06 +0000 Subject: [PATCH 20/25] Delete hacker-news directory --- hacker-news/README.md | 127 ------------------- hacker-news/assets/author-search-a.png | Bin 26708 -> 0 bytes hacker-news/assets/author-search-b.png | Bin 53139 -> 0 bytes hacker-news/assets/recommended-stories.png | Bin 46617 -> 0 bytes hacker-news/assets/top-ten-stories.png | Bin 40905 -> 0 bytes hacker-news/assets/top-ten-story-authors.png | Bin 38899 -> 0 bytes hacker-news/dummy_data.js | 22 ---- hacker-news/server/db/index.js | 3 - hacker-news/server/index.js | 3 - hacker-news/worker.js | 36 ------ 10 files changed, 191 deletions(-) delete mode 100644 hacker-news/README.md delete mode 100644 hacker-news/assets/author-search-a.png delete mode 100644 hacker-news/assets/author-search-b.png delete mode 100644 hacker-news/assets/recommended-stories.png delete mode 100644 hacker-news/assets/top-ten-stories.png delete mode 100644 hacker-news/assets/top-ten-story-authors.png delete mode 100644 hacker-news/dummy_data.js delete mode 100644 hacker-news/server/db/index.js delete mode 100644 hacker-news/server/index.js delete mode 100644 hacker-news/worker.js diff --git a/hacker-news/README.md b/hacker-news/README.md deleted file mode 100644 index 8bae6dd..0000000 --- a/hacker-news/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# HackerNews - -You will be creating a full-stack application to display analytics about [HackerNews](https://news.ycombinator.com/) and its users. In order to do this you will be interacting with the [HackerNews API](https://github.com/HackerNews/API) using a worker process, and storing data from your calls to the API in MongoDB, using the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Top Ten Stories - -1. **As a user**, I want to be able to view the Top Ten Stories on Hacker News (for now, this will be accomplished with the dummy data provided, not live data from the Hacker News API). - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![top-ten-stories](./assets/top-ten-stories.png) - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create the Story Schema under `server/models/Story.js`. It should have these following attributes: - - `id`: Number - - `by`: String _(for the author field)_ - - `title`: String - - `score`: String -- Complete the route `/api/stories` in `server/routes/stories.routes.js` so that requests to this route are responded to with the data for the top ten stories, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Authors of Top Stories - -1. **As a user**, I want to be able to view the authors of the top ten stories, sorted by their karma (for now, this will be accomplished with the seed data retrieved from the server, not live data from the Hacker News API). -1. **As a user**, I want to be able to switch between the top ten stories view and the top ten authors view. - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![top-ten-authors](./assets/top-ten-story-authors.png) - -To implement this user story, you should: - -- Create any new components or directives as necessary -- Create any new server side routes as necessary -- Create or update any database schemas and models as necessary -- Modify the seed.js file to also add author information to the mongo database (if needed, look up how to drop your existing stories collection) - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Worker - -1. **As a user**, I want up to date information about the top ten stories, not just seed data. -1. **As a developer**, I want an easy way to add up to date information about the top ten stories to the database. - -To implement this user and developer story, you should: - -- Build out `worker.js` to store the top stories and top authors it gets from the [HackerNews API](https://github.com/HackerNews/API) in MongoDB, using `db/models/story.js`. You will have to use the ids from your initial request to the API, in order to make additional API requests for stories, as well as use the author username to make additional API requests for author information. (_NOTE: A story's score is not directly related to its rank. You may confirm the current top 10 stories by going to [Hacker News](https://news.ycombinator.com/)_). -- Add an additional npm script to the `package.json` so that a developer could run the worker.js file to populate the database instead of the seed.js script - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 4 - Author Search - -1. **As a user**, I want to be able to see a list of stories by a certain author. -1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, and the author search view. -1. **As a developer**, I want to be able to save the story information retrieved from the HackerNews API in the database so that I don't have to fetch it from the API every time. - -_Please see mockups below - remember, you do NOT need to match the styling, just the content structure._ - -![author-search-a](./assets/author-search-a.png) -![author-search-b](./assets/author-search-b.png) - -To implement this user and developer story, you should: - -- Create any new components or directives as necessary -- Create any new server side routes as necessary -- Create or update any database schemas and models as necessary - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### Part 5 - Story Recommendations - -1. **As a user**, when I click on a story in the top ten view, I want to be able to see 10 other stories _similar_ to this story. -1. **As a user**, I want to be able to switch between the top ten stories view, the top ten authors view, the author search view, and the recommended story view. - -_Please see mockup below - remember, you do NOT need to match the styling, just the content structure._ - -![recommended-stories.png](./assets/recommended-stories.png) - -To implement this user story, you should: - -- Find ten similar stories using the following specification: - - - Recommend stories based on number of shared commenters it has with the story you clicked on. For example, if the story you clicked on has, 4 commenters, _CommenterA_, _CommenterB_, _CommenterC_, and _CommenterD_, a highly recommended story would be another story that all 4 of these same commenters have commented on. A less recommended story would be one that only 3 of the 4 commenters commented on. You would never recommend a story that none of the 4 commenters have commented on. These recommended stories do not have to, and will most likely not, be in the top ten current stories. - - If the story has the same number of shared commenters, sort the story with the highest score first. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 5 Complete`** - -### Part 6 - Live Update - -1. **As a developer**, I want the top ten stories in the database to refresh every minute. - -To implement this developer story, you should: - -- Refactor your application so that `worker.js` runs every minute. -- Refactor you application so that your views automatically refresh when `worker.js` provides it with new data that would affect the view. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 6 Complete`** - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [HackerNews API](https://github.com/HackerNews/API) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use -- [Google Search](https://google.com) to search for the correct page on any of the documentation above diff --git a/hacker-news/assets/author-search-a.png b/hacker-news/assets/author-search-a.png deleted file mode 100644 index 8cacfef9cbded0bdcd23b5c3b94ec75c617131af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26708 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 pn)85-$1*OAnyCFLnAyzY74R4(c)Rf*`?a$l9d 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⁣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 B(G&mx diff --git a/hacker-news/assets/top-ten-stories.png b/hacker-news/assets/top-ten-stories.png deleted file mode 100644 index 65a246796c401cbe0f1c6908375c6523517ae8e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40905 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 BbP@mn diff --git a/hacker-news/assets/top-ten-story-authors.png b/hacker-news/assets/top-ten-story-authors.png deleted file mode 100644 index 7f0b92b4afdbaffe6916cffcdc9492eb2f84a019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38899 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 WfKR1t=j>Af-!W&m! Date: Sat, 1 Jan 2022 02:58:18 +0000 Subject: [PATCH 21/25] Delete poke-mongo directory --- poke-mongo/README.md | 104 ---- poke-mongo/data/pokemon.json | 908 ---------------------------------- poke-mongo/server/db/index.js | 3 - poke-mongo/server/index.js | 3 - 4 files changed, 1018 deletions(-) delete mode 100644 poke-mongo/README.md delete mode 100644 poke-mongo/data/pokemon.json delete mode 100644 poke-mongo/server/db/index.js delete mode 100644 poke-mongo/server/index.js diff --git a/poke-mongo/README.md b/poke-mongo/README.md deleted file mode 100644 index 1a09e94..0000000 --- a/poke-mongo/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# Poké-MongoDB - -You are going to build a Pokémon API with Node, Express, and MongoDB. Your API will allow users to perform CRUD operations on each of the 151 original Pokémon, and power a front-end. - -## Project Structure - -The project contains 2 main directories - -- `server`: for your server side -- `client`: for your client side _(will be generated in the following steps)_ - -## Get Started - -## Requirements - -In addition to your frequent commits, **make a commit after completing each of the following steps** (marked by check boxes), indicating that you have just completed it. It may not be the case that you have time to complete all of the following steps, but regardless, **you must work on them in order.** - -- Back-end -- Front-end -- Middleware - -### Back-end - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Pokémon API: - -| URL | HTTP Verb | Request Body | Result | -| :------------------: | :-------: | :----------: | :----------------------------------------------------------------------: | -| /api/pokemon | GET | empty | Return JSON of all Pokémon | -| /api/pokemon | POST | JSON | Create new Pokémon and return JSON of created Pokémon | -| /api/pokemon | DELETE | empty | Delete all Pokémon in and return JSON of deleted Pokémon | -| /api/pokemon/:number | GET | empty | Return JSON of single Pokémon with matching `number` | -| /api/pokemon/:number | PUT | JSON | Update Pokémon with matching `number` and return JSON of updated Pokémon | -| /api/pokemon/:number | DELETE | empty | Delete Pokémon with matching `number` and return JSON of deleted Pokémon | - -- [ ] Connect Mongoose to your local Mongo database in `db/index.js` -- [ ] Create a Pokémon model in `resources/pokemon/Pokemon.js` and register it with Mongoose as the `Pokemon` collection with the following properties: - - [ ] `number`, a unique number - - [ ] `name`, a unique string - - [ ] `types`, an array of strings - - [ ] `imgUrl`, a string -- [ ] Populate your Mongo database with the 151 original Pokémon found in `data/pokemon.json` -- [ ] Create a controller in `resources/pokemon/pokemonController.js` that interacts with your Pokémon model -- [ ] Create a router in `resources/pokemon/pokemonRouter.js` that utilizes each of your controller's methods. Be sure to handle errors appropriately. -- [ ] Import `pokemon.router` into `server.js` and assign it to the correct route - -### Front-end - -Inside of `client/`, implement a single page front end to interact with this API using React. - -Your front end should be served from Express and should allow the user to: - -- [ ] Display all Pokémon (with their images) -- [ ] Add a new Pokémon -- [ ] Filter Pokémon based on their type -- [ ] Edit existing Pokémon -- [ ] Delete Pokémon - -> **Instructions:** follow these instructions to have a well structured client application - -- [ ] Run this command a brand new React App in a folder named `client`. Then navigate to it. - -``` -npx create-react-app client -cd client/ -``` - -- [ ] Create a new folder called `components` -- [ ] Create the components that you'll need there: - - PokemonList.js - - PokemonDetails.js - - -- [ ] Use [React Router](https://reactrouter.com/) to route and pass data between components -- [ ] Create a `.env` file for your [environment variables](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project), like so: - -``` -REACT_APP_API_URL="http://localhost:8000/api" -``` - -### Middleware (bonus) - -> **Important:** You must complete all of the steps in [back-end](#back-end) before moving onto this section. - -Inside of `server/middleware/rateLimiter.js`, create a custom middleware function in which you implement rate limiting for your API with the following guidelines. - -- [ ] Require each request to `/api/pokemon` to include a `User` property in the header -- [ ] Only allow a single user to make 100 requests per hour -- [ ] Mount your middleware in an appropriate location in `server/server.js` -- [ ] Update your front-end to send `user` property with each request - -### Available Resources - -You may visit each of these resources directly, or search for them on Google with the [`site:`](https://support.google.com/websearch/answer/2466433?hl=en) operator: - -- [MDN](https://developer.mozilla.org/en-US/) -- [Stack Overflow](http://stackoverflow.com/) -- [Express docs](https://expressjs.com/) -- [Mongo docs](https://docs.mongodb.com/) -- [Mongoose docs](http://mongoosejs.com/docs/index.html) -- [React docs](https://facebook.github.io/react/docs/getting-started.html) -- [Angular docs](https://docs.angularjs.org/api) -- [Backbone docs](http://backbonejs.org/) -- [Webpack docs](https://webpack.github.io/docs/) diff --git a/poke-mongo/data/pokemon.json b/poke-mongo/data/pokemon.json deleted file mode 100644 index 863c9ad..0000000 --- a/poke-mongo/data/pokemon.json +++ /dev/null @@ -1,908 +0,0 @@ -[ - { - "number": 1, - "name": "Bulbasaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/001.png?raw=true" - }, - { - "number": 2, - "name": "Ivysaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/002.png?raw=true" - }, - { - "number": 3, - "name": "Venusaur", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/003.png?raw=true" - }, - { - "number": 4, - "name": "Charmander", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/004.png?raw=true" - }, - { - "number": 5, - "name": "Charmeleon", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/005.png?raw=true" - }, - { - "number": 6, - "name": "Charizard", - "types": ["Fire", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/006.png?raw=true" - }, - { - "number": 7, - "name": "Squirtle", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/007.png?raw=true" - }, - { - "number": 8, - "name": "Wartortle", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/008.png?raw=true" - }, - { - "number": 9, - "name": "Blastoise", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/009.png?raw=true" - }, - { - "number": 10, - "name": "Caterpie", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/010.png?raw=true" - }, - { - "number": 11, - "name": "Metapod", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/011.png?raw=true" - }, - { - "number": 12, - "name": "Butterfree", - "types": ["Bug", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/012.png?raw=true" - }, - { - "number": 13, - "name": "Weedle", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/013.png?raw=true" - }, - { - "number": 14, - "name": "Kakuna", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/014.png?raw=true" - }, - { - "number": 15, - "name": "Beedrill", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/015.png?raw=true" - }, - { - "number": 16, - "name": "Pidgey", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/016.png?raw=true" - }, - { - "number": 17, - "name": "Pidgeotto", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/017.png?raw=true" - }, - { - "number": 18, - "name": "Pidgeot", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/018.png?raw=true" - }, - { - "number": 19, - "name": "Rattata", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/019.png?raw=true" - }, - { - "number": 20, - "name": "Raticate", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/020.png?raw=true" - }, - { - "number": 21, - "name": "Spearow", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/021.png?raw=true" - }, - { - "number": 22, - "name": "Fearow", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/022.png?raw=true" - }, - { - "number": 23, - "name": "Ekans", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/023.png?raw=true" - }, - { - "number": 24, - "name": "Arbok", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/024.png?raw=true" - }, - { - "number": 25, - "name": "Pikachu", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/025.png?raw=true" - }, - { - "number": 26, - "name": "Raichu", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/026.png?raw=true" - }, - { - "number": 27, - "name": "Sandshrew", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/027.png?raw=true" - }, - { - "number": 28, - "name": "Sandslash", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/028.png?raw=true" - }, - { - "number": 29, - "name": "Nidoran (♀)", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/029.png?raw=true" - }, - { - "number": 30, - "name": "Nidorina", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/030.png?raw=true" - }, - { - "number": 31, - "name": "Nidoqueen", - "types": ["Poison", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/031.png?raw=true" - }, - { - "number": 32, - "name": "Nidoran (♂)", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/032.png?raw=true" - }, - { - "number": 33, - "name": "Nidorino", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/033.png?raw=true" - }, - { - "number": 34, - "name": "Nidoking", - "types": ["Poison", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/034.png?raw=true" - }, - { - "number": 35, - "name": "Clefairy", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/035.png?raw=true" - }, - { - "number": 36, - "name": "Clefable", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/036.png?raw=true" - }, - { - "number": 37, - "name": "Vulpix", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/037.png?raw=true" - }, - { - "number": 38, - "name": "Ninetales", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/038.png?raw=true" - }, - { - "number": 39, - "name": "Jigglypuff", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/039.png?raw=true" - }, - { - "number": 40, - "name": "Wigglytuff", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/040.png?raw=true" - }, - { - "number": 41, - "name": "Zubat", - "types": ["Poison", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/041.png?raw=true" - }, - { - "number": 42, - "name": "Golbat", - "types": ["Poison", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/042.png?raw=true" - }, - { - "number": 43, - "name": "Oddish", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/043.png?raw=true" - }, - { - "number": 44, - "name": "Gloom", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/044.png?raw=true" - }, - { - "number": 45, - "name": "Vileplume", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/045.png?raw=true" - }, - { - "number": 46, - "name": "Paras", - "types": ["Bug", "Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/046.png?raw=true" - }, - { - "number": 47, - "name": "Parasect", - "types": ["Bug", "Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/047.png?raw=true" - }, - { - "number": 48, - "name": "Venonat", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/048.png?raw=true" - }, - { - "number": 49, - "name": "Venomoth", - "types": ["Bug", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/049.png?raw=true" - }, - { - "number": 50, - "name": "Diglett", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/050.png?raw=true" - }, - { - "number": 51, - "name": "Dugtrio", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/051.png?raw=true" - }, - { - "number": 52, - "name": "Meowth", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/052.png?raw=true" - }, - { - "number": 53, - "name": "Persian", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/053.png?raw=true" - }, - { - "number": 54, - "name": "Psyduck", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/054.png?raw=true" - }, - { - "number": 55, - "name": "Golduck", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/055.png?raw=true" - }, - { - "number": 56, - "name": "Mankey", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/056.png?raw=true" - }, - { - "number": 57, - "name": "Primeape", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/057.png?raw=true" - }, - { - "number": 58, - "name": "Growlithe", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/058.png?raw=true" - }, - { - "number": 59, - "name": "Arcanine", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/059.png?raw=true" - }, - { - "number": 60, - "name": "Poliwag", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/060.png?raw=true" - }, - { - "number": 61, - "name": "Poliwhirl", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/061.png?raw=true" - }, - { - "number": 62, - "name": "Poliwrath", - "types": ["Water", "Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/062.png?raw=true" - }, - { - "number": 63, - "name": "Abra", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/063.png?raw=true" - }, - { - "number": 64, - "name": "Kadabra", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/064.png?raw=true" - }, - { - "number": 65, - "name": "Alakazam", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/065.png?raw=true" - }, - { - "number": 66, - "name": "Machop", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/066.png?raw=true" - }, - { - "number": 67, - "name": "Machoke", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/067.png?raw=true" - }, - { - "number": 68, - "name": "Machamp", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/068.png?raw=true" - }, - { - "number": 69, - "name": "Bellsprout", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/069.png?raw=true" - }, - { - "number": 70, - "name": "Weepinbell", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/070.png?raw=true" - }, - { - "number": 71, - "name": "Victreebel", - "types": ["Grass", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/071.png?raw=true" - }, - { - "number": 72, - "name": "Tentacool", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/072.png?raw=true" - }, - { - "number": 73, - "name": "Tentacruel", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/073.png?raw=true" - }, - { - "number": 74, - "name": "Geodude", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/074.png?raw=true" - }, - { - "number": 75, - "name": "Graveler", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/075.png?raw=true" - }, - { - "number": 76, - "name": "Golem", - "types": ["Rock", "Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/076.png?raw=true" - }, - { - "number": 77, - "name": "Ponyta", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/077.png?raw=true" - }, - { - "number": 78, - "name": "Rapidash", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/078.png?raw=true" - }, - { - "number": 79, - "name": "Slowpoke", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/079.png?raw=true" - }, - { - "number": 80, - "name": "Slowbro", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/080.png?raw=true" - }, - { - "number": 81, - "name": "Magnemite", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/081.png?raw=true" - }, - { - "number": 82, - "name": "Magneton", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/082.png?raw=true" - }, - { - "number": 83, - "name": "Farfetch'd", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/083.png?raw=true" - }, - { - "number": 84, - "name": "Doduo", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/084.png?raw=true" - }, - { - "number": 85, - "name": "Dodrio", - "types": ["Normal", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/085.png?raw=true" - }, - { - "number": 86, - "name": "Seel", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/086.png?raw=true" - }, - { - "number": 87, - "name": "Dewgong", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/087.png?raw=true" - }, - { - "number": 88, - "name": "Grimer", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/088.png?raw=true" - }, - { - "number": 89, - "name": "Muk", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/089.png?raw=true" - }, - { - "number": 90, - "name": "Shellder", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/090.png?raw=true" - }, - { - "number": 91, - "name": "Cloyster", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/091.png?raw=true" - }, - { - "number": 92, - "name": "Gastly", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/092.png?raw=true" - }, - { - "number": 93, - "name": "Haunter", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/093.png?raw=true" - }, - { - "number": 94, - "name": "Gengar", - "types": ["Ghost", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/094.png?raw=true" - }, - { - "number": 95, - "name": "Onix", - "types": ["Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/095.png?raw=true" - }, - { - "number": 96, - "name": "Drowzee", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/096.png?raw=true" - }, - { - "number": 97, - "name": "Hypno", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/097.png?raw=true" - }, - { - "number": 98, - "name": "Krabby", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/098.png?raw=true" - }, - { - "number": 99, - "name": "Kingler", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/099.png?raw=true" - }, - { - "number": 100, - "name": "Voltorb", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/100.png?raw=true" - }, - { - "number": 101, - "name": "Electrode", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/101.png?raw=true" - }, - { - "number": 102, - "name": "Exeggcute", - "types": ["Grass", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/102.png?raw=true" - }, - { - "number": 103, - "name": "Exeggutor", - "types": ["Grass", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/103.png?raw=true" - }, - { - "number": 104, - "name": "Cubone", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/104.png?raw=true" - }, - { - "number": 105, - "name": "Marowak", - "types": ["Ground"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/105.png?raw=true" - }, - { - "number": 106, - "name": "Hitmonlee", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/106.png?raw=true" - }, - { - "number": 107, - "name": "Hitmonchan", - "types": ["Fighting"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/107.png?raw=true" - }, - { - "number": 108, - "name": "Lickitung", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/108.png?raw=true" - }, - { - "number": 109, - "name": "Koffing", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/109.png?raw=true" - }, - { - "number": 110, - "name": "Weezing", - "types": ["Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/110.png?raw=true" - }, - { - "number": 111, - "name": "Rhyhorn", - "types": ["Ground", "Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/111.png?raw=true" - }, - { - "number": 112, - "name": "Rhydon", - "types": ["Ground", "Rock"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/112.png?raw=true" - }, - { - "number": 113, - "name": "Chansey", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/113.png?raw=true" - }, - { - "number": 114, - "name": "Tangela", - "types": ["Grass"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/114.png?raw=true" - }, - { - "number": 115, - "name": "Kangaskhan", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/115.png?raw=true" - }, - { - "number": 116, - "name": "Horsea", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/116.png?raw=true" - }, - { - "number": 117, - "name": "Seadra", - "types": ["Water", "Poison"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/117.png?raw=true" - }, - { - "number": 118, - "name": "Goldeen", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/118.png?raw=true" - }, - { - "number": 119, - "name": "Seaking", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/119.png?raw=true" - }, - { - "number": 120, - "name": "Staryu", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/120.png?raw=true" - }, - { - "number": 121, - "name": "Starmie", - "types": ["Water", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/121.png?raw=true" - }, - { - "number": 122, - "name": "Mr. Mime", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/122.png?raw=true" - }, - { - "number": 123, - "name": "Scyther", - "types": ["Bug", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/123.png?raw=true" - }, - { - "number": 124, - "name": "Jynx", - "types": ["Ice", "Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/124.png?raw=true" - }, - { - "number": 125, - "name": "Electabuzz", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/125.png?raw=true" - }, - { - "number": 126, - "name": "Magmar", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/126.png?raw=true" - }, - { - "number": 127, - "name": "Pinsir", - "types": ["Bug"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/127.png?raw=true" - }, - { - "number": 128, - "name": "Tauros", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/128.png?raw=true" - }, - { - "number": 129, - "name": "Magikarp", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/129.png?raw=true" - }, - { - "number": 130, - "name": "Gyarados", - "types": ["Water", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/130.png?raw=true" - }, - { - "number": 131, - "name": "Lapras", - "types": ["Water", "Ice"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/131.png?raw=true" - }, - { - "number": 132, - "name": "Ditto", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/132.png?raw=true" - }, - { - "number": 133, - "name": "Eevee", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/133.png?raw=true" - }, - { - "number": 134, - "name": "Vaporeon", - "types": ["Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/134.png?raw=true" - }, - { - "number": 135, - "name": "Jolteon", - "types": ["Electric"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/135.png?raw=true" - }, - { - "number": 136, - "name": "Flareon", - "types": ["Fire"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/136.png?raw=true" - }, - { - "number": 137, - "name": "Porygon", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/137.png?raw=true" - }, - { - "number": 138, - "name": "Omanyte", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/138.png?raw=true" - }, - { - "number": 139, - "name": "Omastar", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/139.png?raw=true" - }, - { - "number": 140, - "name": "Kabuto", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/140.png?raw=true" - }, - { - "number": 141, - "name": "Kabutops", - "types": ["Rock", "Water"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/141.png?raw=true" - }, - { - "number": 142, - "name": "Aerodactyl", - "types": ["Rock", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/142.png?raw=true" - }, - { - "number": 143, - "name": "Snorlax", - "types": ["Normal"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/143.png?raw=true" - }, - { - "number": 144, - "name": "Articuno", - "types": ["Ice", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/144.png?raw=true" - }, - { - "number": 145, - "name": "Zapdos", - "types": ["Electric", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/145.png?raw=true" - }, - { - "number": 146, - "name": "Moltres", - "types": ["Fire", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/146.png?raw=true" - }, - { - "number": 147, - "name": "Dratini", - "types": ["Dragon"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/147.png?raw=true" - }, - { - "number": 148, - "name": "Dragonair", - "types": ["Dragon"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/148.png?raw=true" - }, - { - "number": 149, - "name": "Dragonite", - "types": ["Dragon", "Flying"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/149.png?raw=true" - }, - { - "number": 150, - "name": "Mewtwo", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/150.png?raw=true" - }, - { - "number": 151, - "name": "Mew", - "types": ["Psychic"], - "imageUrl": "https://github.com/HybridShivam/Pokemon/blob/master/assets/images/151.png?raw=true" - } - ] \ No newline at end of file diff --git a/poke-mongo/server/db/index.js b/poke-mongo/server/db/index.js deleted file mode 100644 index 433babf..0000000 --- a/poke-mongo/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your Database Connection comes here - */ \ No newline at end of file diff --git a/poke-mongo/server/index.js b/poke-mongo/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/poke-mongo/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file From b5e401ca366b531bb331970a68539743cf552e78 Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:58:30 +0000 Subject: [PATCH 22/25] Delete task-management directory --- task-management/README.md | 109 ----------------------------- task-management/dummy_data.js | 26 ------- task-management/server/db/index.js | 3 - task-management/server/index.js | 3 - 4 files changed, 141 deletions(-) delete mode 100644 task-management/README.md delete mode 100644 task-management/dummy_data.js delete mode 100644 task-management/server/db/index.js delete mode 100644 task-management/server/index.js diff --git a/task-management/README.md b/task-management/README.md deleted file mode 100644 index 4bccf49..0000000 --- a/task-management/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Task Management System - -You will be creating a full-stack application to manage and organize tasks like [Trello](https://trello.com/). It will allow the user to execute all CRUD operations on his tasks,. In order to do this you will be using MongoDB with the [Mongoose ODM](http://mongoosejs.com/). Your front end will display views created from data in the database. You will use [ReactJS](https://facebook.github.io/react/) for that, and will serve your application with a [NodeJS](https://nodejs.org/) web server, using [ExpressJS](https://expressjs.com/). - -Please work on the following features **in order**, moving on to the next feature only after the one you are working on is complete. **Please commit WORKING code early and often**. In addition, after each step, please follow the guidelines for a commit message. - -### Part 1 - Paintings Gallery - -1. **As a user**, I want to be able to view the tasks I have in my app. If no paintings are present in the database, I will have to see a message indicating that `You have no tasks` and a button to create new ones. - -To implement this user story, you should: - -- Write an ExpressJS web server that listens to request on port `8000`. -- Run this command to create a brand new React App in a folder named `client`. Then navigate to it. - ``` - npx create-react-app client - cd client/ - ``` -- You may want to use [React Router](https://reactrouter.com/) or [Conditional Rendering](https://www.reactjs.org/docs/conditional-rendering.html) to navigate between components. -- Write a script that would add the dummy data to your database when `npm run seed-database` is run from the command line. Add this command to the `package.json` to be able to run it with `npm`. When you have this working, run the command so that your database is populated. - \_Note: Create a Task Schema under `server/models/Task.js`. It should have these following attributes: - - `id`: Number - - `title`: String - - `deadline`: [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) - - `isCompleted`: Boolean _(`true` if completed, `false` if not )_ -- Complete the route `/api/tasks` in `server/routes/tasks.routes.js` so that requests to this route are responded to with the data for all the tasks, retrieved from the database. -- You can use the `dummy_data.js` for your front end views. Then, you can refactor your front end to retrieve seed data from the server rather than using the dummy data. -- Render each task in a `Card` containing the image, the title, the deadline, and the status (`completed` / `in progress`). -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 1 Complete`** - -### Part 2 - Create new Tasks - -1. **As a user**, I want to be able to create new Tasks and save them in the database. Create a `NewTask` component containing these inputs: - -- `Title`: text -- `Deadline`: date - -The data from the form should be sent to `/api/tasks` and saved to the database. - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 2 Complete`** - -### Part 3 - Edit Existing Tasks - -1. **As a user**, I want to update the titles of existing tasks in my management system. - -- With every Task Card, there should be an `Edit` button. -- When the user clicks on `Edit`, the title becomes an editable input with 2 buttons (`save` / `cancel`) -- The input should be **prefilled** with the title of the selected task -- The user can click on `Cancel` to cancel changes -- The user can update the data and click on `save` -- You should send a PUT request to `/api/tasks/:id` -- The editable input and the buttons should disappear - -2. **As a user**, I want to mark tasks as done. - -- With every Task Card, there should be an `check` button. -- When the user clicks on the `check` button, the status of the button should become `done` -- You should send a PUT request to `/api/tasks/:id/complete` - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 3 Complete`** - -### Part 3 - Overdued Tasks - -1. **As a user**, I want to know which of my tasks are overdue - -- With every Task Card, there should be `Badge`. -- This Badge should only appear when the task deadline is overdue - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### Part 4 - Delete Tasks - -1. **As a user**, I want to be able to delete existing tasks from the database - -- Each task card will contain a `Delete` button -- When the user clicks on the `Delete` button, a `Modal` will be rendered with 2 options: `Confirm` and `Cancel` -- Clicking on `Confirm` will delete the task and close the modal -- The task will no longuer exist in the `TasksList` component - -- **WHEN COMPLETE AND WORKING, make a commit that says `Part 4 Complete`** - -### API Structure - -> **Pro tip:** Install and use [Postman](https://www.getpostman.com/) to test your API routes for this section - -Using the existing code provided in `server/`, follow the steps below to build out a Paintings API: - -| URL | HTTP Verb | Request Body | Result | -| :---------------------: | :-------: | :----------: | :--------------------------------------------------------------------------: | -| /api/tasks | GET | empty | Return JSON of all tasks | -| /api/tasks | POST | JSON | Create new Task and return JSON of created Task | -| /api/tasks/:id | DELETE | empty | Return JSON of single Task with matching `id` | -| /api/tasks/:id/complete | PUT | empty | Update Task isCompleted to `true` with matching `id` | -| /api/tasks/:id | PUT | JSON | Update Task isCompleted to `true` with matching `id` and return updated Task | - -## Available Resources - -- [Stack Overflow](http://stackoverflow.com/) -- [MDN](https://developer.mozilla.org/) -- [ExpressJS Docs](https://expressjs.com/) -- [Body Parser Middleware Docs](https://github.com/expressjs/body-parser) -- [Mongo Docs](https://www.mongodb.com/) -- [Mongoose ODM Docs](http://mongoosejs.com/) -- [Cloudinary API](https://cloudinary.com/documentation/node_integration) -- [ReactJS Docs](https://facebook.github.io/react/) -- [React Router Docs](https://github.com/ReactTraining/react-router/tree/master/docs) -- [NodeJS Docs](https://nodejs.org/) -- [Postman](https://www.getpostman.com/) -- Docs for any npm packages you might use diff --git a/task-management/dummy_data.js b/task-management/dummy_data.js deleted file mode 100644 index ff3139c..0000000 --- a/task-management/dummy_data.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = [ - { - 'id': 1234, - 'title': 'Prepare Business Model', - 'deadline': 01-12-2021, - 'isCompleted': true - }, - { - 'id': 3748, - 'title': 'Pitch to Venture Capitals', - 'deadline': 12-01-2022, - 'isCompleted': false - }, - { - 'id': 3840, - 'title': 'Prepare Prototype', - 'deadline': 31-12-2021, - 'isCompleted': false - }, - { - 'id': 1234, - 'title': 'Launch a Sales Campaign', - 'deadline': 20-02-2021, - 'isCompleted': false - }, - ]; \ No newline at end of file diff --git a/task-management/server/db/index.js b/task-management/server/db/index.js deleted file mode 100644 index 05aaea5..0000000 --- a/task-management/server/db/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Connect to the Database with Mongoose here - */ \ No newline at end of file diff --git a/task-management/server/index.js b/task-management/server/index.js deleted file mode 100644 index 66cd61e..0000000 --- a/task-management/server/index.js +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Your server comes here - */ \ No newline at end of file From cdd8615f5569a2875440b1ec6c11afbb67f91dc4 Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:58:50 +0000 Subject: [PATCH 23/25] Delete .gitignore --- .gitignore | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1480aee..0000000 --- a/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*.log -.DS_Store -bower_components -node_modules -package-lock.json \ No newline at end of file From 6078bf59bf55fd84fbe2f467c360182afe91edec Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 02:59:02 +0000 Subject: [PATCH 24/25] Delete RECORDING.md --- RECORDING.md | 61 ---------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 RECORDING.md diff --git a/RECORDING.md b/RECORDING.md deleted file mode 100644 index 605cfd4..0000000 --- a/RECORDING.md +++ /dev/null @@ -1,61 +0,0 @@ -## How to Record Your Screen - -This document details how to create a recording of your screen If you are using these instructions for a recorded student assessment, you should receive specific directions from your instruction team regarding how to turn in your screen recording file. - -- [PC](#pc) -- [Mac](#mac) - -_NOTE: Recording several hours of screen capture will use a large amount of data, up 4GB PER HOUR. Please make sure you have enough free storage space to accommodate your screen capture data!_ - -## PC - -Download and install [OBS Classic](https://obsproject.com/). It's free and open source! - -### To start recording - -Update the following Settings (click `Apply` between each step): - -| Encoding | Broadcast Settings | -| ----------------------- | -------------------------------------------- | -| Max Bitrate (kb/s): 192 | Mode: File Output Only | -| | File Path: firstname-lastname-yyyy-mm-dd.mp4 | -| | Video: FPS: 15 | - -Add a Monitor Capture source: - -- Right click the `Sources:` box and click `Add -> Monitor Capture` -- Give it any name, the default is fine -- Click `OK`, the default options are fine - -From the main screen, click `Start Recording`, and minimize the program. - -### To stop recording - -Simply click `Stop Recording` and your screen recording will show up at the `File Path` you specified. - -## Mac - -### To begin recording - -- Launch QuickTime Player from Finder or Alfred/Spotlight. -- In QuickTime Player, go to the `File -> New screen recording` -- Click the down arrow next to the record button and enable `Show Mouse Clicks in Recording` - -![screen shot 2016-05-25 at 4 15 41 pm](https://cloud.githubusercontent.com/assets/6980359/15559089/16ed9072-2294-11e6-8348-0c8ad7a1d963.png) - -- Click the red record button to initiate the screen recording -- QuickTime will show you a notice in the middle of the screen as show in the screen shot below -- click on it confirm the screen capture and begin recording - -![screen shot 2016-05-25 at 4 15 48 pm](https://cloud.githubusercontent.com/assets/6980359/15559088/16ecd8e4-2294-11e6-8d3d-a3ed5302e856.png) - -To check that QuickTime is actively recording, look for the black stop button (square) inside a circle, in the system tray: - -![screen shot 2016-05-25 at 4 16 03 pm](https://cloud.githubusercontent.com/assets/6980359/15559090/16ee19b6-2294-11e6-8c9b-260c4e7afa23.png) - -### To stop recording - -Open QuickTime Player by clicking the the black stop button (square inside a circle) in the system tray - -![screen shot 2016-05-25 at 4 16 03 pm](https://cloud.githubusercontent.com/assets/6980359/15559090/16ee19b6-2294-11e6-8c9b-260c4e7afa23.png) - -Choose `File -> Save`, and name your video file `groupName-yyyy-mm-dd` From 6d4bddce43aa446ed88d906f4bc523c5edf8ae88 Mon Sep 17 00:00:00 2001 From: SyrineTrabelsi <61865302+syrine0@users.noreply.github.com> Date: Sat, 1 Jan 2022 13:56:44 +0000 Subject: [PATCH 25/25] Add files via upload --- controllers/product-controller.js | 57 +++++++++++++ index.js | 28 +++++++ model/product-schema.js | 17 ++++ package-lock.json | 54 ++++++++++++ package.json | 5 ++ public/favicon.ico | Bin 0 -> 3870 bytes public/index.html | 43 ++++++++++ public/logo192.png | Bin 0 -> 5347 bytes public/logo512.png | Bin 0 -> 9664 bytes public/manifest.json | 25 ++++++ public/robots.txt | 3 + route/routes.js | 14 ++++ src/App.css | 38 +++++++++ src/App.js | 35 ++++++++ src/App.test.js | 8 ++ src/Assets/images/hello.jpg | Bin 0 -> 27453 bytes src/Assets/images/notfound.jpg | Bin 0 -> 28564 bytes src/Assets/images/store.jpg | Bin 0 -> 11982 bytes src/Database/db.json | 20 +++++ src/components/AddProduct.jsx | 75 +++++++++++++++++ src/components/AllProducts.jsx | 83 +++++++++++++++++++ src/components/DeleteProduct.jsx | 91 +++++++++++++++++++++ src/components/EditProduct.jsx | 90 ++++++++++++++++++++ src/components/NavBar.jsx | 32 ++++++++ src/components/NotFound.jsx | 11 +++ src/components/ProductManagementSystem.jsx | 10 +++ src/index.css | 13 +++ src/index.js | 17 ++++ src/logo.svg | 1 + src/reportWebVitals.js | 13 +++ src/service/api.js | 23 ++++++ src/setupTests.js | 5 ++ 32 files changed, 811 insertions(+) create mode 100644 controllers/product-controller.js create mode 100644 index.js create mode 100644 model/product-schema.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/logo192.png create mode 100644 public/logo512.png create mode 100644 public/manifest.json create mode 100644 public/robots.txt create mode 100644 route/routes.js create mode 100644 src/App.css create mode 100644 src/App.js create mode 100644 src/App.test.js create mode 100644 src/Assets/images/hello.jpg create mode 100644 src/Assets/images/notfound.jpg create mode 100644 src/Assets/images/store.jpg create mode 100644 src/Database/db.json create mode 100644 src/components/AddProduct.jsx create mode 100644 src/components/AllProducts.jsx create mode 100644 src/components/DeleteProduct.jsx create mode 100644 src/components/EditProduct.jsx create mode 100644 src/components/NavBar.jsx create mode 100644 src/components/NotFound.jsx create mode 100644 src/components/ProductManagementSystem.jsx create mode 100644 src/index.css create mode 100644 src/index.js create mode 100644 src/logo.svg create mode 100644 src/reportWebVitals.js create mode 100644 src/service/api.js create mode 100644 src/setupTests.js diff --git a/controllers/product-controller.js b/controllers/product-controller.js new file mode 100644 index 0000000..e92f6b1 --- /dev/null +++ b/controllers/product-controller.js @@ -0,0 +1,57 @@ +import { request, response } from 'express'; +import Product from '../model/product-schema.js'; + +export const getProducts = async (request, response) => { + try{ + let product = await Product.find(); + response.json(product); + }catch(error){ + response.json({message: error.message}); + } + +} + +export const addProduct = async (request, response) => { + const product = request.body; + const newProduct = new Product(product); + + try{ + await newProduct.save(); + response.json(newProduct); + }catch(error){ + response.json({message: error.message}); + } +} + +export const getProductById = async(request, response) =>{ + const id = request.params.id; + try{ + const product = await Product.findById(id); + response.json(product); + }catch(error){ + response.json({message: error.message}); + } +} + +export const editProduct = async (request,response) => { + const product = request.body; + + const editProduct = new Product(product); + + try{ + await Product.updateOne({ _id: request.params.id}, editProduct); + response.json(editProduct); + }catch(error) { + response.json({message: error.message}); + } +} + +export const deleteProduct = async (request, response) => { + try{ + await Product.deleteOne({ _id: request.params.id}); + response.json("Product Deleted Successfully"); + }catch(error) { + response.json({message: error.message}); + + } +} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..16b2b88 --- /dev/null +++ b/index.js @@ -0,0 +1,28 @@ +import express, {Router} from 'express'; +import mongoose from 'mongoose'; +import cors from 'cors'; +import bodyParser from 'body-parser'; + +import route from './route/routes.js'; + +const app= express(); + +app.use(bodyParser.json({ extended:true})); +app.use(bodyParser.urlencoded({ extended: true})) +app.use(cors()); +app.use('/products', route); + + +const PORT = 8000; +const URL='mongodb+srv://admin:helloadmin123@crud.k61nh.mongodb.net/Project0?retryWrites=true&w=majority'; + + + +mongoose.connect(URL, { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false }).then(()=> { + app.listen(PORT, () => { + console.log('Server is running successfully on Port ${PORT} '); +}); + +}).catch(error => { + console.log('Error:' , error.message); +}) \ No newline at end of file diff --git a/model/product-schema.js b/model/product-schema.js new file mode 100644 index 0000000..f8727a8 --- /dev/null +++ b/model/product-schema.js @@ -0,0 +1,17 @@ +import mongoose from 'mongoose'; +import autoIncrement from 'mongoose-auto-increment'; + +const productSchema = mongoose.Schema({ + name: String, + category: String, + brand: String, + price: Number, + quantity: Number + +}); + +autoIncrement.initialize(mongoose.connection); +productSchema.plugin(autoIncrement.plugin, 'product'); +const product = mongoose.model('product', productSchema); + +export default product; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..efb31cd --- /dev/null +++ b/package-lock.json @@ -0,0 +1,54 @@ +{ + "name": "react", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "axios": "^0.24.0" + } + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", + "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + } + }, + "dependencies": { + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "follow-redirects": { + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", + "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4338ad2 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "axios": "^0.24.0" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 zcma);c{J4h9>;%nil|2-o+rCuEF-(I%-F}ijC~o(k~HKAkr0)!FCj~d>`RtpD?8b; zXOC1OD!V*IsqUwzbMF1)-gEDD=A573Z-&G7^LoAC9|WO7Xc0Cx1g^Zu0u_SjAPB
3vGa^W|sj)80f#V0@M_CAZTIO(t--xg= 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 baj7?x%VD!5Cxk2YbYLNVeiXvvpMCWYo=by@ literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..aa069f2 --- /dev/null +++ b/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/public/logo192.png b/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 b{|{}U^kRn2wo}j7|0ATu<;8xA7zX}7|B6mN literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..080d6c7 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e9e57dc --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/route/routes.js b/route/routes.js new file mode 100644 index 0000000..f6b1882 --- /dev/null +++ b/route/routes.js @@ -0,0 +1,14 @@ +import express from 'express'; +import {getProducts, addProduct, getProductById, editProduct, deleteProduct} from '../controllers/product-controller.js'; + + +const router = express.Router(); + +router.get('/', getProducts ); +router.post('/add', addProduct); +router.get('/:id',getProductById); +router.put('/:id', editProduct); +router.delete('/:id', deleteProduct); + + +export default router; \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 0000000..74b5e05 --- /dev/null +++ b/src/App.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/src/App.js b/src/App.js new file mode 100644 index 0000000..14d187e --- /dev/null +++ b/src/App.js @@ -0,0 +1,35 @@ + + +import NavBar from './components/NavBar'; +import ProductManagementSystem from './components/ProductManagementSystem'; +import AllProducts from './components/AllProducts'; +import AddProduct from './components/AddProduct'; +import NotFound from './components/NotFound'; +import EditProduct from './components/EditProduct'; +import DeleteProduct from './components/DeleteProduct'; +import {BrowserRouter, Route, Routes } from 'react-router-dom'; + +function App() { + return ( + + + + } /> + } /> + } /> + } > + }/> + + } > + }/> + + } /> + + + + + + ); +} + +export default App; diff --git a/src/App.test.js b/src/App.test.js new file mode 100644 index 0000000..1f03afe --- /dev/null +++ b/src/App.test.js @@ -0,0 +1,8 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; + +test('renders learn react link', () => { + render(); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/src/Assets/images/hello.jpg b/src/Assets/images/hello.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d559dda49f4bae010b6a4c5bf650f016f6d63878 GIT binary patch literal 27453 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
  • ()Ellg;XH8ZEK z#fm@AQ`!KrGUt)3OtNAkXZb(L_elm*a>M0>CVf6j7&U+?6GL+y%!m!fD}fL&Du!DH zV(>4{Dd<{OqqZc-fVhB&+NEJ?fM^S0uOS9lRq8<++}ZENH&tIVi;UA`Yw%@B(&?x~ zGCR!Ytz;5mn{pCzl0!ZjdsrbP1o5|h!Z(k{0i@8=d=8vV$d(W0SaZ^hRrsoQB3uonWguY-Q#pzeOnW|i+oV|}2hM+oF5gNvSx!4qC9(g9c>mXFm zrK9n=elcg#b}pwkYjk$hLK-<+-cbP+2+vi=RSclUFg5NshNGspbSHNIoJ`>^O-c=* zMz{=`SD?=1LCgR2;HVih9RuMK{Kl)gUu#;|p{GA1S0$Zo3qWlkEQWGenV+uhQm60a z!P9%FI(NdB8AWZ|4z*dTdyM-8df~}iN>hUpOFf*aF9*kHC*{#{U^?^Z%#jTO3B!1; zj4f%A6oWod;Pdz8B$@ADQhvZjjpR>8VArkY!IM*&+MnRj&X1dNQ(K;%v76gTKWm;! zl%$9}P(Y1*jn@63R`}I^N})hf{HL3Gli0(Vy?T+7Qz8ZKHHLL)jv!GEOk**ZVC+X} zU}Mxg#KalN3U@6hh&t$#lZzQloOLg-crbKzI$M#NBI)z263$n%1j>V%xvCuGISI|+ zL6e|G*CpGf8duEt`Pqq< zX7)}4Tj3Oev5PDFo0~@hQJcUHI(H8%caJj9>9f3*?>lSy-ha9yf(FO7{2p?aa)#m^ z3q)f-fASsv_NvRJz)!T1)86l#ZTYU)@d@bt_c>#mIRm(tq7XhlzPVUdV>1D4)=BTQ z%Ph{?ky<%Bmrhc*M5&!#=QpF$sE*^ATc&)Q}f{zuHyrbKtZ-L;(R(`ovfX8-9X@gu?<-&I&0n!qULpqR1exL)% z<@9V$fgl*=0q!(&Bf8^s&ii8e2ibphn|29*S8hQt+%@pt>|~?;jel`-6V5qQ;>^`= z^MpSZpbg3{A}4C;GY6c|UMVS#a&K6bGgSXV>HB78(PW>VJ@`I|0HFSTW_)vnFYjjo zMdh}fwXK|0ax0gSU(+sGL3<7On+M1jZFLIZdhtaD6kC@?OC%Ty6+AjZRrkS`AI(B- z1w0n0aL&!*i=+Nn=Fm0E6`Ga@*4128=VRyeDW0myayzvsuBezhe}n@8MYR;Q;~prm zAY353^n?l?oy(EXKKn#q%N5aigs8o}Cl#8Iv;&_Ids|B~;xLm@!5=lKAW24cL$x~W z!MxshfiwU3f;lp*tIMtD^be*EA}sZwt+ZkNa&Ab)x|)@7HB?uQRFzH3aqF2UU82Fo zUfH9+DbfC_Bdmg0VeMRDW@{Eep&JTsK+Faq)?W`EEpt^8fhgL8RXY$E?f1-#n2bur;CcOEq^2r&F3jB;D7q^h-_)#+kc=` zdYc#x+jc|1N2>%RnUuQmhrp|7LBizIJdNVz8XV* z@`#}v4ms-KB)BgAOj}yoVf!v-n4JYr|6uN^u4_*g{K^if7KyXh8|5HgRE#gpr%;=* zQ-7?dFVRYp4lu9RMj;xrCS{B6d_pt-hG(;eNGf97E3^r+$?%L^%s3Z zgPbf}!4%nl{SseX)jlNMc1~w4ri?|ZFhSDKZMj-&>Ztd;&w5FQw0CNjU}^i*P&DSe z885A1{>qZYqUYB==CJ2&_C(p@e71C}vYT9?X<)KE)jwx)(UV&!pps|=JbQfHt}5A0 zM_M^;CMP|_yMhJg!z{Aa&{D1>v~1qR*69N|wcPkhCoO?M9s$?IpHl#bnD+L)1vK@oMOXWpr`KcxvCAJ-1jirKVIgedNWsb<}Ul zkv{EJd!1*kUgx&GmMlLcTIaQG4IZikiY6T<g%Jz+N$Zf5i3& z(=Q6Mk~4j!5ci3z3c@kb6|KWce-x0z~5#G#E>>a|(Nb0z;^ zelBd{jW$N=_jTEYF!8Tcnv?QCIkYo2W>eQ5k9GOgD*W4m#ReuA$qtNL(Z^PhN={HI z4>^e&h0M*986S|!=gz-h_y@!?mo(!m>CN0oBaCqg0@|lg`y} z!q4Jk%xi%S<&6pXsod5bH+ZY!Edxa+(Hqe;x{^cPp3UnSgDzDCXrm3OdYLw`!q&D2 z^!{`|+7&-*yS%dGe^chXIe=LkhYSF(>{c?yDueDf_)EX;jQqAEpkHR5L3ClgCdkM` zJCHbWF?>N8#PQ(2MsRqxfRCB&@{IL z)a*8PN7dA4<(n9{{$U!=eS^8LxfDa7+~qbWx|O7x8}X8z_sU9O+yhx8FTME>Y;aFl z->o|0pBbIFAxjq8V|g0J?PNWrn`Wu|uX%eZL-#2v>5+@W)>*O1&2Z=kX7C~z$mu9i zlbTV|?G+>HkwWLrv32=S*$j?k$%JIeomQIP0VO$lkT?Mhn1)_y!>jN#4LpuC(=?Iv z&(h)#!hpAfye84Ct9?#pR^Y(h>~-cy3eRa+27mBMCERy|8uegr9<#mP!q<1zj=Af3a4$}) z9sCz~{P<>79i8>;RA#rqrEKYP&d4v%uEeFlmIeGIojQ#~XB~SD?wN9=AIkOH>uNc< z*>DSO^5zIPK;?J>Q<{iZKPMBd(%!1nzADKz>^E-9n!zxicn4kjb$`OP z@Hbc@Ej%?;<#JBus_eKDI!>Cuut`$JegVYcJ4Ms(HMjN&lhn=kEO@Eb(uR}_mW z17r6=^Aj$f^1iv!EW|s|NQz%*C{*-Zb#>~X3M&iKo5lk-m;fisyFu!Rf5%v^e5H0S*5VGaeNap%4Zaoq#jOSx39i(ldU zXa6uguN)pNqm3BgJ8w)i{$UT$2so~Mkdr+3n^7hS^xOPEHat@>Hq%LTSb!KJtitGM@z9XuT+vJ#R3juv9QnD&@kY1 zktPseIV-!AwfD{aX--Qs%8_OT*-Je}2M-q@TKVW-I@=fKGPqOJrz46ziy_eisYp_4 z5f_)@o@J4v8@;2qy*wxHGK!SlxRx+)Td)43Qv7P!@PQmw<{DR%m3?ox`{Y&TMkEiP zfWiQ)SqH;vLpRf^fJ>Ut(f+Gdxc|X;XvAow$5_)hajrZ`g-75Do~i)v)797#c{{8N8Iuc!qzhUgZN8A*j9MQS&j^OH+a zVdsA^Uz9{mTLZn%ZS7Y5BE5NhQb+DE=(04Duw>*tIBxBiSulzWzb^Sp^*Ts2f&YF) z%6#%YT5W-k8!owCJ;2xqe4wUSJQCaZ<|o8{`KZYId4B~c0K~@#rVmvl^KoKcT=WjX zQ}`;Z>kTy+YDG_ZBz^~d#42(~1BhV4kgbY}a!u!KE25Dt2b27K2W3S{=UAb-i?{HL z85P9?)}y9cl5)~Z`L8fH)o;?_02$LD3oYhpQAbp>4 zn3-bWnfS8`5_^-ajQ$X?viuHmxR=jyoClb3|qc$#P1eU|oz9^eop7J;s~QN%O}SWG&T`Mc-WJ+R6Re7=rQIb(jryc*dXn zwZ}z!laLQ`v~R)G*q?M}B_0V)xSTT3=z6(aU7ce!v$CKsm~pMh(NA$^g@ihG9 zH4kmd+8r%S)C`#&?uSX-$~vxO)fn2CE9HfCMDqx5@pSori~C5{2tk{#Dh*H^517a9 zGO6NyTt+r++ld#MrJz>dy87lvy=`rggOR(*^P{f(tF{Gm6?zaGy9F1zXwt`j2Cr?# z{)2I9?QL|;=AD*^W{cO#uPbdxvoQB-86RE`#&*HvA{m5J57WYAg7y?-j@{~|x|!eV zU&bAc?^wHha2v3R+<@MR@ValXJ2FtB(($7m5m=NP5ufhc!t(IIL<>jc$6T@x%ZeP!x$U_oMZrL6m8X+2?0Y_EB3!5Sy*jsGJp0I%g}ryF&8 zvW}@VeuIL{Fvom!`@CYi7X`ilmrKTtZ-C$D=z2|rweNY1p9mM!-bL9b6zHc^7kPnZ zLgZH(5U}8zk;a)#aF~@Q60We}KK@cUr{D40MY{F!SxZMM1Jxbv2+gw=?lF$QdeRA^E}1Be1o=E zqaQ75yCx*NJEPv=eL&zpn2GlG_8&H(6I4V! z#r>8H;cU&_!N|gEqNMUFAH<%N-bx8Af-y>oVxI$2jqH37uzUil(l)+o1iCFQuKZ;P zC!8DnPyqc9UN}|$*jgv{p?O1g#GYM@JL+;8bS-JW*R5lqh33ZV`g20vnAf1pye z%YO{|2V+=3o?38WJ2f!hSGW1y7j0YRBRfZTAv2a3`#%`Xj2pMV|6n-({OaJVHlmpA%t`YQPt@J^S}VZYO5un4dS|3jAjmoLMH$HJiiaUcLGKeLOeaN>gh z%apyh5QRPR)egTejGmuh-qi7>FS2R60pm~Jl-Xrj+%`-wH%#nF;Hv1>ARFfGwP#Sh z&|YOpKy%Wj|G^;Qsz}&boV9Jz>U3RRsuswO4cNqCQWdjF(f5q?*Uu%s*cB1SKpQ_& z(O9(tKej@J`J8lHj8K^^7D$+6c)Kv2w=OiLN-g}T<`tx98vF|pe$kP|CT~#+@P6lb z9%GHNOnW=a*lWI*`}1V+M0bQ^U`Jy)u(8bX7DZ%qA!qLLYF(;`%dbiwQ}7Q)JZhj* zayczU%v~`hnk?hMJjqZBS2h~QwD)z?x!^l<4>pU9yNv6`DbZcoUkTRmA8=;b0ik=Z9Q|8_ zek??OOfIJ*F{Yd}FP!DI2pkNceMsCQ!=q3l^+FWFY?PRfxR%?@%@ww+K_ipa+}ZwW zetI&UD)pr*G5c<8kqZqTkpm2;0wk09ei%dHAnv42?jhI8woLV)8mTFAG`gQGR<5wu4x`Rb|l+$t4ZEC<> zWjCcqm@G~1eY;eP+aa^4)A2rN@q(az*5$mKR)| z<{;Zi&x;0}ojDf6)Dp}Pa%yS^-e{`GLI?UAbFh!ZPGXV~BguM-yvx;KpUP$O&nz=v za&C!RU18j)AuZjWBeMV|KHsX87a()}=%ynd`d@4L_b-wd!lo|~QWBV9*8gBgo%QVt zhg4~xeMM`0KX#WF zM$^~e>sVY>lotWPULy_BzCr-k!f1~Fl=?D3iQN6)S2;z@H0I-Uw3HP1$RbT=`zcP) z)RbE#XwKTXA$0ik0h2W0_xKtc4Q`Z=oWwg2h^*wGmsXLaPmvy@SyRdO=3q0g9W8&} z8jlefs|n5I^IuTpFBl$yCyNriqj~fqAZQ}Y9R-s^oBSuXK5=pROueBeu1AzykJd|1 zaSnU9=@7iJ7)~^}Cz2gBxo4SPczL!^CK=B}bn8H*iVq_zH5 zOi8;ux}>p|CcRLsL!`psCe=p_X+J=TW<{ z8`p8O)S<+_lwlo{w#fruSi7r;|0vaG2Jg|gqbd{;Z(Y@v7F!SC+Ugn*DatjR5lQcZ!?aAD)bj07)k^cju4G`yoR#HCW1PWB^X!6KWAmi^lkyh2);!&rAi3>eM`I zl9W+VQDFV_(`=DRd3kwRszZw?7kh~`9gCQI!(}6a@p00@xWX6w+7G+(J*d0Q&-!Tm zawE7sB-=w{U)VlU_At2_P9$x`n}^*Jv8H6Cwd?Oln zTirj-DA2 zG^`n!T4GIqmaMyjSfWP<-wbU^0I0?&`ETZ}#E(J;IYBoFqfKWMP;Y`4lQ{_3pIdAuIQ z1USfnPo(pbN|ll=UvUHGP?Ia>OTO_OROX^liEE5_3_{hxoNiyO22@GYr1hQbw{Glr zsH?)rB+Yj|OrT8=p+|QxHgMSU;cEs<^3w24-Cpe`vbO1^cf3kJm zU(?ukQJEHB%9GtwIw%<^-$6<0087UM57!7v1x9$a-eK~&c@JqV(&dolR+6PJe-rLs zrKPjV+gD%z(O09G(%KD6heXtv#9Ol#gDs{sgr}2KNZ!`QUXK9ju4Z4QeG>YP5RVt$ zp;ojnKPXZ9yena9N02s6LGf0Ot1mXx188NNsx9poEMWDztrs}sGeJi1!A4v z(5V*7=N71IidZgIEu9SC*vk)9PTP6Aki)L=@3NMwKZ+w9lgJc^K~I*qGajdnmdNFO zq8|&Bd1sJBnAUgIEO`C-;3=Q>w~~Q-^P@Kb{Pnkn^LU4yW5JT{r{Q$E z2h9CVP1JIdP~u-4w}!(Q2V@S!AMIlVM`n8x_iur;8dTml(ZxwrW(wn5+Db%?k$jYVfH-*liO2 z{w#4FVu|ZGwMDUReH?29+g);7uMoCio-ID@uQglUE%qsG%bTvYcv@R&AnEZAsXe`P zWi*~ixr{+|u~~@z!ASI_+Q^64y;043D=Gbz9;qMM90w)ut~FXttOj{gg19h-b82rz~$hC)P*MHh!ivx!X+?6J4d8!~5RMqB>X>J|T_Uf{BY z5`av%f~>@72)wkr^zVBaR`5exGn~7JSXnC&jjiOn`s6ThbNKak2M1VuB9M8DPDCBD z?^{inY}-c3LJGkOrHhvLFS>k6MyAGjrkeW*5~}dzA#XFEwP+h)r)AK-;;36Kq9Q;H z3i{LW_T4*56rp8=MFt+c^VuOZw2Nm>Zomv=Z#61EE`YtRv=V;teC&RRbl32~b*E#IS{& zcw;@<`-l{^l>r}xrW!^cXBtIjq71S)gVmK<^!m-R<`SgAz~PiGy4AOV-&g|T-X!ay z#&2OhoX{M&hT~hp8+uQm50_bVi}tJMGRLWG%FJkhF8~M#N=V3%uuWE49Z*R$_hGm~ zKQH_#{dJ4DfBzx#L1bk01$9%YNvgpwie!Y?)f*U_lSv)d^h<{+c#3h}j%^ys-fNBMuqXqnyk(24uLfs<1- z>2z@;@BX50v`qX~J2ZVE`UR$l?x!v`Rl|ao(r&=vjQzsNjaaj9K3!ws!|FEhqxzd- z1y5)mGh|2f@IaeV!%ZWF*q0yT{QHB!<>!MSyRDC@KVEUqQO^D0Y0Xus00gzfW`D$cI##yM4d6U6v!jrOmL`VW;^HjCLmy?s#sR$z}T6!k( z0Bh_oY)izM{OziZPT@UH2PH!=|F$5;ZSVy|BQOzNye|xgnh@qYcOFv2!3I?*c-(w# z2+D)PQXBr+%!dm_{1dF&pS`XVFgKyR_W>XaH)XNj7R$JaXE&nw`>uW@8|)|nC&R;y z$E%PB%26?HO>95Hx19pbf&Kyur&(ogmwzy=CMks7r^oGBA)FRtEVs7qAk`6D~WLfH*t8Hpvi00Q4ZDAKU$OhBdx_EC~m|j{8FH zkHfe5l|GE`SKamV0V^}OO(}fTF>?!WQ+cBl^sIbboG^%Y^D&|xq^v(y=krDXLvO+y zVGv8kkNi??G%z*zl;jJtwsj|+%IaKB)KrM!8#lP$cDDC(sIpf5?GP(_Fb7r2UJE5+&oi50dN1rC8k2eRO;V0_X4tD!;2oM6YR;5MCaI&+45R?;*lGtYRGl~rQ91i;Y``N*5a zyYU3l#qbAVUvW_PMwqFCauAGjo+WS(ade1MBAg!$WUDjosf7v9B=8WJVMX51f|FdXSVNAW^R zO_C5h18Ls5q(T8P-OrnnV>!u*x6sl08xMb$kt{%?5a*dxw4|};wht%tu#Pj}KpX=| z4}});QjtBR$zv0Xse;RGbx@_%RD!%Q>81Ib#LyAKtnU4<4mgT1Qr=Jwok>dfRZivP znVS-P3g?6?+#)zu`>Z4nIqX%qC@B(D6lC~<)=Hfk{=qnc3VAg$wUbQ<<T*dcS;%cnnJnHi#nr3`gmzCf_f-UTh-{k!M1$ma%zTl)+h*mQIKlG!qwQd!nV-t&~Ul1lK zs-qMf%yk&K5EgiZ7CT04kf4MMJ)_8)UQKe0_>UJ>>EW35Xa8^wjwNa?TBKhZ8RN!~ z!bX(U4fSVJ1bsDYU=FU8>?AV{I1?Q!wcY}axWow2|I#_Q_)%cb-YHs?7rmF>IqM+U zf}6OUiur>NH(EFzN$D0Nw36>Sd}YohMP8T7xVMyhNNa8ynbIKb^z@uQ8_ncrR3%$* zI428~@`J6zH$DWmNrL?%e6hcc#EA|39ixTW2%($UHQx?4%_Dk;vUF$58$rB7tK!UD z2w>76T(<<}1E#WGV>EB`YV25AYobq}Dd;+uI1Ay>U}R-MiesNsHLW3T#^)@GB8iYY zNYQM;C(`gbKby8;tBfHK$keN^hD2J63T`%c_5jm`wD4vmXs2NmKjJ;rP(n4ziP40c zM4y3H_J($jJu`}=5I^@`!j%b8@LjBqR+;W&gB z!o*9Vk46{9t35J@wNvkGwj>^h@w`XQ=yXu0?m?%B82;tYGz+a$%}~@ zWfQ)m?bQn)Aq{KtgRRA%?$v7Ou@WL#VSZogk+93~Y7Iz=+b`ze+!k~t$cgpj4~pHy zVqSAhMBSbi;f~bRoL(hIkHH1~Ef|C8GkN^fz|V8C7+(}^C7p;>xKI_EXss!H0|z5mV}~bbp`Do43!`nOTx9tTI_K|`SwuR z6+%ikHgXC51hVptOhzQ@uF5hNBY2~p!IFd|GDJ$B!tTE3nf&|8q2rhL=$K>DTpPHQ zLZW#_66N4Vt`dap9@~LjfwclTCR<}QgjP%O? zJ@AwX=ao@fcjFY#zZaEGKSzCucn${xe@g{t8K9|2oz5z=++uSpQ}Nw+{*`_;X-5eq z2roVC%L+bprf09%i^fz*A}ylL4=GnU^p_~|HnmN^tWO`NC^w;SPYmbn8Rph|MV|?o z4f$B`DXzIUAHzMozMu)y2W^%zqAPrUcYK3nm3?W>m>%GD>bF0cWtK9DQfXX=hzsSU zr&Req``fe9R$ZPV(M?E*1Yh*QGnSbuLWOf+*XPrLR|V1*iav;9l{7RB1=A&Gm|hqw z90B22+$d-S0Y5!TjC!b?)5ENog~&~hn*$wgN1t1M25z1r-g?8Rqs$R36 z+7BfQ(pQj*PUNI+-PfR*p?zt3MOdC;Jd7sXLY8c7i(!7Va0X4A_gbJ#B|wde)Sv9e z17eZLsG!dSvFy8K&1OgQk0XmDj}vkwsi}u^#Hdg!%?KAQ3zbj)2=S3G-C)^5G2^@CE<^Gk63|od@A26~aW0t%$({YcBA{Lm%L~OPnS% zHx#qoG$VXJU6RqXULsVY5uKg#bVYKVuFnUA$w3n=nQ(&*UrhZB8tsAS-f!`ABp4?V zk0i#T4o&1&Y2kh14HM2}e?|OGeyQ4TZ*StyFGUPpmJH>(EYc5DL(U;^ly}tmR!$d1 zLJ&sWs6s^b*-0Nx!#k-UAF^uMziTaj#~KUVEBHKHEgltwSi?;m47n!yWi^$@*N-K| zg$)=G$1*gTKrGjulLE~GHgR>y^FyOE3aW1EfJh7CqZe$jsLA5${Q<%2)OqGf)J&(Q zy`94T2ua~6U66;a=s72y$&I+Y{wAEzLg9oV0rHDP@^YP1S?d@M2(o^G)3_7@_zP}{ zKN}bq?OqE%*aVS52CXj>5vOO5tF~>M@~!Sm*cX#hj9jF)-0Bd6)%XJH5foDnF6{wn zFar^FlJu-}O1M6H!h3p;K0p;IM2zM*#RN6!kb5{|fm1)`g-9mk2hxopSuDypF;wC{ z%%TX6zW(fK&`*~uFh1XmDM-U@E%EASgeSi=&j8uC8`iE6NrfHCX^Mpeh#qO6TtO32 zQHRUGHg32WSfWoJi5!*a&J(c!VW^9u4VfY#14t#tNeu?nD}0E8%g*^|3eFtH!Krf| ze$AhkQMIw7)$rdWsG@Ni5#rdA>327i9i;(jb}+A-%aYAXnxu)qYnq~fQ9g1vBfCzP zkBwf0j1z>0?T3e~pe9av$%SNcykPa3?^@lEc&5Skx(ZPeOIQc4VvjP5>=tL}K{$Gb zCMDTa7*>nXEpb{X$`CeNCQS1mY4DOb{f1kJXT-s-m(jco_U@FLYZ!=H;UJJayUIl{ z0GT2iwXX|9Ond|=Bus+lNx{C0=PuPCoF|5II7(}8$JejAs$>#c4b7gt8m3pTLBsAD zK@sj9?}@ZDogCcY^AcwTP_^K!Cur4JB$4br2nS_hMxYi^hAPimR|Ylg7dDC2(B+|= zup`UcPX>GLz@LNw;X|wiIVS2?F;~M@lh+dBhHoPu*?7a+#6yhDm?1=jFa8t@5T8sq zDN2LJR}~$LhCbpEOZ7{PKi>?f73mZjIAX14^_bV3y4&S~w+Jy3!nhSMgH=*o*?wG# z378$eGC1kH4Amd%a4--B}MH^@S zMjllv?a1*nWCV5Bg2)DHmmA+<5n>V+Nprjzj}p^;D%1TB2pjJA(4@t5Gn>jHWa7JMhh5nO-dH$HG=l;i)bSi830(p;^a3Vr;*pi9^5a9h2>_+PR?j^ zF?wLnJO<$;`$x?32t*ReCF~S~BI+W0g??bPe#xs~|KGu|iNEw>X(s<*EN&o21yX%( zyX(=rSDhF)x}m>lQ#xZ-1!DzL30wrJ>`i5v$#1AZfPPPcU!r?pl3$RcNIE1nNn3(2 zej3>f#!)3i65QYY!7NIRzBtMWoO0sg!wAJ7KyRXG@Cn(Mh~sonjn5IVFQyNwE=8{% z_OqzlDGorNnT+fkYlht#ZM#=d9`;x6?-M8hW$iD97PA?75>}Ve4d$0nQBqG4i}rso zWq;9TS7KD=>PAN1xu*aAul>Jd6c%E0{(}MOM1SC8mhCQ}X=g|@XI!|Y-y*wy8@ z3S6VakhAl8Y~78YLX&E@=7_2@77qcq-V0lyY&ZFXQaA(mh$obiJ5TT^KaQ*i7{hb( zL+GG(dZ>WCJ%aMw*a~7oU*FW;UlWnlAw-oNG){k|=syoR`5SF$Z0+^Y{(~9NpA&A4 zhF!V+(NBuH;1gy~muBa7Czdp_o*ZXQQH`rxodOCB8LNQy7?B8aXvob zXY8{BFMV>K^Oywkw;Jf2BWw~R{#R4q9n{43#~V5rNNCatp^0801W-DJCS9=HOP5|O z^xiuJq=SYYP*CIw(gP7B^dcP#1Og;@ka`blZoWGws}r_X4SzW2Sh*oD_bVcInMYfvx})>f zeODES%#mBz=zxEz8+ltlFlQoC)+BHBpDsSB=R0B?q%ZA~MDI5ZkES>?GAD6PGRZTG zw6T<$Z*BE!szc?@t?UI&UEcXs+mB}JgN>iRn)Ns7IbX-AJ^DLwchHD)_j|#YQ;Ov3 z-e1nMPja&ti>=f5i8isODm1%dvMc=?)(MJTt!x2_Uqe{pRyvIlKF-Se zyWNOUl?9gIrs=W3=X+r1f@F}~@nFO+yByT1=FL2{KY(i-Nk04e~RFslqy^PvM= zwyPmfzR5bA?mRo2L9_#!K}OGvGwzxTWKEyt2Mg0#+agNQNdWyv>m@E z-UA~!c+eWywv|?+AulN*ogr(Jjpc}4$0?X@s7x+UcN$PghNnMC_>=-v zJ^SE)5CT32Af`QQ#O_(iCm|lbyP6EZL>iSGKk}H7r}VuLO z>-QDY!gD(sv&y8{Dx|A$){8D_o1}!w{YO7t2W=XP?q^hC?8=D(Nch>o3Ms6Dh7R)u2k#9HkQXLf5y+Hz-x<9d6&Tz_h@I#glD7G+Ti&*Qx8?!m@_K zO%Y4?Cz`G5?N1}>i)TOe$O<(J=<}HHN+&#B`W?Pqmp{;|RlMo5wgV>{HHjVTf8X4vTM0@4=MHC_AhQ=tRyGKY_x zDMs)A9y$?&5;FDe@ak%?C3|<{X3wSHZPSa{B{BH=S)XPOEn#9{NRX!vP~J7N&=Jp@ zx!1HUbl_pb)~Zs}hzj1>KEq~o9})LeT=rU<5l!@88@Zdjb6Ea4%fQIuYIMcR=Vn&eS`jyn($RAt#!A`8W|vs*gA zOYA5&3#(gfOwL+9i=?;2|7wSsIv+V*S-PN$FKA4M2P0Y}I4Z;4aalqKiV?gErf_$Q z7|cpF<_}=yAvm_X0vVT(aAC8vFl3#D4*Ta{R}>{4YdM=oh%d{|yoU zDHd2yBpdpo0GD-bX$D!@*1Un&KSml)*J7VJj+JKMLDp~A_qkV^+UfCk8nCX`E-3lx z)80ZZE)=@pwUo6G)4BzY+FX=V^`-CFO&v42+?}G!#>R$av+ClQv}sGGj3fJfem1?N z@cY*XLfs``EP5BQw_=%TAMZos!styG)TK}|Kp+$oPFK5Im#KMS&1+VrP#>ndDf8un*pe8X2ugaoK9v2YIw*|IQxjuy$0nyOQ)YNDqm9c>45YEzwzo z$rtuQu#RS?L!(L*dXbLG*v0k6WVthciQD6x{l$;<@eY(2i0BTJ5zIeF5F0tnR_a)k zyq2F0_P&$e$4qt|Yb*y1#YdQVUs~V9JP%f>hZ}ZE>=s|ND~{GAOyC@-bq{5~uA~|b zihRGfBZ`urytA2iyxdJd3o8!D1e$N+69!Z7-cl-W6s=;?ttSpnJlBL+7-_h|05-Y? z9kGH)>}io|-McW$@duFlYNTF;W|@qP$m?wzpz#b%)f?bpmF4q&T*;z$8WBTt1a}#ufsLX~ zCA>?PRetF=@AIUt3|c=2Sw{5adQz!*55Igjx9j)-W=z-j)8broXw|AUOGx@iahagu z2;8Vh6D^h^{PHBgET3Jx@y?xY-B*`_`Hn~qFw49MDuqOPM907-qH=rsc}2+86Yl0C zNAdUfjtTj0?Aq9Ui5;A+2~QUm!VF%n0V}eCl3XKRHcPkJCI591a|E)w(@s4s>s##L zwe?Z39;DsJv_dJ@lMx<$`7tuW?v@SIB)Lk@at2ujl&WrVhKkodyMBRY2tx`uAte(h z<59@EZJB0CK=acGVE71G{QQz5oq1?>mY4dGUrq2-q|-sJP4A}VGN9(H0+bs=KPe%d zv~v)tWirw{x!R>W9XG+8cXv9}P8!`mv(}fh_hS{74*Xt7a+a zvQB(#lSTA&fq&`IPTb9X#aWN$X{uLP;Zyl(TJXXuX~_cvfq1ogU}i5$JTl~G9dgt4*0bt&JyF{iQ=d(diZ3$=Ks?X8bYY4e^_3>WqywX*FsrDzl+K zog&N%X*Pb|1?F|5Xk&zk-_TxfQCo&X@_j>yop$i91P0Q0zCDncd2kqa)xV3sq(`%T zb16UlA07K&6!@P{m(mi75)S?s4`ehSvQpUCtX=4v&IwZ8-v6UxS(zU%smqpt8yo7W zFCxL;&i(*?j(Q*Pn3vGL(G7NG3Kq4u{Hrq=p2RX6d()nCBzz3644(9m#r`f<3s z&#ofWTj;jq)3dNkp_8jHb!yIX;qDJ-)*jA$3_B`!rUgx;EbuPbDhA(fP*P^K_L@Rt z#U*=I4!&@f?FX-w_gIQD?sun$3J&|6g^F3tgNG`9z5ZlczRE0=B+bYW%M1j9(;Dks zHJ39tHMhZCv<%w8hHho&)2E1#tRx#>H(C?V{Cp6RsDKZ1+CDRBBg<5@% z5{by_KR6}prnU6w>RM_7rk6L(Wm~ zu-s6Hv75Wx2X8Q=G%b)z5(bl!lC-SbW_U(ZM>7n;exX~OCmP=Rk=JXyZS{z4$J2a> ze}B%lW8L$2Ah&r^Pc5<2y&VgnI^@pD_mpSuKYN`NHm|RFBUqMoVn0ZP^IX?^O$|Z1 ziXz+%h4#4yWk-l^d-L}5Gf3#%kQM6>dcDxs=@Db}xNElHy&GI16}gpm0+#O#j*eN^ z42I$<1LEWEW@{V0<=hYM8jc%2XS6j)4bif(Ys%67jqcwzr7e*Yl?X8fHPEiSH{}={RO$-HztmnV6n+Y?8VjKF3;_J{$c=aB zsqm_)89Uhf3_bjL^IzZoON#KVF6vl3{vQat!g=2!keo%6b`Sy$79>vselLB#X7L#s zF5}?f^UP_@U^#m?W;#YuA@8tnu>1$<3qLW7sK52~_|yKL_lZaPq+seHXJ{nJdf({l zpqU(l$mwSVyt_mTQL`}M%TsSrPULjUJ2eZHk@JFdp{mekfiv$KgC{`bp-OwxVbx2rMa9Rx zIlir!uXc|jo~ieC*A`Dl*j7FfACFW2#lk0W@N5ND-0UUJv$>|c5SXec^)?FcMC)rBeXCJYwAiu}5^=lVFFI9JqWw&D6!)kL?3`G$E@$M+L%;dGu}{-c}3 z;Pi1v#kdpby)&(X#ZHh>A!?e#m&}yjpJ%Xi@!yJK7mRGi3O>Ol@9oxEwCDlDq<55# zrwe~1C!Z%hYo9HWD$`mYySDu6HP~40RowlpS(Yq?68FQz~df`&gRT*5T-V+C3*>+^Nl@AFTRK)bv(XGW+&@XQr}=Uy*w`t zPpH!^xN@pl2dKI96(;@xI4|BrI<#_ko$K`}4uG;&pn3Lgx$k;Gheojiol6{W`4W9kO#E8&fz)d2|)BSh|X>I1h8S_ln~U z_@kx%wKE12m{2T3kUzA~ok;yP1dEp9yqRKd&YaUQ>3EcYznJqL*j2s=OW{u?6#o>U zH4A0fR%-{_n3^AaZVu*tYY(Gm1vuySJQJ1ei0S$Rm`xeCYi?%KV!Z1 zqGW#ce>^9APFr95_$_i5jcAkPK8hEe>odv7*b*t}S`=Pz?u^bC2FsFwtKSHgf(?lK zX8AnFEh8CSS6)Er-Zr-hXS5bu%SbJ2>I0|lp5ICVHceynUbh!#JR>f<2YV~>b~=aU zzTR({)sEk+|CgTl;52-;QJRCnvgaP2RQr#@4JJtt)owdXisBK=BX4-M}IbN z!Qj!3w?D$N4pi7Gvvg>s*AELOb8~5If7R=M9ylBmkcht?xb{Iqe?NU13G>LmyVue2 zbND+0;rF`}|K@FlVvP4Y9(rh_^FM7S3pce3-IfJ3GX72MRB8Y-kF-&bP01=^^ zsjCA4j!B983?Mj?*XPVVZCj0GVZ^8B7MDM>l3K?#^y0l7UHcn>#D7x15CTWS7icRd zE{)xDVpyg}y3tI*dDH@D2CP2?I%3QTJJH;nw@0haK^m%G6}_10*%+fXFr2XZmf)vgSJ> zM}-6uIa$npTVBx6@ct8q(#ENE2oC)RK;mPNi4WC#vqa8)FOjf)i6Mx0x7@E=K107$ ztAcwDQ%!B`ZcZHFXPxz}C(-m;T}ndiW}1sOiN&U@wrHTrE}j*F}`Ar6%7}^T;pKB_%2vbaH*`E!&X#7(Ad7gwVeH0|2GP0qnCr_`2VS?{@6e zEMh!MwgEugBz?cR0CcePMus($gIKqbUrTdu8P&IIZ+OXbL>G;GQpJjaZ&iFaZAJz{ z$*9zal0JCRzZgWC_eN@mitn|Ft`EL!G~tG)&>7J&#OFI zvW2I%Qh0_i0z)bJ*Hc-b5n8T6l0B6tpgx!CPU>2%C4=^@?AtE8g~Pr85ROYUD$byrT^pD?-IQK=Hj=%+$kqY!TdCClJ@#12uK?g{!Nu8FRwBX^iWaT!!4s^>;>VHgU?mNvrS7+@QGBWa6?n**~K3K0;swWcnbR5-{*wtUrSPw zQ2k0p*ckr<2&8i>)H9e|o=xU)`u@CNRZSnwr9|59ACGtV%ADPx;MfYYjdN~FEGx;uZn!>ZI>~dFAN5l0l1bhU-5*ux0dXZQ zSZ`quz}}OMLv-QyRAHV!P|q?$6{JwEnt{~#oI$lRX3eU&D+Zyp1RF?C)m{aNiGd)zSQA^w!V)3+($wF z9HO$4;|pxh||7dF@Nf!cPd5E|X-M*VtWTh#$#HFpCtE zd*Qx~(lVp+k6eSPg~kY|&U@(d1}Y1|x&09O?*zeq{(8h!o0`rX*14m)>)(wI4Luhp zx0;1jO$Yke^ZL^gA;7}+2(1S^^U({(a{p*|iy+Dl{kjm{qVY1NN$;sNmY*>3z0$NsIbrD=| z^V{7!hid7H5-qycx)1yK3ilJ*p9c>5qvs4XLJMbh=7;hio_}+D3a<96Fis`B^-gD; z_;Noj2}oM(PY&ik7SDovBfA(kw8w{7VM{q1-yxBQ3PM5e?^Q0c{8d3SBv&i7S zYN(Lz`V1I}4MUB+>#mB|Hd`*bV%KNBg>1C!%o9PXC1SZ02%A#c-)rKRsDu>9VqmAp zq~G5I*DsBo>2~#y$I=%w`BFHxi#L$+C5g%_XAe)R$p`a+_W9EmUT&y>7cX0AhL78E z`5FxEqEz>YwT2)k#quEk8=vG37!oEqWWGnTJ^IdTfBn^Y0T;`^hd8d-fx31_xAI(8 zP&^>6Ayv}3mW+1u4F|RRE_g|13Wf|pStE2qryklriEt9Y3(S*JINv zF3wNjYR5hzm8&_6Jyz2(H~km%dnl&0giA(z0e^$jU@_*(}H zT^|7b)9sxMdUcpcd;U(;UAWeulhe7@t>Pldi!8Z!&V4*#nF&_4c)09+HR&6qxB;j8 z)mbtlQ1L(w^`?ig=Of&&y>xoz4y769=2oMLU3&g<6-5m!R%+@GQ8Iil6sSRQGaPp?1!2MLye1SPwS#hb8)(%YXkk%Xu!eAwFmmXFlVxYDr^mhC&yL4FlEF0R7V_J*^2 zaNE`>;$L|$0S#pdjGJUv*wton{oJJo|1Z!3WJd|a!n%vT%+xrNE#1AzPltIPcID7D zkw(8s?F<-S4j)U2+$dS(6GaQbA@N&DTHTdX?_mu}G`B%VD@!7u)SO0o8JC_!S?lWI zd;gW0Tn_5n<^O(X)|$6+j2m#kShu(X1nO8T&%alxgcW62KQr-=;diAX95F2Q`?!|z ziTP#j&GkixyU*gcB^>&h<1V!LynMXVdqL_o*HY`LK25Xz^g&7gjkl~&k{8V{PAXk_ zc`STc(|Ygn)2|_p94B&Ghv|(z?r*AK{pJ-1Q^q0n&_da>oYDT`lp&H#yi01s#%v|A z0p|4!BFlt?ci>weHi6!M>4&-vEKb?Su~_cttXk24q%=l(BtE%FB?)w-G+S>gW{6Q) zAJGk1Edi2WEzWzZWvb5f39J>$>?G5GvD&qpOK!Y?_KEigGyKJV@=B2XRb=H|;o_@0 z-us?$D^m2hM-aga6AhYA;ziU;I#2v=7A4XjMp0UE4#i(BGs=ndJX?r-$NAQ0meO$| zs%NA5L39W*c5WI-jd*dMfVl{~GD=b9a%oNy8~|qdw&|-hZC%@|wa#c2t`BS}7a5|4 z(aW%@idgyHT`<0g!X5m)>1&-M@(D>R&$aAHcpvFGn}Sc}NNq^0#-&@msdAZZuVRqg zkfGfOYntB<hpss5IYGS2f6~ZZ(!U-asWvX1Gj z`1f6p_NVW!D&eOe0hE0h0Um8Gijjv6$!evZ^!Jl;+FB>t&?7^*Ad5Spcq`;kyIXm> zHN!RA3QHxGPdp`s z#iIJ&vgl2{ZMGTJQ^Hf0U{i$Y!oj{b**j1evEV_TPQNPUA|t;pe0cG}cHq!9OW9v* zFEm@OGI6Y;>kzM(XGn^-f(J{J5hVw#`!=`{v1aBY7h1cI+KK0=XzA4%-lIBz=*=mw zisS=sM3IH+Ck9F6GcHV(b+F1`RPM}YjO#J0wpRPvHmcdf64rP{=wG*29}3!5O=uPy zveu~LaSY(k5-I&UC9whuxa2pxEhZwpA%5TwBco0)NlQXuAbuVJWQP#{Y62T=xXkeL z%LZTPz2bV?AqmkxfUG+*6ZGJ4uBV;pVrNO*wAESYRjVF#l$s_K%X7`^)8-P7fRDIR zTrt_n;)H`rrHjykjLxvZGOi)F2Z;pw;kp7gKR6L3$#zPs{S7j1^t4Do{$}S9^G1KG zZ`rFD@_9l&nECK59hy4uu(n_=`9-<6tnV1dYO|rTrD6u?iyp9i;K3n*=0zU1-4z47s0(9;o?IZ&++;&c*T zJ(vC*F@AvpvH!h!(sJ}OEG#2Yk;x9SP(pz@!W$2qqjUgDj58%{gSN0oGv`f<+&!WU zGb~TT{s2r*u0q+A!CV8tq`+!xbA^v3=Ke(@0yP|<v_GXpirXrVXgg(xTSjSOrr{Rr+8t%pYO_lYlNk|HfdcoV-8mk2{;0ddO=DV z!ZtuV+)d75UlJeIekL!lR#;^P+HwFTYi7dJgGG^z2-WtA{2T7Gno6xY=i0q z$0zT)6K<#a#Y)Cs+~d4M(kerVxpb#Im{v@AoNkoNPVqB}cfR|)yMj@zVqkcZ6N04g zwi4XJdNxb43MF0p`=HriYkNKzug}-;MpZeYTL;YaJhe>#93GOp+t#+0;xFnWVI%jL zl6T9R+v&-Ess2nzCe}4km;^tkB%@U>oY`3VR$q3{t2Y6QY|}@()v-SO^`y{<%gCtW zz4;!5a`wUusxl50Zz@5fZ;oJ zz<7Slh6LnY*gwaE8)qSZ)t(Kn~p12#rbjj^PUbm{}7n3(bVkHp*8(Yqh|-yPyY z21(9LwOo|(y=D0H;UaI{rU-qip=86*r@}*>e<|I5)(+0wNd%*7V@layn{AysZrzpZ z&@dz}c7K1RYVfXBw0n=*gGR9V-?s-V(Q!|owQt&V3%cB`5GStQ6mXB)?jA#o{9ElR zqdKCF=U}#ZyVVOskt}%|pspr21n``F&OqwLM*d*+(xp$qWIsHkgNwS&L`X`swKTlD zO4sG9iZ5`l&SvP<*aAo|$Lo8C_M_mrnARRgrZ}WfOD6YG;;~vMTz1fVaenMOb1cO$ zq~w-A;8&F)w>@h|%l3Kk376^(e(721-Ua~;2JCaNM#`HuUdLe}YpCjQ0Pc*EB&R|* zP^DeD#~kt9nfrw%XU*N)-_D>{jjWLBa698v6Aq_jz+F~fQ7BZ1nX4)bbt5B*mYTu= zcu`i@$i{%^QbmsvQr_7+-FNbi;Nd0s4NUw1X9_*}lJ2DiR`Why0D>l|t> z>|;^C8U$oGE8i77@UUDjp_#F`%RADntmHeuS`;hMfnG_OQ`igcq1H~O2Ra}ySF+p} zoqqs%3ME_EmA@TXZ?P$6a>-#<+~9Cv(ntm!YDme?*E5MEP?pwvqjuHA+1%-40 z(bmYH^T+MJS5b`>xm&@108LOn&hbc8h4hT?V$?H`0HM1n>odsnp{Eg>V7?hTAek0E zU_kx zYdpW0hRRQ37>BJC9lF#E4y843k(`K71r!4ZYYBUsoz9uC>{-)uuHhKPU?H5{*i~;X zQ33#B#@B8X7Qf!)+mJJ(-RJd24(;ET3`bF28 zSps z2dbwwZQ=tqBAwX1IR}mjzyAPmUM(BinRD6hzCpd{Ji~RF^#v=cac1T|J46g-cK5|e z&fQr4YbVb;Xq-UA6AxwtvmZY+@4`eyi-`6uKO)x;Ns*ysrCeau=FXXYcpRy>qO<06 zFYgMU^I++wqxV^1e3)}<+_7~zjJN?mS;zBd3{!o=rCZ!yUOy92XH+7~m6Y_Jk2viG z$v|p^-I>x0qi&mHEckkTR$X%>b$V0SwG=Z1`U)skMF9Bx3T9-kad5?O{s*9@XwM@^ z*PCq#k`u#!CWr(y;Xn^&y$+M#OEfZxE81f_^Pak-Ea=MXTtQV!s;7E)Dx!StDEw`p zMF=^Qc}Q~1{Q5h`7HhS13*A8}tA$qzat#;^=H0A1b2v4VbjQ2`txT(BkFVeWl7zVc z9Ei?+RQC?RF-i1vh~e*FO8ktRdVg8I?09C+7pb&)mM8+7ipc1-LXsp>IzzHbOBhHz z@m%dpta_~Z-qXe*8gNonCk1v%_3x)5Ms-up-Z5jQJrTgJ<&723tR|_Egyp)33zzJE zd5DXPm4eIM?ghQ=BLl!)hDL^y7Fo3fAw(3lC<)JkVGD~sZ6+dwoAxElO>8ES_vABJ$hX z&zkik0c27Y=fK>Urdv&B6uxF9vXH5zAD-LSqvPxnk9ByVco1n;moXqq^~}wW;uc+U zQQ<;nrMn-&JTQ2lAXnE_@h;z#qIH}P3xbh+)+E`j*1&7Lcx~tppq%7LRzrWD2 zvdhR1gLxftzi@W~E$l`i);fkRRXlJ(0#1;UUCK7U6)C%aDs!-B8p)<);1^n35FSqa zF$Cd)N%S;ubpxjM`V0SFS5Ik`+g&t`$G$=U)=39w`@3<#A00@`e$Y2qshZzzC@PSW zNePUlnIaelyr@f@H2~D?;VBd*`^5`b(!Q$bQ#tdkQ%0eUWt($9==kj4(ju0@E%^rF zJuYh^t(fUiJ==`RC+*77o;& zMwkxO6^NBj%wB@It$t~h&JI*%7%@_27wu2 zQuh>9qB>7hKb2V5y+K9m1gT9^`~^MPj;h(Kk8%;9kCnmUVHdFK3IB_KCC)^oIVf)& z>9zF-aC!;m2#L~gJz(1>hpU8BJ|?9&KHo_{G1yrlt01^GFT%Zcq?_=&{!tHUqW<9j E4^S-FNQ)%uVsIYwcCK-deRvcI|y0<{nl7OeHx*IRFX@0H7ZKfQLmO1b~M6>3&|J ze>zy0pI10oSQuD%IC%Kq{t=K6;SrD!;NcNb5Rs67xS{btUE%6WSzY)pM&5GS%B56mVHmcDI6WcU9l2e*CA5YXjU;)%v| zdAfLE`~1;X+%lntsKtr@(QN<3=3lHKP~Ewgp)NzL)naf zDJMPGrU3fw9|QiiW(kTg$xTt`8MIE6#2@qj=|M5eQeBU}G@&PgjiEXIEdZM5aq#+> z_Z$7+yFlf&p63;%{Y;FodiNbOSAz~wE0v^d5wMa2FOWI5}lQT*rwWU8~O;V{Vjx395v;D!c?V`IM|N36yF_CK9eDiLW zSFkn3W2}E+%OIS7-}$km)BOmQmP@B>>8q$OroN_+W&F{RiTX8A^R~t+1}d5EwWbZzSxn-7{*ml?y<3>0zaj6=zls<_7!=bqzV!PW(Sm81gOkrpK!M ziw*DJ6z*TxiT`H)zcGIa@@H)R*UT~0I5--j23gkYq6I3=KQI&i&)!6Sh5s|8zleVl z0k~I{{7c*Wck?GPJAMxU^zf(A4-&_rRTUCBsv7S<)Iw1|07MPv*tym%Nj4e2+h^aS z)i)80H(BaXMFr0Ge<1Mab_2=J7+2G$EiHsDDTJ;bfXNL7nv{>oBOf^?=ltJ3zok=} zg;@2mX)GzQ%v!#aL4z?^2m$KP3obBy5S+?)Z`x9tHHPpDc8c(|IM_njXPyaN%?oh~ zGbZ( zKr3Ea$tHJ+>0I}$V*+D#s}TFC6+-{o^Qynu?^>03pBA7hR7DXh!_c%7tt2EF6 z7%TA__K3_|Tn7Tja08`AoOv%>%e7#m9aGWX$>XV49ZCT|_dC#aUM(?s`5P&Zswgua zHh;`E)O=BkQ{} zs+&Ys+xoW=Q?}#Vi`?8tqIB)_C|Xta8my={FdyVx0}vKZeBq10C|_h1EYO(8RhXGN zeQMp0AE%%F7$O9k@jEt*4%&nUIR|O^r!QM(?w6m00l;)t=JSejqrW31cgrf8;)geC zcS_=aQ%HaS{gpwzWS$qo>wtekLg<@`=x;J_qdt71zJ^r0s#x35DEVL!{A|oLM9lb-Uu{;?>1lCB>P`-5$44bC5xUrKAoBjW$yX8E0}Kw(11S-2^rJ zJB+SXz{Gag2l)X|q48Y(C*%Z7ys+Fq;MeI@?1_IlhJa$F*qmXsnc4N>>dU(dRd=_W zEkV22ZXa)%+^aU2GVk&xpo(9X=MDJOBe3e7Xts|2t1ynv%q}Zj)aDR#l%EHM1p~Zd7KqL-oe2G2w2$s zt__Ho_=J?4k~(HiZiy-NlT$dj6jan4ToO`XQ)idJ{5m{tUOp{t_v9V|9%*$A^PnUe z8LQNS;@-Xu&9&oa6YD3ma(R!3?+_o4fAE(P{66k@f= zRyvSRi}&z;O23F-ApHMa69m&Y4ko$No%kc^jCW;;2?0@aV(`rQVZJB#2HK{*)5-#4 zFdawx|5L1$Q5@-k$!KP*dP)#TPEI z*l_6Kohq6MgD`ATP;Su6(ikt*c=KTsj3}mwgWUDA!6mKfJ2eQz3THQQDjeB zYfrg#m{z~+mv((KaKw^i!rJG-c(q)Te-sh6tsA}aw$B?tF4RPDK2l)8*%_=m?!Jdkwvhr)gcHhx%R zx_gQFg`O{SiPofsig@$uv~b9q^G#`=oCRyARKJc0$K-59v659T3#Y_SSp2qSQiOT3 zAx)65ZjY4zTLoABKWVc5=PmVhs0ZsJ{^7_bNW_{q#Z^cN^^9bkV;v*nBa-90Xq{qX z%9CURlT|GK7KY*%+67)u3fs=~naA_rEK~z_hy{ILA%04JCQO&R=q()6r$2PN6x@5l zLThYWuxibt5pwf?FyuZa%X(7SdX~jJUcmcCH##;XYZ0M@%ES}gvCAMlVb9YSCq~sl z`|g@zt37GC$uJ5bCan1!?RN_BCDE%pY4t^jswG64K!xkg3)6e-1)eC2@ML|&B$Dxs z23tfrScapW8%C^QYGR#%&Ux1-Mu|==h-JR+t3}>chhMDaVM# z=?39*zz56iIe%4s6hlEtyS5}}I0(dd(KrL9HY&>I+_NKB_}Ia znqrun>N0kSc(g~zP{KCJApjcXJk2v3JuDmdiWN>tY5JqKB6b>)tOJQed`BW;Em;mh zX>a*?1r<|8=TYb7Ua34$Jy;wkuV(kv%>f-#haz) z6~;Dr#_(@B$z59IRk)e>$w!DtkKl8xGJT|1AvZ9;N3sp~FQMGoNZob#ml@lKbeLc9(JK13+$+lIbG-{s+BZaft(mO0-~` z@OJa0P*)`!l~Kzax8Op*z{yG|@@2k+8-!<_zZd>AXWv{q*&&-{qvRFBx!eXMyhup) z@<7A6s=Udm&7rV51tLCcfEGY`(^um7;{D!Bp(d+&5v65*BfbgoidJF?m`i!kyTd3& z_Xeg9x~xggQ#A0R)+BQD`)rRpgaj6*R-~kEk>o557 z5vxnz10YA#cJKVhtmq@x6f|!t3lC!JQVy^9tZZwd3#lybK5IqHSekP*YJ|~j!f3ZA z-Nc$s(KCT24CI&r&j5t5LRTn{vvwaYMyy~_8ado^x&6|mvcyUv1>URiyM8V==w<_j znh4UEl>|>QUv^#`FmE!Ph5%s+ijsM39_8Yj-}S0Rz7MrXtl?^M%S#cr8nBZ>!L{UZ zsq`bW8T6s3b81tSto!;j4*S#OD9ekcQ~iCMj1#K~*640-psZ&uWX@B_5~m_6?3Eh) zm=68HB^no+VHe>|3ARCr`AuXLx)||qCR1D4PV6pYDK*AAVE{xKtT)d^Xc7R@JF$~! zh0_q1FQJx$Q5kMCI~4Hurjte1)cpk)(>*J#=Jry{Zc+$kZoZ9iTClrlZxx;{c2U?s zTepavG>SGxNm66-wi$Dx7}cFaxrH#HUei}7W;a-dr* zzo-vf&*QMG6RX+-KF%VpdbFb}^~t1?D#zKyd3&^23cNV`xcA^&Sjc(s&hucNhz4yq z2hb4`RYZ$m0>+<-0`RrIsN&uXpe!3XnbQQDoZeRS;+GB4JOB;1hs=CbY`F%KMH zjQp<0zh!G<1#^cpcDp}zf_BIB7t-j4sjWYjXT=%@G5n2sQIFDKFLxBu=#{Ffh;K;4%sfX-*9l_@7vUH zU$|$}Q@!8Z)`(;QZ861bOQo)EgGgoC$I305h?&rMStgO)CDBK6!Gb9{PK5xAaBC5s zx`06TpdzdrJw3;_F>Ol^wd8#fh59L#3F?BCz}1*gSA~_LDhyx!F5-bmG(opm;*c0u zTrvGZO5Dh2XF}fT3(5j2jSHFJ%V6CPWFMv(RVFjJSoA7My%7|(VwWmRFsBrASHJhu zP;m^fX|V-|4U)A|dv>f)?(P513|GI5AE0B*T^xFos6L=KTtXDWfH((`79c=Hk0nA& ztyZeGy`N#r^XzwrPW9GEu+d+qCu#Az<&l~=u)+8iR(25IaBgp=RYU}7kCLcwy2=YwM#9)qC8=PeUY7NtDREuT;-l^Iv3sm_ZI#%zS; z^=kW_Rd^G3+w|R?ageOKW^YhXv}LC}#h{L|ow*@hddy^jNNFkrSv4G12z~;Qyhv+- zUfsuv)MWNMs1Q2GtPeeo8zy{b1`VdH2T%d%z4*H8$0MrijqC`80Ey(&#gAITZuEj%H0zo9~a?(P_p)R{cp^H6In^0FEk& zM(TWX3W0L{tV4S5J5y2_lZ6iGu~4%p(^?6ir|Rr!^WTcDdS*ZW&fXe&Y&B<>t8z>L zG7b`~SX0Pa=bC9I3dth2Ca6SipB}(gcNclyabjJ!;dGRyKBXbBMkC*aw}XY zMjY**q?p~|WmPM=Cr|{qwFCypU;T|%$j`hEpmGWkMvz)CdeL7uJj~G`1j{urL zCqrIoJj*)Ozlz6G@4L+_?fb^bwP)icFLke{%$?nFCXpY=2wj-rh_D0ZSvr_iWtMvxwx_g3e#^^M7nT>-97)_LZxb^hX@8F{3t56(@M zA(W0Ju9iTCt9}z~RbfllWkGRIc~~?{3(|P@E;X(e8|odSIi#dC!yiqg;%%DQcb}yY zWV(W4Sq%~pLk6$_hcydT;$cI)TgTo-&y~4c?CIie_MnS;J(p19oA-P(;P>^wAhhHvPShGm%-bU|wq0nNvzYRL?3 zV#%zELBX+6W?_(#4qaZw7l|zN%BP|$eO`q-SO8UK503y|bgt+*TAnm|P1fH~0|uWs z7s>XF6wo`%!azC8 zOCwt1FqU~0sS0J*@1A!C8Z*9!dS1_;smOD~$hqP?b?=@l9Nc3FSX@S8X>9LvEVI$8 zPjW4)SjTc9C4nj6;kaUgPrFaAj-o4IdV&{0%lUIAG6^+WCcIMGmU=l&)79V8N&5gS zj+QUfv8)_CODqas{kmO?^Z*#%vvb%Ufq5n%0W?XLDmO?Hs}t@qy-y(+ zvuuIsoRta)&$L#$=L_4eEBWbhs7@N3?ozS>PO6H;X<)A=m5tpB3-(fF*gTswWU8OO zaMr5*42#dMlBcCDTCDEx_9c{>L(ifIT?3B*qMe|{!ijc-fq5`hx5@8<>+}>cDpsd) z>@zvyJIZ-vg$85uuQFEX3A?XCG{dEKn(-IFXu|NBU&ZT8zM7m&i@d*Jz8$?6vd*|4 z@Xz#rufQX}<|(YuEV<*$GZ%Fx{Kml{3dXXn&8^aF`S$f7R>)WXl51vD-2%5S(hb!d zPc4V8%3nRZ!MnG707$vV{LQ<@x;Bcw82@;awygXkb%&Ho9X)#bvo0SYg3_vpk&e9o zYh~Z8Qj(NNkt;EhwFf}DeFrg9IohtNyJ_T4l>mJwpR4)Kezp7ioPQX-Y)aP(uzFrx zJ;T_>u4*)Ix>)S=L|a!^>7%o=aC?FDA|gt1c$iQK+G{6pFuZz`P2bvhL=+?b7SA*a z0G&MGIeOZ=9oCC=B{>h@w?x)IO^%tZ^#aB({>?=#DFdBdgHBJGR<^-lQ_SulF^1l0dcLMJh8QPv3pd=G2X%FyKr;7B-?zlMGM3&co~`dRjrgWJV7;{KZeO!+L>3{*UN1;e)`!`K7VFw;d8V-@ z_{-!M>t;A_2S~7dXQ~ahWbSxQWJb#0Y)Omqa>|c*Bnj^8Dm5X2DR*pStct`*nAlnL`xURS)NW<8D(QSIQB*3(94Q}DM~YS+;EV^;$uaMCA0 zZjqUK3_`Qdq)Y4*ur>5Do{V$gPkuG(3pvDIT*}sZm*2=}qT$$`3}q!}qqjmOn)DIQ z-sn#Bwk^1G&%4~jmrMB;L_B43*HH%I9kZfa!5(X>*fK9s6NpU-kbF8?YjrFKS4X!C zh0?G=E)W;X{H<131=QC|fE_wSMBx$_u~_taUCe2I5BV8pw+o?!ggq3RlGcDJvw)-u zdK9zUT>?PTS5nT4wmn0BGu61or84Cm7NYu@0YMHT)NEG1k0M>3EN0#7H!h8jJ52h$ z=km+-r(dw9rb2dGI!&Fj}ih4FPK+eQ`T9`ZG@Ankl?E^BM zGh-BAO1BUNPleFB+wPP`<-&Hs6UkP{*+v0%ne^2Kd?KN%Km(px9W0cVE=8ggu@<9< zQXI{2YCoD84rZ|1vgGkJDdnxmsxbIZh8vXB^;*hF*?SZe-;k~#Gn+#8W-j+au4#_} zs(`Ha(r(Hlb@2oCbO!bXR0?Yui4Po1EBWnAQ(RVy`L3Mm6gE?0e-!3|B?ns26Kw?V znM;j#*B0ql8T>_EH!ro}kXWR=5u&gsEN1q?i}-K_`a0#=up#sE&tpRrf?VUeH8^pM zdGTEd+(Z*c2Gv*U_H3gBJaKRPFJEAd-iHEbGDTrOXLr}$DE0oD4@Y2E7>x7fhb% z3f4$9MA3{l>Yvr6~LVg!NM5R24m zLbzx>B08Cug@yYhP2w4aLF{d*qdsM?OI|T#YV-P(S(lVB`~aJzl6(ukxemZ$2#n%G zv_aIUqSG9Ac_vV?{nk4!Y}MbV4O*;I+=xqFLZOi{W-wFeOa~VabCxk^Vg>U7z@Kp^ z_tqiHnw!?7so9>$!CpC?%x-2OE&7pFkX2TO09sqk;E}MQ1s!f9**ChQ0NS+Cm?Cg6 zZD@}g`Z``4)yXQ6?%R+MBirNNx67M(K&dXLjJ#Nq z8sil3BbCYgE{1bqOITZ?aP$iGew>Ztu9Uj#WAVFj%{V2NC{=7O6iig<6eX7o9#{m8 z*U6a}`W*MD`hKbwqL98TPMaTs3Fn0vs{^H*U!_0AhzH}xBWnn2g`fbq#4w*hab={zYXC=w%{jhEfc8lfK1O3bO9%8Cpy*mk~cCR#Oed4Xh2LvVQ@t2Wt7saQL0G8NoidwDmyT%$wWG8A zR^Uo8E}cGyE92fg4)NWdF6(K5UzTTqrPl0e{;RBv!Yx@pE!Q@TqdgaXVZp7TU`kTh zmB7BMD3S$TP4m__kl0UIzNlO043FD!Vi%R7ymcidiY6cP1!z0BM#>aNSM`1rr$^1L zP>4oNPB8TpcNK5fCxbesYy$)XI=>mxn-YCkT|w%UR>%=tqM~SIz1BtH*HXxTA(i^q zJ^LvUE(0U-XNedhA24xho3H3@3v z?{`+7Egf|aM@(Y$hO3)KPA}-aZ(N9B)>?w^=4*?X1MFx}OcwH7ci{ch9`Dtd{ z0RIHWBvGlDu^v(NXO36n!>M48W}8smIG)D?OEmoM@ zsNmx)N-bA|77bwoIXU|mTkL{f0@~|lj(tvY-y1ApkUxL@Bnl&$C~HsOmY*t4M~Mp zNrnBs&u-CFL@;Sj3Z!gu5QZ`A1WeV?&1?%k?J%F%=_W;+lbtA;s9%bGuJDR_r{-gkgn zF%=1`UrQAi@mzw$jp81F_Af2_PYv%C36c2Zda;PEdb*5d5%D=q;f>Hi_@OBoYx05b zS9;M6gq{vhV{o7c9JzDo+16$B=_x^d7If0;9Z#%}ERl&oD#3@6>PFV>P^d%heTtnm z0a@npO*h#aDYNvVHOe#a4o42Zs=BpFlI48jLiRRybQ0|pgI*I%!^yN&9^U&DjIoV* z%b27n6@pBZR@TmOL~#G(ui9KXD=pdT#bg2E83%7)5<*zUZurJFP{7pu_|T-lr7WpD zFp9DOo*|T3NR20xx3Y%{Lz#76ALAQ(X_*_tKN#2jH8q@QDO^xo*_2bsNIrmw;cHRu zF_A4IWATcr7mzj2k4Tmg{nlXQ7ibsa3Xg32rVWT}EmCi4N^T`6t1vxAW# zE&uu7m~AHY_*c4_nexi^v7e#TVYGsOj(!Cw1-sCK4tb=!$ncb-MW&>b#a@a^-6h;0 z6|DP6Oy0>5m==Rx4C7Z1fM()_l6D312WMCZSr<1x3DaW{>g%)M&l^P>9ED7ysv8v% z`a#kY0Y21mfzo~>4EdkbN12=-PYh)ARfzsws}JhpH~B{E89XaZg-*#yLlrAGU{I-z z^F3fuf#qrC3+xq+p-)9y6oP!LGbIX77`2R(+)ZQ4nSks?m{tx5?n>>%IYNAS84{yz zowTZ2VjcXa#Nr7LTl9eVGSR|1g-XRrBBBoMlW!Uh31xW)aMW1*SY-_v?fD0Bx?JIN zjrJo$UvR0WZmtBft0gCxplV&_@1u0J;PlQywu^_|3Z+wrk%^l5mieiH~ebm{(i_butFwvKUzJtN9z{GHJ|1^*PalaTgf)g-RPP2S1*9yCht#dr7A1 zd-O&-delCPJ7F@$;cm*n}#yK0*xD%d9Z4>2(f+O&EA+BssBDcmsFqqjjJ%b*vyoFa`${+kBuD9FG=t@Yc^G zg)14B?mdq!?0icqzcL$M(!?_}%>3hw9=5ro)sza{#xO@WZfPcNuK5Y70!NEoN~ zZuPj+tguTN;0adEq`jv@+hxCBF_P7hQfj72Br+aAI`s-CJLo#QT`TV_SLi1rB@bst zisoe+VlhCM_Wv3%4+Kl|Lu0aQGB&73}S;+`XutTU1p<)HYPE-DT zyrhl>Fu*aF)Fo$|(+2i@YBL?Xh#V0@VJvq4ibipM&SgDzr8Zw?-kVAN&XfCwr={;A zC+-0dOS|D!6=dYPUG{HDUB}P`zl}>FHGDt#xz(XQtwF0VFY|p5Y2f9Los(?qLoJJQ z=!&Ew?6S<>$Mvaa8DSyqhkFoNrUSL363GR_t8TX=H$+5mmy^NpPCwV$hfzrk zXjfKX=if^~aiM!aN9xWycY&lI4gdb-9w6J?V4E8J;jD z;9c)2yHbcSZXTl%QLlv_wHr7sU>gwn`2Ckh3;(;hkPMSw-6y}c;ZZs4%x6gQCD@ZF zzD#hSPfx?T)6jY~w!yKIpHT7vr(m6)3TDCPXnR_pcn$@xP_fO%)|u8$#)zq+aZ-v&WvOp^=)iOylr&qaHo*0dQ(3!i@r9yM3{fwVcH zCzhNMrh=#x6np_;#WebNEz|ZqI^LH5vycMDPWcoyjMI z(n!QZ++0HJCW%0J@pQ^ESdsEzJeV^?qJx{B;{9T?&m#JcpyLcBD~s+01eEHbTEF8x z_-=2nawWIqY^B=4Z*)Vpw)7Y>rIcUjpux~^d6f3dr|ifvDk_FjRQAhsdY-uN?dntk ze(Q-wVHFu!vxLZDT`(jGO_T8D$m1CVL<5J&e8`k(ZqaNWJ6O&>jAR>ueIVeExU)5;9ZRpYn_=$U7%KGu=t_LH z#VF(HeB6xt6!p>8EeRIC_LOLfzgbrDB*!0(VpK)~pCRH(@-MBXH1uNj>>TIC@W^wT z!oJw3{g8yXU9z>wQy=i6`G zW&wkI3sr*ekKev%{ad2^JNa}|Hn-aqsr5}PXZEPL?}%Po$VJ{R>Lq=@gYNLYF&4e6 zM0$A-r?KR~P8KLmkxUJXm7~rV+P=d=QuXF#7~E*GWs7K!ON*S;2kl!5Tz85z%DbHj+8#vAGj;PEt9IO*uG7Kg65)2IRntI>%Q(l=~O9l z<&td+$2|3u%;tT6OCeLy1moqz%58bO!ZyGmoQ`8U$AdyduE#wYfKr8)_DPicG{0vl zAa2BYt@6}gH5M1NAo>9K!s0LXz8W#qUC}Khf+vMM06Ar*4J}0@uwh72JwF}*iSlz+ z0R&}#JYm0qojf8tzHcKtJ@u|R`I44`aYM_<%yi3`F>T^T&af@SIr89!as_s5iWdG3 z(xe#wUK)i+3y-U7yE#D=2w(E0I^C{H2KyY0Rd0))K2rNRVrw1ORZ@zDC(~v=`Kvf; zW33K)dH9eJ#MB=_hMy0(vqXpaF&chMvMkd>+P1ff`d+XF^7?g>Od$sLC+`(xYE#)S zj;y)Aq&vr#WW}EH>(zRCb!xY0UvP;|Ou)Zbx(^IN5Z(j~XqHE> z{*J;+ZA6crx5V-0HIYh|-?l_uRhj21TfUc4QSr?4q7q}bAdJFF@5e@kFNe_yL6m}e zfoOt=KU6l58!!im4@8bHsH9p2YAeaQA~Am@7^?EPQ; z^AA=D_?fh@{o{fD0>`7m!oZRGyla686wt7mrZu%oUN;o;TZjChAxMOe8J`1UVe%m% z`d($l9U76%;!~Z+=c+J$CY~GkpF*C9f0cUL6CMz~XfRYcJO3@VG1O{;@eHHcd~441 z9#cW`YTfR$)CRUQo$8mOSr*pRK1?x7D-_r{@sF5sdb@{~=AQ{$W}E}^6q|3&CWm~y z_Ut~(R8r|1M(cior%=Lw56cbUW1Q)8zzHYVrFf1=6^~Ys#ty5+<*H=u*n$D2cJEPRQq20#<(LP-aZSLz zxYe~jO1Rx0-$S=5|e0AbvA{Pb>;oc#~tFY=KCU2u_31mhz zyYZA=Xyo=VrX}8naM!#oXx68JuwWqK6Xx8YTYB^)Fhf-#FbAlEO+Pk~K-vWY2{+^l zAecG?*j^kU#PnH?r#djFM2SZH38}wQ)+`KxeWyxV`2KarcmC&}}Ab8Bs!Prh? zkygD*hTJ0^x=K{HqUQ6|O}Wdg7xHd_%cduaCtNt)J>Bx!X1#@BxH9~#K-IjEX5FSK zhzb&46E|jm&noBQGvSW>khRO@WdgDL-C?I%cmqUP% zaav|XIG#jhOz|QsNK6+!GGU04L|r$K0RBY(Sa@i`yo)9qClW{C!r|yNa7=2H4k-q2 zDPCT~>#O@fr-wgBjdX4yo$rPB0@o#FWJHEe$xsr70e7uym;`E_0^|XAczii55)a;{E34xt1Dhj1gy|>=ML!|HJFLMtRx)$w+f+ZC?M>R8KIs=%KRyB>6cS?MxECB+Q;W|ub%mreG8%>z~Y!L#Ie(|bxyS#8#38@&WS+}X5(il z>~9&{?yrfIBIZMoHL8kddzouvhPbkk%;zDkPbvJiJC2IJ^fxV$>BKDVq6%T`ld47T zjPhei8)NC|&JZA*5(dG>mNT`N@VZ>cs40h zfVGmpOmF!zM?yz-4S7$vhw}Zp2C*P^@($E6a;pKc&1B0m`djNpob2T#FqDY840pboCTu8}+=+@0GGwSe1F=p@x$2pwnpGyy%irW zKqp_r%Bkj)@mZ3LXj|8awzieWrI6ClUinR)f-|zo1o`EV<2mDc^SQb!3X++ISw;8R zb5#zdz=Uin@hnBxcV4ZtY|CHNXd4zLOEbP4%Ghlb(Vvx>O1zhoUsLVEp{!TOu}Q8M zl`5j(yN&IOz#xpZ@uOVe;cPA2qc#?{^z7_Jex6)UKCjVg+M;mh9my!Z9&iSB{J?*o z{8()Z>d|g^!cSYCCZ`?jKa2@(Yf$br64;%hD;t#%p+4WMsIF3Wgm;Jq`zGj9HSeqj z-uV6*;`I} zkrGL4=noCF=AF51(I(omtDvbq$mQ0j*iI+(2#C!N9SRA$W$sG2fg!MP zCa4rcT-LHV?a_%Vw+Cbt!iO{q1Ixw?5Bz;=5`~YBp%0nkqcg`tQ{JeJ4W192&Q?uN|~~qLsa` z($g@o5irZ?ASjs9LIF;A>lbG#1{AJn1N3}3uumx!gd$?aWG`qmvaLM8rEfPFaUC-F zB(jO%R4bJpfCcsfeJ=zTElXp^g+oot{@_u882XUZ*Dkvfsm@PuWNfaSTc35q@7zdF z5OXjH$0XMgXn9zEJ!T=UhS5f@ePWZygAUu%ea3+!*`X|;bR@0nM2jh%)aFgbAwg?Y z;gGz{;KoZMGh#Yx+VFdHL z!d%S02|y3n(R!;1YfGF|QeREK_!9$>#mdx0*_PFG%qNhnA}T=!3SPVc3jCxD%otbP?BhwxYAeQ%g_9nq+bR}hcwq( zMG)d5;j3T~d4D7d+oj`E42^JA{j8pMfV;&+5gZkQfFGDTEYYG#>%_WdAS-&E1*1GZ zH!}C8Q;Y3cCX{gf{!cY2%Q((Ztjw7n4p(|FC?ZJqfdMms0!_4vh+Noyt#DeNj&$tX z>{B~bVcTtywAYr5=j%kw6R2bXdJMdvhA}ovh@M`e^*Ud1$95f+A{J{{9EU7pNU9sB zuvniCA)n+>&Aeuw#;w|1u^~<(k~;Aq~R}9RaC|iWA|ECM1y4x83%gMZu)6_ zF9qzZJ;DTK9$tJT11lU(05VE@4BIDN4pp&+Ck7r{;v2YpDlF7A2}^hmh8J^`Dwqo( z=bCOhuk8y!nNRF}n~m><{vjxm7HK3eZ|?Tjw=Kry)Ehv%19G)CaWEi|LB4wMXUZ zbM<`Wb&fI0V==Ns#64sK{CQUG^heULm{>wcs>#u*2Y0wSBG?DueH)~V&DXcT?att0 i{q?WVP5ib4^Y}}8;s8_O@q(MRi0qKy2r36I400HR^rCaGPL0Y;SS-RuB zJkRs~KJUNp-2L1*b7t<`?>T2??%ciobGrb*RFs}50T2iTcnog9?KGeOV4`DSVxVJU zVqjunVPfOLaB*>Pa7hV?@L?3Bl#~>tr8}YadVg||pP$YmGl%CIZ*9`RbB9UMdIRL-A!iG*h4nlsx17yLA zJB9y{T&Vzfg#6b9Jwpy)LH^6RyCX<2I1L&A$Z6`|DG3ckzyWM+G7RJ$>p#NLeg}55 z#|MItU<;!edO8fy|G!L7)T~-R4$f4_f+R;Wnn5c0zJQM=r>PBOfcE}ND%oThftuP- zK$|r5t_2A|cPJ9z0Lce91gaDAUoWOn@B}>@0Js3IyMCadU^f5;MKWq?%l^{|56%+Q z3_zjb|A}ysgC|UZRTMxr9{7;|5R_XMeBgf(`nLr@hXYnTU@H>5M(5B3v>>>kntzC) zKn@q1JVzEs7Lbz#@H@Jp+>hemKv3%+JPf3HhwH}c{iD}0-)0Zy)lw5P-ToDVV%!}u zg3=A-@c@9Nnc^jn?0E^H*UezfiODUnMmH$KJ3aX6LYhwfTht(RPLy9I`X z+>WkZrJUX#+tpuqIUVuJ$Z(17Y<&H}Kc}JhSxVw;Z_MlO zSj&V}w8NCQ(b-SIY01(G17q8lu?3oUBMrg}KJp#OHv<&>E+H(DVm~sSTz1`-S5BOa zy5`ppeD58aD)RWlAJB8icwv#4fOj8?ti?gg|4c2qL%;ORbv?jH3 zI7pE2$Kb35095`V467Q`hQPjeWt+vQ`(Yu`=yJ5`#vq2LL26{a~!GkPh;*t&Q9 z#C;RC-(C~arf(99sl6SFO_iHWW`^y?hMX(nD?(E)g?9)25*JfC`Z|w_#T`T(IXR3t zv-+Wn&2!i8k&QxQjIZzQ`swst0NsTPY0pmOILu(d%0G0i`qlLI6j z$$rTPPOCkWjZ)J7C8-m<0b}bstGhK1%3}E~vAY#9^wZ1JN%1&f=>W7DT$*HXd2Jne zBxn()c`SgzK+>Vg98Wlyyt%%4Hvek<(o+gmbY7Bu=$A5XN&E;wsz`#&2Laayu>Wyo z&}LEq3i=&T7<@AAQdK4|lWMj#9~t>UU*VnJe1Os{t%;51EKYu!T6RVH!r&3JwlY*e~!<*nk>T4S%>ThUS z6Ym1tN;^m4T@@%x_XNd-fd^NdI_#qdGBvBm$l~;reYqan?FaFn{FYx9-ehj^qv~wS zq@FHyTV)~GgGMtuIpS{tDwzd81Fg^BPJA0H9`n$#Iuc0CaNFei-y3^b@OVV+#rB3V z;MgcknMnA1Ir8wzhxSRvmJd(LBObpB&6MzQ%$F57)8T1CUe(L1n-6ly7Qg;t+7jH~ zs!R}%uxZ=hX;ar{ZQoyZdDJGFWK>}L**Oo56o*R z&QE6|aXxwd)F@+Z3*K6*Q;~XVIUg3DT$3UY(T(TQ^*mVSncG)$O{K(WQ8cnh0c6%% z760jW%9o0*JZU14$y5b*M9r0-!rsFlZ}Ch#yR-0MB*tZ$5GW#AGt?h5&oRY$v>&a= zaw2t-TSK4vSLsNZ)=X)L*75R_+_P_8Y*!9`2hG)Q;yV&d5r<*(GQ&HN-lqi%Be;vf z1qQ^;5LC1Mz2;Rtca>U z^m0eI>F!DQM>V1`fCAP_3$*08mOroX=W!PE(14Z=fs40>k3XeJyqqUJG}53HYIVvM zT`Kv3Y|Lz^HdX7qS4}G`mit@dOQG*72RFsKU8u(2a)F!OV%~|GP5bq4rp_v%y@H(X z6@(vATCShv z*|qRm4ATAC=&B{DhjNVjrWxc)H+xF@@!bX0xN^0C0Y%)k|}I#ua3PJ=p=cQ{Buj!*=)2f21HI575# zg77K5i}o@Ni)e`u2neS^F~$ zdHJ87a+(kgrN<)j7KhIQMOl?k1V0srq&x6Q^?$yPi66m~`|>$4`X2iyOYGnyDT}}a zY6aJE=e%FZmiJmB6F$T0)3I@7O zbTo8K94I>0zg`qf(81||CWip0gE>sg%sH@(fmvSj#mAPRMf40omrr}7e8`~m%>DoT zDy9tRSCa`;V(B`ywxG!s=gjh6{xG31Uf-U#Sz=mCLsPdvib_7B;q;t68OO0hV^U}| z=G7$5Kr4F9v^5O31mC>po&N6_-$p5c%3nuD3uNSJ>YL^MWA8#_#f=Mtc{|OdRk)pf ztDNlNHQ4lol!Zz7m}(uwB-Q#=ze4qH0qw9e^~Kd5lk`HPd16xkLLwM^XJZy|-I@gS zM2wEfXPgAh+ZFfIC3HAopTa2!7wfgn+mdd233;5hYJ@4DyuEnMZt@Mk{sIA8sr;-knYmhOj2K*;(tfPFDr#!U&;?;p65xB$8Rn5+-D@>;W2?(Im`T56 zRL`~O-k=-fsHnEPs&LKZ*cw5{%MV{%{z^=~LKKw#8nZZWr}~$(KTU1B&@Z`|U_0}# z+!0h&|k)OFS}Ivp7@_IIzc_EQBP1w9XHekoJHh{8+@DH90dvf0aM`5)2KSue^&G}S8qqK#wr$S3mqOU;>p zAeHz|GXB1ZP2S?N%w zyP1b%>}ARrlSXxlSbtV9ZAHg>(gFgWiV{q)kniQwkwo&pP>h*H#Bh$6KNU>mFqRBq z^_Wy9MOix@DE@Iad#JN9x%wvcIX-hlUA}n$qI_(!_5@1TVi@$kM)I@B0v3aL1?`xA zMI%xB!OhiY%h_1@_{|SzZq|x&^0qEGEi-77RE0*ReDKPIxV(ew-+nQA(#M8yNnrg_*=5M3810P*=EJnx zz9WTP?_1fl-qNwZMH|@hOKZ*BQZT^+LUq?M;e_#zFRusMzNxD!ODEp~xajh9vEQPh zLulJBHJHDePOdlz-!7T$mrm<6@U{OAnH^uUHpWMEbuLLEOFt79i^r~8E#KQzz^y;H zDoC~R&l`%cjxkdWBTJeq-IFS2yCBn!vR6r6Xt1OiqdJX~`{Vp@&q;E~>*u#&SEeNq z6z7{+>u1e=y4f>HsqIp&TWC{-W$WEVheSg9zb(e@n}{=3?U|MCJe%T?=knyY=gKV` zE#Nb>$ZuLy?9>(iu>Pl~kcg$~TA>Hn3)C-4#iZ-0BR%C?uS9#CFTvCKi1Oagx$61+ zu1^lcWMQ1^WR5{-WuaN`7Ri^YMhqUlF=joH@QRXJe0Kfv763gJ7Yuys2YnSL^sZz8 zxr2^NeW3G&oOP`E9WCk%g%7!E6LS&uS%O5iZuf-<6;D$G~`vzh6i5l*-sh2 zQRLQn{^eEHBwLY*cz>Ag#wLXMiG+Cisb%5m!{AJ}Z}3*tS>Gsw7s9_N{*27Q1`vTp zx4^TEK64EJ~*(^XYm{Es^y+b&k2))T8}@Z=zvQO{t)M_1Tmsew`|o~YNsKleJz z969G4Tc3sB0$+p<%_!6K@kLuCxNWAjsWUndWh?c@11j8xRerkcF*K)<>~X!=)VN@{1Abl%XDkV2EK0n$j-?WUVUm%HV>)QD% znLnmXclI8uUUl$*Fn3|c(EAP=PHhPS-t4^0@6T8#cv{1rqWzRcG(YP#=)*@c-W%>-t@MeQp#(!7148aoOIQy303C3y~AKx zZ$^BPWAZ}54k;YhXOBI)-ZXxYA4=EXOh1as9^^_!g*+XbsW4;GaDwA(wcK{>0NT5bI3pTEN*h{>$-T?l;C;3l*hTL>F*3p;*i&I*Iit*}5J+rRJ^o%c@_-bROy69p3W zm%To?pMLPQnebkp@{%Mzw&c{23RDwk<6v045=|#UkJhTr+y3-1E3GLZaa;3Y)x|e- zTt-U+?>0#}n;N~4dw@;ok@&G1TMs^#zl{6W@WChQjqQv?{f+dGlLnZRd_E|ew`FB} zhGy01ot?z@oDhDjRf%}{r#_|nJtR8#`Y(mDqEem-UA}sXo8jey~pXMcC#UXgaiR=5SQ)`)1{{56jor|vVw7AbwTMEo;^L80Doli>Lt#sTCd zi&~bisgZmK9j*4%iZj!f5u)tl7)&H(Md)}%Vl795CfLoF2&-OeMNxG7~c7YL9iw{nWpX%YN;SL44Fvjz)w&($An*w{Z!v!^MNlXr; zupX9yW)0&JO@)i30bL|@~P($dNgv8JM2V2&H{N!W{^ z&Uy~LP=Dk_NJyUTK0k*|j0LT*Z+h)$J)O#lS9<|85^2eN^h3^3XVkAb@L1ZJS5&yj za&zzvgTMy@<%{^-BYe-WO+{ZFjfeY!MQb`gF<+|{Q)t#7{F)du&!o>0G2wG08^zX~ zp)UCjK|AUwN>xAy&|ZKUrBTz!V6SnV%W7Xd4|uo*cFth8K*jlb+y5;;gS7{+EITr3 zn82KR3z+(z{()f7OO_2v9gX>&_TJy8g%c~(v%!PF&;>Mf%t3TW<0R6&*478%k52%1ld4U$w2kzr}KW`@8lL}8sKkyNW^srp4|dJ59mk;$M;P4eS{VWPZ*gm98kbPC%OL*_YSf>L)nAQgPqbE;$MUA z?-yrTufRL4>#M!G?*($>hUMC>MV#REeHwkOzpuOAq)iXb|BLwi{F5#d#0d;?BO_Yp z?-i}v`%2;Csr8LC2=V1^rYhI*iJspPF$Bj^n2Ab;naQ^KD|s((AIJ^H=bPr@`xG|i z3_#>02B?_KhuXyGJF!gWU24=B|2L$UePBxS(9rj?^EuxSmWcH#OdzaFL1||0m2W#l-BiyPL{ybZRF9JIo0y*y z9hsIZa*`F+_~vji(Ioo0{>{j2cJ+l_^<{B&S%}cdJ^CLxZi%>#7<}Fuk#lTD*iaXMsJu*@C;6*`9dp1p6NH@MdpY;IwCR@ zaf*z(V&vA~q#SJMFJ#uoz{)t=rbo+fI=~3@)R^Afr~9Ey49L^I8@<@TLp%a@|2k|E zv^zM&K$+9Ot4+kqvHzrN4A|KYG3{3*8(b3VG#5>9`%>7=7-hppOorw!7or6HomtNz z&5T!457DAe(}#$V($@p{!{my__!9h)y$nHp4w+g6V?-OR6DW=pujbK>AhTa8XhzH7 zl+m9`>zOf%GspM{pEG=bG9xG9PGW)V->GmJg_~>J2zzXV4Vs~)^0}n3{a!vY*6jB^ zMP0tX<09|I;bTGuLYSe$bO@M5wCHjSV|OK~VJlt{_6y@?20ew~7~3jzv=3ISK~nb? zc*P?*I?OWP!7Dy4Y|*;bP~MfH7>VzadG!D1_n6gb5M zW^LEGoS|vj2QW~{#%s-dw4oS%NIC6@_Em|>xxXXqPeCrWGb!V5!a#EJgL&e5J}0Fm zYus|msrN7VRAP9cfc_4%OTA9oC80~ zf|DP7)A_IT0^)-#5}%xDh{wJnN0gy>ff8;2CjT%;){0on76x-;2;2crB_=e*ApmE%C?BPXjUQ{ln^5 z+W$ysTjh+Xb#Ne_M}l|J?Tz4JR!zY`m;XcUk`Hcc0!Otd_qzV3kMBjAxNS_y`r>)d zC=TY%Cw(&iH1*99<_om06M1fW&T zdmE$dTTQ_DT&sFUAF)QVy3-U{yX{?MZ5MDBPZe;l4y=lP_8x6om2h;tS$14k9beuv zMhRX{rzM6Qi>LUm?2E;Sn^?BGSDzegdasF}?hD*VznQ6IxoL?3;G(o<)yUhNx-&)Iw?6aJGZxWHQ?#mmZa-~uaAirD!0|0` z4|YS7Q5798Hon@WYtk28lk?X?BDobzKTdSrQK~7bBMl9{M19BAckE7+@7rs2?QYwz zIY>@ZEw387)Rd;qE4Ms2^_0(Qc#I7b#+P{nPN?_y%g!C2ZnmTN(-70+ zC*mFfcp2jFmrd5a#i>n%7W4|T+qV5cwH3{N(ZoMje+UqTrq)>HhCN)1+H(ic9YtzQR`{Uh>+dfyFS9}JTV0japmmlK1JgYNRmdWH^ z5@cHb#%vSaDqgp5PB9^qinfpSg}Vw@)W-gTcQ+&!f^9Y>av)}sDqhYU>L;r>eB6*- z=i?O}v&Td2-ndNbXd*3pevzo=I!OPDzHa2Bv8Q7jn1so9B*y2zXLH%7a#>U4^vXZL ze7((;al~w zo69(+eG`k%tS^|?(#GY;tuCP7V$HoSvLBb-Y%Rng>qvUyWlw7HcyVwV)h!@U*87y} zfcRqfqRz_OYQ(3WH`MQ8%K`&cD&)=n4MU4}po)}&x*MXW&6_AJ@Z8MQA3uH_!$-3( zavHBY_=vvt#WxtwD4s7#(9?<1573ZIbZ*JIpcefP%^bCcY%4w)#avV}8ANKWAsMca z)wk>`r~VeYhRD+1wAp}s{=g@l6dwalH8D-sg4Me}|F1Jd~S_+xw+c%{|sV7`7im=S2s{f3cujFEuaM|5)e)L$aw^i@{bs!vduA z8wPw|{w&uS%*-10=$fyTyNbyS<_PIjRiw^H6_$|R-Yf`rCdQW5)j!RZ!jI;@hT@bU6{4;eSLYDxcqpt(ij9DtEKo@IK_AJ?6BKtqcqMyFNdo zjzL9-p<2Sb`_#P2uX53%Q;twuhJ;yuRA7Q2D)mp6HgqzMPINi?>1Zw*0T2e?+c(vD zCE}1jUa3?+meA!`nVVg&TGEwJ8;s-R#>l&bQjO1ZrQuayUh^8hxqr;@pcZA( zPdpnBjGZe7qoF7^&M@1B33Ya?Is^k;TE~8W@<2A=&BHL<#ELRxy l)2aPJn6icM z(jTITnbK(ykrE|nTl@HrH6>DJdk$sS%oUo@m@P*>7OwwNsU{F0k6r6|KL1_0`ez<} zO?v~He9nFL6O}n;Y=?y5tP{1_;{>;9tdTRY9`B(1Sk z$-;xOI8xCNN^1qnzX5>(7@H~2L)>aRwI6f6Gss?`)1Xag<2MW>{qx3&Gm;rM$C(sI zwTqWE75684MihpFF$<9wy(%^}$L1sJyu3hPH&7UW_)r0A~he^uBg3*|CAsf@F>9sD|@I=jfvLI7e5E zy_Idp0zY1Ly1!;?$n;@r?`WX1ss#O$Sv}9i5*6K|{e?;{9~loL9kQV7d3R#&Ecpr? z!w~~4if~1HF8OzV_-&KKel*tO`!DI0_TONyKR95k(>Wb@<8EdbEy*B5j*W!vzLjS^Jv_3FrJ zeGc|eX7*iC_if*R=S@;QqjDTNktgB)BB^k=_2tTxjFRseGr5p^7{~onZr$jvQm=$$ zQqQ*#2ojfbh$b=>M@^wX2c0nrTORiIGG06e_IAMSurfN;?Txs}cPsaXni&gDSos_2 zG=Y!E5p=`xDmA8fgEn%!OGaZ;PHSqnau%e+nV%RPu^_4(g)rA$N@I=olOCR-tIO6i z+qo2rdR|PXiPnpMos)GGk9enU8^+{*)Vt5cok6L+z+0U&1#kV~mwX*uFZ$v;mnyMs zjaT}$s{zN27M7sScx~%=arT_xRDAe&$#~nP7mV)wG509TIjaJ? zZrUlT-yTM@ukCv*|LL#)S)D^+e_lR)d^AT0lYNAb;2#t}vbEWt#oUAA z2|p*~&@zPYy(j9{(8!O~#e&R}?;*tKN|PbwfA&Kb)wOFlPM^!S1ilkzb*j8c<2=bY zv;6Yi{T>AehdGxf+)#*!v%_z|PW~Gaw1_72{W>%4^fZfNry$)eQiK+o}UVHp&M7_Bo8W? ztW)^boRT!P>!uhk=-X1EQdgOl_r55{h$rZ*rcWKue?7v0BUPC*d3JC0r97sPv3a!OV|ys- z)CcdGe&zXtX2NJJ%4j^=P6C!j?!mJF8!lhJ)+zF3F{2aFz{7sJBSI5R?K!;ew5nlK_W3eK}c|SbWSmgI_ijO{3n<08M z+576we)aRU#^DFrtL+2cEaglsDifkhb?b-lkBSAGT8g2#FMl$UGlyW6KBW-t<1SS} zlk`VT?`jq1P-_eQ+*e-c+RnFsU(lh z<>b10CF)EsXXmg&24l-J#O-ek@v+ksQy$A|iKO##FQX5aC57^DsHQWItT8~|q%6=t z9U`$F?ylHio`1fJ=~eT2@k%Mmf7~Kz6~N=VLcK zk1Ff!2hpm|3FK-LM_V|F!IK@2=MUdC+3^?JLuJ0M)Ry^b^JOUKV`+Vj$O_3%0X~uucK`~07y3E~&GysiHku+V zg_NaYl6B#ZuDNpeHeNPL?lBT1hw|$kbKPSH>(T9CQCit1M?pP9s-v@a&L^>RUnd(RZid1!d3jYZELRVTeA2lAX!7oW|I`$X%jukKj1TeM3&dfyz(a;`|!{ycd3 z$s2AL?v>Z|{hejvrBDm<>oMd{*+hgCaZo1_vKdx1#irI6H+T;(jK@<= z%rtPiiYM>9Ft&gN5!7nSaPgD?n%+2n(cEnezfQF7h!7|V-rM3&h{xs!Uosp5!goZB znFY_@Z@cDn4J5b!jys%a-q<|Oz!?=0OdLovoRRDctKIN@P%AF!EFOJQtCh^sS0yjCAU%XgSU$C&SxCv_DV+PUUMJ^e) zTW *': { + marginTop: 20 + } + } +}) + +const initialValue ={ + name: '' , + category: '', + brand: '', + price: '' , + quantity: '' + + } + +const AddProduct= () => { + const [product, setProduct] = useState(initialValue); + const { name, category, brand, price, quantity } = product; + const classes = useStyle(); + const navigate = useNavigate(); + + const onValueChange = (e) => { + console.log(e.target.value); + setProduct({...product, [e.target.name]: e.target.value}) + } + + const addProductDetails = async() => { + await addProduct(product); + navigate('/all'); + + } + + + return ( + + Add Product + + Name + onValueChange(e)} name='name' value={name} id="my-input" /> + + + Category + onValueChange(e)} name='category' value={category} id="my-input" /> + + + Brand + onValueChange(e)} name='brand' value={brand} id="my-input"/> + + + Price + onValueChange(e)} name='price' value={price} id="my-input" /> + + + Quantity + onValueChange(e)} name='quantity' value={quantity} id="my-input" /> + + + + + + + + ) +} + +export default AddProduct; \ No newline at end of file diff --git a/src/components/AllProducts.jsx b/src/components/AllProducts.jsx new file mode 100644 index 0000000..c2f5200 --- /dev/null +++ b/src/components/AllProducts.jsx @@ -0,0 +1,83 @@ +import { TableBody, TableCell, TableHead, Table, TableRow, makeStyles, Button } from "@material-ui/core"; +import { useEffect, useState } from "react"; +import { getProducts } from "../service/api"; +import { Link } from 'react-router-dom'; + +const useStyle = makeStyles ({ + table: { + width: '90%', + margin: '50px 0 0 50px' + }, + thead: { + '& > *': { + background: '#000000', + color: '#FFFFFF', + fontSize: 20 + } + }, + row: { + '& > *': { + fontSize: 18 + } + } +}) + +const AllProducts = () => { + + const [products, setProduct] = useState([]); + const classes = useStyle(); + + useEffect(() => { + getAllProducts(); + }, []) + + + + const getAllProducts = async () => { + const response = await getProducts(); + console.log(response.data); + setProduct(response.data); + } + + //const deleteProductData = async (id) => { + // await deleteProduct(id); + // getAllProducts(); + // } + + + return ( + + + + Id + Name + Category + Brand + Price + Quantity + + + + + { + products.map(product => ( + + {product._id} + {product.name} + {product.category} + {product.brand} + {product.price} + {product.quantity} + + + + + + )) + } + +
    + ); +} + +export default AllProducts; \ No newline at end of file diff --git a/src/components/DeleteProduct.jsx b/src/components/DeleteProduct.jsx new file mode 100644 index 0000000..87de43c --- /dev/null +++ b/src/components/DeleteProduct.jsx @@ -0,0 +1,91 @@ +import { FormGroup, FormControl, InputLabel, Input, Button, makeStyles, Typography } from '@material-ui/core'; +import react, { useState, useEffect } from 'react'; +import { deleteProduct, getProducts } from '../service/api'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Link } from 'react-router-dom'; + + +const useStyle = makeStyles({ + container: { + width: '50%', + margin: '5% 0 0 25%', + '& > *': { + marginTop: 20 + } + } +}) + +const initialValue ={ + name: '' , + category: '', + brand: '', + price: '' , + quantity: '' + + } + +const DeleteProduct= () => { + const [product, setProduct] = useState(initialValue); + const { name, category, brand, price, quantity } = product; + const { id } = useParams(); + const classes = useStyle(); + const navigate = useNavigate(); + + + useEffect(() => { + loadProductData(); + }, []); + + const loadProductData = async() => { + const response = await getProducts(id); + setProduct(response.data); + } + + + const onValueChange = (e) => { + console.log(e.target.value); + setProduct({...product, [e.target.name]: e.target.value}) + } + + const deleteProductData = async () => { + await deleteProduct(id, product); + + navigate('/all'); + } + + + + return ( + + Delete Product + + Name + onValueChange(e)} name='name' value={name} id="my-input" /> + + + Category + onValueChange(e)} name='category' value={category} id="my-input" /> + + + Brand + onValueChange(e)} name='brand' value={brand} id="my-input"/> + + + Price + onValueChange(e)} name='price' value={price} id="my-input" /> + + + Quantity + onValueChange(e)} name='quantity' value={quantity} id="my-input" /> + + + + + + + + + ) +} + +export default DeleteProduct; \ No newline at end of file diff --git a/src/components/EditProduct.jsx b/src/components/EditProduct.jsx new file mode 100644 index 0000000..28fe395 --- /dev/null +++ b/src/components/EditProduct.jsx @@ -0,0 +1,90 @@ +import { FormGroup, FormControl, InputLabel, Input, Button, makeStyles, Typography } from '@material-ui/core'; +import react, { useState, useEffect } from 'react'; +import { editProduct, getProducts } from '../service/api'; +import { useNavigate, useParams } from 'react-router-dom'; +import { Link } from 'react-router-dom'; + + +const useStyle = makeStyles({ + container: { + width: '50%', + margin: '5% 0 0 25%', + '& > *': { + marginTop: 20 + } + } +}) + +const initialValue ={ + name: '' , + category: '', + brand: '', + price: '' , + quantity: '' + + } + +const EditProduct= () => { + const [product, setProduct] = useState(initialValue); + const { name, category, brand, price, quantity } = product; + const { id } = useParams(); + const classes = useStyle(); + const navigate = useNavigate(); + + + useEffect(() => { + loadProductData(); + }, []); + + const loadProductData = async() => { + const response = await getProducts(id); + setProduct(response.data); + } + + + const onValueChange = (e) => { + console.log(e.target.value); + setProduct({...product, [e.target.name]: e.target.value}) + } + + const editProductDetails = async() => { + await editProduct(id, product); + navigate('/all'); + + } + + + return ( + + Edit Information + + Name + onValueChange(e)} name='name' value={name} id="my-input" /> + + + Category + onValueChange(e)} name='category' value={category} id="my-input" /> + + + Brand + onValueChange(e)} name='brand' value={brand} id="my-input"/> + + + Price + onValueChange(e)} name='price' value={price} id="my-input" /> + + + Quantity + onValueChange(e)} name='quantity' value={quantity} id="my-input" /> + + + + + + + + + ) +} + +export default EditProduct; \ No newline at end of file diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx new file mode 100644 index 0000000..eba998f --- /dev/null +++ b/src/components/NavBar.jsx @@ -0,0 +1,32 @@ +import { AppBar, Toolbar, Typography, makeStyles} from '@material-ui/core'; +import { NavLink } from 'react-router-dom'; + +const useStyle = makeStyles({ + header: { + background: '#111111' + }, + tabs: { + color: '#FFFFFF', + textDecoration: 'none', + marginRight: 20, + fontSize: 20 + } +}) +const NavBar = () => { + const classes = useStyle(); + return ( + + + Product Management System + All Products + Add Product + + + + + + ) +} + + +export default NavBar; \ No newline at end of file diff --git a/src/components/NotFound.jsx b/src/components/NotFound.jsx new file mode 100644 index 0000000..edc8f12 --- /dev/null +++ b/src/components/NotFound.jsx @@ -0,0 +1,11 @@ + +import notfound from '../Assets/images/notfound.jpg' + +const NotFound =() => { + return ( + + ) + + +} +export default NotFound; \ No newline at end of file diff --git a/src/components/ProductManagementSystem.jsx b/src/components/ProductManagementSystem.jsx new file mode 100644 index 0000000..db2435d --- /dev/null +++ b/src/components/ProductManagementSystem.jsx @@ -0,0 +1,10 @@ +import hello from '../Assets/images/hello.jpg'; + +const ProductManagementSystem = () => { + return ( + + + ) +} + +export default ProductManagementSystem; \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..ec2585e --- /dev/null +++ b/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..ef2edf8 --- /dev/null +++ b/src/index.js @@ -0,0 +1,17 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +ReactDOM.render( + + + , + document.getElementById('root') +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/src/logo.svg b/src/logo.svg new file mode 100644 index 0000000..9dfc1c0 --- /dev/null +++ b/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js new file mode 100644 index 0000000..5253d3a --- /dev/null +++ b/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/src/service/api.js b/src/service/api.js new file mode 100644 index 0000000..b4802f9 --- /dev/null +++ b/src/service/api.js @@ -0,0 +1,23 @@ +import axios from 'axios'; + + +const url ='http://localhost:8000/products'; + +export const getProducts = async(id) => { + id = id || ''; + return await axios.get(`${url}/${id}`); +} + +export const addProduct = async(product) => { + return await axios.post(`${url}/add`,product); +} + + +export const editProduct = async (id, product) => { + return await axios.put(`${url}/${id}`, product) +} + + +export const deleteProduct = async (id, product) => { + return await axios.delete(`${url}/${id}`, product); +} \ No newline at end of file diff --git a/src/setupTests.js b/src/setupTests.js new file mode 100644 index 0000000..8f2609b --- /dev/null +++ b/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom';