{"componentChunkName":"component---src-templates-post-post-jsx","path":"/blog/stagecraft","result":{"data":{"markdownRemark":{"html":"<p><a href=\"https://devpost.com/software/stagecraft-fqnkp4\" target=\"_blank\" rel=\"nofollow\">https://devpost.com/software/stagecraft-fqnkp4</a>\nDjango is a full stack python web framework for web development. I have been working with Django from 2016 and it's my first ever framework that I had learned back then. It is a wonderful framework that provides some of the out of box features for rapid web development.</p>\n<h2>Architecture of Django</h2>\n<p>Django follows MTV ( Model Template View ) Which is a MVC architecture.</p>\n<p>The <code class=\"language-text\">Model</code> is the logical data structure behind the entire application and is represented by a database usually a relational database such as MySql and Postgres.</p>\n<p>The <code class=\"language-text\">View</code> is the user interface that is usually HTML CSS and JS, if web services are used it can be a REST or a SOAP endpoint that is consumed by the UI.</p>\n<p>The <code class=\"language-text\">Controller</code> is the one that connects the Model and the View. Some data manipulation and processing can happen in the  controller.</p>\n<p>Suppose a user enters a particular url in the browser the Django application will process the urls in the routes file when a match is found in the urls file it calls the respective controller and does the processing and renders the UI. Suppose a match is not found then the application will throw an error or it will load the default view that is been configured.</p>\n<p>When you create a Django application with the command <code class=\"language-text\">django-admin startproject mysite</code> the Django application will be created with the following structure.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 278px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 64.8%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWElEQVQ4y52TW2/CMAyF+f8/bI+bNAYbl0KvFHqHNm3SFJ3FFu0Y0mi1ByuOEn05PnZmdV2jVS06rdG2LbQJpRSapvkVUsphfRYzJRW84wFza4Wt5+DT3iJOYgbTBXW7OAXGQGku5ucCQXREkqdwwgCRARaXMy5VibKqIISYrpBKphKvuoOoBStd7jd4mb/CPnh4Wy0QJhHbMsUCBvYHpGi528AypW88G5Zro7l53IPIomdqGdhvKPdOIY5GUVpkvHLpZTlAKB9VeH+oW80NqUSFKEvZAif0ERt/6YH37Zc5E9OAFHVDJSq4pjmL3RqW72Lt7vFhrREY9ZST15OB7JMBRmnCTSFVvgFZvoM0z3jE/gUkCJVKqqhJtL923TCfo01hmPwB7gOPx8c5+CZ3uVlkRX03NuPAYTQkzx6NThifeOhPaczAxy/5GLO/XqO/3ZeotR5KHYtv1AvnsWUHXhMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"django folder\"\n        title=\"django folder\"\n        src=\"/static/5c483113257e35cd2c275fcbe7520fb6/41fda/django-folder.png\"\n        srcset=\"/static/5c483113257e35cd2c275fcbe7520fb6/3e256/django-folder.png 250w,\n/static/5c483113257e35cd2c275fcbe7520fb6/41fda/django-folder.png 278w\"\n        sizes=\"(max-width: 278px) 100vw, 278px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2>The files specification is explained well in the Django docs.</h2>\n<ol>\n<li>The outer directory <code class=\"language-text\">mysite/</code> is the outer container to your project. Your are free to name it whatever you like.</li>\n<li><code class=\"language-text\">manage.py</code> is a utility that contains few command that lets you interact with the Django server. You can read all the details about <code class=\"language-text\">manage.py</code> in <a href=\"https://docs.djangoproject.com/en/2.1/ref/django-admin/\" target=\"_blank\" rel=\"nofollow\">django-admin and manage.py</a>.</li>\n<li>The inner <code class=\"language-text\">mysite/</code> is the actual python package for your project.</li>\n<li><code class=\"language-text\">mysite/__init__.py</code> is the file that is used to initial all the function of the package. It tells the Python that the directory should be used as a package. This feature allows us to make a package out of a the current application and can be used in other systems. You can read <a href=\"https://docs.python.org/3/tutorial/modules.html#tut-packages\" target=\"_blank\" rel=\"nofollow\">more about packages</a> in the official Python docs.</li>\n<li><code class=\"language-text\">mysite/settings.py</code> consists all the settings for the Django application. <a href=\"https://docs.djangoproject.com/en/2.1/topics/settings/\" target=\"_blank\" rel=\"nofollow\">Django settings</a> will tell you all about how settings work.</li>\n<li><code class=\"language-text\">mysite/urls.py:</code> The URL declarations is a list that contains the url of the application linked to the controller  that performs some operations and renders the required data to the view. You can read more about URLs in <a href=\"https://docs.djangoproject.com/en/2.1/topics/http/urls/\" target=\"_blank\" rel=\"nofollow\">URL dispatcher</a>.</li>\n<li><code class=\"language-text\">mysite/wsgi.py:</code> This file is the entry point for various web servers that are WSGI-compatible. See <a href=\"https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/\" target=\"_blank\" rel=\"nofollow\">How to deploy with WSGI</a> for more details.</li>\n</ol>\n<p>Now create an app inside the Django app with the help of the command <code class=\"language-text\">python manage.py startapp myapp</code> this will create a app inside the Django application. Every Django application will consist of atlas one app. This application can be attached and detached from the system at any point of time and can be sued as a plugin for another application. Hence the apps created with Django behaves as a microservice that can be used for a specific purpose.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 275px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 109.2%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABaElEQVQ4y6WU2Y6CUBBE+f+PMyEo+x4RQWTH156cm0CGzCQDdx4uYAzlqa5qjff7LVVVSdM0siyLzPMs4zhqH+P5fEqSJHK73STPcymKQrquk2EYtI4BEQKWZYlpmhLHsfpimiY9QS4IYh26MAzlfr8rakZxVthYHyCFznEcdRCu61rNRUvw8/lIlmVi27YEQaA/QwjatlVEkGH79XrpC3Lp+16JQIYo1qmRTjCbZTpIGKQNbZqmWvXZCKEh2ev1KlEUqU5CqR0KKUNGwbH9b8u8jE3XdbdyQ87REsQaa+h5niKkg1DzQ2dsG98/8DJBMEOEqdDj8Tg1y50gLyFKyX3fV7uN+Jle7ixDwv5il1lCSVDMlDv7/hfpLhQsUm6S5l6W5Wb3aDg/ZkjB2Wf6SDg8HyH7VXD9G2Nb1jWE8szG7CyzHcyKwwyxu5ZeuzaEcrlcFCGhkDaUWjNck2anKTkdRIywjgp+Af6QfPkJ93v0AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"django app\"\n        title=\"django app\"\n        src=\"/static/3a34646ccf8d41fbf971e45e06052929/7c650/django-app.png\"\n        srcset=\"/static/3a34646ccf8d41fbf971e45e06052929/3e256/django-app.png 250w,\n/static/3a34646ccf8d41fbf971e45e06052929/7c650/django-app.png 275w\"\n        sizes=\"(max-width: 275px) 100vw, 275px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2>The created app folder structure is as follows.</h2>\n<ol>\n<li><code class=\"language-text\">myapp/models.py</code> is the Model, or where you define your database.</li>\n<li><code class=\"language-text\">myapp/views.py</code> is the controller. You may wonder why the controller is called view. Django <a href=\"https://docs.djangoproject.com/en/1.11/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names\" target=\"_blank\" rel=\"nofollow\">docs</a> has a very good explanation for this.</li>\n<li>Everything under <code class=\"language-text\">myapp/templates/myapp/</code> are HTML files that define the view. Suppose you want to display the data from the controller you can pass objects such as a list.</li>\n<li><code class=\"language-text\">urls.py</code> will contain the list of urls for the app.</li>\n</ol>\n<h2><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 548px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 148%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC00lEQVRIx42W147rMAxE9f+/FSBIkGx67733/qaLQ2AMxYl37wMhWRLLDCnKbjqd+kKh4BuNhu/1er7T6fjNZuPP57M/HA42Xi4XG/9H3HA49KlUyv/8/PhisWjS7/f9drv14/HY7/f7D4N8J4k7nU5+t9uZ4mKxsDkR8s3I/vV6fVNKis4MYoAogToajcyoIMsR0CWs3243c8IYd+LYQAmDk8nEIDebTZu3Wi2Dz4iwjsP5fG4C/1BDABjFlmNCJCSEAyQHIyizhqFutxs55Lter/t2u21rmg8GA79er707Ho/+fr9HMMQX65KQIziNfyOcY3Sr1SqKDpnNZgZB/MiBnIUSrkdZBkYmk/GlUsnn83lfqVQMlnjCGU5IGMlT4qCBfb4pryjLhEpS4FFZFdEcCiELbgibzHNGmXYoApXIIBmCiZY5RGMcsokENJwlQlET3iSLUMTCJQdQ1hxIihoDGFoul3aGkb341bSkiB+8w42+BQ9FFbIMUBlKRngdHYeABUwgUVflctnGWq1mFDCyT20ykjR0iDwRMhDJKLwRIYaIWFcO+MBUwoia9RBuFCETbSqDKIQNQYUf1mYcrhmEQ64atQRvRALpj8fjjaNvrSueEDMIrGw2a02BRpvL5ayEcEKCdPEl1Fy89t6SQhRsijOIVz1iGKMkRd0Gnlkjgeh+JIVF+KLLYITIUGKuTkPGcQIdarjhHf6IEINEo5YkYzhhrFarZjjkWq0NVGF9OgqUCYe4CSjopoSNgXX1RUb2cIBOCN1RW3ii/jiomyJlDCGsxd+Wb6VjWU6n05ZhbgitTG0KJ0SIcC7pgXpLCvwpEj1A1ODr9TJ5Pp8mrIWRJD2nTjCICOhEQ0nADaOio9hD8hPfZXnjMFBFtNqYWhZJCpttYoQyqOdUrQsKMKbGyjfRfrsdH5ARYFHAKMcfp/hj9BtsewL0kKuR/vVD9JvRf6W9u51njTUfAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"django files\"\n        title=\"django files\"\n        src=\"/static/44137a68746ab7731ba6bcaebe208665/5ea8b/django-files.png\"\n        srcset=\"/static/44137a68746ab7731ba6bcaebe208665/3e256/django-files.png 250w,\n/static/44137a68746ab7731ba6bcaebe208665/b30f8/django-files.png 500w,\n/static/44137a68746ab7731ba6bcaebe208665/5ea8b/django-files.png 548w\"\n        sizes=\"(max-width: 548px) 100vw, 548px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></h2>\n<p><strong>The reason why Django is loved by many developers.</strong></p>\n<ol>\n<li><strong>Easy to learn since Python is the base language</strong> Django is easy to learn and get started. A developer who has fundamental basics of python can easily pick up Django within no time. I like Django because of its simplicity of how it is built. With just a few lines of code you can do a lot.</li>\n<li><strong>Provides out of the box features</strong> Django provides some out of the box features for developing monolithic application. Django comes with an in built admin panel which can be used to generate CRUD operations. The admin panel can also reduce some problems and make our life easy. The active admin is completely customizable to any extent. Django comes with Django forms for form related features. Django Rest Framework makes it easy to build REST api’s with minimal effort.</li>\n<li><strong>Rapid development</strong> With Django you can do development with lightning speed at the same time keep the code base clean. Django takes care of most of the security issues and common security mistakes developers make while developing application.</li>\n<li><strong>Community support</strong> Django has a very good community support and lot of open source developers contribute to the code base every now and then currently Django 2.1.4 is the latest stable release as of Jan 3rd 2019 which makes use of Python3. Django also has a very good and awesome documentation which makes a developer life easy.</li>\n<li><strong>Lots of library can be found over the web</strong> PIP is the widely used package manager for python and it contains tons of libraries for python development which can be used as per your need. Lots of Artificial Intelligence, Machine Learning libraries are implemented in python. The widely used Machine learning library Tensorflow is also available in python.</li>\n<li><strong>If your application is data intensive Django is the solution</strong> Since Django is a python based framework it becomes very easy to introduce analytic solution. As discussed earlier we can integrate lot of AI and ML libraries to a python system. Which lowers the pain of building external API’s to connect to your system.</li>\n</ol>","timeToRead":5,"frontmatter":{"title":"StageCraft - a neural network based game that helps actors build acting skills","date":"20 Jan 2019","tags":["tensorflow","opencv","tkinter"],"path":"blog/stagecraft","excerpt":"Winner for HackNRoll 2019, a gamified application that allows users to improve their acting skills by thriving on a deep neural network emotion classifier.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='253'%20viewBox='0%200%20400%20253'%20preserveAspectRatio='none'%3e%3cpath%20d='M164%205c-3%203-3%205-3%208l-3%202-2%201h2c5-1%204%201-2%206l-5%206%206-5%207-4-1%202c-2%201-3%203-1%203l-1%204c-2%204-2%205-1%205l-1%205c-2%204-4%207-4%204h-2l-3-1-1-1c-2%202-9-1-8-3h-7l-5-1c-2%200%208%204%2012%204%206%202%207%202%203%207l-3%206%204-5c4-6%2010-7%206-1l-1%204%203-3c1-4%203-5%203-2h1c1-1%201-1%201%201l-1%203-1%201v-2c0-2%200-2-1%200-1%203-5%205-5%203h-1c-2%202-8%204-8%202h-1c-1%202-2%202-2%201l-2-1v1c2%202-7%204-9%203h-1c1%201%200%202-1%202-1%201-1%201%201%201l3%201h1c-1-2%205-5%206-3l3-1%205-2c3-1%203-1%203%202l1-1c1-3%205-5%205-3h4c0-2%203-3%204-2v2c-1%202%200%203%202%201l-4%207c-5%207-5%207-7%205l-1-2c0-1%201-1%201%201h1l2-4c2-2%202-3%200-3h-1l-2%203h-1c2-5%202-7%200-3-2%205-4%206-5%203%200-1-1-2-2-1l-1%201c1%200-3%2010-5%2011l-2-2h-1c1%202%200%202-1%202-2%200-2%200%200%201l3%202-2%201-3%201-1%202c-1%203%202%203%203%200h1c1%202%201%202%202-1l1-3%202%202%202%204%201%201v2c-1%201-1%201-1-1l-2%203-2%205-1-3c0-2-1-3-2-3v3l1%202c1%202%201%202-1%202-3%200-5-3-3-4%201%200%202-1%201-2l1-1%201-2c0-3-2-3-2%200-1%202-1%202-2%201l-1-2-1-1c-1%200-3-5-2-7l2%201c1%202%202%202%202%201l-1-3c-1%200-1-1%201-1v-1c-2%200-3-2-1-2l1-2h-1c-2%202-2%202-3%200l-2-2%201%202c0%203-3%203-4-1v-5l2%202%201%202-6-13c-1-1-1-1-1%201h-1l-1-3h2c0-2-2-3-2-2l-1-2%201-3%201-1-1-1h-1c0%202-1%200-2-3%200-2%201-3%203%200l2%201-1-2c-3-4-2-5%204-3l6%201-5-2c-8-3-8-5%200-8l5-2-6%201c-5%202-5%202-6%200-5-7-17-4-17%204%200%202-1%203-3%204l-2%201h2c3-1%203%200%204%201l1%202%201%203-1%201-2%201c-3%204-2%205%200%202l2-1c1%201%201%200%202-1%201-3%208-4%208-2l3%2010c2%208%202%2010-1%208-4-2-9-1-11%202-2%202-5%203-7%201l1-5%202-5-3%204-4%205c-2%200-2%200-1-2%200-2%200-2-2-1-1%201-3%202-5%201h-3l3%201c2%201%203%202%202%203h1c2-2%205-1%205%201h1c1-2%206%200%207%203l-4%203c-5%201-6%201-5-1%200-2%200-2-2%201l-5%204c-4%201-5%200-3-1l1-2-2%201-3%202-2%202v3h1c2-2%202-2%204-1%202%203%204%202%202%200s-2-2%201-3l4-1h2l6-3c7-1%208%200%203%204l-3%204%205-3c2-3%203-3%203-1-1%202%200%205%202%203%200-2%202-2%204-2%203%200%203%201%205%205l2%203c0-2%203%202%203%204l-1-1c-2-2-2-2-2%202%200%203%201%204%202%203v1c0%203%201%202%204%200%202-2%202-2%200-3s-2-4%200-3l1-1c-1-1%200-2%201-3h1l1%201c1-1%203%200%202%201h-1c-1-1-1-1-1%201l-1%202-1%202h2c1-1%201-1%201%201v3c3%202%202%203%200%203l-3-2-2-2%201%203v2h-2l-2%201-2-1c0-4-10-6-13-3h-2c-2-2-3-1-2%201l1%203c-1%201-6-1-6-3h-1c-1%202-4%201-4-1v-1l-3%202-1%201-1%203-2%202-5%208-2-2c0-2%200-2-1-1h-1c-1-1%202-9%204-12l2%202h1c-1-2%200-2%202-1h4l-4-1c-3-1-3-3%200-9%201-3%202-4%203-3s1%202-1%204l-1%202%202-1%203-2%201-1%202-3%203-3-4%202c-3%203-5%203-6-1l-4%205-3%207-3-3c-2-4-3-6-1-6l1-2h-2c-1%202-2%202-3%201h-1l1%201v3l1%201c0-1%202%200%203%202l2%203h-2l-4-1v-2c0-2%200-2-1-1s-2%200-3-3l-3-3%201%204c2%204%202%204%200%203-2%200-2%200%200%201l1%203h4c1-2%207%200%207%202-1%204-2%206-3%205l-1%201c1%201%200%203-1%203l-1%203-1%203c-1%203-1%203-3%202-1-1-1-1-1%201%201%202%201%202-1%202s-4-3-3-6l-1-1h-1c-1-1-1-1-1%201l2%203c1%203%201%204-1%204-1%201-1%201%201%201%203%200%204%203%203%206h-4c-3-1-4-4-2-5v-1c-3%200-3-2-1-4l2-2-3%202c-2%201-2%201-2-1v-1l-6%201c-5%200-9%203-9%206%200%202-2%202-14%202H9l13%201c12%200%2013%200%2014%202%201%204%205%206%209%206l6%201c1%201%201%201%201-1-1-2-1-2%201-1%203%203%204%202%201%200-2-3-1-4%202-3%202%200%203%201%203%202h1c1-2%204-1%203%202h1c2-1%202-1%203%202l1%204c0%202%201%201%203-1%202-1%202-1%202%201-1%203%200%202%201-1l2-3%205%208%201%201c2%200%201-2-2-6-2-3-2-4%202-2%202%201%203%201%202%203h1c1-1%202%200%203%202l2%202-1-3c-1-2-1-2%205-1l4%203c0%203-6%205-7%203h-1l2%203%201%201c0-2%202-3%205-3%202%200%201%203-3%206l-3%203-2-3c-3-5-7-9-7-7l1%202-2%202-2%201h3c3-1%204-1%206%203%202%205%203%205%204%203s1-2%202-1h1l2-4c3-2%203-2%206-1%204%203%2011%201%2011-3l2-1c1%200%202%201%201%202%200%202%200%202%201%201%201-2%202-2%204-1%204%201%204%201%203%203-1%201-2%203-1%204h-3l1%202v3c0%204-2%203-2-1%201-2%201-2-2%201l-3%202%201-2%201-3%202-2%202-4c0-3%200-3-1-1-2%202-2%203-3%201l-1-1v2c1%201%202%202%201%203h-1l-2-3c-2-1-3%200-1%202%201%201%201%202-1%207-3%208-3%208-7%208-2%201-3%201-4-2-1-4-2-4-1%201v4l-4-3-4-3%206%206c2%200%200%203-2%203v1c2%200%201%204-1%205s-2%201%200%201c1%200%204%201%205%203%202%202%208%203%2012%201%201-1%202%200%202%201v3l-3%207c-2%208-2%208-6%208-2%200-3-1-4-3-1-1-1-2-2-1h-1c-2%200-1%201%201%203v3l-1%201c1%203-1%203-5%201l-7-1%205%202c5%202%206%202%206%205%200%208%2012%2011%2017%204%201-2%201-2%206%200l6%201-5-2c-6-2-8-5-5-6v-1c-3%200-2-2%200-5l1-2-2%202c-3%203-4-3-1-7%201-2%202-4%201-5%200-2%200-2%201-1s1%201%202-1c1-1%201-1%205%202%205%204%207%203%202%200l-2-3%202-3c2-2%203-3%205-2h4l-3-1c-2-1-3-2-2-3h-1l-3%201c-2%200-2%200-1%201%202%200%202%201%200%204-3%203-4%203-4%200%200-2%200-2-1-1%200%202-2%200-1-2h-2l1-2c2%201%204-3%203-5l-1%201-1%202v-3c1-3%201-3%202-1%201%201%201%201%201-1l3-2-1%204v3l2-3c2-5%203-6%207-6%203-1%203-1%202%201h1c2-2%202-2%204-1%203%202%204%201%202-1s-2-2%200-2c2-1%202%200%204%202l1%204-1-4c0-5-1-5-3-4h-2l1-2c0-1-1-1-2%201l-2%202-1-4-2-4-1-2v-3c-2%200-5-4-4-5l1%201h1l1-2%201-1h2l-1%202v1c2%200%202%200%201%201v3c1%201%201%201%201-1%201-1%202%200%203%204l3%205c1-1%202-1%203%201%202%201%202%202%201%202v1c2%200%204%208%203%209-1%202%202%201%204-1l3-2%201-2c0-1%201-1%202%201v5c0%202%200%202%201%201h2l-2-5c-1-4%200-7%204-5%203%201%2012%201%2012-1v-2l2%202c0%202%200%202%201%201h1c0%201%201%202%202%201l1%202v1c1-2%202-2%203%200%202%201%202%201%200%202l-2%202-4-5-1-1h-1l-2-1%201%202%201%202h-1c0-1-2%201-3%206-2%207-3%208-6%208-2%200-3%200-4-4-1-3-1-4-2-3h-1l1%204-1%201c-2-1-1%200%201%202%201%202%201%202-1%201-2%200-2%200-1%201v3c-1%201-4%200-4-2h-1c-1%202-1%202-2%201%200-2-1-2-1-1l1%205c2%202%202%202%202%200v-2l2%206-1-1h-1c-1%202-1%202-4-2l-1-5v-1l-2-1c-1-2-2-2-3%200v1c2%200%208%2010%206%2010l1%201%203%205%202%202-2-4v-3l2%202c0%202%200%202%201%201%201-2%201-2%201%201l2%2012-1%202%201%202c2%203%201%205-1%202-4-3-5-2-2%201%204%204%203%205-2%204l-4-1%203%202%205%202c-1%208%209%2013%2015%208l2-4c0-3%202-3%2023-3h21l2%203c3%206%209%208%2013%204%203-2%206-10%204-10s-1-3%202-6l1-2-2%202c-3%203-5%202-3%200l1-3v-4l2-3h-1c-2%202-1-1%201-4l1-6c-1-2-1-2%200%200h1c0-2%202-3%202%200l1-1c3-2%203-5%200-3-1%201-1%201-1-2%201-4%204-7%205-4l2-1%203-2%203-1c1-1%201-1-2-1l-5%201c-2%202-3%201-2-2l1-4-2%204c-1%204-3%206-2%201%200-3%203-8%204-6l2-1%201-2%202-3%203-3-3%201c-1%201-1%201-1-2l-1%201c-2%205-4%204-2-2%201-4%204-5%204-2h4l1%201-1%204v3l2-3c0-2%202-3%202-2l1-2%201-3v-2c-1-1-1-1-2%201%200%202-5%202-6%200l1-1c2%201%202%201%202-1l-1-3h-1l-1-1%202-1v-1l1-1%202-2v-2l1%202c1%202%201%202%202%201l3%202c3%201%203%202%202%203-1%202-3%200-2-1l-1-2c-2-1-2-1-1%203l1%203c0%202%201%201%203-1h3l1%201v6h-2l-2%201c-1%201-1%201%201%201v3h2l1-1c0-2%203%200%205%203%201%202%201%202%201%200-1-3%201-3%201%200v3h-1l-1%202h-3c-2%201-7-2-6-4l-1-2-2%202v2l-1%201h1c2-1%205%201%204%203l1%201h2l2-1h5v4c-1-1-2%201-2%202%200%202%203%200%203-1h1v4c0%202%200%202%201%201s1-1%201%201v1c1-1%201-1%201%201l1%204-1%202c-2-1-1%200%201%202v2l-1-1-2-1%201%202c3%203%200%204-7%202l-8-2%206%203c6%201%208%203%208%204v2l2%204c4%203%208%204%2012%202%202-1%205-7%205-9-1-1%200-1%203-2l8-3-7%201c-6%202-7%201-4-2v-2l-1%201-2%201%201-3c3-4%204-7%201-3l-2%201v1c0%202%200%202-1%201h-1c-1%201-2%202-4%201-3%200-3-1-6-9-3-10-3-12%201-10%203%202%208%201%2011-2l5-2c2%200%202%200%200-1-4-2-3-5%203-6l3-2-5%201c-3%201-7-1-7-4%201-2%200-3-1-2l-4%201c-4%200-4-1-6-5-1-4-1-5-2-4v9c2%202%200%206-3%206-1%200-3-4-3-7v-3c-2-2%201-4%203-1l-1-3c0-2%202-3%202-1v-1c0-2%200-2%201-1s1%201%201-2l-1-3-1-1-1-3v-3c2%200%205%204%204%205l-1%201h1l5-1c5%200%206%200%208-3%203-2%206-2%208%200h3l1-1-2-1h-1l-4-1c-4-1-3-4%201-6l4-1-4%201c-4%200-8-3-6-5l1-1h-1l-6%201h-4l-3-7c-3-5-3-6-2-7s1-1%201%201v1l2-4v-2h6c4-1%205%200%207%202l2%202-2-3-1-4%201%201%201%201v-1c-1-2-1-4%202-4v-1l-1-2-1-4c-1-3%203-7%205-4%201%201%201%201%201-2-1-4-1-4-5%200-2%203-3%203-4%202l-6-1c-4%200-5%200-6-2-2-3-2-9-1-7h1v-2l2-3c1-3%201-4%205-4l4%201h2c-1%201%200%204%201%207l3%203-1-3c-2-3-1-4%201-1s3%201%200-2c-1-2-1-2-2-1s-1%201-1-1v-2l-1-3%201-1c1%201%201%200%200%200-1-3%201-3%207-1%205%201%206%202%207%204s2%203%202%200c-1-1-1-2%201-2%201-1%201-1-1-1l-3-2h-1c-1%201-10-2-10-4-1-2%204-5%206-3l1-1c2-2%205-1%207%203l3%203-2-4c-3-4-2-4%204-6%203%200%204%200%206%202%204%204%205%204%202%200-3-3-3-3%202-4l3-2-6%201h-6c-2-3-4-2-2%200s2%202-2%203h-5l-1%201c0%202-4%201-5-1-1-1-1-1-1%201%201%204-4%204-7%201s-7-4-12-2c-1%201-2%200-2-2v-2l3-7c2-8%202-8%205-8l4%201h1l1%201v1l2%201h1l-2-3-1-3%202%201%201%201v-2c-3-3-2-4%202-3%205%202%207%201%202-1-3-1-4-2-4-4-2-8-11-11-16-5-2%202-3%203-6%202h-2l2%201%203%203%201%204c1%201%201%201-1%203l-1%203%202-1%202-2v2c-2%202-3%203-1%203h1l-1%202-1-1h-1l-1%201%201%201h1l1%203h-1c-1-1-1-1-1%201v5l-2%201-1-2c-1%201-2-1-1-2%202-2%201-3-1-2-1%201-2%202-3%201v4h1l3%201%201%201v3c-1%203-2%202-1%200%200-2%200-2-1%200-2%203-2%204%200%203v5c-2%203-4%204-4%201h-1c-2%202-2%202-3%200-2-3%200-7%204-7%202%200%202%200%201-1l-2-1-1-1c-1%201-9-1-9-2l-1-1-3-3-3-3%201%204%202%202h-3l-5-3-2-1c0%203-3%201-4-1%200-2%200-2-1%200-1%201-1%201-2-1l-1-1c0%203-2%202-2%200%200-1%200-2%201-1l1-1h2c1%202%201%202%201%200%200-3%202-3%202%200l2%202-2-5c-1-3-1-3-2-1-1%201-1%201-2-1-1-1-1-1-1%201v2l-1-2c-1-2-1-2-1%201%200%202%200%202-1%201-3-5-10-7-14-3-2%202-2%202-1-3a652%20652%200%20007-17c2%200%203%202%205%2010l4%208h1v-1l1-3v-2h-1c0%204-1%201-2-2v-5c-1-2-1-2%201%200%203%204%203%201%200-3-4-4-3-5%201-1l3%202-2-4c-3-3-4-6-1-5l13%204-6-3c-6-2-8-2-8-4%200-10-15-12-18-3%200%202-1%202-22%202l-21%201%2021%201%2022%201c1%201%200%202-1%203l-2%202%203-1c3-2%203%201-1%205l-3%203%204-2c3-4%204-3%201%201-2%202-3%205-1%204l1%203-1%202c-1-1-1-1-1%201v4l-1%203v-3c0-2%200-2-1-1-1%202-3%202-2-1h-4c-2%200%201%203%203%203%202%201%200%207-2%207l-2-1h-1c-3%202-11%201-14-2l-3-3%202%204%202%202h-3l-4%201h4l3%201h1l3%202%203%203-1-3-2-2h10c2-1%202-1%202%201-2%205-2%206%200%202s2-4%203-2c0%202%200%202%201%201l1-2v2c0%202-2%205-2%203s0-2-1%200c-1%203-4%205-4%203h-1c-2%202-4-1-3-4%202-3%201-4-1-1s-2%204%200%206l2%202-3%201-3%203%203-1h3l1-1c0-2%204%203%204%205l-1-1h-1v1l-1%201c0%202-4%207-5%207l-1-2-2-3%201-1%201%202%202-1c1-3%202-6%200-4-1%202-2%202-4%201-1-1-2-1-1-2v-2h-1l-3%201c-3-1-3-1-2%201%202%201%202%201%201%202v1h2c1-1%204%204%204%206l-2%205-1%204-2-3-1-2h-1v-5c2-4%202-5%200-2-1%201-1%201-1-1v-2l-4-7-1-3c0%201-4-6-4-9%200-1%203-1%204%201h1l-2-4c-1-2-2-2-2-1%201%204-3%202-4-1s-1-3%201-4%202-1%201-2-2%200-2%201h-2c-1-1-1-1-1%201l-1-1c-2-3-3-6-1-4%201%202%201-1-1-4l1-2c2%201%201%200-1-4s-3-5%200-3h1l-1-2c-2-2-1-3%201-2v-5c2-7-9-13-15-8m3%2018a5522%205522%200%2001-4%2019c3-3%208-4%2012-2l2%202-5-20c-1-2-5-1-5%201M38%2041l-2%204c0%202-2%202-13%202l-13%201%2013%201h12l1%203c2%203%206%205%2010%205%202%200%203%201%206%207l4%206-1-4c-2-4-2-5%200-3s1%200-1-4c-3-3-4-4-1-4h1l-1-1v-2c0-1%202-1%206%201l6%201-5-2c-7-2-8-4-4-7%202-1%202-1%200-1l-5-2c-4-4-9-4-13-1m314-1l-3%203c0%202-1%202-2%202l-4-2c-3%200-3%200%201%202%206%202%205%204-1%206-4%202-1%202%204%200%204-1%202%203-4%207l-5%206%206-4c6-5%207-6%206-4%200%201%201%202%205%201%206%200%208-1%2010-5l2-3h12l13-1-13-1c-12%200-13%200-13-2-2-5-9-7-14-5M240%2052l2%204%201%202-2-1c-2-3-3-2-2%200l1%203-1%202%201%204c0%202%200%202%201%201s1-1%201%201v2l1%203v-2h1c2%201%202%201%201%203-1%201-2%202-1%203%201%202%203%203%202%201v-2l4%207-1-1c-2-4-4-2-2%203%201%203%204%204%204%202h1c2%202%203-1%202-4-3-7-6-12-8-11v-4c-3-2-2-4%200-1l2%202c2%200%200-7-2-8l-1-2%201-1%202%202c2%203%204%204%202%200l-1-3%202%203%203%204v1l2%203%203%203-2-1h-2l-1-1c-2-3-3-1-2%204%201%204%202%205%204%202h4l1-1v-3h1c1%202%208%202%2010%201%201-1-2-5-3-4l-1-1c1-2-4-9-6-9h-1l-1-1-4-2c-2%200-2%200-1%203%202%203%202%203%204%202%202-2%202-1%200%202l-2%202-2-5c-3-5-5-6-6-4h-1c0-3-2-2-2%200s0%202-1-1c-2-3-4-4-5-2m-75%209l-2%203h-1v-3c-2%200-7%209-6%2010l-1%201-4%203-1%203h7v-6l4%203v2c-2-1-4%202-2%203v1l-2%201h-1c0-2-2-3-2-1l-2%203%201-3c0-2%200-2-2-2l-3%202-1%201v5h3l1-1c0%203%202%202%204-1%201-2%201-2%201%200v2c2%200%204-2%205-4%200-6%205-9%2011-8l4%202%202%201%201-2h2c0-2%200-2%201-1%201%202%202%200%201-3h1c1%202%202%202%203%200%202-1%202-1%201-2s-1-1-1%201l-1-1-1-2-2%202-2%203-1%201h-1l-1%201-1-1-2-8c-2-8-3-9-6-9-2%200-3%200-4%204m61%206l-2%2011%201-2v-1h5c2-1%204%200%205%201h5v1c-1%202%200%203%202%203s2%200%201-3l-2-3v-1l-1-4c-2-8-5-12-8-12s-3%200-6%2010m43%207l-3%201v4c-1%201-1%201-2-1%200-2-1-2-1-1h-4l-2%201h-1c-2%200-2%201-1%202%202%202%203%203%203%201l2-2c1-1%201-1%201%201l-1%203-1%201h-1l2%201%202%202%202%204%202-5c2-4%204-8%203-4-1%202%201%204%202%204v-3c0-2%200-2%201-1h2l1-2c1%201%201-5-1-6h-1l-1%203-1-2c1-2%201-2-2-1M53%2076h-3c-4-3-14%201-14%205%200%202-2%202-14%202H9l13%201c13%200%2013%200%2014%202%201%204%206%207%209%207%203-1%203%200%206%206%203%207%205%209%205%206l1-2%202-3c1-2%201-2%203-1%201%201%202%203%201%204h1l2-1%203-2%202-4-3-2v2c1%201%200%202-1%203-1%202-1%202-4-1-3-2-4-2-5%202l-2-1c-2-3-3-2-1%201l1%203c-1%200-2-1-2-3l-1-3%201-1-2-1v-1l-1-1-1-1%202-1%201-2%204-1h4l-4-1c-4-1-4-5-1-6%202-1%202-1%200-1-3%200-4-2-1-4%202-2%200-3-2%200m298%200l-2%203-3%201c-2%200-2%200%200%201s3%205%201%205v1c2%200%202%202%200%204-1%202%200%203%202%201l1%202-1%202-2%201h1l1%203%202-3c2-4%202-5%206-5s9-3%209-7l13-1%2014-1h-27l-1-3c-2-5-8-7-14-4m-15%2012c-2%202-8%204-8%202h-3l-1-1h-1v-1h-2c-1%200-1%201%201%202%203%202%203%202-2%204-4%201-4%201-6-1-3-3-2-1%200%202s2%203%203%202l5-2h1l-1%202%202-1%202-1%203%202h3l-3-2-1-2%209-1%203%205%203%206%201%201c1-1%202%200%201%202h-5l-2%204-2%202-2-3c-1-4%200-6%203-5%202%200%202%200%201-1v-2l-2-1-2%201v2c-2%201-2%201-3-2-1-2-1-2-2%200-1%205-3%208-6%208a18943%2018943%200%2001-12-2c2%200%204%201%206%205%201%201%201%201%201-1-1-2-1-2%202-1%205%200%205%200%201%204l-2%203%202-1c0-1%201-1%201%201%201%201%201%201%202-2l2-2h2c1-1%205%200%208%202l2%201%202-1-1%202-1%203%201%202%201%202-2-1h-1c-1%201-2%201-3-1h-1l1%202c2%201%201%202-3%202-2%201-3%201-2-1h-1c-2%203-4%201-4-2l-1-1v5l1%203%201%201%202%202c1%201%201%202%202%201%200-2%202-1%202%201s2%200%202-3v-1c-2%202-2%202-4-1l-2-2h2c6-1%208%200%209%201%201%202%202%202%202%201l-1-1c-2-1-1-4%200-4l3%202%202%202-1-3c-1-1-1-2%201-2%201-1%201-1-1-1-4%200-4-7%200-7%202-1%201-1-2-2h-4l2-4c2-2%203-3%204-2v2l-1%203%201-1c1-1%202-2%203-1v-3c0-2%200-2%201-1h2l-1-1v-3l-1-1h-1v-1l1-2h-1c-3%202-4-1-2-3%201-2%200-3-2-1l-3-2-1-3v-2c0-2-1-2-2%200m-179%200c-3%200-5%204-3%208l1%203c-1-1-2-1-3%201-2%202-2%202%200%203%202%202%204%201%204-2l1-1%201%201%201%202%203%205c3%203%204%204%205%203h10l-1%201%201%202c2%200%204-1%204-3h2l1-2c-1-2-1-2%201-1%202%202%205%200%203-2v-3c1-2%201-2%202%200%200%202%200%203%201%202h2v-1l-1-4c-1-3-3-4-3-1l-2%202v2h-1c-2%200-2-3%200-3v-3c-1-2-1-2-3%201-1%202-1%202-2%200s-4-5-4-3l2%203c4%205%205%2010%203%209-1-1-1%200-1%201l-2%202v-2c0-2%200-2-1-1l-1-1c1-1%200-4-1-7-3-5-3-6-7-6l-4%201h-1l-1%201v1h-1v-7c0-2-2-2-5-1m70%208l-2%203h-1v-2c0-2%200-2-1-1-2%201-3%205-1%204%201-1%201%200%201%201h1c1-1%201-1%201%202v3l1%202h-2l-1-1%202%203h2l3%201h5c1%201%202%200%203-1l2-2-1%202%201%202v2c0%202%200%202%202%202s2%200%201%201c-1%200-2%201-2%203l2%202c1%201%201%201-1%201s-3%202-1%204v1l-2-1h-1l-7%201c-4%200-4%201-6%205l-2%204v1l-1%202c-2%200-2-1-1-2%202-5%201-6-1-3l-3%202%202%203c4%204%204%205%200%202-3-4-5-3-4%200%201%202%201%202%203%201h1l-1%202%201%202%201%202h-2c0%202%202%206%204%206%201%200%202-3%200-5v-1c4%201%205-1%203-5-2-3-3-5%200-3l1%201%201%201c2%203%202%203%205%203s4%200%206-4%203-5%203-3v3h1l-2%201v1l-1%202-1%202%202-1c4-3%205-2%202%201l-2%203c1%201%206%200%208-2h2l1-1h-1l-1-2c0-2-2-4-2-2l-2%201c-1%200%200-2%203-4l3-4%201-1%202-3c1-2%200-7-2-5l-1-1-4-3c-3%200-3%200-1-1l3-3%202-4-1-1-1%202h-1l-2-1c-2%200-2%200-1-1%201%200%202-1%201-2h1c2%201%204%201%204-1l1-1%202-1c1-3-1-7-3-6v-1c1-1%201-2-1-3-2-2-5%200-4%202l-1%202c0-1-2%200-2%202l-3%202%201-2c1-1%200-3-2-7-3-6-4-7-7-7s-3%201-5%204m-145%207l-4%206%203-1c4%200%205-1%203-2-2-2-1-3%201-2%201%202%202%202%202%201h1l4%201%205-1-4%201a678%20678%200%2001-5%204l2%204-2-2c-1-3-1-3-3-1h-1c1-2%200-2-4-1-2%201-2%201-1%202v3l1%202%201-1c-1-2%201-2%203%200l3%202c2%200%201%202-1%204-2%200-2%201-2%203s0%202-1%201c-2-2-2-2-3%200-3%203-2%203%203%203%203%201%204%200%205-1l2-2-1%203c-1%202-1%202%201%203%208%203%2011%202%207-2v-2l2%202c2%202%202%200%200-3l-2-4%203%203c3%204%2011%204%2012%200%201-2%201-2%202-1h1c2%200%201%202%200%203l-2%202h1l2-1v1c-2%202-1%204%202%204%204-1%204-2%202-5l-2-2%202-2c3-2%204-3%204-1h1l1-1v-6l-1-3-1%201v2c-2-1-4%203-3%204l1%201h-1c-2-1-3%200-2%201l-1%202-2-2v-1l-1%201-1-3c0-4%201-5%202-3h1l-1-1-1-2%202%201c2%203%203%203%204%202%201-2%200-4-2-2-2%200-1-3%201-5s1-4-2-4c-3-1-4%200-2%202%201%202%200%203-2%201h-1l1%202v3c-1%201-1%201-2-1-1-3-8-4-11-1h-2l1-1%201-2-2%201-4%202%202-2c2-3%203-5%200-5v-1l1-2c0-3-6-5-7-3h-1c0-4-4-3-8%204m193-5v1c-1-2-2-1-3%202-1%205%202%206%203%202%202-4%203-5%203-3-1%204%200%204%202%203%201-2%201-2%201%200v6c1%202%201%202%202%201%202-2%203-1%201%201v3l2-1%202-3c2%200-2-5-4-5h-2l2-1c1-1%202-1%201-3%200-2-3-3-3-1h-1l-1-2h-2l-1-1-2%201m-127%207h-1v-1c-1%201%201%208%202%208l1-2%202-1-1%202c-1%202%201%204%203%203h1c0%202%205%202%207%200%202-1%202-2%200-5l-3-2-1-2v-2l-2%202-2%202-2-2c-3-2-3-2-4%200m207%206h-3l-1%201h-1c-1%200-2%200-1%202%200%202%200%202-2%202s-2%200-1%201c1%200%202%201%202%203l-2%202c-1%201-1%201%201%201s2%200%202%202c-1%202%200%202%201%202h1c0%201%206%202%2010%200l4-4%201-3h13l14-1h-27l-1-3c-1-3-6-6-8-6l-2%201m-285%202c-3%200-3%200-2%202%200%202%200%202-1%201-2-2-4%203-3%206l2%201%201%201c0%204%202%208%203%208l4-3-2-1v-1c2%200%202-1%201-1l-1-2%202%201c2%202%202%202%203%201l1-2c1%201%201-6-1-9l-1-3-2%202-2%201%201-2v-1l-3%201m87%2011c-2%200-2%201-1%202%200%202%200%202-1%201-2-3-5-2-4%201h-4c-1-2-1%201%201%206%201%202%201%202%203%201l2-1-2%202v3c2%201%202%202%200%203-1%201-1%201-2-1l-2-2h-1l1-1c1%200%200-2-3-3-2-3-3-3-3-2l1%203h2l1%205%202%204c0%201-1%201-1-1-1-2-1-2-4%200s-3%203%200%203h7l2-2c0-3%202-3%202%200l-1%202-1%201%201%201h2l3%202v1c-1%200-2%201-1%202%200%202%200%202-1%200-2-4-8-4-7%201%200%204%201%205%203%205l2-1-1-4%202%203c0%202%202%201%202-1h1c0%202%203%201%203-1%201-1%200-2-1-3v-1c3%200%205-4%204-6l-2-2h2l1%201h1c3%203%208%201%2010-3%201-4%201-4%202-2%201%201%200%203-1%204v3l1%201v2l1%201c0%201%201%204%203%204l1-1h1c0%202%202%201%203-1v-4c-1-1-1%200-2%202s-1%202-1%200l-1-2v-1c1-1%202-2%201-3%200-2-1-2-4%200l-2%201%202-2%202-3c1-2%201-2%202%200%202%203%203%204%203%201h1c0%203%201%202%203%200l2-1h1v-1l-1-2%201-3v-1h-3l-1%202v3c0%203%200%203-2%202l-3-2c-2%202-1-1%202-4s3-3%202-4c-2-1-3-1-5%202-1%203-1%203-2%201h-2c0%202%200%202-2-1-3-3-2-5%200-2l2%201-1-1-1-2h3l1%201c0%202%202%203%202%200v-2h-2c0-2-3-3-4-2v1l-1%201h-1l-6%201-6-1c1-2-2-5-3-5l-3%201m160%203c-1%203-1%203-3%202h-1l-1%203c-2%201-2%201%200%201h3c2%200%203%204%202%206%200%202%200%202%201%201%202-1%202-1%204%202s2%203%200%203v1c3%200%202%201%200%203l-1%202h3c2-3%202-4%203-2h1c0-2%206%200%208%202l2%201%202-1c2-1%202-1%200-1s-2%200-2-3v-1c-1%202-2%202-3-1l-2-1%201%203c1%201%201%201-1%201l-4-1c-2%200-2%200%200-2s2-3%200-4c-1-1-1-1-2%201l-1%203-3-4-2-4c2-2%201-3%200-2-2%201-2%201-3-1-1-3-1-3%201-3v-1c-2%200-2%200-1-2l1-3-2%202M52%20138c-3%208-4%209-6%208-3-1-8%202-9%206l-2%203H22l-13%201h13l14%201%202%204c2%203%209%204%2012%202h2c2%202%203%201%202-1-1-1-2-2-1-3l1-4%204-3c6-2%206-1%204%203s-2%204-5%203h-3l2%201c3%201%203%202%202%204%200%202%200%202%202%200l3-8c2-3%203-4%204-3s1%201%201-1c-1-1-1-2%201-2v-1c-1%200-2-1-1-2%200-2%200-2-1%200l-2%202-1-2-2-2%201%203c1%202%201%202-4%203-5%202-8%202-7-1v-1l-1-2%201-2c0%201%201%201%202-1v-5c1-2%201-2%202-1l2%203%201%202c1%201%202%201%204-1%202-3%203-3%204-1%201%201%202%202%201%203h1c2-1%202-1%200-4-3-3-4-3-7%200l-2%202-1-2-2-3v-3l1-2%201%202%201%201%201%201%202%201v-2c-2-1-2-2-1-2l1-2h-1c-2%202-2%202-3%201-2-3-2-3-7%207m299%206l-1%201h-1l1%202%201%201-2-1-3-1%201%202c3%202%202%204%200%204s-2%200-1%201c3%200%203%205%200%205-2%201-2%201%200%201%203%200%203%200%203%202-1%201%200%202%201%202l6%201c5%200%208-1%209-5l1-3h13l14-1h-14c-11%200-13%200-13-2%200-3-6-7-9-7-3%201-4%200-5-1%200-2-1-2-1-1m-269%209c2%202%203%203%202%204s-2%200-3-2l-2-2%201%203c1%202%201%203-1%205s-2%202-4%200h-2c1%201%200%202-1%202v1l2%201%205%201c7%201%206%201%2013%2014l6%2010-2-6-2-6-1-1-5-9c1-1-2-2-6-3-4%200-5-1-2-3l2-2%201%203%202%201-1-3c-1-1%200-2%202-5l2-3-1%201-3-1c-4-4-5-4-2%200m117%208l-2%202-1-2%202%206%203%205%201-2%202-1c0%202%202%201%202-1h1v3l-4%201v4h-1c-1-1-1-1-2%201h-2l-2-1h-1l3-2%201-1c0-1-4-2-5-1s-1%201-1-1l-1-2c-2-1-2%200-2%201s0%202-1%201c-3-1-3%202-1%204l2%202%202-2c1-2%201-2%201%200v2l-1%203-3%204c-1%201-1%201-1-1%202-5-3%200-4%206l-1%203%202-3c2-2%202-2%202%200%201%202%204%202%204%200l2-3-1%204%203%201c3%200%204-1%203-2h1c2%201%202%201%204-1l3-3-1%203-2%202h9c3%202%203%201%202-3l-1-4%202%203c2%204%203%205%203%202h1l1%202v-3c-1-3-1-3-2-1-1%201-1%201-1-1-1-3-4-5-4-3h-3l-1-1-1-4-1-1c1%201%202%200%202-1l1%201%202%201c1-2%200-6-2-10l-2-3-2%202c-2%202-2%202-2%200l-3-9-2%204m41-1c0%204-14%205-15%202%200-2-2-1-2%201h1v6l3%206c2%207%203%207%205%207%203%200%203-1%204-3l2-2v-2c0-2%200-2%201-1h2l-1%203-1%201h2c2-2%201%200-1%203-3%204-2%204%202%200%206-4%209-12%205-11h-1l-1-3c-2-2-2-2-3%200-1%201-1%201-1-1v-2l-1-2%203%201c1%202%202%202%202%201%201-1%201-1%201%201%200%203%201%203%204%200l2-3-2-1-3%201h-1c1-2-2-3-2-1-1%201-1%201%200%200l-2-2-2%201M53%20174c-4%207-5%208-7%208-4%200-9%203-10%205%200%204-3%204-16%204H9l13%201c12%200%2014%200%2014%202l2%204c4%203%209%203%2013-1%203-2%203-3%206-2l4%201-3-2c-5-1-5-4-1-6%202-1%202-1-1-1l-3-1-1-2-1-3c0-2%200-2%201-1s1%201%201-1v-1c0%201%203%200%203-2h-1c-3%202-2%201%200-4s5-6%203-2c0%202%200%202%201%201h3v-3l1-2h-1c-2%202-2%202-3%201-2-3-2-3-6%207m298%205l-1%202h-1l1%202%201%201-3-1-3-3c-1%200%200%202%202%203%202%202%203%205%201%205l-7-2-8-2c-1%200%202%202%207%203%2010%203%2011%205%204%207l-4%202%204-1c4%200%204%200%207%202%203%204%209%204%2012%200l3-4%2013-1h14l-13-1h-13l-1-3c-3-4-6-6-10-6l-4-2c-1-4-2-4-1-1m-169%2015v3h1c0%202%207%205%209%204h1l-3%204h-2c1-3-2-4-4-2h-1c1-3%200-5-1-3h-1c0-2%200-2-1-1l-1%204v5c-2%203-2%204-1%204l-1%202c-1%203-1%205%201%203h1l-1%202c-2%202-1%203%201%202v1c-3%204%200%204%2022%204s25-1%2022-4v-1c3%200%202-1%200-4l-3-3%202%201%203%202v-3l-1-2c-1%201-1%201-2-1v-3l1-3c0-3-1-4-1-2-1%201-1%201-1-1l-2-2c-1%200-1%201%201%204%202%205%201%205-2%200l-3-7c2%203%204%202%203-1h1c1%202%202%201%201-2-1-2-1-2-2-1l-1%201c-1-3-4-2-4%200l1%203-2-3c-1-2-2-2-6-2-2%200-4%200-3%201l1%201h-2c-2-2-2-2-4%201l-3%203%202-4%202-2h-4l-6%202h-1c1-3-2-2-4%200l-1%203v-3c1-2%200-3-1%200m58%201c0%205-10%207-14%203a807%20807%200%20012%2013c4%2012%206%209%2011-9l2-8-1%201m-79%204c3%2012%206%2019%208%2019s3-1%206-10c3-11%203-12%200-9-3%202-8%201-12-1l-2-2v3'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.5822784810126582,"src":"/static/0dc323ac434a4af322c40aa263f121d7/a7715/network.jpg","srcSet":"/static/0dc323ac434a4af322c40aa263f121d7/8f7df/network.jpg 250w,\n/static/0dc323ac434a4af322c40aa263f121d7/0f3a1/network.jpg 500w,\n/static/0dc323ac434a4af322c40aa263f121d7/a7715/network.jpg 1000w,\n/static/0dc323ac434a4af322c40aa263f121d7/ff531/network.jpg 1056w","sizes":"(max-width: 1000px) 100vw, 1000px"}}}}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"path":"blog/icbs","title":"Consultation Booking System","tags":["python","firebase","raspberrypi"],"excerpt":"An integrated professor-student realtime consultation booking system.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='234'%20viewBox='0%200%20400%20234'%20preserveAspectRatio='none'%3e%3cpath%20d='M171%2046c-14%202-26%206-26%208h2c2-6%2041-8%2085-6%2021%201%2023%202%2026%209%204%207%203%2045-1%2052-3%205-15%206-57%206-35%200-43%200-51-5l-3-1c0%201%204%204%2011%206%2011%203%2091%202%2098-2%205-3%207-12%207-35%201-24-3-30-17-31-12-1-66-2-74-1m-31%2012a332%20332%200%20002%2044c3%200%203-2%203-15%200-20-1-29-3-30l-2%201m54%200c-2%201%200%2041%202%2043h8c9-1%2013-5%2012-11-1-4-5-9-8-11-2%200-1-1%202-4%206-6%206-9%202-14-4-3-4-3-11-4l-7%201m-29%202c-9%206-13%2022-8%2032%204%207%206%208%2016%209%208%200%208%200%208-2s-2-3-8-3c-8%200-12-4-14-13-1-9%208-23%2013-20%202%202%204%201%204-1%200-4-6-5-11-2m67%200c-3%202-6%207-6%2010%200%204%202%206%208%209%2010%204%2014%2010%209%2014-2%203-6%202-11-1-4-2-5-2-6-1-5%205%2014%2012%2020%207%208-6%203-17-9-23-6-3-7-5-6-8%202-4%206-5%2011-5h5c0-4-11-5-15-2m-35%203l1%207v5h3c7-2%2011-7%208-11-2-3-13-4-12-1m2%2025c0%209%200%209%204%208%2010-1%2011-9%201-13-6-3-6-3-5%205m-59%2048v7h3c3%200%206-3%205-5v-4c0-3-1-4-4-4h-4v6'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.7045454545454546,"src":"/static/fba3ec7bc8986a5670124b1e4f67f29f/4fe8c/icbs.jpg","srcSet":"/static/fba3ec7bc8986a5670124b1e4f67f29f/aabdf/icbs.jpg 150w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/9dc27/icbs.jpg 300w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/4fe8c/icbs.jpg 600w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/9842e/icbs.jpg 900w,\n/static/fba3ec7bc8986a5670124b1e4f67f29f/50ba2/icbs.jpg 1109w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/promises-in-javascript","title":"BLink - an all in one events solution","tags":["android","java","opencv"],"excerpt":"An events solution application that is targeted at reducing queues, smoothening event registration processes, and for users to seamlessly expand and build their professional network.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='410'%20viewBox='0%200%20400%20410'%20preserveAspectRatio='none'%3e%3cpath%20d='M17%2044l-1%2011a18073%2018073%200%20002%20309l1%203c-1%201%200%203%201%204l1%204c0%202%203%205%205%205s2%201%202%202c-1%202%204%206%208%206l3%202%20159%201a1115%201115%200%2000169-3c2%200%207-5%206-6l1-2h2l2-1%202-5%201-3%202-4c0-2%200-2%201-1%202%205%202-28%202-166a3926%203926%200%2000-2-150v-5l-1%207-1%20157c0%20170%201%20153-8%20163-9%209%208%208-171%208l-163-1c-6-1-14-7-18-13l-2-4-1-159a8617%208617%200%2000-2-159m61%2096l-1%2061%201%2061h26c47%200%2061-4%2068-22%206-17%200-32-15-39-5-3-5-3%200-6%2016-10%2014-36-3-49-2-2-10-4-18-6H78m224%200c-8%202-12%208-13%2017v7l3%205c3%203%209%206%2014%206%2012%200%2020-12%2017-23-3-8-13-14-21-12m-103%201l-8%201v120h78v-11l-1-12-24-1-25-2-1-48c0-51%201-48-6-48l-13%201m-94%2035l1%2013%2013-1c13%200%2013%200%2016-3%203-2%203-3%203-8%200-11-3-13-22-14h-11v13m194%2019c-4%201-7%204-9%209-2%203-2%206-2%2030l1%2028h14l18-1h3v-26a160%20160%200%2000-2-30c0-8-13-14-23-10m-193%2016c-1%200-2%2026%200%2027%203%201%2026%200%2032-2l6-2%201-11c0-7-2-9-12-11-9-1-25-2-27-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":0.974025974025974,"src":"/static/f983134a008a6eccfceeeff5c61e5b36/1b0b3/blink.jpg","srcSet":"/static/f983134a008a6eccfceeeff5c61e5b36/aabdf/blink.jpg 150w,\n/static/f983134a008a6eccfceeeff5c61e5b36/1b0b3/blink.jpg 168w","sizes":"(max-width: 168px) 100vw, 168px"}}}}}},{"node":{"frontmatter":{"path":"blog/sprint","title":"Cloud Sprint Student Program","tags":["gcp"],"excerpt":"A 12 week summer program sponsored by Google Cloud for selected undergraduates to explore GCP and take on the ACE Certification.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='222'%20viewBox='0%200%20400%20222'%20preserveAspectRatio='none'%3e%3cpath%20d='M31%2073c-6%203-10%205-13%209-4%205-7%2011-5%2012%201%200%200%202-2%203l-3%203-2%201c-1%202%200%203%201%204v2H6c0-3-2-1-2%202%200%202%200%202%202%201h1l1%203c0%202%200%202-1%201l-2-2c-1%201%202%209%203%208v2h1l2-1-1%202c-1%201%202%204%206%206l24%201c19%200%2021%200%2025-2%2012-6%2014-21%205-32l-6-9c-6-12-22-18-33-14m77%2010c-13%207-15%2024-4%2033%2013%2011%2033%203%2033-13v-4h-19v6h7c7%200%207%200%204%205-4%209-19%207-24-3-7-13%2010-27%2022-18%201%201%202%201%203-1l2-2-3-2c-5-4-15-4-21-1m118%2019v19h6V82h-6v20m56-16c-17%207-15%2032%204%2035%205%201%2011%200%2015-3%202-3%202-3%201-4-2-2-2-2-5%200-4%204-13%204-17%200-10-10-3-26%2010-25%203%200%206%201%207%203h4c4-5-11-10-19-6M32%2087c-3%201-5%204-3%204s3%200%205%202c3%202%203%202%202%203-2%201-2%202-2%203%201%204-2%207-4%205-2-4-13-3-13%200l-1%202c-2%200-2%205%200%207v5c-2%200-2%201-1%202l2-1%2020-1c19%200%2022%200%2025-4s0-10-5-11l-2-4c0-10-13-17-23-12m275%2016v18h5V85h-5v18m83-11c0%204%200%207-1%206-2-4-12-3-16%202-8%2010%202%2026%2013%2021l4-1%203%201h2V85h-2c-3%200-3%200-3%207m-244%204c-10%205-9%2020%201%2025%2010%203%2018-3%2018-12%200-11-9-17-19-13m29%200c-7%204-10%2015-4%2021%208%209%2023%204%2023-8%200-10-10-17-19-13m30%200c-15%206-7%2030%207%2025%204-1%204-1%204%201%200%206-7%208-11%204-3-2-7-2-7%200s6%207%208%207c13%201%2016-3%2016-24V96h-17m36%201c-12%206-7%2024%206%2024%207%201%2013-4%209-7h-4c-2%202-7%203-9%201s-1-3%203-4l8-4%205-2-2-3c-3-6-10-8-16-5m83-1c-8%203-11%2015-5%2021%207%209%2020%204%2022-7%201-10-8-17-17-14m21%2010c0%2012%201%2013%206%2015h7c2-2%204-2%204-1l2%201c2%200%202-1%202-12%200-12%200-13-2-13s-2%201-2%208c0%2010-2%2013-7%2013s-6-3-6-13c0-7%200-8-2-8s-2%201-2%2010m-166-5c-8%202-6%2015%202%2015s10-13%202-15h-4m144%201c-3%204-3%2010%200%2013%206%205%2013%201%2013-7%200-7-8-11-13-6m54%200c-5%206-1%2015%206%2015%206%200%2010-10%205-15-3-3-7-3-11%200m-230%201c-3%202-3%208%200%2011%205%205%2012%201%2012-6%200-6-6-9-12-5m57%200c-3%204%200%2013%205%2013%206%200%2010-8%206-13-3-3-8-3-11%200'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.8072289156626506,"src":"/static/34571f89f87caa7608d9228147ff2778/4fe8c/google-cloud_fb.jpg","srcSet":"/static/34571f89f87caa7608d9228147ff2778/aabdf/google-cloud_fb.jpg 150w,\n/static/34571f89f87caa7608d9228147ff2778/9dc27/google-cloud_fb.jpg 300w,\n/static/34571f89f87caa7608d9228147ff2778/4fe8c/google-cloud_fb.jpg 600w,\n/static/34571f89f87caa7608d9228147ff2778/9842e/google-cloud_fb.jpg 900w,\n/static/34571f89f87caa7608d9228147ff2778/47498/google-cloud_fb.jpg 1200w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/routingpear","title":"Pear - A Web Application designed for Routing customer calls to agents","tags":["node.js","rainbow","css"],"excerpt":"A Node.js based web application built on top of the Rainbow SDK to help customers route their calls and queries to appropriate call center agents.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='256'%20viewBox='0%200%20400%20256'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20128v128h401V0H0v128m69-73c-3%201-4%204-3%206%200%202%202%203%207%204l2%202c0%202-3%202-4%200-2-2-6-1-6%201%201%205%2013%205%2014%200%201-3-1-7-4-7l-4-1c-1-2-1-2%201-2l3%201c0%202%204%201%204%200%200-3-5-5-10-4M9%2063v9h7c6%200%206%200%206-3%200-2%200-2-4-2h-4v-6c0-6%200-6-2-6-3%200-3%200-3%208m24%200c0%208%201%209%203%209s3-1%203-4%200-3%203-3l3-1c0-1-1-2-3-2l-3-1c0-2%201-2%204-2%202%200%203%200%203-2s-1-2-7-2h-6v8m16%200v9h7c6%200%207%200%207-2s-1-2-4-2l-5-1c0-2%201-2%204-2s4%200%204-2-1-2-4-2c-5%200-5-2%200-2%203%200%205-1%205-2%200-2-1-2-7-2h-7v8m32-6l3%202c2%200%202%201%202%206%200%206%201%207%203%207s3-1%203-7c0-5%200-6%202-6l3-2%201-1c4%205%206%2010%206%2012%200%204%200%204%203%204%202%200%202%200%202-4%200-3%201-5%203-8%204-5%204-5%200-5-2%200-3%201-4%203s-1%202-3%201l-1-3-12-1c-10%200-11%200-11%202m36%206v9h7c6%200%206%200%206-2l-1-3c-7%201-7%200-7-6s0-6-2-6c-3%200-3%200-3%208m15-7v9l1%207h6c6%200%208-1%208-2%200-2-1-2-4-2-6%200-7-3-1-3%205-1%206-4%200-4l-4-1%204-1c3%200%204%200%204-2s-1-2-7-2l-7%201M11%2083c-4%203-2%207%203%209l4%203h-5c0-2-5-3-5-1%200%203%203%205%207%205%2010%200%2011-9%202-11l-3-1c0-1%201-2%203-1l4%201h3l-3-3c-2-2-8-3-10-1m15%207c0%208%200%209%202%209s2-1%202-5c0-6%200-6%202%201%202%206%204%206%206-1l2-4v4c0%205%200%205%202%205%203%200%203%200%203-8l-1-8h-3c-3%200-4%200-4%203l-2%204-2-4c0-3-1-4-4-4h-3v8m24-1l-4%208c0%202%200%202%203%202l3-1c0-1%201-2%203-2l3%202%203%201c3%200%203%200%203-2l-4-8c-2-6-2-7-5-7s-3%201-5%207m16%202c0%208%200%208%202%208%203%200%203-1%203-4l1-3%202%203c2%203%203%204%205%204s3-2%200-5v-4c4-4%200-8-7-8h-6v9m17-8c-2%201-1%203%201%203%203%200%203%200%203%206s1%207%203%207h3v-6c0-7%200-7%203-7l2-2c0-2-1-2-7-2l-8%201m216%2051c-3%203-3%20115%200%20117%202%202%2091%203%2093%201l1-60c0-56%200-58-2-59l-46-1c-42%200-45%200-46%202m4%2030v3h50v-7h-50v4'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.5625,"src":"/static/a4177b2784a4d043bf2af946ce9d0864/4fe8c/pear.jpg","srcSet":"/static/a4177b2784a4d043bf2af946ce9d0864/aabdf/pear.jpg 150w,\n/static/a4177b2784a4d043bf2af946ce9d0864/9dc27/pear.jpg 300w,\n/static/a4177b2784a4d043bf2af946ce9d0864/4fe8c/pear.jpg 600w,\n/static/a4177b2784a4d043bf2af946ce9d0864/9842e/pear.jpg 900w,\n/static/a4177b2784a4d043bf2af946ce9d0864/73482/pear.jpg 989w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/twohandsonebrain","title":"2 Hands 1 Brain - a Verilog based Arcade Station","tags":["verilog","fpga","lucid"],"excerpt":"A mind boggling, single player arcade game built for one of my academic modules.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='205'%20viewBox='0%200%20400%20205'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%20102v103h242V70h94v67a1505%201505%200%2001-1%2056v-10l-11-1h-11v22l1-11v-10h10l10%201v9c0%2011%201%2010-12%2010l-10%201v-21l-11-1h-11v11l-1%2011v-21l-11-1h-11v22l1-11v-10h10l10%201v19h-10c-10%200-10%201-6%201h22l7-1c7%200%208%200%205%201l45%201h50V0H0v102m326-80c-3%203-3%203-3%2013v10l4%203%203%204h22l3-3c3-4%203-4%203-14V24l-3-3-4-3h-22l-3%204M59%2036v14h4c4%200%205-1%205-4%200-5%204-4%204%201%200%203%200%203%204%203h4V22l-4-1h-4v4c0%206-2%206-2%201v-4l-6-1h-5v15m30-12v2l-1%202-1%202-1%202-1%202-1%202-1%207v7h22V39c0-10%200-10-3-13-2-2-11-3-13-2m20%201c-2%202-2%204-2%2013l1%2012h8v-3c0-4%201-5%203-2l6%202h4V24h-4c-4%200-5%200-5%202s-1%203-3%200-6-3-8-1m28-1h-6v13l1%2013h5c6%200%206%200%2010-4%206-6%206-13%200-19-3-3-4-3-10-3m62%200c-2%200-2%200-2%2013v13h8c7%200%208%200%2011-3%203-4%204-12%202-13l-2-4-1-5c-2-1-12-2-16-1m30%200h-8v13l1%2013h4c3%200%204-1%204-3%200-3%201-3%203%201%203%203%206%203%208%200%202-2%202-4%202-11s0-8-3-11c-2-2-3-2-11-2m28%200c-4%200-5%200-5%202l-1%202-1%202-2%202-1%202c1%201%200%202-1%202l-1%207%201%207h21V40c0-11%200-11-3-14-2-2-3-2-7-2m19%200h-6v26h4c4%200%204%200%204-3s0-4%202-4l1-3%201-3V24h-6m23%200l-1%202c0%203-1%202-3%200s-6-3-9-1l-1%2013%201%2012h8v-3c0-4%201-5%203-2l6%202h4V36c0-11%200-12-2-12l-4-1-2%201M61%2035c0%209%200%2010%202%2010%201%200%202-1%202-3%200-3%201-3%205-3%203%200%204%200%204%203%200%202%201%203%202%203%202%200%202-1%202-10%200-10%200-11-2-11s-2%201-2%204c0%204%200%204-3%204-4%200-4%200-4-4s0-4-3-4h-3v11m95-8c-3%203-3%2017%200%2019l2%203%208%201%207-1%201-2c2%200%201-20%200-22-3-2-15-1-18%202M36%2028c0%202%201%202%204%202l5%201-1%201c-2%200-8%208-8%2010v3h8c6%200%207%200%207-2s-1-2-4-2c-5%200-5%200-1-4l3-4%201-1c1-1%200-2-1-3-4-4-13-4-13-1m56%200l-1%202-1%201-4%208-1%203c0%203%200%203%204%203%202%200%203%200%203-2l2-2%202%202c0%202%201%202%203%202h3v-7c0-6%200-7-2-10-4-3-8-3-8%200m19-1l-1%2010c0%207%200%208%202%208s2-1%202-5l1-6%204%205c6%206%208%205%208-3s-1-10-3-10l-1%204c0%205-1%206-6%200-4-5-4-4-6-3m23%209v9h3c4%200%2012-6%2012-9%200-4-8-10-12-10h-3v10m24-7c-2%202-1%205%202%205l2%201%202%201c1%200%205%203%205%205%200%201-6%200-8-2s-2-2-4-1c-1%202-1%202%201%204%203%203%2011%204%2014%202%203-4%200-9-4-9-2%200-6-3-6-5l7%201h2c3-3%200-5-6-5-3%200-5%201-7%203m41%207v9h6c9%200%2014-5%209-9-2-2-3-4-1-4v-5l-8-1h-6v10m25%200c0%208%200%209%202%209s2-1%202-3c0-5%201-5%206%200%203%203%203%203%205%202%201-2%201-2-1-4-3-2-3-3%200-5%205-4%200-9-8-9h-6v10m30-8l-1%202-1%202-1%203-1%202-1%202-1%203c0%203%200%203%203%203%202%200%203%200%203-2%200-1%201-2%203-2l2%202c0%202%201%202%203%202h3v-7l-1-8-3-2-4-2c-2%200-3%200-3%202m18%208c0%208%200%209%202%209s2-1%202-3l1-3%201-3%201-4%201-3c0-3%200-3-4-3h-4v10m17-9l-1%2010c0%207%200%208%202%208s2-1%202-5c0-7%200-7%206-1s7%205%207-5c0-7%200-8-2-8s-2%201-2%204c0%205-1%206-6%200-4-5-4-4-6-3m-46%2055v10h23V71h-23v11m24%200v10h21V81l1-10h-22v11m23%200v10h22V71h-22v11m23%200v10h22V71h-22v11M137%2093v8l1%207h16V93l-8-1-9%201m22%200l-1%208v7h16V93l-8-1-7%201m84%2011v10h23V93h-23v11m24%200v10h21V93h-21v11m23%200v10h22V93h-22v11m23%200v10h22V93h-22v11m-174-4v6h13V94h-13v6m106%204v9h19V94h-19v10m46%200v9h20l-1-7c0-13%201-12-9-12h-10v10M93%2098c0%202-6%202-12%201h-3l-7%201-7%201c0%202%2011%202%2011%200h1c2%202%207%202%209%200h2l5%202c2%200%203-1%202-3%200-3-1-4-1-2m150%2028v11h23v-21l-12-1h-11v11m24%200v11h21v-22h-21v11m23%200v11h22v-21l-11-1h-11v11m23%200v11h10l11%201h-21v21h22v-43l-11-1h-11v11m-176%201l1%208h16v-15h-17v7m21%2019v7h16v-15h-16v8m85%203v10h23v-21h-23v11m24%200v10h21v-21h-21v11m23%200v10h22v-21h-22v11m-45%200v9h19v-19h-19v10m-2%2022v10h23v-21h-23v11m24%200v10h21v-21h-21v11m23%200v10h22v-21h-22v11m23-1v11h22v-20l-11-1h-11v10m-22%201v9h19v-19h-19v10m-130%201v8h16v-16h-16v8m82%2021v12h13c7%200%2012%200%2011-1l-1-11v-10l-12-1h-11v11m-82-5c-1%2010-1%2010%208%2010h8v-15h-16v5m1%202v7l6-1h7v-12h-13v6m154%203v8h16v-16h-16v8'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.948051948051948,"src":"/static/136983f100d98cb7c1e2d1ef306cf5fa/2a4de/poster.png","srcSet":"/static/136983f100d98cb7c1e2d1ef306cf5fa/6d161/poster.png 150w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/630fb/poster.png 300w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/2a4de/poster.png 600w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/db955/poster.png 900w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/f3583/poster.png 1200w,\n/static/136983f100d98cb7c1e2d1ef306cf5fa/be6d9/poster.png 9710w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/liberate","title":"Liberate - A Distributed Book Review Application","tags":["node.js","hadoop","spark","bash","rest-api"],"excerpt":"A Node.js based fully automated web application like GoodReads, with distributed analytics functionality.","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='289'%20viewBox='0%200%20400%20289'%20preserveAspectRatio='none'%3e%3cpath%20d='M183%2037v14l-1-13-1-12v27h2l6%201c3%200%203%200%202-1-2-1-2-1%200-1l3%201h11c-1%201-1%201%202%201l6-1h2V26l-1%2012v13l-4%201h-4l3-1%204-1V37l-1-13c-1-1-11%202-13%203l-5-1-8-2-3-1v14m-67%2074l-4%201-1%204v8l1%202h172l1-2c1-6%200-12-3-13H116m134%2046h-4l-3%201-1%207c0%207%200%208%202%209l2%201h1l2-1%201%201v2c2%202-1%205-4%206-3%200-3%201-4%204v3h6c5%200%206%200%205%201s0%201%203%201%203%200%201-1l-2-1h2l3%201h1v-34c0-1-10-2-11%200m-110%201l-5%201-3%201v20l4%201h11l7%201v-22l-14-2m76%2016l1%2016h17v-31l-9-1h-9v16m-21-12c-3%200-3%200-1%201v1c-5%202-6%202-3%203l2%201-2%201c-2-1-2%200-2%202s0%202%209%202c8%200%209%200%209-2s-1-2-5-2-4%200-3-2h4l3-1c1-1%200-1-2-1s-2%200-1-1l1-2-2%201h-1l-1-2-5%201m-28%2019l-2%202c-1%200-2%200-2%203-1%204-1%204%204%204l4%201%202%201%202-1v-1l1%201h2l2-4-2-4-2-2h-2c-3%202-6%203-6%201l2-1c2-1%202-1%200-1-2-1-3%200-3%201m23%202l-1%204c0%203%200%203%205%203l4%201%204%201%203-1v-1c2%200%202-1%202-4v-4h-8l-9%201m-45%2014h-4l-3%201c-2%200-2%202-2%2016v16h5c4%200%205%200%204%201s-1%201%201%201c1%200%202%200%201-1l3-1%203%201v-17l-1-16v-1l-1-1c-5-1-6-1-6%201m26-1h-2l-1%202c1%201%200%203-1%204l-2%204c1%201%200%202-1%202-3%200-3%205%200%206%203%200%204%2014%201%2014s-4%200-3%201l5%201%205%201c-1%201%200%201%202%201s2%200%201-1c-2-1-2-1%202-1l4-1-5-1c-6%200-7-3-5-7%201-1%201-1%201%201%200%201%204%205%205%204%202-2%200-6-3-6s-3-5%200-6c2%200%203-1%203-2h1c0%203%202%202%202-1l-1-3-1-4-2-4-1-1%203-1c2%200%202%200%201-1-1-2-5-2-6%200l-2%201v-1l1-2-1%201m55%200l-6%201-3%201-1%2016v16h5l4%201%202%201c2%200%202%200%201-1-2-1-2-1%202-1h4v-16l-1-17c-1-1-4-2-7-1m27%200l-4%201h4c3%201%202%201-3%201h-6l-1%2016v16h5l4%201c-1%201%200%201%201%201%202%200%202%200%201-1s0-1%202-1l4-1a4430%204430%200%2001-2-32l-1-2-4%201m-56%209v5c1%202-1%204-2%202l-2-2c-2%200-2%200-1-1v-2c-2%200-2%202-2%2012v11h4l4%201%202%201c2%200%202%200%201-1s-1-1%202-1l4%201v-24h-4l-3-1c0-2-2-2-3-1'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.3888888888888888,"src":"/static/bf0b5ac8334f3577278aa5b949685a71/4fe8c/liberate-1.jpg","srcSet":"/static/bf0b5ac8334f3577278aa5b949685a71/aabdf/liberate-1.jpg 150w,\n/static/bf0b5ac8334f3577278aa5b949685a71/9dc27/liberate-1.jpg 300w,\n/static/bf0b5ac8334f3577278aa5b949685a71/4fe8c/liberate-1.jpg 600w,\n/static/bf0b5ac8334f3577278aa5b949685a71/9842e/liberate-1.jpg 900w,\n/static/bf0b5ac8334f3577278aa5b949685a71/67c96/liberate-1.jpg 983w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}},{"node":{"frontmatter":{"path":"blog/music-generation","title":"Music Generation","tags":["keras","python","flask"],"excerpt":"A deep Neural Network tuned for jazz music generation, with a comparative study on multiple network architectures like LSTM and Transformers. A front end developed on React that allows users to feed in their own input notes while the model generates some infinite music!","cover":{"childImageSharp":{"fluid":{"tracedSVG":"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='400'%20height='217'%20viewBox='0%200%20400%20217'%20preserveAspectRatio='none'%3e%3cpath%20d='M0%2051v51h12l13%201H0v6h12l13%201H12c-11%200-12%200-12%202s1%202%207%202l7%201H0v3c0%203%200%203%207%203l7%201H0v95h401V0H0v51m151-36c-8%204-10%2014-6%2023%204%208%201%208%2063%208h55l3-3c8-8%206-23-3-28-5-3-107-3-112%200m180%202c-9%206-8%2021%202%2026%205%203%2054%203%2059%201%206-3%208-6%208-14%200-15-1-15-37-15-27%200-29%200-32%202M104%2092v19H71l16%201h17v30a824%20824%200%20000-51m-86%2091c-15%205-15%2026-1%2031%2017%206%2031-16%2017-28-5-5-10-6-16-3m51-1c-13%204-16%2021-5%2030%204%203%2014%204%2019%200%2015-11%204-36-14-30m48%201c-13%206-13%2024-1%2030%2014%206%2029-6%2024-21-4-9-14-13-23-9m52%200c-12%203-15%2017-7%2026%209%2011%2027%206%2029-9%200-6%200-8-5-13-5-6-10-7-17-4m51-1c-8%202-12%209-12%2018%202%2021%2033%2020%2033-2%200-11-11-19-21-16m48%201c-13%206-13%2024-1%2030%206%203%2011%203%2016%200%2018-10%204-39-15-30m52-1c-20%208-12%2036%209%2033%2010-2%2016-15%2011-25-4-7-13-10-20-8m51%200c-8%202-12%2010-12%2018%202%2019%2028%2020%2033%202%203-12-9-24-21-20'%20fill='%23d3d3d3'%20fill-rule='evenodd'/%3e%3c/svg%3e","aspectRatio":1.829268292682927,"src":"/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/2a4de/musicgen.png","srcSet":"/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/6d161/musicgen.png 150w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/630fb/musicgen.png 300w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/2a4de/musicgen.png 600w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/db955/musicgen.png 900w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/f3583/musicgen.png 1200w,\n/static/79b0b87a20e4d8ff7f7f9809c0d3fac6/d004a/musicgen.png 3622w","sizes":"(max-width: 600px) 100vw, 600px"}}}}}}]}},"pageContext":{"postPath":"blog/stagecraft","translations":[{"hreflang":"en","path":"/blog/stagecraft"}]}},"staticQueryHashes":["4097791827"]}