{"cells":[{"cell_type":"code","execution_count":null,"id":"e76162ca","metadata":{"id":"e76162ca"},"outputs":[],"source":["import numpy as np\n","import matplotlib.pyplot as plt\n","import math\n","\n","plt.rcParams[\"figure.figsize\"] = (6, 6)"]},{"cell_type":"code","execution_count":null,"id":"c146d34b","metadata":{"id":"c146d34b","colab":{"base_uri":"https://localhost:8080/","height":620},"executionInfo":{"status":"ok","timestamp":1788408308107,"user_tz":-330,"elapsed":256,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"a5c2fce4-ed93-4738-f4cd-c0c524f5b321"},"outputs":[{"output_type":"stream","name":"stdout","text":["Array:\n","[[  0   0 255 255]\n"," [  0 128 128 255]\n"," [255 128 128   0]\n"," [255 255   0   0]]\n","\n","Shape: (4, 4)\n"]},{"output_type":"display_data","data":{"text/plain":["<Figure size 600x600 with 1 Axes>"],"image/png":"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Q4cS21555RW98sor2rt3r+6+++5r1jJx4kStWrVKK1as0OOPP65hw4Zp1KhRCgkJ0aBBg665PjMzU4cPH9Ydd9xRYlvxpYczZ86obt2619yXKX/7298UEBCgjRs3yt/f3z2+YsUKj3ktWrSQy+XS0aNH1bp1a/f4rz+PpGHDhqpTp46Kioo0YMAAe4sHqikCBlDJCgoK9PHHH2vo0KF69NFHS2xv0qSJ3n//fX366acaNmxYqft47rnnFBMT4zF28uRJPf3003ryySf18MMPlzjtX5oXX3xRS5Ys0cKFC91/maekpOh3v/udHn30UW3cuPGabzn985//rJ9//tljLCMjQ3/60580bdo0RUZG6pZbbrlmLSbVqlVLDofD47Usx44d09q1az3mRUdH68UXX9TixYs1f/589/ibb75ZYn+PPPKIUlJSlJGRoYiICI/tP/30kxo2bGi+EaAaIWAAlezTTz/VuXPn9NBDD5W6vVevXu4P3SorYHTt2lVdu3b1GCu+PNGhQ4cS4aM0R48e1dy5czVz5kw999xz7nE/Pz+tWbNGAwYM0P/7f/9PO3fuvOp+fvOb35QYKz5bcc8991xXLaYNHjxYb7zxhh588EENHz5cJ0+e1KJFi9SqVSt9++237nndunXTI488ogULFujUqVPut6n+4x//kCSPF5jOmTNHX375pXr27Knx48erffv2On36tL755ht98cUXOn36dIX3CVQlBAygkq1cuVIBAQGKiooqdbuPj48GDx6slStX6tSpU2rQoIEtdbRs2VK7du0q9TLKLbfconXr1uncuXO2/Nt2u++++/SXv/xFc+bM0eTJk9WyZUu9+uqrOnbsmEfAkC5/mmlYWJjef/99d7D64IMP1KZNGwUEBLjnhYaGateuXZo1a5Y+/vhjLV68WA0aNFCHDh1u+p08gDdwWNavPu4OAOBh37596tKli/76179qxIgRlV0OUC3wNlUAuEJBQUGJsQULFsjHx0d9+vSphIqA6olLJABwhddee03p6enq37+/ateurfXr12v9+vV66qmnjHzGCFBTcIkEAK6QmpqqhIQEfffddzp//ryaN2+uJ554Qi+++KJq1+ZvMuB62XaJ5PTp0xoxYoSCg4NVt25djR07VufPn7/qmn79+snhcHjcnnnmGbtKBIASoqKitHXrVp0+fVqXLl3S4cOH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9yoiIqLMedXxsXml6+2zuj429+/fr8jISF28eFG33nqr1qxZU+anR1fXY1meHk0exyobMKZPn65XX331qnMOHjx4w/u/8jUaHTt2VOPGjXX//ffryJEjuvPOO294v7BXZGSkR/Lu3bu32rVrp7fffluzZ8+uxMpQXm3atFGbNm3c93v37q0jR45o/vz5eu+99yqxsuszYcIEZWRkaOvWrZVdiq2ut8/q+ths06aN9u3bp9zcXH300UcaNWqUtmzZUq6vqKjqytOjyeNYZQPGlClT9OSTT151zh133KGwsLASLwj817/+pdOnTyssLOy6/72ePXtKkg4fPlzpAeO2225TrVq1lJOT4zGek5NTZk9hYWHlml8V3Eifv+br66suXbro8OHDdpRYKco6lsHBwV5z9qIsPXr0qBZP2BMnTnS/oPxaf9VVx8dmsfL0+WvV5bHp5+enVq1aSZK6deum3bt3a+HChXr77bdLzK2ux7I8Pf7azRzHKvsajIYNG6pt27ZXvfn5+SkyMlJnz55Venq6e+3mzZvlcrncoeF67Nu3T5KqxFfD+/n5qVu3btq0aZN7zOVyadOmTWVeN4uMjPSYL0mpqalXvc5W2W6kz18rKirS/v37q8RxM6U6HktT9u3bV6WPpWVZmjhxotasWaPNmzerZcuW11xTHY/njfT5a9X1selyuVRYWFjqtup4LEtztR5/7aaOo5GXilayBx980OrSpYu1c+dOa+vWrVbr1q2t2NhY9/Z//vOfVps2baydO3dalmVZhw8ftmbNmmXt2bPHOnr0qPXJJ59Yd9xxh9WnT5/KaqGEVatWWf7+/lZycrL13XffWU899ZRVt25dKzs727Isy3riiSes6dOnu+d//fXXVu3ata158+ZZBw8etGbMmGH5+vpa+/fvr6wWrkt5+0xISLA2btxoHTlyxEpPT7cee+wxKyAgwDpw4EBltXBN586ds/bu3Wvt3bvXkmS98cYb1t69e63jx49blmVZ06dPt5544gn3/B9++MEKCgqypk6dah08eNBatGiRVatWLWvDhg2V1cJ1KW+f8+fPt9auXWv97//+r7V//35r0qRJlo+Pj/XFF19UVgvX9Ic//MEKCQmx0tLSrKysLPctPz/fPccbHps30md1fGxOnz7d2rJli3X06FHr22+/taZPn245HA7r73//u2VZ3nEsy9ujyePoFQHj1KlTVmxsrHXrrbdawcHB1ujRo61z5865tx89etSSZH355ZeWZVlWZmam1adPH6t+/fqWv7+/1apVK2vq1KlWbm5uJXVQujfffNNq3ry55efnZ/Xo0cPasWOHe1vfvn2tUaNGecz/8MMPrbvuusvy8/OzOnToYH3++ecVXPGNKU+fkydPds8NDQ21Bg0aZH3zzTeVUPX1K3475q9vxX2NGjXK6tu3b4k1d999t+Xn52fdcccd1ooVKyq87vIqb5+vvvqqdeedd1oBAQFW/fr1rX79+lmbN2+unOKvU2n9SfI4Pt7w2LyRPqvjY3PMmDFWixYtLD8/P6thw4bW/fff737itSzvOJbl7dHkceTr2gEAgHFV9jUYAACg+iJgAAAA4wgYAADAOAIGAAAwjoABAACMI2AAAADjCBgAAMA4AgYAADCOgAEAAIwjYAAAAOMIGAAAwDgCBgAAMO7/A55FFlWwodhqAAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["tiny_image = np.array([\n","    [0,   0,   255, 255],\n","    [0,   128, 128, 255],\n","    [255, 128, 128, 0],\n","    [255, 255, 0,   0]\n","], dtype=np.uint8)\n","\n","print(\"Array:\")\n","print(tiny_image)\n","\n","print(\"\\nShape:\", tiny_image.shape)\n","\n","plt.imshow(tiny_image, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"A 4 × 4 Image\")\n","plt.grid()\n","plt.show()"]},{"cell_type":"code","source":[],"metadata":{"id":"0uGqRf3PmaKb"},"id":"0uGqRf3PmaKb","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":null,"id":"804a6a8e","metadata":{"id":"804a6a8e","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1788412663743,"user_tz":-330,"elapsed":45,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"dec52040-beda-4f3a-9e14-9e9c934a85ba"},"outputs":[{"output_type":"stream","name":"stdout","text":["Pixel at row 1, column 2: 128\n","Same pixel using image[y, x]: 128\n"]}],"source":["print(\"Pixel at row 1, column 2:\", tiny_image[1, 2])\n","\n","x = 2\n","y = 1\n","\n","print(\"Same pixel using image[y, x]:\", tiny_image[y, x])"]},{"cell_type":"code","execution_count":null,"id":"8e8c97da","metadata":{"id":"8e8c97da","colab":{"base_uri":"https://localhost:8080/","height":545},"executionInfo":{"status":"ok","timestamp":1788412666420,"user_tz":-330,"elapsed":256,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"cdc9dd69-3599-4417-db0b-121437a43cc9"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 600x600 with 1 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAgYAAAIQCAYAAAD6sKYmAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALNhJREFUeJzt3XtU1XW+//HXRmSDChtBuaXirVHzwpgVh+NkOpKXyqycSrOVmpmVWumpMVpTpjMrPLqmy5STnXVMm8k8jXPUJlt2Bu9dyByMY5cTRzx4SQFLYyMYCPL5/TG/3tMOFNGNCD0fa73XYn++n/3d78/6qLzc3+8Gj3POCQAAQFJIUzcAAAAuHgQDAABgCAYAAMAQDAAAgCEYAAAAQzAAAACGYAAAAAzBAAAAGIIBAAAwBAOgGfJ4PHrqqaca9TW6du2qG264oVFfA8DFh2AAXARWrFghj8cTUHFxcRo2bJg2bNjQ1O012NChQ9WvX7+mbgPAOQht6gYA/MOCBQvUrVs3OedUXFysFStW6LrrrtNbb73F/94BXBAEA+AiMnr0aF1xxRX2eOrUqYqPj9eqVasIBgAuCC4lABex6OhoRUREKDT0zBl+//79euCBB9SrVy9FREQoNjZWt956q/bt2xcw77tLFu+//77mzJmjjh07qm3btrr55pv11Vdf1dvPq6++qtDQUD366KMNXovH49HMmTO1evVqXXbZZYqIiFBaWpo++eQTSdLLL7+snj17Kjw8XEOHDq3V+7vvvqtbb71VXbp0kdfrVefOnTV79mx9++23tV7ru9cIDw9Xv379tHbtWk2ePFldu3YNmFdTU6PnnntOffv2VXh4uOLj4zV9+nR98803DV4f0FLwjgFwEfH7/fr666/lnNORI0f0wgsvqKysTHfeeecZn7dz50598MEHGj9+vDp16qR9+/bppZde0tChQ/X555+rTZs2AfNnzZql9u3ba968edq3b5+ee+45zZw5U2+88cZpX+Pf/u3fdN999+nxxx/Xb37zm3Na37vvvqu//OUvmjFjhiQpMzNTN9xwg375y1/q97//vR544AF98803WrRoke6++25t3rzZnrt69WqdOHFC999/v2JjY/XRRx/phRde0JdffqnVq1fbvLffflu33367+vfvr8zMTH3zzTeaOnWqLrnkklr9TJ8+XStWrNCUKVP04IMPqqCgQC+++KI+/vhjvf/++2rduvU5rRNo1hyAJrd8+XInqVZ5vV63YsWKWvMluXnz5tnjEydO1JqTnZ3tJLk//OEPtV4nPT3d1dTU2Pjs2bNdq1atXElJiY0lJye766+/3jnn3PPPP+88Ho/79a9/fVbrueaaa1zfvn1r9ez1el1BQYGNvfzyy06SS0hIcKWlpTaekZHhJAXMrWuNmZmZzuPxuP3799tY//79XadOndzx48dtbOvWrU6SS05OtrF3333XSXIrV64MOOc777xT5zjwY8GlBOAismTJEmVlZSkrK0uvvfaahg0bpnvuuUdr1qw54/MiIiLs66qqKh09elQ9e/ZUdHS0du3aVWv+vffeK4/HY4+vvvpqnTp1Svv37681d9GiRXrooYf0r//6r/rVr351HquThg8fHvB2fmpqqiRp3LhxioyMrDX+f//3fzb2/TWWl5fr66+/1j//8z/LOaePP/5YknT48GF98sknuuuuu9SuXTubf80116h///4BvaxevVo+n0/XXnutvv76a6tBgwapXbt22rJly3mtFWiuuJQAXESuuuqqgJsPJ0yYoIEDB2rmzJm64YYbFBYWVufzvv32W2VmZmr58uU6dOiQnHN2zO/315rfpUuXgMft27eXpFrX1rdt26a3335bc+fOPaf7Cup7XZ/PJ0nq3LlznePf7+fAgQN68skn9Ze//KVWn9+t8btg07Nnz1qv3bNnz4CQtGfPHvn9fsXFxdXZ65EjR85qTUBLQzAALmIhISEaNmyYnn/+ee3Zs0d9+/atc96sWbO0fPlyPfzww0pLS5PP55PH49H48eNVU1NTa36rVq3qPM/3A4Uk9e3bVyUlJfrjH/+o6dOnq1u3bue1ntO9bn39nDp1Stdee62OHTumuXPnqnfv3mrbtq0OHTqkyZMn17nG+tTU1CguLk4rV66s83jHjh0bfE6gJSAYABe56upqSVJZWdlp5/z5z3/WpEmT9Nvf/tbGKioqVFJScl6v3aFDB/35z3/Wz372Mw0fPlzvvfeekpKSzuuc5+KTTz7R//7v/+rVV1/VXXfdZeNZWVkB85KTkyVJ+fn5tc7xw7EePXpo48aNGjx4cMBlCuDHjnsMgItYVVWV/vrXvyosLEx9+vQ57bxWrVrV+t/+Cy+8oFOnTp13D506ddLGjRv17bff6tprr9XR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LnbfhYI9e/Zo48aNio2Nrfc5ubm5CgkJqfXWe3Py5Zdf6ujRo/ZntCXs5fctW7ZMgwYNUkpKSr1zW8J+1qup7348F//xH//hvF6vW7Fihfv888/dvffe66Kjo11RUVFTt3ZO7r//fufz+dzWrVtdYWGh1YkTJ5xzzuXn57sFCxa4v/3tb66goMC9+eabrnv37m7IkCFN3HnD/Mu//IvbunWrKygocO+//75LT093HTp0cEeOHHHOOXffffe5Ll26uM2bN7u//e1vLi0tzaWlpTVx1+fm1KlTrkuXLm7u3LkB4815L48fP+4+/vhj9/HHHztJ7plnnnEff/yx3ZG/cOFCFx0d7d588023e/duN3bsWNetWzf37bff2jlGjRrlBg4c6Hbs2OHee+89d+mll7oJEyY01ZJqOdMaT5486W688UbXqVMnl5ubG/B3tbKy0jnn3AcffOCeffZZl5ub6/bu3etee+0117FjR3fXXXc18coCnWmdx48fd4888ojLzs52BQUFbuPGje7yyy93l156qauoqLBzXOx76Vz9f2adc87v97s2bdq4l156qdbzm8t+BluzDAbOOffCCy+4Ll26uLCwMHfVVVe5Dz/8sKlbOmeS6qzly5c755w7cOCAGzJkiIuJiXFer9f17NnTPfroo87v9zdt4w10++23u8TERBcWFuYuueQSd/vtt7v8/Hw7/u2337oHHnjAtW/f3rVp08bdfPPNrrCwsAk7Pnf/9V//5SS5vLy8gPHmvJdbtmyp88/ppEmTnHN//8jiE0884eLj453X63XDhw+vtf6jR4+6CRMmuHbt2rmoqCg3ZcoUd/z48SZYTd3OtMaCgoLT/l3dsmWLc865nJwcl5qa6nw+nwsPD3d9+vRxTz/9dMA31IvBmdZ54sQJN2LECNexY0fXunVrl5yc7KZNm1brP14X+146V/+fWeece/nll11ERIQrKSmp9fzmsp/Bxq9dBgAAptndYwAAABoPwQAAABiCAQAAMAQDAABgCAYAAMAQDAAAgCEYAAAAQzAAAACGYAAAAAzBAAAAGIIBAAAwBAMAAGD+H5BoKLzRdrcqAAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["height = 200\n","width = 200\n","\n","canvas = np.zeros((height, width), dtype=np.uint8)\n","\n","plt.imshow(canvas, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"Blank Image\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"a0cb60ec","metadata":{"id":"a0cb60ec","colab":{"base_uri":"https://localhost:8080/","height":545},"executionInfo":{"status":"ok","timestamp":1788412678756,"user_tz":-330,"elapsed":260,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"3b8ca5e1-7f84-4490-c9ad-bce3fc361034"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 600x600 with 1 Axes>"],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAgYAAAIQCAYAAAD6sKYmAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOW1JREFUeJzt3Xl8VNXh///3JJBJCFkIJCRhCSEiiywqSooKgqRAVBRFkMUSZKt8AioUxbRfZNEKH6kWtVS0HwQfKi7siMV+WAVKWAxGqtaUpGERErY0EyCS9fz+8Mf5MCSQBCaE4Ov5eJzHgzn33HvPmTNh3nOXGYcxxggAAECSV013AAAAXDsIBgAAwCIYAAAAi2AAAAAsggEAALAIBgAAwCIYAAAAi2AAAAAsggEAALAIBoCHTZ8+XQ6Ho6a7UastWrRIDodD+/fvr7Dt559/rptvvlm+vr5yOBzKzc2t9v7hJ+fm6csvv6zprsCDCAa4Yuf+czhX6tSpoyZNmmjEiBE6fPhwte33yJEjmj59ulJTU6ttH9eSjIwM/frXv1bLli3l6+urwMBA3XnnnXrttdf0448/XvX+5Ofna/r06dq8efNV3/c5J0+e1KBBg+Tn56d58+bpvffek7+/f431pzK2bdum+Ph4NWnSRL6+vmrevLn69eunxYsX10h/XnrpJa1cubJG9o1rU52a7gCuHzNnzlR0dLTOnj2rHTt2aNGiRdq2bZu++eYb+fr6enx/R44c0YwZM9SiRQvdfPPNHt/+teSzzz7TwIED5XQ6NXz4cLVv316FhYXatm2bnnnmGX377bd6++23r2qf8vPzNWPGDElSjx49ruq+z9m9e7dOnTqlF154QXFxcTXSh6pYsmSJHn30Ud1888166qmn1KBBA2VmZmrLli36y1/+oqFDh171Pr300kt65JFH1L9//6u+b1ybCAbwmPj4eN12222SpNGjR6tRo0b67//+b61evVqDBg2q4d7VXpmZmRo8eLCioqK0ceNGRURE2GWJiYlKT0/XZ599dtH1S0tLVVhYWC3hrKYdO3ZMkhQcHFxh2/z8fNWrV6+ae3Rp06dPV7t27bRjxw75+Pi4LTs3litxPc81rh5OJaDadOvWTdJPh8DP9/333+uRRx5RSEiIfH19ddttt2n16tVl1s/NzdXEiRPVokULOZ1ONW3aVMOHD9eJEye0efNm3X777ZKkxx9/3J7GWLRokSRp69atGjhwoJo3by6n06lmzZpp4sSJZQ65jxgxQvXr19fhw4fVv39/1a9fX6GhoZo8ebJKSkrc2p48eVK/+tWvFBgYqODgYCUkJOjrr7922++lvP/+++rcubP8/PwUEhKiwYMH69ChQxWu9/LLL+v06dNasGCBWyg454YbbtBTTz1lHzscDo0fP14ffPCBbrrpJjmdTn3++eeSpMOHD2vkyJFq3LixnE6nbrrpJr3zzjtu2yssLNTzzz+vzp07KygoSP7+/urWrZs2bdpk2+zfv1+hoaGSpBkzZtjnf/r06bZNZef522+/1T333CM/Pz81bdpUL774okpLSyt8Xnr06KGEhARJ0u233y6Hw6ERI0bYZe3bt1dKSoq6d++uevXq6be//a2kn96AR40apcaNG8vX11edOnXSu+++67bt/fv3y+Fw6A9/+IPmzZunli1bql69eurdu7cOHTokY4xeeOEFNW3aVH5+fnrwwQeVk5NTYZ8zMjJ0++23lwkFkhQWFub2uLS0VK+99po6dOggX19fhYaGqm/fvm7n8y8113/4wx90xx13qGHDhvLz81Pnzp21dOlSt304HA6dOXNG7777rp3Dc8+h9NPrZdSoUYqMjJTT6VR0dLTGjRunwsJCt+0UFBRo0qRJCg0Nlb+/vx566CEdP368wucD1yaOGKDanLtwrEGDBrbu22+/1Z133qkmTZroueeek7+/vz755BP1799fy5Yt00MPPSRJOn36tLp166Z//vOfGjlypG699VadOHFCq1ev1g8//KC2bdtq5syZev755zV27FgbQu644w5JPx2yzc/P17hx49SwYUPt2rVLb7zxhn744QctWbLErZ8lJSXq06ePYmNj9Yc//EHr16/XK6+8opiYGI0bN07ST/9J9+vXT7t27dK4cePUpk0brVq1yr4xVeT3v/+9pk6dqkGDBmn06NE6fvy43njjDXXv3l1fffXVJT/xfvrpp2rZsqUdW2Vs3LhRn3zyicaPH69GjRqpRYsWOnr0qH7xi1/YN5PQ0FCtXbtWo0aNUl5enp5++mlJUl5env7nf/5HQ4YM0ZgxY3Tq1CktWLBAffr00a5du3TzzTcrNDRUb775psaNG6eHHnpIDz/8sCSpY8eOkio/z9nZ2erZs6eKi4ttu7ffflt+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CAaoFufeSHr27Kk//elPeu6559SyZUtJP31Cruie85iYmArfDC/2yecf//iH/vWvf+ndd9/V8OHDbf26deuqOIr/ExUVpU2bNpW55S09Pb3CdWNiYmSMUXR0tG688cYq7/v+++/X22+/reTkZHXt2rXK60s/HZ4PCAhQSUlJhc/90qVL1bJlSy1fvtztOb7wsPbFnv+qzHNUVJT27dtXpj4tLe2S612uqKgo7d27V6WlpW5HDb7//nu7vCacC9RZWVmSfnrN/O1vf1NOTk6ljhpcaNmyZfL19dXf/vY3t6N2CxcuLNO2vHkMDQ1VYGBglQMprg9cY4Bq06NHD3Xp0kVz587V2bNnFRYWph49euitt96y/wGe7/zbmwYMGKCvv/5aK1asKNPu3KeQc99wd+FX4J779HL+pxVjjF577bXLHkufPn1UVFSkv/zlL7autLRU8+bNq3Ddhx9+WN7e3poxY0aZT1DGGJ08efKS6z/77LPy9/fX6NGjdfTo0TLLMzIyKhybt7e3BgwYoGXLlpX7n/35z315z9/OnTuVnJzsts65gHTh81+Veb733nu1Y8cO7dq1y235Bx98cMnxXK57771X2dnZblfLFxcX64033lD9+vV19913V8t+z9mwYUO59X/9618l/d8plAEDBsgYY79A6nyV+RTu7e0th8Phdsvt/v37y/2GQ39//zJz6OXlpf79++vTTz8t9+uOORJwfeOIAarVM888o4EDB2rRokV64oknNG/ePN11113q0KGDxowZo5YtW+ro0aNKTk7WDz/8oK+//tqut3TpUg0cOFAjR45U586dlZOTo9WrV2v+/Pnq1KmTYmJiFBwcrPnz5ysgIED+/v6KjY1VmzZtFBMTo8mTJ+vw4cMKDAzUsmXLruh8Z//+/dWlSxf95je/UXp6utq0aaPVq1fbe9cvdd42JiZGL774opKSkrR//371799fAQEByszM1IoVKzR27FhNnjz5kusvXrxYjz76qNq2bev2zYfbt2+3t9tVZPbs2dq0aZNiY2M1ZswYtWvXTjk5OdqzZ4/Wr19vx3L//fdr+fLleuihh3TfffcpMzNT8+fPV7t27XT69Gm7PT8/P7Vr104ff/yxbrzxRoWEhKh9+/Zq3759pef52Wef1Xvvvae+ffvqqaeesrcrnvtk72ljx47VW2+9pREjRiglJUUtWrTQ0qVL9fe//11z586t8kWeVfXggw8qOjpa/fr1U0xMjM6cOaP169fr008/1e23365+/fpJknr27Klf/epXev3117Vv3z717dtXpaWl2rp1q3r27Knx48dfcj/33XefXn31VfXt21dDhw7VsWPHNG/ePN1www1lntfOnTtr/fr1evXVVxUZGano6GjFxsbqpZde0v/+7//q7rvv1tixY9W2bVtlZWVpyZIl2rZtW6W+VAq11NW+DQLXn4vdMmbMT7f0xcTEmJiYGFNcXGyMMSYjI8MMHz7chIeHm7p165omTZqY+++/3yxdutRt3ZMnT5rx48ebJk2aGB8fH9O0aVOTkJDgdrvdqlWrTLt27UydOnXcbhv87rvvTFxcnKlfv75p1KiRGTNmjPn666/L3FqYkJBg/P39y/T7wlsOjfnp9ryhQ4eagIAAExQUZEaMGGH+/ve/G0nmo48+uuS6xvx0y+Ndd91l/P39jb+/v2nTpo1JTEw0aWlpFT/Jxph//etfZsyYMaZFixbGx8fHBAQEmDvvvNO88cYbbrfJSTKJiYnlbuPo0aMmMTHRNGvWzNStW9eEh4ebXr16mbffftu2KS0tNS+99JKJiooyTqfT3HLLLWbNmjUmISHBREVFuW1v+/btpnPnzsbHx6fMrYuVnee9e/eau+++2/j6+pomTZqYF154wd7WdyW3K950000XfQ4ef/xx06hRI+Pj42M6dOhQ5pbXc7crzpkzx61+06ZNRpJZsmRJpfpxoQ8//NAMHjzYxMTEGD8/P+Pr62vatWtnfve739lbJc8pLi42c+bMMW3atDE+Pj4mNDTUxMfHm5SUFNvmUnO9YMEC06pVK+N0Ok2bNm3MwoULy31tfv/996Z79+7Gz8/PSHK7dfHAgQNm+PDh9tbjli1bmsTERHs768XGfe552rRp0yWfD1ybHMZwTAi4XCtXrtRDDz2kbdu26c4776zp7gDAFSMYAJX0448/ul0BXlJSot69e+vLL79Udna2R66CB4CaxjUGQCVNmDBBP/74o7p27aqCggItX75c27dv10svvUQoAHDd4IgBUEmLFy/WK6+8ovT0dJ09e1Y33HCDxo0bV+GFYABQmxAMAACAVaPfYzBv3jy1aNFCvr6+io2NdbuXGQAAXH01Fgw+/vhjTZo0SdOmTdOePXvUqVMn9enTx+372gEA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\n"},"metadata":{}}],"source":["def create_rectangle_image(height=200, width=200,\n","                           x_min=50, x_max=150,\n","                           y_min=60, y_max=140):\n","    image = np.zeros((height, width), dtype=np.uint8)\n","\n","    for y in range(height):\n","        for x in range(width):\n","            if x_min <= x <= x_max and y_min <= y <= y_max:\n","                image[y, x] = 255\n","\n","    return image\n","\n","rectangle = create_rectangle_image()\n","\n","plt.imshow(rectangle, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"Rectangle Created from Scratch\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"0dd50098","metadata":{"id":"0dd50098","colab":{"base_uri":"https://localhost:8080/","height":545},"executionInfo":{"status":"ok","timestamp":1788412685007,"user_tz":-330,"elapsed":252,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"6703a0c7-3bf9-4fbd-96ce-8ea25bc34af4"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 600x600 with 1 Axes>"],"image/png":"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ty6eO3dOjB07Vn6tOnfuLFasWHHf4779dcrMzLzn14NaP5UQ7F8iIiKiX3GMAREREUkMBkRERCQxGBAREZHEYEBERESSosFg48aNCAoKgq2tLSIiInDy5EklyyEiImrzFAsGX3/9NZYsWYJVq1YhOTkZvXr1wsiRI+ucf56IiIgal2K3K0ZEROCRRx6RM4SZTCb4+/tjwYIFeOONN+p8r8lkQk5ODnQ6XZ1PxyMiIqJfZ74sLS2Fr6/vfScEU2Tmw6qqKiQlJWH58uVynVqtRlRUVK1Tj1ZWVpo9uOXq1auNOgUqERFRa5SdnY327dvX2UaRSwkFBQUwGo3w8vIyW+/l5YW8vLwa7WNiYuDs7CwXhgIiIqKG0+l0923TIu5KWL58OfR6vVyys7OVLomIiKjFqc/ld0UuJbi7u0Oj0dR4gl5+fj68vb1rtNdqtdBqtU1VHhERUZulSI+BjY0NwsPDcejQIbnOZDLh0KFDiIyMVKIkIiIigoKPXV6yZAmmTZuGfv36oX///vjzn/+MsrIyzJgxQ6mSiIiI2jzFgsHzzz+P69evY+XKlcjLy0Pv3r2xf//+GgMSiYiIqOm0yMcul5SUwNnZWekyiIiIWhS9Xg8nJ6c627SIuxKIiIioaTAYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREksWDQUxMDB555BHodDp4enpizJgxSE1NNWszbNgwqFQqs2XOnDmWLoWIiIgayOLBIC4uDvPmzcOJEydw4MABVFdXY8SIESgrKzNrN2vWLOTm5spl/fr1li6FiIiIGsjK0jvcv3+/2eutW7fC09MTSUlJGDJkiFxvb28Pb29vS388ERER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tv7VV19F37594erqiuPHj2P58uXIzc3Fu+++W+t+KisrUVlZKV+XlJQ0ZtlERERtl3gIAMSuXbvuub1z585i/vz5993P5s2bhZWVlaioqKh1+6pVqwQALly4cOHChctDLHq9/r6/kxvtUsLRo0eRmpqKl1566b5tIyIiYDAY8Msvv9S6ffny5dDr9XLJzs62cLVEREQENOKlhM2bNyM8PBy9evW6b9uUlBSo1Wp4enrWul2r1UKr1Vq6RCIiIrpLg4PBzZs3kZ6eLl9nZmYiJSUFrq6uCAgIAPDrGIAdO3bgnXfeqfH+hIQEJCYm4tFHH4VOp0NCQgIWL16MKVOmoF27dg9xKERERPTQ7nux4S5Hjhyp9brFtGnTZJtPPvlE2NnZieLi4hrvT0pKEhEREcLZ2VnY2tqKsLAw8fbbb99zfEFt9Hq94tdpuHDhwoULl5a21GeMgUoIIdDClJSUwNnZWekyiIiIWhS9Xg8nJ6c62/BZCURERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCQxGBAREZHEYEBEREQSgwERERFJDAZEREQkMRgQERGRxGBAREREEoMBERERSQwGREREJDEYEBERkcRgQERERBKDAREREUkMBkRERCS1yGAghFC6BCIiohanPr8/W2QwKC0tVboEIiKiFqc+vz9VogX++W0ymZCamoquXbsiOzsbTk5OSpfUaEpKSuDv78/jbCXawnG2hWMEeJytTWs/TiEESktL4evrC7W67j4BqyaqyaLUajX8/PwAAE5OTq3yJN6Nx9m6tIXjbAvHCPA4W5vWfJzOzs71atciLyUQERFR42AwICIiIqnFBgOtVotVq1ZBq9UqXUqj4nG2Lm3hONvCMQI8ztamrRxnfbTIwYdERETUOFpsjwERERFZHoMBERERSQwGREREJDEY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\n"},"metadata":{}}],"source":["def create_circle_image(height=200, width=200,\n","                        cx=100, cy=100, radius=50):\n","    image = np.zeros((height, width), dtype=np.uint8)\n","\n","    for y in range(height):\n","        for x in range(width):\n","            distance_squared = (x - cx)**2 + (y - cy)**2\n","\n","            if distance_squared <= radius**2:\n","                image[y, x] = 255\n","\n","    return image\n","\n","circle = create_circle_image()\n","\n","plt.imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"Circle Created from Scratch\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"e3595ad8","metadata":{"id":"e3595ad8","colab":{"base_uri":"https://localhost:8080/","height":545},"executionInfo":{"status":"ok","timestamp":1788412690904,"user_tz":-330,"elapsed":534,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"87aa276f-15f8-4aae-c4e8-6984511aede5"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 600x600 with 1 Axes>"],"image/png":"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AGp8v1XYsmULrFYrFi9eXGlcxu01tG/fXv7MAL9ucYiMjKz19SDHxV0J1GQEBgbWeaDhO++8g7/85S84deoUSktL5elVbeq9/cu3IiRU7A8/d+4cAKB169aV7tu6desav2gvX76M69ev480338Sbb75ZZZ/c3Nxq71+x37mgoKDaPlW5fTlPnz4NIQTatGlTZf+KTfsAkJmZicWLF+PTTz+tNCbAYrHU+tynT5+GxWKBr69vlfMrlrfidb29Jh8fH5ugdqdufw0qni8yMrJS36ioKOzdu9dmmpOTk7xZvYLRaERQUFClf45Go7HSa1UVo9GIVatWYdWqVTh37hx27tyJP//5z3j99ddhNBrxwgsvyP9Qo6Oja19IVP2ezsvLQ0pKCj744INK76+6rMP09HSoVKo6Dey8/fMD/PoZqsvrQY6JwYCajN/+CqrJe++9h0mTJmHo0KFYsGABfH19oVarsWLFCnkA2G+p1eoqH0f8b3/t3bBarQB+PfJi4sSJVfbp1KlTtfePiooC8Otgt9vHRtTk9tfKarVCkiRs27atyuWt2BJSXl6OBx54AHl5eVi4cCGioqJgMBhw8eJFTJo0SV6emlitVvj6+mL9+vVVzr/9n6291PX9Up3q3hcN9X4JCQnBlClTMGzYMISHh2P9+vV44YUX6l1nVcs5atQo7N+/HwsWLECXLl3g6uoKq9WKAQMG1Gkd1oc9Pz/UNDEYkMP597//jfDwcGzatMnml92dHuteMWjszJkzleZVNe23fHx84ObmhvLyciQlJdX7uZOTk6FWq/Hee+/d1cl7IiIiIIRAWFgY2rZtW22/n376Cf/973/xzjvvYMKECfL07du3V+pb3eC5iIgI7NixAz179qzxn3PF63r69GmEh4fL0y9fvmyXX5sVz5eWloY+ffrYzEtLS5PnNzZPT09ERETg+PHjACC/FhW36+vatWvYuXMnUlJSsHjxYnn66dOnK/WtaR1arVacOHGiXoGUWgaOMSCHU/EL5re/WA4ePIgDBw7c0eMFBAQgOjoa//rXv3Djxg15+tdff42ffvqp1lpGjBiBjz/+uMov+suXL9d4/1atWmH69On46quv8Nprr1Wab7Va8Ze//AUXLlyo8XGGDx8OtVqNlJSUSr/khBDyYWxVvXZCCLzyyiuVHrPiePnbz5o3atQolJeX4/nnn690n7KyMrl/UlIStFotXnvtNZvn++tf/1rjstypbt26wdfXF2+88Ya8Px/49ciPkydPYtCgQXZ53go//vgjrly5Umn6uXPncOLECXkXh4+PDxISErB27VpkZmba9K3Lr/Cq1iFQ9eta3TocOnQoVCoVli1bVmkLA7cEELcYkMN58MEHsWnTJgwbNgyDBg1CRkYG3njjDbRv397mH3t9LF++HA899BB69uyJyZMn49q1a3j99dcRHR1d62OuXLkSu3fvRlxcHKZPn4727dsjLy8Phw8fxo4dO5CXl1fj/f/yl78gPT0d8+bNw6ZNm/Dggw/C09MTmZmZ2LhxI06dOoUxY8bU+BgRERF44YUXsGjRIpw9exZDhw6Fm5sbMjIysHnzZsyYMQNPPfUUoqKiEBERgaeeegoXL16Eu7s7Pv744yp/wcfGxgIA5s2bh/79+0OtVmPMmDHo3bs3Hn30UaxYsQJHjx5Fv379oNVqcfr0aWzcuBGvvPIKRo4cCR8fHzz11FNYsWIFHnzwQQwcOBBHjhzBtm3b5EPnGpJWq8Wf/vQnTJ48Gb1798bYsWPlwxVDQ0Mxf/78Bn/O39q+fTuWLFmCIUOG4J577oGrqyt++eUXrF27FsXFxTZnkHz11Vdx3333oWvXrpgxYwbCwsJw9uxZfP755zh69GiNz+Pu7i4fYllaWorAwEB89dVXyMjIqNS3Yh0+88wzGDNmDLRaLQYPHozWrVvjmWeewfPPP49evXph+PDh0Ov1+P777xEQEIAVK1Y05EtDjqbRj4OgFq+6wxU7dOhQZf/bD1e0Wq1i+fLlIiQkROj1ehETEyO2bt0qJk6caHNoYcXhiqtXr670mKji8LMPPvhAREVFCb1eL6Kjo8Wnn34qRowYIaKiomq976VLl8Ts2bNFq1athFarFWazWfTt21e8+eabtb8g4tdDMP/5z3+KXr16CaPRKLRarQgJCRGTJ0+2OZSx4hC2y5cvV/k4H3/8sbjvvvuEwWAQBoNBREVFidmzZ4u0tDS5z4kTJ0RSUpJwdXUV3t7eYvr06eLHH38UAMS6detsapo7d67w8fERkiRVWmdvvvmmiI2NFc7OzsLNzU107NhR/OEPfxBZWVlyn/LycpGSkiL8/f2Fs7OzSExMFMePHxchISF3fbjixo0bq7zPhx9+KGJiYoRerxcmk0mMGzdOXLhwwabPxIkThcFgqHTf6t6HVdVxu19++UUsXrxY3HPPPcLX11doNBrh4+MjBg0aJHbt2lWp//Hjx8WwYcOEh4eHcHJyEpGRkeK5556T59e0ri9cuCDf12g0iocfflhkZWVV+d58/vnnRWBgoFCpVJUOXVy7dq38Wnl6eorevXuL7du317rct38mqXmRhOB2I6LqdOnSBT4+PlXugyciao44xoAIv14Ap6yszGZaamoqfvzxxyZ1yWciInvjFgMi/HpdhaSkJIwfPx4BAQE4deoU3njjDRiNRhw/fhxeXl5Kl0hE1Cg4+JAIvx5SFhsbi3/+85+4fPkyDAYDBg0ahJUrVzIUEFGLwi0GREREJFN0jMGaNWsQGhoKJycnxMXF4bvvvlOyHCIiohZPsWDw4Ycf4oknnsCSJUtw+PBhdO7cGf3796/xvPJERERkX4rtSoiLi0P37t3x+uuvA/j1DG+tWrXC3Llz8cc//rHG+1qtVmRlZcHNza3Ga54TERHRr2e0LCgoQEBAQKUrat5OkcGHJSUlOHToEBYtWiRPU6lUSEpKqvK0tsXFxTanOL148WKdrgpGRERE/+f8+fMICgqqsY8iuxKuXLmC8vJy+Pn52Uz38/NDTk5Opf4rVqyA0WiUG0MBERFR/bm5udXaxyFOcLRo0SJYLBa5nT9/XumSiIiIHE5ddr8rsivB29sbarUaly5dspl+6dIlmM3mSv31ej30en1jlUdERNRiKbLFQKfTITY2Fjt37pSnWa1W7Ny5E/Hx8UqURERERFDwzIdPPPEEJk6ciG7duqFHjx7461//ips3b2Ly5MlKlURERNTiKRYMRo8ejcuXL2Px4sXIyclBly5d8OWXX1YakEhERESNxyFPiZyfnw+j0ah0GURERA7FYrHA3d29xj4OcVQCERERNQ4GAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRo8GKxYsQLdu3eHm5sbfH19MXToUKSlpdn0SUxMhCRJNm3mzJkNXQoRERHVU4MHg6+//hqzZ8/Gt99+i+3bt6O0tBT9+vXDzZs3bfpNnz4d2dnZclu1alVDl0JERET1pGnoB/zyyy9tbr/99tvw9fXFoUOHkJCQIE93cXGB2Wxu6KcnIiKiu2D3MQYWiwUAYDKZbKavX78e3t7eiI6OxqJFi1BYWFjtYxQXFyM/P9+mERERUcNr8C0Gv2W1WvH444+jZ8+eiI6Olqc/8sgjCAkJQUBAAI4dO4aFCxciLS0NmzZtqvJxVqxYgZSUFHuWSkRERAAkIYSw14PPmjUL27Ztw969exEUFFRtv127dqFv3744c+YMIiIiKs0vLi5GcXGxfDs/Px+tWrWyS81ERETNlcVigbu7e4197LbFYM6cOdi6dSv27NlTYygAgLi4OACoNhjo9Xro9Xq71ElERET/p8GDgRACc+fOxebNm5GamoqwsLBa73P06FEAgL+/f0OXQ0RERPXQ4MFg9uzZ2LBhAz755BO4ubkhJycHAGA0GuHs7Iz09HRs2LABAwcOhJeXF44dO4b58+cjISEBnTp1auhyiIiIqD5EAwNQZVu3bp0QQojMzEyRkJAgTCaT0Ov1onXr1mLBggXCYrHU+TksFku1z8PGxsbGxsZWdavL/1q7Dj60l/z8fBiNRqXLICIicih1GXzIayUQERGRjMGAiIiIZHY9wRERtSwqlQouLi5QqVS4desWSktLlS6JiOqJwYCIGkxQUBAeffRReHt741//+hf27dundElEVE/clUBEDcbT0xODBg3C6NGjER4ernQ5RHQHGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIjumpOTE7y9vWEymaDRaCBJEtzd3eHj4wNXV1elyyOieuDhikR01+69915MnToVZrMZQUFBcHZ2xuTJk9G3b1988cUXeOedd3hOAyIHwWBARHctODgYgwcPhpubmzwtNjYWXbt2xYULF6BWqxkMiBwEdyUQERGRjMGAiIiIZNyVQER3RKVSITIyEq1atUJ0dDTUanWV/YKDg5GUlITc3FwcP34chYWFjVwpEdUHgwER3RGdTodx48ZhwoQJMBgMcHJyqrJf3759ERsbix9++AFPPPEEMjIyGrlSIqoPBgMiuiOSJMHT0xNBQUGQJKnaPq6urnB1dUVmZiY0Gn7lEDV1HGNAREREMgYDIqo3tVoNjUYDlaruXyGSJEGj0cgnQCKiponb9YioXry9vTFy5EiEh4eje/fudb5fq1atMG/ePJw/fx5btmzBiRMn7FglEd0pBgMiqhcvLy9MmDABcXFxkCSpzr/+AwMDMWPGDFy+fBknT55kMCBqohgMiKjeJEmq126Eivvcyf2IqHHxE0pEREQyBgMiqhNXV1eEh4cjNDS02nMW1IVarUZAQADatGkDLy+vBqyQiBqCJIQQShdRX/n5+TAajUqXQdSiJCYmYsGCBfDz80Pbtm1tLphUH6WlpThz5gyuXLmC9evX45///CfKy8sbuFoiqorFYoG7u3uNfTjGgIjqxNvbG3FxcXf9K1+r1aJdu3awWq3Yt28fD10kamK4K4GIiIhkDAZEREQk464EIqqWSqVCly5d0KFDB/To0QN6vb5BHz86Ohrjx4/HhQsXsH//fl55kagJYDAgomqp1Wo89NBDmDdvHnQ63V0djXA7SZLwwAMPoFevXti9ezdOnjzJYEDUBDAYEFGN9Ho93N3dG/zERJIkQa/XQ6/Xw2AwcBAiURPBMQZEREQkYzAgokokSYKzszPc3Nyg0+ns/nxqtRqurq4wGAxQq9V2fz4iqh53JRBRJSaTCVOmTEGHDh3QtWtXu2/mj4yMREpKCi5cuIB169bh+PHjdn0+IqoegwERVWIwGNC/f3/07du3UZ4vMDAQo0aNwoULF/DVV18xGBApiLsSiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIZFqtFp6envD09IRWq23051epVHB3d4fJZIKzs3OjPz8RAZIQQihdRH3l5+fDaDQqXQZRs9OlSxfMmjULgYGB6N69O3x9fRv1+QsLC3Ho0CFcvHgRGzduxObNm+GAX1FETZbFYoG7u3uNfXi4IhHJzGYzBg0ahMDAQEWe38XFBb169UJZWRl++uknRWogaum4K4GIiIhkDAZEREQk464EIkJoaCjCwsLQpUsX6PV6pcuBJEmIiIhAnz59kJubi1OnTqG0tFTpsohaBA4+JGrhVCoV5syZg9///vcwGAzw8vKCRqPsbwYhBK5fv478/Hz85z//waJFi5CXl6doTUTNQV0GHzb4roSlS5dCkiSbFhUVJc8vKirC7Nmz4eXlBVdXV4wYMQKXLl1q6DKIqB6MRiOCg4Ph5+eneCgAft1i4OnpiZCQEPj4+PCKi0SNyC5jDDp06IDs7Gy57d27V543f/58fPbZZ9i4cSO+/vprZGVlYfjw4fYog4iIiOrJLj8NNBoNzGZzpekWiwVvvfUWNmzYgD59+gAA1q1bh3bt2uHbb7/FPffcY49yiKgaKpUKarUaKlXTHYcsSZJco9VqVbocombPLt8Gp0+fRkBAAMLDwzFu3DhkZmYCAA4dOoTS0lIkJSXJfaOiohAcHIwDBw7YoxQiqobBYMDo0aPx3HPPITExscmGg6ioKDz55JOYO3cugoODlS6HqNlr8C0GcXFxePvttxEZGYns7GykpKSgV69eOH78OHJycqDT6eDh4WFzHz8/P+Tk5FT7mMXFxSguLpZv5+fnN3TZRC2Oq6srRo8ejQcffFAeD9QURUZGok2bNkhPT8ehQ4fkHxpEZB8NHgySk5Plvzt16oS4uDiEhITgo48+uuNzn69YsQIpKSkNVSIR/U/FZvqm7Le7EojI/uz+SfPw8EDbtm1x5swZmM1mlJSU4Pr16zZ9Ll26VOWYhAqLFi2CxWKR2/nz5+1cNRERUctk92Bw48YNpKenw9/fH7GxsdBqtdi5c6c8Py0tDZmZmYiPj6/2MfR6Pdzd3W0aEd0ZJycnBAUFITg4GC4uLkqXU2darRb+/v4IDQ3ldwCRPYkG9uSTT4rU1FSRkZEh9u3bJ5KSkoS3t7fIzc0VQggxc+ZMERwcLHbt2iV++OEHER8fL+Lj4+v1HBaLRQBgY2O7g9a5c2exYcMGsW/fPnH58uWG/gqwm8LCQnH48GHx1VdfieHDhyv+OrKxOWKzWCy1ftYafIzBhQsXMHbsWFy9ehU+Pj6477778O2338LHxwcA8PLLL0OlUmHEiBEoLi5G//798be//a2hyyCianh4eKBHjx6IiIhQupR6cXZ2RkxMDIqKirB161alyyFqtho8GHzwwQc1zndycsKaNWuwZs2ahn5qIiIiuksc5ktEREQy5U+KTkSNom3btujcuTOio6Ph6uqqdDl3TK1WIyYmBqNHj8bZs2dx+PBhXnmRqAExGBC1EH379sXixYvh4uICg8GgdDl3TKPRYNSoURgyZAg++ugjnDx5ksGAqAExGBC1EE5OTvD09IRer1e6lLsiSRJcXFzg4uICV1fXJnvGRiJHxTEGREREJOMWA6JmTq/XQ6PRQKfTKV1Kg1Or1TAYDCgpKUFxcTGvvkjUABgMiJoxZ2dnjBs3Dj169EB0dDQ0mub1ke/WrRuWL1+OjIwMrFu3jhdYImoAzetbgohs6PV63H///Rg7diwANLv98W3atEHr1q1x/PhxfPbZZwwGRA2AwYComWvKl1RuCM152YiUwMGHREREJGMwICIiIhmDAREREckYDIiaIbVaDTc3NxiNRmi1WqXLsTu1Wg1XV1cYjcZmeVgmUWPi4EOiZigkJASPPvoowsLC0K1bN6XLsbuAgAD88Y9/RFZWFt599118/fXXSpdE5LAYDIiaIZPJhAcffBDt27dXupRG4eHhgeTkZBQUFGD//v0MBkR3gbsSiIiISMZgQERERDLuSiBqRsxmMyIiItC+fXu4uLgoXU6jU6vVaNu2LXr16oWcnBykp6fz+glE9SQJIYTSRdRXfn4+jEaj0mUQNTmjR4/GM888A09PT/j6+ra4EfpWqxVXrlxBfn4+PvjgA7z44osoKipSuiyiJsNiscDd3b3GPtxiQNSMuLu7Izw8HAaDQelSFKFSqeDr6wsfHx/4+PhApeLeUqL64qeGiIiIZAwGRM2AJElQqVS8oNBv8DUhujPclUDk4LRaLfr164eYmBh069atRZzpsC5iYmKwYMECnD17Fp9++imuXr2qdElEDoHBgMjB6XQ6DBkyBFOmTJF/Jbd0kiQhNjYWMTEx+O6773DgwAEGA6I6YjAgagZUKhXUajU3m/+GSqWSXxciqjv+tCAiIiIZtxgQOSitVguTyQRPT0+4uroqXU6Tpdfr4e/vj4KCAly7dg2FhYVKl0TUpPEER0QOKiQkBH/4wx/Qrl07tG3bFoGBgUqX1CRZLBacOHECOTk5ePXVV5Gamqp0SUSK4QmOiJoxV1dX9OjRo0VcVvluGI1GxMfH4+rVq/jwww+VLoeoyeMYAyIiIpIxGBAREZGMuxKIHExQUBBiYmIQEREBT09PpctxGDqdDnFxcSgtLcXp06dx/PhxOOAQKyK74+BDIgczfPhw/OlPf4KXlxfc3Nyg0TDf14XVasXNmzdRVFSEv//973jhhRdQWlqqdFlEjYqDD4maIZ1OBy8vL24tqCeVSgU3Nze4urrCxcVF6XKImiyOMSAiIiIZtxgQOQiNRgONRgOdTsdTH98ljUYDZ2dnSJKE0tJSjjUg+g0GAyIHoNFoMGTIENx///1o27YtnJ2dlS7JofXu3RsrV67EqVOn8N577yEvL0/pkoiaDAYDIgegUqnQq1cvzJ49W+lSHJ4kSejSpQu6dOmC1NRUfPLJJwwGRL/BYEDkYLgb4e7xNSSqHgcfEhERkYzBgIiIiGQMBkRERCRjMCBqwiRJgouLC9zd3aHT6ZQup9lRq9VwdXWFq6srzyBJ9D/8JBA1Yd7e3pg2bRratWuH2NhYpctpdtq0aYOlS5fi4sWLWLduHX788UelSyJSHIMBURPm5uaGAQMGICEhQelSmiV/f3+MHDkS2dnZ2L59O4MBEbgrgYiIiH6DwYCIiIhkDR4MQkNDIUlSpVZxxrbExMRK82bOnNnQZRA5NE9PT8TGxiImJgZubm5Kl9Ps6XQ6REVF4Z577kFQUJDS5RApShINfPWQy5cvo7y8XL59/PhxPPDAA9i9ezcSExORmJiItm3bYtmyZXKfilHXdZWfnw+j0diQZRM1KX369MGyZcvg7+8Ps9nMywTbWVlZGXJyclBQUIC//e1v+Nvf/gar1ap0WUQNzmKx1Pr/tsEHH/r4+NjcXrlyJSIiItC7d295mouLC8xmc0M/NVGz4erqioiICH5OGolGo0FQUBDKy8vh5eWldDlEirLrGIOSkhK89957mDJlis25ydevXw9vb29ER0dj0aJFKCwstGcZREREVEd2PVxxy5YtuH79OiZNmiRPe+SRRxASEoKAgAAcO3YMCxcuRFpaGjZt2lTt4xQXF6O4uFi+nZ+fb8+yiRRVMfaGlCFJElQqFXclUIvV4GMMfqt///7Q6XT47LPPqu2za9cu9O3bF2fOnEFERESVfZYuXYqUlBR7lUnUJEiShJ49eyI+Ph4dOnTA8OHDOfCwkVmtVuzcuRM7d+7EmTNn8OWXX+LmzZtKl0XUYOoyxgDCTs6ePStUKpXYsmVLjf1u3LghAIgvv/yy2j5FRUXCYrHI7fz58wIAG1uzamq1WixdulTcunVLlJaWCqvV2tAfS6qF1WoVZWVloqSkRHzyySfCbDYr/r5gY2vIZrFYav0c2G1Xwrp16+Dr64tBgwbV2O/o0aMAfj0DWXX0ej30en1DlkfUJKlUKmi1WqjVaqVLaZEkSYJarZYbd+lQS2SXYGC1WrFu3TpMnDjR5sIk6enp2LBhAwYOHAgvLy8cO3YM8+fPR0JCAjp16mSPUoiIiKge7BIMduzYgczMTEyZMsVmuk6nw44dO/DXv/4VN2/eRKtWrTBixAg8++yz9iiDyCGoVCp4enrCYDDAzc2Nv1KbCCcnJ5jNZlitVly7dg0lJSVKl0TUKOw6+NBeeIIjak68vLwwb9489OjRA61bt0ZERATDQROQm5uL48ePIzMzEy+//DKOHTumdElEd60ugw95rQQihen1enTv3h0DBgxA69atGQqaCF9fX/Tp0weJiYkwmUxKl0PUaBgMiIiISMZgQERERDK7nvmQiKrn7e2NmJgYBAUFwdfXV+lyqBrOzs7o2bMnXF1dcfLkSaSnpytdEpFdMRgQKaRdu3ZYuXIlgoODeYbDJszb2xtPPvkkbt68iRdffJHBgJo9BgMiheh0Onh7e8Pb21vpUqgGarVaPpzUYDAoXQ6R3XGMAREREckYDIgamVqthk6ng1arVboUqie1Wg29Xm9zRlei5obvbqJG1rt3bwwcOBChoaHw8PBQuhyqI7VajUGDBsHf3x9HjhzBv//9bxQWFipdFlGDYzAgakSSJCE2NhZz587lFgMHo1Kp0KtXL/Tq1QsfffQRtm7dymBAzRKDAVEjqzizIc9w6Fi4vqil4BgDIiIikjEYEBERkYzBgIiIiGQMBkSNRK/Xw2AwQKfTcX+1g9NoNHBxcYGzszNUKn6NUvPCwYdEjcDV1RXjx49HbGwsOnXqBLVarXRJdBdiYmKwfPlynD17FmvXrsXZs2eVLomowTAYEDUCvV6Pvn37YsSIEQA4wt3RhYeHIywsDKdOncLWrVsZDKhZYTAgakQMBM0H1yU1V9w5RkRERDJuMSCyI4PBgLCwMJjNZphMJqXLoQbm5OSEdu3aoaysDOfPn8fly5eVLonorklCCKF0EfWVn58Po9GodBlEtercuTNefPFFtG7dGv7+/nB3d1e6JGpAxcXFyMrKQl5eHlavXo0PP/xQ6ZKIamSxWGr9HuIWAyI7cnZ2RuvWrREZGal0KWQHer0eYWFh8PPzg6enp9LlEDUIjjEgIiIiGYMBkR1x5DoRORruSiCyg86dOyMhIQERERHcxNwCaDQa9O3bF87Ozjh+/DhSU1NRWlqqdFlEd4TBgMgO4uPjsWzZMhgMBmg0/Jg1d1qtFkOHDsXgwYPxzjvvYP/+/QwG5LD4jUVkB2q1GjqdDlqtVulSqBFIkgSNRgONRgO1Ws1dSOTQOMaAiIiIZNxiQNRAJEmCm5sbnJ2d4ebmxl+NLZSzszN8fX2h0+mQn5+PsrIypUsiqhcGA6IG4uTkhMmTJ6NPnz4ICwuDTqdTuiRSwH333YfXXnsNaWlpeOWVV3Du3DmlSyKqFwYDogai0WjQpUsXDBkyROlSSEHBwcEIDg6Gn58f1q1bp3Q5RPXGMQZEREQkYzAgIiIiGXclEN0lNzc3dOrUCX5+fggKClK6HGoijEYj7rvvPvj5+eHEiRPIyspSuiSiOuHVFYnuUrt27fDKK68gOjoaRqMRLi4uSpdETUBJSQmuX7+OvLw8PPPMM9i0aZPSJRHx6opEjUGr1cLHxwf+/v5Kl0JNiE6nkw9bdHZ2VrocojrjGAMiIiKSMRgQ3SGVSgWtVgutVsuTGVG1Kk6XrNVqoVarlS6HqFbclUB0h2JiYjB06FAEBQVxNwJVy8nJCQ8//DA6dOiAvXv34osvvuDZEKlJYzAgukMdOnTA3Llzax3IQy2bTqfDwIEDkZycDK1Wi//85z8MBtSkMRgQ3SFJkuRGVJ3fvj/4XiFHwDEGREREJGMwICIiIhmDAREREck4xoConrRarXz4GVF9aDQa+WRHJSUlcMATz1ILwGBAVA8ajQbDhg1D7969ERkZCScnJ6VLIgfSq1cvrFy5Ev/973/x7rvv4vLly0qXRFQJgwFRPWg0GvTq1QuzZs0CwFHmVHeSJKFjx47o2LEj9u3bh08//ZTBgJqkeo8x2LNnDwYPHoyAgABIkoQtW7bYzBdCYPHixfD394ezszOSkpJw+vRpmz55eXkYN24c3N3d4eHhgalTp+LGjRt3tSBEjY2hgOqLh7eSI6h3MLh58yY6d+6MNWvWVDl/1apVePXVV/HGG2/g4MGDMBgM6N+/P4qKiuQ+48aNw88//4zt27dj69at2LNnD2bMmHHnS0FEREQNQ9wFAGLz5s3ybavVKsxms1i9erU87fr160Kv14v3339fCCHEiRMnBADx/fffy322bdsmJEkSFy9erNPzWiwWAYCNrdGaXq8Xbdq0EXFxceKDDz4QVqv1bj461MIdOXJEDBkyRERHRwuj0aj4+5ut5TSLxVLr+7NBD1fMyMhATk4OkpKS5GlGoxFxcXE4cOAAAODAgQPw8PBAt27d5D5JSUlQqVQ4ePBglY9bXFyM/Px8m0bUmMxmM5599lm8+eab6Nu3r9LlkINr06YN/vSnP+HVV19F165dlS6HyEaDBoOcnBwAgJ+fn810Pz8/eV5OTg58fX1t5ms0GphMJrnP7VasWAGj0Si3Vq1aNWTZRLXS6/Vo3bo1OnXqBG9vb+4nprtiMBgQFRWFDh06wGg0Kl0OkQ2HOMHRokWLYLFY5Hb+/HmlSyIiImqWGjQYmM1mAMClS5dspl+6dEmeZzabkZubazO/rKwMeXl5cp/b6fV6uLu72zQiIiJqeA0aDMLCwmA2m7Fz5055Wn5+Pg4ePIj4+HgAQHx8PK5fv45Dhw7JfXbt2gWr1Yq4uLiGLIforkVERGDatGkYP358tcGV6E45Oztj4MCBmD17NuLj47mLipqG+o6mLSgoEEeOHBFHjhwRAMRLL70kjhw5Is6dOyeEEGLlypXCw8NDfPLJJ+LYsWPioYceEmFhYeLWrVvyYwwYMEDExMSIgwcPir1794o2bdqIsWPH1rkGHpXA1lht6NCh4vz586KoqEiUl5fX9+NCVCOr1SqKi4vFzZs3RUpKitBoNIq/59mad6vLUQn1Dga7d++u8skmTpwov9Gfe+454efnJ/R6vejbt69IS0uzeYyrV6+KsWPHCldXV+Hu7i4mT54sCgoK6lwDgwFbY7URI0aIy5cv1/djQlQv5eXl4sUXX2QwYLN7q0swqPcpkRMTE2u88IckSVi2bBmWLVtWbR+TyYQNGzbU96mJiIjIznitBKIquLi4wMXFBW5ubtzvS43CxcUF3t7eKCwsxI0bN2C1WpUuiVooBgOi26jVagwbNgzDhg1DYGAgXF1dlS6JmjlJkpCcnIyQkBAcOXIEf/vb33D16lWly6IWisGA6DYqlQrR0dEYNmwYVCqHONUHOThJkhAZGYnIyEi4uLhg7dq1SpdELRi/9YiIiEjGYEBEREQy7kog+h8nJye0b98evr6+CA0NVbocaqG8vLyQkJCA8+fP48SJE8jLy1O6JGphJFHTsYdNVH5+Pi88Qg0uICAAf/7zn3HffffBaDTyiARSRFFREfLy8nD+/Hk89dRT2Lt3r9IlUTNisVhqvawAtxgQ/Y9arYaPjw+v3kmKcnJyQkBAAMrLy+Hk5KR0OdQCcYwBERERyRgMqMWTJAlqtRoajYa7DqhJUavVUKvVfF9So+KuBGrxWrdujWHDhiEoKAjh4eFKl0MEADAajZgwYQJ69uyJHTt2YM+ePUqXRC0EgwG1eOHh4ZgzZw4CAwP5y4yaDDc3N4wZMwalpaUoLCzEN998U+N1aogaCoMBEX492yHPckhNiSRJkCQJKpWKgZUaFb8JiYiISMZgQERERDIGAyIiIpIxGFCLpVarodfrodVqlS6FqEYajQZOTk58r1Kj4OBDapEkSULfvn0xYMAAhIWF8RTb1GSp1WoMGDAA3t7e+PHHH/Hhhx/i5s2bSpdFzRiDAbVIkiShR48emDNnDjQafgyo6VKpVIiPj0d8fDw2b96MTz/9lMGA7IrfiNSiVRwSRtSU8T1KjYljDIiIiEjGLQbUoqjVagQGBsJoNMLPz0/pcojqxd3dHe3atUNOTg4uXryIwsJCpUuiZkgSDniOzfz8fA4Wozvi6emJZ599FomJiTCbzfD39+dmWnIY165dQ2ZmJn755RekpKTgxx9/VLokcjAWiwXu7u419uEWA2pRtFotIiIi0LVrV6VLIao3T09PeHp6wtnZGa6urkqXQ80UxxgQERGRjMGAiIiIZNyVQC2C2WxGYmIiAgMDERISonQ5RHfFaDTioYceQlRUFL799lv8/PPPSpdEzQiDAbUI4eHhePrppxEREQGdTqd0OUR3xcfHB3PnzkVhYSGeeeYZBgNqUAwG1CKoVCo4OzvDxcVF6VKI7ppKpYKTkxMA8Myd1OA4xoCIiIhkjJrUrOn1eri4uMDd3R1qtVrpcoganMFggMlkQnFxMQoLC+GAp6ahJobBgJq1Pn36YOzYsQgICIC3t7fS5RA1KK1Wi4cffhhdunTBN998g3Xr1uHWrVtKl0UOjsGAmrW2bdti1KhR0Ov1SpdC1ODUajViY2MRGxuLkpISrF+/nsGA7hrHGBAREZGMwYCIiIhk3JVAzY5arUbbtm3h5+eHNm3a8CJJ1CKYzWbcd999yM3NxcmTJ3Hjxg2lSyIHxWBAzY6LiwtmzJiBoUOHwt3dHVqtVumSiOzu3nvvRWRkJE6ePIknn3wSJ06cULokclAMBtTsqFQq+Pj4IDQ0VOlSiBqNq6srXF1dYbFYONiW7grHGBAREZGMwYCaFZVKBbVazXEF1GJJkgSVSgWVSsXPAd0R7kqgZsPf3x9Dhw5FcHAwoqOjlS6HSBG+vr6YPn06zp07h23btuHo0aNKl0QOhsGAmg1/f3/MnDkTHTp0gErFjWHUMvn6+mLatGkoKChAVlYWgwHVG4MBNRsVm1B5TQRqySRJglqt5i41umP8WUVEREQyBgMiIiKSMRgQERGRjMGAHJ5KpYJWq4VWq+U+VaLf0Gg00Gq1HHdD9VLvYLBnzx4MHjwYAQEBkCQJW7ZskeeVlpZi4cKF6NixIwwGAwICAjBhwgRkZWXZPEZoaCgkSbJpK1euvOuFoZapW7duWLp0KWbPng0/Pz+lyyFqEvR6PUaMGIHly5fjoYce4qnBqc7qHQxu3ryJzp07Y82aNZXmFRYW4vDhw3juuedw+PBhbNq0CWlpaRgyZEilvsuWLUN2drbc5s6de2dLQC1ex44dMXfuXIwbNw5eXl5Kl0PUJGi1WvTv3x9PPPEEkpKSoNHwIDSqm3q/U5KTk5GcnFzlPKPRiO3bt9tMe/3119GjRw9kZmYiODhYnu7m5gaz2VzfpyeqUsWWJyL6FT8PdKfsPsbAYrFAkiR4eHjYTF+5ciW8vLwQExOD1atXo6ysrNrHKC4uRn5+vk0jIiKihmfXbUtFRUVYuHAhxo4dC3d3d3n6vHnz0LVrV5hMJuzfvx+LFi1CdnY2XnrppSofZ8WKFUhJSbFnqeRgJEmCn58fPDw84O/vzzMdEtXA09MTkZGRuHbtGrKzs1FSUqJ0SdSESUIIccd3liRs3rwZQ4cOrTSvtLQUI0aMwIULF5CammoTDG63du1aPProo7hx40aVlwstLi5GcXGxfDs/Px+tWrW607KpGXBycsLjjz+OoUOHwtfXF8HBwRx5TVQFIQRyc3ORmZmJn376CcuWLcO5c+eULosUYrFYavx/DNhpi0FpaSlGjRqFc+fOYdeuXbUWERcXh7KyMpw9exaRkZGV5uv1el5fnGyoVCqEhoaiR48e3JdKVIOKrWt+fn4oLy+Hk5OT0iVRE9fgwaAiFJw+fRq7d++u0yjxo0ePQqVSwdfXt6HLISIionqodzC4ceMGzpw5I9/OyMjA0aNHYTKZ4O/vj5EjR+Lw4cPYunUrysvLkZOTAwAwmUzQ6XQ4cOAADh48iPvvvx9ubm44cOAA5s+fj/Hjx8PT07PhloyIiIjqrd5jDFJTU3H//fdXmj5x4kQsXboUYWFhVd5v9+7dSExMxOHDh/HYY4/h1KlTKC4uRlhYGH73u9/hiSeeqPPugvz8fBiNxvqUTc2Eh4cHevXqhcDAQIwePRq9e/fmrgSiOkpPT8fatWtx9uxZ7N+/H2fPnlW6JGpkdRljcFeDD5XCYNByRUZG4h//+AdiY2Oh1+t5NjeieigvL0dRURGuXLmCxx9/3ObMtdQyKDb4kMheVCoVXFxc4OrqqnQpRA5HrVbDYDCgqKiIZ0KkavHgbyIiIpIxGJBD0Gq1cHd3h5ubG89XQHSXJEmCi4sL3N3defgiVcJtSeQQunbtikmTJiEwMNDmmhtEVH8GgwFTp05FUlISvvjiC2zcuBHl5eVKl0VNBIMBOYTQ0FCMGjUKJpNJ6VKIHJ5er0dCQgKEEMjJycHHH3/MYEAy7kogIiIiGYMBERERybgrgZosSZIQEhKCwMBAREZG8vAqIjsIDAzEvffeiytXruDMmTM2F6yjlonftNRkaTQajB07FpMnT4abmxsMBoPSJRE1O8nJyejRowcOHDiAP/7xj8jKylK6JFIYgwE1WZIkwdvbG61bt+Zpj4nsQJIkeHp6wtPTE+fOneNWOQLAMQZERET0GwwG1CRJkgSVSsUtBUSNhJ85qsDtRtTkGI1GDB48GOHh4ejRo4fS5RC1CCEhIXjsscdw4cIFfP7550hPT1e6JFIIgwE1OZ6enpg0aRISEhJ4+mOiRhIWFob58+cjOzsbp0+fZjBowRgMqMmRJAlqtZqXVCZqRCqVCiqVCmq1mrsTWjiOMSAiIiIZgwERERHJGAyIiIhIxmBATYYkSdBoNNBoNNzHSaSQijE+Go0GKhX/RbREHHxITUZkZCSGDRuGoKAghIaGKl0OUYvk5uaG8ePHIy4uDrt27cLu3bshhFC6LGpEDAbUZLRu3Rpz5syB2WzmFgMihRgMBowcORLl5eUoLi5Gamoqg0ELw2BATYYkSfLZ14hIGRWfQ6vVqnQppBB+AxMREZGMWwxIcSaTCSaTCQEBAby6G1ETIUkSvLy80KZNGxQUFODSpUsoLy9XuixqBPwWJkWpVCoMGzYMEyZMgLe3N4xGo9IlERF+/WwOHToU3bp1w969e7Fq1Srk5eUpXRY1AgYDUpQkSQgODkbPnj15XQSiJkSSJISEhCAkJARXr16FTqdTuiRqJBxjQERERDIGAyIiIpJxVwIpwtnZGfHx8WjVqhU6derE8xYQNWGtWrXCyJEjcfHiRezfvx+XLl1SuiSyI0k44Jkr8vPzOUjNwfn5+eG1115Dv379oNfrodfrGQ6ImqjS0lIUFRUhIyMDjz32GPbt26d0SXSHLBYL3N3da+zDLQakCJVKBRcXFwY8Igeg1Wqh1Wrh6urKQ4pbAI4xICIiIhmDATUqtVoNg8EAg8HAXx5EDqZiS5+rqyu0Wq3S5ZCd8JuZGlXbtm0xZcoUBAUFoX379kqXQ0T14OXlhblz52LYsGH497//ja+++krpksgOGAyoUfn7++Phhx9GSEiI0qUQUT25ubkhOTkZxcXFOHnyJINBM8VdCURERCRjMCAiIiIZdyVQo/D390erVq3Qrl07nnOdyMFVXEchLi4OV69eRUZGBq+82IzwBEfUKKZMmYLHH38cRqMR/v7+HNFM5MCEELh8+TLy8vLwxRdfICUlBfn5+UqXRXXAExxRk2EymRAZGcmtBUTNgCRJ8PX1ha+vL44ePcorozYzHGNAREREMgYDsjtJkngdBKJmjJ/v5oW7EshunJyc8MADDyAqKgoJCQnc3EjUDEVFRWH27Nm4cOECtm3bhpycHKVLorvEYEB24+LigrFjx2LEiBFQq9VQqbiBiqi56dSpE9q3b4+TJ0/i2LFjDAbNAIMB2ZVGo+GAQ6JmTKVSQafTQavVcpdCM8GfcERERCSrdzDYs2cPBg8ejICAAEiShC1bttjMnzRpkjzYrKINGDDApk9eXh7GjRsHd3d3eHh4YOrUqbhx48ZdLQgRERHdvXoHg5s3b6Jz585Ys2ZNtX0GDBiA7Oxsub3//vs288eNG4eff/4Z27dvx9atW7Fnzx7MmDGj/tUTERFRg6r3GIPk5GQkJyfX2Eev18NsNlc57+TJk/jyyy/x/fffo1u3bgCA1157DQMHDsSf//xnBAQE1LckaoJUKhXUajX3ORK1IBWDjIUQcMCT6tL/2GWMQWpqKnx9fREZGYlZs2bh6tWr8rwDBw7Aw8NDDgUAkJSUBJVKhYMHD9qjHGpkQUFBmD17NhYsWID27dsrXQ4RNQIfHx9MmzYNixYtQteuXZUuh+5Cgx+VMGDAAAwfPhxhYWFIT0/H008/jeTkZBw4cABqtRo5OTnw9fW1LUKjgclkqvYwl+LiYhQXF8u3eU7upi0gIAAzZ85EZGQkD1EkaiG8vb0xZcoU3LhxA7m5uTh06JDSJdEdavBgMGbMGPnvjh07olOnToiIiEBqair69u17R4+5YsUKpKSkNFSJZGeSJMm7EoioZagYbM5diI7P7j/nwsPD4e3tjTNnzgAAzGYzcnNzbfqUlZUhLy+v2nEJixYtgsVikdv58+ftXTYREVGLZPdgcOHCBVy9ehX+/v4AgPj4eFy/ft1mM9OuXbtgtVoRFxdX5WPo9Xq4u7vbNGp63NzcEBISgoCAAF5WmaiFkiQJ3t7eCAsLg7e3N7ceOCBJ1HPo6I0bN+Rf/zExMXjppZdw//33w2QywWQyISUlBSNGjIDZbEZ6ejr+8Ic/oKCgAD/99BP0ej2AX49suHTpEt544w2UlpZi8uTJ6NatGzZs2FCnGvLz82E0Guu5qGRvQ4YMwWOPPQYfHx9ERUXBxcVF6ZKIqJGVl5cjPT0dWVlZ+Pzzz/H666+jqKhI6bLofywWS+0/rkU97d69WwCo1CZOnCgKCwtFv379hI+Pj9BqtSIkJERMnz5d5OTk2DzG1atXxdixY4Wrq6twd3cXkydPFgUFBXWuwWKxVFkDm7Jt5syZ4ubNm/V9SxFRM/X//t//EwaDQfHvJrb/axaLpdb1Vu/Bh4mJiTUen/qf//yn1scwmUx13jpAREREjYfHkhEREZGMV1eku6LRaNC1a1eEhYUhNjaWhygSkSw8PBwjR45EVlYWDh48yHPQOAgGA7orTk5O+N3vfodHHnkEer2el1gmIlnPnj0RExODI0eOYPbs2QwGDoLBgO6awWCAyWRSugwiamL0er18uDm3JjoOjjEgIiIiGYMB3RFJkuDk5ASDwQCNhhueiKh6KpUKzs7OcHFx4ZYDB8BvdLojAQEBmDx5MiIiItCjRw+lyyGiJqxVq1b4wx/+gKysLGzYsAHfffed0iVRDRgM6I6YTCYMGzYMMTExPOUpEdXIx8cHI0eOhMViwXfffcdg0MRxVwLdFYYCIqoLflc4DgYDIiIikjEYUL2YTCZ06dIF7du350WSiKhe1Gq1fDK0oKAgbkVooup9dcWmgFdXVM7gwYPx9NNPw9vbG4GBgXB2dla6JCJyEOXl5cjOzsb169fx7rvv4uWXX0ZpaanSZbUodbm6IgcfUr14eHggKioKHh4eSpdCRA5GrVYjKCgIgYGB8Pf35xaDJoq7EoiIiEjGYEBERIrgFoOmibsSqFZqtRq9evVC586d0b17d+j1eqVLIiIHFxMTgzlz5iAzMxNfffUVLBaL0iXR/zAYUK00Gg2GDBmCWbNmQa1W8xTIRHTXevbsiXvuuQf79u3DoUOHGAyaEH7DU62EEDh79iwOHjzITX9E1KBOnDiBoqIipcug3+DhilQrSZLg5eXF15yIGtytW7eQm5uLsrIypUtpEXi4IjUIIQSuXLmCK1euKF0KERHZGY9KICIiIhmDAREREckYDIiIiEjGYEBEREQyBgMiIiKSMRgQERGRjMGAiIiIZAwGREREJGMwICIiIhmDAREREckYDIiIiEjGYEBEREQyBgMiIiKSMRgQERGRjMGAiIiIZAwGREREJGMwICIiIhmDAREREckYDIiIiEjGYEBEREQyBgMiIiKSMRgQERGRjMGAiIiIZAwGREREJGMwICIiIhmDAREREckYDIiIiEhW72CwZ88eDB48GAEBAZAkCVu2bLGZL0lSlW316tVyn9DQ0ErzV65cedcLQ0RERHen3sHg5s2b6Ny5M9asWVPl/OzsbJu2du1aSJKEESNG2PRbtmyZTb+5c+fe2RIQERFRg9HU9w7JyclITk6udr7ZbLa5/cknn+D+++9HeHi4zXQ3N7dKfYmIiEhZdh1jcOnSJXz++eeYOnVqpXkrV66El5cXYmJisHr1apSVldmzFCIiIqqDem8xqI933nkHbm5uGD58uM30efPmoWvXrjCZTNi/fz8WLVqE7OxsvPTSS1U+TnFxMYqLi+Xb+fn59iybiIio5RJ3AYDYvHlztfMjIyPFnDlzan2ct956S2g0GlFUVFTl/CVLlggAbGxsbGxsbHfRLBZLrf+T7bYr4ZtvvkFaWhqmTZtWa9+4uDiUlZXh7NmzVc5ftGgRLBaL3M6fP9/A1RIRERFgx10Jb731FmJjY9G5c+da+x49ehQqlQq+vr5Vztfr9dDr9Q1dIhEREd2m3sHgxo0bOHPmjHw7IyMDR48ehclkQnBwMIBfxwBs3LgRf/nLXyrd/8CBAzh48CDuv/9+uLm54cCBA5g/fz7Gjx8PT0/Pu1gUIiIiumu17my4ze7du6vcbzFx4kS5zz/+8Q/h7Owsrl+/Xun+hw4dEnFxccJoNAonJyfRrl07sXz58mrHF1TFYrEovp+GjY2NjY3N0VpdxhhIQggBB5Ofnw+j0ah0GURERA7FYrHA3d29xj68VgIRERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJGAyIiIhIxmBAREREMgYDIiIikjEYEBERkYzBgIiIiGQMBkRERCRjMCAiIiIZgwERERHJHDIYCCGULoGIiMjh1OX/p0MGg4KCAqVLICIicjh1+f8pCQf8+W21WpGWlob27dvj/PnzcHd3V7oku8nPz0erVq24nM1ES1jOlrCMAJezuWnuyymEQEFBAQICAqBS1bxNQNNINTUolUqFwMBAAIC7u3uzXIm343I2Ly1hOVvCMgJczuamOS+n0WisUz+H3JVARERE9sFgQERERDKHDQZ6vR5LliyBXq9XuhS74nI2Ly1hOVvCMgJczuampSxnXTjk4EMiIiKyD4fdYkBEREQNj8GAiIiIZAwGREREJGMwICIiIpnDBoM1a9YgNDQUTk5OiIuLw3fffad0SXdsxYoV6N69O9zc3ODr64uhQ4ciLS3Npk9iYiIkSbJpM2fOVKjiO7N06dJKyxAVFSXPLyoqwuzZs+Hl5QVXV1eMGDECly5dUrDiOxMaGlppOSVJwuzZswE47rrcs2cPBg8ejICAAEiShC1bttjMF0Jg8eLF8Pf3h7OzM5KSknD69GmbPnl5eRg3bhzc3d3h4eGBqVOn4saNG424FDWraRlLS0uxcOFCdOzYEQaDAQEBAZgwYQKysrJsHqOq9b9y5cpGXpKa1bYuJ02aVGkZBgwYYNOnqa9LoPblrOpzKkkSVq9eLfdxhPXZ0BwyGHz44Yd44oknsGTJEhw+fBidO3dG//79kZubq3Rpd+Trr7/G7Nmz8e2332L79u0oLS1Fv379cPPmTZt+06dPR3Z2ttxWrVqlUMV3rkOHDjbLsHfvXnne/Pnz8dlnn2Hjxo34+uuvkZWVheHDhytY7Z35/vvvbZZx+/btAICHH35Y7uOI6/LmzZvo3Lkz1qxZU+X8VatW4dVXX8Ubb7yBgwcPwmAwoH///igqKpL7jBs3Dj///DO2b9+OrVu3Ys+ePZgxY0ZjLUKtalrGwsJCHD58GM899xwOHz6MTZs2IS0tDUOGDKnUd9myZTbrd+7cuY1Rfp3Vti4BYMCAATbL8P7779vMb+rrEqh9OX+7fNnZ2Vi7di0kScKIESNs+jX19dnghAPq0aOHmD17tny7vLxcBAQEiBUrVihYVcPJzc0VAMTXX38tT+vdu7f4/e9/r1xRDWDJkiWic+fOVc67fv260Gq1YuPGjfK0kydPCgDiwIEDjVShffz+978XERERwmq1CiGax7oEIDZv3izftlqtwmw2i9WrV8vTrl+/LvR6vXj//feFEEKcOHFCABDff/+93Gfbtm1CkiRx8eLFRqu9rm5fxqp89913AoA4d+6cPC0kJES8/PLL9i2uAVW1nBMnThQPPfRQtfdxtHUpRN3W50MPPST69OljM83R1mdDcLgtBiUlJTh06BCSkpLkaSqVCklJSThw4ICClTUci8UCADCZTDbT169fD29vb0RHR2PRokUoLCxUory7cvr0aQQEBCA8PBzjxo1DZmYmAODQoUMoLS21Wa9RUVEIDg526PVaUlKC9957D1OmTIEkSfL05rAufysjIwM5OTk2689oNCIuLk5efwcOHICHhwe6desm90lKSoJKpcLBgwcbveaGYLFYIEkSPDw8bKavXLkSXl5eiImJwerVq1FWVqZMgXchNTUVvr6+iIyMxKxZs3D16lV5XnNcl5cuXcLnn3+OqVOnVprXHNZnfTjcRZSuXLmC8vJy+Pn52Uz38/PDqVOnFKqq4VitVjz++OPo2bMnoqOj5emPPPIIQkJCEBAQgGPHjmHhwoVIS0vDpk2bFKy2fuLi4vD2228jMjIS2dnZSElJQa9evXD8+HHk5ORAp9NV+oL18/NDTk6OMgU3gC1btuD69euYNGmSPK05rMvbVayjqj6XFfNycnLg6+trM1+j0cBkMjnkOi4qKsLChQsxduxYm4vuzJs3D127doXJZML+/fuxaNEiZGdn46WXXlKw2voZMGAAhg8fjrCwMKSnp+Ppp59GcnIyDhw4ALVa3ezWJQC88847cHNzq7T7sjmsz/pyuGDQ3M2ePRvHjx+32fcOwGbfXceOHeHv74++ffsiPT0dERERjV3mHUlOTpb/7tSpE+Li4hASEoKPPvoIzs7OClZmP2+99RaSk5MREBAgT2sO67KlKy0txahRoyCEwN///nebeU888YT8d6dOnaDT6fDoo49ixYoVDnO63TFjxsh/d+zYEZ06dUJERARSU1PRt29fBSuzn7Vr12LcuHFwcnKymd4c1md9OdyuBG9vb6jV6kqj1S9dugSz2axQVQ1jzpw52Lp1K3bv3o2goKAa+8bFxQEAzpw50xil2YWHhwfatm2LM2fOwGw2o6SkBNevX7fp48jr9dy5c9ixYwemTZtWY7/msC4r1lFNn0uz2VxpgHBZWRny8vIcah1XhIJz585h+/bttV6iNy4uDmVlZTh79mzjFGgH4eHh8Pb2lt+jzWVdVvjmm2+QlpZW62cVaB7rszYOFwx0Oh1iY2Oxc+dOeZrVasXOnTsRHx+vYGV3TgiBOXPmYPPmzdi1axfCwsJqvc/Ro0cBAP7+/nauzn5u3LiB9PR0+Pv7IzY2Flqt1ma9pqWlITMz02HX67p16+Dr64tBgwbV2K85rMuwsDCYzWab9Zefn4+DBw/K6y8+Ph7Xr1/HoUOH5D67du2C1WqVw1FTVxEKTp8+jR07dsDLy6vW+xw9ehQqlarSpndHcuHCBVy9elV+jzaHdflbb731FmJjY9G5c+da+zaH9VkrpUc/3okPPvhA6PV68fbbb4sTJ06IGTNmCA8PD5GTk6N0aXdk1qxZwmg0itTUVJGdnS23wsJCIYQQZ86cEcuWLRM//PCDyMjIEJ988okIDw8XCQkJCldeP08++aRITU0VGRkZYt++fSIpKUl4e3uL3NxcIYQQM2fOFMHBwWLXrl3ihx9+EPHx8SI+Pl7hqu9MeXm5CA4OFgsXLrSZ7sjrsqCgQBw5ckQcOXJEABAvvfSSOHLkiDwif+XKlcLDw0N88skn4tixY+Khhx4SYWFh4tatW/JjDBgwQMTExIiDBw+KvXv3ijZt2oixY8cqtUiV1LSMJSUlYsiQISIoKEgcPXrU5rNaXFwshBBi//794uWXXxZHjx4V6enp4r333hM+Pj5iwoQJCi+ZrZqWs6CgQDz11FPiwIEDIiMjQ+zYsUN07dpVtGnTRhQVFcmP0dTXpRC1v2eFEMJisQgXFxfx97//vdL9HWV9NjSHDAZCCPHaa6+J4OBgodPpRI8ePcS3336rdEl3DECVbd26dUIIITIzM0VCQoIwmUxCr9eL1q1biwULFgiLxaJs4fU0evRo4e/vL3Q6nQgMDBSjR48WZ86ckeffunVLPPbYY8LT01O4uLiIYcOGiezsbAUrvnP/+c9/BACRlpZmM92R1+Xu3burfJ9OnDhRCPHrIYvPPfec8PPzE3q9XvTt27fS8l+9elWMHTtWuLq6Cnd3dzF58mRRUFCgwNJUraZlzMjIqPazunv3biGEEIcOHRJxcXHCaDQKJycn0a5dO7F8+XKbf6hNQU3LWVhYKPr16yd8fHyEVqsVISEhYvr06ZV+eDX1dSlE7e9ZIYT4xz/+IZydncX169cr3d9R1mdD42WXiYiISOZwYwyIiIjIfhgMiIiISMZgQERERDIGAyIiIpIxGBAREZGMwYCIiIhkDAZEREQkYzAgIiIiGYMBERERyRgMiIiISMZgQERERDIGAyIiIpL9fxyFm73bhnU8AAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["def triangle_area(x1, y1, x2, y2, x3, y3):\n","    return abs(\n","        x1 * (y2 - y3) +\n","        x2 * (y3 - y1) +\n","        x3 * (y1 - y2)\n","    ) / 2\n","\n","\n","def point_inside_triangle(x, y, A, B, C):\n","    total = triangle_area(*A, *B, *C)\n","\n","    area1 = triangle_area(x, y, *B, *C)\n","    area2 = triangle_area(*A, x, y, *C)\n","    area3 = triangle_area(*A, *B, x, y)\n","\n","    return abs(total - (area1 + area2 + area3)) < 1e-6\n","\n","\n","def create_triangle_image(height=200, width=200,\n","                          A=(100, 30),\n","                          B=(40, 160),\n","                          C=(160, 160)):\n","    image = np.zeros((height, width), dtype=np.uint8)\n","\n","    for y in range(height):\n","        for x in range(width):\n","            if point_inside_triangle(x, y, A, B, C):\n","                image[y, x] = 255\n","\n","    return image\n","\n","\n","triangle = create_triangle_image()\n","\n","plt.imshow(triangle, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"Triangle Created from Scratch\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"0a8ff8a2","metadata":{"id":"0a8ff8a2","colab":{"base_uri":"https://localhost:8080/","height":332},"executionInfo":{"status":"ok","timestamp":1788412700930,"user_tz":-330,"elapsed":230,"user":{"displayName":"Akash Verma","userId":"01173111919262596674"}},"outputId":"3b1516ea-8027-4aff-b1a4-e04a09303a53"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 1200x400 with 3 Axes>"],"image/png":"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8vJySdLUqVPVo0ePKl9fnaJ4PmVlZerWrZsOHjyo//zP/1SzZs0UFxenXbt2aeTIkRU5zvruzIU/lJeXy7IsLV++vMr3+u43fADwQxISElSvXj19+umnl7Sd7x7RcinKy8tVp04d/fWvf63y8e9/YQgA/lLdcW3RokUaOXKkCgsLNW3aNNWpU0cul0szZ86stNDpWT+0j2jb9iXllVSxPzps2LAfXLOlVatWl/w+CA4UW4c7O1Bce+21euyxx3TzzTdL+naG8rrrrvvR1/p8vvPuvP3QIXIbNmzQ5s2btWDBAg0fPrzi/jfffPMCf4L/07BhQ61YsaJi+fizSkpKzvtan88n27aVmZmppk2bXnQGAOjdu7fmzZun999/X1dffXWNbNPn80mSPv300wv6ctHn8+mtt95SQUFBjZVlAPCnF198UVlZWXrppZcq7UfefffdF7W9hg0bSqp6f/B8+4gpKSnyer0qKys7734xnI9zbENA586d1bZtW82aNUsJCQnq3Lmz/vznP+t///d/z3nuvn37Kv53//79tW7dOi1ZsuSc5539luzstRcPHz5c6fGz365999s027b16KOPXvTP0aNHD50+fVp/+ctfKu4rLy/XnDlzzvvafv36yeVy6d577z3nGz7btnXgwIGLzgUgvNx+++2Ki4vTLbfcor17957z+NatWy94rOvevbu8Xq9mzpypkydPVnrsx2YlBg0apLKyMt1///3nPHbmzJlzxmYAMK2qfcQ1a9bo/fffv6jt1atXT7m5uVq4cKGOHz9ecf8777yjDRs2nDdL//79tXjx4ionc767XwznY8Y2REybNk0DBw7U/PnzNWfOHHXo0EEtW7bUmDFjlJWVpb179+r999/XF198oXXr1lW85sUXX9TAgQN18803Ky8vTwcPHlRxcbHmzp2r1q1by+fzKSkpSXPnzpXX61VcXJzatWunZs2ayefzaerUqdq1a5cSEhK0ePHiS7quYmFhodq2batf/vKXKikpUbNmzVRcXKyDBw9K+vEFVnw+n/77v/9bv/rVr7R9+3YVFhbK6/Vq27ZtWrJkicaOHaupU6dedDYA4cPn86moqEiDBw9W8+bNNXz4cOXm5urUqVNavXq1XnjhhUrXrq2OhIQE/f73v9ctt9yi/Px8DR06VMnJyVq3bp1OnDihBQsWVPm6Tp06ady4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\n"},"metadata":{}}],"source":["fig, axes = plt.subplots(1, 3, figsize=(12, 4))\n","\n","axes[0].imshow(rectangle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Rectangle\")\n","\n","axes[1].imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Circle\")\n","\n","axes[2].imshow(triangle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[2].set_title(\"Triangle\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"0d45cd20","metadata":{"id":"0d45cd20"},"outputs":[],"source":["def translate_image_forward(image, tx, ty):\n","    height, width = image.shape\n","\n","    output = np.zeros_like(image)\n","\n","    for y in range(height):\n","        for x in range(width):\n","            new_x = x + tx\n","            new_y = y + ty\n","\n","            if 0 <= new_x < width and 0 <= new_y < height:\n","                output[new_y, new_x] = image[y, x]\n","\n","    return output\n","\n","\n","translated = translate_image_forward(rectangle, tx=30, ty=20)\n","\n","fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n","\n","axes[0].imshow(rectangle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Original\")\n","\n","axes[1].imshow(translated, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Translated\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"3c05b3bb","metadata":{"id":"3c05b3bb"},"outputs":[],"source":["def nearest_neighbor(image, x, y):\n","    height, width = image.shape\n","\n","    nearest_x = int(round(x))\n","    nearest_y = int(round(y))\n","\n","    if 0 <= nearest_x < width and 0 <= nearest_y < height:\n","        return image[nearest_y, nearest_x]\n","\n","    return 0"]},{"cell_type":"code","execution_count":null,"id":"f1938557","metadata":{"id":"f1938557"},"outputs":[],"source":["def resize_nearest(image, scale_x, scale_y):\n","    old_height, old_width = image.shape\n","\n","    new_width = int(old_width * scale_x)\n","    new_height = int(old_height * scale_y)\n","\n","    output = np.zeros((new_height, new_width), dtype=np.uint8)\n","\n","    for y_out in range(new_height):\n","        for x_out in range(new_width):\n","\n","            x_source = x_out / scale_x\n","            y_source = y_out / scale_y\n","\n","            output[y_out, x_out] = nearest_neighbor(\n","                image, x_source, y_source\n","            )\n","\n","    return output\n","\n","\n","circle_nn = resize_nearest(circle, 1.5, 1.5)\n","\n","fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n","\n","axes[0].imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Original Circle\")\n","\n","axes[1].imshow(circle_nn, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Nearest-Neighbour Scaling\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"6c348ef5","metadata":{"id":"6c348ef5"},"outputs":[],"source":["def bilinear_interpolation(image, x, y):\n","    height, width = image.shape\n","\n","    x0 = int(np.floor(x))\n","    x1 = x0 + 1\n","\n","    y0 = int(np.floor(y))\n","    y1 = y0 + 1\n","\n","    if x0 < 0 or y0 < 0 or x1 >= width or y1 >= height:\n","        return 0\n","\n","    dx = x - x0\n","    dy = y - y0\n","\n","    Q11 = float(image[y0, x0])\n","    Q21 = float(image[y0, x1])\n","    Q12 = float(image[y1, x0])\n","    Q22 = float(image[y1, x1])\n","\n","    R1 = Q11 * (1 - dx) + Q21 * dx\n","    R2 = Q12 * (1 - dx) + Q22 * dx\n","\n","    value = R1 * (1 - dy) + R2 * dy\n","\n","    return np.clip(value, 0, 255)"]},{"cell_type":"code","execution_count":null,"id":"83b87d35","metadata":{"id":"83b87d35"},"outputs":[],"source":["def resize_bilinear(image, scale_x, scale_y):\n","    old_height, old_width = image.shape\n","\n","    new_width = int(old_width * scale_x)\n","    new_height = int(old_height * scale_y)\n","\n","    output = np.zeros((new_height, new_width), dtype=np.uint8)\n","\n","    for y_out in range(new_height):\n","        for x_out in range(new_width):\n","\n","            x_source = x_out / scale_x\n","            y_source = y_out / scale_y\n","\n","            value = bilinear_interpolation(\n","                image, x_source, y_source\n","            )\n","\n","            output[y_out, x_out] = int(value)\n","\n","    return output\n","\n","\n","circle_bl = resize_bilinear(circle, 1.5, 1.5)\n","\n","fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n","\n","axes[0].imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Original Circle\")\n","\n","axes[1].imshow(circle_bl, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Bilinear Scaling\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"a0e46f22","metadata":{"id":"a0e46f22"},"outputs":[],"source":["fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n","\n","axes[0].imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Original\")\n","\n","axes[1].imshow(circle_nn, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Nearest Neighbour\")\n","\n","axes[2].imshow(circle_bl, cmap=\"gray\", vmin=0, vmax=255)\n","axes[2].set_title(\"Bilinear\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"7d1a16d6","metadata":{"id":"7d1a16d6"},"outputs":[],"source":["def cubic_weight(t, a=-0.5):\n","    t = abs(t)\n","\n","    if t <= 1:\n","        return (a + 2) * t**3 - (a + 3) * t**2 + 1\n","\n","    elif t < 2:\n","        return a * t**3 - 5*a * t**2 + 8*a * t - 4*a\n","\n","    return 0.0\n","\n","\n","def bicubic_interpolation(image, x, y):\n","    height, width = image.shape\n","\n","    x_base = int(np.floor(x))\n","    y_base = int(np.floor(y))\n","\n","    value = 0.0\n","    total_weight = 0.0\n","\n","    for j in range(-1, 3):\n","        for i in range(-1, 3):\n","\n","            x_neighbour = x_base + i\n","            y_neighbour = y_base + j\n","\n","            if (0 <= x_neighbour < width and\n","                    0 <= y_neighbour < height):\n","\n","                weight_x = cubic_weight(x - x_neighbour)\n","                weight_y = cubic_weight(y - y_neighbour)\n","\n","                weight = weight_x * weight_y\n","\n","                value += image[y_neighbour, x_neighbour] * weight\n","                total_weight += weight\n","\n","    if total_weight != 0:\n","        value = value / total_weight\n","\n","    return np.clip(value, 0, 255)"]},{"cell_type":"code","execution_count":null,"id":"279fab6c","metadata":{"id":"279fab6c"},"outputs":[],"source":["def resize_bicubic(image, scale_x, scale_y):\n","    old_height, old_width = image.shape\n","\n","    new_width = int(old_width * scale_x)\n","    new_height = int(old_height * scale_y)\n","\n","    output = np.zeros((new_height, new_width), dtype=np.uint8)\n","\n","    for y_out in range(new_height):\n","        for x_out in range(new_width):\n","\n","            x_source = x_out / scale_x\n","            y_source = y_out / scale_y\n","\n","            output[y_out, x_out] = int(\n","                bicubic_interpolation(\n","                    image,\n","                    x_source,\n","                    y_source\n","                )\n","            )\n","\n","    return output\n","\n","\n","circle_bc = resize_bicubic(circle, 1.5, 1.5)\n","\n","plt.imshow(circle_bc, cmap=\"gray\", vmin=0, vmax=255)\n","plt.title(\"Bicubic Scaling\")\n","plt.axis(\"off\")\n","plt.show()"]},{"cell_type":"code","execution_count":null,"id":"8a67e50d","metadata":{"id":"8a67e50d"},"outputs":[],"source":["fig, axes = plt.subplots(1, 4, figsize=(18, 5))\n","\n","axes[0].imshow(circle, cmap=\"gray\", vmin=0, vmax=255)\n","axes[0].set_title(\"Original\")\n","\n","axes[1].imshow(circle_nn, cmap=\"gray\", vmin=0, vmax=255)\n","axes[1].set_title(\"Nearest\")\n","\n","axes[2].imshow(circle_bl, cmap=\"gray\", vmin=0, vmax=255)\n","axes[2].set_title(\"Bilinear\")\n","\n","axes[3].imshow(circle_bc, cmap=\"gray\", vmin=0, vmax=255)\n","axes[3].set_title(\"Bicubic\")\n","\n","for ax in axes:\n","    ax.axis(\"off\")\n","\n","plt.show()"]}],"metadata":{"colab":{"provenance":[]},"kernelspec":{"display_name":"jupyter-venv (3.12.3)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.12.3"}},"nbformat":4,"nbformat_minor":5}