diff --git a/.gitmodules b/.gitmodules index 6358b44..ee37d0d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "go-cqhttp-e"] path = go-cqhttp-e url = https://github.com/molehzy/go-cqhttp-e +[submodule "Text-table"] + path = Text-table + url = https://github.com/molehzy/Text-table diff --git a/GenshinAPI b/GenshinAPI index 2b9a025..3cc8c2f 160000 --- a/GenshinAPI +++ b/GenshinAPI @@ -1 +1 @@ -Subproject commit 2b9a025eb9cb4fb3a99173cab3256b55f0b46efb +Subproject commit 3cc8c2fbd93d8cb744c7eb932494acddc3ae38f8 diff --git "a/GenshinBot.\344\273\243\347\240\201/DLL.e.txt" "b/GenshinBot.\344\273\243\347\240\201/DLL.e.txt" new file mode 100644 index 0000000..957b58b --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/DLL.e.txt" @@ -0,0 +1,43 @@ +.版本 2 + +.DLL命令 PeekMessage, 逻辑型, "user32.dll", "PeekMessageA", , 系统_处理事件1 + .参数 lpMsg, MSG + .参数 hwnd, 整数型 + .参数 wMsgFilterMin, 整数型 + .参数 wMsgFilterMax, 整数型 + .参数 wRemoveMsg, 整数型 + +.DLL命令 TranslateMessage, 逻辑型, "user32.dll", "TranslateMessage", , 系统_处理事件1 + .参数 消息结构, MSG, , lpMsg + +.DLL命令 DispatchMessage, 整数型, "user32.dll", "DispatchMessageA", , 系统_处理事件1 + .参数 消息结构, MSG, , lpMsg + +.DLL命令 VariantTimeToSystemTime, 整数型, "oleaut32.dll", "VariantTimeToSystemTime" + .参数 vtime, 日期时间型 + .参数 lpSystemTime, 精易_时间 + +.DLL命令 GetDateFormatA, 整数型, "kernel32.dll", "GetDateFormatA", , 针对指定的“当地”格式,对一个系统日期进行格式化 格式化过后的字串的长度。 + .参数 地方ID, 整数型, , Locale,用于决定格式的地方ID。lpFormat参数中指定的任何信息(倘若不是NULL)都优先于特定于地方的信息 + .参数 标志, 整数型, , dwFlags,如指定了lpFormat,那么该参数应该为零。否则,可设为LOCALE_NOUSEROVERRIDE,强制使用系统地方参数——即使它们已由用户取代。 + .参数 日期结构, 精易_时间, , lpDate,包含了一个系统日期的结构 + .参数 格式化, 文本型, , lpFormat,String,可设为NULL,使用特定于不同地方的值(用vbNullString传递一个NULL)。否则包含一个日期格式字串。 + .参数 缓冲区文本, 文本型, , lpDateStr,指定一个缓冲区,用于容纳格式化过后的字串。注意事先对字串进行初始化 + .参数 缓冲区文本长度, 整数型, , cchDate,缓冲区的长度。如为零,表示函数会返回需要缓冲区的大小; + +.DLL命令 GetTimeFormatA, 整数型, "kernel32.dll", "GetTimeFormatA", , _系统置时间进行格式化 针对指定的“当地”格式,对一个系统时间进行格式化。 + .参数 地方ID, 整数型, , Locale,用于决定格式的地方ID。lpFormat参数中指定的任何信息(倘若不是NULL)都优先于特定于地方的信息 + .参数 标志, 整数型, , dwFlags,如指定了lpFormat,那么该参数应该为零。否则,可设为LOCALE_NOUSEROVERRIDE,强制使用系统地方参数 + .参数 时间结构, 精易_时间, , lpDate,SYSTEMTIME,用于包容系统时间的一个结构 + .参数 格式化, 文本型, , lpFormat,String,可设为NULL,使用特定于不同地方的值(用vbNullString传递一个NULL)。 + .参数 缓冲区文本, 文本型, , lpDateStr,指定一个缓冲区,用于容纳格式化过后的字串。注意事先对字串进行初始化 + .参数 缓冲区文本长度, 整数型, , cchDate,缓冲区的长度。如为零,表示函数会返回需要缓冲区的大小; + +.DLL命令 GetLocaleInfo, 整数型, "kernel32.dll", "GetLocaleInfoA" + .参数 地方ID, 整数型 + .参数 类型, 整数型 + .参数 数据, 文本型 + .参数 数据尺寸, 整数型 + +.DLL命令 DLL命令1 + diff --git a/GenshinBot.e "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201.e" similarity index 62% rename from GenshinBot.e rename to "GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201.e" index 9ebc2b2..75baba7 100644 Binary files a/GenshinBot.e and "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201.e" differ diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\216\222\345\272\217.list.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\216\222\345\272\217.list.txt" new file mode 100644 index 0000000..ac723d0 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\216\222\345\272\217.list.txt" @@ -0,0 +1,11 @@ +程序集 +类_日志 +内存画板 +图片对象 +图片编辑类 +分层画板 +__HIDDEN_TEMP_MOD__ +正则表达式类 +GenshinAPI +类_CQHTTP +标识线程锁 \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\261\273.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\261\273.class.e.txt" new file mode 100644 index 0000000..d910ae1 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\347\261\273.class.e.txt" @@ -0,0 +1,110 @@ +.版本 2 +.支持库 e2ee + +.程序集 正则表达式类 +.程序集变量 正则, 对象 +.程序集变量 集_过度对象, 对象 +.程序集变量 集_被搜索的文本, 变体型 + +.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 + COM线程初始化 () + +.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 + 正则.清除 () + 集_过度对象.清除 () + 集_被搜索的文本.清除 () + COM线程释放 () + +.子程序 创建, 逻辑型, 公开, 根据指定的正则表达式文本创建一个正则表达式对象。本对象中的原有内容将被释放 + .参数 正则表达式文本, 文本型, , 比如“易语言4\.0(模块|支持库)?” + .参数 被搜索的文本, 文本型 + .参数 是否区分大小写, 逻辑型, 可空, 可以留空,默认为假,不区分大小写; 真为区分大小写;本参数指定这个正则表达式在创建成功后进行匹配、搜索、替换时,是否区分大小写; + .参数 是否匹配多行, 逻辑型, 可空, 可以留空,默认为真,允许匹配多行; 如果本成员值为真,字符“^”不仅匹配目标文本的开头,而且匹配目标文本中换行符(字符(10),字符(13)或 #换行符)的后面;字符“$”不仅匹配目标文本的结尾,而且匹配目标文本中换行符的前面。否则字符“^”仅仅匹配目标文本的开头,“$”也仅仅匹配目标文本的结尾。 + .参数 是否全局匹配, 逻辑型, 可空, 可以留空,默认为真,全局匹配 + .参数 自动替换引号, 逻辑型, 可空, 可空。默认为不替换。说明:正则表达式文本为【formhash" value="7b4aa6c5】,这里面的引号处理起来很麻烦,直接把此参数设置为真,把"换成 #引号 再传进来就可以了,如:【formhash#引号 value=#引号7b4aa6c5】 + .局部变量 局_正则文本, 文本型 + + + 是否区分大小写 = 取反 (选择 (是否为空 (是否区分大小写), 假, 是否区分大小写)) + 是否匹配多行 = 选择 (是否为空 (是否匹配多行), 真, 是否匹配多行) + 是否全局匹配 = 选择 (是否为空 (是否全局匹配), 真, 是否全局匹配) + 正则.清除 () + 集_过度对象.清除 () + 正则.创建 (“VBScript.RegExp”, ) + 正则.写属性 (“IgnoreCase”, 是否区分大小写) ' 匹配时不区分大小写 + 正则.写属性 (“Multiline”, 是否匹配多行) ' 是否匹配多行 + 正则.写属性 (“Singleline”, 真) ' Singleline(单行模式) + 正则.写属性 (“Global”, 是否全局匹配) ' 是否全局匹配 + .判断开始 (自动替换引号) + 局_正则文本 = 子文本替换 (正则表达式文本, “#引号”, #引号, , , 真) + .默认 + 局_正则文本 = 正则表达式文本 + .判断结束 + 正则.写属性 (“Pattern”, 局_正则文本) + ' ----------------- + 集_被搜索的文本.赋值 (被搜索的文本, ) + 集_过度对象 = 正则.对象型方法 (“Execute”, 集_被搜索的文本) + ' .如果真 (取文本长度 (被搜索的文本) > 510000) + ' 输出调试文本 (“友情提醒:正则类 → 创建() 命令的参数二 → 被搜索的文本 的长度过长,可以会导致程序直接结束。”) + ' .如果真结束 + ' 集_过度对象 = 正则.对象型方法 (“Execute”, 被搜索的文本) + ' 集_被搜索的文本 = 被搜索的文本 + + 返回 (集_过度对象.是否为空 () = 假) + +.子程序 查看, , 公开, + 正则.查看 () + +.子程序 取正则文本, 文本型, 公开, 返回以文本形式表示的正则表达式。如果该对象尚未创建,则返回空文本。本命令为高级对象成员命令 + 返回 (选择 (正则.是否为空 (), “”, 正则.读文本属性 (“Pattern”, ))) + +.子程序 替换, 文本型, 公开, 替换在正则表达式查找中找到的文本 + .参数 用作替换的文本, 文本型, 可空, 用作替换的文本 + .局部变量 用作替换的文本_变体型, 变体型 + + 用作替换的文本_变体型.赋值 (用作替换的文本, ) + ' 返回 (编码_Unicode到Ansi (正则.通用方法 (“Replace”, 集_被搜索的文本, 用作替换的文本_变体型).取字节集 ())) + 返回 (正则.文本方法 (“Replace”, 集_被搜索的文本, 用作替换的文本_变体型)) + +.子程序 取匹配数量, 整数型, 公开, 取出该正则匹配到的数量 + 返回 (集_过度对象.读数值属性 (“Count”, )) + +.子程序 取匹配文本, 文本型, 公开, 取出该正则匹配到的文本 + .参数 匹配索引, 整数型, , 索引值从1开始 + .参数 起始位置, 整数型, 参考 可空, 可以被省略,提供参数数据时只能提供变量。该命令调用成功后,本参数存放取得的子文本在整个被搜索文本中的起始位置 + .局部变量 Match, 对象 + .局部变量 Value, 文本型 + + Match = 集_过度对象.读对象型属性 (“Item”, 匹配索引 - 1) + ' ---------------------- + Value = Match.读属性 (“Value”, ).取文本 () + .如果真 (是否为空 (起始位置) = 假) + 起始位置 = 寻找文本 (集_被搜索的文本.取文本 (), Value, Match.读数值属性 (“FirstIndex”, ), 选择 (正则.读属性 (“IgnoreCase”, ).取文本 () = “0”, 真, 假)) - 1 + .如果真结束 + 返回 (Value) + ' Value = Match.读文本属性 (“Value”, ) + ' .如果真 (是否为空 (起始位置) = 假) + ' 起始位置 = 寻找文本 (集_被搜索的文本, Value, Match.读数值属性 (“FirstIndex”, ), 选择 (正则.读文本属性 (“IgnoreCase”, ) = “0”, 真, 假)) - 1 + ' .如果真结束 + ' 返回 (Value) + +.子程序 取子匹配文本, 文本型, 公开, 取出该正则的子表达式匹配到的文本 + .参数 匹配索引, 整数型, , 索引值从1开始 + .参数 子表达式索引, 整数型, , 欲取其值的子表达式,该参数对应与正则表达式中的一个子表达式以圆括号"( )"为标记,索引从1开始 + .参数 起始位置, 整数型, 参考 可空, 可以被省略,提供参数数据时只能提供变量。该命令调用成功后,本参数存放取得的子文本在整个被搜索文本中的起始位置 + .局部变量 Match, 对象 + .局部变量 SubMatches, 对象 + .局部变量 value, 文本型 + + Match = 集_过度对象.读对象型属性 (“Item”, 匹配索引 - 1) + SubMatches = Match.读对象型属性 (“SubMatches”, ) + value = SubMatches.读属性 (“Item”, 子表达式索引 - 1).取文本 () + .如果真 (是否为空 (起始位置) = 假) + 起始位置 = 寻找文本 (集_被搜索的文本.取文本 (), value, Match.读数值属性 (“FirstIndex”, ), 选择 (正则.读属性 (“IgnoreCase”, ).取文本 () = “0”, 真, 假)) - 1 + ' 起始位置 = 寻找文本 (集_被搜索的文本, value, Match.读数值属性 (“FirstIndex”, ), 选择 (正则.读文本属性 (“IgnoreCase”, ) = “0”, 真, 假)) - 1 + .如果真结束 + 返回 (value) + +.子程序 取子匹配数量, 整数型, 公开, 取出该正则的子表达式匹配到的数量 + 返回 (集_过度对象.读对象型属性 (“Item”, 0).读对象型属性 (“SubMatches”, ).读数值属性 (“Count”, )) + diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\233\256\345\275\225.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\233\256\345\275\225.desc.json" new file mode 100644 index 0000000..0d9f8b4 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\233\256\345\275\225.desc.json" @@ -0,0 +1,5 @@ +{ + "ExpandedDirs": [ + "程序集" + ] +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/CQHTTP.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/CQHTTP.static.e.txt" new file mode 100644 index 0000000..1000162 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/CQHTTP.static.e.txt" @@ -0,0 +1,279 @@ +.版本 2 +.支持库 CommonSupport +.支持库 e2ee + +.程序集 CQHTTP +.子程序 group, , , 群消息,示例代码 + .参数 group_id, 文本型, , 群号 + .参数 message, 文本型, , 消息内容 + .参数 message_id, 文本型, , 消息 ID + .参数 card, 文本型, , 群名片/备注 + .参数 nickname, 文本型, , 昵称 + .参数 role, 文本型, , 角色,owner 或 admin 或 member + .参数 user_id, 文本型, , 发送者 QQ 号 + .参数 sub_type, 文本型, , 消息子类型(normal、anonymous、notice) + .局部变量 p, 整数型 + + .如果真 (读配置项 (群配置文件, group_id, “总开关”, “关”) = “关”) + 返回 () + .如果真结束 + + .如果真 (message = “”) + 返回 () + .如果真结束 + + p = 常用_无限传参 (2, user_id, group_id, message) + 线程池_消息.投递任务 (p) + + +.子程序 private, , , 私聊消息,示例代码 + .参数 message, 文本型, , 消息内容 + .参数 message_id, 文本型, , 消息 ID + .参数 nickname, 文本型, , 昵称 + .参数 user_id, 文本型, , 发送者 QQ 号 + .参数 sub_type, 文本型, , 消息子类型(friend、group、other) + .局部变量 p, 整数型 + + .如果真 (message = “”) + 返回 () + .如果真结束 + + p = 常用_无限传参 (1, user_id, “0”, message) + 线程池_消息.投递任务 (p) + + +.子程序 notice, , , 通知事件,示例代码 + .参数 notice_type, 文本型, , 通知类型 + .参数 name, 文本型, , 文件名 + .参数 size, 文本型, , 文件大小(字节数) + .参数 url, 文本型, , 文件链接 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , QQ 号 + .参数 sub_type, 文本型, , 事件子类型 + .参数 operator_id, 文本型, , 操作者 QQ 号 + .参数 duration, 文本型, , 禁言时长,单位秒 + .参数 message_id, 文本型, , 被撤回的消息 ID + + + +.子程序 request, , , 请求事件,示例代码 + .参数 request_type, 文本型, , 请求类型 + .参数 sub_type, 文本型, , 请求子类型 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , 发送请求的 QQ 号 + .参数 comment, 文本型, , 验证信息 + .参数 flag, 文本型, , 请求 flag,在调用处理请求的 API 时需要传入 + + + +.子程序 ws, , , ws客户端消息,示例代码 + .参数 msg, 文本型 + .局部变量 正则, 正则表达式类 + + 正则.创建 (“^\{.*\}$”, msg, , , , ) + + .如果真 (正则.取匹配数量 () = 0) + 日志 (msg) + + .如果真 (msg = “WS断开连接”) + _按钮_断开_被单击 () + + .如果真结束 + + .如果真结束 + + 返回 () + + +.子程序 消息线程 + .参数 p, 整数型 + .局部变量 type, 整数型 + .局部变量 user_id, 文本型 + .局部变量 group_id, 文本型 + .局部变量 message, 文本型 + .局部变量 正则, 正则表达式类 + + 常用_无限传参还原 (p, type, user_id, group_id, message) + + 正则.创建 (读配置项 (配置文件, “BOT”, “菜单”, “YSHELP”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, CQ.Image (“base64://” + Base64编码 (读入文件 (读配置项 (配置文件, “BOT”, “菜单路径”, )), ), , “ 0”), 假) + + .默认 + CQ.发送群消息 (group_id, CQ.Image (“base64://” + Base64编码 (读入文件 (读配置项 (配置文件, “BOT”, “菜单路径”, )), ), , “0”), 假) + + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “绑定”, “YS绑定/(.+)/(.+)/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .如果真 (type = 1) + .判断开始 (正则.取子匹配文本 (1, 3) = “CN”) + 绑定_添加 (user_id, 正则.取子匹配文本 (1, 1), 正则.取子匹配文本 (1, 2), 真) + .判断 (正则.取子匹配文本 (1, 3) = “OS”) + 绑定_添加 (user_id, 正则.取子匹配文本 (1, 1), 正则.取子匹配文本 (1, 2), 假) + .默认 + CQ.发送私聊消息 (user_id, “服区错误” + #换行符 + “国服和B服填CN,国际服填OS”, 假) + .判断结束 + + .如果真结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “删绑定”, “YS解绑/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .如果真 (type = 1) + .判断开始 (取反 (绑定_是否存在 (user_id))) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + + .默认 + 绑定_删除 (user_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + + .如果真结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “读绑定”, “YS绑定”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + CQ.发送私聊消息 (user_id, 绑定_读所有Tag (user_id), 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + #换行符 + 绑定_读所有Tag (user_id), 假) + .判断结束 + + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “实时便笺”, “YS便笺/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 实时便笺 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1)) + .默认 + 实时便笺 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “数据总览”, “YS数据/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 数据总览 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1)) + .默认 + 数据总览 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “手札”, “YS手札/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 手札 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1)) + .默认 + 手札 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “签到”, “YS签到/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 签到 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1)) + .默认 + 签到 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “本期深渊”, “YS本期深渊/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 深渊 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1), “1”) + .默认 + 深渊 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1), “1”) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “上期深渊”, “YS上期深渊/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 深渊 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1), “2”) + .默认 + 深渊 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1), “2”) + .判断结束 + 返回 () + .如果真结束 + + 正则.创建 (读配置项 (配置文件, “BOT”, “角色”, “YS角色/(.+)”), message, 假) + .如果真 (正则.取匹配文本 (1) = message) + .判断开始 (取反 (绑定_是否存在 (user_id))) + .判断开始 (type = 1) + CQ.发送私聊消息 (user_id, “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .默认 + CQ.发送群消息 (group_id, CQ.At (user_id) + “你还没有绑定” + #换行符 + “发送 YSHELP 获取帮助”, 假) + .判断结束 + + .判断 (type = 1) + 角色 (“1”, user_id, “0”, 正则.取子匹配文本 (1, 1)) + .默认 + 角色 (“2”, user_id, group_id, 正则.取子匹配文本 (1, 1)) + .判断结束 + 返回 () + .如果真结束 + + + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Genshin.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Genshin.static.e.txt" new file mode 100644 index 0000000..24435b0 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Genshin.static.e.txt" @@ -0,0 +1,1065 @@ +.版本 2 +.支持库 e2ee + +.程序集 Genshin +.子程序 _get_nickname, 文本型 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 i, 整数型 + .局部变量 nickname, 文本型 + + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_UserGameRolesByCookie (绑定_读CN (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + + .判断开始 (绑定_读CN (QQ, Tag)) + + .计次循环首 (data.取数量 (“//list”), i) + .如果真 (data.取文本 (“//list[” + 到文本 (i) + “].game_biz”) = “hk4e_cn”) + nickname = data.取文本 (“//list[” + 到文本 (i) + “].nickname”) + 跳出循环 () + .如果真结束 + + .计次循环尾 () + 返回 (nickname) + + .默认 + .计次循环首 (data.取数量 (“//list”), i) + .如果真 (data.取文本 (“//list[” + 到文本 (i) + “].game_biz”) = “hk4e_global”) + nickname = data.取文本 (“//list[” + 到文本 (i) + “].nickname”) + 跳出循环 () + .如果真结束 + + .计次循环尾 () + 返回 (nickname) + .判断结束 + + .默认 + 返回 (“”) + .判断结束 + + +.子程序 实时便笺 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 i, 整数型 + .局部变量 正则, 正则表达式类 + .局部变量 iconurl, 文本型 + .局部变量 iconfile, 文本型 + .局部变量 c, 网站客户端 + .局部变量 树脂_现有, 文本型 + .局部变量 树脂_上限, 文本型 + .局部变量 树脂_时间, 文本型 + .局部变量 每日_完成, 文本型 + .局部变量 每日_上限, 文本型 + .局部变量 每日_奖励, 文本型 + .局部变量 周本_现有, 文本型 + .局部变量 周本_上限, 文本型 + .局部变量 派遣_现有, 文本型 + .局部变量 派遣_上限, 文本型 + .局部变量 派遣_状态, 文本型 + .局部变量 派遣_时间, 文本型 + .局部变量 派遣_人物, 文本型 + .局部变量 str, 文本型, , "0" + .局部变量 tmp, 文本型 + .局部变量 hb, 内存画板 + .局部变量 img, 图片对象 + .局部变量 b64, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[实时便笺] ( ” + QQ + “ ) | 线程启动 ”) + .默认 + 日志 (“[实时便笺] ( ” + Group + “ | ” + QQ + “ ) | 线程启动 ”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_dailyNote (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + 树脂_现有 = data.取文本 (“//current_resin”) + 树脂_上限 = data.取文本 (“//max_resin”) + .判断开始 (data.取整数 (“//resin_recovery_time”) > 0) + 树脂_时间 = 时间_秒到时分秒格式 (data.取整数 (“//resin_recovery_time”), “h:m:s”, 真) + .默认 + 树脂_时间 = “已溢出” + .判断结束 + + 每日_完成 = data.取文本 (“//finished_task_num”) + 每日_上限 = data.取文本 (“//total_task_num”) + .判断开始 (data.取逻辑值 (“//is_extra_task_reward_received”)) + 每日_奖励 = “已领取” + .默认 + 每日_奖励 = “未领取” + .判断结束 + + 周本_现有 = data.取文本 (“//remain_resin_discount_num”) + 周本_上限 = data.取文本 (“//resin_discount_num_limit”) + 派遣_现有 = data.取文本 (“//current_expedition_num”) + 派遣_上限 = data.取文本 (“//max_expedition_num”) + + tmp = “ 树脂 : ” + 树脂_现有 + “/” + 树脂_上限 + “ | 恢复时间 : ” + 树脂_时间 + “ ” + 加入成员 (str, tmp) + tmp = “ 每日 : ” + 每日_完成 + “/” + 每日_上限 + “ | NPC奖励 : ” + 每日_奖励 + “ ” + 加入成员 (str, tmp) + tmp = “ 派遣 : ” + 派遣_现有 + “/” + 派遣_上限 + “ | 周本半价 : ” + 周本_现有 + “/” + 周本_上限 + “ ” + 加入成员 (str, tmp) + + .计次循环首 (data.取数量 (“//expeditions”), i) + iconurl = data.取文本 (“//expeditions[” + 到文本 (i) + “].avatar_side_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + + .判断开始 (data.取文本 (“//expeditions[” + 到文本 (i) + “].status”) = “Finished”) + 派遣_状态 = “已完成” + 派遣_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + + tmp = “ ” + 派遣_人物 + “ | ” + 派遣_状态 + “ ” + 加入成员 (str, tmp) + + .默认 + 派遣_状态 = “剩余时间” + 派遣_时间 = 时间_秒到时分秒格式 (data.取整数 (“//expeditions[” + 到文本 (i) + “].remained_time”), “h:m:s”, 真) + 派遣_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + + tmp = “ ” + 派遣_人物 + “ | ” + 派遣_状态 + “ : ” + 派遣_时间 + “ ” + 加入成员 (str, tmp) + + .判断结束 + + .计次循环尾 () + + tmp = 文本制表_表头 (取数组成员数 (str), 2, str, “ / 实时便笺 \ ” + _get_nickname (QQ, Tag) + “ / ” + 绑定_读UID (QQ, Tag) + “ \ ”) + str = 分割文本 (tmp, #换行符, ) + + hb.创建 (1, 1, #白色, ) + hb.字体属性 (“等距更纱黑体 SC”, 12, , , , , , , ) + hb.置画板尺寸 (hb.取文本宽度 (str [1]), hb.取文本高度 (str [1]) × 取数组成员数 (str)) + hb.置写出位置 (0, 0, 假) + hb.写出 (tmp) + + .计次循环首 (data.取数量 (“//expeditions”), i) + iconurl = data.取文本 (“//expeditions[” + 到文本 (i) + “].avatar_side_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_side_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + hb.画图片 (hb.载入图片文件 (iconfile), 5, 125 + i × 40, 40, 40, ) + hb.卸载图片 () + + .计次循环尾 () + + img.加载数据 (hb.取图片 ()) + b64 = Base64编码 (img.取出图片数据 (0), ) + hb.销毁 () + img.释放 () + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, CQ.Image (“base64://” + b64, , “0”), 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + CQ.Image (“base64://” + b64, , “0”), 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_dailyNote] ” + res, 假) + 日志 (“[实时便笺] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_dailyNote] ” + res, 假) + 日志 (“[实时便笺] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + +.子程序 数据总览 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 i, 整数型 + .局部变量 活跃天数, 文本型 + .局部变量 成就达成数, 文本型 + .局部变量 角色获得数, 文本型 + .局部变量 解锁传送点, 文本型 + .局部变量 风神瞳, 文本型 + .局部变量 岩神瞳, 文本型 + .局部变量 雷神瞳, 文本型 + .局部变量 解锁秘境, 文本型 + .局部变量 深境螺旋, 文本型 + .局部变量 华丽宝箱, 文本型 + .局部变量 珍贵宝箱, 文本型 + .局部变量 精致宝箱, 文本型 + .局部变量 普通宝箱, 文本型 + .局部变量 奇馈宝箱, 文本型 + .局部变量 str, 文本型, , "0" + .局部变量 tmp, 文本型 + .局部变量 hb, 内存画板 + .局部变量 img, 图片对象 + .局部变量 世界_名称, 文本型 + .局部变量 世界_等级, 文本型 + .局部变量 世界_探索度, 文本型 + .局部变量 壶_等级, 文本型 + .局部变量 壶_仙力, 文本型 + .局部变量 壶_获得摆设, 文本型 + .局部变量 壶_访客, 文本型 + .局部变量 b64, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[数据总览] ( ” + QQ + “ ) | 线程启动”) + .默认 + 日志 (“[数据总览] ( ” + Group + “ | ” + QQ + “ ) | 线程启动”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_user_stats (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + 活跃天数 = data.取文本 (“//stats.active_day_number”) + 成就达成数 = data.取文本 (“//stats.achievement_number”) + 角色获得数 = data.取文本 (“//stats.avatar_number”) + 解锁传送点 = data.取文本 (“//stats.way_point_number”) + 风神瞳 = data.取文本 (“//stats.anemoculus_number”) + 岩神瞳 = data.取文本 (“//stats.geoculus_number”) + 雷神瞳 = data.取文本 (“//stats.electroculus_number”) + 解锁秘境 = data.取文本 (“//stats.domain_number”) + 深境螺旋 = data.取文本 (“//stats.spiral_abyss”) + 华丽宝箱 = data.取文本 (“//stats.luxurious_chest_number”) + 珍贵宝箱 = data.取文本 (“//stats.precious_chest_number”) + 精致宝箱 = data.取文本 (“//stats.exquisite_chest_number”) + 普通宝箱 = data.取文本 (“//stats.common_chest_number”) + 奇馈宝箱 = data.取文本 (“//stats.magic_chest_number”) + + tmp = “ 活跃天数 : ” + 活跃天数 + “ | 成就达成数 : ” + 成就达成数 + “ | 角色获得数 : ” + 角色获得数 + “ | 解锁传送点 : ” + 解锁传送点 + “ | 深境螺旋 : ” + 深境螺旋 + “ ” + 加入成员 (str, tmp) + tmp = “ 风神瞳 : ” + 风神瞳 + “ | 岩神瞳 : ” + 岩神瞳 + “ | 雷神瞳 : ” + 雷神瞳 + “ | \\\ | 解锁秘境 : ” + 解锁秘境 + “ ” + 加入成员 (str, tmp) + tmp = “ 华丽宝箱 : ” + 华丽宝箱 + “ | 珍贵宝箱 : ” + 珍贵宝箱 + “ | 精致宝箱 : ” + 精致宝箱 + “ | 普通宝箱 : ” + 普通宝箱 + “ | 奇馈宝箱 : ” + 奇馈宝箱 + “ ” + 加入成员 (str, tmp) + + tmp = “ | | | | ” + 加入成员 (str, tmp) + + + .计次循环首 (data.取数量 (“//world_explorations”), i) + 世界_名称 = data.取文本 (“//world_explorations[” + 到文本 (i) + “].name”) + 世界_等级 = data.取文本 (“//world_explorations[” + 到文本 (i) + “].level”) + 世界_探索度 = _到百分比 (data.取文本 (“//world_explorations[” + 到文本 (i) + “].exploration_percentage”)) + + tmp = “ ” + 世界_名称 + “ | 城市声望 : ” + 世界_等级 + “ | 探索度 : ” + 世界_探索度 + .判断开始 (取反 (data.是否存在 (“//world_explorations[” + 到文本 (i) + “].offerings[1].name”))) + tmp = tmp + “ | \\\ | \\\ ” + + .默认 + tmp = tmp + “ | ” + data.取文本 (“//world_explorations[” + 到文本 (i) + “].offerings[1].name”) + “ : ” + data.取文本 (“//world_explorations[” + 到文本 (i) + “].offerings[1].level”) + “ 级” + “ | \\\ ” + + .判断结束 + 加入成员 (str, tmp) + + .计次循环尾 () + + .如果真 (data.是否存在 (“//homes[1].level”)) + 壶_等级 = data.取文本 (“//homes[1].level”) + 壶_仙力 = data.取文本 (“//homes[1].comfort_num”) + 壶_获得摆设 = data.取文本 (“//homes[1].item_num”) + 壶_访客 = data.取文本 (“//homes[1].visit_num”) + tmp = “ 尘歌壶 | 信任等级 : ” + 壶_等级 + “ | 最高仙力 : ” + 壶_仙力 + “ | 获得摆设 : ” + 壶_获得摆设 + “ | 历史访客 : ” + 壶_访客 + “ ” + 加入成员 (str, tmp) + .如果真结束 + + + tmp = 文本制表_表头 (取数组成员数 (str), 5, str, “ / 数据总览 \ ” + _get_nickname (QQ, Tag) + “ / ” + 绑定_读UID (QQ, Tag) + “ \ ”) + str = 分割文本 (tmp, #换行符, ) + + hb.创建 (1, 1, #白色, ) + hb.字体属性 (“等距更纱黑体 SC”, 12, , , , , , , ) + hb.置画板尺寸 (hb.取文本宽度 (str [1]), hb.取文本高度 (str [1]) × 取数组成员数 (str)) + hb.置写出位置 (0, 0, 假) + hb.写出 (tmp) + + img.加载数据 (hb.取图片 ()) + b64 = Base64编码 (img.取出图片数据 (0), ) + hb.销毁 () + img.释放 () + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, CQ.Image (“base64://” + b64, , “0”), 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + CQ.Image (“base64://” + b64, , “0”), 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_user_stats] ” + res, 假) + 日志 (“[数据总览] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_user_stats] ” + res, 假) + 日志 (“[数据总览] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + +.子程序 手札 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 i, 整数型 + .局部变量 今日原石, 文本型 + .局部变量 今日摩拉, 文本型 + .局部变量 本月原石, 文本型 + .局部变量 本月摩拉, 文本型 + .局部变量 str, 文本型, , "0" + .局部变量 tmp, 文本型 + .局部变量 hb, 内存画板 + .局部变量 img, 图片对象 + .局部变量 b64, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[手札] ( ” + QQ + “ ) | 线程启动”) + .默认 + 日志 (“[手札] ( ” + Group + “ | ” + QQ + “ ) | 线程启动”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_monthInfo (绑定_读UID (QQ, Tag), “0”) + + .判断开始 (data.从JSON载入 (res, , , )) + 今日原石 = data.取文本 (“//day_data.current_primogems”) + 今日摩拉 = data.取文本 (“//day_data.current_mora”) + 本月原石 = data.取文本 (“//month_data.current_primogems”) + 本月摩拉 = data.取文本 (“//month_data.current_mora”) + + tmp = “ 今日原石 : ” + 今日原石 + “ | 今日摩拉 : ” + 今日摩拉 + “ ” + 加入成员 (str, tmp) + tmp = “ 本月原石 : ” + 本月原石 + “ | 本月摩拉 : ” + 本月摩拉 + “ ” + 加入成员 (str, tmp) + tmp = “ 原石组成 | --- ” + 加入成员 (str, tmp) + + .计次循环首 (data.取数量 (“//month_data.group_by”), i) + tmp = “ ” + data.取文本 (“//month_data.group_by[” + 到文本 (i) + “].action”) + “ | ” + data.取文本 (“//month_data.group_by[” + 到文本 (i) + “].num”) + “ ( ” + data.取文本 (“//month_data.group_by[” + 到文本 (i) + “].percent”) + “% ) ” + 加入成员 (str, tmp) + + .计次循环尾 () + + tmp = 文本制表_表头 (取数组成员数 (str), 2, str, “ / 旅行者札记 \ ” + _get_nickname (QQ, Tag) + “ / ” + 绑定_读UID (QQ, Tag) + “ \ ”) + str = 分割文本 (tmp, #换行符, ) + + hb.创建 (1, 1, #白色, ) + hb.字体属性 (“等距更纱黑体 SC”, 12, , , , , , , ) + hb.置画板尺寸 (hb.取文本宽度 (str [1]), hb.取文本高度 (str [1]) × 取数组成员数 (str)) + hb.置写出位置 (0, 0, 假) + hb.写出 (tmp) + + img.加载数据 (hb.取图片 ()) + b64 = Base64编码 (img.取出图片数据 (0), ) + hb.销毁 () + img.释放 () + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, CQ.Image (“base64://” + b64, , “0”), 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + CQ.Image (“base64://” + b64, , “0”), 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_monthInfo_CN] ” + res, 假) + 日志 (“[手札] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_monthInfo_CN] ” + res, 假) + 日志 (“[手札] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + +.子程序 签到 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 i, 整数型 + .局部变量 signinHome, 存取键值表 + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 签到物品, 文本型 + .局部变量 物品数量, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[签到] ( ” + QQ + “ ) | 线程启动”) + .默认 + 日志 (“[签到] ( ” + Group + “ | ” + QQ + “ ) | 线程启动”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + + gs.置Cookie (绑定_读CK (QQ, Tag)) + + .判断开始 (绑定_读CN (QQ, Tag)) + res = gs.get_signinInfo_CN (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + + .判断开始 (取反 (data.取逻辑值 (“//is_sign”))) + signinHome.从JSON载入 (gs.get_signinHome_CN (), , , ) + res = gs.get_sign_CN (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + res = gs.get_signinInfo_CN (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + 签到物品 = signinHome.取文本 (“//awards[” + data.取文本 (“//total_sign_day”) + “].name”) + 物品数量 = signinHome.取文本 (“//awards[” + data.取文本 (“//total_sign_day”) + “].cnt”) + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, “签到成功! 本月累计签到 ” + data.取文本 (“//total_sign_day”) + “天” + #换行符 + “获得 : ” + 签到物品 + “ x” + 物品数量, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “签到成功! 本月累计签到 ” + data.取文本 (“//total_sign_day”) + “天” + #换行符 + “获得 : ” + 签到物品 + “ x” + 物品数量, 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_signinInfo_CN] ” + res, 假) + 日志 (“[get_signinInfo_CN] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_signinInfo_CN] ” + res, 假) + 日志 (“[get_signinInfo_CN] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_sign_CN] ” + res, 假) + 日志 (“[get_sign_CN] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_sign_CN] ” + res, 假) + 日志 (“[get_sign_CN] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “今日已签到!”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “今日已签到!”, 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_signinInfo_CN] ” + res, 假) + 日志 (“[get_signinInfo_CN] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_signinInfo_CN] ” + res, 假) + 日志 (“[get_signinInfo_CN] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + + .默认 + res = gs.get_signinInfo_OS () + + .判断开始 (data.从JSON载入 (res, , , )) + + .判断开始 (取反 (data.取逻辑值 (“//is_sign”))) + signinHome.从JSON载入 (gs.get_signinHome_OS (), , , ) + res = gs.get_sign_OS () + + .判断开始 (data.从JSON载入 (res, , , )) + res = gs.get_signinInfo_OS () + + .判断开始 (data.从JSON载入 (res, , , )) + 签到物品 = signinHome.取文本 (“//awards[” + data.取文本 (“//total_sign_day”) + “].name”) + 物品数量 = signinHome.取文本 (“//awards[” + data.取文本 (“//total_sign_day”) + “].cnt”) + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, “签到成功!获得 : ” + 签到物品 + “ x” + 物品数量, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “签到成功!获得 : ” + 签到物品 + “ x” + 物品数量, 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_signinInfo_OS] ” + res, 假) + 日志 (“[get_signinInfo_OS] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_signinInfo_OS] ” + res, 假) + 日志 (“[get_signinInfo_OS] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_sign_OS] ” + res, 假) + 日志 (“[get_sign_OS] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_sign_OS] ” + res, 假) + 日志 (“[get_sign_OS] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “今日已签到!”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “今日已签到!”, 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_signinInfo_OS] ” + res, 假) + 日志 (“[get_signinInfo_OS] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_signinInfo_OS] ” + res, 假) + 日志 (“[get_signinInfo_OS] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + +.子程序 深渊 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .参数 schedule_type, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 最深抵达, 文本型 + .局部变量 战斗次数, 文本型 + .局部变量 胜利次数, 文本型 + .局部变量 本期渊星, 文本型 + .局部变量 str, 文本型, , "0" + .局部变量 tmp, 文本型 + .局部变量 正则, 正则表达式类 + .局部变量 iconurl, 文本型 + .局部变量 iconfile, 文本型 + .局部变量 c, 网站客户端 + .局部变量 最强一击_人物, 文本型 + .局部变量 最强一击_数值, 文本型 + .局部变量 最强一击_图片, 文本型 + .局部变量 最强肉盾_人物, 文本型 + .局部变量 最强肉盾_数值, 文本型 + .局部变量 最强肉盾_图片, 文本型 + .局部变量 元素技能_人物, 文本型 + .局部变量 元素技能_数值, 文本型 + .局部变量 元素技能_图片, 文本型 + .局部变量 元素爆发_人物, 文本型 + .局部变量 元素爆发_数值, 文本型 + .局部变量 元素爆发_图片, 文本型 + .局部变量 i, 整数型 + .局部变量 ii, 整数型 + .局部变量 iii, 整数型 + .局部变量 iiii, 整数型 + .局部变量 层数, 文本型 + .局部变量 间数, 文本型 + .局部变量 星数_总, 文本型 + .局部变量 星数_间, 文本型 + .局部变量 人物, 文本型 + .局部变量 长度, 整数型 + .局部变量 时间, 文本型 + .局部变量 总览, 文本型 + .局部变量 详细, 文本型 + .局部变量 总览画板, 内存画板 + .局部变量 详细画板, 内存画板 + .局部变量 左边, 整数型 + .局部变量 顶边, 整数型 + .局部变量 img, 图片对象 + .局部变量 b64, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[深渊] ( ” + QQ + “ ) | 线程启动”) + .默认 + 日志 (“[深渊] ( ” + Group + “ | ” + QQ + “ ) | 线程启动”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_spiralAbyss (绑定_读UID (QQ, Tag), schedule_type) + + .判断开始 (data.从JSON载入 (res, , , )) + .如果真 (取反 (data.取逻辑值 (“//is_unlock”))) + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, “该玩家未挑战本期深渊”, 假) + 日志 (“[深渊] | 该玩家未挑战本期深渊 ( ” + QQ + “ )”) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “该玩家未挑战本期深渊”, 假) + 日志 (“[深渊] | 该玩家未挑战本期深渊 ( ” + Group + “ | ” + QQ + “ )”) + .判断结束 + 返回 () + .如果真结束 + + 最深抵达 = data.取文本 (“//max_floor”) + 战斗次数 = data.取文本 (“//total_battle_times”) + 胜利次数 = data.取文本 (“//total_win_times”) + 本期渊星 = data.取文本 (“//total_star”) + + tmp = “ 最深抵达 : ” + 最深抵达 + “ | 战斗次数 : ” + 战斗次数 + “ | 胜利次数 : ” + 胜利次数 + “ | 本期渊星 : ” + 本期渊星 + “ ” + 加入成员 (str, tmp) + + iconurl = data.取文本 (“//damage_rank[1].avatar_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_side_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 最强一击_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + 最强一击_数值 = data.取文本 (“//damage_rank[1].value”) + 最强一击_图片 = iconfile + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + tmp = “ 最强一击 : ” + 最强一击_数值 + #换行符 + 取重复文本 (22, “ ”) + #换行符 + 取重复文本 (10, “ ”) + 最强一击_人物 + “ |” + + iconurl = data.取文本 (“//take_damage_rank[1].avatar_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_side_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 最强肉盾_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + 最强肉盾_数值 = data.取文本 (“//take_damage_rank[1].value”) + 最强肉盾_图片 = iconfile + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + tmp = tmp + “ 最强肉盾 : ” + 最强肉盾_数值 + #换行符 + 取重复文本 (22, “ ”) + #换行符 + 取重复文本 (10, “ ”) + 最强肉盾_人物 + “ |” + + iconurl = data.取文本 (“//normal_skill_rank[1].avatar_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_side_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 元素技能_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + 元素技能_数值 = data.取文本 (“//normal_skill_rank[1].value”) + 元素技能_图片 = iconfile + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + tmp = tmp + “ 元素技能释放 : ” + 元素技能_数值 + #换行符 + 取重复文本 (22, “ ”) + #换行符 + 取重复文本 (10, “ ”) + 元素技能_人物 + “ |” + + iconurl = data.取文本 (“//energy_skill_rank[1].avatar_icon”) + 正则.创建 (“https://.+/game_record/genshin/character_side_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_side_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 元素爆发_人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_Side_”, “”, , , 真) + 元素爆发_数值 = data.取文本 (“//energy_skill_rank[1].value”) + 元素爆发_图片 = iconfile + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + tmp = tmp + “ 元素爆发释放 : ” + 元素爆发_数值 + #换行符 + 取重复文本 (22, “ ”) + #换行符 + 取重复文本 (10, “ ”) + 元素爆发_人物 + “ ” + + 加入成员 (str, tmp) + + 总览 = 文本制表_表头 (取数组成员数 (str), 4, str, “ / 本期深渊 \ ” + _get_nickname (QQ, Tag) + “ / ” + 绑定_读UID (QQ, Tag) + “ \ ”) + str = 分割文本 (总览, #换行符, ) + + 总览画板.创建 (1, 1, #白色, ) + 总览画板.字体属性 (“等距更纱黑体 SC”, 12, , , , , , , ) + 总览画板.置画板尺寸 (总览画板.取文本宽度 (str [1]), 总览画板.取文本高度 (str [1]) × 取数组成员数 (str)) + 总览画板.置写出位置 (0, 0, 假) + 总览画板.写出 (总览) + + 总览画板.画图片 (总览画板.载入图片文件 (最强一击_图片), 总览画板.取文本宽度 (取重复文本 (3, “ ”)), 总览画板.取文本高度 (“ ”) × 5 + 10, 58, 58) + 总览画板.画图片 (总览画板.载入图片文件 (最强肉盾_图片), 总览画板.取文本宽度 (取重复文本 (26, “ ”)), 总览画板.取文本高度 (“ ”) × 5 + 10, 58, 58) + 总览画板.画图片 (总览画板.载入图片文件 (元素技能_图片), 总览画板.取文本宽度 (取重复文本 (49, “ ”)), 总览画板.取文本高度 (“ ”) × 5 + 10, 58, 58) + 总览画板.画图片 (总览画板.载入图片文件 (元素爆发_图片), 总览画板.取文本宽度 (取重复文本 (72, “ ”)), 总览画板.取文本高度 (“ ”) × 5 + 10, 58, 58) + 总览画板.卸载图片 () + + + .计次循环首 (data.取数量 (“//floors”), i) + 层数 = data.取文本 (“//floors[” + 到文本 (i) + “].index”) + 星数_总 = data.取文本 (“//floors[” + 到文本 (i) + “].star”) + + 清除数组 (str) + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels”), ii) + 间数 = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].index”) + 星数_间 = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].star”) + 时间 = 时间_时间戳转文本 (data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[1].timestamp”), 2) + + tmp = “ ” + 层数 + “-” + 间数 + “ | 渊星 : ” + 星数_间 + “/3” + 取重复文本 (10, “ ”) + 时间 + 加入成员 (str, tmp) + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles”), iii) + + .判断开始 (iii = 1) + tmp = “ 上半 |” + #换行符 + #换行符 + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[1].avatars”), iiii) + iconurl = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[1].avatars[” + 到文本 (iiii) + “].icon”) + 正则.创建 (“https://.+/game_record/genshin/character_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_”, “”, , , 真) + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + .判断开始 (iiii = 1) + 长度 = 取文本长度 (人物) + tmp = tmp + 取重复文本 (3, “ ”) + 人物 + + .默认 + 长度 = 12 - 长度 + tmp = tmp + 取重复文本 (长度, “ ”) + 人物 + 长度 = 取文本长度 (人物) + .判断结束 + + .计次循环尾 () + tmp = tmp + “ ” + 加入成员 (str, tmp) + + .判断 (iii = 2) + tmp = “ 下半 |” + #换行符 + #换行符 + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[2].avatars”), iiii) + iconurl = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[2].avatars[” + 到文本 (iiii) + “].icon”) + 正则.创建 (“https://.+/game_record/genshin/character_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_”, “”, , , 真) + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + .判断开始 (iiii = 1) + 长度 = 取文本长度 (人物) + tmp = tmp + 取重复文本 (3, “ ”) + 人物 + + .默认 + 长度 = 12 - 长度 + tmp = tmp + 取重复文本 (长度, “ ”) + 人物 + 长度 = 取文本长度 (人物) + .判断结束 + + .计次循环尾 () + tmp = tmp + “ ” + 加入成员 (str, tmp) + .默认 + + .判断结束 + + .计次循环尾 () + .计次循环尾 () + + .判断开始 (data.取数量 (“//floors”) = i) + 详细 = 详细 + 文本制表_表头 (取数组成员数 (str), 2, str, “ / 本期深渊 \ 第” + 层数 + “层 / 渊星 : ” + 星数_总 + “ \ ”) + .默认 + 详细 = 详细 + 文本制表_表头 (取数组成员数 (str), 2, str, “ / 本期深渊 \ 第” + 层数 + “层 / 渊星 : ” + 星数_总 + “ \ ”) + #换行符 + .判断结束 + + .计次循环尾 () + str = 分割文本 (详细, #换行符, ) + + 详细画板.创建 (1, 1, #白色, ) + 详细画板.字体属性 (“等距更纱黑体 SC”, 12, , , , , , , ) + 详细画板.置画板尺寸 (详细画板.取文本宽度 (str [1]), 详细画板.取文本高度 (str [1]) × 取数组成员数 (str)) + 详细画板.置写出位置 (0, 0, 假) + 详细画板.写出 (详细) + + + .计次循环首 (data.取数量 (“//floors”), i) + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels”), ii) + + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles”), iii) + + .判断开始 (iii = 1) + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[1].avatars”), iiii) + iconurl = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[1].avatars[” + 到文本 (iiii) + “].icon”) + 正则.创建 (“https://.+/game_record/genshin/character_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_”, “”, , , 真) + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + .判断开始 (iiii = 1) + 左边 = 详细画板.取文本宽度 (取重复文本 (13, “ ”)) + 顶边 = 顶边 + 详细画板.取文本高度 (“ ”) × 5 - 8 + + 详细画板.画图片 (详细画板.载入图片文件 (iconfile), 左边, 顶边, 48, 48) + + 长度 = 取文本长度 (人物) + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + + .默认 + 长度 = 12 - 长度 + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + + 详细画板.画图片 (详细画板.载入图片文件 (iconfile), 左边, 顶边, 48, 48) + + 长度 = 取文本长度 (人物) + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + .判断结束 + + .计次循环尾 () + + + .判断 (iii = 2) + .计次循环首 (data.取数量 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[2].avatars”), iiii) + iconurl = data.取文本 (“//floors[” + 到文本 (i) + “].levels[” + 到文本 (ii) + “].battles[2].avatars[” + 到文本 (iiii) + “].icon”) + 正则.创建 (“https://.+/game_record/genshin/character_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + 人物 = 子文本替换 (正则.取子匹配文本 (1, 1), “UI_AvatarIcon_”, “”, , , 真) + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + .判断开始 (iiii = 1) + 左边 = 详细画板.取文本宽度 (取重复文本 (13, “ ”)) + 顶边 = 顶边 + 详细画板.取文本高度 (“ ”) × 4 + + 详细画板.画图片 (详细画板.载入图片文件 (iconfile), 左边, 顶边, 48, 48) + + 长度 = 取文本长度 (人物) + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + + .默认 + 长度 = 12 - 长度 + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + + 详细画板.画图片 (详细画板.载入图片文件 (iconfile), 左边, 顶边, 48, 48) + + 长度 = 取文本长度 (人物) + 左边 = 左边 + 详细画板.取文本宽度 (取重复文本 (长度, “ ”)) + + .判断结束 + + .计次循环尾 () + + .默认 + + .判断结束 + + .计次循环尾 () + 顶边 = 顶边 + 详细画板.取文本高度 (“ ”) + 8 + + .计次循环尾 () + 顶边 = 顶边 + 详细画板.取文本高度 (“ ”) × 3 + + .计次循环尾 () + + 顶边 = 总览画板.取画板高度 () + 总览画板.置画板尺寸 (, 总览画板.取画板高度 () + 详细画板.取画板高度 ()) + 总览画板.画图片 (总览画板.载入图片数据 (详细画板.取图片 ()), 0, 顶边, , , 0) + + img.加载数据 (总览画板.取图片 ()) + + b64 = Base64编码 (img.取出图片数据 (0), ) + 总览画板.销毁 () + 详细画板.销毁 () + img.释放 () + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, CQ.Image (“base64://” + b64, , “0”), 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + CQ.Image (“base64://” + b64, , “0”), 假) + .判断结束 + + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_spiralAbyss] ” + res, 假) + 日志 (“[深渊] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_spiralAbyss] ” + res, 假) + 日志 (“[深渊] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + +.子程序 角色 + .参数 Type, 文本型 + .参数 QQ, 文本型 + .参数 Group, 文本型 + .参数 Tag, 文本型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 i, 整数型 + .局部变量 ii, 整数型 + .局部变量 名字, 文本型 + .局部变量 等级, 文本型 + .局部变量 好感, 文本型 + .局部变量 命座, 文本型 + .局部变量 左边, 整数型 + .局部变量 顶边, 整数型 + .局部变量 正则, 正则表达式类 + .局部变量 iconurl, 文本型 + .局部变量 iconfile, 文本型 + .局部变量 c, 网站客户端 + .局部变量 str, 文本型, , "0" + .局部变量 tmp, 文本型 + .局部变量 hb, 内存画板 + .局部变量 img, 图片对象 + .局部变量 b64, 文本型 + + .判断开始 (Type = “1”) + 日志 (“[角色] ( ” + QQ + “ ) | 线程启动”) + .默认 + 日志 (“[角色] ( ” + Group + “ | ” + QQ + “ ) | 线程启动”) + .判断结束 + + .判断开始 (线程锁.尝试进入_文本 (QQ)) + gs.置Cookie (绑定_读CK (QQ, Tag)) + res = gs.get_user_stats (绑定_读UID (QQ, Tag)) + + .判断开始 (data.从JSON载入 (res, , , )) + + .计次循环首 (data.取数量 (“//avatars”), i) + 名字 = data.取文本 (“//avatars[” + 到文本 (i) + “].name”) + 等级 = data.取文本 (“//avatars[” + 到文本 (i) + “].level”) + 好感 = data.取文本 (“//avatars[” + 到文本 (i) + “].fetter”) + 命座 = data.取文本 (“//avatars[” + 到文本 (i) + “].actived_constellation_num”) + + .判断开始 (i % 5 = 0) + tmp = tmp + #换行符 + #换行符 + “ ” + 名字 + “ ” + #换行符 + “ 等级 : ” + 等级 + “ ” + #换行符 + “ 好感 : ” + 好感 + “ ” + #换行符 + “ 命座 : ” + 命座 + “ ” + 加入成员 (str, tmp) + tmp = “” + + .默认 + tmp = tmp + #换行符 + #换行符 + “ ” + 名字 + “ ” + #换行符 + “ 等级 : ” + 等级 + “ ” + #换行符 + “ 好感 : ” + 好感 + “ ” + #换行符 + “ 命座 : ” + 命座 + “ |” + + .判断结束 + + .如果真 (data.取数量 (“//avatars”) = i) + + .判断开始 (i % 5 > 1) + + .计次循环首 (i % 5, ii) + tmp = tmp + “ \\\ |” + + .如果真 (i % 5 = ii) + tmp = tmp + “ \\\ ” + .如果真结束 + + .计次循环尾 () + 加入成员 (str, tmp) + + .判断 (i % 5 = 1) + tmp = tmp + “ \\\ ” + 加入成员 (str, tmp) + .默认 + + .判断结束 + + .如果真结束 + + .计次循环尾 () + + tmp = 文本制表_表头 (取数组成员数 (str), 5, str, “ / 角色概览 \ ” + _get_nickname (QQ, Tag) + “ / ” + 绑定_读UID (QQ, Tag) + “ \ ”) + str = 分割文本 (tmp, #换行符, ) + + hb.创建 (1, 1, #白色, ) + hb.字体属性 (“等距更纱黑体 SC”, 18, , , , , , , ) + hb.置画板尺寸 (hb.取文本宽度 (str [1]), hb.取文本高度 (str [1]) × 取数组成员数 (str)) + hb.置写出位置 (0, 0, 假) + hb.写出 (tmp) + + 顶边 = hb.取文本高度 (“ ”) × 3 - 8 + + .计次循环首 (data.取数量 (“//avatars”), i) + iconurl = data.取文本 (“//avatars[” + 到文本 (i) + “].image”) + 正则.创建 (“https://.+/game_record/genshin/character_icon/(\w+)\.png”, iconurl) + iconfile = 图片目录 + “character_icon\” + 正则.取子匹配文本 (1, 1) + “.png” + + .如果真 (取反 (路径_是否为文件 (iconfile))) + c.执行下载 (iconurl, iconfile, ) + .如果真结束 + + + .判断开始 (i % 5 = 0) + 左边 = 左边 + hb.取文本宽度 (取重复文本 (3, “ ”)) + hb.画图片 (hb.载入图片文件 (iconfile), 左边, 顶边, 64, 64) + 左边 = 0 + 顶边 = 顶边 + hb.取文本高度 (“ ”) × 7 + + .默认 + 左边 = 左边 + hb.取文本宽度 (取重复文本 (3, “ ”)) + hb.画图片 (hb.载入图片文件 (iconfile), 左边, 顶边, 64, 64) + 左边 = 左边 + hb.取文本宽度 (取重复文本 (12, “ ”)) + + .判断结束 + + .计次循环尾 () + + img.加载数据 (hb.取图片 ()) + b64 = Base64编码 (img.取出图片数据 (0), ) + hb.销毁 () + img.释放 () + + .判断开始 (Type = “1”) + CQ.发送私聊消息 (QQ, CQ.Image (“base64://” + b64, , “0”), 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + CQ.Image (“base64://” + b64, , “0”), 假) + .判断结束 + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “[get_user_stats] ” + res, 假) + 日志 (“[角色] ( ” + QQ + “ ) | ” + res) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “[get_user_stats] ” + res, 假) + 日志 (“[角色] ( ” + Group + “ | ” + QQ + “ ) | ” + res) + .判断结束 + + 线程锁.删除标识_文本 (QQ) + + .判断 (Type = “1”) + CQ.发送私聊消息 (QQ, “不要着急嘛~~~要不打个手枪?”, 假) + .默认 + CQ.发送群消息 (Group, CQ.At (QQ) + “不要着急嘛~~~要不打个手枪?”, 假) + .判断结束 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Util.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Util.static.e.txt" new file mode 100644 index 0000000..0c33861 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/Util.static.e.txt" @@ -0,0 +1,438 @@ +.版本 2 +.支持库 eAPI +.支持库 CommonSupport +.支持库 spec +.支持库 e2ee + +.程序集 Util +.程序集变量 pidfilenum, 整数型 + +.子程序 _运行检测 + .参数 Type, 整数型 + .局部变量 filename, 文本型 + .局部变量 runpath, 文本型 + .局部变量 info, 进程信息, , "0" + .局部变量 i, 整数型 + .局部变量 pidfile, 文本型 + + filename = 取执行文件名 () + runpath = 取运行目录 () + info = 取系统进程列表 () + pidfile = runpath + “\” + filename + “.pid” + + .判断开始 (Type = 0) + pidfilenum = 打开文件 (pidfile, 5, 4) + .如果真 (pidfilenum = 0) + 信息框 (“禁止多开”, 0, “警告!”, ) + 结束 () + .如果真结束 + + .计次循环首 (取数组成员数 (info), i) + + .如果真 (info [i].进程名称 = filename) + 写出字节集 (pidfilenum, 文本到UTF8 (“PID=” + 到文本 (info [i].进程标识符) + #换行符 + “PATH=” + runpath + “\” + filename)) + .如果真结束 + + .计次循环尾 () + + .判断 (Type = 1) + 关闭文件 (pidfilenum) + 延迟 (1000) + 删除文件 (pidfile) + + .默认 + + .判断结束 + + +.子程序 _初始化目录 + 应用目录 = 取运行目录 () + “\Data\” + 日志目录 = 取运行目录 () + “\Log\” + 图片目录 = 应用目录 + “Img\” + 绑定目录 = 应用目录 + “Bind_db\” + 配置文件 = 应用目录 + “Config.ini” + 群配置文件 = 应用目录 + “Group.ini” + + 路径_创建多级目录 (应用目录) + 路径_创建多级目录 (日志目录) + 路径_创建多级目录 (图片目录) + 路径_创建多级目录 (图片目录 + “character_side_icon\”) + 路径_创建多级目录 (图片目录 + “character_icon\”) + + +.子程序 _初始化日志 + 日志 (“初始化日志 | ” + 日志.初始化 (日志目录)) + ' Debug (“初始化日志 | ” + 日志_Debug.初始化 (日志目录, “Debug”)) + + +.子程序 日志 + .参数 信息, 文本型 + + 日志.写_ (_启动窗口.编辑框_日志, 创建文本从时间 (取现行时间 (), “%m/%d %H:%M:%S”, ) + “|” + 信息) + + +.子程序 Debug + .参数 信息, 文本型 + + 日志_Debug.写_ (_启动窗口.编辑框_Debug, 创建文本从时间 (取现行时间 (), “%m/%d %H:%M:%S”, ) + “|” + 信息) + + +.子程序 _初始化配置文件 + 日志 (“初始化配置文件 |”) + _启动窗口.编辑框_WS.内容 = 读配置项 (配置文件, “CFG”, “WS”, “127.0.0.1:6700”) + _启动窗口.编辑框_Token.内容 = 读配置项 (配置文件, “CFG”, “Token”, ) + _启动窗口.编辑框_HTTP.内容 = 读配置项 (配置文件, “CFG”, “HTTP”, “127.0.0.1:5700”) + _启动窗口.编辑框_绑定.内容 = 读配置项 (配置文件, “BOT”, “绑定”, “YS绑定/(.+)/(.+)/(.+)”) + _启动窗口.编辑框_菜单.内容 = 读配置项 (配置文件, “BOT”, “菜单”, “YSHELP”) + _启动窗口.编辑框_菜单路径.内容 = 读配置项 (配置文件, “BOT”, “菜单路径”, 取运行目录 () + “\menu.png”) + _启动窗口.编辑框_实时便笺.内容 = 读配置项 (配置文件, “BOT”, “实时便笺”, “YS便笺/(.+)”) + _启动窗口.编辑框_数据总览.内容 = 读配置项 (配置文件, “BOT”, “数据总览”, “YS数据/(.+)”) + _启动窗口.编辑框_手札.内容 = 读配置项 (配置文件, “BOT”, “手札”, “YS手札/(.+)”) + _启动窗口.编辑框_签到.内容 = 读配置项 (配置文件, “BOT”, “签到”, “YS签到/(.+)”) + _启动窗口.编辑框_读绑定.内容 = 读配置项 (配置文件, “BOT”, “读绑定”, “YS绑定”) + _启动窗口.编辑框_删绑定.内容 = 读配置项 (配置文件, “BOT”, “删绑定”, “YS解绑/(.+)”) + _启动窗口.编辑框_本期深渊.内容 = 读配置项 (配置文件, “BOT”, “本期深渊”, “YS本期深渊/(.+)”) + _启动窗口.编辑框_上期深渊.内容 = 读配置项 (配置文件, “BOT”, “上期深渊”, “YS上期深渊/(.+)”) + _启动窗口.编辑框_角色.内容 = 读配置项 (配置文件, “BOT”, “角色”, “YS角色/(.+)”) + + +.子程序 _初始化子程序 + 日志 (“初始化子程序 |”) + CQ.初始化 (&private, &group, ¬ice, &request, &ws) + 线程锁.创建 () + 日志 (“消息线程池: ” + 到文本 (线程池_消息.创建 (&消息线程, , 2, 4))) + + + +.子程序 时间_秒到时分秒格式, 文本型, , 精益模块 + .参数 秒, 整数型 + .参数 格式, 文本型, 可空, 默认:d天h小时m分s秒 + .参数 自动补零, 逻辑型, 可空, 不足2位数自动前面补0 + .局部变量 局_天, 整数型 + .局部变量 局_小时, 整数型 + .局部变量 局_分, 整数型 + .局部变量 局_秒, 整数型 + .局部变量 局_位置, 整数型 + .局部变量 局_Time, 文本型 + + 局_秒 = 秒 + .如果真 (是否为空 (格式) 或 格式 = “”) + 格式 = “d天h小时m分s秒” + .如果真结束 + + 局_天 = 局_秒 ÷ 86400 + 局_小时 = 局_秒 % 86400 ÷ 3600 + 局_分 = 局_秒 % 86400 % 3600 ÷ 60 + 局_秒 = 局_秒 % 86400 % 3600 % 60 + + 局_位置 = 倒找文本 (格式, “d”, , 假) + .如果真 (局_位置 ≠ -1) + 局_Time = 到文本 (局_天) + .如果真 (自动补零) + 局_Time = 文本_自动补零 (局_Time, 2) + .如果真结束 + 格式 = 文本替换 (格式, 局_位置, 1, 局_Time) + .如果真结束 + + 局_位置 = 倒找文本 (格式, “h”, , 假) + .如果真 (局_位置 ≠ -1) + 局_Time = 到文本 (局_小时) + .如果真 (自动补零) + 局_Time = 文本_自动补零 (局_Time, 2) + .如果真结束 + 格式 = 文本替换 (格式, 局_位置, 1, 局_Time) + .如果真结束 + + 局_位置 = 倒找文本 (格式, “m”, , 假) + .如果真 (局_位置 ≠ -1) + 局_Time = 到文本 (局_分) + .如果真 (自动补零) + 局_Time = 文本_自动补零 (局_Time, 2) + .如果真结束 + 格式 = 文本替换 (格式, 局_位置, 1, 局_Time) + .如果真结束 + + 局_位置 = 倒找文本 (格式, “s”, , 假) + .如果真 (局_位置 ≠ -1) + 局_Time = 到文本 (局_秒) + .如果真 (自动补零) + 局_Time = 文本_自动补零 (局_Time, 2) + .如果真结束 + 格式 = 文本替换 (格式, 局_位置, 1, 局_Time) + .如果真结束 + + 返回 (格式) + +.子程序 文本_自动补零, 文本型, , 精益模块 + .参数 参_欲补齐文本, 文本型 + .参数 参_补齐长度 + + 返回 (取重复文本 (参_补齐长度 - 取文本长度 (参_欲补齐文本), “0”) + 参_欲补齐文本) + +.子程序 文件_枚举, 整数型, , 精益模块 + .参数 欲寻找的目录, 文本型, , 文件目录 + .参数 欲寻找的文件名, 文本型, , 如果寻找全部文件可以填入*.*,或*.txt只找txt文件, 多个后缀中间用“|”隔开 + .参数 文件数组, 文本型, 参考 可空 数组, 用于装载文件数组的变量;把寻找到的文件都放在这个数组里,并返回; + .参数 是否带路径, 逻辑型, 可空, 默认为假; 真=带目录路径,如C:\012.txt; 假=不带,如 012.txt; + .参数 是否按字母排序, 逻辑型, 可空, 默认为假;真=按字母a-z排序 假=不排序 + .参数 是否遍历子目录, 逻辑型, 可空, 留空默认为假;为真时文件数组不主动清空 + .局部变量 局_文件名, 文本型 + .局部变量 局_目录, 文本型 + .局部变量 局_后缀数组, 文本型, , "0" + .局部变量 局_后缀总数, 整数型 + .局部变量 局_计次, 整数型 + + .如果真 (是否遍历子目录 = 假) + 清除数组 (文件数组) + .如果真结束 + 局_目录 = 欲寻找的目录 + .如果真 (取文本右边 (局_目录, 1) ≠ “\”) + 局_目录 = 局_目录 + “\” + .如果真结束 + 局_后缀数组 = 分割文本 (欲寻找的文件名, “|”, ) + 局_后缀总数 = 取数组成员数 (局_后缀数组) + .计次循环首 (局_后缀总数, 局_计次) + 局_文件名 = 寻找文件 (局_目录 + 局_后缀数组 [局_计次], ) + .判断循环首 (局_文件名 ≠ “”) + .如果真 (是否带路径) + 局_文件名 = 局_目录 + 局_文件名 + .如果真结束 + 加入成员 (文件数组, 局_文件名) + 系统_处理事件1 () + 局_文件名 = 寻找文件 (, ) + .判断循环尾 () + .计次循环尾 () + .如果真 (是否按字母排序) + 数组_排序 (文件数组, 0, ) + .如果真结束 + .如果真 (是否遍历子目录) + 局_文件名 = 寻找文件 (局_目录 + “*.*”, #子目录) + .判断循环首 (局_文件名 ≠ “”) + .如果真 (局_文件名 ≠ “.” 且 局_文件名 ≠ “..”) + 文件_枚举 (局_目录 + 局_文件名, 欲寻找的文件名, 文件数组, 是否带路径, 是否按字母排序, 是否遍历子目录) + 系统_处理事件1 () + .如果真结束 + 局_文件名 = 寻找文件 (, #子目录) + .判断循环尾 () + .如果真结束 + 返回 (取数组成员数 (文件数组)) + +.子程序 系统_处理事件1, , , 精益模块 + .局部变量 CurrMsg, MSG + + .判断循环首 (PeekMessage (CurrMsg, 0, 0, 0, 1)) ' #PM_REMOVE=1接收消息并从队列里除掉。 + TranslateMessage (CurrMsg) + DispatchMessage (CurrMsg) ' 分发消息 + .判断循环尾 () + +.子程序 数组_排序, , , 精益模块 + .参数 要排序的数组, 文本型, 参考 数组 + .参数 排序方式, 字节型, 可空, 可空,默认为0 0=升序排序 1=降序排序 + .参数 区分大小写, 逻辑型, 可空, 可空,默认“真”。真=区分大小写,假=不区分 + .局部变量 N, 整数型 + .局部变量 排序数组, 文本型, , "0" + .局部变量 成员数量, 整数型 + .局部变量 高位, 整数型 + .局部变量 低位, 整数型 + .局部变量 中间位, 整数型 + .局部变量 比较结果, 整数型, , , 感谢会员 落雪 提供代码 + + 复制数组 (排序数组, 要排序的数组) + 清除数组 (要排序的数组) + .如果真 (是否为空 (区分大小写) = 真) + 区分大小写 = 真 + .如果真结束 + + .计次循环首 (取数组成员数 (排序数组), N) + .判断开始 (成员数量 = 0) + 插入成员 (要排序的数组, 1, 排序数组 [N]) + .默认 + + 高位 = 成员数量 + 低位 = 1 + 中间位 = (高位 + 低位) \ 2 + ' ; lstrcmp 通过比较ASCII码进行文本的排序,速度快,但存在问题 + .判断开始 (区分大小写 = 假) + 比较结果 = 文本比较 (到大写 (排序数组 [N]), 到大写 (要排序的数组 [成员数量]), 真) ' 不区分就都算大写好了.因为在ACSII码中,大小写字母都是挨着的,所以不会出现"夹"在中间的字符. + .默认 + 比较结果 = 文本比较 (排序数组 [N], 要排序的数组 [成员数量], 真) + .判断结束 + + .判断开始 (比较结果 ≥ 0) + 插入成员 (要排序的数组, 成员数量 + 1, 排序数组 [N]) + .判断 (文本比较 (排序数组 [N], 要排序的数组 [1], 真) ≤ 0) + 插入成员 (要排序的数组, 1, 排序数组 [N]) + .默认 + .判断循环首 (高位 - 低位 > 1) + .如果真 (排序数组 [N] = 要排序的数组 [中间位]) + 跳出循环 () + .如果真结束 + .如果 (文本比较 (排序数组 [N], 要排序的数组 [中间位], 真) < 0) + 高位 = 中间位 + .否则 + 低位 = 中间位 + .如果结束 + 中间位 = (高位 + 低位) \ 2 + .判断循环尾 () + .判断开始 (文本比较 (排序数组 [N], 要排序的数组 [中间位], 真) ≤ 0) + 插入成员 (要排序的数组, 中间位, 排序数组 [N]) + .默认 + 插入成员 (要排序的数组, 中间位 + 1, 排序数组 [N]) + .判断结束 + + .判断结束 + + .判断结束 + 成员数量 = 取数组成员数 (要排序的数组) + .计次循环尾 () + .如果真 (排序方式 = 1) + 数组_反转 (要排序的数组) + .如果真结束 + + +.子程序 数组_反转, , , 精益模块 + .参数 反转的数组, 文本型, 参考 数组 + .局部变量 成员数量, 整数型 + .局部变量 折中数量, 整数型 + .局部变量 N, 整数型 + + 成员数量 = 取数组成员数 (反转的数组) + 折中数量 = 成员数量 ÷ 2 + .计次循环首 (折中数量, N) + 文本_交换变量 (反转的数组 [N], 反转的数组 [成员数量]) + 成员数量 = 成员数量 - 1 + .计次循环尾 () + +.子程序 文本_交换变量, , , 精益模块 + .参数 参数一, 文本型 + .参数 参数二, 文本型 + + 置入代码 ({ 139, 69, 8, 139, 77, 12, 139, 16, 135, 17, 137, 16 }) + ' mov eax,[ebp+8] + ' mov ecx,[ebp+12] + ' mov edx,dword ptr ds:[eax] + ' xchg dword ptr ds:[ecx],edx + ' mov dword ptr ds:[eax],edx + +.子程序 文本_删右边, 文本型 + .参数 欲处理文本, 文本型 + .参数 删除长度, 整数型, , 以字符为单位 + .局部变量 szText, 字节集 + + szText = 文本到UTF8 (欲处理文本) + szText = 取字节集左边 (szText, 取字节集长度 (szText) - 删除长度 × 2) + 返回 (UTF8到文本 (szText)) + +.子程序 时间_时间戳转文本, 文本型, , 精益模块 + .参数 时间戳, 文本型 + .参数 小时制式, 整数型, 可空, 留空或为0取当前系统时间制式,1表示12小时制,2表示24小时制; 注: 本参数只对10位时间戳有效 + .局部变量 VBscript, 对象 + .局部变量 局_文本, 文本型 + .局部变量 局_数组, 文本型, , "0" + .局部变量 局_时间, 日期时间型 + .局部变量 局_制式, 整数型 + + .如果 (取文本长度 (时间戳) = 10) + 局_时间 = 增减时间 (到时间 (“1970.01.01 08:00:00”), #秒, 到整数 (时间戳)) + .如果 (小时制式 ≤ 0 或 小时制式 > 2) + 局_制式 = 时间_取制式 () + .否则 + 局_制式 = 小时制式 - 1 + .如果结束 + 返回 (选择 (局_制式 = 0, 时间_格式化 (局_时间, “yyyy-MM-dd ”, “hh:mm:ss”, ), 时间_格式化 (局_时间, “yyyy-MM-dd ”, “HH:mm:ss”, ))) + + .否则 + COM线程初始化 () + .如果真 (VBscript.创建 (“ScriptControl”, )) + VBscript.写属性 (“Language”, “JScript”) + VBscript.数值方法 (“ExecuteStatement”, “function timea(){var d,s;d=new Date();d.setTime('” + 时间戳 + “');return(d);}”) + 局_文本 = VBscript.通用方法 (“Run”, “timea”, ).取文本 () + VBscript.清除 () + COM线程释放 () + .如果真 (取文本长度 (局_文本) > 0) + 局_数组 = 分割文本 (局_文本, “ ”, ) + .如果真 (取数组成员数 (局_数组) ≥ 6) + .判断开始 (局_数组 [2] = “Jan”) + 局_数组 [2] = “1” + .判断 (局_数组 [2] = “Feb”) + 局_数组 [2] = “2” + .判断 (局_数组 [2] = “Mar”) + 局_数组 [2] = “3” + .判断 (局_数组 [2] = “Apr”) + 局_数组 [2] = “4” + .判断 (局_数组 [2] = “May”) + 局_数组 [2] = “5” + .判断 (局_数组 [2] = “Jun”) + 局_数组 [2] = “6” + .判断 (局_数组 [2] = “Jul”) + 局_数组 [2] = “7” + .判断 (局_数组 [2] = “Aug”) + 局_数组 [2] = “8” + .判断 (局_数组 [2] = “Sep”) + 局_数组 [2] = “9” + .判断 (局_数组 [2] = “Oct”) + 局_数组 [2] = “10” + .判断 (局_数组 [2] = “Nov”) + 局_数组 [2] = “11” + .判断 (局_数组 [2] = “Dec”) + 局_数组 [2] = “12” + .默认 + + .判断结束 + + 返回 (局_数组 [6] + “-” + 文本_自动补零 (局_数组 [2], 2) + “-” + 文本_自动补零 (局_数组 [3], 2) + “ ” + 局_数组 [4]) + .如果真结束 + + .如果真结束 + + .如果真结束 + + .如果结束 + 返回 (“”) + +.子程序 时间_格式化, 文本型, , 精益模块 + .参数 参_欲格式化时间, 日期时间型 + .参数 参_日期格式, 文本型, 可空, 可以为空,格式:yyyy [年],M [月],d [日],dddd [星期],如;yyyy/M/d dddd(年/月/日 星期几) + .参数 参_时间格式, 文本型, 可空, 可以为空,格式:tt [上午或下午],h [小时],m [分钟], s [秒] 。如;hh:mm:ss(小时:分钟:秒),tt hh:mm:ss(上午或下午 小时:分钟:秒) + .参数 参_是否为24小时制, 逻辑型, 可空 + .局部变量 局_系统时间, 精易_时间 + .局部变量 局_整数返回, 整数型 + .局部变量 局_日期, 文本型 + .局部变量 局_时间, 文本型 + .局部变量 局_Flags, 整数型 + + .如果真 (是否为空 (参_日期格式) 且 是否为空 (参_时间格式)) + 输出调试文本 (“日期格式和时间格式不能同时为空!请至少提供一个参数。”) + 返回 (“”) + .如果真结束 + + 局_整数返回 = VariantTimeToSystemTime (参_欲格式化时间, 局_系统时间) + .如果真 (1 = 局_整数返回) + .如果真 (取文本长度 (参_日期格式) > 2) + 局_日期 = 取空白文本 (50) + GetDateFormatA (0, 0, 局_系统时间, 参_日期格式, 局_日期, 50) + .如果真结束 + .如果真 (取文本长度 (参_时间格式) > 2) + 局_时间 = 取空白文本 (50) + .如果真 (参_是否为24小时制 = 真) + 局_Flags = #TIME_FORCE24HOURFORMAT + .如果真结束 + GetTimeFormatA (0, 局_Flags, 局_系统时间, 参_时间格式, 局_时间, 50) + .如果真结束 + 返回 (局_日期 + 局_时间) + .如果真结束 + 返回 (“”) + +.子程序 时间_取制式, 整数型, , 精益模块 + .局部变量 iTime, 文本型 + + iTime = 取空白文本 (4) + GetLocaleInfo (0, #LOCALE_ITIME, iTime, 4) + 返回 (到整数 (iTime)) + +.子程序 _到百分比, 文本型 + .参数 文本, 文本型 + + 返回 (数值到格式文本 (到整数 (文本) ÷ 10, 1, 假) + “%”) + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/_\345\220\257\345\212\250\347\252\227\345\217\243.form.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/_\345\220\257\345\212\250\347\252\227\345\217\243.form.e.txt" new file mode 100644 index 0000000..e1220fc --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/_\345\220\257\345\212\250\347\252\227\345\217\243.form.e.txt" @@ -0,0 +1,170 @@ +.版本 2 +.支持库 CommonSupport +.支持库 iext2 +.支持库 EThread +.支持库 iext + +.程序集 _启动窗口 +.子程序 __启动窗口_创建完毕 + _启动窗口.禁止 = 真 + _运行检测 (0) + _初始化目录 () + _初始化日志 () + _初始化配置文件 () + _初始化子程序 () + + _启动窗口.禁止 = 假 + + +.子程序 __启动窗口_可否被关闭, 逻辑型 + _按钮_断开_被单击 () + 线程锁.销毁 () + 日志 (“销毁线程池: ” + 到文本 (线程池_消息.销毁 (0, 0))) + + + +.子程序 __启动窗口_将被销毁 + _运行检测 (1) + 日志 (“销毁” + #换行符) + + +.子程序 _按钮_Debug_被单击 + + + + +.子程序 _按钮_连接_被单击 + 图片框_状态.背景颜色 = #黄色 + .如果真 (CQ.连接 (编辑框_WS.内容, 编辑框_Token.内容)) + 按钮_连接.禁止 = 真 + 按钮_群刷新.禁止 = 假 + 编辑框_WS.禁止 = 真 + 编辑框_Token.禁止 = 真 + 编辑框_HTTP.禁止 = 真 + 图片框_状态.背景颜色 = #绿色 + + .如果真结束 + 写配置项 (配置文件, “CFG”, “WS”, 编辑框_WS.内容) + 写配置项 (配置文件, “CFG”, “Token”, 编辑框_Token.内容) + 写配置项 (配置文件, “CFG”, “HTTP”, 编辑框_HTTP.内容) + + +.子程序 _按钮_断开_被单击 + CQ.断开 () + 按钮_连接.禁止 = 假 + 按钮_群刷新.禁止 = 真 + 编辑框_WS.禁止 = 假 + 编辑框_Token.禁止 = 假 + 编辑框_HTTP.禁止 = 假 + 图片框_状态.背景颜色 = #红色 + + +.子程序 _按钮_群刷新_被单击 + 按钮_群刷新.禁止 = 真 + 启动线程 (&群列表刷新, , ) + + +.子程序 群列表刷新 + .局部变量 群数据, 数_群, , "0" + .局部变量 计次, 整数型 + .局部变量 a, 整数型 + + 超级列表框_群列表.全部删除 () + CQ.HTTP获取群列表 (编辑框_HTTP.内容, 群数据) + .计次循环首 (取数组成员数 (群数据), 计次) + a = 超级列表框_群列表.插入表项 (, , , , , ) + 超级列表框_群列表.置标题 (a, 0, 群数据 [计次].group_name) + 超级列表框_群列表.置标题 (a, 1, 到文本 (群数据 [计次].group_id)) + .判断开始 (读配置项 (群配置文件, 到文本 (群数据 [计次].group_id), “总开关”, “关”) = “关”) + 超级列表框_群列表.置标题 (a, 2, “关”) + .默认 + 超级列表框_群列表.置标题 (a, 2, “开”) + .判断结束 + + .计次循环尾 () + 按钮_群刷新.禁止 = 假 + + +.子程序 _超级列表框_群列表_左键单击表项 + .判断开始 (超级列表框_群列表.现行选中项 = -1) + 按钮_群关.禁止 = 真 + 按钮_群开.禁止 = 真 + + .默认 + 群开关刷新 () + + .判断结束 + + +.子程序 群开关刷新 + .判断开始 (读配置项 (群配置文件, 超级列表框_群列表.取标题 (超级列表框_群列表.现行选中项, 1), “总开关”, “关”) = “关”) + 按钮_群关.禁止 = 真 + 按钮_群开.禁止 = 假 + 超级列表框_群列表.置标题 (超级列表框_群列表.现行选中项, 2, “关”) + + .默认 + 按钮_群关.禁止 = 假 + 按钮_群开.禁止 = 真 + 超级列表框_群列表.置标题 (超级列表框_群列表.现行选中项, 2, “开”) + + .判断结束 + + +.子程序 _按钮_群开_被单击 + 写配置项 (群配置文件, 超级列表框_群列表.取标题 (超级列表框_群列表.现行选中项, 1), “总开关”, “开”) + 群开关刷新 () + + +.子程序 _按钮_群关_被单击 + 写配置项 (群配置文件, 超级列表框_群列表.取标题 (超级列表框_群列表.现行选中项, 1), “总开关”, “关”) + 群开关刷新 () + + +.子程序 _编辑框_绑定_内容被改变 + 写配置项 (配置文件, “BOT”, “绑定”, 编辑框_绑定.内容) + + +.子程序 _编辑框_菜单_内容被改变 + 写配置项 (配置文件, “BOT”, “菜单”, 编辑框_菜单.内容) + + +.子程序 _编辑框_菜单路径_内容被改变 + 写配置项 (配置文件, “BOT”, “菜单路径”, 编辑框_菜单路径.内容) + + +.子程序 _编辑框_实时便笺_内容被改变 + 写配置项 (配置文件, “BOT”, “实时便笺”, 编辑框_实时便笺.内容) + + +.子程序 _编辑框_数据总览_内容被改变 + 写配置项 (配置文件, “BOT”, “数据总览”, 编辑框_数据总览.内容) + + +.子程序 _编辑框_手札_内容被改变 + 写配置项 (配置文件, “BOT”, “手札”, 编辑框_手札.内容) + + +.子程序 _编辑框_签到_内容被改变 + 写配置项 (配置文件, “BOT”, “签到”, 编辑框_签到.内容) + + +.子程序 _编辑框_读绑定_内容被改变 + 写配置项 (配置文件, “BOT”, “读绑定”, 编辑框_读绑定.内容) + + +.子程序 _编辑框_删绑定_内容被改变 + 写配置项 (配置文件, “BOT”, “删绑定”, 编辑框_删绑定.内容) + + +.子程序 _编辑框_本期深渊_内容被改变 + 写配置项 (配置文件, “BOT”, “本期深渊”, 编辑框_本期深渊.内容) + + +.子程序 _编辑框_上期深渊_内容被改变 + 写配置项 (配置文件, “BOT”, “上期深渊”, 编辑框_上期深渊.内容) + + +.子程序 _编辑框_角色_内容被改变 + 写配置项 (配置文件, “BOT”, “角色”, 编辑框_角色.内容) + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\346\216\222\345\272\217.list.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\346\216\222\345\272\217.list.txt" new file mode 100644 index 0000000..58d5645 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\346\216\222\345\272\217.list.txt" @@ -0,0 +1,5 @@ +_启动窗口 +CQHTTP +Genshin +Util +绑定 \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\347\273\221\345\256\232.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\347\273\221\345\256\232.static.e.txt" new file mode 100644 index 0000000..48a09cd --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\344\273\243\347\240\201/\347\250\213\345\272\217\351\233\206/\347\273\221\345\256\232.static.e.txt" @@ -0,0 +1,176 @@ +.版本 2 +.支持库 e2ee + +.程序集 绑定 +.子程序 绑定_添加 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .参数 Cookie, 文本型 + .参数 CN, 逻辑型 + .局部变量 gs, GenshinAPI + .局部变量 res, 文本型 + .局部变量 data, 存取键值表 + .局部变量 data2, 存取键值表 + .局部变量 i, 整数型 + .局部变量 nickname, 文本型 + .局部变量 game_uid, 文本型 + + 日志 (“[绑定-添加] ” + QQ + “ 启动线程”) + + gs.置Cookie (Cookie) + res = gs.get_UserGameRolesByCookie (CN) + + .判断开始 (data.从JSON载入 (res, , , )) + + .判断开始 (CN) + + .计次循环首 (data.取数量 (“//list”), i) + .如果真 (data.取文本 (“//list[” + 到文本 (i) + “].game_biz”) = “hk4e_cn”) + nickname = data.取文本 (“//list[” + 到文本 (i) + “].nickname”) + game_uid = data.取文本 (“//list[” + 到文本 (i) + “].game_uid”) + 日志 (“[绑定-添加] ” + QQ + “ 获取到游戏信息 ” + nickname + “|” + game_uid) + 跳出循环 () + .如果真结束 + + .计次循环尾 () + data.创建 (“game_uid”, game_uid, “cookie”, Cookie, “CN”, CN) + + .默认 + .计次循环首 (data.取数量 (“//list”), i) + .如果真 (data.取文本 (“//list[” + 到文本 (i) + “].game_biz”) = “hk4e_global”) + nickname = data.取文本 (“//list[” + 到文本 (i) + “].nickname”) + game_uid = data.取文本 (“//list[” + 到文本 (i) + “].game_uid”) + 日志 (“[绑定-添加] ” + QQ + “ 获取到游戏信息 ” + nickname + “|” + game_uid) + 跳出循环 () + .如果真结束 + + .计次循环尾 () + data.创建 (“game_uid”, game_uid, “cookie”, Cookie, “CN”, CN) + .判断结束 + + .判断开始 (game_uid ≠ “”) + data2.从文件载入 (绑定目录 + QQ + “.db”, 0) + data2.置键值表 (“//” + Tag, data, ) + + .判断开始 (data2.另存文件 (绑定目录 + QQ + “.db”, 0)) + 日志 (“[绑定-添加] ” + QQ + “ 绑定成功”) + CQ.发送私聊消息 (QQ, “已绑定 ” + nickname + #换行符 + “UID ” + game_uid, 真) + .默认 + CQ.发送私聊消息 (QQ, “数据文件保存失败”, 真) + .判断结束 + + .默认 + CQ.发送私聊消息 (QQ, “[get_UserGameRolesByCookie] 未找到绑定的原神账号”, 真) + .判断结束 + + .默认 + CQ.发送私聊消息 (QQ, “[get_UserGameRolesByCookie] ” + res, 真) + .判断结束 + + +.子程序 绑定_删除 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .局部变量 data, 存取键值表 + .局部变量 tags, 文本型, , "0" + .局部变量 i, 整数型 + + 日志 (“[绑定-删除] ” + QQ + “ 删除标签[” + Tag + “]”) + + data.从文件载入 (绑定目录 + QQ + “.db”, 0) + tags = data.取键数组 (0) + + .计次循环首 (取数组成员数 (tags), i) + .如果真 (tags [i] = Tag) + .如果真 (取数组成员数 (tags) = 1) + .判断开始 (删除文件 (绑定目录 + QQ + “.db”)) + 日志 (“[绑定-删除] ” + QQ + “ 成功删除数据文件”) + CQ.发送私聊消息 (QQ, “成功删除数据文件”, 真) + 返回 () + + .默认 + CQ.发送私聊消息 (QQ, “数据文件删除失败”, 真) + 返回 () + .判断结束 + + .如果真结束 + + data.删除 (“//” + tags [i]) + + .判断开始 (data.另存文件 (绑定目录 + QQ + “.db”, 0)) + 日志 (“[绑定-删除] ” + QQ + “ 成功删除标签[” + Tag + “]”) + CQ.发送私聊消息 (QQ, “成功删除标签 ” + Tag, 真) + 返回 () + + .默认 + CQ.发送私聊消息 (QQ, “数据文件保存失败”, 真) + 返回 () + .判断结束 + + .如果真结束 + + .计次循环尾 () + + 日志 (“[绑定-删除] ” + QQ + “ 未找到标签[” + Tag + “]”) + CQ.发送私聊消息 (QQ, “未找到标签 ” + Tag, 真) + + +.子程序 绑定_读CK, 文本型 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .局部变量 data, 存取键值表 + + data.从文件载入 (绑定目录 + QQ + “.db”, 0) + 返回 (data.取文本 (“//” + Tag + “.cookie”)) + + +.子程序 绑定_读UID, 文本型 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .局部变量 data, 存取键值表 + + data.从文件载入 (绑定目录 + QQ + “.db”, 0) + 返回 (data.取文本 (“//” + Tag + “.game_uid”)) + + +.子程序 绑定_读CN, 逻辑型 + .参数 QQ, 文本型 + .参数 Tag, 文本型 + .局部变量 data, 存取键值表 + + data.从文件载入 (绑定目录 + QQ + “.db”, 0) + 返回 (data.取逻辑值 (“//” + Tag + “.CN”)) + + +.子程序 绑定_是否存在, 逻辑型 + .参数 QQ, 文本型 + + 返回 (路径_是否为文件 (绑定目录 + QQ + “.db”)) + + +.子程序 绑定_枚举, 整数型 + .参数 数组, 文本型, 参考 数组 + .局部变量 a, 整数型 + .局部变量 b, 文本型, , "0" + + a = 文件_枚举 (绑定目录, “*.db”, b, 假, 真, 假) + 数组 = b + 返回 (a) + + +.子程序 绑定_读所有Tag, 文本型 + .参数 QQ, 文本型 + .局部变量 data, 存取键值表 + .局部变量 Tags, 文本型, , "0" + .局部变量 i, 整数型 + .局部变量 allTag, 文本型 + + data.从文件载入 (绑定目录 + QQ + “.db”, 0) + Tags = data.取键数组 (0) + .计次循环首 (取数组成员数 (Tags), i) + allTag = allTag + 到文本 (i) + “. ” + Tags [i] + “ | ” + data.取文本 (“//” + Tags [i] + “.game_uid”) + #换行符 + .计次循环尾 () + allTag = 文本_删右边 (allTag, 1) + 返回 (allTag) + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" new file mode 100644 index 0000000..9f71df9 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" @@ -0,0 +1,14 @@ +.版本 2 + +.全局变量 应用目录, 文本型 +.全局变量 日志目录, 文本型 +.全局变量 绑定目录, 文本型 +.全局变量 图片目录, 文本型 +.全局变量 配置文件, 文本型 +.全局变量 群配置文件, 文本型 + +.全局变量 日志, 类_日志 +.全局变量 日志_Debug, 类_日志 +.全局变量 线程池_消息, 常用_线程池 +.全局变量 线程锁, 标识线程锁 + diff --git "a/GenshinBot.\344\273\243\347\240\201/\345\270\270\351\207\217.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\345\270\270\351\207\217.e.txt" new file mode 100644 index 0000000..fb690f0 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\345\270\270\351\207\217.e.txt" @@ -0,0 +1,9 @@ +.版本 2 + +.常量 LOCALE_ITIME, "35" +.常量 TIME_FORCE24HOURFORMAT, "8" + + + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI.desc.json" new file mode 100644 index 0000000..0a0b33f --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\Mirai\\原神机器人\\GenshinAPI.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI/\344\273\243\347\240\201/GenshinAPI.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI/\344\273\243\347\240\201/GenshinAPI.class.e.txt" new file mode 100644 index 0000000..d9edf70 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/GenshinAPI/\344\273\243\347\240\201/GenshinAPI.class.e.txt" @@ -0,0 +1,90 @@ +.版本 2 + +.程序集 GenshinAPI, , 公开 +.子程序 置Cookie, , 公开 + .参数 Cookie, 文本型 + + + +.子程序 取Cookie, 文本型, 公开 + + +.子程序 get_user_stats, 文本型, 公开 + .参数 uid, 文本型 + + + +.子程序 get_characters, 文本型, 公开 + .参数 uid, 文本型 + .参数 character_ids, 文本型, 数组 + + + +.子程序 get_spiralAbyss, 文本型, 公开 + .参数 uid, 文本型 + .参数 schedule_type, 文本型 + + + +.子程序 get_activities, 文本型, 公开 + .参数 uid, 文本型 + + + +.子程序 get_monthDetail, 文本型, 公开 + .参数 uid, 文本型 + .参数 page, 文本型 + .参数 month, 文本型 + .参数 type, 文本型 + + + +.子程序 get_monthInfo, 文本型, 公开 + .参数 uid, 文本型 + .参数 month, 文本型 + + + +.子程序 get_dailyNote, 文本型, 公开 + .参数 uid, 文本型 + + + +.子程序 get_UserGameRolesByCookie, 文本型, 公开 + .参数 CN, 逻辑型 + + + +.子程序 get_GameRecordCard, 文本型, 公开 + .参数 uid, 文本型, , 米游社uid + .参数 CN, 逻辑型 + + + +.子程序 get_signinHome_OS, 文本型, 公开 + + +.子程序 get_signinInfo_OS, 文本型, 公开 + + +.子程序 get_sign_OS, 文本型, 公开 + + +.子程序 get_signinInfo_CN, 文本型, 公开 + .参数 uid, 文本型 + + + +.子程序 get_resignInfo_CN, 文本型, 公开 + .参数 uid, 文本型 + + + +.子程序 get_signinHome_CN, 文本型, 公开 + + +.子程序 get_sign_CN, 文本型, 公开 + .参数 uid, 文本型 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e.desc.json" new file mode 100644 index 0000000..a2b7160 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\Mirai\\go-cqhttp-E\\ClientMode\\go-cqhttp-e-ClientMode.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" new file mode 100644 index 0000000..34094a7 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" @@ -0,0 +1,53 @@ +.版本 2 + +.程序集 __HIDDEN_TEMP_MOD__, , 公开 +.子程序 _private, , 公开, 私聊消息,示例代码 + .参数 message, 文本型, , 消息内容 + .参数 message_id, 文本型, , 消息 ID + .参数 nickname, 文本型, , 昵称 + .参数 user_id, 文本型, , 发送者 QQ 号 + .参数 sub_type, 文本型, , 消息子类型(friend、group、other) + + + +.子程序 _group, , 公开, 群消息,示例代码 + .参数 group_id, 文本型, , 群号 + .参数 message, 文本型, , 消息内容 + .参数 message_id, 文本型, , 消息 ID + .参数 card, 文本型, , 群名片/备注 + .参数 nickname, 文本型, , 昵称 + .参数 role, 文本型, , 角色,owner 或 admin 或 member + .参数 user_id, 文本型, , 发送者 QQ 号 + .参数 sub_type, 文本型, , 消息子类型(normal、anonymous、notice) + + + +.子程序 _notice, , 公开, 通知事件,示例代码 + .参数 notice_type, 文本型, , 通知类型 + .参数 name, 文本型, , 文件名 + .参数 size, 文本型, , 文件大小(字节数) + .参数 url, 文本型, , 文件链接 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , QQ 号 + .参数 sub_type, 文本型, , 事件子类型 + .参数 operator_id, 文本型, , 操作者 QQ 号 + .参数 duration, 文本型, , 禁言时长,单位秒 + .参数 message_id, 文本型, , 被撤回的消息 ID + + + +.子程序 _request, , 公开, 请求事件,示例代码 + .参数 request_type, 文本型, , 请求类型 + .参数 sub_type, 文本型, , 请求子类型 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , 发送请求的 QQ 号 + .参数 comment, 文本型, , 验证信息 + .参数 flag, 文本型, , 请求 flag,在调用处理请求的 API 时需要传入 + + + +.子程序 _ws, , 公开, ws客户端消息,示例代码 + .参数 msg, 文本型 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/\347\261\273_CQHTTP.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/\347\261\273_CQHTTP.class.e.txt" new file mode 100644 index 0000000..5804fb9 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\344\273\243\347\240\201/\347\261\273_CQHTTP.class.e.txt" @@ -0,0 +1,203 @@ +.版本 2 + +.程序集 类_CQHTTP, , 公开 +.子程序 初始化, , 公开, 必须在代码开头执行且仅执行一次 + .参数 私聊消息回传, 子程序指针, , 见程序"_private" + .参数 群聊消息回传, 子程序指针, , 见程序"_group" + .参数 通知消息回传, 子程序指针, , 见程序"_notice" + .参数 请求消息回传, 子程序指针, , 见程序"_request" + .参数 WS消息回传, 子程序指针, , 见程序"_ws" + + + +.子程序 连接, 逻辑型, 公开, 此方法为阻塞模式,连接成功返回真 + .参数 WS地址, 文本型, , 示例:127.0.0.1:6700 + .参数 Token, 文本型, 可空 + + + +.子程序 断开, , 公开 + + +.子程序 发送私聊消息, , 公开 + .参数 user_id, 文本型, , 对方 QQ 号 + .参数 message, 文本型, , 要发送的内容 + .参数 auto_escape, 逻辑型, , 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 + + + +.子程序 发送群消息, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 message, 文本型, , 要发送的内容 + .参数 auto_escape, 逻辑型, , 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 + + + +.子程序 撤回消息, , 公开 + .参数 message_id, 文本型, , 消息 ID + + + +.子程序 处理加好友请求, , 公开 + .参数 flag, 文本型, , 加好友请求的 flag(需从上报的数据中获得) + .参数 approve, 逻辑型, , 是否同意请求 + .参数 remark, 文本型, , 添加后的好友备注(仅在同意时有效) + + + +.子程序 处理加群请求, , 公开 + .参数 flag, 文本型, , 加群请求的 flag(需从上报的数据中获得) + .参数 sub_type, 文本型, , add 或 invite,请求类型(需要和上报消息中的 sub_type 字段相符) + .参数 approve, 逻辑型, , 是否同意请求/邀请 + .参数 reason, 文本型, , 拒绝理由(仅在拒绝时有效) + + + +.子程序 设置群名片, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , 要设置的 QQ 号 + .参数 card, 文本型, , 群名片内容,空字符串表示删除群名片 + + + +.子程序 群组踢人, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , 要踢的 QQ 号 + .参数 reject_add_request, 逻辑型, , 拒绝此人的加群请求 + + + +.子程序 群组单人禁言, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 user_id, 文本型, , 要禁言的 QQ 号 + .参数 duration, 整数型, , 禁言时长,单位秒,0 表示取消禁言 + + + +.子程序 群组全员禁言, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 enable, 逻辑型, , 是否禁言 + + + +.子程序 退出群组, , 公开 + .参数 group_id, 文本型, , 群号 + .参数 is_dismiss, 文本型, , 是否解散,如果登录号是群主,则仅在此项为 真 时能够解散 + + + +.子程序 HTTP获取好友列表, 文本型, 公开 + .参数 HTTP地址, 文本型, , 示例:127.0.0.1:5700 + .参数 好友列表, 数_好友, 参考 数组, 请提供一个变量用于存放数据 + + + +.子程序 HTTP获取群列表, 文本型, 公开 + .参数 HTTP地址, 文本型, , 示例:127.0.0.1:5700 + .参数 群列表, 数_群, 参考 数组, 请提供一个变量用于存放数据 + + + +.子程序 HTTP发送私聊消息, 文本型, 公开, 成功返回消息ID + .参数 HTTP地址, 文本型, , 示例:127.0.0.1:5700 + .参数 user_id, 文本型, , 对方 QQ 号 + .参数 message, 文本型, , 要发送的内容 + .参数 auto_escape, 逻辑型, , 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 + + + +.子程序 HTTP发送群消息, 文本型, 公开, 成功返回消息ID + .参数 HTTP地址, 文本型, , 示例:127.0.0.1:5700 + .参数 group_id, 文本型, , 群号 + .参数 message, 文本型, , 要发送的内容 + .参数 auto_escape, 逻辑型, , 消息内容是否作为纯文本发送(即不解析 CQ 码),只在 message 字段是字符串时有效 + + + +.子程序 XML生成, 文本型, 公开, 返回生成好的CQ码 + .参数 BRIEF, 文本型 + .参数 URL, 文本型 + .参数 PICTURE_URL, 文本型 + .参数 TITLE, 文本型 + .参数 SUMMARY, 文本型 + .参数 SOURCE_NAME, 文本型 + .参数 SOURCE_ICON_URL, 文本型 + + + +.子程序 JSON生成, 文本型, 公开, 返回生成好的CQ码 + .参数 prompt, 文本型 + .参数 appName, 文本型 + .参数 iconUrl, 文本型 + .参数 title, 文本型 + .参数 data启用, 逻辑型 + .参数 data数组, 数_data, 可空 数组 + .参数 button启用, 逻辑型 + .参数 button数组, 数_button, 可空 数组 + + + +.子程序 At, 文本型, 公开, 返回生成好的CQ码 + .参数 qq, 文本型 + + + +.子程序 Image, 文本型, 公开, 返回生成好的CQ码 + .参数 file, 文本型, , 绝对路径、网络URL、Base64编码 + .参数 type, 文本型, 可空, 图片类型,flash 表示闪照,show 表示秀图,默认普通图片 + .参数 cache, 文本型, 可空, 0或1 只在通过网络 URL 发送时有效,表示是否使用已缓存的文件,默认 1 + .参数 id, 文本型, 可空, 发送秀图时的特效id,默认为40000 + .参数 c, 文本型, 可空, 通过网络下载图片时的线程数, 默认单线程. (在资源不支持并发时会自动处理) + .参数 subType, 文本型, 可空, 图片子类型, 只出现在群聊 + + + +.子程序 Cardimage, 文本型, 公开, 返回生成好的CQ码 + .参数 file, 文本型, , 和image的file字段对齐,支持也是一样的 + .参数 minwidth, 文本型, 可空, 默认不填为400,最小width + .参数 minheight, 文本型, 可空, 默认不填为400,最小height + .参数 maxwidth, 文本型, 可空, 默认不填为500,最大width + .参数 maxheight, 文本型, 可空, 默认不填为1000,最大height + .参数 source, 文本型, 可空, 分享来源的名称,可以留空 + .参数 icon, 文本型, 可空, 分享来源的icon图标url,可以留空 + .参数 cache, 文本型, 可空, 0或1 只在通过网络 URL 发送时有效,表示是否使用已缓存的文件,默认 1 + + + +.子程序 Reply, 文本型, 公开, 返回生成好的CQ码 + .参数 id, 文本型, , 回复时所引用的消息id, 必须为本群消息 + .参数 text, 文本型, 可空, 自定义回复的信息 + .参数 qq, 文本型, 可空, 自定义回复时的自定义QQ, 如果使用自定义信息必须指定 + .参数 time, 文本型, 可空, 可选. 自定义回复时的时间, 格式为Unix时间 + .参数 seq, 文本型, 可空, 起始消息序号, 可通过 get_msg 获得 + + + +.子程序 Record, 文本型, 公开, 返回生成好的CQ码 + .参数 file, 文本型, , 收到的语音文件名、绝对路径、网络URL、Base64编码 + + + +.子程序 Face, 文本型, 公开, 返回生成好的CQ码 + .参数 id, 文本型 + + + +.子程序 Poke, 文本型, 公开, 返回生成好的CQ码 + .参数 qq, 文本型, , 需要戳的成员 + + + +.子程序 TTS, 文本型, 公开, 返回生成好的CQ码 + .参数 text, 文本型, , 内容 + + + +.子程序 Share, 文本型, 公开, 返回生成好的CQ码 + .参数 url, 文本型, , URL + .参数 title, 文本型, , 标题 + .参数 content, 文本型, 可空, 发送时可选, 内容描述 + .参数 image, 文本型, 可空, 发送时可选, 图片 URL + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" new file mode 100644 index 0000000..9857a96 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\205\250\345\261\200\345\217\230\351\207\217.e.txt" @@ -0,0 +1,3 @@ +.版本 2 + +.全局变量 CQ, 类_CQHTTP diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\270\270\351\207\217.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\270\270\351\207\217.e.txt" new file mode 100644 index 0000000..72a6363 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\345\270\270\351\207\217.e.txt" @@ -0,0 +1,17 @@ +.版本 2 + +.常量 秀图_普通, "“40000”" +.常量 秀图_幻影, "“40001”" +.常量 秀图_抖动, "“40002”" +.常量 秀图_生日, "“40003”" +.常量 秀图_爱你, "“40004”" +.常量 秀图_征友, "“40005”" +.常量 图片子类型_正常图片, "“0”" +.常量 图片子类型_表情包, "“1”" +.常量 图片子类型_热图, "“2”" +.常量 图片子类型_斗图, "“3”" +.常量 图片子类型_智图, "“4”" +.常量 图片子类型_贴图, "“7”" +.常量 图片子类型_自拍, "“8”" +.常量 图片子类型_贴图广告, "“9”" +.常量 图片子类型_热搜图, "“13”" diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" new file mode 100644 index 0000000..834d708 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/go-cqhttp-e/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" @@ -0,0 +1,21 @@ +.版本 2 + +.数据类型 数_好友, 公开 + .成员 user_id, 文本型, , , QQ 号 + .成员 nickname, 文本型, , , 昵称 + .成员 remark, 文本型, , , 备注名 + +.数据类型 数_群, 公开 + .成员 group_id, 文本型, , , 群号 + .成员 group_name, 文本型, , , 群名称 + .成员 member_count, 文本型, , , 成员数 + .成员 max_member_count, 文本型, , , 最大成员数(群容量) + +.数据类型 数_data, 公开 + .成员 title, 文本型 + .成员 value, 文本型 + +.数据类型 数_button, 公开 + .成员 name, 文本型 + .成员 action, 文本型 + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277.desc.json" new file mode 100644 index 0000000..06abc19 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\易语言\\[]模块\\Gdi内存画板202108\\Gdi内存画板_精简.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/DLL.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/DLL.e.txt" new file mode 100644 index 0000000..d9a3d09 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/DLL.e.txt" @@ -0,0 +1,233 @@ +.版本 2 + +.DLL命令 选入设备场景_, 整数型, "gdi32.dll", "SelectObject", 公开 + .参数 设备场景句柄, 整数型 + .参数 对象句柄, 整数型 + +.DLL命令 删除对象_, 整数型, "gdi32.dll", "DeleteObject", 公开 + .参数 对象句柄, 整数型, , 一个GDI对象的句柄 + +.DLL命令 创建阴影刷子_, 整数型, "gdi32.dll", "CreateHatchBrush", 公开, 如果刷子不再需要,就用“删除对象_”将其删除 + .参数 刷子阴影类型, 整数型, , 请查看此参数的常量 + .参数 指定刷子的RGB前景色, 整数型, , 指定刷子的前景颜色值 + +.DLL命令 创建纯色刷子_, 整数型, "gdi32.dll", "CreateSolidBrush", 公开, 如果刷子不再需要,就用“删除对象_”将其删除 + .参数 颜色值, 整数型 + +.DLL命令 文本绘图_, 逻辑型, "gdi32.dll", "TextOutA", 公开, 非零表示成功,零表示失败。会设置GetLastError + .参数 设备场景, 整数型, , 设备场景的句柄 + .参数 横, 整数型, , 绘图的起点,采用逻辑坐标 + .参数 纵, 整数型, , 绘图的起点,采用逻辑坐标 + .参数 内容, 文本型, , 欲描绘的字串 + .参数 内容数量, 整数型, , 字串中要描绘的字符数量 + +.DLL命令 PolyPolygon_, 整数型, "gdi32", "PolyPolygon", 公开, 用当前选定画笔描绘两个或多个多边形。根据由SetPolyFillMode函数指定的多边形填充模式,用当前选定的刷子填充它们。每个多边形都必须是封闭的 非零表示成功,零表示失败。会设置GetLastError + .参数 hdc, 整数型, , 要在其中绘图的设备场景 + .参数 lpPoint, 坐标_整数, 数组, POINTAPI,nCount POINTAPI结构数组中的第一个POINTAPI结构 + .参数 lpPolyCounts, 整数型, 数组, 在Long值数组中的第一个条目。每个条目都包含了一定数量的点,用于构成一个封闭的多边形。lpPoint数组由一系列封闭的多边形构成,每个在lpPolyCounts数组中都有一个条目 + .参数 nCount, 整数型, , 要描绘的多边形总数(就是lpPolyCounts数组的大小)。至少为2; + +.DLL命令 PtInRect_, 逻辑型, "user32", "PtInRect", 公开, 这个函数判断指定的点是否位于矩形lpRect内部 非零表示成功,零表示失败。会设置GetLastError + .参数 lpRect, 矩形区域 + .参数 x, 整数型 + .参数 y, 整数型 + +.DLL命令 PtInRegion_, 逻辑型, "gdi32", "PtInRegion", 公开, 确定点是否在指定区域内 若点在区域内为非零值,否则为0 + .参数 hRgn, 整数型, , 区域句柄 + .参数 x, 整数型, , 以逻辑坐标表示的点的X坐标 + .参数 y, 整数型, , 以逻辑坐标表示的点的Y坐标在vb里使用在测试复杂图象时非常有用; + +.DLL命令 合并区域_, 整数型, "gdi32", "CombineRgn", 公开, 将两个区域组合为一个新区域 下列常数之一:; COMPLEXREGION:区域有互相交叠的边界; SIMPLEREGION:区域边界没有互相交叠; NULLREGION:区域为空; ERRORAPI:不能创建组合区域 + .参数 新区域句柄, 整数型, , 包含组合结果的区域句柄 + .参数 源区域1, 整数型, , 源区域1 + .参数 源区域2, 整数型, , 源区域2 + .参数 组合方式, 整数型, , 组合两区域的方法。可设为下述常数:RGN_AND:hDestRgn被设置为两个源区域的交集;RGN_COPY:hDestRgn被设置为hSrcRgn1的拷贝;RGN_DIFF:hDestRgn被设置为hSrcRgn1中与hSrcRgn2不相交的部分;RGN_OR:hDestRgn被设置为两个区域的并集;RGN_XOR:hDestRgn被设置为除两个源区域OR之外的部分。 + +.DLL命令 创建多点围成的区域_, 整数型, "gdi32", "CreatePolygonRgn", 公开, 创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多边形 执行成功为创建的区域句柄,失败则为0。如果区域句柄不再需要,就用“删除对象_”将其删除 + .参数 坐标组, 坐标_整数, 数组, POINTAPI,nCount个POINTAPI结构中的第一个POINTAPI结构 + .参数 多边形点数, 整数型, , 多边形的点数 + .参数 填充模式, 整数型, , 描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考SetPolyFillMode函数对多边形填充模式的解释; + +.DLL命令 创建矩形区域_, 整数型, "gdi32", "CreateRectRgn", 公开, 创建一个由点X1,Y1和X2,Y2描述的矩形区域 执行成功为区域句柄,失败则为零。如果区域句柄不再需要,就用“删除对象_”将其删除 + .参数 左上横坐标, 整数型, , 矩形左上角X,Y坐标 + .参数 左上纵坐标, 整数型, , 同上 + .参数 右下横坐标, 整数型, , 矩形右下角X,Y坐标; + .参数 右下纵坐标, 整数型, , 同上; + +.DLL命令 创建圆角矩形区域_, 整数型, "gdi32", "CreateRoundRectRgn", 公开, 创建一个圆角矩形,该矩形由X1,Y1-X2,Y2确定,并由X3,Y3确定的椭圆描述圆角弧度 执行成功则为区域句柄,失败则为0。如果区域句柄不再需要,就用“删除对象_”将其删除 + .参数 左上横坐标, 整数型, , 矩形左上角的X,Y坐标 + .参数 左上纵坐标, 整数型, , 同上 + .参数 右下横坐标, 整数型, , 矩形右下角的X,Y坐标 + .参数 右下纵坐标, 整数型, , 同上 + .参数 圆角椭圆的宽, 整数型, , 圆角椭圆的宽。其范围从0(没有圆角)到矩形宽(全圆) + .参数 圆角椭圆的高, 整数型, , 圆角椭圆的高。其范围从0(没有圆角)到矩形高(全圆); + +.DLL命令 创建内切椭圆_, 整数型, "gdi32", "CreateEllipticRgn", 公开, 创建一个椭圆区域,该椭圆与X1,Y1和X2,Y2坐标点确定的矩形内切 执行成功则为区域句柄,失败则为零。如果区域句柄不再需要,就用“删除对象_”将其删除 + .参数 左上角横坐标, 整数型, , 矩形左上角X,Y坐标 + .参数 左上角纵坐标, 整数型, , 同上 + .参数 右下角横坐标, 整数型, , 矩形右下角X,Y坐标; + .参数 右下角纵坐标, 整数型, , 同上; + +.DLL命令 刷子填充区域_, 整数型, "gdi32", "FillRgn", 公开, 用指定刷子填充指定区域 执行成功为非零值,失败则为0 + .参数 设备场景句柄, 整数型, , 设备场景句柄 + .参数 区域句柄, 整数型, , 以数据设备坐标填充的区域句柄 + .参数 刷子句柄, 整数型, , 要用的刷子的句柄; + +.DLL命令 画区域外框_, 整数型, "gdi32", "FrameRgn", 公开, 用指定刷子围绕指定区域画一个外框 执行成功返回非零值,失败为0 + .参数 设备场景, 整数型, , 设备场景句柄 + .参数 区域句柄, 整数型, , 将数据设备坐标填充的区域句柄 + .参数 刷子句柄, 整数型, , 将用的刷子句柄 + .参数 垂直边框宽度, 整数型, , 垂直边框宽度(以设备单元为单位) + .参数 水平边框高度, 整数型, , 水平边框高度(以设备单元为单位); + +.DLL命令 反转区域_, 整数型, "gdi32", "InvertRgn", 公开, 通过颠倒每个像素值反转设备场景指定区域 执行成功为非零值,失败为零 + .参数 设备场景句柄, 整数型, , 设备场景句柄 + .参数 将反转的区域, 整数型, , 将反转的设备区域; + +.DLL命令 移动区域_, 整数型, "gdi32", "OffsetRgn", 公开, 按指定偏移量平移指定区域 下列常数之一,以描述当前剪裁区:; COMPLEXREGION:该区域有互相交叠的边界; SIMPLEREGION:该区域边界没有互相交叠; NULLREGION:区域为空; ERRORAPI:发生了错误 + .参数 区域句柄, 整数型, , 区域句柄 + .参数 横向移动量, 整数型, , 以逻辑坐标表示的水平偏移量 + .参数 纵向移动量, 整数型, , 以逻辑坐标表示的垂直偏移量; + +.DLL命令 判断矩形区域_, 整数型, "gdi32", "RectInRegion", 公开, 确定矩形是否有部分在指定区域内 若矩形有部分在指定区域内为非零值,否则为0 + .参数 区域句柄, 整数型, , 区域句柄 + .参数 要测试的矩形结构, 矩形区域, , RECT,要测试的矩形结构; + +.DLL命令 设置窗口区域_, 整数型, "user32", "SetWindowRgn", 公开, 这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。
; 通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口,也可以将它分为两个或许多部分——实际上可以是任何形状 执行成功为非零值,失败为0 + .参数 窗口句柄, 整数型, , 将设置其区域的窗口 + .参数 区域, 整数型, , 将设置的区域的句柄,一旦设置了该区域,就不能使用或修改该区域句柄,也不要删除它 + .参数 自动刷新, 逻辑型, , Boolean,若为TRUE,则立即重画窗口; + +.DLL命令 画图标_, 整数型, "user32", "DrawIcon", 公开, 在指定的位置画一个图标 非零表示成功,零表示失败。会设置GetLastError + .参数 设备场景句柄, 整数型, , 设备场景 + .参数 横坐标, 整数型, , 想描绘图标的位置(逻辑坐标) + .参数 纵坐标, 整数型, , 同上 + .参数 图标句柄, 整数型, , 欲描绘图标的句柄; + +.DLL命令 画图标扩展_, 整数型, "user32", "DrawIconEx", 公开, 描绘一个图标或鼠标指针。与DrawIcon相比,这个函数提供了更多的功能 非零表示成功,零表示失败。会设置GetLastError + .参数 设备场景句柄, 整数型, , 要在其中画图的一个设备场景的句柄 + .参数 左边尽头, 整数型, , 图标左上角的位置,用逻辑坐标表示 + .参数 顶边尽头, 整数型, , 同上 + .参数 图标句柄, 整数型, , 要描绘的图标的句柄 + .参数 描绘宽度, 整数型, , 希望的图标宽度和高度。图标会自动缩放,与指定的值相符 + .参数 描绘高度, 整数型, , 同上 + .参数 描绘的帧, 整数型, , 如果hIcon是个动画指针,那么该参数指定描绘动画中的哪幅图象。注意Win32不能区分图标和指针 + .参数 刷子句柄, 整数型, , 如设为一个刷子句柄,那么函数会将图标画入一幅内存位图,并用背景色填充。随后,将图象直接复制到指定的位置。这样做可绘图时减少闪烁(因为画图过程中重现) + .参数 描绘标志, 整数型, , 下述常数之一:;DI_COMPAT:描绘标准的系统指针,而不是指定的图象;DI_DEFAULTSIZE:忽略cxWidth和cyWidth设置,并采用原始的图标大小;DI_IMAGE:绘图时使用图标的XOR部分(即图标没有透明区域);DI_MASK:绘图时使用图标的MASK部分(如单独使用,可获得图标的掩模);DI_NORMAL:用常规方式绘图(合并 DI_IMAGE 和 DI_MASK); + +.DLL命令 清除图标_, 整数型, "user32", "DestroyIcon", 公开, 清除图标 非零表示成功,零表示失败。会设置GetLastError + .参数 图标句柄, 整数型, , 图标句柄; + +.DLL命令 SetTextJustification_, 整数型, "gdi32", "SetTextJustification", 公开, 通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理 非零表示成功,零表示失败。会设置GetLastError + .参数 hdc, 整数型, , 设备场景的句柄 + .参数 nBreakExtra, 整数型, , 描绘时欲添加到字串的额外空间大小 + .参数 nBreakCount, 整数型, , 用于分散额外空间的分隔字符的数量在VB里使用如使用了这个函数,要确定针对VB窗体或控件清除错误条件; + +.DLL命令 刷子起点_, 整数型, "gdi32", "GetBrushOrgEx", 公开, 判断指定设备场景中当前选定刷子起点 非零表示成功,零表示失败。会设置GetLastError + .参数 设备场景句柄, 整数型, , 设备场景的句柄 + .参数 点, 坐标_整数, , POINTAPI,这个结构用来装载当前刷子的起点; + +.DLL命令 设置刷子起点_, 整数型, "gdi32", "SetBrushOrgEx", 公开, 为指定的设备场景设置当前选定刷子的起点 非零表示成功,零表示失败。会设置GetLastError + .参数 设备场景句柄, 整数型, , 设备场景的句柄 + .参数 定义起点x, 整数型, , 刷子的新起点,采用设备坐标表示。取值范围在0-7之间(不需要更大的值,因为windows95下最大的刷子的尺寸是8×8;而这个函数在NT下是不必要的) + .参数 定义起点y, 整数型, , 同上 + .参数 装载结构, 坐标_整数, , POINTAPI,用于装载前一个刷子的起点 在vb里使用注意完成以后一定要将设备场景的刷子起点设为0,0。既可明确指定坐标,也可用RestoreDC函数恢复恢复原始的DC; + +.DLL命令 设置时钟_, 整数型, "user32", "SetTimer", 公开, 安装系统定时器 + .参数 窗口句柄, 整数型 + .参数 事件标识符, 整数型 + .参数 时钟周期, 整数型 + .参数 回调函数地址, 整数型 + +.DLL命令 销毁时钟_, 整数型, "user32", "KillTimer", 公开, 中止定时器 + .参数 窗口句柄, 整数型 + .参数 事件标识符, 整数型 + +.DLL命令 获取最小矩形_, 整数型, "gdi32", "GetRgnBox", 公开, 获取完全包含指定区域的最小矩形 下列常数之一,以描述当前剪裁区:; COMPLEXREGION:该区域有互相交叠的边界; SIMPLEREGION:该区域边界没有互相交叠; NULLREGION:区域为空; ERRORAPI:发生了错误 + .参数 区域, 整数型, , 区域句柄 + .参数 矩形区域, 矩形区域, , RECT,矩形结构,装载完全包含指定区域的矩形; + +.DLL命令 剪裁矩形区_, 整数型, "gdi32", "ExcludeClipRect", 公开, 从专用设备场景的剪裁区中去掉一个由点X1,Y1和X2,Y2确定的矩形区。矩形内不能进行绘图 返回以下常数之一以描述所得剪裁区:; COMPLEXREGION:区域边界互相交叠; SIMPLEREGION:区域边界没有互相交叠; NULLREGION:区域为空; ERRORAPI:发生了错误 + .参数 设备场景句柄, 整数型, , 要修改的设备场景 + .参数 被剪裁矩形区左上角的横坐标, 整数型, , 矩形(逻辑坐标)左上角的X,Y坐标 + .参数 被剪裁矩形区左上角的纵坐标, 整数型, , 同上 + .参数 被剪裁矩形区右下角的横坐标, 整数型, , 矩形(逻辑坐标)右下角的X,Y坐标,矩形的右边和下边不会从剪裁区中移走 + .参数 被剪裁矩形区右下角的纵坐标, 整数型, , 同上; + +.DLL命令 定义剪裁区_, 整数型, "gdi32", "IntersectClipRect", 公开, 为指定设备定义一个新的剪裁区,该区为当前剪裁区与由点X1,Y1和X2,Y2定义的矩形的交集 下列常数之一,以描述当前剪裁区:; COMPLEXREGION:该区域有互相交叠的边界; SIMPLEREGION:该区域边界没有互相交叠; NULLREGION:区域为空; ERRORAPI:发生了错误 + .参数 设备场景句柄, 整数型, , 设备场景 + .参数 矩形左上角横坐标, 整数型, , 矩形左上角X,Y坐标 + .参数 矩形左上角纵坐标, 整数型, , 同上 + .参数 矩形右下角横坐标, 整数型, , 矩形右下角X,Y坐标 + .参数 矩形右下角纵坐标, 整数型, , 同上; + +.DLL命令 GdipDeletePath, 整数型, "gdiplus", "GdipDeletePath", 公开 + .参数 path, 整数型 + +.DLL命令 CombineTransform_, 整数型, "gdi32", "CombineTransform", 公开, 驱动世界转换。它相当于依顺序进行两次转换 执行成功为TRUE(非零),失败则为零 + .参数 保存转换结果, XFORM, , xform,保存转换结果的结构 + .参数 第一个结构, XFORM, , xform,按顺序的第一个结构 + .参数 第二个结构, XFORM, , xform,按顺序的第二个结构适用平台Windows NT; + +.DLL命令 GetWorldTransform_, 整数型, "gdi32", "GetWorldTransform", 公开, 如果有世界转换,为设备场景获取当前世界转换 执行成功为非零值,失败为0 + .参数 hdc, 整数型, , 设备场景句柄 + .参数 lpXform, XFORM, , xform,装载设备场景当前世界转换的结构适用平台Windows NT; + +.DLL命令 偏移矩形_, 整数型, "user32", "OffsetRect", 公开, 该函数通过应用一个指定的偏移,从而让矩形移动起来。x会添加到右侧和左侧区域。y添加到顶部和底部区域。偏移方向则取决于参数是正数还是负数,以及采用的是什么坐标系统 非零表示成功,零表示失败。会设置GetLastError + .参数 目标矩形, 矩形区域, , RECT,欲移动的矩形 + .参数 水平偏移量, 整数型, , 水平偏移量 + .参数 垂直偏移量, 整数型, , 垂直偏移量; + +.DLL命令 拷贝矩形结构_, 整数型, "user32", "CopyRect", 公开, 将矩形的lpSourceRect内容复制给矩形lpDestRect 非零表示成功,零表示失败。会设置GetLastError + .参数 目标矩形, 矩形区域, , RECT,目标矩形结构 + .参数 源矩形, 矩形区域, , RECT,源矩形; + +.DLL命令 修改矩形_, 整数型, "user32", "InflateRect", 公开, 这个函数用于增大或减小一个矩形的大小。x加在右侧区域,并从左侧区域减去;如x为正,则能增大矩形的宽度;如x为负,则能减小它。y对顶部与底部区域产生的影响是是类似的 非零表示成功,零表示失败。会设置GetLastError + .参数 修改的矩形, 矩形区域, , RECT,欲修改的矩形 + .参数 修改的宽度, 整数型, , 用这个数字修改宽度 + .参数 修改的高度, 整数型, , 用这个数字修改高度; + +.DLL命令 载入矩形_, 整数型, "user32", "IntersectRect", 公开, 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集。如两个源矩形根本未发生重叠,则lpDestRect会被设为一个空矩形 非零表示成功,零表示失败。会设置GetLastError + .参数 目标矩形, 矩形区域, , RECT,目标矩形,用于包含lpSrc1Rect与lpSrc2Rect两个矩形的重合部分 + .参数 源矩形1, 矩形区域, , RECT,第一个源矩形 + .参数 源矩形2, 矩形区域, , RECT,第二个源矩形; + +.DLL命令 SubtractRect_, 整数型, "user32", "SubtractRect", 公开, 这个函数会装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 TRUE(非零)表示成功,零表示失败 + .参数 lprcDst, 矩形区域, , RECT,准备包容lprcSrc1减lprcSrc2结果的目标矩形 + .参数 lprcSrc1, 矩形区域, , RECT,第一个源矩形 + .参数 lprcSrc2, 矩形区域, , RECT,第二个源矩形; + +.DLL命令 UnionRect_, 整数型, "user32", "UnionRect", 公开, 这个函数会装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果。目标矩形的所有点都同时位于两个源矩形里;也即是它们的一个交集 非零表示成功,零表示失败。会设置GetLastError + .参数 lpDestRect, 矩形区域, , RECT,用于容纳lpSrc1Rect和lpSrc2Rect联合运算结果的目标矩形 + .参数 lpSrc1Rect, 矩形区域, , RECT,第一个源矩形 + .参数 lpSrc2Rect, 矩形区域, , RECT,第二个源矩形; + +.DLL命令 设置矩形_, 整数型, "user32", "SetRect", 公开, 设置指定矩形的内容 非零表示成功,零表示失败。会设置GetLastError + .参数 矩形, 矩形区域, , RECT,欲设置的矩形 + .参数 左边, 整数型, , 左侧区域(Left)的值 + .参数 顶边, 整数型, , 顶部区域(Top)的值 + .参数 右边, 整数型, , 右侧区域(Right)的值 + .参数 底边, 整数型, , 底部区域(Bottom)的值; + +.DLL命令 拷贝_整数数组到字节集, , "kernel32.dll", "RtlMoveMemory", 公开 + .参数 pBlock, 字节集 + .参数 缓冲区, 整数型, 数组 + .参数 尺寸, 整数型 + +.DLL命令 拷贝_字节集到整数数组, , "kernel32.dll", "RtlMoveMemory", 公开 + .参数 pBlock, 整数型, 数组 + .参数 缓冲区, 字节集 + .参数 尺寸, 整数型 + +.DLL命令 移动设备场景_, 整数型, "gdi32", "OffsetViewportOrgEx", 公开, 平移设备场景视口区域(设备环境的观察窗原点) 执行成功为非零值,失败为0 + .参数 设备场景句柄, 整数型, , 设备场景句柄 + .参数 横向移动量, 整数型, , 将加到视口起点的水平和垂直偏移量(以设备坐标表示) + .参数 纵向移动量, 整数型, , 同上 + .参数 源设备场景起始位置, 坐标_整数, , POINTAPI,装载设备场景视口原先的起点的结构,以设备坐标表示; + +.DLL命令 移动设备场景起始位置_, 整数型, "gdi32", "OffsetWindowOrgEx", 公开, 平移指定设备场景窗口起点(设备环境的窗口原点) 执行成功为非零值,失败为0 + .参数 设备场景句柄, 整数型, , 设备场景句柄 + .参数 横向移动量, 整数型, , 以逻辑坐标表示的窗口起点 + .参数 纵向移动量, 整数型, , 同上 + .参数 源起始位置, 坐标_整数, , POINTAPI,装载DC窗口原有的起点的的结构,以逻辑坐标表示; + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" new file mode 100644 index 0000000..d50a84f --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" @@ -0,0 +1,113 @@ +.版本 2 + +.程序集 __HIDDEN_TEMP_MOD__, , 公开 +.子程序 取类方法指针, 整数型, 公开, 获取一个类模块中某方法的指针,生成类回调,**只能在类里使用** + .参数 nIndex, 整数型, , 方法序号,从1开始 + + + +.子程序 释放类方法指针, 逻辑型, 公开 + .参数 方法指针, 整数型, , 取类方法指针()的返回值 + + + +.子程序 取低位_, 短整数型, 公开 + .参数 数值, 整数型 + + + +.子程序 取高位_, 短整数型, 公开 + .参数 数值, 整数型 + + + +.子程序 GdiplusW2A, 文本型, 公开, 将Unicode转成Ansi + .参数 Unicode文本, 字节集 + + + +.子程序 GdiplusA2W, 字节集, 公开, 将Ansi转成Unicode + .参数 Ansi文本, 文本型 + + + +.子程序 RGB到ARGB, 整数型, 公开 + .参数 RGB颜色, 整数型 + .参数 透明度, 字节型, 可空, 默认为255,不透明。 + + + +.子程序 ARGB到RGB, 整数型, 公开 + .参数 ARGB颜色, 整数型 + .参数 透明度, 字节型, 参考 可空 + + + +.子程序 到矩形区_X, 矩形区_X, 公开 + .参数 左边, 小数型, 可空, 如果省略,默认为0 + .参数 顶边, 小数型, 可空, 同上 + .参数 右边, 小数型, 可空, 同上 + .参数 底边, 小数型, 可空, 同上 + + + +.子程序 到矩形区_S, 矩形区_S, 公开 + .参数 左边, 小数型, 可空, 如果省略,默认为0 + .参数 顶边, 小数型, 可空, 同上 + .参数 宽度, 小数型, 可空, 同上 + .参数 高度, 小数型, 可空, 同上 + + + +.子程序 置窗口透明度_, 逻辑型, 公开 + .参数 窗口句柄, 整数型 + .参数 透明颜色, 整数型, 可空, 可空。指定窗口中透明部分的颜色。如果被省略,默认为白色。 + .参数 透明度, 字节型, 可空, 可空。默认为不透明。值为:0-255之间,0=完全透明,255=完全不透明 + + + +.子程序 到整数坐标, 坐标_整数, 公开 + .参数 X, 整数型, 可空 + .参数 Y, 整数型, 可空 + + + +.子程序 到小数坐标, 坐标_小数, 公开 + .参数 X, 小数型, 可空 + .参数 Y, 小数型, 可空 + + + +.子程序 坐标_整数到小数, 坐标_小数, 公开 + .参数 整数坐标, 坐标_整数 + + + +.子程序 坐标_小数到整数, 坐标_整数, 公开 + .参数 小数坐标, 坐标_小数 + + + +.子程序 计算XFORM_指定点旋转, XFORM, 公开, 用三角函数计算的结果 + .参数 旋转角度, 小数型 + .参数 旋转点横坐标, 小数型, 可空 + .参数 旋转点纵坐标, 小数型, 可空 + + + +.子程序 计算XFORM_指定点缩放, XFORM, 公开, 调用API“CombineTransform_”转换的结果 + .参数 横向缩放比例, 小数型, 可空, 如果参数被省略,默认为1 + .参数 纵向缩放比例, 小数型, 可空, 如果参数被省略,默认为1 + .参数 缩放点横坐标, 小数型, 可空 + .参数 缩放点纵坐标, 小数型, 可空 + + + +.子程序 计算XFORM_指定点倾斜, XFORM, 公开, 调用API“CombineTransform_”转换的结果 + .参数 横向倾斜角度, 小数型, 可空 + .参数 纵向倾斜角度, 小数型, 可空 + .参数 倾斜点横坐标, 小数型, 可空 + .参数 倾斜点纵坐标, 小数型, 可空 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\206\205\345\255\230\347\224\273\346\235\277.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\206\205\345\255\230\347\224\273\346\235\277.class.e.txt" new file mode 100644 index 0000000..c5509a0 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\206\205\345\255\230\347\224\273\346\235\277.class.e.txt" @@ -0,0 +1,635 @@ +.版本 2 + +.程序集 内存画板, , 公开 +.子程序 创建, 逻辑型, 公开 + .参数 宽度, 整数型, , 欲创建内存画板的宽度 + .参数 高度, 整数型, , 欲创建内存画板的高度 + .参数 画板背景色, 整数型, 可空 + .参数 非兼容位图, 逻辑型, 可空, 指定创建画板时关联位图的创建方式,本参数为假(默认)会创建与设备有关的位图(DDB),本参数为真会创建与设备无关的位图(DIB)。DDB位图的颜色与显示驱动兼容,位深和像素格式保持一致;DIB位图可以容纳更加丰富的色彩,但显示速度比兼容位图稍慢。欲知两者的详情请查看API手册 + + + +.子程序 创建_场景句柄, 逻辑型, 公开, 将一个设备场景句柄(HDC)作为画板,可作为指定设备场景的扩展,如果用本方法创建,那么仅绘制命令有效,一些命令无效,如:置画板尺寸、取画板宽度、取画板高度、取位图句柄…… + .参数 设备场景句柄, 整数型, , 指定一个HDC目标 + .参数 画板背景色, 整数型, 可空, 默认背景色,当清除画板时默认的背景填充颜色 + + + +.子程序 销毁, , 公开 + + +.子程序 是否已创建, 逻辑型, 公开 + + +.子程序 置画板尺寸, , 公开, 重置内存画板尺寸(高,宽)多余处将被重画 + .参数 新宽度, 整数型, 可空, 欲重置内存场景位图的宽度,如果参数为空,画板宽度不修改 + .参数 新高度, 整数型, 可空, 欲重置内存场景位图的高度,如果参数为空,画板高度不修改 + + + +.子程序 图片优化模式, , 公开 + .参数 平滑模式, 整数型, 可空, “平滑模式_”开头的常量 + .参数 算法模式, 整数型, 可空, “算法模式_”开头的常量 + .参数 偏移模式, 整数型, 可空, “像素偏移模式_”开头的常量 + + + +.子程序 画笔类型, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 类型, 整数型, 可空, “画笔类型_”开头常量 + + + +.子程序 画笔类型_2, , 公开 + .参数 画笔笔尖样式, 整数型, 可空, “笔尖样式_”开头的常量 + .参数 连线方式, 整数型, 可空, “连线方式_”开头的常量 + + + +.子程序 画出方式, 整数型, 公开 + .参数 方式, 整数型, 可空, “画出方式_”开头的常量 + + + +.子程序 画笔粗细, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 宽度, 整数型, 可空 + + + +.子程序 画笔颜色, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 颜色, 整数型, 可空, 要设置的RGB颜色,为空则返回当前RGB颜色 + + + +.子程序 刷子类型, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 类型, 整数型, 可空, “刷子类型_”开头的常量 + + + +.子程序 刷子类型_图案, , 公开, 纹理刷子,用于图案填充 + .参数 有效的位图句柄, 整数型, , 调用图片对象、内存画板、分层画板中的命令“取位图句柄()”返回的位图句柄或其他方式获取的有效的位图句柄 + + + +.子程序 刷子颜色, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 颜色, 整数型, 可空 + + + +.子程序 文本颜色, 整数型, 公开 + .参数 颜色, 整数型, 可空 + + + +.子程序 背景填充颜色, 整数型, 公开, 获取或设置【文本背景和刷子背景】的填充颜色(如:刷子类型_横线 时填充的背景颜色) + .参数 颜色, 整数型, 可空, 设置文本背景颜色或刷子的背景填充颜色,不同于画板的背景颜色 + + + +.子程序 背景填充模式, 逻辑型, 公开, 如果是透明模式返回真,否则返回假。获取或设置【文本背景和刷子背景】的填充模式 + .参数 透明模式, 逻辑型, 可空, 真为透明模式(文本背景透明和刷子背景透明,如:刷子类型_横线 时的填充效果),假为文本背景颜色的填充模式和刷子背景不透明 + + + +.子程序 字体, 字体, 公开 + .参数 字体, 字体, 可空 + + + +.子程序 字体属性, , 公开 + .参数 字体名称, 文本型, 可空 + .参数 字体大小, 整数型, 可空, 单位为点(1 / 72 英寸) + .参数 字体宽度, 整数型, 可空, 自定义的字体宽度,如果参数二“字体大小”为空时才有效 + .参数 字体高度, 整数型, 可空, 自定义的字体高度,如果参数二“字体大小”为空时才有效 + .参数 加粗, 逻辑型, 可空 + .参数 倾斜, 逻辑型, 可空 + .参数 下划线, 逻辑型, 可空 + .参数 删除线, 逻辑型, 可空 + .参数 角度, 整数型, 可空, 以 1 / 10 度为单位 + + + +.子程序 写出, , 公开, 在当前写出位置处写出指定的文本,自动调整写出位置到所写出数据的末位置。 + .参数 欲写出文本, 文本型 + + + +.子程序 写出W, , 公开, 在当前写出位置处写出指定的文本,自动调整写出位置到所写出数据的末位置。 + .参数 Unicode文本, 字节集 + + + +.子程序 置写出位置, , 公开 + .参数 横向写出位置, 整数型, 可空, 如果参数为空,横向写出位置不做任何修改 + .参数 纵向写出位置, 整数型, 可空, 如果参数为空,纵向写出位置不做任何修改 + .参数 相对位置, 逻辑型, 可空, 如果本参数为真,则会在当前的写出位置偏移设置的距离。否则会将写出位置设置为指定的值 + + + +.子程序 取写出位置, 坐标_整数, 公开 + + +.子程序 写文本行, , 公开, 在当前写出位置写出指定的文本,并将现行写出位置调整到下行行首。 + .参数 欲写出文本, 文本型 + .参数 增减行间距, 整数型, 可空, 在默认情况下的行间距是否要增减 + .参数 增减方式, 整数型, 可空, 增减行间距的方式,只有参数二不为0时才有效。1:行间距增加到文本的下方;0:在文本的上下方各增加一半的间距;-1:行间距增加到文本的上方 + + + +.子程序 写文本行W, , 公开, 在当前写出位置写出指定的文本,并将现行写出位置调整到下行行首。 + .参数 Unicode文本, 字节集 + .参数 增减行间距, 整数型, 可空, 在默认情况下的行间距是否要增减 + .参数 增减方式, 整数型, 可空, 增减行间距的方式,只有参数二不为0时才有效。1:行间距增加到文本的下方;0:在文本的上下方各增加一半的间距;-1:行间距增加到文本的上方 + + + +.子程序 写文本_矩形内, 整数型, 公开, API:DrawTextA + .参数 欲写出文本, 文本型 + .参数 字串数量, 整数型, 可空, 欲写出的字符数量。如果要写出整个字串(直到空中止符),则可将这个参数设为-1。如果参数被省略,默认为-1。 + .参数 描绘区域, 矩形区域 + .参数 对齐格式, 整数型, 可空, 参考“DT_”开头的常量,可以使用“位或()”增加多个常量值。 + + + +.子程序 定位写出, , 公开, 在指定写出位置处写出指定的文本,不改变现行写出位置。 + .参数 横向写出位置, 整数型, 可空, 如果省略,则使用现行横向写出位置 + .参数 纵向写出位置, 整数型, 可空, 如果省略,则使用现行纵向写出位置 + .参数 欲写出文本, 文本型 + + + +.子程序 定位写出W, , 公开, 在指定写出位置处写出指定的文本,不改变现行写出位置。 + .参数 横向写出位置, 整数型, 可空, 如果省略,则使用现行横向写出位置 + .参数 纵向写出位置, 整数型, 可空, 如果省略,则使用现行纵向写出位置 + .参数 Unicode文本, 字节集 + + + +.子程序 取画板宽度, 整数型, 公开 + + +.子程序 取画板高度, 整数型, 公开 + + +.子程序 取文本宽度, 整数型, 公开 + .参数 文本, 文本型 + + + +.子程序 取文本宽度W, 整数型, 公开 + .参数 Unicode文本, 字节集 + + + +.子程序 取文本高度, 整数型, 公开 + .参数 文本, 文本型 + + + +.子程序 取文本高度W, 整数型, 公开 + .参数 Unicode文本, 字节集 + + + +.子程序 复制, 逻辑型, 公开 + .参数 目标场景句柄, 整数型, 可空 + .参数 目标左边, 整数型, 可空, 粘贴到目标场景中左上角位置,默认为0 + .参数 目标顶边, 整数型, 可空, 粘贴到目标场景中左上角位置,默认为0 + .参数 目标宽度, 整数型, 可空, 粘贴到目标场景中的宽度,如果为空,则以参数【源宽度】为准。 + .参数 目标高度, 整数型, 可空, 粘贴到目标场景中的高度,如果为空,则以参数【源高度】为准。 + .参数 源场景句柄, 整数型, 可空, 被复制的场景句柄,如果为空默认为本画板的内存场景句柄。 + .参数 源左边, 整数型, 可空, 被复制的位置,如果省略,默认为0 + .参数 源顶边, 整数型, 可空, 被复制的位置,如果省略,默认为0 + .参数 源宽度, 整数型, 可空, 被复制源的宽度,为空时则以“源左边”到本画板最右边的宽度。 + .参数 源高度, 整数型, 可空, 被复制源的高度,为空时则以“源顶边”到本画板最下边的高度。 + .参数 复制方法, 整数型, 可空, 光栅运算_ 开头的常量,默认为#光栅运算_拷贝。注意:如果为参数【透明参数】提供参数值将忽略本参数。 + .参数 透明参数, 整数型, 可空, 注意:如果参数【透明混合】为真,此参数为透明度(0-255);【透明混合】为假,此参数为透明颜色值。 + .参数 透明混合, 逻辑型, 可空, 复制的透明模式,默认为假。如果参数【透明参数】为空时本参数无意义 + + + +.子程序 复制到窗口, , 公开 + .参数 窗口句柄, 整数型 + .参数 透明色, 整数型, 可空 + .参数 是否拉伸, 逻辑型, 可空, 如果窗口客户区和画板尺寸不同时,复制到窗口时是否要拉伸到整个窗口区域。如:窗口背景图 + + + +.子程序 取场景句柄, 整数型, 公开, 取出内存画板的设备环境句柄,可用于在本模块之外编写扩展功能的命令 + + +.子程序 取位图句柄, 整数型, 公开 + + +.子程序 取图片宽度, 整数型, 公开 + .参数 图片, 字节集 + + + +.子程序 取图片高度, 整数型, 公开 + .参数 图片, 字节集 + + + +.子程序 清除, , 公开 + .参数 清除区域, 矩形区域, 可空, 画板的清除区域,如果参数为空时将会清除画板的所有内容 + + + +.子程序 背景颜色, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 颜色, 整数型, 可空 + .参数 替换背景, 逻辑型, 可空, 真为修改属性值后,替换画板的背景颜色;假为仅修改属性值,对画板不做任何修改 + + + +.子程序 取图片, 字节集, 公开, 取出画板上现有内容的图片数据,返回为 BMP 格式的图片数据 + .参数 输出宽度, 整数型, 可空 + .参数 输出高度, 整数型, 可空 + .参数 背景替换颜色, 整数型, 可空, 可用指定的颜色替换输出图像的背景颜色。如果本参数被省略,则背景部分被原样加入到输出图像中 + + + +.子程序 填充矩形, , 公开 + .参数 矩形左上角横坐标, 整数型 + .参数 矩形左上角纵坐标, 整数型 + .参数 矩形右下角横坐标, 整数型 + .参数 矩形右下角纵坐标, 整数型 + + + +.子程序 画矩形, , 公开 + .参数 矩形左上角横坐标, 整数型 + .参数 矩形左上角纵坐标, 整数型 + .参数 矩形右下角横坐标, 整数型 + .参数 矩形右下角纵坐标, 整数型 + + + +.子程序 画直线, , 公开 + .参数 起始点横坐标, 整数型 + .参数 起始点纵坐标, 整数型 + .参数 结束点横坐标, 整数型 + .参数 结束点纵坐标, 整数型 + + + +.子程序 画直线_2, , 公开, 从当前的画笔位置画一条线到指定的点 + .参数 目标点横坐标, 整数型 + .参数 目标点纵坐标, 整数型 + + + +.子程序 画连续线, , 公开, 描绘一系列线段,需预先指定连续线段的画笔起始位置,可用命令:置画笔位置()。 + .参数 线段顶点, 坐标_整数, 数组, 不包含起始点 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画图片, , 公开 + .参数 图片句柄, 整数型, , 画图片之后不会自动卸载,图片句柄可以重复使用 + .参数 图片左边画出位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 图片顶边画出位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 图片画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的宽度 + .参数 图片画出高度, 小数型, 可空, 在画板中画出图片的高度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的高度 + .参数 尺寸模式, 字节型, 可空, 本参数设置图片画出尺寸(参数四或参数五被省略时)的计算模式。本参数等于0,按图片原尺寸画出;本参数等于1,按图片原尺寸等比例计算出宽高;本参数等于2,按图片原尺寸的百分比计算出宽高 + + + +.子程序 画图片_裁剪, , 公开 + .参数 图片句柄, 整数型, , 画图片之后不会自动卸载,图片句柄可以重复使用 + .参数 图片左边画出位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 图片顶边画出位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 图片画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果省略,则使用图片本身的宽度 + .参数 图片画出高度, 小数型, 可空, 在画板中画出图片的高度。如果省略,则使用图片本身的高度 + .参数 截取图片左边位置, 小数型, 可空, 截取图片中一部分的左边位置,如果省略,默认为0 + .参数 截取图片顶边位置, 小数型, 可空, 截取图片中一部分的顶边位置,如果省略,默认为0 + .参数 截取图片宽度, 小数型, 可空, 截取图片中一部分的宽度,如果省略,默认为图片本身的宽度 + .参数 截取图片高度, 小数型, 可空, 截取图片中一部分的高度,如果省略,默认为图片本身的高度 + .参数 应用效果, 图片编辑类, 可空, 画出的图片是否同时具备某些效果 + + + +.子程序 载入图片数据, 整数型, 公开, 成功返回图片句柄,失败返回0。加载之前会释放内存中上次载入的图片数据。 + .参数 图片数据, 字节集, , 欲载入的图片数据 + .参数 旋转翻转, 整数型, 可空, 参考 翻转类型_ 开头的常量 + + + +.子程序 载入图片文件, 整数型, 公开, 成功返回图片句柄,失败返回0。加载之前会释放内存中上次载入的图片数据。 + .参数 图片路径, 文本型, , 欲载入的图片文件 + .参数 旋转翻转, 整数型, 可空, 参考 翻转类型_ 开头的常量 + + + +.子程序 卸载图片, , 公开, 释放画板上次载入的图片数据 + + +.子程序 取点, 整数型, 公开, 返回画板上指定点的颜色值 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + + + +.子程序 画点, , 公开 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + .参数 欲置入的颜色值, 整数型, 可空 + + + +.子程序 画弦, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + .参数 弧线起始点横坐标, 整数型 + .参数 弧线起始点纵坐标, 整数型 + .参数 弧线终止点横坐标, 整数型 + .参数 弧线终止点纵坐标, 整数型 + + + +.子程序 画饼, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + .参数 弧线起始点横坐标, 整数型 + .参数 弧线起始点纵坐标, 整数型 + .参数 弧线终止点横坐标, 整数型 + .参数 弧线终止点纵坐标, 整数型 + + + +.子程序 画饼_2, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + + + +.子程序 画圆, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + + + +.子程序 画椭圆, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + + + +.子程序 画圆弧_角度, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + + + +.子程序 画圆弧_端点, , 公开 + .参数 圆心横坐标, 小数型, , 画出圆弧的半径为圆心到起点的距离(由前四个参数决定) + .参数 圆心纵坐标, 小数型, , 同上 + .参数 起点横坐标, 小数型, , 起点位置不同画出的圆弧半径也不同 + .参数 起点纵坐标, 小数型, , 同上 + .参数 终点横坐标, 小数型, , 终点位置不参与半径的计算 + .参数 终点纵坐标, 小数型, , 同上 + + + +.子程序 画弧线, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + .参数 弧线起始点横坐标, 整数型 + .参数 弧线起始点纵坐标, 整数型 + .参数 弧线终止点横坐标, 整数型 + .参数 弧线终止点纵坐标, 整数型 + + + +.子程序 画弧线_2, , 公开 + .参数 椭圆左上角横坐标, 整数型 + .参数 椭圆左上角纵坐标, 整数型 + .参数 椭圆右下角横坐标, 整数型 + .参数 椭圆右下角纵坐标, 整数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + + + +.子程序 画多边形, , 公开, 画一个封闭的多边形。 + .参数 多边形顶点, 坐标_整数, 数组, 本参数数组顺序记录多边形各顶点的横向及纵向坐标值 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画圆角矩形, , 公开 + .参数 矩形左上角横坐标, 整数型 + .参数 矩形左上角纵坐标, 整数型 + .参数 矩形右下角横坐标, 整数型 + .参数 矩形右下角纵坐标, 整数型 + .参数 圆角宽度, 整数型, 可空 + .参数 圆角高度, 整数型, 可空 + + + +.子程序 画贝塞尔曲线, , 公开, 由三点为一组(控制点、控制点、顶点)生成贝塞尔曲线。注意:起始顶点需要预先指定,可用命令:置画笔位置()。 + .参数 曲线控制点, 坐标_整数, 数组, 本数组按顺序记录曲线各个控制点的横向及纵向坐标值(不包含起始顶点),数组成员数建议为3的倍数。 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 反转矩形区, , 公开, 将画板上指定矩形区域的颜色翻转过来 + .参数 矩形左上角横坐标, 整数型 + .参数 矩形左上角纵坐标, 整数型 + .参数 矩形右下角横坐标, 整数型 + .参数 矩形右下角纵坐标, 整数型 + + + +.子程序 置画笔位置, 逻辑型, 公开, 置画笔起始位置,可结合画线命令使用 + .参数 横坐标, 整数型 + .参数 纵坐标, 整数型 + + + +.子程序 取画笔位置, 坐标_整数, 公开 + + +.子程序 填充_单色边界, , 公开, 从指定的点向外填充,直到找到了边界颜色,在边界采用了一种颜色时使用 + .参数 填充点横坐标, 整数型 + .参数 填充点纵坐标, 整数型 + .参数 边界颜色, 整数型, , 要使用的边界颜色 + + + +.子程序 填充_多色边界, , 公开, 从指定的点向外填充,仅填充指定点的颜色所在的区域,在边界含有多种颜色时使用 + .参数 填充点横坐标, 整数型 + .参数 填充点纵坐标, 整数型 + + + +.子程序 画组合曲线, 逻辑型, 公开, API:PolyDraw,描绘一条复杂的曲线,由线段及贝塞尔曲线组成 + .参数 顶点控制点, 坐标_整数, 数组, 用于描绘曲线的顶点和控制点 + .参数 描绘类型, 字节型, 数组, 这个数组定义了与每个坐标对应的操作类型。"PT_"开头的常量,其中包括:PT_MOVETO:坐标是一幅新打开图形的起点;PT_LINETO:坐标是来自前一个坐标的一条线的终点;PT_BEZIERTO:以三点一组的形式出现,头两个点是控制点,第三个是贝塞尔曲线的终点。PT_LINETO和PT_BEZIERTO也许能与PT_CLOSEFIGURE联合使用,在这种情况下,它代表一幅图形的最后一个点,将这个点与图形的第一个点连接起来后,图形就会封闭。 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画渐变矩形, , 公开 + .参数 矩形区域左边, 整数型 + .参数 矩形区域顶边, 整数型 + .参数 矩形区域宽度, 整数型 + .参数 矩形区域高度, 整数型 + .参数 渐变方向, 整数型, 可空, 1、从上到下;2、从左到右;3、从左上到右下;4、从右上到左下;5:从下到上;6:从右到左;7:从右下到左上;8:从左下到右上。如果本参数省略默认为从左到右。 + .参数 渐变颜色, 整数型, 数组, 可提供多种颜色 + + + +.子程序 画星形, , 公开 + .参数 星形顶点, 坐标_整数, 数组, 本参数数组顺序记录星形各顶点的横向及纵向坐标值 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 多边形填充模式, 整数型, 公开 + .参数 填充模式, 整数型, 可空, 1:ALTERNATE:交替填充;2:WINDING:根据绘图方向填充 + + + +.子程序 开始绘制路径, , 公开, 启动一个路径分支。在这个命令后执行的绘图命令会自动成为路径的一部分 + + +.子程序 停止绘制路径, , 公开, 停止定义路径。如执行成功,调用开始绘制路径和本命令之间发生的所有绘图操作都会正式成为画板中的路径 + + +.子程序 取消绘制路径, , 公开, 抛弃画板中的所有路径,也取消目前正在进行的任何路径的创建工作 + + +.子程序 关闭当前路径, , 公开 + + +.子程序 描绘路径, , 公开, 用当前画笔描绘路径的轮廓。注意:本命令执行成功后,路径会自动清除。 + + +.子程序 填充路径, , 公开, 关闭路径中的图形并用当前画刷填充。注意:本命令执行成功后,路径会自动清除。 + + +.子程序 描绘并且填充路径, , 公开, 本命令执行成功后,路径会自动清除。 + + +.子程序 路径合并到剪裁区, 逻辑型, 公开, 将画板中当前的路径合并到剪裁区域里。注意:本命令执行成功后,路径会自动清除。 + .参数 合并模式, 整数型, 可空, 决定如何将路径与当前剪切区域合并到一起,“RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 路径到区域, 整数型, 公开, 将画板中当前路径转换到一个区域里,返回转换的新区域句柄,零表示错误。注意:本命令执行成功后,路径会自动清除。如果区域句柄不再需要,用API“删除对象_”将其删除 + + +.子程序 区域到剪裁区, , 公开, 为画板指定新的剪裁区 + .参数 区域句柄, 整数型 + + + +.子程序 区域合并到剪裁区, , 公开, 将指定区域组合到画板的当前剪裁区 + .参数 区域句柄, 整数型 + .参数 合并模式, 整数型, 可空, 决定如何将指定区域与当前剪切区域合并到一起,“RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 平移剪裁区, , 公开 + .参数 水平偏移量, 整数型, 可空 + .参数 垂直偏移量, 整数型, 可空 + + + +.子程序 重置剪裁区, , 公开, 还原画板的剪裁区到最大范围。裁剪区域可以理解为一个绘图区域,剪裁区内绘图会显示,剪裁区外的绘图不会显示 + + +.子程序 填充区域, , 公开 + .参数 区域句柄, 整数型 + + + +.子程序 旋转指定角度画图, , 公开, 空间坐标变换之旋转。如果旋转角度要复位,调用命令:复位() + .参数 旋转角度, 小数型 + .参数 中心点横坐标, 小数型, 可空 + .参数 中心点纵坐标, 小数型, 可空 + .参数 继承当前变换, 逻辑型, 可空, 本参数指定是否要在当前旋转角度(或当前变换)的基础上再次旋转 + + + +.子程序 复位, , 公开, 空间坐标变换复位 + + +.子程序 空间坐标变换, , 公开, 高级命令。可用XFORM结构数据对坐标系统进行缩放、平移、斜切、旋转的变换。如果XFORM结构数据为 {1,0,0,1,0,0} 并且参数二为假时,会对坐标系统复位 + .参数 转换数据, XFORM, , 如果要复位,“平行缩放”和“垂直缩放”设置为 1,其他的都为 0,并且参数二为假或为空。或者调用命令:复位() + .参数 继承当前变换, 逻辑型, 可空, 是否继承当前世界空间坐标的变换数据 + + + +.子程序 取文字间距, 整数型, 公开 + + +.子程序 设置文字间距, 整数型, 公开, 返回设置前的字符间距 + .参数 间距, 整数型 + + + +.子程序 合并分层画板, , 公开, 将【分层画板】或【动态矢量画板】合并到本画板中 + .参数 画板句柄, 整数型, , 分层画板或动态矢量画板中的命令 取句柄()返回的值 + .参数 合并左边位置, 小数型, 可空, 合并到本画板中的左上角位置 + .参数 合并顶边位置, 小数型, 可空, 同上 + .参数 合并宽度, 小数型, 可空, 合并到本画板中的宽度。如果省略,则使用分层画板本身的宽度 + .参数 合并高度, 小数型, 可空, 合并到本画板中的高度。如果省略,则使用分层画板本身的高度 + + + +.子程序 合并分层画板_2, , 公开, 合并【分层画板】或【动态矢量画板】中的一部分到本画板中 + .参数 画板句柄, 整数型, , 分层画板或动态矢量画板中的命令 取句柄()返回的值 + .参数 合并左边位置, 小数型, 可空, 合并到本画板中的左上角位置 + .参数 合并顶边位置, 小数型, 可空, 同上 + .参数 合并宽度, 小数型, 可空, 合并到本画板中的宽度。如果省略,则使用分层画板本身的宽度 + .参数 合并高度, 小数型, 可空, 合并到本画板中的高度。如果省略,则使用分层画板本身的高度 + .参数 合并部分左边, 小数型, 可空, 分层画板中要合并的一部分的左上角位置,如果省略,默认为0 + .参数 合并部分顶边, 小数型, 可空, 同上 + .参数 合并部分宽度, 小数型, 可空, 分层画板中要合并的一部分的宽度,如果省略,默认为分层画板本身的宽度 + .参数 合并部分高度, 小数型, 可空, 分层画板中要合并的一部分的高度,如果省略,默认为分层画板本身的高度 + + + +.子程序 画图片_倾斜到坐标, , 公开, 按照指定的三个坐标画出倾斜的图片 + .参数 图片句柄, 整数型, , 画图片之后不会自动卸载,图片句柄可以重复使用 + .参数 左上角画出位置X, 整数型, , 对应于原图片的左上角 + .参数 左上角画出位置Y, 整数型, , 同上 + .参数 右上角画出位置X, 整数型, , 对应于原图片的右上角 + .参数 右上角画出位置Y, 整数型, , 同上 + .参数 左下角画出位置X, 整数型, , 对应于原图片的左下角 + .参数 左下角画出位置Y, 整数型, , 同上 + + + +.子程序 画出图元文件, , 公开 + .参数 图元文件数据, 字节集 + .参数 画出左边位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 画出顶边位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果本参数被省略,根据画出高度自动计算出等比例的宽度 + .参数 画出高度, 小数型, 可空, 在画板中画出图片的高度。如果本参数被省略,根据画出宽度自动计算出等比例的高度 + + + +.子程序 取水平分辨率, 整数型, 公开 + + +.子程序 取垂直分辨率, 整数型, 公开 + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\210\206\345\261\202\347\224\273\346\235\277.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\210\206\345\261\202\347\224\273\346\235\277.class.e.txt" new file mode 100644 index 0000000..1bd7318 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\210\206\345\261\202\347\224\273\346\235\277.class.e.txt" @@ -0,0 +1,951 @@ +.版本 2 + +.程序集 分层画板, , 公开 +.子程序 创建, 逻辑型, 公开 + .参数 宽度, 整数型 + .参数 高度, 整数型 + + + +.子程序 创建_图片句柄, 逻辑型, 公开 + .参数 图片句柄, 整数型 + + + +.子程序 创建_场景句柄, 逻辑型, 公开, 将一个设备场景句柄(HDC)作为画板,可作为指定设备场景的扩展,如果用本方法创建,那么仅绘制命令有效,其他命令无效,如:置画板尺寸、复制到窗口、取图片、内存画板.合并分层画板、图片对象.转换分层画板…… + .参数 设备场景句柄, 整数型, , 指定一个HDC目标 + + + +.子程序 创建_窗口句柄, 逻辑型, 公开, 特殊用法,将窗口或控件作为画板,如果用本方法创建,那么仅绘制命令有效,其他命令无效,如:置画板尺寸、复制到窗口、取图片、内存画板.合并分层画板、图片对象.转换分层画板…… + .参数 窗口句柄, 整数型, , 绑定的窗口句柄 + + + +.子程序 销毁, , 公开 + + +.子程序 置画板尺寸, , 公开 + .参数 新宽度, 整数型, 可空, 如果参数为空,画板宽度不修改 + .参数 新高度, 整数型, 可空, 如果参数为空,画板高度不修改 + + + +.子程序 取句柄, 整数型, 公开 + + +.子程序 是否已创建, 逻辑型, 公开 + + +.子程序 复制到窗口, , 公开 + .参数 窗口句柄, 整数型 + .参数 是否拉伸, 逻辑型, 可空, 如果窗口客户区和画板尺寸不同时,复制到窗口时是否要拉伸到整个窗口区域 + + + +.子程序 取画板宽度, 整数型, 公开 + + +.子程序 取画板高度, 整数型, 公开 + + +.子程序 画笔类型, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 类型, 整数型, 可空, “画笔类型_”开头的常量 + + + +.子程序 画笔粗细, 小数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 宽度, 小数型, 可空 + + + +.子程序 画笔颜色, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值,返回值为ARGB颜色 + .参数 ARGB颜色, 整数型, 可空, 要设置的ARGB颜色,为空则返回当前画笔颜色 + + + +.子程序 画笔线帽样式, , 公开 + .参数 起点线帽, 整数型, 可空, “线帽样式_”开头常量 + .参数 终点线帽, 整数型, 可空, “线帽样式_”开头常量 + .参数 虚线帽, 整数型, 可空, “虚线帽样式_”开头常量 + + + +.子程序 画笔连线方式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 连线方式, 整数型, 可空, “连线方式_”开头的常量 + + + +.子程序 画笔斜接限制, 小数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 斜接限制, 小数型, 可空, 如果当前画笔的连线方式是斜接,可设置画笔的斜接限制 + + + +.子程序 画笔虚线偏移, 小数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 偏移, 小数型, 可空 + + + +.子程序 画刷到画笔, 逻辑型, 公开, 将当前画刷置入画笔 + + +.子程序 刷子类型, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 类型, 整数型, 可空, “阴影风格_”开头的常量。本画板创建后刷子类型默认为 #阴影风格__纯色刷子 + + + +.子程序 刷子颜色, , 公开 + .参数 前景颜色, 整数型, 可空, ARGB颜色,画刷前景颜色 + .参数 背景颜色, 整数型, 可空, ARGB颜色,画刷背景颜色。如果刷子类型为“#阴影风格__纯色刷子”时,本参数无效 + + + +.子程序 取刷子前景色, 整数型, 公开, 返回值为ARGB颜色 + + +.子程序 取刷子背景色, 整数型, 公开, 返回值为ARGB颜色 + + +.子程序 刷子类型_纹理, 逻辑型, 公开, 纹理画刷 + .参数 参_图片对象, 图片对象 + .参数 旋转角度, 小数型, 可空 + + + +.子程序 刷子类型_渐变, 逻辑型, 公开, 渐变画刷 + .参数 起点坐标, 坐标_小数, 可空 + .参数 终点坐标, 坐标_小数, 可空 + .参数 起点ARGB颜色, 整数型, 可空, 本参数为空默认为画笔颜色 + .参数 终点ARGB颜色, 整数型, 可空, 本参数为空默认为透明 + .参数 旋转角度, 小数型, 可空 + + + +.子程序 渐变画刷_置渐变色, 逻辑型, 公开, 仅渐变画刷有效 + .参数 起点ARGB颜色, 整数型 + .参数 终点ARGB颜色, 整数型 + + + +.子程序 渐变画刷_取渐变色, 逻辑型, 公开, 仅渐变画刷有效 + .参数 起点ARGB颜色, 整数型, 参考 可空 + .参数 终点ARGB颜色, 整数型, 参考 可空 + + + +.子程序 路径到画刷, 逻辑型, 公开, 将当前路径转为画刷。本命令执行成功后,路径会保留 + .参数 中心点坐标, 坐标_小数, 可空 + .参数 中心点颜色, 整数型, 可空, ARGB颜色 + .参数 周围颜色, 整数型, 可空 数组, ARGB颜色 + .参数 周围颜色数, 整数型, 可空 + + + +.子程序 路径画刷_置中心点, 逻辑型, 公开, 仅路径画刷有效 + .参数 中心点坐标, 坐标_小数, 可空 + + + +.子程序 路径画刷_置中心颜色, 逻辑型, 公开, 仅路径画刷有效 + .参数 中心点颜色, 整数型, , ARGB颜色 + + + +.子程序 路径画刷_置周围颜色, 逻辑型, 公开, 仅路径画刷有效 + .参数 周围颜色, 整数型, 数组, ARGB颜色 + .参数 颜色数量, 整数型, 可空 + + + +.子程序 路径画刷_中心点比例, 逻辑型, 公开, 仅路径画刷有效 + .参数 比例X, 小数型, , 0到1之间的小数 + .参数 比例Y, 小数型, , 0到1之间的小数 + + + +.子程序 开始绘制路径, , 公开, 在这个命令后执行的绘图命令会自动成为路径的一部分。自动清除当前路径的原有数据 + + +.子程序 停止绘制路径, , 公开 + + +.子程序 取消绘制路径, , 公开, 抛弃本画板中的所有路径,也取消目前正在进行的任何路径的创建工作 + + +.子程序 开始新图形, , 公开, 仅在绘制路径时有效。不闭合当前图形即开始一个新图形。后面添加到该路径的所有点都被添加到此新图形中 + + +.子程序 关闭当前图形, , 公开, 仅在绘制路径时有效。闭合当前图形并开始新的图形 + + +.子程序 关闭所有图形, , 公开, 仅在绘制路径时有效。闭合此路径中所有开放的图形并开始一个新图形 + + +.子程序 取图片, 字节集, 公开, 取出画板上现有内容的图片数据,返回为 PNG 格式的图片数据 + .参数 输出宽度, 整数型, 可空 + .参数 输出高度, 整数型, 可空 + + + +.子程序 清除, , 公开, 清除整个画板,并以指定色填充 + .参数 ARGB填充颜色, 整数型, 可空, 如果为空默认为透明色 + + + +.子程序 画直线, , 公开 + .参数 起始点横坐标, 小数型 + .参数 起始点纵坐标, 小数型 + .参数 结束点横坐标, 小数型 + .参数 结束点纵坐标, 小数型 + + + +.子程序 画连续线, , 公开 + .参数 线段顶点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画连续线X, , 公开 + .参数 线段顶点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画矩形, , 公开 + .参数 矩形左上角横坐标, 小数型 + .参数 矩形左上角纵坐标, 小数型 + .参数 矩形右下角横坐标, 小数型 + .参数 矩形右下角纵坐标, 小数型 + + + +.子程序 画矩形_2, , 公开 + .参数 矩形左边, 小数型 + .参数 矩形顶边, 小数型 + .参数 矩形宽度, 小数型 + .参数 矩形高度, 小数型 + + + +.子程序 取点, 整数型, 公开, 返回画板上指定点的ARGB颜色值 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + + + +.子程序 画点, , 公开 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + .参数 置入的ARGB颜色, 整数型, 可空, ARGB颜色 + + + +.子程序 画圆弧, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 画圆弧_2, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + .参数 开始角度, 小数型 + .参数 扫描角度, 小数型, , 扫描角度:以顺时针方向从开始角度到结束角度之间的夹角 + + + +.子程序 画弧线, , 公开 + .参数 椭圆左上角横坐标, 小数型 + .参数 椭圆左上角纵坐标, 小数型 + .参数 椭圆右下角横坐标, 小数型 + .参数 椭圆右下角纵坐标, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 画弧线_2, , 公开 + .参数 椭圆区域左边, 小数型 + .参数 椭圆区域顶边, 小数型 + .参数 椭圆区域宽度, 小数型 + .参数 椭圆区域高度, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 画圆, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + + + +.子程序 画椭圆, , 公开 + .参数 椭圆左上角横坐标, 小数型 + .参数 椭圆左上角纵坐标, 小数型 + .参数 椭圆右下角横坐标, 小数型 + .参数 椭圆右下角纵坐标, 小数型 + + + +.子程序 画椭圆_2, , 公开 + .参数 椭圆左边, 小数型 + .参数 椭圆顶边, 小数型 + .参数 椭圆宽度, 小数型 + .参数 椭圆高度, 小数型 + + + +.子程序 画圆角矩形, , 公开 + .参数 矩形左上角横坐标, 小数型 + .参数 矩形左上角纵坐标, 小数型 + .参数 矩形右下角横坐标, 小数型 + .参数 矩形右下角纵坐标, 小数型 + .参数 圆角宽度, 小数型 + .参数 圆角高度, 小数型 + + + +.子程序 画圆角矩形_2, , 公开 + .参数 矩形左边, 小数型 + .参数 矩形顶边, 小数型 + .参数 矩形宽度, 小数型 + .参数 矩形高度, 小数型 + .参数 圆角宽度, 小数型 + .参数 圆角高度, 小数型 + + + +.子程序 画饼, , 公开 + .参数 椭圆左上角横坐标, 小数型 + .参数 椭圆左上角纵坐标, 小数型 + .参数 椭圆右下角横坐标, 小数型 + .参数 椭圆右下角纵坐标, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 画饼_2, , 公开 + .参数 椭圆区域左边, 小数型 + .参数 椭圆区域顶边, 小数型 + .参数 椭圆区域宽度, 小数型 + .参数 椭圆区域高度, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 画多边形, , 公开 + .参数 多边形顶点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画多边形X, , 公开 + .参数 多边形顶点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画贝塞尔曲线, , 公开, “曲线控制点”的成员数和“顶点数目”为:N×3+1 + .参数 曲线控制点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画贝塞尔曲线X, , 公开, “曲线控制点”的成员数和“顶点数目”为:N×3+1 + .参数 曲线控制点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 多边形填充模式, 整数型, 公开 + .参数 填充模式, 整数型, 可空, 1:ALTERNATE:交替填充;2:WINDING:根据绘图方向填充 + + + +.子程序 平滑模式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 呈现模式, 整数型, 可空, “平滑模式_”开头的常量 + + + +.子程序 算法模式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 模式, 整数型, 可空, “算法模式_”开头的常量 + + + +.子程序 混合品质, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 混合质量, 整数型, 可空, “混合品质_”开头的常量 + + + +.子程序 像素偏移模式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 偏移模式, 整数型, 可空, “像素偏移模式_”开头的常量 + + + +.子程序 文本渲染模式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 文本呈现模式, 整数型, 可空, “文本渲染模式_”开头的常量 + + + +.子程序 复制到本画板, , 公开 + .参数 源画板, 分层画板 + .参数 粘贴处左边, 整数型, 可空, 粘贴到本画板中左上角位置,默认为0 + .参数 粘贴处顶边, 整数型, 可空, 粘贴到本画板中左上角位置,默认为0 + .参数 粘贴宽度, 整数型, 可空, 粘贴到本画板中的宽度,如果为空,则以参数【源宽度】为准。 + .参数 粘贴高度, 整数型, 可空, 粘贴到本画板中的高度,如果为空,则以参数【源高度】为准。 + .参数 源左边, 整数型, 可空, 源画板中要复制的位置,如果省略,默认为0 + .参数 源顶边, 整数型, 可空, 源画板中要复制的位置,如果省略,默认为0 + .参数 源宽度, 整数型, 可空, 源画板中要复制的宽度,为空时则以“源左边”到源画板最右边的宽度。 + .参数 源高度, 整数型, 可空, 源画板中要复制的高度,为空时则以“源顶边”到源画板最下边的高度。 + + + +.子程序 画图片, , 公开 + .参数 图片句柄, 整数型, , 【图片对象.取句柄()】返回的值,画图片之后不会自动释放,图片对象可以重复使用 + .参数 图片左边画出位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 图片顶边画出位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 图片画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的宽度 + .参数 图片画出高度, 小数型, 可空, 在画板中画出图片的高度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的高度 + .参数 尺寸模式, 字节型, 可空, 本参数设置图片画出尺寸(参数四或参数五被省略时)的计算模式。本参数等于0,按图片原尺寸画出;本参数等于1,按图片原尺寸等比例计算出宽高;本参数等于2,按图片原尺寸的百分比计算出宽高 + + + +.子程序 画图片_裁剪, , 公开 + .参数 图片句柄, 整数型, , 【图片对象.取句柄()】返回的值,画图片之后不会自动释放,图片对象可以重复使用 + .参数 图片左边画出位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 图片顶边画出位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 图片画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果省略,则使用图片本身的宽度 + .参数 图片画出高度, 小数型, 可空, 在画板中画出图片的高度。如果省略,则使用图片本身的高度 + .参数 截取图片左边位置, 小数型, 可空, 截取图片中一部分的左边位置,如果省略,默认为0 + .参数 截取图片顶边位置, 小数型, 可空, 截取图片中一部分的顶边位置,如果省略,默认为0 + .参数 截取图片宽度, 小数型, 可空, 截取图片中一部分的宽度,如果省略,默认为图片本身的宽度 + .参数 截取图片高度, 小数型, 可空, 截取图片中一部分的高度,如果省略,默认为图片本身的高度 + .参数 应用效果, 图片编辑类, 可空, 画出的图片是否同时具备某些效果 + + + +.子程序 画曲线, , 公开 + .参数 曲线控制点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画曲线X, , 公开 + .参数 曲线控制点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画曲线_2, , 公开 + .参数 曲线控制点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 画曲线X_2, , 公开 + .参数 曲线控制点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 画闭合曲线, , 公开 + .参数 顶点数组, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画闭合曲线X, , 公开 + .参数 顶点数组, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 画闭合曲线_2, , 公开 + .参数 顶点数组, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 画闭合曲线X_2, , 公开 + .参数 顶点数组, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 描绘路径, , 公开, 用当前画笔描绘路径的轮廓。本命令执行成功后,路径会保留 + + +.子程序 填充路径, , 公开, 关闭路径中的图形并用当前画刷填充。本命令执行成功后,路径会保留 + + +.子程序 填充区域, , 公开 + .参数 区域句柄, 整数型 + + + +.子程序 填充矩形, , 公开 + .参数 矩形左上角横坐标, 小数型 + .参数 矩形左上角纵坐标, 小数型 + .参数 矩形右下角横坐标, 小数型 + .参数 矩形右下角纵坐标, 小数型 + + + +.子程序 填充矩形_2, , 公开 + .参数 矩形左边, 小数型 + .参数 矩形顶边, 小数型 + .参数 矩形宽度, 小数型 + .参数 矩形高度, 小数型 + + + +.子程序 填充圆, , 公开 + .参数 圆心横坐标, 小数型 + .参数 圆心纵坐标, 小数型 + .参数 半径, 小数型 + + + +.子程序 填充椭圆, , 公开 + .参数 椭圆左上角横坐标, 小数型 + .参数 椭圆左上角纵坐标, 小数型 + .参数 椭圆右下角横坐标, 小数型 + .参数 椭圆右下角纵坐标, 小数型 + + + +.子程序 填充椭圆_2, , 公开 + .参数 椭圆左边, 小数型 + .参数 椭圆顶边, 小数型 + .参数 椭圆宽度, 小数型 + .参数 椭圆高度, 小数型 + + + +.子程序 填充饼, , 公开 + .参数 椭圆左上角横坐标, 小数型 + .参数 椭圆左上角纵坐标, 小数型 + .参数 椭圆右下角横坐标, 小数型 + .参数 椭圆右下角纵坐标, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 填充饼_2, , 公开 + .参数 椭圆区域左边, 小数型 + .参数 椭圆区域顶边, 小数型 + .参数 椭圆区域宽度, 小数型 + .参数 椭圆区域高度, 小数型 + .参数 开始角度, 小数型 + .参数 结束角度, 小数型 + .参数 顺时针方向角度, 逻辑型, 可空, 本参数指定参数“开始角度”和“结束角度”是否为顺时针方向的角度 + + + +.子程序 填充多边形, , 公开 + .参数 多边形顶点, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 填充多边形X, , 公开 + .参数 多边形顶点, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 填充闭合曲线, , 公开 + .参数 顶点数组, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 填充闭合曲线X, , 公开 + .参数 顶点数组, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + + + +.子程序 填充闭合曲线_2, , 公开 + .参数 顶点数组, 坐标_整数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 填充闭合曲线X_2, , 公开 + .参数 顶点数组, 坐标_小数, 数组 + .参数 顶点数目, 整数型, 可空 + .参数 曲线张力, 小数型, 可空, 如果本参数为空,默认为1 + + + +.子程序 字体, 字体, 公开 + .参数 字体, 字体, 可空 + + + +.子程序 字体属性, , 公开 + .参数 字体名称, 文本型, 可空, 如果本参数为空,字体名称不会改变 + .参数 字体大小, 整数型, 可空, 单位为点(磅)或者像素 + .参数 单位为像素, 逻辑型, 可空, 指定参数二“字体大小”的单位。真为像素,假为点。如果参数二为空(不设置字体大小)时本参数无效 + .参数 加粗, 逻辑型, 可空 + .参数 倾斜, 逻辑型, 可空 + .参数 下划线, 逻辑型, 可空 + .参数 删除线, 逻辑型, 可空 + + + +.子程序 置外部字体集, 文本型, 公开, 设置外部字体,如果命令【字体()、字体属性()】的字体名称被改变,则已设置的外部字体会失效。返回外部字体的字体名 + .参数 外部字体数据, 字节集 + .参数 字体索引, 整数型, 可空, 外部字体文件中的第几个字体,如果本参数被省略,默认为1 + + + +.子程序 置外部字体文件, 文本型, 公开, 设置外部字体,如果命令【字体()、字体属性()】的字体名称被改变,则已设置的外部字体会失效。返回外部字体的字体名 + .参数 字体文件名, 文本型 + .参数 字体索引, 整数型, 可空, 外部字体文件中的第几个字体,如果本参数被省略,默认为1 + + + +.子程序 取外部字体字体数, 整数型, 公开, 取外部字体文件中包含的字体数目,设置外部字体后才有效,否则返回0 + + +.子程序 文本对齐, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 对齐方式, 整数型, 可空, “文本对齐_”开头的常量。在指定的矩形内写文本才有效! + + + +.子程序 文本行对齐, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 行对齐方式, 整数型, 可空, “文本对齐_”开头的常量。在指定的矩形内写文本才有效! + + + +.子程序 文本修整, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 修整方式, 整数型, 可空, “文本修整_”开头的常量。在指定的矩形内写文本才有效! + + + +.子程序 文本格式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 格式标志, 整数型, 可空, “文本格式_”开头的常量。在指定的矩形内写文本才有效! + + + +.子程序 写文本, , 公开 + .参数 横向位置, 小数型, 可空, 画出文本的位置 + .参数 纵向位置, 小数型, 可空, 画出文本的位置 + .参数 欲写出文本, 文本型 + + + +.子程序 写文本W, , 公开 + .参数 横向位置, 小数型, 可空, 画出文本的位置 + .参数 纵向位置, 小数型, 可空, 画出文本的位置 + .参数 Unicode文本, 字节集 + + + +.子程序 写文本_矩形内, , 公开 + .参数 欲写出文本, 文本型 + .参数 描绘区域, 矩形区_S + + + +.子程序 写文本W_矩形内, , 公开 + .参数 Unicode文本, 字节集 + .参数 描绘区域, 矩形区_S + + + +.子程序 测量文本矩形, 逻辑型, 公开 + .参数 测量文本, 文本型 + .参数 参考矩形, 矩形区_S, 可空 + .参数 测量矩形, 矩形区_S, 参考, 测量后的结果矩形 + + + +.子程序 测量文本矩形W, 逻辑型, 公开 + .参数 Unicode文本, 字节集 + .参数 参考矩形, 矩形区_S, 可空 + .参数 测量矩形, 矩形区_S, 参考, 测量后的结果矩形 + + + +.子程序 矩形到剪裁区, 逻辑型, 公开 + .参数 矩形区左边, 小数型 + .参数 矩形区顶边, 小数型 + .参数 矩形区右边, 小数型 + .参数 矩形区底边, 小数型 + .参数 合并模式, 整数型, 可空, “RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 矩形到剪裁区_2, 逻辑型, 公开 + .参数 矩形区左边, 小数型 + .参数 矩形区顶边, 小数型 + .参数 矩形区宽度, 小数型 + .参数 矩形区高度, 小数型 + .参数 合并模式, 整数型, 可空, “RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 路径合并到剪裁区, 逻辑型, 公开, 将画板中当前的路径合并到剪裁区域里。本命令执行成功后,路径会保留 + .参数 合并模式, 整数型, 可空, 决定如何将路径与当前剪切区域合并到一起,“RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 区域合并到剪裁区, 逻辑型, 公开, 将指定区域组合到画板的当前剪裁区 + .参数 区域句柄, 整数型 + .参数 合并模式, 整数型, 可空, 决定如何将指定区域与当前剪切区域合并到一起,“RGN_”开头的常量。如果本参数省略,默认为 #RGN_COPY + + + +.子程序 平移剪裁区, , 公开 + .参数 水平偏移量, 小数型, 可空 + .参数 垂直偏移量, 小数型, 可空 + + + +.子程序 重置剪裁区, , 公开, 重置为无限区域 + + +.子程序 旋转指定角度画图, , 公开, 空间坐标变换之旋转。如果旋转角度要复位,调用命令:复位() + .参数 旋转角度, 小数型 + .参数 中心点横坐标, 小数型, 可空 + .参数 中心点纵坐标, 小数型, 可空 + .参数 继承当前变换, 逻辑型, 可空, 本参数指定是否要在当前旋转角度(或当前变换)的基础上再次旋转 + + + +.子程序 复位, , 公开, 空间坐标变换复位 + + +.子程序 空间坐标变换, , 公开, 高级命令。可用XFORM结构数据对坐标系统进行缩放、平移、斜切、旋转的变换。如果XFORM结构数据为 {1,0,0,1,0,0} 并且参数二为假时,会对坐标系统复位 + .参数 转换数据, XFORM, , 如果要复位,“平行缩放”和“垂直缩放”设置为 1,其他的都为 0,并且参数二为假或为空。或者调用命令:复位() + .参数 继承当前变换, 逻辑型, 可空, 是否继承当前世界空间坐标的变换数据 + + + +.子程序 平移空间坐标, , 公开, 空间坐标变换之平移。要复位时可调用命令:复位() + .参数 水平偏移量, 小数型, 可空 + .参数 垂直偏移量, 小数型, 可空 + + + +.子程序 画刷_平移, 逻辑型, 公开, 画刷变形之平移。设置刷子起点,纹理画刷、渐变画刷、路径画刷有效 + .参数 水平偏移量, 小数型, 可空 + .参数 垂直偏移量, 小数型, 可空 + + + +.子程序 画刷_变形, , 公开, 用XFORM结构数据对当前画刷进行缩放、平移、斜切、旋转的变换。纹理画刷、渐变画刷、路径画刷有效 + .参数 转换数据, XFORM, , 如果要复位,“平行缩放”和“垂直缩放”设置为 1,其他的都为 0,并且参数二为假或为空 + .参数 继承当前变换, 逻辑型, 可空, 是否在当前的变形基础上再次变形 + + + +.子程序 画刷_预设颜色, 逻辑型, 公开, 仅渐变画刷和路径画刷有效 + .参数 ARGB颜色, 整数型, 数组, ARGB颜色数组 + .参数 位置比例, 小数型, 可空 数组, 数组成员的值是0到1之间的小数,如{0,0.3,1}。如果本参数为空,则以平分的方式计算 + + + +.子程序 画刷_线性混合, 逻辑型, 公开, 仅渐变画刷和路径画刷有效 + .参数 焦点, 小数型, , 0到1之间的小数 + .参数 比例, 小数型, , 0到1之间的小数 + + + +.子程序 画刷_钟形混合, 逻辑型, 公开, 仅渐变画刷和路径画刷有效 + .参数 焦点, 小数型, , 0到1之间的小数 + .参数 比例, 小数型, , 0到1之间的小数 + + + +.子程序 取位图句柄, 整数型, 公开, 返回位图句柄。如果位图句柄不再需要,调用API“删除对象_”将其删除 + .参数 ARGB背景颜色, 整数型, 可空, ARGB颜色值,指定背景色,如果位图完全不透明,则忽略此参数 + + + +.子程序 画图片_位图句柄, , 公开 + .参数 位图句柄, 整数型, , 调用图片对象、内存画板、分层画板中的命令“取位图句柄()”返回的位图句柄或其他方式获取的有效的位图句柄 + .参数 图片左边画出位置, 小数型, 可空, 在画板中画出的左上角横向位置 + .参数 图片顶边画出位置, 小数型, 可空, 在画板中画出的左上角纵向位置 + .参数 图片画出宽度, 小数型, 可空, 在画板中画出的宽度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的宽度 + .参数 图片画出高度, 小数型, 可空, 在画板中画出的高度。如果省略,则按照参数六“尺寸模式”的设置计算画出图片的高度 + .参数 尺寸模式, 字节型, 可空, 本参数设置图片画出尺寸(参数四或参数五被省略时)的计算模式。本参数等于0,按图片原尺寸画出;本参数等于1,按图片原尺寸等比例计算出宽高;本参数等于2,按图片原尺寸的百分比计算出宽高 + + + +.子程序 取路径边界矩形, 矩形区_S, 公开 + + +.子程序 取路径坐标数, 整数型, 公开 + + +.子程序 取路径最后坐标, 逻辑型, 公开 + .参数 最后的坐标, 坐标_小数, 参考 + + + +.子程序 取路径坐标组, 逻辑型, 公开 + .参数 坐标组, 坐标_小数, 参考 数组 + .参数 坐标总数, 整数型, 可空, 默认为“取路径坐标数()”的返回值。 + + + +.子程序 路径_变形, , 公开, 用XFORM结构数据对当前路径进行缩放、平移、斜切、旋转的变换 + .参数 转换数据, XFORM, , “平行缩放”和“垂直缩放”的初始值为 1,其他的都为 0 + + + +.子程序 路径曲线转为线段, , 公开, 路径平直化,将当前路径中的曲线转换为线段,转换的同时可以进行缩放、平移等变换 + .参数 转换数据, XFORM, 可空, “平行缩放”和“垂直缩放”的初始值为 1,其他的都为 0 + .参数 转换精度, 小数型, 可空, 转换后的路径与原始路径的最大距离,与原始路径一致的精度为 0 到 1 之间,如果大于1时转换后曲线与原始路径的差异会越来越大。默认为:0.25 + .参数 闭合线段, 逻辑型, 可空, 是否转为闭合线段 + + + +.子程序 取当前路径, 整数型, 公开, 备份当前路径返回路径指针,可在其他的分层画板中使用。注意:执行命令“开始绘制路径”时本命令返回的指针不会被清除,如果路径指针不再需要,调用API“GdipDeletePath”将其删除 + + +.子程序 路径_置当前路径, , 公开, 将指定路径替换为当前路径。注意:替换前会清除当前路径的原有数据 + .参数 路径指针, 整数型 + .参数 是否复制, 逻辑型, 可空, 参数为真时,复制指定的路径再设置为当前路径。参数为假时,直接将指定路径设置为当前路径,此时当前路径改变时,指定的路径也同时改变。如果本参数为空,默认为假 + .参数 是否绘制路径, 逻辑型, 可空, 置当前路径之后是否进入绘制路径的状态。“开始绘制路径()”会清除当前路径的数据,如果本参数为真,可以直接进入绘制路径的状态,避免清除路径数据。默认为假 + + + +.子程序 路径_添加路径, 逻辑型, 公开, 将指定路径添加到当前路径 + .参数 路径指针, 整数型 + .参数 是否连接, 逻辑型, 可空, 本参数指定添加的路径中的第一个图形是否与当前路径中最后一个图形是否连接 + .参数 是否绘制路径, 逻辑型, 可空, 添加路径之后是否进入绘制路径的状态。“开始绘制路径()”会清除当前路径的数据,如果本参数为真,可以直接进入绘制路径的状态,避免清除路径数据。默认为假 + + + +.子程序 路径反向, 逻辑型, 公开, 反转当前路径的方向 + + +.子程序 取剪裁区边界, 矩形区_S, 公开 + + +.子程序 画图片_倾斜到坐标, , 公开, 按照指定的三个坐标画出倾斜的图片 + .参数 图片句柄, 整数型, , 画图片之后不会自动卸载,图片句柄可以重复使用 + .参数 左上角画出位置X, 小数型, , 对应于原图片的左上角 + .参数 左上角画出位置Y, 小数型, , 同上 + .参数 右上角画出位置X, 小数型, , 对应于原图片的右上角 + .参数 右上角画出位置Y, 小数型, , 同上 + .参数 左下角画出位置X, 小数型, , 对应于原图片的左下角 + .参数 左下角画出位置Y, 小数型, , 同上 + + + +.子程序 判断坐标与路径的关系, 整数型, 公开, 判断某坐标点与当前路径或指定路径的位置关系。如果点在路径轮廓上返回 1(判断点在路径轮廓上时与当前画笔的宽度有关);如果点在路径内返回 -1;否则返回 0 + .参数 坐标_X, 小数型 + .参数 坐标_Y, 小数型 + .参数 路径指针, 整数型, 可空, 如果本参数为空,则判断坐标与当前路径的关系,否则判断坐标与指定路径的关系 + + + +.子程序 路径到区域, 整数型, 公开, 将画板中当前路径或指定路径转换到一个区域,返回转换的新区域句柄,零表示错误或失败。本命令执行成功后,路径不会被清除。注意:如果区域句柄不再需要,用API“删除对象_”将其删除 + .参数 路径指针, 整数型, 可空, 如果本参数为空,则转换当前路径为区域,否则将转换指定的路径为区域 + + + +.子程序 路径_扩展外观, , 公开, 扩展路径外观时与当前画笔的宽度有关,扩展外观的同时可以进行缩放、平移等变换 + .参数 路径指针, 整数型, 可空, 如果本参数为空,则扩展当前路径,否则将扩展指定的路径 + .参数 变形数据, XFORM, 可空, “平行缩放”和“垂直缩放”的初始值为 1,其他的都为 0 + .参数 转换精度, 小数型, 可空, 转换后的路径与原始路径的最大距离,与原始路径一致的精度为 0 到 1 之间,如果大于1时转换后曲线与原始路径的差异会越来越大。默认为:0.25 + + + +.子程序 取渲染原点, 逻辑型, 公开 + .参数 原点_X, 整数型, 参考, 本参数作为原点横坐标的填充参数,在此提供一个整数型变量 + .参数 原点_Y, 整数型, 参考, 本参数作为原点纵坐标的填充参数,在此提供一个整数型变量 + + + +.子程序 置渲染原点, 逻辑型, 公开 + .参数 原点_X, 整数型 + .参数 原点_Y, 整数型 + + + +.子程序 画出图元文件, , 公开 + .参数 图元文件数据, 字节集 + .参数 画出左边位置, 小数型, 可空, 在画板中画出图片的左上角横向位置 + .参数 画出顶边位置, 小数型, 可空, 在画板中画出图片的左上角纵向位置 + .参数 画出宽度, 小数型, 可空, 在画板中画出图片的宽度。如果本参数被省略,根据画出高度自动计算出等比例的宽度 + .参数 画出高度, 小数型, 可空, 在画板中画出图片的高度。如果本参数被省略,根据画出宽度自动计算出等比例的高度 + + + +.子程序 画笔对齐方式, 整数型, 公开, 如果参数被省略将取回当前的属性值,如果修改属性值将返回前一种属性值 + .参数 对齐方式, 整数型, 可空, “画笔对齐方式_”开头常量 + + + +.子程序 取画笔虚线格式, 整数型, 公开, 返回取回的虚线格式数量 + .参数 虚线格式, 小数型, 参考 数组 + + + +.子程序 置画笔虚线格式, 逻辑型, 公开, 修改画笔虚线的预设格式 + .参数 虚线格式, 小数型, 数组, 第一个成员表示虚线长度,第二个成员表示空白长度,以此类推 + + + +.子程序 取画笔分割数组, 整数型, 公开, 返回取回的分割数量 + .参数 分割数组, 小数型, 参考 数组 + + + +.子程序 置画笔分割数组, 逻辑型, 公开, 将画笔画出的线分割成若干条 + .参数 分割数组, 小数型, 数组, 数组成员值必须是 0 到 1 之间的小数,且必须是升序。如:{0,0.2,0.7,1},表示分割成两条线,第1条线宽度为20%,中间的空白宽度为50%(20%到70%),第2条线宽度为30%(70%到100%) + + + +.子程序 取画刷环绕模式, 整数型, 公开, 成功返回画刷的环绕模式,失败返回 -1。纹理画刷、渐变画刷、路径画刷有效 + + +.子程序 置画刷环绕模式, 逻辑型, 公开, 纹理画刷、渐变画刷、路径画刷有效 + .参数 环绕模式, 整数型, , “环绕模式_”开头的常量 + + + +.子程序 取水平分辨率, 小数型, 公开 + + +.子程序 取垂直分辨率, 小数型, 公开 + + +.子程序 取字体高度, 小数型, 公开 + + +.子程序 画图片_2, , 公开, 本命令画出的图片尺寸与分辨率有关,当画板分辨率与图片分辨率一致时,则画出实际大小的图片 + .参数 图片句柄, 整数型, , 【图片对象.取句柄()】返回的值,画图片之后不会自动释放,图片对象可以重复使用 + .参数 图片左边画出位置, 小数型, 可空 + .参数 图片顶边画出位置, 小数型, 可空 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\345\257\271\350\261\241.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\345\257\271\350\261\241.class.e.txt" new file mode 100644 index 0000000..cce8c8c --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\345\257\271\350\261\241.class.e.txt" @@ -0,0 +1,250 @@ +.版本 2 + +.程序集 图片对象, , 公开, Gdip图片类 +.子程序 加载数据, 逻辑型, 公开, 加载之前会先释放本对象已经加载的图片 + .参数 图片数据, 字节集 + + + +.子程序 加载文件, 逻辑型, 公开, 加载之前会先释放本对象已经加载的图片 + .参数 文件路径, 文本型 + + + +.子程序 创建空白图像, 逻辑型, 公开, 创建包含Alpha通道的32位空白图像,创建图像之前会先释放本对象已有的图片数据 + .参数 宽度, 整数型 + .参数 高度, 整数型 + + + +.子程序 创建自位图句柄, 逻辑型, 公开, 加载之前会先释放本对象已经加载的图片 + .参数 位图句柄, 整数型 + + + +.子程序 创建自图标句柄, 逻辑型, 公开, 加载之前会先释放本对象已经加载的图片 + .参数 图标句柄, 整数型 + + + +.子程序 释放, , 公开 + + +.子程序 取句柄, 整数型, 公开, 取出图片句柄,可用于在内存画板、分层画板中画图片 + + +.子程序 取宽度, 整数型, 公开 + + +.子程序 取高度, 整数型, 公开 + + +.子程序 取图片尺寸, , 公开 + .参数 图片宽度, 小数型, 参考 可空 + .参数 图片高度, 小数型, 参考 可空 + + + +.子程序 旋转翻转, , 公开, GdipImageRotateFlip + .参数 旋转翻转类型, 整数型, , “翻转类型_”开头常量。 + + + +.子程序 置活动帧, , 公开, 如果是GIF格式的动画图片,则指定当前活动帧;如果是TIFF格式的多页图片,则指定当前活动页 + .参数 索引, 整数型, , 索引从0开始 + + + +.子程序 取帧数, 整数型, 公开, 如果是GIF格式的动画图片,可获得动画图片的帧数;如果是TIFF格式的多页图片,则返回页数;其他格式的返回1(图片数) + + +.子程序 复制, 逻辑型, 公开, 从一个图片对象复制到本对象,本对象原有数据将被释放 + .参数 源图像, 图片对象 + + + +.子程序 复制_2, 逻辑型, 公开, 从一个图片对象复制到本对象,本对象原有数据将被释放 + .参数 源图像句柄, 整数型, , 命令“图片对象.取句柄()”返回的值 + + + +.子程序 复制部分, 逻辑型, 公开, 从一个图片对象复制到本对象,本对象原有数据将被释放 + .参数 复制区域, 矩形区_S + .参数 源图像, 图片对象, 可空, 要复制的图片对象 + + + +.子程序 转换分层画板, 逻辑型, 公开, 从一个分层画板复制到本对象,本对象原有数据将被释放 + .参数 源画板, 分层画板 + .参数 转换区域, 矩形区_S, 可空, 如果只转换分层画板中的一部分,可为此参数提供一个矩形范围 + + + +.子程序 获取缩略图, 逻辑型, 公开, 取一个图片对象的缩略图到本对象,本对象原有数据将被释放。如果参数一“宽度”和参数二“高度”都为空,直接返回假 + .参数 宽度, 整数型, 可空, 缩略图的宽度,如果本参数为空,则缩略图宽度会自动计算,为原图尺寸等比例缩放到参数二“高度”时的宽度 + .参数 高度, 整数型, 可空, 缩略图的高度,如果本参数为空,则缩略图高度会自动计算,为原图尺寸等比例缩放到参数一“宽度”时的高度 + .参数 源图像, 图片对象, 可空, 要取缩略图的图片对象。如果本参数为空时,则是取本对象自身的缩略图,替换本对象的原有数据;不为空时则获取指定图片对象的缩略图,保存到本对象中 + + + +.子程序 取某点颜色, 整数型, 公开, 返回ARGB颜色值 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + + + +.子程序 置某点颜色, 逻辑型, 公开 + .参数 点横坐标, 整数型 + .参数 点纵坐标, 整数型 + .参数 ARGB颜色值, 整数型 + + + +.子程序 取出图片数据, 字节集, 公开 + .参数 图片格式, 整数型, 可空, 0:PNG格式;1:JPEG格式;2:BMP格式;3:GIF格式;4:TIFF格式。如果本参数被省略,默认取出PNG格式的图片数据 + .参数 JPG图片质量, 整数型, 可空, 只对JPG格式有效,0为最差效果,100为最好效果 + + + +.子程序 设置某颜色透明, , 公开, 设置某颜色的所有像素的透明度 + .参数 设置颜色, 整数型, , RGB颜色值 + .参数 透明度, 字节型, 可空, 如果省略则默认为 0(完全透明) + + + +.子程序 设置某颜色透明_2, , 公开, 设置某颜色的所有像素的透明度 + .参数 设置颜色, 整数型, , RGB颜色值 + .参数 透明度, 字节型, 可空, 如果省略则默认为 0(完全透明) + .参数 区域句柄, 整数型 + .参数 屏蔽模式, 逻辑型, 可空, 如果本参数为真,指定区域(参数三“区域句柄”)内的像素不做任何修改,不在区域内的像素才会设置透明度;如果本参数为假,只设置区域内的像素,不在区域内的不会修改。如果本参数为空,默认为假 + + + +.子程序 旋转, 逻辑型, 公开, 旋转一个图片对象,旋转后的图像保存到本对象,本对象原有数据将被释放 + .参数 旋转角度, 小数型 + .参数 ARGB背景颜色, 整数型, 可空, ARGB颜色值,图像旋转后尺寸变大,新增部分的背景填充颜色。默认为透明 + .参数 源图像, 图片对象, 可空, 要旋转的图片对象。如果本参数为空时,则是将本对象自身旋转,替换本对象的原有数据;不为空时则旋转指定的图片对象,保存到本对象中 + + + +.子程序 添加图片对象, 逻辑型, 公开, 本命令可作为缩放功能或者合成功能。如果本对象为空白图像,添加图片对象可作为缩放功能;如果本对象有图片数据,执行本命令可作为合成功能 + .参数 添加的图像, 图片对象 + .参数 左边, 整数型, 可空 + .参数 顶边, 整数型, 可空 + .参数 新宽度, 整数型, 可空, 加入图片的目标宽度,如果本参数被省略,默认为原宽度 + .参数 新高度, 整数型, 可空, 加入图片的目标高度,如果本参数被省略,默认为原高度 + + + +.子程序 取位图句柄, 整数型, 公开, 返回位图句柄。如果位图句柄不再需要,调用API“删除对象_”将其删除 + .参数 ARGB背景颜色, 整数型, 可空, ARGB颜色值,指定背景色,如果位图完全不透明,则忽略此参数 + + + +.子程序 编辑图片, 逻辑型, 公开 + .参数 编辑类型, 图片编辑类 + .参数 源图像, 图片对象, 可空, 要编辑的图片对象。如果本参数为空时,则编辑本对象自身,编辑结果将替换本对象的原有数据;不为空时则编辑指定的图片对象,将编辑结果保存到本对象中 + + + +.子程序 设置区域内透明, , 公开 + .参数 区域句柄, 整数型 + .参数 透明度, 字节型, 可空, 如果省略则默认为 0(完全透明) + + + +.子程序 设置区域内透明_2, , 公开 + .参数 区域句柄, 整数型 + .参数 增减比例, 整数型, , -100 到 100,在区域内的像素在原本的透明度基础上增加或减少透明度。如果比例为-100,透明度会减少到0(完全透明),如果比例为100,透明度增加到255(完全不透明) + + + +.子程序 模糊, , 公开 + .参数 半径, 小数型, , 0到255之间 + .参数 是否扩大边缘, 逻辑型, 可空, + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 锐化, , 公开 + .参数 半径, 小数型, , 0到255之间 + .参数 数量, 小数型, , 0到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 色调, , 公开 + .参数 色调值, 整数型, , -180到180之间 + .参数 数量, 整数型, , -100到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 亮度对比度, , 公开 + .参数 亮度, 整数型, , -255到255之间 + .参数 对比度, 整数型, , -100到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 色相饱和度亮度, , 公开 + .参数 色相, 整数型, , -180到180之间 + .参数 饱和度, 整数型, , -100到100之间 + .参数 亮度, 整数型, , -100到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 色彩平衡, , 公开 + .参数 青与红, 整数型, , -100到100之间 + .参数 品与绿, 整数型, , -100到100之间 + .参数 黄与蓝, 整数型, , -100到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 色阶, , 公开 + .参数 高光, 整数型, , 0到100之间 + .参数 中间色调, 整数型, , -100到100之间 + .参数 阴影, 整数型, , 0到100之间 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 取各帧延时, 逻辑型, 公开, 取回GIF格式动画图片的各图片切换间隔时间,单位:1/100秒 + .参数 延时数组, 整数型, 数组 + + + +.子程序 取图像格式, 文本型, 公开, 取图片的真实格式。例如一张文件名为“A.jpg”的BMP图片,其真实格式为“BMP” + + +.子程序 取边界矩形, 矩形区_S, 公开 + + +.子程序 取水平分辨率, 小数型, 公开 + + +.子程序 取垂直分辨率, 小数型, 公开 + + +.子程序 置分辨率, 逻辑型, 公开 + .参数 水平分辨率, 小数型 + .参数 垂直分辨率, 小数型 + + + +.子程序 颜色通道查找, , 公开 + .参数 查找参数, 颜色查找表 + .参数 应用范围, 矩形区域, 可空 + + + +.子程序 颜色曲线调整, , 公开 + .参数 调整类型, 整数型, , “颜色调整_”开头的常量 + .参数 通道, 整数型, , “颜色通道_”开头的常量 + .参数 调整值, 整数型, , 调整值范围具体见 “调整类型”参数对应常量的备注 + .参数 应用范围, 矩形区域, 可空 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\347\274\226\350\276\221\347\261\273.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\347\274\226\350\276\221\347\261\273.class.e.txt" new file mode 100644 index 0000000..b6de90d --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\344\273\243\347\240\201/\345\233\276\347\211\207\347\274\226\350\276\221\347\261\273.class.e.txt" @@ -0,0 +1,78 @@ +.版本 2 + +.程序集 图片编辑类, , 公开 +.子程序 重置, , 公开 + + +.子程序 置红色, , 公开 + .参数 比例, 小数型, , -1 到 1 之间 + + + +.子程序 置绿色, , 公开 + .参数 比例, 小数型, , -1 到 1 之间 + + + +.子程序 置蓝色, , 公开 + .参数 比例, 小数型, , -1 到 1 之间 + + + +.子程序 置透明度, , 公开 + .参数 比例, 小数型, , 0 到 1 之间 + + + +.子程序 亮度, , 公开 + .参数 比例, 小数型, , -1 到 1 之间 + + + +.子程序 去色, , 公开 + + +.子程序 反相, , 公开 + + +.子程序 对比度, , 公开 + .参数 参_对比度, 小数型, , 0-2 之间,0-1之间逐渐变暗,1-2之间还算正常范围,如果大于2,颜色会越来越鲜亮,趋向于白色 + + + +.子程序 饱和度, , 公开 + .参数 参_饱和度, 小数型, , 0-2 之间,0-1之间趋向于灰色,1-2之间还算正常一些,如果大于2,颜色的偏差会越来越大。可以为负数,但颜色相反 + + + +.子程序 色相, , 公开 + .参数 参_色相, 整数型, , -180 到 180 之间 + + + +.子程序 临界值, , 公开, 如果返回 -1,表示不设置临界值 + .参数 参_临界值, 小数型, 可空, 0到1的小数,指定每个颜色成分分界点。例如,假设临界值为0.7,一种颜色的红,绿,蓝230,50,220。红色部分,230>0.7×255,因此红色成分将改为255(全强度)。绿色部分,50<0.7×255,所以绿色成分将被更改为0。蓝色的部分,220>0.7×255,所以蓝色部分将改为255 + + + +.子程序 伽玛值, , 公开 + .参数 参_伽玛值, 小数型, 可空, -100 到 100 + + + +.子程序 颜色替换, , 公开, 将原来的颜色替换为新的颜色 + .参数 替换颜色, 色彩映射表, 数组 + + + +.子程序 透明色范围, , 公开, 在参数“低颜色”和“高颜色”之间的颜色值将是透明的 + .参数 低颜色, 整数型, , ARGB颜色 + .参数 高颜色, 整数型, , ARGB颜色 + + + +.子程序 处理数据_, 整数型, 公开, 本命令为模块内部调用 + .参数 参数, 双精度小数型, , 参数用于判断是否在模块内部调用 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\345\270\270\351\207\217.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\345\270\270\351\207\217.e.txt" new file mode 100644 index 0000000..e421e6e --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\345\270\270\351\207\217.e.txt" @@ -0,0 +1,234 @@ +.版本 2 + +.常量 光栅运算_位与, "8913094" +.常量 光栅运算_拷贝, "13369376" +.常量 光栅运算_位反色, "4457256" +.常量 光栅运算_异或, "5898313" +.常量 光栅运算_位异或, "6684742" +.常量 光栅运算_位或, "15597702" +.常量 光栅运算_位混合, "12583114" +.常量 光栅运算_位合成, "12255782" +.常量 光栅运算_合成取反, "1114278" +.常量 光栅运算_位拷贝, "15728673" +.常量 光栅运算_位反合成, "16452105" +.常量 画笔类型_实线, "0" +.常量 画笔类型_虚线, "1" +.常量 画笔类型_点线, "2" +.常量 画笔类型_点划线, "3" +.常量 画笔类型_双点划线, "4" +.常量 画笔类型_空笔, "5", , **分层画板无效** +.常量 画笔类型_内直线, "6", , 画笔在由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框中画图。如指定的准确RGB颜色不存在,就进行抖动处理。**分层画板无效** +.常量 画出方式_白色, "0" +.常量 画出方式_黑色, "1" +.常量 画出方式_非或笔, "2", , 或笔的相反 +.常量 画出方式_与非笔, "3", , 背景色以及画笔反相二者共有颜色的组合 +.常量 画出方式_非复制笔, "4", , 复制笔的相反 +.常量 画出方式_与笔非, "5", , 画笔以及已有颜色反相二者共有颜色的组合 +.常量 画出方式_反转, "6", , 已有颜色的反相 +.常量 画出方式_异或笔, "7", , 画笔的颜色以及已有颜色的组合,只取其一 +.常量 画出方式_非与笔, "8", , 与笔的相反 +.常量 画出方式_与笔, "9", , 画笔和已有二者共有颜色的组合 +.常量 画出方式_非异或笔, "10", , 异或笔的相反 +.常量 画出方式_无操作, "11" +.常量 画出方式_或非笔, "12", , 已有颜色与画笔颜色反相的组合 +.常量 画出方式_画笔颜色, "13", , 复制笔 +.常量 画出方式_或笔非, "14", , 画笔颜色与已有颜色的反相的组合 +.常量 画出方式_或笔, "15", , 画笔颜色与已有颜色的组合 +.常量 刷子类型_空刷子, "0" +.常量 刷子类型_横线, "1" +.常量 刷子类型_竖线, "2" +.常量 刷子类型_左斜线, "3" +.常量 刷子类型_右斜线, "4" +.常量 刷子类型_直交叉线, "5" +.常量 刷子类型_斜交叉线, "6" +.常量 刷子类型_颜色刷子, "7" +.常量 翻转类型_旋转90度, "1" +.常量 翻转类型_旋转180度, "2" +.常量 翻转类型_旋转270度, "3" +.常量 翻转类型_水平翻转, "4" +.常量 翻转类型_旋转90度水平翻转, "5" +.常量 翻转类型_旋转180度水平翻转, "6" +.常量 翻转类型_旋转270度水平翻转, "7" +.常量 笔尖样式_平头, "512" +.常量 笔尖样式_圆头, "0" +.常量 笔尖样式_方头, "256" +.常量 连线方式_斜接, "8192" +.常量 连线方式_斜角, "4096" +.常量 连线方式_圆角, "0" +.常量 连线方式_斜接截断, "3", , **内存画板无效** +.常量 DT_BOTTOM, "8", , 将正文调整到矩形底部。此值必须和DT_SINGLELINE组合。 +.常量 DT_CALCRECT, "1024", , 可以使DrawText函数计算出输出文本的尺寸,决定矩形的宽和高。如果文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳所有文字。如果文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。 +.常量 DT_CENTER, "1", , 指定文本水平居中显示。 +.常量 DT_EDITCONTROL, "8192", , 复制多行编辑控制的正文显示特性,特殊地,为编辑控制的平均字符宽度是以同样的方法计算的,此函数不显示只是部分可见的最后一行。 +.常量 DT_EXPANDTABS, "64", , 扩展制表符。默认的制表符间距是8个字符。可用DT_TABSTOP标志改变这项设定 +.常量 DT_EXTERNALLEADING, "512", , 在行的高度里包含字体的外部标头(外部间距属性),通常,外部标头不被包含在正文行的高度里。 +.常量 DT_HIDEPREFIX, "1048576", , 忽略正文中的前缀字符(&),并且前缀字符后面的字母不会出现下划线。其它前缀字符的调用方式不受影响。输入的字符串: "A&bc&&d",正常: "Abc&d" ;DT_HIDEPREFIX: "Abc&d" +.常量 DT_INTERNAL, "4096", , 用系统字体来计算正文度量。 +.常量 DT_LEFT, "0", , 文本左对齐 +.常量 DT_MODIFYSTRING, "65536", , 修改给定的字符串来匹配显示的正文,此标志必须和DT_END_ELLIPSIS或DT_PATH_ELLIPSIS同时使用。 +.常量 DT_NOCLIP, "256", , 描绘文字时不剪切到指定的矩形 +.常量 DT_NOFULLWIDTHCHARBREAK, "524288", , 在宽字符的字符串中防止行断开,因此折行规则相当于单字符的字符串。例如,我们可以用在棒子版的windows中,为图标标签提供更好的可读性。除非指定DT_WORDBREAK,否则此值没有作用。 +.常量 DT_NOPREFIX, "2048", , 关闭前缀字符的处理,通常DrawText解释助记前缀字符,&为给其后的字符加下划线,解释&&为显示单个&。指定DT_NOPREFIX,这种处理被关闭。 +.常量 DT_PREFIXONLY, "2097152", , 仅仅在(&)前缀字符的位置下绘制一个下划线。不绘制字符串中的任何其他字符。输入的字符串: "A&bc&&d",正常: "Abc&d";DT_PREFIXONLY:" _ " +.常量 DT_RIGHT, "2", , 文本右对齐 +.常量 DT_RTLREADING, "131072", , 当选择进设备环境的字体是希伯来文(Hebrew)或阿拉伯文(Arabicf)字体时,为双向正文安排从右到左的阅读顺序都是从左到右的。 +.常量 DT_SINGLELINE, "32", , 单行显示文本,回车和换行符都不折行。 +.常量 DT_TABSTOP, "128", , 设置制表,参数uFormat的15"C8位(低位字中的高位字节)指定每个制表符的字符数,每个制表符的缺省字符数是8。注意:DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, DT_NOPREFIX值不能和DT_TABSTOP值一起使用。 +.常量 DT_TOP, "0", , 文本顶端对齐(仅对单行,必须同时指定DT_SINGLELINE) +.常量 DT_VCENTER, "4", , 指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用,否则GDI无法计算目的矩形。 +.常量 DT_WORD_ELLIPSIS, "262144", , 截短不符合矩形的正文,并增加椭圆。 +.常量 DT_WORDBREAK, "16", , 进行自动换行。当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间断开。一个回车一换行也能使行折断。 +.常量 PT_BEZIERTO, "4", , 以三点一组的形式出现。头两个点是控制点,第三个是贝塞尔曲线的终点。 +.常量 PT_CLOSEFIGURE, "1", , PT_LINETO和PT_BEZIERTO也许能与PT_CLOSEFIGURE联合使用。在这种情况下,它代表一幅图形的最后一个点。将这个点与图形的第一个点连接起来后,图形就会封闭 +.常量 PT_LINETO, "2", , 坐标是来自前一个坐标的一条线的终点 +.常量 PT_MOVETO, "6", , 坐标是一幅新打开图形的起点 +.常量 ALTERNATE, "1", , 交替填充 +.常量 WINDING, "2", , 根据绘图方向填充 +.常量 RGN_AND, "1", , 交集 +.常量 RGN_OR, "2", , 并集 +.常量 RGN_XOR, "3", , 并集减交集 +.常量 RGN_DIFF, "4", , 排除新区域的部分 +.常量 RGN_COPY, "5", , 由新区域替代 +.常量 RGN_XDIFF, "6", , 排除旧区域的部分。**内存画板无效** +.常量 COMPLEXREGION, "3" +.常量 SIMPLEREGION, "2" +.常量 NULLREGION, "1" +.常量 线帽样式_平线帽, "0" +.常量 线帽样式_方线帽, "1" +.常量 线帽样式_圆线帽, "2" +.常量 线帽样式_三角线帽, "3" +.常量 线帽样式_没有锚, "16" +.常量 线帽样式_方锚头帽, "17" +.常量 线帽样式_圆锚头帽, "18" +.常量 线帽样式_菱形锚头帽, "19" +.常量 线帽样式_箭头状锚头帽, "20" +.常量 虚线帽样式_方线帽, "0" +.常量 虚线帽样式_圆线帽, "2" +.常量 虚线帽样式_三角线帽, "3" +.常量 阴影风格__纯色刷子, "-1" +.常量 阴影风格_水平线, "0" +.常量 阴影风格_垂直线, "1" +.常量 阴影风格_左斜线, "2" +.常量 阴影风格_右斜线, "3" +.常量 阴影风格_十字线, "4" +.常量 阴影风格_交叉斜线, "5" +.常量 阴影风格_百分05阴影, "6" +.常量 阴影风格_百分10阴影, "7" +.常量 阴影风格_百分20阴影, "8" +.常量 阴影风格_百分25阴影, "9" +.常量 阴影风格_百分30阴影, "10" +.常量 阴影风格_百分40阴影, "11" +.常量 阴影风格_百分50阴影, "12" +.常量 阴影风格_百分60阴影, "13" +.常量 阴影风格_百分70阴影, "14" +.常量 阴影风格_百分75阴影, "15" +.常量 阴影风格_百分80阴影, "16" +.常量 阴影风格_百分90阴影, "17" +.常量 阴影风格_细向下对角线, "18" +.常量 阴影风格_细向上对角线, "19" +.常量 阴影风格_粗向下对角线, "20" +.常量 阴影风格_粗向上对角线, "21" +.常量 阴影风格_宽向下对角线, "22" +.常量 阴影风格_宽向上对角线, "23" +.常量 阴影风格_细垂直线, "24" +.常量 阴影风格_细水平线, "25" +.常量 阴影风格_密垂直线, "26" +.常量 阴影风格_密水平线, "27" +.常量 阴影风格_粗垂直线, "28" +.常量 阴影风格_粗水平线, "29" +.常量 阴影风格_右斜虚线, "30" +.常量 阴影风格_左斜虚线, "31" +.常量 阴影风格_水平虚线, "32" +.常量 阴影风格_垂直虚线, "33" +.常量 阴影风格_小五彩纸屑, "34" +.常量 阴影风格_大五彩纸屑, "35" +.常量 阴影风格_曲线, "36" +.常量 阴影风格_波浪线, "37" +.常量 阴影风格_对角砖块, "38" +.常量 阴影风格_水平砖块, "39" +.常量 阴影风格_编织, "40" +.常量 阴影风格_花格子, "41" +.常量 阴影风格_草皮, "42" +.常量 阴影风格_十字点线, "43" +.常量 阴影风格_交叉点线, "44" +.常量 阴影风格_瓦片, "45" +.常量 阴影风格_网格, "46" +.常量 阴影风格_球形, "47" +.常量 阴影风格_小网格, "48" +.常量 阴影风格_小棋盘, "49" +.常量 阴影风格_大棋盘, "50" +.常量 阴影风格_边线金刚石, "51" +.常量 阴影风格_金刚石, "52" +.常量 平滑模式_无效, "-1" +.常量 平滑模式_默认, "0" +.常量 平滑模式_最佳性能, "1" +.常量 平滑模式_最佳质量, "2" +.常量 平滑模式_不处理, "3" +.常量 平滑模式_抗锯齿, "4" +.常量 算法模式_无效, "-1" +.常量 算法模式_默认, "0" +.常量 算法模式_低质量, "1" +.常量 算法模式_高质量, "2" +.常量 算法模式_双线性, "3" +.常量 算法模式_双三次, "4" +.常量 算法模式_邻近, "5" +.常量 算法模式_高质量双线性, "6" +.常量 算法模式_高质量双三次, "7" +.常量 文本渲染模式_系统默认, "0" +.常量 文本渲染模式_符号位图和hinting技术, "1" +.常量 文本渲染模式_符号位图, "2" +.常量 文本渲染模式_抗锯齿和hinting技术, "3" +.常量 文本渲染模式_抗锯齿, "4" +.常量 文本渲染模式_ClearType文本和hinting技术, "5" +.常量 混合品质_无效, "-1" +.常量 混合品质_默认, "0" +.常量 混合品质_最佳性能, "1" +.常量 混合品质_最佳质量, "2" +.常量 混合品质_伽玛校正, "3" +.常量 混合品质_假定线性, "4" +.常量 像素偏移模式_无效, "-1" +.常量 像素偏移模式_默认, "0" +.常量 像素偏移模式_高性能, "1" +.常量 像素偏移模式_高质量, "2" +.常量 像素偏移模式_不偏移, "3" +.常量 像素偏移模式_一半, "4" +.常量 文本对齐_靠近, "0" +.常量 文本对齐_居中, "1", , +.常量 文本对齐_远离, "2", , +.常量 文本修整_无, "0" +.常量 文本修整_字符, "1", , 将文本修整成最接近的字符。 +.常量 文本修整_单词, "2", , 将文本修整成最接近的单词。 +.常量 文本修整_字符和省略号, "3", , 将文本修整成最接近的字符,并在被修整的行的末尾插入一个省略号。 +.常量 文本修整_单词和省略号, "4", , 将文本修整成最接近的单词,并在被修整的行的末尾插入一个省略号。 +.常量 文本修整_路径和省略号, "5", , 中心从被修整的行移除并用省略号替换。这种算法尽可能多地保留了行中的最后一个由斜杠分隔的段。 +.常量 文本格式_方向右到左, "1" +.常量 文本格式_方向垂直, "2" +.常量 文本格式_允许部分延伸, "4" +.常量 文本格式_Unicode, "32" +.常量 文本格式_禁止不支持字符, "1024" +.常量 文本格式_包含结尾空字符, "2048" +.常量 文本格式_不换行, "4096" +.常量 文本格式_整行布局, "8192" +.常量 文本格式_不裁剪, "16384" +.常量 画笔对齐方式_居中, "0" +.常量 画笔对齐方式_内侧, "1" +.常量 画笔对齐方式_外侧, "2" +.常量 画笔对齐方式_左侧, "3" +.常量 画笔对齐方式_右侧, "4" +.常量 环绕模式_平铺, "0" +.常量 环绕模式_平铺水平翻转, "1" +.常量 环绕模式_平铺垂直翻转, "2" +.常量 环绕模式_平铺水平垂直翻转, "3" +.常量 环绕模式_固定, "4" +.常量 颜色调整_曝光, "0", , 调整值为:-255 到 255 +.常量 颜色调整_浓度, "1", , 调整值为:-255 到 255 +.常量 颜色调整_对比度, "2", , 调整值为:-100 到 100 +.常量 颜色调整_高光, "3", , 调整值为:-100 到 100 +.常量 颜色调整_阴影, "4", , 调整值为:-100 到 100 +.常量 颜色调整_中间色调, "5", , 调整值为:-100 到 100 +.常量 颜色调整_白色饱和度, "6", , 调整值为:0 到 255 +.常量 颜色调整_黑色饱和度, "7", , 调整值为:0 到 255 +.常量 颜色通道_所有, "0" +.常量 颜色通道_红, "1" +.常量 颜色通道_绿, "2" +.常量 颜色通道_蓝, "3" diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" new file mode 100644 index 0000000..8d1d51c --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\345\206\205\345\255\230\347\224\273\346\235\277/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" @@ -0,0 +1,46 @@ +.版本 2 + +.数据类型 矩形区域, 公开 + .成员 左边, 整数型 + .成员 顶边, 整数型 + .成员 右边, 整数型 + .成员 底边, 整数型 + +.数据类型 坐标_整数, 公开 + .成员 X, 整数型 + .成员 Y, 整数型 + +.数据类型 坐标_小数, 公开 + .成员 X, 小数型 + .成员 Y, 小数型 + +.数据类型 矩形区_X, 公开, 矩形区域,小数型 + .成员 左边, 小数型 + .成员 顶边, 小数型 + .成员 右边, 小数型 + .成员 底边, 小数型 + +.数据类型 矩形区_S, 公开 + .成员 左边, 小数型 + .成员 顶边, 小数型 + .成员 宽度, 小数型 + .成员 高度, 小数型 + +.数据类型 XFORM, 公开, 世界坐标转换数据 + .成员 水平缩放, 小数型, , , 1 + .成员 水平倾斜, 小数型, , , 0 + .成员 垂直倾斜, 小数型, , , 0 + .成员 垂直缩放, 小数型, , , 1 + .成员 水平偏移, 小数型, , , 0 + .成员 垂直偏移, 小数型, , , 0 + +.数据类型 色彩映射表, 公开 + .成员 原颜色, 整数型, , , ARGB颜色 + .成员 新颜色, 整数型, , , ARGB颜色 + +.数据类型 颜色查找表, 公开 + .成员 蓝色通道, 字节型, , "256" + .成员 绿色通道, 字节型, , "256" + .成员 红色通道, 字节型, , "256" + .成员 透明通道, 字节型, , "256" + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250.desc.json" new file mode 100644 index 0000000..10d2322 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\易语言\\MOLE\\文本制表\\文本制表.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" new file mode 100644 index 0000000..6916138 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\226\207\346\234\254\345\210\266\350\241\250/\344\273\243\347\240\201/__HIDDEN_TEMP_MOD__.static.e.txt" @@ -0,0 +1,35 @@ +.版本 2 + +.程序集 __HIDDEN_TEMP_MOD__, , 公开 +.子程序 文本制表, 文本型, 公开 + .参数 行数, 整数型 + .参数 列数, 整数型 + .参数 内容, 文本型, 数组, 每列要输入的内容,用"|"分割。有多少行就要有多少个数组成员 + + + +.子程序 文本制表_表头, 文本型, 公开 + .参数 行数, 整数型 + .参数 列数, 整数型 + .参数 内容, 文本型, 数组, 每列要输入的内容,用"|"分割。有多少行就要有多少个数组成员 + .参数 表头内容, 文本型 + + + +.子程序 文本制表_表脚, 文本型, 公开 + .参数 行数, 整数型 + .参数 列数, 整数型 + .参数 内容, 文本型, 数组, 每列要输入的内容,用"|"分割。有多少行就要有多少个数组成员 + .参数 表脚内容, 文本型 + + + +.子程序 文本制表_表头_表脚, 文本型, 公开 + .参数 行数, 整数型 + .参数 列数, 整数型 + .参数 内容, 文本型, 数组, 每列要输入的内容,用"|"分割。有多少行就要有多少个数组成员 + .参数 表头内容, 文本型 + .参数 表脚内容, 文本型 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227.desc.json" new file mode 100644 index 0000000..d3cdab6 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\易语言\\MOLE\\日志\\日志.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227/\344\273\243\347\240\201/\347\261\273_\346\227\245\345\277\227.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227/\344\273\243\347\240\201/\347\261\273_\346\227\245\345\277\227.class.e.txt" new file mode 100644 index 0000000..0820009 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\227\245\345\277\227/\344\273\243\347\240\201/\347\261\273_\346\227\245\345\277\227.class.e.txt" @@ -0,0 +1,20 @@ +.版本 2 + +.程序集 类_日志, , 公开 +.子程序 初始化, 文本型, 公开, 需要在代码前执行且仅执行一次 + .参数 保存路径, 文本型, , 如果结尾不是"\"会自动添加 + .参数 文件名, 文本型, 可空, 如果为空则文件名为: 日期.txt 否则为: 文件名-日期.txt + + + +.子程序 写, , 公开, 写文本行到 文件 + .参数 内容, 文本型 + + + +.子程序 写_, , 公开, 同时 写文本行到 文件 和 编辑框 + .参数 编辑框, 编辑框 + .参数 内容, 文本型 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.desc.json" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.desc.json" new file mode 100644 index 0000000..006ab3d --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.desc.json" @@ -0,0 +1,3 @@ +{ + "Source": "E:\\易语言\\MOLE\\标识线程锁\\标识线程锁.ec" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201/\344\273\243\347\240\201/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.class.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201/\344\273\243\347\240\201/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.class.e.txt" new file mode 100644 index 0000000..7af92c3 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201/\344\273\243\347\240\201/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.class.e.txt" @@ -0,0 +1,29 @@ +.版本 2 + +.程序集 标识线程锁, , 公开 +.子程序 创建, , 公开 + + +.子程序 销毁, , 公开 + + +.子程序 尝试进入_文本, 逻辑型, 公开 + .参数 标识, 文本型 + + + +.子程序 尝试进入_整数, 逻辑型, 公开 + .参数 标识, 整数型 + + + +.子程序 删除标识_文本, 逻辑型, 公开 + .参数 标识, 文本型 + + + +.子程序 删除标识_整数, 逻辑型, 公开 + .参数 标识, 整数型 + + + diff --git "a/GenshinBot.\344\273\243\347\240\201/\347\252\227\345\217\243/_\345\220\257\345\212\250\347\252\227\345\217\243.form.json" "b/GenshinBot.\344\273\243\347\240\201/\347\252\227\345\217\243/_\345\220\257\345\212\250\347\252\227\345\217\243.form.json" new file mode 100644 index 0000000..c80cb99 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\347\252\227\345\217\243/_\345\220\257\345\212\250\347\252\227\345\217\243.form.json" @@ -0,0 +1,937 @@ +{ + "Class": "_启动窗口", + "Comment": "在程序启动后自动调入本窗口", + "Controls": [ + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "窗口", + "Disable": false, + "ExtensionData": "060000000200000001000000000000FF000000000100000001000000010000000100000000000000000000000000000000000000000000000100000001000000000000000000000000000000130000006D6F6C65687A792D47656E7368696E2D426F740000000017D1020000000100090000000000010020006C9D010096000000808000000100200007790000029E0100606000000100200065470000091702004848000001002000F42900006E5E020040400000010020009A210000628802003030000001002000CC130000FCA90200202000000100200086090000C8BD02001818000001002000D00500004EC702001010000001002000F90300001ECD020089504E470D0A1A0A0000000D4948445200000100000001000802000000D3103F3100019D3349444154789CECBD07805C6775363CBDF7BEB3BD68B5EAD5EAB2E5DE0BC5066C5A0224211048238524044202817C40E8186C0CB63118F722C9B26435CBEA5AADB4DADE7766A7F7993BF7CECC9D99FF39EF5D15DBC0072E24F9FE5C86F54ADA9DB9F77DCF7BCA739E738EA25AAB552FBD6AFF932EBAF94B5E6FD3FB8B55B12296F3B97464A82F7C785FF8D0DED0A1BD81BD3B27B73F39B3FBF9C9BDDBC35367437323737323A1B9D1D0DC583834169E1B19EA3D30999A09549241F60A9553670EED088D9D4D4667B942A65C16A4D57E3B6EFB7FAFDFFE52C8FEF7FA8D571DFF63574D14CB7311792C5D9D0D2B93594D492C07A3B9175E893EF074E0E7CFD5CB22FD60B55E17C55AA552AF8832995C6F302B65722CB152262B27533AA55AA5D5A9D45A854225A7BFFEDFEBBFFE92B641FE5F7B13FF3DAF79C19FBFE4F96050C5F1A548425610747A7DAD2C0AA786355C49AFD2D8CDB64A2CA5A8D5E5F59ABC5A938B359928AA98B09713E9C4E97391A3A70A631346AB53AE50C9E4B8F0E5FCFBFEDE9FEB7FAF4B2F7600B009B421D2EB7FAF5F718995523D951263E97A819755AB0A999C0BC795D5BA52AD561AF55AAB451E4BC92BA2BC56C782E218C82A623D9D9D7E7A7B76FF614D3263D3E8EC6EAF42AD65FF58AFD5EAF5F3C7EBD5C7EC7FAFDFEAC2A2BDE6F5862FC5459167F2FF3FEB045C7AB76FEB9D970A9C06FABD2840E8E565311B8AA54E0F69D53A95C9645AD0A154AA94A5B28C2F29EAF029EB30058A5A4D23D68C2A95AB67A1ADA34367B72B542A85525997CB2E88FEFF1F2CC05B28A96FD34516E082F2FF9FB8196FF79D4BEF5C29700A855C0ED55D2A5792D962DFB045AE861E973BAD1ABB555E87C4CBEA080F6022B205855855CAE0E7AB0C8D7E95C9285729E54A15BDE82D14F89F74BD6DB7FC5F7CFD6671FF0DFFF43BBBA66FF28DD8F5DF2E14FB6FA92DE4552EAF5029657539FC9C1A2740BEA5885761D0B37B95CBAA35592AAB4CE564D194184ED42B559DCBA186F4D36F43E849EE7128D8B74A85821CA5FF71F6F6375FAFDFB5F37F4336EF57FEEB9BBDDE0ACD77F100BCDE5ABD1D22F89B3FE5359FF876DCC01BB8485D8B22BE00E191D5EA62B95C458CAB562B94AA520E9681AD61AD2E13ABD542B19ACED7F3450285946406F008F37B04E54F07802E660AFE5F707F5EBF8917851E623FFF9221E801D65EAF55E9AF2FF1012F7CF33B5D6FEDAABDCE025CBCEFB75EFC7EDD3B5EBA82FF1D2F2C855C512B57EAC512D3DA7278F30A8DCADCD9E4E86C55EB74B5AA581584723A5786FA4F66ABC96C5D10E8DCB0B3419B0EED8F1840AD56A9706C940C03FD7F41FA5FB789E72507EA0048409D84BE52120213E3A140309DC996CA659C05E918BC853AEECD2CE5AB0F000327184A81279076FE2DBB2EC21E979EB179F3F81ADFEE6D390E6FC6B2290DC67236A710452C8C52A5D2180D86D626437303D63E9F481413E94A96ABF1A55A45ACC247C2379C805322879550AB110328D41AA55AA3D268D51A1D7E5B321AFF734FC0A56B7841E54BCA9EB47DB552C8A50363C387B73FFFE057FFFD917FFBC2E40B4F3EFD8DAF1E7C7E472818140481A48BFDC21B567F9746AD6F72195F1F03E0D0527E929DE037F7DEAF5DAFF36BF41A0F88BEBCFA93DE8600F17772AE2E6C0933E5F4556DD057E2993AE4BF56536AD472B3516935E23EC552A55CE095907585026640AC54AA652408CA628E43BC40A2AF5229910FD06AE52AB55245C700168005006FE533FE4AC7F235BEE51B7BFDDF445F0A80E8BF4002CA456EFA6CDF9E877EF2D097FEEDF9EF7E5B981CBC7A59EB2D57AC5EDED3B16DF5C2E48903DFFFFC3F9F387614EB24F94817CEC07FE1F5AB8260DA9A377E67AF5BC48BBE20FB8AF35FAD57A126B9723A59AF542E0ADBDB7CBD4661FC067FECD57FA09B87D6AF44D3D863FC49A1D39A5BFD5A9341A954562B15950A695D7A5704B704F393FDAFCB08F45401095240EB6BF5C8FEC2ED61C75C4A835DBC8D3779FD4A317DFD5EBC99F7FF351F44724FEBC936371698D9F7E8CF7FF6C5CF1FF8D9FD4268F2C6CDCBEEBAEDAAE58B3AF56A35E00190493C0EC7CD576D59D3E87EFAFE07FAFAFAD819980F14DE425FE80D5CAF3E006C5B688B60A3DFB08A7A8D872339394CEEB112B08F955C2EDFDF1F7B66E7D8771E38F32F5F9B3B72E2577ED4A5C2FA26AF0B8B4B37500349E1B77C8E8B9B2287E30E82039E41ACC8B56AC4C110F34AA95441346CD02BD44AA556ABB598751613BE6A2C66B9C9486740A3D1E8F47400343AB55A23ADED5BF864AF924EE97A8D5BF95A6D3EAF845E73B1BFACFD3ACD70C9BBBDFA93B11C62E5C08EED0F7FE17347EEFD6E2D3076DDE615375DB375C3EAE57AB54644C82462C7F133557C5FAD54B1FF8D2EC7D676FFD33FF8E1F0E0009D814B3DA137AD05DED8FBBCDE0248408564A6DFC8AD5C74F4E7F785620A084E4D2C574BA5D4F1DEDC93CF6776EC9B7D76BFAD586FD25B6A2F1EEEFDD14358ACB73B3D84BB21950C32C2EF7E899C502D96A0FB3DAB97B8BADBEBE50A9FCAC09D35389D803B0D0D3E9DC7A9F6BA548D5E75779B76E5625D679BDA60D2E80C4CFD6B0019C1FB576B756C61DF9ACD3EAF39E725F8C2B162FF656EC9FC8F5CFC86FEFDE201B9F8BA04B1914EFDAB3EE1B5971CCE9D2C3637F7F88F7EF8BDBFF88B52DF89AB962EDCB06EE5F2A50BB52A15F47D1D1C3F9162217CC1D74A590497905EE58AD7E1687058AE5FD2FED4B7BF3B3A34887F273F9B7DE49BD7026FCC8CBCE600483495F9AF6FC0197FCDCF6339CB822082F908E8B054AA95F8D2B911ADC6C0CF25FCFE06BDD5ACD269F506832D181FDBFFCAEF2137F4EB77F5575D17F04BB9BC381394F18298E7F8582A1F8E0BE96CA55436B85CC873C9544A1554BED55C733B544BBA754B7A0C1DAD068F47673441FA95807D08F884BBA452ABD4AFA201BDA99B97ECEABCEC5C8C0825948A1D004A3C485E0A7D5FCF2563995884345115606E15D6907DAD12710314267A2F8438A0F421BDC1809A4B4CCA256E8FEC6CEFE99F7CF9CB7BFFF36BABB5CA776DD9B0B8BD1D524E6E9FF4A3A4EB20EC24DA70754578BB757955A9A95BEC72BB4BAED66432F9E59DAD2BFCAE177E745F2814C48F9F8F257E97AD79EBAE8B07E01276D6BC3279831B2559F9F96DAE572BD09642AD52C6AB9A4AE57AC7622706DBDE7D8B6AD9C2BA12A401922FA3DE5438D12F964B17DEE3F7B016BFEEE92EFCFD050B883B2C9C1DC21FB3B9426432908F26B0AF2A879D97D7CB36A3ACC9576DF4C83B5A741D6D7A975B67B5EA2C168DDE40F1EEBC217DF5EB775CD8D76AE34B022A26A94C7C898221C35247C627FA0F1CD8FBE04F9EFBFA579FFECABF3EFE857F78E8D31FFFC99FFCE1C39FFCA31DFFF8B7A7EEFD76DF8F7F70FAFE7BCF3CF2F0E4FE9746F7BC78F6D9A7664E1C2B4443D1F1916AB95429F115A108A50DB93CEFBB4A1A9A4EC8C4F8F80FBFFCA5E9271FDBE2B66F5DB14CAB5643BB5584922894F04DA95A15EC2EAEA9BDBA7A83FA9A1BB4D75DAFBDEE3ADD8D37EB6EB95577F32DDAABAF365C7D9DF5E6DB923C3082CAA6158B16D82D67F7EE6341C45B06B7BC01C9799505784BD025FAC579E9A7EF347A231420A590AAD5722026A60BB24A351F0C97A666553A9D5CADA2FC289012416414E2B70501BDF4597E9BA7BBF8AFF8AE5E2F2652AA6C416B327A5A9B3D0B3A8C2B97586EBCD274D566C365ABF4DD5DDAB616ADCF0795AFB7D9B406A35AA35540D34BD9B10BEAE00D0536BF4AEE2F78F0CCAB844E11F8422CF6D2BD3FFED2EDEF78E8539F18F8C5FDD5D163CD9AE2E226539B5777C595CBDFF987B7BEF7AFFFE0DD9F7EFF2D1FBABD7B418B5DAFF298756E8DCC988ED90A696B3E1DDDBFFB852F7E7E666830150B1F7EEAB1622E5DE1392823BC3F4B5D11BB69626878E0D4C9D49993DB1CE6254D8DD5B298CF640BA9743691CAF382B2B35DBB7E831E42BF6A8DAEA747E1F5D474DAAA562BEAF5A2462DAA943590A094CA1A76D96653B5B64FCDCC21CA5CB3644143BD7CEE74EF6B68E76FF07AA3BFFD2B50A05F83A3CDAB82DFE6A23D963CA879D68B1C7E21E43B3734A536EAADEDCD8A64CEEE722B351AE08384942B94F87F4528B3DF7D5BB4FF1B3CD5EC5EF8644A6ED0CBBDAEFAA22EED2D5759AEDD6A5CD8A971D8F5561B407D483CF43DFC7BF838E7C1835F819DFC4E9F7EC9E24B024F8925F65D0D7AA40EF0359FE182B3E991E153BF786CCFBF7EC9C9273EFEC777DD79C7D51B37ACEC59DAD3DCD6D8E0F77677B7EB713F995C351412E742423405B056ABD13026061192E096596CB6AE450BAFB8769BBD101F7CF481E8F1030F7FE6D3CF7DF31B675EDC39F4F2BEB1134726FB4E7FFFB39F3D71FF8F64677A4D8924BC9B4C263B353631159CCBEAB4A6154BDAEEBAC376D95AB5DF0F1167FE16F19DB008081498E160B78D6F995B5653C8DD0BBBC7A66601190338B0A9E4C3FBF6958128D0E3D2F2BCF1BD3FBFB8BFEB16BFF6005C08AD243BFBFA93F03BDE8F14562B892A532A9BDD2E8DD5CCD2843239D043C44CCC3D96032ED7A8F842E1F7E4FDFC2E17EE55E7F3D8EFB9C3F1A177D96FB842EFF7AA747AB837107760A338C3C07910E65E1ADDC28500F0713E8530BF7EF4FF3722FAE7DF042E3B5472A5548C8563C78E8C3FF7DC8BDFFCD6A99F3FE4AC65AEBC766D4B9B47E472C5742A1F8F17E3093E952D150A7C2A979E892567E2F1C9D8DC583411C915F225BE5886A7030406D004F2B204D380DF542919B5EAA54B16DC70DBB51FFAD85D8B9A4C7D8FFF3270FCC4E9ED2F3CFDA52F2FACD75A4DA6C8F8E4F099730367CE9E3B37A86CF46FFD830F2CB9EE2AEFCAA50A83B1466E1EC93DF221D2E1625540E7858761A592AF0683B278DDDAFE70A25C14AA25512B932FB6990EEC8323F45F76FDAA3CC079337B1ECCB974FBE6FFFC5B5D92BF4BF9205481286AA50AE21D208375948C405C243A008B018827ACD799DC8E7910E2779198B7F592A219ADD1A0B598D446835A0FD1D7B2B896E80CF8CAB61CDF4BD03E3BF57099B2D9E1977723167CCD19F8CDD7A5C0CEAB451F2ABF2C1672F17367837B5F8CEFDB551C1BD20A992B362CBD6C558FC382D21C813C4C0279C99946624E48E78BB17C2E9C29E690A893E7F3956C46C8E54AA974211C490743C9E01C80FBF0E4D8ECC4E82497E7D2093833995438159E0EA52289E616DF0DEFBA66E753CF2587473674B69572995430C047C35D4EF3FA05ADD72E5FE8CBA777FFC77FEEFBFEFD675FDC171D1D0549164B40B22F2D0BB3004CE55F409918598A124075BDC9686C6B2F95CA408AA016BD0E7B767A8A48B2179EFE8DDAF63762E17F1517681EE16577CBB0E10B3279F1717E674F1D5E3E943D0031A3CDAAD082180C9D00449E906009C3AB37B92891347FEA7EF7E7789B2E3A9D30518031B54AA59A9139259CE5F5A1EDBCFC9303A45056FA8E1DBAF7EBC57CF6025CF31B74C76B304D49EA2548450E14BDC8857B4F4D3EF7547D62D052E12D4683D566B1592D907744BDA0E5015E2B170AA858A896AB95BC50CEF1A5AC50CCF085345F2E566A553C00B35738AD7035D9857D47E5A61A064CA1C8C7938A4AAD94C947A602A1C9B9C1E30387B7BFB2F389DD5B97F42C6DF4968B05237E4C8E32B74A786EAE90CFE3B66C46FDE2E6861685423872F2F0377EB0EB8B5FED7D7647261421BFEA2216C5D282D26333035097F025B9CCE6F5660B45140FE18898CC26704CF2F9BCF4C3BFFFEBD7D1A125C2BAE4CEBE0E393E7FAA7F8366A3BFBF24CD578756D06AE41E1BF6083225E5478836837D10ABD942DEB3E5B20A63595E041F7EBDC4FC1E2E26CC17D0A0570BFA7988EC572A1E587CB3D59A28CA3A72893DDFF8B2C0C1AFFBB54F74C9025E605D90E8538181BC9E8FC5FA9E7D76FCC95FEAC2B30D0E2BA20D4931554BC5AA50ACF2C56AB12842F4536931575008E542209A9E8A6466A3B95846294378A503420BAF1D6E9AC16C313B1C76AFD7DBD4D8D4DAD2DCD6DCDCDAD8D0E0B1DB6D4A7CAE2068AA32AB4A6791A94D72B5476F59D3DCD2EE71225CD081BF27ABE9540AB34EAD532BC452A9C4F3784FBD56E77058172FEABA6ECBBA8DAD0D9AFE33073FFF6F3FFEA34FBDF8A307264F9D01691C882F6A24C8DDA5FA3742492540168FAA3199E2F902FDBD28C258F434F98FF79EBEB812BFDF8BF8BA97A64CE6379391D72F6C2CC31C209CC86A5408B825CB7049EAE475369EBE9FDF6FE604C236AA94758DDAD8D1585BDD1DCB662A45A16ED4E300004F287342CDE394AB954433AE9499E579ED31FB2FB92E15EBDFF69FD809013982D79A8AB97C77297BF4978F302D32BF14F811FAFFC535BF08354252A4885121AB2583B37BEFFBE1C0C33FF6D7788FD95085D065D3252E5FCAE7F878B49288D7A1328BBC98C957731CC557F57A3A9A9655EA60E3C178E8B57A489E56ABB17BDCDEF656EF824E7F4F97B7ABC3D5DC64763AB4061D6C01C8DBE54CB69C4CA38899A2D76A152F655D66D11991CF82BD502990F2566A28CC01130A6F062693125ABA982B70D97C016A3B95E652E95221AFACD63AFD0DD76F5D77D7FA150B9389B9071E7CE8837FFCBD0F7E7CEF0FEE87ED1252497409C0FD40D4F04224EC70396285021D10148E8A6267934F5E4596FD2DDDBCDFFA625EC77939BEE0F45F429861AE4AA552460E0BEC1D80C400C820A374ACA58C8964ACE79332E737F9426E9E9C283A001A3579FF6AB5B1A7C379D7F519B31AD0181EBA0C142D53D02F6AC7F1C272805C00AAC47CCDEC2538F47971F9EF72BDDA205EB8B78BCBE65FD8134FE76D7ABD79E474DFAE1D4C975C48B24A3F7F718924F630A39455CBC9F0EEEF7FE7C4BDDF5EE6D4777734034A8161AC40D9730531112B0583F27C418E34044C2528D89942295DC01AA66713FABAC6A837BA9B1A5B376E6C58D2E3ED6877B5B69ABC3E2EC725CE8D644FF5170E1DCBECDC83576AFB9EE48E9752BBF60BC7FBCAFD23A5B1E93AC797B35C29CB553881F5B0A0F80C0700EADF64D059AC0683D160B69A4D6633CE8FB5B1C9E0721ADC2EB5D5C2974BB97842C8674B5CA1522C22C7DEE4F36E5DBBEAEEEBAEB873D5527F349AD8B1F7B9AF7E6BEAD0E14A3AA16488AABC26DBB0697D3C97D768B5444DC1C3E5B2814010EBF086C380377329E088484AFD82CCCD1F82791E034BEC95299B8B730C0D0D23485F9935201F94D062760C2E784A17BE52AE911974F80E7040E102C1FB447DA05EEBBCE1F28241538A652A859288D3E1B2518B16F4C90195B25CC22712C8CD8ED9C577FE8DC7E0F512F93AE9FC9DAF4B7EF152F74FF2522EBC2EFD90F3FB57AB3B9B9B8AA50A709B8ED6C6F2E9437DCF3CCE4A605E453998977E60EDA8B2AF57B381E9DE9FDEF7E83FFC7D9B41BE7EDD721C0688472E3C571839570D4CD7C2E17A222587980663C5D9287819D03F32E4A012B96AB1D6B27A75C3BA35AED52B9C9B36685B5B32A1687A7226FCF2B1D9479EACED3EA8EB3DA73E37221F9F9145138A744E51E054E58A49AD36E8F4943E438E1E6A289535B9BDB68E2E054AFBAB3510F710E9AB29C69703393599E90CE8F43AECB8DC6804720D938E4208B3D36970D81118200E115111512C920DAFD7F05B0E9B657167C7BA85DD377575465FD8F3E43F7E71FF430F96D249B497D1EBB5E91CA7B75A817E08453E93CA61ADB0FF6F78A7DECCA560F54D24706068929B83EF119BB2FA1DAAF3A840FA994452529BF2E7300722BC40BE485F4B3CD28780FCA42A878B296D7672A81882CBE30B3B030C3551A334166034E19EE6358BF916377C216410B1D7A82F24A710FF835F843386170B09700BAC98E85576E635D7FF75E1DEC03138FFF39732C7183040743AC617675DAD2433785E915F54F0568F5BA9D70BBC508AC7975FB3D5E5350D1EDC4761D5F9F3434F4BFC69787D42B0EFF8C17FFFC28BFFFCB9C8C4E80D375F6935EBCB2501AFE4ECAC3C12D2C1A70290268363833C9B1E95087A99520CA7701294A2CCB7664DFBF5D798DB5AE546433C1C4BF4F5A78E1E57CD0415E3D3BA44DAC228A9F05B007D1639BE5222EB8AC000B13CEC0A1176AA5595C552C9E5AD26A35210547C510B4DA552E8E1F0909013A19BA02E15426860BF6AE2BF65D3F3450E002DF05EB0726E0F05C7C4B0207A1CC9C9BCE30C9506F1E1B7AE5EF1E19BAF6B4CA71EFDDCE74EEE79B15A162666831A8B09EF83443218A3B572F9552AE4F77829E053564B50F0E5F35C76E4C305783CF4C23702893810E33AB21578954A32A154E3F91A57ACE1B8F320F990A432852DF5FAB800E101EB24F007D9CA79384F3A03540F458E3244C971D5BA82DFAE5FDD53154A68A4231D303A63784F187DBCF0E9A012119B08C70490D13C2A7561995E1F7BFCE63FFE96D785D0FD228E898F66F75615D110AB50ADF0B52A9D7C04A4B4F100B809B7916A9DC89F817A53596C655EE033B9FCB1235E8B3C78FCA5F8ECCC79E79031C6F06CD9E8D88BCF08E383B3C1F082AD6BD7AD5F5EE50B65BEC8E7728EAD37690C161D320C9447A41BC0D6803D0E7A0D924C201A59DA3A9BAEBFD6DAD52EA43391537DA15D2F1926A7D51353F2F1492C2685700A304DEAC5029F4CE70B459E196244A7223201E0A0CBD42AF81C25F2A35256C8227E18F1742452E2F86AA9A294C30582BEA25080D1BC09A8C357643EE0932144C4BFC1A42B751A7C458860F5F990C60193E202818CF9B135ECBEDB6E0F856343FDC34D76C77B366FE28F1D891CDC9FE178F0AA54F08AE5F0FF2BB94C861208AF73257F0F9742404AEFDC407E6E0E4A1D2E3894BAC8E49EBD48F8AA3C5FE705C83D32593298F55259CE971081C9380E8D40A0B071E861F8601AA46766325383946746A7634FBD04ED8107238ABCE40E51787D5E9FCAEBDE3BAED0743600CDA815B83A4E17F554ABA0F3029D31541522E686912972558E83B410722C9D815F739D674112FA30FFFD858406BBE6FFF3EBAF0BB1E93C1C39AFB049F143E84BF9081F395718D99D3CFE8BE489A732C3874AA9006C166398C18883E32EE17D758D5EA7B2D8EB0A8D79DD461109D46070F3E6E5C71E7BB098CDB0F7491493B385C0E0A9471F39F6F4F6E9B1D11B6EDDD6E2B597B9BC840454916DFDDE371481195A38581A2C7006388F584A15B87816C6D8D8DE5E4E65824FEE987DF889DCFEC38664DAAA5657A1D42B403DA9D50DD5DE43BF8A55ADDDA6430643074302F71B0EBE4A6732680D5A74A9430583C162B2D9ADA48F1001AB1470730C3AA0D424BEF36B40668FEAA1B10052248F181D0C479C2EC934A0E2070086CAA033793C38D57C3E270A24421252C2DEA7EAF712C63D343653176BEB7A1679EB109CF25438A204178691044D708F2F0550DE9448FF6E97C2D4D355E68AF5D960B2B72F3B3A5A4A266B7C11C25727B92FCA785E2E94E4E50A503605FADEE06BA9823F5213A84A1536019601C5B2444A213B0051905C02F20762DFFA59E570BF14D14AC50014E840FE29F52BF94130AB4A70E87536AB0C1F91E7E4B9822C9B2753C33C2258C65AA9441F816320F0C4A8C3829E6741BE6699B08250D07C213F3D307C72E74B2F3DFC8BE9A121BA25F2527E97559D77789813C8CE5B22307BF4E19FFEF8CF3EF9933FFBF4FD7FF1F9FFF3E7DFF8FA3FFCE8DE7FFBC1A3FFF19F477FF2ADF8919F15A60EF359A4F739C474E74B0E6A1AA7434826B96452AED1E40687E1526FDED0F3E8E73FF3CAB38FD7F8A48C4B1E7E6AFBE117F76ED8B6B2BDDDC565E2C55C86EC2DCE3F64B158D21778799E17B3EC952C284AF56C3429162B46BD415EE4A7761F2A8CCFA0310B107E18DA32C773E99C00E54D869CFC4662801AF4CECE76955653471246A3966954A8D327D705CE8D5A8D5430220FC83BF60AC9616C8FC9A0C71A6183347A2D121FD81E4A6A01F8C1010493F73C3A47724FD4061C05B98C25C058DF1785DAA8535B4DF8F5622603EB0DAF49C248F0EBD0789D2D8D66A37EEF9113887A95A2B871717749ACA8F4C805A392AE8623F7DBB8B56F4968F79A4B5183055BDA0D68D7A8D51A719C21E5BCA080DCF3BC82893E937511ADCE64E874003580BE7F249DCCDDAF54610DB07EE4AF97E11B082C35836340A1B3E39A0DCE4FDD0306AC1417B2432195874339E1E0AB002CC3AD24FF125553769B42AFA7BE82B0CF7C09C9457C1668F75454C12281F99E9B8C40FEFA9529158BBB7FFAF0937FFDCFBBFFFA8BC1EF3FAC7EE988E7ECE8C07FFEF0DC2B8705181042D9E617ED372CDCBCEE9F8FFDC97F0566777CE78E7DDFF95678E0E4A285DECB362CD9B069F96D376DBDFD866D6B96AFD46B1C7B779DFBF7CF7CEFF1AF7E63E885A76A7C02B0560D41A5089201AF75392028D513C7CAE1883C9D1166662C7AD5A66DEB76DC7BDFD0E9FE5FDEFB50627AE29E8FDC6E341BA04B91CB8211A1E38DC74DE721AA2820AE72E56A8E1773BC12CA57AC9A4D1683C55217CA1AB9D2AC5593930E1165095848BDDC6452B99C50C9843800F8F7FB4B95CAF4EC6C6571774DAF9119340A935E6ED4C8B46AACA05012E04869745A3C2AC715A1E06D16132C2679FAF072F0A2F27D3A03844C31EF56726B487F41DC49DDD4185A249713018A4E024C83DE665668D565A84E96CFC1265248C01875382F0B5A9B17B5B71E3D3B80F3B076413B5728820DC9F13CDC33E483290A9DA785FE0A73FD164AFC6B2E6AE8A404D6B5A41B710C360CCF8E141D0491D065B1AAC0018044B20340BA9C58DE94A6A1341E3A8500DF2D0A20CAC36F918C0039EB040D0100A9D96EDE66E868A20FB95862C6D2028C8685BC2AE3C8B37A5AB6A0C8E94073D0DAC1B6B00F626E375242D856C63323D96416E0D517EEE7DCA123FAFEF16B9A166C6A6C5FE8F4F80D26B74CB3C6E80A3FF478786A126780ADEF6F6161CF3B4064B044717CA0FFC8E30F5F7ED5C2EB6E5CB56491D76D51B8AD5AB7DDE8735B962E5D70D33B6FFCD3BFFDE4273EF759FFB2CB5FD9D9FB4F37DDFDF017BED07FE8505D44B8C9995B1AEAAC1400A1274E716174A21C4F2E58BBFEDAF7DFFDDDCF7F55CCC4AEBBED72B40FA5874335196250B51A1E820027C8D2887A896A010E61BD56AE827CA1B6D91575453191E543F10AA0C72282A22AF262B85B754F37622CDAAB025FCB16A8E600D88E561F9B9CCEA733F087CCCB96AA2C7A995A21D328EA286B839642C887C675A86C86B61678ABC568B118555AC4BCD04CD4CF0B890C14B8A1A20D21328ADEB071E08018EC36D8C46281A31D843FC4D070B2EA442B625530785545A3DB6AF139782E5F0807CAC958359F55B0D892B65226EB686A68F3F946A6029148643A1004BB84CC88588D8F8FEF79E619FC1603152E0AFCFC7F5E6D9F2590F2FFB28FBFF54589305CE0A8691775E5E309123E483C347DB50A278728CA24916285035E95018F243E1BC89785683C960D47A049648220CF717244C9B4087849C95D2C8AF4C6E70B6C983DBDE0E39122615DA21809843A2F57922934CED468B4CCBAD201C38991DC599646395F2F76C1A79FD749EC4CD46BF1D3FD4B1A5AC150D7EA751023A0DA35BEAC80A59A0C4FEDDC2BF01C627ADCDB2550EF6F52FF640110DC88FC2BCF3E75DB6D1B0CEA129F0AA542D35C2E51150B55B1584282371DCBCE4D2136309AF42BD7AFBEEB2FFEEC8FFEFDDFDC0DCD871E7DFCEF6F7DF7C91DDB4133D0AC59AB6A6A9259CCA615CBA0128901160B5EB97EF1E2154BF7F6070EF74F2A5023468A965C08CAFFCE6514433326A5AE2ED7D738844375BDA741A1D61766238568AA5A2CD701E31074249246C06FC19309C7B1443A93C96CB7427C1163A1F6309B4832530BF7A29C7EE139C6D0A17D805E5780CFA1946B898D824D06044DBD5A943A2DDE8D51DA2865C99AD8A9B446B31EE609159E06A3C66844A46B7638D51A0DF93E582A046CACA446524952965C0201753693D1843B32929AC35DC0278411C6CFB310A2C3EF05ABA4D5E3C9E472B807954E932F160AC9643D1238B6FD59D08EA44CE80548ED55822E7DC05B1A259CA742D4EB5AAC607B4B72621A8D8EC5545626B01EDF90694842265751C8AD1BD77BAEDBE6BDE12ADBAAE5FE6D5BF4AB9627E271B20378A13F149D72827158CD3B7C200A0A59BD0FDDEC4570E0927B67012B58B468A85045D138190812F43AF1AA082CA2BBAAC29B00CB050088441C9ABFCE2B03F6156A491BCBD64BD4A05CA9D1427BB1CE0B321C5AA7C638F3CB1DE9D920D5E520846021CAC51CD4A50EE53CCC2A493F42DE527866CA5C4D7A2C4A3E972C16327857A39908FF0693CA4852A10504027A26FD3CBCBE4A49AFD7ACDDBAF1EEBFFAD45F7CFD2B7551BEE3A7BF3C7AF26CA652AAA995E9D980D1EBCA45C2C023EB5CEEE6EB367CE8FDB7F99A9A6B4008A06B952A6852319CD515AAEABAAAB4FF902293278851A62A85E28AC6665D6B875EAD479A567DE516C3822E2D12B370D3755A6850253C69C088C8A0F00055D41AAB056603DA1D4A4A6637D95AFDE4646A815AC2D453752E65DC88AB3CEFE469756AA501050C1295157FCFF8CC323985DD008E88B903FF4A0A7F0956D0198C2885C32FC394E0D919DE80FD828940D92719731626D3FBE0CDF1AFB48D6023C129CC64CAD96C3997AD7085EE46AF51AD443639120820FA06F05A10846DD75CBEC061D8F5A3EF891541F29A5E9D6379BB002272F2E63F07C973B753D1D59A0C47C0CE11D3B93A5F02C944988BE503214D7313E96160672A05222C388306B7D3B0A427974E43E895958A026700FC47492BC03812C84CAC6009C89FC7F2A5B2D4F983407E0663B723AE607D32E079DAAC28320438807F2AE70B4226073505ADC30262962166AF8B093B165FA7E6C2E9E9407636949F0D97B379DDD21ED5AA25DC5CB494CCB94D56674DB9FFABDF2F64D29069A49A119CC052CF877417ECA9C4D892E07DFC0074AC58D9F1F39FAEEAF6085C8EB4831E6C558AF0E60F333C12F2DB6A3581137329314F6F4E710F650C4B405D966D5C77C3873F5CF23655346A6B0BFA42D32FA8EA55643D6B0AC582154BAFBD668BD78E4CAA58D7686B0A552552904DC5800D331F1C0E3814AD02641E83D559189B292532429EA3CAF2574E968321384B086DE926D87965F58735ADC120532A3289048280603623B7A3F0C2C82C28216F382DF88A9B94E21B9260E4AAFC4E87DF85637381BACBC2901A150B3024496A7601B3403AAD4C1F831B63B11C990A4205D9DA49561EBA1C7785880E319ECAA8C70490F3C9CD124CBA12A7AF809C5D91505451EC6EF5A3B398BBB515148B60280AEFB71C095763511B9F7BF1BEEF44A687C1FB9E07A02F55F8743F1779876F211768DE5DC1EA98FC3EF3EA65A07BE000949319B04D500F5E71D8EA26431DD23F1FCD4AAF9AB5D9CF49E026E0B57A9D9F8D849ED85947DC33EF445729792CB24C19B91FCC8D9927959D7F021651A06F94C264D2D8ACB0C5C028907F00308C9273649DE917A5F3C2826072AE58C1DEF9D418DD118453D5E2CD1572384E42389ED97980DF795081601D10AD505ED2D0E29D4D3CFCBE8F6FFFC1FD91D9E94A19484B897436226366702E483FCB7AC3E214F1F7837DA734B9B0D5A003B688745145108B198E593516914335322F0EFB0DA74B5517E1422B90F805764C0820AD8FC1A0B336FAAB2A15241EA8285540A8556291533ABDF9483CFAF2A1FAE4F4FFF9DEA3E97CA91C2BA8F8BAAEA1A10A5D2E429E945A03CACFBC7802A8536534519B9B836B0E369B066826F354E8F0E13EA014E07280ADADD7725C215FE43406ED482A6EF0D92C763314331959490C814F41F8181CA7B2D9B5BE06CCE8203014BAFF3CA10F42ED7AF77BCC575CC9389B4CD698B743A5CC08C70078B07CA6C16042E9128E0A058A6CEBC904226BC4E3D9796C39FEA4B690738F0F877987242006605811BEE0BE11B2000842AA01671CE9062562128751979E9E027CE4329BF383033BBEF38DE973278AF9D4C5CACC0BA6E012EEE15B720A24C6DBF9E25796ED00F7DDB1746151292FC2F311CAF952C9B36DB3CE69677EC5057BC49CEF4AC5DADA8C641E783E534FECCA7EEE3ECDE347E4152275B11208960F66300E25B9A0AB4AA5F8F894C41A979A24D332C14C222043761DCB8175AD94B362C5BA66A565CD2A75675B369F85B04AC40A901629E58E989227B8709E9204DE81DFD771CDE59C5831B99D949B43875ABE427045A31730A15A265FE6697AA7AB63F1CBC3BB3EF3C593BBF7218AC43198CF704BF91A2625A80B1184025417CF175F7AE2D1CD4BBBEBC8437038115063581ACA2DD16F10C4414A905681742AB955305316BB0DB4613E349B0F05E01AE00D1B5A9A39990A4FCF9E57A1F13619162E8FF5F6F14323E53C773618FFD447DFE3B49811B6AACD66A5C5A2B0821242BE3A655DB5DAAA429D990B2B6D36EBD557DAAFBC5CE975536CC5AA4B481C3BBBF44B96428285623197CBC12CE3180C140A2B3EF971783D0C9601EB1666182B562EE50BF84A717DB9CC6552359B49A5834B4596553286927C09C180445C3B4F02C3DE4951299312B4377235A8D53AB3D9864D245300BCF5026D5862AA322601FE4B954F0A483B15852BB1AD3C8F4221C28ED88FC11E6921FC6066EB75255144B60FAB69B3D91A1B7C9B2F5BE396CBF7DEF7A3732F3D978E4CB3ECFBA57CE4B7D81762FEDA3C52C3D01A7CCBA63C383A5A4CED2D38A0FA455D1AABE912E79D751C6085D878665383174B2CD7E8E4A1B41590A742C58F05E7EBE0CE2B69C960E0FB42340E2F905200CC8198F7C3596A00C843243C0B1F221609DB162E44BEBE0ACFD265B7AE5C914684C4E020F294900E9B3F0625CA3FB06E6C78352E5DD83F3D3E72E234972BA4F3F954210F47476931E28100C1E01EC026B0A934D729EC817B7F3E3D30000B8B97289610C5B20340BA1FD00DC370A1FE7B2BF19855A317F215A085005058660FE79F205C86D7B1960AB87BF854489B20349E9B494F8E61901856A69ECB642786854CD6DBD850D39B0804C27EA9B5358339B8FF40251C3D3E3AFD8BA199855BD7BB1D56153C7BA7ADDEE0E0614150AF6880E656C36BC927D3CE4FFEA1EDDDB789594EE81FC99D1DE6A30929A292FCD50A7CBC6C0ED20F863231ACD4AA53D3D37A5575EE9927D430A448DF923E8104570454C470459C5E36BB092C2099261A808DC18987C13B1F17D1BBF2A74E70470E912328195BCACD9FF739C03CCA17D31393F1D9390AD2A0BFA13BCA65121BC6733ADF4A84189F78334A12EBB5F85C025198FE425607994D20484C2796F97C012E137C33ADC98C2803DC0BD2BF04FAC9562E59E4D1EB4E3FFFCCE0D30F4D1F7DA1944F5D88DC2E3D036FD10160372D953290C9632FE6A057111BA168C2B962F1F9E347171EAE188E65FA07859920726474885D4E90297C7F745712390288B288320E86933254FB82E38E37B1B7B6365F7619FB582A3381CF4A274FFA5EA5F434752052AD628416E1D3EC16F07188F7BA3B50E027756563C981720D042234299158125CB19CCA5AED56EBDAA53A8DCEE4B0C35540AC062FBED03F0617486B364B61393626C8E53C32CDECA9B3F3B95BA95D133B45380094C0AA1110FCCACE5D9B7BBA90DC04BE2D637D43A874448E5A36387AB0E354E109CB0E9B1E05E7339BA33086FAE3A2E101DC80522E9B0F4FCEE094DA1C8EF140A80ABB41775D2D0682258D21DAB4C07FF5B577DC76B54925E372399C5F644544C4085A3D14083C6DDEE7CEEA34D9742E76F04885E3743D1DBAE50BD9FA134689289FEAE9B04BA954796212B781588117ABC767667C2D5EA7C568344096680619D60BEC5D82B671CBB51AE22BADDD8E5015D00ECA9849662F4453CC0C92E941D86136A3C2733E42236183BE6342AE4468A69197CB70F9C088AE08804528AB5F052D80419C528E8715849185A77EC2C8C151A5178529A465C119817EC199C17E54441D853BC846A3D64696CC7249C4FDF82DA822E835B1BAB4A3030578BDC7FB4247F707F63F21F28579B6D5F933F0569D0356BF390F55B20782378FD3009F84706239D81A52759BC47551CA6AF93303C20B0735672735E726C543BDFC2BBDF570A2124902F6B2BCFF46AEC9696C6DC0E3B18E3052E7197C3DDF13517238581D248B9B903F64791476FEF050B958DC683491B297102266FA8C5EAFA051222926A5E40874C22216F91ACABD13A96A3C896F10B1F45CB579203C83A4B2C9E3842F6474385530D54D7E647770467279BE0ED05DA56DF6354406C6C0D291A07E4287C8CB97A81CB422856CDE542E2F6E6B85AF45610B529F0A30E1913145C50276114887B25E95C792D9C37D23477A078F9F1E78E4A9ED5FFFE1C3FFE7070F3DF4C893CF6F7FE999675E38B0F7E5DD0F3EF2F87F7C0D9588368B3951289F89E627D4B698B7BD7DE55A5F4323974C6563E9422A5F15F044722E5EC0115536B88CDBD634BEFFF6B6BFF868F70FBE529B9CA91D3CAC4D67955341BDD9E06C6B76B6B6181C0E78545846654B631DC9D50677512D3F178B2E58DC6E31EA4189D6802C07E7DB6EE3B359C463E8CA855D40B23F373D5D4926CD5613AC98547FCE12F312D981493F225C03EA9B111303316690B174419DE1AF107CE5394685A8D7D0E706997BC82F7546414005CF072BC5461F20334DD34080A5A29A4627331AB00B17A00B22D720B50FDD2A97214A27C5473E5269CDBA55FB0E9C8429D223CAD1E8E5F870B1B66DED1AA7C57AE2DC04EA1FC247105B024865C9D4B7360F0063273D216E3F353E49783DA32E2391AEB4189015CF9DEACF4E4C01F72D4C4EC79EDEAD199EB1992CA8812825337554632430158293C5D3C2E098A3B3B9E50F6FAD83CE807A17E6B7495CC957DDAEA4C8256A1CF38C19804C7B90990B397C8D068D06A828C88F4033A4F94D78078DD9023212B20D72C6C500D64DEC0CC64D22689C3566EA5AB268BA90115064A4D31ADC0E83D7A507B08BB052A9B4B634193D2E95D5827C278AD559DD99E4E3524287C8DE60EC312A1E3EF0ECC9DE5A3E4B0C00C479ACA115BE1267190433B98A4CA0589F0A44F3B9E2C84CB0AE8289926F5BB3F09EEB377EE0864D6E9B1937B36DD5B29BB66EDCB07CF115CB17B7B6B63DD81FF9DBC75FD93D9936B574B6B7B50252919744B3C3EF70FB5D2E3F9834E0E8789A7DB80FE84B7DA347CCA6728303E39FFB922A9EC0DA507089DA17285D8E130AF9344EE19A953595860FC5CC1E7B289F7DF9CC4073579301E55F6A252A6E2197E46E2453E01422EC46A42E2960B4E0B0B9A8DC450A5BC9BD615A097A603EE600A84AFC05AA402079955C63CA0F90C30B4D5F2BA1CB09AC0B38BD78881A0ABB8095C11BC20120D147D00DDB484E343302E87380E648A8A246D730AD96549FC48E038712411D626B1637688DC691E9597955ECEC683B7CF08490CD2397A1A1221C60BC862B57AFF43B9DBD0393C550207AE6D03CE9F0D560FA9B3D00150E896BEC7D3DDE3750E91BA5F4130B4C89EE67340093D142CE86A786BFFD40F4A16754C9AC164D10743A44BD50188811598D0F0BA6A1E8C199C35B15855A224BB439296A6706F1D240FBC2BDCFC30F6C13F08BC0CFA04010B50A33012C2432C50029903481C24276BE5E46860EB9396264106342B20E2C5C630EA8426F3076AC5A9A29E4801262DBA85FA7462354AA5A8BD5E87600DDC2C1B0381CD16C16AA9DE057569247240E383FF4020149C42F9D3E7C64634F3B29455CB82F1864D01408916161801CC19FECB1DD278F8D4CDFB079E596D58BBA5A1BA0BC9F38D0FBCCCEE3868AEAE62D5BDA3BBB291584B6704AE58A2BAFF9F37FFDE2BDDFF8E2C7EF79A7CF6C469F12219D42458BDDDDA8D09A953AA342A3938A8B8C765B319D873912854AE2D9BDCA48A2F15FFE4EB3616D59A52A4663A578AAECB259DE7B8BEB8E1B2A1A0D9485D56B8D64D3878E9F59BC6A91C76DC5AA22A0C4E641C552E122CE300495B89664334D060DFB7082E725577B1E9B66C0B4868AFD4175A6BF041F09C48AF9A25852E4D04514ADA90DD40C5832D5F875A158A2C108120558E2C54845BD4C97E2F8A08736FE496732C271D33A1DCC7BA5668912C71EEF823F65932938635CB5E674BB1674B745121900C132E699C288C00820A4DCB47449962B9E1E18C90E9F091CDFF31AC97FF3E780153E42182058E9BC59AD4D4F071971418222542A8B5103B5E9B2B72F5BDC75DD150D9BD621ADC3653228C1167172905C2A140A73618CD0C2D850F4C5977C7DA4906BB1944C28CF2F89141D9D8FDBA5FC2FA41D8B4E7032F42EC0845ADD64B51612897420943D3732F6E4F3B9A900482FD819834A0764099F25250DC8BF823B44F8292D39439CA8E046CC17FC6DAD8880E7C752C89555CA34AA0DE8DCC6C27084DAE8C3E8B6DA5B6AEAC8F133C4F1A5341F6C488998A778FF5A3D93482B1211B2CE2C3697B00D82ADE0769F2F6A28A29AC4A0DAB8AC134A12EF7A6A70EA17CF1E5EA9B75DDFD2B471F95284725C340A4F17AA11FAB8964EA62727F097D09DE4102261825E818811952A93DDA50478006F1EE73A2F003CC07B65F69F883EB153331781A312FEDE7D85E121E4D808BD512B1DD76C85DF3DF3C0CFF9479EB0B82C15BD66CFA113CB36AD6A69F5401393B38AB60352F77D86FD4B9D078098810641AA05018D4209D7058107E296128228C0C4D53A2C06F5F0215704F1B250826F098B2131E124FA3AC5D3B4934498879EC231C01E56400747024345FC077A1F561F71A141224B299410AAB10A6040452AB349CA7080C8AD319AA1175B5D8EE0DC1CDE30532EF940592D16DB1ABCFD4313347D877D04902EB44E41FCB4A967413C990B47E2F9B17399D931E6BF491FF2165C0A1A6A8B5D2E55CC3D0BCA0D2EAC17FDF5FC41AF81E68A33A034E80183EA5C2E4A65552A3A3066717013293072CB997C295BE063098891982FCEF334F1056B15CF604E042809F31512EC1F08F5C7C26A54673FFFADC947B753729EF94024C772B9C986D36672BBBDAD4EB7D837D8FFC39FCE1D3E3EFCCBA713070E831056833EC7BB096564E880F193DC539C0D398766AB5573796C701D0820DE12FB0765AED722CD09BF426DB34849389C13AE0C67AE6CD5994B614A63532D2CFB2A61DEFD67CE366989EC858BCE27FE4F561F55B2388C045EC1C10DA70BA0E7C00186653A7C7A243519FBE0EA151D2E3BE446ADD536AE5A0592194C161E16F703DB5F9C1A8363813B242122653F2F2CF437587B80B189AC38975487E3BAB2A89B0E5AA2697C26CA53EA9393CAD939553C85C7845B30F7F0E3739FFFA63994D4190CDA46EFE32FEEEB5CBD64D1924E309DE04890B247F848D814634C29E5269FCBE0736A88DD45028E2F7AA74DE776985B9AA8625D6782BC421E0D76378EF705DF9A0620B0DF2041263D086A901A1E126C54295B14F23C9C250886B2562FE638A3DD4178143992651A1938AFE4E8CDC8CF44321E69633851485ABB9C4AA3016F058A1E4A6470AED21C7FB4EF1CD503A0FA67660677B4745167309142A100CE1CEC2764125B83AF5E8BF5F2C50B62F1347873D1E37B855CEAD246046FF21C28E4D902A67F12BEA0D71917B483C328704552F0508A20B21230670084CCC7E2D991316E788CC005E21BAAF42E3B2C2D2951789C792E3B352BA4329895429033EE9B81C4B5745EC6E17DE62B24093F65A987F0D1DE15B606E3B969784D3454547A1EF2B9E10311551DE195C56AEB6A693785535EB9DAE7F5D383C20502CE440C5D390C0EEC002020140F8052462E2FDA22E4724EBB0D697F6A420629C0497358712B02867641216BD532A3766476D6D1D3EEF07B9080454431CF7A62DC5E945C9D3D72B4CDEDC01F49AB916B4B5C3516B0502440144DAD7E603AB47A493756CC6CB67A0C96CD1DED4088609A704AD2C38381830711C34047508D11803F24B82967C4B821882C292542A20F7C10F24AE2853FE67945A1A8E44B6A870D6A1214524A359075269C84C6CA6854864ACD94CCAB7163B2BAB6C1B5BF7FA0A9A76DE3C6959944CC804E334832385DB6152B89C104B645BD6E76811A542F612A512CC98C641DE715FE9569D552B04BF0308EF59B358D6D8020B1F42CCE21238045A6C200182B09D1A1B14E1A855A07CE92C89725232349361E2D3836A177D84013829F43C0EB7C4BAC8BE69E6C905C5E2A72781F68F33AFA2921B6A4EA70ADD6ED09A73345547D205326D6DDAD4D2A931EC509AB562E09C492D051AC649E3C73AC0F4E98C76CEDF6B87FFEFC413E9E08BCB267FE90BD15CC200552EAF274BE86F93FA41F890D889A27743F2E8E4DE3C507C2F991298C3DD4C0A9C37310B779FEE9C08ED2396C84155325255A750865C449308B340C9D8A2DE806F1DC79BE9A2B487118EB90476ADBE4B026DC5AF5B56BC9D25226821267623E5B061B8F8A33494722EA12A1E959631EDA4266F8488992BC4210C01EE500F2E34096D369F8E63A8B19BFE7B0C31BA6E46309F939A8967C01DF2BAD66B95A8BDCF2BE4387355E8F7B4927221C6C2786FEC2C2927EC561A1847F6DFADC39B4F0A61DA46178F0874B7831269E440FA08CFE2BA786108794F97278362447139E522993E320A566B5CA6E36D5F33915F2622811311818BC45955908F280CC43A748D40558B0FA5C4C189D2ACF45E11111B66AD2AB90C58BC6C51CB861683E407D828999A651C38F021143ADD5203F877586BF3E19891675AA2BB65C96888640A9470A05EFCA47C2E9D3BDA4780541AB072B88AA18AB28A3817E86D9C472154B658C377EE14035188275133349A3DB05B787789C0C9BC0BEE273D1E351AD37B2CC8C56A6D621F3415E021CCAEE1EE0ADD8053A3F2408EAF05410DB0431604E17ED0F5DF319E47947088F4FDD4490A990D81612E48D13DDD0D860B580038EC03F9E48688D38631A04946EB703B1A3016941E2752BCB4219BC0ADC39BA4A35D81C2B5A1A77BE7C429C9B0DF5F74AB2F4E61D213AB364DA8B25F07F100C504A0EF34DD43AE4B66A7CA51A4B29301D9AF5FD3B9FD3628E1E2C17CCAD566D58BDD875C735A2C7A604CBAFD98FBC3973FB093E245905CA8DD46C3257CBF3172998F53A3814C64667EDC917E73EFBF5A9AFDD1FDE7F144E332418DD97B881517E32508926CBA91C754F41C84B12CD948194A087EE070CC77118582D01A5CC4B51178B452D5F027480430CBA266A2893F9ECE8D4D489BEBEC14CF4E917773CB7E7A58ADFFD8E7BFFDDE8B231AA2939B6907EE44BF17870770E1D7CC52EAF83764F9DA010EFC291267F8DE0410A0358B3F1C85C4C8DCA40B8C2E0C8721590EBF576C78ADBEFD0418E33793E1846A11C0A8930258B92C68826E53899568D1626415B13B008749272C1501E19F154569C0A0883A3AA5CBE168DC98422CE09D91AB85E344E86F2C7F8DC429EE3505A0920A85C82BE48F1C5A7A7C6AFBD614B81CB1180A3026A49C01D553012DD08639BC0A3A2BEB6255815BB47A64783968290E5601625E3832A18EB659B4C8D4DC890A00E81981D52BA86F80E848F216DA73499B0AC48C911AA439D1C143214B8596D8655AB705E9446232AE51D3A5D2C12D3C041606C3909E996E66C4801008E2B4998C10CDD0F43463333993A40E15BB4F74493C5D87B76202F5496B43509A823C37251D82DE72B6212D036A052F40B64F0007E879D07057A7581A57DB26F383DD0474DDE2F498BBDE173C0FA39526D1B188998815E96BC2B62C99ACC2A93991C639213127C3836906FF4B75220C3EAB256DB7C969BB61AD62DD3F6B4B77EE89D0AAF93EE54ADC1821653E9C0D973877FFAF3D143C7A64FF5C5837335D08AC030255DCB54044E145FD1894A6B55E11164F59DC786FFE6EBC39FFF7E6AD7914A2455CF15E1169345424E407A322A72442875BE2E9EBC67468E00766E31ABDC2E88553C185EB26D7350E4BFB2F3D93DE1A943A1A9298F49F7EEAB2DB75D516FF36EFDD7BF7AFF533FB8F3FB5F428A00F114A484F479B53675E444E0445F7C6C124D729E7AE891776EB80C6BC152B734D1089FC0B02972F7F142F627381E80636202F353AD2D16041DA2EAD6564A8CA63220B5A0EED08A441288006A08069272F0A6A8840A155BA9D9392E12972A1C0091E107288B873ADA54BA1C4B50675D6A30CA08F9783127100108B2C854A4A8A7C22FCB9AE56ABFF7E5C8DC35375D0EB83F97CD81C4CF3418412E8039F18694F0C2DA96456E2E599989568532E26C346B07EBBA94CA0BE1546634C82B74B8AB5234861FB6B4B6C11AC0AC615FE092C9549A1AC0508B992495AD0043B11572D40D1C3DA6B7592BE3E384690067036D4CAB0BCD86090B62F18294E691729E8C2C07A9A247017F426571D05F80E348B69E200A040D0EAB391A8EF40F8FB6357A297081F0B022FC9EC55DD164A684D43551B3D54084209BC42BA8A25185EAA6B5AB26A7E6064EF406FB4E9CB73A6FCA0828669E7C29BAF370E9D458E9C8407EFBB1F268003B0100115E010E64707062E2EC88DA68444069F4790D1E971EA420BB59B36A91715937AAC92047F4D04A05C0634442027AB266B368CE9A3FD4AB9D890ABD03DD55F5B15D07810855E369C25B59248A1290C19F3F9B8EC58B3C5CC422EEC3044733C7D727C2C2F1A1F8A153B01B5485C38A95A4801CDE14599F720531373ACC53F205317151D036F9E53A6D39939BD877343039A369F57FFAB37FFEBE3F78DF6DB7DFB0A2A575236AB73EF49EAB3EF987CB6FB9DAD7D5016F954BA7155C113D8E895D8C2C4120D6206ABC5ACBF4C0B8399B3743FF9A6CEEB605CC08900343E11D720BC4F45572B1443CC7212B06D718F0298FA03093CD8D4D270F1EA96672741A4177E3056079E0711632D97C282AC4D308E3B250F9F13410DE52325D8A25CCD0C25A2D1C03B0776C0D5EA3CF538DC76B998C243EACA7E67C09113A91400A60DFA01AAB99CCC8CCB47971DBA675CBE29130C5272C5AA5F5A1EEC248D3522D114559386598688642CA89A96A2402D9C4CF01BF37F42CB12C5D6EF6F890A516B2B9E95D8772B373A6EE2E12682AD196EBDA1ACDADCD72AD0ED530B07C64B3891BAAAC0B152DF60E67064943FC6E388CC309B8223C1B46CC66B23900714AAC42A93F29541C2D121C25935548C62BC918186F18AD09C507ABC57C3BD2B93DEDEDC09B9C9028DC3CF43DF30E00214C23CB98CED281647C6C7D4B570D044B847F2A9DD56CDDB4A4E7DCD9B18983FBB391103B7AF3D71B3B078AB6AE3697CF8D3C4B299854C6F3A5974ECFDDFB243F3EC787938A92E86EF035B7B701C9D23B9DA4660084F17C9E62173C0995CD925324E1A820CCC249859B8BE67983A39DEE86C50B17AF58B0B85E2C37D7D533133384A631B34EAB80F8351083D6C3A96145C24ABD416F3299B034A60FDED6F5A37F054A47D5F4C41C84CA20070C36B1887439EA6281028130C0A19104F9B5D923A7B8DE73E87006C0341E8AD8BC2E335865184864B772A707F81066A2B0DB242894F6667CE7AE06975B9A5614199A70E8AC3AA873A3713A1ADFD2DAA2142A7323537C264D4245C59A0849656884960885A7CE0D22939CE6844D0BDAF18F080AF53A6D5353A37A6A267BE2142544A9490A4B7A431CD07B07F01A1CB174568827C1B8871A3FB6EF58B07FA4188A41D9A17217112666A666CE0DD70B7950FC099CA7438E184794F91B349BD6B3FA15220C30D5A89A9E993958C9DD70EB95B9541A010E31702966638467A06E30B00009A42E5B50FC25C2FB118A18D1D3C766A767C1325A2CF246F090416D22856B81FB331D5279FD6898121F9DA920E9C1C234244C3476BB1A7D7B20FA0C1144188A8402054B0C1D026D0ABB08E1E4D388FC2A688101B8EC428A87396FE4AED2A00DB224A87750E15710C6900811D0441F22A038AD0E46EC8C1E31B1D9AAD2133709E707CA71F1B6ADD1441A3A8E743F48BDA110315F4AA27DCD3AB5C3D5D5D40406E1D499E19183FBCFD322DEB8115060B8395C685BB3D7BABCADEAB7A074A71A4B734F1E28BFDC2FF6CF68F2656DA19A39334E512C1E10891254714A7510E443109F4702F71068F2895460F7C1E40B87C0B7C1A3E29CA34C3B1B4EF6781B43A3934A9B055114F9949068BD81877F0D8281D14472C95A186099F0AED62D6B9466237857800BE86FB056008F5D6E64A6D51E274C10AC93546C8DBCBDD16127884EA30D4E0753B9DCA2ADEBE176408993C145E0888AEF541ADD3EE6C701C9EA7D8F3CE61565167FA31AA5E53259B27F02952D602C0301DBBF7D474F57A7C5EB695CB55CE77091370AB4D660800947386B32EA3D8D3EA18A31D879B7C50AE9C16D3775B4B56FDD0C65097A8CB3D18B8A5844C100B141BE01FCC201102B14E14654393E174B8526A6F1E4C51C3F7CBC3F3C3E0DD2075432221F92A422DAA3246A05E25133864ECD79CF9DEE3FFBA8E2AACBB1CE4847AA6CD69A4EBD3315FDD89F7E087E5201E60BA201AA765D96CB17D4563B3A57618837ED0A0E61499463F568A1C90FA1DA1ED858C9AF8DC6ABC74FC356A8810A7025A23AD7EAA19F3C5A9D0EA12A13724F3815934EF27B5918CB6A6748C4606258611F55AE41BDC03331A835CD56FB5C20CA160A4363E74964527F48362544C92763706318099AFC5544F0F84B3CA01A71AE13DC67533E956A74B921846AA3C5E8F59B1B9AA1103B562C45A50483E6D056A70290A182160198B9E6B059172D427071E3EDB7A15C2ED637900806254AF61B36028AD4D06431060CB184C3EE5CD0D27ED7752D7F70AB627D77C9AACFE4B3F999687E705A189A0B3F772C3B388D5BC9C593CE9E2EB636B4C217D8FD559522FAE22B0D359DD368A79A2EE46181FE6AD5E83104F586BFC2714648394F8350A9CD375E91037649CD71CA84F7B1EA78D49E06FFFCCB43EFF874FDD8486E32882E033806C8AF61B0A40A3EE3F26EE3F205287492DB4DC037EB461D3E14C468C89CBDC9B7E1AE9B3D0B3B58391F63CC53671BB92C9BAB8E8C95CE9CCD8F8CF63FF0335B8633DB9DE9782A8724463A6F69F244F379A5C70ECFDD6DB7389C36ADCF6B5CD0A9F57AE1B0E260A1150FB2AA480F417870084C762B2A25C035C3234054A003679ED961E0CB3A23E6AE58550D4E39123A0E07BC02891423AD3010055F7393DFEF5FB47491ABC15BCB17918FC3DE6766823041C0AAD027857A6DB0AC1B94BD46AB4F3DF2C4F8DF7EBE144D56A0299160A9558FE733AD2B1759D5CA5C2A299176A88C18356176BBCE66872524B9A7AA0994715715B837EC016B8025A94754F4D83EFA21DBEDD76BC57AE1D439EE44BF30344E6531003C8044C379434B08E06054F940E790FCF922A65AC1AC574B390EA18879CD2A827790B70AC773E840C103E125AC2C97CA8158851C19FC64D43048712920306B73B3ADA9116280D031914A3FF2C833CF3DB3CF003C00E098568B0EF2420EB5FF183255B1A39CBF26CF0D8F63FFE134E6E662B08F6A871DC80F25DE5965BE02415F3032F5E81373474F5A7A7A1C7E343BED0A4F07CFEEDA3DDF2DEA8D9E01052AD278B85CE341749EC18CFFD24C485511FDCB16B65D7959F30D9B1AEFB94E7FCBDACAC246D0C94307FB6207FB39206B40AC2EB61095D2A354D9A0550111437118CC04B5FA94343B0C25A4DCAAD4444726A4205622A077BDF78E1CD031C25808B0233BCBD20548A0E3061448C0796CE4B75ACD48A030040D7A4683AE2732AB11447F95DF0B6953223DE7F7D6CC066B5B8BB5B5895ADF9C2FFA0512A241AC02536E32474626CF3DFC945F6B713635E1EEF832CCB10EC1BAA3A5C97BD962CC7A39DD7BDAA801DB42E0A311E8AE74205017A8B501E834D43C909106E0F2C570FE8B3C524B7834105DF278A2A1F15A1E656B22F51DD16BD5A0E2C094B18A2DA3D904DB0E5303FF0A6B9107B849ACBB8A862FCD1C39A5309B1D3653CBB22E4F771B08575A22C0523D961261B5C7A52D57B4E9427D6C129A026A7E221ADB9388DCBE757D2E9140CD02BA3DE37052920AEA54AC604E0C6AB41136435B4350143075229C7E161ECC47B1E863A54145325066F85426DC1F1A4F30E789754C5729D9A83FB88270B860AF8A6076C53268C142536DD1EA801350DDA306F7CE62169269FC319F29502807166AAD0EA819800C32C8B0CCA02DE21880808D85A40F56C84CADCDBCD53A1D39FADE0F371772D133A787AC4B57345C71A567ED7AF096D2995C2C14D58158011D9FCD578A25ABD7CB47D3A5485CEFF152ED3FE8C65AF46FA43E2C26A7CB902EE8BC0DA6F63695C7D5B96655776B5B727C2A8B56C1BFA6CEFB375FD2595538AF5A67DDB646B7B4233D35970F44A8042C9DAB600A6281832A9D7EE9006A629AAFBECC77F9CAB6EB375ABA5B351EA7C4CE97C8FC948231E8C0AEB1BADDF29E366AF5477C0F1AE9C023ED0A5A1BD0F672A9B1D13F77B8574CA629BDCC02099BDBCE835C5A12F50E7BC563130AA0F452461DBB86F6C5952687CE69A5F6D970838D3A8DCD846ABAC89E03F9A3A780BF52EAB142BED8CEE7771700E42152902BA8B308D2F8C8CDB14A2AEC90B9AD29353D3BF1D2CBBA7C69F99AB55AB305B10384C4E571E3CE11DD42BB53F73383AEFFE4A9CD375D0B7E73299DC2103871660A19718A7DE76921F3673D9ACC76FB1A747AA3C9E55157AAA6C9693D605F86F340D214280D037B0A4C639C25B982CB7270DEE7674430DA5F812FC5E7C208EED18F1F95F2531333336786D2A333E99970BE2870E886880550292A16A3ACD187B440DDA4AFC2753718F6A7931FBAF55ADCAD5040D70CF48081E0D1D26B1C4E208C7403360BD039980E8550AD815E8A713CE8FFE66B40236600ED682D51CF6485570E6B4071B55AA5F6CE90366A1F44A49C9AD2EB84C528C75208766B60B87082C6DF44242EEA4820421E4AE95C6A743CDB770E29518AF710B911C6037E833E97E700F2522E19814F3888965844F9418323B93C5193CDA5FB958ABD57DE664B16955EB9CD18CAC1CFC7D9C1500F8277409AC9E652B3D1E9FED19AC6C04512384BE51C97EC1F4E8722C978564872423483F63035B5D6B862115A24455FD88FDA29A5D964686B6E6D6F3388B543CF3C23B1EB2EF22D7F3BD197E21585DAE950D8ADC6EE36607BB50CCFCD4685601CC4182112EFFDDC5711443A97F6148727B9680C5A478380058D54872711E912DF4CADC2588493F7FF02B5DB481AF86EBB32E3B7711683D0DDC2F91CFAEB3668CCB0F54634ED415E065CCEDAC0546962068D24C0CBADCD8596FCC9DDD16824CF178568361349948AC8FF91078C7909EA2637AB2E45CB2095CAA843661C492B3C2D263027A6A688C58943A8522F5EBB9C3586923AF569111A328E3B1D00A839702A2C75554B5BA7BDB9098039A07402CC1142300B41928D820C8B095F07CF9C69743B01E9C06E194183857244288AB324F580611D2C60F18D3A7D8BDBA5753A4107540723463675828E086B830D634523CF08B151426B00422F813FCCC892686F8E9F345AD11908B687D249B84FAC3C4C840E6C2B9D8686D0A0398DC30A658CA7D0B635E9DB9AD0E7A758AB9D89C55C6DFE852D4DC53C1AADB2D61B3092160B1AB3008503D740EDF634DF798FD6DF222B08CAACA0EB6C9215E1CA2B745941194DA3C716E032602B8064387484CE17A0C2C1B7A31615E4F0A02E54561C9DA1E47A4110E3E90A1A6AA0822C1022CC1A4F8D78B72C2A22B1ECF3BB298C66A0BCCD61A76672956A83D59A05B857AD59AC6690C2C004712E5BE4BFEE4AD7D6CD713E54E39EF739C6DCAD96979E14E52F9B171ADD608627417FA8D5B2C148B07FD46930DDF3A77FECDD74B93C27E8D385C2C8A4D664B5D96D000F10E64E0422807171264B604DC43348938B5A4D3592C4882ACA1303232A9496B574C64E9F0BCC4C3305F55B45C352A07EA1EFA522C3DAB78349A66972ABCD06C85B3D994B1DE99BBDF7115D385D999A2BC513E0CA2014431C836A493312EF8333995FBE38F3BD5F4C7CE3C1EC4F9EF7C63983C10C8F1F2063E3DD37BBEFBED9B0769979CB65C9E940A8901D8D84C2F104EC09A1373008E154B977B83243F0996B45CFA27FF86375935728E4C00447B288604728428CE0B59AA81DBD5A5988C462C049707E206950AE4AD5DCCB47C0BCC0E8553C86CBEB66DDCEC0B9A18AEC5201FC3CEADE058904AD3F3E17496732759D0E4D6AF9028C3235248573402D5DAD16436B730D6FAB51C6631123FCE95008DC7DA23FB0A64F546802496389217243598487F6E03866F073E00A0312A55A3E0C3DB05B106DA3000A8838D549A1F605271934B00A65A90C3E3F11F540F2411A15D5D27900BFA0C388E99149A3C78DE6B9CACE56EFDF7C52DEE8D337FA2CED2DE067A0E96A391203B513B539BC461333A96EBB6A1312D25010B831A3DB8B781439F2E4A9BEFCC8583993B6762F5618D1E056A827725013B2BE29F4DCAEA472F2182DBBD4CC572C140DAB57D8DF7F97DA6A93DADCC2E1612D1C9096D5027C20830F570FC128B25FF08A082366782FA219C62682B68651258A0B92D31006D6D91CBFE854AB803D619952DCDCD1B3BB460777E4A69F57C94EB93C533AF07D0AB5DE67CB8D11071A0A10502E94CDA22C311D84EBE15669365C7FF5F24DEB03CFEC709B2D48BEC8B3C5E8D1D3B064E848D2D8E04DA08E0F01347C3A64F602B1C033FBB8E98846A6083CB13D33380638A274EA6CBD7F68714976ECC0814C3A21293E89D1F42BCFC13C7B62BEDDAB34F3A2A2309B4C64EA2A154B93D7B269B965E33285CB98DC7784602A18C8C950EFE7BF36B3EFC8C0D7EE4F1D3DCB4F85408106B316331E9DC8D19765C8D163EA11373153980DD7E2A96A2C41E40DD856622538DB56AFEADEB6C5B57AD9402486C23C4C55206417BCD1683ADF37560CC51147D9B7AC6CFFF03B5AFFE00E4DBB47EB77E96C80314D6032500972AD9678F2A5E2BE5E24E0C0BB57BB9DA964D283A24148274A60D1C8D26605C45E88C6802C94E6227260F0206FC33C6024FDC0B89113E5292E31350BDA02CDD1B5E8355E27E6FBCACC46900D129313C8DA224CEF3B73D6ABD78A3301146320D225C79AE647B0AA4E89BEC1B4452291D9FED2A1297C5C2C21168BEECD9729E0BC55459C3DB9DDA28025917A5E40B523EC415CCBB21642369B0C85213A40F4F96C8E8B275A6EB9DAE075C4FB47F46E178862DC4C30F6C813C41265B095DEE384AE019F0A92860AE5A1786CF98A1E983BF4CE91320328ABD7A2B60BEC37FC016EB7DFAFC7108070347DEC945810104FE36CE0458EA280AA3838A3AC2049A844EEFBE5F45F7D5116886AC9EE18109B13191E6E200E2133628095896A05F0917690403F127E40840851FC5E563A88FC217C483A29244C72D96020309B8A0A954C941BEC5A18DBB4D5BA60B1A577EFB1C4F0FEBA100A4FCBFB7E56F3CD18416422F00885455A24B6CAD5B1A96CEFA0AC54FDF1F77EFCA3BFFBBCBFAD85A638617698C9420E72166DA62A00B5D0D00E59408DDE04796BBCFB4EB5287775B4B9D0623110D10C4D940F9F3050C96BBD51AFD78FCFCCCE4C2310679D47E6C381D7544F9EEF7C7351F4114D01B85764CE0C264F0FC40F1CE7CE0EA54FF426FA8703BFDCA1A63176ACC91EA6A00753F2DD277C15A5BE5297C77395609C078FB25A332000B5A2ADA7C9603466FB86759184299A31CDC60AA7CFC93379592A539A456FFBC9F4C15EAE7764C5CA55DBEEBA13410FFC43E3151B8921881242500B97F6E8B65EA6BB729D6A4987F9C62DFA5B362B3D56ABD3AE966CBD2882CE892A8C3AB4029484DD1A3E3BE4B039E5E8AD50155367FA677EF974F5781FD6AE301B84770468851C27146DC65276B4096165DD10026593C7B4A443DFEC45C2331D8B81CE0D880EF5480059B1BB60402C54A9E0E9122D07DE3C3A264380580748C6DFA48E2CC02B8159E50A85AED616F8DA60F8D50F1E55E640BDA6E92A751072805813A740240605D91A82B7A05CA14735542C02854A3D6741B44E6D7F49051613878123BCB5A90914338517011F227351E672A9BB3A9CEFBEBDEAB0A783C139CC7BD4035BB2F1F0CB59200B73074006F4449A9A218ADE552B1AB65C1E9B8D0C7FEF876644E144FBE33260BF513B4E195C1D747F96C32E51DE09D0954203AA3D3289059E4B6550734CB104B5672FC18F4714375FEC8F87E5B82CE063690C07187B388D7311EA1A27833E29B222793AEAC164D2FDBEEE7BBE76A5DA33B8749D7CA03FF99D2F1F8EA57D656D67A1E27AF18769F1B86FADAF9B862CA1B6B65EB3F91CB03CA012996D1624D4104E003C58D5D50657938BA71052A3F015F0A88002C344263931E36C6E999E9EE57279E0B33A8F93881E8CE044DD236703B24C9671CD44B4246A1384A9D37DB1B9001B767181937DF1189CAFA53C5FB90F134C1DA08B956241213B3EAECF0B0E9467DB5D4E975785F66330A3C84CE9D1325B85B00C410B1216D8C0DCE46CE6EC283F345D1A0DF1B351BC95ADAD49673462D10D9879A0D4A03B9FBC52F728348A700C7EAE73D10263831BBAAD1888450EF595CE4E35E9ED783B211C85C7857657E0572B5142050DAAD76916B4A3233E11EB6A32AEC0A5C7A7D10C0B2E60A5C1212E6DA719B430B5D46B5396189AC81D3AA5AD563D7647ABBF11A3282C7667617C9662B558AA381144A5562594400B41CC3F94796CEEADAB743E071043ECA0D664F276B69BD0B63614A9A7338CF0AE884F4DA1CA504CE6AAE164319A2EA32114DAB5225B074D0A8F053E3120CF8A78F4CC603ACF99C114D0EA4A7373C43723E896B9F8E3B3654CAFC0DAE2863318E592050F1CBF02A55E2DF294AC023D4EA745870B2507025F051C1714EEA68626742D8D50F335A311CCD1542C9E0845C0D557B436E957AF383734BE7770A87B613B217538C33847704C5066E87181B807F703EA3F1B08F77DE7C7E9FB7FDAC0154D68454AD5CA3236999F025CA5DBAAF0DBEB6D2ED0D421E554E4CE52814436AD54B97C11DE984AA73679DD3A3C8C9A5A624AAD0A346D6D21F4019C0DD53228EE2BE2E6C9FF813F8821C1F09418F0C7F3A5A83EB7ECF2C68917766DFFDEE11FFCC3FE89DEC25D1FB8D2EC5C6673741DFEDEF872D3E2E56B57A9B44038E132E89CED3E7C16B0001C398449520D4D8ACBB7C011A5805E5608458B794E980CC24FD62DE868F9C0DD6E74C0469E04A9F9E686C2CE97F091944545D2DAE72413C4041ABC7AA83054D6550786D3E1B97434C27A36CE77A23DDFECEC023238DFFCA35CE430B7A134302C1C3EA51042A9F29171FEE591D42B03B502EFEA6C59F4A17779AF5AAF6FF1A32D07540995A050D9B8589899CBCD8552A35385E1A9ECA1FEF8AEA391BEE1B2DD625BB1D862B7C32E42EB002E284792B2D9287F6230FDE2A1EA4CD8BB6651FBD5EBD01C8C8F268B63A1E2F05CB97788A074A1920FC70AC1B0D47C95DE1F5EDDC941B0D84D8BDB9DED2DE8C40428B361D5B2B62B3752FF493C8F5AB3E4C3776A1677199A1BC010A67696069DD16ACEEDDCA78866B9B363E5C930E4B89C2D288C7AA5CB6ADBB2D27BC55A0DA24C6AD8A40A9D1D1ED9B9E7CC838FA279913A9625A45EA78905436D46A3D560C4BAC3E7CD427DC20E28C04314581D00649C12C2C9549ADA3935353A5B5A111BAAE30989348F2D814D43BD8E2C5D40C96CF8705FF2F428174820F7443A1B1950DA36FA060D2726472720A0E8058BE6E05043C25440858C2FE6E61FEB85B3824025313024842381279FE32767CA3A9DA8533743DCA985022A8C64808351D80E3347B92DA18C4A8CF49921B444745DB61ECE1BE1399050111D8A588F36409CA8A10DA66ABD13C41792884D5457CFC2C56ACDFDDE3B149DADF805CCF9827B464002A3E602359EE6B8C9E3BD6815CD4DCEA2E100B2B0606D00944C6430A84CE89B994D25D33CEE369985B9CB666BCDDDCDEFF8F4E597DDE81AE93D131B1F1286A6AE5EB2C6AAD72746C68BF99C1EFA9EF21556F07C7083D4019F6C246BD755AF5B9000112B168705FA58DBDA803E6B96AD1B5223E3B3075EB159ADE114DA6817B8DE01D093E1B0481927945ACA5C0E080DABBEA46494D669DFBA60C1E4D1E3E9B940319765BDCFA8F48CEA2E187753EAD04595CB947529622440E5DC48753C2046120AFB9FDE81581AC9D2DC7434F9E2D9E48E5E7E30807E5DF924BAD8952101F6CB961929F7499FAEF1395B3E748369DD426DA313146FF1DCD4CC8F9F7EE52B3F3CB77D7F6A36CCC5938EC59D96CE66039E169F94CEA3454F6D26268B2495469DE5B62DCA555D35AB29F3F2397E60468382DE89305C5EA911391ECCB26251ADBD51F4C30D683636FBA4326A8A28A4034D8AA28E78D7B76125A09CD0B387E79E3F1C3D313477F06CE4D810B49BD2EFD6AF5AA85FD1EDFCE0ED9E0FDDEEBDF33AFDD2CEB9A191D9DD87067FF8B3537FF3657EC7C11641DE6D717B9C14EEA36907084E03FD03AD66339F06518F82289A0347B8A7C2E870E92D568684D093C3294712DBE9F3E96D762191B2A02315532BD0EBE48E23CC8DA673C7CFA104B3A1A3D568A1BA7E9DC783BFC7AAE3670832AF5691258190A13B3F9C21DA9B643A767640074E326D4F1DA8C0A27FFE3B45831730038F1E998AEACD97AF438534CA3310C8427A80175B7C88805554AA41135469614CE492A1D92781A1F0588024994C06581828514AC44995776CD21155CAB3EE1F521B90EC8E3DC66C16F4042CA914E852CB17F4C96A6DDCF3E0CF5B3BDA30088CA6A5148A48848162448473CC76D7EA3A31208CCD5A5D69EF3AF4933DE8F9363C8EDC51AC9028AA6A564783DB53819A2657076F0B8400C8213E189103EE0CD82C48BB20F9C2A150EA759B3A3BAD6A0DFE0832393494A9C95B57CB0C0E33EA1BF4E846AAD7997D1EE47CECF7BC53E976C254160BE84043AD8AE213D37254D838AC600A22B0A03677D5AA3DCF47C7C733E1100D5529522135BC7CDC061566D004276988135F44E3C3E9402599A67E9B80410DCD3EDFED57347CE29DD60F5D937768F391747628147D793407674029B7AC5AA46D72B4FEC347D54014E5D586775E054FD7D4E236AF6C471AB57941FBC2EE050B3D20C458AA23D1ECD99999C7F64D3F7B2831380D3F1548646878328B07B659404ED6F95CDAEE16DD9A85427753ECEC4474FB91EAE1E1C4BDCFD651C05112E864EB34A6459D9AAE16754733CC5C260FAF3B8572775021A0B3A8A165ADC60D05A2CF1E4E1F1FD1FADDB6CD2BEA49CED4EC6FFFD33B5BFFE89DD68D2B914CE166E626BFFBD343B7FED1995B3F3177D7DF55EE7DD6726ACA1AE357AC58D3B37A15601C8C82833CD1942BB4F2D368C68786DACD4638FBAC63A60CD203C3826C683E1ECB84E690D281746005611F2299ACA7A9099C1C3112F3AE5A0D920D502FC6E0A0110F8493D4656668266CC9BAB555BB1D3C080836D57F30B12BF282915430468EA2271528F61504A1A967F7989774816AA1035D5AAD99FBE183A5B38354052FABA9910DA056621560FFC0A5B4B84985120E129431A57B65F2C6EB6ED6F91AD5F1A82C1601480083408C68F8326AA5E596EB1DDBB6A21087E530A8068D2A83E7753C719229E2048B96401E460526904DA93699D45EF7D8CC8CAA28B8400422C282019F053E401283B4A1EA6BB50633AA1EA88F344E789BD75F396BF07ADDEFBE67E5EEED73C70F25559E86E4F48C43472D1971AE58C7696231E9CC4622D8AA5506338D45428B1850DF6793499B428ECA4C2147F13D163073F2AC6F6157E9782FD864B96814AC7599CF056E3CAA024B89944EA7C741427AA19ACE004C8E73E8078611B432400BC00D910FE974BBB2337342222EE430283F87899AA806C1812B731C2AF16955D1B71DB153A1A0F079754B16A1E58FDC63571412A922C66596CBC6166FEBC76E35BE77AB803BE4797C9EDFE7538552E25454E777767EEBEF9C9F7877C1A0C828AA9974D6D4D5565BD632074D154DB05E3A4801199C56077C89C6158B55997271260115EBF7F93D6B5740B0BC5BD6507900657A6AF6D58BB4776CE316B7C4F9ECDCC33B037FF5EDE0D71E2CCDC512CF1E207DCFA40D98BA15DDAAEBE80A451D81A09F902519FBC62F72A7462B6A65B5D9A93669853313AE775FE9FBC0F5A6CEA6ECE9E1C8371F2E9C1E9129B5DC23BBDC39B1C9E9F1FEC13B7DCB17035DB5DB1D35AE540C273333E1623C53075A8A7A654466D8A442A1B5C56FED6886FD95D9CDE6F66622A090F2245A19658250CE5144C7BF3A8FA4A1C78B42314F5D9601FEC811B91FFE12B9702C29083681D9E3D66DDCEC79CFBBBDEFBD0BF10005AEE000838624AFC7A30923823810FE08CAA99B2E5B8286E36010A148C5E0F7C21940ECAE2A9640554822BF66375DBE71A5CFEB4DC55240A6ACADAD328D36128901B4219E2C652714A11D3B55A91418A654AF178AA272839A78023B025FF3445F71C76E70D088184ACE005539227421C7184E8E5E87E631D2E42FD6149ACE27F58431EAEB36EBD943C71C28060088942D206CE2094815AD461D866383F224F75813A0A5B04A728455CD16F7CC51DB482F77DB3B56B5ACEA6859B530726C8095CED3C102B105CA0B2FAA1703A58568213803669C2BADD930118BB4591C1A345A440E54AC1AD6AD2E942BC48EA131375521072FAB685BD0AEF4FB5C3E2FDC0DFC1872F69A259D487DA0099F32CBC5D2507814DE60A0047C5554772EF2370487C632B333D43B10E9261466A03135EBA44633BEA8F9434D0F5E194A64D1117EF942CBC6555832A9EB3FF125715E7DB75DB1E0C79F75DDBED9D1EA634574E5E2D8DCF8A7BF1EF8C163AA5215CDEBFC1B56BB6EBE3CD13F0405D670D55AEDFA9E9219007C819A62C1CCD92DECF965B578B63216D2AC5A587758D54EBBA9B38588AD005C21281A957755F7F2BFFC90E5FA75CB767F17B475F1F19767EEFCBBEC033B66BFFA50E2E55E2E1AA79A5097B3694187CDEBCE87C2E9A9E958EF40CB476EEDFCFBF7BBAF5FE359D45689653D9F7E5FCD670F1F3B8564616ECFB1C4C48CE7D31F48EE3F02B30E0FADE632F1BDFDD5549675BD41FC005246DDD4EC7377B7C2E5820B8BF3393317B603B144DE1E420F85DEEA4712974D4416594595D45C0DA5E288AB64760F6A532D62242C4E4EA343C9FCF022AC9B560F1F1D53796D0BBA645BB6A02CE1DC9FFC45EA678FC13E481D2B882D6E36CF8C4E58C07A6CF049653DF943FDA548CABA6441F2C93DA24EE3BEEE0AD8711A2D51AB8586471F7CEC296F6BABC66A2576A4DE904B65CF21679C055683863C880B81949765A914B032CCB74BCD04CBCD6D351B4AE108B0851900EF1E95A21014D6F3875595E027F1BBC44C21589D1AD64244E13CB1B185A82580B582121C3E37900A45D03812D406EAFA06409915FAB29926AAACACEA6CF723FA821AA5A604D4DB132F8D7BE9FB0E3D573489DAC943E72CE95AAEC89D8F37A9D64C6ADA2161B8AC654B9DCBE6D4C888F1825DA6484C07FCCD7EA0D8B97DAF50B75DBDBE0E2F0ED609A59D5CC1D9D2149C0B564E0D207B081F2D3732993B31A4448F099361269E38323C391E4BC7A3A9F844808FA7F0FE4E9371767414E528107A62B2A04F2BF429B0AC8BDDD98823058F14F40203EAB760CD42FF70DFEC67EF9DFADBEF0EFECD7F0E7FE1DEE97FFEDEF827BE5C047BD96396777A8960C5C08DCCB101542BE7CE8CE60746F4EDADA5B1707A776F72E77175A3BFFDBB7FEFFCF00DCA0E272C496A622E766A08EE1AA13998F57868507C70B762FBA9DCF79ECD3E71B0DA375E61233EE1CC179369736BD3ECF71FD56E595587AA288305A4D6F507AB2391F45C42DBD11A8B4731618E588F568BBDBBA3FB7DB7989BBD10477D8B4FEBB1697A9ACEFDFD177B3FF297635FF856E0E469CC83C0F68FFCE067C5F169EDB20EA1D91E090473E10436235BE02A064DA6548CCC04660747A6A6262B0E4254B181897064419B2FCBF31C6E182B0E4389D66E30A818C784985E4A89C9304385C310BBA6B6569C867C2CA15DB11CEA12DD6073590E5063A5A9416EB33BD7AE546FDB267A1AB8DDFB5D203D52DF3895D2EB9059CDE0FE2BAC56358FA85A8D580242AA6EF4D930B35A672C3C7F585E106C5BB6982EDF0CFF0D301A207C50E1D5A090060218BE6BF1F9304814406A59AD1D0F85A086616C095B45471D70F50A9C1008CA7DFE8EBFFEB48CB2B3320D8035469F867C02E0677D1568941F7564000C6F40D729A4F3D15B8EBA5AB14407D51DC38D46035210420747279B9D2EA440547E9F0C0C53386C68B405B710C4558C0440BA0F53716C56547EC0D1A2E930983753AF1EDBF962E7E2F5CDC6E5CEE94A6B43031E9C8C0ADC15467F27E603506C895582A0889AA6817B67C01F7D36ABCD6C4437035636A4A2DA53B8A54EBB66513B327A6049C04A1B3ADA958BDB888F6D36365FBD15B6CBDCE0F7AC586E70B9162EEE597BCB8D4A87136CF3F0B9711EEAA30E27CD84B2106964256BE0C7DAEB12978B356B934AC05917ACF9F6870ED42C880AF48B7294E4A648BE766A421C8B7007CEA6B71F4DEC39958FC69D576C705DB9A1F95B9FB1BEE706EB87DF6179C70D5078B123FDE953638943E772FD53B3FFF4A3E4177E5A190FAB16780065C23343C20B441D1ED8792E87203EC3E544AF450D6E8F5029F48D8F3FF6E2D84B87E33381782C19E81F89C5E2C28DEBAB9F7A17F7F15B8366C5C8A933AF3CFCD8776FBDFB992F7FA3FFF0D1FE63476B881A4D0620B7B1E02C6886F199E9745F9F7E6ADA063ABB5215AFD70E7FE307D37AD9B15C68FFD34FBF9C9E7B7C62F0DE5D3B4F55722F87265F3AD7F7F250FFC1032F9F3D37906BB036BDEB8686F5AB8D4E0712B78011B974CCEB77114C04EB4F30208A19392448280F06AA10CD8115B2A994E7D63B523545737B6B786E2E0B38181839440A4C4A414C4692658DC1FBDE3B606A633B5F0C7CE33B661DA3EE413D9A748ECD6B1D9B56EB9B1B3048418DD418B91675EFFBDEE9FAC07B52133375A735C371A2DB1E38F0F2D4F7EE53D704A3CF869962C763E16B57AFE2738586EBAFD720D5AD56940CFABDA7CF5E818C186B555BCD65E1DFD30C77F020CAA276746CF4837F54191A864142AB0EC89C50C2C104498D006D9C3A3D0A5C28C2915ABDC0D85144CC3A5929C0032760917156C1F38BC693EDCD18C9A1F47775D2E4072286E84C6630FC945CA544BB502A030905278608B060B978007AABBD4DBEB1BD078CA1A8CF8AFE3FA461D156903851C41752932A843B8474042B82A1AE276899A84436D20809E15319483FF91F550C48C8400F691D766E3264EB6C2F25C051A0961FC2CB7DA82BE251A580C2156C13E39261AC11B603ABD1BA715DBA5673785CC84A41632DEA6A8F4D4D81D582AE78522D15D5F9530DAD80C6B29241981F67436317CB0AE307AF357EF416E39FDC6EFEE3DBE537AED77FF476E7BF7CD4F4858F1ABFF667FE073FD7F2EDCFF09A1ADFE9927BAD1505120234B0027C7DDF67FF2063D3A6B2D9F0433BF3BFDCCF83DC3A954CBF32A46CB0E997B52B5A3CB205FEEAD62585F5ED998D2DBA77ADD32C72D5173AA60D45F9B54B97FDED87DB6EDFE658BBB8F3DDD7ACFDE6DF2CFEC78F747DFA7D8DB76C36AFEDAE7DE20EF1AE2B9CD76F6958B1D4D1E8EB1B1EFCF9E34F3FF1956F3DFD8F5F1E7C6E178A07544E4752A3FAEED157DE77FFF71F33CA676FDE6AF9A74FB5FFCB5FADF8AB3FDCF4F94F6EFE973FBBF1DBFF74D35F7EF8637FF7C9455B96AFBAEBAAF57F749BB8CC9368354C586B2F0D9CDAF9ECF3D8831A5C5FA7556EB5E8E42583CD0424C18CA22444B7580E591D98207422960F5DBC2101E062A7A76691E542E32A63A9BC6462D21A0A51F80CC627424FA5A2E1CE77C2A601A5466537D69408F450FF3E8FDCE14C9CECCF4F07E08D8C9C1940EB0DEAA85817950E1B3EC90944B5BB7BE92F7FD0FCF9BFAC3FF59CEEF84953BEA047A77C45CDE875221908031EDABB8F4F26D406E3DE937D0B9B7D46144052442B8DAB02E3021573E844868E8D354D2E87E8174537688FCE980C28B287370A5A13DAB213FAC3867B491D116BB84F5662A650020AA32E6F34250600EB8B274FAF5DD663010F196C3FD016B359D6E78158BA10A4594CB034683984F15A35CE6D063355B93C2A87C0816D68F107505562B381AF51843A67A31EE85C318C125A1CD5428C345A078151E9F7C03902B117B1590D7644A747B13E75CC12ABD68EF6C6AE2E3D2015F0A2E722B859705ED0A48E066D2864DCB991B92327D227CFE4932938A5463CA0521989845079625AB56204345E166F58ECD676BFA790469A0F8D1C999B4A431629E9C6C6EB337708502C2A8A1021A03CD07EE7E5AEF75CE1B9EB4AC73DD734FCF5FB3C1FB9C97EF346E7ED97BBAE5D675ED16DDDBCD2F799F77BEFBC967AD160B00EB5ACA38C52DB076EDFB2FFC75BCEFEF2B2BE877A4EFEA8E7F4038B0E7C73C98EFF5870EF673AFFF3534B7EFA4FCBEFFBECCA2F7D7CFD7FFCE5E27FFED3860FDDA15BDC51181A7CF08BFF3EB9FBF9F0E899422A92991D4F0D9F8D9E3E3EFBC2F3338FFF22B66B576D78A0C1A05CB676D1F2B5CB9677B56C58D075EBEACB3E76C32DABBB1674B5B40E1EEB7DE0ABDFFCCCDD1F9E3970E8EFBFFAC5075E78F6231FFFC82DD75FD5A39137CE4CF9EB3557896F005762CF5E2BCAD26331E4DA5068129B98BA72C3DA1BB65C76FBF55BDFF3E1BB52155EDDE8D2F7B4AA9CE699A9499F559749839D019D42B36F912262BD01890627D11F10026573C5CCD1A33AAFCFDEE02B4E4E11371778768BA362D161D3DA6EB8427C6957EEE503F29616CF5DEF8081625A87CD088927B9332395400C8EF6C4E028C497FA1C60CF1E7B2AF5D473B69E76E0F8E999D9D00FEF831F4019229A3E5A7CF0DCD9C51D6D70BF687A126B9A1D2B708148CC6F3549B453696231425D1984896C3B35C9435E95624D831689791837C813EE8D061F317402DD1F20E2ACAB20801D9DDEE7D6598D54F80BAA338B3A5416F3C85C68727276E5BA152AA785081AC9145C07D007F3B91C541E3CFD11816B5EBD54E771A0F3126308A2B36F1643B302A582ABD155A854B47843B83D6235859EAD04EB2AA84302CE9ED4339432137208626D62969F8B0096B49A2D26AB193F4FD3F8E092190D084226F6BEC28F4E612E93BDA9C9E2769793C98AD55C44AB7099CCAED1D4CE8DD860814FF6C2D936A3160B1FD7E6B7DCB0B5FBEEDB17FFF11FF69EEAA7222A9D76417747361EC7A301CDA305C201432A03656F390EF353503D5BC6F4B47C1ED86E299E56089144613C2844522287EE94159C60A43CA8384DEADD04178A35CA85E8A3AE05056AF9D3C3A983BDE9978E56C6A6645301C5E9C1DABEE3F947B7A3CD066C56F6C899C20B872BAFF4958EF6733B8F641F7B0969AF220A8E9A5B6C0BDA0C1E478B5159DCB72BF9CC2FCB870FA8CEF62ACEF4EA67660CD1986E12DD7607ABFB0E949ED92E3CBFB37CB24FA133474EF4CB63298B52E577396EFAE0FBAA16534BA5BE30CDCF7CFDDEC9CF7F35F1C043FC733BEA477B359164666032B9FF58E4F1E72D901CF08BACE6AEA53D0698F2061F4E2C704C9DDB6344EFF91BAE527BED7200A04A55361C70984D854406F8156949AA3F24EA15D1ECD8301B283FE4BF1AD6AD01EDA7EBB295482C1B13980349FD7EABD3E17A268FBC2BE0E4DCF8B4DC649579BC333F7B4207C01E8904301A9A9BA06F304C0F781FF538C1B0269309C92BACA1D56AF577B6377CEC6EC78DDB325FFFA695392D106E0C3805FBD4D5D8B00670ADBF5163B1A8515160B51E1A1E5BE8F12C6CF5533613F605983A5284689991A61E78783A6859642528078634131B5824253F0903A551D74A30A3344810D82C2A831ECE0C1F8B4172211694AD63195518AEB3A7CE6C58BFD2D5DA846AA716B713F4361A495B11F5E8812097E5C50A9A967A7C2E241C50108B881956145F00DF28AD46ADC500D016893CABCF8D42A2D17882A263369B15BA9D30001AF74DDE082515C12D52AB47CF9E5BD3B3C06A3123FF6502938A0D9551357843F158028BAC526270B50E1D8EDD0E4C7A952D5F44DDBB710E59D3098B4A551E18346270166A95D1841D0FA5D7C36550B7B60337C783835D2BA492180DA1B4994A2A791151BBC5040F2A8FC64DF53A2AAF8B48CBE8B445D81FAF4FD1FF1FF7251E7D21BDFD60E2E0B12220D134E68E8731038E318858160D99E391C9ECFE63B1BFFD76EAA35FE13E779FF07F7E5EBEF719E1DEE74A8F1F20FAE4A216CB4D9BF9682AB1FDA02A90D2E44AF260A23A3C53E99F2AA086E6272F44FEE58113D77E54E56FBCF6A31F4451B9016B5AABC5132934BB2B00A945A330685C897745861C1A01C099460805B50E6B2C97CFA5F37B8E9E7864EFBEF85CB2A57BE5D0F014D7373677E44CDF33FB875EEEE5D3006464469F8F801CA3C1DDDE8AAFD4C54A068E2EBED5E28908B7D66A278646DD4E37E81550F8508DF9E85C318F1C53953575A5667510384027D41890900FDA6038CDE568187AD76E31A74E9CA4C643702158A72A4CB9D434378AE838EBF7606C4B79FF2B8A6094303E540BA1716EEF19C409AC31727D1A343B9A26841A4E1DEAFEC8882AEA85C3C74A4F3C6D4665E6FC8C4C6AA399B6A2676E83A3A9098C5FEA49A7D18C8422DA72ADC1A23522AEA6F11615748B01E249369DF2B9E4CF00D634C021403489F61340FC017051F71D2200B128091EB90A6E95161DFE50A88093562E23ED84CCB384CC402E73A8C0CD66AD62F9C4A34F3FFFE347B4941E90C18DA65E865A3578CA8703B3DDDD6D582BA03156AFCBE9B0602A0F7E3589219376CC51D05A3C0E502BE0ED80F29C477317B4A4660D1911D452993315B430348E01A430B5538139A7DB01388A2ABE5C76EA0AA156C607079D8D0DC8BC206A81717377760023AA9E3C234FE5A17F353A2412E14ED239007514541A3DBAA9A27904053328AED5AEBEFE9A33638122CFE143162C68CDC5E366AFC7D9DEEE5BD089F442D3AAE51DEBD7746FDED8B56943F3F265BE853D9E850B3D8B7B141D576CF6DC7295FDBA2DE6A53D9828813161F6C6468C0FC731220E0B6665CF4595C3B395174F94F79D2D8E0640742905E2C5C119F1C8A0B8B72FF91F8F05BF78DFE94FFF5BEA6B8F548F0D827489E6BFE1B32300E9ABE37350B5D544821B9F1463594D93FFBA8F7FECB1FE913F7DF8992F3FB967CFD9895FEC3EF6B54777FDDB23CF3EBAF7C89EE367771D3D7D6E6C7A3C1C198EC406A289C191D1DE48F4A599A9870F1F3D35322D3B17B842EBEEB6B92EFBF34F08B75E935FDE335BA9046742470F9F3C37307EFAC73F0B0722C170EADC999117B6BFFCE3879FFFD14F9E39F0D2892307FB7E78FF930FDDFFE48FFEF11BCFFFF097077EF244FCF40842222E9FF742209454C74785FA182F69B301FC01182F51FC219344708747944AC4FACF16D0866874123A8506A251232AEA446BBB6AABD66A41C35134CAC40641E542FAA1629117C3DE03FC953AA48D8F4F8256A537EA5B5A1A91A802E1A6104B16CF0E104AC82ADD803B410BA07FF5E14878EBD62D389CAC7380AA5C930D8D4CB6998D5E3765FE819FA0650F66A1A25337D42A54060402E566C8315117689436347A408CA1D6B6C0260D3A483F467BE248E89C3638CA942590F8CF74B4D470339079A471E54AF9B9E9D9CEF626777B23DC160CB1435F5FDCB6581410E5C00588E6B283E9D882AE36AA9F425583C30236071423828D503ED7E477E32FFD5D2DD3411A9CA134EAA773B9146AFDE0FF2007A8D380CA4EEA04E7901A28D36DE3DCA6B9A2C587968C20DD2260A2314C06878597D76C5DED8A465F05696FB52AD57B2E9B4C1A508D5017F18088CDA4CA41A309344714CE94D67DF0EEE13D7B832F1F0E1D3D16EF3B9B9B0E6CB9E196D36747518684D8BD180EF2C043411A291641C2CD078299D940361446539C5C249A0DC75073839702B353440D68235599D302A215C620825882B289D33F7B62EEE917B9974FC927C31873655EB1C8F9C977BA3FF14EC35DDBCC7FFE1EFB97FF54FE919BC4EBD758FEE6BDDE3FFF6083DAA282D35497734707A69ED8AD988C9683D1E4D844EACC507664927A0B6B54431FFCA793B77D626B48F64955CBFB64DE4D61C5AD32DF5D96CE6BF44DEEAC2A339E0E8D27CA8B573DD33BFAF8F1FE5DFD1343B3A91A575FEA6CB9BC6DD1BB97ACBE7CC952EFB205B6758B9C4D0D97BFEF5DEFFDCE576EFFE6BFB72EDFE0F5768A454D2A5A4E04B9B973A164DF5C03AFBDBA71E18DED4B965ABC4B8C9E777A16DEE4E9B967F1D63F597DED166393718EAB658AE970A8C1E5609919156C2B8FA1323333F522B5A260D28F925F2A07436769A850D425727373263894C8D72C5DACEEEE827CA07B37B76F7F35142ECE066A2EA7800C578DE017B8E3406AC82E43D68178281421EAF2AB82DB9288A752C8685ACDE0F56385317251EA21EFFB977F34DC727D1A497A99ACADAB938AC1715B66F32B43E33E8DB61889D8511D463DBC8883097F1D76683EA065CD37D1318E824E94431451AD8829AE226A6BD86448A5CBE734392D7AFC3AB36634358CD15B914EAE02ADAF94A9D5A14A154E24DA372EF36C5AE9DCB8426E31A14817EF8F33054C0C5A00FD49BA2DD6F0819391B1693C5CE7F24553A1F05820087F2B27969B1BBCC016575CB6128808753477399A7CEE139393D4068BD2040A441D100DD45140FAA90D3D0A035058CC0BA42658C532BA2CABED26349F49A3CCC86517F51AC1E7AD5A2D38DB4805A29F0ACD7A639552F0DA40E08349811EB1D9EDC5A929B7CBE3B2396C36078A9F602560455B97AED9F5FC3E3C6C83C31A3C372804C2FCD8B42C1457A2ED712C590F86AAD341F423ABCD04EA81B00C5C2060AE75B8717E37863A49C3AC715E67FA0796B475F9FD8D468B0D00026BD30502B106C3CF1C0B5AED5E9B70E884BC7F14297DB519AD9B054D4F0B986A268DA19E2A38D1C0932B165269CCC029A25707EB054DD8F06CDC1229AC31372C30BA5AB4D676A3B3DDE0586AF16CB3B7DDEAEABED3B3F8EE655BAFBDFC9A5B1A167FBC7DDDC7DA56BFB77BF5FBDE73E7551F79DF864F7DA0E5EE9BBCB75ED171F336B477A5400A9460BDA6FD8A755DEFBFA571CBBAD6C58B3A1B5B16BB9B57F9DA5B74F66A28CB0DCEE44F8D72A727419253722597CD852E4E80D0A1AAF964B6CE95B40C46049A062C022E2A581BD816EA8E086DAA37A10E95DAE3810ABE61130A4341B9732E5B626C6E56B89C70308A032334E09AA552A9092E7A57AD5F67D8B2895A66A05213DE2AC066EA2B0E8EBB2157C80BB184C36A32D96D005820D8584C035A57C06280BD86FD576AD2A8F33C33D01F8BAE067F41A7A7F25CBB63702E1A4FA47DA8BBE20A46B85254BE4855F6C0FE89ED800E0E48C1A12152B9043743DBE054590DB02D700C28E0D46B51CD411EA1D7AD7551FD8354C3CD260E4ACDEEA8561D1E08747C2C9755DAF40D4B3A012D216702670C9DB8B069907D60D8B01243B9F442D8AF5022BEE3C0EC9E237DBF78DEA1D3B7793D55B5229E49ABA9071D7A6BF3E8C62745FFC012C6D10A4D6A83CC66370174848A11C024A5DC330A42ABAD1EB71477C1B7C382C1649595CAA56B5621688670A3513D3851B8C9A9A9196466F044C8A543FA416A248E1B8E835A1D4EA66C8B7B30E67E766C9C4A90554A73671B6AF65A972E76B62E78E5E05144D8352EAF1044C0B1D29C1A786164E16508E3611101CC62F375C0C2A8E91515AA03891584D8D0083735D3BD6C6959A742B18CB6A951BF7821BAFB82C6CC486BC4B02F8513E5D9A85C10ABD1A4BC0C4FD78419E43ACCA9C8E4F87406311FF155A4161984A0517F2F0B2A4D50B1CA4661506917BAAF617A7501EDFD0A0803F288BC0B05653895FFCF9F2F7136F816B479DB1A6CED7EA17F34DA7BC6D0E2D5BAADA8DC052B17ACC0CA4420D53F163F31941B9EB27A5CAD376CECFEF45D8BFEF5E3ED7FFF41637BA3D961F7B4B7345DB9C1BAA40B35348550BC9CCF67A3612AD3176BD9B260D8B4506B35C5A6C6B2A810072006638D51B552570F6ADC4902073D43A419C409C78E8056852AFAF20B7BD5D92C989C501E18C484669DD4C902FE0F86A0A8D4E9A7B74FDCF75005D3AAAFBF8AD5D1E009E13C9435662338CE68EF863C83D3EB82DB2D15E2016940D85303F766D58AFAE29ECCAE3D484D1D49A5B66CDD0A9FC1E070258B7CEFE8F402A7599DCB9B30D42393A10EF234BBA25ACFE6690A060B2A615E906F81F4CBC1AF43664AAB46D99D0E6DB6EA329DCB817BA0D14E568BACB3AD8E3156341593CDA8206C104C30346EAEA32BD3E0F8D8F29BB6E02701551691042C62E0318DA98505686AF3CFF059B1C9E5B86E43C96D6B6E6B25C33E154CA7D2789B4C26D7ECF7488376C045833220701DCC33305E0B85683A0371676DBA91B440778192B6A343E3F1A29E0E75C16D0E3B7C45DC3338116AA31695D048792E5DB5848623D0105BB2572490E88C464C60110C2AC0D20A0C4736E871E7E094B0963C724F7BA3BDA30D803F826F000660EFC0F35C7DED35E8B1164B80B543DA48EAC8224D7C9A1F26313F5F973603343AD666107C5BBEC48D8C631A8F369E5584E3B66610B56B95784A4C66005D53DF6DA81070B322096E68BA5244751B0D7348FC6C57EADB8FC38499DEB1D579E775C6553DAC471E103D946753161EE34A11A4618A2D0A4030A7F7C268472A6CB51AE4169DC2AC5779EDCA251D46D410BFF74AFB3FDE63BEEB7264EED3F1A4E032B7DE7D137E96B86B4011111E7B9DE0A6E8AA32E1E9A3C907F6084333A5749E26926B94A6EE16D7356BED30507EBFDDE96ABB7EDB924FFFC1D27FF8E4F2BFF9E38E3B6F94B94DE665ED8DB76E34357B011742FB23D44EA3CB6C360FCE375A53419713557DBEB1BE34B8030D9FE5DE069FBE5A35E67260F0C3D945537C891A00B36059B54CEB46072164C404F7EA3548B0A70E1F27B5871F05D5440B45A3981E1CB15B2D28DD84274ACACD68A041B45E27507AD08CA8F9E89285E82F1BC8649AD75FE66BF0406A918CD879EC54A35163AD89E8E1DEDCDD4EF40796CEAC2209452D2A2A02B818701EEA3574D5030883A0137E17689558226347ABC6ED80CE22D0A8B9118482F2895E627050BB0E2A84A28803552F1EB7FB6F3E3D3A39A66CB0362FE922CE353868A592DD04BAB5189B9A6DF0392D2EDBC1C0CCCA4DABDBAE58BBE08FDFADBD7E5DD3D63526541D51554AB5F7DCB022108B9E385B853B07AF8C0DD581D41A5DCE85AB968FCECE12F6C07C29B4EE23C58FA1663CDA742B2D00C2A84B1C32D37AA9A7A8A1B939128D1DDBBD1F49490C25048249F0A35C964B26803710A404F56937A1F392C96EA6C1C6D48EBB9C8946E3D1A8B9BD458D6E519468231C4F03E8CC61DD76EBCDC77B07ED36FB5C706ABE5F04117574684E056219C376EA20BAA24BB9A21624BA727D365C1D9DC20018A7D747411E8E70FF107FBCBF7666A47AAC5F3E1B017BAC1CCF7083B3F21848CE986C85D17D2994361767C328435188327E572FB7E35875224C6E30520F88A73053A8ADC174C736F58A85DE7FFE13D16602095165346A2C666B7BB3FFF275BE8D4B1B37AD707FEC76CB9FDCA17AD7E5C29A0EB1DD857E4B5593AEEE73464EF4F1B522440DB83CA3D433BE2E446BC5420E53B52AA21DB15F5F903F3208B55D068CF14A6F2D9136B7FB940EBD104B174F0C27B61F89ED7CA51C4A20EBE1EA6A535B8D685309A512999B437D2ED037944731AE2615BCCF4F426F69A7A6574CAD619B0BB942361A4752068A048E071221381A18CB4890BC4E531818AE215BA4063258CA07E754207822C3825E20CD5E3D6AE59C762E959C1B9D5CBA7C114E2F8AE1513C8971FC65748F4C652187EA051DFCD434B77D27D0C948BDB6F99A2B4115846DFEF98B7B505CEC311A1028E77359BD99C8D5527B363E9E24DDEFF3B67EE98BB677DC8EC615468F83DA18A21E40A72D65F2C6265F8D878AA0C9997065C4125120C10C83749FEF90071D0D475C863CD7D4B7BE8B51191D97AFA16191F497F2403C8D0A3F40208A228F1461822BEC0E065BDA1AF03EA25050DBF5D68D4B1D6B16D951BCAF514D64D26B1A5BD207FB067FF234371B86B2A7FA1516686CBEEAF2F1A91952FF8C1381CE032482982C4F2C7EEAF0EE69F6834D08EF1A0B0DB7508E8133A9244C0812786AAB2E30318B6C17DEA790CBC324CFCF8BA37A07445235F4498032470D15F281E8400C4F1B9D0BD9B03946ECC33E59CCF0FD162D5F311B8A011E23454CD3EFE42A97CDBCB0D3B66AA9BEB5093BC88D4E8BE93C42158CBDAF28F8128AEDF426333C2215D8FC94B4A81B3A5BB8B139E1EC6CF1F47475222E0BA4913904FF91E6372126C7DC4F11E9A67C3A918CEC3A9A0A8432998C62EB52C3EA6E48B85A8481C6782559694F9F9CE3D34FBCE8B3394D76BBC96133B7361A3AFCC63637D625EF31C9D62E947737AA7B9AB40B1B013742D4B097BACB97357DF826EF8AAED25C18CC61A8634A70A2F61C13D2354A634FBBEA8EF5F9660B0D75190B07BEF040ECBB4F8B931124C3953AB5D1E7D0B53879AB868795C2789DD1706660166D15918C042B1BCA123C6B83098DD0687604B5524362925043FA520E07A9600E2C6856099F2A14CDA8D054AAEC7A3D4E3576D380A6B81A647211144133D104766AC72294F5B0CBACEE516342CF02367FB754090E8D52E61F32C7F1F001D9E00A393232D073EECBD757317E5C26034318DA6B5AA36C6CF6E3F04CC7E22393D3EDFE06453AE52C89C626BFD16103879EB052A0B7989286460D1843391B50B8DDA89AD5580C75C42130E4C836A0CA349EA866F3C025E16050C537F065CC2A853E62D390A85B1215CDD0482F03204BF01AAC0667A31B46013F5056E90E0C8CA2ED0198D5C04A518BF8E8D163069F63E9A20EEAF48445E161F70B4A1B420B87A5A3B1AAD5F42CEC6EEFEC68D19BB37B8F813D4A4343609114F286D6A64CB1188FC548EFE2EF5472F499978818E56A4D67B582DF75C9B474AC09DABD883AC03BD030E4A12B851CA199E8500B680E090EBA430A97D48084B4DD1D028CB3C5387DEA84860A6041474489338D38905A328285A1713A3A572E4B719CC9E9063C0067899274E869C8F69A4F26A9FDB0CDAC469F70E1E418B7BB37FBF8A1DCE3AF84BFF554EC1B4F44BFF668E1FE17F99F1FC8FE64777D36558A65CB914C39961312F9EC4C2C3E3C9D980D0723A1682153B2E8742D0D46F43A47FD8ACDA4BF63A36E6993E58A15EA951DA6D58BE0381A56F7E85A7C2A3C7430AA34EB4C4BDB0D972DD075380D4DF6D8E858F4D429116D03004440DFB24C073411FE0B25A1F33A1D2BBA4D3E9F12C3718E9C4233957CDF50E8873FCF0D4DE03C43B5183BFDDE3FBCC1F3B97BB21D8E5A22A78AE48A8786622F9F41F0A772DBE43A75E35DD735DC7383A2D95E25C05A514EE6659817D3E2414F578CE2763478F3C90C26AC4368CA8522081E78612A06B11B689221350D87A386EEFFE01AA80B3CEAC4D1A61CD18DD4215E6FB5A01D1AE5E8EBB2422A6B6C6A36DE766315CDA7A85705469EFC7FB4BD07789BE975A60D82E81D2040B0774AA444AA7769248DA68FA7B88C6BE2B8C64EB2EB8D933F9BE4DF6C769D6C7EEF6EE22B4EFE5DDBB1D75E3BB16367C71EDBE3322E533C4D331AF54651A2D80B488204885E0882DCFBBCDF078AE378EC24E3E0E2A58B620181EF7BDFF39EF39CE73C0FEACC39BCC0C6C6A6C828885730C244BA99A83317A52BC9846BF2CCC5F453CFBA249030F45CBD5C5FE7F57AD84E4F3CFFC2F1ED3BADB846E38E0C15ACBB2DC74030090A9A2ED0E9A48A627629B5F8E5BF5DFCE6D7E1150BACCE4E44E5B7B02CF48CEA2A721E82B062CCD15E32DA2906AA195B93F0CFCE26B1A04CA226A1BABDBE106DDEBB056AA8151B209FB3C6852D4DBEC3E3CBCDCF8313CF4C4DFF647AAAD9693BF3ECCBC343A364BCAC33562B96F4EEB65A2BA8E9BEED37DD9698C55CD3D5D1B1B9CB85702A8B82F9321AA6766B635BCB0852D2A2EA063D88656BD5444BD01542CD0E510A924DE943AB077563329EF03486C58E1C1960EC8E9124935CD2424149ED445201608A4B09EEF6F9B939247C38FA9ABB3AC20DF588BC8B0CA34208D4DC88126A73382C7575FBEFBF770D38CE661155738657151B3485D2284AC66B6BBEDECED0EE3EE3DA5357575F19290D4E1506A78A68964CCD17C6E7880189F9858599F9291C4802A64C9B3713B0656A6CE59E5AEF1BF6357EE8E1DEDF7AD7A687EF6EDEB18D8A9331A5AACD4D35BFFB16C7C11E73C8E76CAF0B3C725BCDAF9E08FDCA1DE10F3E64EC08D9B634DBB6B6991A6B6C77EC5BDDD4327FF295D9675E2CCDCDD551993178AA4000B1C110C53FABDDE3F2353792162F5EBCBEF8933378CC54CF2ECCFDEDB74B3F3E652F946D41BFB22912C17E51D1B29BEBFA3BCC9BEAB2A6721EA87E2E99FDC9E5D9E72FBAEEBD2D36703DFECAB9606F5BCDC15E5B17B09A0D5A6516208C00430665A89A1FB829381CA191AB9B4A131E640EB854424A961B45D0814559D3D060C92D733C8A018C4CC6C8CCB54CD75130C610BB5E45CF8B9AB83A1E2BFCF069EC3145F705FC51590C32EA313C39BBA9B10EFEB11BFA0D0E45361B8217BC554434B0B8F478DCCC93117BC70BCBED7D5BB8778393331CE8E4F64F3EF1C327CE5D7E3C32EB0A05003719D003DFA46497BE84F2569281640867521721B16B45DC8535CE29E6F47980867879628627771D55DA22B2CC1A0FD9E8454DA887502ADE5EC6EAEBC978634B2D4D347FC83F3932F55F7EF7CF5363B35E12ADA52542D2C5C5C541662317129FFFCA779EF8F2B7BEF2C9CFFFF55FFCCDA993E7F8F30E9FF3C94B039DDB376F7DE0B68EF73C14DBDC5A80B11BACC9A7D28BF3D1706B439CDCDD648E47E655F75AB2224800A8012307C6C561B967991622E5520E7C926D90ED147235AD8D041D83C5B6FD817BF25C2F8C545C94C80E823C9B48D4F9395E20E76DEE34B919B7D2ED88C97F440C5333E0D00F15396AC0D31CA1DA352727A4B850CBD5A00E614255BA1255B05DB8448C6718E7BB42D19E7062579BE191C3D50FEEB7BDFB0EF707EE77BEE7DEF0EFBCBDE5CF3ED0FBE71FE97DFF836D77EF6D7B707FE743875A4EECF7B637AE4593998189CC78948171C081D2DDDBDD1FBC8F256E6B6008906E87724C3619972E0E249F78BAB6A7D51EF6D982DEC599A98B7FF689DCD327519501BCF68742226E25F3F970D365CDA0152EFA592BCB173EFC1FAFBFF90F16FFFB3F2CC7B2A57406CDCE3073868D61F71B8E9ADC4E356A245C637E6BFE7B4F63FDDC72647BEB1B0F074EF41BBBC35575DED55872E8E37FC3E0B2BB2ECC9007E6BBEE9DDDFE23FDFEA3DB1D2D0DB94CBA2EE0E68FFA837EE647ABC38D46B7176954C9B093C974742133370FD20ABF2D1D4F39103644E24A0DA1B3EC44BC57C11D2206CC5A54BD02029568EF90F46FE9A49D29BA91E66A0B5DFD7822E070FA6CB0870CD84083FCA4A18ACCCCC23B60CA51B3093C3F36318E2B667D5DC7A64D65BBEBB35FF9FBA3BBFA6B02F6D4EAF24BB9FC8D9512501C6406940744A744704F8C19455812E762718252D834092EE996F86732E790049A5F8690CB9291A2862F618C0920021406B405BD616A4ED272B369383ABF1674BA7C4EBA5A9FFC934F5FB8B1D87860FF4146D4490A991D319B1E9D9940FE71B6583E39BFF4D5A1C92B4BA9FE9ECEC4C2D2F9CB832C65CC36EF3ABC074CD26CAD6E3BB0DD7DC7419C6573BC3586E91081C479133DABE9790CF9545F05DAA9D540F3D801B1D424419ECD002F824948A1720859C8D3524F0A44BEEEAB6FEDDA7768CF43F79C7BE124E861021BED544ABCE910FE43E5172893E1466E07519E6998145AF99CBA3FAD0DAA51AF29BC7CB561122130A22A803BAB95C1481831ABD08AA4FC906CDED8FDC1077A3FFCA6DEF73DDC70627F60CF26676723F35FA6A0D7B56B8BADA96E2D97213A021FD0C56661C7AF8D2E3E733E3912293ACC6BBB3A0C6F39607ED731FBC15E48AAA2D5C67E077AABAE423967F1CC6503334A85E502B42A75D2995D8EAA4CB63A9FB37B1C8C0257EFDABCDC1CF47437424BD29CBA492DF20B5108E6DE9AA06DC5683EDCD7F687EF0D9F38B098880B705D1B30217CA0CE3701864151876E2CBF74B10C4EC578170DC280A7667B77E8F0D6D09DBBEBF7F4FB183DF131845A2091587358AB3C0E83CDCCE7B1D16BCC34C28262BFC196ABAEAD33D5D422FEC18B146B47807658B250A1E3C9C8E49C07072911FE174170C174242A41EE15B1732A62B03F730341AB6A251468FCD0BBC26FBDD7D5D7E9D8DA63AC0958EBC3672F5F4360B490CB51C4C3CDC45486F91522562E8B64225203E54B8337626E57FFB103BCBC4DBB767EF9BBDFEB0E23D1EB8443F0CE7B8EFCC17B1FFEF0DBDF50126A88349E8DE486A4E088C311E9011065CAD62087BB48C7C26EC9D33E435501508BF935BBDF23BB82C5820205AFDB699F4C24CD4D4D328F0BFC0A1E5C2E9F9E9E3C71F7A1AF7FF3A9BFFC0F7F3D7D71E8F4133F7CE1473FEC6C6962DA92A3E9A261E58AE0789098E8B3A1B3B87A269AFCA347BF772395BEF7E17B4FBE7CFECAF92BF3D3530A555D5D29A0ED6CDDF2D09DCE8097191C5B439036DC5DEF7D472C939F199D50930012E6A5845B63200B04CC2BF0B1F02054D96A340EC1B16D6F6061003FE4A2338B83972F7FFDB1F19191CEDDDB5B766C9988279416AA810907D18F999C04B4946E211E0DA94C025BAD0D0A40BAC1A13257033504B9C040378B06261010B47071105DF3F66E32D6F8573177922969AAE95229B518CD2D46A17ED3A0E14835D5065283375297AE02EDABD1FA3506856E7EE72789D1194343C072CF0EFFAFDFEB79F880636B1BC596847C4D6C8E760621E6DC65C3E4AC430E2861D86B6EFC1C6DC56C16C2A0FFA3EFB7FDFA3B4A5B3B2C4D759690872D6E8DC7096C1CEE78953AB09881E1FDDBEF2CB47A37FDD1878C40EF0ABE3E7FE6345267C52B37F30337AB40662E5C2A4F4CFA4241B2141631B759C9948A94B61CF454A92E3B242D28E3D033C11FE5B529F29670C55083A123C35CD2E43CBCD6D44F9ECE9D3B4376AE08418A13546D628AA4905D36BBBD16DA874A1C0E1284387D0988B26AA5EFA1477EEEAA65CD6C6D7CE7C3D8F372694B5098A2731436E96C667E2A5267B3A140286C4DC161B0322310232B2B9CD08B376E4E1597EF79FB1BB3B96CE3962D630BD1A7BFF7DDFB0F1F240AA01952170E85C3C19EEDDBDC750DDC4A11ED8169A3FCC0A516B46114A48E750E01853CC2B5160342D25CE5810D795133E527C825262639EC17182C4E26692431534932309D581ACE24FEE27FFCDDE873E7695F63D16C5DCE73B86C0AD566E2899952F12F2E9E83FDC80FB3EF7EF3A3FFF6E37FF517326966773CFAE2E9DFFED497426D8D1F7DFB43DFFFE237CE3F7B52D8A9AAE533313EC94E6323FAC24C0594FDE160DDEEBED989880CD6699A3CE09EB43E982E20EE42D1131569AD195C353133D3B27D0B72C228039452F1C2E4F05C749EA43FE8B034063D550816727AD00EC066A508F4C3138913175584C36CCACBB1F02A0538D141123E197F854CC154DFDC1C8DC535FB194905D51DF46FEE76B7B7B2D4892CAC9034CC16F14D90572303A7C5F97996BED631E0784FCCCE25A6A66B1E3EE27CE490F58D07AC7BBA5781A234DD78251C2B33AAF8E8CC4462DF7BC69D29726A0BD14A8D60735ACD21F11489807359BCCED837BF9DF8DEF7EDD954616C84EE08CF6F999FCF427C3F772EF6E2C9EC626CF8F4D9CC99F3B6EDADAB63C3994B9756124B14943E9365FEEAF5026EFACF5D18FEC4174AA7AE991652299C2C92B93203BE9A83BEC25E688B523A2102872CCA2A99315C14A6B7A4365577894D5AC2A9CE904BE65C6D9D8ED636CF9EBDBC69D12D534EA63C05B2E80E8406CAAB289A532D892FA0D8BC8A461817045092AF68FE8752EFCE2F00B3244E9E99FAEAB72F7FFE2B395C4D99D8F27A4706871B2C36D8A6BC36C026A68308FCD0F5B5495CB85FE3D1C53D8FBCC11770B3013A0EECF9EB4F7CE25D77DFC595A4A9892C26B78D8A1351F85C64462A3CB8314EA7DE4664D1488629825C14EBD29B94416A88A4025F290B5A8B38A469BD2450265C1C3D6E38854EF83F4C2D33FF50E3FB5F17CFDD9C9D751696670BF945C287C93491C9D5787C3586AA5832F5E96B575DFE40ADCFBF7FEF9E80CFFFB75FF8D27FFEC33FC6A50C9482D27AA950FCA32F7FEB0BCFBCF4F0BBDF51555C7BF6B11F001810C8EB9AEA91402217605B8AB06A3EBDF9E8FEC8F0B8C8F2F17D99BA972C5C8C8765769941F26A712293294D1A8C9970470B57D4EEB213C3E8E8791B6BD9C07EC6EA57571B36B5518EC28393469BBA17E279A30C6C88568C11BF6AF96B7AFD7A3B47E21442780EB717968A2818C8988EA85C2A19189231D8BF401FCA9A45376E57F6C020155A3AC5EBE4D6E1FBD0F8A613B69E165B67A3D1EB540BBFB2E9D46FF14F0E9BD4274F79C1177C7E132A7F4E3B3F168F63EA92843F58D7DB0D38202ACA988073CEC8F409623AB26E330BB1EF7FE96B4F7DF2732F7EFA4B2F7EF6EFD22F5DC088253F357DE12B5FBF3EB3F0C4A7BF98C4BC646595B31F90DB15AC09F96BEC88E05F9BCCBE34D08020BDB4721509D9861C82D34056E0B299EB03268F83AFD0AEE283604984D77608670DD0FE0AB9D14CC4905C2A5DBD2CA98D58C381D40876096449EB9738020354F1DE189F1029312E98DBE3B62370005885203E54358067D289783C7BF6E2DAF43C7E0FBE50C054E3A73B36FAE2E9EEFA309B8182816A95E2866C88E68A16FE338582ADA561F71DB79143C7D151763ADDC5E5CDEDEDC95426323A198D449190D0781940397A61C7DD52A67E24D3088AA0C22BFA8DEADC2DD3144302A440AE52A09AE4FDB26164D897770D53BAC47B2DD5F46CA20B297A7C556B7FFAA31F5C9A9F413C682C97CB88FD8865319DC6EAE2F6AE6E9EE25C62E96C061EA889D600F67C7D5D1D6E68B236CB613CD245235E1BF55D3B79EDE647FED39FBBC2753BB66C7DF9F11F0352417485076E6BAC83F481E404784ECB968E18B5C7DCBCF2A094752969B7CC8B99B84A062BAD7D798574DF3089422240E6EC40E132D9C8852B219763687484E10C625B4FDFA6B9789CBC116E364516C09DD22C1414040F013AC51AFAB931057AF581505DD7D8905A928E0D658186BEAA71483159A4A0043396B120955CCBBF9223AAD8CCFE30795DEE967A7767B3C125A214AFD6975EFF583530B8F0F225E07F582E24C7D265E06EB8ED818EB640B8D6C6B82A324F560B653CBB82890DC0722A9E2B83373EFEC94F7DE39967DFF21F7EEF813FFCE8DDBFFD1BF71C39B629549FBF3E1EAEADAFE9D91AD8B2B51CCB8D5DB98E9C0B1A0091813154E83C5402C82F9304165618B91C1F1EC767D3521764C8CB6017B44BAA7E9D8562E69A19119776828561C4692DA6139254E3BAB2B2CCD9594E26D78AC00292A209D4A0DC518B6C009C40ED0E38B70225022B0BD9527C0F44D802188F98CC0E67D88FB63DF3BBA120FE28929ACBC89FB1B0B8989B9BC7BCA5215803C4C94C166F97D250B4C54A14C0459E924C68FF5DC7B89CB39CABDBFA1EFDDCFFDA545B4702FFF8A38F5F7DEEF4F3DF7B66F0DACDB1C919D1C6A31E35542D2E2D21164EB0A4872D77510DB30B655993BB5A4A8ABBA378B2A83EA84850C9C03BDBDE71EFFDA68E4ED4B923B128C0D5DF5FBEF4FEC71FBB128DC0EA2259E54241464FE473F5F50DE16DFD56A321B1527E747686ED0AF09E2DE48607AE7856965DE254513D7C730C0EB455A285AC13B7D9323737FF918FFD3777D0BFBDBFE7EC0F7FE20FD512B9EDF521DD611E788AECD8ED8057C21A93DE2D901B502643C64D0DB06F50B9911AC0689C9D9B6FDDBB4D94D1E2896BDF7B66F2F1A7A2A72E9423F3DC91D88D9B0B4337D7C0EF896EBC41B1F05841B552139E500636F2DAB410BCEE9EBDFEC97A8C6680531C072B615DB544E43891E6B1D1A1124A3155815C02E820162570836D7E9FAB36049D4BAC0885D8A40E16EDE0AF688DCA6991CBAD8E4D9866A38C78F35AE2E9CCBCC91081FDD7D610DEDE2BF68AC424B36971215AFF7BBF11F88D5F3135D731978D4ED84BAF5C7CF9DCC007FEF43F7EE8E31FF3D5D55A1D96F0E66E797E16F77C7C19FEF30BE766FFE0BF37CC673A5CBEFEDD3B638B7118B3AE7080A56CE57CACF75F3D7D2E3A3CB6421B31957EE6CB8F5E3D7B810046092EAD48512C9099577189910926C9E5C88C0BB3538BC3E32694CEA2B14234868E5D3999159514F8BD5C1D90364C5D1183CA177D3E3F034494C5C442B07AA5E823B18F8A10F2053937B231EC130EB4E8E0900CC9A8AA54CA9E4271F0EC79B60B9B819C9B9E8C4C172B8144E9E9A3460A84B218AF6DAE63B835323D97C9E7AE3FF35CCFA60EF0AF47DEFE86FBDFF7E6DB1FB9A7B1ADB1A62E9C8599E79151F73A97BB09310F19D9116D77E1DE68AEBB7270B120389D1009ACB6FA5D661F067C929090DDB2BE0B0357F293138BD1E8ECC8C85343839FBD74C1E9E20C13FD77A238C71879D23B7EED3DBFF5C7FFB15055D5180A7E7968C8565FEBB13B00AFDAACD66D48C6C7167178F4C03E4E273D5887395C1A63920BDAE6747BD78CFFFF17BF468AB5757BFFE597CF08DB99AC1AA905162513FA766BB0AB2519831444224222272910A326D29986FAC55140E5E7F1A0371A6CAD2F269383DF7BD23E39D7521F6EDBDCD9DCBF35401241D605B97A741CBD3B65F72106AC80BC42D092EB8058A62CB08A43FD6B3EA8A13D81402216D76A5291596389B249299185B56B34308A8FBE1C54059224A20BE50E2144E67F11439546AC8C87489EB06E85AF1DBEF9C2DAF8940333B8C5E4D25C9CC1939A37DDD5F2C089D6A37BE85FF22A254459CC79B3D179FF71D7CE1EDFDD47A33613CC27CE81A1B3D71E7CFFAF76F76F25444A6EDDDC9C9F8CF0176954220306BFBEAEBB1B211DC200CA39B86334B43438C38165D29BA33BAC87FBC36FB92B74FBDE863D5BFA0EEF71592CBD9E90F1E6CCF38F7E070BDE446456880C0A2AD1F260B5818DC03B64C708947BDC6E16376ED5B4B780630C344A491E28A6452C1618A34CEF11F1B335AF8BCE7B06176C248014B0263C4425A343571A6413715FF02266CFED902CC201FEA2F83259CDD393B32137398044680E1CD62B480CBDCFF0CE3E4E70A1619A8D5EC4C298BCB33A9EFEC6B7F76EEF076E45A49C74DDEEB4BAFD6E0FC35058DE3BEDD3A27D525ECB8858B4D021583472F4333C4642CCF005EE178443A9EDF82E940AE017A550E460985CB26E52FC99E9D199C8AEE6A6BBFAB6FEE68EEDF1545AEA60642656CBB9E595FB1F7C60CF918368794F5DBE5C76D89F9A98A0A16BC9E60F99ADBB9C8C6B89AC9ADBB0D6516DDAE5F5355A6C68ABF35E3C66DB91CE9EFA70BDDB649A1EB8393A789DD222DC507BFDC68DDA8E160E224D0682A0CE48D71C3695E27E4C6F44CA50163DAD46B929CA608EE5B190CFF9FD9EF3DF7DAAD668AAEB6CF22105D7DEE80215058B39D28F334B605B47CBD19D31C81D2A909182C2A2346DEBE379D867DC63CD05EAA7E4A05FBD2770BE84012C6D7FAD225736F82045EC55A76DE4CA250206EA1488CDC3B695A97B8E6C4C3E687E6349040AC81E60656816EDEA8FF109ABBF6A660E6DB4ECCC42F2DC84ADBFB7ED571FC0E241FE02B99D368A4F91D25457BDA3D7D3DB29A4BEF24AF787DEB77260DF5C269B3719EADB9B591C0C380B3D06B55A4285DD66DFDDEFBA6D0F1BD2E4F714582C6E67CF7FFA082484FA70280719CF6DAB0EFB0D28F42385D7B7C9DBDA48E768390ECFD6D4DADBB3ADA7FFD40F9E39F5E8779FF8C4A77EFC375FB87CEA15D155E735B89CF4864BF105134ABDD351520919045306F112D8E15767F238AEE671BAC6AA855DAD75DA0A456936A99156922011AA479A9143127706A43C997C459C2C997263992CD1D7237C7DF1A18BEDF8C0FB4C3EE883E2BBA079509312A0B7BC30384414E736D8FD5E047AA3885EF97D486CB677B548239FDBA2FCC0853D8B8815118E32371167840C2E93402D2A642A6360688E25E995CAC49A48F4F06B820809D9588C42AAC4A7C342250669C261821FE95D48672021DFB363FB6D2D6D798C1A84AE6A8160BDB97713A36DA4647806FEE5D3CFF82C968316E7114FA0C9EE029FF7601BB756D56432C30F0B94D770D06F75385AF070B2D9F71CBDEDD0EDC777F6F4A05E0ACE905F9C6F44D8D0B4E60949824A36086196C5BAEDD06EA14E09442503D1445BD2218D87A92D4C8A0A7BC03579F19ACFB086455DA8AF3BD0DB861A2EEC262B2CFD1A37543F9BDFD9D8D598743378E692A066048A7067CF5EE0FC10A6853257AB6C81D77C90D6B8DC1E3A095A6B4E63B32B3E8BD9D47DF8502999E460A203829BB92C5C96BB1AC05482C346E088554226E5A6768210A7A331232CBA6866FED9CB99C179E271F881DBC83194739E283913F40C581B35D41A9C96C4E8888894CB4E02532ADBB7F7D57FE03D0D771FE66DD0065653972589C7840D5438118F7FF18CD7E7233634DF7DB4EBA13BA16C2FD327C44FAA9C773405D15B66C855522FF0A5B90559A00C7AB73692E833ABB7B77BCBFECDFD47A196FB9BCC97469EF9876F98021E938FFE2B0CF774E2C6B081A58040AA12CD437C97AA57293997E006E65359181924F60DC87A8236AAC17305ABC8BC15A1C64645415605625B2C3A1EBCD3180C509360AF47E52DD882AA220888D7BFF815988F34E1ED75B5AC69722108C6A4A1741E78B76204068D1913FCD5B591CBD77AB774BBBC203C5C33E9EAAAF93EF1E865FFB01583E817C918B2A4BAAEE666993354432402FE2881033A187C0E3F6985B063B713FBB10F526D75F086520ECB75E94D15491E7DF5F5EEC6062418F674772E1141ABC1C91C16A8533EEF99974F519801BFD4395C4D76F78E70D3CA5A559DC70F905523436E6C5A2440D78C6498A515CE0132A28C6975DB9BEE3BF0DEB71F7DEFAFBC383816995F60B215294F5575AAE62F051813F901999094C8AD6C2AE510D3169F64DD9232CECECEFA812B960B8DBD6D0C97C20F653A1EF03A1E8B37F7B4D18214D150292056470B3076653A9E584032C8C406FA7012FCE1B06852D13FF7410CA23AA732550850E5C1E2516AE0326620AFAFA2CAAF1D267C1F008354D359134C5F18587AFA25CCAE4BD373AB4393D5E3D1E29589E83317EDFDBD751F7E4B55BD709B540758BAD0066AB55A7F757D8D31E006A9C24E64F6FC05ED39B5CE00C86EDF1B1F1C1B1F951C0EDDADA9B9DCC8246919D69FF47A5181C57202110EDF962E02467666DE18F4655657FCED0DA2B7BC945861BBA6B3E642F1CAE87436574481D511F451983213E4C6CAD1279E056E87B3A3A9D5B598A1FB436100DB97447F7936D6F967FF65355CDBF1F1FFCF1A6E60D7E185A8F49218925AAE0E069033215400F691EEB3DB691C0A3B8589444E3F525BD6991219168CF9EC65DCE185234E92C335935448BCD36E0C4FD5C88EA94698B24CB189B5C41AD2D159E95B198D4C2F9106E03F905C31A4F1268CC7BC3EBABC254B352D4481AAA52C14B001867501C50A917956DEF20C4155097958802CD509B6711511B823FCAB662A5326F407C4E05ADA844A3C023885261152E953B1A54D9B3A6B9AEA5EB87A1578FEC31F7C677D2888651F543A58658ED67640EA607D2D6E06CC3A998A6BD6952AD38A21914963ABA4702C54AA646F63BEC00C9BF86AACAD05910333196BDB5A361FDAF5C8EF7FC4BDAD2FB5BCEC6F69507D2D45DD55E7A63B10A01FAF9AA46226AD8416646C1F4456F30C1EBA7EBDB52DDCD8D1486F514C5819F5F178D9A5B3F3D1275E387BFF07FFD31BFFDD9FFDCE7FFDDCE38F3D7B71707C01E567B25B25F20E708F013EFB1C1AFF6BADFF5797C26022CAF859933BD60B67DD0E5FA48B58EC4AB65A8C61497CD57B87E26E112901528252D9BC94AD1A18350DCDAC0E4C16CFDE4C8FCE861E3E16BA7BFFDCC573F99B231C20AA21A0BC64F10965B2893A8CB12B97C3110E66AF5C979DAA03508240F51DDA7F660829CF2A56B321B654AD288AC4404A70A00C53B8C6D9D52AE88DA53A9E585A4A25EC758100CE90BC0D9E16BC8C41F5B0BFAECE0FBBAF982D2C0D8E16C6232B10B38995B0FF14B779390D9F41140C6473524E8DE1FDB88C82A763E70EC7CE5DAB78A1920431DF03DEC14F1696336353B0EEEC22C28511B4EE0EC9955941A149B8286484797155B4DB39CFC07F88C5405B086021538CAD0B7F259664B827C333C0FCE7152C4FCC201242DF0A3374C2035F14EB5869309592F3D1F1EBC3ED9D2D4EBB19DD7C69046AC3C82A159A9F8F45220B13A3131494806FDC3A6BADD8C9C8F92B11AA6409846C750D92BCC9BC88E076622020D038DDA2820823337C512800DA2480540D86A65DDBECBD9B27E389BE1D5B6A9A1BFEE0777F238F1A61BEF0D20B2F8E5C1BA0C0DDDCBB792E996CEFEAAA73FBB8649D779D108AA55A284AC9BC4A9E1D8937591DE21D5653572BF35CEC4919ECAAC6852D9A4E37B43589BE83808AB20748BB19F8B2D4F84872F5491C95A648252381D280982655A637E8D55AC2A005A74F9EF9F4A7BEF4D1FFFCC92F7CE7E9C1486A3C9AC8A78A6F3B72ACD6E96DAC092DD2F352148F752C86CA49C434B40DF0B32AE18D5F13D16F443A907CDC0099AA225AE31271D7C128AA8D3303375FFACCD722272FCC5D1D8A47A26044F9F129291619659A992F8DCD1526A2458FDDF7C683EEFE36642D92D3B34444E295B60D952CAA45D34592CD0099C96CF25A6CC92BD724C551C2743C68DB3CF491DF1A9C9F7DF9FC59476F5746EBE26ADE230A48E33CA136582349B3189D5E6724BD44CC60479291302D2A9088810938D3C4F92BC91BE30CDDCBCC94208306683C5C6CD98616DB62318BFF9C6C3B5070A649624B4B9FFD42767068F4F1EF4C9C3EC79FA19704095538C224A3B8D57BDC081C401392F62D369D2290281C10C18C2970950A34D502AD5991BEE11B3E2788BE25E4E7E032D7F896A0B8C9C0185903AF993A58960B4D301AB6DC5D96229B2849C2EDF6ACA59195CAB53437223608B349A28DD03A99E7AE5A4A320468696A6CC2BBC0E9F1085FC5EFA522A2DAD50C69B973D9899BA9A1411AFD4A375E326C489152D989A08674098406C11096CD1A4DA5A8B91946989D9A8C2CC5DA36B731FBB4B9ABFD0D276EE31773CBE585A9C9B696C6FE83FB5B3775D7C38E0C87A95976BFF75D9BEFBD0FA6377027854183D3E5650A4BB6DE8A0330960D8951082F1A445F41887C4422112F726302D16B70BA308EC4B0DC8798BC507764645EBA786C23867584F9128FC7C3B8212A916A8671FEF2D35F7DE9ECD0FF7CFCC973639313787A57193C682DD7D46CDFD1174D26EF79F75B736447B07AF88BA4D3B0D9D0BA12CB1475F4BEF663E31EC04E899BBDF16B46103D5159A2A25D29A517E367BFF66DC7F4E29E6D5B3DC535F36C327B6E68E07F7F7BEEEC803318F2D685A137E14E6C39BCB5E6E143965ABFE8F8AE941A0EEF2B33604EADA695C8D2A764ACD526D03BC3ACEC9FA514F16D6D7C267BF16A7970B80CAA857F5B3C8E6E4FDF7DF7F7BFED91A4DDF2DCA973404F10EAD5A49E1CF485F892F8341AAB6A4235AC925832A135DD354046DE73BED05E175E8C2DB2B2C8E0C92BB4F6AC14B82A24A4D3695410ED4AACAA30374F4AC01847F5FC82F1E2D5F89F7FB28E510BF1A036E079180806A81FBC6E17FAF30ECA0FC5E717F2839C49B0B5254914811B30AD76FC4379837280B2774C6DF514D992B6C3526C6A428F90A1253101807719F0F2BBD97486EC08648995924D65114CE149BC3535E75F3ADDB1A99DA78A7392288C44E1DC558BF3B154665970AAD23272749221523B34D551DAAA115B69EF4BDE2881995A5DBAA19AE8AC505F243AC00C159628974ECCF1ED76249E61809B0CE593E72F80C17B29BB490A33E977BCE14EEC9E4E9E3AFDF24B2F6F3E7CB071F7AEFFF9C5CF1C7FE71BF7FEF9EF637EF5EC7B7FF7E663DFDFD9DAB5A5BE25C8980899F06A39B06DEBAF7DE653817A216AC02717DF3C55756B6EDCE225A266B564F52B5D61E5216280E14B1DCCAB92317B61C249EF4D5AC256CBF0E8E8D6ED3D2264576DBA7879E8B96BE37FFFF2050CD6B95FC9548A5F076B1E5B5AFA93BFFEECB5B10977D017C179C88FA22E9A29061172A5D5E4768139090C5DE9CDFEC26240CA68EDA14A672386506B506D4BA5A5E9D9A9C79FDDE2AB078B73610549EEE37131CBD71CAE73981D03672E0E9EBF8ADB21917BF4F45951951144426E89A7A9D9D3D16EAFA991B6809A3A526EA4B0EF9D98D7B2829964B7D1A0215BC6BCDA506529AE54A35781756474A1B8309F88259FFAAB2F2062068B011056687AEC6CC674B882240CD4FE88733355E962E89B545E3249FE800C8927B2A66209C99004829EF44153696DE249D301E6BD4D0D8FF8256B221761F6D5643F764C287D90DE52293FA61506A87A2557C8CF260127D6400494BF19C1109011E18622EA495280512912DB381F44C22032C72E22F221F9047E17E8EB94FB8C4524C241A9D4A5D317E06BA933479A069C054428DE849A67827565E1998572825DCD4274F3B62D70D370BC55E34A9266A02170FDDC55A7D5327EE3C6F5F31743C120538AA4A62C04515890E029C152995D08234619838B253383B8BA043405AF48533046928F2D2520A5D476343124E4F2B92E8E4D7674B501CE505D500B92583D7CE2707B5BEB47FFF80FF7DD7BAFCC8B80B02F173DF5B5FE9E4ED7AA1160B6231C0692453B928B59AC36BFE1DFFF5EFFD1C38FFCC97FDE7CE27808AB0E6DE04BBD1AAE38B3DC8A4FA08990CAFAD2EA81706338914AAAC9986AC176DCAA5C64088498B856F4E07963B20CDD9CFCD68B97B370326437987B7A21879379C8D9400A1A81605606B9C29FD1904CA7445A06585E0DE86410B0E2CAFC734CB235D58FCAFFA4B691136BECFCE5B96F3EDB1E6E622B216AA011DFD58FAF19710FDBBFB3A3ADADB3BBB3B1BBADA629EC6DAF17510DCA4A119B964959ED327099D29904575F79314822249A39A07294F67E37C46E91BE7238D00013F3F4B261E2D4E517FEF82FE39F79B483B9281A4F4C3C6181DCD664ED6CB6F77438F0898197EAB623D93CB514EF38B80F7946852408CB48028C5459E67A7FA00CBA226612387995E814820E21C21C1B9B18BB31B8EDBEE322750F4671EA54E6B96721A74AEC713A1DB71D1183473A9BAB65E7BFFD70A9C6CFBE49160AE1863A311BE48FD82CA8468BCA95B253A7B824FF112357253AA539AFD075025F024736F97DE0B6D72E0EF4DE76D806ACC8189ED954221531D34DA638128900E95B41E9E1A0E9EACCF092A0B6BB6CE1A6DAC6FA5A850410D2F267BEF543CCB29B9B6A7B7ABAE746C76E5E19D0A280986A29074A2D5B95C8A58C67C8A1C511935911F98AA6FECD88B0877110B3D753DBD59183EBE8752305C1C7F0EC7C57573BAF833DA0F96C5319DFB36F7B2A9511A7716574C09B4B0E8F464F9E2BAC2C073677D85A5B441A9C5146A6EC4B2B5F7BEF873E71FCBE7FF8950F869AEB21FB08DCCF8CA824ABF29A1C6E278B5571B0153B408E717123B323D193CF09A4C09210693A8B1229374C4D4C343604B8B6A8617FEC33FFE7D2E8CCAFBCF7DDD00C51FF09D6D57DF8777E9B4BC7D31EB8FDD881BBEE88D0866BA8B587FC0BC994D854A28CE271A1A404DDDF5F2F0E96FF8C0DF0EA5A416C3C2C0E47E4E933ED8D6D42F251E6FAC271952122B123ADAAF18AD09FA27173D5D0A80F6E6A95F7A85D33454FD78F9E2A8383594348A7DAFF75C00B09353069DBF84C6470E0C6CB4F3FF7C2A3DF3DFDB78F4F7CED878EF9ECFE5DFB1913A73664930C4C4C5D1B19B978F1FCD9A79E7AE67FFFDDA37FF599BFFD1F9FFFC2A7BFF8F4A98BB9DA502F9A1972E1C4E5576A29B8F8CA0B11ED62EFE6B6B391F1A9A9A9F1811BC846641716864F9DB9F2F2A9FEFB4F78E820CA8F956D0B51FBF828DA7D026B90D6CFCE3253479A0E84BAF0B9CFE72311A133E18843EB5E79C7228FC336513BAD4A74CB48EAC4DD446CC568F84B4CC54DA3AB81390F063B39015021CFA4733BEE3CEA47838DBEE3A66EFF9D7791FB91AE324D2DD00D5990C7E36D6FE58F4ECD4478559954C2812A28BB45240D0DE3388756596E7FE37D8A929DDBDADBE9A6B145834051E7D5EC38EF1DE12D887A628105A59193845ACBE294411B75440000D0D757D9362FC26E9FCDA4DC1E277D630EA3604D4DEFA60EC955109972D89129C08D9371C7F1EBD764BA0219B96C6EE04B8F257FFC52DBA6CE5CD5EAC2ECACA17F6BF08EDB192422C2E54CA6E6FA866D8D4D35BBFA0EBFE93E69354A4623F5AE98814B655CD698CFB756A3D222228F402E5FD441E8B13A5D88B5A83B5895882D6CEEE9E4247FF6E54B68B8B4B83DC32F9FF69940AD3D0DE1BAB7BDE31DF7BDF9CD945F175F3AF5ED2F7F0DABB28B2FBE126CAC2B90B372191C787C4AEBBD5865A8EDE8405450419AAF55096F7C884F94EE20A96D0046E99893AA77F8C50E4589F84878E394875546B561C6FD2A9A7EE12599B954AB016560BE4BB6277800BDF415C8B6024468140C6E8792415549B42844ADA5E34B271FFDD60B5FFDF62B5FF8BAF5A90B0BDFFC495BDED25FD3D8126A68D8D2935C8C1BF32587DFEFAFAF0F6F6AAFDBBBBDFDF8A1D0CEBED6BB8F1FFA771FBCF30F3F72FF1F7DF4E13FFDFD7D771EE350925E82C6098307B4B08455322A99F882F8628916AB8DC96E94D32E0E5CB970F2A5D1F1F16573752DA16D749A49420325C7E8B8B5AF87458FC0DA5AB964407519F05EDD305B093150783D2B86901F7CC61E0A38EA421C83F095142A05937F353917A540C2A64E0687194C8422C409D0D96C157778515A9F8DA5EA5B9A02683EF76CCE2692F6F272F45BDF2C305A5544F025ADB1942549AB32C078CBA4D35DCD8D918505045A98908E4C47528B4B23A72F771FDAC3D204D8C92C2D804F89350EA99A78584893413466C00931D3858E2474205E7F35110A6080F8224828CE90BC18110692D4840B45E6474D8CAC6294B46739A7E9810820084BC949B7B8AAA626602B222524FC79CED3B9C1518E3C37B382FB779467A33FFEABFFF1F43FFC1FDA0D916CBA63FF9EDA8E565743EDEE47EEA3C7C989A3693FAB1309CA42010C5AC7CEB5D44789DED199E625098553ED13595EA055DC2CCEC0DC12B503E2BBDF78FA94CF6AAD4591776C9C9DD1D6D9190C0653C9CC430F3F126E69B596566A009DAB8CDFFEE2DF5731264A4AC2130AAF91E734E2FB6DF5FAE44CFEB98B7FE337A44322B4864A3E545C48CC5DBEE126BB50E451EE37CA8C5269910BF137B48685AC3C21EED17C0EF4771166C46659D24F91DB11B925B5A334F6A9FC358E3F62D46A796664F4EB7FF0A7D1A74F372D16BBFCE180D375CFFE83F5E1A0ADB3D95C1728DE1875AB867821B2F0E3AF3E860D56A036E40D855A0FEE6F3EBC3FB8A9ABA6BDB57E5317DD10A9AC8936D8D10902A01E362B892CE53B6C1CFC20FBBA376DDBBAA53BDCB07BDBB6C63D3BC3E1BA3B77ECA52740A0352C2EE59E7FA190CD67076E1601B57462B4E62A2E950629848836E7F36DBD5D0E563F86455E0FE408F22B95AD56C16961A49DFD2CA19A960215D84A3953CC3B1A6BE54422DCFA6BA646275B7B37B1BE9B0EED1B1F1AA36EF6D5D76AAEB444EFA524B237D534EF22672F5C3E77A1A5A5A1B5A579686482E317C92938772F7DEBC7EEBA507D57AB5C76E1E7F1B359A7D32E175339CC090F4F79654A62403442541484949EB4F84FA0592C07049E00223C88331C0592C544A70D6E0B7E32CD8DE1B1D9E8B1FD3BE53EA92764B1720E2469633B9DB55E6736B9C4DDF38583C1E3FB88D0AE8E966DEF7A3361CE87CE45323997CDF98F1C3870EF1D609D17AE5CE9DCDB478A2C2E7D2AD47397A93880D160E929184FA321ABD0429120EE1B6618D130AC0453562C64C2E45C64BA31EC21F5FAC1A9417FA8BEB9B1CE8B9130095B5515CAE6507541D978FA8FFEFB3F4C96CB29C8B301FF99C8ECF9D131C9ADAA0CD4F1520BB18DFD3E598AAF4D05FDC70F81F5F4F45EC1A0046C2F36446880AA390389258255E2AD9F27FC28791C7579953E5C24110BEFEC45683695585C9C1A5329935E7B6BAB5F27CAAB7E423A117FE1AF3E77EFD61D27F61DF0D8EC1D7561004CE1D0A7B290080CB1241046626E21169933584D87F7ED82B90EF944D8ED6AF25CAA28251C2BB44507F8858713572BB3F870D27369AB47C589C48C88C832E2A89504399A08649777F7F5B17C257FE3DDCE2FAC4E4E416AA8424855A37CAAA0A5F1994417319BA33C2D323BA072832A7F8DC1E986070138CF7BA37C67068030ACC8B08AD9C0F9C35463A964F6FBE4ED9BAD059323B7B8E8C713C0E6C0BF240EC439B7006047B643A68E7C2C714E36126A1794E6B3732D4D0DC4E28BA72F9168B27CB6DD710829FBD663B7D96AE011C8F03A4536190D634222F4A95D4FA22925794D0D9AFA6AB84966C134B924FE152501111690D900A646A07FA2BFB29849396A6BB3A515AFDFF3F2E90BBD5DADEC5E7E98234B9A1B22AA5EA2AC02190483143FCE95F296BB6E8BAC15E118016A151AC357E3B153B168F3230F3D8C51BBCD76E3CA40D3D15D645C6A0846BCF7D58828F91BA5C88AA014954C58E356AA5147917AA355275400C541D220FCF9D1C1FAA67A7C84F61FD8695D4A06709D83FF014E5F6D9CBA39982A64D5FB85AAB6B673CF9EF65DDBFAF7EEC2ECF67A3C413E891A92E2366A221CE0AA8289E9CBF9173FE46D6EC8D204E330B9A9FCFC82D6D369176906008EB5357BC0272D4655D328AB41C3C2EC5CEDF17D62A5467BCC1FB4F98320BDCADE4FAD7BB5FAD51E542BCCB0169F5F3CD4DEE572BB39DF194901D292231B80051FF69928F381FC14CA25A9627E36199B5A9817D23DA145694AAA4BA8CE13BDEA53CD017DEC597D032CC0EDAEA6B7E674722848B4A657CF4266C4DB85C6A3BC11895200D7B118BFA11C1185EDAC992668882D80491A7345B39937EDA7DDBB944A8E4D252E0FC44E9DE5E7180A95FC1E2722D0525441E1BB2B4E8494041C8AA822A3EDC1E6F404C60686DADB5B0D762773CDC853C670C501C64E24D180A154F036D53576B5C71663E2492AB9253F6461DD2F4ECD4C4E4CB36C89EFDD47F77EF7737F77E105313803C1618000353ABA368277297C8F73DFEAF3009409C7B35C9243982600AB84FAB8527A72ADC083D0B7C262904B311D5B42341B610B34168B79CAA8202F4F990688502EBFDED4DC24145564219761FB897F1E03F2E6DE764BBDDFEAB6BDEF53FFED035FFDECFFF3D5CFDDFFB687A170474646EDF5C1BD6F7D40D97FD115D1C33FA184E21EC4D925F0B1E21DBE6A3645205275F14D9E509D58018869D26A4DC0412DC2F219BB391C5A31F0824099792E78071C69070E1E0263447A6329114795F5C6A9733FF8E6E3C4E8DDB71FCBF96A1653E89C6BE200D8C4DBFF5159FB0B1E443005A0553680ADB91E6150EFA11D80E78A114DFD64A6C062F04239684A79C4BFFC68BE3E10DCDE670014132502BBA306F69EF4FDD445D415955550508926763DE33396B221BD985886422C6005E89054D8D2F4C6708AE1C0D5B5E096CEBD1FFF3DDFC3777BB76E12FEB814382AB554B473CDE19948A5F93A69B1503BB660EFADCEC4B00734045D309997E717F3C8A04E47575259B142C8628E99273B12001E06F0DEFDF2BAE08F657382E4AAF29E3D5984EBCAF98DEE645F1F35080EDBB48A8BB3F3F9E882B926B08C0E36FECCC9946804E1BD120ACA1B07CF0DFA615C14023E16B230D4FCE1722ADEBA7DBB1180AFBA3AD4D8B0EFFDEF469CB9185DE09E62845288442D89242C50927FC47C3ADA9A647860753564B55D3C7986665F2EB6B8F3D8DE873EF2AB03AF5C8AC79796E231C2FFC4C894DBED91E24A0538EE377A27E4DA703A4838108722F564AD93FEAA213E7D200E8093D6BBC8BC9252734ED6049886018ADFDAD32D6421A91014E644422E38909416920F08799B6C4568CCBEA6703CC998354D277B477B5B73730B18311A6C36A7A5E7BE63F0D855722BE72727951454CA4BD3E69061375D595627DCCB2921C03865157BB5CCE8288A41F223D337AEB4B535AA8DB476FAD4653F187A4B33F6E1E66060CDE96402FDF8F1A36C7C4E0E62D8C2CC349457FA331F7CDF7B3EFCBEF7367776726E50F6C8B6676D72CDFFA9B9CF7A3DA00ADDCAAF18AD9040C2A1D67B8E45AB49E3048765F329BA02B685A2312F68A6A97A219BE97DDB1BE9B3C81CA7B8A049F787D55F6DB2CA948D3E9DA4F69702BF78DF89CB37B28B49A866C27042C59E235245763620C21B5C56FA508BD786609013620F1C3B22A59B22ABAE0FF8C8DD0194C4284A456E357A29EAB0F206B80BC90CEBA07A7691AA8FC9FD7C32B10C578435C151505EB3DDB68379212A87E25CA4F0D24BF090451DB2B0ECF9E0FBA859EDBBFB3CF71D13640652A4D13871F1127EA92BB086D4D1CDBDC38C367BF53A6F47F9C01990B29236851D9967C1F2CA44CAC65ADE6FB5DB972DAD5EFBF653035FFC661CE682E42416F08A6C224D9B5614F1E904D9E50242A69F9B99BD79F36667771B89039DB42D5D9DAFFCF0E4C48DD1C5A9C8DCD04DBBC5B0F7EEC3CF3F7F2ABE10E3F82A660A108F915850FC42257DC599C665511EA38A9B2D2245B20114DA26925BA515B809162443B89054C0CC55BA64CA3699CC789097D33842DA39AA1226200405E3519E175613F893E28BC350A273F0E6F5622A81C7C4C28D810C268CE3634C85A240DA2226655442D21497DC47443C95059D6135186282717D2C4B15EC15A748CE591A00AA5B2DCBAE88EC616A5EC07BAA27B77F221ADFFA96077FFDF3FFB390CCBEED3FFCC1EF7CFA2FBFF0CDAF6209C16FC0A5FCC1638F0973A4DAF427BFFEFEB7EDD9911DBA063D96F901615B48E7DC92417BEB9FD0FCDAF85054AB0DFFE559644DE3D37D744F2C95504629F2A1FB5A2A8000C0D3B6A3573C7054E5AFB690DA009C61FAEAD7DEB5C8B6133C967359E825A690DF42B3933521CE9DD2EF271E989AC360F60C7321A39BC39F3D5D8C3E7B4A851F9E8C630FEAA768786B0E45A496BAA993D0CC2417030E2BDE18E78601F91B5D56A261796406B6309C6A119F82DC565C4696908DB9FCD499EAA0A31A618B897107F78052490CDC4CC5EB376867F91FBE13E17C46BDE069BAA022E25BDEDA1678FB3B7815A46ACAB8DAEE0DA3F2C231AB4414483DB182453848844A4DE9D5D59AF6164E4C7343DB8DB317FA1DC11E4730F78DA76F3EFA1DD8A4EFFAAF7F52EEEE86F2AFA42E56453F429552B942717E6E8E2D8D3336149286DA60D064BA7CF62A7701E2270A2275EDCD33730B34831177E05710B466E9CB02A33A23FB976156D1C8B2BB1DC2C9E39500F212ADF40D20245DC1EE14D986AD9CA0AFA2DAAE74C9FC1027D9455A66AE8F96E8CB46CE97D5B5851B37CEFDE0C72BB8E0D0BEF0F967E38BD9F8423E3A3F77F9622EBE5072DAC2DBB62AD61898AAD45142155656FE8ABCA2D2B4F5F0AF3FD4503E4633C5626D439D5A2452364C5C1F6885FE0D8FCDE15EB1F8F61D3A3EF3F2B92F3DF28180C9F1F53FFA2FF1F10977D5AAB1BC8C36C6E8E0C0B99F3C9FC8173FF65BBFFEE603FB2093D0BA0777998D2F8162093EB15232D16CD57ABAFFC407C7A04229D78B66AD732DBD8CC65DFDF6878E47483878938278CAE80672CA51E35A69C7E6A6837B25368BA9BECC68ABEE99B076F5B2467BC72C166C46E97A806360DCD75E9FF4D957EB82127AA0ACADACA0274C4E3EFBDCB9C8E5A1A59B5389D148557EE5C263DF0F78A970C8E91D32D4ABF83CCADA5214A0987FD31C7939F21054CA0F4D54E74BA5C5253187EB6E5969179D1FD132A4FB09A7835B0D7F931FC7152A93B1BFE90E83CF5D9E9D63A5C20C03C3E1B94ACF9F441F6AEABF7FA6F0E40B24DCDC533AA701DC48272697B0D0E3F4585DF535351A1CF6E4428C215431CC130A1E7A2E2CE002F9219B3992CB8295996A42D52E1F09B4BF7F13792E6AF2B533F1A1BFF922FDB26DFFE6375743610D19931C92E94419A70291B4CD60F3AFBC7751986CAC0D8D9E1B4CE007AAEE423C3285D0FBEC74940384F4D2E6F5D90310F2A96084E349A8A28865FE1D6AA29AD247270DBB45992E52E3B632B54747823E230500FDA7DA86308DF120A95D55554B6B8B469553062D4A5B86745CF94D6880693C5BDCB27DDB4A7269FEC6C0BEA3875AF7ECB2B7B579B7EFA83B72B0E1D86DA1FEAD9C84C23850CC3891C8D033EF75169A34AAD5C7FAD4ACFA54A9FAB30114494B8E1DC34ACAC9DC15227404B755D35D6F7A904EF3DA6C0C2D82DAC2EAA5BFFB0673D774E91D26E3373EFB851AB3ED231FFD8D13BBB793B34A5096645C54A38520483840584560957FD64315961BD2263D9CCB98A9C5D2B87B7BD7AFBF2BB7AD3B5BEB2FB486AB8FEE0D3E727FFBDB1EA8DDB15565E4C20A35DB1C787283DED11765A28C6BA10BA18B1F3F83D7CA9718A5D56C2E0CA619F49642BE3986AD76F6A17D4AA68982B148552ABA0EFB6632BE78C1906B6E65E8423F76B4D82F69AD447D613A29690A040F6BE2E934F31FDC408DE8E2DAD653BD7333F805E447F609A7BFABAD5E7C3C272291C9E9E25D7BCC2D8D4590E31C79BF28598B0E3D1B6973E7B2DD510ED6E0A12E2734EAAAA4B0F510F7211771B6C2A093AC3D3B8F1D98F07745D188410EA7CDDB5867F7BA1559C33051CCFB031E4BB821363B83CEABFFF63DA9CD4D69B3112DC74EA777F24BFF103DF98AEC593514C615B611578180A01F67F3E3C313B35333B202B0E3872E69A81ABD3C2C4C6835E3DBDC58CB84CD103A00A8C672745848BA2CECFF7C2C6E71BA354B53C5174416056910388AFC989A9E216FA37C0277A770F77997E0C9301E592ED9DC0E44E4D571AD46408473A4360011074E21567C82A5583180215333147376A65C17E664EA125D140CD91D8C3C816F12D3447357FAB9A21BAF46CB2B92203FB5C0E4CB95AF892C456DC8DED6C40D405C29199B0DD6B8643C7AA53C391935617B0406056B1A9C1918CFEEACDFB619D00C266D646CF485277EF4D18FFDFE83771CC5CA0F24DAE6B2238886F6566D6D081E9C4C7EC3D3060BFE672540EB72A4952FE8A8A2F0F4E051D1A6703ABAEE3CDAFAD6FB9BEF3D11DAD2CD609E68614BECD714A9D80256F6005E1C669B2E105259FF6809A2AF260A9B80D5304BB8E3F52D8DE1CEA6E5A067F0F9532BD125544C26AE0D5BDA1B3030A3A5900BBBB37B3A0E1D3F208A7F92D1EA76DE72B6AE877F3582A334618A4DFB76AE06BC126C60EF0931C6E8DAD2E5FAC05B92ACD365746153C99BA8178D976EDBEDFBD8873B3EF22E36C9F2FCBCE89C5506D98C8DF5C6DEDEC2D8A80544D958850444A12664E580463B48B48579FF668BD7C762459BC4EBF7D31D635F43E712AEAAA883C9B8D685D1715743A87A25672815865E7AA1261864F9854F1C74BEF5BE544B18C5C326A72FFDA36731DD10C21C76C9D0921D3648CF4C661DDCD4C921333A3CC1DBA235056BB4BDB1297275E4C6951B7AE5535575E8C85E9BC7158D25644A4C619DA2776236BBDADBC5FD5C48359461AAFFCAEBA13DE2A0B812068EDDC3E09B553680CB797364040E92CC4C561976EFEAE7B22A960DF9EAFA0CAD80F46214019806DECD752FE4441F09981ECC211D67C973B3D5D4319484AAC8C414BEB13C21A7866643AD42980EFCA8227C5D8C44959812C1648E9FF9729471E1EEAC2D67AD55F9402040B932323C65F584A48F013A9263661611D710DAE55BEF3D2AAF616DF5C96F7FF72D6F7DE8D8BE9DA5C579E9D189CEA9E41FC16DDB022D4DF0A3989B8160A7BF827FE663E32FA9E3E09685B2FC11BDDA54588EE236E93C144545D19A86F09744764B9D269A009FC216399B980A2814E564E5F6D061CAE489515B76F7D56F6ABD965CBC3C351E892F9510D2F13B2F2663DF3E7FF6D0F183779D382AC34DDA61CCDF50992529B34C1872AA8BB8AA81A47F391A07590F3D7042743D992F51340CF69DFFF0AEFA4FFEBFC9DB77AD3E782CBF77ABF737DF117AF77DE1A33B91F39639E091512998156558FAA00BB385C7BE61A513AC2466D02434ECD9E50EF80A89043756D8356870936B4AD9C3825F2199C91639B7246B142D0E9697C5FCF28DA1CEDE0E626A7C78406A6ED68D3862586D68E8DCB6DF7ADFB1CCA65627AE929C782AE1D01489F979319D76B936373552992ECE445B5A9ADBDA5AEB82A180DB73E9E501A4D835CE1CFF36348471956403535273B3A57B5A6DCC4D21380E3CED47D15255C6EA4C26FCB34DF8319604FC539F4749A5DB166271F461A9BCE819990D2B92610A66A5EE94768880CB80AD01D3B3DDC949D440B396CC4A30E4BFD9C44A2AB696470120656220876283924C860FC43D1225C9CA9DDA1081558C148342D5AD97F504C985EC37B1840FC6721E82A7B8A6B2EE9752F9FAF6CE333F78D25A654B4FCC8891B0D550EA0877F4603FB5168B2E9472C5B73E78EF4A2629C78E26FFC0AD61C8B8A3C3D7BF6D0ED1419E4BFCBA9DEBD0D32F5CF41B95233614C1DA572BE1A7F2B3EA46540A9A5B75B67C4B7537D67B5E15C0577E9E0BC4D40B9C85449AD994723CB9420760610978B1B63678C75BDE10D8D563E96ACC7BED7104F0DBEB8EDD7D0CB28B36ABC3389FF65A64C47BC39082088D44A2A59BD355101D28EC868619CC3365F299E1710981B28AF3F6A0AFFF63FFA6E5DFFF5AFB9F7EB8EDB7DFB9E6B4E4924B846EF6082377E2C4469E831281065A0BC500CAB4CCBEB9A2F3854B1703F7DFC35E52FE038C5F49CFDBB9732BFECF6A2954D3DF915E2C147FB8374AEDEBCCF4B40B6916AB79F4FA505B6707C5999AC1551C7751807406F6EF08DF7FA254139CA633A55C19A1D348305197957183A6600DACD8446CC95B1310F92787BB902E9E7EF192369FA179530BAA48E067E9D32062C0485AF2226A2B5C7F91BD50B74EEC27F0C9963AFBD4C868195945523B181C563BD53D3B4B857863A0C6C7600A514B44DAE4A17217B9A54A98445D6B0562AAD95DB6AA381A8BF05C553183938F4889E5D3F5C11AB508370CE0EAEB4225AD7A8F57D903283150C92978E582D21A6C4222E337E84ACBC01B3FEAC209DC6C5B1C1A4B5F1E449EB7FFFD6FDDFAEE37F61EDAA992DB3548CE6F7AEB43EC3930EA95E53CC88AA242D1352ADA7C3E14FBE0D54906A8460BFE2921FFE73C6E4142FAE658DF06AAA091245994CB05FCD21C5FB448BD2E8DA66D288DC1CF52A0A25C615A1C553919D65E65727C696A8EB95B3B389CD379C75DC78FDD79B4BF7FCBED470FDEFD2B6FDED2D7ABCDBE681A2FCA06422E9D029FE48340141FB8593A3F68C4A2627A968835FBF7DFD234374CE391F93397C4BF4CA935236742990B5F48E237960AEABA1723D3C67C46F4E985CC810598FC35696C13494048646464397CC7D1D433CFB01B6866540671D69667E6782F6A853173243A0B554ABA5EECB0F279475DB0BDB5816982A514ECD17A5962C03594981AFE2D4659084B14FCE8FD77F56472D2BB4C63EDB8B606F537B910E7A87033BC5B654C46E3D7CE5FCD650AC4E31D6D6DE6ACE1E2B921F02B1EF23E56CA322606822E4909220B926A6A4D4FEA16C1DE355283CD2E9E11A6EAB39353712E1C6331162B2532D7082233F7905A1DDE83867EAFCB74DE0A73048912E88A908D551A8B49A97C51DD6389749A028F2439C40E1594645954882FDAEDAFB42DD511AEA99373A0A8AE82460C639A8EBE0305BA54AE9296559369D3FF7005FC353B371DFEBD0FF7DD7F7C6E74E8C0DDB7698C569E776478B4B6AE7E399D2803F421F02AFDE65548EACD5B7A5DCC87B83DA2514041A8C0BD5B01FAF56C809FDE062AFC8BE7B8EEFBA68824FAEAAF1C26DAC1A191BFC5C79C8E455E304A38C0E9F41224B0BAA0ABB713C71E103A648F96A2F1642295A05AE8EF0ADC77822EBF4049321B27F5AE263951492385B031FDC22B6B578719B4917ECA95A1FC7367EBDADAB480237CC7C802402A69898861A9444C2B9F65AD90CB71C19839268B50D6327C4B262754DC94263A1C7E87DD209C9F742E1A9581144E7DF8BDE110BC0CD040A1EF8234730E4069E6FD11179549D98589294F00DB5EEBCC5CB4BBAF4F0E1916A8A249AFA7970A2E5CAB625F34352F09F9008A20FD5A5311C5E4028E94907CA8AD5045153F01CE0717740433F62BF69B0353E3C3333C11E351019F872A945E8CA46ED4BEC2FC11B8532A3FB10F12921222F2BC6C22007F7D32995AA46122C498EA642C4ECD2A3786B6A310B9E9D648F2A6C9126ABDB00A6D93BD4F3740C04DC9B854334BD30ED156B22C6225F8A55A931B32083DFCA920A125FD9A024D0569D1145C14599FF98D556BD027E6C11A75BFCA889BFCE4CC34EAF693DFF886DFE798FCEE776AFBBA39B305A840461650183DDE5C7295D54F542B640B9984D8C41AABE83737F5F6C8FBA7338BB40863D0AF63F5FF8C0DF0AA879E00A9212F0522AC4348EBBB457BDBAAE72139A528812C2F6792C942A8A6EEC17BFCB71FF0DD7FC472FBEEEA035B2C27F6381F3CEA7CE3ED8137DFE9DBDD27A87D124F4F595D15445947D1E41EAC94E24F9EF4CD25419A94BD19CBC9B8FCDC195B5E4C61049C59A119E5583E7F4D9180F5844DB51E55B74D0D86AD4D4FD322507A926525A72E2F1EE8133806B230A060159EC80FBD212D8D554030982026FBE62E919815FA91D077519533A2B31BF4C8BF40362EC70F07AF6FD9DCC15529940C75ADB06BC0225985024B571687FA9774C26CAA6BAE5F08D64A81E0F23883B5047B37A35EF0A04A2B4DADCDCD1DAD8C8FB1EC12A9940239ECC04D2FBD78656E2C020CEA80390C2CA1985E953D003957FD570E620488980A7748378ACC8E6341C6D5A0AC0B912483317DD0AFDD3AA4E9DC8C37290C63FDF07E75BAAB8732384292FC2899026D6D6BEB58838FC480A842C4AAACFE4ADC573FB7DEBCD16861B231B4C5515E7136E08D47F34E89258BE155B537503334781D118EB5443CF7D49373E5E59EC3D86CAE0D0D0CA2A1363232C6955911E1464A0E3997342C44886A0683D3E7CB800558CC00651455EB70D32F7F03A88823A91CD008514CA51EFAC9A0812A9AF5A468107328037D9696F1FF92EE635DB8E9F07E0033D102E282204C820973674355AD17D166710FC77025B6C4002EC5B4563CA87B2A1D4A85AE552D4F46FC842C8A4EC91A2B546F71FD2FC1DF26D162301791674CF2F2A42B880623F0AF4E4FEDB589D82D1C9B9488894BEEA602A1A6AFA13E61049F5F2AE519DA24C2327C8886AE58B1190B5393D2CF1322329D76FAA988F79AD7D0E09776D2F2523AFDC4B51B07F6EFA2A1E1AA6FA30B43B3CA6883985951F0AC04402DFE01D184F7EC4938DC5C16163199BA52CB1197A46C641EB73996666D8D9F9627120C7CB3A7BE3E952D3EFEA3D33F7AE1FC244373149ECC82890B04E00BAF077977B6AD4A12B82F780540EF60C40C7191587C68262298992CD3EAEB376E86449F47323E5A606A696AE442FD74DDC01FD3D6ABDEE151562B95B3415FEBEA13FDDC50E494F5CF7542817C49BDC84A72A43FA376BCE0F0B5AA502631BD9391BA9522530D5BF61CB874E18CBBB13EE3B28F2F1777BFE3117EB99CCF75B7B691EDDDB831B6A9A39974535BDBDACBE677ED08D9AB67476908420DDD0021F6BDBEC7CFDB00D2EB128F7A2BFFAA71ED0D7D3ED5EA56915FBA83AC3311CF4261219DC10E96F5C56C9EBAE4B21E492714671A0A9518A4492E452010D531E6195446AEA47E84622E4D4AC5D8654B68E7A53492C425421B335538064266029596D1F3C1BD022896E61712C4AA05267F50CDD6638FB59ACEA8F35616907C0DE21FD78BDA528CD670B6CBD7DD7302A658F33DB7A345471EC536C096573734275F42011B00D4655DC3F3B48A5AB61049A53A9A9BBA377767F2ABFEC6169E8E0D80D8831A33D5D68ABAFF22A200EFCD0CDDBFFFCEE3BEFDFB2864B9901C1700DF743C88DA7036D313115C55EC2E5723FE4868B9AD19823ECF037B7737F9438615EA1FDB2A86828C8FA8491785350A2A2A7102E8D3AE2642248397651FC7963495AE46AD519DD790F1A8B994CE84B2AD57A15751EAB460AD67991BB278F5500A7332F8A1DC1DB558A2AD671D27D162BD6C03A5BEAA337F95108E9E4EADFFBC7A6A2DB3953A839BAF142DA4DE40E0ADDAE6F533F675CFDBDF52BF7B4BF3EE7E921E5AE393E3E3A2F262A89E8BCC310C243EDEFAEED3584665266CB5CB2B1A7868AED227B915767EA91B400F00B2786417286C4BDBEBEA214152F801B2FCCB4C219296C8F2869EA09A06F83065D2672F0A88A15D62ADD5A09E82FB10CD454BAB45FC2C24EC4BDEC7840AD3DF22B73674FE928C37837250FC4165237B540B4BBD0A51E553C14B53BE51AECCDA49ADFD8344143C53A537207D51A4A952B0C7F819E63FC85EC4805AE4E12598720654971BEABD7D7DF11FFFC07FE771C71D2768430032608045974E75944C0664A59104B65B992597516EC3DA7357AFD735D6C98EF484ACB4A564A1D09E5472601B0A28D9B4E2656DB3FABC769F378EE4018C23C66A9592042B5ED9952246B482BB870FE51CB7BBB3B38D1A1BDDDF15A3C10D17C36223C03B5A5AB4DDAB4826AC1BC18634415869DAA8897891D62B2DCFC7E1D09748F4058E9695586610512E927A68526D7A05AC21D77A2CD786911508A165ED40DB32B062156F53653BA770097D956B188598526A0C0035FDBE9E1A29D45ADD67FDC8D6168B94164CCF6ACD2258029CC032D5BD66F8C06FFEC6FFF9D4A7E1C7E17B313B318ED81D32FDFCE493CF9FEC6E6BC60D464C71746455BFC7CCCB6B583C367B70C219B25DB706FBE59F00AFC246D566D04ECA75BA939227A3F34B65975F4173136A3E1A9A4AAB5A6ADB025DA251060B34944771A6B5A0616C70D5BB2C4E269CE566291047D447108EB45B3B0EEDC1F3874B2C2636323FA1A7D33AB4A0B2170553A88C90FFD478280EE42E52D572638834908280A829C427A6888EDA688190FC280125B6295E035E51E595C06D87A63EF5D7E599E9CCD44CE2F9E7B40E9CD060892EA4FE9AF51077D64EFD0A8481C46FF5C87CFC9E7BEFC8E5575CA13AC9C855BEA191A67EFAEAF16285B52F58EA8EB7BD796DEFEEA2FAB20C8E90D961DDAEFAE63251944C8182077BBA60ED2F46E71BEA43811A17761A44143A008A310946ABAF3FB220F24D6104A8260CF780C904F6C0D3834327F6ED51B215F40F25D052E4544653B4245E42983A7A37E4F79A25889EB0C9E0A5727550D15D237D69798E3606AD0DB8081F41AD78F9105AA45441952258B3ED5A67C469F3B5CA1D55300529B2951E2D1B8185D3D1BD29D0DA8A741C872DCA06F45F36093DDBF8C3E75EBCF336A40A97B4991BAD785374D8550B18974AB2DCB5219031E1846A13C9FF5A45F0C6DE81D640D4A3AD2C4795B1AB0670B180AFB02195260643EE65BDB218618F599399E52BD791AE97E6B9A86D0A6F8E7481748A01C4991F3E150C04B4890A86D3C54D43E818608EF2F4D6AEE66521C569EF4EBB94FAD12AF18B2201EBD5E8A279AB34A48498245C3A010D958D51792DBE58B5142FD3A2E2F2B57508DB4FF5C2A40B20A75519DBD1E2C5339EB595E0073F32F5BD278CE9241885A7BE0E3E88301C496924E766A095210D35806F35CFBB3C63A5958307F602B558B038103C5BC53F2D08AD6F01ED624913085849999480FFC82C35F50BA28C642C063B5AF8B4534B256CC852F3B16232939A9EA5C6EEEA6CE73EEFE8EF69A80B60A821E6BE4A66435E03C592025580A5D5C9237911C1BF90CB46B3D9C144E2E3BFFBA1F19B3745C10CC46E5998A4AA08D54FE00D00A5B65ED5CA166C071EA420541B0A5CF51EB4CF65A40B0E92FC806A3FB3A9D4008A42FAF5ED21D9BF1602D4A6D20A52458817EE102A0492F9AA072B18C04038BFA5E5749CE2F8C0EDB7C7124901094823E9BAD0F3B639AE0F8FC08B2865A003AECF570A049CCB66B0D9D5404FBA1CCAB6AB9291FCEB6D8057EF047D0FAC9F7D3A2ACAB789B59401658A349499D4E809336573F398402E9F3C5D78F9F4C2134FC45F7E097B33AA5AD8F633DF7F220CE512AD53910BAE66B256C731557357703D7ADD07B731F4A8320041D67526960217708759BDF788EB036FB6773408F942EB6DF22D2577AAC463459A57845BB0CBF5BA70B75B6D6B3220654383D384AB376CD412BC34C7DEFDD1AB031E1980C241CD522AD0B3CF29A2255502A2E0C86FE9BD1D676BCBE5FC72434F0F1D1CB3C34D835FCB836F4122B760A0CA1AAAE847B018F2A818B435BB98991468D526EA0B565B3A21B15FF45D98C747404EA10DC54C3A512CEEBDEDA0C869899F8F3628A2A94A681D5641FD25F4AC96D34904FD576E2E2C1ED9D3BFB69CC68292B38EE95F312796C65905EEA9A4EF4A4A7FBDB4D5F8109AC4869EE5EB498EF68986264BC2435A2EC99EBEE275FA8C3CBF2EFAA9F17F143B689D0A2A6496E51CEC89CA7652BF25B752DC27CA4B91DCEC30AEEC26F407F4CA016529DB8F5E7C65666101EF6C51A7BD557DC8F3C613490834B05BF83A649C4C32C565FCB93CD09F3E965FD706A83CE5AD74481188C401DDEC70556155295838B191C96859C52AE590DA9533DB552C357A03212ABF8BE797CE9D8BFEE0C708F170ED16662394CD561FE259625526F52D318FAB434B8B89D8D67AC783C733E6AA7C2A43633CB794C6913791488E4C4F79DFF326EFDE7EF7B6CDD54C5A2553B9A5A5F5EB25EF7A453CF3645804A10EC6A947AE432E31CCCF61BC4F334B2825409756337CC9D90B97975FFC895A2B327120A417FD26AE1AA0FE8BA891DC36312C0A85FEE1D1EFBEFB3DBF965F8A5BD1ECD702BFFEF1AA5E7C2552AC43A2B2645B76EF42A493ADC5FC9A211828812A04FC6B4C03636D8DD43D7854264FAF25934A99ABD696E6E74626266C24F1C09A42078415A2B883EA29D58CBCB0B2F95D18D490F74E8D8CDF7F640F0D1BE07EDE9B4830B0DF3437140DBE54D15A7A52FAABADBC36AD35C81AD0531A69324852219D663DC00BBCA303A6DA31225FD7F441449FA67205748044BF06EAC4064EE0B0AAA4D1FAD9AD7131C8544BA262F6F2933F40404C621F3FA922DD2B2FBEF0E0FDF797B23407658BEBE7A91435E555DC92F229CD920CB927C454B0A2FA79ABBCB2F57FFE4EF867D710EB0099B603002B841BE7F1A1282276C4440D2076FC3C004E1DB014612623C59C2DD21145827336561E990828E9706EB668695012499E0D2584E35506BFA599007913B7C385055882BE078E175B6B2D07FBAB36B598F66EF53D787BE7FBDE46F620992EE7B1D7E3DDD56F68AE4FA24D9C4D4B9E44EB3E97C1411F62B6312F021612F505159297AE8455D69841B4F7F62C63235EB5EA0ED5904A8AF8BE92FDE75F1215E93AAA5722BFE8F293792727A7A7E97CB53496F36910985BA9A11E645F0B45D0FFC770B073CB96325D1BACC959D9F034ADE6404FF7AAD34E234CF428AB0CA1AE766F7D3D172368B50E5FBE225899106F547F50EB4C09BB068B24C17F24CF0724A936A660E959CC6D4DB58222944432951C0B4117417B156D5315FC4A73513FB1558DAA25FD0475D63757468BF14A9857ED6D0410D6CF0A6DD16BF15E3BF4B48FCA6C8D2A29F4BCE85555100503F7B4724E6A6C2CBD8F2AB24AF389DCECF9F3583488DB975C6DD15D8C8C8C6FD9D2B3BC382F4FA9552CEAC195907824CD56194E14F7094C632B25C1CF0CD485C84C617E4E1F4C7BEDC7BFA488D60F7A5D4642CA1A9A32087323032A446DAE365990927923B913AE3E7E49E92C59BBFC2C21909BC46C0422313EE42C59C522BEA2840FF4E3132C46721EEC9FB82EC6B5E0915DD5F501CFBE3E47770B841C31BB1457B64AB0A5878BA0676B8B41B9CC6269463925A4856C0A397931B154B1539B7CD2C45ADC07F673F21A4B45C49520DB7079C87944F007B01F1B60C80314C18C3ED311A38FDBB689E6D9A90B579ADB3B7CC67C35E08F623DC8439B70AB5449AFBD07847FD1B16F571CEF68346BB98B90D4FC5EA3DB51D3B78979D4705B33CA73F4F471E2967E8B117F5717AF046858BA6612FE5593A99262B02F3901D8004CFA3F7B75E8813B0F51ACA3BD2ED582D9125B5CF4C848A406D4E86DAF0A64290B57C86A9560AFF2344A33E555B1B1CFB59EB4686B5D7E850DA33ED1797852A0560AE55BA956E56A482C82BA247FE5D6B1A3E03C551A611DF78DBFF9C2917DBBA4A1C15BE61609D0B512998A385D1ED9008A06A6542C64DFB08A6A10C032D13592152B35BD08B0DED28378F5430A90E5B939C57C51C9F32F77036CB8BB3A7E2C252EBC3FB7B31A832ABCAC95171F011571019C2189A6BC4994984486442D77336D4F04CD7D6E1601360272F56F9D9EA2BBA0010E547ED28762EE09DA024784C54CC18D6628198CB6F674153EB5328478C2280F23BE323F8BBB35AB57028FF6FE6900B39D90FD116FB189B1FCC83049BF9A2754445E358D40E78E174C45CE8924A3390849584CA5E18B6C9F78365F1FF4AEC4E6ACA1C65BA0A79EFEFCACE5BF310955AF91BE6DCBB143B1741E8B00355D6915950764495A1B17E76681CB4A8BB1E8F0281ED7A03A78E8A3F0AEEC80988DCCCA59A44E004A600D6DE739F07A203C5C8BCCEDDDD1A364F84C4B0B0BF0FBA15178BDB85392BEA9B5AE853FBDA2AC50E8D6D7B1A8DDA88C5FEF63E84B5FDF2D7220C889210D6605F528B28ACAEB6EF18034476E9D64A70F0348BC57D3921C26D224D66022914D5603B4D54FFCE085074F1CB1D249D4D819EA3A425C4D64727D1DED5051E4867295148F8B0F145F020D0D463B21BF1279698A8B01EB6B5DFA2AD7D63E73B05695853244F15A8FD707A3AEEF0136366C13DE0F5EF85E4F15C2C8A28020037B668FD35E1B60CA0C2411EB48E1B008DF90B5C5FC881D0136FCF334F5219DCF00895CC635AC4638BA1E37FF56D10C229B3257838AC1B390C352665E859FACDD0CF955B616811FD887D4932E6F2CCA28BCE2E217651989CCC59A3318007EA1B982A798B02CF9BBC2CD52DA901C415A08D45C9594A2BAD47F6A89509B3EFA93536FBFE7281AC754C05A3EACEDBF9F9F5F562E913C78018DDD1DD6F69605ACA40029B1CB05FBF03811C62A795D89E8426A3E4AA9420351D69A28BB99197A177559D5DD933D20343EF1CC5358E76A3C1A9F9E5BB8EBE81E9170821D68342E45175870B9540272112140A67E258B533C542D23DE00DBEBD17DBD1CD656F37AF897BDB3AEF4A1ED077DEDADD3E3F5F2773D06DF0A46BABEA0BE5BF41DA5F8142A191BB8317960E7CE706383A29D562A04C4E51763343BBAEA431CD31A1552093ECAFD1B1B9B34D95DD576350DA2FF3D75C8BC36022422792A8DFAF9CAA1FFF20DA0BF6F2D046A21C8E13461A26677300B83C15695CF2BC97D753565AE075B6C9F87AA401F4915E8CB62A474A6E70210A454DAB5854563586A67122AB49F1817B2D985DF8B9084881489DF9E94D7A253BBE18649A42FC31123FCCB1C19D726936643E648BDA8BCC99255CB82CF6C5E0FE6036420482790FFD0F791E79120A4132ED4AD9516835C188DCFA2F6C56C32E5277239BDF47455B5A675673726FABF601B6829F21104A71A9B21EB8B2F1BAA72B472A04BF4F55ABADA171309780DA150C8E1722DC4927687D3820087DA9E95BF21563A1AC2CE69C630DEF0F864FFA666AC85C91548F655EAB8925C887AC92D15C0AC34CBF4945C104C23EACDB20A2B45FCAD6C471BF29645AF7D54BEABE01DED0D68C5EECF8258340C48DB19B2DDB86450F764604DC23F898A0C9D13B045C92B9D2D0C0C4EF66CDD2C03CD3ACF458513CC11AB909FF45B8B1999704051580D542AA2711916B4C186029C5C7CED0AACC00AAB70737EF621BC91C6FFDA8FD77502BCAA1810F158E5462A45B0DD882A1B6A731EE63394CE1C3599CC2ED9AD70D36B837C98FD7EE10BA811D5F5763CFF14D359CC1D544B128505F9571807AC7EC9884C62826BB75000EA44443D548977ACEE192AA07DF55A7A494C346AC2DE43B77167108F900E8ED385B91A435E62E5448041504829894BF921F6CE82900AC5B2ADCDE8C61396BFA05959AD4D2F2CF574B5D5D7D75B7C219DF5A0C73EFD02FC9CCB7CEBC6A8200815A2F7F62339879B0163891ACAA3969B10E86A2D37D6259229619F176191A3242709ACDE0A55B3DBDA41A7720C910C43693D3ABFC89EE1CB8AC96A84525ACC65591A68A06F906EAE440AAD665555AC8EE754E02055956AA9C87ADEFFAAF44E47512B1A50FAB754B4D023C1FA25D08A01962648B186BA526358D048B6A1A7061DEAC2B5B1FBEFBD833458F332930F800A99FC349DBE30D0D2D8B8822CA4F42770BE10F9049E20994A7B9ADAAADDA14AF2A9FE82044702C4EB59BFAF3F05D25F8E7A49AABE9182D886C713B2420E8051E277153255BC430E40E87B6524E1F26C732A66352BAE4F0FADE713D8DD244F5E585B965694C648911B432AC21E8043CF48AED48E4E00708144B438865203DA2134E054A22C0B93A32007813667589C2F9E3D251B4FC89E66FAF0F4A1B0EA175A8EE439CAE242A72D0AE1B90AE50A9B79390E04A179E50880C0C1F689C77E78D7F123847FD1E5D443908C8E6CEC00FC82EB5309B4040244391BFBB6626E2C53BCE2212BFEA1F47AB71CDA57BBAD9703CAE972F776B4513394B399786426974E55E836AA15A0A409186549C4538642F9A5A74FBB5D2E117342BC368467598AD38150AEE15D0ACED7A2B3865AEAAF54E13115084B35CC2A787BA5A1A17E727DE6455B67BA7DC9ADC057D180AA2419EB79923A52E82148DB532625648299F97D33729EDBFA7B5D6EBB889A28011E2DC049B96532CDC69618BE40FE48E39848C5A888A8B1A5F4A6E3F71BAD2EDDA55431AA6194C8E6D1BEF23A1EAF7703E8D762C31E80B0217BC0CE1E2069031A72223806632C3A3937F5CAD5C5D383B1F383A98969BDCA5226321245A0934ECDE75FB880D915F98F8ED95518B9D2E2652A0A04906FA1A801F1271E53817F253F3E5E824405F3270D7B44A407043F45232491C0FFCCC0C8BB62414BE7154A8148BB8969B384282DCF51B15F4C2E20FF4849C0C63354437F1045363901A89A2F8ECDECDBD18F652F69E92D4E984097AF06FE74F4FF1FB7273786E16A4E9E506BB3ABA92DB21853E06C15DACECC25A6E38BD67090664F1119C8808FBFBF1A4F3CF6F9BF8D8C8DEB1A0C3AD386CE2C924AE2B972CF1BEE585AC8305BACAD5EA6B7A2A34334F38498C8B550A76265D5AA6661E54355C31BBA78154D73F533EBE20EEAD7F4F12F8DFFA8F27AEDDD68CFA7AD7E5DB569BDEFACDE95C29724F351209294D1EA999D2E87706C791F2C7A925B8211E5AC1CEF6683C5F8EFDEF366287D568F9826895C05A7307FC61776D5B76817577B917202A8C0F18B539C5FF4F8259C00FA25D40287629E48838CFE8095317E070B8EC275F6FC0D6BB2D458D7186E6A0CD6D639D62CA9A1F1E544B6184BC62E0DCAF0E4E46CF9C614D5FE522E27174587CF54DC535320C2BA11416E79DB74C257134B8548243F3C5C9D2F585C1EB91705A4E014F9B99087074A4DACE40C442B01345694E9ED36614E8AD61AF98F54237A66A2CC8964CE50E08A359393BA45C72DE8E55D9F5BAC716309EDB6B8C92BB446DA7A26B0617553942FE3CAB8A8756AB4AF57E2E2FA21A14F7992D1F61ED8B790656234C1C26184829C9E3D804E44B8B3CDD3DD0EC089B22FFD5E06471616D9EA9295CBF01B0441B9C2A699896932CD9EBE6EBFDF9B584CE9538960A39954385CC35657709A3213D150A35BA7D48664A5828E6EA82AB57F14CEA3CBEDA84AB33218B2FEA158B795CF55A154D9FC7A3AABE97989189100414ADE58B9B308E8247C5BEE8B49D8DDC47C963E21DF6C5948277BDA9BAD4E97B41A1556CB2E823BE268EB5DDFBDEBF9A4A526A86544B7BEF82F7AFC325220F5586F90DD6AC1C97A158F8CC52B37435EBFC6C714163B923E0683CB605E1D99591D8958D345D3325100E002ADE7D58E5F7D0BE890AEB7750B8D5E1FDB57F3818A574CD58B198439E0C76D5C1363545E97D5D56E37C90318B95C32F1A4F0CBDFE5E8C0FA5B31E9C11F057756D685FA1C8ECA01449B04149EF4544464F9042D4DEBD3E707DEF9A6FB3DF52D2242AF41E67A97547FA795E55D95BA76A3F8CA85C4A5AB9585F333E0202DD76041B8EB6B77DE7664F0FA44111B28195A503A170AE1A6F39D492C617E02E4451A81D42EB6C16A49EA9036AF7CE4C6CD707368B95CDAB1A7EFCAA5EBA44098464091E7B587C3219D3AA182B3AED22CDB7B43A45FCFDDB44A572B5F15137DBDFCBDB5B92B0F6D07E879927E40544A4075FD2A69956249A9BA42270B6A1F6A9097F3564D5C68D02A89244414F93A48F9D5AB579992D38836D2699611D9EAC564B66DD79E7FCCF8313A5EEF34F02F7903F0D02FCAC695613462FB137279A4DF217A2AB0E12D223182442E7EE9C8DE59C1825D382EE622B3AC3C38D6D873A286A2C8763AC7B0829469598420A4D52EC19A1047C07041D02EE20A63A312F6564DA1E05A3A496AC40FC2940433252D56929A25B40F20D0722289798946145537502A60591F62C1ABA83B4A6A53811934C5CE5E1BDED2D940B5AA53E12BDB7BFD3DAE3FE075BA180E5E8C53A3CBFF7F0A7DAB888854CE86AAF0A68E8377DCF1DC932F33C0E5703AE62626912213196AACE7AB2967615D2470939F9C9C91B121D59996340EBDF7F905BBCBD2D4D14484EFEC6EBD726D04BF64A98351EF4A2598A2B9858F29565FC5B7A23213BC7E1A699F57E68D3644B15B27C42D76A7563BE81C4FF57D3D25D74E00ED99B5B6B1CAAFF49EB1847F1D2D95544782BDA87A0965461BDE537B800A8D8B2BDA8F8A6BAD4E5A0950903E1063F2439AFCA96B296D8ED7B5582B8F5FE606F8A98782B0D78AD787352D5FD590572A7A9AF8B9369C2E229899FC5CD4881E3FB662D5D5C9A75F94F4BBA2DFBB0176D3F108E93D931EB8F156913A5BCCF9C0BC9961676990DBF83CE5F161A97057C4501F1F35361BE22528C7491B9DFA41EC6985B02A0306B4BD9C984B5BA529461C5291F216B45C5595CA0BE5B0A9AD9D125E0AD05B77FC55D9BD4AB4D79C5B3647F339CBE62E0560AB27B9A5A8B161F5ABBF807E0CF4AE9686BAE3470F3FF7FDE7C7C7665AFBFB5014581C9F5C9A8F6229499C8CCE45B96E71D22A1EE2452CEAE722D3BDB0B0B97F9370EAD548D491DBF6FFFDA34F0A2E82201C9A348A29AD53FFD5A4A24E7FA8B0366EB56B6F15F0FAB5AD4C7BE9443A9DF7B67EED6FE521DA455AEF84EB6543E5DFF5F6C2ADCEC07A9124635C10E0B86BF29C1AEB4E38358303D78E1F3928FE2D1CB31AD30E9FAABA467BB8F167E6391565C7D7FBF857DB00EAF5258647449980D0A5947F987E15992A3504837516665E22F14915A83CAE6566941B4C24A395B671FE7AFDA17D419DAD9A34BE820BAA57F259E11E72D99818B2DACAA8C1510AE78B4E746459D94C48B1072C78EC89009E521493DFD2988F8242287DD9F596A7C22525CFB739DD67C6E6BA5A5B832DDD92CEE913DD3F135D9670660F06EA8F1DA8CE65D4745BE5C7B439D9CA6F48A9904C97066EAC5D1BAE427C2E9D6DEB687FF00DF75E7DEEEC33DF7BA665FFEE242481F812A1C2874E7226E7F13873D43632F6AE560FA183299AC568305C2326318802998C3D3D9DD08CBFF895EF0362D11EBE257DFCAA575B29767F0AB4AD74D3755E67E514DFE075774BED7063E1BB0122D2272145F0471DA9EB14D17566B436ADAA64CFC4F2FEFF52F71E0072DDD5D9F796E965677B5FAD7AB36CC94D963BD8141BB0890B2D40082590900A29A4BCBC210412134ACAEB1712F342420763C005F72ED972916C4956EFD2F63EBD97FD7EE7FCEF9D999556B670C17C9761BDDA9D9DB973EFBF9CF39CE73C8FAAC888909160CD72CD45DDE489CDCFB621606A3132D8C20B6CF23410342E5A56A5B45819082288FF6A1CAFE90E5057181E15EF0484524627B9D9C5F1E95924C8110E224945F84D30628753E2195555604B40E410173D35E6982FC42A2FA3D67D321B3BE287F295576B68480D0DCECE4C3391248C17F176A7D31F98F55383A3E7107C5534CD08F4E58691FD1A716D5B28413B112C6847184E5EFFADBF7CF4C6F7DCC054B079FF762E78C2611245662F150CAC0C1563D5864079488FB98C9812B33D7B6CA0B8634FFDE44C2D28AD8899D2485DC011E8BAB7BDB9295FF3D00FEF6C5EB2884699E989294AB9E3931378B78AACBC50A0A5A187CF3539368E5E35BA9AC056464B98F738FBACE533E1C4A6ADFB5153E069D6F551591B0BC8A9E899D8C9AD1DF154522C19BBD60C314FB0E120FB03DA3FB6FE651763AD2F7305A4CA6DE3D235280C2CA5B41B59BB72039A464A225AEAF0DCF3E0436F587F81A9A9F1E7B8A0FA9B9A2291584BFFA21341353D8CD17CE573BCDCE3E54F802A4860BE4CDCDC023AB3C080C6A6674771E91A8069590A47E9036432882437B79F6D5CE5A3A53C2C65824C7C643231326E1A97E69B5476E46DE77082E66BF7B490AF3ABA0B1459339260888F5C69D6D5D84CECE5C33811D21B8D387C60C51C8401812C7B3E6BC9482843460680FA9BF170B4F696BA571E199F59B166AD8A1C4AC6761290520E73CCB258AAA1B8BB6C21282466AC4C4B987968D9CAEEC7DD4FA5B32FEC720C8C10DB5AA80A3FE75449542862144A97AD3FF79C858BEFF8CE2F26E32911AD7638C7A7C3ED1D2D9A6F208128AA863CF9F891239D3DAD94B593098C97A6E2090C84D2AC236F7BFBA568783DFDEC76D3305A1996C613C44E782AE3B392C956854046E3636ECA52C6422B0F7BC457C019F97F193CB5DB8D6D7160598768F3F4E3A726FBB01D8959D50D2A2323A39348DB2F5D8829A521BFCA1993E3155D812A946ACEE82AA726AF64F473BCB21DA06AF8EB972A8CCD1E1CC5446A763A329B48D6C0E91F9D10493DEAB8E4A08914C20CECF5AC8B52C765854865E8856D5DB3D283384F9586F53C47550E4AAC232D607409F52CA8C3B406A5F458221315F70D572824069DF45B92280B4195428C904FF9863ABC4084A287636319E20AC042A5228DF4E7E6538F6DDBBB66C50A0C710DF1DD2E98CDFD9CE6B32B39619636FC64A2188DE20D53C41E8F4734524AC409F7F3131385FD07DC19784A45FC95647A64732C0185589CD99E9D894AC05B53DBDDD27CC9DAB59393D1AD070E35350410A36E6D6E62D342DD4892638A1EA8374F8F373635D88B7A29168FA673E960A3D71B709F79D662CEE5173FB97BFFDE4376278D505D214594E52D2B497005D12C2703F6A7AB44ED558F136FBD457BAB5E0ECCB057C8D614042CB440B62FC1432B134C20674D8E1D2E12FEC03F7CEE735FF8AB4F9760F29A498530B0CB199E9A7204319FAEC470D523E0372404AA2C0973AF84BD5633D0C7670A91449122EC74B89EAA124C042B929CF5C09C53A6327A18CC8A422223613AE2F1F893EAE03E9DB76784C98B20A0B080DB5F9BDEF30221389039092E06B71455E84A2663161D45188228E4088AAA6DAF9ABCE9B830B03642880843304FA477DE319BBCF9AB5FFDE0FBDEA5B604863E690DA1AA69207FA5B71469BA546A7884FD6D162D9678BC94628B931D80C910D9F864F199E7EA5905C493225F84EF89D92D661CDABE0C51C4EB81C420C47D60B1CEF6D6DF79F7BBD6AD3D3B91C9378702FB77EF2656A4B2410C96A3717268B8A3334423B69CBB92E042CD415FD01D6CC48399FAA1BBB3B7E3CAB75E7EDFFD9BB63DBF537BF48C818575A7CA250BEBA3D875DCEA4B5A892C6DF8ED64A0CF8CEEF2C651FE99947F5561CF4A418CFD8CBCAFE59DA58120D2C6943374C6D359E76EBCF93F6EDEB5F9A94BD69F57DE97C463DCEB9B1E9BEA5C211580AA4A7365FA19CDB9577EBCFA3980599C89F2B172A91B9BAE4115501A264BB958928D3E3734919F8880CC480FBBA8DDE5EA57AF80F45B88A5B2F1B4FF1D57F8962EA09865C7FCF36602550757980CB8B654DFD96DA4C3730303E080CC2344D8313B918612CA64AA23698680B52E09DD44210E520F8BD6899755AD2B281A9AE469D333D1A9E9E88AA56860C98EA00940857A559D07C808C29720C6E74DB00F406656571B31B691540E23FEA9995ACCA8A7C3A5681CD5F87C2C9E230F9E8E14890311F713EEA7E2AF0AB2E0D448DA0E5B1433ED77BFEF86F7BFF706D2DEE4D4141F04DDD5A343435DDD2D0C7DACD02408A66B5F5A766579E5FCFD41DC3EBC3DBD9D1FFCED778E4E84990306FFD5DA9C8DF59B2B60101D0BD3B401C9F261CD81AADCAB9226D8CC952A444C55EAA4115C24F6EB513310744FDE572B7155CC4D8B2C2056713282C9F51A5F7861D7BFFEEBD73E72C9956A756A934F15EFAE09220D65C9FE549D8B1CFAE72FDE0F79BAC76B91040B0D21B5637B62D393EE744E068EF8F9205D9513E83353C80E4FE29B24AA97480345E282E2C753F17DC793F1042D2FC20653AFC897C69888A219FD70A60A0557ABB851C85B8F8F09C50D5F0BF8FD62FA3E5B1F140EADB69E59260E7227690DD7A28C4DF994E81F22906AD0CA8EF0FC9EA36FBFF2CA6674DDAC5629BB2A57B9EF76F423FE3192A7A2548C86199F932E16B8CDC9F054261E2706AC5FD8330EDB19E323067D2AC540A1FA2182EFF114A631E6465A6AD82CD8B89ED4D57636364D65323DBD3DCD2D2DF879C7A6A6D323430952C274B2BD0F9B8206835319C4456873CA8B8283A2C62D682F952EBBE81CAEF9C30F3D01DA26023B556E2E959458B6AF728E6EC7B255EB7E252330873573E6A0C0A69F82CB4D6FE7B6AD5BEEFAC54FA74606328928DB94D4258DA64B790997B23E809FD86AB93D8D870F1DBBF69A6BFEEE339FA111808654391F8102E58F5289B4AF972D7DBEF4D2CA337E13EA00A7D82829BB16A1467777175A1A898DE5430BE6EE05DED6E6431189E096E466226C87B9FB1F9F8D26D90E1CD1F8D8C34FA66722A687EB5487DE38EBFB62345C4BA701FD68AA18133974C09188494A2DD2CAC5DA6486061C211B1A4311AD89CA3A6EF83F6E088922B46F9A43644A685F8E2075B335070E0FBDF5EAB74A4553A2D50A79789E1333375797AD027A75A41DB1987BD162CFF2958E85FDF5BDBDEE33CF687AF76F39DE7061B4B698990ED3AB496482E81D2A7162DC44F12F1C2F4C46E083C48E0C96681BAAAF3D3C38B8FCEC3370D71225943A3C68B299F0CCE4E474576F3BB387E10463D4547925D0179B3AC953DC1E987E38AB8AC41873E0AC33572CEAEFB9EFDE47983998074B00661A6BCA25DC4A126BF930D89C87AA91565531B0E2267BD72807C0B82C6C7AFCE17B7F793B17E0C28BD637343631BECBDB8EFE895D73D4792746EC4E3F92CF1FFADDDFBDE6DA6B3FF03BBFE39424D0729E147C8EDE8664BA77F59ACAE53D650CF04A8F973F01E64D8DCC6F58839BD6AD75F47435BFFFFA425F4FBD973648071E2DF463499F24B540B0BD709C2041659B6A2181AAB48F337AF7E364C6D8499CC6FC96A5773693927BE4974A333F8AEEDE538729A2999A62A143AA999330541C84A0164ABF8BF192D04C57C138BE4A090CD84456770BF82B16B7EE1B5DB468B1DC5ED13633A8830D3F55178FE4121A3D29E94097265C34B81A4299A949EC025C4D4DF5388C34853C0BBA1ACE5CD572FD35518F2B3C36111B1A07A7128B79F29FE96861325C8CC433E3D3F59DB0C41BA95AEC1C1B58B3B0378FE75F3AC3993337D918B73CBFA3ADA3195763D65A61718828B4309435D915A92D16DDA6463FC2163873157329665A575BE88275AB9E7FFAB9C8F8443115872122BB813216AA30A132B46FDA67AD8A5685D4529D3528C7C83C0C19C81435579FB1EAFA1B6E3863CD19FE6083885BA82A9D3D772C0AA9750DB9F04ECF6CD1F9A94F7D8A97FDE217FF8978B8D1179474CC0044F2DC3A674B87B8F45A6F7AC2F2674A89AF4E25EC5560839E8013D800429DBBA59991D1F0AEAB8BAB96201B516A6B293506B14B11B20D14651E94EF85D0278E2F6079D3C57CE08A8B9A17F50A4BD6BAE0F31D561586767B925DC13B3DEAC6C5519F4E22636A1CFC796BD43F9D6D6D64BDC6145B068B660D1634A8B7D9720414C3036D59521863DFE1E1E68EDE96E666ED1DA99442E7927FAAE263163CE8EFE0B92ABF056F82C6E1A99DBB44B3560261059CC0F542FEAE1BDF81EB547171EFC8C123E989A9DC74381B8B63DC5CC04DC3EFF1F675B1FB0C46A73B7ADB3A10FB475A2B20867D0C2874023843C57F50D7E1DA316345E24EDD1424CA50614F2AEE85C909B4DD93C54CB2904D605888DBED79672D1F3874687274827EB3423C065A65E50356065FBE775515AEB9296F45E9CAC0A916F2211E1BE066AC5622FACB56ACC409B996AA4B6A97C2F482D913490C0E9CA1BFFECC67363EB6F1B6DB6E0B3586F8C1E0C1233550864D5E8B845E36E7EFC34BD3CA7EAB878249AF2B36BFAFF8780DB8409592B82CA8CEE650E307AF295D724EEB5F7CB8E5F7DF5DF288C79621212A330299DC14F27239BFBFEFCA4B3BAFBC9059A14278F24AE6D5AA0FFBD6C8ED28C62332BAD0FB0CAA45734D4DFC99CDAC3D568B26FEE9D0DE680D11D138A69C04F7C226132F33618556C03EE39B4BA4A4C92829F05D1B775C7511D6C2A4C562D15559F24F06826C3298D56B2B3C1609AA680962FED1CE6B3389CDFF44C982E8A5E38D17767FE45DF9DE763CFCBCCBFB3D179CE9BDECFCC6375D52BFB4BF76616FA0A5F9A3D7BF5326271E47F4822ABF369D4A271319926AD1B516153C554C930C588DD5241390865B31C4C7C808728D283D1B6B1BC1A2972DEA894E8C1D3D78443C112253D2746B25C79A031818BF7A6257DD556BB05BC1517535CDD8C46B63909D1A97F9A5C625D51AC106F757A9598FB3E13BFFF3DD871F7CF8BEFBEFEBEEE9E6B73C09AB664ABB7604549A980A772C595A1DA255DF7D9BEAF7EA1CAF090A545DAC95DCDFE56CBFEE4A0762A00D3EE79AE5507460C8A527C3B1F1A9E1FD87278E0E1C1F9B082EE8756F38C319C427C6EEDB98FF435AB743C449250198AD97F847A43238A27BF7A326CF1817BF1986405BAB90234C9DDF2C5F4618903183219CC9777578AAF8AEB6E6683FCDA34FED5ED9D7092C2A3CF5720B7CF9839D0C87AA34BC14EFCC26AF9C394FBD73E6853DCAC3B44931C0C22ADB4F04484AD470E9F9AE2B37D45D726EDDB96B1C6B57D62373B464615D677B1C04802CD9E7E353C099F1932AD4D54D4E8693A434284FEA8BDB4009B19B70E07871752970777434AB1A1DD2514E17E02AF4507E29158ED282EEF646BF6BE0C8311A83F289A8B84E68B9BA2A31A84238AB3E5D35EA605D2F3B61600E1AB5CA32DD4EFFC8E23D5490257D4D024D42FF1776ECFACA976EBAF7BE7BFB162CB0F28F52F14C7AC44454535E46E4D0BD01A967CF17F35BF3E914C9F1CB385E132A44395EB006B1B55E30D33385A5EDC35DA1C399E4442A71E4D8B163878E4462F1E0E27EFF3B2E76B4344A11C5E69CCD3FC7ED45A048B28B3A10D220CD2299CD918D46821048C4ECDE01DD3F168F3BDB5A00434543C85836ABD092B845207828ED2CB6B293EA7ECA3D52CAEEF123A32B3B7B7A972C1335C239D7A71CFC9C3003746954512DA9F3834E326D088219BBF9627A644C1029728C62810C383736EE42EE8121499D8A7485F909330C970064D0E981E2C51C8E2C6C50EC98E083F8FD4812AD5EB698C91C89A716F476061B3CDAE62517D440A7C29196163009E0CCF5964E73D174B37A935CA238266A300CCA60C087B6C5C8C02004C402F6255AA5D6BEE1720F83A5D057AE14575F7A8B24611581E5642DDDDAAA12A1B2D2E535AB2A0FD60B32557E79C79D1F79CF7BBEFEC94FF4F52FB02C2144C72CEB03D712015DA1A0501BF477F7EAFB9D72997FB546FF6B3501382A61A5B54632000A589CB7AD5CBAE113EF5BFF571FEDFDC8F52BFEF877CEFBDC9F2DFDCCC7177CE25DF54D0D928F92F7D8A4C5938F4A9999752226F18F144855A68163E29967BC4594FE29AD04A53584164A63DC222F68C4BEC1A3B4BD46A59EF5072CA86A1D2E7D0222E349556ED3435BD6AE5E0E782AB236279E863D2A4EC851782D51AA7133946BE973B7B8A5F5FE5068766068FAD9E7C79F787AE6E92DF90387026EAF8E3519B7665950313C914A29130C3003EDEEEFA6839609C0D0BEEE231F4C38BC59F80E0C228C93B4CC671A24D541595483A095832D5A929FAA1F4CA0652E185D0D5436503DC2DD43F293BADADEAEB658781A27F31C663D68773258CD266065C3568E6B1A696CDB27DD01CB9970B911BE924194696F84451A17E95FD90AF9921D1CDE77E0FFFEDDE7BEF9F6AB2EE8EF42475FE4C405C22AA6441E948F260AD2BCC6F0C8C482B3CE3AB1DAF25A8140AFD904B02E924671EAB74B792827DCAF74864A1048398B22852A1A9FD0C6C13F91A12FE28A1AB49E7A965B3F431DA82611A3A85CD7D054FE93FA548AAD582DBA8A856C0E8F5B63FEA60D5C3254AC7D457B0AF42F64F828395BB8968C1B4E343105C126B5E1A2F30AA6A1DB3AAAC2BAF9623389C4895860F549FF279F45B66F23E7EBF505422E6F6B20D41C6AE27BED593671A158F0B1B44BCBAC51FFD4E593E530887952A8B184B8863494061EBAF7D1E18181FE952B1945B86EA6690516D01082AD185982C4606549638516BC66E960A6BB533BEBD183112721CED5451E4DDFB0C7A3066AE286D4869F244D9389180FB202049CC91C4CDD4A2D5085BC64183955697155334055D9A08C4928D42919454523CEB4250BFBC4B9ED89A7FFEB939FFAE76BAE5EE0F1E623E0514C0011F8E2F993870FA189A93EB97CA682A7A7CFA639CCBFD0BF8ACB3FC78913A0FCB97ED5634E7E542650A9C4230D22AC5B3014A88F4A270A0B1E913A5FB9D66A3F2F01ACE8A3A8FFCF8BCC7D334858DD2353E84EA272E56D972CCA3AA646D8433414A7DE9AA5B8C63493ACD438AC6837AB1C46F9479B12F46D641350C38E4C0E087F3A36939B6DEB5FA027A32F3BDF8233E737DAA2409F1AAD3682878A8AB28D52180E73797934ABAC5937B50B04C12F79484D5761482E553ADD00FB08FEA93F54E30D50E200DD9C094756BCF52A91AA255D11792CAC02A45B16E6382E0224F87804AAB98EA803B5B6B7402FE7218C09F5DD314D2DD2F92366D0349789AE370193AB8E827D042722B0D1522649D98138C424331AE89B392078C15CF4BF523FB6E0346D45D2E283EC244645C8EA306377727A1EBDFDBE1F7EFAB39FBCFE9D6BAEB8828814C768319356717CBE4647873913F35ED0B9837DFDA701B5BF6AC79C097042BA7DFA473531A08A2F4E3408F9817E948CB0FF21FCA4650EE82536A994287F8B22951A0A9D087DCEA9C8549F12D72C22D7D7DF40F77DF9A79E644C7A03A8B5C1856E6EAA09855C88C9E8E8A7FE60F788E8C097732061050335DAB5224B2945DC6CEEF8E078DFAAD5417055D13F3CE1FACF773B2A68B9DDC22F1A164E2C95A4CFB5BA13C5945FADE85A430751BF53E917F58A95BC209DE017A18ECE1A74449C348C7B0BC2CB76067A80865AE175B3A68BD7A9BA856866617CD2698B0143444641669779038DCEEB290E68A39CEE76D84EFAE8C833264896DF2352F523070E4E8E8CA1A63A8BB332BC5A6271B5CDABD800DB3C684B68A23CFA75D0AB6AB76E1DB4E11B115F3136D7084ABBA06EFFF68F7EF8BFFFE5FDEBD67520D6B17507B2A6F5D4A83145367F8803FAD434669BDAEF095138D2BD14FCE7A547E04977E2651EF38540D6227CBA871DE697C7BD8E6C49E6F340F50CFD02C460286BC924A420F16F108F5E01C7D54B51145FABD89D279613E681FF098229AAE13F40AF903D67081DEA5261A27F706941041B413F0DA88CE78844D85A64D15B6840581189AAAAF1A83522FBD2AE23A3EB2FBE506686E6E266ED3347A51250755265D69F4506D3328FC472DA832F39AEB6EC54F6550B5494AD51D66C0B0C9617E25A898504431BD33121CC483C0F77CEDBD0B078DDBA4438CCA6A74A421E687DACFA2ADD6F699EB8034DC1B63E5F4B8FCBDF8CEC114DD7463E8879CEA5221CCA2192974C66A371D819764CAFF84B36DBD3D23471F4C8CE1D7BE023CA0448C54BB119C330B753615DD594D7AF529BAA596B5498740957344922286B6ED88D10C4A3F7FDF08EC7BEF1DF1F39F7ECD55DDDA5E1B1C8E1A32E8F87AA5F616844C5608B803EC989B1D5179C4F080773A5087C6C6CBFE61B7F27179D5EF6510E55E60A7B9C62729D10DE9C18ED94CB728618C327C9E10F9316B80D978744BC3833539A9AC94DCE64A10AC3060B0B19CEB40755F129EC00FD843AEB095B13033A1E6550D32B847848F909D103FBB0046E58D6C760872046740C84AF3E0102B768D02FDBB57AC9009E4B4B99462276519379836C6D343E9977B4B5B5CA2BEA9FCC536E3CC58D2997306571352A9124C4883A8A409FF51433EC6D76BEF9B4F6FC91562F94D1E069FB44CB5227256F8E8C171965737B270C8BA943872980A97C85808F2A7CA5EDCC56430FCCE2066F736743477FA07BA9B77D91BBA5CFD5D4ED0875D706DA8B35688696D2F0C4C72733B1A84235E4D36ABF5053B3A2B7B3B1943FB2F70041A018CB122C69538F5224CCA96BAD399BA585953FB4E152AE8FD92B349EB12EA696FE980C85D2C33FBDFBD1AF7FFB8FDF78F9B94B168B35580D92990D483A1712A9C2F65D72CAFA2794AEEB0A59662AF98F97DDAF3CA87E2DC7297C82F5A81AE2E5D8A6421AA9643FF20C89F509CB596CF2A9642E112F2449B0A4F65E8A4412478F0FEE3F906D6EAE5BB2786CFFC15A966421C6892815FC67E3FDA6D5DBB91074F93CCA9743A5E58BE129C902038D220E6C1FD9B111C4A2F05E2EC1366298A346417FBA3ABD591C06868CD7C543C83FF24ED25BC843F403491913E9EC746C7860BC6BF96AF1595219CDF92FD829169F0A594606A6181088BA1140BE9813EB8533B682E683A81B178A202AEEA7118AF2C69088122378DBD74226094DCEAD1DFE4020158D7A42C1D6DE05A29D6AECF5B52F14423172A592B118629FEEBED2E7209294285586A812BA43ADDE8E5E57634B68F18AF6B3D7F3BD5C73BACC34EC1423DF42A1C9EFED0EFA870F1E41B28E949A2C813C9B48C65ED46775F49358B30BA901B6954931DC59CB245E525E9D507AE8D020463DFEDCF68377DEFF97D75DD38E1E2B01B02A5F48E13399E2D6CC0E8EE7E81694924806F081D08095732212ED597586BDDBFF3A0E83E09EC661902CCE3E93615117E84D964F72770BBA52E0259D4BE16411CFD3140BED24C1D7E46C3C9E99988A3B9DFDD75FD772F69988982373A7BC71A5A3098546A47EE461F140AAD857D5688BCE31592561B3A453A47765FA83F5FB990956F6E4C81428FFAC032168881274CA0BB06098CFE2F5A27EDA66C312B174F21361CC73C3722814B1173FBDEBF045575C09D346D259831499493EE75C5E74FBB5E680285D4A2C24A82E9AE785F0F48C2CE5C684426B0512230119D91016D185A8018AA0BEDD51AE439CEDAB83415F53938CC75D75A54C781AC53B72155147F66160E3125D6EF25AD1F1B558AB968CBA92942C67172992799DED1D358186BA60A3B3ABD7DDDDEF6C6EAFF305B439CEA17393A15CE8EF6A1F3A32F0A5AF7E736A2A02625A86807845384EDE40D003C7511C80B49DC2EEDDD2E0C720A7201C997C2432B8ED858DDFFDC507DFF4463F9E6B4D01475BA32C76DAC70E0C489003F9257EFB7DFC296B25F9BA2E9FF9D9E63672F472A3D96B7A94EFE2A95D22CDA10BBF8CF67C3EB2734FECB1A7C30F6C1ABEFBE1D1479F1A7B6C73261A358801672F314F2A411A87E709ED7F583A1563B1CCE4540601F0B75C89E334E6A42C14E8338B3238F131851E3110404B147D4CE9F7B3467D15F9FCC41C836B9C8A8BC41B36A4D01FAA2E5266DF0E02D2C4C02418BC347F29AB161929A1D10B71AC7A045B98BBEC0A828BD7239A4EB330A23F0FEE3C0EF798958A5165CBE39C34E65F5C6BB87CFD6C8505DEA7E07204BB3B3DAD4DF827A0165C430334BE04F81C1A797B53D7A47C2796C9556E9322FA48937BD20B465C53B3F7D9671A82E292294DC03A5B4436B02CC066BA6C45C25F8DEBB0DC92BE1F91C2350A2522C90D6156D52685BDE7F583203B9A5B3D5D3DDEEE1E67830006A0928CC3E58BFADEBC76E997BF74F3ADB7DD6BC9FB683DCB98C65B1E605AF92E379AE9E5D1E087AD2411DFFBC4338F7CFFEE1BDE70A9DA9449B8C71D772037AF99713D72DF84A68081078FA79EDECA6FA5EB857B978837D2D2F4EB5AFBCB77F5C59DE2ADFA1FAD2DD38F6E4E3EB92D7D78B02E9CF047939EF169676916B74A5B314FF132CD90C05C0CD049EE4B9B54EBBAB59013E064129D0BEA2966780E518D16F174D5FD5452CBA9E80F16A26AC31018CB4876150821465D1E97A48F8152363A93A29A3A0B54224556965B0DF4558ACCD666B03909E6F38B02B7C412C50420F4ECC454D4D9B5B011516B93C89EC0FFB1819097BEA6E562813680F3497D6DADAE96A65A467C4B535D73637D73A383EF6573A8485011C9081634770FE4258607075ADBDA9974E1E1A196CE165F63830F8D3AFC5BEDA9A8B18C35C33598541D5511A695D757EAABAD0A6ACC8ECC37C222A25A875CB384A0CE86061C5D7D582FBA9CA96474C9E2BE2F7EFAC3C5F0C427FFF0AF81C59CC69CD4F8D508F89C0572D03296213B54D607B84F0FFEF7CFB6FEE2F1EB2FBB9816105B498928492AF4CA7A2895420D859626F244BA886A363D531C1F37FA98D97A776B8F1480CD557EE569EE691EF34F00FB3E4B469F9D090FDD7EDFF453DBB2E1183D7BA014D2F0856DF79AE5E5F1AA6E49E2D82188B8D213F95BEC6E7DBE40361C31C0B26185B9DA9A9900C217B0A4AFAC16EA72AFD1290FE60FD2C76C2FB9ACA839A84688F94DF2E01E4A6AD999A4B7ABDDD3D92ABEE4E6361BE45F04C90CBFA8A26A6EC6295B443E912B24E8519EDDBCF7F8D2D56B92913083409BAD4E001BEC5AC2E9C0C4E673A8C300718EB8DA048322091CE06B507203B312977387B27D9D853155C615210191D1CCC4786C640856683A95A4A62BE22E96468B95765BA72A9ACC225F27B893A5C569F44EF46170585A08CC7A20043AA788C47092222E26B813AFEC26CEC1C3AABEF6FAAB2FFBF035977EFCA37FF0852F7E8DB0508A89246039A40C241350F4B36C852EE79D4B657FF4CFB71CDDBCF3BD57BFC9E7A6A75F9C92AD4F23C6E368F489311CBDA38DBFFF21C7C23EAADA445393CF3CE76FA1C7CD19EC15F8FF95ACFF7352D6D33E4EBD03E8A249475F7ADBAE14C65EADADC1C64617620548F53BEA0B0D014F0B028ED662256661B463609FE822A4C15F082AAF17043B3F3419DDB8457C34157814B5C840B064F8F772B74421DE96F09E67D2CB872943AB35B3B9A931EC8FB2C582B7B3B7FA83C28266372EA58BC2A7309AC32CFC548AC448CC5030D57FA9729124C7630943639E6953CA15E998BCFFB903375CFB0EE8960D9D3DEA297212325B7EC717BDC6559F4246368A37E47CA2ECCBAE2296A3EA5A67613F15AA989D4557BD5D4D0D46912D6D6D7C93842C502C849A70A7E4D2D9A09959FF45775F278F313B32DAFF2AAE666499CB4ED7A621D230186431E6FA481106A096045ABEAA4E2D570262AC0BA57B6ED0DA3396FFE43F3E377AF8E0FBDEFFF1237BF646A7A77433956AB1F5D0954D780CE9EC4FBEFCFFC6B71FF8ED6BAF262FE14DD0EED40C470AC346C95E0C016899999C4A3DFE78C34567882AA8DF7B7CDFE1C5EBCE484C8CA33DFC6B437EAA8F534D003D95D9526CF7BED4B1A150A041EAED585AA89B3E1FBABEB5B9FA16AA53984BA42F8221078F50634D20181F9F2C2170393645B082EA954AD0D67BC483DA33CB4B79613BFAF09BB0B7FE173DA8FE523C8FCF1049395A3AA87F55D78A4BD3E3930787F04B141F0D557F50F73ED10655D8C5B2D8D2DE3D6D7FD4FA2F01593E962DC4D2145667228960F7C29EEE6E6D9F919EB5395BFBE940A155C71C54B46C3A5D05709D30D0CB17B27AFE68C653EAE896527762669ACD35100A38499D75D550C69B10DF44B09AE12EDD086E19CA95A05F73629D1BF6C66717E3CA0F254249D143FA1918FD924FE3F020D8A74E5D04F3684EBAE96FFFE4CA0DEB3FF47B7FF9E05DF74D0C0D22B6A7228D3AFAC9466A6AC2D3E1EFFCF37F4D3CB7F783BF75950FE90DC1A0648346C1DB925E078B2352A50AC46C71D4A7F7EE7636B8FCE72E41B02F3C21B1743C1C0F0A01CE028B5F61FCF32B4DA379264039096772D3B617191EF78B1D9FC52400E814567A474BD944CD1459356793523B26D2E8E83307024B1605CF58E66DF0250F1D47FB006BCFF1ADDBDC2006C017681BF2600E00172ABFF7E4F0A72ADC9047213A2DEDBFD9ACAF5B5011AB6AA047E6E0FEC8B1B11A71C1308E0CB20900AD4A61465BC094EEAB84055339327DB07898C7A182B180D56E3F3070D53BAF83629641CA81CDDD527E9EB33C576ECB8B876AD573A0FA79957AD969DD5FB9F8124406F87E7A6CACABB70363014052283D180DB2484B1EACEBB4BC9BDD8A60C4FECBB17ED5DB55BDA945E7B19201D928888564F258AFC38BAB6D020567978BEE5697F79B3FBCEDD2B5E7FCCF8FEFFDC6B77E7AFCF00076E8486103926653A987EF7AF81F3FF1D99917F6BDFDF20B888F69DE74A02449904C1F2605505066C27D6977146D24BEBADB9AE9F2045575B60573C53422C1D948CCDBDE773AD7E425AFF9CB2893BD5808C48D86BAEF47CC482F9A7030A94C9208850281AEF6393B78398817844C914DEE504383A3BBDDB7A477ECA1C7F6FEE4677B7EF463472AE1EBEAAEC1FEC8ED65E8AB2496EDB4FE621B9194D599004464389CB244D95555F9422D337EE098C7E7730689AD456E4046B4C70BB669B94A58B670158558F94B5E11580A396AC41652D98D7B0696AD598D95129FDAE531624C55F18FF5DF7966E9DC00740E8461FDE54983FE256F8F9D44CB8CD5D5A1862ACA82C53D809ECAB3D0AF46D9C5CA1CACB7B5544EAA874355E5790E9AA6F3D954C54565D61887D9D23D2AE9ACF8AC96D7A6D305DA307FEFC6EBFFFD2FFEA2A1E4F9D81F7EF6EBB7FC646460EC894737FFE9EFFFEDD73EFFEF2B1B43D75D7169301890CC808ED0F3D653D7A603339B4C10428B3C8CAEFDF29E587192C10B6C5AAC0BB852B5B9D6D5AB93078FCD0E0C18F7A75F71F4BE0AC7A9079F5E3EA4DBB0ACD2C1A3513575BB80A7F9D2F542F7AD64AE5634647E629E2CD714797EF4D81CF55DEB56F72DEE5F72FEB9C185FD3504C41828E151A7EBB1FDA7A7F8D8E69EA1241399ACCDA628C4F817AFAA7779AB9F123F7228BA778FB72120AEEB24BB2E27668F746A20336711D2AD93979ABDCE62B1572941D1988256C94FEBA2B1F4C2F3D637B5B7295EC41D17F1743B86A9AC2CD6491AD4F2A4D5BA4C14FB559B554FCEDB4EF827567F53478F061B4543C9363DB5C22AD3E76EEACA963FBB1155AB006795332C172FCDE7329FD1ACF46A14C945632B206D30CE08963C09A1ED77BE77EB95E79E2B967BB3A52BCE5DF7858F7ED43193FE9DF7FFE9C73FF9F707F71FFFFDB75CB961CD2A3262732BA914851FB95F0D9A383DE1F798122940B934BC8482A2E427569D45A87C33F158FFC5EB1DA1405D2A153F74F0E45DF3D770BCC8EA2B894BE7BA353375405F82FAA2AD91E96E6B7ED3C52EB0C26A99B413635F03E4E918A2FEDAD65CDFD156DBDA02F20D0C22C2CE1E427FF2217BF4BFE43992394D8FD2FE5BC2D7A2BDEF0443E6F0BE7D22EB4CA329A257B06854C5C434E359F09FDC54A9517217CC6DA7EE9B998C017C78DCE8D17B8E4F44D65EF14656531171120D36A785C554F601F3C5FA8FBD2F940F6B9ADA74804A25D37E9AE9082953E4E7D9B8E7FD897963C4A25393E334DD1ADD6633F48D4987714528ABCF96FB54ACDA9D9D5C54A31A9553B323250B29525D48268070D8C4BBC9385C704D660F1CD87FDEB2A591F00C11287D076D6D2D575EB4E18B7FFCFB6F3D67ED17DF77E342B1EF550F3823B85D3B0BE902FC879D993E0443B2D23257417437DCCE625A9CF14D874834936D5EBC2078C13959B72BB36F3F8A322F39165EF5639E0950358E6B5D7EFFC20FDCE0B862FDECFA335C6FBCA0FDF2F510DFAB1CD4CC7FACC3240FE5DAA9694F92703F187406830E1EF8D2D1E8AD62A066B2BFF4E837CDEF98BE802BD3FD58E994B3FE34BC754B6377972BD4208887D8FC0B9607554ECA9F16EA220A084211D2114448CAED22A7E715B83344B10727A37DCB4582389DC46A05513EB7BD9B952FC689018CFD192B4941D5D4B0B821B62EB4F23FCB88C13C9FF084D8D506D6EC579D3874C8E7A8A5795CD32C2D6311F950FD55D128AB445E9987D6EA531EFD554DBA15028BD9AAEDFCD8920CB3F6018793067CA9A0AB250FBF4D26528BBABB5DA4E142B716CB35E0CB50307403A666ADCDA4091EBFD785F1A60A1D7086B28C30E2B369A747ECA281AD4C1106E347083FA4C8A653221B8F7B3A5A67F36932B7C64BCE07F38AECD8F1EB8F825E2204E244DD58572E5BDC7CC68A602FC6AE2E21905430EC5385B0D25FA2A050508A2C0D8D4ED43260AE532BA8501E5E0A67B1EBF085E80CF44F6858EE96AEAACA837C856295DDBBA7B9AFCFE03646F59F2192CDE5A5DE4C5339134047809287EB214720BB22919C6CCEB23567E3294FFF826053233FC8A553A49D9C616502574E700E44531EAD1C99F05474F78EE4F070A53BCAA82D548227EBAB756948B23369EE37E20722274A42198BA95A6816AA6C59AE1CB9C8ECB123D923479EF9CEF7D79E7BA6B82851460533907E03E977945AAFC51A2AFBA8965D63CB675E99C63609AF121DE9AA5F5EFE4DC98C458486D280848FBACFCC44137BF71F5AD4DB6D082F66032135C924E2010C6978801449478E989D88B8BF528510749140DF5849098515177EB935908284FFA375D3C454A471415B76665874701B02DE352B0B8383D9E999CA8E75AAC1F12B1E2F5E1F78092A44B5D7B11040E6F8E2CF19BFD56FA031AA4A5D2257E9C72D8FB28804FDE57DE3B4221F6B192DE56726840357EFF2B5F79C10601F79F491DEE6502A99C8154B75B00CB4C9378BE6A6860A6AE965B5A9CB1B2A978EBE9C1C42ED88CF21579ECD0F0D8F2F38F73CADF2C082AC01EF327E5C365259759AF3C53D1C2E7F08F4AB667A42EA74E5278AC3A9AC738C1AB44F52478E8FFDF0E7D3DFBD35F7F8E6EC038F66EF7F2CF3E0E399071EC9DCFF70F68187D3F73E947D7453F6F127339B9E4A6FDE92D8B8397CF77DB19FDF517CE2A9D1FB1F3CF8F063C1067F221E75C1A410912FBD74C4D674D809D1C9AC4792BD5426ED1CE4EAE4F3AEC2F9ECCFA69EBE667BE12DC043BDFC93578F25B34117AE5679C62E7C38E13FB3BC93B022B8E2F5B286A06A0AF2E7E316AB1610311274208A656A366C8AD37013690FC5204B561E4954F03CCFE6C2B178C782A6C4C85ED5DDA8F72F5F52D7D11EDBB65D0BCCF642723A83E4458F977C8553EE00732E5B35843717AE3EC59FD997DEEE13A9844C2760E0A73A69D331CBE84FC66693E824CCBABBFAE10B9C0080469F78DCE574A6698DC79B5EF66B3552812B41F0A33B956E08560C200252A4018522BA3A3C84D75228EC1A9FEE5BBD5ACCB4E5BAD35258ED0433E7BD4E751071F9162F2FC1CE80CC5326C4A3F4BEFFF0E42D3F9CFAD2D7A7FEE12B897FB9D9F5D893F54F6F2D6EDC3CBB7D57CDE123358383C583876A8E1DAF1B1F7744666A07068A070EE476BC90DBB2B566CF1ECFF4B40F3CCAE18C4D4D35F475F6AD5CD8D4D3592FEDED868126347FBE2A25CD04EB76B86F2D7776AC6F351A5B977E9E74C3CADECBEE465C2EE35024E81C3BF62FEF7BF4A2D5AB33749C296994589EB274363C2D5A156E371F94AB6C4C9AC51B517AF3F5643410B54488B50A66086078BF8A078FBBAE9849671DB581109D0F845E8AC3D6D686CE5B9B8FC612680499C1F2E2D7FD348ED3993F2FC6057A91917AF24B579E591D28581FE54522E053BFB2CE83DCE4188389FDDFDFB368EEECAA4947C2750347B1087537858CE49B68814B9FBBB8BC906948359EC8D57AE7BAD4D84476728AEE41A410B85760735CEE4187BBB1A9890443F2579AEC4900ACE251F5F958B3F95427CCDB05172F119852393350A78E7DF55BA37FFECFE9073616F61E7046A3F56800F3E2F4A64C4D97904787278B903ADFA058489F745604D3E947A17D011F6095F9513FBCBADA9D3B775FF1DEAB3D01417835EB359D9CDA4E6001BB7A9B6CBDC32AC4C7728E9CB38A99F63493A854DDE07259C0ECDD8A876AB9BAAE7EEF81832BFB7AD8808DA12DAF9B88C4840ECA72333B1B40CF4298AC42AE158E96245DAAAF218802E5142BF1376990A6EA2A4B530BF49CAE6FF0F07750A2D08295DA0C43117FC3F5E744B7ED607F78153781F9F6EFCAF1D274E81343013B9ED22F2FFA5ED5860C2F7D8655AF692FFF0586482C2CAFE3C55BC1423FCBD368D737FFB3851EBF06080286F8A5140789F78D0CA8D6446DC7118654726C221F4F8042646231FA4B48C2C6A722BEFE851E0A0BCAEB12BE06C965394B994B4C3FF9F356FDA4FAF3D526F71E9C7D628B07C87E51AFE3F20B44233A974BA452D3F1D8E8CC34B5363356DC413FCFD6C05A1D65246290B670041DB40F051199F4BEC1A30B962D90465BA75B304E434437C6759550C75AE3AD84B88AF25161BE9E845654ED705577698E2DA7EC068D1EEF1BD6ADE356180D3A3059C8D85C2E967AB4BA0CF6CABC14CE0328051F04A16F26B352F44C96C5AAA46C5F71C6E6C3114D314D66DD8E504788F940525948CD882EA56A37B9DA5B3DDD9D319C365F8D4DE0047861DEE3575485285FDCF9E6C09C5150FED7E945FBF3BD17CD5F11049345FCB067A1E0CA5AD037BF1CDAF28C77DF4E11C192C121AC07C952B43E2A5E7974A2E870929855FF263939855185382649362CC2D1E978B250E77CCBB5EFA469500DAE685F41655F27C0691CE5A1570E3AECE0BF1879605363573B1A6835C7066A1FDA746462F2E1ADCF6DDCB663FBF858DF7BAF072C91502D8B2DA2885AC98A0E469E2F20A33BEBF76711C4256554DEC8E0C478C251DBDED7E30C3542A1CBD3A6284B6959A8CB4C6DBB3461F5E996E508AC1BA4DF1A84D466F45534DE4CBBE3DC7CD1E0781ABE13F28867EBCC34D392F81D07BE7424D6806B72038A8D6EF6D744244A8FAFE6B762614FA186648127CB43E03B863BB408697D960D81E66C62A842218A3742A0BEBDBBC57836177349BB0155E680FFEC33B3478F6746C7CD9DAED4F95E9BE3559645A9021D2A89EECB99015A382C84A7246FAAA9F5B549A75C452B697676E4CEDB5ADA5BA4AF403DB4C140A91033FA0996F01F872F60B25E6B092FCD860F1FF53704457751DB390AD480B168093535F7F4CAFE4E74514485C46B19579D98DE9B5174624C51F968650D1C680B5B5FA8797E67211AE69FEAF659174BA5BC2E34E0D69FD5D432F9D33BE57946AA4B944B84226FFA72B27BF616A6A73D6DCD107E44F0CDE5DA72F8F0FBFEF413B31E4F9DCF9FA7D1827675958396E7CBE72A9729ACB5BF8C72968F39D8BF9920D64FECB6BEAA5DCE0EA0E4940C789B4C24C3C3C35876FBB093CA64124034C562535383D787CC101D19D2818D6EA9063E0A324B871A843CAB97489B666C28435A65294ECA88AF6970BA8244504C09F975210923DA32D3960809EBB3B3D7C4B6FF9A20D15734014E9D0A9751885FFD0358B7B0269F4CD4241312B5925F5ADD8FD6AB8D1FDCDF5A5F0C74773674773A03C1FC2C6DE2E871D7E6E09DB7E3E9EB35FC22233FC1DF4C1E3AE2C718C9CBCF954B5957978EC643A150B1AFDF8788224D86602045644B65DACC93AA545013FB9BF9422109720B85F0CFEF81F8A4CE2856F97C5967C7C07478F7E163D4D4390AC94C1E873C290429A202E88EE23973950EB950D0C8133186D8DC761F3EBEB0AF53D80AC2BF2F89B78DD62EE6CC437BD85A4488F2526FFFA43219E6D4ADABF47CAA391CF6F431AF9B4C24460F1E7DE0DE870F1C3802C6CF0F7D7E770B53D483FC10F2A7F868FA92E250C8BC10B60FE548139D69BB0CC9987E6FF5D1DB8198C311E868B46C70CD5DCA444C438F91BC23187576B6BB823E1C77CC06F59A6E02BFE20428C79DA71ED8D66F5E3CF27AF1436F61667C98A087A28CA7A7BF9AFDCF31FEF4A6B6F61616312457DCACDB9DDDD2EB442881F2474B8BD8F4F2F7BA0B33C2F2E96C3D82FDC2A3C4FA4B2E712691C4A7633C930DAD3C53103D29FA903E4B63AB1A7358E73D370FAEEC3FD6E828C78266C0E9C23CF9D893CE7D87B52B5CB9F27AB9507D3E6361DFBEC12100D8423A0B9B52290339239FC1225AA24D162553D9C19887122AB011EDDC7FB8B7B52914F06882805A84D3E90B180F5DC223A36F5E757AD64955CF0CBB05B93A55D16C7E0ED25E7E953915023309D8A86847D8D0BFF0C8D65D9BEE7C9065A577612FA19DC84B1A7D6FF65D37F467161791E5AECD8B6B812AE68AADA55E7F93FACA624FC8477921954D075A31F8A8C4C6EAE8672F97667439EA5D7DBDE963C7CCD57875B3E1138E5F61025486B41D7C9E4EF2F1224F3BD521D20F5485E231969002559666E1C497B389C8E444CDF183A010D31361863325F7F4E0400D9A224A782B8E0D68B3B6B23D1987F9C2E4AEDD60D4020D91D549643A1B9F98F605FC479DFEEE450B114B167116760021DA49047F1A794BD58E608FFE622A991D1C4CDE7E1F66DF84B9C21AA4D15B952F981AAB3ABB969E7D96E7EA37A107CCD929AF1386B80A36AA388A918CB77ABCB4ABEBC9279EBEEAFA379584B82449B20C7BC1288DA2CFC9C437B3F2EB9FDBFD31F36E64736F8BB51594D5D2AB270CFFCCE57241BF7F457FFF07DF7AE5628F2FFDFC9E076EBDE7D8B1210B569BA3F26DF2E1229DB122C06D24479940B2AC00DA4A69D9B8EFC082B095582DBF1EB49A1432B2E86482E6F18A413FE05E6260F054C9FBAB75FCCA21D0CB1BD3A77354C3FFB9E80C91A55C14FAB85922AA96FFA117B67736356433791A14A8BC9B71067ECFF2AF5756EBA076A43B038D4C6F2DEB956C22454429E3B46B2669085CB88C2A714E6CA8255156259DCAE899EF535A1A6FD5309745D6C864B2A3A3B14D4FF966A2D28DCCB6C3CE05D87AF17A897054FDA82B937FFEB63B722E577C643C1D89881D3707C46311EF91C2AB84662DADF51DEDB40E0FCF4450FFED58D2037FC37A372DA94ABFAF3ACD572E888C5C6DFA31D182E2EEE52A5E3945A90441E5D4B9BAD7744EFC69ED273C656C8C1E6B3765F5C8547861573744AB0D0DCDC7373EBF73FB5E1501A39D5B905FC34842850097072B02A36A8D17A80A2DCA1510DFB49CD2AB59754282B855F852B38248C727AC1DC0123AAAC504A1AE3154888405A17ECD86DCCB9900AFD151B90FA6F93D2625714686038BBBB987231921FACC6572ECC496E6B38277000CC23035B758A095422E1A75462292A5498E26CDF4D0AD9253617F43E878AEB4E80CEA3B304C7300436C38BC26482B44BD93E7B88EA3F24FCAA3DF1E2B9C024ACBE17062F3733EBF8FF898176422E210854326CF1282C19AFE963A87EFF8F0783197A8AB896117AB3EC1750D18E913AD69B84695B7989F4DC490B5DB78F7FD8BCF3DC3198076654437F5DD0499948C5FD38DAA50DD6C77FAB55C64AF8471D51983B5C4DBF52F8B3E57F97D6507503B97CDCF6C5DB36255A0A7DBD3DA820885DFE39B9A9AB964417FF3547ACB13CF17324C67A24DC9A7A5BF1A3E226C08A16AD70A16243E0C92BAD01520DF08485AA239A4AED16BF66123126164644A99996A8681D2541D8012B4EAA7C6C65EF6A03A9DE3376502C86123182C24B505E80CB5B9422160CB9F98FB3A3D34587B740FE52AEABDD6D226F47587A08702E008A5C184E0121AEDDEE782142492B96CE74895A77338F816675BDA3BC60AB3A1C6460215372C2EEC27F04DA102259415B1C3983780982FACD018179E7036133F70D413134F6293A48AA9F5F87876C72E700DE862B3DB07B8D48B7B7A23FB8F38DF7975B143B4B7043AC9655DD49244264808952C9970C58F1C1F1CDABDEF920F5D4F566169985A0F6D6913CB02B3C9E95A5B1ECBEAF325BDEA55097135105AFE76EE343E21A9293F451A1F6FB8EE6DB76E7E229C483A1A9BDCBD3D2ED47F6B6A9A5A5A1605FCE72F58BE75E3F6BDDBF772368A4A511900B99209C05C206381FC22C518D9B7B082A6411EED820C28691D9DC1A635CFA2B51A5442E90F15813DFDADD3052E9CE3D654E3DFAFF6F19B340138F4DEB1E3E299279880F81759F407731C7DE0CEEED6962C660A62A928C88244D2B437720308A301F835EBE22A26F61DAA9B9C162F5E9EC55369BF8BC430A26C694726ADC6DBD54346CC90C354420A06859CDC0435F0B3989473A9707A54FDD3064F442841F4348BC9A79E73D30D08034CCC9F9D3205890754804D0646C0A7B17EFDE286C6E3CF3EE76E6D5231CD127F28C2E5216A790C1A48DDAEE168E2C7FFFBA6AB3FF7E986964059474EFA0FA5564037924840973B364F8465B5986DE9FD57B705D814DD3953A03CE4CB23BFF264A3F843225B1BC9A629AAC4A9C52372DBDD158926070F1CA52BDC3B3EF1C6CEFEFCD19917B6EDCD92D68B5EAF74900BA22057C0250C7A397BAD102B48CAAF12B90C2AEDAAD424C4392DB9884F6D2E72D43E377B1FE0F9407F74C0051B32D1C86B9706FC864D00BD03A5F88C752B3C01E199D9CB7F786CC43D33EAF07A813B1556D3BE0D5A1F95B622428854160125EAEA51E32A1C3926CF815F09CF87E2EFF814DD6248ACF97DBEA3E158F7A2458448842A46E9066684AF21203C082BE63E29E0998BFA5B8039E91D5C86743AFAF456F76404DC5B0631A212E2D5C5F857817215D0742003E374E4F379288175F73DBAF1D18D33398AD11910A1024FA312A7CBFBF0F0D8BDFF7ECBDB3EFF176BAE38AF904DE9CD3109AE7696C81CC0EF030E9C196520EE5AB4B64F583750069C74A7D80955859F7ED20656F567555852F54A24BE02B8FAA592188CCF7A9C059FB775E58AE79ED936B0F3409255C7E5BC60C182B31ABA36DEF5F8F0B121B425D3E89E032A148A108155C191A545DB155032A0A83F5B6AE86DD5E5DCAC322612931FD416928695AD6A8C968C8545A7F7F880CE5EA5D135CFF11B31012A8023D72A9590E12354CD8CA7C5727F31C7C8B62D3D9DED0CF4F474B49C3349332B5181D68941FAA9F2B27DC676EC14112946A3CB891D4178748C52149AE1C18646DA96C76A6942A2546CE00B564C84D64AE23424B2F473577D6B905403A3E68B241F30BA0A8928BEF0F1873763494FF40FE5CB14C57CD4D4602BA590D029220559B37A21DC6C9290D047DEB7FCA31FCAEF1F185D7B260ABE6AA92D82FDC96C76EB634F3EFCDD5BDF72D39F9FFDB60BF2913129064B4B8306099548DDAAE91AA26BB9DE62E2E6932B180629322863655BABB071CBD3C64E27ECCF6AFE1908FA2FBB74C3977FFC7D14B0D8601D4DC1407F4F68F992DD7B0F4C4FCE24C72633F1A4AF58F3E695671DD9BC73EBC66718FDAC3822C327C931A7EF140B743C2D8965936912035773839AD1E8DB58ED6B863CEFD64F68D5012CC290DDB140580758775A6BE7690DB739C76FC40490C3BE0545D25FBD23995CCE6703A01C82341EDC05E91C8CB198481B2539E19F090D8E785A889F3A0CEAC2070FB9336977C0EB6B0CA633E9F191718FC70B5E4153126D01BBC7A726A57A2C9AA1A65F09E34A7440E4A54EF0663D693C95A30519FDD90CB92FB4FEA9279FF54413E47FE4AC2605E4947877F802047222C0C89B8CCD3060DD0E27A5669FD7F786BE65F77CF69F2263E3A2CB592C1E1819B9F996FF1E3D7C6CFDDF7DA2FFCCBEF4C8915201545709AD02FB98C2AD35423548336EDE76687C72B036E7B29A98C612C3AB5E6FCC1C98FBA715669DFC6D5DCD17FFE1AFFC99D436EAB26CACD4BF5A1A7A2F3BBF6659FFE1CD5B324706D2231391C303C9C1F18B579ED93CEBD9F9FCBE51AE36956C0A1702E78A0B720EA757B605D901441E4766A32847199D0E9B3B4FA92F1DB3BDC7CC672D4F0041E932D184358D4F31CA2B6BE8A9AEC4298EDF9809601F227EA8485F8D83E60FCB299FE3E8B62DDD7E51834B866354E22DA35F07B515C5C889295D706C66636363E97DFB70017321C608AF2C9B6B6A69F48768A8AD039C7635840E27D27D1DED52B1D7B595836BCFBC924693F9DAF3ADC150354E4CFD4AF4A1B269E8A5915F3C800018B2BBDAE6666EA9C505602ED072908DA70B0787108B768602E9879F48DFF12045803F5CB2E6F6A79E9949C4534BFAEF7CFAD9F336ACBBFC6B7FB96C5D7F6A6C10FF1B091832696A0B40F1E40962226FE9BA983930E70CCDDA39F7AC2BB96D15D4534E19ACB9A3FFB231A0F2C0B1BBC9CC23D018BCFEB76F18786C132E356AB151E7696A5871D5E585650B0E4FD0A7C17528A4C2F1E8B191459D5D6F3C7FC3F448ECE10736A526A66401C3F39CE92F618D60BD3292698C346EE476395BDE8DDD0CA3A4A9E3D6395B64241DEF3253EA456E3C99115595F946F909D58D532E05A7385EFF0950FD618441609AD96106049B8CCDA739C22F3CEBF54ABB7A2192502B2414666017A2E42CB54446BF3CB9341BD9B1DD870AB407ED34D9B51B9A8228DB20E6455C5E40EEAAB90DE255A8A9115147CBCF4280A33C6D90862571D21A52B9A455A1819904229E3CB9694B438EFC5BD88EE637321511FA8B2769BBA9EB68F55DB63E158EA5124909F2C1630967676B9C7E0FD5DFF5899A9BEEBAE7E69FFCEC9ABFFDC3B77FF56FE89CCB4E4F0ABB4FF4BC6482D1F25244F34B9CDFEDB297210E9928C24233CBBC860A21A21CD1588AEC064432F2D46591BE9362FE7259C3EC348616CA9F5DFCC1EB165D79F1F377DC3D3536A6A63ED4A96ABA562D399ECB0EC6A2EDDDAC26F585783A3938918BC4D7AF5AD5EB6F7EE2B167132313B3A90C2439BA006001C90BB23DEA88B7D97206C78372CAD59334D93A13C3A05655124D75E8B1940D906976AAD5DDFC3C9BB61A927EA54DE0F59F0095033A611A945CEE00B0661006847D8C1DDC17484C3262C50026A59B2905576DBBA2DB48949FB55B2D393515246A40765C878A5989194F249AE0FD751DDDDB0647177475B969CF8761660409453A88F0C738629C2A8CB4E640D59C108202CA13938F3C49DBB4D2BF34CC66855451650A0ED416B2C78662BF7C84A9123C67554D3C5593CC78FADB5D6D0D2024D144B2A354B7215DB37BCF9ED690178BB85C3C22D20946704AE903B61BA9090D04E337A562E5F45B20B07EB187B805E294896EF667B1CB8246C9583982768A5CD53D539E3D9594C364E035A5B7FEE5C7CEFAE87B1FDDF4441C66A890474ABEA0AF67EDF2A1E99954B1D0BFB087BF8A0F4F1E7B6AC7F4C1639D1EDFFA25AB8E0F47F61D1D25D1978CDD14FA3CD2F562527AAB2755E4E9D913A4B841F266776168E9C370FC04221292AF34D6218B8D9C68F9339D7493A4DBB69CEE9FF6F13A4F80EA8FC3552F627364F67A0FBD9496FD234778CF736D2DCD0CD599813119DA3443F9BC74D9B1BCA0E369BA355936B303C794B36559E27121D85270464947232463A173CE3DB8FF70800EEE5083BDFCD3A692973600645A4ECC21EDE4729E2B2AB82A286CECE061F764D815F00B846FCAD5B28389D30CC04E2685E958066493DC407A9175F0E606266A93395F676BA0AF331A8FAFF384CE8EE6BEFE4F370FEEDB2766753A76CD20B15671CB9657E4EAD40B03901DD10A5D25EC315D71B3B31D7CED15BEBA6DB5CAFEB10AEFAC60FFE5C298E5045C0644B503AD90B9ECFA377FFA7FFEE360223678EC28D39B11DBB9B0D7D1D3F6C2AEBDC0CB0D8D415AC2E0F945F60F328B2922AC5CB0A8D9DFBC6DF7F12D2F1C0A47E2D99440A525A46B04F2A2D7C79EBA369B820055A16FEBF4CC891A4547A7D74312CC3A159F32F0E0FC87D32D4207BFEA087C7D26C07C98B45C9122866D8A85391A9ACBBCFC743CEA4D4F336A210E941269B92DB09A75DC57C08CBADAD1E7B679682DB717467E25B7516BAC82387A039389CC82AE0E2FDE61ACD926C2A53A93E75ED20703386DC59073CFAA2AF42FCF57C61C45DC4271E4B67BBDFD0B6BA8E0A27381B0BD56C0F895E86DD1C02E1AC1A54C22919E0E479EDD255A20CCD262D1E1F3941C7588AB815B3159AE6FEE713F77E4E6AF7EDB742196138F0A1E63D8CBAAF26899C1F0230802C69ABB1C02551EA27B2A068C7648675AB2EC5FD9FB838527CD053E2B9344E752D57E92CFA04C1CBDF193EF6F5A7FC6CEE387A7272668E5EA59B3783895D8B7FF8078A1AF5824A83EE8C5F054A8B5CDDFD8BC68E9D275CB56FA3DC1BD0747B76ED9B7EDFE67C287868B71E48DA58F432D2565FC1B0F87AA53B1B625B5B1970E7CA687C440781F86634AB33DF10EBD4872FC92C7AF7B029C34EE2B3F05E1A65AA81E76397795FDD1C8F6679AA00C50AF9D8C90A872971C01BFE5166DBD5A6D7A6CDC9788CB0222726F5482F4574A8796C82A93772F5D3973E8108B96AFA355360D2DD6EA6D2890920A81B43ACB9DEF1CADB752EE0ECB7F62CB0B1D575CD9F9471F259E41F6D50035628309F4293BF56CDAE74D7BDC792841B2CB9412F1187D80280A73D353C7C7EA562E118130ED5C7B6FDF52F7D643B7FEE06E71EFD6A39C8DA82DB68814CA49A9C3A958B088C1B57A6C5AF68C761EABC47BD5A232FAFD736745C5DD4746B6B5FE5BB192B95E46E0DE845EA6AE8CE43F9359DE48294BEC6B8935E7ADFEAD4F7DA8EDB23583F998B725B0E88AF3A2B1D8C4E0D0E49E83548179A95C04B3BD9C36C82363B9F0C2732FB8FC92CB9B5ABB2686C2CFFEE0B1EDB76F4E4D472DF69C7C427B040A29B41ACBB1BE57671334F41DC065344927C220E0F347412FAF54FC9B9003983B815DA078CF08C2582CBA0321F33BFE993EBE1B505CFC77E2D89ED681237269AD3D1A0881F653C4F7C686592D70C1C521899C4C4A51E5A3349BA103B1A313108F229A0B6D7E85FFA1C7318658513DBE80A28DF3853A55D0BF1DA6A93D44249179F0E9F0EDF74D7DFB871EBCC0A8406BEE9E8B621102E1399B8A2616FCD3DFF57FF5EF11342745CE479299A9188DAEB163839999995C2C2902DACD4DD07E69AF0AB6B47C78EDFA917B9FDBBDF7A8B5541BC0C704F616FCA9C47A717D54536B7E2D56C1E2345535B84DFCA3A35CE41B2C865CD5A7B1C3AA2A84C8F6CCB3F207E92A351B05A56B86BEF42DE499066A1E6C668ED41717AE5AF2D6DF7BD7F2AB2FBEE077DEE15BB76C6C9256CF8C2540445D7C7812F937A2C10C99CF6C4D2810BC74C385D75E7FDDAA33D74EED1AD9F81FF70E6E39CCD2600937694A05E2674D45BB22ACF757235508D75E0FBC15FE051EFAEAD2227E132600875CD6428A04006A674185132D01ACE13DDBDBA57B7A966543B83E50CD42414A01C6FD531359477E640800DE1B0AFAA86F05BD3043D5B5464839FAFFD9FAC54B27070628C712A73207C4C45357535485985A2EAFC43F76082487FC47BFAD6084E63BF38AA9747AE333F5F1A4637226285D20DC39D9C559E0535361148C92F1241BF7E0DF7F79E6DB3FF6F903506884EF8049CA1BCFA3762653A576367EFB23A5C90831036DF0F189C9D8E1C1B7D737FDF89F7EB07BF761E56E50088441293C4A51B250616B6156CA26C9992B9FD2B4D42828ABC05155826BD8C6763279E2D67B228BC29A0DD634B03AEAD5F04B23497D2BB8CDEC0C96278079118434C86B799CF7B1EB62A8D3E731E7172620BFCCCC4467B384612233347D74343319655BA8CF14562E5F71D9868BCFBCE0C223B7BF70D7DF7D7FF4C8443D813B61632E0F83F0C465BD9C80718F490384FA329B4D72012D1ADDAB72BCEE13C00A4689C54B29684F72176B89C8AD9AD46CEAD036A03436E3F4E8749A1E31212F602EC846A1CB63B19422F1154B74057C2A87E9C4905990C8976A16F4A31D240D7B7E54198573A669B23046853F84034A5525756EB383151CC843D754467FF6F93DC9C79FAD0D786BFC6E7783DFCA19A91AD1912CCAFA6E5F304059CECB7EB56BBFD7EFCF47A30DAB1706572FC42B96E54CFA454A45CF8A85063775C0B1EC68444E070AC71FB7F6FFEC2B3F7AF2F167B3B1443E91107B59622A021EAA016A0D297B9789704A32812D092313F4EB873243D69ACDF2F2F27F7BC856546DAC0F58467BAC7DC09A0332F4D5FF428D2271DDD14DAFC48027BD35EF61ED1AFC1A0D743840ED17AF892793D443F81C104C52C934BA3FC5B4F407932CC5462773D3B1F0FEE3A9910977A1D4DFD4FAE63FF944B3AB69D3D7EEDC7DFF73C0AA544BDCC82B59676E5D7C1BF855CF35F1949026329CC113E10A35E8951FBFEE097062C1C28E2BF209FADFB9A9F26367D08A7FA6078FF90B49AE76060C98CEA9D9597C37AC9E5DDDE871A4AA818AAC775117084D6CA5DC283F21FA0E4027ECEA4BE54BB059D82F900FD22124BED914C998765400C49E881EAB8A1A8239B90A8628F34915F1112F49EDD83BFACD1F8D1F3C1C1F186CED6903FF2907B3E89FF9DB5B25A3009B82634770C694236E75B9B27B06F287478BBB8E2AB25EC448B3F1FDEF702FE882A95D3B937044B3748DB1EB51E6F88350EF03FFF6B31FFDE01EA8B0B3992CC22DC558B2480B5B0A230FC6938640662A9AAFE2ED5E36B596B4B2025E9523FB6A64D3FE78957678DB0151E700610F29BEC63CE665CB6986F5A6E54D40ADF384EC5380F8D077FEB26821972A149C5EB303D7444584663A33152E8086110821C91A4FA5A24996A1FCF04471DFD10B96AE7AF3477FFFC86307EFBBE98735758D1E774844FC8C728B2DA562F6330B11424B42916B6C025F66C23BDFF1BAEF006684950400559403F0C2D7625AE06B128307595244CB76222C924BAC2E74C15B5A5B920EE466A672147BD1DB2171862C291DF49AB0E99CC0CF0954A8BE7741AE98635CB2858B5A930A3CF146D9549C77C4FA909CB85AAADA9A9B652C8E5B0EB0C7C84BA7D3CFEF8A7CE756BA345ADA9AB0AB10433E1B74B256E880A7063A10F4CFD58BDC4BFB442EB0ADC9DBDBE95BD2E75ABBBC108B4306169F1147FDF4B77E5A9A0C6B9F0243BDE874D7B775B6E01E12F2FB3FB3FC2CE7A6BD77DDF938C5D47C523113AA0A46671CEE9D4A62498EAB01BAF127352470AB25C00A84E67ADA5A217ED5430FB3EADBF9809D22DB4ED7668EE9934D294DC17B1B2435FB805CF85CDA1DA2EFB377221CC650827094BB06048C6598E82F01C4E50B3343D0FA217145B08AA22EC91C60740365DCF8BDEFAE3CEFCA7B6FFAE1B67BEF063F10BB9439F1A85533102C0F5D5715302579B097CF576122BCBE13C0022D29FED7F0D0515BEF6BC4F199DF89C6C6F001D3C882FC3F588AAF81E618B9EE6A6FE7C06D8AE58A2547B2CF5C5E2A5094D4F30544C7D219F411F19D76459CDE7C5D0D839558481CBBB08D513FE35C8E5052143BA03B226226BDB6D56210A65551636E9A868583198D44EE7D28F7C023CE423ED020B68D20D82414E689E68FE43FACE8C818E6F3B1E7F7678E8E484699C838FABA0B6E67FAC8801B9F47E40D3D6E77A8C1114DF8CF5E834710834E623AC01328AB09DCDC339CD20D0B971737EEDFBDFD700D0D9BA83866F3E8B917A90002B00A7F4E567DA352688D57566BCA08D643C0347E6222A532EE690102968EB48D729673000B7AD42797371033AF7439B15F43E020BBE8C62560C192F8C4D7DCB4EA6D171E991873880F9258A5B05853BB4D4D47F454A90CE608A57C758E89BD47D09F91AA1E370CFA744D4D5B53DB8DCBCF2D1E1BB9EF965B06B7EF702273A308776580F04690029D0EFE4AA42614117AB586E0EB3601CA01AA4C00F40F057D53DE934B247DF8F9E08E679ADC0E0CBCE081649329A901A13C6C177A92E1C97C64DAEDC5984C0CB1314EC4809525198EBFD49E407B60B1A7D3F55D8844A0DC2D0956BD1F3F5D7473331028B4AA2AB205A2D76B46BFBDE8E859D0DC8AE9377EF729B0A97C383CF5F35FBA0786DD90A93BA083758516F741FC94F0DBF4A319211D61B649837DB0B763D6EF160896136B6EACF5BB4B53D35EBF57943DD9E264927B3DFDDDBE851D05A95D1685950D7D12B74609A86A3025610FB9B67771E6F1FD5B36EDA0510065783C1579D0D323622A046FAC82B230E6C593D38A5548977502F05569143213E4B7003816B2A95FAD8621DD25E67A9E97B3612B0E2F6F179565612E58AF9BB17A0A7291DB57F6D72D6E672522EA93323C3CA83CB15E4AFB7F75E1424108443F9D1B3E7494863EB9C874C6D135D114CA4E87CF5ABFE1BA3FFB14D773E32DDF621F30F2F9E68C64BF175769FCCBA45D18548D5DFFD51A87AF7725581795022C0E1D77A978DCD72C14687E983CB4834F4ED69F4F514D4A78FC7E4B9955349D33990816C5E0D244401988409484099010A3A6C12AD0D1E6696C70E244D2D81CE8ED3384229610A91E80FCD03EAF012F6DBB1245C1022A3B34EA1BABBC689E36970276DFC958E6D8F1F8239B02E1782DDE50F124539145C8D9E0672E09324ECD4139A5D2008EEF830285EEA660DF45EB40A558EB65A51B1A0F747720285E176A70F7767955E7703616CB3DBFC30F4DA92950D7140AFEC9C71CFDBDB4A7413A66F42513E97422797EB0B9EE7078FF160C1044B545F210AA0A8954218A113FFABE10E6A83930E235033628BE6C050CFD4C4D2E45F9836D54114C99031A1D59947BC916E4ABA60DE516493DF42A540521E5F1AFFAC8760256012A419C05BA665607026B7EEB0D4313630870A01A2DDD4506A9925FCAEA80213FB7AEFD8337349C7F36AAF4E21D1F4FA5F7EC6F3A675DECE8783E2ABBC192B3CF1EDCB2F3D896E7447254610CD16C35B24B121EABD206DAD4EC84E569F9CA46E0EB56092ECF001126C9A1BD2A1F15456DC38018DCB5ADD55B270D27C9B470DFB5D9D7C42522BD863084654AAC1630ACFAB6C2822871132071034A25F7D215F17814D9BE3A3AF5021E87DF4BC02A340AA7B46EB1B0607DEE7493556BEF86DC50433DA09A9015BFFB64227BE068E9C0116A0A91D9FC642A393435399A4E0D47A32383A319B40151EF616D3AEF6C13229460FCBB5DD0E16B427E475BC8BFBC8F3DA46E699F20BB8401D8BEA75290E3453293504DB73C5A0810C061634B7FF3BB38F509FEEB74305EA47C5628460647D7AF5B37F2F0F34FDFBD994927E0273B4C3647976D9EDECE440274483204D15C30253FD39DAEABBEEE039ACE52332E007C550F7ACBD7BA1CF4DBC487794A4C06145099733EAB1A73982DCF8E9DB41B1B8CB23ED8B878C3D92379C841B88A796882236AD3BBAACC73C124C43126F3F4D6D296ED88F0899C7A7D7DF6D820CB0166B5F91905F8EBEA2EFCDDDF3EF6EC0E61E101046BB55B9311FACA8CD9AB261ED229FFEA24C2AFDF0E6093B18831A400ACEA9CCE8626A381153BB233889D8E0A9670F9318B9327EB7AA09A7B19125C65106AF3B6FAFCE468B9A0C78A1D43A86FF9C964A6C647EF58C6E9773B025400C4E6969086F6172AB3106CC9CFBCA166519C2E1723750A01B6C0C99B8DC70B078FBAB046666309055BCF3AA3EBF20DCB7EF7FA157FF2C1C59FFA50F71FBDBFE5C3EF0CBDF72ACF863323F73CC49B1E8F4E97DEF186FAAB2FAABFF8CCFCF2BEE2D21ED70567B8DF745E7C6C3C0D92038093A3E6502F168B4CDA467F29E012ED10114491CC04EB14C629853C0A9FF9BEEEE087DE9D2B94821FFB40B6CE75C9DA731B27B28FFDBF3B12933199001ABDD49212259200ACE060B0A6098AEC6CB59CEC6A50C4DA6F0D74931F1B78C5E04582F45B88A79D40CF898B382A5470C34432D6CE365069404A456868AA480E1D72B1A1ADEA57095CACD6DCDC41B7DBED612B16EF01D53FE16F068611B2E4A2B266B13938627451D61460B8886F921C8BCE39EB875FFE77D93874FE987C4C64560803594A2A29C85C26C7CB3D5ECF10C832CF49C5CDE7E47B57A0919F47A72782B3D25D2A78A5A4B6288ED1192C191C4F8B4C4F07835E4A4B96DB1D1787611E63909146E3FC988766939A0ED77574D10F80263D0192BAC6D713AF88AAB832A879656FA0C1E36FAC28819AE5932D22932C8D4FD40C8C8A9113247EB8FE8269024E115385C49A053A1AAB57A001F906DF796B7C6FBB3CBEA477F167FFCCBFA4AF7E516FFD9A658EFEAE524BA8D4DEE83A63517D57734C3435D3A4BF4058702E1C54B281D413A280CB3016212E4A13AE7A46BFE820158B9D1F78B76FE50A02E8F48143F989E9E9A7B7F5D638CE6AEADEF9F55FECBFEF19ECCAE199AACE427E969E81581C7F8D2233211EA7B35961303B5B55661E7507BBAC5B9E067C0F975BE8DC4C0FA98AE82E217933A3CB9A036586858642DA7C67399495716C4AEC53D3B5DA906AC148F95CDB9A45B17882A942879037889BA56C1A7C4AFF9B2F759EB9128098AB87A7C0ECE2BED90DE7CCF8DCA5E131B9F5F83B10435A84A7DA80D32BDB85EEF62219A469BB76A53958F9897E78808ACB277DC551D0EB3B01642D9FA5F955D75E909B605B173F9FDCB3B5D1EF051511453427752A1D73EAF4180947E832E22762570C9D16F59D0CDC182AA6B468E5C1DD446576B6762A1C77B7B5D39022D4682B49153B19B9A6F2A1A5B6E36F6A036E32099AB5F8F3846C26777420F3F4F6EC8E7D912D3B679E7A7E6CD396C9FD4753E1C4F8F1B1443403D62AF00535AF6090EFDC0B97B4BCE7B716FFE9C7F0D121A1469551ECE0037ECCA0F02C73B6B7345E7E4EF7FBAECAB4364C8C8E8A513E24571A745A9A022DCDB887A85D7B9D38483BEAFD41BC03451274FAFF7C73ECF35F717BDDB9A79F2FEDDEE76908E6A722EE99F8B2058BA69F3FB6F3CEA7C34746A4D530C334104A1C1E8E24C7CCFC6234961A1DC9512E948498B848E21FD1B5857400F2AB0CD65ACD25AC25DF5AFB196102AA5A1506BE97C9504525B242A0CA03E08A4E17607E47BEE8714BB7A952F4C835F28BCE5C16C9240520A3F88DAA684B135F8128620F3F91DF7F58841F7997F6D6C0076E2CB6B72D78EB95F5C954617CA2944891CCE97BEB1C28E60E3EBDC5A400848259160389212515161E17D013FBB4F4C7C8B9BDC2E375980036BD46EB4B22A9C0AD92AD0056BE146599DCA387C8F6B2894C212BB436514C6094381CB1783C974E506F9771A3D557D157A61AAF56CC64C4A2C1C44448658A1D3DB06F415DDC6A71C9FBD190CA43C48A59F2450B94FA945D6F96E5456423407B92CFEDC83CF25471FFB1E2D1A1D9E343B3FB8F3B761CCCFEF4A189AF7E6FFA1FBFB5E51D9F880F4DB036EDFFC13D2F7CEA4B9B3FF499035FF8D79D9FFBEABE1FDE55E70D7A1A9BE5D1DCE6E9EC71B7B609E01D404AB3D9D5D6D2FDE60BFD17AD1DC8409290220E5B0A13866C8140197056CA77E43932C90558A29BD8EF76E27BE969F0A32107B24EDECC50F3E78AABDEF2960D9FFDFCE8E60353C3F0F265708B0B2F4607285D33076863A7CC148D308D1518651CE7D01A921C80A0591E45FD46A78462444A2935E3DE8A8B789A05B0961F727ED2A12C5190F4BAA3FB53624E724A2E29233A3D8100A7E870B8B90FE23CD228F1AA9A0490D141DC0223E289C4446E31E867091F189AFC8BCF67BE736BFA277750DC284CA210901595277D3F80D455975F28CC67DDC8A404AD6A3312F16AD0AB0E0622996348E03A435FFEF13AED0056C68552150438836A634E01245F377E64BF3B9B4986E32065E4A24E914551A5E2780C6391D696462D7509F868FAB0D86AA5F8EA805B49522514E4A9426DEBAA15008B2C1BDC2C3050B2340169804DF2B0147949AF8A158B789331FE07AE8BEDDB97786C53EE85DDB954527256BDF1F2273C83FBEFF5F8FABBDD979D57DFD9F9D8C73F1FBEF9AEDC8EE1A6CE85A93BB7B8EF7E2EF397376FBFE69307FEEA6B3BFEFC4B5BFEF48B4FFEFDCD8736EF2AB842255FA81E459DEE0E04AB434BFB56BFFF1AD7F9AB262211D8EDD2E6211ACBF2E9ACCE1725BD088E2AADCE9C2443C6839CBB8254752C78394C5576ED1FFEDC4DFDEEC6E8AEC9C9A1696D35D43411600C232602127C0D213B956B5BE20C6BC4B5448285008B955B822279C83748584901BECCA8534455FEA9AC279E230FFE4A4D0C2CA98612DCDB99DD0F3EF5ECED8F6DB9E391277F74F7C6EFDDF5C2235BD271D840989F3A83DDCD69781C8AD089401E2F2864163CD00476E31371DB68D80B92061421AAE4EBFB09F1287F596C1326573C112351B3D97A3AC6E7D2389806543D95ED558DA8BF9CE3F54C82B52748EB9A9ADDA2B7CD8F27766E11B7053101CA33044C7F6A92552D15670912704D89D032A6556D5EC82AF50EA1416817793A9D6DBF60432C06A282053F40484E8BB48291421255CB319A7463AC21AC9D8AF403F824134343B9F19152D055EC6B735F764EED056714CF5D5958B72CB9A42B72E9BAA98F5C33F2896B87DE75E9927FF8A34C2ED1F3BEAB3AFFF1E3ED7FFEDBDE8B57C55777EF4D4D4D3479D27B0E177FFC40CB3D5B163CBA7BF12F9E29FDC157B79DF5EEC73EF6BF6A9BDB679B5A8BDD7DB52B57D7AF58D172E1797DEFB93AD3E807C80583D5561E011725356D6C745DF5C62255B68E9084D5A233AEBAE3605C0282A9475D2ADDE5F2068BB58D851A77CC357E90B67ABD8B84065E8FC7EFA35525CF56C0C836F8A6CA9C73B16055505033D5039BC823E38DB1AE4191C63CDA63605341CD245156BEB6F8D4C0F126848C6566B6EDBBF7CBDF7AE427F76C7B6E675DA8D1DBD78DB8E4EECDDBBFF785FFFAD7BFFED203DFF9F9F0E0F053BB764E4D4DE759C2D20012050A31BEA606614A0361A96A93514495B46F493F1515706CE59D2ADE23A60451497AD5ED4A258EE543561115E590229F8104FEFF950394CF5580E13C04618B8B4222EB6B6C2E649399C10362D4A5C883013721ED943229D4918D073487510B40E35F61324DA58DC226B402291B6119161062023E491EF83500687AA80E84C3EBE7BAF97C0132B64C2C928ECC2426C733D36345DA5ADA9AB99D546A5D3D1DEE257D9E558B9AAE7FCBC20FBF6BCDDBAF38F3AD6F5877ED5B7CEDCDBEFEDEBE1BDFDA7EC31B5A6F7C63CFEFDD78EE77BE74D58E7BAED87B8FFF7BFF38FCC96B362DF06C294647F249DF8D97B438FD4D43C9F8E0D40BFFF6BD8D6FFEC833BFFB9917EE7A3441E271E186B6375F5AEAEF1CCA67A763F0BA4855A41726373416FEEE2F6613D9628C30895E70F62A317A62CD14A22B79456D1D5D6653D3116001FF4C2A7E6CB4D1D17CE8C93D0C6879A6D89842C6136F5E9650490C12E922A151385298896447273343E389A3C389E323B163C389891906987A8AE9C2CFD057F542D98A75D5B75B2C4D99B95893CE26074787366E7DF85F6EF9F63FFFDFD09557FCC1DDDFFFA39F7CE3FC8FBE77DD7B7FEBAABFF9E38F7EF76B9FFAF97FFECD7F7FEDAD7FF4E1FE775FED7738FD4E17918B7402B33DD3B69ACBB304C9B680AF8C3153A2C893CF7A2F3A3F3732467D3E096E6BD6FAD9D9A6A666B2673551B03600BB206765F7E61B35CED41161BEBCAC01F9BAEC00666743B83C29C54BEBECE91CCD4CEDDFDED5D54620C92727F6455F0912CEF0A183B833980F2B7B9F7698989E5143E322545241421ABBDCC18EF64426E1A5FECA04207C400D452DDC94CB6E5578182CA46E4CAA7C2C9C8FCE1412320A05A0104690A5CDC773A57E1368800144FA60F306E42D25DF96E80C0A23B07E3A968A8513337D17AC59FF57BF77C3233F59FBC02DB14F5FB73B35F3CC42C79162ECF14BDE53FAFEFD8BFC8D9DE3D1DAAFFCF7E31BAEDD71D337C673B3810FBD7FCDFF7CBDF4811B762523439363C0A378ED32446AB167ECEEE4A5D99A60DF81D7CA38F5886885706C18DFB3B318C9016CB54CC433DB0E36D7B76CBB732BD56D7E0BA396F3F622500A079B71478B09658344EAF89EC31BEF7AE4F19FDDF7FD9BBE7EFB57BEB9E91BDF7FF4F3FFF6E857BF797CFB6E5651C1D254524E3266CD8F4D6C6D7563D2BE93293EF9C8B3FFE7F3373FB1FB88FF1DEFF8BDDB7F7CEDA73F494F30201BB13BB124C41236B43446964343F1B1915A2F4DF2B5B3E79C15FCE407DCEFBA3A0948A5374F0812AA802D17117843C09C9AD6F3CEC98E4DB119268905E4022B3452A08549200B89FE0DEDD726F9CA9015C12701C7651C982EE779EA17A77BFC3A264065D52F27005AFFA25D823E5E13AE4A01A890764446BDCD2D787113095311A3971721E5D6D6166C3865D8BADD8215100DC36748A558DDC9CDC08E4006A4488EDA80B849BAFCBD5D64B9265B12B0993A91299B1104A3B1914EC18B2866520C2E61900AD5272FFEDB127F4BC54A98575C623A277B1700E91862BD36475930BB70B18D08A896689458233ABEE95C369A89F9BA5AD77DE2FD17FFD717DEFDD46DD7EDBDA7EFA7370DDFB861675F004E0C4BF8427FC8F1935F0EFCF61F3EF0A6EB9EFEC62D7D6F78C3E53FFD41FFD7BF1C79C3B947E278F2265313D36C64440EE409E060B264C613F1E171B865EAD2C5CAC816C7EE45C850EB8D657C87C77ABCAD8736EEDBF6D096CD3F7FECA1EFDC7EEFF7EE78F48E8737DDF3F843B7DD77EB7F7CEFC7FFF2ED7B7EF4CB996269ED47DE77D5E73E7DEDCD9FBFEA969BCEF9EC9F36AD3DE3B99FDD7BF74D5F7FFAB67B8EEFDA179F09A721DE49E505FB0124021C35A4640DADCECEFEC6D56BDFFCA93FFA87C7EFF9D057BF70D9BBDED6D2D59C49CE70A92A7D94723944FEC8A81785C726D976BD6BCF08BDE58DC12B2FE3A3F0EB642E97CACAFCE453B0C9601142933BA902246788713237FCC2E932CD9B2547FD4C22419A2B30B1C4459525DEB2BC55F08EB19FE719D21E50C985ABFA1E4EEB780D2740995C32F7B40C9350A4E465F4AB7638483E417A72E010AC302306603A5F41F4CD27A3699D8C501257D645511DCEA3552C129C947E8995D17403876868A0BB2242438603C85F96319529571B228327C8F52C30A9001BA5746CA0249344A2F24647532291492653F1C4D0E181E7373EF3F08F7EF6C4AD3F7FEAE7773CFDCB7B1EF9C96D0FFEF8B623BBF71CDEBE63667020313D2D9892CDBA347B91A078CC32A1470051E2C01D8F27238B2E5A77F57FFCFD3B1FFC9EE3DFFEEA85353D07F289249667BEC042589E9FFDCA2F2EBC62E37FDEE2EBEE5EF1C98F9E73EB37827FFBF1446763F489ADB1682C1E8BA387C38C14744B7278299A699F109557290C11138A22247377702A98AA098DE75A9B7B56BFEBBD5D17AC6F5AB9BA71F9CAEEF3CE3DFF77DFFD9EFFFCFC9FDDF9CD0F7EF96F7BCF58B870DD725FC8C792DDBEB47FDDBBAFB9E1EB375DF1BFFEBC1595EC5AF7E058786064DA190839828D8E86266753ABB3B1D581328DC7CFD2204B7D3695CDA1EE9685FB297D392AED6F3C050C782F9C3EB902B3A1A54B2837FE7FBD7D079C5BD595FE4823CDA88EA4E9DD1EF78E31C6C618834D332D21401208291048D84D210969A4B1BBD40442584AE860123A9800060C060CC4141B0C36C6C6B897B13DBD491AB5D1B4FF77CEB9F7BEA7B129FFDD5F560CE3198DF4F4DE7DE79EFA9DEF383D05989679E0D67B412A8DAEA34051101D794814CBA849F4BEA36A0927160291696C19446BDCF87A01956033EC48C58E5D7CB2E8187B9B98A64F57C50866661D2081E01619CB4658C2F6F98F7FD506B0ED477B8DDD6A00809C48CF1B015CB37D2E24AD79D03499B4817E883BB9FEB8F3A8B163D5E86613BE9F7C4727A68121F35348CD319075523CE4E67B23A1BD3DB1E09806B0D0D0880A1A5281CA6F9A08233084A5B7371E8D0360535A55E747AA9E70C8145726BBBBD3BDBDCD7BF7B5EDDEB7F9DDF52F3DFCF44337DEBDECC127B76DDD86FA5C0A7471E555AECADA92C987958E99108DA5B66CD8FCDC5FEFBFEFE7BF7FEAEAEB3F7AFD9F14C8320C8EE130CA5F559524B6DC105EF848BDD944C38973BEF2CC7DA31FBDA5EBC7E7AE2E2B6C1EEA83977C586C60F88ABF2CFBC6454D5B77A386D070DAF1731FBBADF6AE2B9DD326A47AD36013CA8B1415CE9A867427C1089855190F24DE399C7182B91F7166D0EB0BB4269370B1F6777B4A4AE79DBEF8C8938E9979FCD1D3161E356EF6745F28C80E4A9266215B3E33363EB4491A00EC8623A64F9C3B73DA9133274F9F2CD44C145251FF0365CE187A0D570CEC6EC8A1A1F200A9058C87C83AF5440BA9C43B08B9808296D351367B5E0BF6F95BEF365E7605D25688E820D388CEB52D551A90387199FB1F4F451D4391C963E52FB8A93DF98EAAAA4AEE07D0880B4B83B2F0AB8BA062296E360503122ED8107BD63B3EF3F1AF74814C7862C35A99FCCF6016C90AD4B6A9E79AD899BBDB151C0840060C3572B9A065716D54B5E5BB85249A07804A286FE811D4A1E840A88C085738E73AFBFB8B278CE3B2F900E6576187780B3DC2C20AD1873C858A22B50D13E29DD1DD1B36ED7A77DD861757AEBCF7A1A57FBEEB1F7FB9E7ADA5CBD77EB8E5C0607E68FE82F9BFFDD5C9575D31FBE20BA79E71FA84E38EA99A3CA1A4BE0E61A8BFAC34585B336DF14917DDFA974B1FBCB76CC6F43DDB76AD7AE2E995772D59F5E0D26D6B37443BBA3951C8457FC591C2954C982CF08A64335DBD9DD5878D5D70D9F72E78F765FF7D37BC36B56ECB70A6B8D033F5FDAD9BCFF8F61BDFBBEC83C79F058578E9ACE953EFBAAAF20F3FE80B07B36D5DE82A74FB03EC369300A751ED2008AA13603EFC4A9C2EF9F9453E5F6D6170A035BAE2B26BF73775537FAD1E132C490286102273A8BC098B02467271040D8114D1A811C602F259237D938A67A3EDD99E968168EB604FF3604FCB60B47D38D13D8CE4B54ADF216C1024D2505F4F07E58C0632833DAD7DCEBCCCFA8D055D51E22A06811FD86F39B0668F86E118CCF0D2998891354865BADC79885CB8839336797B4F542ECD8ED596B3E5CBD2BF9A76426218A24DC0EE92B50746B821877CFC9FC6007A4F40A700C595006195C0D6FB137154B3C0E83F407D4FE429267ABA01F9841D40561BA8651859E4C5799D0100C3CDEA4FF4C25D8145A64A196D80C2C2CEDEA4BBB8B82F93C62DCCF6F6824C859911F2DADBBB635DBD25A5955B76EDBFFDB6FB9F7CFE8DF57BBADE7E77536BBE3FB0E084B2B9B34BE61C597DCE3913CF3E7BEC71C7564C18873DC6FCE286AC980BA13C0A14F70C4F36B7B6B476764D3EF698395F3973CCBCA3071DAECD0F3FB9EA0FD7BDBDE491F6BDFBA3ED1D1938D3426FA5F815D82830C50DD4696F1F0ACA3D538E9BF5939796563D72FB5B7326EE1CCED6F4E755AFFA30FDCBEB9FFEF2854DDBF7605447DD598BA73FF417DF798BDBB66E4BC613AC3E1DA87A83E03A0854051597DC283151733C350DE715E4BBC714579C5252BBFA9737ECDEDB8EB294D6922A8B287A84529F0CED11EC9F66CB6208B485F817C49144C65C4EE61F408D42385394CF300B6C00CC14D2A186F614EAE8C6F06B2E390EE6C55B317A9991E18A25926738E4BB4BC2F8105A4F6C5914BFDDCEA20963914688BEF1AEC3EFD58288CA44FFB6AD5B84FA5ECD86D37B59E0339A2FCC6486487392774BA9716D0A2C639CB3130E7EFC1F6581D4CDD0F92C2844E480A80CC98A32C92433C8DC0D03E64A6C92502434F5482A7F103B5C1B90E5C827D08D61EDC5EDF0CE542A0D6B5088D9851E6F16E3F6F5356353612C3FB06E773EF1E28DB73EB2E2ED0FAEF8EBFDEBF6758F5B746AC3DC799109E3279C7D76D96187FBABAB6B162EAA3E7641A8BA1A14D3C3143FB8914A04CB0DF40FAF1767CC513510A2661A52E484E1261C35B53BBA51833BE2ACAF9C71DB4D13CFFF5A74EB8E25DFFFF1CABB1F3CB07947CB9EFDFBB6EDE969EB325E071F492681527291C6D4A7A353E64EBFE88925958FFF75DD7133760EF6050B3D1377B56E3CE7076FFCEE4FAD40A10603B5DF3D6FDC3DD7C44E98D50C78B3D3110A06829190271CC487337C90FA43140D3F67FD611DE7FB22AB7E79436363274E919403F7B71003276318E85630F887839FDC1647AAD34A6198F16616A722B62D771D089C4EFEC4000A8627236676833F42880CC91D421D9A0D214D06D1C0359C477E3180551E8041B8C4817490A3F4C859A802FA51192F2FD6996A12932437CA50A55FE6CB8B77A3DD7CE5EC9B04A9389CDC35C6A4921237AB8040EFFF4FDD06FFCA0DC0F726670F68FCFF00204058533EC3744707889BC1DF868A0C97C606108CD23C6B38309A1B5415832808E47947FC7CAC2786AA22B2A5F815916B2209EC101559704985EE8296EEC46FFE7CCFD6F7B7B7F467DDE3A67CE7A7BF9E7BF24925D5159E20989A02449D02625D74145061C6398CE1F2F0A6906304C60ED1056E0F423A1EDC42524EADEE24EB84ABE3823CE26FE4A008A4842C13365B5170EAE2134FBDE6CAAF5C752538A19EBEE1A657EF5ED2B17557BCADAB65CF3E664CD1754C5E132AB3320A273D90E94E75D54D6F387BC97F573CF49775F51100FA6A071D65CB56AD3FFDE2E72FF9D5812DDB7D25C5732EFFD18C476FEE3DFD98BDF1AE64573793ABD13A124004D18C8DC942AA27C7074A5EFFD9354DBB9AB160C605557DFF82F913EF85F13FE2EEAB5F21E55C0DE092303DC35B82267CD1B83B15EA6B30A9C4C1705FD3C94C5727FD95353D4E2C8DFBCB5938DC52383F746361E15BBAB8B79D46FD09A9DD70C08FDE068C7528997738E26261BEC685D5D4D7EB897D92C116AE1CCABE69DE48951B555AD5468827C41DB62D90BB030E0A91FFC5164067ACE473E50C29A0CB2608B38E550025E6AEDDE1A260B2AB87F59903A2DC174B705A45227DCEF5F38DF3472281D252B08CC057A5D00713547D3EC138747674856BEBA4808F14687347F7EFEF7AB8B4A47ADC490B7E75E555F38E9E8F3B06DC018EE50F625C3675AA4361A480A727CA63B04C9364D3B4549AC4486435F9044C825B41835BB81CAB5C206C1BC1E7E10B9A8FDFA52E157728525733E3CBA75D70EB4D879D76CAD6F5EB9FB9F6868F9E5EBEF3BDF5A8CEAAF49DB514943915D940701A4FC7C6CE9D7AD60B0FB65D7CE6F681147CB07AB7AFE1EDCD9BBEF3CB8F6E5AB2F3A555FEAA9AA93FB964CAA37F6D9D33694B7B13B86865A0A58A44750A5D687B70EA0B7D256FFEEC4F3BD66E2671A38A2F017E340ADA1489A5FB278BE8969A9E19222116805C1AE602A23DA05C20AA6A8D70AAA56802F974171591FC533724B789A224E747B31E0D7E05D0153D0F6E1F921634CD44E6BB922B4B99D3BCE49A8F706F3D15A58C77260F7EFD860DF38F9E8F0D673AF7C9C5E707E34335D1EF0809B754BD65190ECAC0E43CE415FFAA0D60F13E98E6213E131500C0FBE71C50FA4013CA83BDD15E547AE0E4429F21F509F9E4BDCEFE9CD46528138A8E100A2A0928E305B4D8EB0B829516A369A916930626080D5F046E195AFBC98EDF2C79EAA445A7CC5EB8E0D433BE041381F7237124120C69C6A1013E4CA2F60971278524BE0D2129485A48B129D4A345152E9C84FC1ADC64CCBA4A83FB167A51AA306ACE289331F226472C71E2BF5FF2952BAF00F1E233D7DEF4EC7FDDB0FDAD7707FB06F07EF2A8D8DBB06838F9966660069DD9E32FFFC194A5B77D38A36667B6172AB71EB33B1E58B6EFB2EB56FFEA9AAE1D7BFC1515B3AEFAED512B9FCA7CFFBC4DCEBECE684F1A19261006B316E71E66EABA82A0780BBDC7862B3FF8CD2D6B96BD81AB62E44F3FFC6B6E1F331D30AAE75D5A16757A4E269C3238947B68840F4B8D5F50654C8D8A269B8C4AB5B7301CA1010B82E61B1A2E2E2926C23298E2A200F4051A26FDE01080DBC66648D60AC3DBA8CB6FDB1E386705E36A84141B47DDF8D186EF7DFF7B5434D023F3E421E517C57DC4ABA77589AE132B2F497F17D9D75237423ECDEFFF5A0BA0CEDEA2A2A17343C192B5173055AD032D2D7057A2CD6D3CC8D1D9B8630FC619D1D444E6FF202A70A67C124C22513F40EA8086E7BAAFB72888C3A152B467F73E47A4186843E8EC15EB37AF3910FDF98F7F3679DAE46038CCACC318FDE881DFC9C5486A38246981140345073E0886168A67858A3D408BE84BC46634546942312423E7250121387E4ECED3E6D44CF6C2DEC11EB7CCFA1C1EF60483F3BF75DE0577FFB562CE9C8F56BCBEF437FFF9C9EB6F638BA2EF8B84D278B41C6AB3DF8D3681DEE209B5E73E7967FD23376E9C3B762B32B13ECF98B28AE2E5EF7C70C2F9AF5FFADB9EBD07E07D1D71E1F95F7A7DF9E0A5176E4EF52244A6F1738C8C223549CB458744147472C3C4D8FDCF3F77CF52EA4466B40F85ADE8142328A80A88658097EADBD5C4D4BA458685881D1BE25E66062EDE3024EA42A52169A4BEDE04F0B59A629EBEA1EA873C15B64D811F65CD617126CD4462786F81450BEACF3CD5336F66E83F7E5872E434461D818328EF4073F3E419335006D4DD386480711BA9ECCBC4D4B207E4AFF6DCBFDAC05632DA4A417E4665E0FF0E0A21674CFE5C16E69B01879D9D7D3D31448A252511A8DD8EA6564726837E71697A4213896A0832D4DF020474B943E515FE92126A208423EEF727F3DD650DA3D16BF8E447DBAB661F75EAA9A7203FC2332FB06E24DB8420A790CA09E2A1241426161A912E0170385693B88251691A75A6855B9C75F2DA508F42D991215A3ADF4CE945595C19F89C8F109A8D0C3571C33DE7A1353C2F68CAFCA317FEF887877DE3FC0D2FBF7EEF253FFDE0E9175D59E46D083F6C67E8A18206D22043833D8968CDCC095FFDFB2D339EB9F3E3F9133F4877651DC30D4591EA559B369C7AC1FB57DD1CDFDF8CD7CFB9E8DB0B563CBE655A7D6377671AD34805D7A04483AA73F0DBE6568EF2BFBCFE8DA52F93DF4DED015962A743759CF9B9C471179CBFCEB1EBD1C4BAA4218DB8CA2070795DC6F39017079D94C1B2B8F20A4379C152B4F61478FD68B2EBE8EE4EA653E2B963AE8C375CC419219EE92621F9D0E0FE975E418FF5AE8B7FFEFC955751C8058A097457E268798E183860C4A392D664D5A32F9EB02DA5AE7D1FBE085361321640DB03E3191D4A2CFFE51B40EF63750E54B943FE078E6FB4C7914E53420C8886610CC0EB7064B37E243D39938BDA0D7C7C5A74A68615DB2A646754B54D263349F0480F7B0381383A4F8BCBB7B577DFF5C6EA934F3F23124693973CA0D1918406DA9E0912D9C921D8ADC743A91E44D5E83FC7240DF4A1A3218B579AEE3CC7769CC957F3A9646A1BA57C002725370DCD274930DD52B98DA028841DD3F560C94FF19DE4F8540277392E36557155C5E2CB7E72F2CF2F43DDEDE60BFFED955BEFE9DEDB24EF960C8ADC3749BE0069830A5A6854E5A9B75CB968D5D28E4BCFDBE10488DA51E3094496FD73ED715F7BED3757625A42494DF5D71FB9BFF28EEB3E292A48A412EC2893C192F2ACC8CAF4E2CAC297D6BDFDC84B4C7AC5EE8D908ADAB8752D321E763C58E63511A8161C6A0876A2CA0E071638C2E48617FFB9F58DF73ADB7A1D8545799E50D657F6E203CFAE79FA8DD6E64E546DD298754B406EB473808A98BF9382A1D5104769B0389C4D24DD43CEB64E60B1686B41F9D0280D0A0CE15B9AD84ABEA1E31A1A45A2424BC51BFDAE6DA9DA11BA4220DBC294650FB107BEE806F8DC82C267BCD1FC48DA3F93246F6F7020BFAB7B209E8CC6137EA27AA6BC0A5EC15C86A46F01F561AA649E5E41C5149251B51EF085401984CE2FE60F5DBB71676149C5CE68EA9C2F9F1145F5004DE2BC8788AB8311C5245A6067008915BC209A568E495D14BF42F4D15B03DD2F8E3EDF1A35770FE9756EC251EB4FB84C1A028D9A4461A028505A5E5251518E33824C03B90E636D2C81C1AA8A53A13AA8982807272380D66069F1D1DF3CEFABD7FC97CBE77FE3A6DB572F7974FFC7DBBB5B3ADAF63501FF63D277728BE189F7A245D39B3FEFDFBE517FDF35EF8F0A463141D9E1181D29AB58BEFAC5AF7E77FFA64FF0D2A98B169CF1ECC3F1734FDB974960F5CC9AEB394379D36A47E7AFFAE4DD875F840A65C4826E02D671B31A49A118518CD6628B40E0050790E39BDE59BFFCAE871EBDEAA6754B973F7BF52DBB5E59BD7BD507F1EE14CA8EB8BA8FDE7AAB6ADCD89D2BDE5A71F98D608723BC064A36FC41B8294442C35696E75939B162DE1993F7AF59170085965E67784DAFBEB6F2A87947EB5961BAF9525694882155F1C2006A44E92BC74DC553F690D8E4C50F2DB95F2808FE9FC9FDC14761F58FF43715AAFA9B9A9DBD49A46E2A6B2A2091BE7004040D45A565982C47835E9229B8E2CAD6F2A2696F8E10D47D0485A331DA786CDDDE18EDCBDB1B8DCF396C1A983680C281CD55187B6A26E6BB07201D909ED80C009DD3401E126DE8724CB5834CF26BF30AC91E282C2811CFF0BC25224240DE824113429DA92C2BF5ACE4058341A0F46A6A6B6042600A526924AF13B83C15162BF96171C2F973E80B889E8049819E441D6BEA29272DF8F94F0BC2910D4F2CDBFBE67BD1FD6D2DFB9AD32998471DA36A6D47D62019AF9E3AFEABCB1E48FFF6A2F780991EE8C7DCBFC98D3D1BCFFEDECA1B6E419E04A3E916FEEAA773FEF1407CFCA824E827502264002CF356D12E1F575A39B876F7FAC75E85F481B2C732028AFE4D906C4A1669F948DFBBB299C175AFAF7DEAEA3B96FEFC8FDB97AD1CCEF44F5A74ECB8534E3CEBDADF9F75DB35A7FDF1F7E3E64E179F68DEF1F3E67CE3CB5F7FECB6F9D75E9EC90E2688351EACC6647ED1670A0C91DA50348FA700675634A621B67133B45B6529FA40D8DC0E3BDF79E79D05C7CC97FC1FBB71BA2159866AB377A6E2778A0E992356A54A7466D45E20B01909D910071B81CFD900F6F8E27FB10FD47EA5623B6299EE9E82EE9EF6A6D6CAEA72849CA274D0204B252DD4FC293AC5C42EBA5651C20C6261EC2110B050B7184EC1CF43F5AED9B4BB74DAE4499326643219BC050548E8696AD9659E29AA037B0B9DA00C52D91B4A62C2DF47661F2199D247F90E0C38254257CED1A1D88554B5723AC5FED0EB11DE4908CFE35129D024F112BE0EC0F222C591B2AAF2D2CA72F467E29600798382B4662FD31EACC43F42E2CCA000DAAB2ED7F805F38FF9F78B111436BDFD5EEBDB6B76BDFF611A3330D97B91E4B6AE026118F86032939875CEE253573EB6F594598DE9188E39C11709DFFBCC8BFFF6CBEE66604986433595B3EEB8AEE4F73F4AD795F7A22B009946769C9D48446607A6D68F71EDED59FFE08B981F3ED0DD3D108BA2AE4E6D004295C52E3E0C2431F339DDFBB6ED7DE99EC79FFAC3CD4DEF6CA89F73C489D7FDF6B49BAF3DF1573F9D7AE2227F453920EB34DF4880436CDA89BC9ADAFADC534E388E5A2883C1C8A4F1055EE2A7C123833DC17826DC0B120297A374EC684F470C71CAA823C02B83642BB223685E88718BBD0C0BE68C110F8DD7A495B241F5200341E5EA8280CE8BEA7AABF5AB718A8C307EB10D9023FD872A227C11EBA1FFD1493F88EFFE46705DC5DB3B9097006212D7008466ACBDBDABA5A5ABB919EA913820D86DA0F99930A020998C4589299169316146A8AE99EFDCD7DA3D7DDAB431E3C650132175A052CC4B6DD3C8DD17B80B22E18248C8E5F7B1D329690C9AE00FDD8F740547AAE4EA047D051E927E9DE1641F55645D0609AB2F417CB187CF48262E37F2ED57DF190C871D08D863A4AC2452568AEE58B2FBCAA150F3BD8C8B8ABB45D68AB09E597CD2B863E64F38F34BD902CFE0DEFD5B9F7D7ECB9BAB318217D503A02AFA30E20945BE14701F64E0527DE96177DEA957FD3AF8975FBF5998EEED4B070B3CE3DEFEF89F277CED95DBEE25E7CFE1283BE1E809B7FEA7E75B67242A8A00D226C6C8AE68417938AFAD737C4D7D767BC7EA275E07C9DE4034966D6D198AC5904AA38649BAE6FC77DF58FBF84DF7DF7EE97F3C77D7A3CE4068F6A5DF5BF01FBF9AF2E5D3021515D25FA906DA713C203F0B5F22A858D19843E3DDB96BB7A3F140BAA99927BA92F0C2D5842CFB4A4BE976A3313A1CC28484E49B1F2486060353C602A784E5C42C85D10DA361DF0D57BB78A4D28BC9C3423418C87A28FD60977913235859D15C47C8EE227EEA06F89FABFB431F4A0DB4CA1E6844FBF4CE4D5B46D756426892E071E04BE07A14317E92FAE7E40DFEA737D1C459028FF4251360FD94DA11A7BA871319547C28B495FA3096096952E21F87D1F07A31AB9A58FB082D07B787EC391C1E883892A590774C8E0CFB3D012FCF8A273F471C54360ACAEC524B16FFAA6458984170C3C959E200453BCBACD1710F150A157E1065EB608C7056EA08B207F81BEF286C4294DA0A90D0C40533A675C813F44D39E184E279C7B820A389F4AB4B1E7EF78515C0CD832D88E6EDA5D2F1EE681CA8FD14E0700300424D5C78D4592F3DBAF18C23B7A47AF001D31C3EFF2D0F2FBBE497B1CE1E6216F4148EBAE8DC863FFFCE79DE29DDD90C5CB4E1580AB6D5D1D85AE7F2F6BFB5E5EDA756516C0EAD8D221DD66D7060FDAAB5FFFDA3FF7CF591E73DA3C71DF7BBDF9C7DD3F5877DFDAB650D63B83D804E195F4C50490A8610E526C4A72A4141BE2F807C332236D8DF3C5F0112052CB39CCEA144338AF78E745717A76C1CAEE2E23C9067F5A43213AA07D1034450F2C1E6A6031829095C1E2C0071780911965E642DBF397A842B02DA162B9564DA03748120F7B711D24DE8AE83657DE433B6BBCDDFFE274E109D6026ED8D479B76EF2F0B123D204D9B467804FB08BE341A984EE126C31C98820F7525AE01E2BDDCD00B3F964A01D201D4DA1583C79417C4F8093F1C1EC497C0F3E36EF67903CEEA5A17A6A0727A1B6F82AFCFFA1E31B01303F2804AF77BF2C301CC94D7765554BB0047F9B3D95AF0CEB0EA306A1D34C9BE9168E5E44B2E5D740E7C01482CB6026F14DDC0A162633A34E53B18144446802944690BC2F483122712AE9B36BD6EF69CA3BF7E5EF9A8B16F2D7F75D3DB6B808FA2B6426CE6E13CAC15B40672B2A0001EC81F3CE7AACBEBFEF6C75525CEDEC16CA9C73769CD96374FBFB075CB4E6C2F403CF2434575DF3AA7EC86DFECF0E54791768396C97796F9FC878D6A70BEBB6BE5E32B711A6D2D1D2B1E5DFED00DF7AF7A71F5CCF3CFFFE6ED374F3DE9787F080CF54E4F2088B426402908E1B90D8B2BE17426484B5037828940554695AE968A0334D788A61B1570C50469670625115C876639028AE21F558BD61FDCB9C4EE8EFA8573C8AE0E0EAD7F6FEDB10B1752398C47A432839EFAC18C6E939F0CE65C701DCC20258050691CD45904B36DECD561531AB0BB40F6248FFE289B39F95F3FF89486B22DFBD179D5B3674F082DD2900097BBA4B22209E2344AE988BAA57A92C815F9CBD4CADD37088220D845DC75A831AA0502AAE3C2DC411FA038C511D4BF68C829A8448A42AEAA5A67117794E7630E2A0269F275A0F039A2A540147B21E87147023E7175947369E255916CC98618C56DED7D15CACB42EA9CA1CEB450F040506D1DB6531382AA19E96436871C80CA980899CE40301152523077813EC4E92CADAF3FEAB4D36AC64D58F3DC8A779E793ED11D936C252C4C320EB27D0A33129954C3E153CE5BFEF0F60B167F3018C7A94CCAE46DBFE0976B6EBC27D51D87A1C17A85278D5FF0F7DBBACE5CB42DDE030F12B61218A6231BC6F6AF6F7CF0DA07EFFBC35DEFBFB765DC99E79CF3A76BC61E399B3983A9F9AE0023CCC4CF51357266E321FE95BEFE38E02ABDC494DADE9D6DE9ECDBDF9ADED732D01D1F4A00C94B195F2800045EA9AE6E34B581DB18FEBDAC00B631205E43056EFFDCD989C626A0B877BAB3350D63A086414BD3BCBFB9BA8E26AE8A0C923AD1D87FB5FCA63A295D380A694BA10835036A64842E1D095BA449872AB7C81E0D7F5616480EA5C35775125616EAFF2331AAA276001E5CD1CECD2BDFA8280D039A0E0A8DB2D1A3D99700148DEC28928080A0EB5A394666804913E4AF3454192DB3E86D8573C139D06CE38136B0FAF4FBBC45B5B5C4A08655EEEB4B42D8FD7E0461444103F30AB83025F8C56F216F085A0923B4F183463928D9142FDFB60548846D1E91A6E3909C9B36033ACB605F01D158D68E523E8FEEC8171E04213A9003E95D6606FEA9E7C57C3127409E37143EE29453A6CE3DEAE37FBEF9CEB32FC43ABAC4EFA5864986C083F0A86FB8EF4BBFF8E1BCE71E78A3C687A93275FD79A50F3CF7D61917B56EDA01101F8E89A2D79C8BBF7DD8929BD7B887E2895E603680433EAE7A94AF2B5533EFA80BEFB8B562D2449EC5426E28EAE1EE020FA48F3AD2D83B47DDBBAF3396DDD534B8AFA37F774BDFA65DB1E5EF342F5976E0A687DA6E7AB8F5CA7BDAAFB8BBE37777EEF8C99F36FEF09AADB73D8478005440D9381179C0CB9462021548F2F3E127628D06F39D3D6FAD2D0C148E3BE1685C3136403A1A2FADACA40E1093FD57A908A33F04A06E09B188A6944D6CAAD6A04B6CC18009877546C178559F19046B28EA1710F0CF8EA1E991D9B777DFBBEBC285A84C1129E410884930E0A827466A066C0E1928F92C20EE42650363095D61E063D81B428282E54BA5C035E3F0077CF97575B4947CA9BD99ACABAC02040A80AF41CBC05F958426E41807C3F6F215BA82C0C7483545E5E8656FD8459DE7F052EB36658BC41F93D2AE16E7432C518EB155893BB124BCBBF44E13ED41FCBFCA1FE268DBEC42EB4BF6906EFE93E81B917D51D1F4858B66CC99DBF2C9F62D6FBED38D6C01A503A8A510EB8C8D904CC7C33525DF79EEA19D179EB6A1BF17FB674A6678EFD77FBCEA9A5B20FEB848F8D6DE48E0B4BB6FDABB68EE7E6AB7C8221F7A7C5D4376DD26B431141402540BB71E36135F5475C1D500599486A98D25FAF7B5E4EF3CE0DEDDE4DED9D8FFF23BF9AFBD1FD9D55AB0B531D4D91B4AF461A04310067768A8B4C05B9DE70AAEDBD2DADE89F807CC5C74EEB805C06831850F7A783168C18DDC775565E76B6FA5F3F38BE7CFA67227C62821294275929C08D502D0580A48E9751DFE0A2A88FE575A5F0DF3D076C036F655DF2B5B46E80B15C26CD23D322BFAF9FA5F4E6428D1DE966DDC936DDA87F6764250223B5F56DA7DA099F17FB0E9A07DE8430B17E17CA8810A0A8B6AEFD2814E631E316099BA85F2D00D02EB1C2E2A7284C3C0094BBF18A24477558D1B5DC212D28A6CB1102223E42F2C00D162804BBE54CB557EB906BC519CC052CE3FB0E40B68CE54B12C0F28D721B2320DDAEA2A1D63BF7F96CD65EBA9CC0B7FA2151D2875CF918F967BB313C88BA2BE2F17584ADD45A1FA1933464D9E9A174F776ED9D9B9EF8074C3882E448364BABFF7B4CB2E99FAD4EDAFCFA8DA050A2377E1A8275F79FDC4F3D62E79D201CD0B5974E61D7BE925EE9F5CB42BDA8DD245D0E53E79CCB8377E7775B2A39BC023322907FE1B4C04545273BBE3405BDEF6C6FC1D8D8E9D7B0AA3317076229D1A6DEF6CDFDB08360EB899AC2764F9B854050AB38181F1C72D009398287E9A1023F0244EFE3A107E1D3903C92FC7FED696AEB6E094F11429A7D2DB3FD97EFC89274B50660B38B590F1AAEA3F68B967E7478809B8219B788444654B5DCC2A8D8DF82EB7EC73378078039FA6FCBEC8AE51093F64785BF7B5AF7DAFB80AF9630078BC0545A12C984E328409953302728B2A50008252E684E0FEC2174DF795E1EFC80E413E5121468A03F675185C9C7C6E340BC3E7F714978A00C906E04C03CA5B9889813176C02EC3EFE13BC4A2CD92CD1A5F209E924512952F9428967F34320AB6FE62C1E5C4542A0C7AEECBF5BD53B54C7C10352288C0A86AB13616F687B206149B4B8B259796717EC806F87DAE60A0B0B804D446A99D8DBB5F7963EFFA8FCC9C0EDC7E74F55736545FFCC8DD45F75FF7727D108CD233B38ED2DB1F7FEB1B97C6F6348B7B39EBEC33A62FB9351609A77A5137AB3F6DDCF8277F7A795EDF801B884EEAA1CEC3349AECB63D8E773738D66C187E7F63DEBE6624AAC07BD1BD79575F5714C49CB80CE47C89D36110A11C95DA2811278015777E2C9E242CDBE0706F6B57BCA513FDEFF427DAA2595F4D857BCC984F5E7D63B4DBD73BB5A17AC258AC615F3C7EA0ADA3ACBCCC2A42EB528C8963254742F51ABDA8DC2740F4588A1B45C1168DF42BDCB4717B94376F7B42BC032B92531F7EF0ED3EC4E6B0BD21D711B20C83128DC1DE96E6A15D3BFBDA3BB8A7846E211C4DE800DC4E4A2610E7A90BC87E1AF742352A9A624D232AA80983F43FC5975CBB42DD00F4AFC84880FEAC201C225E060A3487907EC7DD9073E1261652641079F83B8A88809594C8BFD2F68216921DC13FF10B6910AB062E291BA2E101B6685679ED46D6F5E57ECAE28823830BC0104588494E5CA1645D337DD8BF043A265F6A781CD5EA781BB83137DF152EF296578442C5916476DD234B3F7E6D158DE6E5134322162893E973677EFFC5275B7F71C19B8E14AE6D5C53CF9EB37FB4E2AC4BD63EF12C82F3CAE95366DCFDE7FEB163BA9A5B0F1B37EEA470E9F2FFFC2344184D12A9D5EBFAEE7CB8EFFE27E3ABD6667636A6761F48EE698A6FDB13DDBA0B4CE70C42C9F781E581736A945BA09E6C9E424297345452527C645D4D1A23680913CA5FD43F871B4D0A2D347E8CBBB6B6EDE17FF85CEEC8C90BC82D1A1C7CF5E91743559509B4B3B2C4EAD1F6DAB4597B40B987E25648BFB5A06015479CF67F441DD90AC3CA4752D1B32D16388405B0A2102B1C51BF7DAE2DC8F1FB758892DEBE35F9F19640710419650148CAD9D28446A03229E34EFA106A0C3C192884518F36A0A002FEE691EE54BE650250FCE4C5F7D2E221E063F9B2C90F0E95E08305A749511CEB090F0D68245F43CBBD7E706F8B3DCCD5A97AB207421F674B37EBE4A7C6A6EB95A03F69ED6F6AF69606D1D534BD8F28F1EF228A2EBE1C0BE0A22B0CFA6516F587F18EB45F04EFC5948568450AC3215F4DD5707118E4DA33A74DAFC973FEE37757EF5ABD96F1ABE8B9E803AB443A1D3BF9C2F316BFF2C45BC74CFE30132B2E289CDED63B74D51DCFFCFC0A0C51F3D5544EBEF3FAF4E1D35BF637CD9D3CB97E4FD3ABBFB93A76CB12EFF27FFA7A12C8FBE0848956831214A0101D045213133DFCA12053D69139C3B901BD8BBB80A3E14195B4E1BCA6C6BD373FF7F4B84088CA9E7817AE1A1810A0BFA092021E6738D4DBD651F8FE275DF979C50BE72130062BD1A6356B8FFFF2E9C485C5426B3202F630D65027722CAC5C7E292251DF99F27D941DB0C7C1B66D905B1F160BF019D26CD3623941C941DAFF60AF5FD7A6E1FDB7B44457BE3E9C4CF94B232868415420B292B1CDF6C6D1DC2EA35E0838052818F632BE339E07C7575C2379C3408C6053A0BB3D88B1A7D98CABB6360BAC41B60FC85E8020F25C85B4764C182F14C24877C23D158117E746425A2DF692AA5474C3B22BD49FA4ECABF58E926C49D718E56FCBEDAA94B3C960EA0C1E79627A8BC81C04C8870C0B12CFD28E71312A5F4ECB569EC8DD0352B8D42FA6FA375A354B4BDCA3EB3B07B268973BFBDC73363EF0D80BBFBF3ADED4820A4B5F2A998C76F7B435B99D8317DE76FDECE71F786D52F9DE4C6F99C73B7AC5DB2B4EFAEAFB77FFDD51E0997EED15F9E77F757F6BDB9CF113D2EF7D18DFDDD8198B77A1E696486049C07E8794003E5A18C909E349CCCC80C4A28483308120E2B89DADE9E4073DED1FC63AB63AFAFC679E080A7B807ED19B87DBE02F0A907DA0402E0DDD563871FC07772C995018E80C168C9A3401F6E4E97BEE1B7FE4746AB666C160DCB5285049F0E48AAC1EC98157C0F650239B441A1465987649F189F430405BC3A421BC33BBEC101BE09092FDB9BA3F47F4354C0027D0F9CA2BC3D128FC78A2EE44C91329B5542A138B67D1E18ED18E5CD8C049803B071130616FB820C0F43444D286C34ADD141D58B002706C3281200507DCE60766E3B4C325A10F018A40A4092090CB49148212D4F2D194EA57B86AA9742981E79897DD7FF31C19240A96472CCD484F50D900935EB62AED529791C0C0E490CDDB45A671660C0FA5ED292D29AAE86C2074C67F9250589785F4AFF4F932EA082DFCAE9A9AF63C4757A67FF1F72E1A5B59F7F2C5976D79EA059A2082A279B62F11EDEADCBFA738E2BFE4917B927FF8C18A7ECCDC778CEDEC1DFED3DD2BCFBDB86BDBCE8673CE1C73F37503A591C3CACA9A5ADA40BD08EFA6345C140A04706C083A391B54DB76635E2132CA58620C416DEDEE6E1C4C0F9EB330FFD7DF6EB8EFBF4E7DE19E45CFDC31E7EF378EBAE09C6947CDEAE94B79037E682EAAFAF1C0BBCE9EEEC8D8510930DB2D598A5DE33A792E2EAFB5E900F01EC79C79468AD82FC99DC795E929E9265255A038CBA5646C1CEE50C0EFC1F41125E86A603E45058AB7CFE0846C76C46607E8F15916E073C4DD5EE5D2D90F0B94C4F7BEB7B131BB7913783C50F37717875C4CD483FB8DBE47E4A1856E90553DF1D7A2B517764011B2822DB517C85EBA14F92CB482854261445150FFB84A417140CD0D874AB9724E345940F5600320E41589169956526D03F5A8D057F6850A462DD48F344829B749D281CAFC1A2638F6504D5DCC522ED68387D9B0CF2B11B02D20B01EE27049F380663C937DA2BACC544DC11C558DA3D4A912E565D1E742719497A54B22CD994CC5EC590B7EFAA34F9E78F6F56B6EEC8FF78AE1A2F923A944ACEDC089679EFC8D55CFAE3A624C633605D072E5A63DEB4FF8FA3B975EEE0C86465DFB87B289E3CA0BDD9D3D5DC0BAE1B4104B10F90A2670067C1065F4A0E22B3334E0AC2D2DFCD2FCB25F7E7BD2F5BF081C33CB37AA069B10145D444D9D4A77B6B534BFB7214EFD002AD986AB23DFD4935F78CAC9DB1E787CACA370675E5FED77BE8635BDF1DA6B674E3F6CD0E7955CBE788FB26EBCA2C61E5A3073B947CCD141E96EC418D4B761A1B2E45EE928383718B072A6BAA4F0E91BC0F6B19FA3F36DE1AF6DE7926FD6BA6C59189B14E9829222680E227B130F019950428A2B74134E22E0F386C01100B40F756C0C82C88D684085EC88B91091FCC1BE1F0059A7C72B9E09162285D4B1DF4F6E0198E1D06105B54ADE299645FFA7532DAAA9C6E6F7ABC49DD49C6CF34F747248258BA8EB8F11EDB8BDDC936A15619869C7544A4C114D218975524A884B54124FADA5A9A4499D53E79D38CAE39DAD4B356A39F511988641BD51EF133AA8F017B9308BA5BEBAA3203F5D143CF9CADF236BF68F7FFF79E20010692AA982378206CFE518F8FEEDD7FBFEFCAB7541BAFB55BE90F7C5356F1C7B66D7CEBD13FFFBDAF2FA9A22976BEDFA0D6D68D81822088624978836C6E7E91B5D995D34DB7DD6F1EE99939C95A5E042E14176C6A190DD48A51E941AA81D4657CD31633F82844F5DEDD053AF528877D251A3A7CF68693AB0FDE595B34E39C98999067C73782F2B9DA35646171E551254ED012B4707E66C9044091984E26262C638194368FA0472EA622CB8ACD03E6503686363573F873602A6E0A0BC617DCB70A3DADE595DB077378A9989740A7CE59CD6A4BCBD000488C4485A7E9127A68E43C23923CE45309B49F442911747303E1FB050FA809E2888520A52E0522D41BC4B0B0A0F874AEE8130674794CEA6E09075BAD4A02C22554BF1B3744AFE8744DF968554194723FDA26BF4AE41BE0F21076F48B3E9A9099DDD569DB713F56D4F6B8AC42B0360FE518222D26F7ED64ACEAE742CBF2A67CDF927BDBB65C4064B21259BBCE5A5436525EDD9FE79175DF0E55FFFECE51B6E89ED3B400805C5E349CB063CD1610BE69CBAF4AE4F66D4C6FB5270C2AAFAF3777EFBB29D2FBC3AE9F7BF98387572A9D7BBB3A515236A863DAE74755976F694C1E38F1C3CF3B8FC638F708DAEA27169683042B71D7AB8C84A133E855A421DD47B8CC9CD0D5327819A0FD4D9DCCC4E4324818D0B1D36BD63CD07FE50B8676ADDD81316E24FF7DDF6D7738F3F21BFB2425A25A58EC8F31F9446519BDCF237ED5654BD00F67EB08F2095BA04A025523A06B4F46B1935F051F9F9D3EB0007A7470F728095FCDB3A1174F088CA7647477AF90BEEBCE14C343A148481E37E0BE072B118181A0ED03F9A5418EBCFFD61447282B426FE9AE8E9C2942B519BEC8B3B530093E45113B91BEA3F10949D0BE14B64B29E488451FB14F58A64D3BF2CF65A7F9BB95626CF63DB175AD3EB3C8FEAD733A68343646A09C0562C0A4798AE54B82A680999669DCA6B0634AAF7BF4DE76B4766A47AB165D9EC9B87AA78CA1BE3F3D20AC55E7433B1015D161481FE008526025E35E07555576CEB890D17977DEDF25F6CF8C7F2D58FFF039CBA2A69C2B708D7E1F2179E79EF8D033F3AB731D18D03D4945566EE7EAC75C32735DFFC6A59410168DCF6247A9D5F3E3EFFB4639DB3A638C78F72848B206E34CA89586408E72CA725EEB6EA12C6D09758EF9EF73F1C5556867B813D8030172D8EA85D14CC9FDFF3CA3B3E8CF4FFF840FD71C7343735BDFFE4D239177E0B554FB5398791FCB065DD75A2CCA88991BA40B3D8555796C6A3316AD3E0CCA1DC20DE0374B7C4353A2815A4BC2C6B03E458B1CF7C981798140847D9B680BBBF7FEF9D7716A430FE6868C0E3463786BC8B1C34A63626B40B355E10EE9FDF42A066982C74FAD2E8140045010A21B60F2A0923E1807627F49D80E796940D139AC3680CF9833E2C2B5508D8FB27FF87F23D8CB7D4C91ECBAF917F94BCD91D1E6D01EC8EB94646683746B2AB21B507D8D3B4AF823DC49215101521B46C5AD095C762937E556B30A6439D9E094FA4094A5740B59DD56522F5251B425C56D922F80D8EA0B7B2A2C9E9DE168D9F70C1F90167FE8A9BEF18EEE90620978DBF1013A1C12B3BFBE26FD4FFE5F21D9853D7DD1DE8EBCFDC745FE30BAF8DFED177ABABABBAB7EC02EE9478C4C094C1E06761122080B40A8EE8BCE59404BBCCFCEAB80D783DD5BA23A1224A7FF567438B8F6FDDB2A3F7C1E583FB5BA363CA82F5B57FBEE18685C71DEB6DA857C474BC02A2A1EC3A4333B06803602F98687D8B2C462615279782EB629ABA9E6E1431824BDB8E94CBF4DD31156105873ED8CE7EBEF49BA7B49112C9C01A6C79E861E79E5D8079E2311440F144DA8189D493183698225B9A4DA922462CEF40B8819C151D5234290F57A8585CE13E2592E89644BA043BC2595A423A9139FA603ABCD57524F00474A3740A005C4045DB3C1C1DDEDA93F85AE26D26CEB82B395B45E7658CAD909E1B27261673871AADB490B548886C236BB23496765D8D27941B5C695747E744758A5446F29AF89D37028E4BC497AACBCCEEFADB102F72163A518203F98B4385A31B36B5B61DBE68C1A4E9D39FB9E1B6DE4D5B063A3AC9F9654A41787060A1AE5B78D4D14FDFB17B5A557732E92B2CF4AFF9B077F5BAB1177DA3CA57F4F1F57767BAA368ECA28A0D6E16786840F440D4DCF07FB490729E4EAE90E22268B97C06C3AAFED2FC616F61D1A9277E74DDCD453E6FD23150F6C3F32118CF3CF1C4E9679C069362B36C16C6D67AD89C439BD956E1804A28E7396AAACAE398A345DA959C6B38A66C0F940530D29F6305F89BCD05FA02CAFF107F37D521E50D0DED5FB366E8ED558063A291DC5D53868E43A172900892C6E6104499EA827831720B1884E846E3220ABD2274D4CBAB32E0008766301E93981D8693A061433F878833EE1D902B4541C805D2FDC830210504F0A7C1548BFAB6968CDF64748BD23046E973968EFD09BD3DD49EB18E638418880C6A6E926E5486B8E8904D73B7D8D64827737204DC96DBCC712F735EAB033E1B604995B355B0C8700FE576F24BF1AFE002A5662C750EFA063C4843C3871D3D1513C67EE9E20B56FEE3F996B7DFCB52AF9684E0740874F5BB8BC3F36EFCADEFFA4BB706E860810F3625AEFD6BFDC4D15583CED5BFBA2E9B4C31431E667A63B93DAA5745C74D5CA610650DFC1BBA4501C1A2242F90EA84D44AA782679FDEDB1D1D7E7F3304645F65C1F4F3CF7DF1F9E7CE9A75847FF4286D43C857C043A4DF6810130BA95561D48A6228E302B9A838FCD90F78017905AA4B98740533E5D297C2A968D4506E41406F009DD930F7EF6059CF79C632470A59269B1853FCDB1F79C4C7E55E47C8EF2A0953A7ADB8037C1134FB9AB30ACC690DB82D697F66CFA43B875B08B606CD3C33DCDAD9E301AF1B0F57F35457014827A01D427496561064681809348F287B49F9E74ABF687EFD8B5D89A86053271B6DD29FBB07AC70CBBC1FACBBD2B7201EA68A66AD6A98E5A81F4A8368B68F5C5FD6BCC1EC11F9D91EAC28B788F11A96A3CC0F83EA23202B1536941DD456CD191E33665B76B82799FCE62F2E3DD0DAB675D98BFD2D6D8A669FFF273EA26147D511D367DD75CD7BB5FE8E642F601BCE4DBBC61F35A3AA2BB1E9E60754698F625D974892767B783C82F2BB0943849B0935CC320DAAEFCC50652946C5BCFEDD4BEB3C4589E1FE89D7FE0ECFDF75D37FFFECAB5FCBABAE60AE5D9E57481942E235B2473AE641D7C0354D9E86C688468D5B31C998FABAAA5877A74A772AD7DF84A93A0CD0A6C0580355B03C58E03F33FDA33D4F1DE8493494EEECE879FCB13031C743A5E4BB2B4A981BDE2A95E2AE11389690861930E0F2C8162A9689F800F0138D4603A565021688F526419DC78CCA79088EE89D2A01868185595749298AFD8841E529EE5BB7E12BED165389BE51FB366F435B019DABB77EB61938CB3B92831299044A9B3AC36CE27E2DFAFA17CBB02BC5229903B61746CB99E05639D4DA42A88D680AC75634A2FE60C165ACF89D66C24AAFA280FE34D6916F4F64547D5B20B46DC78E79A79CE82F2F5FF3D7BB328DFBCC7D170306EBEC2E899C7EEF8DBD3FFAFA879928E0A28955EBC7CE9D59F0E6077BFEB986EBAD2ABB226D5AC4A02E904C8AB0E93FB466E0B7C4403F4DC4C6C0D9FE6CFDF7BFF3E12D77956FD803F5BCABC63FE5F4C5CF2D7B764273BC70DC684AADD23EA124085E8E6D6B5B11EB3650AE06B24F2877CEACEA7436616A88BA51399FF84B4559388189F97A8495E8789ECF80AAAAA98EE91A196F02A59E3F2D45611EB690CF5EF5E108988E45634D5BFEFE37D7DEDDB81F3827676938DFEB816BCF9B91FC313271A9545FB42785C9173CD5D9B0322199180817A1A80D2FA67DEF6E94C451F64AA6B3D496C17B34BFAC147EA7CAB3C220A039157395C1C9CAF43D8C9204A6C8EE51986CA2CD89D19ADD7284B430C92FFC665B9065ED2351CB961141488E83F26D33F655595AA1D9B156C9B2B73A51A073753A23ADB2094AD1E9BD9AE31899BF1975283B41445C48D7F455A80FE349139C46E2CFA7BF0F85EB6A12B5A3F67674D54E993863F1C91FDEFB60D7071B980C46F91DBC9F9CFD4EE7B4AF9D317BE9ED5B275776F574253EDE511D29E9B9FBB1785B87CA030BB89F69C3C407533E00EF0DB2458E3C543DB10D81766E796F7DF79F97401FB6E70F1E7DF78DA954EAEEEB6FFC4EC598A1513518DEC6836F94F34BA18E7642084CA5D97E99754F9C02A35504FDA9158CB068E1435109C9A7CC2C070274B21212C8B431495E88A3A8EEC1C83A8048C341D29F63AC95E2125E0AF1ED09C1D6B47469187B9E675FBA4A4385A1209C3F21F28795836B3480EA6F32097DCE6E348322E94843180CE7856FE32E8875759157831201261AA532C45B5551C929A58161F025D2A7B2024225B21AF3A430494D813BD1FD25A38A8CC888A4E624796C8EBC717B2C77C77A8B156ED9DC72054F33EA81E24BB41D737722D256F0D050AAA3915E527A317B400B3BF70A58631DEC29399BF4F3D1953F69E600592925FCCF6A8DB2DBF8D98236A9A89FDD62C946B0A5B77B124665815EBBAF7E74740073CA7C334E58B4FBA9E71B9F5B8144040C8775D5D466E47097864EBAFB4F813FFD6C4F3FC634F794F7660EDCFC37E08168B3EB7E382D0EBC135855E35C925DD1923C6720E02F5ABCA0AFA26CCFB57704DC9E14D05EA7CC6D3872F66DB7DC32F340CCED752586D171C603EED898D0F8339E9F208BAC34057F82CA085B56D3D6A7253744E365F1C7AA8A52F4DC98B4A7681DD151F628D80046958D34AAE690D26F3E58BECB344572DEA1E131AF70A0BFF5FDB5CE75EFA36698ECE8F41417B9033E2131A2A3F1B04FB100E8E213E1C32549CC48A11512ED1ECFBE3D7B113373D9352F93E92706D0420FD873C93D0D045C010ACDE464D2DE606145159E47DFA3C27EAAEDA4D4B956E3C68FB7859DE65F2B1763BBED9625B0ED11F32E7E896E5221FE4370DF520063A14EA4FEA8EF8F723AB5A6B7CCA8FAC564A3ADB84B9FBFAA106B974A760F969DD3036A2606BE2430D044900A9EA9949836D3D25123AB27C2061AED58594537A6CE64FAA61E35B7E3BD0F773EB4140037450240AF94DA02869DE6359C78CCC267EE4D2F3E1AE3ED439B77ED7B6C19CFDD21B52CB43C5A64E90BBCA330C5CD9B3EAE04D7D9EC6930D49B6EBA3FE2F6E0725A8F9E34FF9ADF757775FCF9DA6BBF5251D737BE1E6C055C86523E26E34E54F389CD88D2A58E602790284F7487F1508D76C29315C545F128E8166DC26C61E02C8C84B600F6ECC3A74BBFF66029CA06410F98F553D9743A9B060024B16FEFE0CA5790AE3FB0695321BAB2823E9A7B87B9F80CDC26CF0775104C79016909E882E932F363890434090C1B7A03EA268E076C177C18421022C6CCE3F511373F05D0607B2AC27BE54AA1633D6326E29EA300055608017BEAB498E51ED825DD4A25C80B72FED57BDE1E78DAB788B58AE61FEBD94274B7D174579AF4217752FC60A62F56219776F10FCA21E8CD201B4EBD44DD15D135E2B758BB9AE716B0672F7879B965C2D2CC900E01768CCC51AB00DFE61D3A1D9EA2406AF4A854323D9C4C4F9C3439B17BDFCE258F0D22D563E0182A37E6028DF690AFF0E82B7E56FEBD73F38B82AE156FB5BDBB8EC767D055324907A96FB105D4A7E176F5ED6D868B0863F0FE35B707D334D7B0A9B860F1ED5797D79442E3FB07866B8B42C1794770E15AD7FC607F3098557AE2F8744D54A59C3F5BDCA4DC0ABBD762F554D333C1227F24E8CD701DDA2CAC2D3256BCFBB2D2B25E462C468ABE917EB92B7867061DEA18DF055AFE7E62AAEA59BF2E76EBAD05DD5DF154CA53E40349091950298F73702074A7A8CB90E843D97B3DE818A2E4B02BDF571C6A8FC701FBC1EC5E1A89AEB167E017E499D524C803C1606149091BFE21D8D7A1029A9E4D504A6AADA2C480B68F3A71A98BBD5A54D516305BC2EC752DE2397BC0EC0E6304AC7D921B1DC8471457550120C11A5F9966B5BA1A8D65AA2E366746D656E92063966D81839502D1826B8BE6953B20EA9CC55BB7F908009053A2C69530A86ADB06E027DD91506AC218EA3A1D18183BA621DBD4B6F7896518312F4BC33104B3043B88D00AF5B2AA9317941C371B1C29D1079FEED9778049CAA80C628583447AC6FCECED5D0305EEF8A66DC513EA51C1ECF1B9A6DDF08B7091073CB0A347D57FA7622C06050311CCC95355F3906BE06DC0A12DBB8272DA24A33671B76F6C2B05243B40A717F06C797929F597D89CCD1CB49C4E5AE13B1DFA908ADFDA0636570A58853E9A3ECA3477A8D5EEDB3BF4ECB3CE6C5F34162B44E2DF47A32820CA94FF821F83AF3450FB7012280C219905FC011426C84C17059D8520AEC92B2B298E7776323B08863FA37C319401F0813AB8A968800E0B777D0DCEAF90849EA6A53A4A2A4913B21A236138A85665392B26A762BB4071F495F06A0FC8BE078CD41B636057F9E6A8CAF472E05756571B8BC3E9645275C9ED5230206C39CA8A1B25247BC02EE9963136A1B1FE66E91F5BCECD7878E226192FCD00BC8914A3D0431EC5085B6059221630988BEA8AF4AC29341D6738AFA1BEBE1FD3916FBA23DDD96D9258F4C19469E1AFA03F70D6E2A279B343E9ECBB77FE0D2D30307D66C69E9230B0150C0DFB417C182E1A6AE9F0F68001CE9FFCDAB163A68C81B7F3D28A9591A1FC0BABC60E223F5E1611F7475D056D01DDF9A06FA53D94CB4D9D2943A66E84C1549957309B3B5C0370927283814E3BA8848D2D1DA46380CFF7FB29594BD4E688F508A100CDDED77460F8F127FB633D896482D857C1045808E1761506830CE6EF275CA784E718EE99848E27A02688639CE1603E38D9BC1E6C92686B1BD1A0534C0DE2684C62C6F1D1EC455A0142E4C03E76A3E98EE9DF300815C31A2B6B2404C4BA088E9FB5830E1BED291B232D5AFE73B24446AFDBD5ECC86DA29F159D9B7354A575B03438DBF2DABA582CA6BC7F4E0CD0B52BB48411E89CF0D7A445AD20585E6DF19AD9DF6105112AF1A762509ADC21DB46DD2C294C893BA42C853A9C4A9A98CF26C23CD74045696ACA58BC10B0BE869ABAA2EEC4E67BFF1E6B6E51FDEC9611A1D90779E1A2F0690B472F3CB6786FDB96652B64741276BD1C148895541AF3516902762211F7040A4BC7D6EE9A58B6E8DCD3210C2987F7F2DFFCEE670DD30B1CC334A2A102207619CAC742A2969CBE1993226BCFA801899472EA54263833F745C7E5CA82E236203781742232B34452AD43346BCC18FFFF5950085939612185CEA7B9FD80B251B90D7DBEBD034F3F93696FC7336084CD0FF99C014F01E6CF858289789C2DB2102FD3F9A9F224C200B7B3B8AEC61B2A224F29DF11EBEEA1BA98C43DD23F005E680CBD2B70139A1E2B8EA80E87817784567A703C45CAB01F58E14B5E9836802D7761D3D5D64F3699D73774A449B0C25CE5712BC361F693B551729ED05B01630AFC45A525498055355D81AA7C9311D0D1AEF280283EB09F83D1B6BC0A4A8E95A41A1F4A29364BD989707212DA620654A2632E44274F4CD8AD236EA54249BB3B9DE98AE244D00FA23928A089132779F7B66C7CF049E045716406ABEB5003C57B8F77B02CE23D7CCA31C71EB7EFC1A79B3FD800D904CE079B0787EB8D931E44F3186603940E0E97D6946D1E4A4DF9E619E8FC2B282ABEFDAEFB7A5A5A4FA91C0D596C8A04CB8E98A1C5559240FAE458419B4D8A1F700D6A66AB71719484ABC11E2A39A142670346A12649361D6CB1052DAB158A36BAB4709F0A86D3378D5E04D784FC7D62BF24BD8E5C7EE685E5999DBB41F38DB673B4850EB9C00E40207EB4B2139512CDE3A15AA07456E1C4C0060E8E4FA40E9151EB4FA6B095A0BED1CF4D524C734E7DF8B4442A0D067E4C5C44010101F11092A5C561C47D0269C3F51454D508FB806838EEA45231628E37FF393E9DFD610FA574D86BC9BAED37EB1394A1B11F05AB142A2E46F73E022F93DB9724B1A6EEC8096EADA5B604DBEC057EA1DD7B55FADDA6A4CC9ED7692253DA54826EA76154864C92E5F2653C6789060A9263EB9064408E028B3C76DCF8921D8DAB6FBBDBC5C97E8D4726930B23E08C84FB6BCA82D3261C73DCA20FAEBE35BA673FB5FB0251C4294138B99091D8FEA651D5E5C948D0397F66655D15AC4774C87DF3CD379F73DA198889FB311DF5DB67F3744081AE6AADCF672E45152BF5A5158375A7726C98DAE86A5768C268657BB9782CD4809220B680D0E2D2F3339FE202F11144FAA98E40C00A926C787934616AF3277D6BD753EA0AE0D80274DE4912D701BD0EE3E6074213CD290498E15BC353ACF1275F2402AD8DC39159425900B62981F9CFC4EA0CAB82C43F72CFDE6080D6129F843D53579DEFA5290172464381221C4708FBA1FAAD5617ADB03F4FEA8DCAB6A97FE3DE582FC89575E350591FA3EDAE2DAEE4030D57358C829124CA2FA54568F9486780D79ACDA6BABD23FC7BE3DC98BB6B0206DE30D846A94C8AA78F594E9CFDCAB55AB739564A30986D40C70266D88BAEBF89F625BEC2A1B24866E26884649871800BA81F3BAE7C5BE36B7FB806D83748504E280144565545764CCD9899536A2BAB365E777B2691C29120FE3818EAF1E0B2468BAAB72CF2CACEADD34F3A162AB02018BEEFE1C771F1F73FFA301ACC40FDE72C0AC866E554930A7045BD6BB49FBA1E69D69654994D4FEBAC82D9CCF423075D7C9A2CFF60BFE6605A23644D15461C55150A7FDA06509FCFB917E21B624E364A000F0C76AD7CBDFB6F8F91F645F1D5E7C3C421EC017730305CE04EA6D3D1286A26D14C0A6903180C8637614EA6CF0BF7B09D26A0F4E1B85018A99E683A1A23A2F202B00113F93108C0A9438047B113C0A634921FC01048CED2722E34BFBC4A123E92F8378A9FE341ED5F1C5AEE47FE6813F3835E63370839CFEB9FAD0F31F19B0AC3A1076AC68C45EB936EDB92910850488AC1C634AAAA1A8F724A6CDE794E884C7708136812A9248A568A2BC9AA3D69B377C887464F48FBA00A0FAC90C2000154D11549E58129E31C53C6052B4AC13AE60E056B264FAE6DEE7AF31757B8FAC0E45928CE80A41670DF871BEAB3E347CD5E3037AFBD7BF7632F20ED01A252C4DE4876C75ADA70A61F6DDE7CF80FBE9B07D294024FBF27BC64C992B09B279E9444F2664E2A3A6CB209CD2CCDA2CC1E75B7CA72E3E754ACA72F9982BA042DAC51106AEBCA0A1B6B2A464254172F0E8E06920964DB190421E38A55EB8AC037247BA78687DB1F5A41894951352F02ED0C0D3AE3BD03CB5F87C7920FEAFDE26207906A6E37F66941288C224D301CF2075108A0DD015340BD2F34F2CCD11BEB8D01528BAE5F22FBCEA2231E254D3A47A793CBA8F48D3B045C744E6CDC9C013F85DA340B83E47DC0EB2B8C140BCC51F21B52EF31C6CAA46A4708A94DE673B36736E139189E66EA503941919139B3F2BA44AC92458CC2F730025EDF2DDD8AA4796A18E66DF2FD26FAD5D2AFD438D3E28150A42FE303155E5191BA5815D3EAA6267542C61F33095C11030309942643936812BCA44A11D26ACB6A7A3D8929E35208099093402A2918A89E3EAD3A997DF2AC6FC5B6EEA089A76A0FF067E08013C70467CDA899382EF5FAEA7DABDEC5F148553BF2809D86CE2D3DEDF8DA23660CC1FBF0065E7AE3CDD67D071EA83DA2E3F77F71767438BF7C1CD178E902983D16929E416D6261EA5D45A16214495112455BBF72F48D785AE193F2878C6B2A313522607C0CA38058E2693F2847D16604C402D825C038A20A484DCE0FBE211249EDDCDDF687ABC185543C7D2AE67F60F03431F113C9677E77730BEE7A7747672A91A409508C4B25FD8FC451126CAD037E8F97404F20EF430DACB3270D63914AA39593B7B333DADD8B401DD3197AC17009EF081B03E428B82F14FBBAF03E57CD28838814CFCCAE09B5DC736A70C423E7097BECFB29AFD38ECDC857E46C08BD0B4CF241BAB158C8C36565BD4270A0582194E8A8BC8388AF56E6B66CA8927EFB6600D4CFB8F9CA47E00F113C8E92219D2C34A95FB30CAABD989A2B78109FDE88DA69B26C2609226C2F9A6B6B2A506094D81949EDEAE9530E1F3BAEF14FB7F7BCB70E44A2DA43E33381EF3A67E684EF9C831124A9A75ECE7620794A08DFFEAE2E187CEFF831882790C7E8CF735F71F53517574F1853E8CDAEDFD8E9CAE6CF9820593CBD71159652F5B319C34E939DB844C0B12E0D3BB46A0EFABB7185AC98401D102B849D2C2D13344B4215C7D1CC30C4E49BA697FB201748C5D99C5F13F58FFF7093D1E1D3F9F747D1AD5B5055068C20033B5D00D092C5CACF0777274E95619234289CDE4334323041D4BB8897107E841397183008E1A6819E8889FD3E9C486B6B07FE00F61831C744E0595EE289845031C0F513E9127C7E7F509D156F2A29A0B295348B7268C1B6FE98AB1F0FA9DE6D19E51116404505FA9D46729423A3532C0A2255515FD7D1D961ABEA1A40841AE39F8B963321836EB5E7BF525D59292BEAB8B5F9455612C47E765A0368E95727CA44729E4282255BC7D0F2AF3D6F952A018E6B6C7D2F469EB1E21342CFB28AF2EAE2B2D443CB763FF234D07F66823F9D9ED3193E7AF6C41F5DD8B67F7FF7B32F0FA589BF352F95CC7ADCB587CF20D2B23C27068375EE3FF0E389D3934380890E46C7D77B31C65363F924FBA33579CE92ABF5E275C71F8ACB2B14F59BD9022AF2B5DF2BCBB8B3101272040F151C28749DC2CF6A3C05112D8D94175115D456C3C34EB0ADF77FF4D1866BAEEBDBD7985F844AF630A6F392EB8F80864ABC05C0F781D29030718C0B4A25E2F84177030ABC859259E0F34BF4C411FB56D7D579C1638ECD3030D0D1D16D8879546B05AA05A511729C5184C7CD07B83A8C01B4CAFE6AFE2869F6A067CDD28DF088AD85CD91E7919A7CA48F64D322395BE520AB6045655A9F9B27B01AC5B5B53D0C47911D6809B0AD35C30A89ADFD60DC3823A3B287742B9FC202CBE03EFBEB44305564645883645DB0BC4591705F2635B2DE6C39D4CA1702EA2179CAB1E9AA0A49286680951818020562B028E47F77D3C6DFFE31D5DC6A9C666EB477D41D7774ED77BFD1BA6E43F7FA8D289861BAB367C1DCCABA7A424A0F0D2337BAA0A4123381504A4306C87BF42C38C6567AD616FEDAEF8E9A6C6BE45CA5AE4CB8C4AF51492FB321B5932A3E8D230F62A9F3033498D0F89C8C0C519F436950EB3E6BE58FCFD65837988BFEBE6877EAB14722DDEDC18A88A734EC02D1385862023E20A53CE12012FF28EB12BF83F64D09B64033311DE8082377110922B06B606E665FBFD7EBA3620966F29087978F59725809CC1FC559A3F40B96313A0A4608F2990A923B358066A552133DAAB20CDF69BBCCD945C6A6F8956CE6FCA817E553EC86590F6B2AC9C857E5681D7BD8AC9012F82D140921998BE1D53A7033B007AB6355B5691864BAF185CC8FF239E2112B17486F75CD8D65498F8ADBB93EAA4FDDB8384837975556223527597603DF932D286720E977F08DC5AA4B90C18059069B136C3BF64F30120E84C3F583AE3DD7DC1ADFB95726ACF17938B173669EFDA5BE2913BAD66D48ECD9171F1E3CFCCC3330E901028C9AE67DF7DEFFFD7153D330DA2E678F6BB8F2D8B92A94B62CA8BE4E25C9E2B311212CF51FE746683A5D6070F4DAEF332BA35101781A33144D7C20FD57D4B7AFF366261D64AF0318733D480C0DC402D20F93D7F2E82381FE0CC866DD45017C4FC77BB03DE09A277B6388070265A5686E81C5A4A30A92477B5890673017267BE398F4869C4FB4BDBDA7A31D116F675B3BC62803E4DCDD1D43958E8689837E0CF5124C1C77B9E1F9923FCAE53332C5117066003C62612E4738232364D28A264577E6F84176DFFD0B3C8C9B9F23FDF6FD233649FDDD548A85BDB5B2BE0EB8291A576A555D28A2C27F2A1961D1F859726FDF6F068F64F9FA06FA627C2FCBFEE9D364FBAEE60A29B0803A5364295075813B64DD7F0D5C320E1BE99DAAB2EEA366E661BE20ACAED3198FC651DFC01B41883BBEB4AAEB2FF7B7BCFE0E8F596079623778F1653F5EBBF1E3CE8D1F7BCACA0BBD7E1EFD34FCEA9BABFB77EE9D5D5A41E3B05C8EA2EF9E53581231D19B6DFB6A59E6A705F02D330AB4595797A66325D9DE562D586B00BD48FC2E6073ECF7CCCE5DA22ED7A4418D5EE49B4090071435D0E18265DEBEE4BEFC5DDB29EAC231C1C1E5A6F956F1B6E678B42BDF31D8DBD5156DEF90E4A6DAC2D4D6A8BC549E0ECD853040E892603E4C03FBC0DDDD24075D1D3D688FA199BFE90C5E8CF5058825D1D71787B7AA34F5500AE36FCBAB381831368055A2DD6419C95712A4FD0163E58DD49A95B7BDCDFEF8FC6DA1DE62ED88DCFB93F35A0856E5E851D144AFCC71D1E577D2142635646B501DE1AC599BCADC611D6D583F9B6A96927F9B3409AA4C0C8221A0C6DF439130E80330C555E90A25FE625D9520E25EF7559580BC16A61C6A09190D642C600AE0C4E215A5E148FAB1E58DCFAD0401990AC087F340CF71FC2517BDF2CC0B853E3FA61443D9A237B2B2AC6A5161B00F4707C768C0537CEA225294AA7DD0A4C24C04CBD83E8E7C0C9C97BF0B65906C7B664CA6D3D4B41E94233737411501E4E090274B1A24FBA9529F74C5421E8167B95860AC103B3F90CAFE0192E95D2F2E2FF8E463C987826BDC89B21472043E40AD0A06D3BD5206EF39B00FA0374AFBF0E1A5818DB3830AAF836B60203405C472D530ACC9440AF6012C0EE150109C70A94C1ABB0597961F09FA8AC3745EA4440787C3E5C47B63535576856E0C56EEC3449DC601B73B984ACAEC6917633E6C6FB19BC583A45FDD0D9B711829BEC67B71568D69C08853A378144FA0E583185E079D1FD5BA48DD1165C864B4B01449B5FA1FF945190FEA78E2F1BD4223A792BEFC5DCE17472B29AF40F729148F048B020EB3191F76AE1C8E78096E043D78D49A0B8281D41D9A51F164301476BCBA66C31537A63BBA5477C2E0D0D47973A69D75E690370C5980F7F2DEFB1B8160A902732B7291F8FBC4D1E88492B41449147F68AEDD13A79633412CF412AAEA2E057A2D2AB14C2B88443B537CCBAED69114BD40485058D7C0D7A66E154258E24F3CA28F9A9505A4420F61D9B0E0E32CE8E4FC801B063660EF7BEF6656BC042E6A8AA511C414B8A9A5319D56A54DA472308E249DA1B1EF9888C8C31E85F20DC755F2C02A072E108DF142B59CFA396871895D076E4FBE0B7CF9783D944BB2173A03835E0631C691FD03E2224EF6650B4B2B656B99CC95110FE3E98C782897C232075AF95B623542A26DB640FD3957931FFC9C15FF1A4FF410AF1429850104641A0931C907E09629EBC422C09247C247951AAC903D06508EB99443A8A6C234A9DC0A20F4A4F03D7475D72854EDD04B7847E7858F80B7A9937EF44AAC64714539526B68CF30BE19A7AD6589E904C97C8C1BD5DC50ED1CDFC08E10B9D4717471E01CB97CEB0F86AAB3CEFDD7DFD7F8D6FB94678500F40FD44D9898CA0C24927D706E3B3BE3D95D8DDE3C073E0393025CA71C4781A2106031798925B68A7955BA8DD5603BC8171EA051062F0EFB1F4ACDC3A98044261269998B41628311B2C92402565C267E96E8103B0565E92E3474F2605906C14907273A38C0BCE3227C0E3FFE1F9E0DAF0988B11A2B0000000049454E44AE42608289504E470D0A1A0A0000000D49484452000000800000008008020000004C5CF69C000078CE49444154789CCDBD079C5CF5792E3CA7CD39D3FBCCF6BEEA05A142EF1803C605176C7F8E5B6C274EBFB9E9D5B9F6B513A739714D821D3BC1E006068CE90810082424A12EED6A77B5BD4DEF674E9FEF79CF995D498001A7FDEEB048BBAB29E7FCCB5B9EF7799F3F6B9A96490FEBBFE3817775BEDEFCF30DCB94E5EAE273BB171FFBE9CC83F79EFEF23F4E1DD8B3307F66716E746AF4D05C23B3A0E727C68F6417261545FEEFBAEEFFC107EB625CFF6F3D9A4D259B33C66684B2AC9E98749D9E71CD6658C36434035FEAE9B3E5FD878586C1F26E86F97FEDD25FF968DA5FAFFF60E926702BFF3DF7827775BE7EAE8755AEB88A55796A419FCBF8D60CB80D8B2954384D17145D34CC685B87E8F3D3BBE2E6FE67E7C019D0D5AF377CF22BBE79CD078BFF71136FF24D7FD667BCC9D97E330FC6C53435C5A5EAFA528E6539D6E7658C66736AD19C981324C91D0E311CC7F03CCB73F8C7FF8A0F7C83C7EAC858F467130FD80DFAEBBFE87E57EEC17E63FCF9F35C967D3DF66BDEE46CBFC9D96AEA864BD131D0C1357D62C0AF55AAEA42469B4D5BAAC1083CC3B182C7238A1E86E1FEBBD7BF7391CEB89B9A9A999D39F2CC53FB1FBC6F726CDC30F457DCFB2B1EABBBFFF52F9226C0194DD3C44A7B8319682D073C0BB30507A836E89BD71BCC9F636FAEACB566B3AE3675534AC5BD1D49A552B554DD5034BDDEC0379CE471FB83BCDB2360026CF3F9F3DA8D37FCBAF025F8CFCACECCBCF8E3EF3FF5CFFF30F3E4035D5AAE976D1CBCEBCE3D4F3D8500809EF09F7BB47600363ECB71AF6352ED71C716B19A08554C5D29E40B4F3E7DF60B5F9DF9EA776A8BCBE7CFF99B7AFCACA563EF28ABAEF03E8F180DE9AACAFBFD6234ECED6CF30CF60A8984140879FC21DE2D320CAEFC0D3EEDDC8CB676EA05438DCF59FD3A6FF0CF5D96AE2A479F7D76CFBF7C7DF18907863CCD8B063ABB53314B375D86B96DB0B7B86FCFC1E79FB3E7E00D26E1F59FD0F201187A18DC3774C6B86AB55ED5EBB5CA8B87B4D3D3215F20A09ACBF73EFAE66D57EB419FF3DA1F854B688C4FCBE5AA9C2B99822074B78B1B86A5CB77846EB82AD8DB277A023C869F96FFCF5CFFE72D5EB2AB4CB3097F5D5A5E9A3C74E0CCF3CF1C7FE4C1A30FDE3BB5E7A9A5C3870A67C7F367C79552C1D41453D7B0B6683E5C4DA521EF7FF8A1FD5FFF4A7C7EAACF2326E331C3EB37521DCD9E7EAB7FA8B97E8B6FDBCEBE44ACF0C29EC5E9297BFE5E6FF45FFFB1BA03CEFDF9B32C1A36094607F364294AFDD838A35BBCDBCD886E774D3535ED8D3EE84D1947BCBF5AAE72BA19DCB13574FBCDC19B6FF05CB4D9BB617DA0AB4B0A043841A015627FBDE6A59E1B778CA369E8D5726E6CF4D077BEBDF76F3E5BDAF360203B1255E68793AEA138232C4E36C74F1AC70ED6F7EF19BDEFEEFDF77CEBD043F72D8E8D1416E6F63FF8C0F8C33F094D4D0872A3A269C2A60DC2F537B2975DC16CD9EADAB8C9B5613DBB6E8D67EBD6258BBD784DFFFCFE17C827BFF99B7FD5A33501F416F64E6DEDD9D79A39FB9E61A9F8A6A28A7E3F0211B7CFC7B9DDBC242221B23DC37FEAE18C29E7F5247EFDA391DB6FF60D0D888180E4F38B12AD7798A35A3E03E7F39AAB6AC5D4C0425A96A654A7CF2E3FFDF8E877FFB5FCDCA383A1E6DADEA4CFD56464555D2E2F1E9D9A3C3C95CFD50A854A3E5F6A326C48607B7D6C175FD97BE7D71FFDDCE7E43D4F675E78A1303B2D047D7C77A7D8D3CD7BBC70FC2E96C356A20DE5B2745C46678F566FB41BDAC4E9D34E18F93A37F53A2BFB5C24E744588E155E9D8CD734112E8E67FC5E86E74C1D79ABC574A71099AC58D8FFEC83770BA297E61553ED7C39F60A8FD17FFDEAF2D808FCD0F91F74FED0C392648E1F4E3FF98871EC80BB926F0B490137DBC8E5947CB93C9D29CF14AA59D930B07224CEEDE504092647CE97E47461EED8C499E78F0755BDCF23088AECAA16925E3156AB58FB0F9EF9FA9DC7FFFD9ED1E75E50AB75C6C5DA2EC3C457B0A3BD5CA9FB3D9ED2C2C2EBDFF61B44412B03DDA4916531BF96A16B6A43C60EB63FE95CCC6BCF8945FEDAEB715FBEB9EA1775D8EB42951DEC56EB75CB305CF673FFD393601B9995CB76FEC22F04B7A89B4CF647DFAE17F2B6A53E37F4141A688DB1A71F9FF8FE77D889D3AE42BA915E5216E6CC42A131B7AC644B5AB6C6B36220124BF5F684E38954341663186FB9C22F2CB916D24C5D71AB26FC7B673814F24991B02F1AA2444FD74DB669B68BFC90D6E81E1D99FDD257F77FF6AF46EE7BA09E4EF3CD667B677BBE2E9B8AC61BEACFED02CF9F0043572D130B99301B0CB7A1A94ABDAAC9358DFEAC6B8A8C9887161D6D0BEC6E1577CD49221F09F9AFBF440EFAEB65998F040C45D1E53A5E8B69B05DD90557F49AA1DECF7C3816BC898BC15B19B0E5C8819CB1F6A53AE24D3DFDC2A38D72899E4091B3AE9472A30FFDF8C52FFF4D283F1360CDDAE8296B668A5D4A9B336923536ECA567C7043EAE28BC3EBD69AF3CB95DD2F1A8F3EA33CFA6CE38583FAF15176216D648B6ABA1088C4DD96E5E158AF284422C1482C2278BD6224EC89444C86914B45CE34D6F4745ED6DBB5A62AA7EFF9C1E1EFFEBBD0D4CB3AD6AA9E4BE7B0FBFEE31350993CDB2815D45A55A1AF8A52299BD56AB356374B652397D3AB155D696086EC1131E5D90538370A99041EDB45DAB99EBBE622B35A6F6AAAD990B55241AF55B44A05398BB328CE1BEED6B7CED4BC7A0ECE59127C107C7A255D9B7DB9367FCA6854B0029A4D5C8015E8EA5634332E67279F7D08D646934B9933870FFDDB3F19D999C1EE985A2E5AAA251A3AA3E90CF238CDF2F823C1649B36B728EF3FA4ED79912D9605D39455A3A161715B164C28CB6265F9443793CFB3BA21F28C5B40826D271886CA0A1CA2614F34C27B3D3A16A26D12448E09707C5F43AD3FF5E4543AC70A82A934FE33480EDB94DCD5A3C7E5C929B358C09E6D96CB6C45662B75B6D6C0DE74556A46BDA6C322E93AB648E5C9FD4D17834BA17DE0E638810FADEF15DC025BAA360B655743356B35A352D66B35ACCED551CE2F2E9E7AE8B1A3777EF7C0D7EF2CE7B3B88DD7BA12BC82328CD1BDCF3DF2853F7DE4B37F76EFE7FEEE7B7FF6D91FFCC96F9C7AF4DF0CA564180D772CA2158AF2E899C1087BFFDF7C667CFFD3FBBF7F5747CAE3979A5840CD52CD3C7A524B57CC5C5D2F3678C5289E18534E8F1BF3CBBA86BCD5E0DCA22B18E0DB936CC0CB4822E7119B1C2B7A244C3B326BC92B5250C73186A6C11E7088F85C2623B0ACC48BE100E771CBF92CC25998888E44B4582C099AD61E09E17D449E27437D9E197AB37BDD99002E1662BADB794D631B0AD35030EECDBAAC962A4AADDE28973101CD72456FD4B5460D5796FCC47B285D6081A136399E734B8220F21C420255651A2A63982EE429F4C98845282EB22FC79AF9D1C3DD6796DAA7D23DE3E9635FFBA65CAFDA57FC8A2C0F13A04F9C38AA4FEEDDB529B8796DF48A9D6B6FB8EEB2AB6F7E672567DDFFB7FFF0E89D772A5603A366BAD8FAF8C475375D77D797BFB9FEE2756EAF8F857B582819B2D0AC686CD36D299691C34694DDBCC085C3165D2ECB89922C370AC522D71E63FC6E4B64113B630D316C331809726E811725C1E76B22C8F378A55000D6CDA529F6CE4398618A21AFDBCBEBF9B44BAE9A8DC6507797D6502B85022B8995C5A5834F3C02F37B0132D1C268DECC0E70B9DCC9982CBA813E36CBB03C15A52E7B776DF3EEDCEADDBEB55EAFB3C52A23379AD8B5B033BAB662EFE8DDB1F1104571C857B109DC820BC6A3A19875D9D261BEC92363F4E54A959958C0C4F0A9A49A2B19CF1C997EE990A6C2B518E7502D8A60745D93E70FEFEE88BA60D745D1F2789A5C5366B47A4F7FE715B7BC65D7B55766E797C72DD6F221EAD5FDA6FC2BBFF53197C7EFF2788DF9929496D9F139DE129AACB769F22E5FC01D0A4B7E1F8B448CE3707906C39475D5D79560EA6546E0ACA641D3C233815810E614D780700BC64F1024062B8BC7B27233B80B4DC50CB9BD6E3C53F07BE08D585C76B9A4E6321D7EAF5F144C432BE67303A2F9D28FEE526AA5F322B4D7CC735E6B026004F19FD4D9E66A4BD4E6D3B5850C37D46FF29C817FC49574B63196557D646F6DF74B70B086AAC01AE253B5BA8C549410610BB7EC15C321936374AFA4DAD6C96A348C468366CBC43BB1AA4780A393F71FB71A5A5F2092F9CB3B5FFCAB2FE716E6744C03795AB8524D96CBA70F1F88EA05A5221B0AA683EA44F808B669F04D9D85F72F15FA37AC77F7F4BA119E7BBC9AC50AF38B670E8F687253647C4D5E1425BF3B18B572153E10C48011A227795C1E8F8B651BBA5A08FBC514563A076384C8027F30B1A837E2757B440C9434382C7477D390E1765C1C2ECAE30F3308FB75037121AD3C53832D72F10C5C20A36BACAE01A9084B8207378EBC797ADA97597CFCCB7F95991DA3501EC3628FFF9B99015A0794DFBA1829E0F3F576F0BD5DDECE765AE1AAAAE772DE68D8E2387374DE35BAC0C2AAC01B23CEC1FE54546C567A355E2C8972A3AE2034EAEA10D7AF69E0E234DDA854B57219CEA3A96BFCBADEC272A652ADD3A4325C9F27D47564EAD83FFD1B968CAE3628926954F0CDA9A79F4C48214BC55DBA99266FE994F4D48B79AD9C57D28BF2E25C7E7CCC936A577497297817C6A68F96EA5B2FB9C81B0A18C988E50BEA3EBFD6D9CEAD1DC232D534A3C970461D8E5A963565BA5E692A25B797B60E701453452265798D1A4C14426ECA1F66A78CC50553D500F5907935ACCA5206682B2600CB89F22CDBA2F0413F16964BD300566073B814450CF80C1787342D19090F48E2E35FFAFCD433F7C14FD85BE14D3D28F26759B6D95090FBB05E091ED5ACD794B979E5D1E79A4FECD79FDC67CE2C876FBB4ABC786DB38169A7D147A8E28DC52871002E0F7C18B1846A481E2F5D28CB70A9A40BBEA4DE7095ABC662469B5B1AD8B13563AA89A17E2910F4C4A22A9698D767A58B3A82574556E59AA9ABC55CBE0BE60C8BDE85D1972C4D50EAC6C113137BF61FDEB3E7F99F3CF8F0EEC79E1DD9B377E1C8D1E7A78B2F142C71C75543EB371935DDA5BA9081483B36C43E7E3B653293D382A1473ADAD954125049D3278DD7AB899E44241EC1D5AAF50ACFBAD45231E0732385272817368A61007AF382803D67D7469866437523F7AED4013B190D156012AC18CB0B3C32C4688432315531E47A40E0818E78029E9327CF0A981DB767FBE0F091A79ECABCFC8C8329BD29276C60046697B433D39C9BE7430158B5EA937BAD83A7245C87A65BA59A952B33F58618F05AE9820BC529DA2DF64B911163EEA97EA2C39769D30BEAC2B28F8763165D35C5556BB0AA0E33CA1856301064E221C1EF4539850D852243FDA154D26C685AB18C05A56179AAEAC4CB47FAA241B8733BFAC79C0A2F9F9EF67AA5E1FE8E4AAEDAC9FADEB273E7C681818B77ECB8F9E39FDABE7D87C7B482FE58B8AD8F650437CB35A616B23F7A9891653D12ACCD2FF2D75FAA4A62D3A5BF3C35DDB3B64B44C0832D5D2971586A9A1A0E78DC6E0E5E5453C873A2BA80E16AD46A347F82DBCEBAE10738533110965A882C30144D64AC304E1C6E810B0611AFC1D4480227D7EB06C76136ABF90A2C54DC17EC8D250E3DFE70E6E4FED540FC8D7640431583C1663800CF89CF1153F1605BC2974A6069989ADE58CE56A6E71B0B69BDA1002536978B5603313E194B536E2CFDC3773972234DD12DF9185E189BCEFDE4C9F2937B5DB24E987E5D41488E0BD70B65C123B904CE25B9B948C8120416C19FE142D5177B051B194EB074E6344FF78DB04A221FE81615AB198F466647162E89247AFC5E4974F38CCB0D63BC38C760A96271E83AC7BACD42DD3A39259C3EEB1E9B328E9F60A7A6B12A72FFFA23E6E8A913E5FCC64B3779FC1E77380228897573DE4488D3759E65BC3D9D9CE8E6E2ED9E7002EE17EE8DC2369802CC8CC7ABD75518406C77CD04F8437ED7192C782644456C24CC07FCB0CC06CB8D4ECD70B23CD4D7B994C9BB7937B28C769F3FE5F11D7BE44139B3F89A90DA2B2700A380785F0C871BC55A6D74B23136033F66152BF83701E5C078B8190BCA8AAA2B1A86DD545463B9E05211ED31182F6F5BA8B667BF5128203030F2052C7C49B502082410B9192636B255AEB9148D7535839204E35596AB0BE9A5D94A71EFE848EF3B6FF0FAFC9CAAA3E05E47B09BCF334D566B68C8BBB1FC0DADB9B498ABE56A715EF20623BE5A5D9F9F1351B16836DD589DBA0E57248F4D2BC8667325F87917AA66B2029F8DB85EE038AB561FAB557A2F1AC6D862A0B57C1EB123227D53817392CDBA2A8F4EE25342FD0326AEB389D8DF102424075ED6ED4582C376F731A8FC48527E61D9EDF392ABC3464772462BDF45598C00938352857F295F4622C07A445F24484B11D3A69A3D9144762E33FAE883AB15C3D79B007962BE39B56C4C2F63F109BE60716E19669DF37B911FB0DBD606DE757DF2C3EF74A562BA6E2C1D3A76E45BF74C3DB3CF984B637FB8BDDEC6D133D6A3FB97BEF0AF0B5FF94179F7013D5DA0C881EAA7A6A568166A58D85E5DED99B333EEEEB61382964DF8A29F7E5FE7AFDEF1B6EFFE7D7CA08BD5F5EAF874EDC4C473F73E78C9D0B0809812E024403E569C1D9BF5B945ADA605BC01AFA20B959A649A4893780456AA5E9E9E37AB320B1F93C9BA3239A15A45EE8ACB871B83956078B6D99130D77648220BBB0A330D3B29984D6DB9684CA7058B63EBBA5AB7B8587B6339C787632E8C2A167E32E11291943118413697472087E0A49E2BB97D7E4A6AC8F3C13651840ABC90F5C004363DA6363A3ED9D51E4774146F8B4FCF2E50C2E1F6628AAEDAB0F1D0EEBD8BC70EBFE11E600375AD3997959F3E9CBFEB71EDD44C8011B116449F17D109D39E40B48C3800A144FEC8C9E05C6E63A82DB25CCDCC2DC213309C503C338D78C38B30D46826FFF72F2A0AE5629C28226750114DD6F063B3717A22373A254443975F7F756F38DC9688756E5C6BD4EACCC2B2C0F2C674361E8C72B9228BB012EEC3ED3154BDB8B49CCF57D6A4DA915CC418B63172064906E654CB971A0BCB8D85CCF4E9A9B37B0E68A59AC47356A1D8AC56B1F4B8813EDF6D6F157C1E3EE07959296EB9781DCC0E6E1FD7D3ACD419CD640B75A1AE4A5868BC2026DB799FBFB990D51672E5B9AC29497C20E08E461145C0CF71B81184C1D89D4AD34242C009048621E78139C24A541AD816F8052B4AB586128BC4795F10F3C427530C72B69AA2D5B5F8CECBB6AE59F7D2F77E88E8EEF53D015B9A98416D3B7EC986F8955B588F1B4B6069CFF1E5BDC7508D42FC852C06F35E9B5EF04CE5058411B878866B5665CCB40B41DCB6F5D892C02905D13DFFBFBFA88ECD096138D2A66FC3A07B5D0FDFD3C6A5E296DFDB77D5CEB6F5C37889E0119985C585871E2B3DF11C321BA55CE363E146D01396F8E8C6F5ACD70F27848C2F100A1615C5E3F6F030C12313FE8EB838D0ED0E8761CA30ED3E5F20954C9A95865AAEA9D93C56029C930BEEB55C2D1F3EA1BA9897AAE5AD576C53EB356F3884FCB6A9598C6A318AC169169068049AE2AE9DDE60C0383C622D679B0B4B14C6719C5A93F572C3504C64FDD29AA15AA6582D6282C57C3A0F372FC5627097E19E6EB8BB9189978E1D3B131C1866259F52AE4638C12CD51BD9AA371241918AA54C5DCBBD7478F8BAEBE29EE0C4BEFD2D10ECB5461FBF64C3375DA6097C0515AE72CD6AD454C915B96C43B0ABCDA5195476378CEADC5268DBA60ACFCB1E494B44E07E5D4B397D7649AF94E3DB370227ABD9A020CCA4B0AE9B9704291196CF9CAD4F4C69A27B265FD0E13CC321BD266365F9DBDBAA67E7831AEBF58550CC8173F3B5274E9F3933B47E2877F0803237D3D434842058041ECE0D1CCD3735C7D7650A131351CEE741808411844D455EA417CB1AF64AAEA0162B2A42128FC4F674201F2CC3B40F76803EA437347724C2FA7C6C2CE6F6057983B564D3E58BE848102726C16868A40BBAACE26E30BE56B6AC2DE5B1DA114FABCBD9C2CBC7D57A031FE4F3FBEAC066304C6ECEDD962CEA8BAEF0610474918CCA0522C86122BE407E262BCF65B9265B3B3BBB38B9AC65AAA8E1D48F4F88ED6D6BB66D9DDFBBBF21D75FD31B3BD8248BD0C7D31103FFA0F4E291C57FBAA7B4E7A5E5970E638D7B964B957B1E4FFFE3F7D8D3B39E5030F291DBC49BAED4C2FEB2C895F245637C567BE944B8B32DFAEE1BDC839DEE4850370C4F24D0985FC284B97D9EF2D859BD5A6FEFEBD29406A25503DE58D7CB0B69B841D5302D5160FDDE66D0C77ADDD9E5056E6959404A01778888D6C5183A625483F83F0CE309F8B0ABE06F9AF06F758D754B4ABD21F13C5C6B757E5988C73CDBB778067AFDFDDD464D468835E7E1B6AE1F52E17B0221AD5A5772B9C8C59769B33976115581AA35B78C6CDC44F5B7AE0B9C007F83D8C72A57AD4295871103F70BD6090966A18C48184E18464C57AA2A375BD40FD6E53D8CB97F718FEA3EEAF3B2823C3261CCA6BBFBFB3D1545C8D7CC4C31EA16F326E268AE3E9971EBAEE24F9ED25F3ED93F973DFACC33943C9D07D1B738014014D4065B7FEE657D74522B144A2F1DE359B77AE09472FF1EF9A553F2C9299FE48D75B659CB39716CD67D6C8C5BCA7A2DC69A581AEC1D562B0D261C96970ABE5BAF69FBED8FFAEFB8C1D716C728EB4880610DDA92EA5C964967D52327B84C41C34296156566892BC916CF4B1BFAC4AE84CE3266AE001F593876C25AC8BA5470810C2C40B3A12ECCCC173028A5AAB754816DA15A0476464369D6647839CA4E5D9690C972A5320C77B554AD556B56479BE7ADD71F3A7A22D6DBD668A8AC28BABCE4277D5D7DB3DFF99ED06894D3794BC5A606EA229A7319F5E8885A952BF9126D72C0D7BA81E9CF67F240BD38C05F2EA6DC00086F35B6B87DBDB333674F164BD1F16356EEB1787BA5CDEB9302F120664BCB16D3A363C03C10AFEBD9B2E9120C8F174C323F129F649C9D5F60F2058FC7ED7AF9487A6E862A2504B6DB1301AF8EFCBF5CAA8F8DB1564EAEBD382E64E4DEB75EC3F8828C37805CAB706AAC9101F1E4606174462ED6F4625584433831619C3EDB3EDCDB2857CD6CBDF1E2098A2B901B4B62A350F16C1E727B244F472AB07E08A3DC7ECBB5AE628DAFAADAB189C6E969BD5807BF2170C32EA12F553A767AE9A1A76BBBF7736514660B5DC8EC6A4A2307E38135E9063AB8BCB034B8762D9BC9B911C060F7CC668A5816134BF0B4042E89C2523ACD007D3474399D3796B3B56ABDA669E5F18902EF6A8B4660D9BC1D6DA82D6B55B974F26C4414B12480AEF108FC515B2A5681E7206A22E86DA0172B56F222F3E0E654B58AB71A9FC6C6AD576BCBA532E655AB556746167BD70591AF7464BD7146E2BD82BF3DD6045686F09AE37A7D3EE4364DAFDB150BC11F70C100AA55F5D9458CB421795D1E1196735D3279F6E9A7ABF92C7229A0680650475569140AB57D0795178FB0C1775F13FAC42D75C99DDE3BAA35F4F09ABEBEDFFF68E8ED974B5BFB62D76E0DA9967436D73832533D3AA52E951AF92A3ED67BD11AF1F2CD6596CF3CF972E66B3F6A9C9974B727846D6B11FC152A1540EAB5B373E5FDA372A664994CECA6CB039B8735B971F60BFF5CFAD23DD6779FF21F9F6B3705B161A2DCB1383FD79F8CB17E4F201ED61AB252ADE0FACAD57AB2A72F60A0F446C1386B5A5E960FBFEBED6C5717E24014219AB5860420DEEFD14E9E09F47649A2648E4EA292B766C3A052A9A392D5C0BA6E285238E617DCCD4AD9AAD63D5E3178D166E42E587D882F3176EEA05FAA016C8075E7DD9D6DA3478FC7C32118BA72BE88A033150D03CD8E2D863B925DE32372B32944101488823BE005248E0C099941A169F4C1D0213FD574B7D200BDC53FDCAB62A5ABBA15F0A14E95AF3734C0C3A69550B5E553A7EAD9743D9F6B148B6AA90C53C17575B2C3BD6CF627CF179E3928B48702375F1C5FDBD3985858F8F643EE583874C536796E99D9D0235EBD05D90DD21F7DB9E4C6FA8315A92866B614BD6C4BEAD3B7BB2469F1239F5BFEDD6F649F3F22F57506DAE26AA924C4436D1FBAD13FD851E7D5E54347A7BF796F259DF578DD60D391E983CF2F14515B423269554A0C586E3D6D2E91C79A44CCA5D46ABC2F80728795CDAB75C51044361AF1BFF31DE9279EE37225D6EF637CBE46B620FA039CC1F839515B2A04B66E342BF5671E7BAAAFBF17B0E862A69446AD0A1F3633DFCC64D58E6E4B441E2E352766B0FE80136279BA007C21A6A3D1773745717A71A9BC9CD590F09A8848DD96D71DEC4C60B7F9243197EE8D099BF8913C9C1CE02F825F4411593F1C558D63A3A60B73DC48672DA4EA5E510CFA5445A54C50D6FD4383E3E97CCE60F367A66301FFF4CB87117C1BA8362A8A85EA0B3E3D12F4AE1F62A5A2C22E57E4174ED5A7D34A34285EBE25FAE9F7886FBF861DEE5F3E3E3573F7EEE25D4FC98552B95CA9B25691354BF98CAED54BF30B85F945D5EB565321EFDFFC5AF503D71C3E72FC879FF9AB07EEF9DED4D838C068996B3EF9EC13C70F1C3E39369EBEB8F77479E9709BFB94A4BC505B78F4F4CBA7DDBA67A0878B47423E9710F2035550E53A203903316038E6892764500D80B129463D120F6CDFBAFCF86E4FAD21E0E95BD6950D5D349BBE4DEBFCDBB6886BD70087525F7811504E301E82E7049C752A9DE98A871815019D8BCB168D279EB670DB60BA11D686985EA00A81007AA3C8496EC1EB01F9657A29DDD5DD11411158447AE02B0B2E15168A750900E93C8239538ABB3C70FB28BFA06243B91ECCA6C07B021437A31E5E4314D6DDC509A29A2F212606ABAC2952D0EEF179DBB66E92DD222BB913A200B3036CDF447E5AAD81DA8380DBA896D9D81FBC3FF57F3F99FCF26FB5FDF5AFB67DFE57DA3EF389D075DB01DDE899C2866FFCF1D67FFB4CEFDFFF5ADF9DBFD7F7854F6CF8F2FFDAF0E7BFD8F567BF280C259E7BF25EAD3C692C9C6E5667B413FB436671F3CEE1AB36AFDFE68D05960B7B7FFAC4637FFFB54BAEBE7CC70D976EE94BADEB490D76842FDDB2A677B87BC3251BAEB9FDEAC8BA1E69633FA0382F03638411A17CA3494141432E95DAD60C85A7A75120B10426E813B45A5D6A6F43F515F96AEDC8C8E2D814683AC6CC6C341672C5FDC2F819AE5038B134B771CB669882A55ADD47EF867CCA30F32516188FAAF1925B0A83E8D0F4C0EC8482ACCF8312A310F46228E1C3E64BE564777BB4BF47CFE71BB20C6281DEDF61057D2801E6D24B7C47A4E1760311CA61162537C1B5A862698695C963EB8A5E0F92443E1A593E3E023C1886D1E869E7E48671EC74E5F0D13076F58E0DEB7EEFD7168AE5FE2160F20B603F200CACD71B9542492E57907CB0CB3FDE5D3D325A2F9715B98E101C284AEDA7CF65EFF8B3DC873F5BFAA52FCA5FBEB77CF454FA9B3FD60F9CA9FE7077F99B0FCDFED6DFE59F3BDE7BFD354F3EF4C89E9F3EF1CC23BBC78E9D5E3E791AC1CCF2C4E4A9D9B9A75E3A9C99CF0F760C8FFEF889A73FFFB5F9974E648F8FEBC5DAFCF452365B9899983D76E4CCF2F89C0A1757CE373513E52A01383BC032D0E2505C639B7C36E35115A1D9F4F621B11059A442B3CB9CC019958A180AE5A667C39140301AE2EA55EEE831545888A53134D0B566ADDB1F989E5BDAD8DD66A89AB69031AB0DDE232226E6833E006B84FE5B261663B033C5BA7924B4307AA8F9CC4E4DBBCB85DCD4B45EAF8B6E61FFDCCCC0DA7E5F2222F9A4A2AA24BA9296C78D186F5E919B1E11AC224C2F000B8EC7E462CB35B96840319426E06EBC9D6EB88B55D0E8811A01A40B2713E9991953553DBD83E56A15447B7F577B78B02FBA6E38B179636860D03F30C806766D122F5AEB6B6FC39E2B3CF9A279F0B4A4BBA2EFBF21FAA977F2376C6377AC05BCD23C359B7B786FF5F9A3D97D2FD7A6664AF73E13FEDEFEADE3D6E689E6A665893F51D3DD9D2F1D9E9B9D28F60E6FBAE29AEB6FBEE5AD1B6EBBE1A6AF7FF1B23FFB23E0AB8513E9ECFE79D7E1B4EF74A16D4AD990F76CCB8BC6C9796FD3400E8DB16AE4F300DC01F689F1A4DC90857ADD9D4A2187E254C54C67D94D9BB09A3176302F287454163328460323968B4513B6E4E26DD57824BA7913EF914E2EE5BC8542381286AFA1748E4258546FD06420220AE0835E4F3C1CE8EFA42208A16B4D17D63FCB78FADB92D7EC0804FD80B06A725537D4C2D32F21135A4CC381C8C970D0170D48B1D0D9420E4020E7F7E80C8063047F4D178C12A23681B51251B1BF4BEF6A6FAA5A133528AC247000043E188F6A8B694651133DBD79149A54357BEC847A66CA189F524E8D2AA7C7F48959964FC5115A944F9F918AD5685F8FD4D3E5720B788B66B9AA1E3E634CCEB38AEE1FE801FC8BEA2EC878705B014E0CE9AE04A833161B66DC7DC1F85ACB73C7473F74D5A6CDDD1DA99EDBAE0A6F59A315CAB9270FF974E6A2DFFEF0955FFB93F5575ED2B3696362CBA6607F8F180B721D11EFDAAEEAD2BC52AE900132515440E20DF6600D61A87F61D9C815512A94DA53BCCF573A7CA2D9D981A22EEBE18BD54AC4E30984609AA526A831BDDDF57265A254DE7ED56519C3AAE5F3318C2D15AD7481D205BCAB21750365E3F970908B8679445C11B80AF817CD300DA3A76B2CBB3074EDC5785B9113008A9624A6E31D57C7360F675E3EC55BCD5AA9AC6472187054250D9E43C0CB486E1525C958CC92C4EE78540CF9D9A017A9A2C9370D8EADE40147EAA687F7458388E655D60578DF426630D0BBF1A6B7CCE7EB46AD46F435804A0411BA50376499F9B4353219903524FDC6E45CE3C7CF9A134BDAE88231B1A456EAE97DC74A2F9CA89F9E656070512FF5073C9BD7F92EDDEC8945C26B06BADF7645F257DEE5FFECC7998FDEC85FB745897BDC0371047A3CE281C1CE26029B43939587F7579F3D145DDBE54D469AA58680E0B33DE95FD355AD9743618F8EDAB2894635B0053DA80FC304B1E51AEA23285791CFB44346184AAE549292214F3C72F6C8F1BEBE2E945038C0CED1A0E9C64D97C33B2E3205F6B9C34793D98C14F4637D6AB92262F0D82F7FD20AFB9072A3F6C27B25C6CDE3F9CAD29256AD12FB0F99D4DC1CDB97C00E9F58CEC5436138849FCE4E6DDCB1DEB3A9A7E3D6CB231D717793CDFD68B73C3987D86DFB15974CCCCEC176E19DAD461DE15F281C067A8B2423373F27C4FD4BD3733AAA7BA6CE8818788E0D7941B2C20779623154D3C47864CDE597576505BE1D617768DB66B822A017AC7CD733A5AF3CB4FCC51FE6FEEEDEFCB79FC81C3B5B9A4E578B55C5EB6EF6A5BC6B7AB16AB877EE8A7CF4C6E4476FEDFAB53B449F24A86AF4BDD7711190BAC6C954477C4D3F9533A3D76D7757EAA5877697EE7EC8A8D67DDBD744FEF00E84F6E507F7970F4FF0BDA9C0F517093D31B5D63025C4A0A8ED9A08E8B44A0D555617901D1516A7196820F84155C044A082CC45A92BBECE0ED85620664AB15849E7DDA625B85C5AA90A2E0C5FC81B5EC9B76EF8A55323118E5F9C9A113BDB0C6C5344B1B55AEE07F7C0FA331E89C3CB81882094E6592EE82358DFEB05BEB22C57DBB6F4A3A236F2F28950BD313533B37F79E1A11FFCE4E00B07B3C51C33DCDE71DB35F1EB2F8F4BFEDCCC4238112E954A4D44405ED1E25153F20244C22ED2550D76897173422C088E17081FAAA6BA7D2213F60713E1682A49DD0C58471C171E1AECDAB19D01A8C536957219CB3F71E936D6B87CBDF0816BBD1FBEC1F7F19B539FFD44E76FBFA7FD8E2BDB6EBBC4D31677B7A5DC376CF7FCEE7B826FBF4C88F8B9AEB09E5D0A6FEA6E46A4C5871FD372395F57CA858013140E81AB3EFBD2ECFFFE0A18121ED5086D1876C34AB8F9F20B07BAB70CA46EDBE1194CD5C7A674440E1B7AC3B7EE94D6F7B1729141115CF4C054A37C5F87BD05BB4B6B8A00BF608E1083225B253695C4067DFEED1BF8B644C6B442B873388D52592D9690B04D164BF99E2E5F6737C215493267624111190BA24F1BC247F0C3FA00F15B30CD2AAA95F023AC4BE6B8ACA202F9C0A02CBAAD9191896FFCCDBFBBEA3AA7AB0FE633D3B2FE7FEF7FE65F1FDD333A357F60647CEBF6F589AB2F0E5C7F69A95AD178B291B54A05B5550645319FCF022F4114C1B38BADED01EF68F892EDF9620E654FFA4002B44D11FEA45876A8FDF802341B6C6B07C517454D1674BC48D8C41506B70D8A6D215F6FBB0014737E1E69546E7E717971D9BC74D8FF6BB78A376C65825EACCDFCB1116B7A11B615F152BD5CF2AEEFE3AFD8C20DA6BC96C6A497B5D9795F7F5BEC236FF12503B3D3D3B563A3D5479F979F3F60CC2EA31E89404D6C8B86360F4A3D6D06F866028B6DA82CCEEB6585C5624FA7511403195A2B373C8A099703FC015B5B841346CC27793D833D2A0F8E0C333D39EB03AAA5EBC04234559D594E27AED8D9BE79C393BB9FBA687860D340F7FBDF751370792A65831500D29528C0D55AF53AA2131D5406E0073010AA9AABD6D1E3375E2E3EF0C2BE87EEFAE9E2E47427C71DCDA69FA8943C5EFF15D75D7B6C29F795A7F61634EDC8D3FBF2CB6930E90CBFE48D0736DC7CF5D2D41CAA46A83A48F1282504A234B7BCDC77F12653ADCF1F790965EF787F072A670AE89A3A700F061437078003B0E89610B802CCF03348E5383EBC61ADD89E625120C20206C6054E27954679CEBB7528F4CECBF9F5DD08B688DC626A8DA7F605519AF1481424BA052916360A45AE2197F3B97DCFBF30F1E8EEE91F3FAAEE3D5C1C19D907FB333E53985D92964BCCE9056B7CB19CCE71611F13F2B21D312E1EE2C201176C316AAB207B152B5CB984B14519C70013D264A27EC4398CD564FC2114BE19048DCD4AB5F4F06E77B5CA070352261FC02DF27C0D2530503162E1A1ED1B734D57A7E03EB867DFF8E90985406FD4D2C1146105BF1F550ADC91992F0226E0F1B928B5259306EA455E715F7AFE8B2F3E9B96E50CBC74243A1889FEF3E4596CE5AE68F8CCCB87E3E130B8A33FDA7BE89E279ED7960B58CB7C7FB73F1C6A1BEA5A985D200A17EAF370BFE12070B066C08B6CA03072D698992B2C2E246221E4AC043FA12E8B2815946E9B394AFC7AFB01A3A4281A012A36B19B85FD420192F77ADD01BF271E1323015494C866D9FD6928F632A3675D80FCD7F51BFDEDC1816E211C106FBF49BCE3564F2CB4EFC8C8559FFAD8CEF7BD63D3AE9D425D0F2C55A447F7777A02044D0F767BAFBE68399B41967B7AF7DEF4FC3CAC252031F08F91431AE582952B6933F33A9278E48D288654EB0829C1F626B2200AABA86836E8ABBA9CE17D1216ECF4B11361C03F3E9FDA505069412A0AD8239BCE1E7F7E6F5F7B6CD795DBBA867B2D00C80C1BE491837A1C5E148B505DD7C5B01F970DF308CEC5DCE4D4D2D2FC0F474F5A9CAB6EE837BCFDB69D6FB9F160A5A4B885AD92C7572EF5B2AEA86144244FCA179017B3878E9FA2F22A3C1FE8A4583A1E37F267AC2194B8313E6CC0CFC682679FDCE35BCAF4AE19F08182D6A8B08910387FE82730B1DECFE3ED3ADF01FF6891372D0B951E56C3C28359A8562C55353135721DEE0B903C2AA556B1DC3C39254F16A2EFBD3974F146092D6A02670E767A2EDE107CCB35DA9597766EDF8C0E250DD071B5CE0FF50407FB021B86C33BB6606E9AEBBB85A1AEC415DB70D53D9D3DFA4C76F4073F3DF9C3874AB50AD68E313F6701642D5761D3CC62455ECA0155F6783C3C2ECA20F70BEBCAA11F8DB85F8CBB2D8A74A9D244478507A13D51ED1A32D68E1F5D5AE57A32E041AE260A9C2F126AA24E00478E590CFA513C032B8BDC2F0A7E4018FC7ECEE7850A82A52A1D89F80776EC64098E112EBBF60A60C5CF4D4EBDC317BFC81FE968326B79F71A86DBE80B5CBA79CB077FF913802DBC2223447C30F7787EB0BB0D945EB2E0B0F52CE27D80289544D8DF77CD0E5F5F67DBE6FEF8A63E786F248054DB9665623DBEAA2C1F8884154501AA042890C55D019B0621DCC0E5820B2C49CD74A1F1FC61E3A553CAA3872CC127EE5AC3230685BD4B44F9810E4029A533632851BB37ACF16DDB84324B63E42CF077DEB0DC035D9DD75F56A95698B630721D235F2C620A117AB8DD1DE1D8A6C175435204155017E76A8C9E8DBEFF8EE8873E6C551A5AA50E189493602005AB2E0324A0D893D8C90C8FCD8198CF2DE03EA78F9C445500283FC209B7247A828162B9969E9A696F8BF86869C28C5973B30B6E50A001CA0703F0C2BC3F8437249443946076C1B2AD2EA717F2852DD75D59609BBFFE4BBF801184A1D7B5467B2CD5E50E827E1175A3FD98F5B9D850D3154984D75E7FC5D5BFFC91462414EBED44220DBC3DDCD78D7A1CB84B64E5BCD2FCC2DC9A753DFE44647A21FDE3279FFFFD7FBCFB0FFEF2DB7BF79D2ECA3246DD0FB088CA00E726C0D904A284B8886E905AEE60344138AC2E2ECF3EF27C7EDFF1DCC9B3FA6216B51EF9F8A47BFB5060D71AA55AD51B0D5A7AFE003A93D8A01FD8AF6B19A6A302BF3FEF3273A0FEF03C0C0B3A6740CF15BC820CD206CADC92D4110B4D1F3806E205AE03E1393209C3CD11E16061A9F1F013F30F3E6CAA742FA0A105420104308010B003C0BE41D88ED0133817BFA65BEA4CC912E27B6F281E36CA15E4198AACC88D46A3548E46438823000FA3865EADEBF562C51D0A487D5D4D5EC0AD3696415360507304DC06280D26178155CED42B2ECDD711DBB275E3D597ED7CEAB127AE79C7ADEFF9AD4FC7766CEBD9B8A52310EEF187228140DF868D6DEDD044400D9FABA80A62504CB220B97DB130006710B6C02042959B13C165F1DE73FFEEDFFAE29DDFB8EF51D944F019EED9B8AE0AB7CAB1B40505840120B2BC6213004E452C4DD3C1827D9E3D78DC3C38DE1684AFE47DB2A9CA06383665ADCAC7FD00A1123B2EE67D5E426930A6615459E12E043E9B7767F3F533138D3373637B0E21A770057C5C108D55413EE4F5C62276EF60133827583672B1446523459D191D6B5F33A8CF2F9A81407371C90F5B270AD15DDB11B08266668292C9804EC8FB4241F27B9250350DFFBA5EB12D3EB398112589F38A60B6213B8385623D3EACE5DEF5FD6828E69AAE53CF1D44EBF0D2C404D5DD4341203544A267C05240AC0B5E15F87980FA4D99E77D3D6D23F30BFD6B06EAB5DAED375D73F995976EB8F6DA6D97EF485EB4BE76F8D4C5EB36F80529DAD3BBE1E21D9BAEB902F5495830F47950873E668F718563A18A22C39A7160E5586628EA7D19B49A334BD586BE75FB765063965876B189FE04153B0F5B053EEF155D5B2B4D5776771E6AC20882F4C353A0B6517B04311A447F5B3294887B7A5388DEECEE147A3DA894F42A5E28174B23474EBEFCBD8727EE7B46DF3FE19DC824931DD3F5EA74357F64F4D48BE3E3E58EB6EE756BB027C0756535A3BDA773627E7AF2D4C8B1A79F6DD4AA3118C713277C2A88B180E3794FC85F9B9CA8A33728E8E31251B757B240CA7435DD880B005C6EE8F5F7B4EB92D8B56553B82DE91D1C84BFA9371AB0C2A1C1BE1AB82D1E9EF378668F9FE91E1A0A485C004417AF046B09BE197A38E18AC1C21343414C00D610EFF7353C22C8BC4805BABBDA415E4F76B6770651031666F71CE0679715DE950EF86B0D99B2F0F452FFE6214912308F36004A3464AC638FDFAB681A1708A03291CFA5DB12D11F3CFC82B722F7C6621FF8D02F5C75FD8DB3A7CF1CD9BB1FFC128016A83885FAFB9106BF9AAA8ED5E154EAD9F2D979949D50AE43DA026630F5A9E0265525B0B6576BA0ED0B051D82615088C2A29E3C7478FC9FBF1F1A59DC684A03ED5D8837D00A51989E6F5F3F3C74FDD55B3E7CC7E51FFBFF86766EA37883E7D1428CE27888735FBA754B6F349E4CA536F70CA029AEB10F14AE3C3E09AE9E22310062C96860A0076C27441A444205D205178AF5908CC029A54B0D6CEA662CCE54CA086364900C74FDC4F32F6E5ABF667276DEDB169F9D5EEA5C37A82B289080B0871811F46A1E5B0991283C1023080D151468586D4E074B3119E744011919D0245873E039E097A7B66F76F777755E77D991279F0C5F7FE5FA6BAF885EBC06147018697859B09701EA915B423DCE8776253449806E2481E53B57A822BC4DA1C00292BAAEBDF7831F0C2462F3D5DAF8FC828671030C1E8F1387EA5594088A5009134297EC506FB32D0C480FC1106061BBFB8531FBDB858E362610C23A22C9129B1D84C162CECE7507A25EE4D67871B6C0CA0DAB236274C5A9EAEFAC11EA5775A11988DAC8B04C903E2135D50C56D3DBA400CA514D6492981EDBD6238FAF20A1F578036E776964429E5F14DA1380F2455C865742C2D1EC48B1FE3046558CA7FC83FD8DC5A5487B22918C35408D0AFA7D6EFEE4BE97114744D6F69E3D3366982A12176A8C82850AF854306DE1B1E1D8119123A06A28C08EEA1E5FBE2A07112DFAFD886402E1103223064CFFB68435DCB6F343EFFAC5FBBE7DEDFBDE61B899A16B76D96D71D4EE00AAEAAA380EDD1727788361A5518F44BCC542B1DD4D2D089AA6AEDFB2A9C9B9E47406E67AC38D37CAE04F22E8C4CDBED60361A8BDB37091EB86BC375E42A6131616BB5112558FBBFDC66BE0AA796F80977C1C08C32044EA2AFA206B0B5953839B9540B305B518BC0F04678357EE823971E2164AFFC0BE479D2857444285009FC9976AB3F3F252869A55C25E4BA9F3E532288BFCBAB58177DC00D800B6D8974CA23B1EF64A5F4C83E38344044E05B454D01A6B8CB7F2F08BB98327228343060F3348FC5CB984EC1A0DE3A6B5541879E9483CE1CFD66A69B81605011DB03009B56F005E880860ACC8191A863BE403A7CA0CF864A39948260146D2AA847B001323BD54CD64AA865A5E9E6F4C9FAD669606DF72B9DD118E340E0A00963F08DE27AD3F701950B343431976423D338BF24ED9142F7AC76D89B6AECFDDF9D5904F38F8DCB3C954F2EBBFFDEB6DBCAB8A7C5000C91553F81A0F7BF46D278C4B896E5EC7DF7AA51A0BA1146D6C188CDE76239630BA508050826D8EE71181A55232CAC5C0B6B51A343442C1BAA6CFBD70347B72E2F0137B92C9883B1AA2C581DC4FD5E16F35F048CECC18853277D5D67A26A783620F425FA5665D346456CB40664089D53319F0E3C0B40B85026864448C0D192602F19DBE27379F4133747F3F767BCF25DBFD134BD2F874F8EA6BF18F8805835E69797A1663DD158F9DDE770C194B34E09E9E98130341849E149C48683945B3010250371008B4372211537D30C93E5F329148A56C109303A40A030D22A5A82B31BFE4EBEF0D6E5A1FDFB98DA03474216249517786DD44450680F824A8294681F7C93534AB354CE6A22BAFCBEE3924CC6594E969B7D118796EEF17FEE87FA5E2618C195A866884419079AD87E384ED7BC5B2973CF1CD1BBA3EFCEED4BBDE1ADF79911BF10CFA0EFC116F2806DA21750723F1A9D78082B5B7A7021BFAA7D39911741FA622671AA5A13B6E44C59EDA1A801E533780098E8D944CF09D2900329ECD6BDC1F7B979A4A96801EFFDE87D1E8A1CDCE629502A0072F86AD56E4F63694596024057F00B019ED368C0C585A3ECFB4D1406DBB91590A5CBD4D78DFCDBE58BC7676061E0ADC95782CDC178E2CCF2C05F1AA9A3935360DF27AFFDA017443C291E04AD06E87680D91315C11EE8EBA9A52F1C56A1566ABAFAF03DE0EC90905E1B8BD7030140510AD2066B0EAD440802A4D3997431A48F7025404834FC3052B44BF932231D4712C39EB0F047265432ED5C1418EF776AFBF6AE7C9FD2FFDEA273E18817C86D7EDEBEBF17575C112A232FC3326A0E597C93F90DD6F5979E4BF2483876F3007C8A0F06FD44267E820AC1BCB79756ED955AE6DB9EED2CEEB777A360F76DD78D9D0603F9A1489AA4B0DB60C6ACDCAC153CD724D5958B2CECE42EDC77FC9E6DE7FF9D3DE6FFDB930DC8EFE6F269B6EA80D4CA96B69091019CC88108B20B9073F874D4491E662745C21384FA6EC752FCECD256261CEE7C7733C57EE0C5E7F559E77D7AB75C8A5A4C2E118CC37E26E6F60EAC8345AA44434D8E132D0344973A002B3A4D61FEA4B104ED6AA427BCA728B71304F906FA04DD52E8A51FB11F21BE0A72064C0B4E31AE4222B57425E0F954D10153B6D8F9417C2B1C0D04A880345C670A158833C3614CD9D1ADBF50BEFDEF2D1DB1099F7F5F624601E1A55380F319912926D8886E1635E5FBCE03CB5140C1F4A48C0E5D1E4657F28B96F07CA00885828D641421EEEF55CB6D56A8B25776DEDB8FDC6BE1BAE242D075BA9037BDA009969F77E365B501E7AC6DB40DFABA61D1FC33284B7A53205C79AB353A017536B8D2D39064E826FE3B0BCB480C45DE848699532E3975C7E0958C5C9E5A5DEE11ED8135048198F0FE102AE8D4325A27F0803012F8F5EBEF66412D60C46B6371C7BE1E963B5622504620F2F34D19B8720188B0863EAC76B9BA74A65E44B8D7A15B61BA5474275A8328076022AE352470EAD47CC1771269070C138D12FE8B7C421A28885024130DDB1D72D311E445906A1EDF43C3AD7A67DCD7AD7C635855C2E9306BFAF862E28BD51F3261391BE3EEC4840D0AFB9035E43AC83EC11205354FA250F49A2D01AA02F541C4C45C656F2AE5B230EF7719B06B96BB709976F06F0801E3CCC10B02A8454B493A61608C6C37D008C055DA926AB2353F004B04528B7927DCFC2876B34B728C44B6E44DB68EA13DB130C58D9E0252369F4BB9BF1A0C1BBF6CECC0E0F0F46FAD67281B0DD36640B1A8962C7D597333D7D6862C1459AE55A3B78D2B130FA1952BEE04328BD01DEF1A2BB95239012BD475E2FC0D042B5B600D92D8E47471206361C0E9149B7634ABA541A5ED24003324388254D0256074FD00B21515885647C608A5AD1A4A90B3E09020A6426DCEEC4B68DD240171C353ABAD0594D1262D44760B903410B8C3CF00144BAF83735018E180DB22384FCE42268ECC17A04574746EBB605C8647C1212060EA68A7DA95920C9A13D0F340E0DEDC4586ED4B904DB45660463826BB7FBC87087E8DE4681025DABB3F3B8707416C2E6D07AEBEAD027C742375C8B3E3B1DCBD027A282E88AA0D06181F9E68975C0E0322205798EC944EC985C33C4EFDA81261A0C19AECE2C9413B178EF406F6F777B3C1816DBDA8039035A01A88E280F102FC2A189A52568DE18E0626105131F082D65F6D0D39FF6177683282277C1EAA3601AEE1B3786AE7994CA10DD614B91A1A689227F8C1D83CE258D52846B6F7A2B243248E2AE5E79F9E8F19E28C800069C0E8687A0AD700494FA37D455BB60025AB230F66493096201E1687AA504E01EB42600DCFA81A34D841FB373A4E0932EF1992C360AE795BCC9180DE850375606760E6D5D541091F46E03B0C882D1875DCD94CB667AD9851ECA80D7E5134117D7D59A3B9A283DFB0C827A94F45CE0B1020977F3F948A477C7763E1065E08460701C2535DA376EB0D2C4E1213518D018171AB52AB9626D290337170D05B6EDD8088808A0371A1760F7EC2DC9A01E7AAA58B869D76640111C95CDED07AD6E5B08079B000E8C3E05C9333942CC017EE3C2173E178E17AD19A497D31A7DD82B9726934C031AB7D1EA5DCFF76EDEE2F5C0A7789F3D7C3C02D81C39100F0C14F98607D03942B837142C786DE547DBEFE34251CE446B63149DC01844B8294655B8336741DBAF3FFDAC7AE020E86CE0973308B1819CE1FB888FBDEA2214931B02574B86A4F7DF127CFB0D750EB55BC859A0014C056393512A964BA3C63ED4BDC2E1DAB1A3C0E00081A05E6862E920A012A5BDA367AFBCEC1277884A4EF6F26F5D92FD3D1BEAEAD0DADB988E14138B985E0F8039B0A0D1408DAA24CC371211D471682B23A131344C49B22B85EE3E1012DD7094203AA2A889756DCB10516C838F80D8029639241F6073C8C1C0F2D85F34FA6485EC1E312A9F6013DB4DA2840A8158D128E5723353B4E09A4CA32EA3039914D2C83640574E0EC46368AB3BFF0146221A0BDFD404AC6A94C1ED488130178F817C0170860F781BC0212B75D45489F314F2A142CD48E8E0B18098A2A5164A0CBE1B2F09BCF572FFD60D1437BB7924534C3484FC8B018685FA25FA7459D8241D8DEA006C3C91A049A18B042E1F1BF68369C204C3997C31862ABF0DA1D83276AD5DEC4C04A28FD8159796D0360DF3BF751DC0B510B694A6799187C06402E0239D383038207EA19C5C485F71D956E091E8D9868B46544272A358BF6479DC288ED8DB05836E130E8976E8CC819B2603CF69AD0002836825D3D37055E427902AED7F665F07A82E1C385E2A769C5ECCDAB27B2E290CF00E9A50202A1087F7DC04280A059A176E89D7D33E75363EB9854894EBE8C08A63437E6F474240CE87C21026201563917450CC40610A1FB1A70A8D951E11BD5104C890F104146080C5863C0E5826D02184B968D7067642F212D4918721A03F818CE28B351A940A7829F97472FF574770A9C17EAEBF0FA4704F32260DF7E5D269345563874A301D84AEA36E8CC5D7AC976BBEA0171A4C7219FD9955B4BA529B3FF5BBC0033B2B1DE36B5B188A8830252B234E4B1C7BD66939A48BA0440CDB166520804B007879716A36B77DDB458464B06CAD2677A2BFCC059E18E4048C3AC20009D76F5FEE7950281F0C3236A6F9662760A5988CDE4D685F44F8781C355521149490B984FC9EAE0E211A05D84293DE6CCAF3690084E8E062F131011F8F69A06410F7E762148506A5560160C46119229A4444E425C620003B64AA34F470031E10C2AC91F9C58BB66C12C2093BFE7EA5E445ABBACA73EB6FBAAE08EF89418D8682DBB7807B424C353059403FB1614B3C4FAEA94BD30BC00DC2105328651180C258D078DA16C60E726CA9051A537CD164D8A3452127E54678384D9F145D50133703D887975CDE4053F241E3097518908E906A4C2E65A3B06A803A4C847E7262D3A508B370A9BC3FF8B3F405DFEC04B4DC32B62EB441C2717724CE84C295C57CE9C4B4329701D117BC7068AC287B8F6BE837264408350A09F002879240A5DC2C95F4C929573667696840C99950DDAB9610FFA353053000451DB86BE8247990B25A2C7C1863BD303AB5E3B2CBF026D87AB6A5A6CB80F5BC3089644162EEDAB96BA95886F912E1F1867A6243BD82A23CFEC31F53DC85608CA394AD33D58198C5C733D5F42285FC580794DAB6BA696D211B3B05A00DEC6CE3967A0B219576E996B40CEC49A3C08947715242BE8E851405CF0C7BD7EF7379BD7597F596AB7602DBC375E928D9F40EDB0B80711388F4068F3725BF6CC745C4E94607AB9AADFAD0AD904CA15F9699C9BAC6175D6950742AC12D1B28606F9951F42EC3407848860AAA12A08400D155648AAD3C30FC14F321F2B3F7350043C8432065056ECC008441AD23D0D6893D6E3768DAB68071D5F61D6ACCCCE1B9ABFB19BF8FF576077B0697213BA66B28D7806BD8A840443647556FA2A1A00EA36DDCB66EE4E43872FA68D06B2F650B58292EBC0505D8B54F501C9C90C996CDB39539B0419DCCC696C8A384CDD61C22C3E5844CF808581BF86D04DF1E71369D8E84C31C719C586FEF5AFBA5F6E0A2B5EDBF640256B367B49DF0E8E9A5F81F08AF4E5F20B92F6781E8E993B3CEB65DF11CE82F89F39108493DAA0A0FD5958579058E1AE45B20C38100AC216E9E0B786DD0187346B16F51B5DABAFB60CC5B7A3BF6F6A59476A88FA085154547077A3217D3038984C7254D4F2EE24D6BF962395740468A7F4506934967FAD70FA0813D5B040F9CD4A62880B13DEAEAC26FF9187B7D93156A3D813ED5F92CE722683350F083056103361487720CF2066433D86EA0FF834203F703B8024DFD9DBDE7FA52DF8494D99B9D006726B5E5B4AB500285D49C5D347205A4B8A06223E1846E844997D80A585A2AAFB661B51A327EA6721B28D0486643D0EB88426ED1AE9900AD44188E2509348E6125CFDEB1A5EBDFF676BC70454EB8859D4BD108460DBD25D4AD87A1072FFAE563CCD8942B571CECE91EF647E626970AF952B9500AA0850883D86C968B6917501BB63930D0357A761112A134B824D445790AA1CB8ED5214F0BA4015F8EC1277F66D7AA1C2060F58796E1B2A50A20A643E90232350411101447D99C541651E4F0F8826D1DAB4B969A41FE3313B02255B9AA014503694C2D1853F3FA728ED4CC20CF4039B18636686F7FCFABE52669BDC875AEAD1DC056235FC2AA07EC02378E710797140B1FFD7264015071B203BC74DD8CB77550F6EF54401CA54C5DD731E220BA2E2E18D0A33C7EC2756A146506B35C318B256D19BDF6A18D6D9D3A7C08FA56ECC50D7CDF05F367E9B25271FBB8EDBBD6CF4CCF1F3E7402901442526A753EB7BB6C00DCF9346701D9BFBF70242829E2492C995E86767EE08F48AD31A3D0AEFDFA57FFE503B7BC056F0423ADF1BEF35F46F0C67FC50E685D8D96CD58E3D3AE7CA5912F9BE86C5E2E20B16F8602CA42C635D8C7B5255E2D4B81F1351B35A1BB5F9D99A64E6008A6787D441201AB808A85B606158C30883D414FAE58EA6E6B47DF344529ABA23818B04AD52816F552B991CFE985827C72449D9E33F305239337F2659062615362C1E0B6F5EBD75D7CD1C6B543B5A5A5E9A9C9F69E243C0A122F4470BEA0B86EF3702C1A3E75F4147475912590D9A781271F6B9B1A3BF75F5154766C524BBF14DFBBD8E5B905B95A42558A44399D19819FE3C4279E78AE38722684C08F4A8C2E77BCDD29A13B5ABA4ECDEB3F3E018E355F3564C851F9815E8C201271587E48FC9BC5AA393201E9A5DAC1E37AADFEEA99430F14A24CD476EAA74F024164C004253F86CC137D30E0FB0BE8FB84F101FC80F1387966EE861B6E245FE7E4332D7FD8BA1BB4AFB06DEDDCE080F75DB758BB2E02131F213F601D30ECF4B9650DC531F0747BDBD17A8409A8CA3574590196B035D6D1844374C8A00FCD90B1D3878FA1B80418C40EF5893B8A6542D2AFCE065891A6B6BD0D15C580748D8F9EF47909DD02A4E8A4C4848BF0EEA9C9A5E79E7BE1F65B6EA1BA0DE382158EF4F45DA810FFC68F371186AED813D03DBC1BD6FA3E790777C50E575F27D6AF0D91009E50C4ADEBFDC9E8F98AE68E88B62557F9488CEE74611EE30A7E291789D8B816FC16EA67602B500A46F000C32F15F4284AD88E56B14302713261445360BFF90216A0274C954792D60CF8DFF116ADB703FC321304D09E0E69E390AF2DD216C16AA7820CEA9A848871301768D342B402219C8AA5943953EE6B0B2F8D8FD597972C1427400CC03369A45A2EC799F896A63D29F5C3D258836B86422160AE0ECDD046A619BE5252BFFED57FFAC2173E5FAB805CE3C1ABF978DB05C6EB8D1DF0CF1D05513628F4B643B680BFF6E205B9B6343D3B7EE8A8D6D719BFF54A92903BFF4112D75AB35214C271C424CAF838B51842BC019917106C04D7983E0070706C54EA10A00688CE87262AA0AD62E94AA4E8D4DA484A090A99EEC6E41CE20E40B390DAF2AF1F92DE768DF8BE9BBDB7BF95DBBA0165296479E1441CCAF7341C089BA9B64608161D7D12F68960C00624CC6F3CE455C106989F4165D1D1406D6D73E7E3EC30C751E6A5640A6FE3506569A3803742CFAA95E56F7CE1AFFFFE1FBE04F03E3E34807F038B8CC152BBC06ADB41F67FD504AC58245AD76846F4F7A4D6FCC607531FBF7DE0F73FD5F6A1DB507B6B81C6E73EBE69568AE075E1A66B9393D4B908DD30144C5A61B69D7F21CC66519322A2C18943A3BB2EBB148594F3D4A35B7B8F92BB4898015B0BC46C249A9044397E0AC473AADCC104D995142CD944779B158DF56FDE546BB23E80D2E0DF6115C34C813689AC8CC4C7809FBB802E4A411FD4AFA19BA264974D8898C25261702D9D84B8EC0DE1EC0207D6B51D347614FA1B49510C3FC895DAFD9FFFEBDF18ECE55D24E9AB548A2E5D2BC96AACF73CFBF3A61FE7E4EB5F67BA5A3AB0B6BC3A295782C90B09C40AFAB92CE4530C84B5D0907E81D5A37932F2192E1C277359CE63872B50DBA0B8010C38447D345BB4A618DC33D513B205B973ED9A571C2E60FFCF50851DAC489409A95C2C4054089BC1094818F46D53B203EDEE5AA8A70FD46FB04EA2EB3720006154039303F1230860C09287D0BD228A006D098CB6CF80C0B4604EEA4BF37A298F4185961CA9643B7AB324E64713609FD4024625BE4CB28C608B678ADFFFAD3FBD63C3461E6A7A32048235359FC516E7E2C9160DFD9566E3E7DF01AFA1B54D3B924443A19D00FD117371D1AC42D2B8016E0F8AB74E3DF9829C034F074B59AEBB1DB3989DA72D029A90CF071E302D2F52226A42931FB103EE0D2DE47CAC93F3F8CF5F042B143E82F390B291F00CDA1FC181B4119B96D8BE0DEEC38C50FB43308C34D54233564F1F7A3400A0836B46138EA31F52FD62B893F3819285CA8C8072663D0F9D01EAC3914C6369641482E8AE4A9ED0662C0E94BBA0D36C0B56928038E846D04707906EE8A5E5DC4FFFF4AFDFDDDE699D9E00D9C99A9B47F34434E44365508844CF77BAAD15F4BA0F676C2F3841E3FCE126E4DAD654C117C4251BE5A2924B6B997475FCACE2F357405EABCB8417A2DB8FBC936D1B1D1B6ABF03963F745349AE192DEAF3D360A15B28B411BD0EE38E2610CABFC8C969D0E9AE4D9F9AEA185A47E8D86B050F4E5A4725596836A11403560BDEC5D62BC517E54744E605A50C2F67BDE11846104512880E03FDC75904103E80921CDADA055F448C7649A93E777B7F60ED5621D1CE6227312C5A0BCD3C8EDA98C46AC61AA7713748CD03F10164B231FAE8924496559B9F3BFDEFF7BD77CB26045A04F2365DCAF30790E4A3B5AFD250225D3DAF6B445EE3D16245BC72BF80D293C9E51E783C77EFA3D9C7F790682C082495229AAA8D7C1E3D4CDE6D5BA4E10170A489730169392C4C40AC4E1DAD3503F6515B95221F8A39A190317716DD48C0C71C82B45DE06B9D3402F3AE97649C68914C26C03A5F395EE6B50362826250148B47F854820597A22D05D1301BADA58E1FDB5AC1650AF3E363A1208D2C2ECCAE2992E61825AEC06A0411D3C2FA4328F473B194D0DE2D75F548C9A4E4F7A63CDCA33F7EF8C4C93184C024474EF57A6C08D87D8A5333E31307BE7DFFF6CE4E1453D16C83C21F405FF5C419E5E0916032C9C7534E99F6E77D381CA8D6C359B9DAD2F2C2771F68A68B225495DA12F6EA66A05C68731419A898E9951A8C383A2018B406129040CB7FD500B5DCAF5C336A6540A7F85E4F2F3135D5D7D74D0E161B85437868E32B78588C5656AD8A5EF350AF3249EE39EFE34CCEAB10411A6110813A3A84548A07BB4D929C80954A37F6BFC264881E4F7A62CC17F480DFE840FFF68782A80A9A10293D38C0032AC60810683E40410B860428FC24E2B75EB733377EEA4B7FF7B55A316F2835A46C08C070418BE3B37BBEF2FDCB8786D180469F8329424E33D8C377248B078FF862316F3BEAF2AF67735E4F33EE158CC5C2BE97435024828E386213F0150830E3257FD0134FB9DB3B81289853F3D42381B51C0A72E108684F17AC595BB05BCBCC3390A444D28B2A5576B9BA5C42A723F0675B7DC989B73906BD9ABA4B592EE7B295F53BAFA04EAA5606F0DA37B28AF151B9DCA9AA9F7B384903198F5822A1CBD5702A066A17B81718770642B2445441D111102691011CF61D597B9A03C9E501F38504ED215579D5153B3BA3A13FFC9DCF1E3D7814912E24ABF73FF5E2535FFAB71B2EDE82F9B6507625749AF6B83635E1DF395028953093200FFCEC117E833978A51386D14390405D9EC9081A016DE206D58970701A1F08491BD6341BF5CCD3CFA2BCCA4562D066A03D7EA1FF8566B75ECA60833B3F170F1F4173043251485569B0DD76ED8936828B33EBBA55374E2F9487B76E210B4E799C83E85DE0D3570E023B2F33FF19F3446C1FAC77AD2E805709B4927876A4EBD00AC91DCCD949126DFC01651380FBA4704C85499A57F4401C1B99FAED0F7CE8A5C70F7EF56FBFF5E98FFFDE897B1FBF6AD33A240B50E4500B798A00C19B425B08E8753E0E7DD4C6EC028E5878FDD17F1D9FFC4A5A4A70D716B33BD5DC3C1CBE7A57AB72EDB8579B3303260C246E629B37793A3A051F28850E6670C1241BC50C86CB9B8218393D2AC74F403C0F2AE6A8FD528512183A053E501236AD92824613EFD07A92E3A4CA9A934938DEE4C2F775CE50B1F14A1BC75C41DC5F7593A54CC60DA5732A0DE13C0CB42539C7E0B424DB5A880F7E43B0288C217028DA10889D409BB0CB93BCA0684ABD7EFDCEEDD76FDCFAAE0D9BAEDCBA09F57D54ED9852C146F150EED45009D765192C11E8A17A2EDA583D76FCC255F8733C2E74C208ACFB7BA36FBD2A7CF126C7223BEFDA4243594E0A47BCED9D12807E78055B54EF8237B331740AFF8314FE5351309FF7CA5512B540C1006C1D9805444D001649360722F516F4FF22EB37807BEAB5EDD5EADA5F7D5F4401B5B1D3AD2E1FFBFD714807F0386B72DA3839A29F1E558F1CD747C7D122AA4D4E2BFB5F3AF4D56F7475B5413F853C3062B0D6A4B6086EF6FDDAA737AE886B03B2204384FD27E1F406BEA6402D1F3919894022EE1CEEEE44C3AC2F801C02D45B5293C1D9031C0E30405EE66A4272CEE3D3A0A688DDA04242F6CD8541AF78CE2B7941CE483B89D285D55847AB15C426303BEC33F72EFC77C7FDEA3574E097BD5D838EB528ECDB4B4C3F3F34DEE95689D8431300DF5B418B00A082338BB9B6C141AC53B465AFA6BEABC3EFB41A7820248CB1D3F5FC8F1E49FFDEE70BBFF319FDABDF54BEF33DE3B127B5471E6FBEF8A2FEE4538DFB1F329FD9C34D4EC9F974C7700F26804231206E549F7468CA2DD3B3EACF9DEF6C3C9A0C11BA1591461C3E313A9C4AD11936853CA7A944624450442259D4F34DA0211106401D87516565AD01157884D7DE8D6BAB63E34E01E7E7F504AFF401E7ACD57971C8CAFB3AA3738E27F28AE54FAAABD934BA78107AE3796AB5527DEA514078B4CD89F384A010A730E33006A33633A757AB0A3C58AA93D86AD8141E3038887EF38A8BA139803567D8FAE971EDDE87719EDBD2DCFCC8F44C03845AB40AE12C0C28C4506B311861D8543297F2A3DC06DCDFB19A0E0BDCE9CB758A5CF62C3875E056B9DD81971DFBA32BFA9AB614061D7246605C839686B706ED1E0134B6051234149660A5A8AFD1D47CED21BCC8506BA866788607D131F7869BE0D5CEE0676041CEDB5CF8666F782804F217D81460E2CE2C659FDF1D83223DEC8020996E747005C803E23C8EE959AFCF877E36A3AEA6B6EF4264E571832D0B8BD75A920E947A61CA6895BEF720F4FED95C6E219F4F04822E146430F4A097E25C0F4C24ACB4573A393FB7EB6D6F01B988942290A5AF5EAF6D6F680E6CEBDFCAA2ED9C6B35EFA3BE6986591C9FCC2F67954A251AF485A24130DBC9AD6317A1744161132145F6911FD09C15A4085DB3A99488158863677020980AC6DECFF7F81913D0AA97BE466DE0353FA09543E4D154816368519303C0A537A74681C4038C23D56584DBE816022C5A28F18D06A84638A9A66832818121FA289B10BFB2E21D677B5E5A0E0C60CF8BCCC838C61ACF59DBD199A5EEF01A896E63A461CABCE8B3E0B13021FB13840A1D9A8A1059A27E4B2FB7E143DBE7AEECEA95FADEF9A7EDB40E4A6BEA72235255334747F0C63875002264C887D12B497C5074CBC00B6391911402B8E9844DD967F0405784720BA1BB4359987F939EE00D26E01C1EF6E66229079A312BF926C27FE49C2EA63833E901808554AB8A100D35474A29715083864E1230D1002C15D05A384C0B0AFA9D0E2BADC50D390FC875B28A8579F5278FA3FF801A36E3382321E04EE7B338E64C55406AC394A3E6039868B15C49F5A7905D0020A10094DA5B6C836323FB4EC8E0541B57625A9B356587A32B2196AB5A6B74B6B7F74A7EEBF0D8ECA9B388B69DDE24EA90C0D0434C0067E3280D50C0F8A84D12C0432DD8168CB52079040A3EE86F3FCF1CFC179C0ADE8A3EC17433546495CE52968F1F007780BEC7C0C16E52F9CFAC9F380D8532A8D6CBE99C3F186E26DB48674D53D06866F7F5BD72CBD9DB4AC5ABB87C11A11348A6C6F4BCA035DB444F05C72CA0C1085854C0874A0388D2870F1D5E7FC32ED4CCA9CE4C8727219CB14788B83DC0D4CE09D7AE54B96D0FBC7A4E233DCF5444560F85FC7D7D68975DA30B332F8EA0ED80702887294DE213C0EA00AAAA9C0F2808111A1178381340F97624AA565AF228FF7313600F9465540BD8033CC8492E577979D15B2FAA0D728FA03E00AE40FC03B120737A0E0AC4F57416E2CF35CE1D6D4BD2B11838A52B1058A9C39C6F1CE0FA90D3E595A7F61202436746019652098A713151C17D7C6E1182F930DEE55279FFDE7DD7FFAFFF0FA381850FDC1F582CC1F776EBA0F396F6AC9C5BE9AB61855DF66CAD21CC4FB22D7EB69873A5A239B3397D727C58F437C77313874E29380404DD5E28E4818E8FFEF710D0009B370613A7C309E3CC3714B7C109809C14EDBCFFE109B003EA6A094A756210144957E5F41188CA34158DB86F8871C001B5ACC6E9D350BF830A1B7A8191579F51A05644547A2C4FEC8073C1AE1323924533B572B1F8F4F312C47001FC719033F0033D8542358E378846E2E1B1859985C55399CCC1F1918B3F792BAF83B06BDB13FBFE1DF24F8BEBB032E07610B09A56AF02584E5C443FBDFF03EF9C3879DCE098F66B762EB3CDF4F1516E3E9FA831CB53E92A848F403AAD3520EC020E070D9D8DAB202E55650847DB756112A969422CE8159EE04D6341FF31FB4363086C5D67D1CD026A063AFA6646217F056812D92FA8FA58BFB5B36721B18C5ABC3F1C808C4FD51FF626936E34EBA2C08FC40058E6ABAFD156ADA93EFA1CCAEBCEB13A5886388B10B2A89481CF2FB489D2D8B3074FB9ADB7FEC9A718AD4215883A8A24756A99B2493D2D73DFFACE8E799C6F80B13B19B2B323EC5BB067813EE5EDBFFBC9E3475E06A2D2BE7DE319D47922416D3693D2F9F299A5C533338898A90A6213D6ED934B919A0970D1F64C03A444B6CF3620FDB5B2099CBFE81CCAFF561364A0A284E6A96812DF97274E0683DE3A8E5C22C53008CEF25ABDC6E008499BE001FD8D4AA59A15FDC99E6E122D42B02111C1F895C109B5261BB593678486069E282D5A0D82A7B23C3D4F357712413085786448636AF7ED3EB5FF201D31EA8CB55DC0B09BCBED231EED81A611B7CF8A5DA935DA752E9A8995C3939D27D8F316EE88BEFBCF7FBDEE172AD5727CCBF0A9C929F403678E8E45DDBE64B4FBCC44E6ECC44271360D525AEB3DA90E8177768EC4722107C42120B22D94D5C2AF08A4FA990CADFFE0049C2B9639F52FB906F614EC0F0DD4DC08AE009F079627ED6B9CF53B4111245D2C321AA8CAC4DA3D02E76F4FD1A1529686FEA1D7C8ED302E0D453D38EA593F4CE79728BA5EAA33037D666F672D9347451D23A5DAE9DB2DA1CE235F7F1092F52B7437044136A6084A00CE5AA3538EEDF01F3EC074CE57C3885379BD658CCE4D001D5881E750C4A9D6365DBD75C3FBAE69BF6A8367DBE0F2F41C6CA5914513606CD745BB8606B72C1D987BF9AE671AA51A55036914F1672BA222BE22E3C2E1206F7224FF831370DE70D90DE4F5227625BA394A33E31E1468B32592D28429C08D663330426EE872A17311F09561557D41682240F307AD2CB8731B645F35D3F6B462314186E8C917ACA3A74408A9A10E5EAAA2B1409B98E1F32500FDBE35DDD061D66616399C0C23723B72E6137FF3A312785AE8655371CA164A5A1A50246A95216B8391A5FD61330B1D12CA3998D5FE3D785AE84B3350F9A2EA3E7581E1F01913CAB9ED5B87D7BDF71A1C7003A52E30FB48173A5D12ABDAE69EE10DF1E1D3DF3D32F1E218144DD06EECAC460AA311AD114B9EDA37FF7B9DF0AA07838E1F1C00C06AAC7775E6340425213709A5120AF16B350DCA9288A08979631B885407EE060270540AC62987C868CE6BC3730E556DE250F8A7F62E7DE787A29724B06127A8112312125331E44548232029054A1DD711C3F18B7CC34083D85B6AFC339FBD2B3B39AF6672D0B3B370D4207600963C30099A0CBB4793768643F8599D032714A5C08544C274BBF64B6C2074198111447DF2962607B6F7596005F17CF1ECAC5EAC541773C5B3F338CB624BBC2BE4DF70FCC193060ED1C0B15E74D81B895550E0E71648C0EE7F200AA244B58A53449BEE50027563B6B08853BA204462A3909655AF1201147573E42BC825716A56348E2C06C4504D53205505BE3B64CCED2CCC9E11A50E38AFF2D3C7AD679F8FB445491E97CABFE83825629B024D4864D4BD1D549B83AE79B52EA245143893809D60BED59F5CFAD1FEF26201278519A50A2801A4B085D1077CAFE03833D985A61D0C31C5A38E13A6C8C5F19D363EDEAA063BC7D3D329A3305370AA9C6BE8964B72960A32060E2720C9EBAA2C18CD52A660287A5B67D7466F4FFEF8E9A5C3C72066E40062187D9C476CF7E2AC58E9FFAE09B0834553AE82A18623DB4B670E23F4AC95AB02299AEAD54C1AE57CC0876EE4AEE1700092D989A49088A343060DB4D8A2108C80FD211488423A4BAF5771107CED99E7B5D367CAB26CF8BD3869C0F4A203900E4977C7C3C95D1B854840C0B1FC91903B1A064AC9CB1529111237AE913C92DC50078AFAF29ED16A86C440B46C1EE7B2600BC213900350EB4D19474E43A5AE414576147B69B1D37A6FE1102BA438DC96D3BE6AB76D50E4E68E473D170D20F6C574C1BDE109283A49037DE08729A7C62CD1D7D5DD8FD3BEF2A367A949145FD0F5869C1C1D11F7C643F81F9F8016FEDCA86159398C12263F835E47A8B853C54E45466E0BE6A143D16E0B506B7539103238930B4A58FB88F211A7FBA3286763E140D55DD621247C7616674407776D6DFFD4FB22BF7C47E853EF6586BAAA9D71EEA3EF606EBE84BF6997B5A5BF0AE80DE7CF6052BC6E2C63B44DEB8B8B507BF17DF8FD7A775797CB9F7FF8C8C28BA721DD6B144B6A26A3170BE02ED8AB1EDD0C68968245022E62A2A58F41AF20D9289B0EE43082ECFE50C0EEF068845101EFB3E051F3C1AD03881E02B130142AB968089DB6CDD109B1A74BCBC1F1C069EB3D176F79F9D1A7E8346E9C00095747BD92B6B9FB6FDD01647F6A2572A4FE50797A14E82DEC354E3CC2D437AA25C967F75243E8160711D620B2DD70E1B07CFB5C4DF05C70AFE8BF8409A25D84C3AE0F1E91EF7BBCF2E48BD99F3CB3F8C0B34BFB4F358AF5C5E78E9A5D5DE177BFCDDBD323AD5FE7EEEB0EDFB0CB77EB6515C105D5EC107AD6506746328D065D37AFFCF8A738A4CC35B798ACEAEC5871F1445A2E94CD5A5DCB6431134A3683E000876443C29CC5F9DF74708F862FDB43E04FC75550C844BDE5E88E722191D4714EBB0F4760F1EE645F5BBD6978C3C1402A0671708E8EA4E7CD440C9A02D047C75D22E301D7085654015E427C353A429A8E33B900D7FD2F9E005B4147AE603FA23C59193B56CB57E08830F1480B703085C380830A19AA38C4EFEC1B32890FCA63F142BB1F4B0CD41D943E54881EED7D5E3E7BD61039C48055375F14793D193DF3CD9F544FCD4DFCE9574FDCF4E9B3EFFDFD890FFFC5CC577F8233667CDBB7B67FECDDCCF60D382B1AC7D012B70BC5BB641C418B2F1C9240D37331BE8A1C3BB5503CB2A4561B58C57AB164D314898945E7642366056E8C3900118842557BF4F1AF601A803706CD176C8F92FCDC3FFD68CFF71F7FF181A75FB8FFD9E3FB8F1620048A9504AE23B409D17F0892DDFEC38D5C1E0C1DE0D410BCC3BB200DC68911B652347D011A680176FFE51340EF0ACA384C3C691C426454759533768F025FC92C23F6A7189BB01C6C443AFC0874111C744092A76002D129B8541A44534C6571B63C35CEF845F78601F7655BA5F7BDB5E38F3FDDFF47BF14B96CEBD05FFD46D7E77F65C3EE3BFBF77C4BFB957796071399D13363FFF0BD631FFF3FA7FEF82B39B5C9BDEDFADAAE8B4A302F75559DCF9A40A441A475BB7D2092A2705253BC670BD523995ABE8EDC1BD2C8482C2C1C5D35BD70E689BDFBEF7AE0E4BD8F2C9F1EA7558F7740F0EA1C956C588585ECF3773FBCF7B197B6FECAA7AEFF93DFB8FC377FF12DBFF7E98D575FCA74A5D8FE9E663488C88DA4CC900C82B0B375A30B3DB0C884A9322660C993DC0C25743442108A2253F9BA44F59F6F02CECFBFC8FED4CB60EE210053E747038924282A72B100E579A44E388C04B475A8B3615783A1D904912B1A24C1144A88E0B90133D0EA33AA15E0EC98214D01D0509DCF95A64F8D8C9F38994F67AA386D089E048BD42B24DE72E9E0177F7BE3835F1ABAF38FBC7FF0E1BA5FCAFED5374E7DEA0F9646C7C25FF8E3E647DE29A722D55C050114701819E2953874446F728A11389BABBC3877F2A10387F68DBC7C6074FFDEA3A393F3819D176DFCE87B063FF84E9C8078F2F99767C7A66BF50651B5FC61A1ADBFEDF26BAEFFE3DFBDE1777E39DC060163471E5D6DE03ACD66F063EF37537112DAB4070E013754B8F4A5BC2B882204A3794405B46DAA5238A7FD906458037591D7152CF839778003DC3AF917C1B250B0B5D00363424F0B7A7070ACA0EA01EE2736148425713A2C1A5139882235E209E8435322ACE9D53244AA4193E38AB3F3279FD97BE091DDFB9E7BE9C9670E1C9D9C4FAB1A8EDC6F709E99D9A5137B0F3CF16FF7CC1C3F397F66023B09FE1671ABCB23246FBD7CED77BF10BEFFCBDA27DE93FFE913636FFB70717AA1FBF3BF93FAEC6FCA10EE6A4FDAA7D639C54806AF4B564DEF4CAD6DDDE62B3E78FB151F7DDFC5EFBB2535DC057907081375EDDAB2E1E66B7BB76CF447208B80705980CBD2AB79A5B0A496D2C8009CFC16F90A8EF737BBDA327FF56576649C0A64740E19258CB2AA9694063473893BD996A4D36EEDFCAE9558128002AD37E0F12D5AC6ABA7E1E79800FBC54E704B6F06D36FCA45E49C38D15147BE0A253D1C6085BE14EC0CF0B74C48B8E3184315F381330BC0A48337C6D67D66EFE1978E8CED3E34FED4D1C9A38B956A479FB96E73F8AAEB7A6EBCBEEBF24BA30303BE58540A05425D9D1D976CDF7CDBAD389CF5C83D0F3CF2C52F9F3D78AC04252205C7ED59AAA905863AD6FECEC7B6EEBDCFFCE4FB32FF72F7B1EB3FB43C3231F4F5CF7A6EBFA1E297C0DA853C3044F51D6E7F873B607EF391B1FD234EAE47513E821F07AB030BD6C90CA8E4A2597205B8BA55CD366B85264E47D2D1CF64E29714D129650B5A75A4CC883637A88B10C8E84E25D4740E4609CF9A9B9FA393451D7CC946869CA40F8608CE6045096BA5FEF01FDC014E0BA77D17BA5A25AE3AA28B72197D7A7211471B2317A1122A2E115A21781AA8B768E6AF212EA0C56F7DE3BEDD47E6CA812D970D5C7175FBFAB5D1E161361A933A3BD06AEB022B022F474803F1269418912BE088A260C09F4AEEFAA58FEFF8E00732B38BFBEEFDE9FE1F3D542F946C05250887992EC935F8A9770F3DF16DEB1DD754BF78E7C1B77CB454A8F47FF9CFB95FBEA3488EDF000AE294D9A2BCA07DE381F1A75FA62613FB8072F85E423121A283CE2FFB0B413EA2026224C257537A8C400613A44105C83E441A09A6DD9B6777DD607313166ABAA26B06E084719E621BD41C2891A7830DF1D1646731E87629DAC1C09C0958F508CE5F3F5F83066DAB5617AD6528555427F4E969E83420F802CB017BC2416801FEA1904A3AD47E5FA9587405C3D079FEC14B235B2EBFF69D1FF985782A81FA30BABAEBB83E784E7C0F322C1A95503940FB18661025460479386300AB92D0351718150397EEDCFAF65B13EBD63F77CFFD077FF813A558C575D04990B82B0FB7FE2F7ED5FFEDFFA3ACE92AFDF5B7C63FF83BD54C71E0DFFF91FDC34F2F790530BB119E6B8A9600F1E45B8F1EB9E731684C328847416A77B8FF3644828B77F264922F230B43D029B1DF519604BF1AEA2B90EE4559086A19513439F3164C7C34EC15C4C04D97A24C3C727AE486B7BEB5A52F46670E91416EB5BA3AF512A720B73AFC2B73F01F8C8230A3A063A01B1A474E2228AE2CA6B12A20956C6F67DC0F910CA4600892F8251737EFE29682A95D575D1B4B2591D0039C400489D362D1790102B91B47474168036C751BB827BF6797AF70A009FADDC9A3116F0AB342C763A33B7ED71DEFE9DCB1EBC8A3CFECBBFBFEFCE42C614CF6216DA1CD035BBFF9B9E05D9FD72FDFD2F8DADDA7DEFE29B8C76D3FFA56ED8E5BB2483BECE148788389274E9EF8D16ED847EA8D412AB0D2CB484367631204A6D2E81326949E98A1FA42A063EECC420922E30D888C83666077964317AC54940F1C9D4ACFC1B442C6179500AA5B208D734027625D38D8C4CA5FE7FDB03A923FB341E3F51F6A03FCE7AA363D472799610CA114800000C70B81380C69775A0540286A401B468B7A3396F282FD8ADC06D03F08B34017D0E4021149BFC7E747FB213A944831005A41F813953E0873FA7D20E105D1C582C01A40371C385066DA192435C68A7EEFDAEBAE19BAF6EA8591B307EEB97FFAF0E91A44C9807B1B1A047F07FEE257C5AFFD61CD2798FF78D7914FFD5EEFBB6E1DBCFBAB8DCD6BA8B3B3E90ABAC5D8C1D9917B9F218CA89503A3966577A6C23859CCD4D1B17DDF7FE4D13BBF7766EFE1C24CC6E5F6617B9B8CB8786A0A27D253A40FB2106804388112F2C96393E04FA3720FB156181FA79A473C27E2DFB76830D4A46E9B1FC70338A3EF8CF06BEC803703209103D01AD6E4240EA182123B827F9B8B09BC19193CEA73329145484ECE35369BEDD8B219672A81DA0796074E38E5C0A926DE208A92B4F449D81F42BC085C6D113D124EA1F607622260E0C11D82023C6A52BE908FFEB945D6209D04729DA6D5B679D3D0B5D7C01C8D3EB27B19C772214E5255882144B7ADDB70F75F573FF9F6E6B13367EFF8F5A5FD8737FCDD67C27FFEEB723C889B0B7A3CF189F2E8BDCF62079B3897871A635CD367A6F73EB0FBE9EF3FA6329E8D1FBCE3FA5FFBE5C11BAE1D7ACBB5120E1A0D79076FBC72F0866BA8C907676FAB1A624C8435FEC15E637C2EB576104ED65196B05B33EDEA00D52B611E69E950B848CEC04E8DCEDB06CEB6235ECB9B295D5E803F603A33CB9589299FC8A349B351A980C90DE17E62FED8078FA8F52A1DD90AF95A29E0878810CA7858129108142388D00130D4037152772C28053C6824057114B9998DC150D842311EFEC232728A5C8E43033E86590426DC6A58B7C5F5E03600C92537AEEBBDF26AD5604FECD93F79E454A35C2BE70B956AB5F717DE11BDEB0BA5CEA8F199AF1EFCCDBFC069077DDFF81CF7F1DB71A89D5FD60287178FDDB7B791C98EBEF0F20FEFBC6F2AA775DFF2F6ED1FFD48F7A5BB04C9071F46C75B9068149D1DCF7AFC4070ABF93C6E1DD78AEC13AE9D4B267128B1D4D53E3F35956A4B82A3455D074E97D3B9FA1C49461256E1B8607B53ACCC008DF70A736FB50D8FBA90DF201183BF6A9C19611B750EC90BC2676824D97A16987174EE416C1572A1F042051CCAD3D9017A25D83B4C7B970862AF0FCB1E5C2DC80A0BC99017046FBBFD8B46DC363094223BEC1D3B926F55CD1DD16CFC838DB8383287B6A4B9FD0CEA26C5520284D7D6DEBB656BA4BD6BF2D8E99993A33080A562C9D799D8F6AF5F90FFE863C6FEC323EFFDF5C5178EC4DF7153E24B7F9EE9EF884B9EE468FEDF3F77574E6ABBE4173F3578D9A51E3F94C6D1C72AE0401B7DB1209F9ACA3FBE2FFFFDC78A773F967D704F7D6E11B9340E3E832F21356D8F07F4C7662294ECEB5D9E9DEFE8EE6C691DD89244F02176D5CD969FA6BD4AE38F5D60A703340B0E3706FF5D60829CC5EDEC8E1657E6D5DB02DDD7D3678B870F63E821EF80E81EDC1102CF71D82B6C2CC84BB28283D348B9DAED757777631F68A108103A9820A2F6F21C463EEA07E78F6423A920630F3CAC0DD2572C70DC9BFD31E7986B0E9D64A56B9B7CA6C39AB0235E9B38E8A89FD8ED828022BAD66F4875F76526A68B33F30D80719631F8AE1B3A7FF8A56267ACF89B9F1BFDD32F610DAEF9CCFF2ABEED3A4ED5AF94209B8B2E26AC0B549E99FA42463D75967BEE30F3D80BFABF3FD2FCF1B3EE3DC75CCF1DE59E38D038320641294403B62897652423E59367FC976E45AC0D4A10AED16173AC14F6EC5E6F2C0E7BE1D3D0D304D891E90A47D299035B39F7BC96446A7078BD2C18F8B39CDDFDB82F846371C230B7B67C15682512D919448D549F3471D6048491DCB118A205349149891469B5B18024F878D007F1726033F6B823DA0463881EB66D218CA8D51CE0F06A5B344E7A9C7F256E9A2CD2FD27BD5E7A952D70D56AFB80F60A87A3021243436EC997397462E9D031980E6F22B4FDEB7F21FCF367AAA7CF2C7FE0B7A7FEF9079DB7DC90F8ECEF772512FC038F556716AD62B5F193DDDABFDDAF3FF48C3636AD4CCE63B17BA12842738AAB6722A924EC4E7D294750B86184AEBDA2B1E78074EDCE0CB8625E6A87B2A5CDECEE62BB4DDC91D481B22C117A018861CEC810518321CDC1CA3E78253DFD82E688D55578AE4FD82C1F7999595A862EA64DA5B2BB866C2B848F022B0FE12918545806F0A9CD580402628620516724F53442151D8E174127FEC790E3B6ECF89338EF343FCE8E231465A5EB6C3562732EC43EF4A025666BAFFDD644D10B88A6699B332289826E0E390ADE1D8B04D60C616D175F3874E4FBF7D78A85B68D035BEEFE7BE597DE93FFFE4323EFFD1538B0E4173F333C38B4F8975FAD7CE16BDAD3FB6BD3F3D022ADD2811D20EB2135410F28B758AB640CE5587A16C0340563182181AD21D63F3D11BF62E753F73ED0B36E0D86D759F4F6B052C5CD0982508E6D3962EAF5A6E16F4544ADB808E5E89FF158DD16ABA689F277B95E7AE4119B09CBE3686EAD5004BA0B4D1838615B05189541036C731CE98D0E320841A2368B1304F162443B41683C60E1D2E863D06DDB43C718B5963FF5C8D81EF8FC6643C7913906D386105A6104A5FBD4E9447DA898475B09BDE5494814DAA6CADA8459069BC54A25D9FEBE6438FED2E7FF31777A542EE5066EBE72E09E2F9537F6E7FEF767CFFCC5DF073EFEA1CD575C3A37398DD5816B84F787A14460A425C3A58B87B83FFE58FFBFFDDFFEEF7CA1FBB66B6506E52FEA90B33A13F9EFFF94BB7ADBE4C444C7705F0345378A651D0A1255FFED9314101F407887061AEB138084E38A6D4252CB2E5192F33AFC6767D53BA7C1D8FDA656EEF1C77CA839A72284B9C2EC03D104B1071F4325AD06A01FBC2BE882181A2B9EC0FBA8085360FDA14306321CA981DBF6DE7ED0A063AE3013245C43DA2F342774123343E7B0DB0DAD7837EC609B31653B5EFB4F87C1D20ADC6DAE91BDFCCFEB52B6EFC6AEF692C7A0810987B4A1DEEEDBDF9179E9F0C2CBC788F92C71977EFE77F8CFFFA672F2CCD90FFCA630BC66CDA53B4E4F4C02BE6DA6E2EC456BF55BAF903E7A5BF0EDD7BA6261F4F323A1811129412018BD556AC3B3FD22EDC089D82FBEFFD9BBBFB7E62A0868D36EA465E2A88CD8DD2D74631C0E8E7443CD0B9B809276FBCB314376584AAEF35526E842ABEF0057CE9EA98E9DD19F7D462181071267041603CF09E003D3005353CBE710D4209EC4A18D285435C1A602C2EE0F212BF162F4B1CCC9E6DB369BC41FE87B12C9766484E99794EAE247BCA7CFEFA75233D4E3B1D7ED6DE15CCC2A6FF11C7B7E4576CC11B5A3EEBFD558CE3E1F84DAEA1129E15990A86B4B78AFBA1A9BF7D4A34F6299405EA3E7EA5D8377FF4DA32BAE7CEDBBFE50B4BBAF27DB1967DF7FB3EBBA9D5C773B2931D23900586BB857572D578AF90314718482A5D3B32EC52CE160A768D8C4812874209E2D70E43401B638660E171B34464021B4FEED7D009CC88685EC854DC6F95C0C7AA109B27F6CBD159EDB281417FFE91B38B7C30A7AC8D4E0984DDB87C243D97B0A3F12674F9615118ACD500BC40F86E16B6FC712F07B70C4004933D89AE9B67CB0DDF46037603A6ADFB611B137813D27688A81EE362E95F681BD6068BFDADE60A58F6CE54FA7F58B561CBDDC0EA3B03EE0B4ED2D42B4D9160F8B8E9761A361A5BF3FD5D777FCBE9FD4A7A68971110EACFFD6E795775DD178724F87D767EE3B5E199F42C60EB004FA482DDD534ABB10FFD3FEC472F0DC7AE3C23FDFCDBFE7FAC71F7CE0F25B6EB25729C5C7ADD5DB52A0B3971669CCB1A1A01F678F205A245D7A3A0A1A37D64A0B567CC0AB0A97E71265DBD1817699FDFEF7C4465DECEB2042B6D36548789C42513802337448FB7DD85B0D882CE0FC8464829ACD21F78A8E369CB38ED6303235CEC0B7467FA5D3B735132B2ED5F1A4B44724DC3FF21DBBBEE42C909595B51216D830672B985B899CA89E8BCC8E90680A67299FA079469B2D85C0183F1CA754E9E86ADBB66DE9F0711CC34ECFE1F88E8FDC2E7EF137B3E9A54EF04DFEE9FB283E82594DC42064DD04F99960E9416D81BA247BDAA79F7A1EF848E0C3B74770667D320EFC0375D5D6091B7667034102C871A8210E2005DD1E0017FB5C001A79F2C9B63B206B446729AFDCD5F9A67F05F3A77D828A63E1A19F34CF9C6691C743E1078E1D46AD5CD200BF908FD7E1B9900BE09CD76A0DE7E8065C7E3F6967E3DD032162282160440BAEBD5C5B41BB3DE2AB22E14E44630F7D4B4DDEF912895CC4E2FD7183B864C775AD040FAD6F1DA7678B5DADB40DAEE60B4418B44D9BB3BB9CF8D69648402946EEEAF2AE5F8716DFA5A79FC72A879F886CDED0FFAF5FA85C77B1902B2E7DF93BD48444A18B2D1E41C5573AF3299488C9AA5EFBCE03A1DFF9C5FBBFF9ED4B7A8748A097344A71B8C63910C719F715E62FFD110CE044086048647F702037E680006B7B0E1CFAFC39C7BB8AF6609E64B5516FD4F3FBF769CF3F67724D9E4E5D473544432F06F42BED0DDE04370D992F060EEF0D7C87781C24D0CF1881A0184FE0784890D1294471D4C05F63F49D80DFF9C65109757E41DF7A4201805CF66523C96EF9AFD5763B272E76B6C58AC2ED0AEC488108CD058556F02AC0076197ECF28823E386E040E9E8740543FCD4C2FC7D8FD0BAC53FB8C5815FFF70F7D7FF0FBF90C93EF8B8DD1C856DE0F87C969959B622E1DCFDBBAD9B2FEDFDC8BB97EF7BD85AD34FB001ED2FD27DB1D56D5A4A3CCEA052A2EB488EA320815381159C2E60B3BF68FD3BE5023AB6F102C7DBCAB67098188E82902BC5179FAFDDF51D5593710C0B702E2C46884293FA3BE44E10D604BC88BF488710DA05382D19A441606D8120EDF944871373C22E9383B4D7E2F9C6DB361A2DE06155EBA3A5BA62CF16195F74DE219980CBC172C007D8FBC0068D5B8A682B9ECCFEDB21E1D82BDDB1719411914A343202DB0191AC8EFD51B6AB069F4E5D37E48E467D99E2F43DF7D3E16584A5F19EFEEEDEDFFF25D7D307968E9DA49D67337761BF5928B19F183307DA2FFE8B4F7FE64FFFECDD6DBD6C38E09CF640F294A484E1088FDABB6C25AF75C469F1263089907BA62A3D81732B86880EECBD70F4293602D7166002D8B0A323CA0F7F88D30AC047039049750668E0E2D54D8BDEAC3D89F150CA25DC7C1D02C60C4E4E70B1A904694240D82F92C0A8C3FA3BE1E379622A2B06AF652F1C35F8968CEDEA63A545108E50147C5ED2C1852DC2189DCB625631AD1582B3330D369642DD740EB3D39E25E75809AC87961A9F132661DB783DF59D684917A34B85D16F7E172E87B0194CFBF040FF273E98BFFB41A55080E14019000306FD4D6F2C90FCADF7A6AB8DEAE32F04709A614F3BD46C5AA1672BEAA18B772A01AD7D632FA995DE4C1CA20C2C95E4766845D91D9E17807104F31A665D83267F5D5B5EAADD750F861CC2F5E81B8709702432A84110871281050F0C84844AA0D883F6391708CF387C8787723BD2B4643B197E6459402B1DF581F3F08ED5A46325585B118D3C6FF457007ABAAC008E57760EE0A5ABA6F2C08AF95FF55FAB2DA876D48C2C74E54D6CB22FED74676CECE32D9C7A4B2B5C34BDDEF240278629B55C3C73E75D4E544E02605BD76DBFFEBA937FFB2FA030219047B528E86A9676AC49AD1FFABB7FFEF6276FBBBDB9732B1D76E6D019E9535ABBB3D5696527502BE0398A0EB6C325B744D1910345B44CD085481C687568C352806816FEF19F48000967CD85425065426F049621AC10227334EBE064CE7A2EAF4134ABD9AC94A111E9C1E0809180500F3888904811BCE01C15B51AB49CEB506FFDBFB229CE9B98D5A972A015C775304CACB31D913411143003F06136C38222D39672562B3FA6F357354AFE5683F1F3BD9B83606304EC57D88906898730E6C6216BFD008EDD69CF564EFDE5575CE8AC22E5271F7FFDA5BD91D8C243BBA923A458AA70CDB677DE9437F8A9279E1B0C47C59BAE20E53B7BF73AA92A7D12400732D228F7ADD622CF45F85818D0EE075A4041857DB530442B5190C3F3818FB69B1AD27FFF157483B2B1B8CE7236C147C113608BE9BB1ACE6170A10652C9E471985E1D675FE2A69100230FA0E216DF8C25010F38ABC0567659B1880E7DFE9C113ADFF55CD89EE70C9C7DFDD4E1615F9B140EE1D35B8606BC57DB1BAF608A2DA6035E4F878EDA9B9DF6818350B6E694DA036C00830E50A715D9F227500F172AEB07509DC6A9065D4D36FD37FFA22EA6E933BDDEC1DFFA64E3C86975720E3CDFE86517B3BEE0DDF73DF867ED6B970F1EE4B6ACB1814BDBE2DBF27E78A03448FEC039277225907472483C13C7FFE307EC5F807AA070113464F7D4B6469FA2785551E5DAD97FFC0763791EFC53A8F1E14C2E02DC01B5290D74EA3B6DCF4847942A88B6506B672BE06A8B22DE97C721F78200538D135F9D5B2358C149325A21CA2BAAA1170EFC7920D0CA9E69B56B3B0F304DC182A2CB7616B0B30B5A48FB4A0BBC233CEF602C2B870DAD6E3D47AA08AE40C2490EABF0960DCEE8415FFED2AD9814A46D380DA7F4B7DF2C1F3C0A54093A981BFFF037A71E7E026717F7BDFD16D083A2D97227329E1D1B692BD9B0F86A67062D068A68213921D07DDA74775B1BB6B5DD11D1D126B62FD7F915BE6D8D11BE038B07C39FBEF787D2C28C27195194AA6A28C862ED9309E9653072284D29F55A6979B9562C9672F95CB688D700984738ACE3E022D4E57D21F87B0C8E23C6B972792BB6E2BC12C32BA662F5A7155FD1FA790597A5BFC3099CCA42F11B1D4B4641510B5B69A175B618E0AAFBB65DDF6AEEE6C0732497857F87AA963F1CA48A7F2B1CA4DDA4C682C5F5FD78A33A9AE5FD21F6DE27F38F3E8B41F6C5E3892B2F9B1F9DF0C4E293734B6BD2654D12C21F7EA7A3DBE438570CAE2D7F63076FF680D3ACD2AFED33C86CEBE77400DA111C2C0D4D828D0ED951108DAF81FECBEAFC138FA907F6E1E0788B44422CAD5A2ACCCDAA75D0476C24800E91E0A19907AF4497DD04ABC3429A0B9B6CE1D8623704690C572445AE9DCEA95D01B0579DE3B982686B23AC7CD3EA1A3D3F0D6C29FAAFFCECD0F6F1FA502AE5D048283F5F01D89DABB3A7D7E906B3F336BB3048FD2A3413AD7B2614CB5E02F63178110714A0B0CE1EC56A7BB20129367C83E378B07B9E3934FFF5BB21ECB276E70EEFE0BA6A4D999F5880D09FB6A11F8729DA83B6C2B55AE9BE77B07E1BBCA1C62740A2448DA55C999E8ABCBE5446B116A104806532A4C8C9FE7F9D721AD9457A8A780000000049454E44AE42608289504E470D0A1A0A0000000D49484452000000600000006008020000006DFAE06F0000472C49444154789CADBD07981DE775255839BCAA9743E76E341A8D0C129104012690CA54962DCB962C5BB6257BC6FEC6F6AEE3FA93771DC6BBB333B665C9B2C7962C4AA20245C91293488A6000419048442280063AE7EEF7FAE55039CDF9EB354050022872E4D263ABC30B55B7EE7FEFB9E79EFB83F1C2C3FFD90EBCBEFD78E3C3F5DCD2E50BCB8F3F32FDF5AF5EFAF2BF2ECE5F5E9ABB34B338BA60AC4C8F9E69D44AAEEBFE8C67F21F7E30144D93C7CF76B45FFFC6EF12845FCD4B13C142D13A3729B56CA6DA642CC71B9F354F5D101981A6999FF944FE370F9C5BFBF47EF260704A78DCE8CFD7BDC8EBBEE39BB934D7B258D332C6E7698F1252496A62815A28A8994CB4AB8B13458665DFDCDBBC856BC6C3A7023F208F1B59E1BABFBC7A30ED67C097C27778C3CFC313DAFFBD456B5E3D689AF69B3AC330F14D6B3DD332E7F3D6D83C2D0834CFF11185E7C59FDD975F671DDFAF170B175E3C74F1E9470F3FFE183EF0BA366ABBC88D3E981828BC76FFBA97DDB60B397CCF2E154BCF1FD6970A6FEE14C397BEDE582CCF3BE586D891E6632A0212CD723E45B352249248F35284E5B837304FE80BE471D535C25BB57AC37EEC615BE6D8D123A7BEF3B589C7BE956D2D67DD56B230FDC4035F775CE7CD9CFCB547DB4034CBB2B8BDD73B2F9C806FEB2DB3902F7EE521F7E57395077E60D6EA6FBCA6427390BBF263CFF10CD329D72886715856D934ACDEB127FDC177A9B92E498949B242D1ED93F9495F08EF1F1E9E5B9E9F9D3F7F66F2E89199A32F96462FD517E68C5AC53175DF73C27B1C34EAB5B34F3C76FEFE2F4953A33D8948C7FA613F9573B25DC92D37751BD5638F3FEABF812BDCC840E1655CFF7A89D5F0F07D63749AD23D29168B0892B9B47263E35CDF69DBDF9B2BA5E8AE9BD4F7BE3DF6AE7B237B76C6376F8EA433702B7C0A83FF5DD77971E9ADE6C2A99397BFFBED57FFF97F78679F9516CF65DD45293F6E9E7ED93CFEE2CC771F18FDE183A71F7E70E6F4C913DF7D68E2A16F9BAF9E8BA693D2ADB7B007DE46DF721BB57B37BD7BB774EB5E5D52BBB4CACAE2E21B9FFC753D880421ACD8AB1EFB63D7CBB01CE5FAA21261459112782EAE84C1E82D1F91FEDEF4CFDDA70C0D8A8A0A976118B6B634571ABB48C2E8EB4D43EEB3EF69CB0B95970FADFCF07BECA59359B7DA1195DC62BD31555A3CBFB4305DCAE76B0B73CB8CE77BF3F35C7EEAF0DFFFBDF6C273CDB3A7529ED59C5B58BE3CAE551A2CCBFB341D50BE4B7941B653F6A8EAC4D875CFFCC7EEE86B065AB508F114CAF73CC73271CFC8F95D09FBB889C875DCDA1E3313B36DD794445A917CCFFDB1ABFAA9073E1E798AD81A4B093E137E222B29B3F77FB1323BDD7EB7F66AC2E5AC5CBE38FDE8779B879F76262F33D5A25F2AB7E696B5D9A25D77D5582A96CAF6643B72921CD30D7FA5E2171A74BE75737F574AE16312C7B85EC23452E3A3CD6F7E73ECF3FF73E23BDFCF5FBCC878AE1F9171B57EAB796D70FCA907E39886E7DA9EEBF8AE63694DB351B5EA35BBD980A9E05624133816AE854B26E4037BB478D48BAAB6A6DB5ACB354DBCE4AA27FD5898FCC983FC92581D77DC09EF8107734453498E628CE34F358ACBF813CEA478F9DCC92F7DC138F9AC502F3A6323D4CC8C3BB14835EC44EF507AED90CA8BD6F173DE532F184F1F368F9EF2C6668CF91589E6253F88497C3A1D4FA6127C3CC627628EEBAA94BF4E91365A267FE8C8F8D7BFDA5CC95B015D5E5E794BDECFD4462F372627F5D28A5E2A3AE53255A9FBA58ABB52B49B75580C9E527DEE38AC84BBCE70ACB47733BFAE9BAA37DC6AD5A9562CBC44D7DABE86C3D2F5C2F864616A8A80869F486A5832F5FCE2A9EF7FFBB97FFAEB17BEFCDFCB63C73DBBE5F92E9FCE09C5E5EAD9E79746CF9C79F88199671FE9497074ABE98D4DD14DD32D3569D30FEA9671FAA27576C49B9A1538DEA11997A61859F2054E1679D1B5459AE679E49980A602DAB7394596334946E4AD661D9F9B51157EA5D25D2CAC681A030F7D2B07C3F5757AB51A5DABD3D53A5D6BBAE59A536F79D5BA57AAE2DD6D438FEDDF81BC83EBE3042C08494EA88C69D1F516655A3E1E9605F3E18D8C6673E2EFBEECDEFF83DAE7EE9F3F7716A7754D8EC74F5E617176F287FF96D147FB793F4BB3E70FBE78E8EBF79F7AFA87622E69CDCD27B5F2E1EF3ED4CCCF7474A7ED7AD3299AFE72DD6FB85E59F7CA4DBAA5532C17B03C1E5543E736ACA1938A4D7B34CF881210822CA90A27CB01C33202C7061E3029C551425CA659CFA91669CB18ECEE646C07E1C3A8D5662EBCDA86355762C81B791443712CDDDFDD5AC8FBC5AAB190E7B76C14776EF53BB254A942359B9EA97B58143E3E92BC09320DEBB93CCB301CE7EAA68710E038F82B6C541C9D48D42D51898A2BCDCBFF707F697101EB2574A5301339C6D4B1A77A922E47B564D98B4AFEF0FA351BB66DE9EEE91AAB1B016C54AFBDE71DFBE2D98E809598993A3B51E07DD173F820E084689457227410D02CD3B04D3E1BA36DCDA73CC44F51152389285C89162586E1394112653570FDC0D419366045564C4468DFA1B42640DC60326AD956A35C722F9EB878E829CFB5AE0483EB46E7AB411A295610E5A101AB65D0FDBDB41A813F481DE980E74A7FF96FCED482675B8EA19B8D06421209B4BC4047244B16A9BE6E842EAFA5D98D069ED3BD6578A954AC9E3CEF07F4BA1573FE77FFEBF80B872DA389456AE88DD9894BCCE2A459773CDC771BEBC3A72C8DB55ACECA72DFB6AD8E80C01F5B3A3FEAE888771293C9B17C4418DEC0E29AD518B96035E6786E5EAB077D592EC29BADA66D9A9C2A45E27240078C24D19214D82E2EC67789575136C9210811F82B2DF1BEA13330996DC6632AACA138B67BF6F8E1FBFF412F2F13EC49B2C58D0D44328AE7711C27E6D2422AEE546BFA8F0EDB075FA64A8DD8DDB7709C40D94EE0B842446144110B1DE7ECBA1E178BD1AA42C3D134DDAFD4ECA5BC35B744AFEB8DF5F5B0BCC0441439E0CA2F9FB2F5A6A5B76C439B3B7DBA2F9E6602897225C7A45EBD3475EAE42B879E7CEAA5A79E993B7AFCEC72F37C8316B7DF964CA53841741371F9C3EFD0EA7500248117E978D2338C05CB60B3AACCFA40C9946DD28EA5F26135E1BAC85034C9181EE252A01B4E5383D13CD366198E415C88452996C53BB85A4B15785A1417E78B192516ABD58E7FED1FAD5AE9A72C314FB79A674680A4854C829E9E735E3A2D350D6FAEE08CCF8B71058B3F68996D1303CA213AD0BECF7A943331EB2D1658DBA36A1A5DD768DDA42D37D6DF4D2B11319B51D60E24FBFB9C95BAA7E966AD42D9B6373F8DC810780CE5F32393CB72446A551B62D5BC65C3C6E15C76DF873E36BC6DA7E4D3A9AE61C6E5FC7C457BE915CE328D4AD51FEA315D7756AB477A536A5C756C8B0E5CCE73E3512C4004158B238B8BB1748D46AC60B8C0F1799A8557B8B61B0448EBF04241E8C8C1F941C758AD162570AE6651A6DF9BCC4AB677E1E1AF7996F1464B8CA93481DCCCA6E6546A2CCB490C0B6378AEDB58CAD7A6E7E1F35EBEEA2124E35EB534EFA5B30875ACE7291EC55F980C8E9EA3349BD2ACA0A953968D3F7111C1E3594F96CAA6217775B0309F692ECDCEA53C1BBECC7222CB4B9AE9B21ED3EB096B388EB72D4434AA5CA201B19A9A5FAAFBCB557171851E190F666624C4AE43272A4B4B9135B944264E733CD68D1C9568CDE0588E5794C8D02654B9F06894758C20B191A887F5E5075A5307A60D42F407B2CB6569361E67A2EA747E05F96ECDBAFE866606A6DBAFC62B93F313CF3EFE06C888F1660AD4DC0AED046E55D3E70B88BE4C2A2EECBF39F31B3F1764537AB53EF1E4B3C563E7828626AA8A75ECCCCA5FFF4BF19B8FD79E3DE6549B2CA236C2704BF7EB4D3EAA32AE3FC3394B1969655B9FF4F1770FDD7B1BEF07CD0BE3932FBCD4DBD90730CB50826FFAA5E5B255D23B7B07E4953257AF0B1E091446A1E8164AF6F95166669E350CF82CC70B4820AE22357AE34A54604581D2114A6C275F0F0CCF2E347C56C5520A1804729A4DA52931825CC24A322A4BBD54E3229190F042BA6210AE99880C144259002E0E2DB0267EED062C236EEEEE3BFBE44140F21B7A90B058F22FCDD5BEFF827D618E6B7982AADA5199EEEB0C54B9B6B86C1D3BD7A751F6997144568613AB73CBACE531F365EEA64D8161331CEFB1ACDD3203DB37A7E6354DDF7CCFFEBECEDCD6037B73FD5DDC4A459FCD27193952AE71B124CF4B487CAD522D2E220024BDD3AF0AC84D7E602D97CCB9E5F973E39591A9C034DD9592AF194C2E2BDC768B948C8F49FEDA8DFD583E9CA206759DA91B6CA116811FE6BA585E762E4E1ACB1584626044468C50962FE8A6DDD4181354203C084B8C6645C9330DC37281E524456568965762D1BE7EC774BD8621A43A6FDABCEDC4B7BE73233E8321AEEFB9D91DC391B51D4E4C2E1EBBE8A11A00F081DB690E5DB302514C48726D7A015846BC79131D89D00C53FBFAA35C4C011E63548959D3A525635E263974D7AD784351916A2F1C338E9C46D2C3C95544A6231347A6A75C175059F3FC4434418FCF8AA6290F0FF0F138C7B2B21295234AE1F488EFD87049DBB691AFCDC9994B7AABE7A675AE6D2B99B4D568723EC3EA58430A70B8B061D83F3F11D45A0C5613CD98C59ADB725AE5862B08E5C5A2204895724D4C26E1246C26AA0913B3172FA576EC69367449B39DAACE949A9562C3D71C776AA163C7AECE6872E1F22598E327F02DC5485BD6B231B579F2E2F4FFFF2F56A9CCCB3C333A577FF470E5B1C3F17D3B82F7DFED6C1A6C519E7971D23A79A1EBAE3D7E4F36904547E2A454D42A57E87AB374E192105510125DC34224F27487751824322119A722E2FCF2420CE6595EF60D1357623B7E34958EB47431AA88A904E1FBB05E1C8F765D78896E39746FB7BA6ED045C5D7D7CDADEF93106605D936EDC4EEDBA8AA1D1435545E4EDD74F365474765E87A1AA264252837F1E66CCB3446268018598AB64DAD615DE67A9B5AEB69F38CD3A529ADB119BFDCEA8965DDB105A6DED211551AAE5333F593E753C5DAE2E33FB26DF3AA85DA45A86B5B4CE3B1C36CB5AE8F4D3396BFF24F0F6A4F9F308E5D925B76C470E54BB3C2CC92887856D2128CE25BAE63FB9D7FFA99F8AFDCA7A4122443B99EA54698A5123D3BE78D4EE11B7362DEAB36E9DE8CB4B647AB3718ACBAC9C960BE1068966F38BE619D3E7B31E2FAB261C04901C4DD952A2257605A0CA275A3EE3BA825B5264D73B7EE3A7679B4ABBB8306445215E4A3CAC117E94AA3B55CF62C27A019E3E5B39E61EBF07ECFA32D6433DB2C94385DB76CA76198AD81804D8F4E5CBEBC70D1B10F7724B558341B0F4AD5CAECA2D0D29CA6AE2D96DC584288C56456606717BDE57C57AD3E79E238B9C2905C85B39B8D7AE3EC3946DCB0B6355392F998C74592FB773AB4C72464E3954BF557C6B4B14566B6649C1C89281237D4573D3D517BEE8C536B505135F1AE7D5A4B8F6E5CCB4722BCA4DAE379AA657B8E6758162F89ADE74FD6BEF9383F32C3093C932FF8BA09B2810D18C7B012F154040B448EC02EFA898BAC14A37854577CAD54A65DA7052B236F707C737A26B7B6C7362CB1B30399C869980945657D2FD6D705AA84A00A2A005B82BA8217793EAA8C4CCDC07D5ACB2BA6461C92C9BBCD724352A3896537CAF0722E81E7A09EEF8EC704CFA7444E8A46B86CCA631953D31D8EF322C09C51E7DCABE015F46A15659351AFB5C6A7ACF119A6B55C62873AA80D3DC9CEACB3588EBD6BAFB873BD30D415DB38C8554D7F058D071A9428B0867CDB4DF4868185DFFFDCCADF7C1DD09AEBEF0454B52A753CD94F482E1F94CF8F357EF0AC7366542E6B9C1D00AF969B8DBE5C52DD384820AE833BDB8AA4B3D462DE77BC4092E3B7EFF7D538703CA344E05CB2A2003D48C95450AC5E3E7D66EDD01A1A64C86281B25CB6503680C8506BC09D01131C8706445051924AAC2C55037F657601E007A840CAC539914BD251BBB639E677B00D834539AB4480B67157086D6A3A706D9C8E9850913440BF08A9F464B1569A2B7488E2E4CB47CD52D1AE56DD96C6A793CA5DB730B247FB085760C2EEDA1EFDD001E97D77F15BD6AF8C2C587365BF336E7527ECF5DDA6E02F8E5CD0EA357AB89BF9F9BBAC8FDC7EF1FCC891EF3F7CFEE5E3655F1FADE5278ACB5385A5C53835B9257B896FBE549F3D47B7E42D430163AB1D09DBC3E2343D432BBB54541639DBB67447DC7B4B6BA9105C9AE47B3A9B40BCA61DBF7DAFB26E9DB9B8C817F31A7093244F57EB328F086C8A4DCD7BE51C0027EC02028C456D01E8AFCA5C44E6D5E87CB1BC76DD5ACA758024AB320BBF6024A161FA99021C0CD059F0D12FA119843BDC03DF344D8A12D36914DB76A3050C85D0893B14DFB7D7A6A828F0A5AEA37E726B75044DAFD964FCA1ACFCD1BBE44FDC9BFEF5F7A9EFDC131C1F31BFFFC2E03B6FCB7DF4CED87BF674DDBD3D37DCCBC5554DF2F2471E5E7AEABBADE3CFB0275FCC2E4D775775767EE5D013CF3147CFD167CEF5349A1DA6BE6DB0AB7BA063F8E675BDBB378BEB7A9C66056B81958400449CAEA39449B79ABCDEE2B3096A7909308A8B46FC7AAB383E135764A556E5238C303559D75B43B7ECA678BE526F6462AA57A9070D1DC88891459A433697A4444C4CC56881419DAC1986E759A22C58ADE64AAB19BB69D895F1C26A6C43AFC9F3795DF341EF81ACF1FCD662BEB7BB8B55249346316BA0BAA2D2C96061D9B93C4AF956C787DE65F6F5A75251443606E92591A4D4281B8B33626F17D791419DA59D19A18E5FF4CE4F06BA699E1A6D9DB8D8BCFF89C2B79F2E7DE389C52F3E187D65FEE223E7F34F4D5C7C72E4D254F38573B3B3751BABFCCEAD3B37FDD6AF47EFB97772A4307D64E2FCC3A7565E9C987FF4ACF5D8ABC6C53909691B75906D332CEEA4E434EB42B1CC27130801422CEEB7C0D5399C12294DCF47A20AEA4677668E195E57EECC0D6DDA3899AFF42B129CCF6F6800A48C2C700905CB08C022D2DB09A3A37806BBB058AD0CDFB923B04C536BCDD64AF45C01465CD69ADBB66DD0197FCE3103590864DE0DFCAAA629A928A5085C6FCE1DEC0315C1D41BC815E009D2DD5DF9A327727D03F9AA1654CB54B5CE942A7EBE68E7CBE851294EB9C2CC2C2A88E75204C602DCB42A35B8B29CCD5873F966BE18EDEBE14617F6A99D5B539DBBFB37ECEC5DFF914FFCD2CD5D7DB7FEEA877377EC7466973B1D79DF9FFFCEDEDFF9E44DDB760E0E6FDABC6BC7C0B60DAE0480AC5308378E0F4A9BF11CB0712A8C65D95226AD2D2CDB11C58F889CC2079A26038847242F9741A452776D5F763C6B61011C07168280C619C8838E844BFB727F0FDFDB49274851663B762B2A731B3A5BB48FAEA39290DD3DC36A4FA60AC85A6F6888AF20DC65B1A8B50281F76509ECA51253F8A44AC51483F535006BC66350B8887C20B06C2EAB0EAD1DBAFBDE95A582DB6CB168D50902F85CC63D74D67DEC987FECB2F1E4B1FA775ED08E8D19B32BCD66B372EC82E67B91DBB6C4766FE3817C370FE56EDBA66EEA8EFEE5AF71BFF14EF68E2DD13B36BB4BCBDE625ED83820F465F3FFFCB07D7A3CB6A59FCD24016D849E34A81052D7990E1BA074B474C38C19368BA2070C2EC86FD408BE8F48B938399351145E1459A4BC885071AC35B7ECB8303E115B598924E341B51E883CBD76804FC503DBC12BC184D98DBAED581E45D78AF9ECD6FEA9FC4AD4F10F8E5F56D20A6AD09EDB6F4A0C0F78A727824673FDA6F5F38502AC8013507259503B60B70C0321CD725B2D781D25B25422C2D13E1C991504A5B7BBF3E6EDB8554C546113512078C6A86A064DDB1C136C1994DEBD537DC7F6E8FE9B4174C47FF723A93FF8B9D4076F4B1CD896BA75BD21FB7A7141E071720D946BD6A94BCD972E04672FB3758D8B487446EABC753DCD5146B1CA44F9D47BF6B0EB7B78E0937AD3A779A7520505010792EB3A5808AC0BD7B4D880127A3AF88ECCE2FC524A1082660BE558B5B0E26EDD7C6E6A46A2EC0BA41B4433BAE155AB41B30A5A87711C17584EE00C94EFB8BFB25488B2470F1D3FFDEC49C932BE3139F9275FF8E6FFF7F7FFB6D0AAAB37AFEBFCF50F738998E69A75AC17918783D072246038DBF594DEDCC0ADBB41B69B0C80AD2524D438162CE92690B642E7A62D6E5405994B8180EBCE32EADB77C4F66D96B7AFA3238C43BB75CAF1EFDE2CFDEA3DEC4D6BCC62A9756ED4C923F6D59D664DB86D2BB3AE33181F2DBC78D4B55AF2F681E24A413F3FDE7AE459FB958BB4692943DDD1AD83D2608F2BB04C42316667395A74971603C36450B8D5C8571ED14851385EE43A739EC27B11D15C2E2271B44A65C3309CA17E75F3B055296E1DEA7DCFBB0F00E9D09685E84309ACA769368C05E3FAEE72BD0E1AE842B5F8C093CF1C7CF4F99CE77D6776BA158D75AC5DF7C27CFE1F9F39B23C365D2F57B8DE4E26134D6D5C6B367538889C4DD1B294AF5406766D3116A62CA3AEF66411E4BD468B7502B38E6E078A28569423623CC1C8B2DCD121AD19404D20C2C040292C40C540A77AE74D4C6712E4062808FFC4089B4ED19D69299B12F7DCC479F6D94B97758434379026164B2F9EA99EB8509B5D02C5503B3BBEB2B8D4F06D3A13E5323126AE7A9EED172BEEF40CA3EBB09D516925230A580752DF3A01AA446B7A8E2957F29333C31D5944005DD39BB6357CCBCDA39746E520981819D370EA8E8B842DA80A9CCEAFD60281E11251B6A343E7B9A7A6C63E77EAE5255DDFB077AFA0A807EB55516F7195529CE3972AF52F7DFBD1E2F482C931B9A1FEE4504F65A514F00C580A42F265E28DE9B9F2F32F53AD46E022A10594E580E9476511F68249A334964838C093E1CF4C1011D1ADC21152EB36E02C0284BF90774E4D28F7DEAEDEB99BCF24829B8653BFFDCBD43DB7C7D7AF1FDCB229028E2A9B4E3854F786F5726F56BC6F5FEC9EDD32CB5B138B134F1D9A397E8A8945DC620125925BAA7AA0BA97561CD7C319FAA82A7097BCC000DE93383E1A413025BA0E2C3735C2C714D034B263F4F764D6EFDC6AB18CE2F92CC0230A5DC7018C064A606251DF344A33337BD70F710C9BCC65F7DC7DC7918585BBA5F83E25B6D1F57789F2B664E6E31FFBD8F2E2921005631DCFF4766A60EA9001403CF29C01BEAD5ADDF2B6FDDD3BD6F7DFB1D548A3D947E015B7AA27200771241E2C4A2048125A82AC6B1ACDE502408540B3C633479D1F9DB04716B8AD6BC5812E1AB16AA807CD79BBD9E4B76F89EDDAAACD2E049623C5A2A93BF750A928DB97F11A0D43D350ABA7A2F1A1784762A1DEB00D736434F98BBFC466BBCC525D6B19AAAA806F83AB525028A00A047FD4930337539C9CF5404090620350D1292CE6FBBA53AAC4A24F505A290164B3D90C281DAC2B723741FB72BC5E2C7BB8CE6CEA0F7FEF336828D45A8D5C77CFAEFE0D9DB9CE18507140655876DF2F7D68CFAFFE22D7994221A226E26247061C35182560F0644A42E3F37B2F1CFFECBF7CE75FBEFAE458B1828A5F11790F4CEE350CBE128DC24F50FF32414BAB5F9EB24E8C348EBC5A7AE18CBE506A54ABCA1D5BB95C1A651B7839369D06A8F74E5FA0A6E7BBD60ECC18065288CF8177F5A3B984C9114E2327898B672F3AC52A124DB15442F78E6AE9CD7FFD6AEBE265399E9040BD67124043C47F3974445853E4221B061A3CD80E352261D1598666F8B0120BD4C2D2B6532A54B57295EBEB02BB425A4EBA06E7E35185F1BC8D1E673ABA60B67AFABBEFD9774BBCA7F3FFFCE27FEFDCB3A3879637A63B6F7ADBDBEFFAD08744156C033E9594A2B011A348E87CE0D1305BD154E2CFBEF09D7F7DF4B98A6E9F9A9A8BAE1F020644778F8138E9754C2BA0178375C768F379E6DC2C5637106A6C70208E56674E01152E2612702EAC083055104F2C9C195978E678F1DF0F51472EB504B628D1937A7D51E67B366D08C0E8E8282992F3E31393A7CF52814B2DE799A971101A916494C9C4DD888473A549ACE5C8525284E8B6B5525F279DCEC4BB3AE86814B8560062565529A5465465E6F4485F77D66BD6D9A882BC43728B120938803DB4F7253B114DF67781A24125FC9E77DC3530D0D79C5BE2EA4DA6230B14A08F4EF4F577C81154289488D6016020020C4733F118A382B3F71FFAE111D6A1EFB86DFF7B3EF0C1866D2FAD146C8662E3AADAD979D53A6D27828942C26CB98C8E0580A92FB00E0AD9C0578607C0A5B82EE02F2E9D5B3A7F71F12B3F485C5EEEB3D9A44B3B95060241CFEDB70E7FE8DD1BDE718047CF80A671EA7DA9CCBABEDEA4ACACCB763A875F0ACA3530C3886E5EA5C277A685EE4E212243FE80B5E3E084FA3BD1424BF5F604B138EF582EE59366A1DE5A59295A082DB178E099A2C02064502812015FC104CAB20D6A037C841A3118B6B7B70389495494281BC4077A73F7EC35055AB96D57FFFE3DEBEEDE0D9A1B051F0DBA1B6780728C430384313D57E03DADA865B1D829EFBD1FF948241AFDD1B1131AE03E5A8FF1E475DA3F08D25DEFBCD38E4B9428601D2132713B3713BA339141262691DBF7ACCB33514A90648902A9AE69EC813DF14C2A809E08AD39B45CF0D9E0B400FA2DCB5C2C441DCA47C96CDA9469D3D9AC238B353F887841E5F479F43CD11A9672696413A6A7AB9A6FC86A525E33C03A76322235F556321D9F3B7D81613C4A15F2CB4B16781F1499A40520A0910655094A5EE0372B1ECB571B3D03BDC075C8C5F85C49165B31F6BE3FFACFB7DE77CF9A03B7605921875280D711398CBB3E9C102489AF57F86834BB662D72CBDBDEF76ECD689AE5F2EFFFCE6F35C0FFA09D45C2F48F1B27E4A43B72EA07EEF63B537E2649DFBC31B56B3B185041564003A01D68548A5C67122CA9230AC5C9859557C7F5E5E5586716EE473B6E60DA16DA2113F3745FCE985FB66B75B0BFF49635C1E4046CE78152B7AC28CF7192128FC55134501CE3B3545312625BB6B00EE51E3CD1D533406773A22CDA2D0D3D197C77F6D08948549CBC34C14B0AA822D232050AE13934325D8616B229479173FD7DAC80FE0B60031B385E637A4A8A4A361370D96472B09B840ECF6571860C4774579E138D4719DFE369C3E2E31997E3E74B5BD7F59D7CFCF1BFF9A3FFB216550B4D5AC33F69201286483399E713EBD775FDF287731F7E7762E7560E703B919563292439D4C741BD9106C934DC77696169C1D2A7156A70CF16A2B6C4E5DB0E6558527F0F680171EB10F7A90F067BB7079FFEA0B47F9BBD52C0AA718B2BC8A04C6F77A06B22DAC7E8CCF02C1B8DCC0576B3309F1AEE8D7EEA2302C5586876D0C1507FB7B9524D28B1FA78BE51A9AF1D0685047B881C181F150188E3002F9351A1BFC7B4B4FEC11E31A4C639498A64D351904281CD9396120FA28B456F973481F106A45386282AA512BE56C0FA28974DC9A337DFBB1F51F1F69B370E76A4401076DD7A2BF011D1E55C4F2E14AA5C61738094C007EE46E64295D67E760068BB90D7CB35B8F28EF71ED8F2B1FBF67CE283C9541AB90FD1C9AD54AD4327ADE3AF328572EBC298BA7F7BEA773F26EFDE604F8CA15CC2D2A4AA55DC1B3EA100EF10E40E788D501D958D980C021BED13568DCABBB7599BB7000720670CA4B356A3951494D11313A8981016680501CE477795101D8270DA44FF98CB762493495590211B46D000BA832DD0196638CFE21C2382AA05D609551E3020C13392CC81589168F8636121BFE7C3F76EBEEF7600F15C2A66B52A5C5449AEDF400BD20D443B5714666D6BA1BFBA6A4842CA8270366C9A52EFDDAFFEC23BF98FBE2DF2DE3B0334A75C17BD38728B4E5D66E144E74669DB755F9DF021640012C389CDCF2298F20244179230B406D8974BA83EEC1F8F509DC915282C12D158FF3A36960C555B4C6AFD10B57133AFC451BAF57576AAB21867A5679F3CC1C6123EC70511145034AFAA4DC35832CCC5E57C1618359520FD3BD24A0D652760F8C97A42775840679C784DE83BA42C868DA03D40C98E7C1F515148B97A554D2680D4552E702D1D91974B809055AF6B9D6B247844FE85E52563F9E00EA0AB6BB51A80731488F9B945D80F67E9217F430A6F18209F2950047E005D2A2F09042D781E2C8035CE18863F37CF8802F27A80023826735D599BE8F79820AD0629E5F4E2D2F6BDFBE54C27820B397F9655BB3BD3EF799715509C243BA5DA405F6F7F7F57672AC3643288623EC7803943B4BE3437A78042F27D491405119096E4386226802749060E0004252894842D9141479F13D017837548D9644385022D07B573DF5E2913A38C56AD52F30D0D398905FD168F0B89C44F3750BB1221F0886428267010624CBC8373E15270EC243B3A6E9F3ACF351B6C4CC69281948DD9BEDE062583E4954D081F7B17AC060E059597A73583749C8A472CC6A72181999EC60241531E8A1EF087D6FA8DF18E6E7219618F1B9700BB887DBD6636CBE6D24DCD682CAD2892D8DB97B35CAC7708CE05C0B166B35E0A3C54B08E830A048E8EA403A4C3128B08228596341C1FCF84D1D10561058026B095704F222504A7E17BB82A5F6FC421C6E6392897E6F379DC6C9C82E31A722C6AB9AFA9996E68A06BD31B9C494E77B099342E09E670F2257B7C9A29973D386F4245EEB4C07B77A6E40FDC25BFEF6E79DF0E6178801DEC435E625A3598967651679A5C7707E35A04A9499C27F3589E4C3401B107AFC6DBA292D5A54DD3722CC6EFDA8ED663F4E64DA8C8D4A862D76AA85409098DC58EC2C2B2527D39A415046B5E9488800416014B09ED393AD43CA960085FC1F2142B12EB906F00377075ABA11AC22674DF165FBD00226C6674B237A692CFC77BAB8A84F505CB5E39A09CBB361E5DC7406DF52FA29BD8DDCDF675B31D69B92B23A5E2583512F41B5185002A3CA123CBF6E40255826A0330083504676A5EBD0AC00234C7C7A15632B978148B9196A04189A002BA343DB563CB06100AA1247A1595B56DD4BFEF16231653FABBA44D6B4B73F30824286651B8A03782FB3131357FF3E6411BBD791FED3E97BC003E08EB105BB02835DB8FD046682F21E7E0B6901C4DBACFF82C5E06955D289BC3C36BE17ACBC5CA601A751B5BAFD7235D83783748D3AE5E3B9F4C5D2BA9BABE81C839338C007D77B693EFEEE57359CB74A0F5E2A251AC4152A02F96506733B138DB99A52514667EB052A47523A8D7482740E46D14877872440465472B021D1503DA1B2FD5D6DFBC8BC4CE50E87AED0D419FBEFBF6FD2DE0F8EECEF8CD9BE21D59BB56AD1757F03CE4690DC28A1AC02000B646EE3BAE1F2B08680341065F49AF1CB465FBC6E15E21641227087FE22941A1242590D5DEC17E36116362AAC332F1082214C5667BC4742F3E5F88276EA4A1BAB181889300E3813D4A5955433469094CC1E539E7D2AC756E0CA5037C0CD21B568E706AD42F16813EFC56CBD75ABEDE6291CE812C64095742034023CF62D040C67925A4540EA226589F90B1E393D0DCE044DBEAA3587797D8B7B6D16AA1B8E33BB2E0C2E7901F5CAF56AE6DDBB5A95CA8D29619C185119908F111728A28B6118589BB109704B7434A7FFC848C4142349E8652430AC2A8448B1C98E9405522B14834D38165280F6E6E7F38A7226EBC45035D757EB0FF5CB18A3201BD3D4A332968A8C02D35F5F0569142928F27845C079127202B633000123048DE54150D295A129968049D4C9AA7ABB6B766C31698B5ED9FF802368E2C85B0D54B3890E59581688C31A84AA5599A5BA8148A3A8CE538BAD14AF6E43C4658985FE61171605CA436B02621CE253A0B18227422E295C4483E1DEAEA204882A3217EA39586D6181D8B0650C24A123AFD10135191289C6AD52E84DF7F2B06BA56EBECD61BFEC49C7D6ED45B58462B001016C2974010560DD82E7BB1F20D8DEDEAD147C7594184B2D7C3132212DA09282F289C39479F5BB176DD7ED76A4118CEC7907E19242395B25FABBA1746A80BA3FE62A15789F6B3EAC252199A13D49CF8BB61D40C4F47CB1A4DF78585027E439C88F8495B2145C054080C43572272882B63496489851708108F5910842D819F5E5841039ACCF6811389AF66F73798A3B981E556A79F28A813FDF9256F366FCEE59DE532B01791BC429CB2B6FFDA2082DB0F3692CD76BAF965802034EF517C33C06F6C2871829E2722B88E4BCA2B048BD0460100C2FC82B5B8682F2D360FBDE85D9E7496F26EBEC8B97E3A1EBF75FBAE0D5B373296B934339DEC88D13C154D493D0399A8AA8C5F1E0F50B51264069390F19F90260DFF0B074BC258447EB23100D56C00F1929087348F82DEA2EFFFBB2FEED8BA89982E916BD3AC44E34246D5DE8A81C8B5B7D330C4B5BDDD742A8596AC0FED62B5E98DCEB4C6A6711BAF9D0802F661D498363529A0358CB3C09206BC0788550446828E8B6F6966FFBAAD24DDE211BE335956D0831B26D5D32DBDFD6E67CBB001160205FBC28A59AC96CCD6C68D6B2117ADAC2C83A8828BA087154B4014ED6562F2F4850B4EA3061449163BBC899889744FDBE30DA128D3B78C56A3B2820088A210F70F7FE238F99FFFE92B1F7DDFFBC8A7FB81DCDDFF66A601DF2048872F037CEFEB8DFE974FAABFF371C827AD66AB9A2FA63EF03619F9FB350F0AFC46954B66ECC971E2ABA91483F5459037A21209D2A8008E9F9BD971D34D21785B9D00450640841223AA932F5292206D1C92EFBED5DF34C8DF73ABF2A1770CECDA9ACCA6A010AF355AC804020F104A476311DBA84ABC9B8B4B95D9A9D6F23C8A052CC2306985674B50139618065F21A4123ABA3A819BF01B442A8E15BFF7E0A39FFECC6FCAB138F0814971722279A3A989371BA4AFC66926A648835DD22FBCCDDDB941FDF9772A7BB6ACE2E0F65AC4E269D6B868C29D9A84E6CC4B261075B11239524FA23D08A7E1389B436D75C533DB360A208945D2152CC7199F06870D84C20DF4D0EB07A9EE8E48578EEAE8487675C515053A64B41BC19A40A621CBD0054351C527E28AD7AC5AC53C5C25742552968471892C77381349618870E16244687AE66BDFDE4FBBD95C1A2F87582B4866AE759C3730D3AA81DE60DC907C48ABE9562A2248DEDE4E79DD002DCB57660AC933DC7A855513E48C6A250B0B5D90C87810C1CA002CA1F0AC5A53BAD7906AE00A7E207602039D844C4541B2031586A925F247A81645D183E2BBA787CA74EBBC14EDE8666C5039609623C85EF17814751F5114614A0355BED1AA4E4FFA8D8A6FB4106BC8F44DF8C07370DB28178D5C9F76BD273EFF6F5BE70BD9860EA51CCED63274B9ABE7DAC575A32546C2D38FCF795E7310A97AAB6196561A972E1B8DA6552811CD685843BFB6BE02DFA994B814097841ABE4A114C2A801122DB87742489061A1B19199E19B77BC565B5C1DD5436C04D4841A1D91ABADE6266818DC96C747E3012776AEDF889A0602571E3E2347A35D6BE58E2131D5EFCB39888ED174402D225B46796CCCAF5751F7914F83768DA479407098C30215F5CAB71EDE5DACC71B1A932F05A592CC789AE328C9E49B0940AF79D0EA7A71DCFA89D3D5E75FD6E73069E1689582995F30A6A7D83503E2964DC88C807F20AEC8FA6A93313022282443E795A8B9BCE0A18582C124080E71A0DC87C1C10B545A253431400CB793D7359F4DFC080958551D9423C0B89914D4CC7806CA572C4BB4D212E98C43AAD48097152E12A550A3F312A324B844465AB35E1EDA24F4AC1133590480B1B3E74FBEFC0A4E08A53E480488CD61232892CE3CF8C87AD34BF77610FB339CFED84109BE0794F8E60E82B45EF320D72D3E7E104D776AB924A4123000181D5234EB10403904F5814B46D4000EBE263C6396868DC649BA2B2E062C44AF80A434213AC26E826F057651372219C0B3D5F0FC63338DE1A448640DE40F7D5C2683684582372A2C2469DB6E55AAB1982862C082C07A1EB4162D03EC0950BB02F8E12B0A082E99E6D3A98D9BD70D65E407BEF4D5D9F13107CB0D5243C73DF8856F0D0562341E23D7897A70F3DAA05286682AD2D5775D73DC706675757D398E375FC00872908CA16100842C4513919E7E7011EEC4B43E32AAF4F70BE92C18A9D75EE2FB56618ECF75C1D4B5B3E721736310A409FC276C1EED3376499F9A2A0C6FDF8D9265B540BD661F83D52203C10B102EE458DA4BAFED6B2AA629F2CB3DC303023A36908703430B281A389484A4FE244019F898878D6859C1BA469715CDF383DF7BF6E1071F7BE9F997BEF2677FB7419422DD5D76B50CCC45A0BA556FC59018A2F0D01B66A437E283102C87D7787D1DD13B7693B98C10A1120F4A25E5DE4EB5B343C8760025B7B9FED5F00CD105A843D01714D5BC7891C6B0374A79FC80CB405FD1F02848DC923D60F0304F747512F36AF45A2D324253B753F5EB7C9B66AA7333D09C63240CC5C4AA6A9EC0C2368C22436AE4F70CEBF122BEC2C5A093DEB779D31A3E31F2E4B1FD03031190D9F58A8F3A1BD318B200FD35958D45D7F6EB1313D735D0758FD76210224BE6DD7725EFB90DFCE66B578160124FA88383522A832EEBEB47C703B79CE792643DEBC5A288E6A41241830C8A49105AB8BF505B3AA6C3F50D04AECD435578654EB57D605AD1D59AC40935C3BA34AE3F7BC47DF984FDF271EBC851FBE419EBF439FBF0E1FA9953A0A281AAC8A223F5ED2A0D80231C4126648F0710895A5480784F321BBA67D932CFDDBE65033AA0E8412212A144632132E32109F068D1A3528A8B3172CC01DED828D7FEE9F58C22F95F58165F53D387049ED0EE815C039E033485EC4A59EEECC3E9560F3FC7C17D38DE87CFA1C8605963398FC2AD56AAB03DFD1C64485820ABB5DB6AA8163339B4928D8BA3CBBFF7FFD4FFDBE7AB0F7CC77CEAA07BF498F7CA29FBC84BEE8913F9336787760E437C447070E85084DF09B3DDEA6C5FC868909047F47D32623B43F4C6AE562A8992C452908DE149A18BA28328F3C8FC7C420C025B1A1ED226A7DFE4861CD7058A57440E5706E7AFFB4AB752E41359A41BAB5177CF1CC3E20EB000A331BCDA8590079B0FA0CEE4D5EEDEFE08620416DDEAE8EA2AEA6D6F3ED078E831A1D9189B9A6E98205300F6909A09430639C1BCD11CD8B1CD45C206B4090930E235645C3C147A13310A9939BE120DA942A114C17C54AD9E03050CF04D5E8232037222D023B403F1954C4592B26F3711B968A8A2ABB51B25F86B7FFFE306BA6294EBFF786D78764A793EDB851F6BE74E46102984081C1EEB0B58C19C9D97E5888171A04DDB904D68A2B5696F12D2DEAF223492E7360EBFEC9E1DC1F783B90E8366915F9049895209E52E6C2D61A8126E017127C070FB7F44E371CDF621A17F10184D0CB7522C753BB476790AC8568942A3059F27DD07B22F09A20F6AB1145A6978B54948A24C0A84DC4FDDD9E4069CF44F8DED08CF3AA99279F44B71D6F353BE8D3E9885950031A2393D2B011C419268FB54773F4E4E44839806E571CD520608AD57CDC79F46EE023122A2089DCF57B11245017117239FA333F3033BD70314A3886A4768744BE10FED1793604D5C8758E6EAEE1D8D663301AE5F50E5B17C75B104CE8C685770D8968B6167442232BFC9504E1D5894F047F1B8D384AAEC67ABC56E70A0BC2813B50ECB95472F088606FFC75C1403F1445377CE8FF88DA65B6B7AE96C321543D18A1E61B835503BCA8517685BDAA9B390DA42A4622D17C0C403132E4CCD9A30A4C82FCC2D08431DC99E14CC885E36B9CDE006C2CC85BBD21E5B223CC5D57018FA667F5FD7C55A591C1E5CBA38D959B4F26726EA4B2B84604344C7C026883311AC00EB5B0D820F00292211CC02FCC71BA8BD48FC569D5162F8D19E1C71310D2CA069818A9BD74746C04341E22FABD13C03ED1ACCE1A0B719BE7435C5871BC9AC688F1C94933148315165D90D0DAD85758C7AF6E82B270ACBECB69EBEF529525B81540935696D4A2C7C793BF86059B54F67F5FFE11A995CBABB3B690B8CBC7FE7C42BE7A273757FAE919F5D8692C2C1E2252E07892BBC87B58C0614B2703034463107F7DAF8FAEACAFD993DC8B7C99E0B422AA7950A4C691197E703A7CA825D29B190A94371C8502B6234B3769008C7B0704047AD82C2F6EBBDC699F3624323DD370C0260521F95956E0918B7BC3437DBAAA5FBE2C8C42814020CEF86319D046642242253873C14BEC1A60FF8BECD1D861B8FE0FD6FFFE5F7BBE908C41C663F26F3696B7441812BCD94CBA506D93E2CDC5D82B443200524A3B710A2307AB571B50EBDEE5CE65B30D015F68404201F9DB3886ACE8E80F501C224B10373E893131EA9FE3D1D23ACB9CE440F42B80F4E873879FBA5610081F4D6195BE01271F0366E5DF307FB1B8B79D0CFB8F4582239FCF2D4AB2F9C26AB9110EF21858A6585284BAC00B92226EE4266033C19CCD4DE630474384976A4FEDA72FBB6FEB7EFE8BA73DB228D4D0F6CAFD81C1ADC944AF48F3F7779FAD0AB78269165B6412A5A651149C74E13A1D157350AFF011E140498C000F6772DD35D9A302B7522FFC287E4978588046A0BBA173BD70D5D0FE6A202CFC14C529BDE085F0CB5A1DB7CE279EAC41910D29606F9AB1DCC2D9117C62366A1C805741726281F78E9DC0BA7DD66132018940576F6A23C1B6813392E4CDD84755E3D1912A47DF82186F119688220AD750C35A9F4EDDBBAEE630774747EEB2DB7A6B315737376A0A3113FF7F593B5850A2FCAE1D960445F8440D1C0A8C38D8FB760A036DB8E3405F2053A9BD6EC65D2E1202202C6C3A47FAB89FA1B3A06405BB3AB07DB8B20C782D9414117D2ACB8DFAE67E8AD83CFD71F7A448E41E5E7F3490886A3909D29FD3DB405A9292D6552D8946A1D367879F8ECF873A7ED4209A237DFC43C830D86993CE04DC03544D003AF219622699ECC7B62FC0A767490D7C9B82E7A85313E18CE4514A5363567142A8DE965C170B6ACB9C99A910A672EB2E0A980B9E07C3C67A385FB1F16A401025B75D7B28568C29838D72AD741A7428069372A90428AE9A4984E059D3D980E62A332501B222BC6ED48EFC8B18DFC62FDE9678C23C7A49E5C2888C2B873200FF58228E42401E399A01038D790BAD3983AC01040FCC8CCE2E929AFAED990DF371B50FF06662B685529BD46616F02B2C4207D221C109C8844F070B985CA4BB292C1B764DEB11B89D5D44D4050346931E4E8CE2DA5A2D9FEEEFEB9178E013B90842160B2ED8DF7EE786BF9CB775A35D00E5A7159700CB22D1B52B6D640444484804A0C62780D73BA711142108C80A23F47347A50C42DCCFBE72EA261187BDF81F86F7E34FE3B1F7737ADA53E7E1FFB813BD54FBC53C35E24681D619807E4B108019D8B914C3E9D155E9A9A7DEC04F615B19696ED42DEC34E3330BAD9A21C03A331B03A0D15121620C84342DD134E04551BA1E94C0BA79A5EDBD1E4A95816BB3970741AE7E4316BFA9CD9BC6BD8A5E502C638319887193133DCFFF17FA771F893075834AF55E722AA3175014B17F398A60E110999BEC60D745BBA46F154320AF524B63DC3DD94D42406999B67CED4BFF570FD7B4FCD7CFE1B67FEEA4B933F78E1ECEFFD6DFDF49435B2D898AD7A995CEE57DEEF6D5D232462723A41C42B1191BE7049ACD5A23E9D5C361BA70AAD7CD92A96ED95A2DBA85116461A4C9A8C379834147F98DEC0E2B22D487F7097C0633A5573E6F99385CB0BAD4245EECB40A82F828DC3745CA3498D4D5BF04730E6A0AA4C139A08F414C05E8116BF9117BD150301405B3A8A54BCC8981B870046AFD5889A007519EE217236D8D8DE1E481508C5036527CD59B54A7562D4361BC25D3BB94FDCD7F1A5BF5CFFE5BFE8FAB50F0F7DE52FD89F3F80518FE2A3CF5DF8BDCFCD7CF7706DB91EDC7D9BB37D8B81640C962711C30425E4EA8C6644270AE6C9BCB6D2041185A9E940D31BD30BE3075F9E7EEE6873290FD304587DE106235AA971FEA9A323A727D51DDB33FBF736297E1912784CC7A17989206810B71221E203D9486E35B23DC00129F24CE82D6FB0F9C24F37D0B5FBEC38AD8AEB5A5E693602C5112A2C32D4847D5574B2E309D63E9251479A48F76DF82ED9DA065A67BB01E1813E75797C646661ECE2E5E9B1C98BC78E37409B6F599BF98D0F76FFEB9F6D7DE19F999FBBB3A16BE7FFF0AFE79E3B127CFA13F47D7703D8352A351D3D1F96C7ECB73C0BB9DFCCA583E72767CA97C697165B46C781BDDDEFBEABA1DB0BE37368BA31A0C1529D899BF66CFFB54FEEF8C5F767067BE46434D39F133369F97D6F238D21D881E410DF29D7298C92A8B245766825480AB00D5BCB844E741D1BBD090F6AD7CE24BD02F837E044A8E35173EBAD06296A4043841B11004CFBB91CC64290AD8A85F2EC5CF1E2F9A913474E3DF5C833AFCC166BDD03CAF6ED7C4FAF854ED89AB597CE5E38F2C0772FFCE879BD0536C8C4F452D75FFFE7E1A30F796FBF6DFC0FFF62E5E08BE93FFE4DE5931FC27C1D300AC8168488B84D472F956291CC96B7DF397CFB6E2906F297EDDABAA17BCB7A906AC48B11544AF3D6F284535D829B938DDDF4BAA770F57FFC0AD1A2630A02C25C8EA9952B722EA5A1F401691B9672ED4E91098A97EC85B4BAE3E6554BBD09035D61F0B0C59967B5ECC2128802341B5025A0AD8809017C920EA9BC2C6B5022DACE833F3AFEC8A99956C73AB77790DDB835F78E77246FBE59ECEA846E08D847448297F8353BB60FBFFD5EDCF6138F3C7DE4A147EB852211634A4CFF27DFB7F9E9FB9D1DEB2F7FE2F7F327CE457FFBE3DC2FBD1783C0D01CC041D342C4FBEA5353CF12729E6045827A2C6477AC7C12BCA17E449AB3759AE438806692F5018B0062D1392413E41151ECEBC66C22A9585DB2651404851894269448B8DD2F46C9B0F3597B83BBAB85FE4F3750BBCF4DD697D9B0CB256B7601C1D881A22104FBD8EE878B2862542D946BBE127D767479C3BE03073EF0FE5826053210DB2511BDA28CADA020AF84908185B0103E6DA353C1D0C9C181E1BB6E1FBCEDB691974E9F7BE2390CA893DBC0F8DD9FFA40CFF7FED65284C94F7FB67E7E3CFE377FECFECA87CBD8E709BB59609B8E079EBBF4EDA719B0A8166011C95F00F1A87E483AF3C9420F47EA81BD784C57E02EA20612C1B2AB12CC4434F26BBB50B6747477931D09504B8278401FB1BD9565FBCB3509ED757DB137EE31920A5CAF9953D3D01E18A50AD9BBC7C0E01FE417A45004C99F17A21394B476DBF6443A0D7360CEDC03AF07819B8C892FAC063CABCDB2235E8223C29642169232CBB3A21A19BE737FCF8E9D8826671F3958B83C05E42274A6FA3FFB999E1F7ED150F8F94FFE8135BBDC7BFFDFB76ED9868F8DF262FAB94B13FF7E089B34C07DDAF78FE020C281F8F9F1D9B1A3672E3C7944B7C4D925FDF24BE71001414B6289616BAACAC252616612115DC7A0024A0D0841C94C2FD9628CFC476A99F69E9FAFED6CFB3A03DD182FA1E5613A73B35EB586D201ED6DF83854B7F020A40364FAF9E58A9BEE4A2713683A316A844DC481E26535128BE28B80AD0DA185C53211D101C49CA3808900251A53D19546AA23B57AA8834AAD1DE8DABEDDD49CCBCF1E298C4DC2164144E8F9A35F55BFF827CD93E7667FFBFFCE7DF40399FFFA074E775686F8FDCCD2EC0F8F7AE57260E8B8C4A5A9A553CF1E3FFDDC598B577BF7EEDDF09E774692B1C1DDDBD6BDFB1DBE1C71C86E16A03828B0FFB19EAE85D9F99E9E6EAC0A123CD17C81E3616D61CFA4F6BEDA57BCA96D2352B9FDD4FE3441E5BAA69DC7768D9EDE68606600B0195706EA1BFA122C639316B3284D5176A43352360D95B7A288E9849C8A41A146A69CC26DE1D024048745726E5BB6427E43940D61F94FA4A3B8A16CB4A7B377F71E2710464FBC3A7771AC5A2CB37D1DFD5FF92BF7EE1D939FFA236CEED0FD0F7FCEFCEA877039B1E373230F1D3AFDE4E1E79E3CBE644BFDEF7CDFC6F7BF37B7691376DF2143086026232A74827AA3492E1B45B5AA8AC0851BD654565654C478887049414C9038482618080108796DD546D77A503B68876D952B14EF35F622DF047EF3D5D33E28FA24F601257B7450D8AEA565607C5AAF211D6B42FF00368F44052F67D2D8BF4C12D9942AA64970C5E222133730128E50B57C35B4A14E0C377045A245106DCF2DB5CF1A9C622AD531B44E4D6597C6A6F393D32DAD35F0999FEB7CE0FF2D3CF9FCD827FF98DD389CFDFBCFDA43FDE957F3C5323DFCAEF7766DDE826EBF875D2BCE4DE83F3854FE1FDF28FFC93F16FEE80B2BFF7E101B7D202693D99BBEDEFAE47476DB66083FE12B44E718CAAEDA751D8146A45CC4375776570F1DE9EA66B757F5623FE14EE8B8D52AF5975FC45E29D83A04F71ED884841E6C0966D9443C2629425707158B8BA93496185C26872D82540CF0C33FD02B82DC0A5F400CC18156D5226D12076711D607E45720154357C22B42FE88781A185831B76E9D92C8942F4F1547C6F84C74C3D7FE26F8F9B74DFFA7CFAE7CF97BB9DFFAA4FCAE03EBC7E72A17C7834A53FBFE41FB8147E923A7CD97CE898B45D97064C34E406A87B9FDBA86728CDAB61E190B04000661C2C63951099194864635D01DB65226D6210B0D99ACBDFD3C31D0B56A8276D3F3AAA5C24D6749FC2AFFE829C456224174218B03174EF461A8D44187E1BD20A7C6C613AE08D2C3C7F4414C010496891A9ED085216308029D68CDC2B6169913223971B5BD116E9E79759B57B2CA420922F1A830E591651B91A3836B7023969F3D32F6A3E73A0FEC5EF3C07F6B72F4C82FFE2E95CBF57EE653D4371FA9FED517CC43C78D89B906748CA03759C6ED48D4D66467A5400C7BA0900136CF8F25F7ED3AF6CCF399FEDEB035B21A97C38BC43C24C210719F30E7E3011B9168FDFA2CF63A555D98F6B039C6DCACF3EA59EC0B68B75A187822BBEF92FD14B0893376EF4141C179447F66BBA434E0E2C436227C0164301E848F273F08F026014D777C60583111EFC1E7AFB2C9AB309DCCC890180E33C18380ED481715AB8E3C500C27E3ECC60DA031CE7FF5DB2898077FE5039D9FFFBF16BFF3F0E23F7E63E8E31F6D54AA78B20062209BF4F66CA4FED387D53FFF74EE4F3E9DB8734FCB7739A4B0CDEBAADF7D52BB758B4363800AE43FB93AF2F6505C43D8C983F3840281E0693036586EA18D1098AE18E84AB2BCA62F18867418B6FAED6F05D89E004B165E8A8BB25016DA7AB58C99501DFBDFA95164024F52D19850C918050019A188B054B0A888302C142460160ABF87A5F011A8A1DBBB3BB6658564E4BA2D9D6BF3FA64CE2B0CD8AB0C74C8CF2363E26A30F3B371287DF7DD4BA7CE57E6E69203DD1BFFF5AFFCCD6BCA7F7BFFFA037760DFBD00A8F213F73177EE62BA3BE01150E5D9862DB210B863034B411E5A7BEEE4894D07EE203E8B1B109A8750C144CD4394B806F60307F180B5461024B97EDCC4907FBC3A0FFD5A5426BFC6625CFCCE83E6ECA4AF8AA08D89CC0FDE8B3605E01921A62D5401413A0962036D7B685054A89801CF1047C20543E222D91A000608D70F020CD06C2442F8CEB6ADDBA8637579AF2EF1F601B36261E235A1BC90B00540BE7860DDF9C904B3755B637671E9E5E3F85BDFFFF129F90F3FA1BF74628DACE65F38C662BB2A6C10481A3BA4D1842B2682986D1B0A8F1F0AEEBD052300D84F019E4196F6EAD405CE0CCA49C44A11E01B51153507FC2874A2F63F1BF11AAABE46DE1AFA52E3F831E7E811BEBF93B8235C4F37B0F72DAE09C427A28306EA0E579188A386C0E42A363B02CA699B86A4736217A223225F898F105BB57F2D6372956CF816DEA02B5DD2D59DA4439533E931877335E1C029F66A0833099965C7A6411099431B2ABB9B3743EFB1FCCC21E0E0D8DE1DE97FFAAC9E8B0A4F1EA99D1D8177629F5704475457D8B20B975F5E2E02908CD44A7BF7EF2343D384CC0EBB08585F507243A9062D75000621020A840CE8B46D44D61AA0F935BDD3B675800874D3A84F8E371FF93E34FB648E12D2F05219A406C105228F75AA3531582B606F69B2503A7B25B2C9139005591E6DD384C1F69A47F82712AA496D0BC25F06AEC29990A481851EFE7323EDE644B8A688F3AF86C1F05BB25645BC0C0441D8E301C05422D6BA61896217BEF503D40B422AD5FF17BF9BFCD34F37EEFF77033B3EC0F4A8DE5D9F2FD7E94CBAFCD48B839FFBD3D96F7DDFCEA411EAB04765086BC8265F614381844132D1C1318AC0B61718314FB8D0561B7A57AD039B558D4675F272E9737FEBE84D689DA174073F4F303978AC8808EBE022C19F0017B3D8604C90A02695C8541FFCA6ED2CAB4B2554E2B72519A1948660AE509EC160A7BF08982A9806C408298556FFE10B12BCDBFFCE0B99280843234106617D0567456244085F1558A0E012797DE370929716EE7F080904579EB86DD7C0A73FB67CFF43D863076F48FA82F596353AD3F927BFFCE0E38FDD95EB6630201162D3F03E92B30B37A359959DE004144522744458B5225AE304DB3D90D7ACD3C05E612B85C697BE845DE098A48AF4815084888E5D13A13C25DF612F440D1B83C90128644C6B77F601C1C8904EADFAC86A373F34FAAA45C8155D31D85585502C9502BD40D21F8A68208F55DC714526BF6AA6509B41F60E865F931F499B8D7459C3F5885F27A28D4D6B53A637F7C5AFC1ED117B851DDB8677ED9C7AF0116CAF068E81C750C45DDBE4DD5B0B4F1F95F7DC0C06201CEC80FB10266855AF0D384DA67DC8760FE1E6B961DD418A7BE24C571466646561DF5BC3D49B8D2FDD0F3104F668C7C40E31247A52D8B9C1F39A2B45BC88842F6C638D64D5934386E43B3A250981A18D01DB81AFDDEA5C35D55555D9AA14FE8A161E064D7676E0CD70C3AC901E6E27FE5547422208A3407B09AC42A7908E07F822BB4685B78A4CE1F7759A1B06BB2565FE6FFFC52ED78038857BF6A55B56F1E439E005AD5957DE7BE09B0F3FF50BB7DD29602F8DF0F6840095E8275115AC2EED55C29DDC03946D60B530A3DFCE68AF1908B712C6297DF96BE866FBB138A86C13A3EBE84618BAD5D2DDA6D1CC972CC3AA569B386B2722635C3A4865C8BC689888AFE876C28B58951ABD26C3BA06AE5FA3BF4309A2447003C8C55E2D83426C0A0B914083EC1EFE7435BD85D32B641015B799B833DE8661B49B36788978B71A6F7CFEABDAC8384E6CE0B73ED978E934F6BD91D60D28BD03C18B6784CB63DC8ECDED5A2744407816D93164D53A243F10353EBC9E446958071E143A76BB1882A738D89FA6F0AD6F7833639891A3A388113C192481188B012185A214FB51617F1280439A24C9640CAD4C2F96C273C230B36A99D734C457EBB96BD421ABE6B986D88C60470A2481B663870824C4686DB1DD15FF5FED85924C169226E87C60940D3BF020249002CA11B9D2CE0DD8C913F3BFDED71E691C3ACA46E40D9FF9E4C413CFF4BCEDEE8B97C6EF1655E6ED7B4936BCCA8E12D12BD152867DEDB6CCA81D0F105E319F426E167E81AF10889005D9329A8B4F3C6E9D7D854D442CA3A695579A950ACE1B86C41B195AAB8E9173B4749A06599F028FCDAC6D4CA9B1C868A4DF722505ADB22AAB71E446FF145098A2AEDA2D9AC6F03AC15C04B8127EAF1D7CC29B8AA29864641A9BBF90E48DAE1CA1B0A0C582D6560099820A1C07E938A5E2154C0FA3FF8558F1C4E1D2833F04884F6CDAEC0991DAC86C2A1A15DF7337FE06EB5FD9F33F9C1CC77B12EB1038D1C6CEB835B8402C7780019C11EED9FF025CA462E09342C84E0000000049454E44AE42608289504E470D0A1A0A0000000D4948445200000048000000480802000000DA8F2410000029BB49444154789CA57B07905DE775DEEDFDBE5EB6372C2A510540103B2992A628CA1225DAD6D896E3A2389A71C69E4C1C7B92387626B6278EC7B1633B891CD99245519644AA50124991144150040B400204D1CBF6F6F6EDEBF5F69AEFBE5D402C2025DA771E978BB7EFDD7BCF7FCE7FCEF77DE75CCA8F8EE0FD1EEFF10DC7B1569F7C62E92B0FCD7CE36BC5E5CB8B0B17E6962E9516A75CD77DDF97F9171C14191DC4FB3DDEED1B2141389D6E30B36C5F58149D90AE34D96A4BB6035690FE195779DB99D75FEFF6A7B71D14FE0BC210AF773F5DF4B7773BE93B0F1211D0D2C4742A705CEBC42586E52941E0249924A36BBDDF63FDBA8E632F5DBA30F5CA0BC595E5E0A75BE8F58BADDFFC5BCF086B03DFA956AADF7F5A9B5D78CF6BBFE5CBA1EBB30C230EE5498A26458196552595E37878EC3A2EC31783E8EB1B2FACEFD5DF374CAA2C2F4D1F7EEAF2B7BE4CCFBE11ABAD5CFCCED7579716DE76AF38EFF53D86B524A9772E67E874DBF5EF3F472D96DA4FFEE83DC22F3AC19BFEE1ACACF98A424E8EAB77DE9CF9B98FC7C72778496658EEED7E0843CF36574FBF5178F9C8C2738F2D3FF79D85EF3F523EFAECCA4B4716CF9CB4B4766569E1DCB71F293FF15D9925D337DE481DBA29BCF9F6DCCEDDB5979FB76DEBBA6BF44E8F61AD82F5A57ACBED8604ED862CCBB39204EFBD5B28BECD6069CFF6BEDFFAD5F8C10F28A3639C28D6E7AEE0C4D73E130542E81B6B85C6B11F2D7FE34BECE563ECC225A6B06ACEAE7496D76A97AF38D317B5570F3FF907BF7FE67FFEB979F2355AE0345925FB87C26C3648C5A94D93A26E94A6A7DEE9B4B7DD06B5E17C82F01CDBB18CC0F7A24B477710901C47EEDB6222C5F4671DC30861DBBB6CC5375F8015449A657B3989C4E2AC3DF95863F6F246A4057E6DFAE2F213DF6A3DFD9879EA55AE5E33572A6E27A06C5A0DB9941BF26B3563B6E0AFB4B728CA80CAC57946A856B9A32F943FFF85E23F7DB378EC782A956868A6DB6ABEF76D4486758B2B56B76DEB1DB35EB3AB55B35C724C3DF43DBB54C66EE7C706830FEE0C12B2D36AD9CD86AB6B30F35A5209A225788BA978C773ACFAD2E5E6C259DFD1C3D0573259EFEC8F9AC5A5C6CACCD9AF7EBE7BFC87E4E22CB1B0402EAED16D2F26A7D95A8B3A3F651F3F639DB9E8AD14C98EAE84615C6412495510392E95A0043E491183AE95BA74B9FAD8379BA6A535DB6FBBEE750C733CDB9A99F58A6B44B9EAAFD5FC52CDA9546DBD1B78F00F41D284349092FB5264B916B43A4EB3E13B364ED95C5A9EFBAB2F5DF8CFFFA3BEB272CD8DF8A5DDA85EF8FA5FCF3DFA8537BEFAF0AB0F7FFECC91A77D9EF6CE9F5B7BE5C997BFF1A5A414841DC3BFB8E495BA7E55B397CBD6C24AD8352D8A26867381221002A29E17788E932482A62832A4E8908D89944079DDA64C11826EAAB2A8552B96A65D4B30D73591A2923157149CA535AB6B70FB7612A38361B16CCE2F12AA80B04434D134C5040123709EEDF89A1119E6FBEDCBB389A6A92ED7A7FEE20BB5E525DF736195E3188B270FE784567F8E9D1C4B8D4D4CE452B1724013E9D8605C1C1D1A085D86BE5CE15CCED749921585780C99D362282FC691B4EF53819892A5B8C2E5F314CDB1BCC47262681A141372319E0C9DA0594F861E479356A578F95B0F358A8BEF6254CF30EC033E9DA45485DFB6D9D375B2D6086DCF3B7C2AB42CCF325DCB22B1729268D324B36DD26528B7D6B01BF5D8D860716601FB313F5F9BF9C3BFD25A55DBD21BD5A279E9BCA7D3BE4D76DBDAE2954B33AF1D734DA3E151159DF2489A96E3F4A64DD4CE9D7C36875B47D96EB8962693B4C498CD06E93BBC4021B584BA1ED80E1990BEE191AE1F7A1E3627AD4A3032D43AAAC0DA96DD4711A7BFF8372B275FC086B8BE6181E9B82B253E9FF62E4FFB474F7A474F05D3CBCAFE6D414BC30E62453170BC283D9AAEBB5681F3A85A3B2CD7C580A0C7FBD5A10179629CA738B35C319BD5E5336787941819F0AECD5C985D599D9E25AAEDBCE3E8A37BC5D1AD8323DBE99003D471E6E6A30D3C3956D33B764A50E312F23EEBBB585BDF766864AC5E368B62C576039FF06C97A4385A52985412398CF45C46E0CB4B951D7DC30B479E6ACC9DBFAEDF28AAA15131D5A9B7383760000149A2DB68E9D5A6576A04AD2E1D12EE4BAFFB8535A66B326F4C916767C3B611B6BA846E8AB2D409BD4AE09AD9A4640794615A0B73580B8A16562A9DAC141B25E5BC654B0C3B169709DDF00A5562B6489E384F165639CB6ABC70CC1F4AA4FAD2BEE388D8458645A3AC8F6E6638D1733D4A94492519D29CD935C8A80692705B88F22889ABF596C8318222516EB829963AF9F5AF3A5AF79D9651C1E919EB85737EA1E9B50D3AA1F21FBD45F9C49D5AAD517CF4A9D233AF105E605E986DFFED23ED675F73EA6D8A20DDB6E637BA46A365E712F4FECD937FFC6F6FF88D078956B771FC9C586DD19410D861B350272D4269E94257634DC758ADAEBD7E21985FA60B45D271F9897146163ADB079544AF307474F7F20A8F9DEBB061D7765D82C21E53E261C7245DCF6E688C2823E6098A0D4292442D01022708B52FD76AE9944B4FF68F9E7AECB1773A8D0ABB8624B2A46ED8755DABB5039E0B79567BF95C5A8C51A5660472FAB2340272B9E436BB8C2253035927112745716CDFAEA4A258C75FF72FCE79BAD3A588F189311AF9CDF339605ECD912C53181BF2BB3AE3129DB955B3DA405C9002EF31ECBC40E7C7FB84448C08485AF3B88021794950E2DE95056FB5EA23025DD20B69ADDCA403BA83605164361D2BB52F9921E7A3BC6A4EA8FB04C5079A2B20463DA2592ABD05D6C1307A24E7AC568AFFF8A8363BC7370DFDF117F51FBDA17CE2C3EEEE2D88D3CECB6F24368F51FB7750AA28F42550CDBA17AFF8141152A4DFD102CD0A0D8F4EC42845B4BB0D6B65C56F7749803F8A159B1D1EFE8FC5080B6B43C25146D7A086FAF9C971479194ED6381876DCAF2839BC8E596BBDAF65AA6B35A733B96AFD9FE5285303D6F7EC5312C92A543A151F3673B9DE3DCC580AB6846A19627446FAED82C357D93F4A75652C5FAF2934F07FE0636427E762D93B25E3A4FACD46982D35F3AD37CFE44787E295C2889532BECFC2ADB75C8BA6515EAE97FFD20FFC11B086491C13C2D2BF49545EFCCB40FF732B44785CE7291EA74ADB317FD6A9BB48356A96A398104F2D2358CCB8B84E522F3DAABABB0B9D3D6CC5C66D6E8AAB1189FCF9B8DAEF7FA39AFD5211936009E5829DBD8A148BC21519D5E085B9D7AA76B28F66AE18455A6E8D71299789E466269B43913E9DA213359A4008EA2DD6A255DAB2D9D790339DC45CDA9D79BCF1CA1C2919C3F9CE3D584BA6BB3F2D1437452E62CC2BD58B42F16D4B11172B4BFD3D08B7FF8FFAC722B18ED8BE02EC52055851C5DFEE1CBF6132FB12F5F0AA70ABA6D6763029F4978A6D16CB406E3498664289617366F67D259C30F149AA1EB1D25976BBC763A3F98353CC2306D16FF0B0841147996477EA7055E414A10F9D9E21AEB8766AB232614B52D72E436BA648BA2C0A76224CD24E22AE5F8003894CCC1A501CB579CC06EEBDAE9D39DA545A35C76B52E77C366E01591C9A7855FBC5BFDC57B959FBDD38E27C86C8ABE712B73C79E30AF2C9E3A114E26DDBD4305ABFDDAD7BF35F3DA8905A7B1D05C5B29174A83FC6C8E3847D6DB93F950C46E4EB9BEED995D574D08B59A6D3AFCFE7DC695795A123B5D2DB16593BA738733355DAE9712A9D462AB2551215BAE39672F5202872C0FCEC6C71456167D41B48950E6395F64FD5C3C60085393623A454A42C87028728A1A0B34DD5114C60F2DDD84C30349903E742826B09DB5A255AB9B95BA6B68942DD3F4DDFBB843DB18DBAEFFDEFF4110328C4F365BDCF472F5BB471AAB4B67BEF8F0B96F7EB776F9BCDDE8162E2D7A4B0D7B6AC99F2EB0A5A682F26285B4470666976669404530425964638D3ABC47546A0C709969B7170B72E88B7A532082C4EE1B1C5E5469CA6B6928959C2C9202CBCA9C3ADC4F090CB0E55AA31E8F09A1AE155D2336D25FD53BB1C9214DE42D890D589A7451D308369768D32407FECAB25EA1C8BAB6B26BAB8DB3868ED49F570606F8549692F66CA1BA3AB7D660BA766CEF6657D36827702F2C955F394596DBA3C75777B5E4DD5EDFAE1D37EFED9BBCED773EBBFDAE5B77DE7BFFE64F3FD8AF8E26DBFC049349135CD86A4475DC27188EA7AA752624A564DC094817A82FAD0686C1AA1200618361B2377E70717E390545C230E9984CF6250989E74706986CC207F2E6197EC720159342D499D174E3FC54A3D5529167586AB9DBF558CA97C524025EE5F9F1FE8EE304A1438001A4E296658FDC7E676DB5EC2E17C346D39D5BA6CCAF1E36BFF17CF73B47DB47CE18B3252B083A332BDC9D7B521FB945DD3492B9656F62E7B0F827BFCE3F70937068B3373543843E3B90D17E705C49AACACE4D6C324E0CC629D7080D1B89DED48D58A34D063EB8AB67580CC7945657F3AA8A02C8C66577305FE876ACC5255EE489AE460CF5D1C918850FCB1C60B713062DB3AB4CE41A6B8D23972ED4F9D09BCCE50EECE08B4D007597A3084508384E49240C5DE7B2AAD96E3B9EC5E6930C4FF199349F4A0EDF747328F14C2E0DDE4CD1B7ECE23FBC4FFDD46DD25DBBA8DDA3F2AF7E24F627BFC6EE1BE3FA156122A3E955322F53ED2651A9F80B6B5809B2A379B5527EDF043790A462827CD75E42F048DDF60DC7AED4EC9AC636B121A224234E8C725B471B1DD4684B5F2B179B0D6FE78EC0D6B27B37539E4F3A4E687608DFB575DDA78912B619CDBC5A2BFEFD5F3E04BCFA8DD2DA5F3CFED2970EBFD4A1C3EC0377D9026D03E903F6F7E5495EB4583A3594A384D01158C00EC8299EE3E29AA991D13095A26499DF3C4EB1D918700032093190643EBA9FDD371E56ABDEE5A5106F4A3C37D65772B4C6E9B3DDE75E69CCCDCE3D7F3C3876413F7ABABE5622FB93D2F6517CCC69D4C2529DAC5609CD5409960AC035A5D00AB4F397C9D003DD02ECF77C2FB16F47B3DDF25BAD74320E318216792078BFD9422892F158CDB6FEF1F299474FBE4EC8B1F3860E0C9F20C3334BAB7FF7E893AB57E6D41B2673376C6AD75B745CA19271BA2F5D3F7526A8AC71024D0149861470193236CDB0722241320CE2882255910063A06922709183BD2B8B61A59B78F023FC9651EEC30794DFFE357ED70DA3BB77A572F9B4A80E4E8C9307B7F237EF1102AA7AF2C2EACB274355F057D63C60CBD572B7D6121836423301E1740D26A5964B5535A6A28E110CE530B41C98E39B873D8EE3839056E4D0B610B4FC400EF4D4EA34F37D19259D3C70EB4DA57AFB7656DEE7870795F8C7EFFBA81B067C2E911D1D34692214189263B46E736CB84F9A1CD48693062444DC3DA8638FBFF3A2E8073E8BAD0EABBA738BDD0BB3CE6CA1F3E861CA0FA9B13CAD88CCE4B0D7A8138E9BBAF14079659591A4D8BE1D4E421032319E08EAF3853C27F3A57600F053AEFB826AB70D9E6529DB0613A218DAD57461EB68BDD9E68810C40748BDB156E9CFA810E76AE53A3BD01F722C2A7E08E42B2B76BB43F567273EB867FFDE1B988472DF273FB56562CB9014DBB36DC7EEBB6F19BCF590924BCA09954927088ED55C3B3B90FA83CF7FEDF7FEF7D78EBC7CB1CB31D87D2108610F762020599E474450DAF999F0EC02A7D9345CCA90F4605C1E19F641581229DB0F4A4F1DB58F9D2F9DB8DCE0C8A2ABD393C3340AAA8BF4DEA92C2C352A65B65020EB75BA5E9306F274522544964100CB023B39C06D1AA11309219B744D934EA618A4328669172A7AA9486792342700FDF83413F2BC2942B1E192FD994F7DF4EE0FDC7ECBA66D9B559A8F2BB1B1A1A1899D4076A19050908D4891E5321982F1BFF9D4F14ACBB9FBFEFB2F379B36C7022DF0F1D83A4A84D390387A20B86D828E87020B3EC76C1D713C17AE845A569F996B3E72383D558ED50DBDA9A5F6DD3078FF5DC3B7DF844AEA13E4C4C04082A4C71369F7C5636417F8D0EBB65BB8112EA6405722048E1E1F30286EFCCEDB08CBF4020FB9116251C7B163F9B42400C0B121A0592C4689A265DB6E326E334CFFF040AA2F2711BE3C3E94BBFBC62D9FFEC4F8EDFB29B056C7640481621902F0455188D0D4976B8A613CF8CB9F29952BCBBA4648A2944ABF45A542EECA7CEA1E2FA3021F84FDD9F88D07B8789AE504F07F73B52C092254DDEEF4E2E0873F44304CF471D7F31A6D9A66DC522528D75170E8662BE47822156765D9AF3403DDA0458ECDA7A02B3ACB2D91E0A978222E700119180BABA6DE9D9B9F732C141FDE479689169B0D78D6CFA6A5640AF7C0308CD368862A3B7C60C7E8811D43076F00741224F89608020FD1E06A2D3E9E1899D8FA0BBFF12B85998BBF7CCF9D9BC647815DDE2C6DF624679242FACFFFE6A7E39FF944FAFEBB84784A4EE54055EC7A25994D3893C3532BC5E96A594C880C87FD8304ED00D430DBC7FD833BDD3D5BE8076FB797165CCB701A0D24228EA6392C2ACF5603D74FC8A90337C892422A710125D8B255969F7DF5622683C24D013570F15844910454E77E476447B78C430C67454949C4445B13B33160172AF0A888FA22B0186407259BE408BDA91339921F1FEE4BFAD6CF7FE4766564C0E538F0BA3719165989C8A5E06846961DD746256138018AA2BB56B60D33B57DD3CECFFDC2EEDFFAA56C5F1E81EB976BF673C789858279F64AE2577F36F65B0F125A1D8A04A577A04EB29938AA2D297154265E081C51154514CD3D3BC883FB0DD7EF8FA7C480120D6279AA2822AE5415C98D9284155DB7FAF29CC064F3299A63B0D6207434052E6F0B04A05A24E8E13D0A37CE4B9C40511CB556ACEEBDFFE6FEEDE3F9846275EB7D07F687A2FC4E01774309C67DF3BC0823A128BAA6EEDB36B7698CB9EB0071EB6E3AA5069685F7A98522B01F55AE7BB32B2063A1EB842B2B2443B3B2C06C1A1546FB02360C52929F8F7555491CDC04168CD54B6C1A976FBB03779660B891A17EB761D770DB0C8308047DBC5258D551D328428D2B340B4A00550527942986A1380E2F92E1099A83E6020F3002EDF96E6A7242EE4F146617C410E4C055B0E8C9C475348F6BEEC3CEC1CA44927ABB459AB677E62275799A299683D522C1D3A4C413630360E53E4DD2771EC4F718A810AB0532130F45267074AB56454A24B2B1309794B6ECE05379D44B9C574824F8FD1F085209D3B468CBDBBE65948F493E19060C0319203190E976BA315902C8042B83BC41F2022908D8845001003210B404DEC78ABB16C46A84C6605F0AAE5D2C96A00722AD32C0D0C9D4BB1AF663F320A6E40700B75885F7E697BDF397483AA4D33110ADB03FC57FEA4EEE9E1BF91BF7860359C2E8909E89D685C7D34C0C6D07CA434189C9E70B953DFB76A1706103474593A2E29B37D9F0DB9EED5C5C66A0D4985668DB144B37BB9DFC44BFA19BF16432EA36C12A98C1F304D49BE8059E1251156CB0F546027E81E7CB57A6188A71DADDD0B55D22407B804B24D68B986F1AD7C48FB73759601B83EA3DB189191F95C70699540CBA05BA415EB3C3F6E599918110FA1E92A9E75286861305A08AAA02D10FC8888ACB80B30E19CAA92C0CBA96A9000C86EEBD8BC8A5E4DD5BA190B314D58B6D7F79696D249F0A75684441B40AAC007B7A7E63F1134B1355F6DEE2446589114831D67599D12D9334BA538E03CE14AA299257C168D7AF448BD2B5E6C4759A7108484E8949FDC39E1992352B5C6B05F36BF6FC1A05854856B9FE7C58AB13A5B207F25F2D317139140592674989A5E21C259254B68F5192C843B882B5B4B2BE5A4A2ECF4D6CF63946DC3261D7EAABCB2B64486633A946A9C9FB66D4EEA029E828D80FD84D2102AFE7A1485D84C9488814D41E39E4652593425090E954BE3F43F19234B9171F66E3F1EBF7C7DE7920A603D3A6D7EA0C504FB545E065BBD8D0111D10443E978B2E6A191E348628D4620410AD2A91025DB5DC899D7B910E228F85210DDAEB638B0761B53E40B241CBA916ABCD72D5D4F446A59619CBD5DBA6EF7A584B828149D0480168F13B1325471CC8F551BA27832857B201CE292334C4C54A6DB0AF8F105565682CBA5BDCD84F346CA3A38878ED749CD72F3817A090762172D389245671A34A5058D1D08584847C934E4717E3989025D03A58D1FCF16D3BD79B8C816D07A6E12C2DDA274F05274E7B734B83BC94870C8F424C13ED7AD1A39CDC50A2AD69A56209F96DC34951E8C13C9883905FEF772024B1CD42A0C010299F172EBC7EAE2F9301406590691081F0F34F342CBAF975F34D2BF0486BB546740C7B66D903A2B91ABE8165D2F184BBB4849B276371C42125F3244F81FEC41279EC518454F431B09546D386EE9E4F9BB6055C1256DBC9786CFBAE6D213A52A48BA2C4CBD4D0482AB48DEAD222921E9225121D3C14B5D622FC109DC6D0BAF535944674318199F9A79F7E7118170573CD0D5DCB0B3FD9B06BDD417EF364FC3F7D8EBCE750ABD9EA067EEAD0EEF5EFA31EF89D06039438374BA6520407B814861C0575A9DDB562E921EC87F59B2259869664CAB499C13EF6E06EFA437BD88FDEEE7DE0865D07764169446AE0D9A826F36C109309C1379A73D3BEDE21D1E28984C8F53EAB87972409990CA06034E170FEC4B9DDBBF6F68D8C82E109FD9161EFDA46BADE9BBD8F220A4456DDBB39FDE97BB39FFB3454D10D8761A7EB5A94B5EA954055810DA06992944F32E1EA52757CFBB6F5688D0E9665F23916BADF994B645BA3726968017C2EC56DDA1C1BDF44EA26B41B81E363AA887C212714D479A75C70DBE04A169875D44689F618A21E6BE9025B4DBF742275F495F1814C60747C496151EEDE7D36E36A0FFA6AC33BDA62388F6359CD7A676ADAAED43DCB26782ECA07BD95F1BA1D400A77AD402B12194FA2A5191986EE96A9932292AFF8E353332CAD2A543643F342F455103086E6649950537CB64F1614016A5B2CABE627B8785F48CB21D452CFD3E666CDC22219D9E6639762EF858E4EB8D6F2ABA7B8EF3F97EF98C1FC0217D85422F91E564535EFDA3FACC25AE3C923FAF4BC6B9B5AA960CCCE50E3A37E4CA11489467F11ED45EC69E0924619542D282EDAD07D20533340B4A84381B1D6EC502A0AE85B2E851286EA998853F91C9DC9448A802039AEEF5BB622F15010182986DAC0C4F34C6E849FD8CE0F4FC4FAFA9C76EBD4CBAFB61B2D8626492415DF9E7BFE65F9FCDC10243A45369F7D114D34213F70DD58FB312BBB3AFAE0B47FF023BAA5416805191353398615FC729D96452A93A118F4ACA20324C2B70D9A17CD99391E050D943C4A5F94DB7167671A93BBF6448508A7BDDABC8DB62BCB8A43836C2E4B815F23809152691A4435D69746968B0094A486BC14E04D702F4EA233B9D840DFBEED633FF8E663AF1C396A77DAAF7CE7596EBA98904494462874619AA7451510ECA71A8788526636456E9FE03329D4560E85787C9434743195E193E94811E97D13EE6292401564E7C2A55095BDA89EE26AB45FB7A8BE0990EBA8FE440AD5C65C4C347AD0FBE7B5C485FF41F2F0235A1507670DD0C7C23A6093AD7F1AE018ED5940441E481132BAF90FFFEDEFA4E54A3CA97A5ADB35F490A7DD38383A1FA0DDF49E53195741304D673E796F6CFFAE6B932C9C1A4BA0A79A849D57AB441838F50A9FEE37CA25CEB540E94911391EFD04C3D36C76641C59309A85B96A8403C9240CED9905E3C967EDEFFDC07EEA59FB99C3D68F5EB40E3F672CCC404481337BA93AA24E51D9C24192D095025E2639C9A8B76586BE6BD78E8181BC80DA4D44F2638075100266BCDF5CE9619A771CD7FC76D5B08D6A10D5C80DE80132818A7E75A52377E95DA0184454F3F05374220EFD8011A5C0C2B05BA9DE682746C605597D733CB0A934785DF38FFFD7E2DF7FA571E46870F192D77B2D5F38B7F5A6BDE835AF5F271AAAE88D72AD4F3844159AE14046D33463B75A918A1D012B1C688CB1209E6C9A0F09878CA95EABFD4EC3AEF9EDADE91EEB76EDCF6F2B7B683A554B5CA6DF6CB798F20A292AA48A767368175619B874708225693E8A7B2CFCD5B932ECDBAF7E87B44D007A0C586166CC775C802C135363C9186278C3187C36B2AC671742B76768B1580A168B8C65C65331D0B400D4CB0317730985631526F04D221E73F4EE759D763DDAF2EE218BD108CFE8B0B184357F85744328AF4885D6FC228F5655B3EB0D8F93BE8BA472754810FB26302E5D26CE5F42E21C88254A6B15306192675A9E270DA7519E40BDA2D80BBCF531B1DE345064D4FA088F6199439B26E5A5BA31BD0A7BA240746C5FEFB26990658A70BBD1BAC4E22EE6857E1AC3DEED88A0A3D602FCC52FD6D439B40E5159A3259C9AB1A117A0D39D4D23E7D11B992ACA8AAED6319F7A8E033D350C50D8A4A02C162B4BA5B29EA006770C43060C5C070C328285D19053AF82F636C4FA4E1B191958713477B0DFBB5CD08ECFB40A9548E769B6490CB99074E0EA98400905C1319D9FCA63EF619A6F6A4C2CD55D98828A48881C250BD6DC0C27732CC774D27D523CC660B0A4373CB58E80F5A9696A761952858751B5AE21DBAE75F25269289E1E55A1D4858EBD614314845827EC382FE201EB264241E1D9831FBBD5CF2AF518CF368D70BA56BD52EC363AD18817D84088667B34448A2E1CC66AAEA18BF761D806128307BA2D369EF656A73DD3A664C96B36824E1B42814E0BCAC83052A90071F25AA2F13CE7F8793611779A5D47553BC5B2E7BA2A27325F7DBEB20C20EF47ED1870304CE7C11ECFC5CF08FE42CDC5A0168CF4A08539A9A1F48EFB0E0E7FEC83758576962B43D93181CA2C3C71B6890E7504F6718A90E059A3D97953F2FBA90D5BFFAC67EA90B23DA3EB2CCDA267EF6368A752468EC2526BE9BC904A007A63102512F4226CE2B61F7F3638F1062823C14200E828F9B46F192073A3B4D0F9BF3F5C3971C16BB60253235C3B74D01E8791913DEB290ABFA3C54042E1704CAC6766DB70F68E1D14C776E657C96267D091FD3376E97C9D709154490C3898C67566177FBA508CDCD5A0E5A43177DEC6680507BDA1D6A32AB21B4BD27DD9808DB2162FC7F159AB516D3FFD43FBA5636C4C06922033092E9DE073692E199732AA904DE40386FADED9FAA525A754F1D09D32B4506B867A0BC0175E42068227E18CC893BD28C5CDC7B70CD05B07D192B6DB5DD7F6A5AE930FB2CD8B3334FE4E5318CFF2FCA872BC6FC3A2A8EE342148B8C5599AE52CAD034B115A00C706449884803EBD90401D67DD52C97CE6796FB524FFDCBDFC673E1E7EF846EEDFFC5CEC730F38311E5D0E8226D092A5F219319D731F3F5B7AF992B9B46C158B8014308CB4306DE5901E1AFB26A07D449C23E9860B751B730ED28E2115AB93500943A7FBFBAC99829CCB2E9F39EFE0401F07E5E49F61185A73AED1B6AAAB0EA2390A15F43550BE498C2E10F91CE20DDC1E6C5E5B5E681F3F6656AA1DD329156AAB874FAD3EFBDADC9F3E543D7C8E39B48FBEF716369F89541A32943A5A1C736167CB8D134B3666099BF09816365B5EB946685DD23220F713B64398CEDA99B9A9572EAC155A1A8D19278B85240E2F5D9E89064D78CAE86224C483A66F79515E7D1F86AD1750476F2324A87611BCD8D63A7056346D89EFF5E7684580B88F0E6D0871706DB9C31085BE64FB035B8DA114F3F37764FFE8B3B9BFFDDDE0819B6AC5CAE57F7874CD71F57B6F734786B4AE0E9245699670BA543F325B9CABAE2C96676757CA8D76616AA1562881AF5052CC9232A99B6EDBFAC97B476E3F244F0CD2F7DCEA45EA079467CA6769CB717C4C1A229162DECF4327E5ED93BDEF6AD8063D43D8E90DAF53735A0DF454418AA3F721E94892934A9A9673EAF4952B8B8DD75FBF74F4D50BD301EF6FDEEAA8715B5257574B271F7BEACAF193D4702EFEEBF78F3FF6D7E4831F5E7DFA7903D2EB6FFF8A373E4C436C0BC364C5264EAEE677EF9EB8757FFE864D03FB77A7860711F0484B3C69325619AD5D64268A0B1B8F3F0D8644F10C069A3C9A7202DF0621F023FA0EEA6B5836CCEBE1975E1AFF89A188BCED76ABE6FC82556D445331D1FCA40C7864FA444BB79F3EBD104EEC61C6360723E3F18307E4F1515A96390CA148426A626CE4A61BC55CFF85974E5E78FE1553D3121FDC39FAF9FF421CD83AFDB70F857D39F2377FDEDF361E752FD65A853F7D585BAB91AE8D0D1638269851686BBEA5E11D0A252B706828BE2050B20001821D1914E34AA7D3EEEBEF47F3077532005408B021A29FEB31F916A2F9B6A35719C05CBBE6FCBCDFEA9AB5BAAD694045082231955C24B88A9ADFF9A19BD300073C07322AC8028F3E2A1D0690B058120519C08B8FCBA307F6F5EDDAB5787E66EE9553CD6259B963FFE4B7FFD2DE365CFAF2B7D91DDB89DFFE5706C7A6EB56E32F1FD3169642CC40E10A0056BE0762B23635B77CFA924327E7CE2D410E12D2108E18BD8311E64E04BE309186B5F6A3E1D6DE531FBD3C7A75B7FDD8B06B4E7CF3330576ADE42C2E431A46571733B481E75ABABE566B9303A37850804D2698648257956452892B184DA6209C8A02CB73E8DEA023846E1D9225665399E4D8883A3ADA2EB7E65F3B532B96845BF6E6BFF85FB54EA3FEB527527FF03BECFDB727B18B1F7AA17D7926D0F5C52B0B97DE989D9F2A4BA39B070E1EC2C4CED6073EE620EB3A2EC405CA0B30128B9173B0EB88F7D02869C88BAEEBC3639175EB34B7C7F07A4F81BC33B16005BAA75E472233DA9D08A902A3773AA6D63559594D25C87CBFDC9F9324AE2FAD64E350D0D12D018462231132620911B7C63B387033E040A07C525F2E35B905F81949626DA510FBEC03B17FFFCB8B7FFE77AEAA4A7FFCEF8474B6FA8F2F1C79FC553BB73977E8B6A10307798FB6CECE69875F33DE9875C03291A5B0CB78899F1C8BF21789699210F80360CC8EEA8F1BC5A2DF9B2D877EF2368676CD6FF8A92FCDDBB353A8B3D8092078A185C0C43447208C8DBB6A5C4CA7212CE5124A3A26710CA659317DCD83B9608747E8A6171F5179880834981D461510A86870D09CAAC4FAFA317754995E0862C2E8DFFF5147EF2EFFD917C48FDF9BBDEDD6EC425D52E3D66BE7AD6F3EE33EFC84F3D093C4E32F39DFF821CB0A816153037DF576CBF2834CFF40A4EA4783E6F0180CF320C8217F78300D1D7418B60E5A7BE8F5C7602BAAF99E5B7FFCFBB809082F3422166CC834306943F082C7D2BEA8A0CF9C523173AD8898B3E1781191C8723D321C3D51B20E70D717A9D7C461A3178B91383A52B538166946EAEFF7747BEEC9E7F883DBB2FFF1B3AB8F3DD35D2D6FF9997B8AFFE1BF5B8FFCC03C7DC9C548645C0E6EDCE9DE735037BA48808EC44B89D8E2DC7CC4DE902A30C811A974E8E7B9300CE6C1C8C86F014ADD55CA7C5536EC6DC43068BFF62A05B0837361560101AC7731926C615A2497733142298A49251A9187808197C061680643011C8F5E09D0A28347C5422C5C2487F7962BB215411A09754840517605B280F7BC788CDBB5A332B7DC595D99F8FDCFB2B7ED2D7CE191899B6F6C685D7AFF8EF0E3B771BFFB19FE97EE133F76079C812680B7D62C8CA493C3833D67F54E8B96250B6EE861681B0DB775A7216F6FECB16BC276B4DF80D957576B8F7C0DDD6CD776B06DC0321D803AD70B68D617F110432AA94A8A28C1453D47442FF4AC7AE186717A014F238132037C474E8B54AC8D80005EC196C309F14EE452945A588825D9BBDB608495978F617AA7FF6F7EDF5A5CCCCBAA9E4D925BC6A1AC60156C0F437E9CBF79BC7179BE8949B181DC3A3DC29FD00185A807DB74DD302C0B853BCAFB30ECCDCF486D3C2464E88DAF7C994D2BB0C7D7754C6900E6A1C5660072282A230A4C3A1D474A841510B436520352662492F47E41AB20D26891AB7A4F06AED7F95EB2C2404ED498BDBAE5A2BE113ECD323C430CF4F9A3E3E5A3AFA0F197FF93DF617FE690F1F077CD460B93BFA8BBE854B38A503A7AB275D7FE2CC922EE7A1244245B32D094A2D3E11C816959A8D43DBF81E05FE531585FCBB51BAD5AE98B5FF0EA6B214341DCC5D859404339C214161E08E0C2748A486731AF841D050B2233A2A7C490F2F033BA63B804370BD708AA6C6164CDB67BE6AD3FF9186DEA5E3E89AE85340D948BAD09C37A608608D3C97060A8FDD83376B39D7EF0BE913FFBBDF63F7DCF426F2420CC4299D25CF1E0F6E5D9D9F8F8186689B16B2311BA17D85150D00414586C36B8CB06328E0CBB9A2D6068536B35BEF6B071E53C66B12072632BE241034AE2F1BB057725E26C2A45F78F4822ACEAF51BAFAAF41B29230AB65E52EC295C623C66192682797D3BAF17D0E8171808D3A8682A1AC23C5C87D7FA4340C1483F31D8DF7CE83B46B9C6F5F70D3F705FF1BBCFB8966D56EBC2A67CF343DB92330562241F31BDDEDE8D44BB0877422084B61F9D0F910843EC48925997D630A8626AEDA79EF1A7A6C9640CC212A686B1011CDDB03A1A66D723F97E304726535232C9218ADE8A5236262B3652EBC62F28EB9C22438A8996A5F7E4692F316151F15847F48F75CD1C57EFC90A4836D1B31EC6EE2D723EA73DF46D73A1406F9DCC6573A563A75C8C63FEC27DAF3DF5E29E4FDE8F39179C7D1D25626AA767CFFA99032720D0B5824370BD9E61389D6DD45E3C6A1D3B4664B33644352C35643330AE5A0B83343A620A3D6F4CEFA4B3F06E5422D6F7E3DB61D89BECEDDDB1A02A119D02088F10785463F0EA05634F90EA756123D7458D6F1636479EE5D8E6C19DB220F95FF9AEF6CAEBD97BEFF09B5DF05A766272DB74C1DA3CD89322A30B601F6030B0675414DD11F988BCE16309111651F2C06D97DE38D1FDFEB74399B6AC8E6D99F026925AA756EBD41AB55A0B74C711799B617D4EEC3DA7100981BD55DF903A3750F57AD5DA503DA306257C226752D864112C80AE0857451B0D002FBA199C091F89FA44B8478E93E32AAC775CC74E288DCD2358F6F089175ADF3B3C71F79DE0EDB3AF5F9ADC3C291CDA13818BF58765D1588D1E758D2472BC8777013D7011040402F2FF03973C930CC72168A80000000049454E44AE42608289504E470D0A1A0A0000000D4948445200000040000000400802000000250BE6890000216149444154789C9D7A59905DD775DD39779EDFFC5ECF23C6C60C52204191162959D1684964282B7195A4C46547F988938FFC2495AAFCE43329FFD87195534E2C572C875214D292289314279104480A240490181B68F43CBC79BCF398755F9310054EB21E505DDDEFDD77EFD9FBECBDF6DA6B1F2E8A22422925BFE92B21E4032FF66CABF3DCB3E6D2AAFCE9D34493035110635A9E986759EE37BEF76FF3E27E93C5BF77D11F78352E88FA7DFFAD25268AB8CD3AAD143843E78C0C5CF35BAC09774B7F2609D676C7F7DFEFBED43D511C3194B9E3E2F42E499CC431FD7017BEF77689E7533FD2E626ECE52DDE0BE5D363929EC16D3FE65BEFFEB2FB0EFEF45D67F3EAA5A8D3E875FBB39FFA6CA1587CEFB2DEEF8F7471148FB963F5491CBA4EFFE5D79D8B8B99AF7F499B9BFE303FDD7E85ED3EAB4AD4D0D4E9716166522D8D51867D9F53E05612FA5EBF510B6D4B92155ED5444D63389E304CB7D1685EFCA5BFBD969D2C514114B3EAC5FFFBB7F7FD8B7FA5C8CA476CC2AE01E93BB83B7D4FA4448EE35D5CD2343DD8A8920F32E00E6730AA92FDC6D7B8D132CBF351E8B31C7F7BF5C3CD4CB0E2DECD6BE6EA52D4ABAB59254ED87ADBE105D18A1D5FD2EC9E27745A423E3FF67B5F08F39998A502E18DEDFACE8537E7EEFB9D8F08C46178C02F8895286258F8EC9D5842E4309395B0D1632BF9248E08DCF9E177C147DABEF9DB3EDA3AFBAA94CD948EDE9D7E922456AB612D5E8E3756A83D60FABD38A0BEC746A24CDDC4AEEDF8AEE9BA8E1045B058F1DCEADF7D3F9A9D0947CB23470F274636AC56EF70F99D3960775AAC2461F5C1A0C7321CA72ABCA2859645454E78E064FFD54B9AC078DD0E27C9B88C61D8F746CE7B42191E8802AB4D7107C5900A25FFE51FF58A254155D75F7E816B6C0803876D7548C88AA5B2A288EEF595B0D94B6892B054CA1BBA2C8A1A8F7463B279CE75D8CD75B6DDDC7CE3DC40D458CAE1DE1F01069CD9AC0A5E84E7C6A693304CA22B71B914B7FB5CA5C00A6CE6DE05DA33232F8815892F14784DEFDC5AED3DFD9227B17BBEFD0D0EB13B5CFDA0D75E79F26F3AB76EC592915D38A295C7F8B5D5F6D91F5FD9A81F992846CD5E746B27F1E304886D8521C7857142468B711F2E238AC8F19A1CB21143629627ACAAFBDD2EEB4423BCD0AF56E9D844AF59CF962A1F9AC45CB9E8AF6CD3B52A777C41A814FD8B97FD9D8670785F1C85248978966138366668605A54515849EE5FB9A16EB49CEB8B5709D9FBCFBE2ACA6A10BAABE79E2DD25A7652254A85CD67DD38ECE473B3223B3356262EE596DA3490E06FB8998AA22B703E09586C3A478CBCCEEB592A0934F66882C4B3194517B352D4E8723193E7A8D9EFED3CF3B879F2DE8985E31F88E1691D10F3B9C88F5943F52E5EE59C20BCBC46E627C33824C80796C43C1B97CA71E8478DB6E7F9F258B1B9BE23CB5AF0E3B3B70C71EE0BBF6B0EBAF6954B595D083D6FB3BAEA6F3563C2B344E43C3111194612B9BB4E84AB55BEDD8D19A6E77BA1461496F5B65BB2882A474918C44E8C8584A64315210942C2B28C22C5D59640B8A054617BE6CE4F7EE0D6D6F63CF8152CE94E03C2569FB75C39AB3967CE338DAE536B49F353D1768B99AA300C136D3778598A97D6A8C0D3CE8078A12E88BD89924C05290C76B6DB5EABB17DE3FAA82C93986C565B0ED066BDBBF7C471656A8AE68B7C9404D76FF9576F12C4A124F503D71FD1B3392DECB4A52494348D7022873D716C41C924A11B863109228E935823930C1CCE0E0696AD58F664BEB879FEDC76AE3276FCF49D49CC6C34635D3557D725244A29C78E16CDEDA67DFE8A6A59D943F3FD1F3FEF1886809294D58922C77E90684A98511AA2400BD9F1B9D170BD6A2DDECCB3F0A5D0A8F5B2923ACD8A9269B28EEBB73BE1CD4DB1D189D6B739960907D6602E37329A8B1A1DCE0B92AE1D6B59657A2CE874D86C8E0A4A220540147DBC1003118015BA212466A3D5DA3B3DEE76CC093577E989270AF38744DDF8F53AF0F67208578B422072F4F83C5FCA569FFF45C10ECDBE933FB1D0BFB6AA71A277F2B056CCC79248A3D8AA36261EF804823529E6D846CBB75CC5F6858AE174DAAC4F8C38E293807A41B0D958DDB9310914AD35584D67478AEB83E6C8DC082B8A71DF65B65BA29E63949C7F75D5CBAAF258216A9A8CE3853D37A4C83B64335FDBDCC8654AECA02D4A5A8AB23DEBC0C2F16BCFFCECF8A38FFEDA0EB07BC6E34BCBBDE56563613F52D95ED912F7CDFBB6EF6F6E7A9797720F9D72CFDF20F526B36FCAAA55E399691448D68677FB74E0D2BCD11874F3348AE0458615D58CBAB4AA3D702CE28484156810B5DB9D51A47E46EAB28C313F8EFACA57C6C8EBB7A24112782E8A2F713C406450EBC53DDB5ADBE6346560B632538235D8204BBDE4C8A8E2D260B9D6E9F62BBA4E369A92EF77EAB55CB9824DC026016938FBE7BF6406B6F5C65BFE1B378C1307C38CAAAB4A12C61A11DCAB1BD2E103CAFD77DBCFBCEA472155547671D9777D2E9F433805D8E77AD3DD5E57D60176A546BB1E9BAE0C0ED21EC489CFCCE648B79358CE40928C43071AB716C7743D46EE2E6DC71BB8D2210C093B6E5CCA73B6DBA9B5B27DA7DB1D881382139E37AFEEA96CCA058D7756B725DB0B63361064266648BDAD877EEDB967D5AF3DCC0962E4FBFDF317383A3F11DEDC968A25E5F441A9940B969BDEF5557001383228E65BCF9F17A348BEEF70025C31BDC0F2181AD75F784D0D62BE9065664678C7147386EF58DD6E7F5CCD72529763A53037CAAA4A68D94CAD2DCFCD6EBEFEC6C8C903168D753FE20636408666326EAB21E00E92E467B4EDD54DC14F385950BA7C4F1B2D5B8C626894A3F57A634A40910DF86CDEAFF7785DDDAEF62AB5E6DA2F7E519EDF8302C71432B0448C4EEEE3EE3F242DCC842BB5A86A0B9FAC4460450565FDDA85D2FCB8693A4B4FFF8C575532374EBA359E50A740D91020E21E3D30655C598FBA24EC0DB8915172713150142E97633A7D6BA2A2A86AEED46CB474D3E4D982AE776B5B39DF8F2E2D710C13DB1E2BCB6256239AB2E97AC562416AF7AA454D8E09710B82ED252591C1FA785EF2491FF592E53CDB650915F6CC11D49676C32F57622F409C7251C5E08EEE23D546F8C317A395BA3C3FEE2C6F24CD6EADDD6C3266FD67AFAAE5A265D9DCC454BE927031EF5D59A64C824C9314C6EF7678AC8622E212C1368D28041C330337A24CEBE66A4E93F9DA76C273E57BEFDEA8B6A6727AF0F6A20424E0F11EAB642B315E49ECA32EB7CC95762BB77064E7E67AF1D481C6E515C550C000681CF359DDE5394914F924F1D7D699998ABA70C8BE7C9E93045E5251DB39B194A71B3BB4DA0D79318C22E7E626DCD3BBB12A15B3073A9C307F8039B29FA2801E9EA3A5BCFFDA75E91BC782CBCB6EB32B977324B263CB014720587AABC712222A4ACFF195D152B8D350F2D990E55A03539D9E64CFBECE0805717484482D6A02B5F4D873FD6EBF9591A4C333F2CB8BBD2313ACC83AB6152FAF33BAD20EBDACC0664B055E11624968B7FB121B0959351159636ED68B02737D333F31EDAD6E70E61367094B5845C20685C52C3B51528FCD2A3737E22B2B5EAFC94C1698CFDF1D9EB9902CAD2441A03EB0E03EF6025165F5C43C7CE3B9AB891B4683813DB0B58E89B80B6C4F9CAE44129FB47B89C07BBDAE70D7F11BB76E2A6C4CD0B275BBF24831A9ADA08698304392DB4A72F5CCF903D5C19F9E5BFCEAFD771D7DE8AE627EA4B9BED5E876B2A3E3424802B3C78DA9BC4FACC091B2BAAECABCA2940E1E346B352A4A7CB9C0295FFA0413275EA3110ABC7CF07E4616FDB31749BF17884952941DEAFA2F9F512D7FA7D5CD6C3423755141C8CD8C85A00105DD7FE665D2E9A1CA723D9FF3423E93A194630CA9D9B70C92F4EBCD787AB4CEB1259E4E1C3F14BE7D45D4E5D87500A0BCC8D73D6FA556FB7F2F5E395119FFCB76C793B43F7FF6CC979ABD7FF39D7FC984A0AE034ED7585E6AF4DAB9B1C2EAC5ABF9AC16F56D540310225E949494DD04EAFE3D1C935199BECD1B2A3F9E4F781ABDB5284E4DC686C62B4762E20D2E2E4E9747ACB36F896BDBF4937725F94CE7FA4A14B9D2DE69CD63BC6B2BAC69D9034B32723461104B76ABABA0136A763282E09188C5969ADDF2CC68E013443F3821B52DA152002FAC35AA2FECACCF9C3C617BF1D8C055FADDA2A42431575DDBC8EC990425A1AA44183ECE6BC9ADD591892217C4496B90B6BEC3FE4094657B108244A3A1497A379651FD9295B504A971788F7C704FD06A5A2BEBC2D1035996B7CE5F97F74C47A55C3C55E42817D861C5631B37368231453C74CCFEC9532143B404D9C4B01C4B042ECA6AE6955B595945AD69D65B530B9328F4BDFE402D97C3EA3A1B466C2EEF0D06C268E991D3475FBAB53E3A3D32261617AF5D7034F993FFFC91B1637B453E6644C96F588A227162F2FAF2FAE3CFBE76CFCCDC17153D97365F31A56977254812080C675E5CA457D64821130B349CD1B37BA6C0F8F842D17DEB8AF50F2FD1BE57AF7772A3453F27172A25A5DEDBDEDC8A3C375998241B1BC92FDE94468A91E75089E5429157C4E8D0AC572A166626C2D54DA658A0AAC0C5F1A0DEB64D9B9D9C8AB7D742747D606F24061E9F3E389FDB335B59B86BE5CF1EDB3335174F560E9D3E49892F08C42824838EC371CC5AADF183A7CFED3F71627967DB32B24543BE4D2270A72117B27C569191DD09AC9D1909C34050F9E6B5C5DE0F5F989C9DB3838864B5E2673E09F712C78D6BFDB9B151D772D43031CFFF92C621B044182FF19C1047FD4411A5437B84E9B960B319AFAC35EB755F67AD38E56C8EEF115962C0316D0B9C3328E7241BF7CDAB685D5579E24B9F8A6E540A331559E5118009C3F2AA9C502E217E7DBB5BF6BCAF7FF39BFFF94FFEC49C9C54C753ADE09DE666C8E9B8C2C39FED3EF922AB88CA5D0B91CC08B21EF99ED76A49992C3CD7B59DD187BE48D1A9B95ED4EAF1A260C2B52C1F8984F64DE6E09EF0CAA2E647896D728A1896B2FCCC7CF88BEBFAC474727D71B35A4FEAADAE21EC788166548824C68A40A2204A8B4F51772D4E92489878CDBA3099DF37729734928D635F9404D091C8778D8C4EFCC6E8DCC217E47C7B63E93F7EFB0FC4662B4963FE9D572A410034D0CD54BEF5F0B0A70F77DB79A7BAA5739C3B35525DDDE6F754F4AC0EB92AAAB5D14C919C2EFCEBDF8F04961D6C0581E72F2E725363086B51156381D91699716F50FAFA179D95AD162153F9DC4E40362FDC9ABFEF109135B4D491A642FA080D23D6A4E97D3308606C3E8B2A0890D58D387099504E7886B002AF302169791C183C3771EF715622230575BD596241E96E1B305CEDAE3247C33840722327A230083BDD309FCD3DFC508917E9D23ACA21ED0F82572F30BCE8A3077FF4B31168F5FF7E25A1311F47EC6485376D6C1A53CE7579664F71047122EE15A20307856B37CA3C879DBB70F6DAE947F7278A4C2401F5FF46144F334901BD87005E028247D19550268EC161919D903F18A80B84CDC9D5AD5EAE2815F74C769616DDC8C91FBA9B11D32EFC7DB20A213C0FD887B0107A836ED41B24D462F6CFB08A16D976A4088C805E01A1978001533F6010C4B5BA50305C40413917FA169333BCA2CE6646E5D1295CC8294AF9AB5F696EFC0FD2E94C8D8D26BE17197A24F28C2C5DBDB2A81E3FC1738CA4CA0845A400C54F8E45DC3302970802FA6F341124189038989D9DEEF0CD1BD717F7292C7113B552E6C2F0830DD8DD11C0AAA81AA12283C893D7CEFBE95A7836A346F8F4F491C8F1E54F9E0C6C53687693D08A8584286AB4B509018666B545D339F9B97B292FA48226CB22DB760E1F64D656E38125B309929D01BE8035295C5E965445E504C03C9B700261F9049F41E0C07F1EEB8993D06710CF0CDBDE5A9719ADD3EE52468E9844032F6AF7045C1104484B3CE5D70CD84D0B4E94A5BD7BFDC60E6D34115B4C2E4759DC2D914E2E84CD4EC2B19C2C26CD1D480C54911210104321124F3372E487A29EBDDD74C38A91CF7CAAF97292F407ECF59BD834120496E968BA6CB59BC64C09DE0292270820AC9BD20428C7F19089B07EC472CCC9AC1C335CA26A06C81E2541AC661951A3BC930228FFAB40BA53B84D450A3DCB4BB259ED12B45D1EF59B3D7A6C81D50C4692BD768B74DAD89FD81E2428F5000A99A786C8AA2C43C72069C16D48214696A924EAA32383BDFB83B5257DDFDC95D7CECDCC3CECD8BEC48A9167528AC405036328C7418C82D9BB7A19059D8626CD22D88C9830C6984005AD3492675546D97B029F70BAF1A121F45E1B62CF67B71A780A71FCB837E02388660C8190592CFBAD46620D004BB1AA51407B063F492388E78F9C48AF411C02ACA280445CD2E98EC4EC7A3FA86FD5B7D7370106848F185EAE579BE946710C9A32C2828220EA915FA9B847E16BECC650FF8B799EE185984A11A40A25AB8ECDA46B7B0F8C7EB001A97C4C69546F7AAF5F825E2B1DDE43FC98AB94DF812D3C4B91BD6A830120E6F3B1C825800B85A9B7C2FBE6F6A5823E30BCDF8BDAAD7860F2DBCD78E04C08AA65946A957EB7BACD4891244A9225AE2CAFCE1D3E888A9F2ACAF812EE8C1F430D116F406117058E152000C74F3DF1EC970FEF77A288457D86BD602B1F6D407A3BBC5B2C307BE7C25BEB49B5E9D4BB2004BB9F46B6C96473C1EA0AD5241426225046E55985D7A20C650548E4A923515082883FB210482BF4CD2BC4768552F6F8C8427565B934A7E2F6B9BC981149EDE662696E2F2213FEDE2DAEA9EF000E962361AD718094B87C71392F693CE4EEE2E8BBC2FA9DE2DC0785100CCD648C3F7AB4F3F3B3DD8D1DE3335F484BE6F00151B7852E83B69B64165C9550F04B81314DCF288CA78038CC60C4156856B0B5831E83FBD43DEC68B954AF46ED9DCB675F850CC70B1CD501144801CEDA5C914726B87C85B0117C8FDB63891AF61653AF24DABABA94B39CECB1A3BED5164A23EF5FE7AF0CB843BF4E171AF85EBD26655565FC98303BBDFB31CA040A76D2AA1344B908AE420024D044AAD5DEA17BF6EE5E830DE4B3B930022DAE634524A7243CAF168B5D86E8E3537CD093354D92B15D08669E00B96A5BAE69A9236354D6C810E351A9D10DAF5DB84A9E7C69E6FE7B7A563B42E333F4E0072AD4C301C7D0066F73271C9860CE4EB715D46A919E21AE2F23967861172552F7EBD9F0DA5B0123A0FC3032203CC057EC404291BEAD1D2395B97C1E920416C464312623BCAA0B00598EE181C14601B482E27A4184BE9B741AC8F5957A7B64E1B008F512BD55E8572F2E6AE7170D960D2F5E134A39A632FE61EEFF5508B99BDBFD9FBC282DCC93BD339C28857EC80A222DE72131A05EA416A2FB6ED7D5F9056BE9165F2C46483B844C44CDED5E347A0CA57A38CB78D74BA0CC93E3E9AC042C70F8AEA4AA7EBF29542A5490896A24285EC332448B9CACAA33AEFBD273CFCB19E3E4DD87AFBD7A31BBB85DCEEA89E9B013057B6347BAF7C18F372089627EB4241DDA8771555A8FE6E6CD95157D765648BBC47451B1E7A49233C30EAE2F4A192D64292A274066A7194C7D7A21AD4A29920C4755499C4652AA3BBFCB196111743B9EF2985BA6C08F02CCA5298B8BB11514FC0C5FE0E28DDEDF3CF757C714353F3BE3D7AA68B1389542F941CF8D7AFA3106C8D313F21412315D02408DD78DFCD1A343DFBF333E436D168AE34EADCA6177388D83B00C29B9EF92F20487FA9F62F9F0BB80D1419FD8BEF7C645B6DF673439C10C431457A1609F18C1462569A2A7789CA0E442DB4B8D11193181649665B8FBE6E6F23CCBC73EF00D4E31CDBE71FFA8DF69F3EF33E0F666BF63C0EEBA6F03159AC0F70E1853B26D59F2E4DED64FFE9ECD66A05E091C6FAE6E10C7E68F1FC5ACE07682E1B130BEF15FFF5BEBCA158808E57D733198A6A1854204012F2D55D091D295639752BFA426D3D4063A70C2846474850704E17171444581C9833238EC48C5ABD5C5612DBAFDBABDB8F7F607BF7AFB8EF168D86B73999C6F5B747B8DF01248BCD768F19EDFF0A93E3ECDA7289E568FE15611EB95D7824BD7B286DEEC59453FC0E822812E65A4B39924043EA6257738561CDE1A5C1DCF82C2556DC7A6259E3A24444964D9B1E7C582C01715FC810DC447E9C41A75E6C342E8235E7854D86FF1C5316BF16D1AA1858A59DF0FDFBE4C1591D97794C681A0E9B747EAB163394F3D8F2FB16E0092D90D7D5D97D6FB9DB9FB8E420549530526A2F788B961F505D2A676C424F6B3BA06F6F1CBD57E8ECB173412F8E8CE040D32B39992562313D88E8012F15B191087D6409ED4DCC5B7D20D57156F7999093D46CC3A1968ED313F04E9741320B3BFF09234301991736D2F6F18ABAFBFBDFAB91387EF3B043E9D4EF864B42C43EF0F07BB43EE34FC93D285530BFD8BCB3BE7AF4F6E449D314D882D511309783614C5C06139D1EE9ABC962A1DBB47107E530352F8772CCEC8D95BCB49BBCD209AAD41DC6E80337444AD3803F118746238E8C7FF30F42F5C9379C17703B33B30C2241BD01B672E46A7E790C914D43F8A128AD60F4D23BFAB8F8045A7D91C85E307A78BE55C5DE75B4F9CCDDCB0D9B9D1EA8D467E7EAB78D75ED4553403A8D22E04281D64E4D7C2FB63772009062D4656CD4BAFEDB6E3516D077D9DEF9078744CC07C17CC390516C459D0FFFBA7F9B5AD509142D787E81BA14CF8E1FE2DFFF25F3C79E09B9F9273B994734668FDD08BC012DC1C9355F04FB40A360D3C5961663E7D62ABDE609EBB2EF4C3522485673B5B5CB332C9A2A34A24DE351D18F08F0B21A48EDF038A8D78ABB7D0C202D1D259B22479D9B250CC39763F333105CCF2BA6DEFEC39EF95D738552648BED112EF04F01A46B4348C66D707D5BF3B33F295BB854286350CC4377C8AD444391B025F046D180518B508524FE99E7DED0B9BBDCD2AF654A9E4736EB97FE986B27F0F0A9F9B78EF5FE1C718103A169E10EE2C81A9FB9E834122661F68CCC3D90A9716DF44C914C246C37EFAB9B8634A8F7E2EC024736A5407ACBF748E5C5D65D1EB02137386D1EA35BEFFBAFAD03EA592E14B45560B686CA4650157A4DB12A64C1D1D19A6D194688767B82B3BA6E5E07880BF5E2D7CFA814BAFBF3976D7719FE2600D60F9D7B0E8A30CC0D203AB0BAF74AFBDCD40FC08DCB44E50EA430945A3ECBB3C235AD56DFFEAD58046FEC40875C2B8EB786F9D75AE2EE90767D4C3FB443F08DEBE465C570541EA3AF653D7A2FBA7B31859126AEE746CD3CDEF9D84A004034227DA59AA4191925386E497321AE69C64A716170A7E82B19697CEB838D6F5031513868F35E0DD234731069F416B034D88BD53473C216813084F2315446EECA3120F6EAD9EF5DCC0C7C1993CC6F0843F309AFBFCA9BC2C78B546FBC73FEF9C3937F64F1E14A2D87CEEAC10266CDB899F5BBE5973720F1EE773D9DCC17DFDADAA18C76ABE2015F333B30B91DD4DCC5EB53148BBFB5A33B2DC208844434583831E50E019287C220F39E957274F3EFC30539A96AEDFAB075B1B21446D9E0390077EC860C22D08CF9C792B3BBB5FF32C2597CF4C152515B745879BD6F12BCF9DE114A132375EFAE387F37FFC48E7A72F359F7871E4CB0F92569F7BF91C7672F472C3D96FE68F1CC0D5B98972E2E264821F7576528CE6D8C8E927AC1F5EBA89D347D8FC88E7A9C079A95817E2380B663F36764940C3961E4682191F6CC02EC1F6ED9E7DF366D468C0D9D8740CB071C79D8177ABE54FDDFB905CC8E3541067A8F8CF802F7068A1812FCCF8A99380C5D6C646B7D6822A5CF8E203C6A7EEEA3EF6B3E8F28DFC1F7CCDDFD88E9F7D857FECE58D4E6FF22BA7D023A6E91B788032C844BE13A08BF79C90D5644EE05C3FE4C74B9B9B1B070E2D04D80B146C96C50F34E438C3F14EF3F8E1C7D112B7BE15D5EA689D02DFC68180D007E3F2EB46255B1C49B205A26B8A2064345116F0ECB4D5028302BCA4832F962DCE4D03559C6E6FE9D50B46D1287DEBCBE4EB9FEBFFAF1FC5F55EE13FFDDBE0873F35CEDCDC8AFDB1CF9EC0F0B8BE51C7798B84E333A5627672DA21D2D020861B2D756EDE0A4EED63258C7BD2140E3018C671171C0C4805B0F4853A92AE1BCEBBA340C04CF3FC9B18CDFBAE2D08221A14CBB4FB829E1F1BB3F3652E9B452B9B33142899436D129B9F527F6C05EA14B818F0374C123163E0E453E47AEB5797D18E97FFF02BC1CACEE65F3C36F9ED4770F22CF8DEE31797378253C773070E570E94051F13C97EB4BCA565F3AEB924F119A65C5659BEE5790C03DD3685A024F299008D519A06B060A8410E7DBF5B9FDF116786EF9837AF879B1B185824580826D77D134A3A337BC8CBE6947209A7877429BD0FEAE8AE5A918E1C873C73F70EF01F0443F43D687671884A97241A8638E6A2EAD2D89FFEFBE6FF799A6C3772DFF9E6D8F71E6F60E41632CE4F5F66761AC1CD752E4C7C3F80EA87EED8753DE9F46130A8B4D00343288EB2E00C4DC407211A8C3401E0B85DB7DF66CFA92093B29FA0F3D493E8CA030CAB410F3D3BA59B1802A852A4685959C81B9A008966B75746B50E83F4F774DE8AA7A41B0292961E9B63617B4A3ED3860167B92A95D8B2B75E39A71E9FCBFCEEBD5B7FF9FDDCCC4C7EADDA7CEC294357B9AC4E2BF9F8E05CBF5637DEB84925DEDAD8A97FC2CD162629A01509065E14861E7AA2F4354C628A3347EF9916A4AB4F2F259D175F60023BC09F981013EA5966801B144701C5A2AAE4312B14A55D1C1832629CDAA42ED034C0FA9166E9E6EE7A65F7D8252E18B61469BB0C8D9A39B06FB0B513ADAFCDFF873F6ABFF266F083E7998C911C994FEE392C4C8FF219437CE372706E31AC94133F325D2B93F2EFF46E789E2CD02E5A4D68B6889E210CA539B0BBE9EFA22731976FB59F7C829D19490930CB40664242F818DEE7327CAE90CF688A24F3107DDFC5013459BB0B4E470C361A80B4A14CEF8D7FB000E7E2A07B62F713880EC8A938E118617E26E89B6BAFBC3672F70969EF0CF3DFBFD77F7B517FE433B12821227196A4A2C98DC5D5ED53070F1C3B14A43C364D6A08B3C0719E0D4DDB49D5BCE161571CA97B6756338C84D0EBB4DADFFD2BBE0CFE6D438C65705C8BA2BDF648BE04350E2C40D7B4F46C20B2F5DD2E122B8ED100B009E420CBB2223700CF79A71D1D42049C957608E9CF541C4CCFFA2175742D595868FFFCD5CCA993E5FFF2EFC8E34F357EF00FA56FFD53E81241D744C74666C7ADAD1D1F7188EC4D50873061644918A98AD0E9C246961F6E759A1FBBC183333ECDFA96F5E77FC601F63D2EA42197D3D31998937655ECC8082D8FE999AC00BCC437779BCEE10E303482B606391CA00065A18BC9529CF069C1870830740FDC975E973E056E04DE0281D258C5B9B2037BCDC79F11BEF460E1912F48CF9FA99FFBE5C87D9F885BDD40E5AF15B8437E11018F8049636117EC20BC90485378130D13EBA7EAF06E08F9C8DA41A7FBD7DF659D818F4E1C822AAA168EFBD97068448B39AE98E7C7A764591A06F8AED5C33BA681926AA2BB074E5111945CC66E75D23D9144143A64411A5AA0F4435D36ED86314F1180E601D0D62FE599B929FBB127C9239F577EE7B4F0D88F3AA31B8CEBE87FF8B5EEFF7C42F8CE3753B5155F41E085E8995397E15B214EB261381F856C80104A930CB96A56FFFABBB21F783887E38272E254A1E0F42D64BDEBE39082CEE7F3BC2C23B4874D606AF5D08E5DE41DFEF6AEAEC209024E218285209A539763B78697ECA2513AA81E1A8E18F400F0A006C7F667210EFFED8FED4FDF33FEFBBFB7F8A3A785E9F1EBD5F6692BE00FCD4399C67E62CFF14D1497E19018C102EE4758543424066E6CBBD6C6133F8897AF39D92CB200FE8A4968D67B69130400340C9C3F08B45CB82BFDA51266CCA4A0BC5B30DE0DC1E167BB60201B7A2F68C7BE9F967A383EA5493006F762D3F1456A29647619CBB1702485248D93077237D6C9132FF46BEDF107EE5B5ED914AE2D2B8F7C1617C3DFEF2826E890428424332CF5C4F371440E67DC82FF0F8AEC91952C6E57520000000049454E44AE42608289504E470D0A1A0A0000000D4948445200000030000000300802000000D8606ED00000139349444154789C8D59D98F1CC779EFAAAEAE3EA6AF99D9B9F6DE259737A9833A2D9B921CC35222D94810C85712588813C4481E83007908F2943F200F4980BCF8C5B0135B767C5086EC98BA2CEAB06E5E2297BB24F79CDD999D7BFAEEEAAA7CB32B4B9428C76E2C96C3EE9EAA5F7DC7EFFB7DDF922CE30849FFFF2524E963AF786BABDD9F9F11B335796E82CBA432314755E377ACF2FB5D04D00821D047410182BD6BEFEEAD80B356876FB488AA122347E6A6B1ACFC3E9B0949F47776BC5EA7B6EF808CF1279E96ECBD877E7313C0B130E8FFFC79F5C821F3D0FE5B51C27BF021EB0C8D99F1CC71D552D528D564F22120580D2EBFD349435FCB5934676085F28C372E5D08D69688027B91B797AFDEF5875FD8DB746FC10F308D00C1839B3145EB75E946831996F45140379F43DB3F47EEBB036B5A3CEC2954DD7B0438A29DEDE1E245EFFA225571C271127226E281C0BC3DB074CD79EC51656E0A2119FFD753DD46A350A9DE6A45882106FFA45180B14C540D562595A23753E38EC9E288508AD0C8B6371F023EE8B3934240F0E1F66B2FA50B07ED7D873ACB8BC195736465857B8166B9BCC5891F659E9748CC5111465C950BE98F7F32745DB16F96CB4AD0FC10D0475CD65D5A54558D7B3E5888544B52CAB16D68F71EE17D3FD9D860B6A58D95FBCB2BC3B7CE8F3DF6B06ED9231346FEDAB33FECAEAD3A47EE5490085FFCD1A5378A95C4C3CB0DA935409C487624D22CC9384BA39C6DA886CE658E4D2A544ABD7EB6B8E845D9A05405B7EC81F90820542EC4EFDDC0B532AD96A3E75F556E3FC49398108CA99C21CCFA0362DAC337CE67BF7C6DF9DD4B337FFF0D23EFDE78FD8CD9B948755DCEA2AEE05A161714A1780A6E892CA2AAA9C65C24AE263C8F0298828B342A90E0512CDB6A9670B9DF76CD42F7DC1B57D870E1B38FC98AFA119781258C6A39F182F4672F629649DDA1501509CB924C84AA0ACF4F6EAC498E417396DD0CEA675FAD3E7032BCFC9E81F4EB9B8D9D0BCFD46AD3E9F4FC58751C4575319992AD968FB9EFC8392244E8A9790B23298B9391DF339E254C36ADACE75396F8C3607CF9EA7BBD9D634FFC1582ED3E0084770629A460A325A94A1046ECC292CEE749BD99367B04A845A7C2CCA948EE952D519CB64DBBFEE63B0EACAB19EDA6B7201B055D27B62B363BF2A51576F99AC072FF40A958CEF346138789B2308E05F8504682C4CD6D75A29041F6140AAD46B750C86721D3B69AD75E7A7EFF839FBB29CBDE5E628A82358AEF3E902EADA2675E0BA24435757EE68DECEE13FAC1D924131242957B8E49AE9535DBF2562367157A8D6D133C2085781074AFAC652BF562AB43E6E71A71BFB8BF86FD186DF6556B8CDF6826795B999912DB9D6867281FA64445DDED35395724E01C099B99685F5F8FEEF2F55CEE37314470E7E967E56A39B7D39601C78943C94ADDBDFF44F6479FC9EACD2404ABC5BA6D659D019209D2D4B059CF29A2DB1D94129E9B28B098CB54F25B3D31511BE44CDDB2244593A32C5AED2227CD38C6314FA899DDD84854110C2FD8894597C296DA9C32F3FD24D565C5EDD6EB679E9DFBC2E340CE51A74DA28EA7E80ECF3231F0B2C52DE447F63D877B4B5B9AA628FBA7F1581E5DB816EDF4C5E636E6821C9C523B5DC935E230CD878918C4C832922090B677D25AD597582EE7723F965B3D956AACD52395AA30D48DC5EBAEE7F3821E0E456945D16BB56EA3290521298D41048F1C72E56A7DF69C53ADC51B9B442EB9C6371E9755C2CEDDD00A638265BDA81F6B691848ED5FBE194FD648AF9FD32857D358260B55D3EE15A3ED2DA2A868E0A3DB8F622E25715CBEFD78B6BC844FDDD7F28399769BADD5E1B88A63A9797B3D4D4D9566962238A7E15806940E654FD3A228262A4D86CD1071F7E4A978BB9EE66CD9B5897AEF612949A5B7AF668BAB924AFB6F5E4A056B753BEACC545630270F1ED5926CB0783D5D5A8755C46C47E25C0849DF69E64A791124386FA68D6D2C216F7A02B9F97C6F5BF83129D92441B2A624F0EA942BBDB7D937696FBB7DE0CE839BEBCD7D9AA2E6B4ACAC073AA569A2E554757272B0BC88867E16C7247CFA35C550796718634C66AB4ECDE5CBEBC5A422FEF6ABE2DDAB4A9692F929F5D28A74E7515A7442B60AFB4543CFEE0EB1ED7284874958D4B494A5ECC0FCDAD2D5E37903E54D1C463297FDFE6088D1F290A7F5F50DEADE7D6C4EF6E081246CC324A493052911314EF54241AD5626CA6369AFA7840AD11F3A0164C3A52C777046AC37B2F3CB59496784F037DE92EB9DCE56A7303DA5964CF5E8BC64EBECA767C5F60EEE044A94C98E22726A34F471BBCBA6CA1D191D38328FD737B12CD2E1108F95AFAEF5FEE7EAE55A7EEC8DED466B6BFD9DC5957FFEBBBFB6A78A693F336B551CB692EB6B886225652C4EEC4AD9873850294106CD7A4039885D5DD50A45EDA1BB8824BC9D9DC2DA4EDAF0B3EA9876F250F2CAC5E1E01DEB81C352C8FDA535C57181CA92BE8F8914F53D87924021655DE2AAA2E54C3E0888A6489A9AC882D48AC6CCC2C391B4D96B4CDC7117777353B31383D7170D838A81BFCD21CD8805ACC239F0906A18C0A2C43F7F35BBBC8A8B397C628ECE4FC24EDD17CE1259595FDD724A966C1AA0BB1AD756A1C0B9DB05BE74831886666923FD9433A443F3B9F610222E95912DB246A355999E4CDFAD4B9A91C8D8AB385F7FEC33EAEC91EDF4E9B1C6EAF13F7E746CA1AA60C92FB92942A75F397F7EBBBF4F530F1C3F4AE8487410700BCF889C4AD83645DE2613254CD5C1CA7AF89397CA73731D552B3C720AA55C2C6F4CE44C8665FEF26B724E13B104280956C481593C31A39536BCCDED5EAF634E17310B24D3901C37ED0769C17694F189F919C9B1D1239FB2FD2393C7E6321EC34940D36120E976F4E53FFFDA73DFFD6EA8299AE3BC5FF6E169E14F1F89AEAF9189B2A0A37223457EE4DA572F5CA97DF9F328E350B4119143F0C53D87931F7E9B192A1856655CD8BA3733EEC6C89D9EE797AFA8C3A07E6D8523059B1660CA98E093954A68524D4FFDE1D891E93175160B861585030BE4683488160AE31339FC0F5FFF92DFEE03E5EED57C2879443173F2B183691A2B0A8D3A3B224E2B5F799430AE712135DAE95B8B20A79C7F7C32DB5A09598853416727509266AE3130D5A93B8EFB5393CA6BAF9652B674AD4DE7C7916562C75A19F8B379BB3666CA144C2923391318CA3D92302150B9CD5EBD1E9D7AF28B693AA438A5276EBB59408FA061D01A54E3599AB45B62E8290766A4468F670CF436F603315E96A258ACAEC8451B199AE468195257547AF4FE535833CC09DD3B752A7DEE57FB2727D673165329574887A57348D22D131105C9AA20442844682AC708A79110696D66420ED3CD6B6B73531575BCF611F9F181F36442F5CAB8E4F9D9C52B44D3F0780D741D7DE2731C341E6268D016AA842C5D820A52B004D155A70842104EED3C707FD8DE511A0D05C4671A77BDE1F86C95C8A03F750E5A8750499691A272885C918924C2440BEAED34C85C55469A46A0FC8122650C91DDD0BE191D75F2F8E8B120784B9115BEDE440BFB94F16AD2EF4B3B3BACB92DE534EC5AC8D5714123B9294C541E4648518CD29879EFDDC1E58BCAEA46BFD98A23A64A19CA2201E651A8A480ACC7024346835FB0447392C58B73D6FACAD63876C8CC116298238BECA2F93820B013CA24BCB429A04A40AD397C081A06B55048DACD74BBCE6D1B392676F58E24CD1EBB03E1D1363CF01117453F8DBD6CE3FA9ABD30ABD8A4B1D52E710E4A027E842C4B481EA955B803260553A90C5110B52D6C178DF119B8F9092EDBBB40E2F2A117BDB344C74B8C2A5AC11DDD042100EEEF74F1BE396E693847924C754B357899F57A69BB250D7D746EB182E5E3B79D686FAE4FCC1B15EA0EBB1DDDB58C32BC06050670715829F47DAAC884D0B5D52DD6EEE18539682C6E06708B852449A956EC7FFA66FFF4190A755E1DA9DD6CD085B650CEBB4CA39286655393E331242B10F1D00661F0C2CC2444B75229CD6EAF745E39ABA9B2A1E95CC4BCBB1D71A656A7C5685728F6A901FA93B3C14E9B0C93F2F4342E543EE8F53ED6287ED8E2A5611875DBFAF17DDA91C3E04268B57892A05E3BB31C38A9AC8861A7E31EBC77CFBDB26D8B24CEEA0DE4D83C6F19EE317B7D43E53D355F4090F09870AFEF2D5F36661740B581F58594F8F566FFDBA7E7FEE0C19E22AB27EEB8B527DEB59010FD975E07FEA5076782A5AB68763E0B03ACEBA3880A7D60B370F586A0BA4465686B373783A3F7156E22D6A28004850C57085449435554CD528B35A19992AA1116CBEDC6E67B97322B3F395D6DAFACA3B3172754CA2E2DAA0F7E0A9C770B9E3D0B71CEB676F487EFA3D0ADCEEEF3EB75EBC0C1BDEE38E96C6BD5996075153906F421AC1348D624D1738065AF55859456C68A7B0755283832A585BC5075A1E9503425A2A1B1EAA49EFBF153672E88ACDAF38E552BA02C98258CDCA8C5FB644058968B5F7A6C745E58D4765CDB01AA84FB50EAC0CC51B38939E36030C6A3465FB9FF2E4503E3EDBE1085F1C5ABF1EB6FE9794B5025055A92FB582D011401B1050B0041231848601AA55339A3366EA23894409383A2B729F33C628E72FEE6A9C387C4F87E7C8D08E3FD8B75DB8A5BEA3FFB0CB25D3967C6F5B5402863D50988E8BDAF03350CFEED5B3B83DEECF1839263B64CA5FAF011B0DAE8876730528114859CEFF63D5A6F39771EA48C65698C654CCA2AE407C4EBCD80F6F6FDD08B1F9BBC803BD261979627B38D3568E2B39535D46FF323770205EF9A07344CE6FDF867D083E725D2896313E5F0645E8C9E408EA7605A185F8C3049A07A122BE7F073ABC9844532060D85EAE444E60BABC2A208AAC26F4DFB9B2F082CA0B170F9228F138912BEB89219A628952924FF6E00C5F54DF1E679CC982CAB83F3D71A5FB40E4D999074926E8E6CB46721204F49CA17DDDE9DFBBA2F5DA0AF2CB3AA4E0A441328631114B8B0EB9900E8A601D527031A915E30C08615BEFE02683FB6B10A1BF876C1A99534D065BB060C9F7D15AC15271059016C303CFDEBE17CC1AE948006E1EB02036E0C340D769258B4EFDE03E16CA9F1AF3FA8F491EFB1ED1797CA5F39CA91C8D2544F19513E84F15B2D94F45B224DD2561B4571C692CC30C4FC1C1C0B462D2C0AA2175F49CFBE26BB0EB54DD905393B984CD2DE7FFC027DED53B9A91A867A09CC4C3524C134478838E049A81772F6C347E2A7DE9112E64C4D27CB11A77D892A7192FC6E40600FD8956D5C875048A321672CCC17914564DDE07E38F8D1D3C1E60EB9FF640472E0A193E2EDF7D4A5351185B6247BDF7935FEEC426E5F8D56AB50AA1005C901164A41E0045B3B74CC166557EAFAA0A8945EB4716DC5DE3727671C6CFE9109DAAD571AF93C1AC6DB1B309683E0E5321653E302D44594B42F9FEBE57572E78350E05894C66F5E623061B073E6C179FEFAF95C24C26716DB77FBCAED82C95DCD3255C7301CC70F70A2E7D51AF50FF5E99B574086435CC2784D878948C632CE81D73F19D0C8FD42245E2BDA58664124640CB3065E2C6C0DBC8D4650884C2ECB63FB6635683882C8DB6AA8FB2B935FBC3FEB79AD1FFCAF7EDB210259FEF25BF2AFEB7C7ABEFCC8111064220CA1C1D70CA15B2A6B0F40356820D60C0D2C17CA32630C9EFA6194831208F97B2BA0DD11A40836AE054BD7A1CECB580101753D94B66939BF309B69BA5BB4A80E940C0D1F4C7F207BD9CAC565C3D40A4F7E416CECF44EBFAC7DFE946875D07FBFD8E8F7AB8FDF2DA082A55112A55ECF53214BC2B0547222D0551A828E1A666C19428C6669968DD8186AD1ADB3599644C1F973329647941185DD20C9E68E174BE3C8752D4B3755E035A812CA88FE400B30ECCE4CF19435571A9462EBC9C7F8F26678A65DFEE69FE1675FDAFADE73ECD874085DBE9B2FED3F4C10EE546A592F404C74A2D071A70874951CD0C6149A203011E8CC3D1FBDCFD6BBC88617DF05211B7B0191B0DF6A27E373CAF878AE3A6EEA24A7ABC030BBEC32629A11F3C16782606E6A944B904F43E81E0B96FB377FD2FEC98BDAC9DB5468D5D6E2C2ED55636965F8FDE7A59D5E38F045A59C96357D6A22DBB5460A83DA040051591E2962507523287BB601768521F5F057CF339E42A790461E1096C8E725DB2D837BF4DDFE10498C25710A732C01C10877A014809480EF42F8ABAE03BD546FBB91CD5772954A77F97A29A28D7FF9773C51D617A6E5074FC6A75F900C9AE85AAFDDC93BDA68242D81124E2881C126D40034B2D00753661811379FFA1EE7090C28A53064BE9718B6B0EC42DEB68D1C85411BD8032416381B8C01821AFE0F81082877E7F28843279741FD8724806F753636CB7FF1B8F78B574DD3CC9EF83C3A304D6C0BBFF086CFF186944C8D06D6A362A0101C45C910C645BB26824E6084087EA5191BBCFA7274F53C3314205FC8AD907169AC48CBE5A2E3A80A253281C2BB5BC6250ADD8E12073067D554E8244156C3D2A33481D0E2429640DE133637DBBEBAE43C70BB7AFB42F3F419757E4A820417D2204D59D10521010B514AC1104626FA5EA0400081A81B9564183DA771E3F597A3EF7F07176C182E132717EE7432AA2B1353DAF8148C9721C6C10A235120800A40DD136AE8436F98C0C9C09504920ED42CA48924012AA2424DE020B3F6CFFB3F7F91DE7D7CFC2FBFB479E6ACFBE843D2C05B393AB360D918F43183E9ECA85F051B5319853144D26E50031934AFBCE7FDE8A7307EE361286924E90EBC302133B3CAD4B4BE1B3ABB61360A18F02DFCDEBD83CCBCDB6F345928141D8849067A8736172A2A8086F9014CD61816D13D27F0E9E7E34FDF553A7EB479EE323D75073BFB2EFDEA13F0CEC8FD291BA588E031E30C3102032B78D05ABFB1F3ADFF849E3A19C64CA4692F4A25942854774CD57446F102F10ADFDFFDABCAFB6C35D2162384D4B1FCEE00621B88006C086A4FC00C78D48161D534869D5E6AE9FCF882F9BD67E44F9F94272BFE9871687E168D086C375BC1A85063818A614804337845FE3F260D403DC69D6AEE0000000049454E44AE42608289504E470D0A1A0A0000000D4948445200000020000000200802000000FC18EDA30000094D49444154789C8556D98F1C4719AFEAAABE7B7AEED9999DD9F51EE3F5BDB6E4238983812008E405C843C413126F088927245E78E1BFE02542444241E4801710478413872851EC3871BC8EE35DEFAEF7BEE69EBEBBAABB8A1A1F894D84F834331AB5AAEBF79DBFDF8753C620F83FD67BFF036F6D0D9F3F69571B56B6F8BF8E7100BE7A15069C03387ACE01A79D2EED0E8D23B38F9F13AFB1FD9E82544DD235D3FEE2210983348A14D344B2E2B60F9CB5BBA1D3B7664FD4669A4F0240C844100203826071957586C6DCCC03C80726FED9CF3D8BB2196F770B6339A5C45F5D726F7D92B883146991337462A227A9F9DC37D0B9B3EDF7AE56679A8FFB87BD9D4D4013094A389B954FCC046BBBD1FE9E5AAEF81BDB5057ADF15A92D0FDC5AB5C31E0DA7277A3C656EF2AB7D71057B0A2904E5FD2506D2C034D937F7C8DDEF8D86138A14496952F0128E030881000B4D545D3E346DE2294826EB7FFF7F7829B77AABFFE597F6F595ABCD247E528667989EA2E80AE9C2A3C321937805DCE49869126092C60B4DF55A0BEF2C62B875E78D1C8971F02F08E837A83E4A04765AC9573C98D4568665255C1F98C3235E92D2D875BB7C356EA1E2C4E9F3D2F1955B0F51177DDE16CC1D0A0DC4BB06131845327923882599B743CB533B8F7E7578FFDE4E708E1FB35B8B6181182CE1D092E5F17A548DFB96E9C3A164FD5F4F1312D6FD390EA4EE079BCE625527BB87763BDEE474EA3949BABB3776F62AC91CD9E343519B776F0E102E9F51137582C6553B87FED7AFD99A739E738DE3CF06E2D655A03791082ACA35D3C0715443B032632C678A050DCEAC55DCFA00C52896EED79CD9964CC620E85FB2E213D383DD15F584E784036971BFD82EF0D428BAB107997AF0C261B308CB072E94CF16BA7D285759E82FD95458281EB86D6DC345BDB04489A397F38DC23461CC35C312269B15C24BD0E9D28C2CF97B04863CEEEEB3275FB49C9C4248F0B9649486819F1C6013A75C159B96B55C6316FF7E1C04F5A7DAEA2E2AE839E9E47390B4F3638C8000413B79DF8A1DD1D48854A1CFABAA10CEB87E47607956C05CB34223B19B0B73928EAE6B8A9F500B7EB959EA6983B49766E46B26D4412ACCC35A8EFA8DF9907773693D9421806F1C26D5128595795D3CDF0B577C5941994038498E7FB9A9C5A7245CEC1EE5EAAA2CB2BEB379783DD568FB7767FF58B9F028FD0045A89034C8C38C8359B348E70B8BC0E1C07C9D87EEEA9DEC267E0EE963A33A14DD6BDB73E4AA4180C6394A448559392CDD744B2E4B24806945442999DAD5D386195ABE41F1F195F3F5D3E7B3C5C6FC57BAD97DF78FFBC6AFE0041244940D53092555E2E29338D68E0C46FBE9BD62B9517BF0D36F641CF41CBDE80445A2987902C9F39C3E274756B13BAA58C5D01F95C60DAF9FCD889B96383A966B659C1BAA2D856FBDEE65367CEB29D2DB550103D2A4188CB2FBD40291154E12EDE01DF3C6B6B0A58DB613D57F9E58FC9EF5F960C59D3B57E29533F7E04F8A4BABBBFBA70EFE4F78FC1D87572D97ABDA4A9489B1DE3860265C5C8C88695BD78A1AE2547A1618C684600885F59566914B0C1C09EAE603702510A3445CEE9241CA08A9D16EC64EEA8566D28DFABF56F7E56F53D9EB35BDB44F86BE67350D1B9AC3243E348F89B9426CA9D8DADC2E1A6A4695C509C248D864D98AC1999F9F9E8D39B48D5A5C34D5112BE7697291C6675A99157EA938001A428C5977E48DEBE1C76BA82E2359048BA095483631908F2E129340B5A1CC86043AE4C88EC8BDBEF4FF2239324997FB2CAF2B672EC38B6CCA0DD629689C6F2AE8EC68FCE03C17907077667D805EAEEC666B184DD41BF86219785E7083026FA8C1BF6D04DB26375BD36F9185D3F32A469606A820E06A669B0C8678E034A4598D351B6A49A5916468226A12A574E9F8CB6EFD88544D080BFBD6A1C9A83BA0C58C25316C7A4BFD33B3A3962FB2F187B04C062C2A8A874C80F8F9BE5D3A2BFD2384A877D6E591051AE9546B5324DE6EAA05AC9D42A190D64E20D5C2C495889375692E2B866DBCC75DDD7DF9A6836E1A9534FE881F8BAD73ED58FCC408941D390F30511AF9039D26EB35AD6DB1D1827A746AA03A15CAD3E680C1543D5ACC04A8323AC66C3BD3B4BADDD5EF1A03F11473C72B1F550F5BE04B02F5DB82F835C2D96C5FBA427D8D94F471A0A636655728591EA25B4F7BB3FCABE2797F3CC4EA593D30C2226A2578D3495CDB65B9611979954D7A9E7A9F9FC13000F237A94379E26D1E737A195A12B6B7CFE2945D5C4C3F8D35BC95BFFF64B591D4F1B276785268B637CA4B83C0D2275AFCBCB464222DD66A9A6B1349590D0B0278BFCC0589AB084C4EB2BB4338A03D7C6C4A489A445FF7C2709A37433EE9CAB4D0A1E179650B12F7024D58E1E3AB8B7EDBC7D436D980A21A9682D3730729907FEFE3700757AF1DE464A2226987DBC912D15384BDDBF5DE6071D80B04213FADA874315668ECF8E360BCD12082AA253DF3DD35DDB4677DAFE95AE36EB5326995F6DD387008113DE5BA2A11014299DA84A080FDF7E27A6843F73964DEC6A4285B6F6E2D7AEF72EB6B2CF9E2038A3960B2021FDDD016CD6A435476E47838D1DD418CFA70CA327074D58CAD26067890CFB094B69B5B2DA1AB46F2D8906D51A1504B976BC1EAC6E81826D6C1F24FF5ADDA54AE947DF8AC350CD647387738EEF016B93F8616028064BBD28B40D6344768F0310AFEF2F2CA49ECF146D0565D9CC89B0982F152D4534A6904FDF078D31636E325EDCE4D53163E7C0FBEB0785E7CFF437D7C594522EC241A460215516198E6259531445169C33EA4F2EBA53D4C4BD713D717C10931E05E6C5D346AD96B5B411A3880FE732CE2454A3098BA6C68DA93A58B887FBC3DB6F7E98BF74317B778BACEFC67E2437C6792A065EF2E24053552CC86E546B7139E751B7E37F7C950711F5BD647C3A53AB36AA1584A4244D82C8A749224992A2A929E748911392F8F5825DCA14AE0E9DDFFE49BB7486CC3795ADF63E8D6C5D839C8571E4C82116ABCB838D9590F8E00FAF90C84F63A199144D4ED64A2553332441C1A271791AFA81AC2A8245F068BE6022223E54773AFDE2F317D80732393E4B2529E0209E1C13AD2B6BAAC2486FE8280F76A3200EB75FFE0D3FD84A4D1C8BEB2AD54CF388A1E95812214A8225B0AC2255893C1F1BBA8491085812CB3056A362CEB975D79C3F1AED75420EFAB363E3E592D845444A244168693CF47D2C1CDC78FD55B2BD19C72E1DD240EC83F367D54CE6FE067D7FF1BEBF182B9A16F8411284224BA3294508622CC992D79C90FE7245AF96FB966ECA3A6A1E828C329147CEBD58EC52D17F002CFAE50439BB0EB50000000049454E44AE42608289504E470D0A1A0A0000000D49484452000000180000001808020000006F15AAAF0000059749444154789C6D94CB6F1CB71DC7391C3EE6B5B3B33BFBD04AAB97F57064AB81E5183250240E0AF7D01E52036DD1F8D09CD2FFA6E8B1971E726C51B4C82185D536418BB8ADEDD6B62C3F14438E22CB9165AD1EFB989DF77066C88E6C21098210204190C407E48FDFEF17E59C4BE0BBDBE147D7528394CEBD6E569BDFDACA5296A599A2695FAD202004908E51C37FFD979E9A54DAADAFF694D6A852350DAB5ECCE3A3FD60678BC58C539AF41C69C44ABC7066F91226E40414F58E449CE072198CD5591C62C6A2CEA1DA1E912429A449DEDFF30F9F66BBBB70EDB144F5C8F5B92A6153CBB78CD8B4BCA9D3D5F6F809281E0C609C65CF76E1FC24F0E3A8D319FCF1E3AE6DA03726825B1F0DC8886D19F4D9903B3CAEC7328CCDF208874068123CDCDBFECB9FF04F7F516AB68F4162631750D97BB6471C0F7EBE4BCECCE2A9165248787F7DB09BD8E005189F859BCF7D132958228208ACB281875A5A003C1AE7FB7F5DD1DF7B1FCA328AAEAF092401AAE53994AB56124470E0439588ED1DF9D0D36AF5FDF52F78A326B74DF9EE66DA7359461277C82D4FDA015085683F3AB871D39C9F43EA3B6F8A8D1DB6D53958BDCF282267E7C0CE0BBD592152AA460CAA25127B0C707CE420C6E4BA35105948243DB64B160F108E5F7491C8926E0F89837E6E50B4D8AE3F74F9F7E661942B93335C67C327FD729884798644DE6B56C7BDBEDCB2EE7DF9FC41C7EFABF2BBE71728D2FA81633AD05E7A830721E290031319E7CF0FA71BD2DAE772B5325C7DA28D22B0D70390E414312499254CB8C6D3CC1929CFE0E946386C5C5A4A370FEEACAFBD26E8A42CCB8D3A22950A18B57249F2FEFC69F9CA0F4C55238FB6E307F769D5C41363E4EC62FFDA4AD63B6A4E4C87942C2D9F31ECB630905A33E2AE6757C620E2B890A52421EBF2F7F33C731F3FB6DFFF89EAC7E9DDCFE8BB97A25FDFA433A782C5B9F60F2FFBAB0FB68F6269B9D6156C7EAA0DA926744D602CEB68F9E219C328158A7BA96C20C932D64647E3478F44BDA15CFD51B6764B1AAB80F1325E584454AD5CFDB9F3F1DF1DD733CB2A2E5784A27345153CA57A297AD157C6175F79A300BDD4A566807B4FC1051D2FD8F1FE9E34D18A6A466B6621EDF774C7A71C077E4FA6904321110C04E742CE2A3554F6B5F6A9570E3B014984486F9EC353533CF2799A828A81AC3AA65A16C4BC5E99FFE5CFBEB879ADD6D4D2FD67725300DD941216DF7D529E3FFDEA5D2F952D8477FB3E996D83561DD7EDCC1DB07E5FB41426578104906DCBA512C0C8B2EBC6F4B4206A7CD4D9585D6FEC75EB6E402F2C7FEDFE0259BAB854BC53A9025EA4C3E13EC738DAF78CB7E68B8B46376E07FFBC8E269AFA5253C88443082B0DF6F0535327BC260B597C23468AE3C7FD78C80237DDDECA87C3D43054DDE0491CFEE1C3B03F840B765553449E72286779A647797CD841CBA319E669C2303D4E92931A9DC4551C84DB1B69FF109C394B542558F9070F63E8F8D12777D2B1920C31D00016D9ECD5B79CDF7CE85DDF036F27B99194BF05E279163E5D676E3FAE5892650CFE773B9639BA7299FFE78EDE75FABF5DC157CEA3C9696AE92C16F8DC2CBCB5E56E76F0EB962944519FAF41B173E06DAC7328EDEA95C141529DAA9767EA99EFEAEFFD986CEEA01B9FB14F9E925F4D4B8203983124B492165399275190A8BAA2A057E52A2AE43D58CD07AE1B3270F1D2447BCCD03194A1306996A4C1EC142DECF278C7FBDB4367A15D0328EB845CA1D0D2B9607E14518C8B2802052BDC7DEEDFBB9339C3C46E8ECC4C37EC2A17DC0DDC5C00A2509912C172772ED32D555EF937BBF01A6BD92EEB018A64C0FB9E470939BE5130E81EFDFE0396F86192E0D30B23764D5514CE799AA7FDEE11561519214E24D46A048494DF793B0E8334628E6D343505511C3B616FE8A262F5CB0F7E171FECB2E22BAD4A7366AED00A942080C71E8494067E405505222453CC4AEA702B34FBBE5B2D6953ED4234221759CE7BBEFF7F3719C9A15AD746DD0000000049454E44AE42608289504E470D0A1A0A0000000D4948445200000010000000100803000000282D0F530000029A504C5445FDFEFEFEFEFEFAEFF0E7ADB1F0E6E3FCFCFBFAF8F8EDDFDBF8F6F5F7EFEDF9F2F1EDCACEFBF7F6F8EFF0FDFDFDECDDD7EAD3CAE9B9B1E28C86D8817DD5897FDCB7ADE2CFCCEDD1D1ECBBC0F0D4D3F1CFD3DE8797E0C1BACE8C76D7A79AE17278D97B76E17B73E48B83E39987CF9187F0E0DCE37D92E48D9FE694A3EBA8B4EAA3AFE09393D06965D4777BD8797EE07A78E16169D76F75D88C7BCF7B7EDF9397F6EEEEEAA9B6E57C94D67183D4939FD77D8EE08881DA6365D8767CCC8284E46B6ED86C6FBB6465D58888D38487DD8E94E9D0D0E9B1B6EECFCEE2A4A8E38E9BE694A1DC5959E26568CF7073D49B96E57D789F6965835053DBBCAFBD8D87D59899FBFBFAF2D3D7F1E4E1E096A3F4BDC5ED808AE3605EE7A09BD57F81CC9892DC9C92E2C5B5E6D3C6EBE1CCC7A19DDDB9B7F6E9E7F0C6C5F5CFD3F09E95E68977EADAD4EFD1D2D2A19ED3AD9EF3E3D1F1EFE0F0EBD7E0BCB0F6E6E2FEFEFDFDFAFAEF9EA9EC988CE2AB8FFAF5F3F7D2D3D5A3A2D7B397F1E4CEF1F3E4EDEFE0E3CEC7FAEDEFF7ECECF4E4E3FBF5F2E89487E1B8A2FBF0F0EEE3DFF1D6BCF1DFC8DACCBAE19F96F3CFCBF4DAD6E48A7EE3C5BFE87883EBADA5F4E3CEF0EDDBCD9D97E78A80F3DDCBFCF9F7EBB5AADC776BEBE0DBF1A6ACE14A5CE09588F1DAC2EEE7D4E4C8B4DC5C63EBCEC3F6F5F6F5E9E2DF9481CB8A7CD3BAB7D6B7B7DC9E9FDE646FDE817AE9D1B9EAD3BDE07B7DDEA1A9E8EFF0E5B5A8D48777B7B2B0C9D6D1D2DFD6CED4CBD1C7BFD89499DA9991DCB5A9DD787DDAB3B6DCE6E3F7F9F9F2DCD9D88373C98A7DDFE6E2EAF0EBD8E1D7D6E0D6D4E0D7CED0C9D5AAAAD28B8DD3878CD0C3C1D8E4DDE1EAEAF0E4E2D17C71C77362CDB8ADEFF2EFF3F6F4DEE9E1CCD6CDD2DFD4D2E1D7CAC9C2D69C9CC19294D7DFD9DBE8E0CBD9D9619A22140000011A49444154789C6360606462646464666164656363E7606464E0E4E2E6E1E5E317101412161115030A884B484A49CBC8CAC92B282A29ABA83232A8A96B686A69EBE8EAE91B181A199B983298995B585A59DBD8DAD93B383A39BBB832B8B97B787A79FBF8FAF907040605878432848547444645C7C4C6C527242625A7303230A6A6A567646665E7E4E6E51714161533309694F2949557545655D7D4D6D5F3313234343635B7B4F2B5B577747675F700DD0184BD7DFD6D13264E9A3C65EA34A00A46C6E93366CE9A3D67EEBCF90B162E5A0C1258B274D9F2152B57AD5EB376DDFA0D0C40CF6DDCB479CBD66DDB77ECDCB57BCFDE7D0C0CFB0F1C3C74F8C8D163C74F9C3C75FACC598673E72F5CBC74F9CAD56BD76FDCBC75FBCE5D00F7EE60AE796F59840000000049454E44AE426082000000000A00000047656E7368696E426F7400000000", + "Height": 540, + "Left": 50, + "Name": "", + "Tag": "", + "Top": 50, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102178192, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 960 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_角色", + "Tag": "", + "Top": 248, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102185424, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240004000000BDC7C9AB", + "Height": 32, + "Left": 8, + "Name": "标签_角色", + "Tag": "", + "Top": 248, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125834592, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240008000000C9CFC6DAC9EED4A8", + "Height": 32, + "Left": 8, + "Name": "标签_上期深渊", + "Tag": "", + "Top": 208, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125834720, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_上期深渊", + "Tag": "", + "Top": 208, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102185712, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240008000000B1BEC6DAC9EED4A8", + "Height": 32, + "Left": 8, + "Name": "标签_本期深渊", + "Tag": "", + "Top": 168, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125834848, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_本期深渊", + "Tag": "", + "Top": 168, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102186000, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240006000000C9BEB0F3B6A8", + "Height": 32, + "Left": 560, + "Name": "标签_删绑定", + "Tag": "", + "Top": 128, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125834976, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 56 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 624, + "Name": "编辑框_删绑定", + "Tag": "", + "Top": 128, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102186432, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240006000000B6C1B0F3B6A8", + "Height": 32, + "Left": 560, + "Name": "标签_读绑定", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835104, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 56 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 624, + "Name": "编辑框_读绑定", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102186720, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_签到", + "Tag": "", + "Top": 128, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102178960, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240004000000C7A9B5BD", + "Height": 32, + "Left": 8, + "Name": "标签_签到", + "Tag": "", + "Top": 128, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835376, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240004000000CAD6D4FD", + "Height": 32, + "Left": 8, + "Name": "标签_手札", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835504, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_手札", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102179248, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240008000000CAFDBEDDD7DCC0C0", + "Height": 32, + "Left": 8, + "Name": "标签_数据总览", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835632, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_数据总览", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102179536, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240004000000B2CBB5A5", + "Height": 32, + "Left": 560, + "Name": "标签_菜单", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835760, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 56 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 624, + "Name": "编辑框_菜单", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102180112, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_菜单路径", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102180400, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 824 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240008000000B2CBB5A5C2B7BEB6", + "Height": 32, + "Left": 8, + "Name": "标签_菜单路径", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125835888, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240004000000B0F3B6A8", + "Height": 32, + "Left": 560, + "Name": "标签_绑定", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125836016, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 56 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 624, + "Name": "编辑框_绑定", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102180688, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 96, + "Name": "编辑框_实时便笺", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102180976, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E240008000000CAB5CAB1B1E3BCE3", + "Height": 32, + "Left": 8, + "Name": "标签_实时便笺", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125836144, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 80 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 88, + "Name": "编辑框_HTTP", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102181264, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000F410120020000000740E24000800000048545450B5D8D6B7", + "Height": 32, + "Left": 8, + "Name": "标签_HTTP地址", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125836272, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 72 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": true, + "ExtensionData": "0200000001000000000000000100000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000760F1E0020000000AE092900000000000000000004000000CBA2D0C200000000000000FF00000000", + "Height": 32, + "Left": 840, + "Name": "按钮_群刷新", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130578392, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 71 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": true, + "ExtensionData": "0200000001000000000000000100000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000760F1E0020000000AE092900000000000000000002000000BFAA00000000000000FF00000000", + "Height": 32, + "Left": 840, + "Name": "按钮_群开", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130577840, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 71 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": true, + "ExtensionData": "0200000001000000000000000100000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000760F1E0020000000AE092900000000000000000002000000B9D800000000000000FF00000000", + "Height": 32, + "Left": 840, + "Name": "按钮_群关", + "Tag": "", + "Top": 88, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130577288, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 71 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级列表框", + "Disable": false, + "ExtensionData": "010000000500000000000000FFFFFF00FFFFFF00030000000000000001000000010000000000000000000000010000000000000000000000000000000100000001000000010000000000000000000000000000000100000001000000FFFFFFFF010000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000B60D020020000000CE0D010000000000000000003600000000FFFFFFFF00000000DC000000C8BAC3FB0000FFFFFFFF000000006E000000C8BABAC50000FFFFFFFF0000000032000000D7B4CCAC000000000000000000", + "Height": 472, + "Left": 408, + "Name": "超级列表框_群列表", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125836784, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 416 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 88, + "Name": "编辑框_Token", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102181696, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000F410120020000000740E240005000000546F6B656E", + "Height": 32, + "Left": 8, + "Name": "标签_Token", + "Tag": "", + "Top": 48, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125837120, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 48 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "透明标签", + "Disable": false, + "ExtensionData": "0100000000000000000000000100000001000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE52053430053656D69626F6C6400000000740E2400060000005753B5D8D6B7", + "Height": 32, + "Left": 8, + "Name": "标签_WS地址", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 125829568, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 56 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000000000000000000000000000000000002A000000000000000000000000006400000000000000000000003C000000EDFFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300756D0000AA10110020000000800E0D00000000000000000000000000", + "Height": 32, + "Left": 88, + "Name": "编辑框_WS", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102181984, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 296 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": false, + "ExtensionData": "0200000001000000000000000000000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020102B8FCC9B4BADACCE52055492053430000000000002000000036123200B85C4006000000000000000004000000B6CFBFAA00000000000000FF00000000", + "Height": 32, + "Left": 848, + "Name": "按钮_断开", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130576736, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 64 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "图片框", + "Disable": true, + "ExtensionData": "0200000005000000FF0000000000000001000000000000000000000000000000", + "Height": 32, + "Left": 696, + "Name": "图片框_状态", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102182272, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 32 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000010000000200000000000000010000002A000000000000000000000000006400000000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300000000002000000036123200B85C4006000000000000000000000000", + "Height": 416, + "Left": 8, + "Name": "编辑框_Debug", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102182624, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 938 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": false, + "ExtensionData": "0200000001000000000000000000000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020102B8FCC9B4BADACCE52055492053430000000000002000000036123200B85C4006000000000000000005000000446562756700000000000000FF00000000", + "Height": 32, + "Left": 445, + "Name": "按钮_Debug", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130576184, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 64 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "超级按钮", + "Disable": false, + "ExtensionData": "0200000001000000000000000000000000000000000000000100000000000000000000FF000000FF00000000000000000000000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF0000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020102B8FCC9B4BADACCE52055492053430000000000002000000036123200B85C4006000000000000000004000000C1ACBDD300000000000000FF00000000", + "Height": 32, + "Left": 760, + "Name": "按钮_连接", + "Tag": "", + "Top": 440, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130569952, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 64 + }, + { + "Children": [], + "Comment": "", + "Cursor": "00000000", + "DataType": "编辑框", + "Disable": false, + "ExtensionData": "020000000500000000000000FFFFFF000100000000000000010000000200000000000000010000002A000000000000000000000000006400000000000000000000003C000000F0FFFFFF000000000000000000000000900100000000008603020131B5C8BEE0B8FCC9B4BADACCE520534300000000002000000036123200B85C4006000000000000000000000000", + "Height": 416, + "Left": 8, + "Name": "编辑框_日志", + "Tag": "", + "Top": 8, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 102175008, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 938 + }, + { + "Children": [ + 36, + 37, + 40, + 41, + 0, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 0, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 0, + 38, + 39 + ], + "Comment": "", + "Cursor": "00000000", + "DataType": "高级选择夹", + "Disable": false, + "ExtensionData": "0700000001000000000000000000000000000000F0FFFFFF000000000000000000000000900100000000008603020102B8FCC9B4BADACCE52055492053430053656D69626F6C6400656E7373683B633A99010000030000000400000004000000D6F7D2B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000100000001000000000000000000000000000000000000000000000004000000C9E8D6C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000100000001000000000000000000000000000000000000000000000004000000D6B8C1EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000001000000010000000000000000000000000000000000000000000000050000004465627567FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000001000000010000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000FF508000FF50800000000000FFFFFF00FF508000FFFFFF0000000000000000000000000000000000000000000000000000000000ECECEC00ECECEC00ECECEC0000000000000000000000000001000000", + "Height": 510, + "Left": 0, + "Name": "高级选择夹1", + "Tag": "", + "Top": 0, + "UnknownBeforeEvents": 0, + "UnknownBeforeExtensionData": "0000000000000000000000000000000000000000", + "UnknownBeforeLeft": 130635488, + "UnknownBeforeName": "0000000000000000000000000000000000000000", + "UnknownBeforeParent": 0, + "UnknownBeforeVisible": 0, + "Visible": true, + "Width": 954 + } + ], + "Id": 1375797249, + "Menus": [], + "Name": "_启动窗口", + "UnknownAfterId": 41198560, + "UnknownBeforeClass": 6743488 +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" "b/GenshinBot.\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" new file mode 100644 index 0000000..2ea62cc --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273\345\236\213.e.txt" @@ -0,0 +1,24 @@ +.版本 2 + +.数据类型 精易_坐标 + .成员 横, 整数型, , , 横X + .成员 纵, 整数型, , , 纵Y + +.数据类型 MSG + .成员 hwnd, 整数型 + .成员 message, 整数型 + .成员 wParam, 整数型 + .成员 lParam, 整数型 + .成员 time, 整数型 + .成员 pt, 精易_坐标 + +.数据类型 精易_时间, , , SYSTEMTIME + .成员 年, 短整数型, , , wYear + .成员 月, 短整数型, , , wMonth + .成员 星期, 短整数型 + .成员 日, 短整数型, , , wDay + .成员 时, 短整数型, , , wHour + .成员 分, 短整数型, , , wMinute + .成员 秒, 短整数型, , , wSecond + .成员 毫, 短整数型, , , wMilliseconds + diff --git "a/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/monthinfo.txt" "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/monthinfo.txt" new file mode 100644 index 0000000..eeae0bc --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/monthinfo.txt" @@ -0,0 +1 @@ +{"uid":100190701,"region":"cn_gf01","account_id":4601973,"nickname":"MOLE","date":"2021-10-18","month":10,"optional_month":[8,9,10],"data_month":10,"data_last_month":9,"day_data":{"current_primogems":70,"current_mora":43226,"last_primogems":120,"last_mora":122939},"month_data":{"current_primogems":5691,"current_mora":7632139,"last_primogems":7884,"last_mora":8378337,"current_primogems_level":3,"primogems_rate":-27,"mora_rate":-8,"group_by":[{"action_id":5,"action":"ʼ","num":2220,"percent":40},{"action_id":1,"action":"ðս","num":1413,"percent":25},{"action_id":3,"action":"ÿջԾ","num":1000,"percent":18},{"action_id":6,"action":"","num":440,"percent":7},{"action_id":4,"action":"","num":300,"percent":5},{"action_id":2,"action":"","num":230,"percent":4},{"action_id":0,"action":"","num":88,"percent":1}]},"lantern":false} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/realtime.txt" "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/realtime.txt" new file mode 100644 index 0000000..293593e --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/realtime.txt" @@ -0,0 +1 @@ +{"current_resin":100,"total_task_num":4,"remain_resin_discount_num":0,"expeditions":[{"avatar_side_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Ambor.png","status":"Ongoing","remained_time":"32907"},{"avatar_side_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Chongyun.png","status":"Finished","remained_time":"0"},{"avatar_side_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Bennett.png","status":"Finished","remained_time":"0"},{"avatar_side_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Fischl.png","status":"Finished","remained_time":"0"},{"avatar_side_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Keqing.png","status":"Finished","remained_time":"0"}],"max_resin":160,"resin_recovery_time":"28520","is_extra_task_reward_received":true,"max_expedition_num":5,"finished_task_num":4,"current_expedition_num":5,"resin_discount_num_limit":3} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/spiralAbyss.txt" "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/spiralAbyss.txt" new file mode 100644 index 0000000..ebc9350 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/spiralAbyss.txt" @@ -0,0 +1 @@ +{"schedule_id":32,"max_floor":"12-3","total_battle_times":14,"start_time":"1634328000","defeat_rank":[{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Yoimiya.png","value":46,"rarity":5},{"avatar_id":10000031,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Fischl.png","value":23,"rarity":4},{"avatar_id":10000023,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Xiangling.png","value":21,"rarity":4},{"avatar_id":10000054,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Kokomi.png","value":15,"rarity":5},{"avatar_id":10000022,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Venti.png","value":14,"rarity":5},{"avatar_id":10000035,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Qiqi.png","value":9,"rarity":5},{"avatar_id":10000043,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Sucrose.png","value":5,"rarity":4},{"avatar_id":10000036,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Chongyun.png","value":4,"rarity":4},{"avatar_id":10000020,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Razor.png","value":3,"rarity":4},{"avatar_id":10000030,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Zhongli.png","value":3,"rarity":5}],"end_time":"1635710399","total_win_times":12,"reveal_rank":[{"avatar_id":10000022,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","value":12,"rarity":5},{"avatar_id":10000054,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","value":12,"rarity":5},{"avatar_id":10000030,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","value":12,"rarity":5},{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","value":12,"rarity":5},{"avatar_id":10000035,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","value":12,"rarity":5},{"avatar_id":10000023,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","value":12,"rarity":4},{"avatar_id":10000031,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","value":12,"rarity":4},{"avatar_id":10000043,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","value":6,"rarity":4},{"avatar_id":10000020,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Razor.png","value":3,"rarity":4},{"avatar_id":10000036,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Chongyun.png","value":3,"rarity":4}],"damage_rank":[{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Yoimiya.png","value":53091,"rarity":5}],"take_damage_rank":[{"avatar_id":10000035,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Qiqi.png","value":60571,"rarity":5},{"avatar_id":10000022,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Venti.png","value":56697,"rarity":5},{"avatar_id":10000030,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Zhongli.png","value":44240,"rarity":5},{"avatar_id":10000054,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Kokomi.png","value":37912,"rarity":5},{"avatar_id":10000031,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Fischl.png","value":37073,"rarity":4},{"avatar_id":10000023,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Xiangling.png","value":34319,"rarity":4},{"avatar_id":10000020,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Razor.png","value":17970,"rarity":4},{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Yoimiya.png","value":17006,"rarity":5},{"avatar_id":10000036,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Chongyun.png","value":16885,"rarity":4},{"avatar_id":10000043,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Sucrose.png","value":11205,"rarity":4}],"normal_skill_rank":[{"avatar_id":10000022,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Venti.png","value":69,"rarity":5},{"avatar_id":10000030,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Zhongli.png","value":61,"rarity":5},{"avatar_id":10000023,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Xiangling.png","value":61,"rarity":4},{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Yoimiya.png","value":54,"rarity":5},{"avatar_id":10000054,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Kokomi.png","value":53,"rarity":5},{"avatar_id":10000043,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Sucrose.png","value":50,"rarity":4},{"avatar_id":10000035,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Qiqi.png","value":35,"rarity":5},{"avatar_id":10000031,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Fischl.png","value":32,"rarity":4},{"avatar_id":10000020,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Razor.png","value":14,"rarity":4},{"avatar_id":10000036,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Chongyun.png","value":9,"rarity":4}],"energy_skill_rank":[{"avatar_id":10000022,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Venti.png","value":22,"rarity":5},{"avatar_id":10000049,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Yoimiya.png","value":20,"rarity":5},{"avatar_id":10000054,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Kokomi.png","value":19,"rarity":5},{"avatar_id":10000030,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Zhongli.png","value":19,"rarity":5},{"avatar_id":10000031,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Fischl.png","value":16,"rarity":4},{"avatar_id":10000023,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Xiangling.png","value":15,"rarity":4},{"avatar_id":10000043,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Sucrose.png","value":12,"rarity":4},{"avatar_id":10000035,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Qiqi.png","value":6,"rarity":5},{"avatar_id":10000036,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Chongyun.png","value":5,"rarity":4},{"avatar_id":10000020,"avatar_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_side_icon/UI_AvatarIcon_Side_Razor.png","value":4,"rarity":4}],"floors":[{"index":9,"icon":"","is_unlock":true,"max_star":9,"levels":[{"index":1,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613326","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634613398","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]},{"index":2,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613473","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634613518","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]},{"index":3,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613580","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634613622","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]}],"settle_time":"0","star":9},{"index":10,"icon":"","is_unlock":true,"max_star":9,"levels":[{"index":1,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613769","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634613838","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000036,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Chongyun.png","level":90,"rarity":4},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]},{"index":2,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613901","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634613947","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000036,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Chongyun.png","level":90,"rarity":4},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]},{"index":3,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634613991","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634614057","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000036,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Chongyun.png","level":90,"rarity":4},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]}],"settle_time":"0","star":9},{"index":11,"icon":"","is_unlock":true,"max_star":9,"levels":[{"index":1,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634614436","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634614568","avatars":[{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000020,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Razor.png","level":90,"rarity":4},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]},{"index":2,"star":3,"max_star":3,"battles":[{"index":1,"timestamp":"1634614680","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634614774","avatars":[{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000020,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Razor.png","level":90,"rarity":4},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]},{"index":3,"star":2,"max_star":3,"battles":[{"index":1,"timestamp":"1634614844","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634614997","avatars":[{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000020,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Razor.png","level":90,"rarity":4},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]}]}],"settle_time":"0","star":8},{"index":12,"icon":"","is_unlock":true,"max_star":9,"levels":[{"index":1,"star":2,"max_star":3,"battles":[{"index":1,"timestamp":"1634615193","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634615338","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]},{"index":2,"star":2,"max_star":3,"battles":[{"index":1,"timestamp":"1634615472","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634615629","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]},{"index":3,"star":1,"max_star":3,"battles":[{"index":1,"timestamp":"1634615897","avatars":[{"id":10000030,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","level":90,"rarity":5},{"id":10000043,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","level":90,"rarity":4},{"id":10000049,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","level":90,"rarity":5},{"id":10000054,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","level":90,"rarity":5}]},{"index":2,"timestamp":"1634616115","avatars":[{"id":10000023,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","level":90,"rarity":4},{"id":10000031,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","level":90,"rarity":4},{"id":10000022,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","level":90,"rarity":5},{"id":10000035,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","level":90,"rarity":5}]}]}],"settle_time":"0","star":5}],"total_star":31,"is_unlock":true} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/userstat.txt" "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/userstat.txt" new file mode 100644 index 0000000..00fd21d --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\350\265\204\346\272\220/userstat.txt" @@ -0,0 +1 @@ +{"role":null,"city_explorations":[],"avatars":[{"id":10000022,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Venti.png","rarity":5,"actived_constellation_num":0,"name":"µ","element":"Anemo","fetter":10,"level":90},{"id":10000030,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Zhongli.png","rarity":5,"actived_constellation_num":0,"name":"","element":"Geo","fetter":10,"level":90},{"id":10000035,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qiqi.png","rarity":5,"actived_constellation_num":2,"name":"","element":"Cryo","fetter":10,"level":90},{"id":10000049,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Yoimiya.png","rarity":5,"actived_constellation_num":0,"name":"","element":"Pyro","fetter":10,"level":90},{"id":10000020,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Razor.png","rarity":4,"actived_constellation_num":2,"name":"","element":"Electro","fetter":10,"level":90},{"id":10000021,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Ambor.png","rarity":4,"actived_constellation_num":4,"name":"","element":"Pyro","fetter":10,"level":90},{"id":10000023,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xiangling.png","rarity":4,"actived_constellation_num":6,"name":"","element":"Pyro","fetter":10,"level":90},{"id":10000031,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Fischl.png","rarity":4,"actived_constellation_num":6,"name":"л","element":"Electro","fetter":10,"level":90},{"id":10000036,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Chongyun.png","rarity":4,"actived_constellation_num":1,"name":"","element":"Cryo","fetter":10,"level":90},{"id":10000042,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Keqing.png","rarity":5,"actived_constellation_num":1,"name":"","element":"Electro","fetter":6,"level":90},{"id":10000054,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kokomi.png","rarity":5,"actived_constellation_num":0,"name":"ɺĺ","element":"Hydro","fetter":6,"level":90},{"id":10000043,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sucrose.png","rarity":4,"actived_constellation_num":6,"name":"ɰ","element":"Anemo","fetter":5,"level":90},{"id":10000039,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Diona.png","rarity":4,"actived_constellation_num":2,"name":"ϰ","element":"Cryo","fetter":3,"level":90},{"id":10000007,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_PlayerGirl.png","rarity":5,"actived_constellation_num":6,"name":"","element":"Electro","fetter":0,"level":90},{"id":10000014,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Barbara.png","rarity":4,"actived_constellation_num":6,"name":"Ű","element":"Hydro","fetter":10,"level":70},{"id":10000027,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Ningguang.png","rarity":4,"actived_constellation_num":2,"name":"","element":"Geo","fetter":3,"level":70},{"id":10000053,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Sayu.png","rarity":4,"actived_constellation_num":1,"name":"","element":"Anemo","fetter":1,"level":70},{"id":10000015,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Kaeya.png","rarity":4,"actived_constellation_num":2,"name":"","element":"Cryo","fetter":5,"level":60},{"id":10000034,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Noel.png","rarity":4,"actived_constellation_num":3,"name":"ŵ","element":"Geo","fetter":2,"level":60},{"id":10000006,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Lisa.png","rarity":4,"actived_constellation_num":0,"name":"ɯ","element":"Electro","fetter":5,"level":50},{"id":10000024,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Beidou.png","rarity":4,"actived_constellation_num":6,"name":"","element":"Electro","fetter":5,"level":50},{"id":10000044,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xinyan.png","rarity":4,"actived_constellation_num":3,"name":"","element":"Pyro","fetter":5,"level":50},{"id":10000032,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Bennett.png","rarity":4,"actived_constellation_num":4,"name":"","element":"Pyro","fetter":4,"level":50},{"id":10000025,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Xingqiu.png","rarity":4,"actived_constellation_num":4,"name":"","element":"Hydro","fetter":3,"level":50},{"id":10000003,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Qin.png","rarity":5,"actived_constellation_num":0,"name":"","element":"Anemo","fetter":1,"level":50},{"id":10000045,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Rosaria.png","rarity":4,"actived_constellation_num":3,"name":"ɯ","element":"Cryo","fetter":1,"level":50},{"id":10000062,"image":"https://upload-bbs.mihoyo.com/game_record/genshin/character_icon/UI_AvatarIcon_Aloy.png","rarity":105,"actived_constellation_num":0,"name":"","element":"Cryo","fetter":2,"level":40}],"stats":{"active_day_number":365,"geoculus_number":131,"achievement_number":453,"win_rate":0,"anemoculus_number":66,"avatar_number":27,"way_point_number":128,"domain_number":30,"spiral_abyss":"8-3","precious_chest_number":276,"luxurious_chest_number":112,"exquisite_chest_number":1029,"common_chest_number":1148,"electroculus_number":181,"magic_chest_number":43},"world_explorations":[{"level":10,"type":"Reputation","exploration_percentage":1000,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/city_icon/UI_ChapterIcon_Daoqi.png","offerings":[{"name":"ӣ","level":40}],"id":4,"name":""},{"level":12,"type":"Offering","exploration_percentage":1000,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/city_icon/UI_ChapterIcon_Dragonspine.png","offerings":[{"name":"̶֮","level":12}],"id":3,"name":"ѩɽ"},{"level":8,"type":"Reputation","exploration_percentage":984,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/city_icon/UI_ChapterIcon_Liyue.png","offerings":[],"id":2,"name":""},{"level":8,"type":"Reputation","exploration_percentage":1000,"icon":"https://upload-bbs.mihoyo.com/game_record/genshin/city_icon/UI_ChapterIcon_Mengde.png","offerings":[],"id":1,"name":"ɵ"}],"homes":[{"level":10,"visit_num":7,"comfort_num":22290,"comfort_level_name":"鹬","item_num":1031,"name":"޸","comfort_level_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_Homeworld_Comfort_10.png","icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_HomeworldModule_2_Pic.png"},{"level":10,"visit_num":7,"comfort_num":22290,"comfort_level_name":"鹬","item_num":1031,"name":"","comfort_level_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_Homeworld_Comfort_10.png","icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_HomeworldModule_1_Pic.png"},{"level":10,"visit_num":7,"comfort_num":22290,"comfort_level_name":"鹬","item_num":1031,"name":"","comfort_level_icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_Homeworld_Comfort_10.png","icon":"https://upload-bbs.mihoyo.com/game_record/genshin/home/UI_HomeworldModule_3_Pic.png"}]} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\346\224\257\346\214\201\345\272\223.config.json" "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\346\224\257\346\214\201\345\272\223.config.json" new file mode 100644 index 0000000..e1e7817 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\346\224\257\346\214\201\345\272\223.config.json" @@ -0,0 +1,110 @@ +[ + { + "CmdCount": 682, + "Guid": "d09f2340818511d396f6aaf844c7e325", + "Key": "krnln", + "MaxRefConstPos": 83, + "MaxRefObjectPos": 49, + "Name": "系统核心支持库", + "Version": { + "Major": 5, + "Minor": 7 + } + }, + { + "CmdCount": 0, + "Guid": "{B6F7542F-B8FE-46a8-9605-98856A687097}", + "Key": "iext3", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 2, + "Name": "扩展界面支持库三", + "Version": { + "Major": 3, + "Minor": 1 + } + }, + { + "CmdCount": 0, + "Guid": "AF6AD80AA4244A59AFB3D83ECF5173CC", + "Key": "iext2", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 1, + "Name": "扩展界面支持库二", + "Version": { + "Major": 2, + "Minor": 0 + } + }, + { + "CmdCount": 894, + "Guid": "AA50CDD5A14C4C5DB81BAE05DE4DDE6D", + "Key": "e2ee", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 23, + "Name": "E2EE互联网服务器套件2.7.2", + "Version": { + "Major": 2, + "Minor": 0 + } + }, + { + "CmdCount": 8, + "Guid": "A512548E76954B6E92C21055517615B0", + "Key": "spec", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 0, + "Name": "特殊功能支持库", + "Version": { + "Major": 3, + "Minor": 1 + } + }, + { + "CmdCount": 11, + "Guid": "F7FC1AE45C5C4758AF03EF19F18A395D", + "Key": "eAPI", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 9, + "Name": "应用接口支持库", + "Version": { + "Major": 3, + "Minor": 1 + } + }, + { + "CmdCount": 67, + "Guid": "27bb20fdd3e145e4bee3db39ddd6e64c", + "Key": "iext", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 5, + "Name": "扩展界面支持库一", + "Version": { + "Major": 2, + "Minor": 0 + } + }, + { + "CmdCount": 1, + "Guid": "5F99C1642A2F4e03850721B4F5D7C3F8", + "Key": "EThread", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 0, + "Name": "多线程支持库", + "Version": { + "Major": 2, + "Minor": 0 + } + }, + { + "CmdCount": 23, + "Guid": "361C58F8-3D5B-4d02-9137-C4BD515941B0", + "Key": "CommonSupport", + "MaxRefConstPos": 0, + "MaxRefObjectPos": 2, + "Name": "常用功能支持库", + "Version": { + "Major": 2, + "Minor": 0 + } + } +] \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\224\250\346\210\267.config.json" "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\224\250\346\210\267.config.json" new file mode 100644 index 0000000..b981540 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\224\250\346\210\267.config.json" @@ -0,0 +1,23 @@ +{ + "Address": "", + "Author": "", + "BuilderVersion": { + "Major": 0, + "Minor": 0 + }, + "CompilePlugins": "", + "Copyright": "", + "Description": "", + "Email": "", + "ExportPublicClassMethod": false, + "FaxNumber": "", + "Homepage": "", + "Name": "", + "ReleaseVersion": { + "Major": 1, + "Minor": 0 + }, + "TelephoneNumber": "", + "WriteVersion": true, + "ZipCode": "" +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\263\273\347\273\237.config.json" "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\263\273\347\273\237.config.json" new file mode 100644 index 0000000..d89eded --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\351\205\215\347\275\256/\347\263\273\347\273\237.config.json" @@ -0,0 +1,13 @@ +{ + "Lang": 1, + "ProjectType": 0, + "ProjectVersion": { + "Major": 1, + "Minor": 7 + }, + "Type": 1, + "Version": { + "Major": 5, + "Minor": 6 + } +} \ No newline at end of file diff --git "a/GenshinBot.\344\273\243\347\240\201/\351\241\271\347\233\256.etprj" "b/GenshinBot.\344\273\243\347\240\201/\351\241\271\347\233\256.etprj" new file mode 100644 index 0000000..9330ae3 --- /dev/null +++ "b/GenshinBot.\344\273\243\347\240\201/\351\241\271\347\233\256.etprj" @@ -0,0 +1,12 @@ +{ + "AsyncFile": true, + "E2TXT-EFile": "", + "E2TXT-InSourceDir": true, + "E2TXT-IsCreateE": true, + "Encoding": "UTF-8", + "Level": 1, + "NameStyle": 2, + "Password": "", + "ResetNames": [], + "Source": "../GenshinBot.e" +} \ No newline at end of file diff --git a/README.md b/README.md index 6fded16..752408f 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ │ │ │ ├─Bind_db - 存放绑定信息的文件夹 │ │ -│ └─Img - 存放图片的文件夹 -│ └─character_side_icon - 缓存从API下载的图片的文件夹 +│ └─Img - 缓存从API下载的图片的文件夹 │ └─Log - 存放日志的文件夹 ``` + diff --git a/Text-table b/Text-table new file mode 160000 index 0000000..3a921c6 --- /dev/null +++ b/Text-table @@ -0,0 +1 @@ +Subproject commit 3a921c6d04e6e650bf1e56889688a22a092d0a47 diff --git a/go-cqhttp-e b/go-cqhttp-e index 56e45bf..5937c33 160000 --- a/go-cqhttp-e +++ b/go-cqhttp-e @@ -1 +1 @@ -Subproject commit 56e45bf2d8047e9bdf5ffb1e9a80a8cf7ce13c04 +Subproject commit 5937c3372bb391eb08144eecb3b2401e77fa7950 diff --git a/menu.png b/menu.png index 2ee2496..23d75a1 100644 Binary files a/menu.png and b/menu.png differ diff --git "a/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.e" "b/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.e" new file mode 100644 index 0000000..f762b4c Binary files /dev/null and "b/\346\250\241\345\235\227/\346\240\207\350\257\206\347\272\277\347\250\213\351\224\201.e" differ