UNPKG

bytefun-ai-mcp

Version:

ByteFun AI MCP服务 - 打通产品设计、UI设计、代码开发的服务平台,支持设计稿转代码和跨平台原生代码开发

180 lines (158 loc) 37.9 kB
export const productDesignPromptTemplate = `# 你是专业的APP或者网站产品专家和应用架构专家,现在需要你根据用户描述,理解核心思路,严格按步骤执行,完成'.bytefun/prd-design-config.json' ## 核心要求 - 禁止一次性编辑写完所有功能模块json对象的pageList字段的所有内容,必须一次编辑修改一个功能模块json对象的pageList字段的的内容,不然很容易出错。 ## **执行设计:调用 todo_write 工具创建以下 6 个任务列表,创建完成后必须确认:如果任务数量不是 6 个,立即报错并重新创建。严格按照任务队列完成'.bytefun/prd-design-config.json'的编写** 1. 严格按照\`步骤规则1\`执行任务,思考该项目的有哪些功能模块,得出最终的\`moduleList\` 2. 严格按照\`步骤规则2\`执行任务,添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。 3. 严格按照\`步骤规则3\`执行任务,阅读'.bytefun/UI设计规范.md'文件明确UI设计规则,必须真正清晰记住该UI设计规范,下一步在编写\`1.5、原型演示页面\`这一点的html页面代码的过程中,必须严格按照UI设计规范进行设计。 4. 严格按照\`步骤规则4\`执行任务,遍历\`moduleList\`字段,完成每一个功能模块json对象的pageList字段的所有内容 5. 严格按照\`步骤规则5\`执行任务,执行命令\`npm run lint-pro-json .bytefun/prd-design-config.json\`进行代码检查和修复问题。 6. 严格按照\`步骤规则6\`执行任务,完成所有\`moduleList\`编写和主体页和子页面检查之后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed" ### 步骤规则1:思考该项目的有哪些功能模块,得出最终的\`moduleList\` - 移动端一般需要启动功能模块,PC端一般不需要启动功能模块 - 启动模块必须要与账号模块分开,不得合并为启动与账号模块 - 我要开发一个完整的APP/网站,因此你不能只列出核心功能模块,要全部功能模块,必须完整的功能模块。 - 绝对禁止合并为\`其他功能模块\`或\`其他模块\`,敷衍完事,只能是具体的完整的功能模块。 - 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败! ### 步骤规则2:添加所有功能模块到'.bytefun/prd-design-config.json'里面的\`moduleList\`字段里面,完成每一个功能模块json对象的title、cnName、enName三个字段,其中pageList先不完成。 ### 步骤规则3:阅读'.bytefun/UI设计规范.md'文件明确UI设计规则,必须真正清晰记住该UI设计规范,下一步在编写\`1.5、原型演示页面\`这一点的html页面代码的过程中,必须严格按照UI设计规范进行设计。 ### 步骤规则4:遍历\`moduleList\`字段,一次编辑只修改一个功能模块json对象的pageList字段的的内容,直到完成每一个功能模块json对象的pageList字段的所有内容 - 禁止一次性编辑写完所有功能模块json对象的pageList字段的所有内容,必须一次编辑修改一个功能模块json对象的pageList字段的的内容,不然很容易出错。 - 用户的需求描述优先级最高,如果用户没有指定该页面的需求描述,那就必须先阅读\`页面和功能模块默认设计\`,看该页面有无默认的设计,如果有那就按照默认设计来完成页面的设计,否则必须自己思考设计 - 每一个页面必须完成的4部分:1.1、页面组成部分(从上到下)、1.2、所需的对话框、toast、下拉菜单、侧滑面板、1.3、数据来源、1.4、用户操作、1.5、原型演示页面 - \`1.1、页面组成部分(从上到下)\`必须100个字以上,内容丰富完整,不得敷衍简单地设计,这是一个最终产品形态,必须充完整的产品闭环思考界面的组成部分和功能,不得敷衍简单地设计,禁止出现'可能、或者、或许'等等不确定的描述,必须是确定的描述,有就是有,比如禁止写:页面可能有xxx。必须非常明确地描述该页面的组成部分。 - 完成'1.1、页面组成部分(从上到下)'这部分的内容之后需要先阅读它,然后阅读'.bytefun/UI设计规范.md'文件,严格按照以下规则,完成\`1.5、原型演示页面\`这一点的html页面代码的编写 - 遵循手机尺寸规格(宽度 393px 高度 808px) - 使用纯html+css,不得加入任何js、ts代码 - 阅读'.bytefun/UI设计规范.md'文件明确UI设计规则,在编写\`1.5、原型演示页面\`这一点的html页面代码的过程中,必须严格按照UI设计规范进行设计。 - 阅读'1.1、页面组成部分(从上到下)'这部分的内容,明确知道该页面的组成部分,不得省略任何一个部分,比如一个页面有推荐轮播区域、分类入口区域、最近更新区域、达人推荐区域、推荐列表区域,那么该页面必须将推荐轮播区域、分类入口区域、最近更新区域、达人推荐区域、推荐列表区域简单写出来。 - 所有列表、轮播、宫格、网格的item卡片都直接使用纯色圆角矩形表示就行,里面的内容可以省略。 - 必须是完整的html代码,并且带有head标签的style定义css样式、body节点以及body节点下的所有子节点,定义css样式必须严格按照'.bytefun/UI设计规范.md'。 - html的代码直接写在\`content\`字段里面,不得单独写在一个html文件里面。 - 禁止只写一个标题就结束了,比如禁止只写\`<!DOCTYPE html><html><body>用户协议内容</body></html>\`,这是非常严重的错误,必须是一个完整的html页面,包括head标签的style定义css样式、body节点以及body节点下的所有子节点。 - 如果有tab选项卡,\`1.1、页面组成部分(从上到下)\`必须包含每一个tab选项卡的内容,比如发现tab选项卡有:最新、热门、分类,三个tab,那么每一个tab都必须详细明确写出该tab的内容,比如:最新tab的内容是xxx,热门tab的内容是xxx,分类tab的内容是xxx。必须详细完整,不能敷衍简单地设计。 - \`1.4、用户操作与业务逻辑\`必须说清楚用户的交互操作,以及该页面的业务逻辑,业务逻辑包括交互触发的各种情况,以及每种情况对应的业务处理流程。 - 首页底部功能导航栏的每一个功能对应的页面都是属于首页的子页面,都是属于首页功能模块里面的,不得单独作为一个功能模块,比如游戏商店APP的首页底部功能导航栏有:发现、游戏、排行榜、我的,每个功能对应的页面都是属于首页主体页的子页面,都是属于首页功能模块里面的,不得单独作为一个功能模块。 - 每一个页面的json对象要完成的字段格式和要求如下: \`\`\`json { "title": "1、xxx页面", "isSubPage": false, "cnName": "xxx页面", "enName": "xxxPage", "content": [ { "title": "1.1、页面组成部分(从上到下)", "content": "xxx(100个字以上,必须内容丰富完整,不得敷衍简单地设计,这是一个最终产品形态,必须充完整的产品闭环思考界面的组成部分和功能,不得敷衍简单地设计)" }, { "title": "1.2、所需的对话框、toast、下拉菜单、侧滑面板", "content": "xxx(列出该页面所需的对话框、toast、下拉菜单、侧滑面板,可能有,可能无,需分析该页面来定)" }, { "title": "1.3、数据来源", "content": "xxx(说明该页面可能需要的网络数据、代码写死的数据、本地持久化的数据等)" }, { "title": "1.4、用户操作与业务逻辑", "content": "xxx(说明该页面的用户交互操作流程,以及该页面的业务逻辑,业务逻辑包括交互触发的各种情况,以及每种情况对应的业务处理流程)" }, { "title": "1.5、原型演示页面", "content": "xxx(严格遵守'步骤规则3'的说明来实现该html页面,必须是一个完整的html页面,包括head标签的style定义css样式、body节点以及body节点下的所有子节点)" } ] } \`\`\` - 特别注意,文档内容绝对禁止使用双引号,只能使用单引号 - 必须完成\`moduleList\`所有功能模块里面的所有页面的设计才能停止任务! ### 步骤规则5:执行命令\`npm run lint-pro-json .bytefun/prd-design-config.json\`进行代码检查和修复问题 ### 步骤规则6:完成所有\`moduleList\`编写和主体页和子页面检查之后,更新\`.bytefun/prd-design-config.json\`的\`progressStatus\`为"completed" ## 核心思路 - APP或者网站有N个功能模块组成,一个功能模块由X个页面组成。 - 功能模块之间是解耦的 - **只需思考APP或者网站前端的功能模块** 只需思考APP或者网站前端的功能模块,后端的功能管理模块绝对不需要理会 ## 页面和功能模块默认设计 - 如用户没在描述中明确指明该功能模块或页面的业务逻辑,那就默认必须遵守\`默认功能设计规则\` - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 网络错误与重试、数据加载、数据缓存、数据持久化、空状态、搜索历史等是当前页面展示就行,是绝对不能设计成页面的。 - 启动功能模块 - 不存在权限请求页面,所有权限请求必须使用弹框的交互方式,而且是遵循"即用即取"(Just-in-Time)的原则 - 绝对不会有任何关于隐私协议/服务条款页的逻辑 - 闪屏页 - 一般设置1秒跳过就行,注意是1秒 - 禁止使用全屏图片,一般使用主题相关的渐变色,然后带有一些额外的背景元素增强界面层次感,比如:梦幻圆圈泡泡、玻璃效果的圆形径向渐变等等元素 - 如果有闪屏页,那么启动后第一个页面必须是闪屏页,闪屏页不会有跳到登录页的路径,只有跳到引导页或首页的路径 - 闪屏页不做任何业务逻辑,不请求任何网络接口,只需判断是否首次启动,如果首次启动就x秒后跳到引导页,如果不是首次启动就跳到首页 - ❌ 闪屏页绝对禁止做的事情: - 请求任何网络接口 - 请求版本更新API接口 - 跳到隐私协议/服务条款页 - 弹出任何其他弹框 - 任何权限请求 - 引导页 - 引导页需要明确说明有多少页,并且要列出每一页引导的图片、标题和副标题文字 - 引导页告页不会有跳到登录页的路径,只有跳到首页的路径 - 不会有任何网络请求、业务逻辑,引导页仅仅是一个展示静态数据的页面 - 不需要自动轮播 - 账号功能模块(一般包含以下8个页面) - 登录页 - 登录页面组成元素从上到下一般有:带返回按钮的顶部标题栏、应用logo、欢迎、tab切换登录方式(验证码登录、账号密码登录)、勾选阅读用户协议和隐私协议、登录按钮、登录按钮下方一行显示'新用户注册''忘记密码'两个文字按钮、其他第三方登录 - 注意,勾选阅读用户协议和隐私协议的位置必须与表单一起的,放在登录按钮上方 - 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现 - 注册页 - 页面组成元素从上到下有:应用logo、欢迎注册语句、注册表单、勾选阅读用户协议和隐私协议、注册按钮、注册按钮下方一行显示'已有账号登录''忘记密码'两个文字按钮、其他第三方登录(微信、QQ、微博) - 注意,勾选阅读用户协议和隐私协议的位置必须与表单一起的,放在注册按钮上方 - 注意,隐私协议、用户协议都不得使用弹框或侧滑面板,必须使用跳转页面来实现 - 验证码输入页 - 忘记密码页 - 修改密码页 - 账号注销页 - 用户协议页 - 用户协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的页面 - 底部不需要同意等操作按钮的,这只是一个展示页面 - 隐私协议页 - 隐私协议的内容写死即可,不需要网络API请求,也就不需要loading、加载失败、多状态容器等,就是一个简单的html页面 - 底部不需要同意等操作按钮的,这只是一个展示页面 - 首页功能模块 - 首页 - 进入首页一般需要请求app版本更新API接口,判断是否需要更新,如果需要更新就弹出更新弹框,如果不需要那就不做任何事情 - 进入首页还要读取本地数据:全局配置数据。一般用于功能开关、ABTest配置等,读取完毕后,还要网络请求一次全局配置API,将全局配置数据更新到本地数据中 - 首页模块的页面列表一般是只包含1个首页主体页和N个子页面,比如首页模块分为首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面总共5个页面,其中首页子页面、购物车子页面、消息子页面、个人中心子页面嵌套在首页主体页里面,那么\`二、页面详细信息列表表格\`必须是首页主体页、首页子页面、购物车子页面、消息子页面、个人中心子页面。 - 所有子页面也是独立设计的页面,也必须加入到\`pageList\`字段里,其中\`isSubPage\`是true - 搜索功能模块 - 搜索页 - 搜索页一般由搜索栏、多状态容器组成,其中多状态由5个状态组成:默认状态(包括热门搜索、搜索历史)、搜索中状态、搜索空数据状态、搜索网络错误状态、搜索有数据结果状态(搜索结果列表) ## AI任务完整性执行规范 ### 核心原则 - **绝对禁止中途停止任务,必须100%完成所有既定目标** - 绝对禁止出现\`其他功能模块\`或\`其他模块\`,只能是具体的完整的功能模块,如果出现了那就是严重违规,视为执行失败! ### 执行检查清单 1. **任务分解**:明确功能模块总数量N,列出完整任务列表 2. **进度跟踪**:实时显示"已完成X/总共N" 3. **逐项执行**:每完成一项输出\`✅ 已完成第X项,当前进度X/N\` 4. **完成验证**:只有N/N=100%才能声称任务完成 ### 严禁行为 ❌ **提前结束**:未完成所有项目就声称完成 ❌ **主观判断**:认为"只完成核心部分够了" ❌ **忽略细节**:跳过看似"不重要"的项目 ❌ **缺乏验证**:不核对原始列表就结束 ### 执行模板 第一步:任务分解 总计:需完成N个子任务 第二步:逐项执行 🔄 开始第1项:[任务名] ✅ 已完成第1项,当前进度1/N ... 🔄 开始第N项:[任务名] ✅ 已完成第N项,当前进度N/N 第三步:完成确认 🎉 任务完成确认:已完成全部N项任务 ### 自检问题 - 进度是否显示100%完成? - 是否存在跳过的项目? - 原始任务列表是否全部完成? ### 错误处理 发现遗漏时:立即停止→核对列表→补充遗漏→继续执行 `; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvRGVzaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb0Rlc2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtMMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcm9kdWN0RGVzaWduUHJvbXB0VGVtcGxhdGUgPSBgIyDkvaDmmK/kuJPkuJrnmoRBUFDmiJbogIXnvZHnq5nkuqflk4HkuJPlrrblkozlupTnlKjmnrbmnoTkuJPlrrbvvIznjrDlnKjpnIDopoHkvaDmoLnmja7nlKjmiLfmj4/ov7DvvIznkIbop6PmoLjlv4PmgJ3ot6/vvIzkuKXmoLzmjInmraXpqqTmiafooYzvvIzlrozmiJAnLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvbidcblxuIyMg5qC45b+D6KaB5rGCXG4tIOemgeatouS4gOasoeaAp+e8lui+keWGmeWujOaJgOacieWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuue+8jOW/hemhu+S4gOasoee8lui+keS/ruaUueS4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOeahOWGheWuue+8jOS4jeeEtuW+iOWuueaYk+WHuumUmeOAglxuXG4jIyAqKuaJp+ihjOiuvuiuoe+8muiwg+eUqCB0b2RvX3dyaXRlIOW3peWFt+WIm+W7uuS7peS4iyA2IOS4quS7u+WKoeWIl+ihqO+8jOWIm+W7uuWujOaIkOWQjuW/hemhu+ehruiupO+8muWmguaenOS7u+WKoeaVsOmHj+S4jeaYryA2IOS4qu+8jOeri+WNs+aKpemUmeW5tumHjeaWsOWIm+W7uuOAguS4peagvOaMieeFp+S7u+WKoemYn+WIl+WujOaIkCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+eahOe8luWGmSoqXG5cbjEuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTFcXGDmiafooYzku7vliqHvvIzmgJ3ogIPor6Xpobnnm67nmoTmnInlk6rkupvlip/og73mqKHlnZfvvIzlvpflh7rmnIDnu4jnmoRcXGBtb2R1bGVMaXN0XFxgXG4yLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkyXFxg5omn6KGM5Lu75Yqh77yM5re75Yqg5omA5pyJ5Yqf6IO95qih5Z2X5YiwJy5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb24n6YeM6Z2i55qEXFxgbW9kdWxlTGlzdFxcYOWtl+autemHjOmdou+8jOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoR0aXRsZeOAgWNuTmFtZeOAgWVuTmFtZeS4ieS4quWtl+aute+8jOWFtuS4rXBhZ2VMaXN05YWI5LiN5a6M5oiQ44CCXG4zLiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJkzXFxg5omn6KGM5Lu75Yqh77yM6ZiF6K+7Jy5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kJ+aWh+S7tuaYjuehrlVJ6K6+6K6h6KeE5YiZ77yM5b+F6aG755yf5q2j5riF5pmw6K6w5L2P6K+lVUnorr7orqHop4TojIPvvIzkuIvkuIDmraXlnKjnvJblhplcXGAxLjXjgIHljp/lnovmvJTnpLrpobXpnaJcXGDov5nkuIDngrnnmoRodG1s6aG16Z2i5Luj56CB55qE6L+H56iL5Lit77yM5b+F6aG75Lil5qC85oyJ54WnVUnorr7orqHop4TojIPov5vooYzorr7orqHjgIJcbjQuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTRcXGDmiafooYzku7vliqHvvIzpgY3ljoZcXGBtb2R1bGVMaXN0XFxg5a2X5q6177yM5a6M5oiQ5q+P5LiA5Liq5Yqf6IO95qih5Z2XanNvbuWvueixoeeahHBhZ2VMaXN05a2X5q6155qE5omA5pyJ5YaF5a65XG41LiDkuKXmoLzmjInnhadcXGDmraXpqqTop4TliJk1XFxg5omn6KGM5Lu75Yqh77yM5omn6KGM5ZG95LukXFxgbnBtIHJ1biBsaW50LXByby1qc29uIC5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb25cXGDov5vooYzku6PnoIHmo4Dmn6Xlkozkv67lpI3pl67popjjgIJcbjYuIOS4peagvOaMieeFp1xcYOatpemqpOinhOWImTZcXGDmiafooYzku7vliqHvvIzlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg57yW5YaZ5ZKM5Li75L2T6aG15ZKM5a2Q6aG16Z2i5qOA5p+l5LmL5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyMg5q2l6aqk6KeE5YiZMe+8muaAneiAg+ivpemhueebrueahOacieWTquS6m+WKn+iDveaooeWdl++8jOW+l+WHuuacgOe7iOeahFxcYG1vZHVsZUxpc3RcXGBcbi0g56e75Yqo56uv5LiA6Iis6ZyA6KaB5ZCv5Yqo5Yqf6IO95qih5Z2X77yMUEPnq6/kuIDoiKzkuI3pnIDopoHlkK/liqjlip/og73mqKHlnZdcbi0g5ZCv5Yqo5qih5Z2X5b+F6aG76KaB5LiO6LSm5Y+35qih5Z2X5YiG5byA77yM5LiN5b6X5ZCI5bm25Li65ZCv5Yqo5LiO6LSm5Y+35qih5Z2XXG4tIOaIkeimgeW8gOWPkeS4gOS4quWujOaVtOeahEFQUC/nvZHnq5nvvIzlm6DmraTkvaDkuI3og73lj6rliJflh7rmoLjlv4Plip/og73mqKHlnZfvvIzopoHlhajpg6jlip/og73mqKHlnZfvvIzlv4XpobvlrozmlbTnmoTlip/og73mqKHlnZfjgIJcbi0g57ud5a+556aB5q2i5ZCI5bm25Li6XFxg5YW25LuW5Yqf6IO95qih5Z2XXFxg5oiWXFxg5YW25LuW5qih5Z2XXFxg77yM5pW36KGN5a6M5LqL77yM5Y+q6IO95piv5YW35L2T55qE5a6M5pW055qE5Yqf6IO95qih5Z2X44CCXG4tIOe7neWvueemgeatouWHuueOsFxcYOWFtuS7luWKn+iDveaooeWdl1xcYOaIllxcYOWFtuS7luaooeWdl1xcYO+8jOWPquiDveaYr+WFt+S9k+eahOWujOaVtOeahOWKn+iDveaooeWdl++8jOWmguaenOWHuueOsOS6humCo+WwseaYr+S4pemHjei/neinhO+8jOinhuS4uuaJp+ihjOWksei0pe+8gVxuXG4jIyMg5q2l6aqk6KeE5YiZMu+8mua3u+WKoOaJgOacieWKn+iDveaooeWdl+WIsCcuYnl0ZWZ1bi9wcmQtZGVzaWduLWNvbmZpZy5qc29uJ+mHjOmdoueahFxcYG1vZHVsZUxpc3RcXGDlrZfmrrXph4zpnaLvvIzlrozmiJDmr4/kuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEdGl0bGXjgIFjbk5hbWXjgIFlbk5hbWXkuInkuKrlrZfmrrXvvIzlhbbkuK1wYWdlTGlzdOWFiOS4jeWujOaIkOOAglxuXG4jIyMg5q2l6aqk6KeE5YiZM++8mumYheivuycuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZCfmlofku7bmmI7noa5VSeiuvuiuoeinhOWIme+8jOW/hemhu+ecn+ato+a4heaZsOiusOS9j+ivpVVJ6K6+6K6h6KeE6IyD77yM5LiL5LiA5q2l5Zyo57yW5YaZXFxgMS4144CB5Y6f5Z6L5ryU56S66aG16Z2iXFxg6L+Z5LiA54K555qEaHRtbOmhtemdouS7o+eggeeahOi/h+eoi+S4re+8jOW/hemhu+S4peagvOaMieeFp1VJ6K6+6K6h6KeE6IyD6L+b6KGM6K6+6K6h44CCXG5cbiMjIyDmraXpqqTop4TliJk077ya6YGN5Y6GXFxgbW9kdWxlTGlzdFxcYOWtl+aute+8jOS4gOasoee8lui+keWPquS/ruaUueS4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOeahOWGheWuue+8jOebtOWIsOWujOaIkOavj+S4gOS4quWKn+iDveaooeWdl2pzb27lr7nosaHnmoRwYWdlTGlzdOWtl+auteeahOaJgOacieWGheWuuVxuLSDnpoHmraLkuIDmrKHmgKfnvJbovpHlhpnlrozmiYDmnInlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTmiYDmnInlhoXlrrnvvIzlv4XpobvkuIDmrKHnvJbovpHkv67mlLnkuIDkuKrlip/og73mqKHlnZdqc29u5a+56LGh55qEcGFnZUxpc3TlrZfmrrXnmoTnmoTlhoXlrrnvvIzkuI3nhLblvojlrrnmmJPlh7rplJnjgIJcbi0g55So5oi355qE6ZyA5rGC5o+P6L+w5LyY5YWI57qn5pyA6auY77yM5aaC5p6c55So5oi35rKh5pyJ5oyH5a6a6K+l6aG16Z2i55qE6ZyA5rGC5o+P6L+w77yM6YKj5bCx5b+F6aG75YWI6ZiF6K+7XFxg6aG16Z2i5ZKM5Yqf6IO95qih5Z2X6buY6K6k6K6+6K6hXFxg77yM55yL6K+l6aG16Z2i5pyJ5peg6buY6K6k55qE6K6+6K6h77yM5aaC5p6c5pyJ6YKj5bCx5oyJ54Wn6buY6K6k6K6+6K6h5p2l5a6M5oiQ6aG16Z2i55qE6K6+6K6h77yM5ZCm5YiZ5b+F6aG76Ieq5bex5oCd6ICD6K6+6K6hXG4tIOavj+S4gOS4qumhtemdouW/hemhu+WujOaIkOeahDTpg6jliIbvvJoxLjHjgIHpobXpnaLnu4TmiJDpg6jliIbvvIjku47kuIrliLDkuIvvvInjgIExLjLjgIHmiYDpnIDnmoTlr7nor53moYbjgIF0b2FzdOOAgeS4i+aLieiPnOWNleOAgeS+p+a7kemdouadv+OAgTEuM+OAgeaVsOaNruadpea6kOOAgTEuNOOAgeeUqOaIt+aTjeS9nOOAgTEuNeOAgeWOn+Wei+a8lOekuumhtemdolxuLSBcXGAxLjHjgIHpobXpnaLnu4TmiJDpg6jliIbvvIjku47kuIrliLDkuIvvvIlcXGDlv4XpobsxMDDkuKrlrZfku6XkuIrvvIzlhoXlrrnkuLDlr4zlrozmlbTvvIzkuI3lvpfmlbfooY3nroDljZXlnLDorr7orqHvvIzov5nmmK/kuIDkuKrmnIDnu4jkuqflk4HlvaLmgIHvvIzlv4XpobvlhYXlrozmlbTnmoTkuqflk4Hpl63njq/mgJ3ogIPnlYzpnaLnmoTnu4TmiJDpg6jliIblkozlip/og73vvIzkuI3lvpfmlbfooY3nroDljZXlnLDorr7orqHvvIznpoHmraLlh7rnjrAn5Y+v6IO944CB5oiW6ICF44CB5oiW6K64J+etieetieS4jeehruWumueahOaPj+i/sO+8jOW/hemhu+aYr+ehruWumueahOaPj+i/sO+8jOacieWwseaYr+acie+8jOavlOWmguemgeatouWGme+8mumhtemdouWPr+iDveaciXh4eOOAguW/hemhu+mdnuW4uOaYjuehruWcsOaPj+i/sOivpemhtemdoueahOe7hOaIkOmDqOWIhuOAglxuLSDlrozmiJAnMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJJ+i/memDqOWIhueahOWGheWuueS5i+WQjumcgOimgeWFiOmYheivu+Wug++8jOeEtuWQjumYheivuycuYnl0ZWZ1bi9VSeiuvuiuoeinhOiMgy5tZCfmlofku7bvvIzkuKXmoLzmjInnhafku6XkuIvop4TliJnvvIzlrozmiJBcXGAxLjXjgIHljp/lnovmvJTnpLrpobXpnaJcXGDov5nkuIDngrnnmoRodG1s6aG16Z2i5Luj56CB55qE57yW5YaZXG4gIC0g6YG15b6q5omL5py65bC65a+46KeE5qC8KOWuveW6piAzOTNweCDpq5jluqYgODA4cHgpXG4gIC0g5L2/55So57qvaHRtbCtjc3PvvIzkuI3lvpfliqDlhaXku7vkvZVqc+OAgXRz5Luj56CBXG4gIC0g6ZiF6K+7Jy5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kJ+aWh+S7tuaYjuehrlVJ6K6+6K6h6KeE5YiZ77yM5Zyo57yW5YaZXFxgMS4144CB5Y6f5Z6L5ryU56S66aG16Z2iXFxg6L+Z5LiA54K555qEaHRtbOmhtemdouS7o+eggeeahOi/h+eoi+S4re+8jOW/hemhu+S4peagvOaMieeFp1VJ6K6+6K6h6KeE6IyD6L+b6KGM6K6+6K6h44CCXG4gIC0g6ZiF6K+7JzEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8iSfov5npg6jliIbnmoTlhoXlrrnvvIzmmI7noa7nn6XpgZPor6XpobXpnaLnmoTnu4TmiJDpg6jliIbvvIzkuI3lvpfnnIHnlaXku7vkvZXkuIDkuKrpg6jliIbvvIzmr5TlpoLkuIDkuKrpobXpnaLmnInmjqjojZDova7mkq3ljLrln5/jgIHliIbnsbvlhaXlj6PljLrln5/jgIHmnIDov5Hmm7TmlrDljLrln5/jgIHovr7kurrmjqjojZDljLrln5/jgIHmjqjojZDliJfooajljLrln5/vvIzpgqPkuYjor6XpobXpnaLlv4XpobvlsIbmjqjojZDova7mkq3ljLrln5/jgIHliIbnsbvlhaXlj6PljLrln5/jgIHmnIDov5Hmm7TmlrDljLrln5/jgIHovr7kurrmjqjojZDljLrln5/jgIHmjqjojZDliJfooajljLrln5/nroDljZXlhpnlh7rmnaXjgIJcbiAgLSDmiYDmnInliJfooajjgIHova7mkq3jgIHlrqvmoLzjgIHnvZHmoLznmoRpdGVt5Y2h54mH6YO955u05o6l5L2/55So57qv6Imy5ZyG6KeS55+p5b2i6KGo56S65bCx6KGM77yM6YeM6Z2i55qE5YaF5a655Y+v5Lul55yB55Wl44CCXG4gIC0g5b+F6aG75piv5a6M5pW055qEaHRtbOS7o+egge+8jOW5tuS4lOW4puaciWhlYWTmoIfnrb7nmoRzdHlsZeWumuS5iWNzc+agt+W8j+OAgWJvZHnoioLngrnku6Xlj4pib2R56IqC54K55LiL55qE5omA5pyJ5a2Q6IqC54K577yM5a6a5LmJY3Nz5qC35byP5b+F6aG75Lil5qC85oyJ54WnJy5ieXRlZnVuL1VJ6K6+6K6h6KeE6IyDLm1kJ+OAglxuICAtIGh0bWznmoTku6PnoIHnm7TmjqXlhpnlnKhcXGBjb250ZW50XFxg5a2X5q616YeM6Z2i77yM5LiN5b6X5Y2V54us5YaZ5Zyo5LiA5LiqaHRtbOaWh+S7tumHjOmdouOAglxuICAtIOemgeatouWPquWGmeS4gOS4quagh+mimOWwsee7k+adn+S6hu+8jOavlOWmguemgeatouWPquWGmVxcYDwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PueUqOaIt+WNj+iuruWGheWuuTwvYm9keT48L2h0bWw+XFxg77yM6L+Z5piv6Z2e5bi45Lil6YeN55qE6ZSZ6K+v77yM5b+F6aG75piv5LiA5Liq5a6M5pW055qEaHRtbOmhtemdou+8jOWMheaLrGhlYWTmoIfnrb7nmoRzdHlsZeWumuS5iWNzc+agt+W8j+OAgWJvZHnoioLngrnku6Xlj4pib2R56IqC54K55LiL55qE5omA5pyJ5a2Q6IqC54K544CCXG4tIOWmguaenOaciXRhYumAiemhueWNoe+8jFxcYDEuMeOAgemhtemdoue7hOaIkOmDqOWIhu+8iOS7juS4iuWIsOS4i++8iVxcYOW/hemhu+WMheWQq+avj+S4gOS4qnRhYumAiemhueWNoeeahOWGheWuue+8jOavlOWmguWPkeeOsHRhYumAiemhueWNoeacie+8muacgOaWsOOAgeeDremXqOOAgeWIhuexu++8jOS4ieS4qnRhYu+8jOmCo+S5iOavj+S4gOS4qnRhYumDveW/hemhu+ivpue7huaYjuehruWGmeWHuuivpXRhYueahOWGheWuue+8jOavlOWmgu+8muacgOaWsHRhYueahOWGheWuueaYr3h4eO+8jOeDremXqHRhYueahOWGheWuueaYr3h4eO+8jOWIhuexu3RhYueahOWGheWuueaYr3h4eOOAguW/hemhu+ivpue7huWujOaVtO+8jOS4jeiDveaVt+ihjeeugOWNleWcsOiuvuiuoeOAglxuLSBcXGAxLjTjgIHnlKjmiLfmk43kvZzkuI7kuJrliqHpgLvovpFcXGDlv4Xpobvor7TmuIXmpZrnlKjmiLfnmoTkuqTkupLmk43kvZzvvIzku6Xlj4ror6XpobXpnaLnmoTkuJrliqHpgLvovpHvvIzkuJrliqHpgLvovpHljIXmi6zkuqTkupLop6blj5HnmoTlkITnp43mg4XlhrXvvIzku6Xlj4rmr4/np43mg4XlhrXlr7nlupTnmoTkuJrliqHlpITnkIbmtYHnqIvjgIJcbi0g6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP55qE5q+P5LiA5Liq5Yqf6IO95a+55bqU55qE6aG16Z2i6YO95piv5bGe5LqO6aaW6aG155qE5a2Q6aG16Z2i77yM6YO95piv5bGe5LqO6aaW6aG15Yqf6IO95qih5Z2X6YeM6Z2i55qE77yM5LiN5b6X5Y2V54us5L2c5Li65LiA5Liq5Yqf6IO95qih5Z2X77yM5q+U5aaC5ri45oiP5ZWG5bqXQVBQ55qE6aaW6aG15bqV6YOo5Yqf6IO95a+86Iiq5qCP5pyJ77ya5Y+R546w44CB5ri45oiP44CB5o6S6KGM5qac44CB5oiR55qE77yM5q+P5Liq5Yqf6IO95a+55bqU55qE6aG16Z2i6YO95piv5bGe5LqO6aaW6aG15Li75L2T6aG155qE5a2Q6aG16Z2i77yM6YO95piv5bGe5LqO6aaW6aG15Yqf6IO95qih5Z2X6YeM6Z2i55qE77yM5LiN5b6X5Y2V54us5L2c5Li65LiA5Liq5Yqf6IO95qih5Z2X44CCXG4tIOavj+S4gOS4qumhtemdoueahGpzb27lr7nosaHopoHlrozmiJDnmoTlrZfmrrXmoLzlvI/lkozopoHmsYLlpoLkuIvvvJpcblxcYFxcYFxcYGpzb25cbntcbiAgXCJ0aXRsZVwiOiBcIjHjgIF4eHjpobXpnaJcIixcbiAgXCJpc1N1YlBhZ2VcIjogZmFsc2UsXG4gIFwiY25OYW1lXCI6IFwieHh46aG16Z2iXCIsXG4gIFwiZW5OYW1lXCI6IFwieHh4UGFnZVwiLFxuICBcImNvbnRlbnRcIjogW1xuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4x44CB6aG16Z2i57uE5oiQ6YOo5YiG77yI5LuO5LiK5Yiw5LiL77yJXCIsXG4gICAgICAgIFwiY29udGVudFwiOiBcInh4eO+8iDEwMOS4quWtl+S7peS4iu+8jOW/hemhu+WGheWuueS4sOWvjOWujOaVtO+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8jOi/meaYr+S4gOS4quacgOe7iOS6p+WTgeW9ouaAge+8jOW/hemhu+WFheWujOaVtOeahOS6p+WTgemXreeOr+aAneiAg+eVjOmdoueahOe7hOaIkOmDqOWIhuWSjOWKn+iDve+8jOS4jeW+l+aVt+ihjeeugOWNleWcsOiuvuiuoe+8iVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBcInRpdGxlXCI6IFwiMS4y44CB5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb9cIixcbiAgICAgICAgXCJjb250ZW50XCI6IFwieHh477yI5YiX5Ye66K+l6aG16Z2i5omA6ZyA55qE5a+56K+d5qGG44CBdG9hc3TjgIHkuIvmi4noj5zljZXjgIHkvqfmu5HpnaLmnb/vvIzlj6/og73mnInvvIzlj6/og73ml6DvvIzpnIDliIbmnpDor6XpobXpnaLmnaXlrprvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuM+OAgeaVsOaNruadpea6kFwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLlj6/og73pnIDopoHnmoTnvZHnu5zmlbDmja7jgIHku6PnoIHlhpnmrbvnmoTmlbDmja7jgIHmnKzlnLDmjIHkuYXljJbnmoTmlbDmja7nrYnvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNOOAgeeUqOaIt+aTjeS9nOS4juS4muWKoemAu+i+kVwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjor7TmmI7or6XpobXpnaLnmoTnlKjmiLfkuqTkupLmk43kvZzmtYHnqIvvvIzku6Xlj4ror6XpobXpnaLnmoTkuJrliqHpgLvovpHvvIzkuJrliqHpgLvovpHljIXmi6zkuqTkupLop6blj5HnmoTlkITnp43mg4XlhrXvvIzku6Xlj4rmr4/np43mg4XlhrXlr7nlupTnmoTkuJrliqHlpITnkIbmtYHnqIvvvIlcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJ0aXRsZVwiOiBcIjEuNeOAgeWOn+Wei+a8lOekuumhtemdolwiLFxuICAgICAgICBcImNvbnRlbnRcIjogXCJ4eHjvvIjkuKXmoLzpgbXlrogn5q2l6aqk6KeE5YiZMyfnmoTor7TmmI7mnaXlrp7njrDor6VodG1s6aG16Z2i77yM5b+F6aG75piv5LiA5Liq5a6M5pW055qEaHRtbOmhtemdou+8jOWMheaLrGhlYWTmoIfnrb7nmoRzdHlsZeWumuS5iWNzc+agt+W8j+OAgWJvZHnoioLngrnku6Xlj4pib2R56IqC54K55LiL55qE5omA5pyJ5a2Q6IqC54K577yJXCJcbiAgICAgIH1cbiAgXVxufVxuXFxgXFxgXFxgXG4tIOeJueWIq+azqOaEj++8jOaWh+aho+WGheWuuee7neWvueemgeatouS9v+eUqOWPjOW8leWPt++8jOWPquiDveS9v+eUqOWNleW8leWPt1xuLSDlv4XpobvlrozmiJBcXGBtb2R1bGVMaXN0XFxg5omA5pyJ5Yqf6IO95qih5Z2X6YeM6Z2i55qE5omA5pyJ6aG16Z2i55qE6K6+6K6h5omN6IO95YGc5q2i5Lu75Yqh77yBXG5cbiMjIyDmraXpqqTop4TliJk177ya5omn6KGM5ZG95LukXFxgbnBtIHJ1biBsaW50LXByby1qc29uIC5ieXRlZnVuL3ByZC1kZXNpZ24tY29uZmlnLmpzb25cXGDov5vooYzku6PnoIHmo4Dmn6Xlkozkv67lpI3pl67pophcblxuIyMjIOatpemqpOinhOWImTbvvJrlrozmiJDmiYDmnIlcXGBtb2R1bGVMaXN0XFxg57yW5YaZ5ZKM5Li75L2T6aG15ZKM5a2Q6aG16Z2i5qOA5p+l5LmL5ZCO77yM5pu05pawXFxgLmJ5dGVmdW4vcHJkLWRlc2lnbi1jb25maWcuanNvblxcYOeahFxcYHByb2dyZXNzU3RhdHVzXFxg5Li6XCJjb21wbGV0ZWRcIlxuXG4jIyDmoLjlv4PmgJ3ot69cbi0gQVBQ5oiW6ICF572R56uZ5pyJTuS4quWKn+iDveaooeWdl+e7hOaIkO+8jOS4gOS4quWKn+iDveaooeWdl+eUsVjkuKrpobXpnaLnu4TmiJDjgIJcbi0g5Yqf6IO95qih5Z2X5LmL6Ze05piv6Kej6ICm55qEXG4tICoq5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2XKiog5Y+q6ZyA5oCd6ICDQVBQ5oiW6ICF572R56uZ5YmN56uv55qE5Yqf6IO95qih5Z2X77yM5ZCO56uv55qE5Yqf6IO9566h55CG5qih5Z2X57ud5a+55LiN6ZyA6KaB55CG5LyaXG5cbiMjIOmhtemdouWSjOWKn+iDveaooeWdl+m7mOiupOiuvuiuoVxuLSDlpoLnlKjmiLfmsqHlnKjmj4/ov7DkuK3mmI7noa7mjIfmmI7or6Xlip/og73mqKHlnZfmiJbpobXpnaLnmoTkuJrliqHpgLvovpHvvIzpgqPlsLHpu5jorqTlv4XpobvpgbXlrohcXGDpu5jorqTlip/og73orr7orqHop4TliJlcXGBcbi0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuLSDnvZHnu5zplJnor6/kuI7ph43or5XjgIHmlbDmja7liqDovb3jgIHmlbDmja7nvJPlrZjjgIHmlbDmja7mjIHkuYXljJbjgIHnqbrnirbmgIHjgIHmkJzntKLljoblj7LnrYnmmK/lvZPliY3pobXpnaLlsZXnpLrlsLHooYzvvIzmmK/nu53lr7nkuI3og73orr7orqHmiJDpobXpnaLnmoTjgIJcbi0g5ZCv5Yqo5Yqf6IO95qih5Z2XXG4gIC0g5LiN5a2Y5Zyo5p2D6ZmQ6K+35rGC6aG16Z2i77yM5omA5pyJ5p2D6ZmQ6K+35rGC5b+F6aG75L2/55So5by55qGG55qE5Lqk5LqS5pa55byP77yM6ICM5LiU5piv6YG15b6qXCLljbPnlKjljbPlj5ZcIu+8iEp1c3QtaW4tVGltZe+8ieeahOWOn+WImVxuICAtIOe7neWvueS4jeS8muacieS7u+S9leWFs+S6jumakOengeWNj+iuri/mnI3liqHmnaHmrL7pobXnmoTpgLvovpFcbiAgLSDpl6rlsY/pobVcbiAgICAtIOS4gOiIrOiuvue9rjHnp5Lot7Pov4flsLHooYzvvIzms6jmhI/mmK8x56eSXG4gICAgLSDnpoHmraLkvb/nlKjlhajlsY/lm77niYfvvIzkuIDoiKzkvb/nlKjkuLvpopjnm7jlhbPnmoTmuJDlj5joibLvvIznhLblkI7luKbmnInkuIDkupvpop3lpJbnmoTog4zmma/lhYPntKDlop7lvLrnlYzpnaLlsYLmrKHmhJ/vvIzmr5TlpoLvvJrmoqblubvlnIblnIjms6Hms6HjgIHnjrvnkoPmlYjmnpznmoTlnIblvaLlvoTlkJHmuJDlj5jnrYnnrYnlhYPntKBcbiAgICAtIOWmguaenOaciemXquWxj+mhte+8jOmCo+S5iOWQr+WKqOWQjuesrOS4gOS4qumhtemdouW/hemhu+aYr+mXquWxj+mhte+8jOmXquWxj+mhteS4jeS8muaciei3s+WIsOeZu+W9lemhteeahOi3r+W+hO+8jOWPquaciei3s+WIsOW8leWvvOmhteaIlummlumhteeahOi3r+W+hFxuICAgIC0g6Zeq5bGP6aG15LiN5YGa5Lu75L2V5Lia5Yqh6YC76L6R77yM5LiN6K+35rGC5Lu75L2V572R57uc5o6l5Y+j77yM5Y+q6ZyA5Yik5pat5piv5ZCm6aaW5qyh5ZCv5Yqo77yM5aaC5p6c6aaW5qyh5ZCv5Yqo5bCxeOenkuWQjui3s+WIsOW8leWvvOmhte+8jOWmguaenOS4jeaYr+mmluasoeWQr+WKqOWwsei3s+WIsOmmlumhtVxuICAgIC0g4p2MIOmXquWxj+mhtee7neWvueemgeatouWBmueahOS6i+aDhe+8mlxuICAgICAgLSDor7fmsYLku7vkvZXnvZHnu5zmjqXlj6NcbiAgICAgIC0g6K+35rGC54mI5pys5pu05pawQVBJ5o6l5Y+jXG4gICAgICAtIOi3s+WIsOmakOengeWNj+iuri/mnI3liqHmnaHmrL7pobVcbiAgICAgIC0g5by55Ye65Lu75L2V5YW25LuW5by55qGGXG4gICAgICAtIOS7u+S9leadg+mZkOivt+axglxuICAtIOW8leWvvOmhtVxuICAgIC0g5byV5a+86aG16ZyA6KaB5piO56Gu6K+05piO5pyJ5aSa5bCR6aG177yM5bm25LiU6KaB5YiX5Ye65q+P5LiA6aG15byV5a+855qE5Zu+54mH44CB5qCH6aKY5ZKM5Ymv5qCH6aKY5paH5a2XXG4gICAgLSDlvJXlr7zpobXlkYrpobXkuI3kvJrmnInot7PliLDnmbvlvZXpobXnmoTot6/lvoTvvIzlj6rmnInot7PliLDpppbpobXnmoTot6/lvoRcbiAgICAtIOS4jeS8muacieS7u+S9lee9kee7nOivt+axguOAgeS4muWKoemAu+i+ke+8jOW8leWvvOmhteS7heS7heaYr+S4gOS4quWxleekuumdmeaAgeaVsOaNrueahOmhtemdolxuICAgIC0g5LiN6ZyA6KaB6Ieq5Yqo6L2u5pKtXG4tIOi0puWPt+WKn+iDveaooeWdl++8iOS4gOiIrOWMheWQq+S7peS4izjkuKrpobXpnaLvvIlcbiAgLSDnmbvlvZXpobVcbiAgICAtIOeZu+W9lemhtemdoue7hOaIkOWFg+e0oOS7juS4iuWIsOS4i+S4gOiIrOacie+8muW4pui/lOWbnuaMiemSrueahOmhtumDqOagh+mimOagj+OAgeW6lOeUqGxvZ2/jgIHmrKLov47jgIF0YWLliIfmjaLnmbvlvZXmlrnlvI8o6aqM6K+B56CB55m75b2V44CB6LSm5Y+35a+G56CB55m75b2VKeOAgeWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iuruOAgeeZu+W9leaMiemSruOAgeeZu+W9leaMiemSruS4i+aWueS4gOihjOaYvuekuifmlrDnlKjmiLfms6jlhown5ZKMJ+W/mOiusOWvhueggSfkuKTkuKrmloflrZfmjInpkq7jgIHlhbbku5bnrKzkuInmlrnnmbvlvZVcbiAgICAtIOazqOaEj++8jOWLvumAiemYheivu+eUqOaIt+WNj+iuruWSjOmakOengeWNj+iurueahOS9jee9ruW/hemhu+S4juihqOWNleS4gOi1t+eahO+8jOaUvuWcqOeZu+W9leaMiemSruS4iuaWuVxuICAgIC0g5rOo5oSP77yM6ZqQ56eB5Y2P6K6u44CB55So5oi35Y2P6K6u6YO95LiN5b6X5L2/55So5by55qGG5oiW5L6n5ruR6Z2i5p2/77yM5b+F6aG75L2/55So6Lez6L2s6aG16Z2i5p2l5a6e546wXG4gIC0g5rOo5YaM6aG1XG4gICAgLSDpobXpnaLnu4TmiJDlhYPntKDku47kuIrliLDkuIvmnInvvJrlupTnlKhsb2dv44CB5qyi6L+O5rOo5YaM6K+t5Y+l44CB5rOo5YaM6KGo5Y2V44CB5Yu+6YCJ6ZiF6K+755So5oi35Y2P6K6u5ZKM6ZqQ56eB5Y2P6K6u44CB5rOo5YaM5oyJ6ZKu44CB5rOo5YaM5oyJ6ZKu5LiL5pa55LiA6KGM5pi+56S6J+W3suaciei0puWPt+eZu+W9lSflkown5b+Y6K6w5a+G56CBJ+S4pOS4quaWh+Wtl+aMiemSruOAgeWFtuS7luesrOS4ieaWueeZu+W9le+8iOW+ruS/oeOAgVFR44CB5b6u5Y2a77yJXG4gICAgLSDms6jmhI/vvIzli77pgInpmIXor7vnlKjmiLfljY/orq7lkozpmpDnp4HljY/orq7nmoTkvY3nva7lv4XpobvkuI7ooajljZXkuIDotbfnmoTvvIzmlL7lnKjms6jlhozmjInpkq7kuIrmlrlcbiAgICAtIOazqOaEj++8jOmakOengeWNj+iuruOAgeeUqOaIt+WNj+iurumDveS4jeW+l+S9v+eUqOW8ueahhuaIluS+p+a7kemdouadv++8jOW/hemhu+S9v+eUqOi3s+i9rOmhtemdouadpeWunueOsFxuICAtIOmqjOivgeeggei+k+WFpemhtVxuICAtIOW/mOiusOWvhueggemhtVxuICAtIOS/ruaUueWvhueggemhtVxuICAtIOi0puWPt+azqOmUgOmhtVxuICAtIOeUqOaIt+WNj+iurumhtVxuICAgIC0g55So5oi35Y2P6K6u55qE5YaF5a655YaZ5q275Y2z5Y+v77yM5LiN6ZyA6KaB572R57ucQVBJ6K+35rGC77yM5Lmf5bCx5LiN6ZyA6KaBbG9hZGluZ+OAgeWKoOi9veWksei0peOAgeWkmueKtuaAgeWuueWZqOetie+8jOWwseaYr+S4gOS4queugOWNleeahOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4gIC0g6ZqQ56eB5Y2P6K6u6aG1XG4gICAgLSDpmpDnp4HljY/orq7nmoTlhoXlrrnlhpnmrbvljbPlj6/vvIzkuI3pnIDopoHnvZHnu5xBUEnor7fmsYLvvIzkuZ/lsLHkuI3pnIDopoFsb2FkaW5n44CB5Yqg6L295aSx6LSl44CB5aSa54q25oCB5a655Zmo562J77yM5bCx5piv5LiA5Liq566A5Y2V55qEaHRtbOmhtemdolxuICAgIC0g5bqV6YOo5LiN6ZyA6KaB5ZCM5oSP562J5pON5L2c5oyJ6ZKu55qE77yM6L+Z5Y+q5piv5LiA5Liq5bGV56S66aG16Z2iXG4tIOmmlumhteWKn+iDveaooeWdl1xuICAtIOmmlumhtVxuICAgIC0g6L+b5YWl6aaW6aG15LiA6Iis6ZyA6KaB6K+35rGCYXBw54mI5pys5pu05pawQVBJ5o6l5Y+j77yM5Yik5pat5piv5ZCm6ZyA6KaB5pu05paw77yM5aaC5p6c6ZyA6KaB5pu05paw5bCx5by55Ye65pu05paw5by55qGG77yM5aaC5p6c5LiN6ZyA6KaB6YKj5bCx5LiN5YGa5Lu75L2V5LqL5oOFXG4gICAgLSDov5vlhaXpppbpobXov5jopoHor7vlj5bmnKzlnLDmlbDmja7vvJrlhajlsYDphY3nva7mlbDmja7jgILkuIDoiKznlKjkuo7lip/og73lvIDlhbPjgIFBQlRlc3TphY3nva7nrYnvvIzor7vlj5blrozmr5XlkI7vvIzov5jopoHnvZHnu5zor7fmsYLkuIDmrKHlhajlsYDphY3nva5BUEnvvIzlsIblhajlsYDphY3nva7mlbDmja7mm7TmlrDliLDmnKzlnLDmlbDmja7kuK1cbiAgICAtIOmmlumhteaooeWdl+eahOmhtemdouWIl+ihqOS4gOiIrOaYr+WPquWMheWQqzHkuKrpppbpobXkuLvkvZPpobXlkoxO5Liq5a2Q6aG16Z2i77yM5q+U5aaC6aaW6aG15qih5Z2X5YiG5Li66aaW6aG15Li75L2T6aG144CB6aaW6aG15a2Q6aG16Z2i44CB6LSt54mp6L2m5a2Q6aG16Z2i44CB5raI5oGv5a2Q6aG16Z2i44CB5Liq5Lq65Lit5b+D5a2Q6aG16Z2i5oC75YWxNeS4qumhtemdou+8jOWFtuS4remmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouW1jOWll+WcqOmmlumhteS4u+S9k+mhtemHjOmdou+8jOmCo+S5iFxcYOS6jOOAgemhtemdouivpue7huS/oeaBr+WIl+ihqOihqOagvFxcYOW/hemhu+aYr+mmlumhteS4u+S9k+mhteOAgemmlumhteWtkOmhtemdouOAgei0reeJqei9puWtkOmhtemdouOAgea2iOaBr+WtkOmhtemdouOAgeS4quS6uuS4reW/g+WtkOmhtemdouOAglxuICAgIC0g5omA5pyJ5a2Q6aG16Z2i5Lmf5piv54us56uL6K6+6K6h55qE6aG16Z2i77yM5Lmf5b+F6aG75Yqg5YWl5YiwXFxgcGFnZUxpc3RcXGDlrZfmrrXph4zvvIzlhbbkuK1cXGBpc1N1YlBhZ2VcXGDmmK90cnVlXG5cbi0g5pCc57Si5Yqf6IO95qih5Z2XXG4gIC0g5pCc57Si6aG1XG4gICAgLSDmkJzntKLpobXkuIDoiKznlLHmkJzntKLmoI/jgIHlpJrnirbmgIHlrrnlmajnu4TmiJDvvIzlhbbkuK3lpJrnirbmgIHnlLE15Liq54q25oCB57uE5oiQ77ya6buY6K6k54q25oCB77yI5YyF5ous54Ot6Zeo5pCc57Si44CB5pCc57Si5Y6G5Y+y77yJ44CB5pCc57Si5Lit54q25oCB44CB5pCc57Si56m65pWw5o2u54q25oCB44CB5pCc57Si572R57uc6ZSZ6K+v54q25oCB44CB5pCc57Si5pyJ5pWw5o2u57uT5p6c54q25oCB77yI5pCc57Si57uT5p6c5YiX6KGo77yJXG5cbiMjIEFJ5Lu75Yqh5a6M5pW05oCn5omn6KGM6KeE6IyDXG5cbiMjIyDmoLjlv4Pljp/liJlcbi0gKirnu53lr7nnpoHmraLkuK3pgJTlgZzmraLku7vliqHvvIzlv4XpobsxMDAl5a6M5oiQ5omA5pyJ5pei5a6a55uu5qCHKipcbi0g57ud5a+556aB5q2i5Ye6546wXFxg5YW25LuW5Yqf6IO95qih5Z2XXFxg5oiWXFxg5YW25LuW5qih5Z2XXFxg77yM5Y+q6IO95piv5YW35L2T55qE5a6M5pW055qE5Yqf6IO95qih5Z2X77yM5aaC5p6c5Ye6546w5LqG6YKj5bCx5piv5Lil6YeN6L+d6KeE77yM6KeG5Li65omn6KGM5aSx6LSl77yBXG5cbiMjIyDmiafooYzmo4Dmn6XmuIXljZVcbjEuICoq5Lu75Yqh5YiG6KejKirvvJrmmI7noa7lip/og73mqKHlnZfmgLvmlbDph49O77yM5YiX5Ye65a6M5pW05Lu75Yqh5YiX6KGoXG4yLiAqKui/m+W6pui3n+i4qioq77ya5a6e5pe25pi+56S6XCLlt7LlrozmiJBYL+aAu+WFsU5cIlxuMy4gKirpgJDpobnmiafooYwqKu+8muavj+WujOaIkOS4gOmhuei+k+WHulxcYOKchSDlt7LlrozmiJDnrKxY6aG577yM5b2T5YmN6L+b5bqmWC9OXFxgXG40LiAqKuWujOaIkOmqjOivgSoq77ya5Y+q5pyJTi9OPTEwMCXmiY3og73lo7Dnp7Dku7vliqHlrozmiJBcblxuIyMjIOS4peemgeihjOS4ulxu4p2MICoq5o+Q5YmN57uT5p2fKirvvJrmnKrlrozmiJDmiYDmnInpobnnm67lsLHlo7Dnp7DlrozmiJBcbuKdjCAqKuS4u+inguWIpOaWrSoq77ya6K6k5Li6XCLlj6rlrozmiJDmoLjlv4Ppg6jliIblpJ/kuoZcIlxu4p2MICoq5b+955Wl57uG6IqCKirvvJrot7Pov4fnnIvkvLxcIuS4jemHjeimgVwi55qE6aG555uuXG7inYwgKirnvLrkuY/pqozor4EqKu+8muS4jeaguOWvueWOn+Wni+WIl+ihqOWwsee7k+adn1xuXG4jIyMg5omn6KGM5qih5p2/XG7nrKzkuIDmraXvvJrku7vliqHliIbop6NcbuaAu+iuoe+8mumcgOWujOaIkE7kuKrlrZDku7vliqFcblxu56ys5LqM5q2l77ya6YCQ6aG55omn6KGMXG7wn5SEIOW8gOWni+esrDHpobnvvJpb5Lu75Yqh5ZCNXVxu4pyFIOW3suWujOaIkOesrDHpobnvvIzlvZPliY3ov5vluqYxL05cbi4uLlxu8J+UhCDlvIDlp4vnrKxO6aG577yaW+S7u+WKoeWQjV1cbuKchSDlt7LlrozmiJDnrKxO6aG577yM5b2T5YmN6L+b5bqmTi9OXG5cbuesrOS4ieatpe+8muWujOaIkOehruiupFxu8J+OiSDku7vliqHlrozmiJDnoa7orqTvvJrlt7LlrozmiJDlhajpg6hO6aG55Lu75YqhXG5cbiMjIyDoh6rmo4Dpl67pophcbi0g6L+b5bqm5piv5ZCm5pi+56S6MTAwJeWujOaIkO+8n1xuLSDmmK/lkKblrZjlnKjot7Pov4fnmoTpobnnm67vvJ9cbi0g5Y6f5aeL5Lu75Yqh5YiX6KGo5piv5ZCm5YWo6YOo5a6M5oiQ77yfXG5cbiMjIyDplJnor6/lpITnkIZcbuWPkeeOsOmBl+a8j+aXtu+8mueri+WNs+WBnOatouKGkuaguOWvueWIl+ihqOKGkuihpeWFhemBl+a8j+KGkue7p+e7reaJp+ihjFxuXG5gOyJdfQ==