Skip to content

Instantly share code, notes, and snippets.

@michaelaye
Created October 12, 2017 05:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelaye/ccac0541d040626b1c57e64d874fabe9 to your computer and use it in GitHub Desktop.
Save michaelaye/ccac0541d040626b1c57e64d874fabe9 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc": "true"
},
"source": [
" # Table of Contents\n",
"<div class=\"toc\" style=\"margin-top: 1em;\"><ul class=\"toc-item\" id=\"toc-level0\"></ul></div>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-12T05:20:09.854837Z",
"start_time": "2017-10-12T05:20:09.837138Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['In',\n",
" 'Out',\n",
" 'Path',\n",
" '_',\n",
" '__',\n",
" '___',\n",
" '__builtin__',\n",
" '__builtins__',\n",
" '__doc__',\n",
" '__loader__',\n",
" '__name__',\n",
" '__package__',\n",
" '__spec__',\n",
" '_dh',\n",
" '_i',\n",
" '_i1',\n",
" '_ih',\n",
" '_ii',\n",
" '_iii',\n",
" '_oh',\n",
" 'exit',\n",
" 'get_ipython',\n",
" 'line_magic',\n",
" 'np',\n",
" 'p4',\n",
" 'pd',\n",
" 'plt',\n",
" 'quit']"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-12T05:21:17.803131Z",
"start_time": "2017-10-12T05:21:17.754479Z"
}
},
"outputs": [],
"source": [
"%matplotlib nbagg"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-12T05:21:26.750108Z",
"start_time": "2017-10-12T05:21:26.699095Z"
}
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"window.mpl = {};\n",
"\n",
"\n",
"mpl.get_websocket_type = function() {\n",
" if (typeof(WebSocket) !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof(MozWebSocket) !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert('Your browser does not have WebSocket support.' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.');\n",
" };\n",
"}\n",
"\n",
"mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = (this.ws.binaryType != undefined);\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById(\"mpl-warnings\");\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent = (\n",
" \"This browser does not support binary websocket messages. \" +\n",
" \"Performance may be slow.\");\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = $('<div/>');\n",
" this._root_extra_style(this.root)\n",
" this.root.attr('style', 'display: inline-block');\n",
"\n",
" $(parent_element).append(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
" fig.send_message(\"send_image_mode\", {});\n",
" if (mpl.ratio != 1) {\n",
" fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
" }\n",
" fig.send_message(\"refresh\", {});\n",
" }\n",
"\n",
" this.imageObj.onload = function() {\n",
" if (fig.image_mode == 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function() {\n",
" fig.ws.close();\n",
" }\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"}\n",
"\n",
"mpl.figure.prototype._init_header = function() {\n",
" var titlebar = $(\n",
" '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
" 'ui-helper-clearfix\"/>');\n",
" var titletext = $(\n",
" '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
" 'text-align: center; padding: 3px;\"/>');\n",
" titlebar.append(titletext)\n",
" this.root.append(titlebar);\n",
" this.header = titletext[0];\n",
"}\n",
"\n",
"\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._init_canvas = function() {\n",
" var fig = this;\n",
"\n",
" var canvas_div = $('<div/>');\n",
"\n",
" canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
"\n",
" function canvas_keyboard_event(event) {\n",
" return fig.key_event(event, event['data']);\n",
" }\n",
"\n",
" canvas_div.keydown('key_press', canvas_keyboard_event);\n",
" canvas_div.keyup('key_release', canvas_keyboard_event);\n",
" this.canvas_div = canvas_div\n",
" this._canvas_extra_style(canvas_div)\n",
" this.root.append(canvas_div);\n",
"\n",
" var canvas = $('<canvas/>');\n",
" canvas.addClass('mpl-canvas');\n",
" canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
"\n",
" this.canvas = canvas[0];\n",
" this.context = canvas[0].getContext(\"2d\");\n",
"\n",
" var backingStore = this.context.backingStorePixelRatio ||\n",
"\tthis.context.webkitBackingStorePixelRatio ||\n",
"\tthis.context.mozBackingStorePixelRatio ||\n",
"\tthis.context.msBackingStorePixelRatio ||\n",
"\tthis.context.oBackingStorePixelRatio ||\n",
"\tthis.context.backingStorePixelRatio || 1;\n",
"\n",
" mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
"\n",
" var rubberband = $('<canvas/>');\n",
" rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
"\n",
" var pass_mouse_events = true;\n",
"\n",
" canvas_div.resizable({\n",
" start: function(event, ui) {\n",
" pass_mouse_events = false;\n",
" },\n",
" resize: function(event, ui) {\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" stop: function(event, ui) {\n",
" pass_mouse_events = true;\n",
" fig.request_resize(ui.size.width, ui.size.height);\n",
" },\n",
" });\n",
"\n",
" function mouse_event_fn(event) {\n",
" if (pass_mouse_events)\n",
" return fig.mouse_event(event, event['data']);\n",
" }\n",
"\n",
" rubberband.mousedown('button_press', mouse_event_fn);\n",
" rubberband.mouseup('button_release', mouse_event_fn);\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband.mousemove('motion_notify', mouse_event_fn);\n",
"\n",
" rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
" rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
"\n",
" canvas_div.on(\"wheel\", function (event) {\n",
" event = event.originalEvent;\n",
" event['data'] = 'scroll'\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" mouse_event_fn(event);\n",
" });\n",
"\n",
" canvas_div.append(canvas);\n",
" canvas_div.append(rubberband);\n",
"\n",
" this.rubberband = rubberband;\n",
" this.rubberband_canvas = rubberband[0];\n",
" this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
" this.rubberband_context.strokeStyle = \"#000000\";\n",
"\n",
" this._resize_canvas = function(width, height) {\n",
" // Keep the size of the canvas, canvas container, and rubber band\n",
" // canvas in synch.\n",
" canvas_div.css('width', width)\n",
" canvas_div.css('height', height)\n",
"\n",
" canvas.attr('width', width * mpl.ratio);\n",
" canvas.attr('height', height * mpl.ratio);\n",
" canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
"\n",
" rubberband.attr('width', width);\n",
" rubberband.attr('height', height);\n",
" }\n",
"\n",
" // Set the figure to an initial 600x600px, this will subsequently be updated\n",
" // upon first draw.\n",
" this._resize_canvas(600, 600);\n",
"\n",
" // Disable right mouse context menu.\n",
" $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
" return false;\n",
" });\n",
"\n",
" function set_focus () {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" // put a spacer in here.\n",
" continue;\n",
" }\n",
" var button = $('<button/>');\n",
" button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
" 'ui-button-icon-only');\n",
" button.attr('role', 'button');\n",
" button.attr('aria-disabled', 'false');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
"\n",
" var icon_img = $('<span/>');\n",
" icon_img.addClass('ui-button-icon-primary ui-icon');\n",
" icon_img.addClass(image);\n",
" icon_img.addClass('ui-corner-all');\n",
"\n",
" var tooltip_span = $('<span/>');\n",
" tooltip_span.addClass('ui-button-text');\n",
" tooltip_span.html(tooltip);\n",
"\n",
" button.append(icon_img);\n",
" button.append(tooltip_span);\n",
"\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" var fmt_picker_span = $('<span/>');\n",
"\n",
" var fmt_picker = $('<select/>');\n",
" fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
" fmt_picker_span.append(fmt_picker);\n",
" nav_element.append(fmt_picker_span);\n",
" this.format_dropdown = fmt_picker[0];\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = $(\n",
" '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
" fmt_picker.append(option)\n",
" }\n",
"\n",
" // Add hover states to the ui-buttons\n",
" $( \".ui-button\" ).hover(\n",
" function() { $(this).addClass(\"ui-state-hover\");},\n",
" function() { $(this).removeClass(\"ui-state-hover\");}\n",
" );\n",
"\n",
" var status_bar = $('<span class=\"mpl-message\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"}\n",
"\n",
"mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAAAXNSR0IArs4c6QAAQABJREFUeAHs3Qfc3fO9B/Bfhi2JnYiEECNGEoksOtDqUEWp2ntWJ126dOjSSbXa2jOhqlTV5bZuVUvJElmEBIlERAaSEBkS9/c/58EjMp5xxn+8z+v1v3meM37/7+/9Pffefvr9n/OE4EaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECNRRoU8NzOVU6BJKed43HwnSUowoCBAgQIECAAAECBOoo0CGee2Y83qhjDU7dINCeROEEknA+o3C7tmECBAgQIECAAAECBFYn0C0+8NzqHnR/7QQE9NpZp+VMpcn59OnTQ8eOHdNSkzoIECBAgAABAgQIEKixwIIFC0L37t2Ts7q6tsb2qzudgL46mZzfn4RzAT3nTbY9AgQIECBAgAABAgQyJdA2U9UqlgABAgQIECBAgAABAgQI5FRAQM9pY22LAAECBAgQIECAAAECBLIlIKBnq1+qJUCAAAECBAgQIECAAIGcCgjoOW2sbREgQIAAAQIECBAgQIBAtgQE9Gz1S7UECBAgQIAAAQIECBAgkFMBAT2njbUtAgQIECBAgAABAgQIEMiWgICerX6plgABAgQIECBAgAABAgRyKiCg57SxtkWAAAECBAgQIECAAAEC2RIQ0LPVL9USIECAAAECBAgQIECAQE4FBPScNta2CBAgQIAAAQIECBAgQCBbAgJ6tvqlWgIECBAgQIAAAQIECBDIqYCAntPG2hYBAgQIECBAgAABAgQIZEtAQM9Wv1RLgAABAgQIECBAgAABAjkVENBz2ljbIkCAAAECBAgQIECAAIFsCQjo2eqXagkQIECAAAECBAgQIEAgpwICek4ba1sECBAgQIAAAQIECBAgkC0BAT1b/VItAQIECBAgQIAAAQIECORUQEDPaWNtiwABAgQIECBAgAABAgSyJSCgZ6tfqiVAgAABAgQIECBAgACBnAoI6DltrG0RIECAAAECBAgQIECAQLYEBPRs9Uu1BAgQIECAAAECBAgQIJBTAQE9p421LQIECBAgQIAAAQIECBDIloCAnq1+qZYAAQIECBAgQIAAAQIEciogoOe0sbZFgAABAgQIECBAgAABAtkSENCz1S/VEiBAgAABAgQIECBAgEBOBQT0nDbWtggQIECAAAECBAgQIEAgWwICerb6pVoCBAgQIECAAAECBAgQyKmAgJ7TxtoWAQIECBAgQIAAAQIECGRLQEDPVr9US4AAAQIECBAgQIAAAQI5FRDQc9pY2yJAgAABAgQIECBAgACBbAkI6Nnql2oJECBAgAABAgQIEMiwwITn5ofFy5ZneAdKr6aAgF5NXWsTIECAAAECBAgQIECgQeChp+aFT/3hoXDmDaOFdO+KVQq0X+W97iRAgAABAgQIECBAgACBign8d8rccOp1I2MwXxHaVGxVC+VNwAQ9bx21HwIECBAgQIAAAQIEUiXwYKNwvt8uW4bLTtgrrL9Ou1TVqJh0CJigp6MPqiBAgAABAgQIECBAIIcCD0yeG06Lk/Mlr68I+8dw/ocYztdrL5znsNUV2ZKAXhFGixAgQIAAAQIECBAgQOCdAv+ZPCecft2oUjj/QK+twu+P7y+cv5PIbysJuMR9JRC/EiBAgAABAgQIECBAoLUC/35yTpycl8P5AbsK5631LMrrTdCL0mn7JECAAAECBAgQIECgJgL3x3B+xvWjwtJ4WfuHduscLj22f1i3vdloTfAzfhLvkow3UPkECBAgQIAAAQIECKRH4L4nZr8Vzj8snKenMRmpxAQ9I41SJgECBAgQIECAAAEC6Ra4b9LscFb8G+dLl68IH9m9c/jNMSbn6e5Y+qoT0NPXExURIECAAAECBAgQIJAxgX9OeiF8+oZHSuH8wD26hEuO6RfWaeeC5Yy1se7lCuh1b4ECCBAgQIAAAQIECBDIssC9j70Qzh46Oixb/kb4WO8u4ddHC+dZ7mc9a/df6dRT37kJECBAgAABAgQIEMi0wD8ahfODem8tnGe6m/Uv3gS9/j1QAQECBAgQIECAAAECGRT4+8RZ4bPDHilNzj/eZ+tw8VF7hvYua89gJ9NTsoCenl6ohAABAgQIECBAgACBjAjcM2FW+FwM56+veCMc3LdruOjIvsJ5RnqX5jJd4p7m7qiNAAECBAgQIECAAIHUCdwz4fm3wvkhwnnq+pPlggT0LHdP7QQIECBAgAABAgQI1FTg7vFJOB9Tmpx/Ys+u4Vcm5zX1z/vJXOKe9w7bHwECBAgQIECAAAECFRG4a9zz4Qs3jwnL42Xth/XbJvziU31Du7ZtKrK2RQgkAibo3gcECBAgQIAAAQIECBBYi8Dfxs18K5wfLpyvRcvDLRUwQW+pnNcRIECAAAECBAgQIFAIgTvHzgzn/PHR0uT8k/27hZ8d0cfkvBCdr/0mBfTamzsjAQIECBAgQIAAAQIZEbjj0efCuTGcx6vaw6f26hYu/KRwnpHWZbJMAT2TbVM0AQIECBAgQIAAAQLVFmgczo8cEMP54X1CW585rzZ7odf3GfRCt9/mCRAgQIAAAQIECBBYlcBfxrw9OT96YHfhfFVI7qu4gIBecVILEiBAgAABAgQIECCQZYHbHpkRvnRL+bL2YwZ1Dz8+rLfJeZYbmqHaXeKeoWYplQABAgQIECBAgACB6gr8efSM8JVbx4Y34mfOjxm0bfjRJ/YQzqtLbvVGAibojTD8SIAAAQIECBAgQIBAcQVubRTOjxssnBf3nVC/nZug18/emQkQIECAAAECBAgQSInALaOmh/P+PK40OT9+yLbhB4fuEdq0aZOS6pRRFAEBvSidtk8CBAgQIECAAAECBFYpcMvIGM5vK4fzE/feLnz/kN2F81VKubPaAgJ6tYWtT4AAAQIECBAgQIBAagVuHvFs+Ppt40v1nbxPj/Ddg3cTzlPbrfwX5jPo+e+xHRIgQIAAAQIECBAgsAqBYcOF81WwuKuOAibodcR3agIECBAgQIAAAQIE6iMwdPi08K3bJ5ROfsp7eoTvfNzkvD6dcNbGAgJ6Yw0/EyBAgAABAgQIECCQe4EbH54Wvv2Xcjg/7b3bh28ftKvL2nPf9WxsUEDPRp9USYAAAQIECBAgQIBABQRueGhqOP+OiaWVznjf9uGbHxPOK8BqiQoJCOgVgrQMAQIECBAgQIAAAQLpFrj+oanhOw3h/Mz37xC+cWAvk/N0t6xw1QnohWu5DRMgQIAAAQIECBAonsC1Dz4TvnfnY6WNn7XvDuHrHxXOi/cuSP+OBfT090iFBAgQIECAAAECBAi0QuDqB54JF/ytHM7P3q9n+NpHdjE5b4Wnl1ZPQECvnq2VCRAgQIAAAQIECBCos8BVMZz/oCGcfyaG868K53XuiNOvSUBAX5OOxwgQIECAAAECBAgQyKzAlf95OvzwrsdL9X9u/x3Dlz+8s8l5ZrtZjMIF9GL02S4JECBAgAABAgQIFErgin8/HX70P+Vw/oUP7BjO/ZBwXqg3QEY3K6BntHHKJkCAAAECBAgQIEBg1QKX3f9U+Mndk0oPfuGDO4VzD9jJ5HzVVO5NmYCAnrKGKIcAAQIECBAgQIAAgZYL/CGG8wsbwvk5MZifc8DOLV/MKwnUWEBArzG40xEgQIAAAQIECBAgUB2B3/1rSvjZPU+UFj83BvMvxoDuRiBLAgJ6lrqlVgIECBAgQIAAAQIEVilw6X1Tws//txzOvxQ/b55c2u5GIGsCAnrWOqZeAgQIECBAgAABAgTeIfDbf04Ov/j7k6X7vhK/qf1zHxDO3wHkl8wICOiZaZVCCRAgQIAAAQIECBBYWeCS/5scfvWPcjhP/sb5Z+OfU3MjkFUBAT2rnVM3AQIECBAgQIAAgYILXHzvk+HieyeXFL720V3CZ/YTzgv+lsj89gX0zLfQBggQIECAAAECBAgUT+CiODX/dZyeJ7evH9grfHrfnsVDsOPcCQjouWupDREgQIAAAQIECBDIr8Abb7wRLopT8+TS9uT2zY/1Cme+XzjPb8eLtTMBvVj9tlsCBAgQIECAAAECmRVIwnnyefPf/HNKaQ/f+tiu4Yz375DZ/SicwMoCAvrKIn4nQIAAAQIECBAgQCB1Akk4/2X8pvbfxj+nlty+fdCu4fT3Ceepa5SCWiUgoLeKz4sJECBAgAABAgQIEKi2QBLOk79x/rt/PVU61fkf3y2c9t7tq31a6xOouYCAXnNyJyRAgAABAgQIECBAoKkCSTj/6T1PhD/cXw7n3z14t3DKe4Tzpvp5XrYEBPRs9Uu1BAgQIECAAAECBAojkITzC++ZFC67/+nSnr9/yO7hpH16FGb/Nlo8AQG9eD23YwIECBAgQIAAAQKpF0jC+U/unhQu/3c5nF9w6O7hxL17pL5uBRJojYCA3ho9ryVAgAABAgQIECBAoOICSTj/0V2PhysfeKa09g9iOD9BOK+4swXTJyCgp68nKiJAgAABAgQIECBQWIEknP8whvOrGsL5Dz+xRzh+yHaF9bDxYgkI6MXqt90SIECAAAECBAgQSK1AEs4v+Ntj4ZoHp5Zq/PFhvcOxg7dNbb0KI1BpAQG90qLWI0CAAAECBAgQIECg2QJJOP/+nY+Fa/87tfTanxzeOxwzSDhvNqQXZFpAQM90+xRPgAABAgQIECBAIPsCSTj/3l8nhusemhbatAnhwhjOjxoonGe/s3bQXAEBvblink+AAAECBAgQIECAQMUEknD+nTsmhhseLofznx7eJxw5sHvF1rcQgSwJCOhZ6pZaCRAgQIAAAQIECORIYMWKGM7/OiHc+PCzpcn5Tz8Zw/kA4TxHLbaVZgoI6M0E83QCBAgQIECAAAECBFovkITz8++YEIYOL4fznx/RNxyxV7fWL2wFAhkWENAz3DylEyBAgAABAgQIEMiiQBLOv/WXCeGmEeVw/osYzj8pnGexlWqusICAXmFQyxEgQIAAAQIECBAgsHqBJJx/8/bx4eaR00Pb+IVwvzyybzisn8n56sU8UiQBAb1I3bZXAgQIECBAgAABAnUUSML5N24bH/44qhzOf3XknuET/bapY0VOTSBdAgJ6uvqhGgIECBAgQIAAAQK5FEjC+Xl/Hhf+NHpGaXJ+0VF7hkP3FM5z2WybarGAgN5iOi8kQIAAAQIECBAgQKApAssbwvmtDeH84qP7hUP6dm3KSz2HQKEEBPRCtdtmCRAgQIAAAQIECNRWIAnnX7t1XPjzIzNCu/ih84vj5Pxg4by2TXC2zAgI6JlplUIJECBAgAABAgQIZEsgCedf/dPYcNuY50rh/JI4OT+oz9bZ2oRqCdRQQECvIbZTESBAgAABAgQIECiKQBLOvxLD+e0N4fw3x/QLH+stnBel//bZMgEBvWVuXkWAAAECBAgQIECAwGoEXl++Inw5hvM7Hp0Z2sfL2pNwfqBwvhotdxN4W0BAf9vCTwQIECBAgAABAgQItFIgCedfumVs+OvYcjj/7bH9w0f36NLKVb2cQDEEBPRi9NkuCRAgQIAAAQIECFRdIAnn58ZwfmdDOL/0uP7hI7sL51WHd4LcCAjouWmljRAgQIAAAQIECBCon0ASzr/4x0fDXeOeD+u0axMujZPzDwvn9WuIM2dSQEDPZNsUTYAAAQIECBAgQCA9AstiOD/n5hjOx5fD+e+P2yscsFvn9BSoEgIZEWibkTqVWRZoF//5QTyeicdr8XgqHufHo0083AgQIECAAAECBAjUXCAJ51+4aUwpnK/brm34w/HCec2b4IS5ETBBz1Yrz4vlnh2Pk+IxMR4D4nFNPObH45J4uBEgQIAAAQIECBComUASzj8/bEy4Z+KsUArnJ/QPH+hlcl6zBjhR7gQE9Gy1dJ9Y7h3xuKuh7Knx32PiMajhd/8QIECAAAECBAgQqInA0tdjOL/pkfC/E18ohfPLTtgr7N9rq5qc20kI5FXAJe7Z6ux/Y7kfjMfODWX3jf++Nx53N/zuHwIECBAgQIAAAQJVF0jC+WeHNYTz9m3D5ScK51VHd4JCCJigZ6vNF8ZyO8ZjUjyWxyP5TPq34jE0Hqu7rRcfSI43bx3e/MG/BAgQIECAAAECBJorkITzzwx9JNz7eJycx3B+xYkDwr47b9ncZTyfAIFVCJigrwIlxXcdGWs7Lh7HxqN/PJLPon+l4d/4zypv34j3Jp9Rf/OYscpnuZMAAQIECBAgQIDAWgSWvL48hvPRpXC+XgznVwrnaxHzMIHmCfj27+Z51fvZ02MByRT90kaFfDv+fHw8ejW6r/GPq5qgz5g/f37o2DEZxrsRIECAAAECBAgQWLtAEs7PvvGR8M9Js0MpnJ80ILxvJ5Pztcul9xkLFiwInTp1SgpM/seC9FZanMpc4p6tXm8Yy12xUsnJpe5ruhJiSXw8OdwIECBAgAABAgQItEhg8bIknI8O9z0xJ6y/Tttw1UkDw3t23KJFa3kRAQKrFxDQV2+TxkfujEUlnzl/Nh4T49EvHl+Kx9XxcCNAgAABAgQIECBQcYEknH86hvN/NYTzq2M430c4r7izBQkkAgJ6tt4Hn4/l/iAev4tH8jcsZsbjsnhcEA83AgQIECBAgAABAhUVSML5WTeMDvc/WZ6cX31yDOc9Tc4rimwxAo0EfAa9EUZBfkw+eB4/gu4z6AXpt20SIECAAAECBFokkITzM64fFf4zeW7YYJ12IQnne/fcvEVreVE6BXwGPX19MUFPX09URIAAAQIECBAgQKCuAiuH82tOGRiG7CCc17UpTl4IAQG9EG22SQIECBAgQIAAAQJNE3htaXly/sCUuWHDdduFa+LkfLBw3jQ8zyLQSgEBvZWAXk6AAAECBAgQIEAgLwJJOD/9+pHhwSnzwkYxnF976qAwsMdmedmefRBIvYCAnvoWKZAAAQIECBAgQIBA9QUWLX09nHbtqPDQ0+Vwfl0M5wOE8+rDOwOBRgICeiMMPxIgQIAAAQIECBAookASzk+9dmR4+OkXw8brtQ/XnTow7LWdyXkR3wv2XF8BAb2+/s5OgAABAgQIECBAoK4CSTg/5ZqRYfgzb4bzQTGcb1rXmpycQFEFBPSidt6+CRAgQIAAAQIECi/w6pIYzuPkfEQM5x2Syflpg0L/bYXzwr8xANRNQECvG70TEyBAgAABAgQIEKifQCmcx8n5iKnlcH59DOf9hPP6NcSZCUQBAd3bgAABAgQIECBAgEDBBF5JJufXjAgjp74UOqzfPtxw2uCwZ/dNCqZguwTSJyCgp68nKiJAgAABAgQIECBQNYGFi5eFk+PkfPS0cji/MYbzvsJ51bwtTKA5AgJ6c7Q8lwABAgQIECBAgECGBZJwftLVI8Ijz74cOsbJ+Y2nDw59upmcZ7ilSs+ZgICes4baDgECBAgQIECAAIFVCSxoCOdjYjjvtME6IZmc9+7WaVVPdR8BAnUSENDrBO+0BAgQIECAAAECBGolkITzE68aER6dXg7nQ+PkfI9thPNa+TsPgaYKCOhNlfI8AgQIECBAgAABAhkUmP9aDOfxsvaxMZxvsmF5ci6cZ7CRSi6EgIBeiDbbJAECBAgQIECAQBEFSuH8quFh7Iz5pXCeTM5372pyXsT3gj1nQ0BAz0afVEmAAAECBAgQIECgWQLzFy0LJ1w9PIyL4XzTODkfevqQsFvXjs1aw5MJEKitgIBeW29nI0CAAAECBAgQIFB1gSScHx8n5+Ofmx8222jdGM4Hh123Fs6rDu8EBFopIKC3EtDLCRAgQIAAAQIECKRJ4OVFS0vhfMJzC0rhfNgZg0OvLsJ5mnqkFgKrExDQVyfjfgIECBAgQIAAAQIZE3jp1aXhuCuHh8eeXxA2j5PzYWcMCbt06ZCxXSiXQHEFBPTi9t7OCRAgQIAAAQIEciTQOJxvsXE5nO/cWTjPUYttpQACAnoBmmyLBAgQIECAAAEC+RZ4sWFy/nicnG+x8XrhpnhZ+07Ceb6bbne5FBDQc9lWmyJAgAABAgQIECiKwLxXlpQua580a2EpnN985uCw41Ym50Xpv33mS0BAz1c/7YYAAQIECBAgQKBAAo3D+ZYdksn5kBjONy6QgK0SyJeAgJ6vftoNAQIECBAgQIBAQQTmJpPzK4aHJ15YGLZKwvmZQ0LPLYXzgrTfNnMqIKDntLG2RYAAAQIECBAgkF+BOQuXhGOveDhMnv1K6NyxPDnfQTjPb8PtrDACAnphWm2jBAgQIECAAAECeRBoHM67dFy/NDnffouN8rA1eyBQeAEBvfBvAQAECBAgQIAAAQJZEZi9cHGcnA8PU+LkPAnnN8fL2nsI51lpnzoJrFVAQF8rkScQIECAAAECBAgQqL/A7AWLwzHxsvan5rwatu4UJ+fxC+GE8/r3RQUEKikgoFdS01oECBAgQIAAAQIEqiCQhPOjYzh/Oobzrkk4j5Pz7TZ3WXsVqC1JoK4CAnpd+Z2cAAECBAgQIECAwJoFXkgm55fHcD731bDNJhuUJufbbr7hml/kUQIEMikgoGeybYomQIAAAQIECBAogsCs+eXL2p9pCOfJZ867byacF6H39lhMAQG9mH23awIECBAgQIAAgZQLPD//tdLkfOq8RaXJuXCe8oYpj0AFBAT0CiBaggABAgQIECBAgEAlBWa+HMN5/Mz5tBjOu226Qenb2rttanJeSWNrEUijgICexq6oiQABAgQIECBAoLACSTg/On7m/NkXF8XL2cufORfOC/t2sPGCCQjoBWu47RIgQIAAAQIECKRX4Llkct4QzreNnzVPvq09+WI4NwIEiiEgoBejz3ZJgAABAgQIECCQcoEZLy0qXdY+/cXX4p9Qi+E8/p3zrsJ5yrumPAKVFRDQK+tpNQIECBAgQIAAAQLNFpgeL2dPPnM+46VyOE++EG7rTibnzYb0AgIZFxDQM95A5RMgQIAAAQIECGRbIAnnyWfOk8vbt99io9LkvEun9bO9KdUTINAigbYtepUXESBAgAABAgQIECDQagHhvNWEFiCQKwET9Fy102YIECBAgAABAgSyIvBs/BNqR1/+UJg5f3HYIZmcx8vaO3c0Oc9K/9RJoBoCAno1VK1JgAABAgQIECBAYA0C0+a9Wvq29lI433KjcHP8QrithPM1iHmIQDEEBPRi9NkuCRAgQIAAAQIEUiIwdW4M5/EL4Z6Pk/OeMZwnk/OtOpicp6Q9yiBQVwEBva78Tk6AAAECBAgQIFAkgWeScB6/EG7WgsVhx602DsPOGCycF+kNYK8E1iIgoK8FyMMECBAgQIAAAQIEKiGQhPPkM+cvLFgSdiqF8yFhyw7rVWJpaxAgkBMBAT0njbQNAgQIECBAgACB9Ao8NeeV0uR89sIlYefOyeR8SNhiY+E8vR1TGYH6CPgza/Vxd1YCBAgQIECAAIGCCDQO57t07iCcF6TvtkmgJQIm6C1R8xoCBAgQIECAAAECTRCYMjtOzuMXws2Jk/NeXTqEoacPDpubnDdBzlMIFFNAQC9m3+2aAAECBAgQIECgygJTZi+MnzkfHua+Ug7nyWXtm220bpXPankCBLIsIKBnuXtqJ0CAAAECBAgQSKXA5BcWlibnc19ZGnbdumNpci6cp7JViiKQKgGfQU9VOxRDgAABAgQIECCQdYEnG4Xz3WI4HxYvaxfOs95V9ROojYAJem2cnYUAAQIECBAgQKAAAk/MWhiOjZ85n/fq0rB71/LkfJMNXdZegNbbIoGKCAjoFWG0CAECBAgQIECAQNEFJs1aEMP58PBiDOd7bNMx3Hja4CCcF/1dYf8EmicgoDfPy7MJECBAgAABAgQIvEvg8ecXhOOuLIfz3tt0KoXzThuu867nuYMAAQJrEhDQ16TjMQIECBAgQIAAAQJrEXhsZhLOHw4vLVoW+nTrFG6Ik/NOGwjna2HzMAECqxDwJXGrQHEXAQIECBAgQIAAgaYITJw5PxzbEM77CudNIfMcAgTWIGCCvgYcDxEgQIAAAQIECBBYncCE5+aH468aHl6Ok/O+3TeJk/NBoeP6Juer83I/AQJrFxDQ127kGQQIECBAgAABAgTeIZCE8+Qz5/NfWxb2jOH8euH8HT5+IUCgZQICesvcvIoAAQIECBAgQKCgAuNnJOH84bBg8euh/7abhOtOHRQ6mJwX9N1g2wQqKyCgV9bTagQIECBAgAABAjkWGDfj5XB8nJwn4Xyv7TYN154yUDjPcb9tjUCtBQT0Wos7HwECBAgQIECAQCYFxk6P4Tx+5nxhDOcDknAeJ+cbr+c/TmeymYomkFIB3+Ke0sYoiwABAgQIECBAID0CjybhPE7Ok3A+sIdwnp7OqIRAvgT8V3756qfdECBAgAABAgQIVFhgzLMvhROvGhEWLnk9DOqxWbgmXta+kcl5hZUtR4BAIiCgex8QIECAAAECBAgQWI3A6GkvhZOuHhFeScL59jGcnyycr4bK3QQIVEBAQK8AoiUIECBAgAABAgTyJzB62osxnI8shfMhO2wWro7hfMN1/cfn/HXajgikR8D/hUlPL1RCgAABAgQIECCQEoFRU5NwPiK8unR52HuHzcNVJw8QzlPSG2UQyLOAgJ7n7tobAQIECBAgQIBAswVGxnB+ckM436dnDOcnDQwbrNuu2et4AQECBJorIKA3V8zzCRAgQIAAAQIEcisw4pkYzq8ZERbFyfl7dtw8XHmicJ7bZtsYgRQKCOgpbIqSCBAgQIAAAQIEai8w/Ol54ZRrR5bC+Xt33CJcedKAsP46Jue174QzEiiugIBe3N7bOQECBAgQIECAQIPAw0k4v2ZkeG3Z8vC+nbYIV5wonHtzECBQewEBvfbmzkiAAAECBAgQIJAigYeemhdOjZPzJJy/f+ctw+Un7GVynqL+KIVAkQQE9CJ1214JECBAgAABAgTeIfDfp+aWwvniZSvCvjGcXyacv8PHLwQI1FagbW1P52wECBAgQIAAAQIE0iHw4JS3w/l+uwjn6eiKKggUW8AEvdj9t3sCBAgQIECAQCEFHpg8N5x23ciw5PUVYf8Yzn9/vMvaC/lGsGkCKRMQ0FPWEOUQIECAAAECBAhUV+A/k+eE068bVQrnH+y1Vfjd8f3Deu19W3t11a1OgEBTBAT0pih5DgECBAgQIECAQC4E/v1kDOfXjwpL4+T8gF23CpceJ5znorE2QSAnAgJ6ThppGwQIECBAgAABAmsWuD+G8zMawvmHduscLj22f1i3va9kWrOaRwkQqKWA/4tUS23nIkCAAAECBAgQqIvAfU/Mfiucf1g4r0sPnJQAgbULmKCv3cgzCBAgQIAAAQIEMixw36TZ4awbRoely1eEj+zeOfzmGJPzDLdT6QRyLSCg57q9NkeAAAECBAgQKLbAPye9ED59wyOlcH7gHl3CJcf0C+u0cxFpsd8Vdk8gvQICenp7ozICBAgQIECAAIFWCNz72Avh7KGjw7Llb4SP9e4Sfn20cN4KTi8lQKAGAv7rwxogOwUBAgQIECBAgEBtBf7RKJwf1Htr4by2/M5GgEALBUzQWwjnZQQIECBAgAABAukU+PvEWeGzwx4pTc4P6hPD+VF7hvYua09ns1RFgMA7BAT0d3D4hQABAgQIECBAIMsC90yYFT4Xw/nrK94IB/ftGi46sq9wnuWGqp1AwQRc4l6whtsuAQIECBAgQCCvAvdMeP6tcH6IcJ7XNtsXgVwLCOi5bq/NESBAgAABAgSKIXD3+CScjylNzg/ds2v4lcl5MRpvlwRyJuAS95w11HYIECBAgAABAkUTuGvc8+ELN48Jy+Nl7Yf12yb84lN9Q7u2bYrGYL8ECORAwAQ9B020BQIECBAgQIBAUQX+Nm7mW+H8cOG8qG8D+yaQGwET9Ny00kYIECBAgAABAsUSuHPszHDOHx8tTc4/2b9b+NkRfUzOi/UWsFsCuRMQ0HPXUhsiQIAAAQIECORf4I5HnwvnxnAer2oPR+zVLfz0k8J5/rtuhwTyL+AS9/z32A4JECBAgAABArkSaBzOjxwQJ+fCea76azMEiiwgoBe5+/ZOgAABAgQIEMiYwF/GvD05P2pA93Dh4X1CW18Il7EuKpcAgdUJCOirk3E/AQIECBAgQIBAqgRue2RG+NIt5cvajx7YPfzk8N7Ceao6pBgCBFor4DPorRX0egIECBAgQIAAgaoL/Hn0jPCVW8eGN+Jnzo8ZtG340Sf2EM6rru4EBAjUWsAEvdbizkeAAAECBAgQINAsgVsbhfPjBgvnzcLzZAIEMiUgoGeqXYolQIAAAQIECBRL4JZR08NXGybnxw/ZNvzgUJPzYr0D7JZAsQRc4l6sftstAQIECBAgQCAzAreMnB7Ou21c6bL2E/feLnz/kN1DmzZtMlO/QgkQINBcAQG9uWKeT4AAAQIECBAgUHWBm0c8G75+2/jSeU6K4fx7wnnVzZ2AAIH6Cwjo9e+BCggQIECAAAECBBoJDBv+bPjm7eVwfvI+PcJ3D97N5LyRjx8JEMivgICe397aGQECBAgQIEAgcwJDh08L37p9QqnuU97TI3zn48J55pqoYAIEWiwgoLeYzgsJECBAgAABAgQqKXDjw9PCt/9SDuenvmf7cP7HdzU5rySwtQgQSL2AgJ76FimQAAECBAgQIJB/gRsemhrOv2NiaaOnv3f78K2DhPP8d90OCRBYWUBAX1nE7wQIECBAgAABAjUVuP6hqeE7DeH8zPfvEL5xYC+T85p2wMkIEEiLgICelk6ogwABAgQIECBQQIFrH3wmfO/Ox0o7PyuG868L5wV8F9gyAQJvCgjob0r4lwABAgQIECBAoKYCVz/wTLjgb+Vw/ul9e4bzPrqLyXlNO+BkBAikTUBAT1tH1EOAAAECBAgQKIDAVTGc/6AhnH9mv57hqx8RzgvQdlskQGAtAgL6WoA8TIAAAQIECBAgUFmBK//zdPjhXY+XFv3s/j3DVz4snFdW2GoECGRVQEDPaufUTYAAAQIECBDIoMAV/346/Oh/yuH88x/YMXzpQzu7rD2DfVQyAQLVERDQq+NqVQIECBAgQIAAgZUELrv/qfCTuyeV7v3CB3cK5x6wk3C+kpFfCRAotoCAXuz+2z0BAgQIECBAoCYCf4jh/MKGcP7FJJzHybkbAQIECLxTQEB/p4ffCBAgQIAAAQIEKizwu39NCT+754nSqufEqfk5BwjnFSa2HAECOREQ0HPSSNsgQIAAAQIECKRR4NL7poSf/285nCefN08ubXcjQIAAgVULCOirdnEvAQIECBAgQIBAKwV++8/J4Rd/f7K0ypdjOP+8cN5KUS8nQCDvAgJ63jtsfwQIECBAgACBOghc8n+Tw6/+UQ7nyd84/+z+O9ahCqckQIBAtgQE9Gz1S7UECBAgQIAAgdQL/PreyeGie4Xz1DdKgQQIpE5AQE9dSxREgAABAgQIEMiuwEVxav7rOD1Pbud9tFc4e7+e2d2MygkQIFBjAQG9xuBOR4AAAQIECBDIo8Abb7wRp+aTQ3Jpe3L7xoG9wln7Cud57LU9ESBQPQEBvXq2ViZAgAABAgQIFEKgFM7j5PySf04p7febH+sVzny/cF6I5tskAQIVFRDQK8ppMQIECBAgQIBAsQSScP7L+E3tv41/Ti25ffugXcPp79uhWAh2S4AAgQoJCOgVgrQMAQIECBAgQKBoAkk4T/7G+e/+9VRp68J50d4B9kuAQKUFBPRKi1qPAAECBAgQIFAAgSSc/yyG8983hPPvfHy3cOp7ty/Azm2RAAEC1RMQ0Ktna2UCBAgQIECAQC4FknB+4T2TwmX3P13a3/cO3i2c/B7hPJfNtikCBGoqIKDXlNvJCBAgQIAAAQLZFkjC+U/unhQu/3c5nH//kN3DSfv0yPamVE+AAIGUCAjoKWmEMggQIECAAAECaRdIwvmP/+fxcMV/nimVesGhu4cT9+6R9rLVR4AAgcwICOiZaZVCCRAgQIAAAQL1E0jC+Q/vejxc9UA5nP/gE3uEE4ZsV7+CnJkAAQI5FBDQc9hUWyJAgAABAgQIVFIgCecX/O2xcM2DU0vL/uiwPcJxg4XzShpbiwABAomAgO59QIAAAQIECBAgsFqBJJx//87HwrX/nVp6zo8P6x2OHbztap/vAQIECBBouYCA3nI7ryRAgAABAgQI5FogCeff++vEcN1D00r7vPDw3uHoQcJ5rptucwQI1FVAQK8rv5MTIECAAAECBNIpkITz78Zwfn0M523ahJCE86MGCufp7JaqCBDIi4CAnpdO2gcBAgQIECBAoEICK1a8Eb7z1wnhxoefLYXznx7eJxw5sHuFVrcMAQIECKxOQEBfnYz7CRAgQIAAAQIFFEjC+fl3TAhDh5fD+c8+2Sd8aoBwXsC3gi0TIFAHAQG9DuhOSYAAAQIECBBIo0ASzr/1lwnhphHlcP7zI/qGI/bqlsZS1USAAIFcCgjouWyrTREgQIAAAQIEmidQDufjYzifXrqs/Zef6hsO7y+cN0/RswkQINA6AQG9dX5eTYAAAQIECBDIvEASzr9x2/jwx1HTQ9v4hXC/PLJvOKyfcJ75xtoAAQKZExDQM9cyBRMgQIAAAQIEKieQhPOv3zYu3DJqRimc/+rIPcMn+m1TuRNYiQABAgSaLCCgN5nKEwkQIECAAAEC+RJYHsP5eX8eF24dXQ7nFx21Zzh0T+E8X122GwIEsiQgoGepW2olQIAAAQIECFRIIAnnX7t1XPjzI+VwfvHR/cIhfbtWaHXLECBAgEBLBAT0lqh5DQECBAgQIEAgwwJJOP/qn8aG28Y8F9rFD51fHCfnBwvnGe6o0gkQyIuAgJ6XTtoHAQIECBAgQKAJAkk4/0oM57c3hPNL4uT8oD5bN+GVnkKAAAEC1RYQ0KstbH0CBAgQIECAQEoEXl++Inw5hvM7Hp1Zmpz/5ph+4WO9hfOUtEcZBAgQCAK6NwEBAgQIECBAoAACSTj/0i1jw1/Hzgzt42XtSTg/UDgvQOdtkQCBLAkI6FnqlloJECBAgAABAi0QSML5uTGc39kQzn97bP/w0T26tGAlLyFAgACBagoI6NXUtTYBAgQIECBAoM4CSTj/4h8fDXeNe740Ob/0uP7hI7sL53Vui9MTIEBglQIC+ipZ3EmAAAECBAgQyL7AshjOz7k5hvPxz4d12rUJl8bJ+YeF8+w31g4IEMitgICe29baGAECBAgQIFBkgSScf/HmMeF/xs8qhfPfH7dXOGC3zkUmsXcCBAikXkBAT32LFEiAAAECBAgQaJ5AEs4/P2xMuGfirLBuu7bh98f3Dx/cVThvnqJnEyBAoPYCbWt/SmdspcA28fU3xmNePF6Lx/h4DIiHGwECBAgQIEAgLH19RfjcsEfeCud/OEE497YgQIBAVgRM0LPSqXKdm8Z/HozHffE4MB5z4rFTPF6KhxsBAgQIECBQcIE3w/nfH3uhNDm/7IS9wv69tiq4iu0TIEAgOwICenZ6lVR6Xjymx+OU5JeG2zNv/uBfAgQIECBAoLgCSTj/zNBHwr2Px3Devm24PIbz/XYRzov7jrBzAgSyKOAS92x17ZBY7qh4/Ckes+MxJh5nxGNNt/Xigx0bHR3W9GSPESBAgAABAtkTWPL68hjOR78Vzq84cYBwnr02qpgAAQJBQM/Wm2CHWO7Z8Zgcj4/E4w/xuCQeJ8ZjdbdvxAfmNzpmrO6J7idAgAABAgSyJ1AK5zcmk/PZYb04Ob8yhvN9d94yextRMQECBAiENgwyJbA0VptM0PdpVHUS0AfGY+9G9zX+MZmgJ8ebt2SCPmP+/PmhY8dksO5GgAABAgQIZFVg8bLl4ewbR4f7nphTDucnDQjv20k4z2o/1U2g1gILFiwInTp1Sk6b/I8FtT6/871bwAT93SZpvuf5WNxjKxX4ePx925Xua/zrkvhL8r9sbx4LGz/oZwIECBAgQCCbAkk4/3RDOF9/nbbh6pMHCufZbKWqCRAg8JaAL4l7iyITPyTf4L7LSpXuHH+fttJ9fiVAgAABAgRyLJCE87NuGB3uf3JOKIXzkwaGfXbcIsc7tjUCBAgUQ8AEPVt9viiWOyQe34zHjvE4Nh5nxuPSeLgRIECAAAECBRBIwvkZ1496O5zHyblwXoDG2yIBAoUQENCz1eaRsdzD4nFMPCbE4/x4nBOPofFwI0CAAAECBHIu8GY4/8/kuWGDddqFa04eFPbpaXKe87bbHgECBRJwiXv2mv23WHJyuBEgQIAAAQIFEnhtaXly/sCUhnB+ysAwZIfNCyRgqwQIEMi/gICe/x7bIQECBAgQIJBxgSScn379yPDglHlhw3WTyfnAMFg4z3hXlU+AAIF3Cwjo7zZxDwECBAgQIEAgNQJJOD/tupHhv0/NCxvFcH7tqYPCwB6bpaY+hRAgQIBA5QQE9MpZWokAAQIECBAgUFGBRUtfD6ddOyo89HQ5nF8Xw/kA4byixhYjQIBAmgQE9DR1Qy0ECBAgQIAAgQaBJJyfcs3IMPyZF8PG67UP1506MOy1ncm5NwgBAgTyLCCg57m79kaAAAECBAhkUuDVJTGcXzsyjHgrnA+K4XzTTO5F0QQIECDQdAEBvelWnkmAAAECBAgQqLpAKZzHyfmIqS+GDsnk/LRBof+2wnnV4Z2AAAECKRAQ0FPQBCUQIECAAAECBBKBV5LJ+TUjwsipL5XC+fUxnPcTzr05CBAgUBgBAb0wrbZRAgQIECBAIM0CSTg/+eoRYdS0GM7Xbx9uOG1w2LP7JmkuWW0ECBAgUGEBAb3CoJYjQIAAAQIECDRXYOHiZeHkeFn76IZwfmMM532F8+Yyej4BAgQyLyCgZ76FNkCAAAECBAhkWWBBDOcnxcn5mGdfDh3j5PzG0weHPt1MzrPcU7UTIECgpQICekvlvI4AAQIECBAg0EqBJJyfeNWI8Oj0l0OnDdYJQ2M432ObTq1c1csJECBAIKsCAnpWO6duAgQIECBAINMC81+L4TxOzscK55nuo+IJECBQSQEBvZKa1iJAgAABAgQINEGgFM6vGh7GzpgfNtlwnZB85tzkvAlwnkKAAIGcCwjoOW+w7REgQIAAAQLpEpi/aFk44erhYVwM55vGcD709CFht64d01WkaggQIECgLgICel3YnZQAAQIECBAookASzo+Pk/PxzwnnRey/PRMgQGBtAgL62oQ8ToAAAQIECBCogMDLi5aWwvmE5xaEzTZat/SFcLtubXJeAVpLECBAIDcCAnpuWmkjBAgQIECAQFoFknB+3JXDw8SZC8LmMZwPO2NI2KVLh7SWqy4CBAgQqJOAgF4neKclQIAAAQIEiiHw0qvlcP7Y88J5MTpulwQIEGi5gIDecjuvJECAAAECBAisUeDFhnD+eAznW2xcnpzv3NnkfI1oHiRAgECBBQT0Ajff1gkQIECAAIHqCSTh/NgrHg6TZi2M4Xy9cNMZg8NOwnn1wK1MgACBHAgI6Dlooi0QIECAAAEC6RKY98qS0mfOk3C+ZYcknA8JO261cbqKVA0BAgQIpE5AQE9dSxREgAABAgQIZFlgbhLOrxgennhBOM9yH9VOgACBeggI6PVQd04CBAgQIEAglwJJOE8ua3/yhVfCVsnk/MwhoeeWJue5bLZNESBAoAoCAnoVUC1JgAABAgQIFE9gzsJyOJ88+5XQuWP5svYdhPPivRHsmAABAq0QENBbgeelBAgQIECAAIFEYPbCxXFyPjxMieG8S8f1S5Pz7bfYCA4BAgQIEGiWgIDeLC5PJkCAAAECBAi8U2D2gsXhmHhZ+1NzXg1bd4rhPH4hXA/h/J1IfiNAgACBJgkI6E1i8iQCBAgQIECAwLsFknB+dAznT8dw3jUJ5/Ez59ttbnL+bin3ECBAgEBTBAT0pih5DgECBAgQIEBgJYEXksn55TGczy2H85vP3Dtsu/mGKz3LrwQIECBAoOkCAnrTrTyTAAECBAgQIFASmDW/fFn7MzGcb7PJBqXL2oVzbw4CBAgQaK2AgN5aQa8nQIAAAQIECiXw/PzXSpPzqfMWlcL5zfGy9u6bmZwX6k1gswQIEKiSgIBeJVjLEiBAgAABAvkTmPlyDOfxM+fTYjjvtml5ci6c56/PdkSAAIF6CQjo9ZJ3XgIECBAgQCBTAkk4Pzp+5vzZF8vhPJmcd9vU5DxTTVQsAQIEUi4goKe8QcojQIAAAQIE6i/wXDI5bwjn3TfbICRfCJd89tyNAAECBAhUUkBAr6SmtQgQIECAAIHcCcx4aVHpsvbpL74Wto2fNU8m512F89z12YYIECCQBgEBPQ1dUAMBAgQIECCQSoHp8XL25DPnM156Lf598w1L39YunKeyVYoiQIBALgQE9Fy00SYIECBAgACBSgsk4Tz5zHlyeXuPJJzHyfnWnVzWXmln6xEgQIDA2wIC+tsWfiJAgAABAgQIlAQah/Ptt9ioNDnv0ml9OgQIECBAoKoCAnpVeS1OgAABAgQIZE3g2fgn1I6+/KEwc/7isEMM58POGBKE86x1Ub0ECBDIpoCAns2+qZoAAQIECBCogsC0ea+Wvq29FM63LE/OO3c0Oa8CtSUJECBAYBUCAvoqUNxFgAABAgQIFE9g6twYzuMXwj0fJ+c9G8L5VsJ58d4IdkyAAIE6CgjodcR3agIECBAgQCAdAs8k4Tx+IdysBQ3hPH4h3FYdTM7T0R1VECBAoDgCAnpxem2nBAgQIECAwCoEknCefOb8hQVLwk5bbVz6zPmWHdZbxTPdRYAAAQIEqisgoFfX1+oECBAgQIBAigWemvNKaXI+e6FwnuI2KY0AAQKFERDQC9NqGyVAgAABAgQaCzQO5zt3Lk/Ot9jY5LyxkZ8JECBAoLYCAnptvZ2NAAECBAgQSIHAlNlxch6/EG5OnJz36tIhDD19cNhcOE9BZ5RAgACBYgsI6MXuv90TIECAAIHCCUyZvTB+5nx4mPuKcF645tswAQIEUi4goKe8QcojQIAAAQIEKicw+YWFpcn53FeWlibnw84YEjbbaN3KncBKBAgQIECgFQJtW/FaLyVAgAABAgQIZEbgyUbhfLetO4abhPPM9E6hBAgQKIqACXpROm2fBAgQIECgwAJPzFoYjo2fOZ/36tKwe9eO4cbTBodNTc4L/I6wdQIECKRTQEBPZ19URYAAAQIECFRIYNKsBTGcDw8vNoTz5AvhNtnQZfMFuEoAAEAASURBVO0V4rUMAQIECFRQwCXuFcS0FAECBAgQIJAugceffzuc996mU+nb2oXzdPVINQQIECDwtoAJ+tsWfiJAgAABAgRyJPDYzAXhuCsfDi8tWhb6dOsUbjh1cOi04To52qGtECBAgEDeBAT0vHXUfggQIECAAIEwceb8GM6Hh5djOO8bw/n18TPnnTYQzr01CBAgQCDdAgJ6uvujOgIECBAgQKCZAhOemx+Ov6ohnHffJFx/6iDhvJmGnk6AAAEC9REQ0Ovj7qwECBAgQIBAFQSScJ5Mzue/tizsmYTz0waFjuubnFeB2pIECBAgUAUBAb0KqJYkQIAAAQIEai8wfkYSzh8OCxa/Hvptu0m4Lk7OhfPa98EZCRAgQKDlAr7FveV2XkmAAAECBAikRGDcjJffCuf9YzhPLmsXzlPSHGUQIECAQJMFTNCbTOWJBAgQIECAQBoFxk5/ufSZ84Vxcr7XdpuWJucbr+c/4qSxV2oiQIAAgTULmKCv2cejBAgQIECAQIoFHk3CefzMeRLOBwjnKe6U0ggQIECgKQL+6+WmKHkOAQIECBAgkDqBMc++FE68akRYuOT1MKjHZuHqUwYGk/PUtUlBBAgQINAMAQG9GVieSoAAAQIECKRDYPS0l8JJV48IryThfPvNwjUnDwwbuaw9Hc1RBQECBAi0WMAl7i2m80ICBAgQIECgHgKjp734VjgfLJzXowXOSYAAAQJVEjBBrxKsZQkQIECAAIHKC4yaWg7nry5dHobsEC9rj5PzDdf1H2cqL21FAgQIEKiHgP+PVg915yRAgAABAgSaLTAyhvOT42XtSTjfe4fNS+F8g3XbNXsdLyBAgAABAmkVENDT2hl1ESBAgAABAm8JjHgmhvNrRoRFMZzv03PzcNVJA4Nw/haPHwgQIEAgJwICek4aaRsECBAgQCCvAsOfnhdOuXZkKZy/d8ctwhUnDhDO89ps+yJAgEDBBQT0gr8BbJ8AAQIECKRZ4OEknF8zMry2bHl4307lcL7+Oi5rT3PP1EaAAAECLRfwLe4tt/NKAgQIECBAoIoC/31qrnBeRV9LEyBAgED6BEzQ09cTFREgQIAAgcIL/HfK3HDqdSPD4mUrwr47bxkuO2GvYHJe+LcFAAIECORewAQ99y22QQIECBAgkC2BBxuF8/12Ec6z1T3VEiBAgEBrBEzQW6PntQQIECBAgEBFBR6YPDecFifnS15fEfaP4fz3x5ucVxTYYgQIECCQagEBPdXtURwBAgQIECiOwL+fnBPOuH5UKZx/oNdWMZz3D+u194VwxXkH2CkBAgQIuMTde4AAAQIECBCou8D9MZyf3hDOD9hVOK97QxRAgAABAnURMEGvC7uTEiBAgAABAm8K/OuJ2eHMG0aHpfGy9gN27RwuPa6fyfmbOP4lQIAAgUIJCOiFarfNEiBAgACBdAncF8P5WdfHcL58RfjQbjGcH9s/rNveBX7p6pJqCBAgQKBWAv4/YK2knYcAAQIECBB4h8B9k94O5x/ZXTh/B45fCBAgQKCQAibohWy7TRMgQIAAgfoK/N/jL4Szb3ykNDn/6O5dwm+O7RfWaWduUN+uODsBAgQI1FtAQK93B5yfAAECBAgUTODex2I4Hzo6LFv+Rjhwjy7hkmOE84K9BWyXAAECBFYj4L+qXg2MuwkQIECAAIHKC/yjUTg/qPfWwnnlia1IgAABAhkWMEHPcPOUToAAAQIEsiTw94mzwmeHPVKanB/UZ+tw8VF7uqw9Sw1UKwECBAhUXUBArzqxExAgQIAAAQL3TJgVPhfD+esr3ggH9+0aLjqyb2jvM+feGAQIECBA4B0CLnF/B4dfCBAgQIAAgUoL3DPh+bfC+SHCeaV5rUeAAAECORIwQc9RM22FAAECBAikTeDu8TGc3zQmLI+T80P37Bp++SmT87T1SD0ECBAgkB4BAT09vVAJAQIECBDIlcBd454PX7i5HM4P67dN+EUM5+3atsnVHm2GAAECBAhUUsAl7pXUtBYBAgQIECBQEvjbuJlvhfPDhXPvCgIECBAg0CQBE/QmMXkSAQIECBAg0FSBO8fODOf88dHSZe2H998m/PwIk/Om2nkeAQIECBRbQEAvdv/tngABAgQIVFTgjkefC+fGcB4/ch6O2Ktb+Okn+7isvaLCFiNAgACBPAu4xD3P3bU3AgQIECBQQ4HG4fxTMZz/TDivob5TESBAgEAeBAT0PHTRHggQIECAQJ0Fbh8z463J+VEDupcm5219IVydu+L0BAgQIJA1AQE9ax1TLwECBAgQSJnAbY/MCF++ZWzpsvajB3YPPzm8dxDOU9Yk5RAgQIBAJgR8Bj0TbVIkAQIECBBIp8Cto2eEr946NrwRP3N+zKBtw48+sYdwns5WqYoAAQIEMiAgoGegSUokQIAAAQJpFPjTqOnha38eVwrnxw7eNvzwUOE8jX1SEwECBAhkR8Al7tnplUoJECBAgEBqBG5pFM6PHyKcp6YxCiFAgACBTAuYoGe6fYonQIAAAQK1F/jjyGfD128bX5qcnzBku3DBobuHNm3a1L4QZyRAgAABAjkTENBz1lDbIUCAAAEC1RS4eUQ5nCfnOGnv7cL3DhHOq+ltbQIECBAoloCAXqx+2y0BAgQIEGixwLDhz4Zv3j6+9PqT9+kRvnvwbibnLdb0QgIECBAg8G4BAf3dJu4hQIAAAQIEVhIYOnxa+NbtE0r3nvKeHuE7HxfOVyLyKwECBAgQaLWAgN5qQgsQIECAAIF8C9zw8LRw/l/K4fzU92wfzv/4ribn+W653REgQIBAnQQE9DrBOy0BAgQIEMiCwA0PTQ3n3zGxVOrp790+fOsg4TwLfVMjAQIECGRTQEDPZt9UTYAAAQIEqi5w3X+nhu/+tRzOz3z/DuEbB/YyOa+6uhMQIECAQJEFBPQid9/eCRAgQIDAagSuffCZ8L07Hys9elYM518Xzlcj5W4CBAgQIFA5AQG9cpZWIkCAAAECuRC4+oFnwgV/K4fzT+/bM5z30V1MznPRWZsgQIAAgbQLCOhp75D6CBAgQIBADQWu/M/T4Yd3PV4642f26xm++hHhvIb8TkWAAAECBRcQ0Av+BrB9AgQIECDwpkDjcP7Z/XuGr3xYOH/Txr8ECBAgQKAWAgJ6LZSdgwABAgQIpFzgin8/HX70P+XJ+ec/sGP40od2dll7ynumPAIECBDIn4CAnr+e2hEBAgQIEGiWwGX3PxV+cvek0mu+EMP5ucJ5s/w8mQABAgQIVEpAQK+UpHUIECBAgEAGBX7/r6fCT+8ph/MvfnCnUjjP4DaUTIAAAQIEciEgoOeijTZBgAABAgSaL/C7f00JP7vnidILzzlgp3DOATs3fxGvIECAAAECBComIKBXjNJCBAgQIEAgOwKX3jcl/Px/y+H83BjMvxgDuhsBAgQIECBQXwEBvb7+zk6AAAECBGou8Jv/mxx++Y8nS+f9cvy8+efjpe1uBAgQIECAQP0FBPT690AFBAgQIECgZgKXxHD+q4ZwnvyN88/uv2PNzu1EBAgQIECAwJoFBPQ1+3iUAAECBAjkRuDie58MF987ubQf4Tw3bbURAgQIEMiRgICeo2baCgECBAgQWJ3ARXFq/us4PU9u5320Vzh7v56re6r7CRAgQIAAgToJCOh1gndaAgQIECBQC4E33ngjXBSn5sml7cntGwf2CmftK5zXwt45CBAgQIBAcwUE9OaKeT4BAgQIEMiIQBLOk8+b/+afU0oVf/NjvcKZ7xfOM9I+ZRIgQIBAAQUE9AI23ZYJECBAIP8CSTj/xd+fCJfe91Rps98+aNdw+vt2yP/G7ZAAAQIECGRYQEDPcPOUToAAAQIEViWQhPPkb5z/7l/C+ap83EeAAAECBNIqIKCntTPqIkCAAAECLRBIwvlP73ki/OH+cjj/zsd3C6e+d/sWrOQlBAgQIECAQK0FBPRaizsfAQIECBCokkASzi+8Z1K47P6nS2f43sG7hZPfI5xXiduyBAgQIECg4gICesVJLUiAAAECBGovkITzn9w9KVz+73I4//4hu4eT9ulR+0KckQABAgQIEGixgIDeYjovJECAAAEC6RBIwvmP7no8XPnAM6WCLjh093Di3j3SUZwqCBAgQIAAgSYLCOhNpvJEAgQIECCQPoEknP8whvOrGsL5Dz6xRzhhyHbpK1RFBAgQIECAwFoFBPS1EnkCAQIECBBIp0ASzi/422Phmgenlgr80WF7hOMGC+fp7JaqCBAgQIDA2gUE9LUbeQYBAgQIEEidQBLOv3/nY+Ha/04t1fbjw3qHYwdvm7o6FUSAAAECBAg0XUBAb7qVZxIgQIAAgVQIJOH8e3+dGK57aFqpngsP7x2OHiScp6I5iiBAgAABAq0QENBbgeelBAgQIECg1gJJOP/OHRPDDQ9PC23ahJCE86MGCue17oPzESBAgACBaggI6NVQtSYBAgQIEKiCwIoVMZz/dUK48eFnS+H8p4f3CUcO7F6FM1mSAAECBAgQqIeAgF4PdeckQIAAAQLNFEjC+fl3TAhDh5fD+c8+2Sd8aoBw3kxGTydAgAABAqkWENBT3R7FESBAgACBEJJw/q2/TAg3jSiH858f0TccsVc3NAQIECBAgEDOBAT0nDXUdggQIEAgXwJJOP/m7ePDzSOnly5r/+Wn+obD+wvn+eqy3RAgQIAAgbKAgO6dQIAAAQIEUiqQhPNv3DY+/HHU9NA2fiHcL4/sGw7rJ5yntF3KIkCAAAECrRYQ0FtNaAECBAgQIFB5gSScn/fnceFPo2eUwvlFR+0ZDt1zm8qfyIoECBAgQIBAagTapqYShRAgQIAAAQIlgeUxnH9NOPduIECAAAEChRMwQS9cy22YAAECBNIsUArnt44Lf35kRmgXr2u/OE7OD+7bNc0lq40AAQIECBCokICAXiFIyxAgQIAAgdYKJOH8q38aG24b81wpnP/66D3Dx/sI56119XoCBAgQIJAVAQE9K51SJwECBAjkWiAJ51+J4fz2hnB+ydH9wkF9ts71nm2OAAECBAgQeKeAgP5OD78RIECAAIGaC7y+fEX4cgzndzw6M7SPl7X/5ph+4cDewnnNG+GEBAgQIECgzgICep0b4PQECBAgUGyBJJx/6Zax4a9jy+H8t8f2Cx/dQzgv9rvC7gkQIECgqAICelE7b98ECBAgUHeBJJyfG8P5nW+F8/4xnHepe10KIECAAAECBOojIKDXx91ZCRAgQKDgAkk4/+IfHw13jXs+rNOuTbj02P7hw7sL5wV/W9g+AQIECBRcQEAv+BvA9gkQIECg9gLLYjg/5+YYzseXw/nvjtsrfGi3zrUvxBkJECBAgACBVAkI6Klqh2IIECBAIO8CSTj/wk1jwt0TZpUm57+P4fwA4Tzvbbc/AgQIECDQJAEBvUlMnkSAAAECBFovkITzzw8bE+6ZOCus265t+P3x/cMHdzU5b72sFQgQIECAQD4EBPR89NEuCBAgQCDlAktfj+H8pkfC/058oRTOLzthr7B/r61SXrXyCBAgQIAAgVoKtK3lyZyr4gLfiCu+EY+LK76yBQkQIECgYgJJOP/ssIZw3r5tuOxE4bxiuBYiQIAAAQI5EjBBz24zB8bSz4zHuOxuQeUECBDIv0ASzj8z9JFw7+Nxch7D+eVxcr7fLibn+e+8HRIgQIAAgeYLmKA33ywNr9g4FjE0HmfE46U0FKQGAgQIEHi3wJLXl8dwPvqtcH7FiQOE83czuYcAAQIECBBoEBDQs/lWuDSWfVc87s1m+aomQIBA/gWScH72jcnkfHZYL07Or4zhfN+dt8z/xu2QAAECBAgQaLGAS9xbTFe3Fx4dz9w/Hskl7k25rReflBxv3jq8+YN/CRAgQKA6AouXJeF8dLjviTmlcH7VSQPDe3faojonsyoBAgQIECCQGwET9Gy1snss99fxOD4ei5tYevJFcvMbHTOa+DpPI0CAAIEWCCTh/NMN4Xz9ddoG4bwFiF5CgAABAgQKKtCmoPvO6rY/EQu/PR7LG22gXfw5+Sb3FfFIJuWNH4u/lu5beYI+Y/78+aFjx47J424ECBAgUCGBJJyfdcPocP+Tc0ISzq+Ok/N9djQ5rxCvZQgQIECgwgILFiwInTp1SlZN/seCCi9vuRYIuMS9BWh1fMn/xXP3Xun818TfJ8Xjp/FYOZwnT13ScCQ/uxEgQIBAlQSScH7G9aPCfybPLYfzk2M47ymcV4nbsgQIECBAIJcCAnq22rowljthpZJfjb/PW8X9Kz3NrwQIECBQLYHG4XyDddqFq2M437vn5tU6nXUJECBAgACBnAoI6DltrG0RIECAQG0EXltanpw/MGVu2HDdduGaGM4H7yCc10bfWQgQIECAQL4EBPTs93O/7G/BDggQIJBNgSScn379yPDglHmlcH7tKYPCoO03y+ZmVE2AAAECBAjUXUBAr3sLFECAAAECWRRYtPT1cNq1o8JDT88LG8XJ+bWnDgoDewjnWeylmgkQIECAQFoEBPS0dEIdBAgQIJAZgSScn3rtyPDw0y+Wwvl1MZwPEM4z0z+FEiBAgACBtAoI6GntjLoIECBAIJUCSTg/5ZqRYfgzL4aN12sfrjt1YNhrO5PzVDZLUQQIECBAIGMCAnrGGqZcAgQIEKifwKtLYjiPk/MRb4XzQTGcb1q/gpyZAAECBAgQyJWAgJ6rdtoMAQIECFRLoBTO4+R8xNQXQ4dkcn7aoNB/W+G8Wt7WJUCAAAECRRQQ0IvYdXsmQIAAgWYJvJJMzq8ZEUZOfSl0WL99uOG0wWHP7ps0aw1PJkCAAAECBAisTUBAX5uQxwkQIECg0AILFy8LJ8fJ+ehp5XB+YwznfYXzQr8nbJ4AAQIECFRLQECvlqx1CRAgQCDzAkk4P+nqEeGRZ18OHePk/MbTB4c+3UzOM99YGyBAgAABAikVENBT2hhlESBAgEB9BRY0hPMxMZx32mCdkEzOe3frVN+inJ0AAQIECBDItYCAnuv22hwBAgQItEQgCecnXjUiPDq9HM6Hxsn5HtsI5y2x9BoCBAgQIECg6QICetOtPJMAAQIECiAw/7UYzuNl7WNjON9kw/LkXDgvQONtkQABAgQIpEBAQE9BE5RAgAABAukQKIXzq4aHsTPml8J5MjnfvavJeTq6owoCBAgQIJB/AQE9/z22QwIECBBogsD8RcvCCVcPD+NiON80Ts6Hnj4k7Na1YxNe6SkECBAgQIAAgcoICOiVcbQKAQIECGRYIAnnx8fJ+fjn5ofNNlo3hvPBYdethfMMt1TpBAgQIEAgkwICeibbpmgCBAgQqJTAy4uWlsL5hOcWlML5sDMGh15dhPNK+VqHAAECBAgQaLqAgN50K88kQIAAgZwJvPTq0nDclcPDY88vCJvHyfmwM4aEXbp0yNkubYcAAQIECBDIioCAnpVOqZMAAQIEKirQOJxvsXE5nO/cWTivKLLFCBAgQIAAgWYJCOjN4vJkAgQIEMiDwIsNk/PH4+R8i43XCzfFy9p3Es7z0Fp7IECAAAECmRYQ0DPdPsUTIECAQHMF5r2ypHRZ+6RZC0vh/OYzB4cdtzI5b66j5xMgQIAAAQKVFxDQK29qRQIECBBIqUDjcL5lh2RyPiSG841TWq2yCBAgQIAAgaIJCOhF67j9EiBAoKACc5PJ+RXDwxMvLAxbJeH8zCGh55bCeUHfDrZNgAABAgRSKSCgp7ItiiJAgACBSgrMWbgkHHvFw2Hy7FeE80rCWosAAQIECBCoqICAXlFOixEgQIBA2gQah/POHcuXte9gcp62NqmHAAECBAgQiAICurcBAQIECORWYPbCxXFyPjxMiZPzLh3XL13Wvv0WG+V2vzZGgAABAgQIZFtAQM92/1RPgAABAqsRmL1gcTgmXtb+1JxXw9adYjiPXwjXQzhfjZa7CRAgQIAAgTQICOhp6IIaCBAgQKCiAkk4PzqG86djOO+ahPP4hXDbbW5yXlFkixEgQIAAAQIVFxDQK05qQQIECBCop8ALyeT88hjO574attlkg9LkfNvNN6xnSc5NgAABAgQIEGiSgIDeJCZPIkCAAIEsCMyaX76s/ZmGcH5znJx330w4z0Lv1EiAAAECBAj4kjjvAQIECBDIicDz818rTc6nzltUmpwL5zlprG0QIECAAIECCZigF6jZtkqAAIG8Csx8OYbz+JnzaTGcd9u0fFm7yXleu21fBAgQIEAgvwICen57a2cECBAohMBzSTiPnzl/9sVF8XL2cjjvtqnL2gvRfJskQIAAAQI5ExDQc9ZQ2yFAgECRBJJwfvTlD4XpL75WCuc3n7l36fL2IhnYKwECBAgQIJAfAQE9P720EwIECBRKYMZLi0qXtSfhfNv4RXDJZ867xm9tdyNAgAABAgQIZFVAQM9q59RNgACBAgtMj5ezJ585n/HSa/Hvm5fD+dadhPMCvyVsnQABAgQI5EJAQM9FG22CAAECxRFIwvnR8TPnyeXtPWI4vylOzoXz4vTfTgkQIECAQJ4FBPQ8d9feCBAgkDOBxuF8+y02CjedMSR06bR+znZpOwQIECBAgEBRBQT0onbevgkQIJAxgWfjn1BLvhBu5vzFYYcknMfJeeeOwnnG2qhcAgQIECBAYA0CAvoacDxEgAABAukQmDbv1dJl7c8n4XzL8uRcOE9Hb1RBgAABAgQIVE6gbeWWshIBAgQIEKi8wNS5b4fznjGc3xwvaxfOK+9sRQIECBAgQKD+Aibo9e+BCggQIEBgNQLPxHB+TPxCuFkLFocdt9o4DDtjcNiqg8vaV8PlbgIECBAgQCDjAgJ6xhuofAIECORV4Ok5r5T+lNoLC5aEnUrhfEjYssN6ed2ufREgQIAAAQIEgoDuTUCAAAECqRN4KgnncXI+e+GSsHPnjcPQ04Xz1DVJQQQIECBAgEDFBQT0ipNakAABAgRaIzBl9ivh2CvK4XyXzh3C0HhZ+xYbm5y3xtRrCRAgQIAAgWwICOjZ6JMqCRAgUAiBJJwfE8P5nDg579UlhvPTB4fNhfNC9N4mCRAgQIAAgeASd28CAgQIEEiHwJTZC+OfUhse5r4inKejI6ogQIAAAQIEai1ggl5rcecjQIAAgXcJTH5hYWlyPveVpWHXrTuWJuebbbTuu57nDgIECBAgQIBAngUE9Dx3194IECCQAYEnZi0sfeZ83qtLw24N4XxT4TwDnVMiAQIECBAgUGmBtpVe0HoECBAgQKCpAo3D+e5dy5Nz4bypep5HgAABAgQI5E3ABD1vHbUfAgQIZERg0qwFcXI+PLwYJ+d7bNMx3Hja4LDJhi5rz0j7lEmAAAECBAhUQUBArwKqJQkQIEBgzQKPzVwQjrvy4fDSomWh9zadwg2nDRLO10zmUQIECBAgQKAAAgJ6AZpsiwQIEEiTQONw3qdbDOenDg6dNlwnTSWqhQABAgQIECBQFwEBvS7sTkqAAIFiCkycOT9OzoeHl+PkvG8M59fHy9o7bSCcF/PdYNcECBAgQIDAygIC+soifidAgACBqghMeK4czue/FsN5903C9acOEs6rIm1RAgQI/H979wEmV1X3AfgkoVfpvfcakpCCIEVA4QNEQIqhdxVUrIAIdgUV6SK9V+kdRAlISyeFTiCB0Hsvad85MxtYA5vsZqfc8t7nOe6UO6e8/zHkl3NnlgABAnkVENDzWjnzJkCAQI4EWofz9VI4j585n28OO+c5KqGpEiBAgAABAg0QENAbgGwIAgQIlFlg1Pi0c/5geOejiaHHstWd83mF8zK/JaydAAECBAgQaEPA70FvA8bDBAgQINB5gRHPvfVpOO8pnHceVA8ECBAgQIBAoQXsoBe6vBZHgACB5gk8FMP5nucMDO/GnfP1l1sgnB8/cz7P7P6z07yKGJkAAQIECBDIuoC/KWW9QuZHgACBHAoMf/bNsNc5g8K7H08MvZdfIJy3r3CewzKaMgECBAgQINBgAZe4NxjccAQIECi6wLBW4bzP8gsK50UvuPURIECAAAECNROwg14zSh0RIECAwNBxb4a9zx0U3os7531WiOF8n95hbpe1e2MQIECAAAECBNolIKC3i8lJBAgQIDAjgaHj3ojhfHAlnPdN4Xzf3mGu2fxnZkZunidAgAABAgQITBXwN6epEn4SIECAwEwLDBmbwvmg8P4nk0K/FRcM58adc+F8pjm9kAABAgQIECipgIBe0sJbNgECBGolMLglnH8Qw/mXV1oonLN37zDnbN1q1b1+CBAgQIAAAQKlEfAlcaUptYUSIECg9gKDnqnunKdwvuHKwnnthfVIgAABAgQIlElAQC9Tta2VAAECNRR48OnXwz7nDQopnG+08sLh7L3snNeQV1cECBAgQIBACQVc4l7ColsyAQIEOivwwJjXw37nDw4fTpgUvrLKwuGsvdYPc8zqsvbOuno9AQIECBAgUG4BAb3c9bd6AgQIdFjg/jGvhf3PH1IJ5xuvukg4c89ewnmHFb2AAAECBAgQIPB5AQH98yYeIUCAAIE2BO5/6rWw3wWDw0cTJodNYjg/QzhvQ8rDBAgQIECAAIGOCwjoHTfzCgIECJRS4L4UzuNl7R9PnBw2XW2R8I897JyX8o1g0QQIECBAgEDdBAT0utHqmAABAsURuPfJeFl73DlP4XyzFM7jzvnss/jMeXEqbCUECBAgQIBAFgQE9CxUwRwIECCQYYF7nng1HHjhkEo4/+rqi4bT9+gpnGe4XqZGgAABAgQI5FfAr1nLb+3MnAABAnUXuDuG8wNawvkWawjndQc3AAECBAgQIFBqATvopS6/xRMgQKBtgQGPvxIOumho+CRe1r7FGouFv+/eM8w2i3/XbVvMMwQIECBAgACBzgkI6J3z82oCBAgUUuCux14JB6dwPmly2HLNxcJp/YXzQhbaoggQIECAAIFMCdgKyVQ5TIYAAQLNF/jPYy9/Gs6/vpZw3vyKmAEBAgQIECBQFgE76GWptHUSIECgHQL/fvTl8N2Lh1V2zrdaa/FwSv8eYdZu/i23HXROIUCAAAECBAh0WkBA7zShDggQIFAMgTsfieH8kqFhwqQpYeu1Fw8nf1s4L0ZlrYIAAQIECBDIi4BtkbxUyjwJECBQR4F/tQrn26yzhHBeR2tdEyBAgAABAgTaErCD3paMxwkQIFASgdsffikceumwys75NusuEU7adb0wi8vaS1J9yyRAgAABAgSyJCCgZ6ka5kKAAIEGC9w2uhrOJ06eErbrvmQ4YZfuwnmDa2A4AgQIECBAgMBUAZe4T5XwkwABAiUTuG30i5Wd8xTOvyGcl6z6lkuAAAECBAhkUUBAz2JVzIkAAQJ1Frhl1IvhkEuHhxTOt19vyfA3O+d1Ftc9AQIECBAgQGDGAi5xn7GRMwgQIFAogZtHvhh+cPnwMCmG8x16LBX+unP30K1rl0Kt0WIIECBAgAABAnkUsIOex6qZMwECBGZS4KaRL3wazncUzmdS0csIECBAgAABAvURENDr46pXAgQIZE7ghhEvhB9e/lBl53ynnkuHv9g5z1yNTIgAAQIECBAot4BL3Mtdf6snQKAkAtc/9Hz40RUPhXhVe/hWr6XDcTut67L2ktTeMgkQIECAAIH8CNhBz0+tzJQAAQIzJdA6nO+y/tLhz8L5TDl6EQECBAgQIECg3gICer2F9U+AAIEmClw7fPynO+e7rr9MOHbHdUNXXwjXxIoYmgABAgQIECDQtoBL3Nu28QwBAgRyLXDNsPHhJ/8cEabEy9p3671M+OMO6wjnua6oyRMgQIAAAQJFF7CDXvQKWx8BAqUUuGroZ+H8232WFc5L+S6waAIECBAgQCBvAgJ63ipmvgQIEJiBwD+HPBd+dlV153z3vsuGP3xzbTvnMzDzNAECBAgQIEAgCwICehaqYA4ECBCokcCVg58LP796ZOWy9j36LRt+t71wXiNa3RAgQIAAAQIE6i7gM+h1JzYAAQIEGiNwxeBnwxHXjKqE8702WC785htrhS5dujRmcKMQIECAAAECBAh0WkBA7zShDggQINB8gcsHVcN5msneMZz/WjhvflHMgAABAgQIECDQQQEBvYNgTidAgEDWBC4d+Gz4xbWjKtPa58vLh19tt6ad86wVyXwIECBAgAABAu0QENDbgeQUAgQIZFXgkoHjwlHXjq5Mb98Nlw/HbCucZ7VW5kWAAAECBAgQmJGAgD4jIc8TIEAgowIXPTguHH1dNZzvv9EK4ZfbrGHnPKO1Mi0CBAgQIECAQHsEBPT2KDmHAAECGRO46IGx4ejrH67M6oAYzo8SzjNWIdMhQIAAAQIECHRcQEDvuJlXECBAoKkCF9w/Nvzqhmo4P2jjFcORW69u57ypFTE4AQIECBAgQKA2AgJ6bRz1QoAAgYYInH/fM+HXNz5SGevgTVYMR2wlnDcE3iAECBAgQIAAgQYICOgNQDYEAQIEaiFw7r3PhN/eVA3n39lkpXD4VqvZOa8FrD4IECBAgAABAhkRENAzUgjTIECAwPQEzv7v0+H3Nz9aOeV7m64UfvZ14Xx6Xp4jQIAAAQIECORRQEDPY9XMmQCBUgm0DueHbrZy+MnXVrVzXqp3gMUSIECAAAECZREQ0MtSaeskQCCXAmfd83T4wy3VnfPvf3Xl8OMthfNcFtKkCRAgQIAAAQLtEBDQ24HkFAIECDRD4Iy7x4Q/3fpYZegfbL5K+NEWq9g5b0YhjEmAAAECBAgQaJCAgN4gaMMQIECgIwKnDxgTjrutGs5/mMJ53Dl3ECBAgAABAgQIFFtAQC92fa2OAIEcCvx9wFPhz7c9Xpn5YXHX/LAthPMcltGUCRAgQIAAAQIdFhDQO0zmBQQIEKifwGl3PRX+cns1nKfPm6dL2x0ECBAgQIAAAQLlEBDQy1FnqyRAIAcCp/z7yXD8v56ozPSn8ZvaD/2qcJ6DspkiAQIECBAgQKBmAgJ6zSh1RIAAgZkXODmG87+1hPP0O84Pib9OzUGAAAECBAgQIFAuAQG9XPW2WgIEMihw4p1PhBPvfLIys59vtVr43qbCeQbLZEoECBAgQIAAgboLCOh1JzYAAQIE2hY4Ie6anxR3z9NxxNarh+9sslLbJ3uGAAECBAgQIECg0AICeqHLa3EECGRVYMqUKeGEuGueLm1Px5ExnB8snGe1XOZFgAABAgQIEGiIgIDeEGaDECBA4DOBFM7T581P+c9TlQeP+r81woEbr/jZCW4RIECAAAECBAiUUkBAL2XZLZoAgWYJpHB+/B1PhFPjr1NLxy+3WSMc8BXhvFn1MC4BAgQIECBAIEsCAnqWqmEuBAgUWiCF8/Q7zv8+YExlnUdvu2bYf6MVCr1miyNAgAABAgQIEGi/gIDefitnEiBAYKYFUjg/7rbHwz/urobzY2I43084n2lPLyRAgAABAgQIFFFAQC9iVa2JAIFMCaRwfuxtj4Uz7n66Mq9fb7dm2GdDO+eZKpLJECBAgAABAgQyICCgZ6AIpkCAQHEFUjj/062PhTPvqYbz326/Vthrg+WLu2ArI0CAAAECBAgQmGkBAX2m6byQAAEC0xdI4fwPNz8azr73mcqJv4vhfE/hfPponiVAgAABAgQIlFhAQC9x8S2dAIH6CaRw/vsYzs+ZGs6/uXbYs99y9RtQzwQIECBAgAABArkXENBzX0ILIEAgawIpnP/2pkfCefeNrUztDzusHXbvK5xnrU7mQ4AAAQIECBDImoCAnrWKmA8BArkWSOH8Nzc+Es6/f2xlHX/cYZ3Qv++yuV6TyRMgQIAAAQIECDRGQEBvjLNRCBAogUAK57++4eFwwQPjKqs9dsd1wm59hPMSlN4SCRAgQIAAAQI1ERDQa8KoEwIEyi6QwvmvYji/MIbzLl1COG7HdcMuvZcpO4v1EyBAgAABAgQIdEBAQO8AllMJECDwRQKTJ08Jx9wwOlz84LPVcL5TDOfrC+dfZOUxAgQIECBAgACBtgUE9LZtPEOAAIEZCqRwfvT1o8MlA6vh/M8xnO8snM/QzQkECBAgQIAAAQKfFxDQP2/iEQIECLRLIIXzo64bHS4bVA3nf/1W97BTr6Xb9VonESBAgAABAgQIEJhWQECfVsR9AgQItEOgGs5HxXD+XOWy9uN37h527Cmct4POKQQIECBAgAABAm0ICOhtwHiYAAECbQmkcH7kNaPCFUOeC13jF8Idv0v3sEMP4bwtL48TIECAAAECBAi0T0BAb5+TswgQIFARSOH8iGtGhiuHjK+E8xN2XS9sv95SdAgQIECAAAECBAh0WkBA7zShDggQKIvApBjOD796ZLhqqHBelppbJwECBAgQIECgkQICeiO1jUWAQG4FUjj/+VUjw9XDxodu8br2E+PO+Xbdl8ztekycAAECBAgQIEAgewICevZqYkYECGRMIIXzn/1zRLhm+POVcH7SbuuFbdcVzjNWJtMhQIAAAQIECOReQEDPfQktgACBegqkcP7TGM6vbQnnJ+/WI2yz7hL1HFLfBAgQIECAAAECJRUQ0EtaeMsmQGDGAhMnTQ4/ieH8+odeCLPEy9pP+XaPsPU6wvmM5ZxBgAABAgQIECAwMwIC+syoeQ0BAoUXSOH8x1eOCDeMqIbzU/v3CFutLZwXvvAWSIAAAQIECBBoooCA3kR8QxMgkE2BFM5/FMP5jZ+G854xnC+ezcmaFQECBAgQIECAQGEEBPTClNJCCBCohUAK5z+84qFw88gXw6zduoTT+vcMX1tLOK+FrT4IECBAgAABAgSmLyCgT9/HswQIlEhgQgznh10ew/moajj/++69wpZrLlYiAUslQIAAAQIECBBopoCA3kx9YxMgkBmBFM5/ePnwcMuolyo756fHcL6FcJ6Z+pgIAQIECBAgQKAMAgJ6GapsjQQITFcghfMfXDY83Dr6pTBbt67h9D16hs3XsHM+XTRPEiBAgAABAgQI1FxAQK85qQ4JEMiTwCcTJ4fvXzYs3P7wy5VwfsaevcJmqy+apyWYKwECBAgQIECAQEEEBPSCFNIyCBDouEAK54deOizc8UgM57N0DZVwvppw3nFJryBAgAABAgQIEKiFgIBeC0V9ECCQO4EUzg+J4fxfLeH8zLhzvqlwnrs6mjABAgQIECBAoEgCXYu0mJKs5ci4zsGxvRvbK7FdF9tqsTkIEGinwMcTJ4XvXTK0Es5njzvnZ++1vnDeTjunESBAgAABAgQI1E9AQK+fbb163iR2fFps/WLbMrZZY7sjtrljcxAgMAOBSji/eFi489FXQiWc771+2HjVRWbwKk8TIECAAAECBAgQqL+AS9zrb1zrEbaapsN94v20k94rtnticxAg0IZACuffjeH8P49Vw/k5e/cOG62ycBtne5gAAQIECBAgQIBAYwUE9MZ612O0+Vs6faONzmePj6c29Zh36g0/CZRJ4KMJKZwPDXc9/mqYY9auIYXzDVcWzsv0HrBWAgQIECBAgEDWBVzinvUKTX9+qX4nxnZfbKPbODV9Zv3tVm18G+d5mEBhBVI4P/iiz8L5ucJ5YWttYQQIECBAgACBPAsI6HmuXvWz6GvHJew2nWX8KT6XdtmntqWnc66nCBROIIXzg2I4v/uJV8Ocs3YL5+7TO3zZznnh6mxBBAgQIECAAIEiCLjEPb9VPDVOfdvYNo5terviH8fnU3MQKJ1ACucHXjgk/PfJ1yrh/Lx9e4d+Ky5UOgcLJkCAAAECBAgQyIeAgJ6POrWeZZd455TYdoht09ieic1BgMA0Ah9+Ug3n9z71Wphrtm7hvLhz3lc4n0bJXQIECBAgQIAAgSwJCOhZqkb75pJ+xVr/2LaPLf0u9MVjS0f6nPmHlVv+h0DJBVI4P+DCweG+p16vhPPz9+0T+qywYMlVLJ8AAQIECBAgQCDrAj6DnvUKfX5+340Ppc+TD4jtxVZt13jbQaD0Aimc739BNZzPHXfOL9hPOC/9mwIAAQIECBAgQCAnAnbQc1KoVtNMl7g7CBD4AoEPPpkY9j9/SHjg6dfD1HC+/vJ2zr+AykMECBAgQIAAAQIZFBDQM1gUUyJAoOMCKZzvd/7g8ODTb4R5Zp8l7pz3Dr2WE847LukVBAgQIECAAAECzRIQ0Jslb1wCBGom8P7HE8O+MZwPemZqOO8Tw/kCNetfRwQIECBAgAABAgQaISCgN0LZGAQI1E2gEs7Pi+F87Bth3rRzvn+f0HNZ4bxu4DomQIAAAQIECBCom4CAXjdaHRMgUG+B99LO+XmDwuCxb4Z555glXLR/37DeMl+q97D6J0CAAAECBAgQIFAXAQG9Lqw6JUCg3gIpnO9z7qAwZFw1nF8cw3l34bze7PonQIAAAQIECBCoo4CAXkdcXRMgUB+Bdz+aEPaJl7UPjeF8vrhzfvEBfcO6S9s5r4+2XgkQIECAAAECBBolIKA3Sto4BAjURCCF873jzvmwZ98K8885a0g75+ssPX9N+tYJAQIECBAgQIAAgWYKCOjN1Dc2AQIdEninJZwPbwnnl8Sd87WXEs47hOhkAgQIECBAgACBzAoI6JktjYkRINBa4O0PJ4S94s75iOfeCl+aq7pzLpy3FnKbAAECBAgQIEAg7wICet4raP4ESiBQCefnDAwjxr9dCedp53ytJe2cl6D0lkiAAAECBAgQKJWAgF6qclssgfwJvP3BhLDnuQPDyBjOF4g755cc0C+sueR8+VuIGRMgQIAAAQIECBCYgYCAPgMgTxMg0DyBFM73iDvno55/Oyw492wxnPcNaywhnDevIkYmQIAAAQIECBCop4CAXk9dfRMgMNMCb33wSSWcj37+nUo4v/TAvmH1xYXzmQb1QgIECBAgQIAAgcwLCOiZL5EJEiifQArnu589MDz8wjthobhzfumB/cJqi89bPggrJkCAAAECBAgQKJWAgF6qclssgewLvPl+NZw/8uI7YeF5quF81cWE8+xXzgwJECBAgAABAgQ6KyCgd1bQ6wkQqJnAGy3h/NFKOJ89XBYva19FOK+Zr44IECBAgAABAgSyLSCgZ7s+ZkegNAIpnPc/68Hw2Evvxp3z2cPlB/UNKy9q57w0bwALJUCAAAECBAgQCAK6NwEBAk0XeP29jyufOU/hfJF50855vxjO52n6vEyAAAECBAgQIECAQCMFBPRGahuLAIHPCbyWwvlZA8PjL78bFk3h/KB+YaVFhPPPQXmAAAECBAgQIECg8AICeuFLbIEEsiuQwnm6rP2Jl98TzrNbJjMjQIAAAQIECBBokICA3iBowxAg8L8Cr75bDedPvvJeWGy+6mXtK9o5/18k9wgQIECAAAECBEolIKCXqtwWSyAbAq+8+1HcOR8YnorhfPH55qhc1r7CwnNnY3JmQYAAAQIECBAgQKBJAgJ6k+ANS6CsAq+881H4drysfcyr74cl5o/hPH4h3PLCeVnfDtZNgAABAgQIECDQSkBAb4XhJgEC9RVI4Xy3GM6fjuF8yRTO4xfCLbeQnfP6quudAAECBAgQIEAgLwICel4qZZ4Eci7wcto5PzOG89feD0t9ac7KzvmyC82V81WZPgECBAgQIECAAIHaCQjotbPUEwECbQi89Hb1svZnWsL55XHnfJkFhfM2uDxMgAABAgQIECBQUoGuJV23ZRMg0CAB4bxB0IYhQIAAAQIECBDIvYAd9NyX0AIIZFfgxbc/rFzWPvb1D8LSC1Qva7dznt16mRkBAgQIECBAgEBzBQT05vobnUBhBV54K4bz+IVw42I4X2bBajhfegGXtRe24BZGgAABAgQIECDQaQEBvdOEOiBAYFqB51M4j18I9+wb1XB++UEbVL4Ybtrz3CdAgAABAgQIECBA4DMBAf0zC7cIEKiBwPg3P6jsnD/3xodh2fhFcOkL4ZaM39ruIECAAAECBAgQIEBg+gIC+vR9PEuAQAcEnos75umy9vFvfhh/v3k1nC8xv3DeAUKnEiBAgAABAgQIlFhAQC9x8S2dQC0FUjjfLV7Wni5vXz6G88vizrlwXkthfREgQIAAAQIECBRdQEAveoWtj0ADBFqH8xUWnjtcdmC/sPj8czRgZEMQIECAAAECBAgQKI6AgF6cWloJgaYIPBu/pT1d1p52zldM4TzunC82n3DelGIYlAABAgQIECBAINcCAnquy2fyBJorMO719yvf1v7C2x+FFRep7pwL582tidEJECBAgAABAgTyKyCg57d2Zk6gqQIpnKfPnL8Yw/lKLeF8UTvnTa2JwQkQIECAAAECBPItIKDnu35mT6ApAmNfq4bzl975KKy86Dzh0gP7hkXndVl7U4phUAIECBAgQIAAgcIICOiFKaWFEGiMwDOVcP5AePmdj8MqlXDeLywy7+yNGdwoBAgQIECAAAECBAosIKAXuLiWRqDWAk+/+l7lC+GE81rL6o8AAQIECBAgQIBACAK6dwEBAu0SGJPCefzM+SvvfhxWXSxd1t4vLDyPnfN24TmJAAECBAgQIECAQDsEBPR2IDmFQNkFnnqlunP+agznqy8+b7jkgL5hIeG87G8L6ydAgAABAgQIEKixgIBeY1DdESiawFOvvBsvax8YhPOiVdZ6CBAgQIAAAQIEsiYgoGetIuZDIEMCT75cDeevvVfdOU+XtS8492wZmqGpECBAgAABAgQIECiOgIBenFpaCYGaCjwRw3n/sx4Mr733SVhzifkql7UvIJzX1FhnBAgQIECAAAECBFoLCOitNdwmQKAi8PhL1XD++vufhLWWnC9cvH/fIJx7cxAgQIAAAQIECBCor4CAXl9fvRPIncBjL70Tdo+fOZ8aztMXwn1pLpe1566QJkyAAAECBAgQIJA7AQE9dyUzYQL1E3j0xRjOzx4Y3og75+ssNX+4aP8+wnn9uPVMgAABAgQIECBA4H8EBPT/4XCHQHkFHnkhhfMHw5sfTAjrLh3D+X59w/xzzVpeECsnQIAAAQIECBAg0GCBrg0ez3AECGRQ4OEX3v40nHdP4Tx+5lw4z2ChTIkAAQIECBAgQKDQAnbQC11eiyMwY4HRz78d9jhnYHgr7px3X+ZL4cL9+oT557RzPmM5ZxAgQIAAAQIECBCorYCAXltPvRHIlUAK5+kz529/OCGsl8J5/Mz5fHMI57kqoskSIECAAAECBAgURsAl7oUppYUQ6JjAqPGfhfMeywrnHdNzNgECBAgQIECAAIHaC9hBr72pHglkXmDk+LfCHnHn/J2PJoaeMZxfEC9rn9fOeebrZoIECBAgQIAAAQLFFhDQi11fqyPwOYERz70V9oyfOU/hvNdyC1TC+Tyz+6Pgc1AeIECAAAECBAgQINBgAZe4NxjccASaKfBQDOfpC+FSOF9fOG9mKYxNgAABAgQIECBA4HMCts0+R+IBAsUUGP7sm2GvcwaFdz+eGPosv2A4d9/ewc55MWttVQQIECBAgAABAvkUENDzWTezJtAhgWExnO89NZyvsGA4b5/eYW6XtXfI0MkECBAgQIAAAQIE6i3gEvd6C+ufQJMFho77bOe8r3De5GoYngABAgQIECBAgEDbAnbQ27bxDIHcCwwd90bY+9zB4b14WXu/FeNl7XHnfK7Z/N8+94W1AAIECBAgQIAAgUIK+Jt6IctqUQRCGDI2hfNB4f1PJoUNVlyoEs7nnK0bGgIECBAgQIAAAQIEMirgEveMFsa0CHRGYHAM53u1hPMvryScd8bSawkQIECAAAECBAg0SkBAb5S0cQg0SGDQM9Wd8w/izvlGKy8cztm7d7Bz3iB8wxAgQIAAAQIECBDohIBL3DuB56UEsibw4NOvh/3OHxxSOP/KKguHs/ZaP8wxq8vas1Yn8yFAgAABAgQIECDwRQIC+hepeIxADgUeGFMN5x9OEM5zWD5TJkCAAAECBAgQIBBc4u5NQKAAAvePea2yc57C+SarLmLnvAA1tQQCBAgQIECAAIHyCdhBL1/NrbhgAvc/FcP5BYPDRxMmh01XWyT8Y49eLmsvWI0thwABAgQIECBAoBwCdtDLUWerLKjAfTGc7xs/c57C+WbCeUGrbFkECBAgQIAAAQJlEbCDXpZKW2fhBO598rWwf9w5/3ji5PDV1RcNp+/RM8w+iy+EK1yhLYgAAQIECBAgQKA0AnbQS1NqCy2SwD1PvPppON9iDeG8SLW1FgIECBAgQIAAgfIK2EEvb+2tPKcCd8dwfuCFQ8Inced8izUWC6ft3sPOeU5radoECBAgQIAAAQIEWgsI6K013CaQcYEBj78SDrpoaCWcb7lmDOf9e4bZZnEhTMbLZnoECBAgQIAAAQIE2iXgb/btYnISgeYL3PVYDOcXVsP519cSzptfETMgQIAAAQIECBAgUFsBO+i19dQbgboI/Oexl8N3LhoWPpk0OWy11uLhlP49wqzd/PtaXbB1SoAAAQIECBAgQKBJAv6G3yR4wxJor8C/H/0snG+9tnDeXjfnESBAgAABAgQIEMibgB30vFXMfEslcOcjL4fvXjI0TJg0JWyzzhLhxN3Ws3NeqneAxRIgQIAAAQIECJRJQEAvU7WtNVcCdzz8Ujjk0mHVcL5uDOe7Cue5KqDJEiBAgAABAgQIEOiggEvcOwjmdAKNELi9VTjfrvuS4SThvBHsxiBAgAABAgQIECDQVAE76E3lNziBzwvcNvqlcGjcOZ84eUr4Rgznf9ule5jFF8J9HsojBAgQIECAAAECBAomIKAXrKCWk2+BW0e9GL5/2fBKON9+vSXD8TsL5/muqNkTIECAAAECBAgQaL+AgN5+K2cSqKvALS3hfFLcOd+hx1LhrzGcd+vapa5j6pwAAQIECBAgQIAAgewI+Ax6dmphJiUWuHlkdec8hfMdhfMSvxMsnQABAgQIECBAoMwCdtDLXH1rz4TAjSNeCIdd8VCohPOeS4W/fMvOeSYKYxIECBAgQIAAAQIEGixgB73B4IYj0Frghlbh/Fu9lhbOW+O4TYAAAQIECBAgQKBkAnbQS1Zwy82OwPUPPR9+FHfO41XtYecYzo/bad3Q1WfOs1MgMyFAgAABAgQIECDQYAE76A0GNxyBJHDd8M/C+a7rLyOce1sQIECAAAECBAgQIBAEdG8CAg0WuHb4+PDjK6s757v1Xib8acd17Jw3uAaGI0CAAAECBAgQIJBFAZe4Z7Eq5lRYgauHjg8/vWpEmBIva/92n2XDH765tnBe2GpbGAECBAgQIECAAIGOCdhB75iXswnMtMBVrcJ5/77C+UxDeiEBAgQIECBAgACBggoI6AUtrGVlS+CfQ54LP2vZOd+j37Lh99vbOc9WhcyGAAECBAgQIECAQPMFXOLe/BqYQcEFrhz8XDj8mpGVy9r37Ldc+O32a4UuXboUfNWWR4AAAQIECBAgQIBARwUE9I6KOZ9ABwSuGPxsOPzqUZVX7L3BcuHX3xDOO8DnVAIECBAgQIAAAQKlEhDQS1Vui22kwGWDng1HXlMN5/t8efnwq+3WtHPeyAIYiwABAgQIECBAgEDOBAT0nBXMdPMhcOnAZ8Mvrq2G8303XD4cs61wno/KmSUBAgQIECBAgACB5gkI6M2zN3JBBS5+cFz45XWjK6vbb8MVwtHbrmHnvKC1tiwCBAgQIECAAAECtRQQ0Gupqa/SC1wUw/nRLeH8gI1WCEdtI5yX/k0BgAABAgQIECBAgEA7BQT0dkI5jcCMBC58YGw45vqHK6cdtPGK4citV7dzPiM0zxMgQIAAAQIECBAg8KmAgP4phRsEZl7ggvvHhl/dUA3nB8dwfoRwPvOYXkmAAAECBAgQIECgpAICekkLb9m1EzjvvmfCb258pNLhdzZZKRy+1Wp2zmvHqycCBAgQIECAAAECpREQ0EtTaguth8A59z4TfndM5WslAAAX70lEQVRTNZx/b9OVws++LpzXw1mfBAgQIECAAAECBMogIKCXocrWWBeBs//7dPj9zY9W+j5ks5XCT78mnNcFWqcECBAgQIAAAQIESiIgoJek0JZZW4HW4fz7X105/HjLVV3WXltivREgQIAAAQIECBAonYCAXrqSW3BnBc68Z0z44y2PVbr5wearhB9tsYpw3llUrydAgAABAgQIECBAIAjo3gQEOiDwj7vHhGNvrYbzH6ZwHnfOHQQIECBAgAABAgQIEKiFgIBeC0V9lELg9AFjwnG3VcP5YXHX/LAthPNSFN4iCRAgQIAAAQIECDRIQEBvELRh8i1w2l1Phb/c/nhlEenz5unSdgcBAgQIECBAgAABAgRqKSCg11JTX4UUOPU/T4a/3vFEZW0/ieH8+8J5IetsUQQIECBAgAABAgSaLSCgN7sCxs+0wCn/fjIc/69qOE+/4/yQzVbO9HxNjgABAgQIECBAgACB/AoI6PmtnZnXWeCkO58MJ9xZDec/32q18L1NhfM6k+ueAAECBAgQIECAQKkFBPRSl9/i2xI4Ie6anxR3z9Nx+Farh+9uulJbp3qcAAECBAgQIECAAAECNREQ0GvCqJOiCEyZMiXumj8ZTm4J50duvXo4eBPhvCj1tQ4CBAgQIECAAAECWRYQ0LNcHXNrqEAlnMed85P/81Rl3KP+b41w4MYrNnQOBiNAgAABAgQIECBAoLwCAnp5a2/lrQRSOD8+flP7qfHXqaXjl9usEQ74inDeishNAgQIECBAgAABAgTqLCCg1xlY99kXSOH8r3c8Hk67a0xlskdvu2bYf6MVsj9xMyRAgAABAgQIECBAoFACAnqhymkxHRVI4fzPtz8eTh9QDefHxHC+n3DeUUbnEyBAgAABAgQIECBQAwEBvQaIusinQArnx972WDjj7qcrC/j1dmuGfTa0c57Papo1AQIECBAgQIAAgfwLCOj5r6EVzIRAJZzfGsP5PdVw/tvt1wp7bbD8TPTkJQQIECBAgAABAgQIEKiNgIBeG0e95EgghfM/3vJoOOu/z1Rm/bsYzvcUznNUQVMlQIAAAQIECBAgUEwBAb2YdbWqNgRSOP/9zY+Gc+5tCeffXDvs2W+5Ns72MAECBAgQIECAAAECBBonIKA3ztpITRZI4fx3Nz0azr2vGs7/sMPaYfe+wnmTy2J4AgQIECBAgAABAgRaBAR0b4VSCKRw/psbHwnn3z+2st4/7rBO6N932VKs3SIJECBAgAABAgQIEMiHgICejzqZZScEpg3nx+64Ttitj3DeCVIvJUCAAAECBAgQIECgDgICeh1QdZkdgRTOf3XDw+HCB8aFLl1COG7HdcMuvZfJzgTNhAABAgQIECBAgAABAi0CArq3QmEFJk+eEo65YXS4+MFnq+F8pxjO1xfOC1twCyNAgAABAgQIECCQcwEBPecFNP0vFkjh/OjrR4dLBlbD+Z9jON9ZOP9iLI8SIECAAAECBAgQIJAJAQE9E2UwiVoKpHD+yxjOL20J53/9VvewU6+lazmEvggQIECAAAECBAgQIFBzAQG95qQ6bKZACudHXTcqXDboucpl7cfv3D3s2FM4b2ZNjE2AAAECBAgQIECAQPsEBPT2OTkrBwIpnP/i2lHh8sHPha7xC+GO36V72KGHcJ6D0pkiAQIECBAgQIAAAQJRQED3NiiEQArnR1wzMlw5ZHwlnJ+w63ph+/WWKsTaLIIAAQIECBAgQIAAgXIICOjlqHOhVzkphvPDrx4ZrhoqnBe60BZHgAABAgQIECBAoOACAnrBC1z05aVw/vOrRoarh40P3eJ17SfGnfPtui9Z9GVbHwECBAgQIECAAAECBRQQ0AtY1LIsKYXzn101Ilwz7PlKOD9pt/XCtusK52Wpv3USIECAAAECBAgQKJqAgF60ipZkPSmc//SfI8K1w6vh/OTdeoRt1l2iJKu3TAIECBAgQIAAAQIEiiggoBexqgVfUwrnP7nyoXDdQy+EWeJl7ad8u0fYeh3hvOBltzwCBAgQIECAAAEChRcQ0Atf4mItcOKkyeEncef8+pZwfmr/HmGrtYXzYlXZaggQIECAAAECBAiUU0BAL2fdc7nqFM5/dOWIcOOI6s75qf17xnC+eC7XYtIECBAgQIAAAQIECBCYVkBAn1bE/UwKpHB+2BUPhZtGvhhm7dYlnBbD+dfWEs4zWSyTIkCAAAECBAgQIEBgpgQE9Jli86JGCkxI4fzyh8LNo6rh/O+79wpbrrlYI6dgLAIECBAgQIAAAQIECNRdQECvO7EBOiOQwvkPLx8ebhn1UmXn/PQYzrcQzjtD6rUECBAgQIAAAQIECGRUQEDPaGFMK4QUzn9w2fBw6+iXwmzduobT9+gZNl/Dzrn3BgECBAgQIECAAAECxRQQ0ItZ19yv6pOJk8P3LxsWbn/45Uo4P2PPXmGz1RfN/bosgAABAgQIECBAgAABAm0JCOhtyXi8aQIpnB966bBwxyMxnM/SNVTC+WrCedMKYmACBAgQIECAAAECBBoiIKA3hNkg7RVI4fyQGM7/1RLOz4w755sK5+3lcx4BAgQIECBAgAABAjkWENBzXLyiTf3jiZPCIZcMC3c++kqYPe6cn7XX+mHjVRcp2jKthwABAgQIECBAgAABAl8o0PULH/Vg1gUOiRMcG9tHsQ2MrU9suT5SOP/exZ+F87P3Fs5zXVCTJ0CAAAECBAgQIECgwwICeofJmv6CXeMM/hbbb2LrGduI2G6PLbcf0v5owqTwnYuGhn8/Vt05P2fv3uErq9g5jzV1ECBAgAABAgQIECBQIgEBPX/F/nGc8lmxnRfbI7F9J7YPYtsvttwdlXB+8dBw1+Ovhjlm7RrO3ad32GiVhXO3DhMmQIAAAQIECBAgQIBAZwUE9M4KNvb1s8XhesV2Z6thJ7fc36DVY7m4mcL5wXHnfMDUcB53zjdcWTjPRfFMkgABAgQIECBAgACBmgv4kriak9a1w5Reu8X28jSjpPurT/PY1LuzxxupTT3mnXqjmT9TOD8ohvN7nng1zDlrt8rO+QYrLdTMKRmbAAECBAgQIECAAAECTRWwg95U/poN3iX2NKWN3o6Mj7/dqo1v47ymPJzC+Xn79g7CeVP4DUqAAAECBAgQIECAQIYE7KBnqBjtmMpr8ZxJsS02zbnpC+Km3VWfesqf4o30pXJTj7SD3vSQPkcM5ul3nD/1ynth7aXmnzo3PwkQIECAAAECBAgQIFBaATvo+Sr9J3G6Q2PbvNW0Uw3T/QdaPdb65sfxzjut2rutn2zm7RTShfNmVsDYBAgQIECAAAECBAhkScAOepaq0b65pN3wC2MbEtug2A6Lbe7Y0re6OwgQIECAAAECBAgQIEAgpwICev4Kd0Wccvol4b+NbfHYHoptq9jausQ9PuUgQIAAAQIECBAgQIAAgawLCOhZr9AXz+/U+HBqDgIECBAgQIAAAQIECBAoiIDPoBekkJZBgAABAgQIECBAgAABAvkWENDzXT+zJ0CAAAECBAgQIECAAIGCCAjoBSmkZRAgQIAAAQIECBAgQIBAvgUE9HzXz+wJECBAgAABAgQIECBAoCACAnpBCmkZBAgQIECAAAECBAgQIJBvAQE93/UzewIECBAgQIAAAQIECBAoiICAXpBCWgYBAgQIECBAgAABAgQI5FtAQM93/cyeAAECBAgQIECAAAECBAoiIKAXpJCWQYAAAQIECBAgQIAAAQL5FhDQ810/sydAgAABAgQIECBAgACBgggI6AUppGUQIECAAAECBAgQIECAQL4FBPR818/sCRAgQIAAAQIECBAgQKAgAgJ6QQppGQQIECBAgAABAgQIECCQbwEBPd/1M3sCBAgQIECAAAECBAgQKIiAgF6QQloGAQIECBAgQIAAAQIECORbQEDPd/3MngABAgQIECBAgAABAgQKIiCgF6SQlkGAAAECBAgQIECAAAEC+RYQ0PNdP7MnQIAAAQIECBAgQIAAgYIICOgFKaRlECBAgAABAgQIECBAgEC+BQT0fNfP7AkQIECAAAECBAgQIECgIAICekEKaRkECBAgQIAAAQIECBAgkG8BAT3f9TN7AgQIECBAgAABAgQIECiIgIBekEJaBgECBAgQIECAAAECBAjkW0BAz3f9zJ4AAQIECBAgQIAAAQIECiIgoBekkJZBgAABAgQIECBAgAABAvkWENDzXT+zJ0CAAAECBAgQIECAAIGCCAjoBSmkZRAgQIAAAQIECBAgQIBAvgUE9HzXz+wJECBAgAABAgQIECBAoCACsxRkHZbRQYF33nmng69wOgECBAgQIECAAAECRRKQCbJXzS7Zm5IZ1Vlgqdj/+DqPoXsCBAgQIECAAAECBPIjsHSc6vP5mW5xZyqgF7e2ba0s1XzJ2N5t64QGPj5vHCv9Y0H6AyEL82ng0g3VJAHvuSbBl3RY77eSFr6Jy/aeayJ+CYf2fitO0VMtX4htSnGWZCUECMyMwHzxRekPgvTTQaARAt5zjVA2xlQB77epEn42SsB7rlHSxkkC3m/eBwTqIOBL4uqAqksCBAgQIECAAAECBAgQINBRAQG9o2LOJ0CAAAECBAgQIECAAAECdRDoVoc+dUmgIwKT4skDYks/HQQaIeA91whlY0wV8H6bKuFnowS85xolbZwk4P3mfUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgHgKHxE7HxvZRbANj6xObg0CtBY6MHQ6O7d3YXontuthWi81BoFEC6T04JbYTGzWgcUonsFRc8cWxvR7bh7GNim392BwE6iGQfgvU72J7Jrb0fhsT29GxdYnNQYAAAQI5Fdg1zvvj2PaNbc3YzoztzdgWjc1BoJYCt8XO9oltrdi6x3ZzbONimzs2B4F6C/SOA6S/xI6ITUCvt3Y5+18gLntsbOfFlv6he4XYvhbbSrE5CNRD4Bex09di2ya25WP7VmzpH8F/EJuDAAECBHIqkHbMT201967x9vOxHdHqMTcJ1ENgkdhp2s3cuB6d65NAK4F54u0nYtsitgGxCegRwVFzgWNjj/+tea86JNC2wE3xqXOmefrqeD9dxeEgQKCTAikUOQg0WmC2OGCv2O5sNfDklvsbtHrMTQL1EJi/pdM36tG5Pgm0Ejgt3k5XbLT+s67V024SqInAN2IvQ2L7Z2zpYzzDYzswNgeBegncHzvePLZVWwZIV6dtFNutLff9IECAAIGcCSwZ55t2MKcN43+Oj6WddQeBegmkf5RM//J/b70G0C+BFoHd4s/0OeA5Wu4PiD/toLdg+FFTgfQ9Lqn9MbYesR0cW/pc8F6xOQjUQyD9tzRduZE2Vya0/EzfteEgQIAAgZwKtBXQ/xLX82BO12Ta+RA4PU5zbGxL52O6ZplTgWXivF+OLe0qTT0GxBsC+lQNP2sp8EnsLO1otj5OjnceaP2A2wRqKJD+AfK52NLPdWLbM7b0BYV7x+YgQIAAgRwKzBbnPDG2b04z9wvi/eunecxdArUSSN95kP5Ckb5AyUGgngLpz7Z0lVD6c25qS/fTblO63y02B4FaCYyLHZ09TWffjffT97o4CNRDIP239JBpOv5lvP/YNI+5S4DATAj4DPpMoHlJpwXSv/YPjW3zVj2l92K671/8W6G4WROBLrGXFM53iO2rsT0Tm4NAPQX+HTtPu0rrtWrpM8KXtNyfFH86CNRK4L7Y0WrTdJY+G5yCu4NAPQTmip2mf3BsfaQ/1+SK1iJuEyBAIGcCU3/NWrocao3YzojtzdgWi81BoJYCf4+dvRXbJrEt3qrNGW87CDRKYEAc6MRGDWacUgmkX+WXPgf8i9hWjq1/bO/HtntsDgL1EDg/djo+tqm/Zi39A/irsR0Xm4MAAQIEcixwaJx7+hf+j2MbGFvf2BwEai2QLi3+orZPrQfSH4HpCAyIzwno0wHyVKcEto2vTl9K+FFsj8bmW9wjgqNuAvPGntOfZ+nvcB/GNia238eWPsLoIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBot8P8TRxaPQK//ZAAAAABJRU5ErkJggg==\" width=\"1000\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x11b8f5eb8>]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plt.plot(np.arange(10))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-12T05:21:41.245068Z",
"start_time": "2017-10-12T05:21:41.226816Z"
}
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2017-10-12T05:21:53.384537Z",
"start_time": "2017-10-12T05:21:53.267419Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x11e11bda0>]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHe1JREFUeJzt3Xd8VfXhxvHPl4RAAiQQdoCQsElI\nEAjbLdaBKEitWje12P5q1V9bIYADKyqOWq11gfunrVUSpoBIHcWFAkJ2GGEkhBFWErKT+/39AW1R\nUS5wb84dz/svEm+Sx0PyvA4n9zzXWGsRERH/0cTpACIicnJU3CIifkbFLSLiZ1TcIiJ+RsUtIuJn\nVNwiIn5GxS0i4mdU3CIifkbFLSLiZ0K98UnbtWtn4+LivPGpRUQC0tq1a/dZa9u781ivFHdcXBxr\n1qzxxqcWEQlIxpjt7j5Wl0pERPyMiltExM+ouEVE/IyKW0TEz6i4RUT8jIpbRMTPqLhFRPyMiltE\nxAO+3naAFz7Z0ihfyys34IiIBIvDNfU8tjyPN77YTmx0BDeO7E5EmHerVcUtInKKPs7fy4z5WRSX\nVnHL6Dj+8JO+Xi9tUHGLiJy0gxW1PPheDunrdtKrQ0vm/WoUQ7q3abSvr+IWEXGTtZZlWbu5b2EW\nhyrr+O35vbj9/F40Cw1p1BwqbhERN+wtq+behVm8n72HpC5RvDFpOAkxkY5kUXGLiPwIay3vri1i\n1pIcaupdTLukH784M57QEOeelKfiFhH5AYUHKpmWnsmnm/cxLD6a2Vcm0aN9S6djqbhFRL6rwWV5\n/fNtPP5+PiFNDLPGD+Dnw2Jp0sQ4HQ1QcYuIfMumPeVMTctg3Y5DnNu3PQ9PSCKmdbjTsb5FxS0i\nAtQ1uHjh4y088+FmWjQL4amrz+CKM2IwxjfOso+l4haRoJdZVMrd8zaQt7uccQNjuH9cAu1aNnM6\n1g9ScYtI0Kqua+DPKzcy918FtG/VjLk3pnBhQkenY52QiltEgtKXBftJTctg2/5Krh3WjdRL+hMV\n3tTpWG5RcYtIUCmvrmP2sjzeWr2D2OgI/nbrcEb1aud0rJOi4haRoPFR3l6mz89kT1k1t54Zz+9+\n0qdRRqE8zf8Si4icpAMVtfxxcTYL1hfTp2NLnrtuFINiG28UytNU3CISsKy1LM7YxcxF2ZRX13Hn\nBb35zXm9CAv179eQUXGLSEDaXVrNPQuyWJm7h4Fdo3j0p8Pp18mZUShPU3GLSECx1vL214U8/F4u\ndS4XMy7tz6Qz4wnxkdvVPcGt4jbG/C9wK2CBTOAWa221N4OJiJys7fsrSE3L5IuC/YzoEc3sK5OJ\na9fC6Vged8LiNsZ0Ae4AEqy1VcaYd4BrgNe8nE1ExC0NLsurn23liRX5NG3ShEeuTOKaod188nZ1\nT3D3UkkoEG6MqQMigGLvRRIRcV/+7nKmpGWwofAQY/p3YNb4JDpFNXc6lledsLittTuNMU8AO4Aq\nYIW1dsV3H2eMmQxMBoiNjfV0ThGRb6mtd/Hcx5t59qPNtGrelL9cO4hxyZ0D9iz7WO5cKmkDXAHE\nA4eAd40x11tr3zz2cdbaOcAcgJSUFOuFrCIiAKwvPMTUeRnk7ynnijNiuH9cItEtwpyO1WjcuVQy\nBthqrS0BMMakA6OAN3/0o0REPKyqtoEnP8jn5U+30qFVc16+KYUL+vv+KJSnuVPcO4ARxpgIjlwq\nuQBY49VUIiLf8fmWfaSmZbLjQCXXDY9l6iX9iGzuH6NQnubONe7Vxph5wDqgHviGo5dERES8ray6\njkeW5vH3r3YQ1zaCtyePYESPtk7HcpRbzyqx1t4P3O/lLCIi37IyZw8zFmRSUl7DbWf34K4xfQgP\nC3E6luN056SI+Jz9h2uYuTiHxRuK6depFXNvTCG5a2unY/kMFbeI+AxrLYs2FDNzUTaHa+r53YV9\n+NU5Pf1+FMrTVNwi4hOKD1Vxz4IsPszbyxndWvPYT5Pp07GV07F8kopbRBzlcln+/vUOHlmaR4PL\ncu9lCdw8Ki6gRqE8TcUtIo7Zuq+C1LQMVm89wOhebXlkQjKxbSOcjuXzVNwi0ujqG1y88tlW/rRi\nI2GhTXh0YhI/SwncUShPU3GLSKPK3VXG1LQMMopKuTChI7PGD6BjZGCPQnmailtEGkVNfQPPfriZ\n5z7eQuuIpjz788FcmtRJZ9mnQMUtIl63bsdBps7LYNPew1w5qAv3XpZAmyAahfI0FbeIeE1lbT1P\nvL+RVz/fSufI5rx6y1DO69vB6Vh+T8UtIl7x2eZ9pKZnUHigihtGdGfKxX1pFaSjUJ6m4hYRjyqt\nquPh93L5x5pC4tu14B+TRzA8yEehPE3FLSIesyJ7N/csyGJ/RS2/Oqcnd43pTfOmGoXyNBW3iJy2\nkvIaZi7O5r2MXfTvHMnLNw0lqWuU07EClopbRE6ZtZYF63fywOIcKmsauPuivkw+uwdNQzQK5U0q\nbhE5JTsPVTFjfiYf55cwOPbIKFSvDhqFagwqbhE5KS6X5a3V25m9LA+XhfvHJXDjSI1CNSYVt4i4\nraDkMKlpmXy17QBn9W7HwxOS6BatUajGpuIWkROqb3Axd9VW/rxyI81Dm/D4T5P56ZCuul3dISpu\nEflR2cWlTE3LIGtnGRcnduKP4xPp0EqjUE5ScYvIcVXXNfDMh5t44ZMC2kSE8fx1g7kkqbPTsQQV\nt4gcx9rtB5gyL4MtJRVMHNyVey/rT+sIjUL5ChW3iPxHRU09j7+fz+tfbCMmKpzXJw3jnD7tnY4l\n36HiFhEA/rWxhGnpmRSXVnHTyDjuvqgvLZqpInyR/lZEgtyhylpmvZfLvLVF9GjfgndvG0lKXLTT\nseRHqLhFgtiyzF3cuzCbg5W1/Oa8nvz2fI1C+QMVt0gQ2ltezf0Ls1mWtZvEmEhenzSUxBiNQvkL\nFbdIELHWMm9tEbPey6WqroGpF/fj1rPiNQrlZ1TcIkGi8EAl0+dnsmrTPobGtWH2xGR6tm/pdCw5\nBSpukQDnclne+GIbj72fjwEevCKR64Z3p4lGofyWilskgG3eW87UtEzWbj/IOX3a89CEAXRto1Eo\nf6fiFglAdQ0u5vyrgKdXbiKiWQhP/mwgEwZ10ShUgFBxiwSYrJ2l3D0vg9xdZYxN7szMcYm0b9XM\n6VjiQSpukQBRXdfAUys3MXdVAdEtwnjxhiFclNjJ6VjiBW4VtzGmNfASMACwwCRr7RfeDCYi7vtq\n6wFS0zIo2FfB1SndmH5pf6IimjodS7zE3TPup4Hl1tqfGmPCAP12Q8QHlFfX8djyfP7vy+10iw7n\nzV8M58ze7ZyOJV52wuI2xkQCZwM3A1hra4Fa78YSkRP5KH8vM9Iz2VVWzaTR8fzhoj5EhOnqZzBw\n52+5B1ACvGqMGQisBe601lZ4NZmIHNfBiloeXJJD+jc76d2hJWm/HsXg2DZOx5JG5M59rqHAYOB5\na+0goAJI/e6DjDGTjTFrjDFrSkpKPBxTRKy1LMkoZsyTn7BoQzF3nN+LJXecqdIOQu6ccRcBRdba\n1UffnsdxittaOweYA5CSkmI9llBE2FNWzb0LsliRs4fkrlG8eetw+neOdDqWOOSExW2t3W2MKTTG\n9LXW5gMXADnejyYi1lreWVPIrPdyqa13Mf3SfkwaHU+oRqGCmru/yfgt8NbRZ5QUALd4L5KIAOzY\nX8m0+Rl8tnk/w+OjeXRiMnHtWjgdS3yAW8VtrV0PpHg5i4gADS7La59v44n38wlpYnhowgCuHRqr\nUSj5Dz13SMSHbNxTzpR5GawvPMT5/Trw0IQBdI4KdzqW+BgVt4gPqK138cInW3jmw020bBbK09ec\nweUDYzQKJcel4hZx2IbCQ0xNyyBvdznjBsYwc1wCbVtqFEp+mIpbxCFVtQ08tXIjc1cV0L5VM+be\nmMKFCR2djiV+QMUt4oAvC/aTmpbBtv2VXDsslmmX9iOyuUahxD0qbpFGVF5dx+xleby1egfd20bw\nt18OZ1RPjULJyVFxizSSD/P2MGN+FnvKqvnlWfH87sK+hIeFOB1L/JCKW8TL9h+u4Y9Lcli4vpi+\nHVvx/PVDOKNba6djiR9TcYt4ibWWxRm7mLkom/LqOu4a05v/ObcXYaG6XV1Oj4pbxAt2l1Zzz4JM\nVubuZWC31jw2MZm+nVo5HUsChIpbxIOstbz9dSEPv5dLncvFPWP7c8voeEJ0u7p4kIpbxEO2768g\nNS2TLwr2M7JHW2ZPTKJ7W41CieepuEVOU4PL8upnW3liRT5NmzThkSuTuGZoN92uLl6j4hY5Dfm7\ny5mSlsGGwkOM6d+BWeOT6BTV3OlYEuBU3CKnoLbexbMfbea5jzcT2bwpz1w7iMuSO+ssWxqFilvk\nJK0vPMSUeRvYuOcw48+I4b5xiUS3CHM6lgQRFbeIm6pqG/jTinxe+WwrHSOb88rNKZzfT6NQ0vhU\n3CJu+HzLPlLTMtlxoJKfD49l2iX9aKVRKHGIilvkR5RV1/HI0lz+/lUhcW0jeHvyCEb0aOt0LAly\nKm6RH7AyZw8zFmRSUl7DbWf34K4xfTQKJT5BxS3yHfsO1/DA4hwWbyimX6dWzL0xheSuGoUS36Hi\nFjnKWsvC9cU8sDibipoGfn9hH247p6dGocTnqLhFgOJDVdyzIIsP8/YyKPbIKFTvjhqFEt+k4pag\n5nJZ/vbVDmYvy6PBZbnvsgRuGhWnUSjxaSpuCVpb91WQmpbB6q0HOLNXOx65Molu0RFOxxI5IRW3\nBJ36Bhcvf7qVJz/YSFhoEx6bmMxVKV11u7r4DRW3BJXcXWVMTcsgo6iUnyR05MHxA+gYqVEo8S8q\nbgkKNfUN/PXDzTz/8RZaRzTl2Z8P5tKkTjrLFr+k4paAt3b7QaamZbB572GuHNyFe8cm0EajUOLH\nVNwSsCpr63n8/Xxe+3wbnSOb8+otQzmvbwenY4mcNhW3BKRPN+0jNT2DooNV3DiyO1Mu7kfLZvp2\nl8Cg72QJKKWVdTy0NId31hTRo10L3rltJMPio52OJeJRKm4JGMuzdnPvwiwOVNTy63N7cucFvWne\nVKNQEnhU3OL3SsprmLkom/cyd5HQOZJXbx7KgC5RTscS8RoVt/gtay3p63byxyU5VNU2cPdFfZl8\ndg+ahmgUSgKb28VtjAkB1gA7rbWXeS+SyIntPFTF9PRMPtlYwpDubXh0YjK9OrR0OpZIoziZM+47\ngVwg0ktZRE7I5bK8uXo7jy7LwwIPXJ7IDSO600SjUBJE3CpuY0xXYCzwEPA7ryYS+QFbSg6TmpbB\n19sOclbvdjw8QaNQEpzcPeN+CpgCaKBYGl1dg4u5qwp4auUmwpuG8MRVA5k4uItuV5egdcLiNsZc\nBuy11q41xpz7I4+bDEwGiI2N9VhACW5ZO0uZmpZBdnEZlwzoxANXJNKhlUahJLi5c8Y9GrjcGHMp\n0ByINMa8aa29/tgHWWvnAHMAUlJSrMeTSlCprmvgmQ838cInBbSJCOP56wZzSVJnp2OJ+IQTFre1\ndhowDeDoGfcfvlvaIp60ZtsBpqRlUFBSwVVDujJjbH9aR2gUSuTf9Dxu8RmHa+p5fHkeb3y5nZio\ncN6YNIyz+7R3OpaIzzmp4rbWfgx87JUkEtQ+2VjC9PRMikuruGlkHHdf1JcWGoUSOS79ZIijDlXW\n8uCSXNLWFdGzfQvevW0kKXEahRL5MSpuccyyzF3cuzCbg5W13H5eL24/v5dGoUTcoOKWRre3rJr7\nFmazPHs3iTGRvD5pKIkxGoUScZeKWxqNtZZ31xYxa0kO1fUupl7cj1+eFU+oRqFEToqKWxpF4YFK\nps/PZNWmfQyLi2b2xCR6tNcolMipUHGLVzW4LG98sY3H38/HAA9ekch1wzUKJXI6VNziNZv3ljM1\nLZO12w9yTp/2PHxlEl1ahzsdS8TvqbjF4+oaXLz4yRb+8s/NRDQL4cmfDWTCII1CiXiKils8KrOo\nlLvnbSBvdzljkzszc1wi7Vs1czqWSEBRcYtHVNc18NTKTcxdVUDbFmG8eMMQLkrs5HQskYCk4pbT\ntrpgP6npmWzdV8HVKd2YPrY/UeFNnY4lErBU3HLKyqvreGx5Pv/35Xa6RYfz1q3DGd2rndOxRAKe\niltOyUf5e5mRnsmusmomjY7nDxf1ISJM304ijUE/aXJSDlTU8uCSHOZ/s5PeHVqS9utRDI5t43Qs\nkaCi4ha3WGt5L3MX9y/MprSqjjsu6M1vzutJs1CNQok0NhW3nNCesmruWZDFBzl7SO4axZu3Dqd/\n50inY4kELRW3/CBrLe+sKWTWe7nU1ruYfmk/Jo3WKJSI01Tcclw79leSmp7B51v2Mzw+mkcnJhPX\nroXTsUQEFbd8R4PL8trn23ji/XxCmhhmjR/Az4fFahRKxIeouOU/Nu4pZ8q8DNYXHuK8vu15aEIS\nMRqFEvE5Km6htt7F8x9v4a8fbaJls1CevuYMLh8Yo1EoER+l4g5yGwoPMTUtg7zd5YwbGMPMcQm0\nbalRKBFfpuIOUlW1Dfx55UZeWlVA+1bNmHtjChcmdHQ6loi4QcUdhL7Ysp9p6Rls21/JtcO6Me3S\n/kQ21yiUiL9QcQeRsuo6Zi/L42+rdxAbHcHfbh3OKI1CifgdFXeQ+GfuHmbMz2JveTW/PCue313Y\nl/Aw3a4u4o9U3AFu/+EaHlicw6INxfTt2IoXbhjCGd1aOx1LRE6DijtAWWtZtKGYBxbnUF5dx11j\nevM/5/YiLFS3q4v4OxV3ANpVWsU987P4Z95eBnZrzWMTk+nbqZXTsUTEQ1TcAcTlsrz9dSGPLM2l\nzuXinrH9uWV0PCG6XV0koKi4A8S2fRWkpmfwZcEBRvZoy+yJSXRvq1EokUCk4vZz9Q0uXvlsK39a\nsZGwkCbMvjKJq4d20+3qIgFMxe3H8naXMXVeBhuKShnTvwOzxifRKaq507FExMtU3H6opr6BZz/a\nwnMfbSYqvCnPXDuIy5I76yxbJEiouP3MNzsOMjUtg417DjP+jBjuG5dIdIswp2OJSCM6YXEbY7oB\nbwCdABcwx1r7tLeDybdV1tbzpxUbeeWzrXSKbM4rN6dwfj+NQokEI3fOuOuB31tr1xljWgFrjTEf\nWGtzvJxNjvp88z5S0zPZcaCS60fEMvXifrTSKJRI0DphcVtrdwG7jv653BiTC3QBVNxeVlpVxyNL\nc3n760Li2kbw9uQRjOjR1ulYIuKwk7rGbYyJAwYBq70RRv7rg5w93LMgk5LyGm47pwf/O6YPzZtq\nFEpETqK4jTEtgTTgLmtt2XH++2RgMkBsbKzHAgabfYdrmLkomyUZu+jXqRVzb0whuatGoUTkv9wq\nbmNMU46U9lvW2vTjPcZaOweYA5CSkmI9ljBIWGtZsH4nDyzOobKmgd9f2IfbzumpUSgR+R53nlVi\ngJeBXGvtk96PFHyKD1UxY34mH+WXMCj2yChU744ahRKR43PnjHs0cAOQaYxZf/R90621S70XKzi4\nXJa3vtrBo8vyaHBZ7rssgZtGxWkUSkR+lDvPKvkUUJN4WEHJYVLTMvlq2wHO7NWOR65Molt0hNOx\nRMQP6M7JRlbf4OKlT7fy5w82EhbahMcmJnNVSlfdri4iblNxN6Kc4jKmpG0ga2cZP0noyIPjB9Ax\nUqNQInJyVNyNoKa+gb9+uJnnP95C64imPHfdYC4Z0Eln2SJySlTcXrZ2+5FRqM17D3Pl4C7cOzaB\nNhqFEpHToOL2koqaep5Ykc9rn28jJiqc124Zyrl9OzgdS0QCgIrbC1ZtKmFaeiZFB6u4cWR3plzc\nj5bNdKhFxDPUJh5UWlnHQ0tzeGdNET3ateCd20YyLD7a6VgiEmBU3B6yPGs39y7M4kBFLb8+tyd3\nXtBbo1Ai4hUq7tO0t7yamYuyWZq5m4TOkbx681AGdIlyOpaIBDAV9ymy1pK+bid/XJJDVV0Dd1/U\nl8ln96BpiEahRMS7VNynoOhgJdPnZ/GvjSUM6d6GRycm06tDS6djiUiQUHGfBJfL8ubq7Ty6LA8L\nPHB5IjeM6E4TjUKJSCNScbtpS8lhUtMy+HrbQc7q3Y6HJ2gUSkScoeI+gboGF3NXFfDUyk2ENw3h\niasGMnFwF92uLiKOUXH/iKydpUxNyyC7uIxLkzox8/JEOrTSKJSIOEvFfRzVdQ385Z+bePFfBbSJ\nCOOF6wdz8YDOTscSEQFU3N+zZtsBpqRlUFBSwVVDunLP2ASiIpo6HUtE5D9U3Ecdrqnn8eV5vPHl\ndmKiwnlj0jDO7tPe6VgiIt+j4gY+2VjC9PRMikuruGlkHHdf1JcWGoUSER8V1O10qLKWB5fkkrau\niJ7tWzDvVyMZ0l2jUCLi24K2uJdm7uK+hVkcqqzj9vN6cfv5vTQKJSJ+IeiKe29ZNfctzGZ59m4G\ndInk9UnDSIzRKJSI+I+gKW5rLe+uLWLWkhyq611MvbgfvzwrnlCNQomInwmK4i48UMn0+Zms2rSP\nYXHRzJ6YRI/2GoUSEf8U0MXd4LK88cU2Hn8/HwM8eEUi1w3XKJSI+LeALe7Ne8uZMi+DdTsOcW7f\n9jw0IYkurcOdjiUictoCrrjrGly8+MkW/vLPzUQ0C+HPVw9k/BkahRKRwBFQxZ1ZVMrd8zaQt7uc\nscmdeeDyRNq1bOZ0LBERjwqI4q6ua+CplZuYu6qAti3CePGGIVyU2MnpWCIiXuH3xb26YD+p6Zls\n3VfB1SndmD62P1HhGoUSkcDlt8VdXl3Ho8vzePPLHXSLDuetW4czulc7p2OJiHidXxb3R3l7mTE/\nk11l1fzizHh+/5M+RIT55f+KiMhJ86u2O1BRy4NLcpj/zU56d2hJ2q9HMTi2jdOxREQalV8Ut7WW\nJRm7mLkom9KqOu64oDe/Oa8nzUI1CiUiwcfni3tPWTUz5mexMncPyV2jePPW4fTvHOl0LBERx7hV\n3MaYi4GngRDgJWvtbK+m4shZ9j++LuShpbnU1ruYfmk/Jo3WKJSIyAmL2xgTAjwLXAgUAV8bYxZZ\na3O8FWrH/kpS0zP4fMt+hsdH8+jEZOLatfDWlxMR8SvunHEPAzZbawsAjDFvA1cAHi/uBpfl1c+2\n8sSKfEKbNOGhCQO4dmisRqFERI7hTnF3AQqPebsIGO7pIKWVddz06lesLzzE+f068NCEAXSO0iiU\niMh3uVPcxzvdtd97kDGTgckAsbGxJx0kMjyU7m0juGV0HJcPjNEolIjID3CnuIuAbse83RUo/u6D\nrLVzgDkAKSkp3yv2EzHG8PQ1g072w0REgo47T9H4GuhtjIk3xoQB1wCLvBtLRER+yAnPuK219caY\n24H3OfJ0wFestdleTyYiIsfl1vO4rbVLgaVeziIiIm7Q3SwiIn5GxS0i4mdU3CIifkbFLSLiZ1Tc\nIiJ+xlh70vfKnPiTGlMCbD/FD28H7PNgHH+mY/FtOh7fpuPxX4FwLLpba9u780CvFPfpMMassdam\nOJ3DF+hYfJuOx7fpePxXsB0LXSoREfEzKm4RET/ji8U9x+kAPkTH4tt0PL5Nx+O/gupY+Nw1bhER\n+XG+eMYtIiI/wmeK2xhzsTEm3xiz2RiT6nQeJxljuhljPjLG5Bpjso0xdzqdyWnGmBBjzDfGmCVO\nZ3GaMaa1MWaeMSbv6PfISKczOckY879Hf06yjDF/N8Y0dzqTt/lEcR/zgsSXAAnAtcaYBGdTOaoe\n+L21tj8wAvhNkB8PgDuBXKdD+IingeXW2n7AQIL4uBhjugB3ACnW2gEcmZ6+xtlU3ucTxc0xL0hs\nra0F/v2CxEHJWrvLWrvu6J/LOfKD2cXZVM4xxnQFxgIvOZ3FacaYSOBs4GUAa22ttfaQs6kcFwqE\nG2NCgQiO8wpdgcZXivt4L0gctEV1LGNMHDAIWO1sEkc9BUwBXE4H8QE9gBLg1aOXjl4yxrRwOpRT\nrLU7gSeAHcAuoNRau8LZVN7nK8Xt1gsSBxtjTEsgDbjLWlvmdB4nGGMuA/Zaa9c6ncVHhAKDgeet\ntYOACiBofydkjGnDkX+dxwMxQAtjzPXOpvI+Xylut16QOJgYY5pypLTfstamO53HQaOBy40x2zhy\nCe18Y8ybzkZyVBFQZK3997/A5nGkyIPVGGCrtbbEWlsHpAOjHM7kdb5S3HpB4mMYYwxHrmHmWmuf\ndDqPk6y106y1Xa21cRz5vvjQWhvwZ1Q/xFq7Gyg0xvQ9+q4LgBwHIzltBzDCGBNx9OfmAoLgl7Vu\nveakt+kFib9nNHADkGmMWX/0fdOPvvanyG+Bt46e5BQAtzicxzHW2tXGmHnAOo48G+sbguAuSt05\nKSLiZ3zlUomIiLhJxS0i4mdU3CIifkbFLSLiZ1TcIiJ+RsUtIuJnVNwiIn5GxS0i4mf+H0KAYQcr\n7+uvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b920710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(np.arange(10))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:stable]",
"language": "python",
"name": "conda-env-stable-py"
},
"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.6.3"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"toc_cell": true,
"toc_position": {},
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment