当前位置: 代码迷 >> 综合 >> C#,windows应用,自动更新、文件更新
  详细解决方案

C#,windows应用,自动更新、文件更新

热度:27   发布时间:2024-01-10 07:11:02.0

文件或目录更新示例:

会根据配置文件中的MD5值,和本地文件进行对比,若有变动则更新。


1、更新指定文件:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);

 2、更新指定目录:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);

 MD5.txt文件生成工具: getMD5.exe


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace SciTools
{/// 文件或目录更新示例:/// 1、更新指定文件:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);/// 2、更新指定目录:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);/// MD5.txt文件生成工具: https://scimence.gitee.io/update/tools/getMD5.exe/// <summary>/// SciTools.UpdateTool.AutoUpdate();            // 应用自动检测更新;/// /// 更新原理:/// 根据ToolUrl_MD5获取当前应用线上的md5信息,/// 通过Update.exe判断当前应用的MD5值与线上的md5信息是否相同,/// 若不同,则结束当前进程,从ToolUrl_MD5中解析当前应用网络路径,下载并启动。Update.exe自删除。/// /// 依赖工具类:/// SciTools.WebTool.cs;                https://gitee.com/scimence/sciTools/raw/master/CS/WebTool.cs/// SciTools.EncoderTool_Alphabet.cs;   https://gitee.com/scimence/sciTools/raw/master/CS/EncoderTool_Alphabet.cs /// </summary>public class UpdateTool{// 当前命名空间名称private static string NAMESPACE = GetNamespace(Assembly.GetEntryAssembly());//private static string NAMESPACE = "ChannelDemoTool";/// <summary>/// 获取Assembly所在的命名空间名称/// </summary>private static string GetNamespace(Assembly asssembly){string Namespace = "";Type[] types = asssembly.GetTypes();if (types != null && types.Length > 0){Namespace = types[0].Namespace;}return Namespace;}/// <summary>/// 获取当前运行路径/// </summary>public static string curDir(){return AppDomain.CurrentDomain.BaseDirectory;}/// <summary>/// 检测目录是否存在,若不存在则创建/// </summary>public static void checkDir(string path){if (!Directory.Exists(path)){Directory.CreateDirectory(path);}}/// <summary>/// 保存Byte数组为文件/// </summary>public static void SaveFile(Byte[] array, string path, bool repalce = false){if (repalce && System.IO.File.Exists(path)) System.IO.File.Delete(path);    // 若目标文件存在,则替换if (!System.IO.File.Exists(path)){// 创建输出流System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create);//将byte数组写入文件中fs.Write(array, 0, array.Length);fs.Close();}}/// <summary>/// 为arg添加引号/// </summary>private static string AddQuotation(string arg){if (arg.EndsWith("\\") && !arg.EndsWith("\\\\")) arg += "\\";arg = "\"" + arg + "\"";return arg;}/// <summary>/// 获取Resource资源/// </summary>private static byte[] getResource(string name){string Namespace = Assembly.GetEntryAssembly().GetTypes()[0].Namespace;System.Resources.ResourceManager rm = new System.Resources.ResourceManager(Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());byte[] bytes = (byte[])rm.GetObject(name);return bytes;}/// <summary>/// 获取Updata.exe文件内容/// </summary>private static byte[] getUpdataData(){//string file = @"C:\Users\wangzhongyuan\Documents\visual studio 2012\Projects\GifTool\GifTool\Resources\Update.data";//string data = Encoder.getFileData(file);byte[] bytes = EncoderTool_Alphabet.ToBytes(data);return bytes;}// "%~dp0Update.exe" "[CONFIG]https://git.oschina.net/joymeng/channelDemo/raw/master/MD5.txt" "E:\tmp2\Update_Files\\" "渠道计费包\0000001\\"/// <summary>/// 调用Update.exe,更新以perfix为前缀的配置文件/// /// RESTART标识更新后,是否打开文件/// 若本地perfix目录下的其他文件需要保留,则KEEPOTHER=true/// </summary>public static void updateFiles(string url, string perfix, bool RESTART = false, bool KEEPOTHER = false){string update_EXE = curDir() + "Update.exe";//byte[] bytes = getResource("Update");byte[] bytes = getUpdataData();if (!File.Exists(update_EXE)) SaveFile(bytes, update_EXE, false);else if (!updateIsRunning()) SaveFile(bytes, update_EXE, true);   // 更新Update.exestring path = curDir();url = AddQuotation("[CONFIG]" + url);path = AddQuotation(path);perfix = AddQuotation(perfix);update_EXE = AddQuotation(update_EXE);// 调用更新插件执行软件更新逻辑String arg = url + " " + path + " " + perfix;if (RESTART) arg += " " + "RESTART";if (KEEPOTHER) arg += " " + "false";System.Diagnostics.Process.Start(update_EXE, arg);autoDeletUpdateExe();   // 更新后删除update.exe}private static Timer timer = null;private static void autoDeletUpdateExe(object sender = null, EventArgs e = null){string update_EXE = curDir() + "Update.exe";if (!File.Exists(update_EXE)) return;if (!updateIsRunning()){File.Delete(update_EXE);if (timer != null){timer.Stop();timer = null;}}else{if (timer == null){timer = new Timer();timer.Interval = 700;timer.Tick += new System.EventHandler(autoDeletUpdateExe);timer.Start();}}}/// <summary>/// 应用自更新,也可更新MD5.txt中配置的任意文件/// </summary>/// <param name="ToolUrl_MD5">工具MD5信息文件的url地址</param>/// <param name="perfix_EXE">当前待更新的应用名称</param>public static void AutoUpdate(string ToolUrl_MD5 = "", string perfix_EXE = ""){if (ToolUrl_MD5.Equals("")) ToolUrl_MD5 = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/MD5.txt";if (perfix_EXE.Equals("")) perfix_EXE = NAMESPACE /*+ ".exe"*/;updateFiles(ToolUrl_MD5, perfix_EXE, true);}/// <summary>/// 获取指定网址中的配置信息/// </summary>/// <param name="configUrl">配置信息对应网址</param>/// <param name="key">配置节点名</param>public static String GetWebConfig(string key = "", string configUrl = ""){if (configUrl.Equals("")) configUrl = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/config.txt";if (key.Equals("")) return "";return WebTool.getWebData(configUrl, key);}/// <summary>/// 打开本地路径/// </summary>public static void openChannelDir(string channelDir){string localDir = curDir() + channelDir.Replace("/", "\\");checkDir(localDir);if (Directory.Exists(localDir)){System.Diagnostics.Process.Start("explorer.exe", "/e, " + localDir);}}// 判断当前是有更新任务正在执行public static bool updateIsRunning(){// 获取Update.exe后台进程System.Diagnostics.Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("Update");// 无更新进程Update.exe,表示更新完成return (processes1 != null && processes1.Length != 0);}// Update.exe文件private static string data = "enfkjaaaadaaaaaaaeaaaaaappppaaaaliaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaobplkaoaaleajmncbliabemmncbfegigjhdcahahcgpghhcgbgncagdgbgogogphecagcgfcahchfgocagjgocaeeepfdcagngpgegfcoananakceaaaaaaaaaaaaaafaefaaaaemabadaajojfjofjaaaaaaaaaaaaaaaaoaaaacabalabalaaaaemaaaaaaaiaaaaaaaaaaaaaogkaaaaaacaaaaaaaiaaaaaaaaaeaaaaacaaaaaaaacaaaaaeaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaamaaaaaaaacaaaaaaaaaaaaacaaeaifaaaabaaaaabaaaaaaaaabaaaaabaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaamagjaaaaelaaaaaaaaiaaaaakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaamaaaaaaiigiaaaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaicaaaaaeiaaaaaaaaaaaaaaaaaaaaaacohegfhiheaaaaaabeekaaaaaacaaaaaaaemaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaagacohchdhcgdaaaaaakaafaaaaaaiaaaaaaaagaaaaaaeoaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeacohcgfgmgpgdaaaaamaaaaaaaakaaaaaaaacaaaaaafeaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaeiaaaaaaacaaafaajidnaaaapackaaaaabaaaaaaceaaaaagoadmaaaaliaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabddaaeaaebaaaaaaabaaaabbaahoafaaaaaebepoabbgpoabamaicnbmhoaeaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaafaaaaaehoafaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaacnaaaaaaacaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcnbcaaacciadaaaaagalahbpcacibeaaaaagakaaagamclaaaickaaaaaabddaacaadoaaaaaaadaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcncdaaaccibdaaaaakhdbeaaaaakalahgpbfaaaaakakahgpbgaaaaakaaahgpbhaaaaakaaaaagamclaaaickaaaabddaafaamiaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldikmaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaacbhgkfpcibiaaaaakbgpoabamaicnalaacaaaaaaaiagoakaaclafaabggkakaaagalclhjaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaachoahaaaaaebpbpgkadfjnejgfpcibiaaaaakbgpoabamaicncgaaachoagaaaaaebpbpgkadbhgkfifjnejgfphoahaaaaaeadnejgfkcaaaaaaaiagogaakaaclbkaaachoagaaaaaebpbpgkadfjnejgfphoahaaaaaeadnejgfkakaaagalclaaahckbddaafaaklaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldiipaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnahaabhgkakaaclafaabggkakaaagalclfmaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaaccapopppphpgkfphoahaaaaaeadnejgflakaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnbhaaagcaaaaaaaeagkhoahaaaaaeadbhgkfjnejgflgaakaaagalclaaahckaabddaaeaaboaaaaaaafaaaabbaabggkakacadciaeaaaaagacbpcagkadfjciafaaaaaggaakagalclaaahckaaaabddaadaankaaaaaaagaaaabbaabggkakbggkalbggkambggkanbggkbdaebggkbdafaccaaaaaaaiagofpanadcaaaaaaaiagofpbdaeaccaaaaaaaeagkfpaladcaaaaaaaeagkfpamaccappppppdpgkfpadcappppppdpgkfpfibdafahaifpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaaiagogbajgbbbaegbbdafaaclfnahaigacibiaaaaakbgpoabbdahbbahcnebaabbafcaaaaaaaeagkfpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaamagogbajgbbbaegbbdafaaclbcaabbafcaaaaaaaeagkgbajgbbbaegbbdafaaaaclalaabbafajgbbbaegbbdafaabbafakagbdagclaabbagckaaaabddaadaabdaaaaaaafaaaabbaabggkakacadfpacggaefpgaakagalclaaahckaabddaadaabdaaaaaaafaaaabbaabggkakacaefpadaeggfpgaakagalclaaahckaabddaacaabaaaaaaaafaaaabbaabggkakacadgbaegbakagalclaaahckbddaadaabbaaaaaaafaaaabbaabggkakadacaegggagbakagalclaaahcknkaaacacemadaeafciaiaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciajaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciakaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafcialaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffckaaaaaabddaafaamdaaaaaaahaaaabbaabeakbgalbgambeanbgbdaebgbdafbgbdagcibdaaaaakacgpbjaaaaakbdahbbahiogjalahbofibpeaflbhfibpbafkamaiinbnaaaaabanbgbdaebgbdafclcnaabbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgbbahbbafjbgobbaegkciaeaaaaaggajpbbafbhfibdafaabbafahpoaebdajbbajcnmibbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgcaiaaaaaaagkbbaegkciaeaaaaaggajpajaibifjahgkbjgkciaeaaaaagjpajaibhfjahgkbpbngkciafaaaaagjpajakagbdaiclaabbaickaabddaaeaaiaaaaaaaajaaaabbaabgciabaaaaagakbggkalbgambganbgamclfiaaacaibofkgkciafaaaaaghoagaaaaaebnjgfpalblciabaaaaagahcibcaaaaagcibkaaaaakgpblaaaaakbifjanagblciabaaaaagahcibcaaaaagcibkaaaaakajbgdcadajclabbgaagpbmaaaaakcibkaaaaakakaaaibhfiamaibjpoacbgpoabbdafbbafcnjlagbdaeclaabbaeckbddaacaaddaaaaaaakaaaabbaabgciabaaaaagakclbkaaacbpbagkfncibdaaaaagagcibkaaaaakakacbpbagkflbaaaaaacbggkpoacamaicnnnagalclaaahckaabddaacaaidaaaaaaalaaaabbaabgciabaaaaagakacamaibpapgkdacjaibpakgkdcfnaibpakgkfjgjefagaaaaaaacaaaaaaalaaaaaabeaaaaaabnaaaaaacgaaaaaadaaaaaaacldibhciabaaaaagakcldjbmciabaaaaagakcldabnciabaaaaagakclchbociabaaaaagakclbobpajciabaaaaagakclbebpakciabaaaaagakclakapaacibnaaaaakakclaaagalclaaahckaabddaahaagiaiaaaaamaaaabbaabgciabaaaaagakbgalclekaahoagaaaaaeahcdaaaaaaaaaaaaaaeaahbhfigmciboaaaaakcdaaaaaaaaaaaapadpfjcibpaaaaakjphoahaaaaaeahcdaaaaaaaaaaaaaaeaahgmciboaaaaakcibpaaaaakjpaaahbhfialahbpbopoacbgpoabbdanbbancnkibeambganbggkbdaebggkbdafbggkbdagbggkbdahbggkbdaibggkbdajbggkbdakbggkbdalaccibaaaaaagamcaabcdefghgkbdaicaijklmnopgobdajcaponmlkjigobdakcahgfedcbagkbdalbgandiehahaaaaaabbaibdaebbajbdafbbakbdagbbalbdahbcaibbajbbakbbalaiajjgbngkcahikegknhgociamaaaaagaabcalbbaibbajbbakaiajbhfijgbpamgkcafglhmhoigociamaaaaagaabcakbbalbbaibbajaiajbifijgbpbbgkcanlhacacegkciamaaaaagaabcajbbakbbalbbaiaiajbjfijgbpbggkcaoomolnmbgociamaaaaagaabcaibbajbbakbbalaiajbkfijgbngkcakpaphmpfgociamaaaaagaabcalbbaibbajbbakaiajblfijgbpamgkcackmgihehgkciamaaaaagaabcakbbalbbaibbajaiajbmfijgbpbbgkcabdegdakigociamaaaaagaabcajbbakbbalbbaiaiajbnfijgbpbggkcaabjfegpngociamaaaaagaabcaibbajbbakbbalaiajbofijgbngkcanijiiagjgkciamaaaaagaabcalbbaibbajbbakaiajbpajfijgbpamgkcakppheeilgociamaaaaagaabcakbbalbbaibbajaiajbpakfijgbpbbgkcalbflppppgociamaaaaagaabcajbbakbbalbbaiaiajbpalfijgbpbggkcalonhfmijgociamaaaaagaabcaibbajbbakbbalaiajbpamfijgbngkcaccbbjaglgkciamaaaaagaabcalbbaibbajbbakaiajbpanfijgbpamgkcajdhbjipngociamaaaaagaabcakbbalbbaibbajaiajbpaofijgbpbbgkcaioedhjkggociamaaaaagaabcajbbakbbalbbaiaiajbpapfijgbpbggkcacbaileejgkciamaaaaagaabcaibbajbbakbbalaiajbhfijgblgkcagccfbopggocianaaaaagaabcalbbaibbajbbakaiajbmfijgbpajgkcaealdeamagocianaaaaagaabcakbbalbbaibbajaiajbpalfijgbpaogkcafbfkfocggkcianaaaaagaabcajbbakbbalbbaiaiajjgbpbegkcakkmhlgojgocianaaaaagaabcaibbajbbakbbalaiajblfijgblgkcafnbacpnggocianaaaaagaabcalbbaibbajbbakaiajbpakfijgbpajgkcafdbeeeacgkcianaaaaagaabcakbbalbbaibbajaiajbpapfijgbpaogkcaibogkbnigocianaaaaagaabcajbbakbbalbbaiaiajbkfijgbpbegkcamiplndohgocianaaaaagaabcaibbajbbakbbalaiajbpajfijgblgkcaogmnobcbgkcianaaaaagaabcalbbaibbajbbakaiajbpaofijgbpajgkcangahdhmdgocianaaaaagaabcakbbalbbaibbajaiajbjfijgbpaogkcaihannfpegocianaaaaagaabcajbbakbbalbbaiaiajbofijgbpbegkcaonbefkefgkcianaaaaagaabcaibbajbbakbbalaiajbpanfijgblgkcaafojodkjgocianaaaaagaabcalbbaibbajbbakaiajbifijgbpajgkcapikdoppmgocianaaaaagaabcakbbalbbaibbajaiajbnfijgbpaogkcanjacgpghgkcianaaaaagaabcajbbakbbalbbaiaiajbpamfijgbpbegkcaikemckingocianaaaaagaabcaibbajbbakbbalaiajblfijgbkgkcaecdjpkppgociaoaaaaagaabcalbbaibbajbbakaiajbofijgbpalgkcaibpghbihgociaoaaaaagaabcakbbalbbaibbajaiajbpalfijgbpbagkcaccgbjngngkciaoaaaaagaabcajbbakbbalbbaiaiajbpaofijgbpbhgkcaamdiofpngociaoaaaaagaabcaibbajbbakbbalaiajbhfijgbkgkcaeeoklokegociaoaaaaagaabcalbbaibbajbbakaiajbkfijgbpalgkcakjmpnoelgkciaoaaaaagaabcakbbalbbaibbajaiajbnfijgbpbagkcagaelllpggociaoaaaaagaabcajbbakbbalbbaiaiajbpakfijgbpbhgkcahalmlplogociaoaaaaagaabcaibbajbbakbbalaiajbpanfijgbkgkcamghojlcigkciaoaaaaagaabcalbbaibbajbbakaiajjgbpalgkcapkchkbokgociaoaaaaagaabcakbbalbbaibbajaiajbjfijgbpbagkcaifdaopnegociaoaaaaagaabcajbbakbbalbbaiaiajbmfijgbpbhgkcaafbniiaegkciaoaaaaagaabcaibbajbbakbbalaiajbpajfijgbkgkcadjnanenjgociaoaaaaagaabcalbbaibbajbbakaiajbpamfijgbpalgkcaofjjnloggociaoaaaaagaabcakbbalbbaibbajaiajbpapfijgbpbagkcapihmkcbpgkciaoaaaaagaabcajbbakbbalbbaiaiajbifijgbpbhgkcagffgkmmegociaoaaaaagaabcaibbajbbakbbalaiajjgbmgkcaeecccjpegociapaaaaagaabcalbbaibbajbbakaiajbnfijgbpakgkcajhppckedgkciapaaaaagaabcakbbalbbaibbajaiajbpaofijgbpapgkcakhcdjeklgociapaaaaagaabcajbbakbbalbbaiaiajblfijgbpbfgkcadjkajdpmgociapaaaaagaabcaibbajbbakbbalaiajbpamfijgbmgkcamdfjflgfgkciapaaaaagaabcalbbaibbajbbakaiajbjfijgbpakgkcajcmmamipgociapaaaaagaabcakbbalbbaibbajaiajbpakfijgbpapgkcahnpeopppgociapaaaaagaabcajbbakbbalbbaiaiajbhfijgbpbfgkcanbfnieifgociapaaaaagaabcaibbajbbakbbalaiajbofijgbmgkcaephokigpgkciapaaaaagaabcalbbaibbajbbakaiajbpapfijgbpakgkcaoaogcmpogociapaaaaagaabcakbbalbbaibbajaiajbmfijgbpapgkcabeedabkdgociapaaaaagaabcajbbakbbalbbaiaiajbpanfijgbpbfgkcakbbbaieogkciapaaaaagaabcaibbajbbakbbalaiajbkfijgbmgkcaichofdphgociapaaaaagaabcalbbaibbajbbakaiajbpalfijgbpakgkcadfpcdklngociapaaaaagaabcakbbalbbaibbajaiajbifijgbpapgkcallncnhckgkciapaaaaagaabcajbbakbbalbbaiaiajbpajfijgbpbfgkcajbndigolgociapaaaaagaabbaibbaeciahaaaaagbdaibbajbbafciahaaaaagbdajbbakbbagciahaaaaagbdakbbalbbahciahaaaaagbdalaaajbpbafianajaiiogjpoaebdanbbandkkkpippppadbpcapoabbgpoabbdanbbancnclaabbaicibbaaaaagbbajcibbaaaaagbbakcibbaaaaagbbalcibbaaaaagcicaaaaaakgpcbaaaaakakaaclblaabbajcibbaaaaagbbakcibbaaaaagcibkaaaaakgpcbaaaaakakaaagbdamclaabbamckkghcabaaaahaiaaeaaaaaebeiaafaaaaaebpbpinbnaaaaabiaagaaaaaebpbpinbnaaaaabiaahaaaaaeckboacciccaaaaakckaaaabddaaeaafcaaaaaaanaaaabbaaacgpblaaaaakbiflinbpaaaaabakacgpcdaaaaakalbgamclbkaaahaijdahaibhfijdcibiaaaaaganagaibiflajjmaaaibifiamaiahiogjpoaebdafbbafcnnkciceaaaaakaggpcfaaaaakbdaeclaabbaeckaaaabddaadaabdaaaaaaaoaaaabbaaacbpgbfjbpbafkadbpgbfjfincakclaaagckboacciccaaaaakckaabddaaeaaebaaaaaaabaaaabbaahoajaaaaaebepoabbgpoabamaicnbmhoaiaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaajaaaaaehoajaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaabaabaaaaaaaapaaaabbaabgcibkaaaaagakagcibnaaaaagaackbddaacaadgaaaaaabaaaaabbaaaccibcaaaaakcmbgacgpcbaaaaakbhcibkaaaaaggpcgaaaaakbgpoabclabbhaaalahcnbaaaaccichaaaaakakagcibnaaaaagaaaackaaaabldaacaadmaaaaaabbaaaabbaaacciciaaaaakakaaaganbgbdaeclboajbbaejkalaaaaahgpcjaaaaakaaaanoafamaaaanoaaaaaabbaebhfibdaebbaeajiogjpoaebdafbbafcnnfckabbaaaaaaaaabgaaalcbaaafccaaaaabbddaacaacpaaaaaabcaaaabbaacickaaaaakalbcabacciclaaaaakalbcabcicmaaaaakakclaacickaaaaakalbcabcicmaaaaakagpoaeamaicnomckaabddaacaacpaaaaaabdaaaabbaaaccibcaaaaakbgpoabamaicnaiaccichaaaaakbaaaacciciaaaaakakagcmaiagiogjbgpoacclabbgaaalclaaahckeghcoaaaaahaiaaiaaaaaebeiaajaaaaaeckboacciccaaaaakckaaaaaabddaaeaaebaaaaaaabaaaabbaahoalaaaaaebepoabbgpoabamaicnbmhoakaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaalaaaaaehoalaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaagpaaaaaabeaaaabbaahdcnaaaaakakaccmalaciogjbgpoacbgpoabclabbhaaanajcnejaaaaacbdaebgbdafcldcbbaebbafjkalaaahbpamciccaaaaaggpcoaaaaakbgpoabanajcnaibhiaamaaaaaeclaiagahgpcpaaaaakaaaabbafbhfibdafbbafbbaeiogjpoaeanajcnmcaaaggpdaaaaaakamclaaaickaabddaafaaclabaaaabfaaaabbaaaccicdaaaaagbaaabpapciccaaaaagakbpapciccaaaaagalbpapciccaaaaagambpapciccaaaaaganaciogjbgpoacbgpoabbdaebbaecnboacbgjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakakaciogjbhpoacbgpoabbdaebbaecnboacbhjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakalaciogjbipoacbgpoabbdaebbaecnboacbijkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakamaciogjbjpoacbgpoabbdaebbaecnboacbjjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakanagbmciccaaaaaggpdeaaaaakbgpoabbdaebbaecncpaaagbmciccaaaaaggpblaaaaakgpbmaaaaakakagahaiajbpbiciccaaaaaggpcoaaaaakbgpoabciciaaaaagaaaaclajagahaicicfaaaaagaackaabldaadaahoabaaaabgaaaabbaaadhcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaacaaacbpapciccaaaaaggpcoaaaaakanajdkchabaaaaaaadbpapciccaaaaaggpcoaaaaakbgpoabanajcnbocidfaaaaakgpdgaaaaakbpbjciccaaaaagaccidhaaaaakcidiaaaaakbaabadcibcaaaaakbgpoabanajcnelaaadciacaaaaagakagaegpcoaaaaakanajcndaaaadcibpaaaaagbgpoabanajcnbiaaadcibmaaaaagaacdaaaaaaaaaahakheaciboaaaaagaaaaadcidjaaaaakaaaaclafnnkiaaaaaaaaclahadcicgaaaaagaahddkaaaaakaladbpbkciccaaaaaggpcgaaaaakbgpoabanajcnenaaahacgpdlaaaaakamaibpblciccaaaaaggpdmaaaaakcmapaibpbmciccaaaaaggpdmaaaaakclabbhaaanajcnbfaibpblciccaaaaagbpbmciccaaaaaggpdnaaaaakamaiadcichaaaaagcgaaclajahacadgpdoaaaaakaahoamaaaaaebgpoabanajcnbiaacdaaaaaaaaaaeajpeaciboaaaaagaaadcidpaaaaakcgaaaaaanoafcgaaaanoaaaaaackaaaaebbmaaaaaaaaaaaadhaaaaaadpabaaaahgabaaaaafaaaaaaabaaaaabbddaabaabkaaaaaabaaaaabbaaaccieaaaaaakakagciebaaaaakalahcnahagciecaaaaakcgckaaaabddaadaackaaaaaabhaaaabbaaadbgciceaaaaakhdedaaaaakakagacgpeeaaaaakaaaggpefaaaaakaaaggpegaaaaakaaadalclaaahckaaaabldaaeaakmadaaaabiaaaabbaaadhcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaacacbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiffadaaaaadbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnbicidfaaaaakgpdgaaaaakbpbjciccaaaaagcibkaaaaakbaabbpapciccaaaaagakaebpbnciccaaaaaggpdmaaaaakbgpoabbdapbbapcncpaaaebpbnciccaaaaaggpehaaaaakalaeahbpbnciccaaaaaggpblaaaaakfigpbmaaaaakakaebgahgpeiaaaaakbaacaaaccicmaaaaagamaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiliacaaaaaibpbociccaaaaagbhcicnaaaaaggpdcaaaaakanaibpbpciccaaaaagbgcicnaaaaaggpdcaaaaakbdaebbaebpbmciccaaaaagbpblciccaaaaaggpdnaaaaakbhinbgaaaaabbdbabbbabgbpakjnbbbagpbbaaaaakbdafhdcnaaaaakbdagaabbafbdbbbgbdbcdigjabaaaabbbbbbbcjkbdahaabbahgpdcaaaaakbhinbgaaaaabbdbabbbabgbpcjjnbbbagpejaaaaakbdaibbaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdicbabaaaaaebpajciccaaaaaggpdmaaaaakbgpoabbdapbbapcnbgaebpajciccaaaaagbpcaciccaaaaaggpdnaaaaakbaacaebpapciccaaaaaggpcoaaaaakcnakbbaiaegpdeaaaaakclabbhaabdapbbapcnafdimpaaaaaabpapciccaaaaagbdajbbaibpcbciccaaaaaggpdmaaaaakbgpoabbdapbbapcnciaabbaibpcbciccaaaaaggpekaaaaakalbbaiahbhfigpbmaaaaakbdajbbaibgahgpeiaaaaakbdaiaaadbbaibpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakagbpapciccaaaaaggpcoaaaaakbdapbbapcnceadbbaiaeaggpdnaaaaakbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakajbbaicibkaaaaakbbakbbajcicfaaaaagaaafcmalbbagbbakgpelaaaaakclabbhaabdapbbapcnakbbagbbakgpcpaaaaakaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapdkigpoppppafbgpoabbdapbbapdkmbaaaaaaaaadaebpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalagbpapciccaaaaaggpcoaaaaakbdapbbapcnbmadagbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalbbalcicjaaaaagbdambbambhinbgaaaaabbdbabbbabgbpdljnbbbagpbbaaaaakbdanaabbanbdbbbgbdbccldkbbbbbbbcjkbdaoaaaabbagbbaogpelaaaaakbdapbbapcnbcaabbaocibmaaaaagaabbaocidjaaaaakaaaaaanoafcgaaaanoaaaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapcnliaabgciemaaaaakaackabbaaaaaaaaagdadcfiiadafabaaaaabbddaadaapaaaaaaabjaaaabbaabpapciccaaaaaghdenaaaaakakacciebaaaaakbgpoabbdahbbahdkmdaaaaaaaaaccieoaaaaakalaaahbdaibgbdajcldcbbaibbajjkamagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaaaicibkaaaaakgpfaaaaaakcgbbajbhfibdajbbajbbaiiogjpoaebdahbbahcnmaaccifbaaaaakanaaajbdaibgbdajclfdbbaibbajjkbdaeaabbaecicjaaaaagbdafbbafbpapciccaaaaaggpcoaaaaakbdahbbahcnchagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaabbafcibkaaaaakgpfaaaaaakcgaabbajbhfibdajbbajbbaiiogjpoaebdahbbahcnjpaaaggpfcaaaaakbdagclaabbagckfohcdcabaahaiaakaaaaaebeiaalaaaaaebgiaamaaaaaeckbddaaeaaebaaaaaaabaaaabbaahoaoaaaaaebepoabbgpoabamaicnbmhoanaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaaoaaaaaehoaoaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabldaacaacoaaaaaabkaaaabbaaaahddkaaaaakakagciceaaaaakgpfdaaaaakaaagacgpdlaaaaakalahamnoalcgaabjciclaaaaagamnoaaaaaickaaaaabbaaaaaaaaaabaabpcaaaalccaaaaabbldaaeaafjaaaaaablaaaabbaaaaadbkciclaaaaagcibkaaaaakakblciclaaaaagaecnadadclagbjciclaaaaagaacibkaaaaakalacaggpehaaaaakaggpblaaaaakfiamacahaigpfeaaaaakanacaiajaifjgpeiaaaaakbdaenoahcgaaacbdaenoaaaabbaeckaaaaaaabbaaaaaaaaaabaaeneoaaahccaaaaabeghcabaoaahaiaanaaaaaebeiaaoaaaaaeckboacciccaaaaakckckacciccaaaaakaaaaaackaaaaaabddaacaadpaaaaaabmaaaabbaahoapaaaaaebecifiaaaaakbgpoabamaicnccaahcdkapaahanaahaaaaaccifjaaaaakgpfkaaaaakhdflaaaaakakagiaapaaaaaeaahoapaaaaaealclaaahckaabddaabaaalaaaaaabnaaaabbaahobaaaaaaeakclaaagckccaaaciabaaaaaaeckbddaabaaalaaaaaaboaaaabbaahobbaaaaaeakclaaagckfghddfaaaaagcifnaaaaakheaiaaaaaciabbaaaaaeckboaccifoaaaaakckaaaaaaleaaaaaamomkoploabaaaaaajbaaaaaagmfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofcgfhdgphfhcgdgffcgfgbgegfhccmcagnhdgdgphcgmgjgccmcafggfhchdgjgpgodndecodacodacodacmcaedhfgmhehfhcgfdngogfhfhehcgbgmcmcafahfgcgmgjgdelgfhjfegpglgfgodngcdhdhgbdfgddfdgdbdjdddegfdadidjcdfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofchfgohegjgngffcgfhdgphfhcgdgffdgfheacaaaaaaaaaaaaaaaaaaaaaafaebeefaebeefaleaaaaaaecfdekecabaaabaaaaaaaaaaamaaaaaahgdecodacodddadddbdjaaaaaaaaafaagmaaaaaabialaaaacdhoaaaaiealaaaabialaaaacdfdhehcgjgoghhdaaaaaaaajmbgaaaaheapaaaacdfffdaabacgaaaabaaaaaaacdehffejeeaaaaaacacgaaaanaaeaaaacdecgmgpgcaaaaaaaaaaaaaaacaaaaabfhbnkcajajabaaaaaapkcfddaabgaaaaabaaaaaadgaaaaaaaiaaaaaabbaaaaaadgaaaaaaffaaaaaafoaaaaaaaiaaaaaabgaaaaaaboaaaaaaacaaaaaaadaaaaaaaeaaaaaaabaaaaaaabaaaaaaacaaaaaaabaaaaaaaaaaakaaabaaaaaaaaaaagaaiaaahjaaakaajmaaihaaagaabbadaaadagaaecadcnadagaalmaekcaeagaaohaenfaeagaapoaenfaeagaablafnfaeagaadkafnfaeagaafdafnfaeagaagmafnfaeagaaihafnfaeagaakcafnfaeagaankafllafagaaooafllafagaapmafnfaeagaabfagnfaeagaaefagdcagelaafjagaaaaagaaiiaggiagagaakiaggiagagaamgaghjaaagaamlaghjaaagaaocagniagagaapkagooagagaaadahniagagaabaahniagagaaddahhjaaagaaeoahhjaaagaahjahhjaaagaajjahhjaaagaamgahniagakaaohahdcagagaaahaihjaaagaabbaihjaaagaafhaidmaiagaahbaihjaaagaajeaihjaaakaaoaainfaiagaacoajniagagaadiajniagagaafgajniagagaagdajniagagaajaajhjaaagaakbajooagakaapdajnlajagaaakakdcagagaachakgiagagaafcakhjaaagaafhakhjaaagaahlaknfaeakaakhakjbakakaamaakjbakakaanfakihaaaaaaaaaaabaaaaaaaaaaabaaabaaabaabaaabfaabjaaafaaabaaabaaabaabaaacaaabjaaafaaaiaabhaaabaabaaaclaabjaaafaaaiaabkaaiaabbaaadhaabjaaafaaakaaccaaaaaabaaadpaabjaaafaaanaaclaaaaaabaaaelaaffaaafaaapaadaaaaaabbaaaghaaffaaajaabbaadeaafbialeaaakaafbiamdaaakaafbiandaaakaabbaaocaabmaabbaapbaabpaabbaacbabcnaabbaaclabcnaabbaanlabbmaabbaaokabbpaabbaadmacbmaabbaaelacbpaabbaaggachiaabbaalpacbmaabbaamoacbpaabbaacbadkeaabbaaeoadkiaabbaajcadmgaafacaaaaaaaaajbaaababcdaaabaakacaaaaaaaaajgaaamabciaaacaanmcaaaaaaaaajgaabeabciaaadaacicbaaaaaaaajbaadfabdbaaaeaapmcbaaaaaaaajbaadmabdbaaagaaleccaaaaaaaajbaaedabdbaaaiaaoaccaaaaaaaajbaaeoabdbaaakaamicdaaaaaaaajbaafkabdhaaamaaoicdaaaaaaaajbaagaabdhaaapaaaiceaaaaaaaajbaaggabdhaabcaaceceaaaaaaaajbaagmabdhaabfaaebceaaaaaaaajbaahcabdoaabiaahiceaaaaaaaajbaahjabdoaabpaakpceaaaaaaaajbaaiaabdoaacgaaogceaaaaaaaajbaaihabdoaacnaacacfaaaaaaaajbaaioabekaadeaapacfaaaaaaaajbaakbabfaaadfaahmcgaaaaaaaajbaaklabfaaadgaalmcgaaaaaaaajbaalbabfaaadhaaemchaaaaaaaajgaalhabffaadiaaokcpaaaaaaaaigbilpabflaadkaamacpaaaaaaaajbbijcahgfaadkaapecpaaaaaaaajgaamfabciaadkaafedaaaaaaaaajbaaneabfpaadlaahddaaaaaaaaaigbilpabflaadnaahmdaaaaaaaaajbaapkabcdaadnaammdaaaaaaaaajgaaafacgfaadoaaoidaaaaaaaaajgaaakacgjaadoaacmdbaaaaaaaajgaabjacgjaadpaaiedbaaaaaaaajgaacfacgoaaeaaamadbaaaaaaaajgaaclachdaaebaaandcaaaaaaaaigbilpabflaaecaapldbaaaaaaaajbbijcahgfaaecaabidcaaaaaaaajbaaflaccdaaecaagidcaaaaaaaajbaagoachlaaedaaoedcaaaaaaaajbaahkacicaaeeaabmdeaaaaaaaajgaahpaciiaaefaamedfaaaaaaaajbaaikacgjaaeiaaomdfaaaaaaaajgaajjacipaaejaacedgaaaaaaaajgaakcacjfaaelaaomdjaaaaaaaajgaaldacciaaepaaoidkaaaaaaaajbbijcahgfaafaaaaadlaaaaaaaajbaanoaccdaafaaafadlaaaaaaaajgaaojacciaafbaajmdlaaaaaaaajgaapeacjnaafcaacgdmaaaaaaaaigbilpabflaaffaabedmaaaaaaaajbbijcahgfaaffaacodmaaaaaaaaidbilpabflaaffaadmdmaaaaaaaajdaifoadkmaaffaaiidmaaaaaaaajdaihcadlbaaffaajpdmaaaaaaaajdaihoadlgaaffaakidmaaaaaaaajgaikcadmkaafgaanfdmaaaaaaaaigbilpabflaafgaalpdmaaaaaaaajbbijcahgfaafgaaaaaaabaalgadaaaaabaalpadaaaaabaalpadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaankadaaaaacaannadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaapdadaaaaabaamiadaaaaabaapmadaaaaabaaaaaeaaaaabaapdadaaaaacaaaeaeaaaaabaaakaeaaaaabaaapaeaaaaacaabcaeaaaaabaabfaeaaaaabaaboaeaaaaabaacgaeaaaaabaadcaeaaaaabaacgaeaaaaabaadpaeaaaaabaaeiaeaaaaabaaeiaeaaaaabaaenaebabaacaalpadbabaadaafbaeaaaaabaalpadaaaaabaaakaeaaaaacaalpadaaaaabaaffaebabaacaafpaebabaadaaghaebabaaeaagoaeaaaaabaahlaeaaaaabaaiaaeaaaaabaaenaeaaaaabaaakaeaaaaacaaijaeaaaaadaajcaeaaaaabaajmaecjaalpabngaadbaalpabngaadjaalpabngaaebaalpabngaaejaalpabngaafbaalpabngaafjaalpabngaagbaalpabngaagjaalpabngaahbaalpabnlaahjaalpabngaaibaalpabngaaijaalpabngaajbaalpaboaaakbaalpabogaakjaalpabflaaljaancagolaambaaohaghdaamjaakcadababnbaalpabagabnjaablahanabnjaacfahflaanjaaclahflaaobaadlahbjabmjaaefahdeabljaafeahipaaljaaflahelabljaaggahepabojaahaahanabpbaahoahgjabobaaicahgpabljaafeahheabljaaikahanabajaalpabflaaljaajoahioabmjaakkahababmjaaldahjdabljaalnahkmabababmlahciaaajabopahlgabajabacaiflaabjabbkainbabbjabccainhabbjabdcainoabamaalpabflaaljaafoaikmabamaagfaipkabamaagjaiaaaccjablpabflaaljaaieaianabljaaieaiblacljaaijaikmabdbabjoaiclacdbablaaianabababmcaiciaaljaafeahdbacmbaamoaigjaadjablpabflaadjabokaidiacljaapjaikmabljaaacajdnacdjabakajedacajabbhajejacababbnajciaaebabohaghdaaebabegajfjacfbablpabgaacfjabgoajngaafjabcfahflaafjabclahflaaljaaheajgpacljaaggahheacljaahmajblacljaaieajgpacamaapjaihkacgbabjmajiaacgjablpabngaaebabkpajkeacgjabflahelabgjabliajkkacebablpajkeacajaahaahanabdjabmoajmdacljaaheajnbachbablpabedachjablpabflaaibablpabflaaajaaecakcaadijabgjakcgadijabieakcpadbjaalpabdfadkbablpabekadlbabocakljadbbaalpabflaaaiaaaeaaanaaaiaaaiaabcaaaiaaamaabhaaaoaabjabaaaaaoaabnabaaaaaoaadbabaaaaaoaadfabaaaaacaadjabneaacjaaodacfbadcoaablaabgaecoaacdaadeaecoaaclaadkaecoaaidaalbaecoaaedaadeaecoaahlaakiaecoaabdaaakaecoaaddaaakaecoaadlaaeiaecoaaalaamcadcoaafdaadeaecoaaflaagiaecoaaglaajcaecoaahdaajpaeejaaodacfbadodaaklacnpacodaaldacbgacodaallacbgacadabklacfkadadabllacbgaciaaeilabbgacpcaapkaabbabboabceabcjabdkabakaafeabfnabgdabhmabjjabkeabkiablbabloabocabokabagaccbacfaacgiacifaclbacmjacnhacdnadefadleadahaaabaaaiaaadaaaaaabbadlmaaaaaaikadmbaaaaaakoadmpaaacaadbaaadaaacaadcaaafaaabaaddaaafaaacaadeaaahaapdabaeiaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahjaaaaaaaaaaaaaaaaaaabaaaaaaopakaaaaaaaaaaaaaadmengpgehfgmgfdoaaffhagegbhegfcogfhigfaaahpnooaaffhagegbhegfaapocibncjbobpcmbcbcbcaaakcmcjbnbpcncnaocjcjcgaaakcmcjcbcmblchaabbbpbmanbpcococdcicbcnaaambpcncjcpcmbnbpcnaaffhagegbhegfcofahcgphagfhchegjgfhdaafdgfhehegjgoghhdaagnhdgdgphcgmgjgcaafdhjhdhegfgnaaepgcgkgfgdheaafdhjhdhegfgncoedgpgogggjghhfhcgbhegjgpgoaaebhahagmgjgdgbhegjgpgofdgfhehegjgoghhdecgbhdgfaapladaoanbjaoajbjpkbjplbdaopoaaplbdaopoanbjaoajbjpkbjbbajampnaapladaoanbjaoajbjpkbjbbajampnaaancocmcdcicbpnblcoblcnokojolaaancocmcdcicbpnblcoblcnokojolpkaapnbpbncjbobpdcokojojaappcdcgbpahpnooaacacdcgbpaocjancocmcdcicbaachbjcgajciplcdcocnaachbjcgolakcjdbbpcmaaagancccdcacoaaamancccdcacoaaamcjcoblcobpagbpcacoaapkboboapcicncdcbcibpboaachbooobjppaachbooobjabaachbooobjacaachbooobjadaachbooobjppppaachbooobjababaachbooobjacacaachbooobjadadaapmcjcidabpcmcoaocjbbcjcmbopkcmcmblddaabbcjcmboaocjacbpdcaaaocjacbpdcaacocjccbpdcaapocibncmddckcoaacogdhegphcaapnbpbncjbobppkcgckccblbmbpcoaaaocjplddcobpaaancocmcdcicbpnblcoblcnokojomaaancocmcdcicbpnblcoblcnokojompkaapnbpbncjbobpdcokojokaacobpcncoaacfcdcgcgakcmcjbnbpcncnpodcbpaacfcdcgcgakcmcjbnbpcncnaabobpcgblddaaakcmcjbnbpcncnadcnamcpcicicdcicbaaancocmcdcicbpnblcoblcnokojonaaancocmcdcicbpnblcoblcnokojonpkaapnbpbncjbobpdcokojolaaampoanaopkamaoaapkciblcgddcnbppkcmcbcnaaahblcdciaacpckboblcobpppcdcgbpaabnccbpbncfpncdcmbpbncocjcmddaaanbldabpppcdcgbpaacpckboblcobpadcicibpcmppcdcgbpcnaacbbpcopkcgcgppcdcgbpcnaaancocmcdcicbpnblcoblcnokojooaaancocmcdcicbpnblcoblcnokojoopkaapnbpbncjbobpdcokojomaacbbpcobbbpbmpnblcoblaacbbpcoaicjbobppnblcoblaafdhjhdhegfgncofcgfhdgphfhcgdgfhdaafcgfhdgphfhcgdgfengbgogbghgfhcaacmbpcncjcpcmbnbpahblciaafdhjhdhegfgncoehgmgpgcgbgmgjhkgbhegjgpgoaaedhfgmhehfhcgfejgogggpaacmbpcncjcpcmbnbppmcpcgcocpcmbpaacbbpcobjambpcncjcpcmbnbpahblciblcbbpcmaacbbpcobjpmcpcgcocpcmbpaacnbpcobjpmcpcgcocpcmbpaapmcpcgcocpcmbpaagegfgggbhfgmheejgohdhegbgogdgfaaghgfhefpeegfgggbhfgmheaaeegfgggbhfgmheaacdcibobpdcokojomaacacdcgbpakblcoccaacgbablcgcpbpaacdancccdcacoplcdcocnaacgbcaacgbdaadcaaddaadeaablaabmaabnaaboaacnaablbnaacnahbpcncnblcbbpaabobpbnaaccbpdcaacncoddckbpaaboblcoblaablokaablolaacdcibobpdcokojonaabpdcbpppcdcgbpaackcmcjbnbpcncnaiblchbpaaahcdcgcgcdcnbpbncjcibocnaacdcibobpdcokojooaablcmcbcnaacpcmcgaachboooaabncjcicacdcbapcmcgaabocdcmakblcoccaackbpcmcacddcaabobpcgbpcoajcmcoccbpcmcnaackblcoccaacdcibobpdcokojopaacicjbobpaiblchbpaacacdciblcgaicjbobpaadablcgcpbpaafdhjhdhegfgncofchfgohegjgngfcofggfhchdgjgpgogjgoghaafegbhcghgfheeghcgbgngfhhgphcglebhehehcgjgchfhegfaafdhjhdhegfgncofcgfgggmgfgdhegjgpgoaaebhdhdgfgngcgmhjfegjhegmgfebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeegfhdgdhcgjhahegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgogggjghhfhcgbhegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgnhagbgohjebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfahcgpgehfgdheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgphahjhcgjghgiheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfehcgbgegfgngbhcglebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedhfgmhehfhcgfebhehehcgjgchfhegfaafdhjhdhegfgncofchfgohegjgngfcoejgohegfhcgphafdgfhchggjgdgfhdaaedgpgnfggjhdgjgcgmgfebhehehcgjgchfhegfaaehhfgjgeebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfggfhchdgjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeggjgmgffggfhchdgjgpgoebhehehcgjgchfhegfaafdhjhdhegfgncoeegjgbghgogphdhegjgdhdaaeegfgchfghghgbgcgmgfebhehehcgjgchfhegfaaeegfgchfghghgjgoghengpgegfhdaafdhjhdhegfgncofchfgohegjgngfcoedgpgnhagjgmgfhcfdgfhchggjgdgfhdaaedgpgnhagjgmgbhegjgpgofcgfgmgbhigbhegjgpgohdebhehehcgjgchfhegfaafchfgohegjgngfedgpgnhagbhegjgcgjgmgjhehjebhehehcgjgchfhegfaaedgigbhcaafdhehcgjgoghaafdhagmgjheaafdhjhdhegfgncoejepaaeggjgmgfaaefhigjhdhehdaafdhjhdhegfgncofegfhiheaaefgogdgpgegjgoghaafdhehcgfgbgnfcgfgbgegfhcaafegfhihefcgfgbgegfhcaafcgfgbgefegpefgogeaaedgmgphdgfaaeegjhdhagphdgfaaedgpgohggfhcheaafegpecgpgpgmgfgbgoaaehgfheechjhegfhdaaejgohedgdeaaedgpgogdgbheaaghgfhefpemgfgoghhegiaafdhfgchdhehcgjgoghaafegpfdhehcgjgoghaaengbhegiaafagphhaafegpejgohedgdeaafegpemgphhgfhcaacogdgdhegphcaaechjhegfaafegpedgigbhcebhchcgbhjaaghgfhefpfffeegdiaaehgfhefdhehcgjgoghaaefgogehdfhgjhegiaafagbhegiaaehgfheeggjgmgfeogbgngffhgjhegigphfheefhihegfgohdgjgpgoaafahcgpgdgfhdhdaaehgfhefahcgpgdgfhdhdgfhdechjeogbgngfaaelgjgmgmaaefhigdgfhahegjgpgoaaeegbhegffegjgngfaaghgfhefpeogphhaaebgegeengjgmgmgjhdgfgdgpgogehdaaghgfhefpfegjgdglhdaafdhjhdhegfgncoedgpgmgmgfgdhegjgpgohdcoehgfgogfhcgjgdaaemgjhdhegadbaaefhbhfgbgmhdaaebgegeaafegpebhchcgbhjaafdfeebfegihcgfgbgeebhehehcgjgchfhegfaafehcgjgnaafdhegbhchehdfhgjhegiaaebhahaeegpgngbgjgoaaghgfhefpedhfhchcgfgoheeegpgngbgjgoaaghgfhefpecgbhdgfeegjhcgfgdhegphchjaaehgfheeggjgmgfeogbgngfaaeegfgmgfhegfaafdhjhdhegfgncoeogfheaafhgfgcedgmgjgfgoheaaeegphhgogmgpgbgefdhehcgjgoghaaedgpgohegbgjgohdaafcgfhagmgbgdgfaaeegphhgogmgpgbgeeggjgmgfaafdhegbhcheaaehgfheeegjhcgfgdhegphchjeogbgngfaaeegjhcgfgdhegphchjaaeegjhcgfgdhegphchjejgogggpaaedhcgfgbhegfeegjhcgfgdhegphchjaafdhehcgfgbgnfhhcgjhegfhcaafegfhihefhhcgjhegfhcaafhhcgjhegfaaejgogegfhiepggaafehcgjgnefgogeaaemgbhdheejgogegfhiepggaaefgohggjhcgpgogngfgoheaaefhigjheaafdhehcgjgoghechfgjgmgegfhcaaehgfheeggjgmgfhdaaebhahagfgogeaaehgfheeegjhcgfgdhegphcgjgfhdaahdgfhefpefgogdgpgegjgoghaafdhjhdhegfgncoedgpgegfeegpgncoedgpgnhagjgmgfhcaaehgfgogfhcgbhegfgeedgpgegfebhehehcgjgchfhegfaaeegfgchfghghgfhceogpgoffhdgfhcedgpgegfebhehehcgjgchfhegfaaedgpgnhagjgmgfhcehgfgogfhcgbhegfgeebhehehcgjgchfhegfaafcgfgggfhcgfgogdgfefhbhfgbgmhdaafehjhagfaafchfgohegjgngffehjhagfeigbgogegmgfaaehgfhefehjhagfeghcgpgneigbgogegmgfaaebhdhdgfgngcgmhjaaghgfhefpebhdhdgfgngcgmhjaafdhjhdhegfgncoedgpgnhagpgogfgoheengpgegfgmaaefgegjhegphcechcgphhhdgbgcgmgfebhehehcgjgchfhegfaaefgegjhegphcechcgphhhdgbgcgmgffdhegbhegfaafdgfhehegjgoghhdecgbhdgfaafdhjgogdgihcgpgogjhkgfgeaaffhagegbhegfcofahcgphagfhchegjgfhdcofcgfhdgphfhcgdgfhdcohcgfhdgphfhcgdgfhdaaaaaaaaaaiannceaaghaagcaaceaaghaagcaaghaagdaaghaageaaceaaghaagoaaghaaggaagiaageaagiaageaaghaagcaaghaagiaaghaaggaagdaagbaaghaagfaaghaagkaaghaagiaaghaaggaagiaageaagiaagfaaceaaghaagcaaghaagdaaghaageaaghaagfaaghaaggaaghaaghaaghaagiaaghaagjaaghaagkaaghaaglaaghaagmaaghaagnaaghaagoaaghaagpaaghaahaaagiaagbaagiaagcaagiaagdaagiaageaagiaagfaagiaaggaagiaaghaagiaagiaagiaagjaagiaagkaagiaaglaaceaageaagbaaceaaghaagdaaceaaghaageaaceaaghaagfaaceaaghaaggaaceaaghaaghaaaaepgfaageaaghaagjaaghaagcaagiaagdaaghaagiaaghaaggaagfaagoaaghaahaaaghaagfaagiaaggaaghaagnaaghaaggaaggaahaaaggaaghaageaagfaaceaagdaagpaaghaaggaagiaagjaaghaaggaaaaabaaimmngdaaggaagiaagpaaghaagfaagiaagbaageaagbaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagbaageaagbaageaagcaaggaagnaaggaagnaaceaagiaagfaaghaahaaaghaahaaaghaagnaagiaageaaggaagnaaggaagnaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaceaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagdaagbaaceaaggaagnaaggaagnaaceaaggaagnaaggaagnaaggaagnaaggaagnaaceaaggaagnaagdaagdaaceaaggaagdaagfaaggaaggaageaaggaagfaagfaagcaaggaagdaaggaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaaggaagnaaggaagnaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaagdaagoaageaagpaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagcaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaaghaaggaaghaagoaagiaagbaagiaagfaagiaagkaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaageaagdaaggaagnaaggaagnaaceaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaaceaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaagpaaghaaggaagiaagjaaghaaggaaceaaghaaghaaghaagcaaghaagnaagiaageaaghaaggaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagdaagpaagiaagfaagiaagjaagiaagfaaceaaggaagnaaghaagpaaceaaggaagnaagiaagdaaggaagnaaghaagpaaceaagdaagoaageaagpaaceaagpaaghaagkaagnaagjaagoaagpaaggaagjaaglaaglaagcaagpaaggaagkaagkaaglaagjaagpaagjaagmaaggaagjaagfaagpaaghaagmaaglaagkaagbaagpaagiaagkaagmaaglaagpaagpaaggaagmaagoaagkaaggaaceaagpaaggaagmaagpaagjaaggaagpaaghaagkaagmaagmaagfaagpaaghaagkaaghaagmaagbaagpaaghaagkaaghaagjaagiaagpaagfaagmaagmaagmaaghaaceaagdaahaaaceaagdaagjaaceaageaagmaaaaibdhghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaaggaaghaagcaagiaageaagiaagkaagfaagkaaghaageaaghaahaaaghaagpaagdaahaaagiaagiaaghaagkaaghaagmaaghaagkaagiaageaagdaahaaagfaahaaaghaagpaaghaagnaaghaagkaaghaagpaaghaaggaaggaageaaghaaggaagiaagdaaghaagkaaghaagcaaghaagnaaceaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaaceaagfaagpaaghaagcaaghaagoaaghaaggaageaagcaaceaaceaagdaagjaaceaagdaagkaaaadhffaahaaageaagbaaheaagfaacoaafaaahcaagpaahaaagfaahcaaheaagjaagfaahdaacoaafcaagfaahdaagpaahfaahcaagdaagfaahdaaaaaaaabnolpgapgdldjjenjajfdkblildjmcpaaaailhhkfmfgbjdeoaijacagaiaeaiaaaaaaaeaeaaaaaaaecaaaaaaaacagaoadagbnaoaeaaabaoaiaeaaabaoaoadagbnakafaaacakakakagaaadakakakakalaaahabbaakakakakakakakafaaabbnakaoaeaaabaoakafaaacaoaoaiadcaaaabafaaacafadadadaaaaabaeaaababaoaeaaababanaeaaabacaoacagacagaaabbnaobnaoafaaababbnaoagaaadabaoaoaoafaaacaoaoaoahaaaeabaoaoaoacagaaadaoaoaoacadagbcanadagbcbbaeaaaabcanaeaaaabcbbafaaababbcbbaeaiaabcanaeaiaabcbbadagbccaaeaaaabccaaeaiaabccaababaecaababaoaecaababacafcaababbbenaecaababaiagcaabbnaobnadahahaeaoaoacbnadagahaeaoaoaoacaeaaaabcgfagcaacabaobcgfadcaaaaoahahaeaobcgjaoacaeaaabacakafahadakakacaeahacakakakahaiakakakakakakakacafcaabbnafaobaahakbnakaiaibnakaiaiaibnafbnakacadcaaaaiaecaabaoaiaiahagaoakaiaiaoacafahadaoaoacafahadaoaoakafaaacanananaeaaabakanahaaaeaoaoaoaoaobbahaoaoaibnakaiakakakakakakakakaoacaecaaabnadafcaabaobnafakahagbnafbnadaiafaoacadahabafadahabaoaecaabacaoaeahacaoacahaaabbnbciaifaobcahagbnbciaifbciaifbciaijbnbciaifaiacafaaaabbiainagcaabbbiainanadcaaaakahahadakbbiainacaiahadbnbciaifacacagbfbciajbabaoafcaababbdaaafcaaabnbdaaapahagbfbciajbabaoaobnaoacbnaoaiaeabaaaaaaafcaabaobnadajahagaoaoaoaoacbnadafaaaabciajjagaaadaoaoaoaoaecaabaoaoafcaacaoaoaoafcaacabaoaoagaaabbciaifaoaiahaeaobciajnaoacagaaabbciakfaoahcaadabaoacbcgfagahacbciakjaoaecaabaiaoafcaacaoaiaiafcaabacbdaaaeaaababaiboahbdaoaiaoaoaobnaobfbciajbabaoaoaoaoaoaoaobnaoaoacbnadbnaoaiafaaabbnaoaoagcaabbcialfaobbahakbcialfbnaoaobnaoaoaoaoacbnaoaiafcaababbcgfahahadbciajnaoaoafcaacaiaoaiahahafaoaoaiaiaoeaabaaddfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofegpgpgmhdcofdhehcgpgoghgmhjfehjhagfgefcgfhdgphfhcgdgfechfgjgmgegfhcahdecodacodacodaaaaaafaaacacbmbmaiaaabbciamfbbiamjafcaaabciamnahcaacabaobciamnahahadbcanbcanacaeahabbcbbagcaababbbianfaiabaaacaaaaaaaaaafjabaaelengjgdhcgphdgpgghecofggjhdhfgbgmfdhehfgegjgpcoefgegjhegphchdcofdgfhehegjgoghhdeegfhdgjghgogfhccofdgfhehegjgoghhdfdgjgoghgmgfeggjgmgfehgfgogfhcgbhegphcaidbdbcodacodacodaaaaaaeahabbccaaiaaabbcianjbcianjehabaabkcoeoeffeeghcgbgngfhhgphcglcmfggfhchdgjgpgodnhgdecodaabaafeaobeeghcgbgngfhhgphcgleegjhdhagmgbhjeogbgngfbacoeoeffecaeghcgbgngfhhgphcglcadealabaaagffhagegbhegfaaaabnabaabiogjgihoelllgogjlleogjglaoiloifofikkjoflhkfofiflhaaaaafabaaaaaaaaanabaaaifdgdgjgngfgogdgfaaaabpabaabkedgphahjhcgjghgihecamckjcafdgdgjgngfgogdgfcadcdadbdhaaaacjabaacededgdgdadedhdddccndhgcdagccndedidggecndjdbdddfcngddgdedfggggdddggegddjdiaaaaamabaaahdccodacodacodaaaaaaiabaaahabaaaaaaaaaiabaaaiaaaaaaaaaaboabaaabaafeacbgfhhcgbhaeogpgoefhigdgfhahegjgpgofegihcgphhhdabaaaaaaaajojfjofjaaaaaaaaacaaaaaabmabaaaakegiaaaakeekaaaafcfdeefdjnebjceadkgjfbeflchpfhdlegpiimlbabaaaaaagfdkfmehgjheeegjhcfmffhagegbhegffmffhagegbhegfdcfmffhagegbhegffmgpgcgkfmeegfgchfghfmffhagegbhegfcohagegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoigjaaaaaaaaaaaaaaaaaaaapogjaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaaaaafpedgphcefhigfengbgjgoaagnhdgdgphcgfgfcogegmgmaaaaaaaaaappcfaacaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaabaaaaaaacaaaaaiabiaaaaaadiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaafaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaagiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaajaaaaaaakaiaaaaabaadaaaaaaaaaaaaaaaaaaaalaidaaaaokabaaaaaaaaaaaaaaaaaaaabaaddeaaaaaafgaafdaafpaafgaaefaafcaafdaaejaaepaaeoaafpaaejaaeoaaegaaepaaaaaaaaaalnaeoppoaaaaabaaaaaaacaaaaaaaaaaaaaaacaaaaaaaaaadpaaaaaaaaaaaaaaaeaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeaaaaaaabaafgaagbaahcaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaaaaaceaaaeaaaaaafeaahcaagbaagoaahdaagmaagbaaheaagjaagpaagoaaaaaaaaaaaaaalaaehaacaaaaabaafdaaheaahcaagjaagoaaghaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaemacaaaaabaadaaadaaadaaadaaadaaadeaagcaadaaaaaaacmaaajaaabaaedaagpaagnaagnaagfaagoaaheaahdaaaaaaihgfpgeopegglagfifipkjfcoffnhhfbaaaaaaaadeaaajaaabaaedaagpaagnaahaaagbaagoaahjaaeoaagbaagnaagfaaaaaaaaaafdaagdaagjaagnaagfaagoaagdaagfaaaaaaaaaadiaaahaaabaaegaagjaagmaagfaaeeaagfaahdaagdaahcaagjaahaaaheaagjaagpaagoaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadaaaaiaaabaaegaagjaagmaagfaafgaagfaahcaahdaagjaagpaagoaaaaaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaalaaabaaejaagoaaheaagfaahcaagoaagbaagmaaeoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaafiaabkaaabaaemaagfaaghaagbaagmaaedaagpaahaaahjaahcaagjaaghaagiaaheaaaaaaedaagpaahaaahjaahcaagjaaghaagiaaheaacaaakjaacaaafdaagdaagjaagnaagfaagoaagdaagfaacaaadcaadaaadbaadhaaaaaaeaaaalaaabaaepaahcaagjaaghaagjaagoaagbaagmaaegaagjaagmaagfaagoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaadaaaahaaabaafaaahcaagpaageaahfaagdaaheaaeoaagbaagnaagfaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadeaaaiaaabaafaaahcaagpaageaahfaagdaaheaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaaiaaabaaebaahdaahdaagfaagnaagcaagmaahjaacaaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaaoplllpdmdphigngmcahggfhchdgjgpgodnccdbcodacccagfgogdgpgegjgoghdnccfffeegcndicccahdhegbgogegbgmgpgogfdncchjgfhdccdpdoanakdmgbhdhdgfgngcgmhjcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdbcccagngbgogjgggfhdhefggfhchdgjgpgodnccdbcodaccdoanakcacadmgbhdhdgfgngcgmhjejgegfgohegjhehjcahggfhchdgjgpgodnccdbcodacodacodacccagogbgngfdnccenhjebhahagmgjgdgbhegjgpgocogbhahacccpdoanakcacadmhehchfhdheejgogggpcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdcccdoanakcacacacadmhdgfgdhfhcgjhehjdoanakcacacacacacadmhcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhdcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgddccdoanakcacacacacacacacadmhcgfhbhfgfhdhegfgeefhigfgdhfhegjgpgoemgfhggfgmcagmgfhggfgmdnccgbhdejgohggpglgfhccccahfgjebgdgdgfhdhddnccgggbgmhdgfcccpdoanakcacacacacacadmcphcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhddoanakcacacacadmcphdgfgdhfhcgjhehjdoanakcacadmcphehchfhdheejgogggpdoanakdmcpgbhdhdgfgngcgmhjdoanakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaamaaaaaabadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";}}

示例demo
示例源码

开源地址:https://gitee.com/scimence/UpdateDemo

  相关解决方案