{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example of masks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating an instance" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:46.315654Z", "start_time": "2020-05-01T22:57:44.626566Z" } }, "outputs": [], "source": [ "from diffractio import np, plt\n", "from diffractio import degrees, mm, um\n", "from diffractio.scalar_masks_X import Scalar_mask_X\n", "\n", "from numpy import loadtxt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Procedures to generate masks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### mask_from_function" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:57.568289Z", "start_time": "2020-05-01T22:57:57.222452Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'R1': 5000.0, 'R2': 1000.0, 'x0': 0.0, 'y0': 0.0, 'h1': 1000.0, 'h2': -1000.0}\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 1024\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "f1 = \"R1-h1+np.sqrt(R1**2-(self.x-x0)**2)\"\n", "f2 = \"R2-h2+np.sqrt(R2**2-(self.x-x0)**2)\"\n", "v_globals = {\n", " \"R1\": 5 * mm,\n", " \"R2\": 1 * mm,\n", " \"x0\": 0 * um,\n", " \"y0\": 0 * um,\n", " \"h1\": 1 * mm,\n", " \"h2\": -1 * mm,\n", "}\n", "index = 1.5\n", "print(v_globals)\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.mask_from_function(\n", " x0=0 * um, index=index, f1=f1, f2=f2, v_globals=v_globals, radius=100 * um\n", ")\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### mask_from_array" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:58.789143Z", "start_time": "2020-05-01T22:57:58.418001Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 1024 * 8\n", "x = np.linspace(-1 * mm, 1 * mm, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "\n", "profile1 = loadtxt(\"./profile1.txt\")\n", "profile2 = loadtxt(\"./profile2.txt\")\n", "t1.mask_from_array(\n", " x0=0,\n", " index=1.25,\n", " array1=profile1 * mm,\n", " array2=profile2 * mm,\n", " interp_kind=\"quadratic\",\n", " radius=1.5 * mm,\n", ")\n", "\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## slit" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:47.486696Z", "start_time": "2020-05-01T22:57:46.812640Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 128\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.slit(x0=0, size=100 * um)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## double_slit" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:48.458838Z", "start_time": "2020-05-01T22:57:48.104107Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAX3UlEQVR4nO3df5DcdX3H8dfr7grRFn+RU2kSDGpoi+WH9Eqt4hSK1kA7iVq1MGqtUuNMiaVqncHqQAY6napDqSJK06Ioo9LooE0lCkLRTKooQQNCKJgilAQKgWKkYzVe7t0/9rvuZu/2br+7993v9/Pd52Mmk/3xvbvP7e13X9/P+737+ToiBAAYXWNlDwAAUC6CAABGHEEAACOOIACAEUcQAMCImyh7AHktXbo0Vq5cWfYwACApt95666MRMTnXfckFwcqVK7V9+/ayhwEASbF9f7f7KA0BwIgjCABgxBEEADDiCAIAGHEEAQCMOIIAAEZcYUFg++O2H7F9R5f7bfvDtnfZvt32iUWNBQDQXZEzgislrZ7n/tMlrcr+rZP0sQLHAgDoorAPlEXEVtsr59lkraRPReOECDfbfprtIyLioaLGtJguueQS7du3r+xhlO60007TS1/60rKHgYq54YYbtG3btrKHUbrJyUmdc845ZQ9jQWV+sniZpAfaru/ObpsVBLbXqTFr0JFHHjmUwS1k37592rBhQ9nDKN2GDRsIAsyybds29g9JF1xwQdlD6EkSzeKI2BgRUxExNTk551IZAIA+lRkEeyStaLu+PLsNADBEZQbBZkl/nL176EWS9qXSHwCAOimsR2D7s5JOkbTU9m5JF0j6BUmKiMslbZF0hqRdkn4s6c1FjQUA0F2R7xo6a4H7Q1L12+kAUHNJNIsBAMUhCPowMzMj22UPAwAWBUHQhwMHDmh8fLzsYQDAoiAI+kAQAKgTgqAPBAGAOiEI+nDgwAFNTJS5OgeAFNjWzMxM2cNYEEHQh+npaWYEABY0Pj6uAwcOlD2MBREEfaA0BKAXBEGNEQQAejExMUEQ1BU9AgC9YEZQY/QIAPRifHxc09PTZQ9jQQRBHygNAegFM4IaozQEoBf0CGqMGQGAXjAjqDF6BAB6QY+gxpgRAOgFM4Iao0cAoBf0CGqM0hCAXjAjqDFKQwB6QY+gxggCAL1gRlBj9AgA9IIeQY3RIwDQC2YENUZpCEAv6BHUGEEAoBeUhmqMHgGAXlAaqjF6BAB6QRDUGKUhAL2gR1BjBAGAXtAjqDF6BAB6QWmoxugRAN3NzMxobIyXFokgqDVKQ0B3HCi10COoMYIA6I79o4UegSTbq23fbXuX7fPmuP9I2zfZ/q7t222fUeR4Fgs9AqA79o+WkS8N2R6XdJmk0yUdI+ks28d0bPY+SZsi4oWSzpT00aLGs5iY+rbY1szMTNnDQIWwf7RQGpJOkrQrIu6NiP2Srpa0tmObkPSU7PJTJT1Y4HgWDVPfllSOeDA87B8tqewfRQbBMkkPtF3fnd3WboOkN9jeLWmLpLfP9Y1sr7O93fb2vXv3FjHWXHiit6TyRMfwsH+00CPozVmSroyI5ZLOkHSV7VljioiNETEVEVOTk5NDH2Sn6elpaqCZVJ7oGB56BC2pHCgVGQR7JK1ou748u63d2ZI2SVJEfFPSEklLCxzTouCIpyWVGiiGhx5BSyr7R5FBcIukVbaPsn2IGs3gzR3b/Jek0yTJ9q+pEQTl134WQBC0pHLEg+Fh/2hJZf8oLAgiYlrSeknXSbpLjXcH3Wn7Qttrss3eJemttm+T9FlJfxIRUdSYFgtT3xZKQ+jE/tGSyv5R6F8rIrao0QRuv+38tss7Jb2kyDEU4cCBA3yEPpPKEQ+GhxlBSyr7B69mfbJd9hAqIZUaKIaHHkFLKvsHQYCBpHLEg+FhRtCSSmmIIMBAUnmiY3joEbSkcqBEEGAgqTzRMTzMCFpS2T8IAgwklRoohoceQYttJfBGSIIAg0nliAfDw4wgPQQBBkKPAJ3oERwshXcYEgQYCDMCdGJGcDBKQ6g9egToRI8gPQQBBsKMAJ2YEaSHIMBA6BGgEz2Cg9EjQO0xI0AnZgQHo0eA2qNHgE70CNJDEPQhhYQfFmYE6MSMID0EAQZCjwCd6BEcjB5BTaXwhx0WZgToxIzgYClUEAgCDIQeATrRI0gPQdCHFBJ+WJgRoBMzgvQQBBgIPQJ0okeQHoKgD/QIWigNoROlofQQBBgIpSF0ojSUHoKgD/QIWggCdCIIDpZCBYEgwEDoEaATPYKDpXDgSBD0IYWEHxZ6BOhEjyA9BAEGQmkInSgNpYcg6EMKU71hIQjQiSA4WAoVBIIAA6FHgE70CA6WwoEjQdCHFBJ+WOgRoNPMzIzGxnhpSQl/LQyE0hCQPoIAA6E0BMwvhQoCQYCBMCMA5kePALU3NjZGEACJ6ykIbB/ezze3vdr23bZ32T6vyzavs73T9p22P9PPzxm2FBJ+WFKY9gKYX6/v8brZ9g5Jn5D05ejhldD2uKTLJL1c0m5Jt9jeHBE727ZZJek9kl4SEY/bfmbeXwAAqiyFg6VeS0NHS9oo6Y2Svm/7b2wfvcDXnCRpV0TcGxH7JV0taW3HNm+VdFlEPC5JEfFI70MvTwp/WADVkEIFoacgiIavRsRZarx4v0nSt21/3fZvd/myZZIeaLu+O7ut3dGSjrb977Zvtr065/gBAAPqqTSU9QjeoMaM4GFJb5e0WdIJkj4n6agBfv4qSadIWi5pq+1jI+KHHT9/naR1knTkkUf2+aMWTwoJDwC96rU09E1JT5H0yoj4/Yi4JiKmI2K7pMu7fM0eSSvari/Pbmu3W9LmiPhZRPxA0j1qBMNBImJjRExFxNTk5GSPQwaA8qVQSu41CN4XERdFxO7mDbZfK0kR8f4uX3OLpFW2j7J9iKQz1ZhFtPuiGrMB2V6qRqno3p5HX4KISOIPC6AaUqgg9BoEc7318z3zfUFETEtaL+k6SXdJ2hQRd9q+0PaabLPrJD1me6ekmyS9OyIe63FMpWAdFQB1M2+PwPbpks6QtMz2h9vueoqkBVcai4gtkrZ03HZ+2+WQ9M7sXxJYYhdAHilUEBZqFj8oabukNZJubbv9CUnvKGpQVTY9Pc0SuwBqZd5XtIi4TdJttj+dlXpGHjMCAHlEROV7iwuVhjZFxOskfdd2e8fDalR2jit0dBVEEADIY3x8XDMzM5V+3VioxnFu9v8fFD2QVBAEAPJortBb5deNed/+EhEPZRcflfRARNwv6VBJx6vRPxg59AgA5JHCUu29vg9yq6QltpdJul6NTxhfWdSgqqzqyQ6gWuoUBI6IH0t6taSPRsRrJb2guGFVF0EAII+JiYnKn9e75yDIFpd7vaRrs9tG8tWQIACQR51mBOeq8UniL2SfDn6uGp8EHjn0CADkkUIQ9PSKFhFb1egTNK/fK+nPixpUlTEjAJDH+Ph45UtDvS5DfbSkv5S0sv1rIuJ3ixlWdREEAPKYmJiox4xAjXMOXC7pnyRV+zcq2PT0NEEAoGe1KQ1Jmo6IjxU6kkQcOHCAHgGAnqUQBL02i//V9p/ZPsL2M5r/Ch1ZRVEaApBHbXoEapyjWJLe3XZbSHru4g6n+ggCAHnUpkcQEf2ek7h2ePsogDxqUxqy/WTb77O9Mbu+yvZILkTHjABAHrUJAkmfkLRf0ouz63sk/XUhI6o4ggBAHnVaYuJ5EfEBST+TpGzdoeqeZaFABAGAPOo0I9hv+0lqNIhl+3mSflrYqCqMHgGAPFIIgl5f0TZI+oqkFbY/Leklkt5c1KCqjBkBgDxqEwQRcb3tWyW9SI2S0LkR8WihI6soggBAHrXpEdi+MSIei4hrI+JLEfGo7RuLHlwVEQQA8kh+RmB7iaQnS1pq++lqNYifImlZwWOrJHoEAPJIPggkvU3SX0j6ZUm3qhUEP5L0keKGVV3MCADkkXwQRMSHJH3I9tsj4tIhjanSCAKgu4goewiVk0KPoNdm8aW2X6zZ5yP4VEHjqiyCAOiO/WO25GcETbavkvQ8STvUOh9BSBq5IKBHAHTHMu2z1SYIJE1JOiaY93HEA8yD/WO2FIKg108W3yHp2UUOJBU80efGMQIkzuA3l9r0CCQtlbTT9rfVtrRERKwpZFQVxhN9trGxMc3MzPC4gAOlOaQwI8izxAREDXQuzRNv8AIA9o/ZahMEEfH1ogeSCl7wZkvhiY7hYP+YLYX9Y94ege1t2f9P2P5R278nbP9ooW9ue7Xtu23vsn3ePNv9oe2wPZX/VxgunuizpXBOVgwHpdPZku8RRMTJ2f+H5f3GtsclXSbp5ZJ2S7rF9uaI2Nmx3WGSzpX0rbw/oww80WdL4YgHw8GB0mwp7B+9vmuoHydJ2hUR90bEfklXS1o7x3YXSXq/pJ8UOJZFQw10thROzo3hYP+YbdSDYJmkB9qu71bHQnW2T5S0IiKune8b2V5ne7vt7Xv37l38kebAEc9slIbQxIx5thRKQ0UGwbxsj0n6O0nvWmjbiNgYEVMRMTU5OVn84OYxMzOjsbHSHrZKSuGIB8PBgdJsKewfRb6i7ZG0ou368uy2psMk/bqkr9m+T42T3mxOoWGMg6XwRMdwEASzpbB/FBkEt0haZfso24dIOlPS5uadEbEvIpZGxMqIWCnpZklrImJ7gWNCAegRoIkewWwjHQQRMS1pvaTrJN0laVNE3Gn7QtvJfiLZ9sIbjRh6BGiiRzBbCj2CQqM7IrZI2tJx2/ldtj2lyLEsFtbUmS2FIx4MB6Wh2cbGxir/ukHXEwMjCNBEEKSJIMDA6BGgiR7B3JgR1Aw9gtnoEaCJHkGaCIKcqp7sZaA0hCZKQ3Or+gEkQYCBURpCE6WhNBEEOVU92cvAjABNzAjmVvVKAkGQU9X/oGWgR4AmegRpIggwMGYEaGJGMLeqVxIIAgyMHgGa6BGkiSDIqerJXgZmBGhiRjC3qpeUCYKcqv4HLQM9AjTRI0gTQYCBMSNAEzOCuVW9kkAQYGD0CNBEjyBNBEFOVU/2MjAjQBMzgjQRBDnRI5iNHgGa6BGkiSDAwJgRoIkZQZoIAgyMHgGa6BGkiSDIiR7BbMwI0MSMIE0EQU70CGajR4AmegRpIggwMGYEaGJGkCaCAAOjR4AmegRpIghyokcwGzMCNDEjSBNBkBM9gtnoEaCJHkGaCAIMjBkB2jFrTg9BgIHRIwDmV/VKAkGAgVEaAtJGEGBglIaA+VW9XEYQYGBjY2OVn/oC6I4gAICCVf1AiSAAgBFHEABAwegRAAAqrdAgsL3a9t22d9k+b47732l7p+3bbd9o+zlFjmcxVD3ZASCvwoLA9rikyySdLukYSWfZPqZjs+9KmoqI4yR9XtIHihrPYql60wcA8ipyRnCSpF0RcW9E7Jd0taS17RtExE0R8ePs6s2Slhc4noHNzMwwIwBQO0UGwTJJD7Rd353d1s3Zkr481x2219nebnv73r17F3GI+bDELoA6qkSz2PYbJE1J+uBc90fExoiYioipycnJ4Q6uDUvsAqijIg9v90ha0XZ9eXbbQWy/TNJ7Jf1ORPy0wPEMjCAAUEdFzghukbTK9lG2D5F0pqTN7RvYfqGkf5C0JiIeKXAsi4K11gH0q8pvNCksCCJiWtJ6SddJukvSpoi40/aFttdkm31Q0i9J+pztHbY3d/l2lUCPAEA/qr4wY6GvahGxRdKWjtvOb7v8siJ//mKjNASgH81zdlT1QLISzeJUEAQA+lH1c3YQBDnQIwDQj6qXhgiCHKo8tQNQXQRBjVAaAtCPqp/XmyDIgdIQgH7QI6gRZgQA+kFpqEboEQDoB0FQI8wIAPSDHkGN0CMA0A96BDXCjABAPygN1Qg9AgD9oDRUI8wIAPSDGUGN0CMA0A96BDXCjABAP5gR1Ag9AgD9oEdQI8wIAPSD0lCN0CMA0A9KQzXCjABAPwiCGqFHAKAf9AhqhBkBgH7QI6gRegQA+kFpqEYoDQHdzczMaGyMl5S5EAQ1QmkI6I79ozt6BDVCaQjojv2jO3oENcIRD9Ad+0d3lIZqhB5Bd7YVEWUPAyVi/+iO0lCNcMTTXdWPeFA89o/uqr5/EAQ5UAPtruo1UBSP/aO7qu8fBEEOHPF0V/UjHhSP/aO7qu8fBEEO1EC7q3oNFMVj/+iu6vsHQZADRzzdVf2IB8Vj/+iu6vsHQZADNdDuql4DRfHYP7qr+v5BEOTAEU93VT/iQfHYP7qr+v5RaBDYXm37btu7bJ83x/2H2v7n7P5v2V5Z5HgWg+2yh1BJVa+Bonj0CLqr+v5RWBDYHpd0maTTJR0j6Szbx3RsdrakxyPi+ZIukfT+osaDYlX9iAfFY0bQXdX3jyLj+yRJuyLiXkmyfbWktZJ2tm2zVtKG7PLnJX3EtmOej6g+/PDDuvjii4sZ8QJ27NhRys9NwZIlS3T55Zfr8MMPL3soKMmDDz6oU089texhVNLExIS+8Y1vlPbatRAXtSyA7ddIWh0Rf5pdf6Ok34qI9W3b3JFtszu7/p/ZNo92fK91ktZlV39F0t2FDDqfpZIeXXCr0cBj0cDj0MJj0VKVx+I5ETE51x1JFPQiYqOkjWWPo53t7RExVfY4qoDHooHHoYXHoiWFx6LIZvEeSSvari/PbptzG9sTkp4q6bECxwQA6FBkENwiaZXto2wfIulMSZs7ttks6U3Z5ddI+rf5+gMAgMVXWGkoIqZtr5d0naRxSR+PiDttXyhpe0RslnSFpKts75L0P2qERSoqVaoqGY9FA49DC49FS+Ufi8KaxQCANPDJYgAYcQQBAIw4giAH26+1faftGdtTHfe9J1sq427bryhrjGWwvcH2Hts7sn9nlD2mYVtoOZVRYvs+29/Lngvbyx7PMNn+uO1Hss9INW97hu2v2v5+9v/TyxzjXAiCfO6Q9GpJW9tvzJbOOFPSCyStlvTRbImNUXJJRJyQ/dtS9mCGqcflVEbNqdlzodLvny/AlWq8BrQ7T9KNEbFK0o3Z9UohCHKIiLsiYq5PNa+VdHVE/DQifiBplxpLbGA0/Hw5lYjYL6m5nApGTERsVeMdkO3WSvpkdvmTkl45zDH1giBYHMskPdB2fXd22yhZb/v2bGpcualvwfj7HywkXW/71mx5mFH3rIh4KLv835KeVeZg5pLEEhPDZPsGSc+e4673RsS/DHs8VTHf4yLpY5IuUuMF4CJJF0t6y/BGh4o5OSL22H6mpK/a/o/sSHnkRUTYrtx79gmCDhHxsj6+rJflNJLW6+Ni+x8lfang4VRN7f/+eUTEnuz/R2x/QY3S2SgHwcO2j4iIh2wfIemRsgfUidLQ4tgs6czsRDtHSVol6dslj2losid306vUaKqPkl6WUxkJtn/R9mHNy5J+T6P3fOjUvpTOmyRVrrLAjCAH26+SdKmkSUnX2t4REa/Ils7YpMa5FqYlnRMR1T0LxeL7gO0T1CgN3SfpbaWOZsi6LadS8rDK8ixJX8jO5Dch6TMR8ZVyhzQ8tj8r6RRJS23vlnSBpL+VtMn22ZLul/S68kY4N5aYAIARR2kIAEYcQQAAI44gAIARRxAAwIgjCABgxBEEADDiCAIAGHEEAZCD7SfZ/vpiLDNu+xDbW23zwU6UiiAA8nmLpGsW45Pj2ZLVN0r6o4FHBQyAIAA62L7J9suzy39t+9K2u1+vtrVibH/N9q9mlw/vODPV52x/xPY22/fbPtn2VbbvsX1FttkXs+8JlIYpKTDbBZIuzJZRfqGkNVKjlCPpuRFxX9u2z5d0T3b5OEnfa7vvWEnfjIj1tv9K0hVqrEOzV9Ju24eqsSDbbxb3qwALIwiADhGx1Y1V094p6ZS2MtBSST9sbmf7OZL2RMRMdtNxkm7P7lsi6WmS/r75bSVd0TxBie0DkvZn69Pvt31YRDxR6C8GdEFpCOhg+1hJR6jxQt3+4vx/kpa0XT9e2Qt/5jfarr9A0nfaQuJ4Sd/Kvv9ySQ9Ga8XHQyX9ZFF/CSAHggBok51b4dNqnGf2f23//ETkEfG4pPHsaF+STlAWDLZXZV/TLA0dK+m2tm/989mC2gLE9uGSHo2InxXx+wC9IAiAjO0nS7pG0rsi4i41Trt5Qcdm10s6Obt8vKQx27dJOl+N81E0T0ByrKQd2fddIulJWZBIB4fCqZKuXfRfBsiB8xEAOdg+UdI7IuKNtr8v6cRBavu2r5F0XkTcs+DGQEGYEQA5RMR3JN1k+6mNqwOFwCGSvkgIoGzMCABgxDEjAIARRxAAwIgjCABgxBEEADDiCAIAGHEEAQCMOIIAAEbc/wOM8QhFgANm5QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 128\n", "length = 25 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.double_slit(x0=0, size=5 * um, separation=15 * um)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## two levels" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:49.309794Z", "start_time": "2020-05-01T22:57:48.993173Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 128\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.two_levels(level1=0, level2=0.5, x_edge=0)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## gray scale" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:49.749380Z", "start_time": "2020-05-01T22:57:49.430354Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 250 * um, 1024)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.gray_scale(num_levels=16, level_min=2, level_max=3)\n", "t1.draw(kind=\"amplitude\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## prism" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:50.151485Z", "start_time": "2020-05-01T22:57:49.813197Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEKCAYAAAAb7IIBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvv0lEQVR4nO3dd3AUeZYn8O9DOOGNhBfCQ2Map8Z0Q9OOhobuxjWusdMb0bdxM7t7dxt3O3sTsXtzczuzdxM3d7G7s7vXGzNIAmGEp4X3TgJagPAtrDAChAQCJORL7/5QqVuATJnMfFn1e58IAqlUyvyqsip/7/fLzF8SM0MppZR5GkkHUEopJUMbAKWUMpQ2AEopZShtAJRSylDaACillKEaSwfwR1RUFPfq1cvSZRYUFKB169aWLlP5Jzc3F9HR0dIxjFZRUYHGjUNqdxB2ioqKEBkZCSKyfNmnT5/OY+bXPmQhtcV79eqF9PR0y5Z37949zJ07F2lpaZYtU/mnoKAA/fv3t3S7Kv9UVFRg8uTJOHjwoHQUYzEzxo0bhx07dqBjx46WL5+Ibtf2uNgQEBE1J6JTRHSOiC4R0S+dzrBixQqMGTPG6dWqGhITEzFlyhTpGEbbvHkzIiMjpWMYLTU1FS1btnR8vZI9gFIAHzBzIRE1AXCMiHYy8wknVl5YWIiKigq0a9fOidWpWng8Hty5cwe9e/cGM9vS9VUNO3nypBZCwrZu3YrPP/8cTl+YK9YD4CqF3m+beP859tcnJCRg2bJlTq1O1WLLli2YOXOmdAyjpaamYvz48dIxjHbjxg306tULERERjq9b9CwgIoogogwAjwDsZeaTtTznayJKJ6L03NxcS9br8Xhw+/Zt9OnTx5LlqcCcOHEC48ePBxE5XvmoKtWNsPa+5CQmJmLp0qUinwPRBoCZPcw8AkAPAGOIaGgtz/mGmeOYOc6qM0W2bt2KGTNmWLIsFZgTJ05g7Nix0jGMdvPmTcTGxiIiIkIbYCH5+flo0qQJWrVqJbJ+V1wHwMxPARwEMNWJ9aWmpuLtt98GAK18hGzevPmH4R/dBjISEhKwdOlS6RhGW7FiBX7yk5+IrV/yLKBoImrn/ToSwGQA39u93uoDXtU7Ha18nJeVlYWYmJiXzjvX7eCsp0+fonHjxnoNjKCysjI8evQI3bt3BwDjhoC6AjhIROcBfIeqYwApdq9006ZNmD17tt2rUfXQA/Dy4uPjRStPBSQnJ2P+/PmiGcROA2Xm8wBGOrnOrKwsdO/e/aXKU4cfnPXs2TM0atTopcpTDwI7q7y8HA8fPkSPHj1+eEw/B85iZmRkZGDx4sU/PCaxDVxxDMApCQkJWL58+UuP6Y7HWfHx8Vr9C1u/fj3mzp370mP6OXDW4cOH8d577732uElDQI569uwZAKBNmzbCScxVUVGBBw8eoGfPni89rtWnc5gZp0+fxujRo6WjGG379u2YNm2adAxzGoDaqn/lrA0bNuCLL76o9WdagTrjyJEjmDRpknQMo2VmZqJ///5o1Ojl3a9pB4EdU1FRgezsbMTGxkpHMRYzIz09HXFxcdJRjJaSkoJPP/1UOobRVq1a9dLYvyQjGoCNGzdizpw5tf5Mhx+ccfz4cUycOLHWn+k2cMbVq1fRr1+/1ypP5Zy8vDxERkaiRYsWr/1MDwLbgJlx6tSpOie70qEHZ2zbtq3eylO3g/3cVHmaasWKFfjqq6/q/LkOAVksNTUVEyZMkI5htOvXr6N3794ik12pKo8fP0bz5s1FphxWVUpLS5Gfn48uXbpIR/lB2DcA1dOsKjkrV66sd8oBvQ7AftJTDihgzZo1WLhwYZ0/14PAFpOcZlVVefLkCZo2baqVp6DS0lI8fvwYXbt2lY5iLGbGxYsXMWzYMOkoLwnrBqB6mtX66AFIe/ky5YBuA3utW7cOCxYskI5htH379mHy5MnSMV4Ttg2Ar9Os6tCDfcrKypCXl4du3bo1+FzdDvZgZpw/fx7Dhw+XjmK03bt34+OPP673OToEZKEVK1bohV/CkpOTMW/ePOkYRjtw4AA+/PBD6RhGu3TpEgYPHuzKnm5YNgDV06zWnOyqLm7cKOGAmXHu3DmMGDGiwefqQWD77Nq1C1OmTGnwefo5sM/q1avx5ZdfNvg8vQ7AIuvXr9fKU9ihQ4fw/vvvS8cw2uXLlzFo0CCfLvzSBtgeOTk5aNu2LZo3b+7T83UIKEjMjDNnzmDUqFHSUYy2c+dOTJ3q2w3etPq0h6+Vp7KP20+/DbsGoK5pVuuilY/1vv/+ewwYMMCvKQd0O1jr0aNHaN26NSIjI6WjGKu4uBiFhYXw9V7mehDYAtu3b8f06dOlYxgtKSkJixYtko5hNLdXniYIhc9BWDUAmZmZfk92pcMP1srLy0PLli39qjx1G1irpKQEz58/R6dOnaSjGKuyshKZmZl44403fP4dPQgcpFWrVmHJkiV+/Y4OPVgr0MpTt4N1kpKSdOxf2K5du/DJJ5/4/Xs6BBSgvLw8tGjRotZpVpUzSkpK8PTpU3Tu3Nmv39MegHWYGVeuXMGQIUOkoxjtwIEDIXEWXNg0ADrmKW/NmjUBV57aA7DG7t27fT77StkjIyMDw4cP97uw0YPAAXLjNKumYWZcvnxZK09h+/bt0yt/ha1btw7z58+XjuGTsGgAGppmtT46/GCNvXv3BjzZlW4Da5w/fx7Dhg3T11PQ/fv3ERUVhaZNm0pH8UnINwDBTrOqQw/WCKYBAHQ7WGHt2rU666ewYIaidQgoAPv27cNHH30kHcNoFy9eDGqyK61Yg/fgwQO0b98ezZo1k45irBcvXqCkpAQdOnSQjuKzkG8Adu/e7dNkV3XRnU/wgjn4W017AMFp6F6zyn4N3fmuIUZdB0BEMUR0kIguE9ElIvoLf5fh5mlWTZGTk4N27dpp5SmoqKgIxcXF6Nixo3QUY3k8Hty4cQP9+/cPajkmDQFVAPhLZh4MYByAnxLRYH8WoBe8yLPi9FttwIOzcuVKvy+AVNZKSUnBZ599Jh3Db2INADM/YOYz3q8LAFwB0N3X3/d3mtV6cgT1+yYrLi7GixcvEBUVFfSydDsEprKyEtevX8eAAQOkoxjt6NGjmDhxYlDLMPYgMBH1AjASwMlafvY1EaUTUXpubu4Pj+uYp7xVq1Zh8eLF0jGMtn37dnz66afSMYyWnp6O0aNHh2RPVrwBIKJWADYC+A/M/PzVnzPzN8wcx8xx1dOqFhcXo6CgwOdpVhtYf9DLMFFlZSWuXr2KgQMHBr0s3QaBO3z4MN59913pGEZbv349vvjii6CXY9RBYAAgoiao2vknMfMmX38vKSlJK09hO3fuxLRp0yxbng4B+e/MmTMYOXKkNqCC7t69i65du6JJkyaWLM+YISCqetf+AcAVZv6dr78XyDSrynqHDh3y68Y79dEdWGCSk5P11qfC4uPjsXz5cukYAZPsAbwDYAmAD4gow/uvwZJy165dlk52pZWn/wKd7Ko+uh38c+/ePXTu3NmyylP5r6CgAB6PB+3atbNkeUYdBGbmY8xMzPwmM4/w/tvR0O/t378fH3zwgRMRVR3WrVunlaewUK88w0FCQgKWLVsmHSMo4geB/VFcXGx55anDD/7Jzs5GdHS0pZNd6TbwT2FhIcrLy9G+fXvpKMbyeDy4c+cOevfuLR0lKCHVADx58sTyya506ME/8fHxttx3QbeD78Kh8gx1mzdvxqxZsyxdplFDQIFo3LhxyEyzGo4KCwtRVlZmeeWpPQDfeTwe3L59G3369JGOYrQTJ05g/Pjx0jGCFlINgBVXnL5Kdz6+C3ayq/poD8A3W7duxcyZM6VjGC0tLQ3jxo2zfLnGXQfgr4iICOkIxvJ4PLh16xb69u0rHcVoqampYVF5hrItW7bY1gjrEJBypW+//Raff/65LcvWXphvTp48iTFjxujrJejWrVuIiYlB48aNpaNYwvgGQIcefHPs2DG88847ti1ft0PDNm3ahNmzZ0vHMJqdB+D1ILBype+++w5vvfWWbZWnVrQNy8rKQvfu3cOm8gxFT58+RUREBFq3bi0dxTLGNwC682nYxo0bMWfOHOkYRktISNALv4TZffGdHgRWrnPnzh107drV9spTh4Dq9uzZMwBAmzZthJOYq7y8HA8fPkRMTIyt69EhIOUqTlSe2gurn1b/8jZs2GDJlM9uY3wDoJVn3Z4/f47Kykq0bdvW9nXpdqhdRUUFsrOzERsbKx3FWMyM9PR0xMXF2boePQisXEWnHJCnx1/kHTt2LGxvumN8A6DDD7Wrrjx79epl+7p0G9SOmXHq1CmMGTNGOorRtm3bFra33TS+AVC1s2Oyq/roENDrjh8/jgkTJkjHMNq1a9fQp08fR2Yh0CEg5RonT57E2LFjHVmX9gBqt23bNtuuvla+sXP+KzfQBkC9Ji0tDW+//baj69QewMtu3LiBXr166fxXgp48eYJmzZqhZcuWjqxPrwNQrrBlyxbMmDFDOobREhISwrryDAUrVqyw5d4X9dEhICXq5s2b6Nmzp6OVpw4BvSw/Px9NmzZFq1atpKMYq6ysDHl5eejWrZt0FFsZ3wDo0MPLEhMTRU791O3wI4nKU71s3bp1mD9/vqPr1IPAStTTp0/RuHFjxytP7QH8qKysDI8ePUL37t2loxiLmXHu3DmMGDFCOortjG8AdOfzI7snu6qP9gCqJCcnO155qpcdPHgQH3zwgePr1YPASkx5eTlycnLQo0cP6SjGYmZkZGRg5MiR0lGMtnPnTkydOlVk3ToEpESsX79ebLIr7YVVOXz4MN577z3pGEa7cuUKBg4ciEaNzNg1mvFX1kOHHqpegzNnzmD06NGiGUy3fft2TJs2TTqG0ZKSkrBo0SKRdRt3EJiI/khEj4joomQO0x09ehSTJk0SW7/2AIDMzEz079/fmMrTjXJzc9GqVStERkZKR3GM9LstHoDMYJuX7nyAlJQUTJ8+XTqG0VatWoXFixdLxzCaiaffijYAzHwEwBPJDKa7evUq+vbtK155mjwElJeXhxYtWqBFixbSUYxVUlKCZ8+eoXPnzmIZjBsC8gURfU1E6USUnpubKx0n7KxatQpLliwRzWB6L8zEytNtVq9ejS+//FI6huNc3wAw8zfMHMfMcdHR0dJxwsrjx4/RvHlzV1SepvYASktLkZ+fjy5dukhHMRYz4/LlyxgyZIhoDr0OQDlKK095a9aswcKFC6VjGG3Pnj34+OOPpWMA0OsAlENKS0vx5MkTdO3aVTqKsUNAzIyLFy9i2LBh0lGMtnfvXkyePFk6hgjp00DXAEgDMJCI7hHRn0jmMcm6deuwYMEC6Rg/MHEIaN++fcbueNziwoULGDJkiCuKEOMOAjPzQmbuysxNmLkHM/9BMo8pmBnnz5/Hm2++KR0FgLk9gN27d7tm6MFUa9asMfLgbzUdAjLQgQMH8OGHH0rHeIlpPYCLFy9i8ODBxjZ+bvDw4UO0b98ezZo1k44CQA8CK4fs2rVLbLIrVcX0ytMN3HgShFFDQMp5ly9fxqBBg1xVebopixNycnLQpk0bNG/eXDqKsYqKivDixQtERUVJRxGlDYBhVq9eLTbZVX1MGgJasWIFvvrqK+kYRnPDBZCvMu4gsHJWbm4uWrdu7brK06QeQHFxMQoLC6EXNcqprKzEtWvXMHDgQOko4rQBMIgbxzxNs2rVKlf2wEyyY8cOnXbbSxsAQ5SUlOD58+fo1KmTdJRamTAEVFlZiczMTLzxxhvSUYx26NAhV954R4eAlG3cPNmVKUNAu3bt0spT2NmzZzFixAhj3nMNMb4BMKHyZGZcuXIFgwcPlo5SJxO2w/79+/H+++9Lx6iVRPUpITk5GfPmzZOOUSu9DkDZYvfu3ZgyZYp0jDqZUI1lZGRg+PDhRvytbpWdnY3o6Gg0bdpUOkqddAjIYSZ8IPfv3++6K39N47a5l2oT7j0APQnidcY3AOHu/PnzGDp0qOsbunDe+dy/fx9RUVGurjzd/v4IVmFhIcrLy9G+fXvpKHXSg8DKcmvXrnV95RnuOx+tPOUlJiZi6dKl0jFcRxuAMPbgwQN06NDBNZNd1SdcewAvXrxAaWkpOnToIB2lQeG6DTweD7KystC3b1/pKPXSg8DKUvHx8Vp5Clu5cqXrphyoTTj3wrZt24bPP/9cOoZPdAhIWaKoqAhFRUXo2LGjdJQGhevOx+Px4ObNm+jfv790FJ+Eaw/g+PHjeOedd6RjuJI2AGHKjZNd1Sccdz4pKSn47LPPpGP4JFwb4VOnTuGtt94Kib/PtQeBqcpiIvob7/c9iWiMvdFUoCorK3H9+nUMGDBAOopPQuHDGYijR49iwoQJ0jGMtnHjRsyZM0c6hmv52gP4ZwDjASz0fl8A4Pe2JFJB2759O6ZPny4dw2jp6ekYPXp0SDVu4dYLu337Nrp164bGjRtLR3EtXxuAscz8UwAlAMDM+QDce1Kz4Q4fPox3331XOoZfwm3ns2HDBnzxxRfSMXwWSg2VrxISErB8+XLpGD5z7RAQgHIiigDAAEBE0QAqbUulAnbmzBmMGjUqpD7QoZTVF3fv3kWXLl3QpEkT6SjGev78OZgZbdu2lY7iar42AP8AYDOATkT0dwCOAfi1balUwJKTkzF37lzpGH4Lpx5AfHx8SFWeQPhNBhcfH49ly5ZJx/CLRCHk0+AYMycR0WkAHwIgADOZ+YqtyZTf7t27h86dO4dc5RlOPYCCggJ4PB60a9dOOoqxKioqkJ2djV69eklH8Zsrh4CIqC+AW8z8ewAXAUwmonZ2BlP+0wu/5CUkJIRc5VktXHoAmzZtwuzZs6VjhARfh4A2AvAQUT8A/w9ADIDVtqVSfque7CpUK89w2PlUVFTgzp076N27t3QUv4VLL4yZcfLkSYwdO1Y6it/cfBC4kpkrAMwG8E/M/J8BdLUvlvJXYmJiyFae4bLz2bJlC2bNmiUdw2hpaWl61a8f/DkLaCGApQBSvI8FPdBMRFOJKJOIrhPRz4Ndnqk8Hg9u376NPn36SEcJWDj0AE6cOIHx48dLxwhYOGyDLVu2YMaMGdIxAuLmyeB+gqoLwf6OmW8RUW8AK4NZsfe00t8D+ATAYAALici99yx0sa1bt4bsmx4Ijx5AWloaxo0bJx0jYOGwDW7evInY2FhERERIRwmYK4eAmPkyM/85M6/xfn+Lmf9nkOseA+A6M99k5jIAawGE7l5MUGpqakhXnuFg8+bNmDlzpnSMoIR6DyCUD8BL8fUsoP5EtIGILhPRzep/Qa67O4C7Nb6/533s1XV/TUTpRJSem5sb5CrDT/UBr1Cv4EJ553Pr1i307NkzpKccCPX3z9OnT9G4cWO0atVKOkrA3HwQeAWAfwFQAeB9AIkAVtkVqiZm/oaZ45g5Ljo62olVhpRNmzaF/IHHUN/5aOUpT++6FhhfG4BIZt4PgJj5NjP/NwDBzjaWjarTSav18D6mfJSVlYUePXqEdOUZ6p4+fYpGjRqhdevW0lGCFqq9sPLycuTk5KBHjx7SUYLi5oPApUTUCMA1IvoZEc0CEGxf6zsA/YmoNxE1BbAAwLYgl2mUcKk8Q3kagnC5+C6Ue2Hr168PyelPauPWIaC/ANACwJ8DGA1gCYCg9jze6wp+BmA3gCsAkpn5UjDLNMmzZ89ARGjTpo10FGOVl5fjwYMHiImJafjJISAUG2FmxpkzZzB69GjpKCHJ17mAvvN+WYiqU0Itwcw7AOywankmCZfqv1oo7nw2bNgQNpVnqPYAjhw5gkmTJknHsIRrh4CIaAAR/RsR7SGiA9X/7A6naldRUYH79+8jNjZWOoolQnHnw8w4ffo04uLipKMYLSUlJaxufuR0IeTr0cP1AP4VwL8B8NgXR/li48aNOtmVsGPHjmHixInSMSwVar2wq1evol+/fmjUSG9tHihfX7kKZv4XZj7FzKer/9maTNWKmXHq1CmMGRNet2QOtZ3Pt99+i08//VQ6hmVCsRe2cuVKLFmyRDqGZSROhqi3B0BEHbxffktEPwWwCUBp9c+Z+YmN2VQtUlNTw+5G46G287l27Rr69OkT0lMOhLrHjx8jMjISLVq0kI4S0hoaAjqNqttAVn9C//KVn4fu7GMhauvWrfjNb34jHcNyodQDWLlyJf7qr/5KOoblQmkbhOOFX667Ixgz9wYAIooE8O8BTEBVg3AUVccElINu3LiBXr16hV3lGUo9gCdPnqBZs2Zo2bKldBRLhdI2KC0txePHj9G1a/jNSO/W6wASALyBqnsD/yOqZu9MsCuUql1iYiKWLl0qHcNo4Vh5VguVHsDatWuxcOFC6RhhwdezgIYyc82pmg8S0WU7Aqna5efno2nTpiE92VV9QmHnU1ZWhry8PHTr1k06iuVCpQfAzDh//nxYXQNTjYhQWVnp6Dp97QGcIaIfJjsnorEA0u2JpGqzYsUKLF++XDqGLUJl57Nu3TosWLBAOobR9u/fj48++kg6RtjwtQEYDSCViLKIKAtAGoC3iOgCEZ23LZ0CUFV55ubmonv312bLVg5hZpw7dw7Dhw+XjmKbUOiF7d69G1OnTpWOYQvXHQSuITxf8RCRnJyMefPmScewTShMBnfw4EF88MEH0jFsEwq9sMuXL2PQoEEhkTVQrjwI7J0Cus5/doc0GTMjIyMDI0eOlI5itJ07d4Zt5VnN7Y1wUlISFi1aJB0jrOg11C53+PBhvPfee9IxbOfmnc+VK1cwcODAsJ5ywO1V9aNHj9CmTRs0b95cOoptXDsZnJKzY8cOTJs2TTqGrdy+89HKU144n35bkyuHgJSMzMxMnexKWG5uLlq1aoXIyEjpKLZzay+suLgYBQUF6NSpk3SUsKN7FhdbtWoVFi9eLB3Ddm4+CGxK5enmXtjq1avx5ZdfSsewnZtvCq8clpeXhxYtWuhkV4JKSkrw7NkzdO7cWTqKI9zYCDMzrly5gsGDBzf8ZOU3bQBcypTKs5obdz6mVJ6Ae3sAu3btCvuzr6rpQWAFoGqyq6dPn6JLly7SURzhxp0PM+Py5csYMmSIdBSj7d+/Hx9++KF0DMfoEJDCmjVrdLIrYXv27MGUKVOkYzjKbb2w8+fPY9iwYa4sEMKFNgBw1xufmXHx4kUMHTpUOoqj3LQNAGDv3r1GzTnjxp3s2rVrjZp7SQ8CC3DbG3/fvn2YPHmydAxHuW0bXLhwAUOHDnVdLru5qRF+8OABOnTogGbNmklHCWvGNwBus3v3bnz88cfSMYymQ3DyTDsJAtCDwCLcdA76xYsXMXjwYOMqTzdtg4cPH6J9+/bGVZ5ues+9ePECxcXF6Nixo3QUx+kQkMHWrFljzGmHbmVi5VnNLY3wqlWrsGTJEukYRtAGAO544+fk5KBt27ZhPdlVfdywDYqKilBUVISoqCjpKI5zSw+gsrIS169fx4ABA6SjOM6Yg8BENJeILhFRJRHFSWSokUVy9T8wufJ0yzYwZeoNN0tJScGnn34qHcMYUj2AiwBmAzgitH5XKS4uRmFhIaKjo6WjGKuyshLXrl3DwIEDpaOIcUMv7PDhw3j33XelYxjD1zuCWYqZrwDuqPzccAAyKSnJ6MrTDdtgx44dmD59umgGSW74LJ4+fRqjR492RRYJxgwB+YOIviaidCJKz83NlY5jucrKSmRmZmLQoEHSUYx26NAhTJo0STqGKOlGeP369Zg7d65oBtPY1gMgon0AapvM5hfMvNXX5TDzNwC+AYC4uDj5PqrFdu3ahU8++UQ6hjjJnc/Zs2cxYsQIYytPQL4HcPfuXXTu3BlNmjQRzSHJzTeF9xszh8R19NLDDwcOHMBvf/tbsfW7gfTOJzk5Gb/85S9FM5guPj4ef/ZnfyYdQ5wOARkkIyMDw4cPF98Bmiw7OxvR0dFo2rSpdBRxUoVQQUEBKioq0K5dO5H1m0zqNNBZRHQPwHgA24lot0SOalJv/HXr1mH+/Pki63YTyV6Yyaff1iRZhCQmJmLZsmVi63cLic+B1FlAmwFsllj3q6Te+Pfv30dUVJRWnoIKCwtRXl6O9u3bS0dxBYlG2OPx4Pbt2+jTp4/j61Y6BCRGK095iYmJWLp0qXQMo23duhUzZ86UjuEKOhmcAIlu14sXL1BaWooOHTo4ul63ktgGHo8HWVlZ6Nu3r6PrdSupnnBqairGjx8vsm430oPABli5cqVWnsK2bduGGTNmSMdwFad3PidOnMDYsWP1JAhB2gDA2Te+x+PBzZs30a9fP8fWGQqc3vkcP34cb7/9tqPrdDOJnfDmzZsxa9Ysx9frVnolsACn3/gpKSn47LPPHF2n2zm9DU6dOoW33npLK89XOLnzycrKQo8ePdC4sch5KMrL+AbAaUePHsWECROkYxht48aNmDNnjnQMoyUkJOipny5gfAPgZLcrPT0dcXFxWnm+wsltcPv2bXTv3l0rz1c4+Z589uwZiAht2rRxbJ2hQIeAwtyGDRu08hQWHx+vlWcdnNr5JCQkYPny5Y6sS9VPGwCH3L17F126dDF6sqv6OLHzef78OQCgbdu2tq8r1DjVA6ioqEB2djZ69uzpyPpCiV4HIMCpbld8fLxWPXVw6o2v20CeHn+pnw4BhaGCggJ4PB6d7EpQdeUZGxsrHcW17N75MDNOnTqFMWPG2Loe5TvjGwAnegB6xkP9nNgGmzZtwuzZs21dRyhzohd2/PhxTJw40fb1hCo9CByGKioqcPfuXfTu3Vs6irGYGSdPnsTYsWOlo7ia3Tufbdu26TUwLqMNgM22bNmiVzsKS01NxTvvvCMdw2jXr19Hr169EBERIR3FtfQgsAC7u10nTpzAuHHjbFt+OLB7G2zdulXn/WmA3TsfnXnVNzoEFEbS0tJ05y/sxo0biI2N1crTB3btfPLz89G0aVO0atXKluWrwGkDAPve+Dr84xs7ewB6tynf2NkD0Htf+EYPAguw641/69YtxMTEaOUpKD8/H02aNNHK00d27HzKysrw6NEjdO/e3fJlq+AZ3wDYRU/9lKcXfslLTk7W+14Le/LkSZ0/M74BsKPb9fTpU0RERKB169aWLjdc2bENysvLkZOTgx49eli63HBlR0+YmZGRkYGRI0davuxwZNcQ0G9+85s6f2Z8A2AHrTzlJScnY968edIxQorVO59Dhw7hvffes3SZyj9XrlzBwIED6/y5NgAWKy8vx8OHDxETEyMdJWRYXfkwM86ePYtRo0ZZtsxwZ0cPYMeOHZg2bZrlyw1XdmyDpKQkLFq0qM6fG98AWL3z2bBhA7744gvLlqf8d+TIEUyaNEk6Rsix8nOQmZmJ/v37o1Ej43cxfrFyG+Tm5qJVq1aIjIys8zm6dSzEzDh9+jTi4uKkoxgtJSUF06dPl45htFWrVmHx4sXSMYzmy+m3xjcAVvYAjh07ppNdBcDKbXD16lX069dPK08/WTn8kJeXhxYtWqBFixaWLdMEVn4OSkpK8OzZM3Tu3Lne54l8Sojot0T0PRGdJ6LNRNROIofVvv32W53sStjKlSuxZMkS6Rghyaqdj174JW/16tX48ssvG3yeVJm0F8BQZn4TwFUAfy2UwzLXrl1Dnz59tPIU9PjxY0RGRmrlKaikpAT5+fno0qWLdJSQY1UvjJlx+fJlDBkypMHniuytmHkPM1d4vz0BQOxkbau6XVp5Bs6qbbBixQp89dVXFiQyj1U7nzVr1vhUearaWfE52LNnD6ZMmeLTc91Qrn4FYGddPySir4konYjSc3NzHYzluydPnqB58+Zo2bKldBRjlZaW4smTJ1p5BiHYnQ8z49KlSxg6dKhFiVQg9u7di48++sin5za2KwQR7QNQ26fxF8y81fucXwCoAJBU13KY+RsA3wBAXFyc5ZfJWVF9rlixQi/8CoIV22Dt2rVYsGCBRYnMY0UPYO/evZg8ebIFacxkxefgwoULGDp0qM/b07YeADN/xMxDa/lXvfNfDuBTAIvY6SnwLFRWVoa8vDx069ZNOoqxmBkXLlzAm2++KR0lpAX7MdyzZw8+/vhji9KoQKxZswYLFy70+fm29QDqQ0RTAfwXAJOYuUgig1XWrVunlaew/fv3+9zlVfa4ePEiBg8eLHJXK1Xl4cOHaN++PZo1a+bz70gdA/gnAK0B7CWiDCL6V6EcQXW7mBnnzp3D8OHDLU5llmC7vrt27fL5oJeqXbA7bl9PO1R1C/ZzEMjptyI9AGbuJ7Feqx08eBAffPCBdAyjXbp0CW+88YZWnhYIdOeTk5ODdu3aoXnz5hYnUr4qKipCUVERoqKi/Po9N5wFFLJ27tyJqVOnSscIecFUPqtXr653sivlm2AaUL3wyxrBbINAp94wvgEIdOdTPc2qXvglJycnB23atNHK0yKBfA6Ki4tRWFiI6OhoGxKZJ5BtUFlZiWvXrtU77XNddO8VoIamWVX208pTnk76Jm/Hjh0BT35ofAMQSA/Al2lWle8C2QbVlWenTp1sSmWWQIYfKisrcfXqVQwaNMiGROYJdDTi0KFDAU9/bnwDEAitPOUlJSXpWScW83fns3PnTnzyySc2pVG+OHv2LEaOHBnw8QNtAPzk6zSrynf+vnkrKyvx/fffY/DgwTYlUr44cOAA3n//fekYYSOQnXhycjLmzp0b8DqNbwD87Xbp+c728Gcb7N69WytPi/n7OcjIyMCIESP09FuL+bMNsrOz0alTJzRt2jTg9RnfAPjDn2lWlX3279+v118IW7duHebPny8dw2hWzEFmfAPgT+XjzzSrynf+bINz587hzTff1MrTYv68nvfv30dUVFRQlad6nT+fg8LCQpSXl6N9+/ZBrdP4BsAf/kyzquyhcy/Zx9edj54EIS8xMRFLly4NejnaAPjI32lWlfUePHiADh06aOUp6MWLFygtLUWHDh2koxjL4/EgKysLffv2DXpZxjcAvna7/J1mVfnO122glad9fN0GK1eutKTyVK/zdRts27YNM2bMsGSdxjcAvghkmlVlrRcvXqCkpAQdO3aUjmIsj8eDmzdvol+/sJjLMWQdP34cb7/9tiXLMr4B8GVIRytPe/lS+eiUA/by5XOQkpKCzz77zIE0ZvJlG5w6dQpvvfWWZUPRxjcAQP0HvwKdZlVZp7KyEtevX8eAAQOko4S1hhrho0ePYsKECQ6lMVND22Djxo2YM2eOZevTBqABWnnK08pT3nfffYe4uDg9CULQ7du30b17dzRubN1tXIxvAOobfghmmlXlu4aGgI4cOYKJEyc6mMg8De3Yra481esa+hwkJCRg2bJllq7T+AagPsFMs6qscfr0aYwaNUorTwfUtfO5c+cOunbtiiZNmjicSFV7/vw5mBlt27a1dLnaANTj4MGDAU+zqnxX3859/fr1QU12pYIXHx8f9JQDqmH1fQ7s2gbGNwB1dbvOnDkT1DSryj+1bYO7d++iS5cuWnk6oK7PQUFBASorKy2vPFXtatsGFRUVyM7ORmxsrOXrM74BqMv69esxb9486RhG08pTXnx8vOXjzso/mzZtsu34i/ENQG2VT3Z2NqKjo3XKAYfUtg0KCgrg8XjQrl07mVCGqa2nW1FRgbt376J3794CicxT2+eAmXHy5EmMGTPGlnUa3wDURi/8kmfVZFfKd6/ufLZs2YLZs2cLpVEAkJqainfeece25WsD8AqrpllVvnu1+vR4PLh9+zb69OkjlEgBQFpaGsaNGycdw2hbt261bN6f2hjfALza7dLKU0bNbbBlyxbMnDlTLoyBXv0cpKWlYfz48YKJzPPqNrhx4wZiY2MRERFh2zqNbwBqsnKaVRW4tLQ0yya7UoHZsmULZs2aJR3DaImJibYfgBdpAIjoV0R0nogyiGgPEXWTyOHN8sPXVk6zqnxXs/I5ceIExo4dK5zIPDU/B7du3UJMTIytlad6Xc1tkJ+fjyZNmqBVq1a2rlOqB/BbZn6TmUcASAHwN0I5APw4/GDlNKsqMJs2bdLKU0j158COKQeUb6q3gVOnQIs0AMz8vMa3LQH4di86G1k9zaryX1ZWFmJiYiyd7Er55+nTp4iIiEDr1q2loxirrKwMOTk56NGjh+3rEjsGQER/R0R3ASxCPT0AIvqaiNKJKD03N9eOHGBmnexKUPU20IuO5NTcBnrxnYzqbeDkRai2NQBEtI+ILtbybwYAMPMvmDkGQBKAn9W1HGb+hpnjmDkuOjralqx2TLOq/PPs2TM0atQIbdq0kY5irPLycjx8+BAxMTHSUYzFzDh79ixGjRrlyPps2+Mx80c+PjUJwA4Af2tXlvoQERISEvC73/1OYvUKVdsgPj4eK1eulI5itA0bNmD+/PnSMYxFRDh8+DAWLFjg2DqlzgLqX+PbGQC+l8hRrWPHjjrZlbBu3bqhZ8+e0jGMRUTIzMxEXFycdBSjnTt3ztEp6KXGPP6eiAYCqARwG8CfCuXA4MGD8eGHH0qtXgHo1asXfv3rX0vHMFqrVq3wp38q9jFUAFq3bo1f/epXaNTIubqcGroHpZsQUS6qGgxJUQDyhDO4hb4WP9LX4kf6WvzILa9FLDO/dhA1pBoANyCidGbWfjL0tahJX4sf6WvxI7e/FjoVhFJKGUobAKWUMpQ2AP77RjqAi+hr8SN9LX6kr8WPXP1a6DEApZQylPYAlFLKUNoAKKWUobQBqAcRzSWiS0RUSURxr/zsr4noOhFlEtGUGo9P9T52nYh+7nxq+xHRfyOibO/9HDKIaFqNn9X6uoQzE7Z5fYgoi4gueN8L6d7HOhDRXiK65v0/LO+xSkR/JKJHRHSxxmO1/u1U5R+875PzROTMhD/10AagfhcBzAZwpOaDRDQYwAIAQwBMBfDPRBRBRBEAfg/gEwCDASz0Pjcc/R9mHuH9twOo+3WRDGk3w7Z5fd73vheqC6WfA9jPzP0B7Pd+H47iUfVer6muv/0TAP29/74G8C8OZayTNgD1YOYrzJxZy49mAFjLzKXMfAvAdQBjvP+uM/NNZi4DsNb7XFPU9bqEM9O3eV1mAEjwfp0AYKZcFPsw8xEAT155uK6/fQaARK5yAkA7IurqSNA6aAMQmO4A7tb4/p73sboeD0c/83Zj/1ije2/S31/NxL/5VQxgDxGdJqKvvY91ZuYH3q8fAugsE01EXX+7694rxk+AT0T7AHSp5Ue/YOatTudxi/peF1R1XX+Fqg/+rwD8bwBfOZdOucwEZs4mok4A9hLRS7P7MjMTkZHnm7v9bze+AfDjvgU1ZQOoedeMHt7HUM/jIcXX14WI/g1V93UG6n9dwpWJf/NLmDnb+/8jItqMqmGxHCLqyswPvMMcj0RDOquuv9117xUdAgrMNgALiKgZEfVG1UGdUwC+A9CfiHoTUVNUHRDdJpjTFq+MW85C1cFyoO7XJZwZsc3rQkQtiah19dcAPkbV+2EbgOr7ey4DYFJvuq6/fRuApd6zgcYBeFZjqEiE8T2A+hDRLAD/CCAawHYiymDmKcx8iYiSAVwGUAHgp8zs8f7OzwDsBhAB4I/MfEkovp3+FxGNQNUQUBaAfwcA9b0u4YqZKwzZ5nXpDGAzEQFV+5PVzLyLiL4DkExEf4KqKdyducmtw4hoDYD3AEQR0T1U3dnw71H7374DwDRUnRxRBOAnjgd+hU4FoZRShtIhIKWUMpQ2AEopZShtAJRSylDaACillKG0AVBKKUNpA6CUUobSBkAppQylDYBSPiKiSCI6bMUU10TUlIiOEJFejKnEaAOglO++ArDJiqubvVNH7wcwP+hUSgVIGwClaiCig0Q02fv1/yCif6zx40WoMacNER0iokHerzu+cleo9UT0T0R0jIhuE9EEIlpJRFeJ6A/ep23xLlMpEdr9VOplfwvgv3unNh4J4HOgasgGQB9mzqrx3H4Arnq/fhPAhRo/GwYgjZl/RkT/FcAfUDVnTC6Ae0TUDFWTpr1l35+iVP20AVCqBmY+QlUzm/0nAO/VGO6JAvC0+nlEFAsgm5krvQ+9CeC892fNAbQD8H+rFwvgD9UzPxKRB0CZd674MiJqzcwFtv5hStVCh4CUqoGIhgHoiqoddM2dcjGA5jW+Hw7vDt9rdI3vhwA4U6NxGA7gpHf5PQDc5x9nYWwGoMTSP0IpH2kDoJSX9z4HSai6d2shEf1ws29mzgcQ4a3uAWAEvA0CEfX3/k71ENAwAOdqLPqH3gFqNBxE1BFAHjOX2/H3KNUQbQCUAkBELQBsAvCXzHwFVbe6/NtXnrYHwATv18MBNCKicwD+BlX3QKi+CcgwABne5TYHEOltQICXG4P3AWy3/I9Rykd6PwClfEREowD8R2ZeQkTXAIwKZuyeiDYB+DkzX23wyUrZQHsASvmImc8AOEhEbau+DWrn3xTAFt35K0naA1BKKUNpD0AppQylDYBSShlKGwCllDKUNgBKKWUobQCUUspQ2gAopZShtAFQSilD/X/TGRhN+UWkEgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 1024\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.prism(x0=0, n=1.5, angle=1 * degrees)\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fresnel biprism" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:50.441296Z", "start_time": "2020-05-01T22:57:50.182982Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 1024\n", "length = 500 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.biprism_fresnel(angle=1 * degrees, x0=0 * um, radius=125)\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fresnel biprism from material properties n and h" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:50.802323Z", "start_time": "2020-05-01T22:57:50.510677Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 1024\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.biprism_fresnel_nh(x0=0, width=100 * um, height=5 * um, n=1.5)\n", "\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## standard lens" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:51.088981Z", "start_time": "2020-05-01T22:57:50.805211Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 2048\n", "length = 500 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.lens(x0=0 * um, radius=250 * um, focal=5 * mm)\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fresnel lens: amplitude and phase" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:51.104691Z", "start_time": "2020-05-01T22:57:51.101174Z" } }, "outputs": [], "source": [ "num_data = 1024\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:51.560230Z", "start_time": "2020-05-01T22:57:51.252551Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAABg1UlEQVR4nO29aZRlR3Um+u3MrMrMypoHilJpKgkhIRnJkmUGg9cyIGTEEoOfMSA3jenG0P1s+vUDL3uBG2O1cK9Hd/vRbfejjWWDMV60MbbAyI0YBVi2kbAEEoVmhEpDDVLNQ1ZmVlZVxvuRN7J27rt3DOecm3lv3vjWypX3nhMnTtx74+wd3/52RJBzDgUFBQUF/YuBxW5AQUFBQcHiojiCgoKCgj5HcQQFBQUFfY7iCAoKCgr6HMURFBQUFPQ5hha7AbnYuHGjO//88xe7GQUFBQU9he9973v7nXObtHM95wjOP/983HPPPYvdjIKCgoKeAhE9aZ0roaGCgoKCPkdxBAUFBQV9juIICgoKCvocxREUFBQU9DmKIygoKCjoc3TMERDRJ4loLxHdb5wnIvpDInqMiLYT0VWdaktBQUFBgY1OMoJPAXhN4Px1AC5q/b0bwB91sC0FBQUFBQY65gicc3cAOBgo8gYAn3azuAvAWiLa0qn2FBR0GmVJ94JexWJOKNsK4Gn2fmfr2B5ZkIjejVnWgHPPPXdBGldQkIqjR4/ipptuwsjICE6ePInf+Z3fwcqVKxe7WQUFyegJsdg5d7Nz7mrn3NWbNqkzpAsy8LnPfc489/TTT5vnCtrhnMONN96ID3zgA/i93/s9vO9978ONN9642M3qOYT6Xai/FjSDxXQEuwCcw96f3TrWt7j33nsX5D4/+MEPzHM333yzee6+++7D448/nnWvkydP4vjx41nX9BJuueUWXH/99diwYQMAYPPmzXjVq16FL33pS4vcss7h2LFjOH36dNY1999/Px599FHz/B//8R+b50L9tSk453Dfffd1/D7disV0BLcCeHsre+glAI4459rCQv2Ez3/+8x2r+9Of/vTc65MnT5rlQueefPJJ7Nu3L+u+9913H77xjW9kXdMphD5bFTjncNddd+GVr3zlvOPXXXcdvv3tbzd6L6D59lfFF7/4RfzoRz/KumbPnj3Ytcse5506dco8xz8378dN4vTp0/jiF7/Ykbp7AZ1MH/1LAHcCuJiIdhLRO4no3xLRv20VuQ3A4wAeA/AnAH6tU23pFYQehrp45JFHku4TcxK5guj09HRWeQ0PP/wwvvzlL5vnv/KVryTVc9NNN9VuC8fXv/51vPrVr1bPvfjFL8Zdd93V6P0+/OEPJ5ULfR9/8zd/g507d9ZuS+7v6pyrPADh/ZX34ybhnOvo89ft6GTW0A3OuS3OuWXOubOdc59wzn3cOffx1nnnnPt159yFzrkXOuf6fknRWEf8h3/4h8p18wct9YE8evToPAZQZUQ6PT1dO5vm8OHDmJiYMM/ffvvtSfUcPBhKYsvHN7/5TVx77bXquTe+8Y34u7/7u0bvl9r+b37zm+a5Y8eO4ejRo7Xa4Zyr5OB5/9m9e/e83zS1T9ZhRbHnJzfctZTQE2JxvyDWEb/61a9WqndmZgYzMzNz7/nDdOjQIfPc/fffj7vvvnveucVgBJOTk8H7pmoQR44cqd0Wj/HxcaxcuRJEpJ4fGhrC4OBgI5/fI7X9oe/DOYfJycnabanLCO644455ehM/d+rUKRw+fNg8VxWh58c5VxxBQT5uueWWxjtOrJPHzk9MTGDv3r3qddyQ8gfrM5/5jDnql6OvKqOxEydO1GYEU1NTwfMpjuDEiRONGECPL33pS7j++uuDZa655ppG9ZEmHAEQ/z5jaIIRyPf89RNPPIFbb701Wo5jz5490TbFnp+mn+eJiYmeSRoojqAifvjDH0YN3J/+6Z9m1VnFEczMzMxR/UcffVSlv/I6/l6ek6Mv6UB6lREcOXKk0Qlf27dvxxVXXBEs87KXvQzf+c53Grvn5OQkTpw4ES3XC4xAvpcG3uqj1jPyla98ZU77sH7r0PNVRSOIPd9TU1Md0zSaRnEEFTEzM2MaFn/8iSeeAJA+0qjiCJ588knccsstc+etB4Af5/VI457DCJ555pmoYdI0gm9961vYvn178DqOmOFKcQR14+IcMzMzICIzLOQxODgY7CdVkPI5Yt9HjiP4p3/6p7YdAVMYwfHjx9syzELGPuQkpCPQvk9uyD/1qU/hwIEDbWWaYAQ8hOSf75Ad4GHXbkZxBBUR6jS///u/P6/MX/3VX+HHP/5xrToBvSOnjJZio37rXMhJALMx16eeeirYZs1gHDp0SDVGf/RH+nJTTYSGmtQH7rvvPlx55ZVJZS+66KKk3z4Fzrmkz1E1NKR9/xMTE/Pi9R4xR/DII4+0sdOqjEBeZz0n/BqtTBOOYPv27XPhHl/eP+9V6+wGFEdQEadPnzZHAv7B8R1venraHBk88cQTc+l+VRgBHyGFHhDLoIfOaYwg5Bg0aBqBpRvs2LFDraPbQkO3335729wBC9deey2+9rWvNXJfIM2hVQ0Nad+/c66N9aVqBCHDL8/z+mSYRtZjPSe+/1tlYqEhf/0tt9xizpc5ffr0XHt8fZqjlHV2O4ojqIjQD+zP8f+WETp27Fib47CQwgj8fQ4cOIBnn31Wvc4y9tooLWT4U1JDNYNhhZOskWpTjCAWyknFkSNHsG7duqSyW7duxZ49zcyTJKJGQkPW92n9LtpvGHMEmrPIYQQpbGHnzp1z34c0/rmOgJ8/cOCAma7Mjbv8r6E4giWOkHH3P77vWLGO4uup4gis6x944IG5OHxII+DnQvTcnw85hiNHjuCOO+6Yd8xyBNp3ZxmoECOYnp5OGp0eOXIEq1atipaLwTmX7VCaYiJjY2MdZQTa928xAnnsa1/7WtuxGCNIHfXz1/zcd7/73XkpqP64NRIPPYf8mthIPvX5LoygDxASgXIYAe8oTWgE3ClYDsYabcWyhGKhokOHDuHhhx+eV0ZjDZbhrsIIQhPNOI4ePYo1a9YklQ3hRz/6EZ7//OdnXbNly5ZGWMGaNWuSGMHk5GSwf+Z+zxpTkL/h9u3b5zmgWCioDiPw77lTaIIRpDyLuYygiMVLHNK47927F7t27ZrXIeWIYXJysm3EXJUR+A5mGXxrtCXfhxhBzPBLY6AZfc2INMkIjh8/njTiPnr0aCOM4Dvf+Q5e+tKXZl3z0pe+FHfeeWfte69evTqJEczMzJij/iqMICU0pJWTcf/UfhjSCHzZ0Gt+PTfEqRqBNpL/xje+MVeXZAT+/44dO+bpBYUR9AHkD/zwww/jwQcfnJcuKBnB+Ph42wqjvJ5UR3D48GF8/OMfb7teOhXtNWBnDdVlBJp4nOocQsdD6Y7Hjx/H0FB8W41Tp04llYvhxz/+MS688MKsay6//PJGVtBMdQQDAwNBppTjCID238VyDjnisDavIGUgY5WTRpdn9Ehx10Io6+jOO++c6+8WI/j+978/l1Jq1dOtKI6gIiQj8O81wx4KEaVk/fB7ALPGlXfuGCMITSjjxryuRpAaBqoiFluj/omJCYyNjannOoVcjWBoaKgRg7Bs2bKkSU8rVqwwdQLnXEfE4lxxGLBDlqF5BPx9yCn41ydOnGgbwWuQjECW1RyAZATy+S+MoA8gY3+asZfHYgJW6oglZPxjx4HmGIE0/JbBSE0fraIRHD9+HCtWrDDPN4kTJ05gZGSk0rUDAwMLFi8eGxsLMoKc7zknfTQnFBRzDFUYQex4XY1APseaRiCvKxrBEkdTjKCKRiApbI5TCJXL1QhS1iJKERqB8EjVn9dw/PjxBWMEDz74IC677LJK1z7vec/L3tSnKmKMwEIdsRjQBwr8vqmOISb8phh/7TmsoxEURlCgwvL8C8EILOOf4hRC2Rq5oSBNPNZCQymM4NSpU+ZDEwrFLGRo6L777ouuL2ThiiuuWLAdsGKMwPo+U8XilGNVGIHVL+sygpTQkDyfywh8f7YiBd2O4ggqohOMIDV9NDccZDkLWU4a9ioagUSqRhDSAUJYyNDQjh07cP7551e69gUveAEeeuihZhtkYMWKFclptRzWb5DKCHI1AsvAp2YNyXJWjL/TjMAfK4ygD2F5/lDWUCcYgbw+xSmk6AXynPZejva11Unl/QCdEcRmD3dDaAjIF4o9li9fnrQkRxOIhYaszzAzM9PWxlSNQMsCCjkGIH1+SxVGoBn1TmkEzrm21FKPohEscXQia8iXP3ToEA4dOgRgvgHMYQShMJG8v4c24s/RBFKXJs6ZWxDDQoWGqrRtsVCVEWhGH0j/XWOGv2r6aEgj0J63FEbgf8+9e/difHy8VtaQP1YYQR/C/8C7d++e9z5VI/D72Wod+d57752LJ3/0ox9tO18na0iO0JsWi1MMpqYbhBgBEQUZQSw0dPr0aQwM1OvqTz75JM4777xadaxfv15dHrlpjI2NVRKLgfbfwWIEWr11QkP8vTa69yPrprKG/HN11113zYXsNEbB950OMQL5rPuZ5MURLHH4H9wv3asZ+5CoxJey5Y7D1+GP8X1qJcPQrudlNaeQOrvTn4tpAlIsltCMeJOMYHp6GsuWLQuWOXr0KFavXp1dN8fDDz+MSy+9tFYdTegERBQNNzTNCFI2wwGanVAW66faNRZT0Ebw/rniz5tm2P1zaonE/B6+zNTUFP7sz/6sMIJ+gIwJ5mYNWUadn7Ne12UEHCFGoNHjHMcA6DF1Syy2YtchRmDdg+PIkSO11xl66KGHcPHFF9eq4wUveEHbWky5WLlyJcbHx4NlYowg9H1pzEzTA2QdGiOQWURaWJTDYgS8bKrxjzEC7XXsWUxhBF4j9PagaARLHFqnyNEILOHXqkOrzx+r6hSs+j1ioZ6UJSaA9lCCtmtXaLJWyHCliLdNMIJDhw5h/fr1teo455xz5rZTrIqUhef8zmi5GB4eVsNA2u+qfe8xRhCr1+qLdcJBQHiAFWMEmqNJdRKFEfQBLJqYyghCnVNzGHJk0xQjkEtM8PV4tAc5lxGkYmpqCsPDw+b96oi1TTCCJhBjNilIXW/IQogRaI4gp96YRiDBzw8NDZlLTAD5xj+HEcSeRV4uVSPQwkfdjOIIKsL/4NJ4N8EItA6ppaVadfrXlkbAhVN5DY+3yxG/NCBVNQKg3TBYjODkyZNYvnx52/EcdIsjaAKpS1GHYDmCkZERVSyWsJyZDAXJ/sDvK439smXLzFTmgYGBLI0A0JMwQqGhFEYgn+fCCAraNIKqjMA6Jo24lfmjdUZ5XJa3jL1kBFonDjGC1KwhzRBZjGBychKjo6PROkOo6wgOHjyYvCNZDKOjo5WEXI+6jACwBWeLEWi/Vyw0JN9r/YL3r6GhoXlGVzqJnJG/fJ0SGpLtiQnC/JzmAIpG0CeoohFoBjxVIwjpBrlhIm7sQ4wAmP8Ay4c/tj+Bv6YOI5iamsLo6Gjt0FAdjeCRRx7BJZdcUvl6juc///l49NFHK1+fwghC35VzDiMjI6rBHx4erswIJAPQwjuSEXCEGAF3EkA4zVS7PiU0VDSCgkqQnYKPAKoyAm30rzkRjXXw67XXg4ODc6+lI7AYgQZLaPbXp2ChGUHd3ckefvjhxhxB3RTSJhjB6OiouidBXUYgBwJS8A0hNOrnjmBwcDCa/RMy6vK5sTSEXEYgGUDRCPoEVbOGtHNNMgLrtTfwIUZw8uTJeYxAjublwy/Pp4rF1twCzRHEGEHK/SYnJysvHw3MTiY799xzK1/PccEFF2DHjh2Vr1+zZk3UEYQyqZxzGB0dVdNENaaQwwhkKEjrL9b5VEYg2UGKXsDL8J39PFIYgS/H/1t1yP+9gOIIKkJ2qFSNQIv9e6RqBCEtwHrtDbw26rf0A82ghAyvlWaYYqynpqZUY90EIyCiymsEAbO/tWdUdTE8PJy8ZIOGsbGx6DyCGEKMQHMQqd9dTBwOQWoE8pzvW1X0gpBwbGkEVrkUjYD/LxrBEkddRmA5DqtzW4zAyiDir7nxl4yAP6zSSaQwAonUWL4sZzmCGCNIMVJ19IVOoE576i6V0RQj0CaUxa7LYQT8XIgRaCEefhzQjX5u1hCvM4UR+BBxYQRLHNYIIJcRxMJFVtYQvyaFHXBHYAnC2jmJlAfe4/Tp0xgaGppX5vTp0+ro2goNxRhBp438zMxMLTbRjchlBBpSdQOPmGMIMQLOAmS5FKcQEo5TjX5VRlAcAQAieg0RPUJEjxHR+5Xz5xLRt4joXiLaTkSv7WR7mkRKTDCXEQA2lbVG/ql6gSUWc8TE4lxGMD093TYHwMoOssIv3hFohkRqGp3AM888gy1btjRaZ2iZ6KYQ0lQsR2BlE8VG/9axlP7iwcM/2rmqGkHqSN96BotGUBNENAjgYwCuA3ApgBuISK7a9UEAn3POXQngrQD+Z6fa0zRi8wissFGIEXhoo/xTp07NhQWsThzK6PEPoRYaCmkEoRF3LHTkR/nSOchjIUxNTZmri05OTnZ8U5rHH38cF1xwQaN1XnDBBbW2razLgqzQkLXEhHbPGCPQwkdavR48NCSvtRyBNP68rdpgamBgQGUE8lkBmmMERSMAXgTgMefc4865aQCfBfAGUcYB8AneawDs7mB7GkUsJmilkfLrgTMdcmZmBgMDA0FG4EfMFiOQRl2OcgBdB/AInfP3jxkhzehznDhxImumcCg0NDExkeQI6oR2OuEILrzwQvz4xz9utE6J0EY4FiOwRuU8NOMxODg4r5+m9IsQQ5AjfXnOt8tKH5X31xjB0NBQcKSvXZ/LCLgdKIxgFlsBPM3e72wd47gRwNuIaCeA2wD8O60iIno3Ed1DRPfs27evE23NhvT4odF/jBH4UYk3wlY5Huf38OwDmP/waKMcf9wK/8hzvG4rDBNiBNro34eGchiBVT7VEdQZQTeZOurRaUfgnDPDTyGx2KpLZjo557B8+fJg9lPOgAFoF4s5UhmB73+83wJnngXuvLRsIN62uozA2rGsW7HYYvENAD7lnDsbwGsB/AURtbXJOXezc+5q59zVmzZtWvBGarBigtrUco0RaPqBF1YtcUtjBJKOa0yBg4d/NNpvjZ79mj/cuWkOJUUj0ERhea1HE4ygDppY60iiifWCYghtYG8xAgtayEhLg43NG+D/JVLF4oGBgXnPlnUNdwrcEWgjff9aMmBZLiQEa0ygMIJZ7AJwDnt/dusYxzsBfA4AnHN3AhgBsLGDbWoMMY0glxFYoR/pKPi1QHgJB+14LIOIg9ctGYHfECY08tM0giqMwBKLUxyBD7ktJcRCXUTUKCOQIrLGCOTvo/1ePDQjQ0WpjEDew+r7mlHn99dG+tx5FI2gOdwN4CIi2kZEyzErBt8qyjwF4FUAQEQvwKwj6I7YTwSxLAErQwiY7RyaI/GMQGMOMvNHewBSJm9pjsC6RuoHnBFoI2UtNCTLaLpBCHUZwfj4OFauXJl8v17AsmXLopPSmmYE8n4pE+N4f/TOI8XYh8RiC5Y4ncII/PPGF+NLzRqyBnuFEbTgnDsF4D0AvgrgIcxmBz1ARDcR0etbxX4DwLuI6AcA/hLAO1ydgO4CwhoBpDACaehTNQLOGDi0MBE/zsEF4ZT0S4sRSMeg3dMSi3OyhriDlEhxBMeOHau84FwnQ09S9MzB6tWro6GlGCNIdQReI9AYgQwXyVCQNPyhzKDQ8iWWiG31IXk8JBbz59Kf584jNLPYh4JDjKBXHEF4hbGacM7dhlkRmB/7EHv9IICXdbINnYLMErA6BH8tnYU8FtMI+EheM/6pjMAb9Bgj4JCGXxvtp4rFOYwghBRDffToUaxatapS/U888QS2bdtW6doYtm7dil27duG8887LvnbVqlU4duwYNm60o6ghRpC7AU2qRiD7kXcEvt+EGIGsxxvloaGhSoygikaghY5Cz7E8FrIH3Y6lFTxdQKRoBDLmrzEC3mFC6aEpjIDDcgpNaQT+fYwR5IjFKe3gSHUEVRlBJ1JHPc477zw89dRTla5NZQSaI3DOZWkmnhFIPSAWGnLOtYWwQoxAggvEWvqqVoe1tpFm6LWRvs8q8oZclvMDMF8HL180gj5GTCOQM2U1RuA7r6UR8I6rMQKtTbxe+ZrXYxlz7bqqGoE2ocwSi3Pz/TsdGtqxYwfOP//8StfGcO6551Z2BJ4RhFBl9rK1OF8qI5DgDCCFEXA9gTuN0BwDPvK36uSG25qp7+/D9QJ/TrJ3D56OamkEvYLiCGoiFBvkjiAkIEmNQJtZzLOGOELhoBRGYM0p4BPcAFsjCLXFYgS56ZiWg+h0aGj//v3B8EsdnHPOObUYQcwRhEJD1vfpjCycqvMIcjQCidCyEvweFnzd3PhbjMA/b/4+msagGXfpCLT/vYLiCGrAYgS+g3gKzkcX/n8qI9Cyhvy9JbghDs0HSGEEMXHYG/nQw2gxghyx2MMKDcV2L6vDCIB6s5JDyM3c4Vi1alUwNORceEJZDjSxGOgMI+D3lIzA2vaSMwItNMSNfyxrSGMEWtjHnxsYGJj3vBdG0IfwnUFqBX7xNI0RyBgjP5eiEXgDbgnEKVlDqRqBpQlY77V7NjGhLISYxgHU0wg6japOJiU0VIURWLCyhrgj0OoMaQSxdlgrjnKk9JcURqBpBBwxRjA4OKjagdhn7CYUR1AR3gDLbAE+QvCGXTICLesnJWtIYwSW8bdmefJVPkNZQ6dOnVI1Aeu9ds+mGEHK4ncW6oSGOo2qI8ZYaIiIzCWlqzICOfpPmVAWYgRetOaDIj4Kt8Riq19bwjEPb+ZkDaUwAv6ca3YgFv7qJhRHUBOWNqAxAkt0khoBH1XwkYbGCPz1GmIPvTaqD2kCcmaxFuuvwwg6gapLREjH2ylUcQYrV66MMoKQAco910RoCGhnBMuXLzfTQkNicQq07zVlHoGmEZw6dWrOaVmMoGgEfQrJCDSNQDICLRPB0ggkFU0xTKEJOhpCjEDqB6npoxypjCBmDFPmRzSN3bt3Y+tWuUZis1i/fj0OHz6cfZ1c+dOC9p3FvkdtZJ+yxIRWjwwNSUZgLSshGUEoNJTT5+toBNo5jRHI/4UR9AlkTDDECOQ1/Bwvb3XWWNaQNJgxQ6DF2H3HjYnFcqQts4yAdEawEBvM5OKpp57COeecEy9YA+eeey6efPLJjt6jCVhLTMQmpcXE4tD6QtwRpMzCln1dM8CxrKGQRqCd0xhBr6066lEcQQV4T89jgpwhaI6Aw+psdRkBhzW5hiM0qpcagV9kjl8bm1egOQJNW7B2LeOfZaEZwdNPP9348tMSdeYSpIw0rbV3ckapWtaQpRvI6zTD769JYQT+XGhhxZQJZR45jIDXI409r086Cc0u9AKKI6gAPjqXncMKDVmMwJ/TNIJcRgDAfM3Le4TmEaSmj8rzHJYwLB+OqakpDA8Pd9VDs1CMoKoj6ASIqG2ZZyBPI+C/dYwRyPf82tAkMg0pAwVu6L3+ZmkEcvVS/73wcxoj4Nf0EoojqAD/48tYoH/P84ut61M1Ao+UrKFcQxoKyaRoBLF5BaHvgCPECKzZrp3GxMQExsbGOnqPTZs2YTE2WgpNKEsx+pZGwMM5Whk5ocxaOkKWtRAaYGgzjqVzkcJuLGtIgs8X0uxAYQRLHDwFU3YcnlecwgiAdo3AQ7IEa/SusYCcBehCYjF/HwoFWVlEWjvkMc8ItM/lyy10aGgh0KmQV6jO2P20MJAm1loppdaIP0cjiDkJjtgSExx85C4zhGIaAW+b/934c67ZgV5CcQQVoDECoD2eaI2GY/MIpN7gr+lE1lAsNGQxAk0zqDJjGLA3q8ndu6AgDaG+MTIy0jb/QEtXthhBSAPQGEGKWGwhVyPgDk0z3rmMwJeXDqQwgj4BH51rqwsSUVQjkJ1WM8pSi6iTNRQa9YfEYl42NKEshxHI9liMwG9Kk1JHwRmERsm8r2gGTmMEGjRhVToH/j5FI5ATyursQaBBMgJpvLV5BPJ7koyARwA4+MziXuinxRFUQEgjkCGi0PVAmBHIXcl4fXJugkTOPAINqRqBR8raQ4CetWJpBH7j+qqoOilsIfZC9mjaUKTURUQYHR1V0z9TGYFWpxzxxxadC4366+xBwF/zY5IRyNnK1lyBUButrCH/PnXOx2KjOIIK0DQCiRgj0FYm1Zat5vexwjgcMRbAUUcjkIbfmsHbKUaQYvDGx8crLS+xe/dunHXWWdnXVcGGDRtw4MCB7OusXbuA8CDAf28jIyPqonepjECrV2MEndYIrHZq7eZGWQvnhOYK+DIWI7CyhjS20I0ojqACQhqBLBO6Hjjz0PrQEK9LLhBn1ec7qF/tNHXD9rpZQ9qSEzHDoWUBWSP/ECPwm9qHUHXBuYV0BGeddRZ27dqVfZ218JwMa1hGyNrAXlujSHMs2jEtSyiWNRTSCOpkDWmILW3Nj8kUUau+wgj6GNroXMZlqzACuZZQCiPQQkspq3ICaYvOeWiOIYURWOD3tNYfCjGC1E1pqjCCPXv2LJgj2Lp1K3bv3p19XWjhOd8nVqxY0WbUvbGyGIG2nISE5exDoaGFzhrSnILFCHz/krqBvMbfRzICuXgeh6aldCOKI6gAzgi4NqAZe210boWBtKwhLhZbo3yNPVgbvnOkMAIOfn/5GSxGYKWPclgTyrwj0NDJbSoXkhH4vYtzkcIIQruUafshEJE6j8BiBPJ3DYWGAH3ROWtCWV1GEMoa4kafX6cZ7RRGwJ2RtAeFESxhpEyUkmmk0knw0b+lEeSkjHLj3wQjSFlUjhsDK2vIgmQEodCQZog66QgOHz68YHsYbNmyBXv27Mm+LrQ5jf++rD0JvFishYakWJzDCGSWUEr6qLWYXA4j8KHRGLR5BPyemtGWziHXyBdHsIThxWIez5fGijsCGdLhBl4acn/Mcg4S2hIVkhFYsVMtZdXSBOR5iRyxWMsaCoWGtPt2MjSktbFTSBn5akjZrlJjBLliMWAzAnlcG/FzxyCNahPzCHidfHkMKzQkGQF/dnM1Au0c7+/eWRSxeIlChnE8tNCQxQgsjYCXC034kvfko/vQdbx+PuqXhlYuOgfom4JYWUQ58I5AXhsSizvJCBYaVZyOxQj4dzg2NqaGhixG4JxT00dD9+CQhl+GMuWzkrroXOiePNwjl7jQyoYYQVWNQGtjKNzUjSiOoALkMhJap+MikjZRzJpH4JHLCPj1nBHMzMwEGYEf9cv75zKCuktMaAZ/scTiXpgNGtqu0rdf0wFyGYH1e6dkDfHrtXqsCWVA+mY0KZvce/A1gTSjn6oRSHFZOwfY4aZuRHEEFaAtI6FNKLMWnwvNI5B1hBiB3HZS0wh8HdoEG35NysYzIUagLS+dCis0FGMEsUXh5DaV3Wrgq3xnVmhIisW5GkFKaCg1a0jrL7yOHI1A67+8nDfM1paWEqGNZji0iWfa/AE5WEkJLXUTiiOoALlBfYpGYIWGQhpBTCyWxl8uR5ESJvL03Zfz7ekkI5D1WA6vLiPQWFYMx44dw8qVK6PlmkRsty8NKWLxihUrshlBiljM78ER+hxaPVpoyJdL1U5kuIdP/rLAnQYP9WiMQgv/+HIhRsDDR0UjWKLwBsZaGtqXsRafS9UIYqEhKRBzjcAb8RSdAWg3/DKjSBMH+fucRedSR+ahSWOdWgZiz5492LJlS+P1hlAlc8iKPfPvf3R0VGUE/lyTjEBbYkL2mZhGEIrha59TMoKc2cgpGUJWOWtGcUyX6GYUR1AB2mjfmlCWygg05xAz4tbI32IKvH0efuRy8uTJNo0gtjk9fy9XI5X1x+rRwNNHqzCCKljIOQQeVecSWOCMQDoC31cXYokJfn2KRuCXzYiJxZbDkKGhUNtDy1BzpDICPmAqGkGfwBvtOoxAE4alU4lpBFIL4CwglxHIuQepGoFHzjyC1JhzaBJdiiOoogkshiM466yzKs0u1iA1As3YA7qQDKBt32lA/71ioaEqGgE3/r4d1ihbYwFyn2MrJCOF3twJZSmMILQOUTeiOIIK4BqBNYM3VMaaRxALIUnI1UklC9BG+pbgK8tZ6xVZjCBliQne3hyBVDM6k5OT0ZVJq4iwC7m8hMfmzZvx7LPPNlZfiBH486nx/FisnUOL61tLQGjlZdye12FlFFkrioZWDfXX8awhSyPQJpRxRiCdjcwoKhoBACJ6DRE9QkSPEdH7jTJvJqIHiegBIvpfnWxPU/DGXcsa4mWqagTaJDENWjjIv67LCLTPFGMEsdCQ32jGqic2gtTqbhp1JqFVxcaNG7F///7G69UWkPOwJonVKSudS6j/aOGfkHjMYTGC2DwB7pS0DCMt1FOXESwpjYCInk9EtxPR/a33lxPRByPXDAL4GIDrAFwK4AYiulSUuQjABwC8zDl3GYD/O/8jLDy0yWJVs4b4sdB8A6sdIV0gxZlYjMCCxQhS5jycOHEiyBqqjOCXApocNYYcd8618hjRmZVM+TEOGRqK1Z3DCDgsRiBfhwxwaBlqrRz/HClZQ0s1NPQnmDXYJwHAObcdwFsj17wIwGPOucedc9MAPgvgDaLMuwB8zDl3qFXv3tSGLyaa0AgssZh3zJT0UR4aStEILGNrMYLQ+xD8RDY+KvTzBWJCnkRu+TpYCs6oE0xJG+1LxFI+5TV8SQjrek1sDjGCUGjIYgS83tOnT88LRdVhBP75XEqOYIVz7p/FsVie1lYAT7P3O1vHOJ4P4PlE9E9EdBcRvUariIjeTUT3ENE9+/btS2xy56DF/6swAh+HlyMsSyyW94jNHchlBCnzBuSI0zKcmmaQuzBdXXTCIHY7mnBk2gCAZxNZ9/BZP74MN6haP5L34amgTTACGRqSdXhGEJtHwJet4PH/ECNYqhrBfiK6EIADACJ6E4D8JRPbMQTgIgA/B+AGAH9CRGtlIefczc65q51zV2/atKmB29aDphEA8zt3CiPQwkG8Y2r1a+0A0jUCyzhqDqOOIfVGf7EYwfT0dFKoi2MpsAGgvgPUxOLh4eEoI9COxb5TKQJbjEATiyUj4EbbMtK+zqazhmQf7TWNIPVJ+XUANwO4hIh2AdgB4G2Ra3YBOIe9P7t1jGMngO86504C2EFEj2LWMdyd2K5FgaYRhMpYjEBqDLIzpYjFsawh/toSXFMZgZVxpEEb/XuxOHSPlOMpqCL6Vt3asiloo+QQtIFGJ5yZzzKSjMAa6PgyMfG/CiOQI/eUDCLeZo+m5xHwti5ZjaAV578GwCYAlzjnXu6ceyJy2d0ALiKibUS0HLOawq2izN9ilg2AiDZiNlT0eHLrFwnazGLfAXzH8mGfVEbAr/POQbvWchQWC9DCRxq4w/Cfp8oIz8NiBN45dJoRjI+PZ688unfvXmzevDnrmqawdu1aHDlyJOualStXYnx8vO14yJnkfo8hRpCyNEYofVQixAhkOW19odjMZIsR8HqrMgL/7HNtwXIW3YggIyCi9xnHAQDOuY9a1zrnThHRewB8FcAggE865x4gopsA3OOcu7V17loiehDAaQC/6ZzL38l7gZGiEQCz35PFCPiogqexSSMuHQG/dyhryC/3wOvzmUH8AeGMgOflayJdiBHIcyFGkCpC1wlxVFkz6Nlnn8VznvOcyvesg+c+97l45plnsHbt2uRrVq9ejaNHj2LNmjVzxxaSEXhH4NeD4uAhTl6PPM/hxWKNEWhicey1JeTysryd2mcIMQJrtN+LGkEsNOR58sUAfhpnRvSvAyDF4zY4524DcJs49iH22gF4X+uvZ5CSNSTLcki2cOrUqblOyA16jE3w+/OZxSHtwGIEJ0+ebDOcOYxAHm+SEVTB+Ph4JUewbdu2DrUoDD+p7JJLLkm+JrQUtYUU5yoNNqCvQZSzWF4qI5CjeE2v8MxBjuyHhobm2pOSNZSSXhpiCX2TNeSc+4/Ouf+I2fj+Vc6533DO/QaAnwJw7kI0sBshY/zWLFxf1pp9LM95RsCNuzTcoUlknBFom9SEJo1p54A4I7CQwwhi9VUJDVXRCBYzNOQZQQ48I5CoyqSsMI7PGpJGn7MECa57ae3KZQR8Fi93GCGxODdriN8zZOz7ViMAsBkA7wXTrWN9CZk1JOPrsqw1F4Cf89dKgy6vtRxFzEHI1xLaUhQpjCBHLI4xgiZZQhVGsG/fPmzcuLGxNuSgyjITGiOo8x2GfhPN6IcmkKXULRFiBFoIKCYcSwNuzSPImSsQOtcPWUOfBvDPRPSF1vs3AvjzjrSoByA1AsvY85i/FjO1GAEXd0MzkENZQzkL0GmMIFUjsKCFhixGEDMSVcXiXEZgZU4tBNatW4eDBw9mXbNq1SrVeTQ9f0LOI/D1ayxBXhfTCPj5ZcuWYXx8XGUkFguwlpiQ6w5Zxpw7hRgjkPMNrAX6JCNYChoBAMA595+I6MsAfrZ16F855+7tXLO6G1Ij8P9jjECe54aZzz8ITQaTI3y/Xr9m8C2xmMPf1xvBmBFpihHErg8Z/tiMa2BxNpipA82oxKBtTpP6+8TOSQwPD7exj5yNaFLu5Y364OCgOonMZxTFxGLpOKShl8ZcYyL8vOUkQgOamKDcbUhyBER0LoD9AL7AjznnnupUw7oZMv1TLhnhU8l8J8rVCGKMQIaGvLBsMYKhoaG2uiWsCWXaiC60D7JHiBHw/G1Lm+DbV8p2TE5ORpegrhIa6jWsWrXK3Jyev7ay2ixoYnEsNJRSl8YI+DFv7LUEDGnkJyYm4Jy+xIQmIsu0VH/e1ycNOzf2UrAOpab2qkaQGhr6ElqzigGMAtgG4BEAl3WiUd0O6QBigrA14SamEWgPcI4WkCMWh8Iip0+f2ReAlw2FbKanp9sMsWcE/CGy9iv221RqSNmLYGJiwrx+qWDlypVRjcDvRKZ9F6kTwmRoyCPGCHj/yGEEmlhsrSkkY/2pk8u44KsZ9pABDzECv35Sr2kEqRPKXuicu7z1dxFmF5S7s7NN617IPYut8I/UCDz861jWkDaKk7qAp9EhjSBFLA4xAhk20tYR4kYDiGsE/lho43pvvKTDSd2drOlYeaeR215rmWlej9yukn+P1naV3DD68lbWUEr6KO/f8pgMp1gTyiyx2Nq8XnMKkn14jUCmcPvrQ3MELFFbswu9oBFU2o/AOfd9AC9uuC09A00jqJs1pGkE1jV1GAE39nzUFmIE/JzFCGR7UzWCkCPQjgOd2abSasdCI2Q0NGEy5jyszWkAewN7OfqXE8o8UhgBN7jyc+Smj8YYgQwHxRhBaBZyVUbAmcZS1Aj4hK8BAFcBaGZvvR5ESCPgsBiBN6AxjUCD1BBk2Cdk/EN7DuQIydYmNBwhRgCcMQYpjEBCOoLUOHjo/N69exdtVrHHhg0bcPDgwawU1pgoG9qucmRkRJ0HMDIygqmpKaxcuXIeI6iiEfClpYmozTDKUXoofVSKxanpoxYjmJycNLOG+PWSyWjt9NAYQS84glRGsIr9DWNWM3hDpxrV7eBLRFhZQ3yE7zuDnHTGjbSlEfBzvD5fNjSnIKYR+BGlDCdxSLbg30sjLycjWRPKZGYSH/nL437Ji6qhIe2zWFjM5SU8nvvc5wbnEqSGjkKhIQ5v8OV1GiPgoSEuIPtj2ujYMwk/ygfsUX/oXKpGYLEAjRHwPmUxgpixl4xMYwS9ohGkisUPOuf+mh8gol8C8NdG+SWNkEbA4Uf4y5cvV+OF8jqNEeSKxZxpAPNH+iG2kcIIeFnpNKzQkHxQuOgMzDICb/B5HdwRSExMTGD9+vVt96+jCSzmrGKPzZs345lnnsFll1XPwdAYAXcE/DuSjsBfy5lCLGvImlnssWzZsnmsQW4+o6Vcap8nphEAtlisjfhlKqkcqMkF5WR563MvdY3gA4nH+gIa9YuliGq575pGwA26HGXLayy9ADiTlx4Ti3MYgQwNhQwvZwRabNsjFBpKZQRNiMLPPvvsojuCTZs2IXfjJe2z82Ox0JAmFksRuo5GIENDoV3MqmoEWqw/pAFIFpuqEXCnZGkEvRoaiq0+eh2A1wLYSkR/yE6tRnyHsiWLXI1gcHAQU1NTQUcgy/NjHNKw+7KepcjrZHlrhzBJl3kdlljs32tI3Y0s5AjkqN9DCw2lpCeG0A2hoSqOIKYRjI6O4vDhw+q1IUcgGYE24U0LF0lw487fe/D+zUf38vPEGAEXpgE9NKQ5TZ41xPWrUNZQSthoSTkCzArC9wB4PYDvsePHALy3U43qdnijK7OG/EQrOYIPMQKpEWjsgr+W6aNyhC+vk2KxNKBEFM1UsdJH6zACHhrSROGFZgQpk9Q6jfXr12cvM6FBMoJUjcA6LlODPVIYgdQRQozAC8IWI0idWRx6zdvG7ysNuxbb98+Kxgh8H12SWUPOuR8A+AERfcY517cMQEIuI23FAvkI35o8JkfxPlZvCWrcefDX/nr5OiQWh8CFMMkAeNaQF7VlO32Z0GbmwKwj0Nbgj2kETTOCbkCVZSYkcrOGtNVLtQwhDTlZQxYj4AhpBNYMYm5opUYgj2uhHK4RyHkEVriIDwIlJBNo4jddCMRCQ59zzr0ZwL1E1PZpnHOXd6xlXQwvespOMT093fajW4yAaHbTGj9q5oZ7eHjYfFis0BBvG39tMQjfSeVoW9ZjMQLuULTQmP+OtPolI2haI7CE4yaYQy8glDXEv8cQI/AOQusbvv4q6aMhsdgbzRyNwDLelnAsP4MvKx2fNpLn7F8yd+5U+OBvSTgCAP++9f/6Tjek1+AN+fDwcJJGEFs3iJcfGxubexi0UJN3HqEMIy40+2yImHDsIcW0WPpoqh6gwRr5hxhBbJVQK720Fx7IECyjHNoPo0poSBOLNeSEhlIYgb9Oez80NDTXJs4IeNu80bUch0y+4GLx8ePH25yD5gj44E8bwPAy09PTPTP4iIWG9rT+P7kwzekN+M7GjXxK1pDMlw+tNcTBQ1GnTp2aM3IyNMTr0V5bYSLZbi48W4yAryOkLTnhEWMcKYwgBnmPKpvSdAtynZUP/YyNjanXj46OVsoakmKxhpCx9IgxAkvAlZCTyCxnwo27FjKS5fgo3vocvqxkBKGsIe58emEAEgsNHQPAPwW13hMA55zL2x18icA7gpSsIb+aoma0Q/MI+KiFOxwZ6gllGEnwuQL+tSYEavMGeEYFTx+VmkEK6qaPxh6s3JVHU1ZT7QZobVy1ahXGx8fnHIEsF5rQlCsWp0CmgOZoBPxeRDS3gFtILLYgQ0MnTpxQ07F5fTFGwJ/11KyhXnEEsa0qVznnVrO/Vfz/QjWy2+DDLVbWEEcoa4iP0DlLsGYbc0fhj1vrGGkd0LMALkr7+/Cyci2hmEbAQ0Py81dlBNq6RCFIRpDjCA4dOmSmqi40PPNLhVyBNGZ0+O9TlxFokOGiFI0gFA7yZblYzL8jbVTur7VmFvvrpFjMwa/3daYwArniQK9oBMmLzhHRVUT0fxHRvyOiKzvZqG4HZwShTIKqGoHFCAB94pjWPg1aaEgz3HKWcUwjyN3Zy2IEWlv8/9DDJK/L3Z1s//79i7ZFpURuCunKlSsxPj4+71jqCD7ECOQSExwpAnKqRmAxFh7nlzH/lPZoE8rqMgL5rGtYkozAg4g+hNmtKTcA2AjgU0T0wU42rJthZQ1Zxj5lZrGWUipTQKVTCMFiBL6e2AJ0GgPw72UoKCQWW0ZJYwR1Hhh+bW5oqJscQe6kMukIcr5DK9bOxeJYffK8NPQxRpAy09i3VUsttfqXFIt9PTzc5J+RUKqoPJbKCPiyFUvGEQD4FwB+2jn3u8653wXwEgD/snPN6n5oGkFoprBm9DXHkcMIUjqYjP1zjcDaXEYKybFlqLlYHAoDaW2y9JUcyAcyVyzuZUfgNQKOVEZgldMWnUuFZAQxjUBzBDzz5+TJk20aQahN3sBbM4utyWOpjqAKI+gFpDqC3QB4CscwgF3NN6c3YGUNWfn01kherjUkNQCPFEYgU0elged1V2UE/DxnALlicSdQhxHs27cPmzZt6kSzshFyBJqTzdUILPDRtVwoLgQZbpEaQUgz0N5zaAIx7+c8xVqCG3JNL9CyhlJCQyFGwK/rtayhVEdwBMADRPQpIvozAPcDOExEf0jz1yDqG1gaAV9dk8e4Y0tMeHBGoDkRTWD294uBj/R51pC8VgrJKaGinPRRfqyJEZPGCHJDQxs2bKjdjiZQNzQE1P9OuXENhV80WFlDvl5NI7AYgS/rX8cyhfy1/l4e3Pjz0bwmLPN25TACIlJXHOgVR5C6DPUXwDauB/Dt5pvSe/A/+IkTJ4KMALBj/zxcxMNNHBYjyBFQZT0pO5JpjECmi8rQUDcglxF0wzpDHhs3bsT+/fvVc9pvqjmCKsg1+BYsBhAKDXGjyvt0bsqoBA8xhSaXxZaY8MdDjMBPIOOTzXpJI0hyBM65P+90Q3oN3GhPTEy0ZQ3xURVnDxwxjYCHi6ysoRAssRgIMwJLI/BrKeWEhmKMoAnI+rrNMeUgdeTrsWrVqqzQUO73HsoQ0uDDSjxUlCsWa4ygiiPw4Mbfp33zz1FHI+CCs7bqaK8wgtSsoeuJ6F4iOkhER4noGBG1r1bVZ+D5wlbWkCzLYWkElnOQGoKVDsfPyfv59X+kRsDrijECKRbXWWKiykPStADXK4KeBm2ZhyqfJ8QIcsViafhD6aOhmcaSEcQWMPTXy/CQtu4Q7+9SN/DXWBrB4OBg25wh6ST8fXqFEaRqBP8dwK8A2FAmlM1CyxrS5hHIOQccVbOGtNCQ9rCGOiCfR2BNKPN1aI7BmmegfU8pmUSpsK5rKvW015EzoayJ+iRyJ5TFsoZC2T6pbef1aPH9GCOQE8q0Pt0XjADA0wDud73wiRYQ3uPHlprwZWPzCOSIX+oLVlYRLxsSYXmoKpY1xJef0Dai4ZlJKYzAsxGrbaHjsm3S6fTyiL4TWEzGxBkAN/yhCWWWgedlYyEz2f85LEbgB0C5WUMeFiPgA8Ne6ZupYvFvAbiNiP4ewFyCsXPuox1pVQ9Ai//nMoJQqqhkBNqyErFOJkf6HCdPnpzbECamEVizkHldMUcwPT09bykJzWGljDMmJyfVjWzKGGUWTaSPhuqL1c9DQ/49X5sqlREAZ8JBPrafs/QGoGsAqYwgxBJCjKBXs4ZSGcF/AjCB2bkEq9hfEET0GiJ6hIgeI6L3B8r9IhE5Iro6sT1dAy1EpEEL6WgaAc8aktlFFmOw2hU6J0f9HDIUxOuT4SiZRWSBrx1UZ5SkOYLU+rRydfSNTqKO8ZCfMzW+HqvP93HeNunQ5YQyH0/PmVDm6+Ptrqp7APqEMs5orSygXEbgV+3l9qBXNIJURnCWc+4nciomokEAHwPwagA7AdxNRLc65x4U5VZhdt+D7+bUv9jgnt4Si1M1Aj4ak4yAH5OvLVg0WeoA2oPtz2lLVFsPY2jROX9MMoKqqLPXgFbmwIEDXTOr2GPt2rU4fPgw1q1bN+941c/ol6oOOesURqBtYC8RmiBGRG2MIcQIli1bNm8HtZQ2auerMIJQ1lBMI+D2YKkxgtuI6NrMul8E4DHn3OPOuWkAnwXwBqXchwH8ZwDtq191OaSR53FwiZBG4CeiaFlDmlgsY+1+dCOPhaCN+vk5iy1ojCAWGnLOtTGCqg9HHUagYd++fV3nCKpsYs8hv4/Q5jQ59WlbWMp7SUbgwUfn3MBaGgFnBCm/b0gTk0tV1M0a4vX7z6VtXbsUs4b+TwBfIaJJSk8f3YpZkdljZ+vYHIjoKgDnOOe+FKqIiN5NRPcQ0T11HpAmoTGCVI3Adzg+E1GO+Hl8n6eP8us1is6h5e/7/3L2MIfUCOT1EimhIYsR5D4klkZQFd20zpDHpk2b1EllVR2e3K5SQyh91GN4eDi4IxkQ3rWMD1g8QstSp2xiY7WDv9bWHeLnpTPyIS1tY5qlyghSJ5StIqL1AC7C/DWHKoOIBgB8FMA7Eu5/M4CbAeDqq69e9G9VGsdUjUAL6XAnQUTzdgfz50+dOrMrWUqn0h44qz0hjUCD5hh4aMhqXw4jCG0U07RYvH//fvzET2RFPTuO9evX45lnnql0rRUa8o4g93viDiInNOT7c6hdvLyENnq32hXr66E0VCtrSFtiQnMYHlbaaK84gtQJZb8K4O8BfAXAja3/H4pctgvAOez92Zi/UN0qAD8B4NtE9ARmVzS9tVcEY94JqmYNyeuB+fF9qRvIThV7AKwO6BkBN/a8rlDYSLuHrEv7rDkawYkTJ8xtKjWNgLdTC8GF0I2MYMOGDThw4EDl67XQkLVdpUcqI4g5gpQN7TlSJ5RVAR/JS0bAB0uWRlAnayjVSXULUkND/x7ATwN40jn3CgBXYnYhuhDuBnAREW0jouUA3grgVn/SOXfEObfROXe+c+58AHcBeL1z7p7cD7HQ4D9uDiOIndM6j6YbeFQZ3XlYS0yEwkbW6Ca0Y5mHxQi0ByW0X3GMEeRuSnPgwIGu2Z3MI9cR+DX2Ab1P8NCQ/L41g8fB6wuFhjzkTGJejyXkpiwxYX02CY2FyC0vNUbgjbcvG5pQpt1LMgKPpaYRTDnnpgCAiIadcw8DuDh0gXPuFID3APgqgIcAfM459wAR3UREr6/T6G5AVY1Aexi0heY4LEYg22O1D2g36DnLUFuwDLrmCHIYQa4j4PcOrTxa5btfDKxevXpetkwMY2NjOH78+Nz7HLHY70YWyjALhYak4ZNLTMQQmihmOYlc8H6qCcNaVpH8XFw3SNEIei00lPoE7CSitQD+FsDXiegQgCdjFznnbgNwmzimhpSccz+X2JaugZY1FBv1ezFMCy1pnSfECFJisFb50BITXCy2rueQ97YYgZxQZrU55Ahi6aOhlUd74YEE0r9nD78C6apVq0yNYPfu3eq1frvKsbGxNiYq7+lDQ7yctqSExgiszxVaYkIa7RSjGtIOLEbgF6KTxl7Wm8sIfN290O9SxeJfaL28kYi+BWANZnWCvoUWl05hBLyj+g4S26UrJOyG2hfTCPxIWN4/RyzW7mExgtWrV89dF7pPHUaQGxpaCvCb02zZsgVAuwEMZQ1xRyAh2Z4WGpKOgBu+OmJx7FwuQozAEonlgC2XEci6uxnZnNg59/edaEivQtMIZmZm2gwcp5t+rXJ5TjIC/9paaK7OSIOHf7QdyKwMJ+s74JCOgIjmaQS+7VNTU2q4qIpG4JG7KU23Qvuure9f266SIxYampqaajN6ctN5f4wvee2PxQTkUPtDGkHOPAIN8jNxRuAHZbxdnIVoyJlZ3GtI1QgKBLTQjlxrhBt27gjkEhL8mO+cfo4BP58Tb+T35u/9a7l/sbYjmQaNEaSEhrhG4NtkZQdVYQRVxeKlAL45jSbKhrKGvCOQ4BlCnBFIPcE7DC2UksoIpOH1ZbU5BrGRdiysFgr98PNaXSFGoK0xFGpPt6E4ghrgYR/JCLQF5iwdQROS+bEUjcC/DuXgc/CsIWn4czUCWSaWNcSP5TKCWBhtqTCCHLYX26UsJTQkDXfI6HOkZBJ5pGgE3JBWZQSpGoF1Xo7ofTmNEfBzfCAI9I4mBRRHUBl8VCA1Am15aSko806irVGkrS9kjWL4a8lGZJt5/f6eWigoRbBM1Qicc22MwDlXyRHE2pWzTWXTs5QXC3wDe+33GB4enhv1y/NVGAGHNW8ghxFYexjLsFFKn4y91jQCed4K7VTNGuoFFEdQE97IS2ro1w7yCDECqRHIY5ZG4CEzflLSIXknlYwgNUXVQkrWkHUMCDuCWLtCoSHZ/kOHDnXdHAKPlGUhPKRGoI10rd8uxgg4QmJxbtaaR2g10ibFYn//0P4HlkbA5xbkziPoFRRHUBHaw5bDCDikRiCNv8UIeDhIK5ti0LXQUAgaI4iJxfJYHUYQa9f4+LiaASPbDnTnZDIPbVJZLH00VMZD/lYxRsB/X00YTmUEFuSoX+5TXEcs1hiJZARyIl5osTk52gfQNgGtV7OGiiOoAWs+gBbzt1JM+XWyPN+nOJQ1xFmAJjzHEJpcxpFCzYF0RlAlayjWLp+7nYKDBw/2lCOwMDY2Ni+bJ8f4cEbAYTGCVEeQCtlW7hhis549vC4n69NCo5wRSD3A0gikkeflJRPQZiT3AoojqAA56QvIZwSaA+HlLUagdS5LT7BmzcoMIrl6aMiQyM+snU9dYqITjCDn4VsqjoDP5s01PpwRxMTilHkEHqkagbwvZwSpo2ptkpjWHmA+I7CWkQg5AqkRWI6As+VecAjFEdSA/KFTGEFMI+DHNEbA4ctrTgMIj/R555TlcjpuamhIG6lXSR/V2laVfne7Izh48GByeS2DLAU5YnFOaCgH/DeVoaKUvmg5gljWkMYINBaSwwhK1lAfQYpvIR3AchIc3HjnMAItNMTLpoR8cjQCa3STEhrSrmmSEVRBtzsCyQg6EW/OSR/VhNYQI6gCudAckMcI+OtY1hA37DmMQCvvw1N8gTvf9l7QCYojqAH/I3NjLyeU+XJyzgFHiEGEGAEvq21lmTpDOFUj0OpJSR+17m85Am3Ogbw2pR0xHD9+XF23qBuwfv36SktR56Ys5jACrd7QzOIqBjCVEXCjHBrly/bIBeZSNAJ/TO5bQERzz7vGBHrBAXgUR1ARfkTBEWIEsox1jDOC2DwC/547FxlSymUEoRFMqsHVlpjQIB2B1C4WAt36sOZM1KqDECPQRGRg/neWyghC37PUCORMZe1aiwVYE8Y0RqCxhzqMQAszdWv/kiiOoAb8XIGYRmAJw/KYVi43a8h6zSENuiwXMvZ81nEdRhAKDYVgta0XR2GdQC4zsjZ/0RiBdg/vsCymloJY+CnW7pTQkG+PZAQ+28ifT9EI+HMdchKp2WvdgN5paZehSUYgDbEczfvRmqZL+Os1sTjECLjhzNEIUvcnjmkEQHv6aNUQT6rBWcpOIpbNZcGXTZlQpqEJsZhD24wmhxFYKacxRuBRGEFBNqxRvKURAPpOZdqyENpsY2C++BxjASFGwJEzoYw7glRGoI3MPCPIFYWtByvFgfRSFoeGhfyMfMOakDFLSR8lonkj7xBSZxPnhoa066RhtzQC7zw0ITjmJHoFxRFUBGcEKZlBHjGNwNetOQwtvTT1tYRkBFY52fFjjMCXSWEEIY3Aaot1T49eN/ZVUTV91CNlQplWLoURxIw7Z7tyNnGIEeSIxb4ezhhCYaDYMXmuMII+hhyx8wXl/DmrDAc/lpMy6stKduCPh/Ye5uCMQD7oof2IeTaUvCYkUvvrUh2Gx9TUlLlInHNuLnujHxGbUJcyKm8yNMT7BZ/wZrXdt1tbelqDNQM5pBHwsnL0z5+/kIDMHYr/75/3wgj6ED51jIOHeKRhl2U4uNEPpYzWYQRc5AXSGYHMKNIYQdVJXtoksxCs1UL9vSYmJsx1hiRCKardAr4pfQzcEGnf/ejoqJomasFyBLLulEXnfCZQCrT1hapmDcnvzzMPzcDz51Yb2WssIXadXHiym1EcQQ3I0T5f/E0yAo8YI9DSQLWHzGIBlnbAjb2sMxTu0XYv446hCvz9Le3AQmzZ6OPHjycvQd3NK496rF27FocPH557H/q+5Qb2ErHVTCWzs/balcessAmvT47yec69RIwR+PdWOEiyA2uWrxSL/bOhXRMK+/DnXVvArldQHEFFWFlDfhQgGYFmqPl10nFYjCAlNJSrF+QyAj6S5jupdRohRuCcC648KtHNs4o9cheeO378uBlTD+1S1mnI0FBIM7DSWbVyMUYgNQCuO/jzGiOQ11ghJH6ddG5FI+gD8I5kjfalYedGWwsNaRpBKGuoSmiIMwIPLX2Un9c0gtD7VLHWCieFrp+YmAjOBD5+/HjQEfDP1QuOYN26dcnrDaUwgtD51BnJqYaN/44yNKQ5As4erAll3HCHHIFWRmMEUjiW94g5DDngszSCXkhgKI6gIrSsIauD8P9WaMiHgUKzgqXTydEFQpPGQovOhRxBToaQ9TlyEAoNeUYQCg3xz9XNexF4rFu3DocOHZp7HzIofk8Cq8xCM4JQaCgU/gktMcENO9/rOOQI5Cid1ynLpmgEFiOQg8LCCPoA/seVM4u5gJzDCLSsIWtSmr+3DA3JbCPttRbb1xgBhwwNnTx5cp7hT5lgZj0M8nhVjcDXE2MEHL3ACNavXz/PEYTAGYElFoccQSojSCknM4lioSHNaWiMIGT8tXCQlh7K69QMvKUR8DpDAz5+nbcFveAMiiOoCE0j8J1DOgT+31pATtMI5PpC/J51QkNAeNTP0SlGUIUuT05OmqEh51yWWNwLjkAyghC4RqAh5ghSYf12vJ96RyDDPR7coEvE2ELMEYRea4xAM/By4FUYQUEQMobPDW0OI/DleR3W+kL+fK5AHNMI5BIXHrH00SqOwCM3a2hiYiLICHLE4mPHjpl7G3cLchwB366yKiNoCjFNIKQRhNJHqxh/HvqR95OaAzBf98vVCDxK1lAfwWIE8pzWUbRsIGseQYgR5LCD1MwgIE8jOHHiRDQ0lGvwrVFUSvpoqiMI3adbIEMqKemjdRhBU9+HxghSNYJU/SA3a8gy8PK85TA8CiMoaIP8oWWH0UYOmgPh12rGXWME/HwuO5C6Rk76qKYRpCw5nQq+pIVESvpoamhoqaEJjaAp1NEImmAEVmYRhzf6WtaQ5jB45lKMEXgURtAH4DqApIJaB+Ed0Rp18BGJthCdDDFpYaTUmcX8QQvNBWhCI5ACYyjOHFqaOpY+GjvfK6OzKuChIQ0LyQhkCmhK+qh1jrcpVyyW+f+hkA9n5BySJfAQEnAmYcT/+fq9feiVPlccQQ1U0QhSGAEXiyVSjL92XHZoa3awfJ+iEVRdllp7SELbVMYYAZ/ZraEX8rlDCLV/xYoVmJiYCE4os2YWh7JrUtvF2yYZQR2NYNmyZfPOaexAGn/ruLyfNVGsCiPgz1fRCASI6DVE9AgRPUZE71fOv4+IHiSi7UR0OxGd18n2NImQDlBXIwD0De0BPTRkjVpkyMcqr01Y89CWmOCLzqUwAm2UbzGCyclJ0xFU2cjGQq87BQk+utUQYgR+l7KU0WvIiHv47Sv9cS00xB1FSCOwmLQV9gk5C9nOJjUC7VjRCAAQ0SCAjwG4DsClAG4goktFsXsBXO2cuxzA3wD4L51qTycgRwVNMAJtQlksNCTvneMsZEeVTKQTjCD0cMQ2rreu1dYu6kdY30FouWhr32KtrtRlp6syArnmvzTskjn41x7ytZY15FmTdt7K/okxAq2Owghm8SIAjznnHnfOTQP4LIA38ALOuW855zxfvQvA2R1sT6PgGkFdRjAwMNC2RlEOI+DHucEPlbGM9+nTp81F5gB9iYkYI5ienlYZgZZNFGIEFnJHXbFlsnsV/nvQvo/QdzQyMoLJycmk7zFlL2UtNBRyDKH78r4WYgTcQcTKeGiMIJSp58vJ/xYjKBrBLLYCeJq939k6ZuGdAL6snSCidxPRPUR0z759+xpsYj00xQjkdYA+s1hzFFqdWjaRNP5aBpFHaLVRuR9BamioKUZgIXVmLNAbK4965MTvq7IiixFo8GGfWBkuFseyhrRlzTXDLvUCbbQvDbPMCuL183CaNmArjGCBQURvA3A1gP+qnXfO3eycu9o5d/WmTZsWtnF6e2prBFpKqDaatxiBFRqqywjkuSqLzsk2a4zAuneIEVhGTop7MfTCrGIPuRR1CnJHoTmMQAsNaQOJHEbADbxE7mg/FBrSniVZhyxXhRFwdq8NtLoRnXQEuwCcw96f3To2D0R0DYD/AOD1zrn4lkhdBE4BgTxGoO1B4K8DbEbgy87MzETj/ykagYZUR1CHEVjzBaoyghT4+x08eBDr1q3ryD2aBp9dHDPUVcMQOYwgZcOa3AllIY1JslhNCA6JxX6PgMIIwuikI7gbwEVEtI2IlgN4K4BbeQEiuhLAH2PWCeztYFsaBREl6wA55zQxWItraq95J/SOKYU1SAch32sTyprQCKwMoBAjsAxd7qjr8OHDPekIYvChoZCgrsEzghRojEDeL1cslv08JBDzMtpoXxtUafeQdfBBnX9+pG7H64w919xZ9IJO0DFH4Jw7BeA9AL4K4CEAn3POPUBENxHR61vF/iuAlQD+mojuI6Jbjeq6EtYmNHLEIBmBHDlYo/kQI7Bey5F+bB6BfC3fS8PPHQ1R2hITGiPQHAERdZQReCxVR1AVVvooH3V75IjFXCMIpYiG+l+IEfDjVhmtPGcEFqsA2jP5/DHt+ebleYioV9DR1Ann3G0AbhPHPsReX9PJ+3cSdRmBJjJLRqBlDWksgB+Xs4c14x9jBLyOmZmZee/l6L/qPIKpqSmVEYQcQUgjSBGL/fWHDh3C2rVrg2W7BevWrcNTTz0FIK6BxL4H67gVGhoZGcHRo0fnHUsVi3kZqQEsW7Zs3l7C8rxlzENOQRpjf9zDepa0mcfcETTBCHoBveOyuhAxgx7SCHh5i87GGEGoTgDzaG5IIwiNyOR7ObKXYrE2I1qGhvzIX2MEVdJHgbyMmcOHD/eUI8gJDVWBJRZrekDOPALNUPvzsrz1PjTa97BCQJpxB+YvQ23Vwf/HNALNgcg6ux3FEVREk4zAChtpechWh9U6vHzAtKyhmEYg64kxArkoHdAeGgKqMYLQ6OrEiRPJDkRrY7ciNzTUZPro8PBw23EtNOTFfw9t1VT+fYcYgHwvU0a1MlZo1DL0/pqQA/H/qzACmTXUCyiOoAJkNoHMGooxAjkRTeuwOSKvNYKyHEGsnAwvxRhBaDVSf0wTi6XhjjGCUGgoZy+CXkjn80iJyfOyfGmHVOQyghhLkEtM+GMedRiBdY01KArpBbGQknQI/HUOI+iF/lYcQUVoBj1l5OA7X0wj0I7x47JO7bylF0hGEDL8Q0ND80Qv+QCmzDTWxOIqjCCEpb4EdYoGMjY2FlyB1NcjEWIEKaGh2Exif4y/lqEi671lzHnY05/j/4G4XqCxdF62rkZQZhYvcWijAyCNEWgdJ5SxoNXrX2ud3xpNhc6FyknDL4283HEthxFoGoEWRuLnreM5jGCpwi9FbX1PsfTRFEagMRSNEWhlPGKMICW7zUqE4A4iphdYGkLTjKAXnEFxBBUR0gj8iF87F+pwuYwgFhcNMQKNHchzQLvhjy0VoTmCU6dOJTMCa+Rr7fXskbI7GY8p9yJSGIHfnCanjlxGoM0k5pqATB/1xzxCmoCvL8YIfDleh3wd0gv8iJ2zevnMhgZlJWuoYA7WaN8f550hxejz85ZGoHW8UN41RxXmEGME0ihojoCIktNHrVFraJtKzwhioSFfdy/EbCVS2uxDQ5bxGRzUl6oeGhpSdQht9D88PNxWv2QAg4Pt6yPJgUCoj6X20xhziIV++GvL2IdG/fJcKGzU7SiOoCJCjEAz7ClGXwv3WIwgJVMiNNIPMYJQlpAsKyfNWPMKUieUWYjtPlZCQ9V3KbOYksUIJGSWkKwXCA8oqmgEsk6LEWjGXzPsWlmeBSQTQvg5Xq8/VhhBH8CPzvwPbnUSTSMICcP82ljWED+eywiserQ6YoxAntdi/BojyN1kpglGAOStUtpNSBWLQ6GhlO0qOXIcQWwhulC/qZrdFmMEVrppLiPQyqVoBHIr225GcQQVERKCcxlBjkYQE4tDtFrL/pEMQNYR0whSZhoPDg620WQrfbRKaAhIZwTj4+NYtWpVtFw3YWBgILj7mEcsNBRyBJqjscTiWGhIqy/Uj7SBiL/Wmk2snZOvrfTQmHCshXbks1Y0goJ58X/AFpdCzqIuI9DoKpCWGRRiBLH4bYwhaI5AG/lXYQRNhIZ6aXkJD78UdcyoNLGBPYfmCLR1pVJnG1vvtQlm/LU2kpfvtX4vDXmIEVgsIRT/l4KzvC9/brsdQ/EiBRouvvhinH/++fj+979fmRHITnjVVVe1bb9nMQLLkMfocqycfB9jBNq8gqqOIMQIJiYmGgkN9dLyEh7r1q3DwYMHo+UWghEMDg6qgwHNEaQygipLTMTKyfIxRvC6171urn/FnIP/b21z6et/+9vf3tge251GcQQVQURzoY0YI+DHQoxg2bJlZnzTX6N10hSNwBKEY2JxjAHI99ryDdbEsZyHZGpqKhgaCs0/8CCinlp51MMvM5GiETTNCKy0Uo4mNAJLLOavrUlkWn3yfIwR8EFEiBHwc3KvA/n8d3oV3SZRQkM1EQoRDQ0NYfny5dEwkJZmtpCMICQW52oEcs4AkO4I6jCCVBG4F0NDqesNxXYaW7FiBSYmJtRzqYzAH+fQ5hYA1RlBlbBlamhHHpd9n5cNzR8YHh42HUAvaQMehRE0ACtG+LrXvQ5Es+vnpGoEHlVTRlNexxhBSCyOaQaac9BGRs65rIXfYhpB6oN3+PBhvPCFL0y+bzdg3bp12LFjR/Qzeu3KQhVGoBl46QjkiF5DLPyTwgh82dTX1ixjbTDGkcIIXvKSl8xbc0zet9dQHEEF8IdDYwRve9vbAJzpEDnCsIdWbu3atXMUNndhLv76uc99LtasWaNeI8vGQkGxOQOAzgi07BPATrULhYZCTELW3cuhoRSEmNHo6Kgp6qYYfOt4ikOvygg2bNhgbmKT8wysXr16LmwWYwSxlFJgvtP1z7vFCHohfbQ4ggYgHcHFF1887/zw8DBuuOEGAPHRvYdW7vrrr287L19bDwc3/Ndcc83c6zoagSYWa4xAMygaS4iNKkMaQerDduTIEaxevTqpbLfAi8VaP5EIfQ+jo6PB71ieGxoaUkfMmiPQ6s0JDVmM4MILL8SFF144d84awMScwiWXXIJLLrnEPM+hic3+2Dve8Y628v5578UZxR69x2G6ALzTaoxAYmBgANu2bWsrk6IRpJxPGRn91m/9lvFp5pfbtm1bLbFYO5bqCIC4IasLuUheL2BkZKTS8tISuY6UJ0RwNMEIeL8aGxvD2WefPfc+5PB4P84dDHlU0Qj8a+6UQtdJG9HtKIygAYRCPBKaCJzKCLTz8nVotUYNclTvaa5HrlisHdMMheYcNIbBz9UNDfUyUj9fLDRknbPi/NrvpP2+MWMX6hMrV67EL/7iL0bbAtjLVqSurJtzPuYwQtf1GoojqIkURsChjTJ+8zd/M6kch9WZubFM6byxctIwa0KhRB1GYB1fvny56SRS0QsjMwtNLI0RYgQ5v0cVRpDSbzyq9Fur38cYgfZs+ecx9gxq9cr6ewUlNNQAvCgsR9MaNEagLXmQwwhe97rXzb3+7d/+7bnXKYYzNAoH2h9yXn8qI7DEYq0tlkEKGbHQdf2G0KifpzxKjIyMJDOCVI2Ag/cbf42FlCwkX06rnz8PVRiBfx5zGYFMEukl9F6LuwBW1pAUiTVomQgaYhoBfwhe/OIXq2VTHMHAwEBwYleMEaSsK9QEIwiljgJY0ruTAfHUUI/QMhuh8FrO75ES+pPIYQQxUVurg/c5/jxo92nqGZTgonHJGupD5MQEf/VXfxVA+0QxiRxGYCHFEWzatAnvete7zPOvetWrzHMam0jVA6ysoSqOgIiS1hnq1ZVHgXRjsnLlyuBntL5HixGkhoZyv9dQv3rve9/bWP+uIhZr5fxzm4Je1AgKI6gAK2soBeedd97c6xRHYJXLEa/qlHvlK18ZvDYlDPSKV7yi7ZjFQqqEhoClzwhSHUHMIeYygpTfc3BwMDscEupXTfTbUJlYaMiDP3f8uY2hF7OGiiNoAFVGAN3CCOoglRFce+21bceaDA2lMoKZmZmejN8CeaGhqowg9bj2e+bMEm8KC8kIclAYQR8ilxFw1GEEKQ/Bz/zMz1RqVw5SGIGGXLE4phGkOgI+IamXkNruGDMKMYJUsVjDYqyymdK/teekCiPIQcka6lNUGWXWZQQps2Nf+9rXZrcrF1WEQ2BxxGIi6rnlJTzWrl1bWywGmmEEGhaDEaT0b+056TQj6EXW2Xst7gJYWUO5qJOxEJopvFDQQkOdYgSx9NHU/Yp7beVRj1RGEAsNLSVGkALtOUllBKlahUQvZg0VR1ATg4ODlUZDOYxAK9cN1HN4eBhvetOb5h3rFCO48sorg/WlOAIi6llHkMoIYszI+h6bZgS333570nWdhvaddZoRhOZrdCtK+mhNXH755ZWXNU7VCKqOTDqNgYGBuYW8PFJHhrnpo7/8y79s1kVEyVlDvRwaSkGMEVjf48jIiLqpTVVGEMs2W0x0WiN4y1ve0nPhoe60MF0OmRpWZdRQlxF0K1IZgWWQq8wQ3rx5M7Zs2ZJUtpcZQQrOOeec6P7BGqzvPdVxLoZGUBULrRF0A3uPoaOOgIheA+APAAwC+FPn3EfE+WEAnwbwUwAOAHiLc+6JTrapW7BmzZrgw5M6+7HbkDqCfP/73992rOpSES9/+cuTyvVDaOiyyy6rVL+lEWi/k4Zu1Qg0pM4YHh0dXfLzUzw6xl+IaBDAxwBcB+BSADcQ0aWi2DsBHHLOPQ/AfwPwnzvVnm7Du971rmBc+3nPex6A3mMEqWv9W0atk2sGvfKVr+zZB3vjxo0dTQe2vvfU0Wwv7fHAR/r+OdPwnOc8JxiSXEqgTinaRPRSADc6536+9f4DAOCc+39Yma+2ytxJREMAngGwyQUadeGFF7qPfOQj1ukFwT/+4z/iD/7gDxbkXnfeeSc2bdoU7LDdhDqTtnbt2oXnPOc5HZ8IV9COqakpHDlyBJs3b650fS9N1tu+fTucc7jiiisW5H6/9mu/ps6uX2i8+c1v/p5z7mrtXCdjDlsBPM3e7wTwYquMc+4UER0BsAHAfl6IiN4N4N0AsGXLFlx6qSQWC4uf/dmfXbB7vfSlL12wezWBOsZg69atDbakIAcjIyO12FivOAFgNsFjIfHBD34weavRxUJPBJ+dczcDuBkArr76alc1DlpQUFCw0DjrrLNw1llnLXYzguikG98F4Bz2/uzWMbVMKzS0BrOicUFBQUHBAqGTjuBuABcR0TYiWg7grQBuFWVuBfArrddvAvDNkD5QUFBQUNA8OhYaasX83wPgq5hNH/2kc+4BIroJwD3OuVsBfALAXxDRYwAOYtZZFBQUFBQsIDqqETjnbgNwmzj2IfZ6CsAvdbINBQUFBQVh9I7UX1BQUFDQERRHUFBQUNDnKI6goKCgoM9RHEFBQUFBn6NjS0x0CkS0D8CTi90OABshZkD3Mcp3MYvyPZxB+S7OoFu+i/Occ5u0Ez3nCLoFRHSPtW5Hv6F8F7Mo38MZlO/iDHrhuyihoYKCgoI+R3EEBQUFBX2O4giq4+bFbkAXoXwXsyjfwxmU7+IMuv67KBpBQUFBQZ+jMIKCgoKCPkdxBAUFBQV9juIIIiCiXyKiB4hohoiuFuc+QESPEdEjRPTz7PhrWsceI6K03b97DER0IxHtIqL7Wn+vZefU72Upox9+8xCI6Aki+mGrL9zTOraeiL5ORD9q/V+32O3sBIjok0S0l4juZ8fUz06z+MNWP9lORFctXsvPoDiCOO4H8H8AuIMfJKJLMbts9mUAXgPgfxLRIBENAvgYgOsAXArghlbZpYj/5pz7ydbfbYD9vSxmIzuNPvvNQ3hFqy/4AdP7AdzunLsIwO2t90sRn8JsX+ewPvt1AC5q/b0bwB8tUBuDKI4gAufcQ865R5RTbwDwWefcCefcDgCPAXhR6+8x59zjzrlpAJ9tle0XWN/LUka//+YW3gDgz1uv/xzAGxevKZ2Dc+4OzO6nwmF99jcA+LSbxV0A1hLRlgVpaADFEVTHVgBPs/c7W8es40sR72nR208y2t9Pn9+jHz+zhAPwNSL6HhG9u3Vss3NuT+v1MwA2L07TFgXWZ+/KvtITm9d3GkT0DQDPVU79B+fcFxe6Pd2C0PeCWUr7YcwagA8D+H8B/OuFa11Bl+HlzrldRPQcAF8noof5SeecI6K+zFXvhc9eHAEA59w1FS7bBeAc9v7s1jEEjvcUUr8XIvoTAP+79Tb0vSxV9ONnngfn3K7W/71E9AXMhsueJaItzrk9rfDH3kVt5MLC+uxd2VdKaKg6bgXwViIaJqJtmBV//hnA3QAuIqJtRLQcs8LprYvYzo5AxDV/AbOiOmB/L0sZffGbWyCiMSJa5V8DuBaz/eFWAL/SKvYrAPqJXVuf/VYAb29lD70EwBEWQlo0FEYQARH9AoD/AWATgC8R0X3OuZ93zj1ARJ8D8CCAUwB+3Tl3unXNewB8FcAggE865x5YpOZ3Ev+FiH4Ss6GhJwD8GwAIfS9LFc65U33ym1vYDOALRATM2pT/5Zz7ChHdDeBzRPROzC4d/+ZFbGPHQER/CeDnAGwkop0AfhfAR6B/9tsAvBazSRQTAP7VgjdYQVlioqCgoKDPUUJDBQUFBX2O4ggKCgoK+hzFERQUFBT0OYojKCgoKOhzFEdQUFBQ0OcojqCgoKCgz1EcQUFBQUGfoziCgoIMENEoEf19E0trE9FyIrqDiMrEzoJFRXEEBQV5+NcAPt/EbOnWktW3A3hL7VYVFNRAcQQFBQJE9C0ienXr9e8R0f9gp/8F2Jo5RPRtIrqk9XqD2KXqr4no/yOifySiJ4no5UT0F0T0KBF9olXsb1t1FhQsGgolLShox+8CuKm1pPKVAF4PzIZyAFzgnHuClX0egEdbry8H8EN27oUA7nTOvYeIfhvAJzC7Js0+ADuJaBizi7P9dOc+SkFBHMURFBQIOOfuoNkV1N4H4OdYGGgjgMO+HBGdB2CXc26mdehyANtb50YArAXw3321AD7hV5okotMApltr1U8T0Srn3LGOfrCCAgMlNFRQIEBELwSwBbOGmhvnSQAj7P0VaBn+Fn6Kvb8MwPeZk7gCwHdb9Z8NYLc7s+LjMICpRj9EQUEGiiMoKGBo7bPwGczuLTtORHObkjvnDgEYbI32AeAn0XIMRHRR6xofGnohgB+wqufYApgDIaINAPY750524vMUFKSgOIKCghaIaAWAzwP4DefcQ5jdgvN3RbGvAXh56/UVAAaI6AcAPoTZPRj8ZiQvBHBfq94RAKMtRwLMdwqvAPClxj9MQUEGyn4EBQUZIKKrALzXOfcviehHAK6qE9snos8DeL9z7tFo4YKCDqEwgoKCDDjnvg/gW0S0ZvZtLSewHMDfFidQsNgojKCgoKCgz1EYQUFBQUGfoziCgoKCgj5HcQQFBQUFfY7iCAoKCgr6HMURFBQUFPQ5iiMoKCgo6HMUR1BQUFDQ5/j/ARGqDIzBZtJpAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t1 = Scalar_mask_X(x, wavelength)\n", "t1.fresnel_lens(\n", " x0=0 * um, radius=100 * um, focal=0.25 * mm, kind=\"amplitude\", phase=np.pi\n", ")\n", "t1.draw(kind=\"amplitude\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:51.847895Z", "start_time": "2020-05-01T22:57:51.562929Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t1.fresnel_lens(x0=0 * um, radius=100 * um, focal=0.25 * mm, kind=\"phase\", phase=np.pi)\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## rough surface" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:52.113449Z", "start_time": "2020-05-01T22:57:51.851278Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 128\n", "length = 250 * um\n", "x = np.linspace(-length / 2, length / 2, num_data)\n", "wavelength = 0.6328 * um\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.roughness(t=15 * um, s=0.2 * um)\n", "t1.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dust particles with different sizas\n", "\n", "TODO: does not work properly" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:52.388437Z", "start_time": "2020-05-01T22:57:52.115756Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wavelength = 0.6328 * um\n", "x = np.linspace(-500 * um, 500 * um, 2048)\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.dust_different_sizes(percentage=0.2, size=20 * um, std=5 * um)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## dust particles" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:52.691940Z", "start_time": "2020-05-01T22:57:52.390567Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wavelength = 0.6328 * um\n", "x = np.linspace(-500 * um, 500 * um, 2048 * 8)\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.dust(percentage=0.9, size=20 * um)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## bit structure" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:52.988432Z", "start_time": "2020-05-01T22:57:52.694072Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_data = 2048 * 4\n", "\n", "wavelength = 0.85 * um\n", "code = [1, 1, 0, 0, 1, 0, 1, 1, 0, 1]\n", "bit_width = 80 * um\n", "x = np.linspace(0, bit_width * len(code), num_data)\n", "\n", "t1 = Scalar_mask_X(x, wavelength)\n", "t1.binary_code(kind=\"normal\", code=code, bit_width=bit_width, x0=0 * um)\n", "t1.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gratings\n", "\n", "### sine grating" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:53.284722Z", "start_time": "2020-05-01T22:57:52.990664Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "period = 40 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "red.sine_grating(period=period, amp_min=0, amp_max=1, x0=0 * um)\n", "red.draw(kind=\"amplitude\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ronchi grating" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:53.557076Z", "start_time": "2020-05-01T22:57:53.286904Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "red.ronchi_grating(period=50 * um, x0=0 * um, fill_factor=0.5)\n", "red.draw(kind=\"amplitude\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### binary grating: amplitude and phase" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:53.834657Z", "start_time": "2020-05-01T22:57:53.559616Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "red.binary_grating(\n", " period=50 * um, a_min=0.25, a_max=0.5, phase=np.pi, x0=25 * um, fill_factor=0.55\n", ")\n", "red.draw(kind=\"amplitude\")\n", "plt.ylim(0, 1)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:54.210228Z", "start_time": "2020-05-01T22:57:53.836845Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEKCAYAAAAb7IIBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXhklEQVR4nO3dfbAddX3H8c8nNzzEmiEFojyGh5LapjxzjTLFVkQKUgroYKttUapOptM6aHVQbGaA1qbV4tgqAjYdnAJSMzIGMUiGJ7GAQOASIIQEkvCQEkC4Eh6MsYHc++0fZ8M9xuTm7N5zdvfs7/2ayeScPWfP97d7zu7n7tNvHRECAKRnUtUNAABUgwAAgEQRAACQKAIAABJFAABAoiZX3YA89txzzzjwwAOrbgYA9JX777//ZxExfevhfRUABx54oIaGhqpuBgD0FdtrtzW8sl1Atne1fa/th2w/YvsfqmoLAKSoyi2ATZLeExEbbO8k6U7biyPingrbBADJqCwAonUJ8obs6U7ZPy5LBoCSVHoWkO0B2w9KekHSzRGxZBvvmWN7yPbQ8PBw6W0EgKaqNAAiYiQijpS0n6TZtg/dxnvmR8RgRAxOn/5rB7EBAAXV4jqAiHhZ0m2STq64KQCQjCrPAppue1r2eIqkEyU9WlV7ACA1VZ4FtLekK2wPqBVE342I6ytsDwAkpcqzgJZJOqqq+gCQulocAwAAlI8AAIBEEQAAkCgCAAASRQAAQKIIAABIFAEAAIkiAAAgUQQAACSKAACARBEAAJAoAgAAEkUAAECiCAAASBQBAACJIgAAIFEEAAAkigAAgEQRAACQKAIAABJFAABAoggAAEgUAQAAiSIAACBRBAAAJIoAAIBEVRYAtve3fZvtFbYfsf2pqtoCACmaXGHtzZI+GxFLbU+VdL/tmyNiRYVtAoBkVLYFEBHPRcTS7PHPJa2UtG9V7QGA1NTiGIDtAyUdJWnJNl6bY3vI9tDw8HDpbQOApqo8AGy/WdL3JH06Il7d+vWImB8RgxExOH369PIbCAANVWkA2N5JrZX/1RGxsMq2AEBqqjwLyJIul7QyIr5aVTsAIFVVbgH8vqSzJL3H9oPZv1MqbA8AJKWy00Aj4k5Jrqo+AKSu8oPAAIBqEAAAkCgCAAASRQAAQKIIAABIFAEAAIkiAAAgUQQAACSqyvsB5Pbss8/qwgsv7Pj9o6OjOvvss3XwwQfnqjM0NKRFixap1VtF57U+85nPaNq0ablq3XTTTbrrrrtyjTNp0iTNnTtXAwMDucZbsGCBHn300Vzj7L777jrnnHNyjSNJl112mZ5//vmO3x8ROu+88zRlypTctebNm6fXX3+94/dPmTJFn//853PX2bBhgy666KJcv4t99tlHc+bMyV1r3bp1mj9/viZN6vxvtEMPPVRnnnlm7loPPfSQFi5cmGu63vWud+mEE07IVefFF1/U1772tVzTFBE644wzdNRRR+WqtXr1al111VW5ao2OjuoTn/iEZsyYkavWPffco8WLF+deX5x77rmaOnVqrlo33HCD7r333lzjjCsi+ubfMcccE3k88MADce211+YaJyLiK1/5Srz66qu5xrnmmmti2bJluWtdeOGFucf50pe+FBs3biylVpFxiow3f/78WLduXe46o6OjccEFF+Qap+g0rVmzJq688spSat14443xk5/8pJRal156afz0pz/NNU7eeR4Rcd9998WiRYtyjfPCCy/ExRdfnLvWggULYsWKFbnGufvuu2Px4sW5a82bNy82bdqUa5xvf/vbsWrVqty1isz3iAhJQ7GNdWqjdwENDAxoZGQk93gjIyO5/7ouWqv13eRTZq0i4xQZr+g0jY6O5vorTyo+TUV+F9SaWJ1+WIbrvr4YT+MDYPPmzbnH27x5c6EvtEitIsqsVZYyv6uiqFV+naIryjKX4ZGRkdx/hNRlGW58ANQ90Ysos1ZZyvyubGt0dLSUWkU1sVbR5aroSrnMZTjP/v+J1uomAmAbCIDy9cN31cSVcpm16v5dpbgMEwDbUedEr8uPp5v6YUFv4kq5zFp1/65SXIYJAGrVQj8s6E1cKZdZq+7fVYrLMAFArVrohwW9iSvlMmsVqTNp0qTSjtekuAwTANSqBQKguloRkfssliKKHrAvq1aKyzABQK1xFT1jJi8CoLpaZan7/GvqMjweAqBLJk+eTK0K6oyMjGjy5Hw9mpRZq6gya5Wl7vOvicvVjhAA21Bks5NaE6vV1C2AMndhFK1VZLwi4xTdAiirVhOXqx0hAKjV9Vpldm9R9wAoil1A5deq+3LVC40OgKKbWXXvn6futeq+Ui6zVt375yk6Xll9ARVV5u+i7svweBodAEUvI6fWxGqV2Q9L3WtJxRbaMvsCKkuZ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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "period = 40 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "red.binary_grating(\n", " period=period, a_min=1, a_max=1, phase=np.pi / 2, x0=0, fill_factor=0.5\n", ")\n", "red.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### blazed grating" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:54.488319Z", "start_time": "2020-05-01T22:57:54.212948Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "period = 50 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "red.blazed_grating(x0=period / 2, period=period, phase_max=2 * np.pi)\n", "red.draw(kind=\"phase\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### chirped grating: general" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:54.801789Z", "start_time": "2020-05-01T22:57:54.517216Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-250 * um, 250 * um, 512)\n", "wavelength = 0.6238 * um\n", "\n", "fx = \"10+20*(self.x/length)**2\"\n", "\n", "red = Scalar_mask_X(x, wavelength)\n", "red.chirped_grating(\n", " kind=\"amplitude_binary\",\n", " p_x=fx,\n", " length=500 * um,\n", " x0=0 * um,\n", " amp_max=1,\n", " amp_min=0,\n", " delta_x=0,\n", " phase_max=np.pi,\n", ")\n", "red.draw(kind=\"amplitude\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### chirped grating: linear p" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:55.583146Z", "start_time": "2020-05-01T22:57:55.252957Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(0 * um, 100 * um, 4096 * 4)\n", "wavelength = 0.6238 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "conds = {\n", " \"kind\": \"amplitude_binary\",\n", " \"p0\": 20 * um,\n", " \"p1\": 4 * um,\n", " \"amp_min\": 0,\n", " \"amp_max\": 1,\n", " \"delta_x\": 0,\n", " \"phase_max\": np.pi,\n", " \"length\": 0, # equal to length of x\n", "}\n", "red.chirped_grating_p(**conds)\n", "red.draw(kind=\"amplitude\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### chirped grating: linear q" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2020-05-01T22:57:56.389184Z", "start_time": "2020-05-01T22:57:56.043732Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAm7UlEQVR4nO3de7QU1Z0v8O9XEEElGAS9BFQgog6OyRXRmDVmbt4+ViIy0VxZkzGZJMPKvTGaZK4JXl1qHDUxrphoxgnRFZeJy5HIjDEY8ZHJTeIyBuUAirw5IsgBIoeHiAIekd/9o+scq/t0d712Ve3u8/2sxaKr9q5du+tU9+6u+nYVzQwiIiLNHFR2B0RExH8aLEREJJIGCxERiaTBQkREImmwEBGRSIPL7kBSo0aNsvHjx5fdDRGRlrJo0aJtZjY67fItN1iMHz8eHR0dZXdDRKSlkNyQZXkdhhIRkUgaLEREJJIGCxERiaTBQkREImmwEBGRSLkNFiTvJrmV5LIG5SR5O8lOkktJTsmrLyIikk2e3yzuAXBOk/JzAUwK/s0E8JMc+yIiIhnk9jsLM3uS5PgmVaYB+IVVrpG+gOQRJMeY2Zaotg8cONCwjCRIJu5vszYbOeig+GNt3Pbj9j9Oe1FtmRmiLlHf7DlGLd9s/c2WbbZcs+fdqK+Nlmm0nkb167Xf6HnUaztJ3Xp9iNtm2vaytFW7bWrrxFlX1jZcl9euP9y/LMumbbe2rNlyzdaXVpk/yhsLYGNouiuY12+wIDkTlW8fGDFiBG644Ya6DW7atAkXXnghPvGJTyTuzIwZM3DyySfHrr9gwQLMnz8/Vt1t27bhy1/+MqZMiT7S9uqrr+LWW29tWmfv3r248MIL8YEPfKBhnT179mDixImYOXNmwzoPPPAA/vznP2PkyJF1y1euXIlrr70WJ510Ut3y++67D0uWLMGIESP6lb311lsYOXIkvvGNb9Rd9vLLL8eoUaPqlr3++uv4/ve/X7fNadOm4cwzz+xXtmLFCsyZM6ff/LVr1+Lqq6/u97fdvn07zjrrLFx00UVV83t6enDBBRf0W8eqVatw9dVXY/LkyVXzb7/9dmzbtg0HH3xw3zwzw9ChQ/Htb3+7qu5dd92FdevW4dBDD+2bt3nzZkyfPh1nn312Vd1LLrkEJ5xwQr8+33bbbVXzvvWtb2H48OFV83bs2IEf/ehHVfO++MUvYuLEiX3T3d3d+OhHP4rp06f3zXvssccwb948jBkzpqrej3/8477pevvy+vXrcffdd1dNX3HFFTjllFP65u3btw833XRT3/Ts2bOxceNGDB06FACwZs0aXHHFFXj/+9/fV2fatGk4/fTT+6b379+P66+/vm/6sssuw+jR7/wgefPmzZg9e3bf9KxZs3DYYYf1TW/ZsgU/+ck7BzC+9rWv4aijjuqbHjRoEK666qq+dX3605/GBz/4QQDA8uXLceONN+L4448HAPz0pz/Fhg0bMGzYMADArl278IMf/KDvuX7mM5/pe30+/fTTeOyxx/rW85WvfAXjxo2r+7zDfe7q6sKMGTPwkY98BABw5ZVX9u07nZ2duOyyyzB16tR+2+LZZ5/FnDlzcPjhhwMALrjggr56mfSOSHn8AzAewLIGZb8BcFZo+ncApka1edppp1kjCxcutIcffrhheTPXXnttbvU3b95ss2fPdtbu7t277ZZbbmlaZ9u2bXb77bc3rXPPPffYunXrGpY/+OCD9txzzzUsv+uuu2zjxo11y/bu3Wvf/e53Gy7b7Hk2Ktu3b5/ddNNNiZZ54YUXbO7cuf3mr1271u69995+8xv1+6GHHrLFixf3m/+9733P9uzZUzXvwIED9p3vfKdf3dtuu822b99eNW/RokX261//ul/des/H5byVK1fa/fffXzWv3t+7drl6+/J1111XNb169Wq77777mrZz66232quvvto3/cgjj9gzzzzTdBnX07X9Dpf39PTYDTfc0Df9y1/+0pYvX943/cMf/tB27txZt6033njDbr755lj9qH3e4bIFCxbYo48+WrfsiSeesKeeeqru+mu3be9yADosw/t5mWmoTQCOCU2PC+aJiIhnyhws5gG4JEhFnQlgl8U4XyEiIsXL7ZwFyfsBfBjAKJJdAK4FcDAAmNlsAPMBnAegE8AeAP+YV19ERCSbPNNQMyLKDcBX81q/iIi403a/4LaIKGgZXPcpbntR9eK006yOi/aTSNNe0v67qp+1bhFq15t1f8hax6fXblT/8t6v8ixLq60GizS/ryiK675FtRd3fc3qxWmjUZ28/hZp2q23TNLnnaS+q7p5yvJ3y6OOj6/dqP7F/TunfY3lUZZFWw0WIiKSDw0WIiISSYOFiIhE0mAhIiKR2m6wKCpRkWQ9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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(-100 * um, 100 * um, 4096 * 4)\n", "wavelength = 0.6238 * um\n", "red = Scalar_mask_X(x, wavelength)\n", "conds = {\n", " \"kind\": \"amplitude_binary\",\n", " \"p0\": 20 * um,\n", " \"p1\": 4 * um,\n", " \"amp_min\": 0,\n", " \"amp_max\": 1,\n", " \"delta_x\": 0,\n", " \"phase_max\": np.pi,\n", " \"length\": 0,\n", "}\n", "red.chirped_grating_q(**conds)\n", "red.draw(kind=\"amplitude\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 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.10.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }