From b55805058f59ee4b285c800a1c28ef4d114d9602 Mon Sep 17 00:00:00 2001 From: Arunn Date: Mon, 25 May 2020 15:58:50 +0530 Subject: [PATCH] Add files via upload --- pandas_ui/__init__.py | 2 + pandas_ui/funct1.py | 4839 +++++++++++++++ pandas_ui/panda.html | 13428 ++++++++++++++++++++++++++++++++++++++++ pandas_ui/plot.png | Bin 0 -> 132194 bytes pandas_ui/plt1.png | Bin 0 -> 38298 bytes pandas_ui/zis.jpg | Bin 0 -> 98796 bytes 6 files changed, 18269 insertions(+) create mode 100644 pandas_ui/__init__.py create mode 100644 pandas_ui/funct1.py create mode 100644 pandas_ui/panda.html create mode 100644 pandas_ui/plot.png create mode 100644 pandas_ui/plt1.png create mode 100644 pandas_ui/zis.jpg diff --git a/pandas_ui/__init__.py b/pandas_ui/__init__.py new file mode 100644 index 0000000..ed4f2e4 --- /dev/null +++ b/pandas_ui/__init__.py @@ -0,0 +1,2 @@ +# Inside of __init__.py +from pandas_ui.funct1 import pandas_ui, get_df, get_pivotdf, get_meltdf diff --git a/pandas_ui/funct1.py b/pandas_ui/funct1.py new file mode 100644 index 0000000..dd0b786 --- /dev/null +++ b/pandas_ui/funct1.py @@ -0,0 +1,4839 @@ +#!/usr/bin/env python +# coding: utf-8 + +# In[ ]: + + +####################################################################################################### +from __future__ import print_function +get_ipython().run_line_magic('matplotlib', 'inline') +import functools +import ipywidgets as widgets +import pandas as pd +from IPython.display import clear_output +from ipywidgets import Layout, Button, Box, VBox +import pandas as pd +import qgrid +from IPython.display import display +import functools +from IPython.display import clear_output +from ipywidgets import Layout, Button, Box, VBox +from traitlets import Unicode, Bool, validate, TraitError +from ipywidgets import DOMWidget, register +import pandas_profiling as pp +from ipywidgets import HBox, Label, Layout +from bokeh.io import output_file, reset_output, output_notebook +from bokeh.plotting import figure, show +import numbers +import decimal +import plotly.express as px +import plotly.graph_objects as go +import numpy as np +import sys +from IPython.display import display, HTML;import os + + + +#Main Class: +class student: + + ####################################################################################################### + #Static variable + exp = [0,0] + expr = [0,0] + dataf = 0 + dataff = 0 + qidget = 0 + dflength = 0 + summ = 0 + wid = 0 + wid_value = 0 + r_name = 0 + flt_cnt = 1 + upd_cnt = 1 + srt_cnt = 1 + code_list = list() + stu_out = 0 + split_df = 0 + dest_cnt = 0 + const_cnt = 0 + grp_cnt = 1 + flto = 0 + pivotdf = 0 + meltdf = 0 + org_df = 0 + temp = 0 + org = 0 + ####################################################################################################### + #Constructor + def __init__(self): + + try: + expa = student.dataf.columns + except: + expa = [0, 0] + self.ea = widgets.Dropdown( + options=expa, value=None, description='Column(s): ') + + expb = ['==','!=', '>', '<', '<=', '>='] + self.eb = widgets.Dropdown( + options=expb, value=None, description='Condition: ') + + self.tx = widgets.Text(description='Selected: ', placeholder='bin') + + expo = ['&', '|'] + self.eo = widgets.Dropdown( + options=expo, value=None, description='relation: ') + + try: + cs_val = student.dataf.columns + except: + cs_val = [0, 0] + self.cs_dropdown = widgets.Dropdown( + options=cs_val, value=cs_val[0], description='Column: ') + + css_val = ['Ascending(A-Z)', 'Descending(Z-A)'] + self.css_dropdown = widgets.Dropdown( + options=css_val, value=css_val[0], description='Order : ') + + + try: + axpa = student.dataf.columns + except: + axpa = [0, 0] + self.aa = widgets.Dropdown(options=axpa,value=axpa[0], description='Column: ' ) + + axpb = ['has value','contains','startswith','endswith','==','!=','>','<', '<=', '>='] + self.ab= widgets.Dropdown(options=axpb,value=None, description='Condition: ' ) + + self.ax = widgets.Text(description = 'Selected: ', placeholder ='bin') + + axpo = ['&','|'] + self.ao= widgets.Dropdown(options=axpo,value=None, description='relation: ' ) + const_cnt = student.const_cnt + const_cnt += 1 + student.const_cnt = const_cnt + + + ops_val = ['count','sum','mean','median','min','max','first','last','std','var'] + self.ops = widgets.Dropdown(options=ops_val,value=ops_val[0],description='Calculate :' ) + + try: + col_val = student.dataf.columns + except: + col_val = [0, 0] + self.col = widgets.Dropdown(options=col_val,value=col_val[0], description='of: ' ) + + + def __del__(self): + dest_cnt = student.dest_cnt + dest_cnt += 1 + student.dest_cnt = dest_cnt + display('destructor called') + + + ####################################################################################################### + def textbox_func(self, + value='textbox', + placeholder='textbox', + description='Textbox'): + + t_box = widgets.Text( + value=value, + placeholder=placeholder, + description=description, + disabled=False) + + return t_box + + ####################################################################################################### + #Function to get qgrid and df_length + + @classmethod + def get_qwidget(cls): + + df = cls.dataf + + qwidget = qgrid.show_grid( + df, + show_toolbar=True, + grid_options=({ + 'fullWidthRows': True, + 'syncColumnCellResize': True, + 'defaultColumnWidth': 100, + 'forceFitColumns': False, + 'rowHeight': 28, + 'enableColumnReorder': True, + 'enableTextSelectionOnCells': True, + 'editable': True, + 'maxVisibleRows': 6, + 'autoEdit': False + }), + column_options=({ + 'editable': True + })) + + #Deteriming the lenght of the dataframe + dflength = widgets.Label(value=str(df.shape[0]) + ' rows * ' + + str(df.shape[1]) + ' Columns') + + cls.qwidget = qwidget + cls.dflength = dflength + #Returning values: + return cls.qwidget, cls.dflength + + ####################################################################################################### + #Function to get qgrid and df_length + + @classmethod + def get_temp_qwidget(cls, dff): + + df = dff + + qwidget_temp = qgrid.show_grid( + df, + show_toolbar=True, + grid_options=({ + 'fullWidthRows': False, + 'syncColumnCellResize': False, + 'defaultColumnWidth': 300, + 'forceFitColumns': False, + 'rowHeight': 28, + 'enableColumnReorder': True, + 'enableTextSelectionOnCells': True, + 'editable': True, + 'maxVisibleRows': 6, + 'autoEdit': False + }), + column_options=({ + 'editable': True + })) + + display(qwidget_temp) + + ####################################################################################################### + #Function to get initial widgets + + @classmethod + def cls_dropdown_func(cls): + + df = cls.dataf + + k = [i for i in df.columns] + + wid = widgets.Dropdown( + options=k, + value=k[0], + description='Column :', + disabled=False, + layout=Layout(width='500px', height='30px')) + cls.wid = wid + return cls.wid + + ####################################################################################################### + #Function to display the column level outputs + + @classmethod + def disp_summ(cls): + + dff = cls.dataf + wid_value = cls.wid_value + + if dff.dtypes[wid_value] not in [object]: + a = dff[str(wid_value)].describe() + + summ = pd.DataFrame() + + for key, value in zip(a.keys(), a.values): + summ['Keys'] = a.keys() + summ['Value'] = a.values + + summ.header = False + summ = summ.style.bar(subset=['Value'], color='skyblue') + + df_out = widgets.Output() + + with df_out: + display(summ) + + else: + + summ = dff[str(wid_value)].describe(include='object') + summ = summ.to_frame() + + df_out = widgets.Output() + + with df_out: + display(summ) + + cls.summ = df_out + + return cls.summ + + ####################################################################################################### + #function to display column level diagrams + + @classmethod + def dig(cls): + + df = cls.dataf + + wid_value = cls.wid_value + + fig = go.Histogram(x=df[wid_value]) + + tb = widgets.Text(description='No of bins: ', placeholder='bin') + histo = go.FigureWidget(data=[fig]) + + def response(change): + + with histo.batch_update(): + if tb.value == '': + histo.data[0].nbinsx = 0 + else: + histo.data[0].nbinsx = int(tb.value) + + tb.observe(response, names="value") + label_layout11 = Layout(width='50px', height='50px') + tbb = HBox([Label('', layout=label_layout11), tb]) + hbb = VBox([tbb, histo]) + display(hbb) + + +####################################################################################################### +####################################################################################################### + + +def pandas_ui1(path): + + #######################################################################################################\ + ####################################################################################################### + + #Accordion layout + label_layout = Layout(width='0px', height='50px') + label_layout1 = Layout(width='10px', height='50px') + label_layout11 = Layout(width='50px', height='50px') + label_layout2 = Layout(width='60px', height='50px') + label_layout3 = Layout(width='100px', height='30px') + label_layout4 = Layout(width='100px', height='30px') + label_layout5 = Layout(width='150px', height='30px') + bb_layout = Layout(width='60px', height='35px', border='2px solid orange') + bhbf_layout = Layout(width='250px', height='35px', border='2px solid white') + bh_layout = Layout(width='200px', height='35px', border='2px solid white') + bt_layout = Layout(width='100px', height='35px', border='2px solid lightblue') + bc_layout = Layout(width='35px', height='35px', border='2px solid red') + + ####################################################################################################### + ####################################################################################################### + + #Accordion default widget + + lineout = widgets.Output(layout={'border': '1px solid black'}) + hd_lineout1 = widgets.Output(layout={'border': '2px solid green'}) + + ####################################################################################################### + ####################################################################################################### + + #widget Initialization: + + #df = pd.read_csv(r'C:\Users\thaarunn\Desktop\titanic.csv') + df = pd.read_csv(path) + stu = student() + ######## + student.exp = [0,0] + student.expr = [0,0] + student.dataf = 0 + student.dataff = 0 + student.qidget = 0 + student.dflength = 0 + student.summ = 0 + student.wid = 0 + student.wid_value = 0 + student.r_name = 0 + student.flt_cnt = 1 + student.upd_cnt = 1 + student.srt_cnt = 1 + student.code_list = list() + student.stu_out = 0 + student.split_df = 0 + student.dest_cnt = 0 + student.const_cnt = 0 + student.grp_cnt = 1 + student.flto = 0 + student.pivotdf = 0 + student.meltdf = 0 + + student.org_df = 0 + student.temp = 0 + student.org = 0 + ##@ Changing class variable + student.dataf = df + + student.org_df = df + wid_val = stu.wid_value + wid = stu.cls_dropdown_func() + + ####################################################################################################### + ####################################################################################################### + + #Accordion output + aout = widgets.Output() + + ####################################################################################################### + ####################################################################################################### + + + #Python code function: + def py_exec(x): + + if x == 'rename': + df = student.dataf + a = student.wid_value + b = student.r_name + #sq = '\\' + '\'' + sq = '\'' + c = 'df.rename(columns={' + sq + a + sq + ':' + sq + b + sq + '})' + try: + df = eval(c) + except: + js = '';display(HTML(js));raise + student.dataf = df + + student.code_list.append(c) + + + ####################################################################################################### + #General functions: + def head_buttons_disp1(x): + head_label = widgets.HTML(value="" + x + "", layout=bh_layout) + + head = HBox([ + bctb, + Label('', layout=label_layout3), + Label('', layout=bhbf_layout), head_label, + Label('', layout=label_layout5), + Label('', layout=label_layout3), btc + ]) + display(hd_lineout1) + display(head) + display(hd_lineout1) + + + def head_buttons_disp(x, co=False, cf=False, tb=False): + + + #head_label = Label(x, layout=bh_layout) + head_label = widgets.HTML(value="" + x + "", layout=bh_layout) + + head = HBox([ + bb, + Label('', layout=label_layout3), + Label('', layout=bhbf_layout), head_label, + Label('', layout=label_layout4), bt, + Label('', layout=label_layout3), bc + ]) + + if tb == True: + + # head = HBox([bctb,Label('',layout=label_layout3),Label('',layout=bhbf_layout),head_label,Label('',layout=label_layout4),btt,Label('',layout=label_layout3),btc]) + + head = HBox([ + bctb, + Label('', layout=label_layout3), + Label('', layout=bhbf_layout), head_label, + Label('', layout=label_layout5), + Label('', layout=label_layout3), btc + ]) + + if co == True: + + head = HBox([ + bcb, + Label('', layout=label_layout3), + Label('', layout=bhbf_layout), head_label, + Label('', layout=label_layout5), + Label('', layout=label_layout3), bc + ]) + + if cf == True: + head = HBox([ + Label('', layout=label_layout5), + Label('', layout=label_layout3), + Label('', layout=bhbf_layout), head_label, + Label('', layout=label_layout5), + Label('', layout=label_layout3), bc + ]) + + display(hd_lineout1) + display(head) + display(hd_lineout1) + + + ####################################################################################################### + + + #@changing static variable + # student.flt_cnt = 1 + # cnt = 0 + # for i in range(len(flt_val['ea'])): + # cnt += 1 + # key = 'stu'+ str(cnt) + # st = "del "+key + # exec(st) + + + #if tb == True: + # tab_out_disp(accordion) + #else: + #primary_disp() + + + ####################################################################################################### + + + def filter_func(co_wid, tb=False): + + clear_output() + x = co_wid + clear_output() + + tb_val = tb + #head_buttons_disp(x, tb=True, co = True) + if tb_val == True: + head_buttons_disp1(x) + else: + head_buttons_disp(x, tb=False, co = True) +# if tb_val == True: +# print('inside ture') +# head_buttons_disp(x, tb='True', co = True) +# else: +# print('inside false') +# head_buttons_disp(x, tb=False, co = True) + + + flt_dict = dict() + + #stu1 = student() + + flt_dict['stu1'] = student() + student.flt_cnt += 1 + + key_val = flt_dict['stu1'] + + el_layout = Layout(width='2px', height='0px') + el = widgets.Label("", Layout=el_layout) + + ea = key_val.ea + eb = key_val.eb + tx = key_val.tx + eo = key_val.eo + + Hb1 = HBox([ea, eb, tx]) + vb = VBox([el, Hb1, el]) + #display(vb) + + ba = widgets.Button(description='Add Condition') + ba.style.button_color = 'lightgray' + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + + Hbb = HBox([ba, bs]) + + def select_cd(dicto, expr_dict, seldropz): + + flt_val = dicto + df = student.dataf + #display(seldropz) + sq = '\'' + + int_dtypes = ['int', 'int8', 'int16', 'int32', 'int64'] + + flt_dtypes = ['float', 'float16', 'float32', 'float64'] + + eval_st = 'df[' + for i in range(len(flt_val['ea'])): + #display('inside loop') + + if df[flt_val['ea'][i]].dtype in int_dtypes: + flt_val['tx'][i] = int(flt_val['tx'][i]) + + elif df[flt_val['ea'][i]].dtype in flt_dtypes: + flt_val['tx'][i] = float(flt_val['tx'][i]) + + value_type = type(flt_val['tx'][i]) + #display(seldropz) + if seldropz == 'Drop rows': + #print('insed drop rtows') + flt_val['eb'][i] = expr_dict[flt_val['eb'][i]] + #print(flt_val['eb'][i]) + + if flt_val['eo'][i] != None: + eval_st += flt_val['eo'][i] + + eval_st += '(df[' + sq + '{fval}'.format(fval=flt_val['ea'][i]) + eval_st += sq + '] ' + '{sval}'.format(sval=flt_val['eb'][i]) + + if value_type == int or value_type == float: + eval_st += '{tval})'.format(tval=flt_val['tx'][i]) + else: + eval_st += sq + '{tval}'.format(tval=flt_val['tx'][i]) + eval_st += sq + ' )' + + eval_st += ']' + #display(eval_st) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.code_list.append(eval_st) + student.dataf = df + primary_disp() + + def on_ba_clicked(cntrl): + cnt = student.flt_cnt + cnt = str(cnt) + + #el_layout = Layout(width='2px',height='2px') + el = widgets.Label("") + + nxt_key = 'stu' + cnt + + flt_dict[nxt_key] = student() + student.flt_cnt += 1 + + nxt_key = flt_dict[nxt_key] + + ea = nxt_key.ea + eb = nxt_key.eb + tx = nxt_key.tx + eo = nxt_key.eo + + Hb2 = HBox([ea, eb, tx]) + vb.children += (eo, el, Hb2, el) + + def on_bsf_clicked(cntrl, seldr): + #display('#',seldrop.value) + #display('#',tb_val) + flt_val = dict() + ea_val = list() + eb_val = list() + tx_val = list() + eo_val = list() + + for d_keys in flt_dict.keys(): + + d_keys = flt_dict[d_keys] + + ea_val.append(d_keys.ea.value) + eb_val.append(d_keys.eb.value) + tx_val.append(d_keys.tx.value) + eo_val.append(d_keys.eo.value) + + del d_keys + #display(ea_val, eb_val, tx_val) + + flt_val['ea'] = ea_val + flt_val['eb'] = eb_val + flt_val['tx'] = tx_val + flt_val['eo'] = eo_val + + altr = ['!=', '==', '<=', '>=', '>', '<'] + + expr = ['==', '!=', '>', '<', '<=', '>='] + + expr_dict = dict() + + for i, j in zip(expr, altr): + expr_dict[i] = j + + select_cd(flt_val, expr_dict, seldropz = seldrop.value) + + sdopt = ['Select rows', 'Drop rows'] + seldrp = widgets.Dropdown( + options=sdopt, value=sdopt[0], description='Select/Drop: ') + + sdopt = ['Select rows', 'Drop rows'] + seldrop = widgets.Dropdown( + options=sdopt, value=sdopt[0], description='Select/Drop: ') + + + #display(seldrops) + display(seldrop) + display(vb) + display(Hbb) + ba.on_click(functools.partial(on_ba_clicked)) + #display(seldrop.value) + #sel_val = 'Select rows' + def res(cntrl):#'Select rows', 'Drop rows' + student.flto =1 + sel_val = seldrop.value + #display(sel_val) + #bs.on_click(functools.partial(on_bs_clicked, seldr = sel_val)) + return sel_val + k = seldrop.observe(res, names = 'value') + #res('a') + if k == None: + sel_val = 'Select rows' + else: + sel_val = k + r = widgets.RadioButtons( + options=['Select rows', 'Drop rows'], + + description='Operation :', + disabled=False + ) + #display(r) + #sel_val = seldrop.value + #display('*',sel_val) + #if student.flto == 0: + bs.on_click(functools.partial(on_bsf_clicked, seldr = seldrop.value)) + + + ####################################################################################################### + def change_dt_func(co_wid, tb=False): + + clear_output() + x = co_wid + clear_output() + + tb_val = tb + head_buttons_disp(x, tb=tb_val,co = True) + + df = stu.dataf + + cd_dropdown_values = df.columns + + cdd_dropdown_values = [ + 'str', 'object', 'int', 'float', 'bool' + ] + + cd_dropdown = widgets.Dropdown( + value=cd_dropdown_values[0], + placeholder='Choose Someone', + options=cd_dropdown_values, + description='Column :', + ensure_option=False, + disabled=False) + + cdd_dropdown = widgets.Dropdown( + value=cdd_dropdown_values[0], + placeholder='Choose Someone', + options=cdd_dropdown_values, + description='Data type :', + ensure_option=False) + + b_cdd = widgets.Button(description='Execute') + b_cdd.style.button_color = 'green' + + def on_b_cdd_clicked(c): + + col = cd_dropdown.value + + #print(col) + + eval_st = 'df.{col_val}.astype'.format(col_val=cd_dropdown.value) + eval_st += '({cdd_val})'.format( + cdd_val=cdd_dropdown.value) + try: + df[col] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + sq = '\'' + code_st = 'df[' + sq + '{col}'.format(col=col) + + code_st += sq + ']' + + student.code_list.append(code_st) + + student.code_list.append(eval_st) + + student.dataf = df + + clear_output() + + primary_disp() + + b_cdd.on_click(functools.partial(on_b_cdd_clicked)) + + display(cd_dropdown) + + display(cdd_dropdown) + + display(b_cdd) + + + ####################################################################################################### + def mc_func(co_wid, tb=False): + + clear_output() + x = co_wid + clear_output() + + tb_val = tb + head_buttons_disp(x, tb=tb_val, co = True) + + df = student.dataf + + expa = df.columns + ea = widgets.Dropdown(options=expa, value=expa[0], description='Move : ') + + expb = ['Move Before', 'Move After'] + eb = widgets.Dropdown( + options=expb, value=expb[0], description='Condition: ') + + expac = df.columns + eac = widgets.Dropdown( + options=expac, value=expac[0], description='Column: ') + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + + el_layout = Layout(width='2px', height='0px') + el = widgets.Label("", Layout=el_layout) + + vb = VBox([ea, el, eb, el, eac, el, bs]) + display(vb) + + def on_bs_clicked(cntrl): + + df = student.dataf + df_lis = list(df.columns) + + + + #i_ind = df_lis.index(ea.value) + + + + #print(a[:ind]);print(a[ind:]) + + if ea.value != eac.value: + + df_lis.remove(ea.value) + + ind = df_lis.index(eac.value) + + if eb.value == 'Move Before': + + df_lis = df_lis[:ind] + [ea.value] + df_lis[ind:] + + if eb.value == 'Move After': + df_lis = df_lis[:ind+1] + [ea.value] + df_lis[ind+1:] + + +# if eb.value == 'Move Before': +# if i_ind == 0 and ind == 0: +# df_lis.insert(ind, ea.value) +# else: +# if ind!= 0: +# df_lis.insert(ind-1, ea.value) +# #else: +# # df_lis.insert(ind-2, ea.value) +# if eb.value == 'Move After': +# df_lis.insert(ind, ea.value) + + eval_st = 'df[{cols}]'.format(cols=df_lis) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.code_list.append(eval_st) + student.dataf = df + primary_disp() + + bs.on_click(functools.partial(on_bs_clicked)) + + + ####################################################################################################### + def sort_func(co_wid, tb=False): + + clear_output() + x = co_wid + clear_output() + + + tb_val = tb +# if tb_val == True: +# head_buttons_disp(x, tb=True, co = True) +# else: +# head_buttons_disp(x, tb=False, co = True) + if tb_val == True: + head_buttons_disp1(x) + else: + head_buttons_disp(x, tb=False, co = True) + #head_buttons_disp1(x) + el_layout = Layout(width='2px', height='0px') + el = widgets.Label("", Layout=el_layout) + + flt_dict = dict() + + #stu1 = student() + + flt_dict['stu1'] = student() + student.srt_cnt += 1 + + key_val = flt_dict['stu1'] + + ba = widgets.Button(description='Add Condition') + ba.style.button_color = 'lightgray' + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + + cs_dropdown = key_val.cs_dropdown + + css_dropdown = key_val.css_dropdown + + Hb1 = HBox([cs_dropdown, css_dropdown]) + vb = VBox([Hb1, el]) + display(vb) + + Hbb = HBox([ba, bs]) + display(Hbb) + + def select_cd(srt_val, expr_dict, flt_dict): + df = student.dataf + sq = '\'' + eval_st = 'df.sort_values([' + + for i in range(len(srt_val['cs_dropdown'])): + + eval_st += sq + eval_st += '{srt_col}'.format(srt_col=srt_val['cs_dropdown'][i]) + eval_st += sq + + if i != len(srt_val['cs_dropdown']) - 1: + eval_st += ',' + + eval_st += '], ascending = [' + + for i in range(len(srt_val['css_dropdown'])): + + eval_st += '{srt_col}'.format( + srt_col=expr_dict[srt_val['css_dropdown'][i]]) + + if i != len(srt_val['css_dropdown']) - 1: + eval_st += ',' + + eval_st += '])' + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + # for keys in flt_dict: + + # st = "del "+keys + # exec(st) + + student.dataf = df + + student.code_list.append(eval_st) + + primary_disp() + + def on_ba_clicked(cntrl): + cnt = student.srt_cnt + cnt = str(cnt) + + #el_layout = Layout(width='2px',height='2px') + el = widgets.Label("") + + nxt_key = 'stu' + cnt + + flt_dict[nxt_key] = student() + student.srt_cnt += 1 + + nxt_key = flt_dict[nxt_key] + + cs_dropdown = nxt_key.cs_dropdown + css_dropdown = nxt_key.css_dropdown + + Hb2 = HBox([cs_dropdown, css_dropdown]) + vb.children += (el, Hb2, el) + + def on_bs_clicked(cntrl): + srt_val = dict() + cs_dropdown_val = list() + css_dropdown_val = list() + + for d_keys in flt_dict.keys(): + + d_keys = flt_dict[d_keys] + + cs_dropdown_val.append(d_keys.cs_dropdown.value) + css_dropdown_val.append(d_keys.css_dropdown.value) + + + + #display(ea_val, eb_val, tx_val) + + srt_val['cs_dropdown'] = cs_dropdown_val + srt_val['css_dropdown'] = css_dropdown_val + + altr = [1, 0] + + expr = ['Ascending(A-Z)', 'Descending(Z-A)'] + + expr_dict = dict() + + for i, j in zip(expr, altr): + expr_dict[i] = j + + select_cd(srt_val, expr_dict, flt_dict) + + ba.on_click(functools.partial(on_ba_clicked)) + + bs.on_click(functools.partial(on_bs_clicked)) + + + ####################################################################################################### + def sm_func(co_wid, tb=False): + + clear_output() + x = co_wid + clear_output() + + tb_val = tb + head_buttons_disp(x, tb=tb_val, co = True) + + expa = ['Split string', 'Find and replace', 'Extract substring' , 'strip/trim space','to lowercase', 'to uppercase','length'] + ea = widgets.Dropdown(options=expa,value=None, description='Select: ' ) + + + + def response(cntrl): + clear_output() + head_buttons_disp(ea.value, co = True) + display(ea) + + df = student.dataf + + #****************************** + if ea.value =='Split string': + + #head_buttons_disp(ea.value, co = True) + + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + tx = widgets.Text(description = 'Split string') + + display(tx) + def on_bsplit_clicked(cntrl): + #df = pd.read_csv(r'C:\Users\thaarunn\Desktop\titanic.csv') + df = student.dataf + name = col.value + value = tx.value + split_df = df[name].str.split(value, expand = True) + + split_df.columns =[f"Name{id_}" for id_ in range(len(split_df.columns))] + + #df = pd.merge(df, split_df, how = 'left',left_index =True, right_index = True) + + student.splitdataf = split_df + #eval_st = 'pd.merge(df, {split}, how =\'left\',left_index =True, right_index = True)'.format(split = student.splitdataf) + eval_st = 'pd.merge(df, split_df, how =\'left\',left_index =True, right_index = True)' + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + primary_disp() + + bsplit = widgets.Button(description='Execute') + bsplit.style.button_color = 'green' + bsplit.on_click(functools.partial(on_bsplit_clicked)) + + display(bsplit) + + #****************************** + if ea.value =='Find and replace': + + #head_buttons_disp(ea.value, co = True) + #df['Name'] = df['Name'].str.replace('B','BB') + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + tx = widgets.Text(description = 'Find :') + + display(tx) + + txr = widgets.Text(description = 'Replace :') + + display(txr) + + def on_bfr_clicked(cntlr): + #df['Name'] = df['Name'].str.replace('B','BB') + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + '].str.replace(' + sq + eval_st += '{col}'.format(col = tx.value) + eval_st += sq + ','+sq + eval_st += '{col}'.format(col = txr.value) + eval_st += sq + ')' + + key = col.value + + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + bfr = widgets.Button(description='Execute') + bfr.style.button_color = 'green' + bfr.on_click(functools.partial(on_bfr_clicked)) + + display(bfr) + + #****************************** + if ea.value =='Extract substring': + #df['Name'] = df['Name'].str.slice(start=1, stop = 5) + #head_buttons_disp(ea.value, co = True) + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + tx = widgets.Text(description = 'Start val') + + display(tx) + + txr = widgets.Text(description = 'End val') + + display(txr) + + def on_bfr_clicked(cntlr): + #df['Name'] = df['Name'].str.replace('B','BB') + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + '].str.slice(start =' + eval_st += '{col}'.format(col = tx.value) + eval_st += ',stop = ' + eval_st += '{col}'.format(col = txr.value) + eval_st += ')' + + key = col.value + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + bfr = widgets.Button(description='Execute') + bfr.style.button_color = 'green' + bfr.on_click(functools.partial(on_bfr_clicked)) + + display(bfr) + + #****************************** + if ea.value =='strip/trim space': + #head_buttons_disp(ea.value, co = True) + #df['Name'] = df['Name'].str.strip() + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + colss_val = ['strip','lstrip','rstrip'] + cols = widgets.Dropdown(options=colss_val,value=colss_val[0], description='Func: ' ) + + display(col) + display(cols) + + def on_btr_clicked(cntrl): + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + eval_st += '].str.{strip}()'.format(strip = cols.value) + + + key = col.value + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + btr = widgets.Button(description='Execute') + btr.style.button_color = 'green' + btr.on_click(functools.partial(on_btr_clicked)) + + display(btr) + #****************************** + if ea.value =='to lowercase': + #head_buttons_disp(ea.value, co = True) + #data["Team"]= data["Team"].str.upper() + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + def on_btr_clicked(cntrl): + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + eval_st += '].str.lower()' + + key = col.value + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + btr = widgets.Button(description='Execute') + btr.style.button_color = 'green' + btr.on_click(functools.partial(on_btr_clicked)) + + display(btr) + + #****************************** + if ea.value =='to uppercase': + #head_buttons_disp(ea.value, co = True) + #data["Team"]= data["Team"].str.lower() + #data["Team"]= data["Team"].str.upper() + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + def on_btr_clicked(cntrl): + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + eval_st += '].str.upper()' + + key = col.value + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + btr = widgets.Button(description='Execute') + btr.style.button_color = 'green' + btr.on_click(functools.partial(on_btr_clicked)) + + display(btr) + #****************************** + if ea.value =='length': + #head_buttons_disp(ea.value, co = True) + #data["Team"]= data["Team"].str.upper() + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + def on_btr_clicked(cntrl): + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + eval_st += '].str.len()' + + key = col.value + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + btr = widgets.Button(description='Execute') + btr.style.button_color = 'green' + btr.on_click(functools.partial(on_btr_clicked)) + + display(btr) + + + ea.observe(response, names = 'value') + display(ea) + + + ####################################################################################################### + ####################################################################################################### + + #Defining the contents of output(aout) + with aout: + + clear_output() + + #Buttons delcaraion: + bb = Button(description='Back', layout=bb_layout) + bb.style.button_color = 'white' + + bcb = Button(description='Back', layout=bb_layout) + bcb.style.button_color = 'white' + + bctb = Button(description='Back', layout=bb_layout) + bctb.style.button_color = 'white' + + bh = Button(description='Head', layout=bh_layout, selected=True) + bh.style.button_color = 'white' + + bt = Button(description='Show Table', layout=bt_layout) + bt.style.button_color = 'white' + + btt = Button(description='Show Table', layout=bt_layout) + btt.style.button_color = 'white' + + bc = Button(description='X', layout=bc_layout) + bc.style.button_color = 'white' + + btc = Button(description='X', layout=bc_layout) + btc.style.button_color = 'white' + + bs = Button(description='Select', button_style='Success') + + b_rname = Button(description='Rename', button_style='Success') + + ####################################################################################################### + + + def tabl_disp(): + + qwidget_display, df_length = stu.get_qwidget() + display(lineout) + display(df_length) + display(lineout) + print(' ' + + 'Table View' + ' ') + display(qwidget_display) + + ####################################################################################################### + + def column_selected_disp(column_selected_val): + + display(column_selected_val) + + ####################################################################################################### + + def summ_disp(column_summ_val): + + patho = eval('pd.__file__') + patho = patho.replace('pandas\__init__.py','') + + + + file = open(patho +"pandas_ui\plot.png", "rb") + image = file.read() + file1 = open(patho +"pandas_ui\plt1.png", "rb") + image1 = file1.read() + csv = widgets.Image( + value=image, + format='png', + width=200, + height=10, ) + csv1 = widgets.Image( + value=image1, + format='png', + width=200, + height=10, ) + + display(lineout) + print(' ***** ' + 'Summary' + ' *****') + #print('') + #display(column_summ_val) + + dist = Label('', layout=label_layout3) + summ_hbox = widgets.HBox( + [column_summ_val, dist, dist, csv1, dist, csv]) + display(summ_hbox) + + ####################################################################################################### + + def hist_disp(): + + display(lineout) + print(' ***** ' + 'Distribution visualization' + ' *****') + print(' ') + stu.dig() + + ####################################################################################################### + def column_operations_disp(): + + nc = ['filter', 'sort', 'change data type', 'move column'] + + oc = [ + 'string manipulations', 'filter', 'sort', 'change data type', + 'move column' + ] + + dff = stu.dataf + + wid_value = stu.wid_value + + if dff.dtypes[wid_value] not in [object]: + k = nc + else: + k = oc + + co_wid = widgets.Dropdown( + options=k, + value=None, + description='Col Ops :', + disabled=False, + placeholde='Select Column Operation', + layout=Layout(width='500px', height='30px')) + + def response(change): + #co_wid = co_wid.value + if co_wid.value == 'filter': + filter_func(co_wid.value) + + if co_wid.value == 'change data type': + change_dt_func(co_wid.value) + + if co_wid.value == 'sort': + sort_func(co_wid.value) + + if co_wid.value == 'move column': + mc_func(co_wid.value) + + if co_wid.value == 'string manipulations': + sm_func(co_wid.value) + + co_wid.observe(response, names="value") + + display(co_wid) + + ####################################################################################################### + ####################################################################################################### + + def on_b_r_button_clicked(b): + + if stu.r_name == 0: + clear_output() + primary_disp() + else: + x = 'rename' + py_exec(x) + + clear_output() + primary_disp() + + ####################################################################################################### + #Misselenous + + def on_b_r_button_clicked1(b, dff): + def on_r_but_button_clicked(c): + x = 'rename' + tr = t_rname1.value + py_exec(x, tr) + + #clear_output() + #primary_disp() + + clear_output() + head_buttons_disp(x='Rename') + + wid_value = student.wid_value + + t_rname = stu.textbox_func( + value=wid_value, + description='Old name :', + placeholder='Enter New Name') + #t_rname1 = stu.textbox_func(value = 'apple', description = 'New name :', placeholder = 'Enter New Name') + + t_rname1 = widgets.Text( + value='apple', + placeholder='Type something', + description='String:', + disabled=False) + + r_but = Button(description='Execute') + + r_but.on_click(functools.partial(on_r_but_button_clicked)) + + display(t_rname) + display(t_rname1) + display(r_but) + + ####################################################################################################### + #Accordion changed widget + def column_selected(br, tabslt=0): + + #Setting values for widget display + + wid_value = str(stu.wid.value) + + ##@ Changing class variable + student.wid_value = wid_value + + #Displaying head + head_buttons_disp(x=wid_value) + + t_rname = stu.textbox_func( + value=wid_value, + description='Rename :', + placeholder='Enter New Name') + + def responsee(change): + #display(t_rname.value) + student.r_name = t_rname.value + + t_rname.observe(responsee, names='value') + + summ_out = stu.disp_summ() + + column_selected_val = HBox( + [t_rname, Label('', layout=label_layout1), br]) + column_summ_val = HBox([Label('', layout=label_layout2), summ_out]) + + #Calling fucntions to display widgets + + column_selected_disp(column_selected_val) + + column_operations_disp() + + print(" ") + + if tabslt == 1: + tabl_disp() + + summ_disp(column_summ_val) + + hist_disp() + + ####################################################################################################### + def on_button_clicked(a, wid, br, dff): + clear_output() + column_selected(br) + + ####################################################################################################### + ####################################################################################################### + + b1 = Button( + description='Add Python Code', + layout=Layout(flex='0.4 1 auto', width='auto'), + button_style='') + b2 = Button( + description='Select/Drop columns', + layout=Layout(flex='0.4 1 auto', width='auto'), + button_style='') + b3 = Button( + description='Filter', + layout=Layout(flex='0.3 1 auto', width='auto'), + button_style='') + b4 = Button( + description='Sort', + layout=Layout(flex='0.3 1 auto', width='auto'), + button_style='') + b5 = Button( + description='New col formula', + layout=Layout(flex='2.1 1 0%', width='auto'), + button_style='') + b6 = Button( + description='Aggregate/Group', + layout=Layout(flex='2.1 1 0%', width='auto'), + button_style='') + b7 = Button( + description='Join', + layout=Layout(flex='0.5 1 0%', width='auto'), + button_style='') + b8 = Button( + description='Replace value', + layout=Layout(flex='1.5 1 0%', width='auto'), + button_style='') + + b9 = Button( + description='Set/Update values', + layout=Layout(flex='1 1 0%', width='50%'), + button_style='') + b10 = Button( + description='OneHotEncoder', + layout=Layout(flex='1 1 0%', width='auto'), + button_style='') + b11 = Button( + description='Pivot', + layout=Layout(flex='0.3 1 0%', width='auto'), + button_style='') + b12 = Button( + description='Unpivot/Melt', + layout=Layout(flex='0.6 1 0%', width='auto'), + button_style='') + b13 = Button( + description='History', + layout=Layout(flex='1 1 0%', width='auto'), + button_style='success') + ####################################################################################################### + + arow = b1, b2, b3, b4, b5, b6, b7, b8 + + items_1 = list(arow) + + brow = b9, b10, b11, b12, b13 + + items_2 = list(brow) + + ####################################################################################################### + def on_b4_clicked(b1): + + sort_func(co_wid='Sort', tb=True) + + ####################################################################################################### + + #Buttons invoking their functions + b4.on_click(functools.partial(on_b4_clicked)) + + ####################################################################################################### + + + def on_b3_clicked(b1): + + filter_func(co_wid='Filter', tb=True) + + ####################################################################################################### + + #Buttons invoking their functions + b3.on_click(functools.partial(on_b3_clicked)) + + ####################################################################################################### + def on_b1_clicked(cntrl): + + clear_output() + x = 'Code' + clear_output() + + tb_val = True + head_buttons_disp(x, tb=tb_val) + + df = student.dataf + TA = widgets.Textarea( + value='', + placeholder='Enter code here', + description='df =', + disabled=False, + rows=10, + layout={'width': '800px'}) + + display(TA) + + def on_b_ta_clicked(cntrl): + df = student.dataf + eval_st = '{TA}'.format(TA=TA.value) + + #sq = '\\' + '\'' + #eval_st = eval_st.replace('\'' ,sq) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + + primary_disp() + + b_ta = widgets.Button(description='Execute') + b_ta.style.button_color = 'green' + + display(b_ta) + + b_ta.on_click(functools.partial(on_b_ta_clicked)) + + ####################################################################################################### + + #Buttons invoking their functions + b1.on_click(functools.partial(on_b1_clicked)) + + ####################################################################################################### + def on_b2_clicked(cntrl): + def sel_mul(exp): + clear_output() + ex = widgets.Dropdown( + options=exp, + value=None, + description='Column(s): ', ) + + def response(change): + + sq = '\'' + tx.value += sq + str(ex.value) + sq + ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(opt) + + ex.observe(response, names=["value", "options"]) + + def on_bs_clicked(cntrl): + df = student.dataf + tx.value = tx.value[:-2] + + if col_ops_d.value == 'Select column(s)': + eval_st = 'df[[{cols}]]'.format(cols=tx.value) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + if col_ops_d.value == 'Drop column(s)': + eval_st = 'df.drop([{cols}], axis = 1)'.format( + cols=tx.value) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + + primary_disp() + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + bs.on_click(functools.partial(on_bs_clicked)) + + col_ops = ['Select column(s)', 'Drop column(s)'] + col_ops_d = widgets.Dropdown( + options=col_ops, value=col_ops[0], description='Select/Drop :') + + x = 'Select/Drop Column(s)' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + Hbo = HBox([ex]) + display(Hbo) + display(tx) + display(col_ops_d) + + display(bs) + + tx = widgets.Text( + description='Selected: ', placeholder='Selected values') + df = student.dataf + + exp = df.columns + sel_mul(exp) + + ####################################################################################################### + #Buttons invoking their functions + b2.on_click(functools.partial(on_b2_clicked)) + + ####################################################################################################### + def on_b11_clicked(cntrl): + def sel_mul(exp): + clear_output() + ex = widgets.Dropdown( + options=exp, + value=None, + description='Column(s): ', ) + + def response(change): + + sq = '\'' + tx.value += sq + str(ex.value) + sq + ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(opt) + + ex.observe(response, names=["value", "options"]) + + def on_bs_clicked(cntrl): + tx.value = tx.value[:-2] + df = student.dataf + #df.pivot(index = 'A', columns ='B', values = ['A']) + + #eval_st = 'df[[{cols}]]'.format(cols = tx.value) + #df = eval(eval_st) + sq = '\'' + col_ops_dd = sq + col_ops_d.value + sq + if col_ops_i_d.value != None: + col_ops_i_dd = sq + col_ops_i_d.value + sq + else: + col_ops_i_dd = col_ops_i_d.value + + eval_st = 'df.pivot(index ={val}'.format(val=col_ops_i_dd) + eval_st += ',columns = {val}'.format(val=col_ops_dd) + eval_st += ',values =[{val}])'.format(val=tx.value) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + student.pivotdf = df + student.code_list.append(eval_st) + #student.dataff = df + #student.get_temp_qwidget(df) + display(df) + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + bs.on_click(functools.partial(on_bs_clicked)) + + col_ops = df.columns + col_ops_d = widgets.Dropdown( + options=col_ops, value=col_ops[0], description='Variable :') + + col_ops_i = df.columns + col_ops_i_d = widgets.Dropdown( + options=col_ops, value=None, description='Index :') + + x = 'Pivot' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + Hbo = HBox([ex]) + display(Hbo) + display(tx) + display(col_ops_d) + Hbo_lab = Label('* Optional') + Hbo = HBox([col_ops_i_d, Hbo_lab]) + display(Hbo) + display(bs) + + tx = widgets.Text(description='Selected: ', placeholder='bin') + df = student.dataf + + exp = df.columns + sel_mul(exp) + + ####################################################################################################### + + #Buttons invoking their functions + b11.on_click(functools.partial(on_b11_clicked)) + + ####################################################################################################### + + + def on_b12_clicked(cntrl): + #pd.melt(df, id_vars =['Name'], value_vars =['Course', 'Age']) + #df = df.pivot(index = 'A', columns ='B', values = ['A']) + + def sel_mul(exp): + clear_output() + ex = widgets.Dropdown( + options=exp, + value=None, + description='value_vars: ', ) + + def response(change): + + sq = '\'' + tx.value += sq + str(ex.value) + sq + ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(opt) + + ex.observe(response, names=["value", "options"]) + + def on_bs_clicked(cntrl): + tx.value = tx.value[:-2] + + #df.pivot(index = 'A', columns ='B', values = ['A']) + df = student.dataf + #eval_st = 'df[[{cols}]]'.format(cols = tx.value) + #df = eval(eval_st) + sq = '\'' + col_ops_dd = sq + col_ops_d.value + sq + + eval_st = 'df.melt(' + eval_st += 'value_vars = [{val}]'.format(val=tx.value) + eval_st += ',id_vars =[{val}])'.format(val=col_ops_dd) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + student.meltdf = df + student.code_list.append(eval_st) + display(df) + #student.get_temp_qwidget(df) + #display(df) + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + bs.on_click(functools.partial(on_bs_clicked)) + + col_ops = df.columns + col_ops_d = widgets.Dropdown( + options=col_ops, value=col_ops[0], description='id_vars :') + + x = 'Unpivot/Melt' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + Hbo = HBox([ex]) + display(Hbo) + display(tx) + display(col_ops_d) + + display(bs) + + tx = widgets.Text(description='Selected: ', placeholder='bin') + df = student.dataf + + exp = df.columns + sel_mul(exp) + + ####################################################################################################### + #Buttons invoking their functions + b12.on_click(functools.partial(on_b12_clicked)) + + ##################################################################################################### + def on_b5_clicked(cntrl): + + clear_output() + x = 'New Column Formula' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + TA = widgets.Textarea( + value='', + placeholder='Enter code here', + description='Code :', + disabled=False, + rows=5, + layout={'width': '800px'}) + + col_name = widgets.Text( + placeholder="Enter new column name", description="Name:") + display(col_name) + display(TA) + + def on_b_ta_clicked(cntrl): + + df = student.dataf + display(TA.value) + eval_st = '{TA}'.format(TA=TA.value) + + #sq = '\\' + '\'' + #eval_st = eval_st.replace('\'' ,sq) + col_val = col_name.value + try: + df[col_val] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + + sq = '\'' + code_st = "df[" + sq + "{col}".format(col=col_val) + + code_st += sq + "]" + + student.code_list.append(code_st) + + student.code_list.append(eval_st) + + student.dataf = df + + primary_disp() + + b_ta = widgets.Button(description='Execute') + b_ta.style.button_color = 'green' + + display(b_ta) + + b_ta.on_click(functools.partial(on_b_ta_clicked)) + + ####################################################################################################### + #Buttons invoking their functions + b5.on_click(functools.partial(on_b5_clicked)) + + ##################################################################################################### + #df = pd.read_csv(r'C:\Users\thaarunn\Desktop\titanic.csv') + def on_b10_clicked(cntrl): + + def sel_mul(exp): + clear_output() + ex = widgets.Dropdown( + options=exp, + value=None, + description='Column(s): ', + + ) + + + + def response(change): + + sq = '\'' + tx.value += sq+str(ex.value)+sq+ ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(opt) + + + ex.observe(response, names = ["value", "options"]) + + def on_bs_clicked(cntrl): + tx.value = tx.value[:-2] + #df = pd.get_dummies(df,columns=['Sex'], drop_first = False, dummy_na=True) + df = student.dataf + eval_st = 'pd.get_dummies(df,columns=[{col}],'.format(col =tx.value) + eval_st += 'drop_first = {val},'.format(val = col_ops_d.value) + eval_st += 'dummy_na={val})'.format(val = col_opss_d.value) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + #display(df) + student.dataf = df + student.code_list.append(eval_st) + + primary_disp() + + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + bs.on_click(functools.partial(on_bs_clicked)) + + col_ops = [False,True] + col_ops_d = widgets.Dropdown(options=col_ops,value=col_ops[0],description='drop_first :' ) + + col_opss = [False,True] + col_opss_d = widgets.Dropdown(options=col_ops,value=col_ops[0],description='dummy_na :' ) + + x = 'One hot encoding' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + Hbo = HBox([ex]) + display(Hbo) + display(tx) + display(col_ops_d) + display(col_opss_d) + + display(bs) + + + tx = widgets.Text(description = 'Selected: ', placeholder ='bin') + df = student.dataf + + exp= df.columns + sel_mul(exp) + ####################################################################################################### + + #Buttons invoking their functions + b10.on_click(functools.partial(on_b10_clicked)) + + + ################################################################################################### + def on_b8_clicked(cntrl): + clear_output() + x = 'Find and Replace' + tb_val = True + head_buttons_disp(x, tb=tb_val) + + + df = student.dataf + cols_val = df.columns + col = widgets.Dropdown(options=cols_val,value=cols_val[0], description='Column: ' ) + + display(col) + + tx = widgets.Text(description = 'Find :') + + display(tx) + + txr = widgets.Text(description = 'Replace :') + + display(txr) + + def on_bfr_clicked(cntlr): + #df['Name'] = df['Name'].str.replace('B','BB') + + sq = '\'' + code_st = 'df['+sq+'{col}'.format(col = col.value) + code_st += sq + ']' + + eval_st = 'df['+sq+'{col}'.format(col = col.value) + eval_st += sq + '].str.replace(' + sq + eval_st += '{col}'.format(col = tx.value) + eval_st += sq + ','+sq + eval_st += '{col}'.format(col = txr.value) + eval_st += sq + ')' + + key = col.value + + try: + df[key] = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(code_st) + student.code_list.append(eval_st) + + primary_disp() + + bfr = widgets.Button(description='Execute') + bfr.style.button_color = 'green' + bfr.on_click(functools.partial(on_bfr_clicked)) + + display(bfr) + ####################################################################################################### + + #Buttons invoking their functions + b8.on_click(functools.partial(on_b8_clicked)) + + + ################################################################################################### + def on_b9_clicked(cntrl): + def response(cntrl): + + + if upd.value == 'Update table value': + clear_output() + + x = 'Update table value';tb_val = True;head_buttons_disp(x, tb=tb_val) + + display(lineout) + display(upd) + display(lineout) + + + + + def select_cd(dicto): + + + flt_val = dicto + df = student.dataf + + + + sq = '\'' + temp_df = "" + + int_dtypes = ['int','int8','int16','int32','int64'] + + flt_dtypes = ['float','float16','float32','float64'] + #df = df.loc[df['Sex'].isin(['male']), 'Pclass'] = 5 + #display(flt_val) + #['has value','contains','starts_with','ends_with','==','!=','>','<', '<=', '>='] + for i in range(len(flt_val['ea'])): + + if df[flt_val['ea'][i]].dtype in int_dtypes: + flt_val['tx'][i] = int(flt_val['tx'][i]) + + elif df[flt_val['ea'][i]].dtype in flt_dtypes: + flt_val['tx'][i] = float(flt_val['tx'][i]) + + if flt_val['eo'][i] != None: + temp_df += ' ' + flt_val['eo'][i] + ' ' + + if flt_val['eb'][i] in ['==','!=','>','<', '<=', '>=']: + temp_df += '(df[\'{col}\']'.format(col = flt_val['ea'][i]) + temp_df += '{cond}'.format(cond = flt_val['eb'][i]) + temp_df += '{val})'.format(val = flt_val['tx'][i]) + + else: + temp_df += '(df[\'{col}\']'.format(col = flt_val['ea'][i]) + if flt_val['eb'][i] == 'has value': + temp_df += '.isin([\'{val}\'])) '.format(val = flt_val['tx'][i]) + else: + temp_df += '.str.{cond}'.format(cond = flt_val['eb'][i]) + temp_df += '(\'{val}\'))'.format(val = flt_val['tx'][i]) + + if toa.value != 'Null': + int_test = toa.value.isnumeric() + if int_test == True: + val = int(toa.value) + #print('numeric') + else: + try : + float(test_string) + res = True + except : + res = False + if res == True: + val = float(toa.value) + #print('float') + else: + sq = '\'' + val = sq + toa.value + sq + + #print('str') + + + eval_st = 'df.loc[' + temp_df +',' + sq + '{col}'.format(col = oa.value ) + if toa.value != 'Null': + eval_st += sq + '] = {vals}'.format(vals = val) + else: + eval_st += sq + '] = np.nan' + #display(eval_st) + #display(df) + + + + if els.value == True: + if toa2.value != 'Null': + int_test = toa2.value.isnumeric() + if int_test == True: + val = int(toa2.value) + #print('numeric') + else: + try : + float(test_string) + res = True + except : + res = False + if res == True: + val = float(toa2.value) + #print('float') + else: + sq = '\'' + val = sq + toa2.value + sq + + #print('str') + + + + eeval_st = 'df.loc[~(' + temp_df +'),' + sq + '{col}'.format(col = oa2.value ) + + + + + if toa2.value != 'Null': + eeval_st += sq + '] = {vals}'.format(vals = val) + else: + eeval_st += sq + '] = np.nan' + + #display(eeval_st) + try: + exec(eeval_st) + except: + js = '';display(HTML(js));raise + #student.dataf = df + student.code_list.append(eeval_st) + #display(df) + try: + exec(eval_st) + except: + js = '';display(HTML(js));raise + student.code_list.append(eval_st) + + student.dataf = df + + primary_disp() + + + + altrlt = expb = ['!=','==','<=','>=', '>', '<'] + + + flt_dict = dict() + + stu1 = student() + + flt_dict['stu1'] = student() + student.upd_cnt += 1 + + key_val = flt_dict['stu1'] + + + el_layout = Layout(width='2px',height='0px') + el = widgets.Label("",Layout = el_layout) + + ea = key_val.aa + eb = key_val.ab + tx = key_val.ax + eo = key_val.ao + + + + Hb1 = HBox([ea,eb,tx]) + vb = VBox([el,Hb1,el]) + display(vb) + + ba = widgets.Button(description='Add Condition') + ba.style.button_color = 'lightgray' + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + + + Hbb = HBox([ba, bs]) + display(Hbb) + + + #display(ba) + + oxpa = student.dataf.columns + oa = widgets.Dropdown(options=oxpa,value=oxpa[0] ) + l1 = Label('Set value of column') + #display(oa) + oxpaa = ['int', 'str' , 'float' , 'Null'] + oaa = widgets.Dropdown(options=oxpaa,value=oxpaa[0] ) + l2 = Label('dtype') + + toa = widgets.Text(value = 'Null') + l3 = Label('To') + + def response3(cntrl): + if oaa.value == 'Null': + toa.disabled = True + else: + toa.disabled = False + + oaa.observe(response3, names = 'value') + + v1 = widgets.VBox([l1, oa]) + v2 = widgets.VBox([l2, oaa]) + v3 = widgets.VBox([l3, toa]) + + hoa = widgets.HBox([v1, v3]) + display(hoa) + els_val = [False , True] + display(Label('Add else')) + els = widgets.Dropdown(options=els_val,value=els_val[0]) + #********************* + oxpa = student.dataf.columns + oa2 = widgets.Dropdown(options=oxpa,value=oxpa[0] ) + + oxpaa = ['int', 'str' , 'float' , 'Null'] + oaa2 = widgets.Dropdown(options=oxpaa,value=oxpaa[0] ) + toa2 = widgets.Text(value = 'Null') + + def response2(cntrl): + if oaa2.value == 'Null': + toa2.disabled = True + else: + toa2.disabled = False + + oaa2.observe(response2, names = 'value') + + + #hoa2 = widgets.HBox([oaa2, toa]) + l11= Label('Set value of column') + l22= Label('dtype') + l33= Label('To') + + + #********************* + def response(cntrl): + if els.value == True: + display(hoa2) + els.disabled = True + + els.observe(response, names = 'value') + + v11 = widgets.VBox([l11, oa2]) + v22 = widgets.VBox([l22, oaa2]) + v33 = widgets.VBox([l33, toa2]) + hoa2 = widgets.HBox([v11, v33]) + + display(els) + + + + + #display(bs) + + def on_ba_clicked(cntrl): + cnt = student.upd_cnt + cnt = str(cnt) + + #el_layout = Layout(width='2px',height='2px') + el = widgets.Label("") + + nxt_key = 'stu' + cnt + + + flt_dict[nxt_key] = student() + student.upd_cnt += 1 + + nxt_key = flt_dict[nxt_key] + + ea = nxt_key.aa + eb = nxt_key.ab + tx = nxt_key.ax + eo = nxt_key.ao + + Hb2 = HBox([ea,eb,tx]) + vb.children += (eo, el ,Hb2, el) + + + def on_bs_clicked(cntrl): + + flt_val = dict() + ea_val = list() + eb_val = list() + tx_val = list() + eo_val = list() + + for d_keys in flt_dict.keys(): + + d_keys = flt_dict[d_keys] + + ea_val.append(d_keys.aa.value) + eb_val.append(d_keys.ab.value) + tx_val.append(d_keys.ax.value) + eo_val.append(d_keys.ao.value) + + #display(ea_val, eb_val, tx_val) + + flt_val['ea'] = ea_val + flt_val['eb'] = eb_val + flt_val['tx'] = tx_val + flt_val['eo'] = eo_val + + + + select_cd(flt_val) + + stu = student() + ba.on_click(functools.partial(on_ba_clicked)) + + bs.on_click(functools.partial(on_bs_clicked)) + + else: + clear_output() + x = 'Handle Null value';tb_val = True;head_buttons_disp(x, tb=tb_val) + display(lineout) + display(upd) + display(lineout) + + #************************************************* + + oxpaa = ['Remove Null values' , 'Fill Null values'] + fd = widgets.Dropdown(options=oxpaa,value=None , description = 'Operation: ') + + + def resfd(cntl): + + df = student.dataf + + if fd.value == 'Remove Null values': #, 'Fill Null values' + + clear_output() + x = 'Remvoe';tb_val = True;head_buttons_disp(x, tb=tb_val) + display(lineout) + display(upd) + display(lineout) + + + display(fd) + oxpaa = ['Remove rows' , 'Remove columns'] + fd_val = widgets.Dropdown(options=oxpaa,value=oxpaa[0] , description = 'Remove: ') + + display(fd_val) + fdbn = widgets.Button(description='Execute') + fdbn.style.button_color = 'green' + def on_fdbn_clicked(cntrl): + #primary disp here: + df = student.dataf + if fd_val.value == 'Remove rows': + eval_st = 'df.dropna()' + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + else: + eval_st = 'df.dropna(axis =1)' + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + + primary_disp() + + fdbn.on_click(functools.partial(on_fdbn_clicked)) + display(fdbn) + + + else: + clear_output() + x = 'Fill';tb_val = True;head_buttons_disp(x, tb=tb_val) + display(lineout) + display(upd) + display(lineout) + + display(fd) + oxpaa = ['All_columns'] + list(df.columns) + fd_val = widgets.Dropdown(options=oxpaa,value= None , description = 'Column(s) :') + display(fd_val) + oxpaa_meth = ['Value' , 'Mean' , 'Median' , 'Frequent Value' , 'Forward Fill', 'Backward Fill'] + fd_val_meth = widgets.Dropdown(options=oxpaa_meth,value = None , description = 'Method :') + txfd = widgets.Text(description = 'Value :') + def fd_val_meth_res(cntl): + if fd_val_meth == 'Value': + txfd.disabled = True + if fd_val_meth != 'Value': + txfd.disabled = False + + fd_val_meth.observe(fd_val_meth_res, names = 'value') + + hfd = widgets.HBox([fd_val_meth, txfd]) + display(hfd) + fdbn = widgets.Button(description='Execute') + fdbn.style.button_color = 'green' + + def on_fdbn_clicked(cntl): + eval_st = ' ' + df = student.dataf + #print('$', fd_val.value) + if fd_val.value == 'All_columns': + #print('inside') + strin = False + if fd_val_meth.value == 'Value': + int_test = txfd.value.isnumeric() + if int_test == True: + txfd_val = int(txfd.value) + else: + try : + float(test_string) + res = True + except : + res = False + if res == True: + txfd_val = float(txfd.value) + else: + txfd_val = txfd.value + strin = True + + + eval_st += 'df.fillna(' + if strin == True: + eval_st += '\'{vals}\')'.format(vals = txfd_val) + else: + eval_st += '{vals})'.format(vals = txfd_val) + + if fd_val_meth.value == 'Mean': + eval_st += 'df.fillna(df.mean())' + if fd_val_meth.value == 'Median': + eval_st += 'df.fillna(df.median())' + if fd_val_meth.value == 'Frequent Value': + eval_st += 'df.fillna(df.mode().iloc[0])' + if fd_val_meth.value == 'Forward Fill': + eval_st += 'df.fillna(method = \'ffill\')' + if fd_val_meth.value == 'Backward Fill': + eval_st += 'df.fillna(method = \'bfill\')' + + #display(eval_st) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + df = 0 + primary_disp() + + #display(df) + + + if fd_val.value != 'All_columns': + if fd_val_meth.value == 'Value': + #print('inside value') + strin = False + int_test = txfd.value.isnumeric() + if int_test == True: + txfd_val = int(txfd.value) + #print('numeric') + else: + try : + float(test_string) + res = True + except : + res = False + if res == True: + txfd_val = float(txfd.value) + #print('float') + else: + txfd_val = txfd.value + strin = True + #print('str') + + + eval_st += 'df[\'{col}\'].fillna('.format(col = fd_val.value) + if strin == True: + eval_st += '\'{vals}\')'.format(vals = txfd_val) + else: + eval_st += '{vals})'.format(vals = txfd_val) + #display(eval_st) + + if fd_val_meth.value == 'Mean': + eval_st += 'df[\'{col}\'].fillna(df[\'{col}\'].mean())'.format(col = fd_val.value) + if fd_val_meth.value == 'Median': + eval_st += 'df[\'{col}\'].fillna(df[\'{col}\'].median())'.format(col = fd_val.value) + if fd_val_meth.value == 'Frequent Value': + eval_st += 'df[\'{col}\'].fillna(df[\'{col}\'].mode().iloc[0])'.format(col = fd_val.value) + if fd_val_meth.value == 'Forward Fill': + eval_st += 'df[\'{col}\'].fillna(method = \'ffill\')'.format(col = fd_val.value) + if fd_val_meth.value == 'Backward Fill': + eval_st += 'df[\'{col}\'].fillna(method = \'bfill\')'.format(col = fd_val.value) + + code_st = 'df[\'{col}\']'.format(col = fd_val.value) + + #print(code_st) + cols_rvalue = fd_val.value + + #display(eval_st) + try: + df[cols_rvalue] = eval(eval_st) + except: + js = '';display(HTML(js));raise + #eval(eval_st) + ##display(df) + student.code_list.append(code_st) + student.dataf = df + student.code_list.append(eval_st) + df = 0 + primary_disp() + + + fdbn.on_click(functools.partial(on_fdbn_clicked)) + display(fdbn) + + + fd.observe(resfd, names = 'value') + display(fd) + + + #************************************************* + + lineout = widgets.Output(layout={'border': '1px solid black'}) + + oxpaa = ['Update table value' , 'Handle Null value'] + upd = widgets.Dropdown(options=oxpaa,value=None , description = 'Operation: ') + + upd.observe(response, names = 'value') + clear_output() + x ='Set/Update values';tb_val = True;head_buttons_disp(x, tb=tb_val) + display(lineout) + display(upd) + display(lineout) + + + #################################################################################################### + + #Buttons invoking their functions + b9.on_click(functools.partial(on_b9_clicked)) + + + ################################################################################################### + def on_b6_clicked(cntrl): + def sel_mul(exp): + clear_output() + ex = widgets.Dropdown( + options=exp, + value=None, + description='Columns : ', + ) + + def response(change): + + sq = '\'' + tx.value += sq+str(ex.value)+sq+ ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(opt) + + + ex.observe(response, names = ["value", "options"]) + + x = 'Group by/Aggravate';tb_val = True;head_buttons_disp(x,tb=tb_val) + el = widgets.Label("") + Hbo = HBox([ex]) + display(Hbo) + display(tx) + + display(vb) + + display(Hbb) + + + def select_cd(dicto): + + #flt_val = dicto + df = student.dataf + + tx_val = tx.value + tx_val = tx_val[:-2] + + temp_df = 'df.groupby([{sel}]).agg('.format(sel = tx_val) + #print(temp_df) + sq = '\'' + for i, j in zip(dicto['columns'],dicto['options']): + temp_df += i+"_"+j +" =(" + temp_df += sq + i +sq +","+sq + j +sq + '),' + temp_df = temp_df[:-1] + + temp_df += ').reset_index()' + display(temp_df) + + eval_st = 'df.merge('+temp_df+', on = [{sel}])'.format(sel = tx_val) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + #display(df) + student.dataf = df + student.code_list.append(eval_st) + student.grp_cnt = 1 + primary_disp() + + + + def on_ba_clicked(cntrl): + + cnt = student.grp_cnt + cnt = str(cnt) + + #el_layout = Layout(width='2px',height='2px') + el = widgets.Label("") + + nxt_key = 'stu' + cnt + + + flt_dict[nxt_key] = student() + student.grp_cnt += 1 + + nxt_key = flt_dict[nxt_key] + + ops = nxt_key.ops + col = nxt_key.col + + Hb2 = HBox([ops, col]) + vb.children += (el,Hb2,el) + + + + def on_bs_clicked(cntrl): + grp_val = dict() + options_val = list() + columns_val = list() + + for d_keys in flt_dict.keys(): + + d_keys = flt_dict[d_keys] + + options_val.append(d_keys.ops.value) + columns_val.append(d_keys.col.value) + + #display(ea_val, eb_val, tx_val) + + grp_val['options'] = options_val + grp_val['columns'] = columns_val + + display(grp_val) + select_cd(grp_val) + + + tx = widgets.Text(description = 'Selected: ') + df = student.dataf + + flt_dict = dict() + + flt_dict['stu1'] = student() + student.grp_cnt += 1 + + key_val = flt_dict['stu1'] + + + ops = key_val.ops + + col = key_val.col + + Hb1 = HBox([ops,col]) + + ba = widgets.Button(description='Add Condition') + ba.style.button_color = 'lightgray' + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + + ba.on_click(functools.partial(on_ba_clicked)) + bs.on_click(functools.partial(on_bs_clicked)) + + Hbb = HBox([ba, bs]) + + vb = VBox([Hb1]) + + exp= df.columns + sel_mul(exp) + + #################################################################################################### + + #Buttons invoking their functions + b6.on_click(functools.partial(on_b6_clicked)) + + + ################################################################################################### + def on_b7_clicked(cntrl): + + clear_output() + x = 'Merge/Join';tb_val = True;head_buttons_disp(x,tb=tb_val) + merge_val = ['inner','outer','left','right'] + merge = widgets.Dropdown(options=merge_val,value=merge_val[0] ) + mlab = Label('column:') + mergo = widgets.HBox([mlab, merge]) + + olab = Label('Merge: ') + old_df = widgets.Text(value = 'Current dataframe', disabled = True) + nlab = Label(' And ') + new_df = widgets.Text( placeholder = 'Enter path here') + + elab = Label(" ") + + btr = widgets.Button(description='Proceed') + btr.style.button_color = 'gray' + + hm = widgets.HBox([olab, old_df, nlab, new_df,elab, btr]) + + + + def on_btr_clicked(cntl): + + + def sel_mul(exp, expr): + + if exp == 'Null': + exp = student.exp + else: + student.exp = exp + + if expr == 'Null': + expr = student.expr + else: + student.expr = expr + + + clear_output() + + + + ex = widgets.Dropdown( + options=exp, + value=None, + description='Left_cols: ', + + ) + + + exr = widgets.Dropdown( + options=expr, + value=None, + description='Right_cols: ', + + ) + + + + def response(change): + + sq = '\'' + tx.value += sq+str(ex.value)+sq+ ", " + display(ex.options) + temp_lis = [i for i in ex.options] + + temp_lis.remove(ex.value) + opt = temp_lis + sel_mul(exp = opt, expr = 'Null') + + + ex.observe(response, names = ["value", "options"]) + + + def responser(change): + + sq = '\'' + txr.value += sq+str(exr.value)+sq+ ", " + display(ex.options) + temp_lis = [i for i in exr.options] + + temp_lis.remove(exr.value) + opt = temp_lis + sel_mul(expr = opt, exp = 'Null') + + + exr.observe(responser, names = ["value", "options"]) + + def on_bs_clicked(cntrl, df, dff): + + # display(df) + # display(dff) + tx.value = tx.value[:-2] + txr.value = txr.value[:-2] + sq = '\'' + eval_st = 'pd.merge(df,dff, how = '+sq+'{method}'.format(method = merge.value) + eval_st += sq +',left_on=[{l}], right_on = [{r}])'.format(l = tx.value, r = txr.value) + + #print(eval_st) + try: + df = eval(eval_st) + except: + js = '';display(HTML(js));raise + + student.dataf = df + student.code_list.append(eval_st) + + primary_disp() + #display(result) + + + bs = widgets.Button(description='Execute') + bs.style.button_color = 'green' + bs.on_click(functools.partial(on_bs_clicked, df = df, dff = dff)) + + col_ops = ['Select column(s)', 'Drop column(s)'] + col_ops_d = widgets.Dropdown(options=col_ops,value=col_ops[0],description='Select/Drop :' ) + + x = 'Merge/Join';tb_val = True;head_buttons_disp(x,tb=tb_val) + Hbo = HBox([ex, tx]) + Hbor = HBox([exr, txr]) + display(mergo) + display(hm) + + display(Hbo) + display(Hbor) + #display(tx) + + + display(bs) + + + tx = widgets.Text(description = 'On_left: ') + txr = widgets.Text(description = 'On_right: ') + #df = pd.read_csv(r'C:\Users\thaarunn\Desktop\titanic.csv') + #dff = pd.read_csv(r'C:\Users\thaarunn\Desktop\titanic.csv') + + df = student.dataf + + dff = pd.read_csv(new_df.value) + Exp = list(df.columns) + + Expr= list(dff.columns) + sel_mul(exp = Exp, expr = Expr) + + + btr.on_click(functools.partial(on_btr_clicked)) + display(mergo) + display(hm) + + + #################################################################################################### + + #Buttons invoking their functions + b7.on_click(functools.partial(on_b7_clicked)) + + + ################################################################################################### + + def on_b13_clicked(cntel): + + clear_output() + x = 'History';tb_val = True;head_buttons_disp(x,tb=tb_val) + + + student.org = student.code_list + + student.temp = student.code_list + + + bs = widgets.Button(description='Get_History',button_style='success') + bundo = widgets.Button(description='Undo',button_style='warning',icon = 'fa-rotate-left') + bredo = widgets.Button(description='Redo',button_style='info',icon = 'fa-rotate-right') + bcommit = widgets.Button(description='Commit',button_style='success',icon = 'fa-anchor') + + #bs.style.button_color = 'green' + # bs.on_click(functools.partial(o + + def displays(): + clear_output() + + x = 'History';tb_val = True;head_buttons_disp(x,tb=tb_val) + + #display(lineout) + #display(head) + #display(lineout) + + butts = widgets.HBox([bundo,bs, bredo, bcommit]) + display(butts) + + cnt = 0 + iterable = iter(student.temp) + + temp = student.temp + + + for i in iterable: + + + + ll = Label( ' ~ ') + + if i[:7] == 'df.pivo' or i[:7] == 'df.melt' or i[:6] =='df.loc': + + + Lab = widgets.HTML(value=""+i+"") + + hh = widgets.HBox([ll, Lab]) + display(hh) + + else: + + if i[:4] == 'df['+'\'' and i[-2:] == '\']': + + #print('**', i[3:-1]) + k = next(iterable) + i = i + ' = '+ k + + Lab = widgets.HTML(value=""+i+"") + + hh = widgets.HBox([ll, Lab]) + display(hh) + continue + + else: + i = 'df = '+i + Lab = widgets.HTML(value=""+i+"") + hh = widgets.HBox([ll, Lab]) + display(hh) + + def on_bundo_clicked(cntrl): + + temp = student.temp + + if len(temp) != 0: + pass + if len(temp) != 1: + sstr = temp[-2:-1][0] + + if sstr[:4] == 'df['+'\'' and sstr[-2:] == '\']': + + temp = temp[:-2] + + else: + temp = temp[:-1] + else: + temp = temp[:-1] + + student.temp = temp + iterable = iter(student.temp) + + df = student.org_df + for i in iterable: + if i[:7] == 'df.pivo' or i[:7] == 'df.melt': + pass + else: + if i[:6] =='df.loc': + exec(i) + student.dataff = df + else: + if i[:4] == 'df['+'\'' and i[-2:] == '\']': + + col_val = i[4:-2] + k = next(iterable) + df[col_val] = eval(k) + + continue + + else: + df = eval(i) + + + + + student.dataff = df + displays() + + + + + def on_bredo_clicked(cntel): + + temp = student.temp + + if len(student.temp) != len(student.org): + + if student.org[len(student.temp)][:4] == 'df['+'\'' and student.org[len(student.temp)][-2:] == '\']': + + student.temp.append(student.org[len(student.temp)]) + student.temp.append(student.org[len(student.temp)]) + else: + student.temp.append(student.org[len(student.temp)]) + + else: + pass + + df = student.org_df + iterable = iter(student.temp) + + for i in iterable: + if i[:7] == 'df.pivo' or i[:7] == 'df.melt': + pass + else: + if i[:6] =='df.loc': + exec(i) + student.dataff = df + else: + if i[:4] == 'df['+'\'' and i[-2:] == '\']': + + col_val = i[4:-2] + k = next(iterable) + df[col_val] = eval(k) + + continue + + else: + df = eval(i) + + student.dataff = df + displays() + + + + + def on_bs_clicked(cntrl): + displays() + + + def on_bcommit_clicked(cntrl): + student.code_list = student.temp + student.org = student.temp + student.dataf = student.dataff + primary_disp() + + + bs.on_click(functools.partial(on_bs_clicked)) + + bundo.on_click(functools.partial(on_bundo_clicked)) + + + bredo.on_click(functools.partial(on_bredo_clicked)) + + bcommit.on_click(functools.partial(on_bcommit_clicked)) + + + + lineout = widgets.Output(layout={'border': '1px solid black'}) + + label_layout3 = Layout(width='200px', height='30px') + + head_label = Label('History') + + head = HBox([ + Label('', layout=label_layout3), + Label('', layout=label_layout3), + bs, + Label('', layout=label_layout3), + Label('', layout=label_layout3) + ]) + butts = widgets.HBox([bundo,bs, bredo,bcommit]) + display(butts) + displays() + + + + ############################################################################## + + #Buttons invoking their functions + b13.on_click(functools.partial(on_b13_clicked)) + + + ################################################################################################### + + + + #item_1 = qwidget + + box_layout = Layout( + height='35px', + display='display', + box_model='marigin', + flex_flow='row', + align_items='stretch', + width='100%') + + box_layout_z = Layout( + height='35px', + display='display', + box_model='marigin', + flex_flow='row', + align_items='stretch', + width='70%') + + box_layout1 = Layout( + height='80px', + display='display', + box_model='padding', + flex_flow='column', + align_items='stretch', + width='95%') + + dflength = widgets.Label( + value=str(df.shape[0]) + ' rows * ' + str(df.shape[1]) + ' Columns') + + box_1 = Box(children=items_1, layout=box_layout) + + box_2 = Box(children=items_2, layout=box_layout_z) + + box_z = Box(children=[box_1, box_2], layout=box_layout1) + + ####################################################################################################### + ####################################################################################################### + def primary_disp(): + #disp_accordion_val() + clear_output() + + display(box_z) + display(lineout) + print('') + wid = stu.cls_dropdown_func() + accordion_val = HBox([ + Label('', layout=label_layout), wid, + Label('', layout=label_layout1), bs + ]) + + def response(change): + student.wid_value = wid.value + + wid.observe(response, names="value") + display(accordion_val) + display(lineout) + qwidget_display, df_length = stu.get_qwidget() + display(df_length) + display(lineout) + print(' ' + + 'Table View' + ' ') + display(qwidget_display) + + ####################################################################################################### + def on_bc_clicked(d): + student.flt_cnt = 1 + student.upd_cnt = 1 + clear_output() + primary_disp() + + ####################################################################################################### + def on_bcb_clicked(d, br): + student.flt_cnt = 1 + student.upd_cnt = 1 + clear_output() + column_selected(br) + + ####################################################################################################### + def on_bb_clicked(e): + clear_output() + primary_disp() + + ####################################################################################################### + def on_bt_clicked(c, wid, br, dff): + + clear_output() + column_selected(br, tabslt=1) + + ####################################################################################################### + def on_btc_clicked(c): + + clear_output() + #tab_out_disp(accordion) + primary_disp() + + ####################################################################################################### + + #Buttons invoking their functions + bs.on_click( + functools.partial(on_button_clicked, wid=wid, br=b_rname, dff=df)) + + #b_rname.on_click(functools.partial(on_b_r_button_clicked1, dff = df)) + b_rname.on_click(functools.partial(on_b_r_button_clicked)) + + bt.on_click(functools.partial(on_bt_clicked, wid=wid, br=b_rname, dff=df)) + + bc.on_click(functools.partial(on_bc_clicked)) + + bb.on_click(functools.partial(on_bc_clicked)) + + bcb.on_click(functools.partial(on_bcb_clicked, br=b_rname)) + + bctb.on_click(functools.partial(on_btc_clicked)) + + btc.on_click(functools.partial(on_btc_clicked)) + + ####################################################################################################### + #Accordian init widget items + #def disp_accordion_val(): + + #disp_accordion_val() + primary_disp() + + ####################################################################################################### + #Accordion: + + stu.stu_out = aout + accordion = widgets.Accordion(children=[aout] + #,selected_index = None + ) + + accordion.set_title(0, 'Magic') + + ######################################################################################################## + + + def tab_out_disp(accordion): + + df = stu.dataf + aout = stu.stu_out + accordion = widgets.Accordion(children=[aout] + #,selected_index = None + ) + + accordion.set_title(0, 'Magic') + + clear_output() + #display(box_z) + #display(accordion) + primary_disp() + + + ####################################################################################################### + + # v0 = VBox([Email()]) + # v1 = VBox([box_z]) + # v2 = VBox([accordion]) + + #for i in range(0, 3): + # disp_val = 'v' + str(i) + # exec('display(' + disp_val + ')') + + ####################################################################################################### + ####################################################################################################### + + tab = widgets.Tab() + + tab_out = widgets.Output() + + with tab_out: + tab_out_disp(accordion) + + #tab_c1 = VBox([box_z, accordion]) + tab_c1 = tab_out + + tab_c2 = widgets.Output() + + + with tab_c2: + bss = widgets.Button(description='Get_Profile',button_style='success') + #bss.style.button_color = 'green' + # bs.on_click(functools.partial(o + def on_bss_clicked(cntrl): + temp = student.code_list + clear_output() + display(lineout) + display(heads) + display(lineout) + display('Profile Report Processing...') + df = student.dataf + prof = pp.ProfileReport(df) + ppr = prof.to_notebook_iframe() + display(ppr) + + + + + + + bss.on_click(functools.partial(on_bss_clicked)) + + lineout = widgets.Output(layout={'border': '1px solid black'}) + + label_layout35 = Layout(width='200px', height='30px') + + #head_label = Label('History') + + heads = HBox([ + Label('', layout=label_layout35), + Label('', layout=label_layout35), + bss, + Label('', layout=label_layout35), + Label('', layout=label_layout35) + ]) + display(lineout) + display(heads) + display(lineout) + + tab_c4 = widgets.Output() + with tab_c4: + + bcmd = widgets.Button(description='Commands',button_style='success') + def on_bcmd_clicked(antrl): + clear_output() + + display(lineout) + display(headcmd) + display(lineout) + + patho = eval('pd.__file__') + patho = patho.replace('pandas\__init__.py','') + patho = patho+'pandas_ui\panda.html' + file = open(patho, "rb") + image = file.read() + htm = widgets.HTML( + value=image + + ) + display(htm) + + + bcmd.on_click(functools.partial(on_bcmd_clicked)) + label_layout37 = Layout(width='200px', height='30px') + + + + headcmd = HBox([ + Label('', layout=label_layout37), + Label('', layout=label_layout37), + bcmd, + Label('', layout=label_layout37), + Label('', layout=label_layout37) + ]) + display(lineout) + display(headcmd) + display(lineout) + + + tab_c3 = widgets.Output() + + with tab_c3: + + #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + df = student.dataf + + plt_dig_opt = ['scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories'] + + plt_dig = widgets.Dropdown(value=None,options=plt_dig_opt,description='Figure Type:') + + ########################################################################################################### + def plt_response(cntrl): + + + clear_output() + display(plt_head) + display(plt_slt) + df = student.dataf + ##################################################################################### + def plt_dd_creator(opts, desc): + return widgets.Dropdown(value=None,options=opts,description=desc) + + plt_types = ['scatt','box','vio','hist','strip', 'area','dc','dh'] + + plt3_types = ['scatt3','line3'] + + plt3_vals = ['x','y','z','color','symb','size','ld'] + + plt_vals = ['x','y','color','f_row','f_col','n_hov','symb','size'] + + plt_ori_types = ['box','vio','hist','strip', 'area','dc','dh'] + plt_tx_vals = ['title','x_min','x_max','y_min','y_max'] + plt3_tx_vals = ['title','x_min','x_max','y_min','y_max','z_min','z_max'] + + pltm_types = ['scatt_m','p_cat','p_coor'] + + plt_tf_vals = [ 'log_x','log_y'] + plt3_tf_vals = [ 'log_x','log_y','log_z'] + + plt_mar_types = ['scatt','dc','dh'] + plt_mar_vals = [ 'mar_x','mar_y'] + + plt_wid_dict = dict() + + + for types in plt_mar_types: + for vals in plt_mar_vals: + plt_wid_dict[types+"_"+vals] = plt_dd_creator(opts = ['rug','histogram','violin','box'], desc =types+"_"+vals ) + + for types in plt3_types: + for vals in plt3_tf_vals: + plt_wid_dict[types+"_"+vals] = plt_dd_creator(opts = [True,False], desc =types+"_"+vals ) + + + for types in plt3_types: + for vals in plt3_vals: + plt_wid_dict[types+"_"+vals] = plt_dd_creator(opts = df.columns, desc =types+"_"+vals ) + + + for types in plt3_types: + for vals in plt3_tx_vals: + plt_wid_dict[types+"_"+vals] = widgets.Text(description =types+"_"+vals ) + + + for vals in plt_types: + plt_wid_dict[vals+"_d_hov"] = plt_dd_creator(opts = ["All columns"] , desc =vals+"_d_hov" ) + + + for vals in pltm_types: + plt_wid_dict[vals+"_dim"] = plt_dd_creator(opts = ["All columns"] + list(df.columns), desc =vals+"_dim" ) + + for vals in pltm_types: + plt_wid_dict[vals+"_color"] = plt_dd_creator(opts = df.columns, desc =vals+"_color" ) + + for vals in pltm_types: + plt_wid_dict[vals+"_title"] = widgets.Text(description = vals+"_title") + + plt_wid_dict['scatt_m_sym'] = plt_dd_creator(opts = df.columns, desc ='scatt_m_sym' ) + + plt_wid_dict['scatt_m_size'] = plt_dd_creator(opts = df.columns, desc ='scatt_m_size' ) + + plt_wid_dict["scatt_m_n_hov"] = plt_dd_creator(opts = df.columns, desc ="scatt_m_n_hov" ) + + plt_wid_dict["scatt_m_d_hov"] = plt_dd_creator(opts = ["All columns"], desc ="scatt_m_d_hov" ) + + plt_wid_dict['scatt_m_s_max'] = widgets.Text(description = 'scatt_m_s_max') + + for types in plt_types: + for vals in plt_vals: + plt_wid_dict[types+"_"+vals] = plt_dd_creator(opts = df.columns, desc =types+"_"+vals ) + + + for types in plt_types: + for vals in plt_tf_vals: + plt_wid_dict[types+"_"+vals] = plt_dd_creator(opts = [True,False], desc =types+"_"+vals ) + + for vals in plt_ori_types: + plt_wid_dict[vals+"_ori"] = plt_dd_creator(opts = ["v","h"], desc =vals+"_ori" ) + + for types in plt_types: + for vals in plt_tx_vals: + plt_wid_dict[types+"_"+vals] = widgets.Text(description =types+"_"+vals ) + + + plt_wid_dict['box_notch'] = plt_dd_creator(opts = [True,False], desc ='box_notch' ) + + plt_wid_dict['vio_box'] = plt_dd_creator(opts = [True,False], desc ='violin_box') + + plt_wid_dict['hist_marg'] = plt_dd_creator(opts = ['rug','histogram','violin','box'], desc ='hist_marg' ) + + + plt_wid_dict['scatt_s_max'] = widgets.Text(description = 'scatt_s_max') + + plt_wid_dict['hist_nbins'] = widgets.Text(description = 'hist_nbins') + + lineout = widgets.Output(layout={'border': '1px solid black'}) + + pw = plt_wid_dict + + + lo = Label('* Optional') + lo_h = widgets.VBox([lo, lineout]) + ######################################################################################################### + + + ############################################################################################# + if plt_dig.value == "scatter": + scatt_h1 = widgets.HBox([pw['scatt_x'],pw['scatt_y']]) + scatt_h2 = widgets.HBox([pw['scatt_title'],pw['scatt_color']]) + scatt_h3 = widgets.HBox([pw['scatt_x_min'],pw['scatt_x_max'],pw['scatt_y_min'],pw['scatt_y_max']]) + scatt_h4 = widgets.HBox([pw['scatt_f_row'],pw['scatt_f_col'],pw['scatt_n_hov'],pw['scatt_d_hov']]) + scatt_h5 = widgets.HBox([pw['scatt_log_x'],pw['scatt_log_y'],pw['scatt_size'],pw['scatt_symb']]) + scatt_h6 = widgets.HBox([pw['scatt_mar_x'],pw['scatt_mar_y'],pw['scatt_s_max']]) + + display(scatt_h1,lo_h,scatt_h2,scatt_h3,scatt_h4,scatt_h5,scatt_h6) + + if plt_dig.value == "box": + box_h1 = widgets.HBox([pw['box_x'],pw['box_y']]) + box_h2 = widgets.HBox([pw['box_title'],pw['box_color']]) + box_h3 = widgets.HBox([pw['box_x_min'],pw['box_x_max'],pw['box_y_min'],pw['box_y_max']]) + box_h4 = widgets.HBox([pw['box_f_row'],pw['box_f_col'],pw['box_n_hov'],pw['box_d_hov']]) + box_h5 = widgets.HBox([pw['box_log_x'],pw['box_log_y'],pw['box_ori'],pw['box_notch']]) + + display(box_h1,lo_h,box_h2,box_h3,box_h4,box_h5) + + if plt_dig.value == "violin": + vio_h1 = widgets.HBox([pw['vio_x'],pw['vio_y']]) + vio_h2 = widgets.HBox([pw['vio_title'],pw['vio_color']]) + vio_h3 = widgets.HBox([pw['vio_x_min'],pw['vio_x_max'],pw['vio_y_min'],pw['vio_y_max']]) + vio_h4 = widgets.HBox([pw['vio_f_row'],pw['vio_f_col'],pw['vio_n_hov'],pw['vio_d_hov']]) + vio_h5 = widgets.HBox([pw['vio_log_x'],pw['vio_log_y'],pw['vio_ori'],pw['vio_box']]) + + display(vio_h1,lo_h,vio_h2,vio_h3,vio_h4,vio_h5) + + if plt_dig.value == "histogram": + + hist_h1 = widgets.HBox([pw['hist_x'],pw['hist_y']]) + hist_h2 = widgets.HBox([pw['hist_title'],pw['hist_color'],pw['hist_nbins']]) + hist_h3 = widgets.HBox([pw['hist_x_min'],pw['hist_x_max'],pw['hist_y_min'],pw['hist_y_max']]) + hist_h4 = widgets.HBox([pw['hist_f_row'],pw['hist_f_col'],pw['hist_n_hov'],pw['hist_d_hov']]) + hist_h5 = widgets.HBox([pw['hist_log_x'],pw['hist_log_y'],pw['hist_ori'],pw['hist_marg']]) + + display(hist_h1,lo_h,hist_h2,hist_h3,hist_h4,hist_h5) + + if plt_dig.value == "strip": + strip_h1 = widgets.HBox([pw['strip_x'],pw['strip_y']]) + strip_h2 = widgets.HBox([pw['strip_title'],pw['strip_color']]) + strip_h3 = widgets.HBox([pw['strip_x_min'],pw['strip_x_max'],pw['strip_y_min'],pw['strip_y_max']]) + strip_h4 = widgets.HBox([pw['strip_f_row'],pw['strip_f_col'],pw['strip_n_hov'],pw['strip_d_hov']]) + strip_h5 = widgets.HBox([pw['strip_log_x'],pw['strip_log_y'],pw['strip_ori']]) + + display(strip_h1,lo_h,strip_h2,strip_h3,strip_h4,strip_h5) + + + if plt_dig.value == "area": + area_h1 = widgets.HBox([pw['area_x'],pw['area_y']]) + area_h2 = widgets.HBox([pw['area_title'],pw['area_color']]) + area_h3 = widgets.HBox([pw['area_x_min'],pw['area_x_max'],pw['area_y_min'],pw['area_y_max']]) + area_h4 = widgets.HBox([pw['area_f_row'],pw['area_f_col'],pw['area_n_hov'],pw['area_d_hov']]) + area_h5 = widgets.HBox([pw['area_log_x'],pw['area_log_y'],pw['area_ori']]) + + display(area_h1,lo_h,area_h2,area_h3,area_h4,area_h5) + + if plt_dig.value == "density_contour": + dc_h1 = widgets.HBox([pw['dc_x'],pw['dc_y']]) + dc_h2 = widgets.HBox([pw['dc_title'],pw['dc_color']]) + dc_h3 = widgets.HBox([pw['dc_x_min'],pw['dc_x_max'],pw['dc_y_min'],pw['dc_y_max']]) + dc_h4 = widgets.HBox([pw['dc_f_row'],pw['dc_f_col'],pw['dc_n_hov'],pw['dc_d_hov']]) + dc_h5 = widgets.HBox([pw['dc_log_x'],pw['dc_log_y']]) + dc_h6 = widgets.HBox([pw['dc_mar_x'],pw['dc_mar_y']]) + + display(dc_h1,lo_h,dc_h2,dc_h3,dc_h4,dc_h5,dc_h6) + + + + if plt_dig.value == "density_heatmap" : + + dh_h1 = widgets.HBox([pw['dh_x'],pw['dh_y']]) + dh_h2 = widgets.HBox([pw['dh_title'],pw['dh_color']]) + dh_h3 = widgets.HBox([pw['dh_x_min'],pw['dh_x_max'],pw['dh_y_min'],pw['dh_y_max']]) + dh_h4 = widgets.HBox([pw['dh_f_row'],pw['dh_f_col'],pw['dh_n_hov'],pw['dh_d_hov']]) + dh_h5 = widgets.HBox([pw['dh_log_x'],pw['dh_log_y']]) + dh_h6 = widgets.HBox([pw['dh_mar_x'],pw['dh_mar_y']]) + + display(dh_h1,lo_h,dh_h2,dh_h3,dh_h4,dh_h5,dh_h6) + + if plt_dig.value == "scatter_3d": + + scatt3_h1 = widgets.HBox([pw['scatt3_x'],pw['scatt3_y'],pw['scatt3_z']]) + scatt3_h2 = widgets.HBox([pw['scatt3_title'],pw['scatt3_color']]) + scatt3_h3 = widgets.HBox([pw['scatt3_log_x'],pw['scatt3_log_y'],pw['scatt3_log_z']]) + scatt3_h4 = widgets.HBox([pw['scatt3_x_min'],pw['scatt3_x_max'],pw['scatt3_y_min'],pw['scatt3_y_max']]) + scatt3_h5 = widgets.HBox([pw['scatt3_z_min'],pw['scatt3_z_max'],pw['scatt3_symb'],pw['scatt3_size']]) + + display(scatt3_h1,lo_h,scatt3_h2,scatt3_h3,scatt3_h4,scatt3_h5) + + if plt_dig.value == "line_3d": + + line3_h1 = widgets.HBox([pw['line3_x'],pw['line3_y'],pw['line3_z']]) + line3_h2 = widgets.HBox([pw['line3_title'],pw['line3_color']]) + line3_h3 = widgets.HBox([pw['line3_log_x'],pw['line3_log_y'],pw['line3_log_z']]) + line3_h4 = widgets.HBox([pw['line3_x_min'],pw['line3_x_max'],pw['line3_y_min'],pw['line3_y_max']]) + line3_h5 = widgets.HBox([pw['line3_z_min'],pw['line3_z_max'],pw['line3_ld']]) + + + + display(line3_h1,lo_h,line3_h2,line3_h3,line3_h4,line3_h5) + #'scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + if plt_dig.value == "parallel_categories": + + p_cat_h1 = widgets.HBox([pw['p_cat_title'],pw['p_cat_color']]) + #p_cat_h2 = widgets.HBox([pw['p_cat_dim']]) + + display(lo_h,p_cat_h1) + + if plt_dig.value == "parallel_coordinates": + + p_coor_h1 = widgets.HBox([pw['p_coor_title'],pw['p_coor_color']]) + #p_coor_h2 = widgets.HBox([pw['p_coor_dim']]) + + display(lo_h,p_coor_h1) + + if plt_dig.value == "scatter_matrix": + + scatt_m_h1 = widgets.HBox([pw['scatt_m_title'],pw['scatt_m_color']]) + scatt_m_h2 = widgets.HBox([pw['scatt_m_n_hov'],pw['scatt_m_d_hov']]) + scatt_m_h3 = widgets.HBox([pw['scatt_m_sym'],pw['scatt_m_size'],pw['scatt_m_s_max']]) + + display(lo_h,scatt_m_h1,scatt_m_h2, scatt_m_h3) + + #print('hai') + + def on_bplt_clicked(cntrl): + #widgs() + sq = '\'' + clear_output() + df = student.dataf + + + + + + if plt_dig.value == "scatter": + + if pw['scatt_x'].value == None: + xx = None + else: + xx = sq + pw['scatt_x'].value + sq + + if pw['scatt_log_x'].value == None: + log_xx = None + else: + log_xx = pw['scatt_log_x'].value + + if pw['scatt_log_y'].value == None: + log_yx = None + else: + log_yx = pw['scatt_log_y'].value + + if pw['scatt_mar_x'].value == None: + marxx = None + else: + marxx = sq + pw['scatt_mar_x'].value + sq + + if pw['scatt_mar_y'].value == None: + maryx = None + else: + maryx = sq + pw['scatt_mar_y'].value + sq + + if pw['scatt_symb'].value == None: + symbx = None + else: + symbx = sq + pw['scatt_symb'].value + sq + + if pw['scatt_size'].value == None: + sizex = None + else: + sizex = sq + pw['scatt_size'].value + sq + + + if pw['scatt_y'].value == None: + yx = None + else: + yx = sq + pw['scatt_y'].value + sq + + if pw['scatt_title'].value == "": + titlex = None + else: + titlex = sq + pw['scatt_title'].value + sq + + if pw['scatt_color'].value == None: + colorx = None + else: + colorx = sq + pw['scatt_color'].value + sq + + if pw['scatt_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['scatt_f_row'].value + sq + + if pw['scatt_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['scatt_f_col'].value + sq + + + if pw['scatt_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['scatt_n_hov'].value + sq + + + if pw['scatt_d_hov'].value == None: + d_hovx = None + else: + if pw['scatt_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + + if pw['scatt_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['scatt_x_min'].value), int(pw['scatt_x_max'].value)] + if pw['scatt_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['scatt_y_min'].value), int(pw['scatt_y_max'].value)] + if pw['scatt_s_max'].value == "": + size_maxx = None + else: + size_maxx = int(pw['scatt_s_max'].value) + + + + plt_st = "px.scatter(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name}, size={size}, symbol = {symbol}, marginal_x = {marginal_x}, marginal_y={marginal_y}, hover_data = {hover_data}, size_max={size_max})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_name =n_hovx , hover_data=d_hovx, size = sizex, symbol =symbx , marginal_x =marxx , marginal_y =maryx , size_max = size_maxx ) + + fig = eval(plt_st) + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "box": + + if pw['box_x'].value == None: + xx = None + else: + xx = sq + pw['box_x'].value + sq + + if pw['box_log_x'].value == None: + log_xx = None + else: + log_xx = pw['box_log_x'].value + + if pw['box_log_y'].value == None: + log_yx = None + else: + log_yx = pw['box_log_y'].value + + + + + if pw['box_y'].value == None: + yx = None + else: + yx = sq + pw['box_y'].value + sq + + if pw['box_title'].value == "": + titlex = None + else: + titlex = sq + pw['box_title'].value + sq + + if pw['box_color'].value == None: + colorx = None + else: + colorx = sq + pw['box_color'].value + sq + + if pw['box_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['box_f_row'].value + sq + + if pw['box_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['box_f_col'].value + sq + + + if pw['box_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['box_n_hov'].value + sq + + if pw['box_d_hov'].value == None: + d_hovx = None + else: + if pw['box_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + + + if pw['box_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['box_x_min'].value), int(pw['box_x_max'].value)] + if pw['box_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['box_y_min'].value), int(pw['box_y_max'].value)] + + + if pw['box_ori'].value == None: + orix = None + else: + orix = sq + pw['box_ori'].value + sq + + + + + plt_st = "px.box(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name},hover_data = {hover_data}, orientation = {orientation},notched = {notched})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_data = d_hovx, hover_name =n_hovx , orientation = orix, notched = pw['box_notch'].value) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "violin": + + if pw['vio_x'].value == None: + xx = None + else: + xx = sq + pw['vio_x'].value + sq + + if pw['vio_log_x'].value == None: + log_xx = None + else: + log_xx = pw['vio_log_x'].value + + if pw['vio_log_y'].value == None: + log_yx = None + else: + log_yx = pw['vio_log_y'].value + + + + + if pw['vio_y'].value == None: + yx = None + else: + yx = sq + pw['vio_y'].value + sq + + if pw['vio_title'].value == "": + titlex = None + else: + titlex = sq + pw['vio_title'].value + sq + + if pw['vio_color'].value == None: + colorx = None + else: + colorx = sq + pw['vio_color'].value + sq + + if pw['vio_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['vio_f_row'].value + sq + + if pw['vio_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['vio_f_col'].value + sq + + + if pw['vio_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['vio_n_hov'].value + sq + + if pw['vio_d_hov'].value == None: + d_hovx = None + else: + if pw['vio_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + + + if pw['vio_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['vio_x_min'].value), int(pw['vio_x_max'].value)] + if pw['vio_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['vio_y_min'].value), int(pw['vio_y_max'].value)] + + + if pw['vio_ori'].value == None: + orix = None + else: + orix = sq + pw['vio_ori'].value + sq + + + + + plt_st = "px.violin(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name}, orientation = {orientation},hover_data = {hover_data}, box = {boxx})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , hover_data = d_hovx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_name =n_hovx , orientation = orix , boxx = pw['vio_box'].value ) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "histogram": + + if pw['hist_x'].value == None: + xx = None + else: + xx = sq + pw['hist_x'].value + sq + + if pw['hist_log_x'].value == None: + log_xx = None + else: + log_xx = pw['hist_log_x'].value + + if pw['hist_log_y'].value == None: + log_yx = None + else: + log_yx = pw['hist_log_y'].value + + + + + if pw['hist_y'].value == None: + yx = None + else: + yx = sq + pw['hist_y'].value + sq + + if pw['hist_title'].value == "": + titlex = None + else: + titlex = sq + pw['hist_title'].value + sq + + if pw['hist_color'].value == None: + colorx = None + else: + colorx = sq + pw['hist_color'].value + sq + + if pw['hist_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['hist_f_row'].value + sq + + if pw['hist_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['hist_f_col'].value + sq + + + if pw['hist_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['hist_n_hov'].value + sq + + if pw['hist_d_hov'].value == None: + d_hovx = None + else: + if pw['hist_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + if pw['hist_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['hist_x_min'].value), int(pw['hist_x_max'].value)] + if pw['hist_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['hist_y_min'].value), int(pw['hist_y_max'].value)] + + + if pw['hist_ori'].value == None: + orix = None + else: + orix = sq + pw['hist_ori'].value + sq + + if pw['hist_nbins'].value == "": + nbins = None + else: + nbins = int(pw['hist_nbins'].value ) + + if pw['hist_marg'].value == None: + margx = None + else: + margx = sq +pw['hist_marg'].value + sq + + + + + plt_st = "px.histogram(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name},hover_data = {hover_data}, orientation = {orientation},nbins = {nbins}, marginal = {marginal})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , hover_data = d_hovx, facet_row = f_rowx, facet_col =f_colx, hover_name =n_hovx , orientation = orix ,nbins = nbins, marginal = margx) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "strip": + + + if pw['strip_x'].value == None: + xx = None + else: + xx = sq + pw['strip_x'].value + sq + + if pw['strip_log_x'].value == None: + log_xx = None + else: + log_xx = pw['strip_log_x'].value + + if pw['strip_log_y'].value == None: + log_yx = None + else: + log_yx = pw['strip_log_y'].value + + + + + if pw['strip_y'].value == None: + yx = None + else: + yx = sq + pw['strip_y'].value + sq + + if pw['strip_title'].value == "": + titlex = None + else: + titlex = sq + pw['strip_title'].value + sq + + if pw['strip_color'].value == None: + colorx = None + else: + colorx = sq + pw['strip_color'].value + sq + + if pw['strip_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['strip_f_row'].value + sq + + if pw['strip_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['strip_f_col'].value + sq + + + if pw['strip_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['strip_n_hov'].value + sq + + if pw['strip_d_hov'].value == None: + d_hovx = None + else: + if pw['strip_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + + if pw['strip_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['strip_x_min'].value), int(pw['strip_x_max'].value)] + if pw['strip_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['strip_y_min'].value), int(pw['strip_y_max'].value)] + + + if pw['strip_ori'].value == None: + orix = None + else: + orix = sq + pw['strip_ori'].value + sq + + + + + plt_st = "px.strip(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name},hover_data = {hover_data}, orientation = {orientation})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_data = d_hovx, hover_name =n_hovx , orientation = orix ) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "area": + + if pw['area_x'].value == None: + xx = None + else: + xx = sq + pw['area_x'].value + sq + + if pw['area_log_x'].value == None: + log_xx = None + else: + log_xx = pw['area_log_x'].value + + if pw['area_log_y'].value == None: + log_yx = None + else: + log_yx = pw['area_log_y'].value + + + + + if pw['area_y'].value == None: + yx = None + else: + yx = sq + pw['area_y'].value + sq + + if pw['area_title'].value == "": + titlex = None + else: + titlex = sq + pw['area_title'].value + sq + + if pw['area_color'].value == None: + colorx = None + else: + colorx = sq + pw['area_color'].value + sq + + if pw['area_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['area_f_row'].value + sq + + if pw['area_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['area_f_col'].value + sq + + + if pw['area_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['area_n_hov'].value + sq + + + if pw['area_d_hov'].value == None: + d_hovx = None + else: + if pw['area_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + if pw['area_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['area_x_min'].value), int(pw['area_x_max'].value)] + if pw['area_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['area_y_min'].value), int(pw['area_y_max'].value)] + + + if pw['area_ori'].value == None: + orix = None + else: + orix = sq + pw['area_ori'].value + sq + + + + + plt_st = "px.area(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , hover_data = {hover_data}, facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name}, orientation = {orientation})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_name =n_hovx ,hover_data = d_hovx , orientation = orix ) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "density_heatmap": + + if pw['dh_x'].value == None: + xx = None + else: + xx = sq + pw['dh_x'].value + sq + + if pw['dh_log_x'].value == None: + log_xx = None + else: + log_xx = pw['dh_log_x'].value + + if pw['dh_log_y'].value == None: + log_yx = None + else: + log_yx = pw['dh_log_y'].value + + if pw['dh_mar_x'].value == None: + marxx = None + else: + marxx = sq + pw['dh_mar_x'].value + sq + + if pw['dh_mar_y'].value == None: + maryx = None + else: + maryx = sq + pw['dh_mar_y'].value + sq + + + if pw['dh_y'].value == None: + yx = None + else: + yx = sq + pw['dh_y'].value + sq + + if pw['dh_title'].value == "": + titlex = None + else: + titlex = sq + pw['dh_title'].value + sq + + if pw['dh_color'].value == None: + colorx = None + else: + colorx = sq + pw['dh_color'].value + sq + + if pw['dh_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['dh_f_row'].value + sq + + if pw['dh_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['dh_f_col'].value + sq + + + if pw['dh_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['dh_n_hov'].value + sq + + if pw['dh_d_hov'].value == None: + d_hovx = None + else: + if pw['dh_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + + + + if pw['dh_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['dh_x_min'].value), int(pw['dh_x_max'].value)] + if pw['dh_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['dh_y_min'].value), int(pw['dh_y_max'].value)] + + + #print(d_hovx) + + plt_st = "px.density_heatmap(df, x = {x} , y = {y}, title = {title}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name}, marginal_x = {marginal_x}, hover_data = {hover_data}, marginal_y={marginal_y})".format(x = xx, y = yx, title =titlex , log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_name =n_hovx , hover_data = d_hovx, marginal_x =marxx , marginal_y =maryx ) + + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "density_contour": + + if pw['dc_x'].value == None: + xx = None + else: + xx = sq + pw['dc_x'].value + sq + + if pw['dc_log_x'].value == None: + log_xx = None + else: + log_xx = pw['dc_log_x'].value + + if pw['dc_log_y'].value == None: + log_yx = None + else: + log_yx = pw['dc_log_y'].value + + if pw['dc_mar_x'].value == None: + marxx = None + else: + marxx = sq + pw['dc_mar_x'].value + sq + + if pw['dc_mar_y'].value == None: + maryx = None + else: + maryx = sq + pw['dc_mar_y'].value + sq + + + if pw['dc_y'].value == None: + yx = None + else: + yx = sq + pw['dc_y'].value + sq + + if pw['dc_title'].value == "": + titlex = None + else: + titlex = sq + pw['dc_title'].value + sq + + if pw['dc_color'].value == None: + colorx = None + else: + colorx = sq + pw['dc_color'].value + sq + + if pw['dc_f_row'].value == None: + f_rowx = None + else: + f_rowx = sq + pw['dc_f_row'].value + sq + + if pw['dc_f_col'].value == None: + f_colx = None + else: + f_colx = sq + pw['dc_f_col'].value + sq + + + if pw['dc_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['dc_n_hov'].value + sq + + + if pw['dc_d_hov'].value == None: + d_hovx = None + else: + if pw['dc_d_hov'].value == 'All columns': + d_hovx =list(df.columns) + + if pw['dc_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['dc_x_min'].value), int(pw['dc_x_max'].value)] + if pw['dc_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['dc_y_min'].value), int(pw['dc_y_max'].value)] + + + #print(d_hovx) + # + plt_st = "px.density_contour(df, x = {x} , y = {y}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , range_x={range_x} , range_y ={range_y} , facet_row = {facet_row}, facet_col = {facet_col}, hover_name={hover_name}, marginal_x = {marginal_x}, hover_data = {hover_data}, marginal_y={marginal_y})".format(x = xx, y = yx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , range_x =rangexx , range_y = rangeyy , facet_row = f_rowx, facet_col =f_colx, hover_data = d_hovx, hover_name =n_hovx , marginal_x =marxx , marginal_y =maryx ) + + fig = eval(plt_st) + + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "scatter_3d": + + + if pw['scatt3_x'].value == None: + xx = None + else: + xx = sq + pw['scatt3_x'].value + sq + + if pw['scatt3_y'].value == None: + yx = None + else: + yx = sq + pw['scatt3_y'].value + sq + + if pw['scatt3_z'].value == None: + zx = None + else: + zx = sq + pw['scatt3_z'].value + sq + + if pw['scatt3_title'].value =="": + titlex = None + else: + titlex = sq+ pw['scatt3_title'].value + sq + + if pw['scatt3_color'].value == None: + colorx = None + else: + colorx = sq+ pw['scatt3_color'].value + sq + + ################# + + if pw['scatt3_log_x'].value == None: + log_xx = None + else: + log_xx = pw['scatt3_log_x'].value + + if pw['scatt3_log_y'].value == None: + log_yx = None + else: + log_yx = pw['scatt3_log_y'].value + + if pw['scatt3_log_z'].value == None: + log_zx = None + else: + log_zx = pw['scatt3_log_z'].value + + + + if pw['scatt3_symb'].value == None: + symbx = None + else: + symbx = sq + pw['scatt3_symb'].value + sq + + if pw['scatt3_size'].value == None: + sizex = None + else: + sizex = sq + pw['scatt3_size'].value + sq + + + if pw['scatt3_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['scatt3_x_min'].value), int(pw['scatt3_x_max'].value)] + if pw['scatt3_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['scatt3_y_min'].value), int(pw['scatt3_y_max'].value)] + + if pw['scatt3_z_min'].value == "": + rangezz = None + else: + rangezz = [int(pw['scatt3_z_min'].value), int(pw['scatt3_z_max'].value)] + + + + plt_st = "px.scatter_3d(df, x = {x} , y = {y}, z = {z}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , log_z = {log_z}, range_x={range_x} , range_y ={range_y} , range_z = {range_z}, size={size}, symbol = {symbol})".format(x = xx, y = yx, z = zx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , log_z = log_zx, range_z = rangezz, range_x =rangexx , range_y = rangeyy , size = sizex, symbol =symbx ) + fig = eval(plt_st) + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "line_3d": + if pw['line3_x'].value == None: + xx = None + else: + xx = sq + pw['line3_x'].value + sq + + if pw['line3_y'].value == None: + yx = None + else: + yx = sq + pw['line3_y'].value + sq + + if pw['line3_z'].value == None: + zx = None + else: + zx = sq + pw['line3_z'].value + sq + + if pw['line3_title'].value =="": + titlex = None + else: + titlex = sq+ pw['line3_title'].value + sq + + if pw['line3_color'].value == None: + colorx = None + else: + colorx = sq+ pw['line3_color'].value + sq + + ################# + + if pw['line3_log_x'].value == None: + log_xx = None + else: + log_xx = pw['line3_log_x'].value + + if pw['line3_log_y'].value == None: + log_yx = None + else: + log_yx = pw['line3_log_y'].value + + if pw['line3_log_z'].value == None: + log_zx = None + else: + log_zx = pw['line3_log_z'].value + + + + if pw['line3_symb'].value == None: + symbx = None + else: + symbx = sq + pw['line3_symb'].value + sq + + if pw['line3_ld'].value == None: + line_dashx = None + else: + line_dashx = sq + pw['line3_ld'].value + sq + + if pw['line3_size'].value == None: + sizex = None + else: + sizex = sq + pw['line3_size'].value + sq + + + + + if pw['line3_x_min'].value == "": + rangexx = None + else: + rangexx = [int(pw['line3_x_min'].value), int(pw['line3_x_max'].value)] + if pw['line3_y_min'].value == "": + rangeyy = None + else: + rangeyy = [int(pw['line3_y_min'].value), int(pw['line3_y_max'].value)] + + if pw['line3_z_min'].value == "": + rangezz = None + else: + rangezz = [int(pw['line3_z_min'].value), int(pw['line3_z_max'].value)] + + + + plt_st = "px.line_3d(df, x = {x} , y = {y}, z = {z}, title = {title}, color = {color}, log_x ={log_x} ,log_y = {log_y} , log_z = {log_z}, range_x={range_x} , range_y ={range_y} , range_z = {range_z}, line_dash = {line_dash})".format(x = xx, y = yx, z = zx, title =titlex , color =colorx, log_x =log_xx , log_y =log_yx , log_z = log_zx, range_z = rangezz, range_x =rangexx , range_y = rangeyy ,line_dash = line_dashx ) + #print(plt_st) + fig = eval(plt_st) + + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "scatter_matrix": + if pw['scatt_m_sym'].value == None: + symbx = None + else: + symbx = sq + pw['scatt_m_sym'].value + sq + + if pw['scatt_m_size'].value == None: + sizex = None + else: + sizex = sq + pw['scatt_m_size'].value + sq + + + if pw['scatt_m_title'].value == "": + titlex = None + else: + titlex = sq + pw['scatt_m_title'].value + sq + + if pw['scatt_m_color'].value == None: + colorx = None + else: + colorx = sq + pw['scatt_m_color'].value + sq + + + + if pw['scatt_m_n_hov'].value == None: + n_hovx = None + else: + n_hovx = sq + pw['scatt_m_n_hov'].value + sq + + if pw['scatt_m_d_hov'].value == None: + d_hovx = None + else: + d_hovx = list(df.columns) + + + + plt_st = "px.scatter_matrix(df, title = {title}, color = {color}, size = {size},symbol = {symbol},hover_name={hover_name}, hover_data = {hover_data})".format( title =titlex , hover_data = d_hovx, color =colorx , size = sizex , symbol = symbx, hover_name = n_hovx) + + fig = eval(plt_st) + + + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "parallel_coordinates": + + if pw['p_coor_title'].value =="": + titlex = None + else: + titlex = sq+ pw['p_coor_title'].value + sq + + if pw['p_coor_color'].value == None: + colorx = None + else: + colorx = sq+ pw['p_coor_color'].value + sq + + + + + + plt_st = "px.parallel_coordinates(df, title = {title}, color = {color})".format( title =titlex , color =colorx ) + #print(plt_st) + fig = eval(plt_st) + + + #'scatter','box','violin','histogram','strip','density_heatmap','density_contour','area','scatter_3d','line_3d','scatter_matrix','parallel_coordinates','parallel_categories' + + if plt_dig.value == "parallel_categories": + + if pw['p_cat_title'].value =="": + titlex = None + else: + titlex = sq+ pw['p_cat_title'].value + sq + + if pw['p_cat_color'].value == None: + colorx = None + else: + colorx = sq+ pw['p_cat_color'].value + sq + + + + p_cat_h2 = widgets.HBox([pw['p_cat_dim']]) + + plt_st = "px.parallel_categories(df, title = {title}, color = {color})".format( title =titlex , color =colorx ) + #print(plt_st) + fig = eval(plt_st) + + + + ########################################################################################################### + #plt_dig.value = None + display(plt_head) + display(plt_slt) + display(bplt) + display(lineout) + plt_st = plt_st.replace(' ','') + display(plt_st) + display(lineout) + fig.show() + ########################################################################################################### + + ############################################################################################# + display(lineout) + display(bplt) + bplt.on_click(functools.partial(on_bplt_clicked)) + #bsplt.on_click(functools.partial(plt_response)) + ###################################################################################################### + + def plt_responsex(cntrl): + + clear_output() + display(plt_head) + display(plt_slt) + display(bplt) + #widgs() + + + def pltupd_response(cntrl): + plt_responsex('upd') + #clear_output() + #widgs() + + + + def plthlp_response(cntrl): + clear_output() + display(plt_head) + + display('~ x : Set column to be displayed on x-Axis') + display('~ y : Set column to be displayed on y-Axis') + display('~ title : Set plot title') + display('~ color : Add colors to plot based on values of a column') + display('~ x_min : Set min values of the x-axis(y_min, z_min)' ) + display('~ x_max : set max values of the x-axis(y-max,z_max)') + display('~ f_row : Create veritcal subplots based on column values') + display('~ f_col : Create horizontal subplots based on column values') + display('~ n_hov : Column value which will appear as a title in hover box') + display('~ d_hov : Column value which will appear in hover info') + display('~ log_x : Transform x-axis to show logarithim of vlaues(log_y,log_z)') + display('~ size : Add different size points to plot based on values of a column') + + display('~ symb : Add different symbols to plot based on values of a column') + display('~ ld : Add different line dashes to plot based on values of a column') + display('~ mar_x : Add a marginal distribution of x values ( y vales, z values)') + display('~ s_max : Set size of the point in the plot') + patho = eval('pd.__file__') + patho = patho.replace('pandas\__init__.py','') + file = open(patho + 'pandas_ui\zis.jpg', 'rb') + image = file.read() + display(lineout) + display(' Reference ') + display(lineout) + f_w = widgets.Image( + value=image, + format='jpg', + width=1000, + height=700, + ) + display(f_w) + + + ###################################################################################################### + + + + + plt_dig.observe(plt_responsex, names = "value") + + + bplt = widgets.Button(description='Plot') + bplt.style.button_color = 'green' + + bsplt = widgets.Button(description='Choose') + #bsplt.style.button_color = 'gray' + + plt_slt = widgets.HBox([plt_dig, bsplt]) + bsplt.on_click(functools.partial(plt_response)) + + + label_layout3p = Layout(width='125px', height='30px') + + label_layout5p = Layout(width='150px', height='30px') + + bhplt_layout = Layout(width='250px', height='35px', border='2px solid white') + pltupd = widgets.Button(description= 'View/Update',button_style = 'Success', icon = 'fa-cubes') + head_pltlabel = widgets.Button(description= 'Plot', button_style = 'Success') + plthlp = widgets.Button(description= 'help', button_style = 'Success', icon = 'fa-question-circle' ) + lineout = widgets.Output(layout={'border': '1px solid black'}) + pltheadl = HBox([ + pltupd, + Label('', layout=label_layout5p), + Label('', layout=label_layout5p), Label('Plot'), + Label('', layout=label_layout3p), + + Label('', layout=label_layout5p), plthlp + ]) + + + pltupd.on_click(functools.partial(pltupd_response)) + plthlp.on_click(functools.partial(plthlp_response)) + + plt_head = widgets.VBox([lineout,pltheadl,lineout]) + + display(plt_head) + display(plt_slt) + display(bplt) + + + + + #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + children = [tab_c1, tab_c2, tab_c3, tab_c4] + + tab.children = children + for i, j in zip((0, 1, 2, 3), ["DataFrame", "PandasProfoling", "Explore", "Commands"]): + tab.set_title(i, j) + + #display(icon) + display(tab) + + + # Deal with ba ck button by interchanging the bcb and bb/ have look into it. + + +def pandas_ui(path): + try: + pandas_ui1(path) + except: + + js = '' + display(HTML(js)) + raise + #print('.....') + ###display(HTML(js)) + + +def get_df(): + return student.dataf +def get_pivotdf(): + return student.pivotdf +def get_meltdf(): + return student.meltdf + +if __name__ == "__main__": + main() diff --git a/pandas_ui/panda.html b/pandas_ui/panda.html new file mode 100644 index 0000000..c945dc1 --- /dev/null +++ b/pandas_ui/panda.html @@ -0,0 +1,13428 @@ + + + + +SQL - PANDAS - MONGODB - SPARKSQL - HIVE + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+

