From 34770b83a3e07b87cbb9457c52aa047a55a94a44 Mon Sep 17 00:00:00 2001 From: workpc Date: Wed, 9 Jul 2025 17:52:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8A=E6=95=B0=E6=8D=AE=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aisenzhecode/沥青/定性模型数据项12-11.xlsx | Bin 93024 -> 93699 bytes aisenzhecode/沥青/沥青定性每日执行.py | 1888 ++++++++--------- aisenzhecode/石油苯/日度价格预测_最佳模型.pkl | Bin 140607 -> 141833 bytes aisenzhecode/石油苯/纯苯数据项.xls | Bin 170496 -> 174592 bytes aisenzhecode/石油苯/纯苯每日价格预测.py | 343 ++- 5 files changed, 1037 insertions(+), 1194 deletions(-) diff --git a/aisenzhecode/沥青/定性模型数据项12-11.xlsx b/aisenzhecode/沥青/定性模型数据项12-11.xlsx index cf7ddade1818252379863fb06dc892348bde7788..7fd829c2f10b93d47fd1dd3444c9b86545742b30 100644 GIT binary patch literal 93699 zcmZ^}bzD?y_dYBtptO>b79uc&)X<0u2nZ-W15(l*k^-Y3A)u(h5JQT9NH<8g#Lx`g z-7(TJ@807%&-Zygzt8&z=cw$p*Sgob*0ti^&y_D-rnzw8!j%iub}MlCR+Xnwz~9io z4;AoZ>hS8hvxB1xpRuDOuZNwjO1BDW13wwjbgjBuS!@XFcZw%cA&FJpysiPIoObVz zw>B=z*n4{ZX8Oka;r6}K7`YwZc{@RYR`Q3KJIB%;?I|HC^KWt=OuP##V5I!c#(Jso zo88dcfCprvowH^6D+9dp7OvgMNA88I#V$aIj^KGm}s)d9h1}QY(u^a}(l1 zH9BZD5*OPYPE84GiGR^Q|DPk|7d(~T1WfNBxNzaxe;?tMgR>cUhNv&~s*U_)fre)7 z)vlugL@%OAgQ=fBeRk0)^twZqW#9b=)(89F&DH{^8y=j?AWEa)Z&E7XcBfz&e$^ff z+})#kF_l2Cc=`ULFZ7P)SN%UCM4q)hqbP{Ytl7fW#FZDnAaGC%=j-2v&E4kA_|i6N znR1D1)sLBPHz*}%=9?~?1%kc@(sx;wINZif$snup1br!joiF-^q1mZhWAtoDsP&%o zFW)~&0i}ZI(xZ%>#RiY-zZrecP^TCF*EzBJ@pq_*E?kJ`xNw0QaE^y9-)l=VJF~z4 zeE_;=1Fq*XDoW$KmDl58v2RD(BJ!@ZnA*k4ZLB!<{e~)Az%|{Eww|V6-Xm%iM5sED z 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

  • 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 threshold: + df.iloc[-2, column_index] = previous_value + logging.info("指定列值变化大于阈值,已将当前值修改为前一天的值") + df.to_excel(file_path, index=False, engine='openpyxl') + logging.info("Excel 文件更新完成") + except Exception as e: + logging.error("更新 Excel 文件时发生异常: %s", str(e)) - # 获取昨天,前天数据 - df1 = df[-3:-1] - print(df1) - # 获取前一天的指定列值 - previous_value = df1.iloc[0, column_index] - print('前一天的',previous_value,type(previous_value)) - # 获取当前的指定列值 - current_value = df1.iloc[1, column_index] - print('现在的',current_value,type(current_value)) - # 判断指定列值的变化是否大于阈值 - if abs(current_value - previous_value) > threshold: - # 如果变化大于阈值,将当前的指定列值改为前一天的值 - df.iloc[-2, column_index] = previous_value - print('修改了') - # print(df.tail()) - # 将修改后的数据写回Excel文件 - df.to_excel(file_path, index=False,engine='openpyxl') def getLogToken(): - login_res = requests.post(url=login_url, json=login_data, timeout=(3, 5)) - text = json.loads(login_res.text) - if text["status"]: - token = text["data"]["accessToken"] - else: - print("获取认证失败") - token = None - return token - -def updateExcelDatabak(date='',token=None): - workbook = xlrd.open_workbook(read_file_path_name) - - # 选择第一个表格 - sheet = workbook.sheet_by_index(0) - - row_data = sheet.row_values(1) - one_cols = row_data - - cur_time,cur_time2 = getNow(date) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] -# datas = search_value - if search_value: - datas = search_value - else : - datas = None - - - append_rows = [cur_time2] - dataItemNo_dataValue = {} -# for data_value in datas: -# dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" + try: + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + if text["status"]: + token = text["data"]["accessToken"] + logging.info("成功获取日志 token") + return token else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') - - # 获取所有sheet的个数 - sheet_count = len(workbook.sheet_names()) - - # 获取所有sheet的名称 - sheet_names = workbook.sheet_names() - - new_workbook = xlwt.Workbook() - for i in range(sheet_count): - # 获取当前sheet - sheet = workbook.sheet_by_index(i) - - # 获取sheet的行数和列数 - row_count = sheet.nrows - col_count = sheet.ncols - # 获取原有数据 - data = [] - for row in range(row_count): - row_data = [] - for col in range(col_count): - row_data.append(sheet.cell_value(row, col)) - data.append(row_data) - # 创建xlwt的Workbook对象 - # 创建sheet - new_sheet = new_workbook.add_sheet(sheet_names[i]) - - # 将原有的数据写入新的sheet - for row in range(row_count): - for col in range(col_count): - new_sheet.write(row, col, data[row][col]) - - if i == 0: - - # 在新的sheet中添加数据 - for col in range(col_count): - new_sheet.write(row_count, col, append_rows[col]) - - # 保存新的xls文件 - new_workbook.save("定性模型数据项12-11.xlsx") - -def updateYesterdayExcelData(date='', token=None): - # 使用pandas读取Excel文件 - df = pd.read_excel(read_file_path_name, engine='openpyxl') - - # 获取第二行的数据作为列名 - one_cols = df.iloc[0,:].tolist() - - # 获取当前日期的前一天 - if date == '': - previous_date = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d') - else: - # 字符串转日期 - previous_date = (datetime.strptime(date, "%Y-%m-%d")-timedelta(days=1)).strftime('%Y-%m-%d') - - - cur_time, cur_time2 = getNow(previous_date) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] - if search_value: - datas = search_value - else: - datas = None - - append_rows = [cur_time2] - dataItemNo_dataValue = {} - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - print('更新数据前') - print(df.tail(1)) - # 检查日期是否已存在于数据中 - if previous_date not in df['日期'].values: - # 将新的数据添加到DataFrame中 - new_row = pd.DataFrame([append_rows], columns=df.columns.tolist()) - df = pd.concat([df, new_row], ignore_index=True) - else: - # 更新现有数据 - print('日期存在,即将更新') - print('新数据',append_rows[1:]) - df.loc[df['日期'] == previous_date, df.columns.tolist()[1:]] = append_rows[1:] - - print('更新数据后') - print(df.tail(1)) - # 使用pandas保存Excel文件 - df.to_excel("定性模型数据项12-11.xlsx", index=False, engine='openpyxl') - - -def updateExcelData(date='', token=None): - # 使用pandas读取Excel文件 - df = pd.read_excel(read_file_path_name, engine='openpyxl') - - # 获取第一行的数据作为列名 - # one_cols = df.columns.tolist() - - # 获取第二行的数据作为列名 - one_cols = df.iloc[0,:].tolist() - - cur_time, cur_time2 = getNow(date) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] - if search_value: - datas = search_value - else: - datas = None - - append_rows = [cur_time2] - dataItemNo_dataValue = {} - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - # 将新的数据添加到DataFrame中 - new_row = pd.DataFrame([append_rows], columns=df.columns.tolist()) - df = pd.concat([df, new_row], ignore_index=True) - # df = df.append(pd.Series(append_rows), ignore_index=True) - - # 使用pandas保存Excel文件 - df.to_excel("定性模型数据项12-11.xlsx", index=False, engine='openpyxl') - - -def qualitativeModel(): - df = pd.read_excel('定性模型数据项12-11.xlsx') - - df=df.fillna(df.ffill()) - df1 = df[-3:-1].reset_index() - print(df1) - ''' - # if df1.loc[1,'70号沥青开工率'] > 0.3: - 2025年1月8日 修改: - 复盘分析后发现2024-7月开始,开工率数据从0.28 变为了28 ,改为下面的判断规则 - ''' - if df1.loc[1,'70号沥青开工率'] / 100 > 0.3: - a = -(df1.loc[1,'70号沥青开工率'] / 100 -0.2)*5/0.1 - else : - a = 0 - b = df1.loc[1,'资金因素'] - - print('昨日计划提货偏差改之前',df1.loc[1,'昨日计划提货偏差']) - # 昨日计划提货偏差 = 京博产量 - 计划产量 - df1.loc[1,'昨日计划提货偏差'] = df1.loc[1,'京博产量'] - df1.loc[1,'计划产量'] - - print('昨日计划提货偏差改之后',df1.loc[1,'昨日计划提货偏差']) - if df1.loc[1,'昨日计划提货偏差']>0: - c = df1.loc[1,'昨日计划提货偏差']*10/2000 - else : - c = df1.loc[1,'昨日计划提货偏差']*10/3000 - - # 生产情况 = (京博产量 - 计划产量)/500*5 - d = (df1.loc[1,'京博产量'] - df1.loc[1,'计划产量']) / 500 * 5 - - if df1.loc[1,'基质沥青库存']/265007 >0.8: - e = (df1.loc[1,'基质沥青库存'] - df1.loc[0,'基质沥青库存'])*10/-5000 - else : - e = 0 -# f = df1.loc[1,'下游客户价格预期'] - f = 1 # 2025年1月23日修改:价格预期都按1计算 - if abs(df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])>=100: - g = (df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])*50/100 - else : - g = 0 - h = df1.loc[1,'订单结构'] - x = round(0.08*a+0*b+0.15*c+0.08*d +0.03*e +0.08*f +0.4*g+0.18*h+df1.loc[0,'京博指导价'],2) - return x - - -def getNow(date='',offset=0): - if date == '': - now = datetime.now() - timedelta(days=offset) - else: - try: - date = datetime.strptime(date, "%Y-%m-%d") - except: - date = datetime.strptime(date, "%Y%m%d") - now = date - - year = now.year - month = now.month - day = now.day - - if month < 10: - month = "0" + str(month) - if day < 10: - day = "0" + str(day) - cur_time = str(year) + str(month) + str(day) - cur_time2 = str(year) + "-" + str(month) + "-" + str(day) - return cur_time,cur_time2 - -def pushData(cur_time,x,token_push): - data1 = { - "funcModule": "数据表信息列表", - "funcOperation": "新增", - "data": [ - {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", - "dataDate": cur_time, - "dataStatus": "add", - "dataValue": x - } - ] - } - headers1 = {"Authorization": token_push} - res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) - -def start_2(date='',token=None): - workbook = xlrd.open_workbook(read_file_path_name) - - # 选择第一个表格 - sheet = workbook.sheet_by_index(0) - - # 获取行数和列数 - num_rows = sheet.nrows - - row_data = sheet.row_values(1) - one_cols = row_data - - cur_time,cur_time2 = getNow(date) - - - - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] -# datas = search_value - if search_value: - datas = search_value - else : - datas = None - - - append_rows = [cur_time2] - dataItemNo_dataValue = {} -# for data_value in datas: -# dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') - - # 获取所有sheet的个数 - sheet_count = len(workbook.sheet_names()) - - # 获取所有sheet的名称 - sheet_names = workbook.sheet_names() - - new_workbook = xlwt.Workbook() - for i in range(sheet_count): - # 获取当前sheet - sheet = workbook.sheet_by_index(i) - - # 获取sheet的行数和列数 - row_count = sheet.nrows - col_count = sheet.ncols - # 获取原有数据 - data = [] - for row in range(row_count): - row_data = [] - for col in range(col_count): - row_data.append(sheet.cell_value(row, col)) - data.append(row_data) - # 创建xlwt的Workbook对象 - # 创建sheet - new_sheet = new_workbook.add_sheet(sheet_names[i]) - - # 将原有的数据写入新的sheet - for row in range(row_count): - for col in range(col_count): - new_sheet.write(row, col, data[row][col]) - - if i == 0: - - # 在新的sheet中添加数据 - for col in range(col_count): - new_sheet.write(row_count, col, append_rows[col]) - - # 保存新的xls文件 - new_workbook.save("定性模型数据项12-11.xlsx") - - update_e_value('定性模型数据项12-11.xlsx', 8, 1000) - - df = pd.read_excel('定性模型数据项12-11.xlsx') - - df=df.fillna(df.ffill()) - df1 = df[-2:].reset_index() - ''' - # if df1.loc[1,'70号沥青开工率'] > 0.3: - 2025年1月8日 修改: - 复盘分析后发现2024-7月开始,开工率数据从0.28 变为了28 ,改为下面的判断规则 - ''' - if df1.loc[1,'70号沥青开工率'] > 30: - a = (df1.loc[1,'70号沥青开工率']-0.2)*5/0.1 - else : - a = 0 - b = df1.loc[1,'资金因素'] - if df1.loc[1,'昨日计划提货偏差']>0: - c = df1.loc[1,'昨日计划提货偏差']*10/2000 - else : - c = df1.loc[1,'昨日计划提货偏差']*10/3000 - d = df1.loc[1,'生产情况'] - if df1.loc[1,'基质沥青库存']/265007 >0.8: - e = (df1.loc[1,'基质沥青库存'] - df1.loc[0,'基质沥青库存'])*10/-5000 - else : - e = 0 -# f = df1.loc[1,'下游客户价格预期'] - f = 1 # 2025年1月23日修改:价格预期都按1计算 - if abs(df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])>=100: - g = (df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])*50/100 - else : - g = 0 - h = df1.loc[1,'订单结构'] - x = round(0.08*a+0*b+0.15*c+0.08*d +0.03*e +0.08*f +0.4*g+0.18*h+df1.loc[0,'京博指导价'],2) - - login_res1 = requests.post(url=login_push_url, json=login_push_data, timeout=(3, 5)) - text1 = json.loads(login_res1.text) - token_push = text1["data"]["accessToken"] - - - data1 = { - "funcModule": "数据表信息列表", - "funcOperation": "新增", - "data": [ - {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", - "dataDate": cur_time, - "dataStatus": "add", - "dataValue": x - } - - ] - } - headers1 = {"Authorization": token_push} - # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) - - -def start(now=None): - workbook = xlrd.open_workbook(read_file_path_name) - - - - # 选择第一个表格 - sheet = workbook.sheet_by_index(0) - - # 获取行数和列数 - num_rows = sheet.nrows - - - - row_data = sheet.row_values(1) - one_cols = row_data - - - login_res = requests.post(url=login_url, json=login_data, timeout=(3, 5)) - text = json.loads(login_res.text) - if text["status"]: - token = text["data"]["accessToken"] - else: - print("获取认证失败") - token = None - - if now is None: - now = datetime.now() - year = now.year - month = now.month - day = now.day - - if month < 10: - month = "0" + str(month) - if day < 10: - day = "0" + str(day) - cur_time = str(year) + str(month) + str(day) - cur_time2 = str(year) + "-" + str(month) + "-" + str(day) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] -# datas = search_value - if search_value: - datas = search_value - else : - datas = None - - - append_rows = [cur_time2] - dataItemNo_dataValue = {} -# for data_value in datas: -# dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') - - # 获取所有sheet的个数 - sheet_count = len(workbook.sheet_names()) - - # 获取所有sheet的名称 - sheet_names = workbook.sheet_names() - - new_workbook = xlwt.Workbook() - for i in range(sheet_count): - # 获取当前sheet - sheet = workbook.sheet_by_index(i) - - # 获取sheet的行数和列数 - row_count = sheet.nrows - col_count = sheet.ncols - # 获取原有数据 - data = [] - for row in range(row_count): - row_data = [] - for col in range(col_count): - row_data.append(sheet.cell_value(row, col)) - data.append(row_data) - # 创建xlwt的Workbook对象 - # 创建sheet - new_sheet = new_workbook.add_sheet(sheet_names[i]) - - # 将原有的数据写入新的sheet - for row in range(row_count): - for col in range(col_count): - new_sheet.write(row, col, data[row][col]) - - if i == 0: - # 在新的sheet中添加数据 - for col in range(col_count): - new_sheet.write(row_count, col, append_rows[col]) - - # 保存新的xls文件 - new_workbook.save("定性模型数据项12-11.xlsx") - - - update_e_value('定性模型数据项12-11.xlsx', 8, 1000) - - df = pd.read_excel('定性模型数据项12-11.xlsx') - df=df.fillna(df.ffill()) - df1 = df[-2:].reset_index() - print(df1) - # if df1.loc[1,'70号沥青开工率'] > 0.3: -- 2025年1月9日 发版更改 - if df1.loc[1,'70号沥青开工率'] / 100 > 0.3: - a = (df1.loc[1,'70号沥青开工率'] / 100 -0.2)*5/0.1 - else : - a = 0 - b = df1.loc[1,'资金因素'] - if df1.loc[1,'昨日计划提货偏差']>0: - c = df1.loc[1,'昨日计划提货偏差']*10/2000 - else : - c = df1.loc[1,'昨日计划提货偏差']*10/3000 - d = df1.loc[1,'生产情况'] - if df1.loc[1,'基质沥青库存']/265007 >0.8: - e = (df1.loc[1,'基质沥青库存'] - df1.loc[0,'基质沥青库存'])*10/-5000 - else : - e = 0 -# f = df1.loc[1,'下游客户价格预期'] - f = 1 # 2025年1月23日修改:价格预期都按1计算 - if abs(df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])>=100: - g = (df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])*50/100 - else : - g = 0 - h = df1.loc[1,'订单结构'] - x = round(0.08*a+0*b+0.15*c+0.08*d +0.03*e +0.08*f +0.4*g+0.18*h+df1.loc[0,'京博指导价'],2) - - - # login_res1 = requests.post(url=login_url, json=login_data, timeout=(3, 30)) - # text1 = json.loads(login_res1.text) - # token_push = text1["data"]["accessToken"] - - - # data1 = { - # "funcModule": "数据表信息列表", - # "funcOperation": "新增", - # "data": [ - # {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", - # "dataDate": cur_time, - # "dataStatus": "add", - # "dataValue": x - # } - - # ] - # } - # headers1 = {"Authorization": token_push} - # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) - - - -def start_test(): - workbook = xlrd.open_workbook(read_file_path_name) - - - - # 选择第一个表格 - sheet = workbook.sheet_by_index(0) - - # 获取行数和列数 - num_rows = sheet.nrows - - - - row_data = sheet.row_values(1) - one_cols = row_data - - - login_res = requests.post(url=login_url, json=login_data, timeout=(3, 5)) - text = json.loads(login_res.text) - if text["status"]: - token = text["data"]["accessToken"] - else: - print("获取认证失败") - token = None - - - now = datetime.now() - year = now.year - month = now.month - day = now.day - - if month < 10: - month = "0" + str(month) - if day < 10: - day = "0" + str(day) - cur_time = str(year) + str(month) + str(day) - cur_time2 = str(year) + "-" + str(month) + "-" + str(day) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] -# datas = search_value - if search_value: - datas = search_value - else : - datas = None - - - append_rows = [cur_time2] - dataItemNo_dataValue = {} -# for data_value in datas: -# dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') - - # 获取所有sheet的个数 - sheet_count = len(workbook.sheet_names()) - - # 获取所有sheet的名称 - sheet_names = workbook.sheet_names() - - new_workbook = xlwt.Workbook() - for i in range(sheet_count): - # 获取当前sheet - sheet = workbook.sheet_by_index(i) - - # 获取sheet的行数和列数 - row_count = sheet.nrows - col_count = sheet.ncols - # 获取原有数据 - data = [] - for row in range(row_count): - row_data = [] - for col in range(col_count): - row_data.append(sheet.cell_value(row, col)) - data.append(row_data) - # 创建xlwt的Workbook对象 - # 创建sheet - new_sheet = new_workbook.add_sheet(sheet_names[i]) - - # 将原有的数据写入新的sheet - for row in range(row_count): - for col in range(col_count): - new_sheet.write(row, col, data[row][col]) - - if i == 0: - # 在新的sheet中添加数据 - for col in range(col_count): - new_sheet.write(row_count, col, append_rows[col]) - - # 保存新的xls文件 - new_workbook.save("定性模型数据项12-11.xlsx") - - update_e_value('定性模型数据项12-11.xlsx', 8, 1000) - - df = pd.read_excel('定性模型数据项12-11.xlsx') - df=df.fillna(df.ffill()) - df1 = df[-2:].reset_index() - # if df1.loc[1,'70号沥青开工率'] > 0.3: -- 2025年1月9日 发版更改 - if df1.loc[1,'70号沥青开工率'] / 100 > 0.3: - a = (df1.loc[1,'70号沥青开工率'] / 100 -0.2)*5/0.1 - else : - a = 0 - b = df1.loc[1,'资金因素'] - if df1.loc[1,'昨日计划提货偏差']>0: - c = df1.loc[1,'昨日计划提货偏差']*10/2000 - else : - c = df1.loc[1,'昨日计划提货偏差']*10/3000 - d = df1.loc[1,'生产情况'] - if df1.loc[1,'基质沥青库存']/265007 >0.8: - e = (df1.loc[1,'基质沥青库存'] - df1.loc[0,'基质沥青库存'])*10/-5000 - else : - e = 0 -# f = df1.loc[1,'下游客户价格预期'] - f = 1 # 2025年1月23日修改:价格预期都按1计算 - if abs(df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])>=100: - g = (df1.loc[1,'即期成本'] - df1.loc[0,'即期成本'])*50/100 - else : - g = 0 - h = df1.loc[1,'订单结构'] - x = round(0.08*a+0*b+0.15*c+0.08*d +0.03*e +0.08*f +0.4*g+0.18*h+df1.loc[0,'京博指导价'],2) - - - # login_res1 = requests.post(url=login_url, json=login_data, timeout=(3, 30)) - # text1 = json.loads(login_res1.text) - # token_push = text1["data"]["accessToken"] - - - # data1 = { - # "funcModule": "数据表信息列表", - # "funcOperation": "新增", - # "data": [ - # {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", - # "dataDate": cur_time, - # "dataStatus": "add", - # "dataValue": x - # } - - # ] - # } - # headers1 = {"Authorization": token_push} - # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) - - - - - -def start_1(): - workbook = xlrd.open_workbook(read_file_path_name) - - - - # 选择第一个表格 - sheet = workbook.sheet_by_index(0) - - # 获取行数和列数 - num_rows = sheet.nrows - - - - row_data = sheet.row_values(1) - one_cols = row_data - - - login_res = requests.post(url=login_url, json=login_data, timeout=(3, 5)) - text = json.loads(login_res.text) - if text["status"]: - token = text["data"]["accessToken"] - else: - print("获取认证失败") - token = None - - - now = datetime.now() - timedelta(days=1) - year = now.year - month = now.month - day = now.day - - if month < 10: - month = "0" + str(month) - if day < 10: - day = "0" + str(day) - cur_time = str(year) + str(month) + str(day) - cur_time2 = str(year) + "-" + str(month) + "-" + str(day) - search_data = { - "data": { - "date": cur_time, - "dataItemNoList": one_cols[1:] - }, - "funcModule": "数据项", - "funcOperation": "查询" - } - headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] -# datas = search_value - if search_value: - datas = search_value - else : - datas = None - - - - append_rows = [cur_time2] - dataItemNo_dataValue = {} -# for data_value in datas: -# dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for data_value in datas: - if "dataValue" not in data_value: - print(data_value) - dataItemNo_dataValue[data_value["dataItemNo"]] = "" - else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - for value in one_cols[1:]: - if value in dataItemNo_dataValue: - append_rows.append(dataItemNo_dataValue[value]) - else: - append_rows.append("") - - workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') - - # 获取所有sheet的个数 - sheet_count = len(workbook.sheet_names()) - - # 获取所有sheet的名称 - sheet_names = workbook.sheet_names() - - new_workbook = xlwt.Workbook() - for i in range(sheet_count): - # 获取当前sheet - sheet = workbook.sheet_by_index(i) - - # 获取sheet的行数和列数 - row_count = sheet.nrows - 1 - col_count = sheet.ncols - # 获取原有数据 - data = [] - for row in range(row_count): - row_data = [] - for col in range(col_count): - row_data.append(sheet.cell_value(row, col)) - data.append(row_data) - # 创建xlwt的Workbook对象 - # 创建sheet - new_sheet = new_workbook.add_sheet(sheet_names[i]) - - # 将原有的数据写入新的sheet - for row in range(row_count): - for col in range(col_count): - new_sheet.write(row, col, data[row][col]) - - if i == 0: - # 在新的sheet中添加数据 - for col in range(col_count): - new_sheet.write(row_count, col, append_rows[col]) - - # 保存新的xls文件 - new_workbook.save("定性模型数据项12-11.xlsx") - - - - - - - -def get_queryDataListItemNos_value(token, url, dataItemNoList, dateStart, dateEnd): - - search_data = { - "funcModule": "数据项", - "funcOperation": "查询", - "data": { - "dateStart": dateStart, - "dateEnd": dateEnd, - "dataItemNoList": dataItemNoList # 数据项编码,代表 brent最低价和最高价 - } - } - - headers = {"Authorization": token} - search_res = requests.post(url=url, headers=headers, json=search_data, timeout=(3, 5)) - search_value = json.loads(search_res.text)["data"] - if search_value: - return search_value - else: + logging.error("获取日志 token 失败,响应信息: %s", login_res.text) + print("获取认证失败") + token = None + return token + except Exception as e: + logging.error("获取日志 token 时发生异常: %s", str(e)) return None - -def save_queryDataListItemNos_xls(data_df,dataItemNoList): - - current_year_month = datetime.now().strftime('%Y-%m') - grouped = data_df.groupby("dataDate") +def updateExcelDatabak(date='', token=None): + try: + logging.info("开始备份更新 Excel 数据,日期: %s", date) + workbook = xlrd.open_workbook(read_file_path_name) + sheet = workbook.sheet_by_index(0) + row_data = sheet.row_values(1) + one_cols = row_data + cur_time, cur_time2 = getNow(date) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') + sheet_count = len(workbook.sheet_names()) + sheet_names = workbook.sheet_names() + new_workbook = xlwt.Workbook() + for i in range(sheet_count): + sheet = workbook.sheet_by_index(i) + row_count = sheet.nrows + col_count = sheet.ncols + data = [] + for row in range(row_count): + row_data = [] + for col in range(col_count): + row_data.append(sheet.cell_value(row, col)) + data.append(row_data) + new_sheet = new_workbook.add_sheet(sheet_names[i]) + for row in range(row_count): + for col in range(col_count): + new_sheet.write(row, col, data[row][col]) + if i == 0: + for col in range(col_count): + new_sheet.write(row_count, col, append_rows[col]) + new_workbook.save("定性模型数据项12-11.xlsx") + logging.info("备份更新 Excel 数据完成") + except Exception as e: + logging.error("备份更新 Excel 数据时发生异常: %s", str(e)) - df_old = pd.read_excel('定性模型数据项12-11.xlsx') - df_old0 = df_old[:1] - result_dict = {df_old0.iloc[0][col] : col for col in df_old0.columns} - df_old1 = df_old[1:].copy() - - df_old1["日期"] = pd.to_datetime(df_old1["日期"]) - # 删除日期列为本月的数据 - df_old1 = df_old1[~df_old1["日期"].dt.strftime('%Y-%m').eq(current_year_month)] - df_old1["日期"] = df_old1["日期"].dt.strftime('%Y-%m-%d') +def updateYesterdayExcelData(date='', token=None): + try: + logging.info("开始更新昨天的 Excel 数据,日期: %s", date) + df = pd.read_excel(read_file_path_name, engine='openpyxl') + one_cols = df.iloc[0, :].tolist() + if date == '': + previous_date = (datetime.now() - timedelta(days=1) + ).strftime('%Y-%m-%d') + else: + previous_date = (datetime.strptime(date, "%Y-%m-%d") - + timedelta(days=1)).strftime('%Y-%m-%d') + cur_time, cur_time2 = getNow(previous_date) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + print('更新数据前') + print(df.tail(1)) + if previous_date not in df['日期'].values: + new_row = pd.DataFrame([append_rows], columns=df.columns.tolist()) + df = pd.concat([df, new_row], ignore_index=True) + else: + print('日期存在,即将更新') + print('新数据', append_rows[1:]) + df.loc[df['日期'] == previous_date, + df.columns.tolist()[1:]] = append_rows[1:] + print('更新数据后') + print(df.tail(1)) + df.to_excel("定性模型数据项12-11.xlsx", index=False, engine='openpyxl') + logging.info("更新昨天的 Excel 数据完成") + except Exception as e: + logging.error("更新昨天的 Excel 数据时发生异常: %s", str(e)) - list_data = [] - for date, group in grouped: - dict_data = {"日期": date} - for index, row in group.iterrows(): - dict_data[result_dict[row['dataItemNo']]] = row['dataValue'] - list_data.append(dict_data) - - df_current_year_month = pd.DataFrame(list_data) - df_current_year_month - - df_merged = pd.concat([df_old0, df_old1, df_current_year_month], ignore_index=True) - - df_merged.to_excel('定性模型数据项12-11.xlsx', index=False) +def updateExcelData(date='', token=None): + try: + logging.info("开始更新 Excel 数据,日期: %s", date) + df = pd.read_excel(read_file_path_name, engine='openpyxl') + one_cols = df.iloc[0, :].tolist() + cur_time, cur_time2 = getNow(date) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + new_row = pd.DataFrame([append_rows], columns=df.columns.tolist()) + df = pd.concat([df, new_row], ignore_index=True) + df.to_excel("定性模型数据项12-11.xlsx", index=False, engine='openpyxl') + logging.info("更新 Excel 数据完成") + except Exception as e: + logging.error("更新 Excel 数据时发生异常: %s", str(e)) +def qualitativeModel(): + try: + logging.info("开始执行定性模型计算") + df = pd.read_excel('定性模型数据项12-11.xlsx') + df = df.fillna(df.ffill()) + df1 = df[-3:-1].reset_index() + if df1.loc[1, '70号沥青开工率'] / 100 > 0.3: + a = -(df1.loc[1, '70号沥青开工率'] / 100 - 0.2)*5/0.1 + else: + a = 0 + b = df1.loc[1, '资金因素'] + df1.loc[1, '昨日计划提货偏差'] = df1.loc[1, '京博产量'] - df1.loc[1, '计划产量'] + if df1.loc[1, '昨日计划提货偏差'] > 0: + c = df1.loc[1, '昨日计划提货偏差']*10/2000 + else: + c = df1.loc[1, '昨日计划提货偏差']*10/3000 + d = (df1.loc[1, '京博产量'] - df1.loc[1, '计划产量']) / 500 * 5 + if df1.loc[1, '基质沥青库存']/265007 > 0.8: + e = (df1.loc[1, '基质沥青库存'] - df1.loc[0, '基质沥青库存'])*10/-5000 + else: + e = 0 + f = 1 + if abs(df1.loc[1, '即期成本'] - df1.loc[0, '即期成本']) >= 100: + g = (df1.loc[1, '即期成本'] - df1.loc[0, '即期成本'])*50/100 + else: + g = 0 + h = df1.loc[1, '订单结构'] + x = round(0.08*a+0*b+0.15*c+0.08*d + 0.03*e + 0.08 * + f + 0.4*g+0.18*h+df1.loc[0, '京博指导价'], 2) + logging.info("定性模型计算完成,预测结果: %s", x) + return x + except Exception as e: + logging.error("定性模型计算时发生异常: %s", str(e)) + return None -def queryDataListItemNos(date=None,token=None): - df = pd.read_excel('定性模型数据项12-11.xlsx') - dataItemNoList = df.iloc[0].tolist()[1:] - if token is None: - token = getLogToken() +def getNow(date='', offset=0): + try: + if date == '': + now = datetime.now() - timedelta(days=offset) + else: + try: + date = datetime.strptime(date, "%Y-%m-%d") + except: + date = datetime.strptime(date, "%Y%m%d") + now = date + year = now.year + month = now.month + day = now.day + if month < 10: + month = "0" + str(month) + if day < 10: + day = "0" + str(day) + cur_time = str(year) + str(month) + str(day) + cur_time2 = str(year) + "-" + str(month) + "-" + str(day) + return cur_time, cur_time2 + except Exception as e: + logging.error("获取当前日期时发生异常: %s", str(e)) + return None, None + + +def pushData(cur_time, x, token_push): + try: + logging.info("开始推送数据,日期: %s,预测值: %s", cur_time, x) + data1 = { + "funcModule": "数据表信息列表", + "funcOperation": "新增", + "data": [ + {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", + "dataDate": cur_time, + "dataStatus": "add", + "dataValue": x + } + ] + } + headers1 = {"Authorization": token_push} + res = requests.post(url=upload_url, headers=headers1, + json=data1, timeout=(3, 5)) + logging.info("数据推送完成,响应信息: %s", res.text) + except Exception as e: + logging.error("数据推送时发生异常: %s", str(e)) + + +def start_2(date='', token=None): + try: + logging.info("开始执行 start_2 函数,日期: %s", date) + workbook = xlrd.open_workbook(read_file_path_name) + sheet = workbook.sheet_by_index(0) + num_rows = sheet.nrows + row_data = sheet.row_values(1) + one_cols = row_data + cur_time, cur_time2 = getNow(date) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') + sheet_count = len(workbook.sheet_names()) + sheet_names = workbook.sheet_names() + new_workbook = xlwt.Workbook() + for i in range(sheet_count): + sheet = workbook.sheet_by_index(i) + row_count = sheet.nrows + col_count = sheet.ncols + data = [] + for row in range(row_count): + row_data = [] + for col in range(col_count): + row_data.append(sheet.cell_value(row, col)) + data.append(row_data) + new_sheet = new_workbook.add_sheet(sheet_names[i]) + for row in range(row_count): + for col in range(col_count): + new_sheet.write(row, col, data[row][col]) + if i == 0: + for col in range(col_count): + new_sheet.write(row_count, col, append_rows[col]) + new_workbook.save("定性模型数据项12-11.xlsx") + update_e_value('定性模型数据项12-11.xlsx', 8, 1000) + df = pd.read_excel('定性模型数据项12-11.xlsx') + df = df.fillna(df.ffill()) + df1 = df[-2:].reset_index() + if df1.loc[1, '70号沥青开工率'] > 30: + a = (df1.loc[1, '70号沥青开工率']-0.2)*5/0.1 + else: + a = 0 + b = df1.loc[1, '资金因素'] + if df1.loc[1, '昨日计划提货偏差'] > 0: + c = df1.loc[1, '昨日计划提货偏差']*10/2000 + else: + c = df1.loc[1, '昨日计划提货偏差']*10/3000 + d = df1.loc[1, '生产情况'] + if df1.loc[1, '基质沥青库存']/265007 > 0.8: + e = (df1.loc[1, '基质沥青库存'] - df1.loc[0, '基质沥青库存'])*10/-5000 + else: + e = 0 + f = 1 + if abs(df1.loc[1, '即期成本'] - df1.loc[0, '即期成本']) >= 100: + g = (df1.loc[1, '即期成本'] - df1.loc[0, '即期成本'])*50/100 + else: + g = 0 + h = df1.loc[1, '订单结构'] + x = round(0.08*a+0*b+0.15*c+0.08*d + 0.03*e + 0.08 * + f + 0.4*g+0.18*h+df1.loc[0, '京博指导价'], 2) + login_res1 = requests.post( + url=login_push_url, json=login_push_data, timeout=(3, 5)) + text1 = json.loads(login_res1.text) + token_push = text1["data"]["accessToken"] + data1 = { + "funcModule": "数据表信息列表", + "funcOperation": "新增", + "data": [ + {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", + "dataDate": cur_time, + "dataStatus": "add", + "dataValue": x + } + ] + } + headers1 = {"Authorization": token_push} + # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) + logging.info("start_2 函数执行完成") + except Exception as e: + logging.error("start_2 函数执行时发生异常: %s", str(e)) + + +def start(now=None): + try: + logging.info("开始执行 start 函数") + workbook = xlrd.open_workbook(read_file_path_name) + sheet = workbook.sheet_by_index(0) + num_rows = sheet.nrows + row_data = sheet.row_values(1) + one_cols = row_data + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + if text["status"]: + token = text["data"]["accessToken"] + else: + logging.error("获取认证失败,响应信息: %s", login_res.text) + print("获取认证失败") + token = None + if now is None: + now = datetime.now() + year = now.year + month = now.month + day = now.day + if month < 10: + month = "0" + str(month) + if day < 10: + day = "0" + str(day) + cur_time = str(year) + str(month) + str(day) + cur_time2 = str(year) + "-" + str(month) + "-" + str(day) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') + sheet_count = len(workbook.sheet_names()) + sheet_names = workbook.sheet_names() + new_workbook = xlwt.Workbook() + for i in range(sheet_count): + sheet = workbook.sheet_by_index(i) + row_count = sheet.nrows + col_count = sheet.ncols + data = [] + for row in range(row_count): + row_data = [] + for col in range(col_count): + row_data.append(sheet.cell_value(row, col)) + data.append(row_data) + new_sheet = new_workbook.add_sheet(sheet_names[i]) + for row in range(row_count): + for col in range(col_count): + new_sheet.write(row, col, data[row][col]) + if i == 0: + for col in range(col_count): + new_sheet.write(row_count, col, append_rows[col]) + new_workbook.save("定性模型数据项12-11.xlsx") + update_e_value('定性模型数据项12-11.xlsx', 8, 1000) + df = pd.read_excel('定性模型数据项12-11.xlsx') + df = df.fillna(df.ffill()) + df1 = df[-2:].reset_index() + if df1.loc[1, '70号沥青开工率'] / 100 > 0.3: + a = (df1.loc[1, '70号沥青开工率'] / 100 - 0.2)*5/0.1 + else: + a = 0 + b = df1.loc[1, '资金因素'] + if df1.loc[1, '昨日计划提货偏差'] > 0: + c = df1.loc[1, '昨日计划提货偏差']*10/2000 + else: + c = df1.loc[1, '昨日计划提货偏差']*10/3000 + d = df1.loc[1, '生产情况'] + if df1.loc[1, '基质沥青库存']/265007 > 0.8: + e = (df1.loc[1, '基质沥青库存'] - df1.loc[0, '基质沥青库存'])*10/-5000 + else: + e = 0 + f = 1 + if abs(df1.loc[1, '即期成本'] - df1.loc[0, '即期成本']) >= 100: + g = (df1.loc[1, '即期成本'] - df1.loc[0, '即期成本'])*50/100 + else: + g = 0 + h = df1.loc[1, '订单结构'] + x = round(0.08*a+0*b+0.15*c+0.08*d + 0.03*e + 0.08 * + f + 0.4*g+0.18*h+df1.loc[0, '京博指导价'], 2) + # login_res1 = requests.post(url=login_url, json=login_data, timeout=(3, 30)) + # text1 = json.loads(login_res1.text) + # token_push = text1["data"]["accessToken"] + # data1 = { + # "funcModule": "数据表信息列表", + # "funcOperation": "新增", + # "data": [ + # {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", + # "dataDate": cur_time, + # "dataStatus": "add", + # "dataValue": x + # } + # ] + # } + # headers1 = {"Authorization": token_push} + # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) + logging.info("start 函数执行完成") + except Exception as e: + logging.error("start 函数执行时发生异常: %s", str(e)) + + +def start_test(): + try: + logging.info("开始执行 start_test 函数") + workbook = xlrd.open_workbook(read_file_path_name) + sheet = workbook.sheet_by_index(0) + num_rows = sheet.nrows + row_data = sheet.row_values(1) + one_cols = row_data + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + if text["status"]: + token = text["data"]["accessToken"] + else: + logging.error("获取认证失败,响应信息: %s", login_res.text) + print("获取认证失败") + token = None + now = datetime.now() + year = now.year + month = now.month + day = now.day + if month < 10: + month = "0" + str(month) + if day < 10: + day = "0" + str(day) + cur_time = str(year) + str(month) + str(day) + cur_time2 = str(year) + "-" + str(month) + "-" + str(day) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') + sheet_count = len(workbook.sheet_names()) + sheet_names = workbook.sheet_names() + new_workbook = xlwt.Workbook() + for i in range(sheet_count): + sheet = workbook.sheet_by_index(i) + row_count = sheet.nrows + col_count = sheet.ncols + data = [] + for row in range(row_count): + row_data = [] + for col in range(col_count): + row_data.append(sheet.cell_value(row, col)) + data.append(row_data) + new_sheet = new_workbook.add_sheet(sheet_names[i]) + for row in range(row_count): + for col in range(col_count): + new_sheet.write(row, col, data[row][col]) + if i == 0: + for col in range(col_count): + new_sheet.write(row_count, col, append_rows[col]) + new_workbook.save("定性模型数据项12-11.xlsx") + update_e_value('定性模型数据项12-11.xlsx', 8, 1000) + df = pd.read_excel('定性模型数据项12-11.xlsx') + df = df.fillna(df.ffill()) + df1 = df[-2:].reset_index() + if df1.loc[1, '70号沥青开工率'] / 100 > 0.3: + a = (df1.loc[1, '70号沥青开工率'] / 100 - 0.2)*5/0.1 + else: + a = 0 + b = df1.loc[1, '资金因素'] + if df1.loc[1, '昨日计划提货偏差'] > 0: + c = df1.loc[1, '昨日计划提货偏差']*10/2000 + else: + c = df1.loc[1, '昨日计划提货偏差']*10/3000 + d = df1.loc[1, '生产情况'] + if df1.loc[1, '基质沥青库存']/265007 > 0.8: + e = (df1.loc[1, '基质沥青库存'] - df1.loc[0, '基质沥青库存'])*10/-5000 + else: + e = 0 + f = 1 + if abs(df1.loc[1, '即期成本'] - df1.loc[0, '即期成本']) >= 100: + g = (df1.loc[1, '即期成本'] - df1.loc[0, '即期成本'])*50/100 + else: + g = 0 + h = df1.loc[1, '订单结构'] + x = round(0.08*a+0*b+0.15*c+0.08*d + 0.03*e + 0.08 * + f + 0.4*g+0.18*h+df1.loc[0, '京博指导价'], 2) + # login_res1 = requests.post(url=login_url, json=login_data, timeout=(3, 30)) + # text1 = json.loads(login_res1.text) + # token_push = text1["data"]["accessToken"] + # data1 = { + # "funcModule": "数据表信息列表", + # "funcOperation": "新增", + # "data": [ + # {"dataItemNo": "C01100036|Forecast_Price|DX|ACN", + # "dataDate": cur_time, + # "dataStatus": "add", + # "dataValue": x + # } + # ] + # } + # headers1 = {"Authorization": token_push} + # res = requests.post(url=upload_url, headers=headers1, json=data1, timeout=(3, 5)) + logging.info("start_test 函数执行完成") + except Exception as e: + logging.error("start_test 函数执行时发生异常: %s", str(e)) + + +def start_1(): + try: + logging.info("开始执行 start_1 函数") + workbook = xlrd.open_workbook(read_file_path_name) + sheet = workbook.sheet_by_index(0) + num_rows = sheet.nrows + row_data = sheet.row_values(1) + one_cols = row_data + login_res = requests.post( + url=login_url, json=login_data, timeout=(3, 5)) + text = json.loads(login_res.text) + if text["status"]: + token = text["data"]["accessToken"] + else: + logging.error("获取认证失败,响应信息: %s", login_res.text) + print("获取认证失败") + token = None + now = datetime.now() - timedelta(days=1) + year = now.year + month = now.month + day = now.day + if month < 10: + month = "0" + str(month) + if day < 10: + day = "0" + str(day) + cur_time = str(year) + str(month) + str(day) + cur_time2 = str(year) + "-" + str(month) + "-" + str(day) + search_data = { + "data": { + "date": cur_time, + "dataItemNoList": one_cols[1:] + }, + "funcModule": "数据项", + "funcOperation": "查询" + } + headers = {"Authorization": token} + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + datas = search_value + else: + datas = None + append_rows = [cur_time2] + dataItemNo_dataValue = {} + for data_value in datas: + if "dataValue" not in data_value: + print(data_value) + dataItemNo_dataValue[data_value["dataItemNo"]] = "" + else: + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols[1:]: + if value in dataItemNo_dataValue: + append_rows.append(dataItemNo_dataValue[value]) + else: + append_rows.append("") + workbook = xlrd.open_workbook('定性模型数据项12-11.xlsx') + sheet_count = len(workbook.sheet_names()) + sheet_names = workbook.sheet_names() + new_workbook = xlwt.Workbook() + for i in range(sheet_count): + sheet = workbook.sheet_by_index(i) + row_count = sheet.nrows - 1 + col_count = sheet.ncols + data = [] + for row in range(row_count): + row_data = [] + for col in range(col_count): + row_data.append(sheet.cell_value(row, col)) + data.append(row_data) + new_sheet = new_workbook.add_sheet(sheet_names[i]) + for row in range(row_count): + for col in range(col_count): + new_sheet.write(row, col, data[row][col]) + if i == 0: + for col in range(col_count): + new_sheet.write(row_count, col, append_rows[col]) + new_workbook.save("定性模型数据项12-11.xlsx") + logging.info("start_1 函数执行完成") + except Exception as e: + logging.error("start_1 函数执行时发生异常: %s", str(e)) + + +def get_queryDataListItemNos_value(token, url, dataItemNoList, dateStart, dateEnd): + try: + logging.info("开始获取查询数据列表项值,日期范围: %s 至 %s", dateStart, dateEnd) + search_data = { + "funcModule": "数据项", + "funcOperation": "查询", + "data": { + "dateStart": dateStart, + "dateEnd": dateEnd, + "dataItemNoList": dataItemNoList # 数据项编码,代表 brent最低价和最高价 + } + } + headers = {"Authorization": token} + search_res = requests.post( + url=url, headers=headers, json=search_data, timeout=(3, 5)) + search_value = json.loads(search_res.text)["data"] + if search_value: + logging.info("成功获取查询数据列表项值") + return search_value + else: + logging.warning("未获取到查询数据列表项值") + return None + except Exception as e: + logging.error("获取查询数据列表项值时发生异常: %s", str(e)) + return None + + +def save_queryDataListItemNos_xls(data_df, dataItemNoList): + try: + logging.info("开始保存查询数据列表项到 Excel 文件") + current_year_month = datetime.now().strftime('%Y-%m') + grouped = data_df.groupby("dataDate") + df_old = pd.read_excel('定性模型数据项12-11.xlsx') + df_old0 = df_old[:1] + result_dict = {df_old0.iloc[0][col]: col for col in df_old0.columns} + df_old1 = df_old[1:].copy() + df_old1["日期"] = pd.to_datetime(df_old1["日期"]) + df_old1 = df_old1[~df_old1["日期"].dt.strftime( + '%Y-%m').eq(current_year_month)] + df_old1["日期"] = df_old1["日期"].dt.strftime('%Y-%m-%d') + list_data = [] + for date, group in grouped: + dict_data = {"日期": date} + for index, row in group.iterrows(): + dict_data[result_dict[row['dataItemNo']]] = row['dataValue'] + list_data.append(dict_data) + df_current_year_month = pd.DataFrame(list_data) + df_merged = pd.concat( + [df_old0, df_old1, df_current_year_month], ignore_index=True) + df_merged.to_excel('定性模型数据项12-11.xlsx', index=False) + logging.info("保存查询数据列表项到 Excel 文件完成") + except Exception as e: + logging.error("保存查询数据列表项到 Excel 文件时发生异常: %s", str(e)) + + +def queryDataListItemNos(date=None, token=None): + try: + logging.info("开始查询数据列表项,日期: %s", date) + df = pd.read_excel('定性模型数据项12-11.xlsx') + dataItemNoList = df.iloc[0].tolist()[1:] if token is None: - print("获取token失败") - return - - # 获取当前日期 - if date is None: - date = datetime.now() - current_date = date - - # 获取当月1日 - first_day_of_month = current_date.replace(day=1) - - # 格式化为 YYYYMMDD 格式 - dateEnd = current_date.strftime('%Y%m%d') - dateStart = first_day_of_month.strftime('%Y%m%d') - - search_value = get_queryDataListItemNos_value(token, queryDataListItemNos_url, dataItemNoList, dateStart, dateEnd) - # print("search_value",search_value) - + token = getLogToken() + if token is None: + logging.error("获取token失败") + print("获取token失败") + return + if date is None: + date = datetime.now() + current_date = date + first_day_of_month = current_date.replace(day=1) + dateEnd = current_date.strftime('%Y%m%d') + dateStart = first_day_of_month.strftime('%Y%m%d') + search_value = get_queryDataListItemNos_value( + token, queryDataListItemNos_url, dataItemNoList, dateStart, dateEnd) + data_df = pd.DataFrame(search_value) + data_df["dataDate"] = pd.to_datetime(data_df["dataDate"]) + data_df["dataDate"] = data_df["dataDate"].dt.strftime('%Y-%m-%d') + save_queryDataListItemNos_xls(data_df, dataItemNoList) + logging.info("查询数据列表项完成") + except Exception as e: + logging.error("查询数据列表项时发生异常: %s", str(e)) data_df = pd.DataFrame(search_value) data_df["dataDate"] = pd.to_datetime(data_df["dataDate"]) data_df["dataDate"] = data_df["dataDate"].dt.strftime('%Y-%m-%d') - save_queryDataListItemNos_xls(data_df,dataItemNoList) + save_queryDataListItemNos_xls(data_df, dataItemNoList) -def main(start_date=None,token=None,token_push=None): - if start_date is None: - start_date = datetime.now() - if token is None: - token = get_head_auth() - if token_push is None: - token_push = get_head_push_auth() - date = start_date.strftime('%Y%m%d') - print(date) - updateExcelData(date,token) - queryDataListItemNos(token=token) - update_e_value('定性模型数据项12-11.xlsx', 8, 1000) - x = qualitativeModel() - print('**************************************************预测结果:',x) - cur_time,cur_time2 = getNow(date) - pushData(cur_time,x,token) + +def main(start_date=None, token=None, token_push=None): + try: + logging.info("开始执行主函数") + if start_date is None: + start_date = datetime.now() + if token is None: + token = get_head_auth() + if token_push is None: + token_push = get_head_push_auth() + date = start_date.strftime('%Y%m%d') + print(date) + logging.info("当前日期: %s", date) + updateExcelData(date, token) + queryDataListItemNos(token=token) + update_e_value('定性模型数据项12-11.xlsx', 8, 1000) + x = qualitativeModel() + if x is not None: + print('**************************************************预测结果:', x) + logging.info("预测结果: %s", x) + cur_time, cur_time2 = getNow(date) + pushData(cur_time, x, token_push) + logging.info("主函数执行完成") + except Exception as e: + logging.error("主函数执行时发生异常: %s", str(e)) if __name__ == "__main__": print("运行中...") + logging.info("程序启动") main() - + logging.info("程序结束") diff --git a/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl b/aisenzhecode/石油苯/日度价格预测_最佳模型.pkl index 2f7e1d48fc8e0e1179f49dbdbeeff04bab9f792e..80fb1a18e80b5fc9240b0b8796390a0f85454d37 100644 GIT binary patch literal 141833 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 literal 140607 zcmeEP2V4}#_g@gfaw=j&5y2YlD7GZZ?e5*~-GLG`wnPn}Aa{y@fGuh~J1QzFu}87Q z*rLXYM!DTPG{zRJF~)*MY_Y{yh%x5>-rmiDhC`bEfB13qF?DBW-psu3yqVcKy~CF^ z9Vy8qc*G8l2n&gcY%wG%G%O-0HY_4+K%6crvIRIpVg_iF5@f0vUFgS>N6|BBUQ*-n zNn?||5}aZOM8)VL!;=CM%7(?p>4t>FMa3i~R2muHKPoCVu7xFEc)qua?G_du6BZi_ z39Qe{B7>}t#bPE={RiQzhleF4ILCyAe-Jx#SV&A*Xjn`P=3911$jG43u;@4~q%DUY zDE9C$e9{Sh{dJMxEFT^dH6kcFDnd746nHC0Rf9qX#e~F#K|tBzVKM!qVs&vC>m(I4 zEC!#8iwO%08WI+#jS2;C>F|&tLqfpeJVX~6G(fA12n`w$rVH1`L0Cm|Nh0Dxf@0&s zq9LSg?6Cf^Aw!}g@D-IL7rxV)o%4XG2y=W;|55lRNLD##SVY+Hum}izAz>sm2xbnv z2nvaa)?#_ep(i3_NdHi&bg=_MBEq1$vDu|7*FPjSEC|~MA9fm|i;cxbQjN>9GheSn2#YIJi1r3ObjE##4 z(M85#cnz?_VnU?O@={bK-H_<0n7EM00bxOLqoT1Oj-g@0bpy~J3KI3f09%hs5CsE7Q7(h22mf?CzHK%WgE6m@r^NBs3SW-x515 zp&T~jkf3lFpI8`erGzs5hv}e-k+Dhe`jE)*Fc@$C_WtGl?WZPnOVY};O8?gWVgBVL zUzL7IUMl&d&o8SsRUNI8FH7nA`{X()D*5h3XcnvFCw(NNl4qFvj=x>lumqXJL^I2R zpoz-&hhZF~iwq4L8I+Vz9eP*vs20#6V!~QTDMMmnLPjMeIAUK7!SSC^T1o?UsMI+i z#9r4SX<9rM$_p4}*D)y|Ai(cmFw!4?DlVzNqKwj92r6j`q_ezM>gPd8+5m0W1p9$G zGST+PEsF&q10R>WdQWc7LMD}5;$du%#K0=n%4;k6J7{J8{IG;dQYx#cf|r#wOF)d) zR?t?Ik~#-yD+g#@0<<}@s2ZTH7ND&jpsf+0bq&zg4A9mJ(7FX^YX@lE1GIGlv>pLk z&j4-R0ByYhZGCHFYa0Y;8~Rhwg|zPlXuSfojRUkz0<=v7w9Tezn+IrH1ZZ0ZXuSip ztpc>I1GGK?+BN~&w%Gpdq0Aki|0R?OVo?TzXiJb0c`QkU1Sb+B=g7W$4P5`w~`hXn!Bka#<9;<5;%?3gwr#>q1La*29Dq-DojGnGbb zF5xaXii4uVVuExi-w+FPNtK%v%TCs6EGeLKcuYvBE-W%G$O1N2*0_ZCH-nCZyHYQ- z#{E}D=g6C6T^0p7W)W+Rv~TZieKX15EHYlqALLKe0Kj8OI$NK13Jn_=0uqwEASWnV z6FGzoi;E&DoQ6fCB#*Ji){yWQfIBiy2f|#di;Wu+GB_-TJW$^908B21zVab!RU9Hi zhJ;y@JDM3svaB2%9X3EWPzQ}>$($!q&Ju%jV?b#MP_0>JcQp|71GHg5QPFYPk*!F6 z|HbTF68#6mUzG+6nM;~dVR0eW;PT!rT6vp|wKV2QiZw}g9db^BtkGqqxzh+;Y#6DH zEdaMZLXnh?<{5`I!p>TT7bjTO1i2NL%+johO0{m=j=bT&aBWRy-_APPvr`eIx2CeQ zCVFXlmYu>n^0TLs*^$=Ab4)F>W37+=XFiyn#>$h5IA@HFj?l#gMMTAB56L+_NxU=6Vq##*iSr<7qGe4}#k)moOQ$84_4V0PW@~c0Y^h1)N}u}V zEp}Gf=!`pv_!D0Woj0BuZEr0(+^!^+APm#~p>L&9LD3-ddiJBNhl zma3|GP6?tQR1#uAI2pH=v}&skZQ8VJ-=>Xsd!P2+@3(E+s$HwLHl&p;i8$7pzKR7) zgUlM(i*?E|owvTeT>BR7+O}!iwk_vF*yAFhOVGd=n8Sls6!Su@vYC#EF(4u&*G^d; zBQ3LQ>#OWrS%+vj32tEG8sLZy^YPS|GfxC4lzSw!>rF`zr@;I zUrhd=SCZmYloUG<7cWhqoL^S)tfhzHlHG?;w}^$AN_K%u=}PG+9c3+A=`J|Wuomk- z6S#6Aai9eC9~KuDJKFk?RsBK$&cO|5Ybh#arcAuLcg^)_yEA7kzqWO^HNx@QcT=y= znrih|y1sndjY)GL$<^<7T}$4Z9dTpE=Bv9GU7xu5rHHEhN38$7z46ymXJt;F*fKM5 z?Y+IztdG@#Scti{JJkyl#7}9NIX(I6_j7WlamoDdyQ?WnGgBsHF5Q#))l_(a^?8@f znX_!gRlAz+0w{be_7px_Y|$x(2$2x<YI&WPoU2C0> zu8pp(uAQ#Eu7mD<-3Pi4bscq`biO*dj@B_cR;SP@b)3#Rr!FhasdbS9qq2+2qony? z`A6EgG!`^RXXmYrDwCGTEDK0|8iZOW88uTc)`(2c z2s&ZQOlAzXoOS$SA{&0IG`nia1@`ow!K8fU$VwL!vO$Ek4Ax1vb9THm`^Y_2l^m&J z!@`GvrU?l<=bc?FOpS6+B_jYF5jHTcPlF!Td}>-20{&}}`q=A2b=JazUNA7uyl@&5 z7MZhtn2{Y&DWK9oPC#XW$^%uvB_A~4t^`yWs0vUupc>|w{QV_mlHmj#ih(O(P~jXc z-DUe#s`HrVft@GKY2;sahPVHFEAIQvnODv~%!`J%Nk%iXONQpAOs$^W@qlLXQ*X`u z>VhRIUlu8a6HMvM?ULQhHOHB&Nisr~AlX|8*@NU@A!HR2F54p^%aF=h2-$}uvrq-F zE06+IjKQUAo6Ujm#P?vnWq>eG%%>t@Hn^RET!5+qRR?ki=qABj;4T^i5Me*h1DKhxDb7v{;dT)yRBa!0%xk2%c!Bk-e zUj=hXK<2`tG!!F8!$9Sb0mw{ba7Bwv{NR-g@nag&D3+*KTZAFy%*8-hF4$lz9}AOp zEv(?^LSS^|=-0|t6s1_FrxYoAiai4EAwcf~b)YD=I}og*vgg1Lg=9AYrGXnd77ImU zgMlzj5>Rg-H4rp78&6TpeXtXN#!%KlUQU977xfiMi-3tHEbHgClJ_blLt4{9T`OB{ zwr|~*u*(?*m!t~^4Tr6wsO)tooD9EOzPs)9?G=*N^yX=$dsg|hj*ok;7%Nm) zjz3h()bPFeY2!PMOsgi}ZR)!Dn8MMwlH%IUrOHow@(P#f5ypF^1{rr&-({RReZTR; zqkF|iS3VWJoqE%|zBtJ2P`RP=-AZhOq`pZFmubjgzQZh3TGQX`b~cEn>_ z(qmS6N_vR@kCcb7n)wkaFQ*~Ju_^K0y3BKH*g3#?ZRcJ$^?nc1lKmYRZ@pf4iQn>Hb`gaRoJ`G`UHBw{cMR92pi=@}q=CDlP=T zX37%*ApSqnAHr(A+ywdY6UO9;1a4*|aHe?skrXF@w9jy+xW773yeyf*Vago_r1l_r;YyVE{P_{)@a zf3&IbyteEgH$GMzPw$~rd~#h;YS$8Dy2DS#_L+_z({@OW`1J@4Di z%<|h;*fJGwu^-t#V5dg)WjFV%M+*IRVuU@ZUdh3Ts8P#1zjvrZXYWaU{r;Sx_uDcx z#V=}6puh8!Knjf7r8K3{X9jC3I^Ng#4C$cW(#})!-U*BFU2Vu;sFrov+ z0p}%*5Cw|6d>=3Zut2tv!eJ_5#5oARkxp@cdYUo9$%`t=FwGkya%u!bYe1YJIDpuI zpp9W@%Pa&|!3<&0>%$0;`@2Do-vIkFAO;9A!rLO>pM#wW^b`o>zobimUcsb*A8bjN zSO_*^1mJ>%8PQ;SS}+1Jg47HF0iQ?9O$j`TH9yLiQX`_7>-w z%4RN2(|o$YbnMn7Q|XCO?9E-B6vv|fRJL!nlzo`E)tL5tmvPpGQbsl7WGwyQTX9L* zKZIXzOs3a&k7ia?=)yc(Hh^W-yV&u6aqQPmf~>8bz0#9YU$tsu|6A)t`I)Go9#M)^ zujF6^d)d^v?C;AuSIqSDyCXXLMJ-eNjsEwn-D6CN+OBEw(G7J< ztzh-9mkTz;EvX4}-eE)`F#`02lNl6WDuv=wfqv6d+*2=#ujozTFqJUke4rU49tK-5 zBAF`6FwGkya>{;!7X%lu&2!=grj=O;;|gR*&v|_qp_kT}P(M&~1A-SS8iHJR2HFFJ z*svbLK(&s~+ zQE_S9?zC~TO{UFX#wco!`a$`DYYUUzu;s?J;&RhJTc4WLr#iFD=`xBbr)MdvPx4fb zZy+}gs>&JbHu*$6#ioc&TMSOERW+EY_Ow3pb>=Nw%cVe(#+lk438xEfJbKc$G?_Ajo zbAP5NP3y&;8Xr1Q9i&*VKGZ=_AM2r4dlVceNNHXNM&xUa2`YqQt0E~#9=i>%Tx+s4 z69|zPcN@T8;Poa_o>%A*w*eQ9CW9VPmE!jFrnn0kmR$#DiVRckXTXTeV2Zn+4ES-M z;vKF6hGbEN9j19>1mXe8ezXZjpe+L;2IC1~I`RyO&zDUY^x80D707=B$niB`#{#iH z9RUOGLs)m9+dzmD2Z8oN9F&@k215M+Ze^w`$bUc zeqNvU_M82FGL(c;r_7_&Q_ct)MeAtwUh$TCZCSl~|8_mb71WT@ybg?j3ESJh9}!P+ z>Ct9A;`@bw5n1N_h>Cg&hpD7ToCWO2+>&Fh=@|&N!VlBDF#_=b<-ZJwfOJj_KtLwg zLDrhkUtmLe&TGR6vR9oB@_#T8yb$#WCJSUc%Kro4N1XuoBUV~$FR&eeJb^j@Ay!NW zngXN;iU2~4!1$#=ZAvso%|Ut*pzthq{8mv0;OyHuZ_Rlq>VF8 z^Gv^#>SJmZ-jY?NuUAC;a76LAev)Zp zareKNr)z2UJ^7z(pI_#&(_E&qyXr2pw)R_z5ssvKMZgHl1hrUjf)vL#Msz+A7VJMW za*h9*?YA^Hyp#Q+cVuafI3)PZX&g*hjC$o0T2p(vtGegP70dk74bp+!%@sQ|@#$V1%<- zkHFJQr5z~VxdBz!VVXBaARZutk%QME|4KT=e1!3(Ib`t7K{K= z0(}4&0hl4l{xjf*nzC1b)&SxDLusFgd!*^~0)JDh@|i48UsY)L*HvWL zbyfO~Z)5!M?g(Rf-wooP=levD%n(XCsMtVgAp6LxcP@hYW-(aOwjnwrThjx*J^(FW1(M&3dV=os5|whG<7zr z)njyP)Gek3tK0sgSNUHh(fPIsbKYSD&I587!kAaAHT@1}mJWM@9zj#wF2Djj!}KH_ zPPjT#WSHW91$PzVV9%QS2hKc|er8^4D&#PIHAW!l%76$kqx?rdF^CT&jNk*NEs!A$ zdTki70x&=XIj#qLJWv1-%=@k9mQH{l&Ynxy064Jg>GkxRz4zQ35Bhio#sle^7QWX$ix&QtU;4%zde(Yt9GqtpCgaaY(!VzByx(9h`~I+A<91n8DC zD?2$d_YW^;>$SVce!O&$wYA?$j3`5@R|JfJ!BZ?c1j-;%oILc18S^^$_iVM@pY9#( zSN>|UUxlp>n*BW<`pHUp<1kh?x=X2N=`++T>oic0Z|SExu}Dz2j>M<}8&aCrfe~e( zG)Ot8vqWs6Xp&h-(kDnkin1R8`8fl*096H&zI*_?z zNn?;Wh|0eq4ffhFVl!aCHjv|I!Hxm)2ZAjr7HT7{H9Z6yaRK!Ql=rAlc!BJ{0XB>i z>D+4^*cMEX@B;i&d`Adh3Fu(*xHfrudlQ#_#=2>R!jc?$r63 zUn>M_eqXKB%sM{TkE%e!n<;gdBYL&^nxI}d?7rIV=Py)$eLRrX~GjwxGHri-h4_HSEXP;OK9>-x&=*w0Zs5r zilr3ql0g-9K-)$YWEe7tG)&G0K_o$g%$He+FcZ^b+Cmw^FdOKSzX5IQ+X{E-+lq~P zO0h$4{_YOW)(|;8^RD004ZbhQ;vu&$Hal1ks*D_gj30h$I;bs86 z;Cuwrs&7wb%5phlx){MyzkbHP*Lf2u^xOH3MLAME+vtLaZfv3p#8pD60(NB}>(|!c zeof!ub$-8BX@B<>5B)NJJg>+N_JDWx)AaKngtnR8dcHJ9|?&Ou38TzIlV<9%*6k1JU|Y zYP{CUr4prsuaFplf(H$B_*}IRb8PW@7&J2Nsgr7l<1+-nH^-)z(k8qw}A$bg!~WX_1fce!lu*LJ#G%U@OtG1E<1~R84jLB2OaN};%<~ z^(x%ckj~Fiu%{7C@l~U#!Vc5CF+v7RLitZH0UH6`M6&>=6`*tC1g0yHAq;wL81WTg zM4DdOlTeHVd{6>$77Rdne;52PZD9`qrGgs}P+FTpyg*z)e251^oq+}l2C5ANc}eSC z;HQNWjS)@kVoXCu2nxCHP1BQEy-ZDdmSU662P)QW$}-0Ldl;K_JZSpjrk(MZ_nR}P zpJpjsT6I#)_VG|;WgHPN2V{v~|9wXcS^BSVB>GOL8DkpKJ0pUb*0Y;3v(Fr2jMW>m zrM~%!^;y!4ojQEBwYA?$jF6G)l^Bfhe=M{2TP?`^jv0=r?{=d#U;VsR(|$vL&GIzp z(`KVe>H;fNUwNvI^*NzRUQVg&bAoEbMG~EFn=t1cM!WL0AKGddXf3Zg@`8F%U1>0C@o+ZeX~q zgkyyJzS~36OuZ^iP&8AOG97nyGgY4d0XwVSI>k~iPh+&*0@Jo52TYov?#ATIm5kWl zK~bj5B*mmT6%<#qju`8twG(fI0C(AT7S8W2GdyRV<{s&Wj z^_%kHNWXP^uV~x`Bx?dXpVc(2a8NU%KCG%zl*;iVz3T7Z^r|I;GF0o1Ca6}|4^%sR zO{;uo>oLACh6u^r(Bs{nMh-+FjLH*D+$D|U7;WCu*Z~^HMIbyyg(qoYKudQAo^dvR zu}9DZcF0lVDC&T=jVjpRK~}!7`h=)K2s;iU4iai3InkxSr~=PRhA_;A29m!4ZEKy% zyr)5Q5X6}XpfDi74+il8^@wLc=OGO0DcuQzepet+L8X0<1aJofVS2=sB%o*@#2Gcv zMj%fhs1Gf?d0nK~_B1^9r5^GzwGRDW(Rjc;(`Iq8@#iKy`_1xkin-^fo1Tv9YMNVT zrpc?$bK@ZIBW#ndbre;4O;e1l`<~*b&^yN1)>n)ThXooPF7*-*biOX!y4^`kSien_ zJ-#P+q?eN4PYtIphQ=^HRexh9jkaU9*q>l-I1gZJEIr7MZG6<)4@#77;sI@*mm#%6 z#If$f+D07A&L-kOoK3WWIQJYD9{#JoYwM@iX#EELmZE7hAyDJJq>QGl z?_Eucu8GR7fIPl)^{R=xXmzRi*Ho+4f3B(+;HlCJv}$ziyqJ`)I8wUY5XfU3R5(X2 z$U-E03&Dgj&s}v~c1J2>ArxjvDCEep3r?M77Aoks9@wl{7M!M|Fva&^zL*~hQxG)& z-4lT@>B2x3dRB;V`+sK3rM1~P0!p0#Df?*hk4Tz17OeM@k8ymk!hA_|uLSfnRGURbv z80GQ8zWV{dq2WNifk5Yx@MkVy%Q^5vtrgIPq;EmMj~K-uM#Y00YEAsox9ExBp8zxq z2y`OpTg2|*o(|**1nFt|jboLM^>;jqy#KyWTzS^izI~d)apQ2)E-v2W&_v5NX>Cvp z-So5Z!FU5}#k26vrkGx%p4tT+7evSzo_l!=I{`H5W9MAB|D3S+Yda6Q*?*qxx_-rCM|$ zP^H-WjjH)YK{a8IUR`r#28qwFO-hp+?zoMEI_1cyptw`qIP<@_w}SiX2VuVi?$ zm2(2@vjeW+_ac^IN}nx1lDm><*;|3Q(iupYsDubJnah z9;kDG?dE?qk^qGI%XtWc zTC$i15ShsUat1;?Dg%UWPp}UFp&nD)Vk0(n08#^O2ZD7tJTq3p^_dClE1RnD<=Bgt z)|nO#ZErk1uPSRdU#(!q3r4T4W5i=uXPX+uvc{xZwdpS>FzlFAS4EwBM#a4EI?I3V zx>%fAzK&RBS0f?uYtGQ+cuV=Um?iY~s&R}u%8%*RZyqz>?O*2X-1@9vtrEJ{mY)d| z;!g0QxTOlca9&=sQeSf9YzpbRz&6MLb zbq>KeFdJ2ECrY(+t|vb?O;nZHk*?agC0TWKAc@YmO-hp+?zoMEI_1deoj&vOFFd(% zw}Pd$Fgz#BeV0ygXSRSo;|2Q67K#khocfHil>qw8LJ3z2J4|ik2=-$~Ak=3N8!7_j z#1imI1{)I7$$;#EFik0-0vXbCUYkC%P){j-)JyAC3Rts}zJKRHwu8z)f59nYG{+fDjvkfpD#BD?Ceq4f{S4<^WFoKVU@h=`-$oKT_2*IV4PCf4r_T z#U5de>*rQvy;{sx$g9mWx|Duo3fME!_|Vm43_kQ3)4ksXc71(D(O|KoVqv8dqM_#! zab^vFVPMoq(N9xT$Q<^S5W1w>-m9ID(t#U4rcVyo!!%r=WCoPdGhaP^%$)uup8eoK zu(j1o)V@sqwha+2Tu23Nqs9N~IRNLZB#m*xNI&~pH`OaIr>pziOjggE)=mA>ll#!^ zDL&&XihtOMR#i;8p{nu4V*ZSntcs`gDtf0L;|pU5vvNa^cjo|d%m@gh^3+n?x!>=D zmeL!}0X(F*9iW9=0Bz+jKoihXa6oe=tyxRCdKR>l3`+X8(X#7O)B$Z9RmeF2L<~Zx zeUKd&>^SH~R3Tc44BSQ1P6)$npiBM+w5|0r^ErS;fEhmm7HkI__g4^O>HtP8gfP@E z_5wYGFxYpI*2@4XnGB#T@OuJwB!dl@BAo+(=cW5r5SvgB=?H}J;QoKoMOqi%Ie?C9 z{%T-6*`on_Y`d4~qqO^Qcgi%j>m^5p&som2q~$hK)87^uH+TC=JX*n%*{MCqu6c)|(WTyX-#^%Tg8qz;VbIZk3}g3gq1*Fr^wDqc zF?Fh+VtOu^%OtK}z=)c0Y_mJo%d6hrb+am@tJ_AL|M7J*zuU>KnuFpN&APz}>UCGr z)xjTTsZ|5|su%SaRQ4_upHxAw@?M|8|CIia-}qrIe)lX-mGet@9? z^lc*(jthcBh)k%*AR+R|EH>&usJCN0YR@FR!1@k6`+^}1w1H4qw!92^+!jWe&jD-( z{MiOLau)0uAix;~)JR%4TMcfg1$zYE%>{e<0Sp4 z4fru^IuN-3pRlU<&H=c0H1!^C+)=&-yT49NQ^%$)jC|WEY}iMQ6-`ZtObNeiHMx!2 zZCuDt7RRwemzc+D526bs`uB zxvrc+c%jclqc|hQvbmDx?k5KB)oe?6s2SN%tDf0+t$IM8+UnL#0@b0hdR4`{0{_JZ zO6Ailkzcxc8hx|6cS!EVY}TH3iOjsa~Od5~cQafpq~M>jSE5;7G1h(Lt77+z>Y7-j=;@;9Ju z;f+}*O3|CY;YYlg0Par#7ajmEq=Suk12<~0H-K&f9Rz}OOdw#30CqC?=YkE`BYp2b z-R#HT$YM`HI1Q8qZVU%Eo;|SE=ndT~R(v|q_fxOg8CQCjW4C?rz*P6a2BYV$GHi%4 zLQ%hJHPhhK>Bi^wyN#olH4>FQ+?n4`WU?D-j#D`Qs8CEjKFnBtaUXHj+9zT!*Fe#A zWjEo3wugMe^ZJ5U)ZWxbzv=0Q%@d6^5b)vJBwBJ(-^daXY^I3vo8v3@83C9JZ3?dIfBr+|)a3n+{ zoRMKTK`C^X44r5X;LuvY55N-X4goE=(}7%pHbPh#urq)j0>Q+9-3ho8XvQcODv9?Y z;~F38PSP44K9>Y^8~l2()j-iefK$vCAWsOV-#AtkpHAe_spYs~#wD@W*hLOOrrH-~ z7+XajVLhL2Ryb+3rWqSfn981;XH0z7MBHOo!u0g1&Bh&=z&<#-P%-k5UTm}oF0~lY zNu0cGso3tDWx~Dp7SbID`v}^VKN&`+oRy#Usbsj=Bbwe^sRmP{{TRmMiz-b22Z_w_ z@{8$d`xcWSRkC!Wf?!p3QpJ*sRr+5>YC_&m*1Z2|Z#928T3xY@gX+(?4(hgp1%6SP zWL1lO0)K24%^QE)&U=<~&jr!~x- z%Qe|~?V{O#FRoxq{j^xT^<}s?`D7c~ZsKCmGvbM`@yZ}UGkK07zV%4?tgegc23I;U z*mb zgfB&L{Z2X^mk~^H_nghz5`1xr+EQ^0Xxqqx{T)#R`#AP>)Rtrx!ZCnxI36$zQ3z3o zXjI@VoFNRefjIda(6;c#yndGkc!OuHT>xkBcg6YuE(kz~BWJ-6b&&Rou7C~Lfxl}{ z(?FPpvYeee18&3<#Ff>6DOq4cn3M*w2npgb+*+fOwtnZ{DSV=facHkBcH%5oQ)%zP zMp@(Mtk-@wHtXD2laBw!cs>1JW9)`b;?%!0ncXryJIOSky>{*!=FeXii)FvQDE@e` zw%FT`607?x6At~}iFVl@E;Ji^F!gNBD)N71lj-}vQ}m8Af716{)Qm?$3nnz|f|Xlu zDbBc(3YI*aY5MOvO~a41>ffrYRy$TytNvQsS9Nx8it6sq0zV*)=C`!c^Jxx={7UBt z{=0!{Zt`%7KSIICDZC-fdWSPPFeNu9Vbm*d25;iTvvYtmlBNS+_*iiUHJuzM6(lXk zf-}W2p!3EV#0|t4B-C)wF9SlHL2SYOA)H@fxV^>3c~_wgVc2WL8M05b7cga-Ub^oY zafYGIn89X1czqzi*B5XG>cn_LSOW{ecRw@@Zq$VUZxm2}Is@Eq56;YPd(`NE)x>`B zOQi9LSXo>-;1t{J*)#UW*!Cvxuq5MpC#A9ShTFoSvQwBJ2908emmR>K@rq+E&;CZ- z-=en|KDeLgwfC@a%l}g$cAiQ8!I7heS#=fi$oiCgxNA5aGH@|H{pM6UU3ZJAcHk7# z-Q@#o`@f|)Q48NwO>;rBkU4@B$1J_6yW z&vXQe2REc=Q-HMQJgqeqhPu&Un-i){PAjn%J#P zO|RXHZdARJJnLQ}z3faSdWN23 zgW&Xm^N!!H!v5N)%M}wYs8`_(1?IiM(ztnTv{?YRdtI$*t3}Mzg zoXLSHxj6}=UV$@@K%e;;c5YxdhT9HqY28do@vgloZhi)Qbs9`5mg(UaGlMDm#;TwB zQmdu!goHbXs8eF!ALq!Z3x=}?s%{Pi%^fjeH^?y2hU(jm;-w@ z(i!XY61;Ba(P{nYvBr;fe!{-zea3iVUOA)Vp;pY&(I2xb`d>EDZPyrgd37*9d%;!s+UtVh{)OxGjFHm} z3H@5hrya2uzVHgCW6#;s>8%zs_4Y+Dey#5@XOik!`$37qoBVDh;!celsiJMf!R!jP zQv=Vvfje|Gd&|vKC-uFp{yO=XYGJu#RX0trYE-8ds-I+A_)4Q`erR)w-|!%jZ*CvK zt4HkM8?4sz2U=%v`#-}0RU|{0mm31TJNK3w6j{Ouw-#-QJ8&RD9>& z+&dkf*VR~#Qm|d-)iN$s_=um{rL)d0sP}w3nZ_O&R>(*T_F*lD1@@X2Z2N(1}z^S4ufG13qgk`hd2LJmf5a z3_1$xI=G*MsDgf?6QMun+8eq-rzpH346}ha`5Vx-@Wy& zbt1P;mlF>eTR0DAO9wqOp17+u+Fjiar}E0Ob3BfT36l)Q9j>m%&O7Rg$?8ygOu02| zsofduc=u1(Yb@$IRQ8ll!0uBrzoe8xX39jzKv^}Z^yiHmC9Q$3V|;%0Q!^W_}`zF9jx z@37yMuf*KvXMPG}sNjZ_CO0&38wZujktMPS$=*W9E+iB>NXR-QoFXIPbQp;&##{9b-Ivx8o(9Jj2yB?y0NvT@DUY`s(x;JdO5({^H_F6=j&(Mh#>TG6VZB+Bq4H z4TXj@BHGwEXfS<&4PlTCw8+o!w1pMsyQdcc7W@dZybahB04wHzI|Jmt0CsJlV-Q{k z2%1>|wZ%KzXxgH4K(ovB5OxIOAT0!&?{@=?z;Fe0Kj}UmNN26bo6$vz@vgQ`7c`y4 z%f08aUbSP436aOdPkc@?Pxjnpmvw7us^WdlI6|otFIAl^bl7o~S#d~Y8!WuW&Wh%k z%_|lQ>JNRy&l6&VXZv~xE3+yIzSRu!V|86ppE|6i%ho$8KW%TMFCSh@H%(*d*_D2w z58rCa)E?5&%B>QG75SUGAX?NR6|{{O|Es!4ml5^UV;gK#Wvtn#iZUdsI({*g-_;>d z)$cEg`+jH!AJ#INZ}~8pFTblbKj&y2Zk9Tk+g}|g5ns^wo!%XA_(I$AVd{}UouNV z6hSx6kSYQpM3Z#jESw<>vw<%88_>4!U_XVEq6S^q@Du6aw#q#&gYzw%`U_ zLEORf$uv|3@q+=I#dKpJ4In9<47L}92SOO&5-phZ58S_Dp(>2`o5z`AyO+St*TH?M zv0^(H=G>U(#&5<=7mppKnK2V@v0pg%5(kgWGA5RvXlxjfAx`*VIlXY+VdiefJFIT% zR%X@h`oe=g^@Nc1@pPryuwdJEmEnS1PLJ%!8Q9H!^6(`;G1c!ZrrT5T^vWtC{nv_L zt?gc-@FhQ!9YhxoQa#(~f?46*?0-cU@v3u6U9Or^U0*YXKRt<3Ro2K<9l9r}LemnvN zIaUVtPT(sT>E7t4l!P8QOqCxBu$Pjpi_kysx8s^VxJ=jb7yT-@ke2jrpKM+qj^bunI-N$U_oLPB2o^f#VVHQ50CNz9TiCuql z5jM*g87eJsgkxmxN%IP!V*4BP2F~XBnuaFo4 z-KyBus&EENij&8BRoSDB)y>BCRjs?SRMntmw5rO~nW_pSz4;0KZ*WsC=y|UP$-JjS zGIu*z&v)=V%RNzgLMaPnNNHXNMxdBNLQ#Z7#8u8^6zjSbDM(@0s~~@8pki68%GpeL zY8Y1Ys_*Wxy0{ z1Y|xo0)jg(5Ta&*AYUkafakK;d19j@ba6p(qoTw5H0V*Ev}4gR!m_s^=?*JFuE&E+ z4+Mf{mVQI#B82q->ID8Z5DpkXL%9$G7_f2A1F-_{ouM-zo!b07OM@FYz%Dh%lLD73 zY3o&PzBQi*i+B6CWHyf*WlXv=LEProk?A;UGOPM+lE`(QWE?#|%~)p93h|SPbLG!x ze8y~e;L5gN63WavJVH3RV1ZC-sgE$Ej7RF@25Sv-%6={+%)XN9c=?h%vCmNX%`G$N z*hca6m?oL@372tJF1?i)QI}M&kQjjigDOUxAjPqb5$Y>G2GzbnYgNAu_2Wk^3gnOc zy_(NBlA!Y4dk{)Oai6^}@D&f}c~|F$+}!R*xa)A9t3^u~KLt0WG_M0AP$VJci4726 zlJ_)jo`tXKvnbwii$#xsl_$L41y-SOn4%uRZd?0U*{V!8?opt$5~ZA)K^0|~=8X{u zx=6@$#0kU#m}N_Tup~VKZNv&}9JC9C6Qt+7Ha+4?kmW}~mNx)fucs6Xz+_3bLLAZ$Ep`15m0=)Nn9u0m6WZ4r;@$fG?BQ-U-mD@*x$TJzu)Bmy)M9? zzHaKlOy*0dKH&~+ZrhNajH^!dh{rZsU}mU&;|vS*QR@s0M_ryf;1FNv`&vk`Y@&v{ zI%WSp)uL+?RK_x&^4;15^Q$k%@lF1fsX8x(T|q#N)@74<%G;B>oq3kGE8UT|zqN^1 z|B=jX?j~S-VGJo%Zs<|eJ&gjP2NWI!T}4u$JTwh#K6@Y(dMFt2Jt!z;KzZ(rLws$V z3>3zYa^j~c? z4rtq`f(%3EAfjL&C#Zr<#4t2u9N@S>LPJo<>?`13!Y~`?f@QL8$iueQsmyyCbM=(s zCq2b_0w#Wep0A6rHd5Xo`$<`!wFNxsb|YD$DT(S+y1&qlnuMaY-i81-wlp5 zuIUnCtQMsglONR(l;QQ6$tUZv6-uvV$NT=yjQrtyVSX=4be%X=n7FyJ;rnryg|d}X z=w3g6pK6@6l6L)WgrWb69`fJaF3_6H^7OjPS@hMPel=8B^VZ{xRhKR#&Oistb>#}e z3ym=-*hnwU17{W*q?O7%K$#tBM=ggAgyT-pkXD0`q>aR$OcO#F963&IMGF*%#> z6*%(0i?llnZZN>}44aO6~rhrX@jk*s7>3V~mY)+?uw0JfP;~7u$`k1vwZ%CghMx1G~ zaIZL`Y!`*_X^jCRSnX+PSmQ z{T4IYR+ogH{V34^&T457d~f*F?R&ZZ9e>01)Rn1;p(?p)fscH7?@P2|&L}#l=Le}n ze%>!XRNjX^6y<2;R*72s%HQ+{^_d2wf+Y`UKJVk9`f81vioW8-uYYuqpYmZAKW$nt zU$em$&hA5sTlSltd+0B4lRon1ex5^fk2hr~4jrb7VhFR|;mj+P9Kxtq;Y_j_XW$gC zgfn=0FmRWi;&a4LaG&4pJoRQYb+5&!b1kBh7an2T;q0RUq;Rw_Zu>|k% zCug)24IoT_XOba3*kljJTBDMOGtD2U#DK>8nO*Hyi@y(d6k5?i%rd9O?4p)SjGzC( zi^lYy#r8kP`rh`~BAiT&U^dKYg}Q&WG<-BuA=GhC zFuYeUL+-NSq)?{%?{xc_J_i5(%jv2&FEORgt)~6!W$&oHr8v`&bcd3MGhNbVspe@q zs2X~9;Lo@Pa!(SU^S$e;`C5$@a-YwIiE+ytoa*>O?(X}MeEsr!`5KSYxn-qcloZ|& zX1&9iV!;`{EPQ`>KG3YsY)_`>-~Mf(SgbeWjOC7F=~hhVej6fD(X)0X_r*tpzu% zd9m}s?gIWqum^w*ItmT-LF_;*Lbvpr&T-%mhV)y2Zh<=x;*!Dkg!oUutq00@^ZPT! zsLwQOI8*fN^B%LPM+KwPE>Gd7s5{K$=EK?fOOlPBom(j$I?+Ycw(}Lre>9mo&nBe&oJ=uvc^1p_2Tlib`F>?UQf35G0g8NXfrh@D1&} z{Reu5_eb*YWJl>OUzO0`d&$2((};BNl7};1KRs0Sjyk2PS?f7Jj=s;gI&y_qISAbK z>ging9f6x2(VKfv-kS>>@`T&b)`7e0?XCC{21gMLVb(jGDHfdJ9%bt@s)r5CC&HYP ztvDn77UpzM=|mW}{63|ce8{ZN6vKed8)pzpoPZEl5JzMdH^CWu@FUKkK0~kupDDB< zJ?k~%j4gfUAmGJxpsRory?{7yF9zIjHe-u~GYcVXq!~Y?yYn+3ou36`^x$S7eggRE zw?dz3nmkTyI`?;Ge%CId0Qca#Z*yey-+aqXY#(Oy(LWI9Y~3QdJ5s)j#>5K;<|Q$+ zOggq>i!Ygu2d4?QE}Rx3cJH9&e~vIbQr9yyJ*gFBoBR!Szn+zQ1bk`uN8g)n{A}93 zzYn>||MEObU;m;SU5|U~_h;TC9lYe>jBMFm6@5R7|C@&2RX*IE+cIY(Uu(@I?(cgP zw^^};I|+;WO)Aae4xLNnW#c`$OXK14j%XM?g*Sv*?{KDAa0X8kTlELBBbwAP@h5U zNCbNz*xosC=DyjD_fxV&pE(6?!JLPr&){?2A)Ov5qeSa7O`e8}wJx@0;!F1vkAIjh zOkQHg=)Ru9PMqD;7&R?H+*dlAByw%9o^u(~GAYiDW5R zzh9Yuea4Gau*BhvD)Zt6RUJiZ{zkRld{;+jo;qKPcTL>FZCrCunY@AGE0&7m_O+kD zjryrA?|((l9d!~EeP_ZbD7+!edWSQ`hBL}8u;+sNGh0D#f&0AZvmehUU%2qpGuSGC zb+j_HgfHCF`(}Nn7zXsKaRy|nq|YGE;8`-n8q{Y{e?c5VgEpo^y`~&cp$+L-uTh_| z;0%l3wyXvE+>9lRC*Z{)@Wba#3SS7j0d_yIoh>*6bpmz8eBO+PIMCw|S8)A}0UOUU zqt3$yLRjOsK%c4U>)E)8_(@niQ#T>SSfK+W)_S^texg&dEgH2H(&n!a?|gegtarFN z-LKVtd!jfuxLreH=mo^bq>1|n+*IL=-;!;EqU!m0ql z+AdY&6>{f=Xi^NDXUS@+_Qn3f8|U8U|9<4nCC$j1SLPD{G zgzQ6-SqPV0@^f1kHV3{B-+_5!o+!>RpBK&~BYz>RDo}MGSM=xC5Ju#=XJ3=M2{<5n zO7}KOzYhs#jmf<#IQZ}kveIV@g@aGJSEX`av+hxd!Dkx-kRiwjWCAh;ZEP6QPr)fQ z1TqZ`+Q@iJn{PuHVngP?da&6#UtCiOXN46>diZ`tPqEN@rSrvtUb=TtlGUydHkzVn zD61j@2*ws8nEm)|3k?y9!4RegI}~h82RuOCL)vQr+gkcJwEy0gywEvT_jy=QL|Dkc zpy6Qy;-X?cCNXxc#*Q6LJhJ{Fv0*_Y!gS%7|$rXR%OFn1!L{jv&8rc4+PgM|BBzutj#oC)`Yp%y$kDcXSfQtUR_h<=xxPmYgDS3+&-mDfp3>zJ zDb?GmM>HW7v@P>dDZw$6tIUUR)YmHmS!F%AaSXiX^Tev94z2h*t7`MxAuX3W_MC zm$3mw7*b&|0-F!T9E!OAU<8CY1O4XwEZ|AoGE<{^!Asuvpx!_-~mwpFD(jgW?9CQpC-pM3` zEkK%hu)&SL`G`6Qh9R!d6!`mqJJ1{^*Ml3vNTEvHcPnnbZXZ1rZutJdbn)CP-q?Rj zSa7X3(|liR_Tz>~M>tTETr$(y^H-kqD+{|w(eeI}Rq)k5}*i5OL2LrRkynz)UFa_7hqS%icF z2ML7_5(*w96hcTS;fa(-Btd~igjrEg1e*!pi|-=&V}3HA7c>puzs7rkrQHs= ztx;Nq!n?RG>M6W$3s<3Vn6gPV7jv^g>+nvLkV87zg{OpzFidTu1~Ld6glHOsIoN2} z0K^dVAdOZi)F3^_23q82c-q1W^Icq*^wQo2+XiI&k7ju<$$A0gKYXi*zp14dua~ev zF%aav1uJM8;=zr-A5249X{`$UOt9H6?S;UehFt&ugAv7e7nf^5yeRW-%gFw2B>sB% zig2JxCVkWE0Neh~U15o~j=23wU*Wjx9(wtY;q>U6m6;x!z1iUQHRxabD51{r8lC>W z7QU~7>4-tQs$Zu$e+`v?x$2;N&QF`^)^(cEhxVBapYY*={YHweT=AZ@wckpNXhy16 z3>bm3o_a|W!LWiDQk*<6qGy$n`~;HxE7^Yq?hEpA{f~D5aK)`js`bnvA07SV70;n!X^NnGe3`5g7|<0$=|phQEV9D z?pu}LFBp85F^%_qDvmofLMZ+4JEo#xKij74U{P>CFS^JM8a$?N7e^e>3*SGV%G4cN zkNIN*MgMd4sL(2QqCv$}mM^R{*|2=a;?!D=Q{`W;kPG(mZ{-6$-=lZ43ei{<{G z-;+OF*izo>m<-$+!Ny#O9=1+eQo2m2GMi5SObq0pYKEy{gq>H-75TNqo3w3zy!h zGxtNORBl>KC>Q>bmeVxO;Fk7!%=P_rCpT(QYrgaYBRBQx5%#mgP_V)q!mQlTR6)sn`cE>|5ii$IEeFQW8Fr_|-wQ0fs%N*R+uv3tsOV!t0a5Wh<- zjsa~ORj|M3)I6|%+XEr8AljfC!;nzxAf`~72YHw<%m%s?$9mNzy;%pz0*qJzZdh|d z9fS=Ag0(0GtXbimDw0m21siaKhT@^lg6YtYzgdO93(P=z{Ou|_8SFr_E!`2>?Eg;} zDYoxL+;JHrnr`v)J6W6H?s@S`9<;6!k-8ddi`%D=tpL=e)sYoaEX>7t6#pSA@wSZSw6T#mPe#sgiPsd- zBjrc9GJJ2Y&rN~*>A*s1%i;l$KswQ>yTBd}hD!&KVwI4nrFbmjc2y(q)fHfkV)kTKXO z$Z)i=!H{9-M}uosNTeY#u285!8q5Y-U|DP#@@U@cRY`ykM?uaDAn)VBeGuflw?($6 zfSZQ!2@nn#g1==&u!31gN#|=Bcss3!xba|P+89U!VG3vP3;%x@QH;7swS}dG2bVQ; ziqTm-SE+^|_)Mg~{Nxf_McH1w-s7RKQMXuh|M62nVG5$#pGsspGBn%1X-oP;Jtcf0 z3=?GSd<~x_*bDR4`uG|m6^7=&loBRp9`#K=vQ8ec{{&s3abXO)lq z*BT>9)4i>G=PgMEZKK62brFOD=xD{de@=>J6E)oVKgKrZD?ZZmpIrS#xg<`@DQ4Z~ zzS5oL^p~C~+a)JMi74)yTWQ?bZ4O-QjZEdu32JV_l?KYgd-q^mVGJo%Zs<{5x(Es` zq&(3B;`6(rh0SLZMIg@E(tO3be@+;cw=Tlr4Z`rvI<9P~D=dazBIy9P2|G(GTe#AN z1DgF-PqC|y9F>02z52-Pm8~KUXxpfQ3`5Aq20%o?nGm83G92MPH}t@C$mBvB!Y~`? zQXIO-mw*LF0Tb4OJzY;J4(KI4f=M=G1OAS#^gD^mLFZTo={(Iig4n?XLm14(Xc}yE zA2C0pSf)3BO9)~A-)mmQri;|<^l1JZVaDa1jKf5Y7`wKeP@$0n{l|Sj`b4FX;)xEQ zi_J^9u;9PC7;n9Kt^p;xT@^ar^6h2t9H`V_i z6&+`{*!SU1y?k`nqqJwrx7PM9Q98)0j|Jk6xi_htZA`(8?0|6G;Fuyij^!=F2xn~n z(LgY+AchpfCWh4H5BKQDzbCHe-CA$wdSp5C4R%)KCXIpK4O++9gEUvU?QpKmq7=UL z?PuK7z(2V||RPf+8tRBK`sPU9WhWkH&beGlefEY zXZj>7opF!fFA*VH~Q? z%gt0!KVe*+=;Fa$zE5%2Y50;akRoTRxb+#7a;-qIa{%-aVPHR6A?T%V#!+99>nRG7NV*FRZoH$B?Pv+l z0QVG#gYKoM1{48llg;VTW*|K&+#5Q_>tmIHMg3l+W~V1EgM{B7|4Ii{%n&awZ7Cd_ z^_*_4sn29R>>(Ukxk2b$x~Fh`UR`GVh!{D&q3i##_Z?tSEX~?0DyX0!f{LJ^7*H`{ zCe$qK5LG}xF%l$7lprQ_RX|X{1O`l)6%3eB5f&q&m@_6s1VLDH4uAE`4hPP+tDNwi z`+M){hvJ>Csp+XsZ};?srJlSJQjH(_QFlif?o{yC&G;`gp`O#UBBWS_%qicm?krdNUEdOdext; zjvtN|8q8>c?}jr^=O(G}m?v>(;@yruT0E+>i81MX%r|`R;r(&)E4gba-ky#{xJk(TrU)PH2Euxv>(xxhtm2($bfYS_+uV*hy}Z8VDlVm|u;TN4%ffNgC4X-yTxNjZ zAi0$@_p?FHor%TSk99|7=dCq0*&i|?=iIc2N@_V zcwUnyJ8(H7Oke#PifpDQNs-h4 z1y)~Zw^mzelc*`CypcSC{lOQ4{A*!!!c{BUEo1?GZrvoo+e?GcqdyfmZ=^B5=4|x2 zMyjNUh{#EV6c-UfDn!U2NraFM5svu@F%kKzBLJx;a&B@il0He3S&c%Jc^$zO`yWNF zV176fXfjVtowQ?Cr36ZNo!~2CSEX(aJV?KL#N5RYbi|da$-?SYslVDyWseA?fJlX) zBTQkFSqfJB;k#uXyb{o&OqJcbEe0m&E{>e4-BjSaQm)1Z*!&myPK!6L*n6J9sf zL)}&(&ol~g1jYrwjR}+xZP1RNijsl*@p^!a2d3CuOi@qvnc3mK4=9WO`7z?}yYFrM z@u;2X?pr@f|9dij?8U*NkDmuo4Q7P#^G_ZY>DuwA2_w97m9(Go-KL6Q+uTZix2Ybc z4dSkd+F0^(*2#N=qEbQ5G0 zom@oqRCqA=W%KG<|E0!?y4@xtqeVY1gR(~pk{H*U2;J4`x&ZCSTS zZV{MFPr+YDf9mm?rr(y+;U5Rl!+eFbX;*)Nypl1Voku%ruN2s+zoGke?(H{s7xtZTTxSws)90fvWPQo(3yudkE>Ni`6vlfaK0++RaYG09p%6X( zvHNihBFBOd<07=fZL{s{I78yhIE2XT$9>f~`iJg|{B8HW@qNCXZ$zgLccfqh5D5`^iO9N+ zAcRzx`w^tr$+<}SBuzqC)z=YRaiUHIg;`Cip=-%)%R(;WKV6^iuFe$B{N!IGb)Y-4f5nGb^&$ zD%f;3mY%R{5^WgyfxfVylumCvpX~c1f%8HdYya8%0HnBx5SAq(i@lX_pAzT5pScep zsSc?tL1f<_37j84WN{5<^`{i?8soY@xob>Tf5>ksk;fmd6$m7nf+%w zpKLZK?UQ3~f+P@@CT)@nHJO~WVIqGha0McR)qmdEWbrzCAK)Q!^jsm2{|MXi6|ybi zZwfg&4|N$rcCAMrxjo}IZYTGEDIxC1V@)&B))n{LA)+wvUL%q*qT2g^XzpD-_xtPo zeq~kz(JG%&RLgfMxjCIXiK5lCpzNwOKg;w+&i+Jik!??JQHrQFzjJbdsN)?AYOsAh z{%rLyD&2^eeXhb6s=gX}@GO(;f06c2C{@b6)(N{4S5DCh|jG$NhwY{+92)k}AQp zuv`E6=T5nT_%XlJj~6qubml%Uc|vHBh)3_l`@YEcT<4<$gv{5O1g=7c`QkY~g<@g>q86DYAxSh0BVqfRL707>y-(8T8UkTZDlF_(bi5%UV ztZ*{RpJnXKKNnEm>Jo~X_B!#PLWJcFpKk4>D-tznXLaCP1OFPy&* z;xhLa_#GS8U*dK`NSqr#;P-nI>}ji07If^zM*=FYjMiP>Qt*78kLlMS5qiKAG&NsL zkH~06_q#ThmK*tk?i`3Kl7B34Ui>%sozM*tLNP=Ly$~Tc5Q!)e;T-rg^LIR6=G)7p zi2q37{P;1yGxPTYsqEd`E;vv3MSkBV;!$|_mUKSm3rcwRmU;K!Qz|>R|C62X$NWxs zoa1*gcPBy$n_PF2K=@t`g|i{;^$!KEK>kbo&duMqBQM`TnImNQnnEARd&p)7khi07 z+ZDINS>9&2JC@~j<~QreJz5{MA;;*TUWm4xQHSrGReS%d&EH!Y?|AHy^L(B=z8boZI-=n0Ll3N9Dz z!?W-Ndzz)vt?!N@+jOsiW9TjlLj>{fxkQQjhk-Mc#^Qf=?fmzvFn^Z4NwE_mA_PTd z{e+}QTD9H?lN39%c8>dgx@P|SV*ep)w_;fPEk1LDvvB&E2!H7EsTcWGQPQQDRT%uz zHtA9p!T6TgZX^)=-rXPVQnJ~a6o3*6$vA0yL`bN~$fSTsAUa}K=fKsx43_>`*O9fx z!mOPOw6Q1_Bd5L>GQXE&n#l4nc`k-LZ%_Ex40A@lE5xUee^JOYGG-5i%sRR0cHHNR zI^=Ux9Yhq0_s?_l-?nz%)_Bu^$9yBrCppR=PxD`XPp7^LMIyHnL%1SqbL{c=KO^Nc!E%pTPTZq7 z*mleShVC)Q-Zg&{)m)cnbpJwuao{y$NR2P3uHj#bv+H)doiO(hE`zd}nGLWH@3uHJY`{YoRP`EyVn}0lT1tw!8sauDZHJ&if&yaO>QixQlWSk&l zi-;W)n6V=m^+Fsg#-ZL9w=olDS-;KwDYPYPHx$~C@y67VJ(hnP?S|v_Bi7bzpO6`I zs&n)YT?16lLI3I+ehcHwwE@|Y3uyk@t2adHox6aAAHT5LA)QYwH0*9=73=DeI?Dtg&_bPeG4{3as3a}SKyH4m#Ugz~zLD z8irg%_NYOU;CjSQ=leC7L+U1XI+^qP7WA?<+h~v2GlJcvGX>%&^5)If8k;613Q0Z$ zyL4|0UI+$}Z94YIQG!1T+}WhDe2dxWV2y)G7KsoNAW~lu7;93-w#>21z9~8Xz`f&I{C6FeL)Z3v&A=~u=$faqSUj% zUZnZc1$n%>HhFG*aW{Et7k(&umEL~Y|^ z{KI_J?~ihtM-=g00-SQzE#isB>`MoccPjt;dLCaXHd^#*zdL_zB2U!t{FhvZ$4B`| z1D#-DR(sId9!Jg7Ffci6_lYv^qz!RfQgRNOjiW5$d7z}3m1Cdbo%ODzSmYH}kke~i z0j2DF*kt>`k;W??r@@Cyr>krAm*P;oeEVVGaz*&mh>OVPQ<9uiK1Dq<3rDP8H^FUk z?a9o*5&wa2Ezr@LPwAGCOX#qfJ?Nf0pVG~`htqD0TWQ{${w-(6v5d@tmo+*0E$2q#$LX;dKb8nV> zN1DvVDHO9QINlH&6tiQvACZhb$$h-YiqdY***) zpP9e^o!?r>vs{*A93qzawc~LFc}el;TX-M0`2ileJMd>a zpX^bAv`=zXK?1oXBZ0J6G6Ikwhr*2lL`Q6tQ2tQhT80ev|9NMV#rw=NmI6)WXyk4I z`erIZ*)3UL`66W2SID}H=>p_#SHz{r+tX2IBZmu77mPx&NFkDYxdfSKctjYF`RDHg z{Eg38?u>Ypop|;k-!Z{Vv^!zGNv2PKzQ(r@D$+hhbnnwC>g0MYQ_U91S&Q38^9{8P zauh}QJ7+Tsax@&ez_rmSIq~lesOA16j=z6xkn>@^s&T8c0dOSH8|2(|b4+^kOm5q& zR@d$SLVh>lGWY*KzdNo;pqqWL7aVxAQLy>&a&yJBerBRWcomNQVshI|!NV5M1>f4= zrWY#~n_2HxG3$^WP4@kfz!k>7{4OcAA6^Y;m^V*lzw3#2a|MPX=DVI2KKKg)*!cuq zknhVQM^dG8ZZqHYEZcj^TzBW6?tDMycO~?f@HP=L!zV~)`6Li-CwxzY+a~+}P~cj| ze~I7qh0OO1$ag&j8X_J)RMh(1<7ok%#_HQYxS&Mq9^O6f9EqegRVai zJbCn#w%?g5cpdW&Q|HlgXWG*J4?UpuFYc%1i)NbW4kT(Gt;%00D0`dAMC$O5%e*ue zuj?~7ghYst2_X@(USD&~o)i;TRHV3+h;S$V!5Tg(b~zM6L?qotlHw)H6C@3?Y=NDZ zrz+8_;r8GB3=UbtAv1F7_O6}G*Uhj?neObVX5P|>Cs_3ezl=uV9oJ7qq)XBGtPcGK zKOgc3yOeCUuG#K5M#elcfwV=gU?eK$1_>#sIt8u*WUw?jx3s_=CTkAPJcCoc_Ja40 z7+w`2*XoLxZ`1H8^EKckLtI5~!h*;gUY^cC)-P%rxD=iYzY zGdSwTyEWCb^&Kwq{l7SgBA#pj%>-wDn>FJpkM#zkjL!vB`20;dCm%RbopeSRm*AR7 zbgywD%Tn*`qHW>XrT*Pu_JA!WubL0aUXz|%=zGEEcDn`sJGBHSpR3ZXlNOo! zXg$KS@M!%iC&ALiujnqu=jbN3fkaoAz@1eZ1FO$QziT8yvP^`qA`wCY91##Q;Fwqz z0~6+~%iU8_yd-^&U>cF*P-;E>h;io0$GQ|PvEefM!+Ekg^A6HB5&P7mjfnXIF>@Cc zI|@~#mq3+vIYxf%m$304?I^ODmSmW;ACgg0prrkf!X%j{fh%~TCxud{z-3ql!~VD< z$l_P^TK837U_q!*JiZRgm!@ZsC$}SSE)ep}aDGfUl$qaBI0qK7+k}5jozcbxWf^iS z>Z?8dhvvM0+xLOBjo01qq`nsJ%04*t0spL!M=g5FGfDYUC0ds5B!c{O({^ixqDfD9 ze3SjBa^BNjs794Db3esciPR^(F=_ZQB}Z*Z3Ot$`OYK;ll4I=q05qyHso`mhO*XcR z$(}l(6D0s1wPvfpq=((*oR)6{BH@R}l%DV8>??<(t4r;dniFgDejK=55hmty5!p;k zk|Vu?^cvD*2=#E2y;>}cdeY*_yn?LoX`=iS_g7mcbftN1H3bzJujuy4_XO{&V(6AC z7wGNc1*W|wTrisvBot`IPoW2@Jf~yQEa*$a1_{#oCDHS*uR;(1Qs4?t8ngdNm`T+1SThuDz*L+0+J|I~SeL0hSTD?k||PhBZM))>Uz zU&TwWn$JZFnu~a*`*1u#k0|`dtfdQajG2dHQ7Y<0IPPryZElYy?D*6h_X$}cV-xu% z0y!T4cxLNa09SjdZ3lyi?1(Mv}Qla2dSMML&yiB`|>$@b;1 zqh?PGJD!s?AZNqS&&S^LeMJ05aj?FLf{BNGMRkq-QezFbtcX>~1TGh3Y%%2`vd0#3 zI5V~ouE1?(e35Kdk1?`%giBuLY+jje23-U;rN+}*`s)B|TkKCOkP1SO6Hoir=ok#9W{;a9W=0=hMQV>K)AoB!LpCoYm zNT#F)u7G548#%sa;LK%lnKCn>+Tv8(U56Sm)NmCHC5VHGR zQNQ#bpEvjU+wKLb8*f;!E!*+*R=ytZcJ`rh*ZDEdJnBVK2sLbiclO-o+Mp7&; zLy^rF9u+tEFh965B|D+Gq4CV^Uro~E3vxPrOaaZMO|pC9w^bfE^GuR<{-W>v{P;4A zFqIkChGa7pNrda-wPwMRE-Ll=DzdsLr{_*9lfl&K22m{pcehpw!XpKO{GL{HCj$?& zqmOY#4cqFmEo4EI38uGheK6CR;B0!JFOIf94%}I#G235Vk6_jx@bqLN^hZ{LN%1m_ zhsdxUVy*QEuE?E7s@ww{zvxlb=dvHhOAjsd-|)b zM<^R_&bpOVaKoH`HjJ0+3xUS(4Chm38Y$2l*BVS+d7?%KN9HsRX-y4Ci_Ma6n4R-{ zy0=JeCC}vKa&dL8|JTg%1YDM6Gbh(_Nh_~r&fj-g+(+o5nnk(&T=Fs*Qdv;8?2_PE z*O#XIu3t9mIwe-Hb}iS3FhMrZi=7SWv8!KjaSplEr7@wbIi4IIOoW@>aC1E}y&=Ld zAeV4m=6HBaHREyF<`DNOp)g+);dBJK^nb`~%H$VD$*)Y4uYl0_)hE;4Z%_Wdsghrx zrf=%;WHnXU3`Xje%P==GqDpEYcC`YR0U1n1(ykdeb6FfEnd1q06dpy1kie0D2+t6q zi11L?l;WA;R9t{nRLxUZja=gY&~K;xopZc}mq%q&=N9l=+VQftybR%o<6Q3M*hFfu zGcVg$BUIF^O9bWW8Y>$9oJaXI;_+Slc{#fb1G8Eu)tbTUT`4Lf>sHRHQTcRM^9|4Yod1% zB*8R07t9)8%rspV>BDMd|K~C*joJR4cR;DVAf=b-oVrEXB(I$8)?$u5UC5bPMow;9~OL?qn`ny|;zGr&~y%XNXHc zkcX$gOR!srTfhv?xQV-4sHaQl#GsJh5@<58=YanG`uFcoS97SUdr(kln2T3PP=Jfu z6weSh@88VpRo^0O92g$pGSS~HG_=~8dey%$uSj-!dAfy#*Ep42pX#qYHzE7O+(NuP z!+txuPjxOD2f0u3oEYXi#k1P?+SyhK@$?=NIyu}e#M8qwBqS(=%VIO!;o=_@8v47e ztAtK;^Y?TK4hnUN@bvZesdd`O>Juwqc0=(Q__4ZNg7tmt`|^Bwk&(%zt~@3rMJJ6& z3Uv>6k5>%w^zsdJ3G)r`bV;&+jCgEDJYIZrNyc4BO@+Gn2D&8q42@TE3GtkWPuGWq zgij1hT9)Kv8?O-P;T96&HVtDoyyzsedhSW{F>O7YdNwN2Nj~=R^_}|kO^Se?)%|9p3zS@Ts)V@8;y42U>>h7_U3p-bf0I6VuR8M*HaT`<5ieFkJk(1dX6|< zBWtXZP}82+%?d;t+()+MN3h4FB3?ls$Z?a$;qMsZwj7qzkWoCI1q$&?Rv3jfAwH&H`fV21-TuN@9xnn{i+|)p&AgMmc8dBf4?jDO zD@PS~9&a-qdud6{)c$k3E7k=mm;5O_ULhW%fbHi;=ith)7nV^m9=8nZ%^C9~Dhllz4W4gb$2u+Gt9ws?z zgyf*=^cx06ASWmJ%#W{+gpuTv5U-B5K0zKbk7&%DITRiAS&B!>;~DXYB%fu3d63w{ zeBJzAnB#j;@mby zf43WpCWQx>_{N628SG}Thrtt{+4$W`Ha=@b26Oy{k^2~=uI^%R=f(_h!jN!lA9LJ; z@I#C~HZqezwI)YddvEr**q7}7naz$c$CbopF~{XQW;5|FYjT;mYJJu&%=Rb~|1^!Y zdz>p`;(`1V>~Wn>F?e@UDsz0mi&W-(nem$$>@8yRow0K}v;Xa>9Sq)|%I>Gk(-^x) z5jz?DlFsI*&#JwQUEH1hO!}`>GZ+kk{fwT@Jiy@Svcru2sw3-Xlj!42I;kTMG5ep* zJi^4awzK*}dszSVlTR}HSJlg7jz8*^!{E$WCm4N?+ozc0KDp;H@$up38QiqvBD>#e z6RXc)>$&_EThC>p?aXm2@9bpKGi{K@;3tnAj6UN%TW`EsY<{d??Pc`B^KAV!^Ek+) zyDQ-UqmSw%DgV$cCjKUu^>cb8TVMB|<}&)0gU&JMNmXY3PJMWqN$1MRvyA>p9GlM$ zYUdgIM$gYNn7^cevAf^!3S)OG{|ck8TyUL#kTuE5nGR6PqO*GGl#9Ge(TtLH;d0@ z{OejQVo+l-TYpbGuy*=g*m~^x@+9l03Y*_@hjVQHM_yviTcw}R#6N#6VB+pwt}^!H zA6#Sf9T#3>;&Hv${02+%+u;FQUmtF;^_%I>=I`>IH0HQri*~W)FoA8qgATIw{`eMq z+)P!r-zh1u?RcNhLB>8UbU$;x*cFEv%$k0T(Koqzj7hiN<7`Ghd_9}r4xQL~_X=R^ z`@|Zy{|Wb;2%}bjEMhzI#}`7Mrijp=`Z>Im_1biDWjO zWOjtLcVc--)RfKVp(kuTKYYdJ@3|yC{vE3in8)HY_0x=B)Tfh7Iwm{Ve3}%qJT%pb zEtgN@*miMtI@>NT2C?zTB`1NIFDQkEdDM~5n+@@D(~6t`jV>G=8EO*)H*Sv@{8=Rw z<_c}K*BlIi1Gl@j&379CpJT%g1bj<|PA<9LmEVG4|IwwNUOP+yhgmPgBR~3s-2t67 zQ{Ih&xS%^T!wLf6aqJMm(|R)?PtEXJqGu3n=@M8^=;8&+y}efrp5hLj8jGKWUiSv2 z9s`CI_3?p6k#~kH!S65RbhNZeZ#)5Pu6(x`x+?&hUq7U)`#c;j$t$<;$e9dR9WM#4 zteglTBUksm@_aJzUT#cMnL7*et|*7TPM!`%^1MCYA4I~^8B=fWTy6z#1CJ_pwiLpI z51_LDp%8An^?6y3a)%LZk}STJjE2^s4|`o$?EoH8UCzxLY!BaE$KJ29afM-hcZ}{9 z?+PDxTp0={gJGqGw~@8mRM-}s=Dx@}80Poi+pMo39KzHFoR}~#0+0I`p)hY8eDU1b zaipggJl_0z#%#wKpfq^0!jK(K(0TaH%Z>SNF!0%${!=c8!OA&u*P;&x!nUMvk3;9C z!Cs9;D+74`@TdUF56<+2T#eTsW86Za+oaOY+qFaC`z`ID(f#8gYR-tVky{r)>!*!W z54@QJHwQY6pKdf4B6RJ{mPAFu&XXJR*V)8^xJ28&=xPjjzAjCjbHN_onEBm_zdI6w z#D&AYzxINobI)BF;q3{rvF$2_4_sl{(lKoxjp_@I(NQILT|B_Bo$bYI4&l)7;lt@p z5q=O`{>a$#d>~YL&e*=Q#T0Pel3LYzst^un)RRB;*bBZntR8i|XbwCTou!tkgur@j z??b7tJmGxgry}3vK*(!7Zs^#+>Cj`3%fza=88B*Z198VeGazKIFlb)SaJW6Ya>#S@ z`Ea{+=dCjwf?;ex=hD^V7Jz(nf9pp&Nsu^U>58bEbK!vNrla=tgW-U2i_y_1;^2vK zMVAM*OJLIV=TmPsjscOuraqUpT0&TVm7dzSU7?}gl!hNv+@N6j+4w$wu5fh1qs^B! zCc+7$;wD~~e86;sYX5C*X2Rp5@0y24M8IQ(o=cW@3xVGDCySa*bA!_I*5@6L_`x(2 zooSc0`M?ol|Lo1?^I)Q8_S_G_b0EdHhxdj)6Txjy_Ry()*TC{#bH@bO%mhP4QQLV_ zgWy)#UH6%Hec`>@Rrw9-c90XmKlRyQKIrkbURKJU2_gL-1e!Nm3V!d!_FB;k;fvyI z(@pgk!|9H_^|oX$270-*QDlP+V8`ov&8YrH==kzl>sfafL)^>zBeZlDLNkStqulR# z!gq&oJ-<_{p@(N<`6cm_;MID&`meEF_Xz%;S=wa`+@9J})!B10^b{NTe8l$r&U&_A zlXadjxbjx#POc$vZg^N{Bc2}&wtV+Q(IE&F%g;S8D4Grxs|H?f{J{q{zs*t}6EqGQ zjq(v}{~it=^;>qgT^tI5g)6nb(vHyWP|FVwXHS9hRqND8cuxSUeG``!zV(C6%M_vt zJ9U=r|OzYn|>H5FonQy{Z*G;Eq@k-b{D0PI$tJYt%#1o$f_ z@*J+r0@2ztOYgJ^2BUF>7OMgR;6q+wDJ}4WHXTolGSUlzy%j2-a(z7^eAa^2@29vx zNS?y;huW?XP`~Z8CYeFd=d)V7ygpv=;C_7muy#(+!b91IpA-%i5T|J49}HFeSxXw; z^aJbe6S{1sz2M8Sjc$FZiE!r9{4Kg;{6M&Mo35_b98m3J=W*oyc<7dX_q5r*7^wVa z_WkkRD2P;jk#{&L66!rIxh8m-0L7oDDlKWT5Hf_%+imgyAG_ar1{0q&ZZZ>hN@w?X zJL1pU=dgB8%7N^0#y;$EmXp}{gh_0?wGV5r@5i36t>k~X>>HXq%Vhp_f>68k6Y`EIN+et&x?$jjpW*5Pfulfo}I}Dca(nd)=ny~p!j+dkx#MXQHRY^Ow zl(hGqY`r=SknonbH=Cccl6qPvvCn1glAo}Cbz98#U(sI4`9+fYUJ%9}?=PvZ_L6#u zm$ds&lKQEV)JGD_pJ}Hg$KPP{m*y=wevqVHRB}8S%2IkWGDWW|qwicyU)9kY4%e@l z`_5Z35*)v^lxwVD3pe%+x+K^jfTfpa9^74E1L4M64r+6JVfu)$v(HNH!KlSxf#0$r zFf)$s++m+7yw9I|$z`-2G~3zuT;UuV>UZJ0zWOi}^oLwq(Xl%XbCT;NZ^@+L*&#D4 zWgR|zEN$H8f%*V=p@iQ?ThR*E&bg&E^`;dZIoAD<8`TLeEm@&=yWMcueYW8yoip7* z!_*}`+1CuJo`~nTjk1OLGdo)@Pj&?3SPj#wkL=*6*Mg0W1FRvilbM`NiUWkI_H5@q zoCdw7yRM%2Vgv_IoC=$9VkngFJdiE-Wdx{ZWIgxM?gsq#m7;{aq0lNFEGjz>hYClAd{D4LEh!NMsYa}Htu?UO8Y3d z(oAohMu;giTIMyXrMx!ybyYP=?qUK?ixU$jwjKsMD~f|Q_8taWXR|v^zhwY=UjCzF zLV7~d2*p%Kw_acze#0>J36^82>5j$j_Hf2?fW=Km3YOYe9thuS1YgD<+%)d+FgR5> zWbUH$;Q+6SHub9N2XZY(>o$=1s&%dyjEpm4a!5lb^Evm z{pz?a%(BC9xcY&&?B*K>xVTnhle3Nv#LhLIr1`c7EZ(l3aoW@j!a|>gIo~sZqsqfR zoEd8c13sQyyYG`N#B^UjOwVZu9BJKb;D`RNO|tB+8OF2`fa<{U9Zi+=p=|nh^|%sC zm^AFgk`>DY;3sP3{_#V9I5N@k^EoX$*kPw{-{XWiG%FN+?T+om=z7DB3zbKJt?Q}6 zMQVd!_vm>By)`IUG{mHhd6FhPG(6RClks5KlA%}M%N85L@hfYzi6gH`i1vjUh`IWoc$@#Hae>PC~GJfO+5EOvu!_U zob_P;2#4Wt$?{uO#naw!W%$*WQ(ANfzPXQOiu^FxZFxE2L5?}}e=@0Yk77%h9rQV% zhummzd#=3fU7Q`5wKiya^nxi*_2&;b=dAPFioz*^B~r z#W_#nyO~1qaK#d}owg9YRleDYL1rL$c(VJ&Ndj2ZH^tcNoHfjtt(Sl9wLN&PzqzaU z)(Fs9Am8QFYF#M$AXs?qtqwHZ*3q)~dsjH>FN~Sw-v#v6d3Sz##uNrsUD#GXdl1Y& zS21KK|T#HrY2;^U%)ClcB085=E5QaPhrXHrslo}eFQ#_9*KHI;M7CX2Pw`Tv@zOdQtQeyW2bI`vq&Dm+UEo43ou}VG%VC;}Mt?4ssP{}X(cE~{h+l?&RxAjZ6zPRiF%8P~$GmLcx{gcWMZ2I+v zrjGlC4RTzdQ%P3SLn&6!(n0m}c~>(iiHqOi-P;}lbX2!*lxtIliZR?if`r;fcJE3-Y3Ycq55@U6Fg{udZ0vd~$Ym z%_nE~v;6&je_iv*+0`|loE?{sx+0g4y5jHi^RqaYkGdk4kGf)A^U2xOHJ_Z_&+_;C z{dLVJXIIyJa&}xk>WW-G>WaV5&(GpqKI)2GKI)2f%_nD9*L-qzKg-|m_t!O_oLyb> z$=UtVW05L576tzH5L@U^hNHd``ZtoGxdiPbI7WgV68zVmEr@^1hb@PH+rz)@ft0|% z{J^$@znedQ>ETG88ID4e#wY3Fv(-K=EFfxnk;QJc89vH3az08neZ!@yjijs1rK|0v ztH(%Jd;F)mfpkxZT8bw`EyWX}mf{IfOYwxLrFbHbYAIzx)KWYlYAK!&wG>Z?T8bw` zEya^YsFvahQA_cJsHJ#9)KWYlYAK!&wG>a9pjwJ2L@mV=qL$(bQA_cJsHJ#9)YYD> z%e1eEZkPG{7F%0g?MZEQwI{XJ)t=N=S9?-hEyWYke5%XjH*2Dn;t5ep@r0Z?T1uG^wG>ZC^O52SQA_cJsHJ#9)KWYlYAK!&wG>ZC z^O52SQA_cJsHJ#9)KWYlYAK!&b+spt*opn`TWoE0wI{XJ)t=N=S9?-hUF}J2wG>Zk zwbrOhHoOX4@Lg?3HK3;K1T|_6oFuCKz*_L6KJ&Za^sda zOW<9v&@`j=J}@Mz`&(V02LaO%zHt6z7Nz{0#GvG*pI!nyXdtV>GEprzs7 zhcRu+VX9)!v+*q}psI34;Zn4pC+IY`Rayzm(jVSbJ){(N8{N9wtE>zT9^@}>s96pn zPLaj;(Y~>p*3)UamEbz>#i^+7RnTbojfzDVs$gdq@4)sw#b9#d`?1}V#GtmY{6E_U3jmyP2pb)Vlv(@n-nBKSYfJ6(X(9 zUA>O}w5q>(z%4Pfx|z^+HXc{mj~Cq;?cYaeZJdI*XqxS+9f&3(m+AMfiJ?W=DW@Lj zzkjGzmJ1%&xxwJ_hIm|>a;2>c;`;47<}5|rbhF{PCs#4u=lS}(@HqcZBX7PyT$kJ| zH48DQZQ9QIc>b6Dj|}O9xI&Ze{|eK+a3HkRT0{+f`vJEQo9nl+Z;t1Ap3*tC9%6Rz zXp44;p0ick2BBXXv*w(4M~q%ET_F&0#30A<%ZR@Iy{9t}2V3_noQ*jB{N+?9OwTZ8 z?R|5^nf>+q5L`NK%5y#K*31czsxbtLHc?D4~}Q(_PZW>~14#`@BTP@i>14DEgQ^^!Y_<$k!Atrp^4<#Jvs z;>#8eQ`%!W4D{Nf@eRxAkV>akB%Y;P{I(5ZZeQX0`>3BBpnm=oVw&ZvMnRXbeSp5a z0P#`Q!j}|ckm@x}fTO)elkqzGtWYh=a~`Feh=j zA-Occ@y|oL5gfFu@v5>}n&p~evRDi`8f)s!T_%S7LA=5;Z2v>)q|pZvV+y|a&O$T~yZ7=4 z;u52~`I(3_sKxbi5I?PKp)xv646k~pj30@pHLv1~6XKo7-tP#;_SY{XI8-tF89@{0 z#HRxfh~eTB{RefyfJ^mXl$;PlU6FYSl_m8)btd&$&$lcbF!nKQ)DIgP@B0J}AKh|L zU-v15ed^^hC$$u=cN|d6dnrCt z`nAFM+hyQc?)BhI({dR9aMs`*iWSg$z=5Xek;PE%x_VBp4JGjEn_{13o~00Yx8)%d zOt&KWoAZ!nyr#La1XPx9AEV$^3WIkCc{eUBgHsx- zS2ja?zf9{cYcT!%PZgDgnEptkJ{NS+-f8T%(M{35A}=sb8||BwC>FOxdu!v%hfkyZ zJ1eIk4SpqPcek|}Hn<9+6x=sgUabN_#-%kWy|M9k@ENhxR}AOZTHkm>8ja!2`Aa@m z!pf`tvo4;hf@w!0$37b*27BjKPnJd^xg@trnz>C3W2)NtJQran-@2-E#-~ac78H9S z;6xR?h;MpSVSpHBP3_q%cbXVJw$i6wAnE3(rKNN^j-=~3Xk0nkQ}PC-iMdq}|HAKM zFSI|^^@{3Rw7;*`q~kiYf8Rx`VOEwHnrJxdEkJw0F2(Z8n0~VceU-}5zI|+?kqf3{ zr|mATu*E@RiRZ$BdocZPtMSKxkI+qGxrAbRfDCLD}7FtE8rAnsSaqF7fJicZi|g^h{;AXx2Pcrx;fa4UV+%&&C+BK zqR3k1?2KYD?9@%Yz7f%)m%*A$#O58dZ3_{dMy<9hL99pT4&8&OEm|;mJf7b&Z`q-7 zh~4B~UmJ)i83^n4UGmBf$To_T{HU3F_G!EMo( zOE)7K4RuViCWB?ygo5qOad5~NuAA5$2f5&|&vAUjo`;WV<|1~_-g@&D4&qfw#%mrR z9=)($eIw#Y+ixw;Ar5i&rScFjY2OuIL{yH8veLuB+iz~NTTjG<2(!Lj5vL7b6GaC1 z7o)m|^+Kc@JKOa|w7qzIcyl~XamBW+s)%<2XPzMFq*`&DV4?S&0)p4*KIaIUTkMWr zg(!clz?tAh>lKa!?@*NvQju=DAaD=Xe`(lf=L|7~blN!85OMIXE+f0_7Q>sU_|uvg z7ss`~(0wnqt5FN}-PVa=Sx@JSuwD!*WsL&6Auf9K(j*x1`|48fP{d^|CU*2iY`cBK zs2gi=QWM!d?mD6{aqnJ&ZS@cKB^a-5NmU|ziHXuG*(u-kZN*AJP`!04#G_x8+k z$lUdL)zcfr5F;`^+U-LLbe_8_%K1~yPTmuHawvaI1}w12&Qthdt03P`?v;H+_BF{})B zv)S>v1mfS@jW~$u4>+-~AQjV3qQ^A2iS}DfANa3ys(^M`y{GNEQw&SLnyC1rKU;H+ ztwIi$LSBk;*?F{oKFc&IZge>;uX@_(Jlgke)mORTd?n5Ztm?PgQ3aL_R=+mT$4)V2 zV3d6X&MX&;milZ&lK#Bq?8z*gnT*_LVPa4Pw=Rt@M!8(p=l9-B};NZ=hS4Co2 zW1I7QCC-Ew0;iy4*q2mw}ZIac6h+3wl5RVu#>kNNAqQa;dU2Y(WH`Xu?G%LgXX?u6mh&{d^ z^YTN~j2p3f24aMTU&BDencl+`^qyfOU2^;EFvO`XE8kioR!o@g*9-Cc;k#$d5X)bk z^D{=Qy1s0ZKOSc_-=+8vVzON2;$?{1Qx5b`MBMZ#HaG@x!TOKS=Ms$g^!_#aWByEe z{a}m_Iyru>3S!K<6J0A&-*m`}L5~reow~ID4q~6@&k6@1S+Bo#$M+Dx>!00cbOTX!_xmr-c;&GESye(~BUT~zPYjLPZZvvZfa%@4zP0IPF@y!FZjwXHF^K5mzJ!056`yu@h&wo=aCRbGVi!|S9Ax7<5;jf3-MPXAH zrF&S;E9j2x5F5N%(4#BjlA&Lxbw)HTY_o}6;Waz`{Q$u^Uk4W5!sE0yG`MgbafRHV zh1U=d(j7NnMa&o&ok8%ybc0ZWi$q5o+(A^a*``LY?WzbZf^qxywUvftjaT1K$C>%v zs)b+VaVCBx!Bl+-lIqglEkk-B4st3tAF>kr*PGG~oe>j{xLvZ^g;%)KH@|O!n5AoQ zr5|FmT*oN`5Uq0x2WTTkt~dJJAF<;Y=i|mW2n-9_;%I`HJM?5d5|2ImP?g}tY1$u* z5Dh-Bct`N=lYQYGQjydZGa~AOFJ?B*x_u0JppM9pI{SHnx-Py%Sfq8n5&amxeVpOG zY|Rts9rNI1%;=|JxJTPK;aVy5NE`jSvC1=O>we_QK#g*|h_Nhhx4IbCx>&hHWtV{7 z3$Hu-=HTMUpyiE6zAJ;u*41p%wF3CP8t?X8R}772EVf&Iq68+MotJeV?R^R( zyG4I2gUhi4uj``yyipQK4`BMb-R7$%VEU1*n=kGYT?*$HXr0=R_9f$^ zJeaa9$lwV8f*v<1%BdSv!5o{3%a z&{lo@^?Zy0-V3N+`V!G=MAo^58LUT z7Q@=O6Pj77RS>P;b*k!}D)_2*v2BSJcAefzmki@@-rM=*jw{%7RCX<{JbnTxEiFc5 ziuR}Gmbxin`q#(xZQc~^TP#|5+cs7Vdou6bRY3b7;f?)|bFs-C=wkmK{n2tC?~sS~ zm&1m4OG5ioRwk3bqP^}_qfP#3-~H8*-2zO%#jrNnx;XE-(SKpvw-3b7y5*sPu1Fo! zmDX;b5Ens&wl&Tt{l1QQJ`XX+E_&b~q`0ECO`jGcu5j~u*93sxTgqF+`~n zaiNdza}tlMrzAHQ(|I!G#jY`Uyw#S%nURP_*K}e65RZo`?kA`c_Tz%8SRL(k2c*AJ!1#yxd8R!P z4V&o6cSjs{-P5lFqO)Aw_%?`ZvfSGH;83PAc76LENbNScsp~Evsz+Wr^&QdT_+!y@ zoW~x{{d(m%;@6s3D#_vb!C@xBVwXt0K-jp1X)(k(&N|f;%TG zxDqVTIvA~%k5s&5vDl(O3_Sh)?H^vm#hSeHSx51DMgP+GdUp~1E+~96L`ol+*Jtq_ z9O6E_yDsuT9NJ=E#0W%<&bC{~BG&7R^$8uEy&nrPPJ<*Wh)G z>!!Cu5PRoYJdVMs*2%sD?Or0~>Yen1-nNy2a)Fh&BptkMj}N_I+4z z67kMwWknKKi)(QB;s&JL#?!J35ViC3^$2#K@w^4Wx2BsL5)9_wQXpuvZIx$-O<3N8 zrcSI2?oxPTH8TT;=sF@p>CEQ^>dNSe8%L{dUB4I_Ka8yZ?9E~r(JHsqi^q%MMe4-p zTgMi`{=Mth&zqkJv}VKmR{P_@{r;uo!2B?H*KDz#R!A7w$t^ZlI~oE34XpYk>V-gH z+7#;AnP8AF?6-R0@L4+d4I8@dKD;qdfX*FAbBVep_TB*x|3WUw+?HtKBu$?)uWw>huJ1jD+8 z_wFqm77Wk6ztA`|FdQbWw(~g@5ehKi^|lo8WGHAaciCXTWO$>kJm^wHFqr1TjV?oj zq13(EiUXtO!mi4F;|$x*g!rm2w&$*gLr%k6>x171!|N@Mi{#=afkjc`=}&Jwp!kAG zT5~%ekW(y9u+#K_ZOi)&vQ~8if4`0M>nDzd)T`sX`W$ltwRSIy{m$9LjF7WyyJk-U zD`!KwutnaWPB)1jKG*}4;>S{+d9FBFbV?uacnqYE+`msPXCzEq{W^J}vmaQzJv80& zpbxAmIUnF0;sI78vX7s<>+pG3-9{e6|6nI+C5t}76J!s9x~_TCeYgJG;jn*X&tnQYmeAaEz}|?i z0&tu4*VSbH-i^n0suh`sp$nOmDt385$-4eb2yl z-5!|1S4U@maj+RIQ@{T5b*U*d+!1Ydy^$Tv51!p1ujNp9)+zYOIwfoPGTAL9qmdP~ zZq@YGxOJ9rBR%)#KtD^!PmD62Zfge_=iA@oJsb*KLl0kW=wJ;w8;7mc(6a*dwq{M9 zuCau)(uj~5!z|&PlSQBJ$Lzp5VXMEw?P1_Esl((^ZZ_a8Z>Biln-%a4SKgZDXazb) zZ1f(#v4l4^o#RHf>j&>XguPmLS07(PFaGc)w-2<93b}-BZ4y1+>?QNIUr20+L-VH5S-fz{Y38o5kYeoi^Ivn{INlfHd8YYAr9BL$q`A z!@Gcjtz8zs+hapP=$0GJ3TO%vUKa~KKLcnq?2xZnD+-#P3*NX+o`REWM+x>mh-&2xjqd^j2(>^bT=ALv!bQme}OF#Gc*`LH>B$aJ^uoidXT z2L7|o#7^hKwcLaWRnz#uS3F$#8L@cqq;caA%hmLH!(ek*GyHJokpe4lT=Bl|j%`*@ z*6Z!w*NuikS>me6N9qrS)o1d3bU)fa<6-JL!N~w8Pd4J2d@zAyLEjn#W*b9(q3XB^ zh9>ZJXvoswcP212y()5LFo5OA1D$u{XCofFcC)!_V+ET1^6pP`vVsYv(?7e7vw{e} z6VCp2Rxrjne3#b6V`rssV=nh zgiYz+46h9Igv!Axi|Y^e1od$zKPDRCH_^)6wI7&SLesLZmV?0(JTJ59#vi-=J>4(&OQxXJ5ILf(bZ@WuY%ZBZSt=*fYkbKnVeMRt;o9|89J`MQgJ zyqs^p-+fZun*25m^UsFId|3T5zSczEP2Gc%hOz}E6=gljew5uPJ5V;GtV2mb*@r@Y z^I{vyCY04ED^M~}(owdfY(!a$LVm$_FUn4ottcB%@Vnr=l_>b@*gW!0?Rb=hC^0BA zP?Av=q0C2_i{ghuzKgvSB>^QCWgZIo{yTp2oVN@GzZ=e5fD(;@-_z#dx3qalD2XU> zC{ZZ*t#ICWlmRGRQOK`9G(%~Mg144G+r9DbJ6kU}6*Vdh@AP_@Q7#76B&WEsa3C4XvaRUd&tx>d!j@qhC+;Htv&I9{L zrm°K+!X<(!*D3Tb3ui{k~d$U&lrJPIhmMx2&dfKK?x95Yl^O`Pc)#kj3Y+1*;uy!IN#rEbDS_oCEl`UoKNKyYNBWu$Zp@6z7 zG)-(LzSv1@=a-#0KW?y*wHXX3u&qBxw?NBOG%8xHYrDZj(EwFKNE0gBCLyh`j_;3m z&+pg#Ig5uAK7=F?am=MR%?=_L#?CTXlB16%K|Yb;0_&V5C9_bx^M# ztkn-bryqP?I|v2!gOGj@)(`I24<4}eBb^Y^2_c;j(g`7*5Y`D{oe;}*Z?!-5rq8rv{YKS;KBG(=@EgJueq$Nz`C)JWh3w_O{B6YsK6ew8B#a6;w+Qyu zbqH}<;5WxJC4U`@ZZ;}KyMNqF-(uf@M#}L_J2qn9nl?UtHy`5fvEFw7 zV%Te1A_SM;3}0(Z8|&q-pgy}VZG`CXAXRcAZA9%&e}FDDWQ-~cf7YS8&_P|eo@o8` zfj3udI3>OY=dcTRJ&9dA(k@_YKx3w8q;1*Paeq5)cQoSu3p;Q-LtA~nt;#8{Bx;AB z`f5REJK?qnh>!7Zfo?1pABhSoGsXAe4ED0q?}JKPp&8_MDsCrnE8c!?{}<08w-(MJ zH}g&8Rv*A7%Luwr<8Fj{%4JP(1DJw;xCHievA!QRu_^?xzLWKUk9y#-%oI;ce3bC# zAR>s5Dtr|2mY92Zsd3*~)<;Qy{@bXJeHSaa4tIws8c5GUO(=cT@8F~Uh487RZhTbX zV}7eN^fA&uBlR(tKBn|B3VkEkGk@e{j}aa(SB#P!J8&A}71NU4giDLjjyd2E^sY2n zQmfqJm=eeR_O3O)TP!mEKpNv@3_s2hjw@rl#28n`xXT##FvcAt5Z|YKzM*p4GDYBC zw=u4aUBH^3&sb)PX$kHk@R@HgxJ!Y%2t3=@b@BM0I3v0UysZN>;(f}9e`7{iVjrbM zGgM)U6!e@Ex=W@+P;_bf>u?@!1o|!q`|27jX{3^x+sa`dN1bjDIF^~>SqbkZcWCCixvbC~rH6mDF$+)3$mimefAsz`Ip0cN2Uyoo|BkrqK5} z>H(|Sxf8op*b^RlEHlL+sZU5f;}Z&>ApBpqj@bJyGd@B1|G-r<#TmjsO6+Oc&OXtE z)lLI~!=6z3M2Wtc`oKL|_Zj@%6@^bIyydqqU2*dIu=H9kucf>edH1Xb@!RaR$h&0> zz4(xUF`1-uTCkD8TuX5+jf-8}OF33G13%)W${8CPidOwuJ6cL*wF{Oy95@JdbQ$*YWF~*TO zK!ohzXGxKmQp8?h%^&r!%oIP8;9eKFSAly8eB`~$kF;FmjOZos+BYzr5ev^jObAQV zQ$|eh#-cWr5xp`af}&T`BhnqgD)5>=H!t~|${Wl4`c z&eD+5CP%%j$B>dGFlRN^?c_F>R4f)26yXULXO(!sLyTpn_?ZL`xWYZ4zyl@V0RHGh)WUv=jrLdg5t}Ikx&E=DDa@)POf$G`RCF&=rRr};~*K^$8Wo7`vo5M2FduF zcQKz^C?jep7o7VKn{7}TF(@-4CPf+eKg3xV=k>7Ck9g>@%oH!e7V#s5cNPdE3O_=4eeyIy_!nUf?cnz< zf#;Md(xm69e;OwGJP3{`{RrtV&=LTbPNv{}Y!ucSwC)^KGu07=&w1dn%oHz4e2(X> z&U!4T^f}W1{bJ3ZKRnH$&yoI1u;hdVFFh_d6T6_{>lHqy@VN!?R;mF#MSV``^B#IE zGsRJ<&r|3zZkRWDh0hcIF<2u6e#Qym8{~#5?R2 zi+$tdyO+WlCf{m;wa}I?>@2+3VBR?KW(mf;2HKb3TZBB^ucSu^jQ4QtjvklI`r#pf zcg6(ys-VBVz8vnX)7Z|)xa z`keGtiYX5sm%S``Q!d^V@uoHnediy)TCoA6J4JUf#tmPpP3g@)P7eXS`PwhIo3}lh z=dxF1^R}ybyQF#B)x7O$UQ|P0_2&5oq~4z_WQaYk~oz_e4W!9uGza22UXN0^*H{^BE@=aBgDiXBO`@W&i>C#mZC=JItH5-GfAdk*= 1.9.0 -import cufflinks as cf cf.go_offline() random.seed(100) - # 数据获取 def get_head_auth(): @@ -114,7 +100,7 @@ def get_head_auth(): return None -def get_data_value(token, dataItemNoList,date): +def get_data_value(token, dataItemNoList, date): search_data = { "data": { "date": getNow(date)[0], @@ -124,7 +110,8 @@ def get_data_value(token, dataItemNoList,date): "funcOperation": "查询" } headers = {"Authorization": token} - search_res = requests.post(url=search_url, headers=headers, json=search_data, timeout=(3, 5)) + search_res = requests.post( + url=search_url, headers=headers, json=search_data, timeout=(3, 5)) search_value = json.loads(search_res.text)["data"] if search_value: return search_value @@ -136,10 +123,7 @@ def get_data_value(token, dataItemNoList,date): # xls文件处理 - - - -def write_xls(data,date): +def write_xls(data, date): # 创建一个Workbook对象 workbook = xlwt.Workbook() @@ -155,7 +139,6 @@ def write_xls(data,date): workbook.save(get_cur_time(date)[0] + '.xls') - def getNow(date='', offset=0): """生成指定日期的两种格式字符串 Args: @@ -168,7 +151,7 @@ def getNow(date='', offset=0): tuple: (紧凑日期字符串, 标准日期字符串) """ # 日期解析逻辑 - from datetime import datetime,timedelta + from datetime import datetime, timedelta if isinstance(date, datetime): now = date else: @@ -186,7 +169,7 @@ def getNow(date='', offset=0): # 应用日期偏移 now = now - timedelta(days=offset) - + # 统一格式化输出 date_str = now.strftime("%Y-%m-%d") compact_date = date_str.replace("-", "") @@ -215,7 +198,8 @@ def get_cur_time(date=''): def get_head_push_auth(): - login_res = requests.post(url=login_push_url, json=login_push_data, timeout=(3, 5)) + login_res = requests.post( + url=login_push_url, json=login_push_data, timeout=(3, 5)) text = json.loads(login_res.text) if text["status"]: token = text["data"]["accessToken"] @@ -225,8 +209,7 @@ def get_head_push_auth(): return None - -def upload_data_to_system(token_push,date): +def upload_data_to_system(token_push, date): datavalue = forecast_price() data = { "funcModule": "数据表信息列表", @@ -242,85 +225,85 @@ def upload_data_to_system(token_push,date): } print(data) headers = {"Authorization": token_push} - res = requests.post(url=upload_url, headers=headers, json=data, timeout=(3, 5)) + res = requests.post(url=upload_url, headers=headers, + json=data, timeout=(3, 5)) print(res.text) - - + def forecast_price(): # df_test = pd.read_csv('定价模型数据收集0212.csv') - df_test = pd.read_excel('纯苯数据项.xls',sheet_name='Sheet1') - df_test.drop([0],inplace=True) + df_test = pd.read_excel('纯苯数据项.xls', sheet_name='Sheet1') + df_test.drop([0], inplace=True) # df_test['Date']=pd.to_datetime(df_test['Date'], format='%m/%d/%Y',infer_datetime_format=True) - df_test['Date']=pd.to_datetime(df_test['Date'], format=r'%Y-%m-%d',infer_datetime_format=True) - + df_test['Date'] = pd.to_datetime( + df_test['Date'], format=r'%Y-%m-%d', infer_datetime_format=True) df_test_1 = df_test - df_test_1=df_test_1.fillna(df_test.ffill()) - df_test_1=df_test_1.fillna(df_test_1.bfill()) + df_test_1 = df_test_1.fillna(df_test.ffill()) + df_test_1 = df_test_1.fillna(df_test_1.bfill()) # 选择用于模型训练的列名称 col_for_training = df_test_1.columns - import joblib Best_model_DalyLGPrice = joblib.load("日度价格预测_最佳模型.pkl") # 最新的一天为最后一行的数据 - + df_test_1_Day = df_test_1.tail(1) # 移除不需要的列 df_test_1_Day.index = df_test_1_Day["Date"] - df_test_1_Day = df_test_1_Day.drop(["Date"], axis= 1) - df_test_1_Day=df_test_1_Day.drop('Price',axis=1) - df_test_1_Day=df_test_1_Day.dropna() + df_test_1_Day = df_test_1_Day.drop(["Date"], axis=1) + df_test_1_Day = df_test_1_Day.drop('Price', axis=1) + df_test_1_Day = df_test_1_Day.dropna() for col in df_test_1_Day.columns: - df_test_1_Day[col] = pd.to_numeric(df_test_1_Day[col],errors='coerce') - #预测今日价格,显示至小数点后两位 - Ypredict_Today=Best_model_DalyLGPrice.predict(df_test_1_Day) + df_test_1_Day[col] = pd.to_numeric(df_test_1_Day[col], errors='coerce') + # 预测今日价格,显示至小数点后两位 + Ypredict_Today = Best_model_DalyLGPrice.predict(df_test_1_Day) - df_test_1_Day['日度预测价格']=Ypredict_Today + df_test_1_Day['日度预测价格'] = Ypredict_Today print(df_test_1_Day['日度预测价格']) a = df_test_1_Day['日度预测价格'] a = a[0] a = float(a) - a = round(a,2) + a = round(a, 2) return a + + def optimize_Model(): from sklearn.model_selection import train_test_split - from sklearn.impute import SimpleImputer + from sklearn.impute import SimpleImputer from sklearn.preprocessing import OrdinalEncoder from sklearn.feature_selection import SelectFromModel from sklearn.metrics import mean_squared_error, r2_score import pandas as pd - pd.set_option('display.max_rows',40) - pd.set_option('display.max_columns',40) + pd.set_option('display.max_rows', 40) + pd.set_option('display.max_columns', 40) df_test = pd.read_excel('纯苯数据项.xls') - df_test.drop([0],inplace=True) + df_test.drop([0], inplace=True) # df_test['Date']=pd.to_datetime(df_test['Date'], format='%m/%d/%Y',infer_datetime_format=True) - df_test['Date']=pd.to_datetime(df_test['Date'], format='%Y-%m-%d',infer_datetime_format=True) + df_test['Date'] = pd.to_datetime( + df_test['Date'], format='%Y-%m-%d', infer_datetime_format=True) - - #将缺失值补为前一个或者后一个数值 + # 将缺失值补为前一个或者后一个数值 df_test_1 = df_test - df_test_1=df_test_1.fillna(df_test.ffill()) - df_test_1=df_test_1.fillna(df_test_1.bfill()) + df_test_1 = df_test_1.fillna(df_test.ffill()) + df_test_1 = df_test_1.fillna(df_test_1.bfill()) df_test_1["Date"] = pd.to_datetime(df_test_1["Date"]) df_test_1.index = df_test_1["Date"] - df_test_1 = df_test_1.drop(["Date"], axis= 1) + df_test_1 = df_test_1.drop(["Date"], axis=1) df_test_1 = df_test_1.astype('float') - - + import numpy as np import pandas as pd - from pandas import Series,DataFrame + from pandas import Series, DataFrame import matplotlib.pyplot as plt import sklearn.datasets as datasets - #导入机器学习算法模型 + # 导入机器学习算法模型 from sklearn.linear_model import Lasso from xgboost import XGBRegressor @@ -336,7 +319,7 @@ def optimize_Model(): import xgboost as xgb from xgboost import plot_importance, plot_tree from sklearn.metrics import mean_absolute_error - from statsmodels.tools.eval_measures import mse,rmse + from statsmodels.tools.eval_measures import mse, rmse from sklearn.model_selection import GridSearchCV from xgboost import XGBRegressor import warnings @@ -344,63 +327,67 @@ def optimize_Model(): from sklearn.metrics import mean_squared_error - #切割训练数据和样本数据 + # 切割训练数据和样本数据 from sklearn.model_selection import train_test_split - #用于模型评分 + # 用于模型评分 from sklearn.metrics import r2_score - dataset1=df_test_1.drop('Price',axis=1)#.astype(float) + dataset1 = df_test_1.drop('Price', axis=1) # .astype(float) - y=df_test_1['Price'] + y = df_test_1['Price'] - x=dataset1 + x = dataset1 train = x target = y - #切割数据样本集合测试集 - X_train,x_test,y_train,y_true = train_test_split(train,target,test_size=0.2,random_state=0) + # 切割数据样本集合测试集 + X_train, x_test, y_train, y_true = train_test_split( + train, target, test_size=0.2, random_state=0) - #模型缩写 - Lasso = Lasso(random_state=0) + # 模型缩写 + Lasso = Lasso(random_state=0) XGBR = XGBRegressor(random_state=0) - #训练模型 - Lasso.fit(X_train,y_train) - XGBR.fit(X_train,y_train) - #模型拟合 + # 训练模型 + Lasso.fit(X_train, y_train) + XGBR.fit(X_train, y_train) + # 模型拟合 y_pre_Lasso = Lasso.predict(x_test) y_pre_XGBR = XGBR.predict(x_test) - #计算Lasso、XGBR、RandomForestR、AdaBoostR、GradientBoostingR、BaggingRegressor各模型的R² - Lasso_score = r2_score(y_true,y_pre_Lasso) - XGBR_score=r2_score(y_true,y_pre_XGBR) + # 计算Lasso、XGBR、RandomForestR、AdaBoostR、GradientBoostingR、BaggingRegressor各模型的R² + Lasso_score = r2_score(y_true, y_pre_Lasso) + XGBR_score = r2_score(y_true, y_pre_XGBR) - #计算Lasso、XGBR的MSE和RMSE - Lasso_MSE=mean_squared_error(y_true, y_pre_Lasso) - XGBR_MSE=mean_squared_error(y_true, y_pre_XGBR) + # 计算Lasso、XGBR的MSE和RMSE + Lasso_MSE = mean_squared_error(y_true, y_pre_Lasso) + XGBR_MSE = mean_squared_error(y_true, y_pre_XGBR) - Lasso_RMSE=np.sqrt(Lasso_MSE) - XGBR_RMSE=np.sqrt(XGBR_MSE) + Lasso_RMSE = np.sqrt(Lasso_MSE) + XGBR_RMSE = np.sqrt(XGBR_MSE) # 将不同模型的不同误差值整合成一个表格 model_results = pd.DataFrame([['Lasso', Lasso_RMSE, Lasso_score], ['XgBoost', XGBR_RMSE, XGBR_score]], - columns = ['模型(Model)','均方根误差(RMSE)', 'R^2 score']) - #将模型名称(Model)列设置为索引 - model_results1=model_results.set_index('模型(Model)') + columns=['模型(Model)', '均方根误差(RMSE)', 'R^2 score']) + # 将模型名称(Model)列设置为索引 + model_results1 = model_results.set_index('模型(Model)') model_results1 - #定义plot_feature_importance函数,该函数用于计算特征重要性。此部分代码无需调整 - def plot_feature_importance(importance,names,model_type): + # 定义plot_feature_importance函数,该函数用于计算特征重要性。此部分代码无需调整 + + def plot_feature_importance(importance, names, model_type): feature_importance = np.array(importance) feature_names = np.array(names) - data={'feature_names':feature_names,'feature_importance':feature_importance} + data = {'feature_names': feature_names, + 'feature_importance': feature_importance} fi_df = pd.DataFrame(data) - fi_df.sort_values(by=['feature_importance'], ascending=False,inplace=True) + fi_df.sort_values(by=['feature_importance'], + ascending=False, inplace=True) - plt.figure(figsize=(10,8)) + plt.figure(figsize=(10, 8)) sn.barplot(x=fi_df['feature_importance'], y=fi_df['feature_names']) plt.title(model_type + " "+'FEATURE IMPORTANCE') @@ -408,60 +395,56 @@ def optimize_Model(): plt.ylabel('FEATURE NAMES') from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] - ## Xgboost 模型参数优化-初步 - #参考: https://juejin.im/post/6844903661013827598 - #每次调参时,备选参数数值以同数量级的1、3、10设置即可(比如设置1、3、10,或0.1、0.3、1.0,或0.01,0.03,0.10即可) + # Xgboost 模型参数优化-初步 + # 参考: https://juejin.im/post/6844903661013827598 + # 每次调参时,备选参数数值以同数量级的1、3、10设置即可(比如设置1、3、10,或0.1、0.3、1.0,或0.01,0.03,0.10即可) from xgboost import XGBRegressor from sklearn.model_selection import GridSearchCV estimator = XGBRegressor(random_state=0, - nthread=4, - seed=0 - ) + nthread=4, + seed=0 + ) parameters = { - 'max_depth': range (2, 11, 2), # 树的最大深度 - 'n_estimators': range (50, 101, 10), # 迭代次数 + 'max_depth': range(2, 11, 2), # 树的最大深度 + 'n_estimators': range(50, 101, 10), # 迭代次数 'learning_rate': [0.01, 0.03, 0.1, 0.3, 0.5, 1] } grid_search_XGB = GridSearchCV( estimator=estimator, param_grid=parameters, - # n_jobs = 10, - cv = 3, + # n_jobs = 10, + cv=3, verbose=True ) grid_search_XGB.fit(X_train, y_train) - #如果电脑在此步骤报错,可能是因为计算量太大,超过硬件可支持程度,可注释掉“n_jobs=10”一行 + # 如果电脑在此步骤报错,可能是因为计算量太大,超过硬件可支持程度,可注释掉“n_jobs=10”一行 best_parameters = grid_search_XGB.best_estimator_.get_params() y_pred = grid_search_XGB.predict(x_test) - op_XGBR_score = r2_score(y_true,y_pred) - op_XGBR_MSE= mean_squared_error(y_true, y_pred) - op_XGBR_RMSE= np.sqrt(op_XGBR_MSE) + op_XGBR_score = r2_score(y_true, y_pred) + op_XGBR_MSE = mean_squared_error(y_true, y_pred) + op_XGBR_RMSE = np.sqrt(op_XGBR_MSE) model_results2 = pd.DataFrame([['Optimized_Xgboost', op_XGBR_RMSE, op_XGBR_score]], - columns = ['模型(Model)', '均方根误差(RMSE)', 'R^2 score']) - model_results2=model_results2.set_index('模型(Model)') + columns=['模型(Model)', '均方根误差(RMSE)', 'R^2 score']) + model_results2 = model_results2.set_index('模型(Model)') # results = model_results1.append(model_results2, ignore_index = False) - results = pd.concat([model_results1,model_results2],ignore_index=True) - - + results = pd.concat([model_results1, model_results2], ignore_index=True) import pickle - Pkl_Filename = "日度价格预测_最佳模型.pkl" + Pkl_Filename = "日度价格预测_最佳模型.pkl" - with open(Pkl_Filename, 'wb') as file: - pickle.dump(grid_search_XGB, file) + with open(Pkl_Filename, 'wb') as file: + pickle.dump(grid_search_XGB, file) - - def read_xls_data(): global one_cols, two_cols # 打开 XLS 文件 @@ -492,9 +475,7 @@ def read_xls_data(): # workbook.close() - - -def start(date=None,token=None,token_push=None): +def start(date=None, token=None, token_push=None): read_xls_data() if date == None: date = getNow()[0] @@ -502,7 +483,7 @@ def start(date=None,token=None,token_push=None): token = get_head_auth() token_push = get_head_push_auth() - datas = get_data_value(token, one_cols,date) + datas = get_data_value(token, one_cols, date) if not datas: print("今天没有新数据") return @@ -516,21 +497,22 @@ def start(date=None,token=None,token_push=None): print(data_value) dataItemNo_dataValue[data_value["dataItemNo"]] = "" else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols: if value in dataItemNo_dataValue: append_rows.append(dataItemNo_dataValue[value]) else: append_rows.append("") save_xls(append_rows) - + # 获取当月的数据写入到指定文件,如果是补充数据,不需要执行 - queryDataListItemNos() + queryDataListItemNos(date=date) # 模型训练 optimize_Model() # 上传预测数据 - upload_data_to_system(token_push,date) + upload_data_to_system(token_push, date) # data_list.append(three_cols) # write_xls(data_list) @@ -542,9 +524,8 @@ def start_1(date=None): token = get_head_auth() if not token: return - - datas = get_data_value(token, one_cols,date=date) + datas = get_data_value(token, one_cols, date=date) # if not datas: # return @@ -556,8 +537,9 @@ def start_1(date=None): print(data_value) dataItemNo_dataValue[data_value["dataItemNo"]] = "" else: - dataItemNo_dataValue[data_value["dataItemNo"]] = data_value["dataValue"] - + dataItemNo_dataValue[data_value["dataItemNo"] + ] = data_value["dataValue"] + for value in one_cols: if value in dataItemNo_dataValue: append_rows.append(dataItemNo_dataValue[value]) @@ -565,10 +547,10 @@ def start_1(date=None): append_rows.append("") save_xls_1(append_rows) - # data_list.append(three_cols) # write_xls(data_list) - + + def save_xls_1(append_rows): # 打开xls文件 @@ -610,11 +592,9 @@ def save_xls_1(append_rows): new_sheet.write(row_count, col, append_rows[col]) # 保存新的xls文件 - new_workbook.save("纯苯数据项.xls") + new_workbook.save("纯苯数据项.xls") + - - - def check_data(dataItemNo): token = get_head_auth() if not token: @@ -669,8 +649,6 @@ def save_xls(append_rows): new_workbook.save("纯苯数据项.xls") - - def get_queryDataListItemNos_value(token, url, dataItemNoList, dateStart, dateEnd): search_data = { @@ -684,7 +662,8 @@ def get_queryDataListItemNos_value(token, url, dataItemNoList, dateStart, dateEn } headers = {"Authorization": token} - search_res = requests.post(url=url, headers=headers, json=search_data, timeout=(3, 5)) + search_res = requests.post( + url=url, headers=headers, json=search_data, timeout=(3, 5)) search_value = json.loads(search_res.text)["data"] if search_value: return search_value @@ -692,9 +671,8 @@ def get_queryDataListItemNos_value(token, url, dataItemNoList, dateStart, dateEn return None - -def save_queryDataListItemNos_xls(data_df,dataItemNoList): - from datetime import datetime,timedelta +def save_queryDataListItemNos_xls(data_df, dataItemNoList): + from datetime import datetime, timedelta current_year_month = datetime.now().strftime('%Y-%m') grouped = data_df.groupby("dataDate") @@ -727,7 +705,6 @@ def save_queryDataListItemNos_xls(data_df,dataItemNoList): # 创建sheet new_sheet = new_workbook.add_sheet(sheet_names[i]) - current_year_month_row = 0 # 将原有的数据写入新的sheet for row in range(row_count): @@ -739,29 +716,28 @@ def save_queryDataListItemNos_xls(data_df,dataItemNoList): break new_sheet.write(row, col, data[row][col]) - # print("current_year_month_row",current_year_month_row) if i == 0: rowFlag = 0 # 查看每组数据 for date, group in grouped: - new_sheet.write(row_count + rowFlag - current_year_month_row, 0, date) + new_sheet.write(row_count + rowFlag - + current_year_month_row, 0, date) for j in range(len(dataItemNoList)): dataItemNo = dataItemNoList[j] if group[group["dataItemNo"] == dataItemNo]["dataValue"].values and (not str(group[group["dataItemNo"] == dataItemNo]["dataValue"].values[0]) == 'nan'): - new_sheet.write(row_count + rowFlag - current_year_month_row, j + 1, group[group["dataItemNo"] == dataItemNo]["dataValue"].values[0]) + new_sheet.write(row_count + rowFlag - current_year_month_row, j + 1, + group[group["dataItemNo"] == dataItemNo]["dataValue"].values[0]) rowFlag += 1 - # 保存新的xls文件 new_workbook.save("纯苯数据项.xls") - -def queryDataListItemNos(date=None,token=None): +def queryDataListItemNos(date=None, token=None): from datetime import datetime, timedelta df = pd.read_excel('纯苯数据项.xls') dataItemNoList = df.iloc[0].tolist()[1:] @@ -779,16 +755,29 @@ def queryDataListItemNos(date=None,token=None): first_day_of_month = current_date.replace(day=1) # 格式化为 YYYYMMDD 格式 dateEnd = current_date.strftime('%Y%m%d') + # dateEnd = date.strftime('%Y%m%d') dateStart = first_day_of_month.strftime('%Y%m%d') - search_value = get_queryDataListItemNos_value(token, queryDataListItemNos_url, dataItemNoList, dateStart, dateEnd) + search_value = get_queryDataListItemNos_value( + token, queryDataListItemNos_url, dataItemNoList, dateStart, dateEnd) data_df = pd.DataFrame(search_value) data_df["dataDate"] = pd.to_datetime(data_df["dataDate"]) data_df["dataDate"] = data_df["dataDate"].dt.strftime('%Y-%m-%d') - save_queryDataListItemNos_xls(data_df,dataItemNoList) + save_queryDataListItemNos_xls(data_df, dataItemNoList) print('当月数据更新完成') if __name__ == "__main__": print('运行中ing') start() + # 自定义日期执行预测 + # start_date = datetime(2025, 7, 6) + # end_date = datetime(2025, 7, 7) + # token = get_head_auth() + # token_push = get_head_push_auth() + # while start_date < end_date: + # print(start_date.strftime('%Y%m%d')) + # start(start_date, token, token_push) + # time.sleep(2) + # # start_1(start_date) + # start_date += timedelta(days=1)