PYTHON PANDAS

+
+
+
+
+
+
+

Pandas Dataframe creation

+ +
+
+
+
+
+
In [1]:
+
+
+
import pandas as pd
+import numpy as np
+
+table = pd.DataFrame()
+a = ['arunn', 'nandhu','aravind','balaji','karuna','sagar']
+b= [70,55,55,50,50,50]
+c = [170,160,160,170,160,150]
+table['name'] = a
+table['weight'] = b
+table['height'] = c
+
+ +
+
+
+ +
+
+
+
In [2]:
+
+
+
table
+
+ +
+
+
+ +
+
+ + +
+ +
Out[2]:
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nameweightheight
0arunn70170
1nandhu55160
2aravind55160
3balaji50170
4karuna50160
5sagar50150
+
+
+ +
+ +
+
+ +
+
+
+
+

PYTHON PANDAS SYNTAX

+ +
+
+
+
+
+
+

PANDAS COMMANDS:

+
+
+
+
+
+
In [20]:
+
+
+
# SELECT *
+
+table;
+
+
+
+ 
+# SELECT n
+
+table[['name','height']];
+
+
+
+# COUNT
+
+len(table);
+
+
+
+# UNIQUE VALUES
+
+table['name'].unique();
+
+
+
+
+# WHERE CONDITION -- =,<,>,!=
+
+table[table['name'] == 'arunn'];
+
+
+#AND/OR
+
+table[(table['height'] == 150) & (table['weight'] == 70)];
+
+table[(table['height'] == 150) | (table['weight'] == 70)];
+
+
+
+#IN
+
+table[table['height'].isin([150,170])];
+
+
+
+#NULL/NOTNULL
+
+table[table['height'].isna()];
+
+table[table['height'].notna()];
+
+
+
+#LIKE/NOTLIKE
+
+table[table['name'].str.startswith('ar')];
+
+table[table['name'].str.endswith('ar')];
+
+table[table['name'].str.contains('nn')];
+
+
+
+#AGG --SUM,MIN,MAX,AVG
+
+table[['height','weight']].apply(np.sum);
+
+table.agg(mean, axis = "columns");
+
+table.agg({ 'height' : [min] ,  'weight' : [min , max] });
+
+
+
+#ALIASING --AS
+
+table.rename(index = str , columns = {'name' : 'NAME' , 'height' :'HEIGHT' , 'weight' : 'WEIGHT'});
+
+
+#SORT
+
+table.sort_values('name');
+
+table.sort_values('name', ascending = False);
+
+table.sort_values(['name','height']);
+
+
+
+
+#GROUP -- WITH AGG
+
+table['weight'].groupby(table['height']).sum()
+
+
+#HAVING
+
+table['weight'].groupby(table['height']).filter(lambda x : x.sum() == 120);
+
+
+#UPDATE
+
+table.loc[table['weight'] == 50, 'height'] = table.loc[table['weight'] == 50,'height'] + 10;
+
+
+#DELETE
+
+table.loc[table['weight'] == 50, 'height'] = np.NaN
+
+table = table.dropna()
+
+#Applying function to a pandas columns:
+
+def funct(val):
+    if val['weight'] == 70:
+        return 700
+    elif val['weight'] == 50:
+        return 500
+    else:
+        return 550
+
+
+table['weight'] = table.apply(funct, axis = 1)
+table
+
+ +
+
+
+ +
+
+ + +
+ +
Out[20]:
+ + + + +
+
height
+150     50
+160    160
+170    120
+Name: weight, dtype: int64
+
+ +
+ +
+
+ +
+
+
+ + + + + + diff --git a/pandas_ui/plot.png b/pandas_ui/plot.png new file mode 100644 index 0000000000000000000000000000000000000000..5db2949acc83197dc545cf4e0a5254d09ee0ab16 GIT binary patch literal 132194 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

-PqWO< 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 d$jUUL>_aLP>a_Wubo(cS<6 literal 0 HcmV?d00001 diff --git a/pandas_ui/zis.jpg b/pandas_ui/zis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e526fe0d4e1e2f8b781590267777b2bb334faa0 GIT binary patch literal 98796 zcmbTd2UJsC*De|aL8J+abRu1;(mN4&X(FH?y@?=52}tjWf`W7b0i}xcE=aG^oAe$! zp+g{{21q%1U%&7F&i~(Y#<=(HBqJGX@4d3-T64|$%xBJxpT(~LZar4lQU?$b5dmHh zUI6?mfK$!S(H;QM(E;!S0Dv2Wb94Y=!Y?Ai>z@NZ4^RbMBO?0y{jY=gI`Q8JDG3Sj zbuv;ivcEq!$SKHg+_-szjO-@W&6^aIgoBKnnudy!`tRR=ck=h`f8RxTQ{EuE@%I(~ z-wymQ0PT%y9M{mqM4W(Yv_!R$)ZHDZ$Mq=X^eq##^SbBi#1 zV&ZFr!CogJAzU3yI1eD9y-vp=s!V$OnGG4I`yH`&@!2=HR4Uu)^~aFh;x9cy$Zy_d zU}R$E;pMykfL}sVN?Jx%PW3M}bq!6e#|F<0jf_o9&1~&n**m;;bn^7__VM-e4+wq# zAuRl3L}WtZ=cMG6FJDu?=j7()7Zes1SN*K6sjaJTXzb|h>h9_7>mL}On4FrPnVo~J zuEEzgHn+BSc2P&iC#PrU=!?t0Nw7(GujkMpy$9vcKgby5>vx5Yv)e z=MW{OQ+`Hf<9?e{?A?t!D)HHs?c`kI`bheh9%DD}a!ai8p#B!^AIbjT2^RAIOS1nG z>_2kB0F=Z;gvBGK1%LopqzP(f=8dAp1m<$`t?L$P1Wn4lbNC%Nd4SQ!8s=p_E2aE* zBTusOj9bI8yo)TGls)N}RMiDSB!U62K1(0pG35wqqjQ0_sDqYDEd!q+@qjRqeIal1 zlR^2IXNy8yU%s=1sR^%o$ilu=p55_t#RHU4Veg!acf=hVlhgc}k||2;V>Rvd4h3Rw zAlg@u0n7np{0MZK2_6s-4Q;Vl%2~_0xx-G?jG~`9i+B6BgB*1CEY$2vo;8XH=mRmjto8bs&lvvz<0zHs)_#a2Ds zFR=Xtom1?&KPqeN)&=|1!-kh08(O*x7A+OvTK3I}!B<5+jKy&^LF>IUOY5i{!qk>; zB4De`OKbH?1Blvl!vi2Qm_I$FR~4!TFyKK!7@++JdcQ#4x)Y&v;F!XS+?DA zr;LQzuH1J$QPd4AM8JC1w3%XB26|{)NAAVg!O%dFzU>8gxb-t5^{f}>z*phRv_Nu18mC+|&vFGCVxoOte8nR{L2)*i*{!uF^&Eji_ zz_?B8gx!Q&=@uSftU$#Y-!@den!-Q(LW3kaL@u%(rWh$~wsd_x*4An{yoUMaVBMO< zpGDg8uDI=I-5Ky+DmCUTu3*vP7FXn^X0{`_J7dqjw~rxv-dm==p$bZ?*ATHWp&B7} zu)O}nA(v^{0XS8b^D7NU(%X9>a_nLMNUHNjndzbte%gJrJ)EU6{=(f*Lf%{3l>X8D zR^LN_g$-(c$CRBDMfz?fj$)|PFXUKv!t2UWYS1^3Q{zrx?)`5~sKHyJnYjUDcC00J zYhHf;QuDS@jKeDEV}QV}6|i;ew25&e(4Vg|;XzL1^L9IXEBd$hRx8`dvgs?&gcQJd zfO?d0_Z@##!KKi+iU~5A_V#Zc<;xM-ap#4-S5tAhmfL37?h`37$C(62U*2Ja%`6^Z zpXJo{dHqdA%_u@)btcxam19x@NIqB7lgFE7<60hnQOClmGQ9gyT8ixVaIx%qdcfE} zo!0#6G~Bk>4{CtAzM1I8n!vzV$J zIamBk{qlnJEmrTt$ckdi*NyBM?*4&i^77hh%Mvp;H6beNrhW^?LRev|o1mV;AGff{>Ev-A3WJd*0E$@QGjV9baS2Gxa zS&@CD%AMuUS3(|=%aV<*?an$P7~Ouh*Twn>gA`uin6OmLe_OrOzxN@*>X}^9PlvAs zi?JXiOGWk%n8sxhXWA@cl}1D4xtDUYQxj$;I%)hK0 zt5l?~va1xuA3xMwf62g2BJt1Mfd8zLy@^JiQ|;YzqsqC3c}sQPNRtpTEhfMLi8mux zL18h>D({5kq;~)xuxaLsj=1Pf1|0vHaao(t=)>JnHhD-Djq;@?tf_q^T~FV zx-Hb&&qV~+dU`<2Xcy1;;)s#`Yr#Ky-SB6@)J_mek_)4-;w>irw|1=TId!s^hQXv@ zhHg2Y^1OU(*k#A1WGZY85O)Vvd$aKeG3BG;yYX$1!<7#YkTGyAXq`)dal0QYWbJg&w>`T#vh$y8(yM0cJG*0|B^nw4$D zR5u29AEXYXeA1}QtrpBn`E6D5NsMTVNs*}in<>F2E;SBDvPUb>=k4Q4*%w^pc+~?PK zE!*f0iD!s)0ET@jcTdD(3;gU7Jz&EZ0B#L`8NpkML|PC^NmSgZ1ni};2I zy!V;F1()FghcG>w=h*`h!48&>w9j%w{dlAS)Y1U=y;%P7?K3ckb!Cs}KmM9-^G^ptSX^k{o{t>3tI^r(iGw$j5`h+(HQ0rt(fpOi1-BgvGroP;`2g=aOj*&x2m@UUK#|a}g=fDl+-5?e3H>E^*^x_IHa)Ej5km zA2au_wKTk4V3KV){iA$ymOLT=6}xyOdP-b$t;$=E-p}B#nVfMqNh<1z=U-Q11UFN; zGg3Y8y}z!Iu*swXKV(d&{G|4evCH87XITx!b4{<0%-Qr-B)44p6yw4Dl6@NzfFW`}bO|h-fn|pB)`;b;^q(E;2Q(O`5>IJ&H?Guoh3JX5SDpcpG zt$*Lk?U}tj(0MO(CeGUG4?3LvGlFhs1hv4Gwy9Dt)znebe8;Lne+a;$@bK*~)TD=) zY}pMj0ol)4RUHrAe>;z~J(i$0oJR=}kgYRiUC`xoYh)}8I`T)(;?%J8TIt3&b~iu&?+iNBwVK{Q3g4bti`Lrtu`Z`>!GrZam;N#7k~prv*~&QQi*rsU(l` zwLtu0+=q^we9r^&uQtf+z#_NGvxkZw@Qs3dFS{=zGvuB#0QVSn`Mq|`gtH#V80@7s-4w;1heg4YtZbThS;6+RwB z+^_k%Q0?No@FGV*G8lAaht}wUh@+u-=4eT`%>*_p@)~n_wkM7$W*5w2+m1;$Jzk#Q1x9 zH?~FJ(x{@g_AS>&ZsUeBuOq!v;#{jUj5`sM;1Gzhy)?*C0H`(^n)oZ>CsLn2sEK^Pyuy8I;&h(1!x4HODfuF4Oj3CbV z^Vo#0`5#+1*QwJ3-FGICC*Ak^72l#W2XW-m!FLh`Qy^?HW&4uE1q<^Fiy9Kr$2(`Y zl*Lz-1@4@=tb~zK%M7ap|ICGHy|SzPjk60qls=EEfX|=~C+EI@x#a{xZAoK2-8P_bm(KVr>7kRf5#kxL|TTD1vFEP0bB zdtHtZhTe5;AseHt?56i#h{pO2gvK9D;sHoqD2ug~)45r4(dwcPn}J2RNkZq-$wRK% zdb_CSah{B;rkpS8e%z9lhvvK;exzny>-tF!_*rV>UJ*`oI}qZHJp2H4(1Wo&9hIa4 zby;yvgI$+4ww%l4yJ#q^1_V!m%e>q#Kc#)$*NX6Yzz_9#Xd3gYvK-nj*X-^N&!V=} zMqPKcs|+-+{oqZG;0a7~1}hOm$dVD48e5@H9 zl2TNsU{klIE0tyrsxu0Z5r5nTR1&F~U(y`2sh445Ea*gvoP8E^ZiB%xbBgEsi&c5n zjo3M_SQ`;l7P=;;Ka=l%HL8Q3KQ@wjn&U3`>jV^;RpkZYLh~Too*>KfR<}>}Zg$I= zSS>DFhz&_h-ww+p(;3&|{H?$7+@_MeotU$^P6rPN0i%C*Jl&~UK!#}l?PJJkqB$pm)bjT{E$5u>A_TCR16r(F zZcQ)0GMe{uMytO~vbcY(p<>?m%nLn)3hmC6`8oD#Qj&&p52g{HD^&MUzh}4|(#xqs zGL2wivP)QvPns;c$*?)F_9MsuNpluG9^~)lyow04YDO+)m0cwJ8laP&w9RcEk>4C> zn)v;j^O3@cMAC{2SK2n0?cek3?^k{{*tu8c_fs1sRrZ}QXKnKZ=|ZC+2eW@IaNq$c z@-{4Qlzm)Id0U*%1hMhu&{yCG*;ih4^NX)*jp{zND;#MEVZVpzERV7V3I*hmV3-%gI{zD$d0 z+o9WHZ`yl@&2FXJwPtR;?z99PceSaR6cHBM2-7Oht9$gKHP%C+uib8eOQ1nrU1N3m zbto-CYHKk(VB1?b0uNvZo{j5aDJO_m8}NXYFIjYHU8B23ts-M5la@YUAAvyd;AKp|hfUj;@T|V9xamjq|s5$e9?5s+v775PPFyc0{|00 zWi)cxs@Td@%kdS>T$I*ko0$3IjVyoc$}nzp4%#jvxpx>Y;84B`)2%CY^e|xqA_6{4 z)=tN_ms&0j(qd;<%Qiy*OQyXE4;hF-4m+3Ca!I+K>dQ@^UU{|`VKzWr0w6HO{MTUk zPbFjY-qkg~s5OV4A={o*nuu)Va8Zz;P??+1!2#XcFib$Z&-Iqeua}34O%M1$^}90k zU2}Lq`@?1%X!hRS^H$EWlPlAc7~N&falunX6=xx?r}dQ~O9D0VXMK7ZtcfyQM0tJs z&zY~>%j3;i8j*@SeYltFhU%pbxt3i)FQ6+Ktx_$)0bmt)N8M0~(_SD?!P!y{TgFDQ zvVx-<=f`s{@;vRZPvQq*Ttsmqw#z^=yg&E z-yIVk$22Pkg^b5ZAuRfiuJt@LC8x0JMtPnIPSq@v1cAnyrM>fNvO-tC+E+~ymf*f! zqjz*~@TPfvs+LW>9Y4hbPJ?juo1NQ-(wSi~7pFyAIz%Y9kD!&WN_w< z(|HWc3m}+yPvhr~gQFK4sZ7u5wLgA_?1yfoM}Kf1_tU_UAC|nv$s&!Tyq&QkRw(JP zQ#Lv0w5X`Pbj50BR=J=kTK-vRjbI8O=>qq3OChc#*|IY`A6q~ZQ+A5b5UcrhAp$qX z+&=Gt(ltA*?G3uIh`kQz$p(Ad=CRbh3kpw=bwjLs-YL%B2;)<+{Y-bmu2Uvxo(9be zsigfeB`Kt;g<|-4a@BM_Y)gOAjr$19F|L+a{KNV*1iD;wBfIv#i^Ikh<6`0AWi7 z`^el!^TURzvc60g%3moiEA~~d_|Z{kj8^6!T z<3Zy-No=(*Jk|E0GI}$Ma>-+zlog&zHZ)oikR~kHiQ9<|m65M;HHYo+1yB5eOC`m5SA~r0W6Q)2C z!(H9@qA8YS_YtL%b?Ho=5FjY)8?FaPt03>|Mw%A9sz{^S%AU!gqL975eN57x9TX;hIP zlB%U@hoA~{s+<-j1Morh1@1Zn8Y&jgLE31443Gf1*|w=xnIzoUgOiUtFG-}-ZHg^9 z&86%FAJ$}^!>|;E+Ad?oTO*&+_K7LS(4@m8^_fnC5KS764blNoK)UU>tW}WouMJw) z?J>91<~Zd%Yj{n0Ur49BWQf&WPUFq!VAEjShcC#kN`?Jpqz(<^yy8-24mwngkgkYe zxi#04oL3~-l2KUI^xmA9OT4Ny;g_nEU)(+6smE8u?KsIwRL=+MoEN{RXRe3bWwfn{ z%mmR4)EL%LzYlg|oA@aiox|g|A0!}+p^NHjg-D>Li-Sc%gLV!xL+Kpr$R{d~ZvgJ!mc9>DJjAq<*+F8<9Y()3y z04rW)sU-yE>l1Uk+{6Pe$#V@u@Bo~0%n9(fVQ~o*54hKJNwdj61t3{#K0o`0HY^Ns zMRSy)-Lz7BmY+_N@G`UroxK?wVXc4jEuEHKhK#BF=;ZNBH*R(N9s_?4&%?+OWPYB1 z=`2Om`??s5s&_262P*Y-HEIAsZK%4lJE&d+)moXh*^FccjZS^@ghMQaGnLAI_p9JD zt<~BL>p^u69zQ!-;L-087JyOK{^}Kt-^41g8_Mh#YL2SuDI?@&BwH3l7qG348>-xE zn&c61BD3okhRG^#ib=<;pWWl|-_tw-E3zQJ(S&UfP>s1?MVA%X&k1j^d1w6MjvN@{ zb1ntTFFabqQQ}8!^@1Ut4|*I2M^bUXkqGpF)cDb})eE z%6PN9z3-*==i1e4@%n1KSfLLtB_h5DUP(Q@8NIL~GO#SYqiejFWg7`_Spx|I-~XebkO(F-oB_m8-~lR<$I=M5t6P3K@U3nkW8-m2Mc#S6X$f;hq2xXN z=J5UTc5lHoh+qpH;}^b4J~O0dS-y{Qb{ zEqrDujp))-FfW@co3mkU=+lOn8m;fw7OEFJ-w20{W=+So7rJLOSIBr*=aX} z>Q5!M$uWqZXHnDiG~SOk9|jhNjee;KtA4>)?n zsT>`ku}|P(Nw5TxP)Mqh?POZ|nO|CaGBat3zgwXDS-+d@@%72obUGtd-c#_e65(rw zu1cxmHkCDnR~j;~CETPZhmemF#}9%&*ac}u86qKhfhb;Wgt3-y!=!M|BwrovLfWS# z7xE1yUvvJhg&seJBzyhAHZ+fMM0FHG3f>9f96yoY9QXR@E%elSvERoH3>kOjvA9pi zT_ynzdw|P*BOZT#qfy_z@AND`s$0I^?epz!CAVL9n}7@i_&|a{homUcBup3~heK(? z+!8K?PO#Qby-i7KqmLMpnARQdl6w@b-#-S(_d9^}aU*S12TC*;dgMr$@K)F+T=hpJ zAtK_5k1VGq2gGNt6QhqU&8$k2FU&Vi>G_pThgfHbJg%XollYDNKJms{Zh zSi&9{Rg?O^p8~wL|Nd3{p3Qm651El?Bb!e8V$MLrNl6N@6KsjTMs$JnZ}NZojPrA$)PUaWDhfC@Lfvh+gxNv<{2w*jkgu% zyR4DgBg|IY(nda3V$bU)^XnQX%Rsdvw31Bmr`LXuYbFwP4;2B_m8IZspP69WHus^( zY@Pveo3@^}yFpj*kvZvZcJ3y$1IJXU_a@RRjXr76nK@}!Y*AqTc45vV!_E4m)%b@9 zcDS&%$H0e)upE=T0b-E8ttNw{ONn|1u)3x(jdBBd9R!N{wMbnrO9&Q z5|AkY0EDFwf(;=&;QOmG%4x_?Jb;5r1lLN~kADq5q39n^13lB#{XBOWNz$Wr9=?j{ zzVqjce(2*u{Xx$HwA8w=Xd+M99ajnYUZ9&)ymQQ5QV8wE7F_j|GIYKy`8PvWlouoq zkcH`0mPwD2VvC-qp8~foC&$ubv4N3j8n|(^WR%{#?(VRn`SaLmMW?C19=sW3pPs#m zV729KMc1XcKt(T&?F9hH(fmWmE6+HpXhU<$4-K_fD)Art?pbTh!kKiT*2|+x^jq?xH^M?E zVim_;k-Dny8DgXdHr;+!oo74I%y*^gXWY|xB4?jgsN)^%rKAZPf4=;|UZLt;EDh7% zY5C=hJhh(ePC5df@4R+6_t6c#wYpyt6enu2h4a(yU#DIQuL;hk9Jqs7ykws`UZO_z zfFh3~?3vzkG4<#w9XiuTMB8we>!^v3SRaaPJ<8C6XXQcaJ&!pRHE;?9Usw*t6xVEm ze%Rpw6`pv&x75l)sXf`Yy|kMZ0Ss5y)D_F(a3M~we81lheLB4!YT#@F=C1c!y?u9y z_Kh~B!_0U$3j^I32j0ZhromkMj!=U<0}~(wHB4;>t`RXW~{{}Z)bq}stXtvt6lM`5APG&+k(Bmsx0e90{H?#O^m=pHE(JKT3S-J~G|vYM}*0T$<9$=?uL2 zywDg}pd`ScN2Lcd^f3?KYO~stmQ(O)s-An4@caY4o%*cqBMgA?bhA{UF0Mg0tpU2M zQ`QTJ_8?=!13DVAXwc{&Rpf9=A&Y@y)3cbzKM%HPpgm35$55{;#89xIW_^?RW65kI z1*EuLON;S>*TuEozOGJg;`9LO%v0*G#Y;|ijm|0Z``3r)w3(|TdNc}T;B4e&{(YJ( zK2t03Xdg-Kj(R1=3Fs8c`Iambj_A-dm9}ML2fRF2TAIUkp4|fNitB}C#~C$d9<0rI z&DGA+5AQrJah2WK27RNiTIT<8A;%s{|G~d}9u3(uYi3upD*gw3GxOR#4S{ktxkRFjV~%g!Zi)X|=-%cm$2 zT)6&r7K-4hzy#8JbV%*H@N7OooxT!yqTtC!K8zo9UJG<0ZgnwWUVQF>u*L9~Bul<5 zUe>94!b()fr1%rF>%bu5?TraJQ_`NqTu0I20Y;5!dTILRvajsl3zx#nI0Tj}ZwEVcj>KgIplh$YKZuKOXRV zaTSQUnT7|%7#~}KIw78jMI;2no58$Go!3MVD z0ojAbyYHb#qL$E^X5b}j%_E@-Oqd81k#$sJ+PewOF#J!DE;%9bv^pyKn{DWF*()=r zTb{{-*7fAXq^Aq=%uX5mZy*){Gb6sxI%YG=$8EFXnw5#wX)O)y2U1xBEhX&`VM4O9 zuEPvc`tr5$(|3I2>H7;}q<%ZrY@O-Bi4L=oU!K%frSI&H@08VCB;7wM8T<=OT>WBF z*yt~pTC#FARd3%-SY=GuhRW=&#;UczZdP@8RN1L~A$+oy+oS%G(3Cnc?E-MPIqO!l z?f_c(S*8OM`Tn(n^aCY?cbYfqF|30#ReZG2| zji#vLA@*&vVUZKCno@MZiTT5C0bB8AeG7(XZ)MvRj#Ibs09UtL7U+VNnNEZXqIodt ztE=fez+oe9)R=*QP;iTU2r9awdE7fMU4N1nK7Km&xOl-~*tw8j=E;@WQ zD%f1>Yq_9s)yq#kV}}5^%nK^W3ykikZj`tc?j#_iXCHct?o+_lQAJzZ%Nx@ob3Z#* z-!Ry&5XHfraCXSvuKmuB;?2625$|npI_a1P^SnX>>)lg`ZK_;a!=$3;y@hgi@<#L~ zq43=iTw@(BDnPhxUC8+ax_8a?_X)1c%B|F2V~oxb7%VN>4UqR(5(n3Ux$T_L_`z8(f?v(819qTI#| zo{T&P`HdGJ-to=EUl?nBcZ%^>LJW^bhaAkk>L=7f$xTbOt=1plgwZ)ycYCzil%@|Z zZ@?|8Ay#&VUW)F$tA{$3&V%>I84>p8-h4rM?wg-9NgUEyji(HfWF@mN>_sSK^2oJX zjnA`eAbm5>c9kgW-Ndw*r&kjm>H%)iY$Z6)B0d+hdydergMQw*1cfTm&0VBSJ9>LT z#=NArY|{atdjgXu!9FvFbb{g<0_qTOxJ*S_cfZ{DGtlD!Tb}ok+t$U6BbZQLg8L+7 zx4)%UQ?D9&XI+pIh*b*$3{{pK4j}qZP-)mkz(KabWXJSQZ}CbH=tEN?U%-nQz!K}h~J1?%ZS^A-1`J6q+( zn$2y`$^@QIoN8Ncg5(CgGle>3uYdkT!?@K-W?(IfZn8x8Ul~^`k<}xuijY|v^=|0G z(;{!i3hvYih50!JjR@`@iXSY`qaD6YPeE-cMnV~$I%g4|X0K#8kyuynFi?-b#&M9x z6uGl|Bs{$Sq<>_%m#Lj~yj!~3T;mSvG`*o{Vl&Qq^MY$zgbkxI24VK|*)lkQ4>_uW4AMuy@`$x2=-nWfrinw)&&^|rEHV?iOQp}xF;$OE?AHv=BVOF0 zdkA2x$g92r{ZQU0AB}`O0=@U4&*M*WQgReFoG+?n&*v<~=FSKP@HL%Uk_{2cKbgx2 zS=7Q5Tq_U36~apYpG}Q4k03Dw!eJIi2Ve3)y5FRpPKrk=w#1%9gEtg$G_8kA~tp-)WBBO_a4k zSkbQ>&T|AkTN?uD;kpCe3w1w{IcKy}+#>ZmukbLhc6hZQ&C$-Z4$a!L26bR8lTd6A z*2Ib#0E-0PyMve0e;KFp0Hhy0xsDRn8CJ~8q*5K{! zaLrRM1K0TI9V#wVguDBP-8E^Xv#4xaDff3kpw<+%^{_eKH&!P_I6j)0Cuwea8xGhZ z8L4Y_ph&$ec09l)h!2%tR=RA_?~pqz%;V3NE2>`U`jUwI#42>WIR|(1rW9`6c&W{{ zc9_OGp%FS~>5JDG^tni?4Z^j$_v&D87OMJn0&3%VlABM z(7=b-L$)%3)?d`W5I@F-z?}n$t6HiCUS+ZkW|Z~yA*|zn@QO6|gZy$4J*J+0O8ISO z7!WWew{xND0Uv87nHkO-8P(Meklmo@3~`HEzSV37G(#@G=dh-k&sesf+&$Gw~^Xx9h$@f>c2t?vPUkqo%`^B)nW{bNSLen(}W|IZc_4-v_h37 z@*BWLT5p#vrk!QUP^9xOcHxw6nA&s>bxk(fUOM$yZw%gMq|K{%cO5Qxvywyk-tE)g zV0P~Iwax61#Pr6zDng}=!@6f_6H_=8p^G{=xk|A%*nXXNY%Fi$5fGVE%DT&JjSZ^9 zMI@K~l2NMP!r%<`j0l?*ONg%tX!ox{tKHz=gFF8Tv9m=Jf>+T{Q8l_hU!E_eh2<;j z{#9@C)Z$;Uwo_wJ|9=&p6ct#f`F@iv^rk`M0R&L#H#wnwgq_~@Y%c>~wy}kh6=)5p z^N^dq31)NR)I2aLx_0!6G@>-5#>Ewr!X<=j@s4lfpJ^r622Xm4Q*LBlcTJ**gm{)`9q{4XM96q_F6}CIe zX#dP20+W}Yg$KMNSkEqF5fsH)dLuTweE;|5b7s5LCmt?GTViCwwtK&Je&CW;LDJ{Y z$2+ae*WAjLtXJ5sLxJvmk*r#28^^!wWn!H?YNo??77Txxs*?$nM0AdCq?$Pg>-~iU zFTmU)z?m@r?1YC`c1E2E>NFq~HD55C&GZ5{IR!%ACopnv*qLNz5V!*5TI0Gtmvsv| z*!hZL`|Axnpm@r_?8^AuTph~j9^>?>TSX#GI|a4-8ror9LhuR(&+&j?IXHU6a#c@> zZ;4-^{*_^Occ+F&y|`9$+-F~mz%N2Ed0^fCXCFUb!>eV~QS%EtzzZ4!eX<$<_``mk z1`U-_nSzr+qSNnF=gmcjKb0O!(dYoZ%QG81Aa-&l^sWJPMtmOjy-^l<(sp_PJz>6Z z^aW|l9@0D3G0#Mlm#$S+w$`QT#qh;$?yMT=AH_=L1me8I-H^JlrH7Shy-ssw65=AA zQ_xXI6JyRRRM{9FP;g%Z_g8Wad?AtnS!%1RG%dMcEN9eaF6N~FK@;Y*MFa{z#PGc; zn4jCeRLoV!N&OY2pW=F$R&fAH8pT$0QAF=FD(Ugzcs)=PxG&E$CEODAhW%TjVl_Nu z&bLk~7||0~9wrzdI>Pr`|F`93#qa7puM2LLH4sO84@(2|3KiW`kHr_x$&yDedu)VF z76ta2=50p@kDAqmA-xnVP13LC*gIxgITOTkbjE6bbV9oZ^xp)7JfCAkplhUrf`Ehtw>xf|c$hBC$^-$EY~AOn~>WvFYij-pX7= z6HNf_V5_TD05#KzmF|+Rt-GxI_`NC2-t@iMOEEWAw%mH|z%>GuxM~+9*-KDnLRFFh zkYFw?4!hb|{McuD8@qfVHzq48jCL>=@R@aGt}WU5jfYmEzhp{*Xk8re935DMQ{qa* z1EOb+^KC+qDw4YzYj0!I}^ z?1vo9#6|pXS>otw51QfUB#9$W)|zCXz?E9Vm{@56{TRdV&Z(DQ;q|^-huss_!$CWw5GQyFbM%kXCRGN$1CJrECReV_t5j(!xdd~?~{j_p(`%O_1|?~ z@UAIeu_zR*O`@TTF>)TylLb0?WrpQb;ojLXPTSs{^$ND>$Cop&u2|erMuY^Vug;fS zG$05FRW5B!xrkgy6CT5A zJ6wcri_Q>!lAPlKi4k$Q_8IFwW34M26q0zgt+-`|y^WulK%}l@3Dli^)Wri(LJbP+ z4TOYMHzcgB8cn84($RfTB!cAura2I{MJa)0W!UwHcI#a{SRw=oKayr}aZcE4*a*=2 zyn_6n2vS`V5{!ACf)fsp02qN`8GR(S%|kf)%j;KkkK2$#I5z7vtod>E3I<`_qjU`q z=r@gp=;Hz7b6C(?bzfPCz(88fr$htsS#~A`x z7<1G9PrLPO@9~&pfWFuP*LYHZ{wN6tGcWjCP%r2{g`szhJ{y03{@1?6qe9jcrMHGL zD%PBH>qjtf=o>YlsAO86<83Dfib5;kNo>%Uk;PiF`34E%DU*x14#Mu#`?-1*HZ56k zYv?RS{|YO-G|pBInGi|t9QNoXvLk!_l!$$kfc{{0XDW?o4WG;Nuxax$YTLBJJK|by zGn@Br(afAwRAF8LlXB)`J8%4L00$@fg*gr)p^T_ z;#Hwz*}a>iOXd<{MZdUh8n`lVti|x@q^Pu*OGORW*nHuB#4rF{v~P# zifD(dL>QPa3+LjKHfkP5B^zw2PJ)YJ|2sKQ^WUj~u7LLcGc~~3l(j#`B&Cq1v8dM^ zU`!T_;?qKdkyYni?DrCM__W4eX6~+Sdb8L*IxvaJO^4UDF_mA;(}}bJ3H%Wiy6#GP z5i%~dL{T#-DTBbUgab8R=3B+wAdl!7x8>`eh=ysHw^6<7e- z0^iOoQ{dQ^oR)aw-J0Fu&J~C(S_`?OpMBrT8rR)f`F;4|ljju{I+EWaWu{&nE9`QuW+) z3k?O`RZxtTww@1xu2?{7Dy~fKy2Zhcwmd36G5Ao6li0zzCbNdCTB-9#BA0+}DHMhC zp(9ToN)}xi%A^ni>du_t^k~A?tTsf)jp;opVPR;ivA)z=L4D8?lwf5aV&m&fp1a~e ze<4^(j`yIvHncGxa;z>$WfZi};Q~71G&V+_Z(tLGbkc3FEUAM*@CB&Zh7xl+;R=Xl zeOoQx{CR|RI+pXnfJI9|muy-(#Henrc z;l~wyG6ea#Z5*E=cjH{-OX0Wj)y&YPwrE_myA$L5dE7cw!*9;b`9qx}M2IR1ryezO zd0Iz+)SCs4c)$@u8y?^fJ)zb4Q0MpkxB?SsehNek=}zDQ>mpFx5uxIdv#pe-Bj(zy zEoxmI<+NU1rI;CctjmFkdZ0S#_G6*gQ|?Xv|PO% z6?EX;oiGAsFr_M$$~fF5I}UNvM&6--xFrbg%a>hAO=1&IcOr&S`7&)$K4TB28Yy(y!CK-c_M0aBW`G>W#)CtB3Pm zgD1O{Ne4gH4Ot$!=sgq2PIILiRFU626L<+BhTPp-qC&6Q&_qit$~_Rt7NQJ0o3fo0 zWYe9FeB`fArT`pal+4S+cp%RTP&&;FHatVP3NVGX56AmvDFEd=!3_E|h5P;MbO0^| zhpxjp2a~BFfA=y!k#4G$Gt^BAw_CZQVGQ^0e8{AY=IJDGs~oF(n-?C zdZuqLJJI7Dqt2gMNl^TMr@^(2@9Eo;obLMdqNfxca4P=}>RUszN3H%zjeB_Ik4!%0 z71L`5(QMxT{^zUQMSY{!M+%O8iB;3h;HQW?jXI^5^C~me`^uxJjZ?WBtc2nMJr3Jb z4%>jKCmedRt1QaBRjmCapt3eDU)K6EY`(7$s1-%#@>)@DYT%4wcC99BZoZwJYl^3B zGDtdi*~)@#T*n=l#^tlym0AJ55)6_z1mkXx+6~&-&-u|WD5Xc#sAx3pshXJ!rkN?! ziof*-hFeH1KDv2bmIrcb$e<#*0d%7rb)-n^GH%^O8J_AEE81Mkf8sswW0}TNx zuRJVJzLG$bc38}#9W+DVwA1!h1N$No%so>oxWhxrBlmZ`3YYc`gbK4pwW;OzzXL49 zgL9Y6Xg7ipS&n)Su_QJTXXPTNz5>u=Dm?-Oj>1yy+M5*hCU|pC91;k6{d8+U5DT$@ z#_HAeSF#I4cmQ(-gbc0Kwn^hKvm7_wXyZsxB5KH=8{)t3$o1phm#`12K7`T%V+aM6 z9y!qAeMkZIm=We~c!u1=jD~Ta15YS2r7{yqWrS*P`wt`>n@pLiL-=$;&F(3UrmB~0Dc*5EKa#~xG z&ODdLo+Ohgji5_TnVeIixSvn}JZw85!e%fF;TKSw{;x`DTa8Zy!$P#`Z^7W>Y%my%LyUYmYcJlcUJR;gNbr8Z$; z%C)Roeyb*e%aprzK@&y{bXl=wD{%_+)2ADx4Bz0R4Ka_?^V}hLy3(w$OS@?(O*KpK zGvlkrY)Ur{Jmz=})r<)bm(^p`%tE5?(2cpo3y&wdp*XC=r;kJz^U=PxQl^mZ`SkO> z@p6+Lxulrxt|;DwGEswfECA8znw}JLprGU7bf!chXe)J^(M5<~+N-FCb$-tLkYC?r zv zl0*a~N>mY{$T>rSNKOI*l0kAPat6szpeB9aJCA4>oL}<6b)yrD@w7=FF1Nm` zHSG3JBv<$m&8b!EoGUhe@fTpfkNP$2q4%hI^DdZTpIULIPi3^E{c30x`^*);z&N~L zlJw~9YLy(6#34B<(e^6An+XUX_+f$HO9-xrq#!T%B7&K&TC9-ixx{>wB%4!Gh!O(0 zYx(kAfrCRF6KRsRtK8X1)!^p(G)7idE54`dBAMpuyEkLhZ_oo+p#0<@cAO9>zbJcmtT?gR&zGN`E1uGtwQNes5J8z#< z_&(z|$fx9x_tJ=wn@tx8CdgrV^HP(Gud5Z_D=dcy5(RxHO1BmB;^?qX2fM+bO!sqR9)~|QTDarRI#aaRFuu<<@{N=AIX}E-XyJ`RH=~Ev zmqg2_uSO-z`{zu@)s0?$skxVHP5W9M)$U2h%O>V%Q@9@{XFXdH3sr+vlySi1{xyYHH0=$zDV;6yAkxq*Z+y z0^B$AbyIGq0)cq~Q8aB4FXQK!KCZaw zt6PPGA`YAb8ut^_G${<@wW}@?mn>9n*4aizxtZBB30-}Y5Juy-&uGOL8kkRMxr;y5 z>$28*Qnz$9!4#{v+`MbG4EeIaYM}QlNu#1kVdmcbT1EcwanEjxiLO{$*4q*GgOc;fFk6ou05$$WJfO?eotf-BRkK0Yn6U1lmTmO6~=ivNdF zsTRjt6I@hbx9DHjsNsrz9`YA^A3E+N+V`e=0qT4JMG1LpwJQ@7nOorIWmA86JsGyp3^_ES@px5TLF@*--xwI4xG3GAdr%NlV zOzxEJ&5tpjcZzXK-7+R#jh(}5w>7(lNN!#*8Z0#5E6IID;rD&ExePp+b`@{)8zj*w zSed7StuXweif{9gI4fqm0H&t(Wg8X@6SL6cDyy_C7(x4@)WSIyac(6W(qxLvlC)yr zl}?jc*AFw3l4WxXa&>Ix^H1<4Qom?!ad9Jez|9mL)m2gWTpsb`p3~U8Ym~zoT0=7> z^v%N7Zj9m++@!4sn~5K0lV-bSMx|tDBOBL#!e-zq<$6~0YfHwW62?1eYp+s!Z_3Ty z0w5Qk*K!2N)TVK~Yi4&VI0ZWo-aX@(ifmFc?)+9Bne16MVpMQx1S zhcLpKb8oS%2aR-<4nl=CSu+UFu_sW8li(LgL9Esb^ddvdQ!gx0;|{lN`CYegkN~r5 zWe3L(n~{5$zd`sPPcFu1m{RK{i=vVOk{sd8{0jO$Dz6gVDyj*X-VV_$9i;&nq^KqL zblO}E)4bU=D65vpTqAI4nr{A&o=`W^qQlY)8{;=Zv3Js(1zT8{uzo6^Da(}$3JP?R z@mhNx`P?6UtEX(VU}Y`$Y}MW(35{qAwFwf_pQOuy=PR4=UGFF%^O471t5>{V;kVz# zvXk~~F=lLWYv`qXRgKxi7gOlzsy8EyXszo#bj7Su(kx$2SKvg8gQx$9nB`RFpvgb~ znVYFofvki1ijL7>(C+);tKPKE=JK?_MzMTj)A-^1Ec?DF*GE>e27YS0}H9LG#5MI1P^Z;Bu6)1%=5Z zNtZ&KiM*fp8zDAcg^!ZFIEMIXABb9(hytO}v{7%x@z5_w`^Bfs8{^u#(E}Dw5`~V8 z&xxV|EU)mw4rQ41u*jVDIdA_@VXH28a+J;j*=Vlc8#KP5JX^d_mhM>nx2E76dH&DY-stD@1Xb>4i94nJqai0mnogCAxbh7xa8+EGERZgnq8T8OCeOx`pFF69I zC{)LFBzJ}}FiCyK9vMn$N1L2`E!_M9J(9G9dsw<4pK=*;Eb1o3RyX_%IrVc1E|CIU z8#%v>A@qPssjZ*|PWn6^ST*0955TkR;>?hTze?#PT?Zj4#5ppoa2C1j?;w@YpMGDy zzskkL9~HRA#o838FhnapsD#*Mro@yO24smjHF{LgUBqlDUow{NFwNHvdYCTwaFzrv zs{tUNb|!8SSVrhR@3fWa&+GM^_O+CjeUO?whro^WIGqXZ9X8%eeRjO_T1W_qdy7u~ zkYw-Q!h{ipnwJaRg=-;tHjt=)@SqsE^j+AyXTL#^_(crOZxB+|0HaI02meT|t$h0SOS5F3 zkS%GkmpP`ahULoWrCfQndL%D*7*a$4?}I3%cHFD8)&jb@Z9!sQu<(VFBkD4^U=&)t z2bs8ZP`ru(rLf-P*&Ni^$Y=$3CxS|oi7c;V6~r_gPAG1L#q5)|pNFvj^Mf<#UY*^1 zH~=B)G^?rSzWn^Ju!vK0Y+YfS{YT}spW6vinxC{-KJ&G<8`EC*j$Hx>=WF?%chQfE z&zfhwA6MYUFDbL+dxD-v&CJYoKhFYH-`mTYPgO22L2D1ck+0qGi;#0goDZlsRJK|* zc)ySDjU!;ZMN7MM*RE&DF`bkJ!+oiyh_>jgPV_LVzEC%uRkDxERXeJpSN%*S*WlN8 zjnXOMwG7|&g5EOr`vHRZWYwAHj4q+Zb(QC9uePV`TjN^Zd*|(+ zsKlK;Hww^!C@86);Qnr~1ZRmkwQl%TS8Nt5nXK(hXiI<0$NRiASF;RFirrhI@L#wQ zc|(ks+sbW8Qnji>r%*fMn1oo&J%JCG)@(l^_IP9uPWGJ&>z7{Z#~qz-}{FSk$f5 z#Plh$ifD2Qe586<|M^LQ-iY@dPkq3XuCQ{ULOLfF%<0RvP`tXXH((bJ>aNc_`n)nNxQ zMycK<#TwWKP&EXVVxyG|ghrL>qWKbte#9+#EM02HxdxslHXW=tnC2|HvS|fs{glpO zakAmi3nq*p8=@~SXhih()rWV_y1YvSp~1JkXBRj|9U<4Z-Or|HBzYC|!1r!tdYGL^ z%E8!Mc@v|$NAT_`iWoE$Pm^8y=pOh5phoVbQMhu9b@Ze|cQShDDn~nug0rjNUl%41 z(1?7e5u)gG-os14Z2Exoy7w%(YxI~>c~Ywsv(@uc8Wi%ofb;1a!*kop?(**T59zVf zLZp4JribbQ9gw5{G#^2uZ((d z$1fTWWke#O$rgsam%T&&cHrGiRlNZ#*+zdb!%gX>W3Oy`(bn!B__!A`GTW6T?b3p~ ztELb-i6ceJW%9(j&b&I)IZ>GI;5>jcvd9mZC96+#Ph5$}qnhxYR z^xU@ybl0%}c)&s((!9$KIgVSXe>Uku#Qx*2WBsJ$oTHxL%5T5q8j~N3;x`Pgk$USwE&FjiI_y{nw{M8toksjL^sRd5k_rK{fD6 zi}E8`hcVS!=GWRtdX4-$B->|3zbcT);7U?oo~k@o#RimYLd8zmX5r}-J7J^G}EK8`49(jOu0AYkAlAZGi)sjL_$G-uo4 z76-3@$Z?8_>g29*xN-+t=3z8f86QsM)mj_L#~!t~8F(*N{Hj=x+o7F~yXN#$RK5kd z&f6#a=D$IviElr~_0m2{<-q|&~gVM&svdX$HQA9DpQ93F6I0Q-$zul&5bu|^3Ir?#&P07x#$h>T3D+G1DJX!w> zlnyc%d*>kklOxS4s;~5_^wGG}iyAAi{0K5)+v9d$ijl66Ey4xgS3s@IHxwIrJt~?) z#3AL211dZhw{JFE1AUW@(i$3@LLIqV}|{L2MH^0^Ec% zj2ib~dx0^48{9u?i5sqf&ZNzZ+Ox7RYarEsgv=(H7I5?E^3R=&So#vaZ z5>jw!+7mNAKRHP!O=;r84O6F)N+$G$6 zTD#;!N{g|$d~eS55L02XbQwv~F5nVBT4*>>sHdk$A*WZuC2QGRB4AfU6t>gDmLb}; zmWz`0D)3Z}Y&&%)NpO=mn-X#ptNvIWv0zM2pZ7)7KlvW3neZCFPRX^O(S1sK;yM|c zVe;3$h0EDe)8Jn?qGq$jcexmB2W_rMais`bm(A37Rb|Hno$|M z*iNNdvU8t3vuC;QZ6E*sgSro+u!u;PSKy^Uu>Iv*>7JI=A9W4^x$iu`iSOkI?w@_7PnZPN*MoAFBD8NuUx47Xh+Y>D|Nf; zVI1M=QRX2LYyJlD$o{SZ7f0k5i1mQ3%+0iXjEj78eRaTF9vgV0jPD3FNG<>sN(~$QbTb%j#b>S1Y9DPsJIt z@%dV(Wp(SWDykw$Fx5NHY7Y_(4Bra2>-R3)ukqoFQ0$u4GDAXHuHC7?i`A0&c%#Jm z0O4!d_%Is*{S?jha4OKJ-0ZO77VLl*^Wcg?7+3cZVR-!`*nS*^r~Q^e~C9AopPqV-IVM$es$@v?{?M zjHKB*bTN3wWOYWx-*KzCqJ+C>@0!IYgJ=U~3fo3$Ju>83?=Hz`dMe3H4z$M2CwhCe$UV(oC~BpHeNtj!DVvxqKY3? zd-ymUF4N+hrtTukkS>yi!kyq-m1(r*&Mxr>bBYg>x;BG71k^+oB_O65CzzzHhH z>7)-sPivaSD}Oz#89uJNU*lWMR$Dshxf=XN-1!jsXwLgL=qc)>CHuXY+L(|YjKihd zyzAOARsBJDL@ZU62XU$Kiid~a-S4s$j&|2@pG;J{HEytab}&qhjOe&=Ea-Om*Rhfs z{^Z*v7$yQMYj2pZ+TX(GaNV>+g`I3|Nt5X)tLt;dE;M=&$J42`=iFyWXH>}7N>&3F?rfMFojIcsiqqV>7agj(v=|2zO*7#n?BdmA#oyiFch{$kjmr5Z^y=`7_s5& zGi+_(JDXE{118HTl1T+k7E;P@cBMo&=P1?2%$F{-CKHwml^-l;S5;TlxKXft3%jPN zbeErRe(p+VVpH2(Jr6IhLB2#_`=0^DA3+7t+2jM9=>4b%aSIy1SgnOQ{k}dU_)I9$ zx|6u>xbNFUFepCOBX_(&`QZ)k1f!`fuB}k1miCN@ zbW55zX=y6Jx}<4BIM9){M325$w~berC8Y&5=rB~XtXEGGYO_55h+bUW)ym3h#5jaT zmCH5{bVC)igy)NRru`rH|Hm`9mYJ#?I_OTG)|Qnc@Uf@X1Ak8xfF?j2jpT=}p`E~S zdiwrv(Cg}xk&T;m;VR2KF>v#W#aA!U(s-`J*q3_B2A(tsRf z3)sVu8y$-nwQVrg-A8PG+`3rI$j_ZYe!U*e`zj5S&x-+{U3|qd4Yykf8$Kl7^i+hU zshp$s*zwEf<*?ceQp9FOuqoF}Nub8;$2b7BcQ5u& z(+vcl)A@)q0`n4WBH1*nyOa-+^6L-_hQy~N+G8n4l5mC+ulROWxMhGEZB+uJ`Z_oi zf#tR$*jt58%~^wwM#o`5gK!`iX3K;PA%dF^GRGm96WtMSYAB9jJnnGNO0AemI9zvM zqrO4&jz%i$*T`jXEXYw!fz?ph-JUR4UCnv#Of>gD!l-|RQv@vN99bq}|33;L$dv^S z-C?;vVkNDuzBZW>D2($%X-H@;>lx8P$)IOIt|5m1DVKu;7ts@^`(FbtTRkFT1Al{v zRAhlmBFSOP@_8`yHfYC1t-g*I^Tu5mi**IeFOlRQx20i^r5kzAnG{Km?YINf?91ob z0Zh%=Df~!X&@OOAZR-I{h6Q4Ve!>VOCvO4t+}CxGCS-(Lu5jy5N(Wrbic^<6CQ_9a zphV^2mqMRkBpRHTJgLAa(qNJbv>uf!JR^~>J%M+7 z6K^&F)wAR`)rPPdF4z;=-ynlUg5MyxG-K+vur~0O$WMly#=te<+Zoe?aYArp%GhG= z&8*O+rckc;{)phxxkyYNpqZExkke&Bbpi5H%GSlW*AiRD$O+uyU*#gt+k&EcwGO+- z9~CAX2Oq{u$!Z`iws8BtbN+Bq5LnLLc1C3e0W==DuC0C!`fm-nm3Std!bbP#JH>?D_zs179Ie~cXqg*=uK+&&J@MOj!(;q z302i6^&F69jEb=_R%#GjZ-QWCO>LIul`9(}DSm^@t`a(HjqaJ>NT>%9qyV|y^{T0* z^`HU=yA{jNfV?T0GEO$m=DY>)e(hyC*<~*61*u>?UDF->((Z0EfG@B1XW}5h3^H+2 z60gLMR{o(ejCn=A8EJ=^^mQV)7!UVvUh`eiE*$+xO z!-ee(9h0KY0_6AMm!=S0rU9!}ofnK~`-;tqfnQ3|X9HRfDo&-)5YP$cBA<$#F0rvucMBhsa{{|_g7uVN;!xs-9 zkY3)}YQ8YI0dk7+YCWddwluQ!x*_&gzybg;Xzg$rxPZE$&pF>iDXo7fe}<$Dak@(-b5(ryyN>JzOMIuMf^qDqZJ0<27Hko zMvLA(m^s{HnW^w9xX_Gl9d4I9`^+PMZri0=s794OKIMZ($RZ!VuMHxev#uq>jq6nJaiG*{)05DKgW+9*iil0GRELO3nCyA3a!0}C#x>U}w~nxt*#qls7- z5}_{(U1^>fG8{pUJLX|U(~CnxaSTkc;Yk^xIlf78foWQ&lGAcaQT?t zk?KiND9s%MRbvn(_uIzc0{vj2?C#Txv zcKQe46^i+{jh!6G5F43tr42s9R4SbPrbHbDkKcIv97L2*2T43N&XX=EU7STYFfAk* z;FGjZ)eflEVN8B3DznCHiM<%rm-{;Su{^xLyTQ4TOq58|E)~T1^s_J*oT_WyIE-EP zGM!zYq&@O=+B3}X^-48a5XJvuP_6-FBBM@X<7M8@0`uy!;g4$R009#AH1?S5S8n^| zAnEx15L}{^+mz~R0Ou>kb9y;JeJ}Vfz%t|)N1uBP6Z9K`u4-+n_UU%0P{tO8W@k9| zfOdt{TXauJ5^NLgTZKA<`%{e<-4bHn5lLSzay#LeuHa6L&ymk+#wG5vQhT%C1t1@J zD*$#Z&3B?5)ZhpZi&Ao z%4Pe>)=M5igF_qy#|R%8>t#AGb-KNr~} z`A~vyOsBhz%(*7`A8p3)wxOtoZ!;6QrDP?3NUhT^&VX)7&TZfd`$Zw)>_``@A`e z4QIBBv%_gGXU7CE0^w5hdafBYHNMZ~85HiZsI?GffkxpUhKcN)vbPGp5um2F%fDWLAkNbGZ1zA0fWRCyeB zlWn)0Bd&XBr2H3x3-xG%jQ=`!+08jG{Q0je&4`9 z2*F)izA=oXz+1;Xyvnq}if6lOp^vYJJD~)&r$*+?m596IZPs;j##OknTMo|Yc^v$K z>vPf)Ore+d+lD;lqmx5zcc+0=05lXXeQ2IHz?6D8g8=e(MG2vER(xr(&QxSiO3X08 z76~LhNHkNvsf`m`fTgL0rkQbq)p(^nV-WIw)jfI9zQPbfLx72A(mE}0u6;85Yp-PLdA@p50T4C%ME0AB82$84%DouafxU zsLaTI36N%(+0YO2^ndDta1HrL%zwGpj9;QQCJ}A3>3w(1lW&7qsI5;$FCpwG)K%-g zc=FnJcG?fG6}MlT;mZllH6cr?#FEIq>4S$RQ>1TDsQt%~hp4^z-$?@gffj>`<&iGf zAU|B2yA3Y>nSql%guZ$81^ASF40c>k1loCU>9_fKe7b4rg2?GV*)JKFJJFeLmU*+U z$0DA!B9;g23~3HjLa~g?my$dPor9t2UFL`du&~1S+85G(53MQ4{TY_DU1UM_uwM&e zK;VM_k~{~0^v~_lfSJ1P;QW}#0nk7a@f-9|`|W@4G&M;?43=bZFA@!SblGmZih&!07Ep+piu?_V&Kr>u1GeIsy6`GaScxRv*4C|5mJAcB|3=p1Mi+Mn zT~NoBp7~k2OEuz0&Xl(RM!s!SFDG}!3jei7VOm*7jo6nb36Dt7-&;P>f0qC#-wNyt zfuKJO?O*RzOR@`&%xknGiM+~Q7JB+taO1l`lCMuW$2}mI4MBaD3Y--q$Bjtcs7zfm zMY{x`CI`30Z+(o>sL@o4pAU67T74S_H54fz@)xdPdWq|_j_s|D-`5cYExPpB&zf{I`+PZ&&&!HL=K7ibOq_vGV4Rgg zJvzp+f}Plfv&WMf8|(p>5AGFSC6Pztmj^YV7(hbr(@&JiwkzQLY8Q&uzT$Ij8);XWaf*-wD@& zJWcqN#Jv((^tDUF5kYRI>1{f%s<6_9=|0FsFb|^+f4?8jkg!YKY4;JXAKmuUYSNRl zhBa*S42auC6L;9tNmMSy5k|)}2WhxldysRE$iM0G|9hu!k|LTUsxV$Z;Pah7Pj+LJ z8LO(`S?@RM6K2i3l0u4A^eaFh)~|R1cxiu=g-#Re1lBIY)$dsuZuFoi9IoGEX>|E$ ziSYFK;Ra61>t5h^B-{*RfjkR1xm12uY{N3VckEG8x~-*~b;J5bSoi+MqNJ&cwz zHo*YTgw^2%j7s9($`*5DC7LbJiE0d`rzKxK{vgSui8W~Gknd{2B^()6NRml`_ulb0 zh#_TqQsS|X0`15i@XC)S8vX4VZeYbP-(v-*8o6_Kh>^U+Ta$@dhF+!36ISpA&BMtz z(ooTv;)b#_hd~0tNvIK}r(lT%Dr?$yFs_``hFCyXt=Xf9jOmD=Gx8eVufSlW9(HSF>j>wBcCzqmPzM zjY$CvVG*%&FS4oEXOm9>5b__3#vcpEp9g?ya=ZlKP2c}Mqn=TgLd)k5f0(ixYYlXJ zxC@(B0ixH@P0r%tr^ta_XE4bEG{rcCQT}z*uOK`PBWXn}i1iW(f2rrd&t4aMNj=7x zXcKhk-o4lc3@Tcq`Jl=Zh!16${C%(n@_JORL-kaXe;PJA3y zi9bM@F&>5;ye9>scX=$g5x{C3MgU3pr8Y2*!$)|th!msSL=A9#BY}vw^$P^6c^^}@ z?BryGQK)1bbk4&K2d+yk3L~W%Z%__JhAdFqoF@qU>u28pV8s94p5& zgiG_q#jbg?UwwmPO^qL=<+%pxSTPvrFFyNtovl03cJ1i?^FiONuLTTvwN4y44b6X_ zFZe$_#$_z;CEF&B91|}b!fmaG(vBZ9SCD5)_a?jG%L~NK*ck|6n~Aj>tCGU9ZbC zye(VnpBpjVSx!GyZ?MfmKQ!}+OXedb&CU_n zv5zBnAGs9E>PKecMyAz=@mbC$+~e@ zHH`U#+^9Q9e~~HzE=;KLDwhP#z&eR%OUaaoy4Zf~LL*kJ{GS{H=+#~9%_fP_Wgi1YV>>IS8*4wuU&0?YmPws3Ke_L_ zrT}R}eI_Axq);UY-f1r530>(Mcz&imabhL&W|E~2HF_7KEC3}<&Bnb(&a~Gc>~04Jx(hx6zEuNY|PNKKm7)>T+3SOu#juv^yC zS?+}Ohv4op^5T5!VL1F;j8-@W9)L0uM#KYToO#G^5Z)M;9pLiH1MLRVt%0&%pDi3^ zrYy)5*2agl)(*_8Tfg?z~1v1`+sIiqFgJo@s|0L%9)AR^S8y-@A1hhP$)U z_)}r4KHhd?>MLiTJ-Lf!i(L4&b+bDXSFJNIb!igy#PjI}lpa{AIZ@WlKmwp3=JKz2 z$94y&5!cdoQQ~)=rrj4AQW;9?tsA2Cl&G3))Ld37l$2_HKYBvT!-FO(-WyWn_JI3o|94i~UYW?n8$_T-!bC+2pIjVy?_ss-#~kP7 zwu-qIcR#NvOG(}(T#XhfB3W!$XaCyg5-VcD9zs<4iUEHPdC(NYu?qdC++kuc>;v7m zzd_&sO~@O~gMZT_iofg7$Pb^V&41M+E++bl@`S{h!O{6FBkmcI&wPfi z-DjO0(>{G=7*J8gFd`bp{ zIHUB5pl##J%56)S^WQ?~f3tnGKN8!yrHSYT>WXS_W_W=U7(0vXqMru>UEb|}wfs;J z1YW4M?fwH5sv#`4-`f!{Kk?~XS;2=pPM-)$e*KYMdGH&QO!r(6w5&Xz&NVB4!Ihlq z?tL_!2$~$AE&6IRi!d7Pi5Gh z;fAK!k2e)qXB7w--Ht@NNMAY-KQqy|G)UdpByIrMR;z~Y&gsOK;Rmv_3zb)|5lXCScRBp9J_vL(BTP9mE96p`G5;<9h-IbeC!o zm%Gk2E>ywXUCGgMYhh&fzV}SmAqWnNC+nJnnHa`TF0J^LS*Nc`l$(@FYhL%zgCep_ zG$Xv<&rbRXMbF4Z?yogOJH$+lG1`lfNb)J23h@klS&as5dW4~OhM02EYm+uifYiRi z{4UclI6w`M0?lUVjVpXC7$9*?fw7-_#JV%4rHmVre}htQh*A{WJH(`A+XGp-Kc56- zfsSy#IKc61*@?tGm1gv(L|kPe(vC?FU^oJO7&=jE1UYm;fB_6IelY|y0CJ|#2A@VU z!G{31wvI$=L4Z@QAVzk+lE)6y}3G-{z zLq^hKRFo(0k4dmGh-DYK*k#2}(Z?Fdfb4G3wr*TMTJVu13PIxjDroRu#o{AQ#2NW_ zIeYy@Q$V}y#gM8Yo&0~&m2{G}|BudyGY0(&h`sh(rDnoghpy`M zVd3(Bdq(E316sVKGc!=~9??ripq>0>dYr`jOtp#Donbl<>W6qH#kM)m z$R2`?0zk@tg#7z>9Qj24c7P~jfSpP)0dnJu6Db4KohdE%y+fhQ!`Vthb9q8Vdjpva z&IZO!{92{yRZE`rong}{EQC%$kZ|t-3H-1|=Ib+TGq|_OdFlifYDj>N$jsezmr8?W zY(9~fjIGqV^L1Mxn7q2J-Mn|uL@hX&9&h?-?Qtso6psC^C--=xsEZxmtB}Pskxk>nRKBa8CD~$iZ;r@pf-nho67gM`E$bBZ)3UxHA zl+egtW$lMJ>M=SG7Fto)LhT5jD{ru4iyQvC?z8rY(1`8WjnXm41HytdB=ds#?c82m0uvh5U0i-;T z_<+@`yN}XDRQEk1PsQws zcDY|HX-@1i@_4Fw0DYTjFbR~%PQb@{os_#xO%*W=6{d5#oTJSgi{2!+73x~fwog^O z{X}QFbSK;mW;GOY=(^J>Ma@JtY?`DPL2qG!%rSr`$MbsR&MI`iSj+m7y*kRvKJ6oX zzi>ORi3;Q7>A)L8Ej=>T;iBe7zWrg~#`wq*&*V4a{ss-=tgk{P>F`a*HN(c_6E-_! zuF=rWz(dwk{ElXm=CB1RO!!Lp^P#SK>rl%=*3Y@-x~f5sSBqHXm#pKY3YNeIz(+8&;P8#zk;K91 zy$fa~`A?K?to<#d9dPEKP24qo6@yQ4b&+3ONfwo04Q?Z^ckXLd7sslEXsOeih;A`U22K307=Ps-mJ# znt!o`uOjd%FKfoH_=Ohi>>OCH6NR_I!h4oSVUdf%Mwjb8yq`h}GZzF;5~8AvZTOJy z=xuw;)FUn7y8j^0T>GQW>wi2reXo8%ppiFmeN6Z^_b{`X2E58g*PkrkDW88i&k|0} z)eqy57r`XcgLmGFsvqz_EXnHM77O!eDuo&ErP_;NC5I@f0-+XJP^!~v z^I)iDFa>*>lPWvWP06zJ;Ttm?KiBgq!@o_D+5EDhjcUbbH>*JjWXpwO9YcYGyB=l6!2{&(t7*kr# zRk)r`oX-3n<+L2jbLv+ac9ED^mXvOS{sXLb4;c@iJd(o8^q#>J4t zz;-KhXXoKL=n>)$RN+M>rZil#j z^qS5n#D!h>f@B1Nb?bl4PwM6-!Q{1xZy_T(hL~TQ{+i27))93+k+arJl)3z=&Wh|& zqnYkjDD55QFN4ToGG*b8RMzT)t|U7*H?~*{i+hPs@dqG9w#^%+T3PR@A2;y8kBOaS z=lfKD9z%tM@Az(ul<+lPm3cE}acOrq4scD!d9kpOi)HZMz{O-)Iw!J|%e&GoGefdN06Dne5 zYL~G)zY2F;2wYBOQ+m?l>c4bfd;TTw_f6>E=o&dkY4=v^Hs`+WbUh`oglEMi3Y?sSl_jaNfwl49O*DltHb4(o$BX-7 zmK}r%O*P9oxSEAKay-|1`B11;l zQY;TFh6mb(C8Vy`Ez~fOc53x)GGOOR&nEWA4p7U|xq)i5_n`NXU8uc8w8DAIoI}j1 zCi(!EnU8RKx>-IaA08tb*2Bc_t+g%Mx}*9V^af!WCTb-$4u3@vkMUT;d zG~jw+)lFrW@|a0w28n$JPj{CP}^~TtSUNne0)Ej<4@D)h7__ zp2VTqKQ|mL(Ou8XaJ4ZsB8EDjmdjrixuTwTgTX`5c<|O;mgIH&=)5*n3uvFdRNjT+rcDJGPVT_9^ zX|pS7s}wQDVrdpkx>;)GEcQB$to=s)tD=Gsp`~d1#mCGW#R?KyvERg~;#rArLzN!Z zzNasV4kt7|qMW(;bdhFoTie;=DvNh?M9QLvqsfF4@ zHby$~%Re~e52Nw^hL@7H5Gu*>>0V`jjqr6je;MKZtQPtphE%Z=LEj~th#C0^?&7RN z>&oiN`snUXFV@>E{n5(gc^a{iq&81_TCT>Dmlf&jl_<(S%~5dAxAU=j`lviok@_iF zk$4E9!*w*#VEkDW^9&8Ie#kdDn`s)y2x|{Hr+i<3n79tIOXJzLL^^>yNc@nJY@OWv zTlL}LmwMGb{*7C_-xk6vlfmX=T62)D#+sHU;?bsC@+GdHcXa(LlN3y(rTWzbW_31F zz2E^KI$uSDrfD_R!Xi9&R49H8iFP6{u$mlj7OJ zQB63h5Y6e#KFV`EqO4GiV@G`26~f!5wxKUwd@_wGM=oo(Hv0kF1#qG>JH5FvQ7b6- zNn-714O4Fp7mfybcrq@ZsA~6$(wBIB8oE zz2YQhuSkbVLZoQXa@hxv)32DHq#eIOL3GX~2gnt}?A*;bD)&B_+}Q_4dI1mdW@h7@ zS_TQeW!9C*NKv4{yJeROx@OKmhji$Qg$*^9b3zcV=wzj~N2Rx!;S61-Wir&iiRbWn z;_SxM?#7bG&`sCS_EA>{B{AVp!CQg`hGV@~6DQ+g#fSAk2k>vN(oSV%(Y&Xg2m2kI z7Fz&a;rPA{UuQMfM8-D&+L+{P`WV`Mija7p6+;$k%f~OF$@ip&?wLdzv zvxyyWyj95bwshls9pLoc*6*XWBJ>=feV>KWuOs6PMK^8(+k&E3;118wft`_r0Byi_ z<`6g`9baLd+*%G^YMYb-$a+1?|QzyYQhQcP%lWJ9mTZUyC-fpsy7Ur? z^n@Bn@hokFVo!97#ni&E}yiM8#rm8@M_bKAs@5f zA!%e5!Om|kF{@rAS`|~YrEpnrpvyg`9G#larTPLV*#QDs62FNd0brrE(g(l77z(te zi9#C$8&4oT6F71`eVv#(Y@Kzk_fpYg8f;Y%XQH`Ld-irPJ{O`R=sB@=y|H6htu#d_N4%iLYQ^J;p1GGjUnt+3@@# zF^>x)Vz2Yytp7wA6IO}`1H`hD92Bz#vs;1F`vf$xI+r?5dXjr{c?-zgUz>BgU~+`U z4h9rDBOZ7!xo>y5*B~ef5G(8zX9ne*Y2_8QXz{VNaav)~*}}Q<4gA-`sNdR;zY;Z7 zogS+wN)8#x?fJ2UbJboL*S<1rq4w(E!M^`|?4s!Ij^_6~@lm0lR7t;iD-R!@&OG5f zq(6jq@5i4nw(mzw>8Pw+MyTOEY9_r-f<|o_`^N^l7i@p!cDkh~@TA6ILv*!o*Y{G4 z7JJ3h)y@6raG8;G#d#8V73ZwzYb{(ZU3|>Nf{DKwI90m*5wRP{UK^P`wmzAaX!=T# zs;2xbBwjkZec;)%hy$IVMoi8)l%*W6R#dTy zI#X3CE!eU}X%5!8_*!0}hX+E}1d#ToK#~1XMlsUt51A1fX6cRvwFLmIf#BKkA2Mb8 zofOpMJBGhG-Us5Ak-}-g#j;4CZOQm~Eh)qyhM0Q~ihD^CN!t7V6L|%`8x8mt>)U(- z;Zk@2w_#2bn_VHVau@|R@smKKVk5iknYx)IEzk-8kh_@yphZq)Bi|n~ST5-S$(GRV zTWbPCJvbQVoi2TzO%!W8AlE@gaNCW6GQnN_zI3N$^4oNvRKjR2Nc?Jfb=~t76lsT>f zK@SOh=Mh)@R1|MJlJhG`cNbonF#LY60p4?X`iCsfb?Q(uaxAfb%S~2X-p|vT4a9)` z38*UMr%nLoIB{|L57|lX+w{yp9jHA=@Rlf)K5z)d(~Y8$giGTs13IAgeEYF}C)?2S z07m=6Ro#hM*y+?*{kaq0n?`uA6>2*X;477)n1HJKwf`KDK6b*CL~t!D`LR}U)V!9T z67CsCNLIdn?OQm9x6Y};DkVngdI~`H-D`Z#Pd8s+(@I#3dN=G#JDKl*&bC@UabkUR;f9GzwvI#E~2 zVLp6f(C#>_K$>ucSD|)S5tqP#4~@lpZ+=&`FTj-NT;VczlV0M;c;p^;ZNCb{0r1mE zx!d2N)0^Ns)vpZie{ZR{74WH%P|}?4I48yR`j$5Km7Q*^OrpuCzUq1P9A;~swrqj! zW8#-;%&n8K5t0~8v=U2JS6ykG=lQ@&>zYoGK97{teq2});VH2U3?hhPLu53{S129) zyI*k$?K3=@m!!XRW8VL!AIpx1-Uv)Ix5GTI&Dp}i{{6k$pvC^@N-~$OUyM`fX@(8s zb^l5*#ZWV9=vY*A7WUKRd-@+84B7U{G@^4?G1>h|ei5I`eril286)|u#R_=WT(mPL z#%tEL2FpRF`Qh>9c0V>D8u_E(`?$)lIB2`K(cDaEPO_d?_hzc}%i8-=v%y0Fbx3)f z5Z(soy>c4GGiotyB{N$+9%$J?_i(qDU*p1A54)7yNm-I2w)VZJsT@vlQGd+yN_7o` z=r3m2G?ls6ZO$NL${`VD6L$mDMTj*h3{{z#T>$k_d*KM)e#L5?s*+#l%6zwm7Zz%A z_)aFtEDstPY9jM7)ouI7UV#FcI8#m}&@m?S9DlV>zXKO@(=w{ty`fU&?IgiE2{F-AYY~-VtZr_O}T;SaIZe zn_^~f+VfzpjEzs(E&5$6JUeSP(P3WT7<$`Cyxs1cA=cmSq&QyCu-f;|hj{68fMq;# zI_5b!jfMZ##{f;6X>tHAP?ZcT6uF4ejFhuZG~R5eiOl^KE2}kD`qlK#LnB4+6U<0n zw?6I4@sr2Pti7NI)JP{D2!YyC4pToS?wg5(iEKDAot$luMGWz|#(jOI2zp zPleDzi7n4}zb49$(W(8|=WL4E@AhuAU;?bo5ltvtZ(Qb4xkbP{{__uEcNQ?IBz88VWI;JFGfW2-Sf9 zqfInDTWL7qp(@gwm9FbKRflcKmT~g_SLy)0MRyu$k$k&0HWpjdyW>RB<9jGhlS+u%GF3Pwf!gm{|Wv-m;-f3C9+?)?w}z)`YQl^%as~Wyd;DI;ObcN z&hw9s^`7jH>G5@Su0#3@MTn^JHF0{y;+C>Cot5A9-2L@WDesZ6mp z#BBAEHXS4!@Ba7;uwZYu2>L+L)IT=A<7_%pbNmELel7rTjhX{%KVyQ=uE-+TppD&Ee6q*z9zbi(Q>#dpYxcSy`@y z^YS+9nvJu}OwSKDlX5q&f<9|&pxT08{e_r9^7?R0Ji!EUh0q8e6$GI3S__i@lw~ui zdVMB5_6TtsriFpY1RQy5D+`Q$*M(g;ag#}iI{LJ#OIGzau^$bz_Y_YNyP)&jbmk4R zktY9s{V)qbI;FdTos<$#WGWw*McHwWU*$u|Bc2xmtILE`6GDwuTv|MGY63t?D$J;BG*W7Ndk}uNt z<`d{>mKD6PHy5s{cwm5Uw(gMukB7XQw zd&`j>N_LIa+@66e9ZR+^Q{*2!X!(5zr6TpQfPx8690~!s{kJ)zn&15&&C_Y;9Y(6= zWw!bbT?4ommdL1C3P7j5^mnVrAsYw7041^rw2;ymB8?F}6MAp`FMBH<}7%@0;* zuh{up67v~H_&6)_%HO)v;L;&PHz2CVgD~IHoE_!7-IuZum zR9m@&O^?2jR9|bc%RszcOQ_ap&rLB7(tpixxF)wUsR=!`7h+af+q~Q2jKc-z6FrU2 zwn^6o@OrrD69-IOtVFQ=2$15KsN9|jNpLcjZ*-Bq>ozTQDK4z;u;fQ3G&otL!s*fE z$lONvo2>AxU3@%*@K<4L(EE1=!tU8T#_QL?6B+ZA0sL4)MShC>u=OE>bGZ=DF? zc8g&!+=V<`nr?ZbY;j~xsMSGK>6W1K=dABfD=$K*rUnt0fd;XNNHbw#g*m1yH-CX& z#Qv7C>E`{PU&}+)3S3q%e2|cE4^EWT@3LXed#PPRDS=dV`*;+J{1z~>vf^N#VZ`*M z>ktxJma^v`4oI_SPnEH!UH$MI9X8V6KB_ z)%8sG-gV{YU*6xLWfA7ejPjeZ001x~X0bay%qTvJU;AKm`1v7trlRK$8AsbKU)gte z%I4C8&758;Jow?N-G}jn_}<^>_gYMw${I=OrwAv`ON{3iYr2n7L^AkG)1;M2 z{d%Q5#-D?WdMUEAbk1(_4Foa-PAstCI?DRe` z*cFgXW+KN~si${PpICvn@&SF|-`DO4+9X=r{Ct9jfFHccA-BwVMfn^E6&(zyb9yq5 z=RWy5I?exDF#a#DcYkYe;+&gMF9}iN zCka4PqbTetF~%>P^s&#xsbjT|=Q*0$Tkhexe|5+y5c4>k6lnCV0Me_-EXwuARJdNL|l# zpWPc7Uh<1H1C9Fo8LdTZHkXblQlEWzo^3~6$Doz(g}J~LlBX!;6C7^xBKl8wen0=E`rsv^`9ShiQ!9W7`E(EU<@9>*BMsg66vtn+ z6XRA!9!n2%u5of9rZ9ujOSU!pdhu{hzmMoL-<~tEabtajP1h>zBH{OzR#tHuc&9X%c*k@zTSMY!E}tylp-op>?JchxjX`6fud{q zBG$_9X9imH5Fz3Gu%ql0ey%Ywg@l)q3H;TEiia8K6w)kwrNXo7HP;@3 zM_d{sTlL6Wl*G7v9t=}v?d_SHPqjRKrb|wEG$j@*OiptDqcxgYXsuX-b zO>5jEI?dsgo~{sIXPeUc60FO2kj#0JEQRr*`&~mce38Y6!}*^W$6Z>9Gd22 zVmpu~9;@hdD#U2Z^9k4mtj&sP&-<`1IY4ZglaL8Wjx09maepIzbyOM>z^}ofcwHag z;Yxb zWodekX-_+k?ZsR34zaHf4OJLY9!zm3OYeT_y>2w!G+1IlH|zG*sYIT2X@8gJ^3=)1 z&Vo$+B>z$WAh>&H(e8uEJr!aGSIo~ZT+imd&lk}h(x>$~H`Ez@FN;UbTz>v(aN=Z= znar&x=7?Ng_RWW9B|Z(!cWk&GwGv#NN9K zh3l3W19jn}kM_e<>bEPR-LD5#P`|TG?&J9i4@Xrqq?G)ISWn4W6^M6-Q*P1CtG{+! zZp<87+vEIQ62=!+t2k5oDc;57&66tu<2B2uwXH)h5q-DSKqf%@#WE}}2s}d5zxNXP z*5K0{%bMN$mtf8#`*NBq@$?RX><*1-{y1^jXgl+`@y(ipoX?R!`)x;GEw+ufu+^B_ ziPhH@b#kj4$6vp|xDA383Yx5y6TGgl#={a6`ThyuTI+-paw^hF< zqko!|do>un)k@r2(S0~$y3I#iF$1ld9RGHp=`g!ELSS_Flt@~_s|&7RYlpcrnwuMk zeAcF!7&aFghL5s<{u~0RYkBpyk%^nNZnOZbX8wz&c&-z=nkg4l0+Uj5Xg$VhCygy z!Xm$IjoJCtr|j-~da_l{f4SAqosKeXav?(+&H5-mnnmF4;keX$jJBvPN99p~8((pV zlh$M0c3@j-F43)T__cAKOQAC(g`cb*rX?c&kXeAJNJAX_sL3OF$<7qU(}d673yX?E z3CwK|gI#(Ct`QvOcDU`#=dg0z6<#&hKnY^4PKTtt*^|#7m?YKW>^M|U5jrO&1k&TMdXmsipCB6Qe zBL26>qQ|E}f{IkQ;u7HIWcG^)wkP|Y)GU+6Y6;Ku$^TDdfPXed$q}d}*e*iZ0w>{2 zErMH!+LmYxYI!kE40>tv)Qrm1ZzVuMB?xQw($k%pHQmXi=)N@hniKIcxZCd2?MfF$ zWVQI7p4=*%(1IKcMQXrxoB)#+6g6)f2*M#8vB*v^6E&vCq;@2(Ial#+?L?~i{qZ<4 zs?q1L6j?3HAgR*DI6$!>K+}n+u<1nJgh@;amNYpoZC@>;4lB)7bM&`sF=%gmB2sp2 zY5rrCD&~VvzBR>U1it4fxJoXI>BjEQ>lhFn03AIgT)>3C7y;-MI-thnH1ht4<8g-S z?DJ7Uq0DxQi04zc_@B3PbsJw=<-HVh(;*ZK=;fb0*1Q(i%afbU?dQ4t&Q%9yks zj_TVpuucEm#_x)Tjwims>r%a!ENRn&9+1!TR;aDjNR;>T+|dsvZ~-%#LSV;D6>U%Y zfg5w7;}7B>e{9#}s4sJj{*)`OXn{;Mz)#Q6i(uV(k6+x)rHQ(fN8q$W-{0L4>xRld6x`!(IIIf&Dkfcz zUV_K8&|@e<0q%oN6!r{zIkm^7=SAwwkM%Rx7N)i7waRx-W|-n(lZze0v#53yC78)4 zyAyGf#A&cKqmGP0im^Iu%QLKtmwN#1B6Q>Ve@L<~-SmEUZN}xo@g3=cb$tIZXsD_9 z#FbbL29d_6{7UmfJo);n*%_(*&HXI|K8;@u-2S|FT~&DLQE%TldVJ=k;Apd?1-NN^ z9A^l0(hMNxz*kqA065L!ujNs$h<-s}ua;0u%N5ug%n;=qI6~am@@0LrLR}4o$%c*i z8X%^QC#37gqjoIDAxC+t7buy+ zPaWPMr&p%Q(C~>5PE|RV2vmDo#f#?Jg2|0)t_OT7hTR*3ITsT6Dr-&VVWJbIN4th} z8n+~9P4}GlVc2eI(xE;h_6Fz@;SG+QSdDIWLo5Ew!v<`1zWqwWg=+SQ4BU3qRlM}! z#$%*3&J+(9dPmT~Qfk$W?juvWrciIoHN`1@X-sLcozAov1&MxWZai~p#&*lQpST0) zZxB!d<=voBd_RkO_6IW)m{4GL?QKP-ixje~)AhdAO7{KSL3Z7$1}`X|z5gdse)`F1 zQ}CLlpFr)7VXhsVm7u;nuVyf{&ws?~;Jf>6l%FF&>DcO0sMgmUpSC_Z?>&c~Eet?0 zBV$|q%y657_)xj0#fkuUZ?AnyJ4{qel%Jo4w+D1E_-mD>spt`fcz+k(9|wPl^^UPZ z{S^N#w#Z;KYg{$SxJ`Y;q5Y}7u6sh7owdGX*Z5?0#CQeKk>Rfi)NEcxyx%Q*yBg%b z%wNmPZ)UcO>wmPJ6qi??71>*$6Y3*AI2hn>HhEOj*`8;XB4d9FbwvXOh#n|PWVhkY z(f00>Ch(N`{klwULvyb67niwiHlZ`49H#St2?}^F)N)VpMz$}fkDk<`^4wQ&(fV|r z@L`+Ol0}_#>w1&u%3{P34ZY7EUJJ9H;+wPS{p?Y79b)KhrpexJA_W_99SJ;#!b9fy zq0|#^g&0Y+Jci=#>%20RlornE=R4lg^1Vn3zQUxTYUk3UB!@wH$Wr=k``5W{!r^~3`_ z!sQE#qu8quPG4_Eq7ggCc?5mjnro2*OYm>NHVPT?7J1C~+2V@+eABmr?hAK8Qp58g z)ukp^yeWD2)( z*L+=

#fh?6&~=_VF!Mivo|nLb6HA`f4k-5yh)_siRb3!<}iE~r1? zy`M&e_a>dBkHBQVl6t{F1|FiX)iNQbQ)GIz40%(aW2v0)?kwVCP}BMK!~F|^Lmvn) za5qRiqs~H3;{B$6v#Rywm*}raUyW-%^Sw>={#4zJ_!VNSNlAE$d$PPpfz$6ej|5tT&s_We3K~E z+eW@lw(1s89NTdrX0SO!O;zxkL{*HD{@9+hy)umsGgGNWKQ25P@@ANv@W9l;04o_? z{T#-dJFlGk%<=BLx2GE?^_^adHEqqeYal7K7_chM8(B>qUNu%?FExaRTVgVXqr{?r zzv)bA(N78az=4CUdQwTzhcBUK#uO*zSdl)?D~#cLO;5gUvoxiyY8$=yX`(1rZ_V7x z8u&(u23uS0!GNeu&S2~;$Z@8uz;VoWRQNbi^K#FMJh|UK0Idfb2}&(_4tf@Sx%AP( zwp-}cr?YJTe7Hb~#}C7|Mp5>sa(&?IMl*o`DuSDv3&?7EDi-Wed-_J06})piEG6fK zlpuerHsoUlr$@TsCh$r=qFo4b0Rr_h4J8!k)jnlts!mmVQB!m^!Jw9FPc|h^nIaW) z3T!zj$E40nVNQ0M*QgX9yj~Phl?+(a^Z7h%!E%IF(9K_TKe1Sb5|RQaNlkZvJ(Ghe zMS6Lh-*M|INq3k4FzboVS@5Y4(7AvE%}ExvCL1$*;*5L0B5=<#SnnrHykJX0TP7${ zOroMUw6cx$gO@l_{XOXtq#eb1{1$>qScsg6lSOlR+zH^l-2O$?z0RT*dA2=@lHEbs z#?Lq`3++q*nJd4^vEkT;oFjzJ~moa?<1GYM#_7;6?K7pQRc_AB<(#=R>ZJA8zOjQnFpC}PDQV>33BH`b@% z{bvyyrui=4cf@iq$0AOs^_<{0HwIh`9TGhzCol8MZQW9lc+OqMc|V@ zFZ%2QDViN?X9AAnw7p?AmeHsV6H7==p5%aCN7!oe)(nuGE=q7+`1p}6l?*>&?2?N_ zkbrg5rUJelIPBMz8N7nLrRG{z8Y5X-zIpC(3b72GFwhk2Y`=R+0*tu?tLrkw0h^G^ z95@9`{Bz9iUg3(}{phYqH|XzTi+mGPa4y|z_V+iJE4x`Krr5M7>PJk3cJTP;J_;va zaRH!60&`(aeoock+Z{}kh{D5nhRkdinXW*c0;}iv!a#9<6@v}2<7Cs|U3U}(K=^*P zg&+U^H1d2=z#Vn<3Yh6PFbqFr{(2+vKdKOJKzg7D+W#VJX@ZM%VL96XjHIPe?t>^P zZlU^@68_Xej?L}rSBk&Jo7$jewU>h~-w|nX89tydEAQ@%Kvr20z`p)xtUlUvd+<&;xVtGAsca zL*v4RJ6Jrsc8^A8re`|G)LrjVvORA~>^xcm^=~Ex+|1c2>wC#?$>3CCf($TPkMXw{ z{dj z@2{>4zfVg+U544^wQblzZ&$B3;=4SJS!L5~z-bmyJSImFFxl>uj8f{>5WGZfr+cHI zhi0#Pto>;9uv=QbNA*?Bj9a6A=4YnUT^v!}cerCe<}|^l6vl_98)B_s)?!9`&Y6o!N6Ue93)S z^HpZTAgm2<9XQz{hGWEj>mF)HD^y}ao11e^E7&FR8s2tJW;}*yhXwX;0^E$ibAc8nZ%|YwE*a|C;=x z1-L{eqnnj@Lm_stTe^)rzRXR&Fx&7;e82VJ&=npHxDhT7ATP3uak5<%a}Jq|HA(F& zrl$9d8Ri3|gHDDPMugK-?rp4-UDebFLm_O!_Td?lhkYbQRtogF3~)V~wI|>c~)huVa94&3Ri4wn3RrJNk}ubRS4Y z98)y~vOD8Bm{!*e3W-mO=@mK<2Q*2fmNHrRm`(A~KT2Eld9ctI;jd~&&~;JLSpj;} zh6dyW<=OKoLzBhM_+uF%VweE@=por#_*FRxAkn1r7evj25k}sGhahU;p5+)Ook7s1 zbl!lUkR(8Ugm=J?C@TMuwP@l-{`+uBMUf0>=2`#){_U|p1iuO_DA0c&dH{|?|Ia6} z`EABrjv35uGk2yh5rKSudF6uB75E*)Gg z2uEIH-n^lyf)ymDgd(+Q!D*e(?H!>)ib)U66YNf6I$UAwgoghiWAx;64kO8ZAFl>f zXk9sW2R?{y-XeRyw9;{r3JY7UqL&f;KLXNRDbGE*%iRg!&pk|}y05dRX9{%Jq=t6< z#@5LXZP5EW)7T^<+?SG>IUk)K7E-Y9G9^2wLU_l_4vTu!Txp5jJ$oi|uD*4?a_vsG z-J!A2S)2uibEUQo;3lULogWA?6V-hL#;^8%67_%x_>wn^`>-taKv&I&C-ZH0-p5_t zIO2W#J=b850>3B`*ix4zpxWZnTpkZJ3!aL1S9l%hXh7Zm7ACh)d=-qM_MnDlG? zyA7Vl=cA8d=0LH5C002CVwV9is=&zL!aH0E4;wLn*Iup5OqZ+sy^3g2o&k#=Nxe@+ zltgDcTNnZdpsZEH^nk~o4S?z2k`r30g9#T+Zy9MuH9fH_H0B$$#dbMZRWWE)-0r@5 ziFfFc=(*>K-eTjL+zr%Joa=ait-rvm@5`7YkVhu^=P_ZcjG|KpzJovuh%O23WaM=% zN8TN8;lL&T05pMGTpzOSM$88)z)Zo(ZFkk&9J+u#d?@%44uqHMAXYDrdIspAr%q~; z%ss^nCOJQ%66-Gqg>$lPkY}`@3ZYj0@T=QBTG?_-7AU`dtmHc}Bui=0Hj7hQp|XvL zsd4T^k>-i-*q&-y_>Jbz?keBGM#N8Y)ad<4cr8yfSlFks)f-BEG~Fal6YeNBoA!CV z9+hBY$YOWh#YN#V`12;z)WRN#@8B6vzj_Mbn=d|fO&u@*yPuh2cog&tZioj5 z+}gKfoP&X7zSkl`P#7afTZlI|Pk!aPr*c5+bvN)iMH!7#^@NY+iFFe;t{hN7n8G^_ z79FO%z2G)@rA+~&#eq4i>-n}|9Y;=SbiUM2Vo;#-Ol|wphLd104c_ZRFwWwb{)n+% zjrCOnj@RQmaz;>25qXX6UJqB6`qa?kgZXzf6!LY*vR)~Fn&|ezSANIxB}lVI>gQ{TyO$n#=k`B(qx5_u9XnI=hwSCI4e5qL?pj2CLP?$1LpOv(_{L&~ zP`FHdS3HM-kGC3LYFzxjXT$(r>+RFk^ox&Mw`1rOt^Rg{m#Fv5AFR%=`mz*&kWdxn zy%Vql%fIyggQ7pr4$TTs%ojL5qaItFKkex*U)uA9j33MIv>kJh?{*L4+bz4^T>N~p z>1DnT%}RcBsmH7F7EZ(M{?}16wuf0`3AcWDMzaOwhWURI->{MsRbzZg&qds`gANKE zK5AQg)Tv{Cp1lHlUAF(RhK!<2^Kk&pWU`oD_FU0`G`=ZQI1|Eh&Umstrl-!jd{SSq zd2+5C?b$5iD_&r(Deykt=3_VbYvRB)@aJ8#HvB_e*r;=m87*e5x~zOTKzm(T$Xzmw zdM&Ji@_@N@Ge|^DNHdoobiF%I!iV=2&J*Q7tEoHQo~e;xqtc&s@E9juDB0$T&2cyC zx42*A@u@amM8lHSH{`>Wi=hL%}Ek4|J0X;0K#-pn^}NzZ<0^vYB^*~s-eM}&&uoufI#u@bS_)22QR!)-N2 zaTzvi)D=S{A8*?CL5mF$u9=?){cvTJ*O>K+@U~j6T~c6=QNQ zy;l@+=X{g$&i8V=-n4O@l_Y%G;dyVcqOxDrZc&J1ITweC_dBO_7yh&_Eh?DWrCE z=gDFfBp>=}UQ5!C%EQ#ToSP!g7M?*CAKcijZ|i>C3l6|*!aSRB8`!&L zIpy(cV@E!NVHt0-ou`+zXUVCk*d#UPuUsKJaA#vMRVLd|0S7wi@)7iKWewav*E-EH zN8g7Q>387+hr#198|=1Dh!j#t)$1FG`1-7dKLY7i)J08U#aaBos=P{#<uL%k94?L#@cPH=lz-*w*9q~{kN$Q}*q~ZqBIdR{AoUt)wnmU{ zbS%qCjFwjM?bB^>+^Ma**%}qKcke|)-Ni?uZ9AImDcy))W2U2EVF!sB=l6n5zDu*v zpveWA>d@oc6)d5vGC|J^xMaUrzj`9*wH!fS4RCz;=kmTokjAs?98&|1gZ($2kT%}{&nd$u1%Yx3&~{%x-tg=c~8E^*JWT`2DrD z%8kNajr0Wf739tu)(;94uIIno31r>UKUt8+vid|TPu@k<9_)=T%-&)Ndrh)av{~r5 zQ@r##ig?Gtbd(R)n8GQw8X*5r`YqMF<(iBf3Xl(*g;&7i;SKc*7z3Om*5Skmw~5tx z^)rwj-aarI_|VSC&q$q}@G>CC*0CwM_Omq4k3Q+yX&vSb28gxhuizfgEr+26FV&nYprj?XCpM5E|)R4><^}6$Nd6$6>BDc?3z$f zQN0ERH9&hNjD}E9CMS+}2^zrwzB>w44uJNs0G<()4KjTWoOe{nv>#L0_1syyaoPVZ z;u-`Jq=?t?-)q``(<~dg|SpSlFj__4n?lVXu!-yAPwN6{OIQ& zvh9%v3rde|CCJH>QT#&U9~Ho}iw zZNwF?JP1oFP{>(GkqIp2`BfzxEiST|q*i3dwXqvUN;oe+Xv+K8B zfmVbDUf^ho&e-Hpr843(C)k#uq#c^7Y?tQBuU0eFfecQ~EW`-fCa+afma3jhmzIc! zBu?^*%^F&$`Aai8JdfsXqOD9(x#pYx-O4e9ydFx!XN!IbI6)??gpT!*?+S_?#cE(a zbIruCcT%yjr8Xd_s;?;>W2a(1rL94@-^p2`N%HW7jdCPH0Js4mH=lg#I|;*x&9K;! zv~)cAll#l>ct#6daK6hOrcnR6DBMu4qU5ecSUbXc67l6jSU9%Ni4Y@o42 z_v$cY^t+E13G=BfVf78;6(yi0(6RG1!;59?XWLQ{lIW3-H(ZS0SUbOcKT{p^%ECQ0f1l?^ zjf}BWDtE`_Elmmt@~lT=LezyQo&PYMuyAzyenoQLNks*KUPQwwcUm6$D5(oBFHG9b zJH2&UmbL!g5WgN}30crdiVLyi5TOPE3-*?focS_-9%2$D3%~8-wff8cyHcRihXNK7HvPQCq z$^m7#p!V$=H#&u1dI>2amC{?v$!4Pv*B!O{ips)$AR{$9J=bOfk=my>ls7aG1?S^C zJ02=|W&eAertTj&jjQ!P8Y{mjMrd|t0c8FE>bCsr`B~aYIu3=ww?eA#hgzYX!({>+ zYWx&yib0WaN%ThzoGo8#Mx5swv*QP>?*2^H=e+JsCwI6)v3m`pda~UvY=^pXgkmzr zo!eI9>o_rkNplq@M$jL%4y@FbgK5(Ar?o#y>qH%Ap;`o0;uiuV*1bCw9wGN63+N+R z^M%g1O$>R5!$@u8p-Ay%Pr6VSCfa&MHyu(d=o-U(c6^(k-&tZ#X~oL2#O*kPDeI}r zj}3E7i*#K%J&V@W^hDPuh)5EZ!?{e$Secr^xelXv*ww8sy_E&Z9s>4-lXVHE; z&ZOSDkOrw4Ju#?oo$iUybmd7lP8dzi*X?a~;b+$9E`c>az9xeO_(RO zPvS3adKo$k>e*ya-cDGfbGFvrQ2>2*9j5>3!+2tgaqiH(J?~(|5lrJQn2-S9NT1yzOtW2S$-v>V|AOF`*S^r$;`CqSJ4xXlL zK{8ad=2{lujfb>4kPy3By+H84l~cyc0t^WV1f|^qQ0x1aWrC=L%4g`9(t(z7lqj}I zeZmN_VjUjZq+jU6X&U}&)EU4VDYX_}jRdUCT}KSuGD?Os!F2O$5UaRg?U+qEb@^!D ze2GLggmB8G3ytpNI}T~z>Umd++uYi{l(b5`mP9_j5I|qSxwqlf`Hs zOZZ_>)Ndy;`Mzwy$JnHLylS?vWWU7NgYjm$;XP@#;5ls67C*!m&T7{pST~i06)b6} zp5fQO6&+`z%cP|w{JyQHP`rCYUzsr?cTXqdqo)SZY<09#FR$KQU{I40H>-y|`92d@ zU0`ZI6a26+bC=NGO7%Jp3^m_3UZ5pr$vG^k)8K_vuo9&<`30{(^a#%~_{xeV2Ft%E zd3KNJXfm6Lc=|SP6!_cMuCI?zwqQ@H3w-?4A3ACrILfGH2TqO-48*%AQN{N5TgVal zRE1&#`J=m%8&+`9x~AGgcOB{52NWWn45uV&ymAlS>^m+qi-MbVy1O4XHhc4J)0Y9o zo!F@^XIhxbxMSJzyoJ_;pn(3{`-Wab1QVwdg`0?<2fO_^icQW`G8$y&Olyyt)iz3# zXg);2%pnKEkon=k_?IT7w>QzQw2itPEpYES&6;9g6_v%T!euD)R?D?1&he^Zd?}bn z{>F!!_s$&Hyv}_t-sQ3lur2eIRTC8h{2(&o-87A?=m&RM^_-FD2}0k;RpR8);`-@z z)_g$KktJ|jQnUXL*;6Br)sH|@(*Eyq5)YNp`u$J~5cPj$DIUUzWE9dx=4UWz>u;8E zuA>t7f2%cpi}0#n1QMKs7h;g}Bh}wI`0Am*CX$Kf0P{2TO^ZV1pPVr-%d0Y`zHpr9 z==dOI5$C#yf(p6sOx1;7b{_4tlFV>o3c$VX%2)6)t0TYMwkKU<)SuTPezi$+}!@1MM z5-Y!o6n%R}pYT$b^1)@b@09V{Io;G`uSRGHYE!6zp2fmppiyHWA55tQ!(3@9+kSo; zS%wS_Q5Sp4aPb{zK`bsyw=$-{q79wvk@{S3bi#OT&N#>=5L;BbY%J;JcnIs^AwGNz zx$`(XbtZ{xrb0^S0_@RLlO|dg&g3(;!}+p0A}=9lwo=78yX5mBQ#tuSM%ab7WMp?- zRFK+1LigqC$P-=U&nHdH7|Nfw4lIVQ0#DhWg^QTz%?(@`1S0|^JuK3$7u!7G)QbY3 zzYwS<3D`p77=`{}(0=b6ewq)I`qu+?@JR}Kl?0XLS?KLeMm@>zJ+3ysmy!=ViCnSc z#X>8x<51w7f5;X9QQt*iO|29FCo}7S_@MziPwv0tMx!jT)JnNxRcDsKp-JJ*m%mR* za+uuD<`x1m0Q7Hf&{}tmDw6MBf0YZHwDn##{kDvCF0nMEHyXyoV-9@biIIFu3a6Oj&`F;F-*e5C&eV}UQ5tKs*FTFvMKjEa z-+&Ek{4GV-6)@*FDDD5+eej%obltME3p?bB%%uPcUeJPrK5PHOxTgfTpjGeMlk$(i z-{-~VoOZ_E8&P3)H7c`Aed5YpnUBgb%Hd_z>Q9xzh6bq;zcaU<>my*Vag7@=Mvl7} zyb71(dsuzYQc>pdnoWH*f2C0AXI=H~bdyx$Mh}Vhk@N0*Oty{EB8$81SPuMhPsjc) zHBY}oq@Xs#rxd@|e6DiljXe1W#8fbsJ%Sd@p%PGXFQAAuFVymWdtNHuy z^=6-EHwOb%+S1k4BFa(Qq5LL==F+B;s$MVGNe-FGuAe6Rx8?X}oU!{s+Z=E&IBoAKGd&74e?CQn*C#WKI ze816lZD@~ma}!$Et*VwP%R$eqKK~*y`!jYoPVu2e#r?HaxQxE(;@$_Jyti&AGJB=A zf}G(B{snqlF5HYNH#r9b2Zzzx$f)W($bmqA{7X19DA#n%GL`-Q%5!t$$dJ>^oC4p4 zZ$Vh&ToJjx8$f`uXA+lJec-vv;Y>p;+B@l9c;X^BkvWPn>^11FQxwUhw20H7xqV?S zp3WhhWK|ExfCT{zI3yn6?y{Vq1e&<|PGUjRrAazGW zD$2a+wSV=9PvS(oS)iTl)Sd$O(YtzKhIhC+EqqpEqn^jbkaHIEYL{HNwD~EVBO4Aq|;F^RMB5*7rETv%d%^7S*Z`-Of3F>pig-JIGO?ne@Mm&@h2w5 zecVzUlFt1<^TjJROBeOe+SIdWO>>uq%=5(r2kQuwv@J|3qxW~2S!re%d(tHdG5Q+` zK))+GeHPk?-wwxkE#en2Xq)kH!OVxJU0**%L~Kl5Fv02I#g3br@QXy1E#HEq6Fr=B zd|E5V^*+eaWdQwM;lsl8Lw}`K=j(|lYA5;S4M%pml&V&9g9E0|sMl(9IgI`Ex2Fgq zs1E2k4~Y_BodjwD{#yB8jsVk*y)FzrBtdYL07j*=1t0D>VC;8Rm8&^IP9bqt@G#Vo zCV>%PRE?cU_u~KcKqwOu@K^v5E{C5ZbVz}q4=u)iFM+QR*bMLBBZvbf67VGyfo>L# zz5TBTIv;ewhk;Cbi61h4jyS{+LJwv~;{}@ej<-q7&}Ag?7NAD}-cFtcq{i9*?$BK& zJ`%hKC~z|;<&Og?dHAYO^1?@7$4w{_iUFc2HT*XM2Sn0KHH!pA(7zt}udAmy2Imt9 zkh`#&qio>%iGDy+ZGD^rfOi422gh;$o%RR+{#eAzDBzQ^K#(?o7al`4md_~v-~0y3 zgr_n31RyAqE_M(#3xO6;G`&!PW?mN29;e5Bo2Mzwfk3hL|D4P*{6m7&p@Pu6CZCD>IohGkN-W?lH!Fm))J? zI*X=QV4-P?Vma6uUk`~l1JZc6x&N4~^2hW4C1c_*w)b;4dDjC-K_gqx!-`}DFJq(o z>xjIU?mr8mmhEVaaiBSxvn?%eesPXFo=HCn!?J7FcZOGqJ_gi4fpl{~k^*{xZbA2< z)UT6&fle+wFX9mu_Nyt~%=rFfhyi<9?#a4qd=*{2u%3kt%Jeu&>d&=IFF@>|jG)Qo z8+%KPs0er|kNIO*{bb#jX97I+lV!b1R*#>p^Na7^>@y0HM9R@K&pHDwkYf4~0B*rG z%NQtcy8woA81=TdjT{k|du9yL9N%}s?%rT)p6RemcU*Iz8e+22>nml@8MB=dlpQ5- z+KI_%&z#Qq%=`?Lb_D<}TgQN42VC*Y5Xgq#nBD|;){0!qKS4CS4Jft~d}?i8F#lz8 z;<#BmgjM74U>Hk_N@D+3f!$^A8~8P?C;dfsO_lGxNF&I-IGJ&!>Yfww`1C~z?}6YR zkp17Q?P221A&}@>0g*WaMznCXO@lkzMm*J5w2o&yXPcg5^HCy4nE;rK*Ob)jFSvl!f~d5s6L_cB^qQ8@ z7BWydp~KW#Vz6Vv-Y^`RDAOrifzda`-F^n)s-b^ zhNn*|n6}`Qp}#`#1EXDy!?)1c%7`(wD4R$k@hD3bavk(<4zyN4gu7_71S%z)5v`I>ajK82MgHC zk$pHuv2HhKdePFBVMg z3Cu*OObltdlqRgU8ZoD6Lx^v`(DbNzCde-%bIm07>Mq)L5@zk`o4q^!y-3v@)Eu(= zC}Othq0Z?#BJd0U!$6V1p-aAQDB1Ti+YHt*;rW3W+7FvL`t+^VGOoen^&Xkn7%G(C z%21|jqtRF;UnM_V=J3m&K>6rPfhBW-5Cd ze2|3Fe7_z@srh`W?38i9+0)UzF44bOKKMfW<1o=tqRgKB9$~uVu?$$HDb-2|9_ROo zHDQLcw^TT^nmva2bW1XoEHoSmSzZKa!}VodozrmgpvVe>SfpN#5oMu#r=| zvY#n9QC9glr?5k&4&`g4?e6{87AdU_G)8%|J|AhlPNNl zix*1vgjYS1*Z5V~rC73md%D=eN>!9RQVhP_#Z01{Gwai?(o!1-t%KS^pf<_pNk)Tw z-)RBNzp<2rS6EHf73lIx6dq>X)8XvrSK+Mo=F1$8-dGiklrs2KRzod8b$YVxhw z$bu8+vwAtED}w>a^d+Fwj;^2@T5R_;c4Asx--vrwp7w@Vqkvn))o0RW?wj}}K8C9| z-maOsUMCgn?Gjl_%^Q_}>2^!A)q>}`WlmcrsGD~ty=04>Ug@5DVjsSH zS0+Nulokcb^X*hF2}3voI>5u(bu3 zWa%)v!Eyql9=)x4yNzE-yPDvnol6*~7T^~s!?osDiQ;6cMu2-HH4V`dVS zRaI8K-O?hWXCn7>CL^<f221687qdde4KwE7?n8)ySjZ1Iz>T!zKhI9K!}VgOcou z&ebdp5atu)81>XSE@UyBE%4tO0?D@6*XuuiH*1#AXKFfdd7kH2FDKNRkf9)O`V(yr zu(wTPZYPvuM%&5j{A9o#7@EeB`dICsT}~L@F#ksdB@)cGsY6eVzjs_{CGQ0FMI(kO z(RNe&=m&6f#8%h2fy^6!*8tgl$m)guseKiSYJcbU$CVTucAky3FsUM(Q*L7}CP6>s zFk}44YCM=F%)D2z{o?#*W#}oOJgaz}ieW=LOxHW(?`9%W<{N@7dDERMRXm9+ix$5A zNFH&HdSWKpv~7%*no_jU7KXx9#KMnYkQ|wUO3ICjl7>;? zM7bYD{>>CD*b4gy*BCOa)AqR(qVu>VaeOpJ=Hc#D?R2~yDi<&{DVBQ!WsrrP7qF*@ zY=6F$%(uF#g*GjT_V*8079QTM&3a-+Px?+@H%52P%dw4UnU5Xy;x`r|8Gu^)e5gXw)pBAKQ-f0PsaF3A5zHBlJp@=J7QT%#k`i5*-kt&-voBb>xBi^p< z@nf^Px)aP$dEJ4pfN)y=g?mtYR}j|roWN{h5x8?O2|y!6><3MMflMhO5NF<=Pg*af z;F2JDhLh79S>vZ%2ah}H!|EGuNdqm^{L)21Ay9sJO^(U($_h<1B`XW)692p=o0e;V zje9E9-<;QIZ>{pP(n^q?_j{|^_VB#~=!56Ik9Q=e!~3pop!Mnz-Be>fnO%~-)z?91 z{JYba>BmMkwG=Q@PSV>Y5c&&5M5-DiET>o0F-^8xj1Cy)DTb!#+fa;{+JZfGa_B{J z!){5~?BF<_n&kRE8hYE-cozQ?Vz3ZRPQ5C$ohX_QT`@M-N~DUVJ5p=rvZK~&{1V4% z(O{&YA#wj6DTwfclTXgF9NX1bW_3Trn^EqJqmX~~fX|)pvC3>G~ z?`Ezc_)Pt^&<67y`0NQP3OTR_iG46uIPMXEuQk>-U|YPn>rKG>BHi6#>O1bszV!jt zQCh~h6_%l?msysmB+RY7wS(73-Ib!1aAU|&i~XXk;i3XEO&fZ^rP7pmKbM~egC`)y$06ILz`hu3qS-hgV=clYD`&poN}?S?&Dgr3D#a*;0GrcoJyR^{1?$Tx51pt zRS6#r6xbzA1BHNOP+*@w!VO)^Tr)_+&q5agWCI(|txQZY!RCNmCJ=ut2yi44Fr&6m zQw1Hsmqke)U8vpoudaJ&s@{6wu_+%{qGr7}2sFF+W~WoA%U<7}0X^_5#kbw(ccMY1 z+4IV_uLkZPSf%Ow%&o1pN@~=R9@4t|7br@n zjR%RFK?y^&z2otyuWhV~TcwKKaA^;SJ2MXwgcyOi_Tv9haFSHv<(b=85CnApIv<#% zAXcU;`4isc--M4#OYvgZCXIiAT6ZQkVQ-|)v zUW_jp#!9@*5J0o0d|l|fi;czDd^JC4s(vxyj+cgNxLSuAjo|mXK|A<>4jb2YcS^)L z2FTBw?oAjWINJZ|#%dU@=KINz=nY!VI*w>K0^t3A5g(bF6625KjwD!J zm*qs9cTwr1r7SITdTj4y2tULf@AsyqrFO=@d%(1Q?cd*SZG+ODuRCyVktzL*y65*` zxuf#7s?brYBh%=*+w4*=1vgZB1pnJK@Mz^_N`T>YEBthr#%HaQIvK+_Z9Yw}KIYF( zl~S?$Jdu`4qQcB_=Qwu7I>@z8%H%G9(-_&OfNvFy{v2k~pV_NI%cu1v0mL~ZU`Y=}z9Je6kYtE_jz!q3hhuzW!QSq!6cL?5c!0Wq&P?%eH!!p3?24MjI` z85pebnGJSWAO8Yf2ZlFKqEz9hMo>$A3@7CDw;Yx&C|naTY=T9h=imRrboa-1pzWdx zZww_E=s(-!)_)70`QzIx;^<=g)W`O7j)U)aEA4#=9tkFcC9Aslm`aqsiF^RiiOeow z9=inu%l5Xl_raLNUQkK10R|MU{lUo>8@?Xheof8>YzX2bET zueUlcPB12pSkR3JtqZh>-{4x*A+YaCE1R=Qzqk@=@DsUzhK3DPe1<6 zUee=I#%GcjL!g(lmLwQLh!rRK*mM~hhR&=C^sE)G|n8p98 z>|@Mfvdq29`>l@>C3$aV5lK-m7of9KQp6?phF+g;i70lF8aIa50feyg&alDKLPX4?K7L<3Rqv3tj`R+${JoB>)u``qFdTDh;;Tm3im(1hkgK28I z+3}-$vs|h;b#KW9DJAr#v1)YRL2o17+wOj~d=~rsv6H5k&Y=%&vMr6ao*lwJacujN z{)_>|hg5+d=2qA-Nn?g<#qK_Gw5q+%|C|kOdzHySNP_dAhFEU(w_M`4n6V{}>ra97 zJ7ROfu7zjy=QA5^hHjms(TSOUT*-HXKU*`}FZb+EZ3?FzPntklTlfi1whg5TwIrv4 zflui$v281vFdj#on56x(CP`&%M5-#sMPQi{wn z=t)E~1B;GLXUx~8BY_b1pk&Pbse4hZiMuK`*7n{pCV4(L)QH6wn|;<3_~mdI8N z-C+6tPru?is)=sIZbFl&t(8&3)WtCkPK>z(e#5PZvkIUj!A5}qzDwZR)F}1F( zkFz?-5y)%i21QYZg9u_`Hsbj40@POm47Pd$3CHU#3G76;^bU0%Iu4l=2UiWW77c-K zBT*39uE7CrP507A9E0___9fyjyBTZ*Lj_m}vZ_{qE0&^L(1)MbgX*LSXnC zr2xL&ocN2Fzn?cFrE-=1P5&Bx^CF#-ApZ32DW#-Gsj=)!KvlB*?*d>QeYpWwQ1w+V#f0CG_ z3t;L5!-|K?GrC;lk_dGH8TkUz9W>;!1wZ z8sU|7vg38fKxuSWCrm$4MB|YlPE4F2-s>03m0JqHA;%DbW(OQ1*SAtLF@$A+bNYZ8 zk-i5kKWqTmj3BTCt<_H-Tw**NfdlIsw9~s1Fu^|+11muPFknuN0u#qlJ1_#Q3ISnr zE-*&QIPm{I`u~IqQO!o}o~t7n3<5C00eN*J%91KP-GbRS)kr@soSei7>>U{Y)(MQ3 z8s1>2;=+zA0z3S^)AkKI%Q4<(h&FJLCqQLxz4-V3(Z6xbho=D?^MJt;e6sVs%$^O? ziwH}fxXe34C|c9k-ieOHCQQ_S0XiMRuXo&enf}mqp=!85nQ{xTzA?lLfG3~UGh4CT z)V9W+&fsg({UQOX7#E-KrrJX{uU&ec<#F_TXs;*PdIylED?j6Ry1hS+(Cv1_Uwys6 zNCK=L2X_9=$+upn^h@l8X)e>qaK)oO6#4T3a4^-h&U9Q<0jlPbdC`tVCAc!0Jjg(u zT-z%a;O)F;P2(Gth0!v*j?lQVUV3kunH!@? zgNj#H&<@el_&L+n3*wMHA#PlpmJq+GM7woQXd84 zon8vh%hQ^+%Bj8-ZUtUFOEJi@s_n+)2dMpUXeKqx45_I)0V7!7Ghv=6Uo)+vM`hEw z8lm@Z8Gncc%}SQY`U5Fr$4geo3?lgcUD4wN%nd0$( znxA>oK84HG<3#l?tlkLpt%%$jOM%$$Cru?(da#y`#!jfq?EU(B^VlM9q3rz+4#EKy zRJ`hqPtKZ4HmOv<)60|^39I`Uz7~uUw5)7ZP^{o&Y}Wj! zjgiHne-_S6d}OdNWlG{#`%FB#j=?-KY=dWRXE&gsp<=fkDcIV@d&O4_^_v84hz!5| zUbaZkwmD@Qf3K<4Yq{`bc0_5~SzR`fKbk_j93DNTU8w|f)vo5Ua` z1@wp2?`M=fQHxBWZG26&u9)h;oWd6$@cJ%$E~C>WwJS3D|E{h6??rb0A;x2kis&(L z4&BF$mY5pYo~@KzGzym4Hpfv|e748{9nEC}U}u~#l**tE5CP^g?ND|AB1 z&cJYDwA>5D-8JEuK(iOw@&n#yS-Q!%tSQ|ZnEGO_!GhsC1};3ats}y3UF-A5$%N9G zhS%vZUr*WQG8^wXlQ-q|bMKlmh6eN}SjKbe{8$)*HSR|`J?}7jP9biwa65bsBy)JA zSfA3PGuM@D_|{Or>|JJSjbhYLfJBsQM*V9d4cZD5(Dt~(Tb7(ED{To-!ZdDp$5Gv- z?w}}u;mh9lQGr_yo|UgU8k`u^i*c$Jv==SqP4O@cFg(karwvY&ewLlbr04i!UMCAt z*^$ZUv$||BX^x~SFPIxHSe)C|N%DECVI83sx4N}I);~n1oJGL7uH0+{x_u|>9Z6B* zj&b!#ppj>vNoJU&1a5Kj>j17^Ao=0|ic*nQyw01O80mAi!%eviTkIbIr@2{rs)U+y z-R%`se6N=4=qD{Pd*b=O?vVKhW=!#K9XGRVdhvsO?Pf-s<@X1WQu3A;4Kqt2_}TW* zw4H?bV#)!u3#y~cUkJ$<<27gbY0O|ur8HgPXjpW+f45DACKt+euhBP7bRBDEnuPtJ z3!aeI=jxef=Y?T6Bp7%rBdHgWcK^w-)AK~Z9>;-WY;>OW-DuDyF*R`^Q(j=*?h1?m zdGrif@#Q+j-o8X+!uh_jph2zS%(J}JTNc|j2gW@LuAjGX$rpP#K8cZR5(l78_fS9} z?;liZ|7N&8%tKG?D&UUb@!TaZ1mY=t%$M1}sK4pppYJYa+$^T6#M0QAz?v_R(%wWI zlxDm-x?aNwXCh(&>vNd&7brjsHG&60$*%#d^Wgx15S$1F61*e&et{kl0sBH6R$!;y z2ndr-W}=bI=i|R!{7+vMfiaQ>I@bqgo?Nh_CYMnPfNirC3GArT(6(SWeLeoQ+V5|~ z3!5mIJ6!9o+GdOS56j(tkZg_RI^)RS-sCD*wxGEeyAY8*>>od#Iu01YPSfCBUCgC3 zGRwzlg85Ybx6^!%VsHQ(@$_axfgS1rgHokmag|xj+oX}xuYCh3?Q*Us#sZ&Ud(C1D zj)~UqURyZr%m?@A0S|MVgj^>4rQqWhi0cxMDCiNekE0t^p8JuK<7F7T0B*?J!szoc zBUmsLTJLNV^qP++wW_x&$D%j758o!&c(FJAEvi4{FE0HT>0D38H}6fTKehRLK=j|E zK5eVt);qI>)0rO4bX0( zFVz_`Uafna|8?3>GQoPEV*?e0necUW>O$#Vx0U?FT5*UwnS7Rnn1OI=xvUy9-nG3*!PMgP@5|NHf#tzFJ% zae+C(0*L`|6jb0T+3zpzuf%wzsvCg-x?N6>9W^6pnQ2k+c)neW|M!2pUW&{+j~7?+ zAPf86#uK2mChB~7Rw7hKJ@y=*?IO#atOTC2Eck|g%<<6HdL!XwbP}`r<+0}QisA*j zGzzIu3I77_PW>z<8CdLFWT)dYZyJ!I+zg9TQcT+@3m2c|m;N58IXs*wNe9|QOI$hn zgQpxEt&%iTyAGy9`bp~L>y+H(p^Vjxq%nG4#jE|@nUoqvh`b3-X>h^|S zw%Wz*(NaPYkRZvtd&k_;2W!t))5r3jTwLFIs!0tMDjf=REf!1&MnZ+cWvz%|N9PrfTo(%B_?_l9ABz<7Tg(StI9uK=r&2^eex^4>OCEc~fz?$(;Bt%Q$isnu zTTX&<8YlGxiie8tV#2C#d8;}mt&hDpxb@8N(Zr^;V+pLbTMw=+_g(xp=<8Q{dt{Od z4(1Vt6Ns0Jb_QnoHDRo&QKL*WuQ4Ac_&469&fhqa`H( z;{54T#eex8XiyiUQVetOXgj_Q0M*@QVMj5r3UgP`*(uOVp(fYkM zK;qv3;1L-C_drpqyUb{-Ajy8Nq<{G|{$IX`lZjfqdaUP9i98Q?@cal%r#7gWu+CKD z3$009kQ)tWL=PU8VwOfHqBs0WuH3hUW^68@kw33h6p>!VSc$4kH!;)P-Z$LuG#VGW z3+&R6@PXh%TqVe%N&sMp+{4~8VMG#VpBd5k9}(^nZIE(nVuRgdqV7dC4+}(ZWg);_ zk^ZJkKv3h&_NWw%XtbSr%eFz4-WEaQ4}w~!eUMO$nQj~hP9wtf01Lj%xGU-<>b9s@ zWKtK*V;$7Td12o?Kpgb&;?|HDa=|*jz;tVb`>+%#Ek-4;h*bT6YP*VpmEV$Ff~ zOKGWuX-*YOVu~1Y_Rw;e5F8xYh+%!Bf+Sm5)K@I*pz|?R2Vy)!RauWgy)5Y`O8Qkd zyx8;2Q1o!?u3uT|;_I7r)F28TkCG&m$)dBnL!G_NvZ*+w#uER&E>U-i?w=9P&rw_{E^APFdh0r@%RUc5W(_|7h21kDimwwhmZX_VvVEMVxSoOV+s?*&<=K8>YF1UM-r6G7)$1n+evW%+y{%*R4L z{@%0`W&j4kl#8J{2f`4yZ4l=eLbKnpC~$IenwL?AOXL95ncKCD5{Lk%kbiUAYtv7C zj<9&ZZ$uoAYGz^)$2s?EmTl*Pp6)83>ft($UEOmySaGSLiqqF6TR%ynndl&qOm`Dt z^4VqX51MqukS`C2NsxZgpr14&2N!L~y*E8l&Ol_OABO5E4BwR8Cm^sTR36Bs`8PkF z{a09aF9VnlzQDnkbkZ^a_C^C_k$~aOJ`hZJJPCBAml?wuB+2+!P_}su>DQUrwQ7tv zbgOf@yANl3ve^tuTx`qO1B((CEVA%;*}oDKa`SQow>7XmogO%NC_rg{KgFV#|0IMK zKb290Y})pJWWIjw`NzxuxKkw4d2K9+8YoLHaFiKCRv{5TrOxZyrs~q@i;!*fZ@;Z2 zxCx5$9H~J&7ZI7)gcxQ3QjP(mwLuZ)Ye16U(p8`>hGBxmX*G(0%}uBJk^k{uK7{1F&g+0Nd7n zizHvI3_C;$Sp@D_I2rCys~{AEs5pGAe_B7f)8UwB^isYc+^VXFS{4B-4Ol*@wd_BXrIV6Ct z(#Kwredh>s%7^}!Zu<18d;6dNg5tlutsDvMv=ajGbkPt+ockCSfC5uZmJjv(7wE?@ z9HEHIsK5k9?*6~&c}4%d4*I|0wz72UzSn$Fyw4?_$_wqtI8!X^o0X%B?vi;WEyVxO zDQSRXe6sNVw)y#gwneb21LXiaUfh%8nA8n_2(qseLxhyvz6{SBSzcxPpfjh>Qb*P> z6Env7K2*xT#KLmH?S_jB))c^qJ#qu#nbY{AvchI};2M6N@0jqDMPwYZsv_m+Hm{nf zV7T|~K~p$m1RsMV*|$f%vYNu?l}JAZE7VCB64efAthG&D9%!qDoq+H+8=K=iO}o1v z^~t?(m7^x_Ott45D4aPkeIK|gyNsYSMLhxh*O&M};MFp)7_HiR9FgiTD0>pRv!`3T z@Dx1udjCG>8}(;5_0cBGsUm!t!8U_yylvXdqjo-An_HazlRVaN?QIYgecu3jjk6Cu z>VzVNp`8zao#u#a9|jG~qvQs6UhtB;=om5F=>nppOp8`C+v1P#*GFI%94$@+McmgDgojn$U9?z=sTi1na@KY|9IW$_r=x zku^wcmzxs%oXnxe!tI38k_VGN2ds9+1s#H zb!pC_R20WNbU&o7((@-2#WqTImXx{1AQL7m*3E^nzC5)YSR=UUuk4&x*L85NbG+C? zO>2|mq0BtPrA%{o1-*b1-qU_yBO1OK^hi3s1z$r^Jq~O5v4RcuAZ4uM+5zWYXR_qn zBHp+s$4c^&l}6jEA8JqgjH(lE2u!Tjw=`!=1p`W_`+#59WVP7qH zizM#1tt)*SB|Gpi+@`QTd1{qG9ODR-|QkX7T*YfJ>>jCqrTvRiG`E zSS&+)t_qFB4$N-_>(9-f`%j&tl?d%kdKjbB?>^Ki>AiJw&JYuw_%O7!ipEhKNG=JK zQIt_U83bAXX#l7I{X6_)zqjoaQAY2g1mN8c7_?QFqb=-w?YdJq6MywG6Rpbr#~~yV zXdf12*=RmNoVhh#?sf_71@b(010PCqdnZ+7Zw)xSeeij-Pq>$gCMHZs+<6QFN z3~^zsTHvRW0S~#{74sDWcq%g@$`){^k^qoqJ7B_ePmH3%hiofy^*^NcYKI4QvU8SU zvB$T3#mK_6oe5COD#(HlL}w|!j2q>htO?4r{oi7u?$=y~)ZF`qK^*mf!2eVqoy}wA zKjWk46lYgLmIufAR4&wWQs#LoB>5Z%FQ#=;?BH!WSnl6xexh5>dn}iC)Rs^s!j_`#UJqIHF>%hKErw)*BrtQuHB{R)1^G9ByYpVjboIX`3W);CO+?^`4}ZcI3H z3z%;vsAai<7X{heuXn?{dg+{i4rVyN*d;t?v^sS_S-bwsT-i%tn^=AT*LjEk; zLF1w{<8#8B-<*$}5)}Z^^^cjM8$#%9>}Omb#sWo9_C`q6%~<;)m@&M8Byoua69QGdrF=*IUAv{h|2H%a}1}6p8Xw^6j|F#|{VVN>@@#>LY#bW#qFVjH31~8FpOB^bUhk=5%CAJ(cCLehKcyzca8K8t6{4dj z+mJj3Nfb9W)#;6ts(P_AjN?XRY8Kq%eD>rB|1?F$|7mUqRJxJfX>kY5dvzG-R;8WW zLT*C+8;dirDMA=a{-4_Q&!eE6HDH_ms!Muo|uiaMvPTW-ThT6bg z&F~IfuQln_AYfJbr_~^*715SPC@6LonAw@A+z9c9k}&S-!ORK<3(Lor4AZ<#K6t_mRHqgE2M%Ym~(($g{A1bTfP{E!NpVOk+Y6L&BuVTpDzkvJE zwqg6+OYI!?v!TL!`#7fiIzxJWnM zgz8P-#J3e*GudDl{;A>a6(kL%zYKu7q=Pxf@$W~2egKuKsLCjOMY??b*i-r!$m`EN z$o@qd>%bkU*4MW|fT{aWE$}b5W>leoN=jGksj=B{eO;r-)6)d=qfPEqc0AeYZG7OL zvlISp5lt+?0ryVpoip-I_&VKC%KEJ$>qjR4D{S-6>9Z>_Z^ny3L1aF<5R=rv%vSs) zr_Zmg<37`EwlVscLXr%SZr9;IO6)B-__ODT%B#PwEoAn#q*apdlsXH^9DIxu)3e~? zxLwhWr#bJ+3X)88osRBDEcRx?=gR|ERW-((8%*D(g)m~z2}Eswa*3sY;_IL9-eUAZk8em4&Z z97`;f4_l8P_|w9m_{TO8k?&%r@PN{w(u~GDcGjC(5&NTt%d3K94_RX$XcPK4 zFMg*dYo>7#dMCH7ejeW)XM-d5pGU1E2M!yAaHl#ET)VG=_4y`X)UVn_F)`8|otZ4M zUn%yJr@c(@?G*fxedahc_H9kP@7q#%%dIM71u-}ApS?;L?G-R7*lL)C{>Inui*ig8OHAWx0*;asj=Qq`nP><& z>>*+)m6`=o>vU^%N!E4#@U-%F3yOS|M`m8F!B7fddXIE+_>sZ=<=A6}XG{4(?QpVu zpJ*rJM|6lrlNnj`u=8xGUaJ^269@8sM}?hOYV1att53)w$EqUrSa+mYkbihnSPjL& zo#NqdA3^5?>FmlQF!#J=-_(HE!FA1@YKEP5s=hsxJD$-NRm8iFGcf01_9ui|JMC{k^qz>fI@gw&MIA>s&jsg-$w*UO{UZ zz)h{S?rX}z?d_69`!G~mGEB#Dc)xlLcZ^%#litUflDoH{3jkCP=>5FX>1MtawNk10 zs!LBA6-v7%V*MOx(rgUB2!HKCNt99PT-0gNm|(5#PAX94FTPUTv3v9GB^?qHVp==& zW#x<8xZb2l6t5>ifX2=o-vL)?(Sh*AJu_zu9I+uY?zdlpmWo@8d$bVC`@cY?+W?2e zytSu2Q|es&{6U_v+j<>o{r>nMds3rChQCJM0~JTPPq<0Zp!02Z!^k(hE=zU0;otZp zHl^YMeu0WbL_m}b*H4wzhbPq71R*dm$tFk6?=KY&3LAZ1qJMSq{XLwpTo>|*r9{Gs zisjADu7pg)+BN61@Xh;&g)Szd=clx2i&iK!ngIDCwohqmp z6FztmdXole1KWYGh9hf3p3Vf{kp@r-Ww<{RQ-!0g|(iaUJgnEj+F! zUtK5p2f)h>R;N{_czJ#nCm)nY+n+y{(oVKNxA4(74Afa&W){Clh=Y3Ne`U=)ll+1* z#Ffl^V^!TaWj@9uJk!(mX@k2ZvRTnl!LjTXo)&jrxRuf+1D;9W8uNabInw>v$U)$& z)A9_R%8tu*1&O3en0=bEF=Ooq{hWFr-uU=Pl3hfo>MeHST_$Awzn z2|Ygd?LVfaSzmGgq_2kk=!#I8G9tp^)uga?)tINUC(Zs+uRC zn)CXKD<7l4h}vEgx~aTOLl|{hozKB~bBb>2PGOUwpU=<;l?biPI`@yVS*&n^DieH# z>kpWFJ}S?x>Zf@Xv7a5@Kc#Bm*K{D4v8&TxrM;wM6D*xjRq?DO5o>SzYMQ0c`L%%s2k8rN zb41K&HVCJnCRJD`Q;DZh-3qu=NBavRu)3vo9>K#qIm;^R9J`QUBSG-2ZT&qUjwB9 z!OF~T=Ey`7y#a<~sBPTp)W+$jY{Q#9W$$3vvsx_VEWR0L4l8T*;=x^wY8_9LFsT^|Z&8nlJ zUPQM+Z}NTHdV)0XICz1w)eV~;4mT5(m^jjhwS%D%octAF^LPp$!>6yP*c4qZs6VPsEBB&P3bV5J@uSuao)0Urv13p_@k@WRx|T?gYTI8 zMFDNEh$DI|1<(=-awU)%7ARFal^B4%dffG#&fJtpyf47_qodg)mhepx8^)0Jkg?Ac zQc)ZAB(v>(b0!7vb}rLX-U}k`%p=wXGK62mswl)g zZJL$_dkQ@jdgLaYyJb6ltY{OV)`&Gpwk}fi^6SHaE$@E)Q@&rIS64FB1}Axw(k#{# zV=A7G&N69L;}vu&-eOZj7P?n*7S8FjGs2~x#5u21A_K8}O14&?_O{!X?GhVmh`AW1 zyB%_Q#9CLmWIUsMYa2)ZBM4Tvko4uFZ+CkQB;H@Ouo#K!bza*=ftXK55)I%jQbw7s z;AsumK4kfvBL8_E_h^K;!FlG`FOy*Vk}2OaXLrsk%Gsfz)V=T)o&M?-cJkfhtm|aC zG7@Yf@;dif%m8z(9ngj}&DC+6y}rENk9Sw+Bv|}*60k*nv@UjhIE(E|`g#%T+K$(5 z?HozR99wqe4=FcU)SvxPYgB4KO?|6qfz$Y2+P9ftZS=gCKnmAYR?`IzcvN(>?%Avi zik2M*XZq6oGWA2H3l$A4Yx#iTGoj{o?w7lqyO#$UZ_M01ecg%5>p%0jx^l-+-i>|q zU?H<5i_6VtWjX^5K|;c1*|$%8te7cnb><54?u**7#koBow2DPnx!xrrezx_l5SQ#$ z7oc-PgvwnbiO}hLWaGqBA^hcWr;4(t#6FA4r!kR`gVekJ9e4B<-w)J>7P1E$m1WjI zB74(4i{y)F(2xdr`C)jmOPX<6;4mq@!kzH7doM;q1Ql*E*5j!3fNS2jlflf300C9q z7Ac>Q&94SCb)puJ^7_l^=NA+<8b6IDS`pv0)DJ=2*vwq1{Hl*;Ut=bHHtaDadZv=U z^JLxB2FDkPd zp81!lAH3Knj}*1GUDVodw{ni0;~zV;nyRROYEuDiY}~OvxXp zK7Enxvt)*?l!G*$eMIZScn>Sr%A8I?{Ue1fA!4B-qp_|6INv?q4+V@b4P*a!xQ;UJnSzg$`c394);>0l&nK6iRiy}jD|}VGb#eH z&LwTS)9se+QJ4ov?5<)XLpwSdSc8zT^D0;M*&9c{f)|Chn)R?&l@Ej@B%BR`hE&qD zR}axoM%Wsw;?-KJ#>v2UMH-`=NLd<0YkJK{eI2k)KB_e98-Cu}00jl;QkZqX7=pca@fdb+T`jy0bAAbu4xRX&0%#xLC3uwr2@(ZL)KzIN_ygQC)}DB5EV zo|w*$347~KpL^?2oA{@CtgfCO%Ibv%nLd~S{@TukJJVEc&w*z& zFk43>*fR0zYv0|pyziqrfOj_~A;p_k$j9{T;WRJ$mZx=@@IxTrwAR%jVUL=(A?FyL zA7vm%xs283=6b?$m#N-r@5~OBS-d;uh%Z z`3L9Pm+J~?X)is*m}^9#)|-f@rQ2R!JSEr7j%zi(WpERuBEtd4bLEr^Y><8&j@X6y?^Clvq=OK$!*yfCQnE>p?>oS(DCqu2i)kL zey&{COf`3N%ifuMp|`+h|KMOWT)QDhns^24>qpNyya0McN@pVzF~Z0zB}vuYXM9kk zyJl!ys8y-&NX)?;^b#vrH8C!HNiULj-b=gaLrpI0{G`h<>GIsX)7#z}v3U+MX42`UQFPNp9a>SS)$z-`o zf?}UaS;4Dq9dkf)xfT04o(=eY;ih4$*BU?P-g5cz*iWLM>jr(r$F(D>%bC;4yC^s! zsk{9S%%$BdA$RPM=YFGYc%?KKXc3%Iuy~{IM14*5LWlk}0uSW7{03@KN^nGr((N8W z)k3DSLzengc?^fJyA6FgPV{l#xeMkz`7w(v9IGektgtJsd&Rzukw7(8+D#9@7avb+ zBo7%wRQyCTRH_M+hi^Y;1^7{%gR*YUv)^?Ch9o%#$37*H5n-?$+pyM^j00&}EHgH^ zNH}b?j@4Hovrw{#a9zI@QOM-HmO1OZnq)h7f^t%FsH`ti>5|T1Z?zhqk#}Vvb++K{ zyvJ?rivK{;HF4yUj_D4N(+1_uU-L6|+v=v{t;|s&bb;Kqg|{tIKx{^DIDBwrp3ReE z5T)AqdKXkU0kvwM&2G2ei~iYLQ;-(RB4e#Bs1X+)Cmp=I>MYgAak(Q09F_!p=$^G9l8^h1ya zRmYKv`Y^eY0!hDQg=;JF7f2$DSaFS{>l=m_W$EEtdFW8ansKWVubPWzfn&-1G2@F3 zUC!*tAvu;*q%YL`3umvRf_Qx;k+JQuNghx(#~sxG&zJtQUiwd^UWj%Mx)hBDd9x<6 zqwChPkP#iGk)vqiNq_n5MV~->TGkWC13r6J!S{xguK)z2_Zs#;)*cVO48$J<)KHe&W`OdkXF%~0pXtz&9l{ovfy%2{3r zwXLJMXgR#qnCy6m_t2qSSd)Q|?Yr*4(-RlUv8UXUwXw@RZ$8;xG3^9WPuHiJ-rl<; zPAIn1X{1V=kCh4Buh}IN670KAHd>HRL%Vk8?h1M1y><&o)STsJVzNPR@R<~&`4ChXT-S(b$u%48jzw-eJzuuth_ ze6%LuT^Ci{nd~*7ki3@Rn;Gl~xvQb}m+QmuN9(%5`_8*HbBc#Gtbc=nb=c(trOhub42< zt+N1Sb|vjo`gKWaeBELsdt~1!-}QfR_Lfmmh2Ot8D$+0lQWB%Iq%=|^A}t`@pwitP zqe!QKfPjD?A>AD#E#2KiH$x6gc+dCV-}k@Pf35rKzB-HZVupFndG@pS{={Z|(mtF_ z09x!%eQHZBwBv^mNTvt9evgB3u1i|%6*B1Tj!qc!di15sCuiscC#M*^w455H}SKU03J8{LU%NKvFe)6)M#uLQb)e}jrTtMDN5;haqUS>KZ zs84@pd@YSkIlJj$qKZG+>~hxCMX=^+#v3ySVwPApC4iW_qWV=KYgQ+ z5?H_UX{vNLtX?J^H(2XEkfj?1;ZQw36E35D@i6#AQ5}}0Dv#rfZAU>I=B{ZZq=MP2 z61vY1ZX^a5RSO8S_Y0aFa%z_;kiNJTJz=^wrqKouU4*{2VnXVq^;KZ11D-z9E~M~+ z{%e&NRTszEY)bmxdg2*cgUz%=MNdCDEOfj;%DqEWey%97@`!tr=<5M5Z&0-Dul}!_Qqv7go%S$82YF=JO0pSp$wVI4PV0J~h6NA`{oj zC+#6!qsDgmLn0xy*5T(pLq!KPPvXWFkCfFki;|9ElSC3iRASDuyf>R#uLk<88v$GM zA=&1$)#Rf3_*{lXli~oWyBWBml{fEt-01^HAHN5&eMQbk3^kWjb(IT>eT&zbCC18d zHR;N_cF|qc=o8+LsNvS>k-BWNVu?_5E+4<##6-F-Kik3K*PrGY!4a?zBa&UBEuib5 zzWAwqe%A~7IH3_!+3hAj+$6X>yHeuHyHr*iocMaEEanH#6(l^hMJ+pb1GRU#;(NeM zC=95g?9K-m6dsTu(k@sz<-`S*n=RjrzJ4eiD1zegZICOGt8{p`YP@VFJYGFxl{se4 zjG45Q`k~gC&(y^pJhg<`JLWH5 zeb6zC8O_ZcUepyld^S(<>J(y~@X34ao|MRMgQZozpK~=vLTcA8wKca-ys`>KEx!^r z@PGMxAuuW!#H;X7aF#vfQJFhb;{xkf{J-hk_lcX^k{}VTeL)%@kibByC&5g+>*zqxUb#!&i<}8A`T7a>L3vpCcfS; znQon(sP&b4YGiHa1Y(L43F)&Xp(0%s248V-*Y(HDD3SVz2mSuw%u*mHBZSq}<45t8 z!TmFuL}S{+AsC8JsJcrYn~J!)g^7zH8B%e;3TsW;2^y{g^L zXD})KH4omS)~{7BiKn&e5%_)0W&DfuzVF+rTe6&-sK+d|jvCq%KQ14@T9YiROt&P1 z5zzxpHIbL*RA`qR`RRJR#tX}8)V=EZG&No9q>!nUzT`sc%g5c16kk&jlQ{EFH#|&O zqgQD7#3*}0_(C5Z>%E5jC)uA7?%Gb* z#x4|UP7L;=c;(JD#F}2uL=QPL@h+Dn3gMYP&mnfB+-73{+)L@jAK3v8S(JW#({;m5 ztmYL|s7Nx^oZhp~#r0S|4%e98(-^RKLFPc&)2@pHU*b-wxsdofl1!Gl z+r8!tEfWjAvY96Q2qaaCCXcyPmFTd<;~m_-4)QG*!WfmiO*2@>EB$wMVow}-c{7ZZ zJvhEg4Log(_FWpfpvw~HBe2lE4nle$AR9NaZ2}g>e8n~!<$S`Q^OCTH<+HerNiQG3 zgO0gZ{MB`d zk)y8Gf;VQF1Z)Q3ABxUsI{lO}+FXg|ojPe#c5t&PQ@Y?mjN-Uc+vqs6B!uhg;pQa~ zuo4~F;`~2Qc%H$gWx6cx(-qp0-S5MLYH_vNHOKuhn4*pa-!J8lY#7~vL(17Mn#!Wn`~K)!Z;RJ; zL{PCq+M)?Dai?nxRr^N0afHl!Z#}mVO?nc7{uLeoU6`>Bb#f9t+uByxQ=G#Zc~=C$ zof>lCP!f7oX_<>rhap3Oot|{^<-XmoyCp0+J;6-e08R1X^E1HHgSCTL_iQbyTsVh8 zk!xQgz_M!Deo|~9F1L|B+A+n3HJy$q)|tq+7$6KGp98+JV~+sA+k|HTn94q5yL@y1 zy2Y#ghnaOLbGqEE;&30!xv{Hz?BkHfTkr74M@ruQhQdw#M?w@|WTQc__<*42WR&8YqA_2b1W}K3Xr6lku;Raj#;^V?U z$z)-tQ_>CV4ttN(_d4VfZZNJgb$edMAvxzH9anuwUx33J-(flnUC&+Yi`iHsKBO@t z4Ih$6=%qP`G~`N8#Tf8y+0IN4RB z;av=d$e9LX?ERZB4}2E?SKz$7`2e~gjB`C>L-K0MC6lpRehdpy3sUfL1O~sZLD$|v z5nirx2^;2rG`9ozZ_%9hqh^X2lnd9KPE_UkxBlTwemxYj+wFL8E;QXb`}G1Hkvw)PFp9rx2q7y!l@d8a z$xofswe~jER)rIXQ}nC}{v;g;yc)AV0|4RmVkqbr;%zoKqq`>t&Khz*^lyBIZ;pV8|pqQ-XZ8ZvjC#uvYwgHR8a*SWCa2QQy%1$xQW~>@}86T?35w(qY z&^bO^?R@;)sW*+`1?z*o$8Ko5cIlgU+)RkiJ{s)45S^ z0ASY!5hFJhCiBnYW8kDlcc^zYb#2PW@Mvjv$rxn0Zjsa0qm4`p`JLxW15}s2xrVvR zFu|>hA2*}-`kiyaaCGCba1l*RX7JK0ob+b^qoLT?&2hFg@XO;y)eKF8A;d>;D!+ECVg{xK(E4*YH=67~-_O)CMo=d%& z%fcp}`>4?cNaFRdjM(&vFoeXOM$h}$FTlZxwPChPlV-7ipqFJ?CAJnv;-)eskn}(1 zo3p%9x*rOWja}o0%OjithpGmAWv6w%594O0kA=k&drWo94Q>-tN%G#>JaEOI6|}F# zx4>ljwTf%EfWM=HFPa{Y9ouc$4%#)!(_UQ2jeq%vqb7Og(A_}+?NmThA_n23U=qO1 zcc!9(kF~Kmd~uR6Q{xRvKuBd`_^$=nA=FybdpmqNdaDiSpFea#`tWy}f_o*}8>)BB z|E6knS~w@rwLW6KA@7-#I5E(BL!vHds_WArj}t_`(HT&1_+&VFzY(yE3-JxMRep2+ zAudzK##&41l4akRw0szUq;R!l{e-o03ZoqrWTGP}RBHyUxQxl#tlRo4AI%T=Y%QagB)83}Gfhe`RHY2D{=t-4fpB5H( zs+WGJNZf6e-~W3+Qu)bWYDLAx-+~epIux()CwC3f)giSmDf%5qU%D*}_Def)*;`eC z$Tfg^K;$E80&-}E5vSyO7|Yycg5I~KYCBOi=Q%e zw6yg!2rumb>eV-r0qx3GC724hlG$p2AG7X9RxWqiD%!<F2|Ofq)>0G!q{E>7=x9@G(*xjFH3nI9VI>iFJCO?t zl>w>quM&1Has2^EE+;0Zu`(w35n2|ZBheUgiDDE|jCtq8C)w$Rd$(6#9Z>J<91FE{ zJo+jXY<(rq`{gU=g9D|jsPE9fq8ASC&>50T0G%;h6NcKo9fZL3{Z3kQH}SD8!6Fx< zX~4??IeXaG?3OoR0oOn(@qP@Ij-?)7R`u{=t?Is3>QYipw{DJ8dLLaRwQe~9a4s@JH*vzyN4724)K!Yw1U=CadzfQmE%n&|Pjd15+_r@`A2ffYTK37|{R9<|6$>g} z*xfj_O6@QO!DfB_K3LW>`$cutA9K01HF=UjZ0rze$z=IzM-(yY8PekW*=# z6+&QrVBbWGUsz;`BAvmj5!ukSo60N~$a)Ek#53oSgOPf!4LputbNqu(OJi$IIJ;r; z5U;aFW@sA4v-_`0JU;axOlOLYQ#RTiHb7zM5BYX7?6VdKujyHT>ohAn@@ckIa>=&^ zM)Gli)lSbXU|`NZcfngDs)_x95{;+JEv6f+S8E^*)ag`4qE|pDYSHN$?s2oR4qfxQ z=#4->*6+sBB=mmi!7|O&eGi2A1yH5@X^i?flh@eN&_GC&&YUAIGL2LEP_y-vGVv`y zQVdD9l@aS0w>V1+MeCN!m6{nCk9n~^l5?`=8wz{fXJ&<23i-vdEzbUR>=*NFRs~DE zD*fNUSuVO^D@ELE_W+&7mb3-dIBGhZq_-RIDtrOKcXY_UhlfK_eBjQgjt$0m^RicF zOYFMf_p*M(UQk3mj)+%GIQX0x5Ds;00J6Mqu*Es><^T6*irt6)Tr@uNzXxji?2cl$ zUE|;jb@=!uAO-svw`6@YC+6~c@-JYuPE9S4it5Bpf#ih z3gTbpqO`h0nd#gu7lzehx80rbC&A>r^&s*+Vi$+P6`qj0QEzsGw5{l!=O#8#uh#;` zQNNcdbB;Up!r2ZFQ?Q7Je45#l+ zx4%ue6gS*SPIcz0^2o2=A;$MZoib_6Du^dtOn`tqbGvV4epvxD{;od-!nq83$*57O zvHc2|c<}#wF5ecs2HwA(1fE0*kU%lu2rV4!rX0a`&r0sv0z8)zS})#g7NOWbu{XD& zL|O;7|Dy1`D+Ghn#Y=z>n))hGxW*8R*@Gfmye^>#p8c-%bN>rHTv{yE?)bZhFGVs# z&2JyBHR7%dOKmpZjb18ODANK*x!0i=gRrT`CmDbRJ_8`{^$Gok5bK=KwX?MPA3jE= z;YAseqUeI&rx|w1et5qi>qf>!bb9u1W{buyu(s zsqJr2l&yanjW4PE-Wrwf@d|9iS1Dxk#OXw+bA=2vwfoz}i#{SQ#q;p!Z&ArJ1j}`4pOwEXwJ3XOMTp_=?$>oA=opW`%FhUbB1+87)(hc^pe2 z;$#4Rg=TDkow;;DNbG2g)D~ClB;*Tzl+t(UNV(>H&2RckEA>@EUukixWbK@^odwmo z0UR5DbIkwFjX`R6k1rfh@@UI1iW7j9>Nx*;>dxr3KJ&)7k=+epv)iYIcCV)tc-;fE z?0{LDOAJAv$j`$Jn-H{Bv8_Z!;dLpOp+b$>VvOX{x8{1hSB%i{f%n^VI?0XVc+Cd9 z-qMKr<`5yM^%~>P#0$9#48(73ZT5#qROZQkW0{1dlr&Jp45{}gbaezwL)Hub;gD@0 zsEY~~jgUEdZBy{Zbmp46aD{feg8DEE*`50ptZkpjpURHPO4&?9ZNM>eV1~eleq|PP;=&ptvt=DDVLZ4iJz8E8`jE$vyW>Jfs`vDymL}BkDfPz71(femh zTveh4FmJC|k4uRqz9)XQ?%Fg01$!G5Bwf-F3)`E7&e=VV&tm+2UjWYB&28a3l=O3l zZ6)@u>5@YR;2IvM!}jQc<{s=u3{fh9)^johNPPL$ap5K}$#S`OqV7Dg$Jf4X z#oL0B(==&#R3yL42Fr%;Rq_J_Zz|PpNqGHSnY#YF7@;7H!_zPfTD`ATKv*jFd4xGPO4|Aab;5`!= zzpRXUf{iNyaE{s2g8g>~ZiZc{$>vpdR#ADLlt+A%1XR>w*2B&3f0uRVp3xld7NL!h zy&E}1d#j9yhiTV&qZx6drH&2OeU>#euU9m`Hz$+QaX1gZ=&r`a0eL0sHdzB(%=G3R znb{-AB}CnUva{N3&p#rvg3oiQz*JS6Mw6UXQ2>)oP!k+Xa2~H%;0x->L2}|%pY7l! zZFV*|U~-Dhjm?c^exXj8SFZ=BXXsouv~QoU z81WQ)IXU3IlNCA6YD&x;+h;aodA2JV?j8H}-j!%hSNdm8$=!FX%Zuk5abVz-r9VEh_z1;t#c&gI>!(ZFr;38x`NAu}wUDQy} zGFB%^qW4FoZ1xv4=aPb?kf7vHJ#^Ksk^c30ZeAA(wCXB;oSlXD(vwC^v$M{wvDxBl z@1_NE$0WzucU_+wr4*<-6HFdRj^K#CG&YquIPA{wTucwSQ;dIZ5k=fIc;AN#NNj|r zLXP4nUinkV3SsiYqYHiYI%{auR5E!YZL z0^;$6AT*3{O-D!`?2mUvSEwt1?hd99`_4kt{St?C*cfmcCy@~GfKmaXco=OPC3IuO z(iCcSpc3<IpA@W7n_@WsTBultcS^Z6W`3?ExCS41(Tk;Odxw)(WL#qHjN z2vrhJ8P<_(TgZh=pOzcihPI-t;}P)4zA>GAmT71u7=b;KAWfq*PGNS z7`{a;mc&F_{KGMR{!EAJTdm~_4j_+?@IVVB_bBRR_v>Y9r3~K)X_T2L%_W1S(yf+} z-t0RjNs1D$tAFa}&&`Rk3y_C4NV{TR8||r6VJD7_W5iVXW#_NeWftD>yoT#j`vG#HkG8pv z3I>G=m?rU^xlNa&wart8#l1xcFn>q>ci`I@9$uH7+KI|pTB99yShzywd!^|nk}grL z{Mr|bv5Hm5oNFqi%O<1f>guLiN1PKsKzH_uzq7Q=h9A4I2Gf&}43dFxEXnFRh%k{I zOlYpDqYo38nAanoD@JoBQQ-wIQ%=gu<@4o#z=lcaCqC1@-(upj8x_)z^kdX(|IcvT zehJ37cmTMeFNdgANvPFV^HdpiHxm*vsc>`4(~;nyTKjiDdKnO{+nEB<^3xx?5S6H1lJ>k&7B)=i!t|2dMz7iSz%XUE-K5_zQvXjc1w ztX+-3Qe=Jp;V>V;u1=trl-lM4ErTw1J8OfvE&p&5{ax;EAa|rVW@g{CSySGtjdbmT z(|ehGA4sj++`?l%Ya4u^@C)q|eMalO)GA$@I0v3xzzGhzDKnXhnb*x1tqg-SZCo^kUKNMwE*YIeJpi!=sm{v7C((IKT;oX?vgUpFQew4tn zuT9_L@)N!vi!LFCKj-)>cw8D}Sp*xN@qyBx+kS8ww~8tAy^ZW6i$J(sJGCR@T-Jvw z@d`67*y1YZPfqGo=YJ*HJvr$=s^wN}!N)9r5j?(7O-_}{$t?qDtd+P6foyY9luVh- zNN5j@!rckE8#_YgBR7}K@!!GmUlo(0RrrSq{73Zb^vJ7wL1gX4swF{b$39{$Gc&!z zfHy%?2AtW_hle1^k4%=~k)(%alK)SePlu2?^P|e2NI}v7wTViRIJs_8kD#Ijxm!kxOzr+YRZRRtcTN+l<&4G3!HYA!=d zU2?GsKP-C{xlf}yB5t3=TdqW3aM?l+fXG>y4!xAf1e%!%Ae0>kHr$>Ogwa{My5Pq~ zXxULX0=mA2B(n+nScP!<9hCb>Zr|e5n`K0a#l?RYv!kC zxzXnY=zgvmo@haxhfKNaV@M8{E*Qbm2xCK{ACC{Yn*GGefj$kFgXLCP?cpyvMF>E*4V*rrO7ofhaXLBGZ% zN|7TZdovp9e?uJ<-6|I8O;zaC%yt%MQ8$9GYLrQwS!@h;65VyS$bZ1A+jLO`XmNyo zJUimyOkDqUN?*Q+ogu%emh$Jur;kThTFdjq-@!cN-R;_}@QWl+}5zea4|48 z*#wAWEkP0b9X!+Z18pq7hJM=*37Xcj_-PZq>wP9*Gqk*?QtLFtkN?H&v%^1}XEAFi z8+6HH$HZDOU=+MX4X(230%&lhx@UUvLls0B;hBqwL9wGDpT$#P?^r7lq}^&hy%>`y= z>o3m!OknKoNm514_>#6-J-}uC^VV-EtLd^*@nX(<`2tJ&FL+Bp? z6q8;o>vX-7c2|q(YC)-B`|`Qaj>1FrEBX#awnwQZ)CBj$88jeA1?!9&8zT{+J7+7I z$N=S(?YbI6OHDhLG&?#5vF~N8j_KX*4A<89V^I75be=ZlsvaIT4hJtvyttZ-F6b|*d|bTdQ~MP%tydN634QBu6`1rpU1Z6ZME>!>VN>K zJkHelXxuNy%#Hq@sH3R(;OA^Lnu~hqw#HtWL+tBWm?HLdoFY~RI8qKvp?i&a|GoK% zmtVz5eqYw{9iDk?8&x6DAe7Bfo#ok>7Di=tI8r2}3|4uKO?(m=Myp_Qq`(O49eo5- zjLq*6Va->pANRRf)lX^lwdlO-lHM2NlXd4ly*_sR{c`NJzc# zRf;IYO8EyBYYTn(N^BYTD;}8GrsBCRW=lI)uJX;VRFcI7Kzt*enV7r>4!8SXe(uTc!lVNJ z<1b|ImDuCo8{WHeq2|16AMmyR_Q^hWv@A{R`Bs0Vt9oF(-i3q{<@I}DELa_Y{HdLt zc6I2e|784{IZtFoIV+{{ z$e_e!X?26_wRnYShPO>Uor0!z%*2sI$sy#NBoo^V!-m+;=*~j7=)^D{Pz>%QCjk0v z(XPp&dkt(Bp(Hav|K=7?Y#b_}i`MXCi~Gh8)@yBugRR&lYFzvzkn&qsV}VD6y43M{ zcdhA6T#2JIOAY%h(gn!~?mj_@Hl&PE)PVws>K5$yS#a|6j#h`IFHFcMc4ll*3$a$J zR#XbJY`*(*G6iIMBKTGJ6NGYFY^OoI(D~YpAB&Urp!H+$ag-0+-dFq`#rGpQnYh%t zA492@gx=TC#>xOyj(Zz2ab(i{f3t(15yC2Ikv z*@C5|)!Hk5YP%Nc@$hr(=&Y6?g<%RkQxkh(ffenl`fC25y+nf>lnmhZKR`3W>RZm% z!s{@i@KLeo=O6Li@#DppiaU9#-n8Sd{FahL@dQH7N|$AFHnR9uDvJEJ7HNwUH&cZg zJs3+H;P0ti@iXT8lqDck9UR@cfqV#s(mXS}o3uO8L=WhbvKZ#@cn+)Od!u6a%yIwI z*pWr1!z4W)Vx?jfI~iWk@a90+Hoq-7;HH-Mxd*H}9|?Od!QyZhq_JS7t}uICX^YeEUq%@xfG* zZ$&+sUPpGExgEiDd{k)`;+y5SJW=PI-SHVG8q6Em6@nidK4b0i85=~ZJ3;n74coy6 z7>q2|^YkFV-9a>Pz0WQV6}ERW_15twa=(q(x>)d7Uyy*LTfGkF5n#H@gfMelVFiR( zjFjX?0By})W4~g&p4L~XOhFnSf!8`XuN)r&&H)FDl1@_=cR3h>S#Xbegb}z8MA}<; zxaibTUQk!H5@UBxl^-{&wDc5kH{ulE3z!IS#t%VuZ@T=cB-(TG0+iaLU%WOl#S4-S z;B#^mtd4x!)sY0$EIT|k^nc0}CYir(ZCOsk>;S(k2&v84NqfGpHQi2&o#Tg`w`ZIE z&<_ren&TF9KTRcAjB(yC#sHM1sg{1|<@7wA6wich4(8_l+FWH&H z!e9$+ioP&@bb#^YJ4n2V=Osfhl}IGudQ*Rc8v0KUPn7@m2|wg;b`3zlGE#?+XZSG- zidc!~rkD4ZYkAClkALf3b2#OGYizDi+?+X@HN(kJvP`1BAb-H}e(Q(+mxRam&o6>n zE=cZyJDfMArJVN6bd&Or}nRQG3TH zy!_0zHer2RDFjb{-G3pA`^CV=oB+*RYPzKC_R}|byUZ%Xz{r?3-d4(q)d1+DL)UJ+_84N*O28|6CG=khL*d!y7GARHEsV0^Oe-eKGw}V97Z7{l*Ob`_DYGb|6%BWJgZ7w!|dV@p-)Mbk!(!MKeHyXDrjaQ;CuXfrU zL80?MRKEQ(d)~XSHO0+1-a-zNtS? zLz8p&`WMB*-mj3M^rtJYjQgft5>H&5&EPh~l3d$AlE?4GZeCQDddV+93s5TpK>wIx zZpSa4$Uw^KEzim_V?}U!iZwA~Xi-c^O-6eh?!H>i?;;KrM~u8%b_^ZIDmdcevF87| z=!>$rZ?@9^w}tp$(|f(rqT!^9TwsG==bS#N^c8})@a_VVqv+DtHg^469C=fTc@OmU)e&0Q!ET@a zO3=n9$s!iW)hR!63YY|c6bQObW!sTTn@Xn#)4`l8=>kQOx#hO0-oZ>sa~e(O6NQc6 z|LWt!CUVksGUAk1F8sP4L@4%|N59+4$V!bMZJRx1KQt(ee>JGjP!}r@GINo0?B_p@ zos{9xOh`TQ{D)Iv>j3nuLV}h>c8|#&=tUnJsxNzSY*%iY6vg-!R?_u9)TV-bIR0Vc zTs{PqyNPZy?5rK?C?WzKiZ+VzbnqL`UnkIG=U3U!`s1$RB3G zhz4eNTvf*OvP)3ravLmv+6*H!Ui9>$s7^V&tZ3?IG3sgNn7TI2JY+m}mYxw$soa@0 zOzN){Z@od-z=gyn-5;twaIHrFvBf5Jdx`Nu>S7?b&HVxJLShKIvGaQBXIq26~ z)c0jQ-S~b4JD1llbypRwTL1E-MvqDO5sWyr^x&(KA1Ut}DMc${X^qSmxK7ap2vxBt69`Cx+A2;^c%mML6zL8=n1&X3p>g1LNY|-DT zq@32@p(-$EDVB3>xnfd+Nv5p|Eo~;W7_e`EWk_YMo_ARb`d*RyRGL8 z2zh=5>H~~K1xaJ$nN;}O<98r&+fta#wE*ePD9Ip}OuTmNaSW6JB<3cv? z^d|+1jrH)W*6$F;zWi`J$(R~DYw-j7AK$j=S+7+Ui?e;wG&|?6b+Y~nL$0);bHlJZ zM&)0z3(zGX6B%FpHU1B0Mh)O=3IgVIo_4WaQ?NBChP3qhc_2qZ0HvAI5Pb>exUfSL z0g8XZsCDRFz$xPpOGj&wJpbgb&@W%0YEiaxD_+1n%bZGvT`nJ)tl3bz#5>>Q+Jl*) zPtfqk8sDkB@2Cy!99mMzh%Gp4Xs$DD1#5TJxy`uog_|quWS&$cos8+3N5wJZ1}}In zuYWz!4Q`t)W8!Fnsg0Wr4^3@l-C`VeS7kw@VPzS#4mBDXa)@nT z2Oj5k@lR`yqc(7`eS7IC;^CSmDpCSqc=1AWr!!nKB!#x%T~Rjo97>L zcBT6w^zj07EESTL=m7*imZ%#6?R7t?nHJ6=$@}`+(5|!lA}8~h$ws>A&wjrNs{c3> z#SMVaR8YGt4bz!Z{`|P|V>q>I4zK!rKN}+3V`{N&tPfVT8|t+LMtW4tmL&dwJ`-n}MkU7{aAba(Y1Zwonjj>x8HGJ@%Ob7rujirQM;wJ+HDQ zt9J_mF$l=DHX@??O+ZmCcCt!Kwz+PI{6z7ghWe)j|9vbDwqM`;QCVLx{5fCUh^X#J zo7;UpXHcmnIPC!c>1_2-aj^%}+onwM;t1cDtsJw9nB6E1H`W?u*0Q(B;(n|Uf4L+d z$|N6Xee#d%N^eX!%!ya-S{KnJ>%%%{2AW~Re^;ll{N6dl7ehe1jKBJTu>{Hx{3l~H zi$(NHiIF||$v+%jPh1LUiw2j5x-wYh9843)hT!4M7 zV4{r6j)(~_j_uOb&07=pzkz530;%4^muEBySV1JTvx6o^XO2&#HSu0Mr_(X>U*5#l zUB~yk+x^YEV70}d?hEH#W*9rLa5-zWjZyhX%m#>Z#TaU1mrAn-yi?1S;#_~60HYmW zFP8S;>V;VOoYVJ+#g2d%-6ev`;Ks9fr={ zxbsZm|9;!d@2a3+U#VNTbn9v%jk!PFqaPeV!2zWz3rTvMYY@9uDXg_a!lwsF$q=3b=n%`(?k$ zz_ge=+CqgDhx=ChU1ge+&3d4sn73lgzNCe9w6yRN+K*dv$? zK<%UXB7d07y_Ng}dwh7P$WW7=E_J8>7lMEFTS@={(wMGD?-;TiVJ%Ql2`NzAF}@VJ zvNYqZZcX0Kq~pMir}ch%$5g*#-RAXmTfAw#mOtwD7*TV}F`)T}b57#&6Z^3k*$ac4I>T1m>mVsT z))nSJ<}A?h$C2xMn!-K2Wg(%Hi8i#6k zRRZ&iH;^3OI>Kiv3g0+Z*`9n=;+_jD*PNE&lSL?QL_|qtzB~@@$60A_#9JmjfUH0Y zy!!Dq^A~Hpr_T?przum!l|Aw=B`gr9U1iWMUVL>j`kcuQN+8uNRjCc0$Ow#KUti=Q zDT)tQj`P=XE2YvymDh1HO2oQd;kC0|f5v>i1ZaCcJ$F8l6<3ENqPCZNPEy~?XQsoJ z7Y0~R|KY;*M+QopQ>B&3JS^g1z4Bi2*xroq-I-VUWnB}6x(QIdsh!fspmrBRWzdU?& ztjyBmy-x(RKPj#J{mbA@WwViXjPJIYK(n}?WH-K4{>LTDlE?jV<2eLzvOry0fCecuX!I0q^HDpRFVPD`oWq)H$n=Yc(bmHrSma6T4ZMwD~L+&gQloWXJ zcXw0JtFp;)+I0y64>RPD`(+_`j6J~TLi%9rm=dLY2sGocBcZipABW~FJ2bwtc@*ZT3ADx+E!GO%*`@%l>Nk<`*mGx#ccdz zE$Oak_}K6F`|8|8Q>Qi_Q-2X&4jur&&R~8nYzCbxhhZZ`sMpRZI)KVD2Iw0_GXs2w zybEl*6W~4j@^>BG^l1dj9*UT$%sB|c*Kvo|fzioPutPWmL!dwAge``wm}7ADC%{a{ z)~(1OVb@;PNk2pbxvE>6eh8S%{^8@GkejC@*o~(30R8iXxbHmjfhQuIodfP{o|)4a z$q)zaaMC_^<&~4aJkZS@@J;C!5Ju>+ssKq7cJu)-iJ6SzJ{*F84v4)#cMnfjadOzI zgr=l|pe*Lx=zufP<{-pe-;`Y5!K9*Sd*H#4%`+0x?ys_aApH8^vCFr)`k=`E0N93I;4WT4CzswSgQb%8k&~2SIige|y13YNt0)}6VwihW z|5_cf!3*%lGs!QQ$Z9QsSJSj~x{Y+b+~IBe^og@@kk;xdDW#50hU#-&eGHzXRl_C& z6Zg(LvY9(FK>$3sywksS#uLgis`(`{bpgrtu+GbU^3~=)m==%+&CDGQz(*u_*#}jZ z%FR`hIQy!tE^v*9(W~D0s|=L$bE8GqjL0lOXH!bG=PW0rnD(L%9TtFE2UBe}V{sPK zlS2=&KBc!^rJ3BCttYq&dIDGV-HxZI1~uGwKl*7E9S`D|Y|G$Ba%l8H*(`z7`GF>p zsRfT2X<{wNT*%p18YJ7NL3K%|&Rzg=Ae@V}8gUAuNk6;2X3BDWV?(6nwq;bwa&?L& zm^eGsM;fC@ZClivU8pK@$%+EU7<>dw9^!ek?8K!*jqYM}!TWbM?Nj6c?V7FfJCM}G zLx@FAL&4Q#F?q;jwM@n74Ona9v6Yu~q;P&hx-!1B|34hAI}cr;IfmiKb^vGO8&&gB zDP=y#wMR>>JO1Sf`|6Yld>RqT#w!XTo`qx6+Q|i?!Fg>SYZk1i?lbJi=>NIw^f;UN zSUCUBc#oez-^T!^sa>Qp<9VB;`#)VF9TENhm~wo~%Q2uFn^LmJ{QR8HLyl=zeK;`bEVvR&XQPq0F zGJq0>MHE0Oe_`^>bqaOGM!_*mEX_UPH~@^c zOp5{PjQ)B2c(^dt475{<5?mM8XpTI~X++guoE~q(NnfvBwD zCV6Bj6FS!eq0?M~-$d8MpDui(Vuj;-ttf{T*Hphm75=4qfi2?#r zr6^LPav&m2dJ|CTHFN?5Vgsb+fD|bbrHFKpUL;ZkX@YbD2qAO`Bm^Ol;@#)m_j|tg zz0Y^=|NA4)lk6XR&%Ltt+H;OM));cHr^j>@kQ3^W=0N6(x7W&W(NpYb zFNyuRZLnFs2UW#06^7)kSI4V4BYT^4a9eG`bnuVq zQUhy$QEzT3|JftbwG8O4oWXzLL&N!jTlEa1x#n4T9BPRJXp(`Mi8ds;8Pf-ipUAQ) zSCU7AY7=)cI+aNB9Tt6Ug4hZ>upCc&E~2QC2i=t%fUV;}l;aOCnaV4TqlH zq{0|ebj_m14HuFjR&-2FCg*+fpZVg_<6HA2bGewCOeMyMP+OnL%3WC* z#498wAN@|b0UQvO{r2bz2p%$s_)Pa zS^nrpw()7Q`@P#PnB|o@L=v9dlDjqFFCaj^@o2+vU36}*zUT*# zDX2TL7m~$wqnt7`3!PQI%U7e-33W&UEfo2fjC~39_zmK5Khk*Hii>Ef+qGW!8R>b? ziqaS&)+9HTG}GNrGpEYb8E6@&3=w_AbY&Cb2z^NQfVJ?+eCF(JJ(@A%Z3eZiclgNW zF0>F4$%_zq_RV)(Az_-~!kMA!?>&v1v)*#e(T*MRt-wmX7oCXL;@xMX4ieB@%yH(0 z(O=#xt$0tpqqC5+joxVs`1dMdSY8Bt|{1KAJk zJserrVqAbK|BYxB|2O<4`zGZ^Mt{Q&*5Ls6Y1t?M5W&&$nyETh`>oJ2H)aAW5Gg}< zt{-i6FNHk@<9tL~GwpStVp>%_<&od!L?l-|FsXZ+Spdgt^2=+2+)39N)FKUt#EWf+jL!4&yY*Hx&OU3rRH(z7JBVn(z{3b#>8(kSMXPr%Tb){Nl z$~VL?&?M0{tMo8T{5Kt~j>h1g^QPRpo;EC9xR zmCxi-PQtF~ks~#r)fG@`9H|DKe{hmevEDwCf#|L5ELG3J^laa1_oun5{@5roz>cg2 zl_0H$z246@uqg)3uyXd0Z#jb3=P4+r$Ycm~O#rJQBtENOeESt=#-`CI&8PQ9WGG~lm z?8fZUZcgSm|4{rH2uYYUbq6Rp4XugMCt~=Fx<79M5)X?Is&1PEHSOF1PAs}x+}El1 z_~2J01pH+OGLs@qLM7x`ER?wOUUp#Y0enzKim4Mt$ZU3@uc zjB%Rvd%o+Ow1Jj8hI&s9fJM}S*8AV+S)9?eJI=HG4TV~67ZK5v5IXq<(4kDnx-T35 z2;^ze#Kd0xZ?J3%i3*1f0aQwJB5Fw7tH>fHVDiA3$i-?1B z^cU&+3AhaxeoQm`$~IQDxBf5;)h_FecX6XT2WCf~w&gx9go$j!o_q7iF(yHrEJC68 zM|)aUO8&L+-7q3}$S`8m&gN^>mpO$!pymzuDM{_gNBGQe4DKJkc?9!;X@pg&gCE;x z0^6EuYkTNPyjoLJQsD7*7@ZS07>1}v<|-)dL1-H80{x)e2D;%b-*jQwt;1~KMHMvY z!^l;Om42)<;Ai_(o=M>di8ROJD{+_H2v$L*%FTD^z90F1gPsa0?qnUHsX>WJ&?TQ{ zx|ii|Q2aYoyR=sieQ**=J%***0f3OV^K5IqnxyZXE-c+x{a_)cM*^uu?(e)5QT{?( z;DB6lSkNh%kjv#1eB&Ukc`E^YTjf_}cH~7=yDG8m5>R;RPQLCMozpFtE$`^^=03i_ zp%VhJIWoC{g9?pP_`1asJ*oqPtM{6C>`AE_*%neBQ1UNVAYZoq4buM1>#)mHcLd$# z`X7&SFXc|VhnZaOH>tdT`talN?@*8Vmky*>=BdqG!9+`#T8o;u8*JlrBcdjBDE~UOLD2w!-U!Q+W zMFkGrtRw3qr*5&JC&hOwZ!_LRUPX0S;xqT8G7DatkZ6Z8jZ3|MKwD4&N#N##%6n7{ zkbV%TsYj@(J(`B1$@xYc>8GR<`zhp?qIZI))PhSPH5fW4svD>L^%c^fax=?5{!#Ut zZ7&(!rrfO~`7h@7VbS6$ghJF6Kk?(MNC&M8rVt(Da>p? zmHoNpYht8CmTUrCVoSXmxJ&>PVaQMjaZ=hBSQ~fdU z=(fNa0%^dC$Gnrc2N^JzQ5zD06&O^1ql`@QTkiR&@z5SK2ktSez*9BNH9Zv-qwa=-N$grLLcAs~_moM1WKv zMD&K#e3w~#yS8{q_2KrZRDfUYM9gnmcf=RPOdp^guS>najmV=%8p??2BQn(`-EY%w zgZzm4yvc-}o-qL320WBS+U~p^flVgd0=|=+#bt)tigY;O$)Z->20H!G9~fUje!<|xYD(l>p)#>2c(+AxV8wd$oN^Me?xo}skDNbO$_KtL-R`mw!%zF zv*dBlkuv9*!aO2;afuxoPlp=Y-=JAgb2mF3Y6b$V@74@nvN;RMM2Luhel0fnO&6YR z0INqz(o-iDmo0JBi0`M8{XcSBxi#ex&u_SRYYus!Gj0;=(Dmmc&Jfh*sk+!F#8aM|2n(0S zSIrkmECX{a;-4dpdhDg0=+>PoNf#u|1>Wn{7qJLUeA)pD@;hJQLBt9iYs8GUJVs@$?~*AV??R*6(_&1vF2cYAqg0AV0!T4jZ5;KDjdfVtVs2N=2N;Qa3q?!C#jg%n?cr29p=B=u93)>v& zqmyoB-@woQAXMLQ!5hlTS~iEwS&LWWU8lB%Iwta8;Y;Kb@@Cw-d-t0|^bbRr9D{D+ zs?SLU$5*kHBUpX)t9&t?^&SI!>0G_P)U=VHzhX0um3^QR7Xh=AO91HFLCIeWZn07f zz3-O`JJvS2HkjD+L~`+`LO@0fe*h&Yy!1fRQgcXZMOL=#3Kup-QnhV=_CFz@I`3wH zQ$zsz+BTOT{gi0!q0@jheJ#M)9gt!I5QG zb})K$Gf8TX{X(a4akPK=={~(?BZ?+WquAueXpvZ37=IQj=~p*43RPccQii{$EUo2~ z;N+U)SVYrl3uk;_N>cOhGYU0@ZEdKpyLk3Vh-~9OlQeY9|2(#$fAYa?P~dUg=N1F# zI*E3#2z{rQP{~a}6ZP8xp3cszt=4F=W+4?-(A$2%y-$ZmcXkRLUd}5NG>My2LP9S* zky4kI!`?gyx581uWJs5g7%53W4xshj$L_xzpG!PYr z;8RrDdoREM6Nv3kCwf6|@!1zc^uwT)Qo5qH>W5lj;k^6v6PQJ^$e`(Dqee|`+Ahy> zrn2mc32aV15Rx&{*1(dcci~men!)IdvtYE0GED&L>t1TDcv8w_s#X z8gGw157|-IFHd?sZ`O{b&Y`aQ?4sL~1!7Ns%V*?a{=)&NqY+oCdxntGk9(HAIL)5o z<;GRe!s>g`;|Z4LG&#il18N9O3h6yoi>-<%x$ypk@{xDjd)D-pv`DuK&U;NmCn_BW z-P|Cx2XQ_?Lj}cYe-SC<(m;+zA1gsX@12kGlrfkO)bp+hesVG5-3Rv3L8I!@n1F;7 z%#P!Zo%rZC3i;L=finvuw>{rdjvgJNUU3B8CnTft6WiiUG0QnyKPc8m_ZM_E!E!R| z-AqIw(5f9pt;KpSqo^V*Xn31&WJj1-VTo)moZt9!Vq!GrWP+&l)~TuY=81^yQ?|uR zSw|QX5hBh7NI4+}lgvf{Q=)5&QM~SY+Pk3c`xd5~#)M#-TbLi>{vA?Uv-*Ep$2tqS z@K+V*sioIDtms;rS@XDw-pe)ScY4_k$crWApS8*P(W{A;>AWoY!R*x*%j<-ODtf6~ zl816kz)EFi`4blYk92v`&(e^qUngG#_HJLj-1=z>*U|<8rRZvaAW=6v@$l%q{=&vu zQe?)7zSEXTebe`s9xXgqyI_~El{~Xsz;PYYp_vw6#Ipm}(ElkEkNmEh;|x6C=yM(i z=QQSD1U6L&EEjn4ySN^u_`6R)&eEZUMyu0Qs9s&>o!eyVnJb`QOC0`)9lK}Go)O%I z_IkZC$3D)WH*LEOnFpr4QH6Y})kQ+y`(uPcsy04;GbVSnJ?voyr+lcu6s|fswpVnu zN$kT&Bm{x#JTNhE#tUkGcX5zzwFutmauVP?O}K1nRX_3vI^)B&?n!_A)6x|I-&(F5 zg26R-c+jm-&GS@?U3{+5iFLIG*N`chr0qk^UvMpI=({z=-W%wbWnRZ+Jpvk`cIr9^6O8Ke=rj9cnfQ=#sciP{ zPF_D}sZzAy`v`K}Ct)07=FqfWAU8L!U_;So#rrN;)=qZuUiOKCTw?)&BsPYch0NsB zJv~Z1=FHTr*!|Lhj-@iEJIAKr|%>nGNO8mXQ7Le^I$+l1p zc(HuZ=?bf_SErUQ;Co_-F4m7pK5uGtLh>Wx#<(B%{T0v+4vScQswATWoUQ%HyXy_> zB|SA)FZP_*c9!WdL(S)}`@~+SW`CX{7+$mK>$&DlBHXEJvM#4XK6DE2IaSwN2*OS% z3%ZZep~G+&cUj~WN2T(oc0`%CuRwqFs;r$1x(h8@hGp#0Kdxj1v*vIvf2!`AL23?r z`J{WIPEXnPU-VA7TKGwo^SbYyJyDC##hz>~ae}gL`6^dTd(8zLYbKHt+c0UzL;zq* zj#QjpvExq=GIy>v`ZL;UA!9J=y^La`g|q1MX~8pGGyJh-c(=i{e*Bx|`;V4mw>u|l zPawn4`VXG0jy#pnL;0eXJ2r~~_#j7u^6;g2=0mv3Y8i@d=XU5|)R+8zs8HU|2V+1)Fy|HBvWEtuoOdg^?klG;dHlmJFz}Z2N?jXnbCQqc&d|@tCbC7>A-mw#4OEgGQ?}ybfk~*tDw_0;bsqN`HLOWt z9swc5=hIB!M=U>4^TvQ6oNFIYAETm#EDs5QAY8+K!TcV$6%e}t@T$c%=GedDaiH5- z?_!4_cvu<}@f*YnDrXccGmh^-cRpgN&Coi4N$@UWmGKK02VM(gC8Y;Y#6jgkJDy6R zJOJqNHf@Nu0Yro*>SEU*p@0Gm00Mm-$4Jr1Os;>0Xrw;b5DdKBL(WUP=t4joqi z>(u{o_aAgW_RR&-u>S;9@z2Ezkt=F|zD{>3}!xzqs|ZZK{RicJ=WIxJ=O)lCAr3JIVf*G847R_2l>-uuCDZ@@H>V`Pw@T%Xcqf?*AnziZ zO^$f!0yP(FWkVVZFyn0_|Bn0GSrAZk$_A|++79ru%Gh7Ebei0g`G_G zhXd`ONSV&4uIql(?TQz@2R#ed{&ZrmdpKfuZ{IhpS1Pj}c#d4Zev-MlC_#B!x-0=y z871G7Dg|qH67yxG8c)1ve*(K3;nALmMo|tQh+Os$iO@Dm_MYvJAJFsTUq86u{SCTN zpKElGt+A1~6ScQVeQ81sRuOsl*j|FqP@};Twj9aTE2DSok%xzlLVQAfc*O#Nmn@J) zWxI2t1Yy`7N_2%&4@$K!&5q8E z55KY%-)5S%!62Q7W<7Ep?YC$*N@{8?N^96%{PVx4veHZOf>6w7W(@oredFuoOQ1)o zozcm&dz!frj<_i2b82JFf(J~8J}umh^dd#(y;`QaeeId<9tzAWn{*KvScW~Vl_qMQ zuj;8QY%|)lnK&<&Zo74)UXRDFzKMbr8FbX0fcep|X~zUYfLUz&m=yT2VQVpeEoG1P ztT*#0Y~W~oVC0Ud1gR^&wUSi(k}(1!vzmpL{gV2?Q=|Xs`sIA_gWF6o?)OX2RoVsD zt;$4lgxN8mM}{s#vZw0$WL&=v@rb zwGK{`Efsk>)feL>BwPIC^FVl1 zBp(_^nvC+IYZP{Ek*D43t88X;214YmhNDiT=zdwEj7_xE;-VP2Gb)R=p$SRfO)u`w zAv%TpJ4xkN_(7V)Gwl3t-$qE~nxwv6##+v9yu8BgRw^4`wX{whb={D>^S6nc>HkE9 z=Rg$~Kl%-_kjQJ;q&NldLA1Hd&r0OQf&PE`NU9vgNxai{!XP3c1IF6_TQFqk_w@e) Dp4>I| literal 0 HcmV?d00001