腾讯Bugly特约作者: 左明
首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的是房价,很明显,人类对 React 的关注程度已经远远超过了对房价的关注。
从这些数据中,大家能看出什么?
可以很明显的看出,我在一本正经的扯淡。
从2014年到现在,React、jQuery和 Angular 的热度趋势对比,可以很明显的看到(上图),React 在全球的热度趋势增长非常快。
上图是 React 在国内的百度搜索指数,是拿 React 和 Nodejs 做了个对比,可以看出 React 的关注度也已经逼近 nodejs。
虽然在关注总量上 React 还远不及 jQuery 和 Angular 等等,但它的增长幅度超乎你想象,你知道这意味着什么吗?这意味着关注 React,你就比大多数人走在了业界的前沿!
那么React到底是什么鬼?
引用官网的简介,”一个用来构建用户界面的javascript库”。
React 起源于 Facebook 的内部项目,因为 FB 对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。
由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。
和 Backbone、Angular 等 MV* 框架不一样,它只处理 View 逻辑 ,它只处理 View 逻辑,它只处理 View 逻辑。所以如果你喜欢它,你可以很容易的将它接入到现有工程中,然后用 React 重写 HTML 部分即可,不用修改逻辑。
近几年 web 领域的技术革新非常迅速,React也是一项新技术…话说React出来也已经2年了,其实并不算什么新技术了,只是在国内还没有普及开,这篇文章的目的也是帮助大家更快的理解 react 和认识 react 能给我们带来的价值。
React 这么火,那么它到底有什么牛逼的地方?
上图是2015年年初的数据
这是 Facebook 的好友动态页面,也是 Facebook 访问量最大的页面没有之一,通过 Chrome React 插件可以看到这个页面确实是用 React 实现的。 (有同事问我为什么关注柳岩,我说因为我是柳岩的球迷啊)
前面给大家来了一波前戏,相信大家已经有点迫不及待了,那么,进入正题: 首先,先跟大家描述下 React 最特别的部分,听完这部分大家基本就能够在脑海里建立起一个 React 的大致印象。
然后是 React 的核心内容,听完这部分大家待会回去就可以开始写代码然后今天晚上发布上线了。 最后是 React 能够给我们实际带来的价值,我们不作无意义的代码重构。
首先,我们来看JSX——
JSX 使用的是预编译模板,React 提供了一个预编译工具,叫 react-tools,可以通过 npm 命令安装,一般是在开发时期运行,运行后它会启动一个监听程序,实时监听 JSX 源码的修改,然后自动编译为 JS 代码。
大家留意下,render() 方法里的被编译成了 React.createElement(),它这么做,目的就是为了实现虚拟 DOM。
接下来我们来了解 React 最大的亮点 ———— 虚拟 DOM。
传统 web app 和 DOM 直接交互,由App来控制DOM的构建和渲染、元素属性的读写、事件的注册和销毁等等。 当新产品刚上线的时候,这种做法看起来也挺好。但随着产品功能越来越丰富、代码量越来越多、开发团队人员越来越多 —————
一年后
你的代码可能会变成这样。
当然,合理的代码规划能够避免这类问题,但团队里难免会有擅长屠宰式编程的同学,分分钟把你代码改的面目全非。
这时,React的虚拟DOM和单项数据流就能很好的解决这个问题。
虚拟DOM则是在DOM的基础上建立了一个抽象层,我们对数据和状态所做的任何改动,都会被自动且高效的同步到虚拟DOM,最后再批量同步到DOM中。
虚拟DOM会使得App只关心数据和组件的执行结果,中间产生的DOM操作不需要App干预,而且通过虚拟DOM来生成DOM,会有一项非常可观收益——-性能。
所有人都知道DOM慢,渲染一个空的DIV,浏览器需要为这个DIV生成几百个属性,而虚拟DOM只有6个,所以减少不必要的重排重绘以及DOM读写能够对页面渲染性能有大幅提升。
那么我们来看看虚拟DOM是怎么做的:React会在内存中维护一个虚拟DOM树,当我们对这个树进行读或写的时候,实际上是对虚拟DOM进行的。当数据变化时,然后React会自动更新虚拟DOM,然后拿新的虚拟DOM和旧的虚拟DOM进行对比,找到有变更的部分,得出一个Patch,然后将这个Patch放到一个队列里,最终批量更新这些Patch到DOM中。
这样的机制可以保证即便是根节点数据的变化,最终表现在DOM上的修改也只是受这个数据影响的部分,可以保证非常高效的渲染。
但这样也是有一定的缺陷的——首次渲染大量DOM时因为多了一层虚拟DOM的计算,会比innerHTML插入方式慢,所以使用时需要确保不要一次性渲染大量DOM。
几个UI组件的渲染性能对比
http://mathieuancelin.github.io/js-repaint-perfs/
一个最基本的 React 组件由数据和JSX两个主要部分构成,我们先来看看数据。
这是一个简单单完整的React组件【类】,细节大家先不用太在意细节,了解机制就可以。
props 主要作用是提供数据来源,可以简单的理解为 props 就是构造函数的参数。 state 唯一的作用是控制组件的表现,用来存放会随着交互变化状态,比如开关状态等。
JSX 做的事情就是根据 state 和 props 中的值,结合一些视图层面的逻辑,输出对应的 DOM 结构。
前面我们知道了一个简单的组件的构成,但单个的组件肯定不能满足实际需求,我们需要做的是将这些独立的组件进行组装,同时找出共性的部分进行复用。
比如这样一个场景
我们以这样一个界面为例,可以看出,里面的 <Pub/> <Article/> 都是最细粒度的组件,是可以复用的。 首先,我们来看下Article的代码——
这个就是我们分解出来的 Article 组件,它需要2个属性,article对象和showImage。article对象包含图片、地址、标题、描述信息,showImage是一个布尔类型,用来判断是否需要显示成一个图片。
这个组件本身的实现可以很简单也可以很复杂,但使用者可不关心你的内部实现,使用者关心的是组件需要什么参数就可以了。
外国人的组件化思想比我们国内的普及程度高很多,不只局限于软件开发,包括实体行业的咖啡机、加油站、 儿童摇摇车都有这种设计思想在里面。
希望大家在设计模块的时候,也尽可能将组件逻辑对外透明,来减少维护成本。
大家留意一下标虚线的部分,这里复用了 Article 组件。这时的 Article 组件看起来就是一个普通的标签而已,简单吧。
这个是热问组件,也复用了 Article 组件。这就是 React 如丝般顺滑的组件复合。
这个,叫做竹笕,是中日传统禅文化中常见的庭院装饰品,它的构造可简单可复杂,但原理很简单,比如这个竹笕,水从竹笕顶部入口流入内部,并按照固定的顺序从上向下依次流入各个小竹筒,然后驱动水轮转动。对于强迫症患者来说,观赏竹笕的绝对是一种很享受的过程的最爱,你会发现这些小玩意竟然能这么流畅的协调起来,好神奇。
如果竹笕是一个组件的话,那么水就是组件的数据流。
在React中,数据流是自上而下单向的从父节点传递到子节点,所以组件是简单且容易把握的,他们只需要从父节点提供的props中获取数据并渲染即可。如果顶层组件的某个prop改变了,React会递归地向下遍历整棵组件数,重新渲染所有使用这个属性的组件。
这个是前面看到的 Article 题组件,拥有一个叫做 articles 的属性。
在组件内部,可以通过this.props来访问props,props是组件唯一的数据来源,对于组件来说:
props永远是只读的。
组件的属性类型如果不进行声明和验证,那么很可能使用者传给你的属性值或者类型是无效的,那会导致一些意料之外的故障。好在React已经为我们提供了一套非常简单好用的属性校验机制——
React有一个PropTypes属性校验工具,经过简单的配置即可。当使用者传入的参数不满足校验规则时,React会给出非常详细的警告,定位问题不要太容易。
PropTypes包含的校验类型包括基本类型、数组、对象、实例、枚举——
以及对象类型的深入验证等等。如果内置的验证类型不满足需求,还可以通过自定义规则来验证。 如果某个属性是必须的,在类型后面加上 .isRequired 即可。
React的一大创新,就是把每一个组件都看成是一个状态机,组件内部通过state来维护组件状态的变化,这也是state唯一的作用。
state一般和事件一起使用,我们先看state,然后看看state和事件怎样结合。
这是一个简单的开关组件,开关状态会以文字的形式表现在按钮的文本上。
首先看render方法,返回了一个button元素,给button注册了一个事件用来处理点击事件,在点击事件中对state的on字段取反,并执行 this.setState() 方法设置on字段的新值。一个开关组件就完成了。
组件渲染完成后,必须有UI事件的支持才能正常工作。
React通过将事件处理器绑定到组件上来处理事件。
React事件本质上和原生JS一样,鼠标事件用来处理点击操作,表单事件用于表单元素变化等,Rreact事件的命名、行为和原生JS差不多,不一样的地方是React事件名区分大小写。
比如这段代码中,Article组件的section节点注册了一个onClick事件,点击后弹出alert。
有时候,事件的处理器需要由组件的使用者来提供,这时可以通过props将事件处理器传进来。
这个是刚才那个Article组件的使用者,它提供给Article组件的props中包含了一个onClick属性,这个onClick指向这个组件自身的一个事件处理器,这样就实现了在组件外部处理事件回调。
这是一个React组件实现组件可交互所需的流程,render()输出虚拟DOM,虚拟DOM转为DOM,再在DOM上注册事件,事件触发setState()修改数据,在每次调用setState方法时,React会自动执行render方法来更新虚拟DOM,如果组件已经被渲染,那么还会更新到DOM中去。
这些是React目前支持的事件列表。
React的组件拥有一套清晰完整而且非常容易理解的生命周期机制,大体可以分为三个过程:初始化、更新和销毁,在组件生命周期中,随着组件的props或者state发生改变,它的虚拟DOM和DOM表现也将有相应的变化。
首先是初始化过程,这里会着重讲,需要充分理解。
组件类在声明时,会先调用 getDefaultProps() 方法来获取默认props值,这个方法会且只会在声明组件类时调用一次,这一点需要注意,它返回的默认props由所有实例共享。
在组件被实例化之前,会先调用一次实例方法 getInitialState() 方法,用于获取这个组件的初始state。
实例化之后就是渲染,componentWillMount方法会在生成虚拟DOM之前被调用,你可以在这里对组件的渲染做一些准备工作,比如计算目标容器尺寸然后修改组件自身的尺寸以适应目标容器等等。
接下来就是渲染工作,在这里你会创建一个虚拟DOM用来表示组件的结构。对于一个组件来说,render 是唯一一个必须的方法。render方法需要满足这几点:
- 只能通过 this.props 或 this.state 访问数据
- 只能出现一个顶级组件
- 可以返回 null、false 或任何 React 组件
-
不能对 props、state 或 DOM 进行修改
需要注意的是,render 方法返回的是虚拟DOM。
渲染完成以后,我们可能需要对DOM做一些操作,比如截屏、上报日志、或者初始化iScroll等第三方非React插件,可以在 componentDidMount() 方法中做这些事情。当然,你也可以在这个方法里通过 this.getDOMNode() 方法取得最终生成DOM节点,然后对DOM节点做爱做的事情,但需要注意做好安全措施,不要缓存已经生成的DOM节点,因为这些DOM节点随时可能被替换掉,所以应该在每次用的时候去读取。
组件被初始化完成后,它的状态会随着用户的操作、时间的推移、数据更新而产生变化,变化的过程是组件声明周期的另一部分 ——
更新过程。
当组件已经被实例化后,使用者调用 setProps() 方法修改组件的数据时,组件的 componentWillReceiveProps() 方法会被调用,在这里,你可以对外部传入的数据进行一些预处理,比如从props中读取数据写入state。
默认情况下,组件在 setState() 之后,React会遍历这个组件的所有子组件,进行“灌水”,将props从上到下一层一层传下去,并逐个执行更新操作,虽然React内部已经进行过很多的优化,这个过程并不会花费多少时间,但是程序员里永远不缺乏长期性能饥渴的同学,不用担心,React有一个能够解决你性能饥渴的办法——shouldComponentUpdate()——有时候,props发生了变化,但组件和子组件并不会因为这个props的变化而发生变化,打个比方,你有一个表单组件,你想要修改表单的name,同时你能够确信这个name不会对组件的渲染产生任何影响,那么你可以直接在这个方法里return false来终止后续行为。这样就能够避免无效的虚拟DOM对比了,对性能会有明显提升。
如果这个时候有同学仍然饥渴难耐,那么你可以尝试不可变数据结构(用过mongodb的同学应该懂)。
组件在更新前,React会执行componentWillUpdate() 方法,这个方法类似于前面看到的 componentWillMount()方法,唯一不同的地方只是这个方法在执行的时候组件是已经渲染过的。需要注意的是,不可以在这个方法中修改props或state,如果要修改,应当在 componentWillReceiveProps() 中修改。
然后是渲染,React会拿这次返回的虚拟DOM和缓存中的虚拟DOM进行对比,找出【最小修改点】,然后替换。
更新完成后,React会调用组件的componentDidUpdate 方法,这个方法类似于前面 componentDidMount 方法,你仍然可以在这里可以通过 this.getDOMNode() 方法取得最终的DOM节点。
香港电影结尾经常看到一个剧情,就是英雄打败了坏人,然后警察出来擦屁股——
componentWillUnmount 除了擦屁股什么也做不了。
你可以在这个方法中销毁非React组件注册的事件、插入的节点,或者一些定时器之类。这个过程可能容易出错,比如绑定了事件却没销毁,这个React可帮不了你,你自己约的炮,含着泪也要打完。
下面我们来看看React怎样结合nodejs实现服务端渲染。
服务端渲染有多快我就不多说了。
因为有虚拟DOM的存在,React可以很容易的将虚拟DOM转换为字符串,这便使我们可以只写一份UI代码,同时运行在node里和和浏览器里。
var html = React.renderToString(elem);
在node里将react组件HTML渲染为HTML,一句代码即可。
不过围绕这个renderToString我们还要做一些准备工作:
- 从后台server或数据库等来源拉取数据
- 调用React.renderToString()方法来生成HTML
-
最后发送HTML和数据给浏览器
代码就不贴了,大家自行脑补。
需要注意的是这里的JSON字符串中可能出现</script>结尾标签或HTML注释,可能会导致语法错误,这里需要进行转义。
页面的示例代码本来打算用大家更熟悉的HTML,但发现代码量太多了,所以换成了jade代码,没用过jade的同学也顺便了解一下,我也顺便给jade打个广告。 这个页面做了这几件事:
- 将前面在action里生成的HTML写到#container元素里
- 引入必须的JS文件
- 获取action提供的数据
-
渲染组件
这就是React的服务端渲染,组件的代码前后端都可以复用。
是不是感觉React挺牛逼的?还没完!
React能够用一套代码同时运行在浏览器和node里,而且能够以原生App的姿势运行在iOS和Android系统中,即拥有了web迭代迅速的特性,又拥有原生App的体验。
这个姿势叫做 React-Native。
这是React和React-Native在github上的数据,可以看出React-Native也是相当热门——因为React-Native能够使React的价值最大化,这个价值是什么呢——对业务来说,意味着不需要为了做终端版本就招聘和前端等量人力的终端开发,同时意味着我们成为全栈工程师有了一个捷径。
了解iOS开发的同学都知道,水果公司对应用上架的审核效率实在让人无力吐槽,很多团队上一个版本还没审核结束,下一个版本就已经做好了。而React-Native支持从网络拉取JS,这样iOS应用也能够像web一样实现快速迭代了。
上图就是react-native的调试过程,以 iOS 为例
-
启动 xcode build
- 在模拟器中按下 Command + D 打开菜单,选择 Debug in Chrome
-
在 Chrome dev tools 中调试
当然,react 并不是完美的,在实际使用时你也会发现她的一些缺点,比如:
(如果只是做安卓 app 开发,那么“苹果两件套+开发者证书”不是必须的,在windows下面开发即可。)
最后,大家在使用 react 开发时,可能会需要安装React developer tools
最后是一点参考资料
书山有路勤为径,react 便是那通往『全栈工程师』的捷径。
腾讯Bugly简介
Bugly是腾讯内部产品质量监控平台的外发版本,其主要功能是App发布以后,对用户侧发生的Crash以及卡顿现象进行监控并上报,让开发同学可以第一时间了解到App的质量情况,及时机型修改。目前腾讯内部所有的产品,均在使用其进行线上产品的崩溃监控。
MDH:PHA+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjwvc3Bhbj48YnI+6IW+6K6vQnVnbHnn
ibnnuqbkvZzogIXvvJog5bem5piOPGJyPgo8YnI+CummluWFiO+8jOaIkeS7rOadpeeci+eciyBS
ZWFjdCDlnKjkuJbnlYzojIPlm7TnmoTng63luqbotovlir/vvIzkuIvlm77mmK/lhbPplK7or43i
gJzmiL/ku7figJ3lkowg4oCcUmVhY3TigJ0g5ZyoIEdvb2dsZSBUcmVuZHMg5LiK55qE5pCc57Si
6YeP5a+55q+U77yM6JOd6Imy55qE5pivIFJlYWN077yM57qi6Imy55qE5piv5oi/5Lu377yM5b6I
5piO5pi+77yM5Lq657G75a+5IFJlYWN0IOeahOWFs+azqOeoi+W6puW3sue7j+i/nOi/nOi2hei/
h+S6huWvueaIv+S7t+eahOWFs+azqOOAgjxicj4KPGJyPgrku47ov5nkupvmlbDmja7kuK3vvIzl
pKflrrbog73nnIvlh7rku4DkuYjvvJ88YnI+CuWPr+S7peW+iOaYjuaYvueahOeci+WHuu+8jOaI
keWcqOS4gOacrOato+e7j+eahOaJr+a3oeOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9y
OiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9UZ2NHejU2LmpwZyk8L3NwYW4+PGJy
Pgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIu
Y29tL2EyNnBYQVkuanBnKTwvc3Bhbj48YnI+Cjxicj4K5LuOMjAxNOW5tOWIsOeOsOWcqO+8jFJl
YWN044CBalF1ZXJ55ZKMIEFuZ3VsYXIg55qE54Ot5bqm6LaL5Yq/5a+55q+U77yM5Y+v5Lul5b6I
5piO5pi+55qE55yL5Yiw77yI5LiK5Zu+77yJ77yMUmVhY3Qg5Zyo5YWo55CD55qE54Ot5bqm6LaL
5Yq/5aKe6ZW/6Z2e5bi45b+r44CCPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIy
MjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL1RvekMwa00uanBnKTwvc3Bhbj48YnI+Cjxicj4K
5LiK5Zu+5pivIFJlYWN0IOWcqOWbveWGheeahOeZvuW6puaQnOe0ouaMh+aVsO+8jOaYr+aLvyBS
ZWFjdCDlkowgTm9kZWpzIOWBmuS6huS4quWvueavlO+8jOWPr+S7peeci+WHuiBSZWFjdCDnmoTl
hbPms6jluqbkuZ/lt7Lnu4/pgLzov5Egbm9kZWpz44CCPGJyPgo8YnI+CiZuYnNwO+iZveeEtuWc
qOWFs+azqOaAu+mHj+S4iiBSZWFjdCDov5jov5zkuI3lj4ogalF1ZXJ5IOWSjCBBbmd1bGFyIOet
ieetie+8jOS9huWug+eahOWinumVv+W5heW6pui2heS5juS9oOaDs+ixoe+8jOS9oOefpemBk+i/
meaEj+WRs+edgOS7gOS5iOWQl++8n+i/meaEj+WRs+edgOWFs+azqCBSZWFjdO+8jOS9oOWwseav
lOWkp+WkmuaVsOS6uui1sOWcqOS6huS4mueVjOeahOWJjeayv++8gSZuYnNwOzxicj4KPGJyPgoh
PHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS92MUdq
Sk5vLmpwZyk8L3NwYW4+PGJyPgo8YnI+CiZuYnNwO+mCo+S5iFJlYWN05Yiw5bqV5piv5LuA5LmI
6ay877yfPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDov
L2kuaW1ndXIuY29tL042U3lXUU4uanBnKTwvc3Bhbj48YnI+Cjxicj4K5byV55So5a6Y572R55qE
566A5LuL77yMIuS4gOS4queUqOadpeaehOW7uueUqOaIt+eVjOmdoueahGphdmFzY3JpcHTlupMi
44CCPGJyPgo8YnI+ClJlYWN0IOi1t+a6kOS6jiBGYWNlYm9vayDnmoTlhoXpg6jpobnnm67vvIzl
m6DkuLogRkIg5a+55biC5Zy65LiK5omA5pyJIEphdmFTY3JpcHQgTVZDIOahhuaetu+8jOmDveS4
jea7oeaEj++8jOWwseWGs+WumuiHquW3seWGmeS4gOWll++8jOeUqOadpeaetuiuviBJbnN0YWdy
YW0g55qE572R56uZ44CC5YGa5Ye65p2l5Lul5ZCO77yM5Y+R546w6L+Z5aWX5Lic6KW/5b6I5aW9
55So77yM5bCx5ZyoMjAxM+W5tDXmnIjlvIDmupDkuobjgII8YnI+Cjxicj4K55Sx5LqOIFJlYWN0
IOeahOiuvuiuoeaAneaDs+aegeWFtueLrOeJue+8jOWxnuS6jumdqeWRveaAp+WIm+aWsO+8jOaA
p+iDveWHuuS8l++8jOS7o+eggemAu+i+keWNtOmdnuW4uOeugOWNleOAguaJgOS7pe+8jOi2iuad
pei2iuWkmueahOS6uuW8gOWni+WFs+azqOWSjOS9v+eUqO+8jOiupOS4uuWug+WPr+iDveaYr+Ww
huadpSBXZWIg5byA5Y+R55qE5Li75rWB5bel5YW344CCPGJyPgo8YnI+CuWSjCBCYWNrYm9uZeOA
gUFuZ3VsYXIg562JIE1WKiDmoYbmnrbkuI3kuIDmoLfvvIzlroPlj6rlpITnkIYgVmlldyDpgLvo
vpEg77yM5a6D5Y+q5aSE55CGIFZpZXcg6YC76L6R77yM5a6D5Y+q5aSE55CGIFZpZXcg6YC76L6R
44CC5omA5Lul5aaC5p6c5L2g5Zac5qyi5a6D77yM5L2g5Y+v5Lul5b6I5a655piT55qE5bCG5a6D
5o6l5YWl5Yiw546w5pyJ5bel56iL5Lit77yM54S25ZCO55SoIFJlYWN0IOmHjeWGmSBIVE1MIOmD
qOWIhuWNs+WPr++8jOS4jeeUqOS/ruaUuemAu+i+keOAgjxicj4KPGJyPgrov5Hlh6DlubQgd2Vi
IOmihuWfn+eahOaKgOacr+mdqeaWsOmdnuW4uOi/hemAn++8jFJlYWN05Lmf5piv5LiA6aG55paw
5oqA5pyvJmFtcDtoZWxsaXA76K+d6K+0UmVhY3Tlh7rmnaXkuZ/lt7Lnu48y5bm05LqG77yM5YW2
5a6e5bm25LiN566X5LuA5LmI5paw5oqA5pyv5LqG77yM5Y+q5piv5Zyo5Zu95YaF6L+Y5rKh5pyJ
5pmu5Y+K5byA77yM6L+Z56+H5paH56ug55qE55uu55qE5Lmf5piv5biu5Yqp5aSn5a625pu05b+r
55qE55CG6KejIHJlYWN0IOWSjOiupOivhiByZWFjdCDog73nu5nmiJHku6zluKbmnaXnmoTku7fl
gLzjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8v
aS5pbWd1ci5jb20vT2hhRVByby5qcGcpPC9zcGFuPjxicj4KPGJyPgpSZWFjdCDov5nkuYjngavv
vIzpgqPkuYjlroPliLDlupXmnInku4DkuYjniZvpgLznmoTlnLDmlrnvvJ88YnI+Cjxicj4KITxz
cGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20vNndpT0x6
Yy5qcGcpPC9zcGFuPjxicj4KPGJyPgrkuIrlm77mmK8yMDE15bm05bm05Yid55qE5pWw5o2uPGJy
Pgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIu
Y29tL0FkcW1DNWguanBnKTwvc3Bhbj48YnI+Cjxicj4K6L+Z5pivIEZhY2Vib29rIOeahOWlveWP
i+WKqOaAgemhtemdou+8jOS5n+aYryBGYWNlYm9vayDorr/pl67ph4/mnIDlpKfnmoTpobXpnaLm
sqHmnInkuYvkuIDvvIzpgJrov4cgQ2hyb21lIFJlYWN0IOaPkuS7tuWPr+S7peeci+WIsOi/meS4
qumhtemdouehruWunuaYr+eUqCBSZWFjdCDlrp7njrDnmoTjgIIg77yI5pyJ5ZCM5LqL6Zeu5oiR
5Li65LuA5LmI5YWz5rOo5p+z5bKp77yM5oiR6K+05Zug5Li65oiR5piv5p+z5bKp55qE55CD6L+3
5ZWK77yJPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDov
L2kuaW1ndXIuY29tL0NJaEFBdHEuanBnKTwvc3Bhbj48YnI+Cjxicj4K5YmN6Z2i57uZ5aSn5a62
5p2l5LqG5LiA5rOi5YmN5oiP77yM55u45L+h5aSn5a625bey57uP5pyJ54K56L+r5LiN5Y+K5b6F
5LqG77yM6YKj5LmI77yM6L+b5YWl5q2j6aKY77yaIOmmluWFiO+8jOWFiOi3n+Wkp+WutuaPj+i/
sOS4iyBSZWFjdCDmnIDnibnliKvnmoTpg6jliIbvvIzlkKzlrozov5npg6jliIblpKflrrbln7rm
nKzlsLHog73lpJ/lnKjohJHmtbfph4zlu7rnq4votbfkuIDkuKogUmVhY3Qg55qE5aSn6Ie05Y2w
6LGh44CCJm5ic3A7PGJyPgo8YnI+CueEtuWQjuaYryBSZWFjdCDnmoTmoLjlv4PlhoXlrrnvvIzl
kKzlrozov5npg6jliIblpKflrrblvoXkvJrlm57ljrvlsLHlj6/ku6XlvIDlp4vlhpnku6PnoIHn
hLblkI7ku4rlpKnmmZrkuIrlj5HluIPkuIrnur/kuobjgIIg5pyA5ZCO5pivIFJlYWN0IOiDveWk
n+e7meaIkeS7rOWunumZheW4puadpeeahOS7t+WAvO+8jOaIkeS7rOS4jeS9nOaXoOaEj+S5ieea
hOS7o+eggemHjeaehOOAgiZuYnNwOzxicj4KPGJyPgrpppblhYjvvIzmiJHku6zmnaXnnItKU1ji
gJTigJQ8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8v
aS5pbWd1ci5jb20veXFEaHdIQy5qcGcpPC9zcGFuPjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNv
bG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9yRUxicTlkLmpwZyk8L3NwYW4+
PGJyPgo8YnI+CkpTWCDkvb/nlKjnmoTmmK/pooTnvJbor5HmqKHmnb/vvIxSZWFjdCDmj5Dkvpvk
uobkuIDkuKrpooTnvJbor5Hlt6XlhbfvvIzlj6sgcmVhY3QtdG9vbHPvvIzlj6/ku6XpgJrov4cg
bnBtIOWRveS7pOWuieijhe+8jOS4gOiIrOaYr+WcqOW8gOWPkeaXtuacn+i/kOihjO+8jOi/kOih
jOWQjuWug+S8muWQr+WKqOS4gOS4quebkeWQrOeoi+W6j++8jOWunuaXtuebkeWQrCBKU1gg5rqQ
56CB55qE5L+u5pS577yM54S25ZCO6Ieq5Yqo57yW6K+R5Li6IEpTIOS7o+eggeOAgiZuYnNwOzxi
cj4KPGJyPgrlpKflrrbnlZnmhI/kuIvvvIxyZW5kZXIoKSDmlrnms5Xph4znmoTooqvnvJbor5Hm
iJDkuoYgUmVhY3QuY3JlYXRlRWxlbWVudCgp77yM5a6D6L+Z5LmI5YGa77yM55uu55qE5bCx5piv
5Li65LqG5a6e546w6Jma5oufIERPTeOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAj
YjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9kb0U4dnptLmpwZyk8L3NwYW4+PGJyPgo8
YnI+CuaOpeS4i+adpeaIkeS7rOadpeS6huinoyBSZWFjdCDmnIDlpKfnmoTkuq7ngrkg4oCU4oCU
4oCU4oCUIOiZmuaLnyBET03jgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIy
MjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20vZDlkR1pKMi5qcGcpPC9zcGFuPjxicj4KPGJyPgrk
vKDnu58gd2ViIGFwcCDlkowgRE9NIOebtOaOpeS6pOS6ku+8jOeUsUFwcOadpeaOp+WItkRPTeea
hOaehOW7uuWSjOa4suafk+OAgeWFg+e0oOWxnuaAp+eahOivu+WGmeOAgeS6i+S7tueahOazqOWG
jOWSjOmUgOavgeetieetieOAgiDlvZPmlrDkuqflk4HliJrkuIrnur/nmoTml7blgJnvvIzov5nn
p43lgZrms5XnnIvotbfmnaXkuZ/mjLrlpb3jgILkvYbpmo/nnYDkuqflk4Hlip/og73otormnaXo
torkuLDlr4zjgIHku6PnoIHph4/otormnaXotorlpJrjgIHlvIDlj5Hlm6LpmJ/kurrlkZjotorm
naXotorlpJog4oCU4oCU4oCU4oCU4oCUPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNi
MjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tLzdKZ2phV3cuanBnKTwvc3Bhbj48YnI+Cjxi
cj4KJm5ic3A75LiA5bm05ZCOPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7
ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL2ZlTkZoT1ouanBnKTwvc3Bhbj48YnI+Cjxicj4K5L2g
55qE5Luj56CB5Y+v6IO95Lya5Y+Y5oiQ6L+Z5qC344CCPGJyPgo8YnI+CuW9k+eEtu+8jOWQiOeQ
hueahOS7o+eggeinhOWIkuiDveWkn+mBv+WFjei/meexu+mXrumimO+8jOS9huWboumYn+mHjOma
vuWFjeS8muacieaThemVv+WxoOWusOW8j+e8lueoi+eahOWQjOWtpu+8jOWIhuWIhumSn+aKiuS9
oOS7o+eggeaUueeahOmdouebruWFqOmdnuOAgjxicj4KPGJyPgrov5nml7bvvIxSZWFjdOeahOiZ
muaLn0RPTeWSjOWNlemhueaVsOaNrua1geWwseiDveW+iOWlveeahOino+WGs+i/meS4qumXrumi
mOOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9p
LmltZ3VyLmNvbS9tZENyYUZTLmpwZyk8L3NwYW4+PGJyPgo8YnI+CuiZmuaLn0RPTeWImeaYr+Wc
qERPTeeahOWfuuehgOS4iuW7uueri+S6huS4gOS4quaKveixoeWxgu+8jOaIkeS7rOWvueaVsOaN
ruWSjOeKtuaAgeaJgOWBmueahOS7u+S9leaUueWKqO+8jOmDveS8muiiq+iHquWKqOS4lOmrmOaV
iOeahOWQjOatpeWIsOiZmuaLn0RPTe+8jOacgOWQjuWGjeaJuemHj+WQjOatpeWIsERPTeS4reOA
gjxicj4KPGJyPgromZrmi59ET03kvJrkvb/lvpdBcHDlj6rlhbPlv4PmlbDmja7lkoznu4Tku7bn
moTmiafooYznu5PmnpzvvIzkuK3pl7TkuqfnlJ/nmoRET03mk43kvZzkuI3pnIDopoFBcHDlubLp
ooTvvIzogIzkuJTpgJrov4fomZrmi59ET03mnaXnlJ/miJBET03vvIzkvJrmnInkuIDpobnpnZ7l
uLjlj6/op4LmlLbnm4otLS0tLeaAp+iDveOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9y
OiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9qNmlYU0JMLmpwZyk8L3NwYW4+PGJy
Pgo8YnI+CuaJgOacieS6uumDveefpemBk0RPTeaFou+8jOa4suafk+S4gOS4quepuueahERJVu+8
jOa1j+iniOWZqOmcgOimgeS4uui/meS4qkRJVueUn+aIkOWHoOeZvuS4quWxnuaAp++8jOiAjOiZ
muaLn0RPTeWPquaciTbkuKrvvIzmiYDku6Xlh4/lsJHkuI3lv4XopoHnmoTph43mjpLph43nu5jk
u6Xlj4pET03or7vlhpnog73lpJ/lr7npobXpnaLmuLLmn5PmgKfog73mnInlpKfluYXmj5DljYfj
gII8YnI+Cjxicj4K6YKj5LmI5oiR5Lus5p2l55yL55yL6Jma5oufRE9N5piv5oCO5LmI5YGa55qE
77yaUmVhY3TkvJrlnKjlhoXlrZjkuK3nu7TmiqTkuIDkuKromZrmi59ET03moJHvvIzlvZPmiJHk
u6zlr7nov5nkuKrmoJHov5vooYzor7vmiJblhpnnmoTml7blgJnvvIzlrp7pmYXkuIrmmK/lr7no
mZrmi59ET03ov5vooYznmoTjgILlvZPmlbDmja7lj5jljJbml7bvvIznhLblkI5SZWFjdOS8muiH
quWKqOabtOaWsOiZmuaLn0RPTe+8jOeEtuWQjuaLv+aWsOeahOiZmuaLn0RPTeWSjOaXp+eahOiZ
muaLn0RPTei/m+ihjOWvueavlO+8jOaJvuWIsOacieWPmOabtOeahOmDqOWIhu+8jOW+l+WHuuS4
gOS4qlBhdGNo77yM54S25ZCO5bCG6L+Z5LiqUGF0Y2jmlL7liLDkuIDkuKrpmJ/liJfph4zvvIzm
nIDnu4jmibnph4/mm7TmlrDov5nkuptQYXRjaOWIsERPTeS4reOAgjxicj4KPGJyPgrov5nmoLfn
moTmnLrliLblj6/ku6Xkv53or4HljbPkvr/mmK/moLnoioLngrnmlbDmja7nmoTlj5jljJbvvIzm
nIDnu4jooajnjrDlnKhET03kuIrnmoTkv67mlLnkuZ/lj6rmmK/lj5fov5nkuKrmlbDmja7lvbHl
k43nmoTpg6jliIbvvIzlj6/ku6Xkv53or4HpnZ7luLjpq5jmlYjnmoTmuLLmn5PjgII8YnI+Cjxi
cj4K5L2G6L+Z5qC35Lmf5piv5pyJ5LiA5a6a55qE57y66Zm355qELS0tLemmluasoea4suafk+Wk
p+mHj0RPTeaXtuWboOS4uuWkmuS6huS4gOWxguiZmuaLn0RPTeeahOiuoeeul++8jOS8muavlGlu
bmVySFRNTOaPkuWFpeaWueW8j+aFou+8jOaJgOS7peS9v+eUqOaXtumcgOimgeehruS/neS4jeim
geS4gOasoeaAp+a4suafk+Wkp+mHj0RPTeOAgjxicj4KPGJyPgrlh6DkuKpVSee7hOS7tueahOa4
suafk+aAp+iDveWvueavlDxicj4KPGJyPgo8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+
W2h0dHA6Ly9tYXRoaWV1YW5jZWxpbi5naXRodWIuaW8vanMtcmVwYWludC1wZXJmcy9dKGh0dHA6
Ly9tYXRoaWV1YW5jZWxpbi5naXRodWIuaW8vanMtcmVwYWludC1wZXJmcy8pPC9zcGFuPjxicj4K
PGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNv
bS9zcEljQThkLmpwZyk8L3NwYW4+PGJyPgo8YnI+CuS4gOS4quacgOWfuuacrOeahCBSZWFjdCDn
u4Tku7bnlLHmlbDmja7lkoxKU1jkuKTkuKrkuLvopoHpg6jliIbmnoTmiJDvvIzmiJHku6zlhYjm
naXnnIvnnIvmlbDmja7jgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsg
Ij5bXShodHRwOi8vaS5pbWd1ci5jb20vRDJESTlxMy5qcGcpPC9zcGFuPjxicj4KPGJyPgrov5nm
mK/kuIDkuKrnroDljZXljZXlrozmlbTnmoRSZWFjdOe7hOS7tuOAkOexu+OAke+8jOe7huiKguWk
p+WutuWFiOS4jeeUqOWkquWcqOaEj+e7huiKgu+8jOS6huino+acuuWItuWwseWPr+S7peOAgjxi
cj4KPGJyPgpwcm9wcyDkuLvopoHkvZznlKjmmK/mj5DkvpvmlbDmja7mnaXmupDvvIzlj6/ku6Xn
roDljZXnmoTnkIbop6PkuLogcHJvcHMg5bCx5piv5p6E6YCg5Ye95pWw55qE5Y+C5pWw44CCIHN0
YXRlIOWUr+S4gOeahOS9nOeUqOaYr+aOp+WItue7hOS7tueahOihqOeOsO+8jOeUqOadpeWtmOaU
vuS8mumaj+edgOS6pOS6kuWPmOWMlueKtuaAge+8jOavlOWmguW8gOWFs+eKtuaAgeetieOAgjxi
cj4KPGJyPgpKU1gg5YGa55qE5LqL5oOF5bCx5piv5qC55o2uIHN0YXRlIOWSjCBwcm9wcyDkuK3n
moTlgLzvvIznu5PlkIjkuIDkupvop4blm77lsYLpnaLnmoTpgLvovpHvvIzovpPlh7rlr7nlupTn
moQgRE9NIOe7k+aehOOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAi
PltdKGh0dHA6Ly9pLmltZ3VyLmNvbS8xQUI4RHN1LmpwZyk8L3NwYW4+PGJyPgo8YnI+CuWJjemd
ouaIkeS7rOefpemBk+S6huS4gOS4queugOWNleeahOe7hOS7tueahOaehOaIkO+8jOS9huWNleS4
queahOe7hOS7tuiCr+WumuS4jeiDvea7oei2s+WunumZhemcgOaxgu+8jOaIkeS7rOmcgOimgeWB
mueahOaYr+Wwhui/meS6m+eLrOeri+eahOe7hOS7tui/m+ihjOe7hOijhe+8jOWQjOaXtuaJvuWH
uuWFseaAp+eahOmDqOWIhui/m+ihjOWkjeeUqOOAgjxicj4KPGJyPgrmr5TlpoLov5nmoLfkuIDk
uKrlnLrmma88YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRw
Oi8vaS5pbWd1ci5jb20vVW9vV2hnOS5qcGcpPC9zcGFuPjxicj4KPGJyPgrmiJHku6zku6Xov5nm
oLfkuIDkuKrnlYzpnaLkuLrkvovvvIzlj6/ku6XnnIvlh7rvvIzph4zpnaLnmoQgJmFtcDtsdDtQ
dWIvJmFtcDtndDsgJmFtcDtsdDtBcnRpY2xlLyZhbXA7Z3Q7IOmDveaYr+acgOe7hueykuW6puea
hOe7hOS7tu+8jOaYr+WPr+S7peWkjeeUqOeahOOAgiDpppblhYjvvIzmiJHku6zmnaXnnIvkuItB
cnRpY2xl55qE5Luj56CBJmFtcDttZGFzaDsmYW1wO21kYXNoOzxicj4KPGJyPgohPHNwYW4gc3R5
bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9YTTRLU1U2LmpwZyk8
L3NwYW4+PGJyPgo8YnI+Cui/meS4quWwseaYr+aIkeS7rOWIhuino+WHuuadpeeahCBBcnRpY2xl
IOe7hOS7tu+8jOWug+mcgOimgTLkuKrlsZ7mgKfvvIxhcnRpY2xl5a+56LGh5ZKMc2hvd0ltYWdl
44CCYXJ0aWNsZeWvueixoeWMheWQq+WbvueJh+OAgeWcsOWdgOOAgeagh+mimOOAgeaPj+i/sOS/
oeaBr++8jHNob3dJbWFnZeaYr+S4gOS4quW4g+WwlOexu+Wei++8jOeUqOadpeWIpOaWreaYr+WQ
pumcgOimgeaYvuekuuaIkOS4gOS4quWbvueJh+OAgjxicj4KPGJyPgrov5nkuKrnu4Tku7bmnKzo
uqvnmoTlrp7njrDlj6/ku6XlvojnroDljZXkuZ/lj6/ku6XlvojlpI3mnYLvvIzkvYbkvb/nlKjo
gIXlj6/kuI3lhbPlv4PkvaDnmoTlhoXpg6jlrp7njrDvvIzkvb/nlKjogIXlhbPlv4PnmoTmmK/n
u4Tku7bpnIDopoHku4DkuYjlj4LmlbDlsLHlj6/ku6XkuobjgII8YnI+Cjxicj4K5aSW5Zu95Lq6
55qE57uE5Lu25YyW5oCd5oOz5q+U5oiR5Lus5Zu95YaF55qE5pmu5Y+K56iL5bqm6auY5b6I5aSa
77yM5LiN5Y+q5bGA6ZmQ5LqO6L2v5Lu25byA5Y+R77yM5YyF5ous5a6e5L2T6KGM5Lia55qE5ZKW
5ZWh5py644CB5Yqg5rK556uZ44CBIOWEv+erpeaRh+aRh+i9pumDveaciei/meenjeiuvuiuoeaA
neaDs+WcqOmHjOmdouOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAi
PltdKGh0dHA6Ly9pLmltZ3VyLmNvbS95bXFPTTZwLmpwZyk8L3NwYW4+PGJyPgo8YnI+CuW4jOac
m+Wkp+WutuWcqOiuvuiuoeaooeWdl+eahOaXtuWAme+8jOS5n+WwveWPr+iDveWwhue7hOS7tumA
u+i+keWvueWklumAj+aYju+8jOadpeWHj+Wwkee7tOaKpOaIkOacrOOAgjxicj4KPGJyPgohPHNw
YW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9zNU11bmFr
LmpwZyk8L3NwYW4+PGJyPgo8YnI+CuWkp+WutueVmeaEj+S4gOS4i+agh+iZmue6v+eahOmDqOWI
hu+8jOi/memHjOWkjeeUqOS6hiBBcnRpY2xlIOe7hOS7tuOAgui/meaXtueahCBBcnRpY2xlIOe7
hOS7tueci+i1t+adpeWwseaYr+S4gOS4quaZrumAmueahOagh+etvuiAjOW3su+8jOeugOWNleWQ
p+OAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9p
LmltZ3VyLmNvbS9qTndrTHplLmpwZyk8L3NwYW4+PGJyPgo8YnI+Cui/meS4quaYr+eDremXrue7
hOS7tu+8jOS5n+WkjeeUqOS6hiBBcnRpY2xlIOe7hOS7tuOAgui/meWwseaYryBSZWFjdCDlpoLk
uJ3oiKzpobrmu5HnmoTnu4Tku7blpI3lkIjjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xv
cjogI2IyMjIyMjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20vdkx0QzNiVS5qcGcpPC9zcGFuPjxi
cj4KPGJyPgrov5nkuKrvvIzlj6vlgZrnq7nnrJXvvIzmmK/kuK3ml6XkvKDnu5/npoXmlofljJbk
uK3luLjop4HnmoTluq3pmaLoo4XppbDlk4HvvIzlroPnmoTmnoTpgKDlj6/nroDljZXlj6/lpI3m
nYLvvIzkvYbljp/nkIblvojnroDljZXvvIzmr5TlpoLov5nkuKrnq7nnrJXvvIzmsLTku47nq7nn
rJXpobbpg6jlhaXlj6PmtYHlhaXlhoXpg6jvvIzlubbmjInnhaflm7rlrprnmoTpobrluo/ku47k
uIrlkJHkuIvkvp3mrKHmtYHlhaXlkITkuKrlsI/nq7nnrZLvvIznhLblkI7pqbHliqjmsLTova7o
vazliqjjgILlr7nkuo7lvLrov6vnl4fmgqPogIXmnaXor7TvvIzop4LotY/nq7nnrJXnmoTnu53l
r7nmmK/kuIDnp43lvojkuqvlj5fnmoTov4fnqIvnmoTmnIDniLHvvIzkvaDkvJrlj5HnjrDov5nk
upvlsI/njqnmhI/nq5/nhLbog73ov5nkuYjmtYHnlYXnmoTljY/osIPotbfmnaXvvIzlpb3npZ7l
pYfjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8v
aS5pbWd1ci5jb20vdGdXQVh4Mi5qcGcpPC9zcGFuPjxicj4KPGJyPgrlpoLmnpznq7nnrJXmmK/k
uIDkuKrnu4Tku7bnmoTor53vvIzpgqPkuYjmsLTlsLHmmK/nu4Tku7bnmoTmlbDmja7mtYHjgII8
YnI+Cjxicj4K5ZyoUmVhY3TkuK3vvIzmlbDmja7mtYHmmK/oh6rkuIrogIzkuIvljZXlkJHnmoTk
u47niLboioLngrnkvKDpgJLliLDlrZDoioLngrnvvIzmiYDku6Xnu4Tku7bmmK/nroDljZXkuJTl
rrnmmJPmiormj6HnmoTvvIzku5bku6zlj6rpnIDopoHku47niLboioLngrnmj5DkvpvnmoRwcm9w
c+S4reiOt+WPluaVsOaNruW5tua4suafk+WNs+WPr+OAguWmguaenOmhtuWxgue7hOS7tueahOaf
kOS4qnByb3DmlLnlj5jkuobvvIxSZWFjdOS8mumAkuW9kuWcsOWQkeS4i+mBjeWOhuaVtOajtee7
hOS7tuaVsO+8jOmHjeaWsOa4suafk+aJgOacieS9v+eUqOi/meS4quWxnuaAp+eahOe7hOS7tuOA
gjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmlt
Z3VyLmNvbS9aeFFjdFhzLmpwZyk8L3NwYW4+Jm5ic3A7PGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0i
Y29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL3RqaEhKNm0uanBnKTwvc3Bh
bj4mbmJzcDs8YnI+Cjxicj4K6L+Z5Liq5piv5YmN6Z2i55yL5Yiw55qEIEFydGljbGUg6aKY57uE
5Lu277yM5oul5pyJ5LiA5Liq5Y+r5YGaIGFydGljbGVzIOeahOWxnuaAp+OAgjxicj4KPGJyPgrl
nKjnu4Tku7blhoXpg6jvvIzlj6/ku6XpgJrov4d0aGlzLnByb3Bz5p2l6K6/6ZeucHJvcHPvvIxw
cm9wc+aYr+e7hOS7tuWUr+S4gOeahOaVsOaNruadpea6kO+8jCZsdDtzcGFuIHN0eWxlPSJjb2xv
cjogI2ZmMDAwMDsiJmd0OyZsdDtzdHJvbmcmZ3Q75a+55LqO57uE5Lu25p2l6K+0Jmx0Oy9zdHJv
bmcmZ3Q7Jmx0Oy9zcGFuJmd0O++8mjxicj4KPGJyPgombHQ7c3BhbiBzdHlsZT0iY29sb3I6ICNm
ZjAwMDA7IiZndDsgcHJvcHPmsLjov5zmmK/lj6ror7vnmoTjgIImbHQ7L3NwYW4mZ3Q7PGJyPgo8
YnI+Cue7hOS7tueahOWxnuaAp+exu+Wei+WmguaenOS4jei/m+ihjOWjsOaYjuWSjOmqjOivge+8
jOmCo+S5iOW+iOWPr+iDveS9v+eUqOiAheS8oOe7meS9oOeahOWxnuaAp+WAvOaIluiAheexu+We
i+aYr+aXoOaViOeahO+8jOmCo+S8muWvvOiHtOS4gOS6m+aEj+aWmeS5i+WklueahOaVhemanOOA
guWlveWcqFJlYWN05bey57uP5Li65oiR5Lus5o+Q5L6b5LqG5LiA5aWX6Z2e5bi4566A5Y2V5aW9
55So55qE5bGe5oCn5qCh6aqM5py65Yi2JmFtcDttZGFzaDsmYW1wO21kYXNoOzxicj4KPGJyPgoh
PHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9CM2pr
ZjlNLmpwZyk8L3NwYW4+PGJyPgo8YnI+ClJlYWN05pyJ5LiA5LiqUHJvcFR5cGVz5bGe5oCn5qCh
6aqM5bel5YW377yM57uP6L+H566A5Y2V55qE6YWN572u5Y2z5Y+v44CC5b2T5L2/55So6ICF5Lyg
5YWl55qE5Y+C5pWw5LiN5ruh6Laz5qCh6aqM6KeE5YiZ5pe277yMUmVhY3TkvJrnu5nlh7rpnZ7l
uLjor6bnu4bnmoTorablkYrvvIzlrprkvY3pl67popjkuI3opoHlpKrlrrnmmJPjgII8YnI+Cjxi
cj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20v
WFBVUGJSeC5qcGcpPC9zcGFuPjxicj4KPGJyPgpQcm9wVHlwZXPljIXlkKvnmoTmoKHpqoznsbvl
novljIXmi6zln7rmnKznsbvlnovjgIHmlbDnu4TjgIHlr7nosaHjgIHlrp7kvovjgIHmnprkuL4m
YW1wO21kYXNoOyZhbXA7bWRhc2g7PGJyPgo8YnI+CuS7peWPiuWvueixoeexu+Wei+eahOa3seWF
pemqjOivgeetieetieOAguWmguaenOWGhee9rueahOmqjOivgeexu+Wei+S4jea7oei2s+mcgOax
gu+8jOi/mOWPr+S7pemAmui/h+iHquWumuS5ieinhOWImeadpemqjOivgeOAgiDlpoLmnpzmn5Dk
uKrlsZ7mgKfmmK/lv4XpobvnmoTvvIzlnKjnsbvlnovlkI7pnaLliqDkuIogLmlzUmVxdWlyZWQg
5Y2z5Y+v44CCPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0
cDovL2kuaW1ndXIuY29tL000elVDeUMuanBnKTwvc3Bhbj48YnI+Cjxicj4KUmVhY3TnmoTkuIDl
pKfliJvmlrDvvIzlsLHmmK/miormr4/kuIDkuKrnu4Tku7bpg73nnIvmiJDmmK/kuIDkuKrnirbm
gIHmnLrvvIznu4Tku7blhoXpg6jpgJrov4dzdGF0Zeadpee7tOaKpOe7hOS7tueKtuaAgeeahOWP
mOWMlu+8jOi/meS5n+aYr3N0YXRl5ZSv5LiA55qE5L2c55So44CCPGJyPgo8YnI+CiE8c3BhbiBz
dHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL3N4RkVnQWMuanBn
KTwvc3Bhbj48YnI+Cjxicj4Kc3RhdGXkuIDoiKzlkozkuovku7bkuIDotbfkvb/nlKjvvIzmiJHk
u6zlhYjnnItzdGF0Ze+8jOeEtuWQjueci+eci3N0YXRl5ZKM5LqL5Lu25oCO5qC357uT5ZCI44CC
PGJyPgo8YnI+Cui/meaYr+S4gOS4queugOWNleeahOW8gOWFs+e7hOS7tu+8jOW8gOWFs+eKtuaA
geS8muS7peaWh+Wtl+eahOW9ouW8j+ihqOeOsOWcqOaMiemSrueahOaWh+acrOS4iuOAgjxicj4K
PGJyPgrpppblhYjnnItyZW5kZXLmlrnms5XvvIzov5Tlm57kuobkuIDkuKpidXR0b27lhYPntKDv
vIznu5lidXR0b27ms6jlhozkuobkuIDkuKrkuovku7bnlKjmnaXlpITnkIbngrnlh7vkuovku7bv
vIzlnKjngrnlh7vkuovku7bkuK3lr7lzdGF0ZeeahG9u5a2X5q615Y+W5Y+N77yM5bm25omn6KGM
IHRoaXMuc2V0U3RhdGUoKSDmlrnms5Xorr7nva5vbuWtl+auteeahOaWsOWAvOOAguS4gOS4quW8
gOWFs+e7hOS7tuWwseWujOaIkOS6huOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAj
YjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9DYjJnTjlsLmpwZyk8L3NwYW4+PGJyPgo8
YnI+Cue7hOS7tua4suafk+WujOaIkOWQju+8jOW/hemhu+aciVVJ5LqL5Lu255qE5pSv5oyB5omN
6IO95q2j5bi45bel5L2c44CCPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7
ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL1lpZkV6NFUuanBnKTwvc3Bhbj48YnI+Cjxicj4KUmVh
Y3TpgJrov4flsIbkuovku7blpITnkIblmajnu5HlrprliLDnu4Tku7bkuIrmnaXlpITnkIbkuovk
u7bjgII8YnI+Cjxicj4KUmVhY3Tkuovku7bmnKzotKjkuIrlkozljp/nlJ9KU+S4gOagt++8jOm8
oOagh+S6i+S7tueUqOadpeWkhOeQhueCueWHu+aTjeS9nO+8jOihqOWNleS6i+S7tueUqOS6juih
qOWNleWFg+e0oOWPmOWMluetie+8jFJyZWFjdOS6i+S7tueahOWRveWQjeOAgeihjOS4uuWSjOWO
n+eUn0pT5beu5LiN5aSa77yM5LiN5LiA5qC355qE5Zyw5pa55pivUmVhY3Tkuovku7blkI3ljLrl
iIblpKflsI/lhpnjgII8YnI+Cjxicj4K5q+U5aaC6L+Z5q615Luj56CB5Lit77yMQXJ0aWNsZee7
hOS7tueahHNlY3Rpb27oioLngrnms6jlhozkuobkuIDkuKpvbkNsaWNr5LqL5Lu277yM54K55Ye7
5ZCO5by55Ye6YWxlcnTjgII8YnI+Cjxicj4K5pyJ5pe25YCZ77yM5LqL5Lu255qE5aSE55CG5Zmo
6ZyA6KaB55Sx57uE5Lu255qE5L2/55So6ICF5p2l5o+Q5L6b77yM6L+Z5pe25Y+v5Lul6YCa6L+H
cHJvcHPlsIbkuovku7blpITnkIblmajkvKDov5vmnaXjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxl
PSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20veGs2Ums1MS5qcGcpPC9z
cGFuPjxicj4KPGJyPgrov5nkuKrmmK/liJrmiY3pgqPkuKpBcnRpY2xl57uE5Lu255qE5L2/55So
6ICF77yM5a6D5o+Q5L6b57uZQXJ0aWNsZee7hOS7tueahHByb3Bz5Lit5YyF5ZCr5LqG5LiA5Liq
b25DbGlja+WxnuaAp++8jOi/meS4qm9uQ2xpY2vmjIflkJHov5nkuKrnu4Tku7boh6rouqvnmoTk
uIDkuKrkuovku7blpITnkIblmajvvIzov5nmoLflsLHlrp7njrDkuoblnKjnu4Tku7blpJbpg6jl
pITnkIbkuovku7blm57osIPjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIy
MjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20vQk5xakM0ZS5qcGcpPC9zcGFuPjxicj4KPGJyPgro
v5nmmK/kuIDkuKpSZWFjdOe7hOS7tuWunueOsOe7hOS7tuWPr+S6pOS6kuaJgOmcgOeahOa1geeo
i++8jHJlbmRlcigp6L6T5Ye66Jma5oufRE9N77yM6Jma5oufRE9N6L2s5Li6RE9N77yM5YaN5Zyo
RE9N5LiK5rOo5YaM5LqL5Lu277yM5LqL5Lu26Kem5Y+Rc2V0U3RhdGUoKeS/ruaUueaVsOaNru+8
jOWcqOavj+asoeiwg+eUqHNldFN0YXRl5pa55rOV5pe277yMUmVhY3TkvJroh6rliqjmiafooYxy
ZW5kZXLmlrnms5XmnaXmm7TmlrDomZrmi59ET03vvIzlpoLmnpznu4Tku7blt7Lnu4/ooqvmuLLm
n5PvvIzpgqPkuYjov5jkvJrmm7TmlrDliLBET03kuK3ljrvjgII8YnI+Cjxicj4KITxzcGFuIHN0
eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXShodHRwOi8vaS5pbWd1ci5jb20veXIxZnVVQi5qcGcp
PC9zcGFuPjxicj4KPGJyPgrov5nkupvmmK9SZWFjdOebruWJjeaUr+aMgeeahOS6i+S7tuWIl+ih
qOOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9p
LmltZ3VyLmNvbS9TOW5KbnZmLmpwZyk8L3NwYW4+PGJyPgo8YnI+ClJlYWN055qE57uE5Lu25oul
5pyJ5LiA5aWX5riF5pmw5a6M5pW06ICM5LiU6Z2e5bi45a655piT55CG6Kej55qE55Sf5ZG95ZGo
5pyf5py65Yi277yM5aSn5L2T5Y+v5Lul5YiG5Li65LiJ5Liq6L+H56iL77ya5Yid5aeL5YyW44CB
5pu05paw5ZKM6ZSA5q+B77yM5Zyo57uE5Lu255Sf5ZG95ZGo5pyf5Lit77yM6ZqP552A57uE5Lu2
55qEcHJvcHPmiJbogIVzdGF0ZeWPkeeUn+aUueWPmO+8jOWug+eahOiZmuaLn0RPTeWSjERPTeih
qOeOsOS5n+WwhuacieebuOW6lOeahOWPmOWMluOAgjxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNv
bG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9Bc3Flb2dILmpwZyk8L3NwYW4+
PGJyPgo8YnI+CummluWFiOaYr+WIneWni+WMlui/h+eoi++8jOi/memHjOS8muedgOmHjeiusu+8
jOmcgOimgeWFheWIhueQhuino+OAgjxicj4KPGJyPgrnu4Tku7bnsbvlnKjlo7DmmI7ml7bvvIzk
vJrlhYjosIPnlKggZ2V0RGVmYXVsdFByb3BzKCkg5pa55rOV5p2l6I635Y+W6buY6K6kcHJvcHPl
gLzvvIzov5nkuKrmlrnms5XkvJrkuJTlj6rkvJrlnKjlo7DmmI7nu4Tku7bnsbvml7bosIPnlKjk
uIDmrKHvvIzov5nkuIDngrnpnIDopoHms6jmhI/vvIzlroPov5Tlm57nmoTpu5jorqRwcm9wc+eU
seaJgOacieWunuS+i+WFseS6q+OAgjxicj4KPGJyPgrlnKjnu4Tku7booqvlrp7kvovljJbkuYvl
iY3vvIzkvJrlhYjosIPnlKjkuIDmrKHlrp7kvovmlrnms5UgZ2V0SW5pdGlhbFN0YXRlKCkg5pa5
5rOV77yM55So5LqO6I635Y+W6L+Z5Liq57uE5Lu255qE5Yid5aeLc3RhdGXjgII8YnI+Cjxicj4K
5a6e5L6L5YyW5LmL5ZCO5bCx5piv5riy5p+T77yMY29tcG9uZW50V2lsbE1vdW505pa55rOV5Lya
5Zyo55Sf5oiQ6Jma5oufRE9N5LmL5YmN6KKr6LCD55So77yM5L2g5Y+v5Lul5Zyo6L+Z6YeM5a+5
57uE5Lu255qE5riy5p+T5YGa5LiA5Lqb5YeG5aSH5bel5L2c77yM5q+U5aaC6K6h566X55uu5qCH
5a655Zmo5bC65a+454S25ZCO5L+u5pS557uE5Lu26Ieq6Lqr55qE5bC65a+45Lul6YCC5bqU55uu
5qCH5a655Zmo562J562J44CCPGJyPgo8YnI+CuaOpeS4i+adpeWwseaYr+a4suafk+W3peS9nO+8
jOWcqOi/memHjOS9oOS8muWIm+W7uuS4gOS4quiZmuaLn0RPTeeUqOadpeihqOekuue7hOS7tuea
hOe7k+aehOOAguWvueS6juS4gOS4que7hOS7tuadpeivtO+8jHJlbmRlciDmmK/llK/kuIDkuIDk
uKrlv4XpobvnmoTmlrnms5XjgIJyZW5kZXLmlrnms5XpnIDopoHmu6HotrPov5nlh6DngrnvvJo8
YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjEuJm5ic3A7PC9zcGFuPuWP
quiDvemAmui/hyB0aGlzLnByb3BzIOaIliB0aGlzLnN0YXRlIOiuv+mXruaVsOaNrjxicj4KPHNw
YW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjIuJm5ic3A7PC9zcGFuPuWPquiDveWHuueOsOS4
gOS4qumhtue6p+e7hOS7tjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjMuJm5i
c3A7PC9zcGFuPuWPr+S7pei/lOWbniBudWxs44CBZmFsc2Ug5oiW5Lu75L2VIFJlYWN0IOe7hOS7
tjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjQuJm5ic3A7PC9zcGFuPuS4jeiD
veWvuSBwcm9wc+OAgXN0YXRlIOaIliBET00g6L+b6KGM5L+u5pS5PGJyPgo8YnI+CumcgOimgeaz
qOaEj+eahOaYr++8jHJlbmRlciDmlrnms5Xov5Tlm57nmoTmmK/omZrmi59ET03jgII8YnI+Cjxi
cj4K5riy5p+T5a6M5oiQ5Lul5ZCO77yM5oiR5Lus5Y+v6IO96ZyA6KaB5a+5RE9N5YGa5LiA5Lqb
5pON5L2c77yM5q+U5aaC5oiq5bGP44CB5LiK5oql5pel5b+X44CB5oiW6ICF5Yid5aeL5YyWaVNj
cm9sbOetieesrOS4ieaWuemdnlJlYWN05o+S5Lu277yM5Y+v5Lul5ZyoIGNvbXBvbmVudERpZE1v
dW50KCkg5pa55rOV5Lit5YGa6L+Z5Lqb5LqL5oOF44CC5b2T54S277yM5L2g5Lmf5Y+v5Lul5Zyo
6L+Z5Liq5pa55rOV6YeM6YCa6L+HIHRoaXMuZ2V0RE9NTm9kZSgpIOaWueazleWPluW+l+acgOe7
iOeUn+aIkERPTeiKgueCue+8jOeEtuWQjuWvuURPTeiKgueCueWBmueIseWBmueahOS6i+aDhe+8
jOS9humcgOimgeazqOaEj+WBmuWlveWuieWFqOaOquaWve+8jOS4jeimgee8k+WtmOW3sue7j+eU
n+aIkOeahERPTeiKgueCue+8jOWboOS4uui/meS6m0RPTeiKgueCuemaj+aXtuWPr+iDveiiq+ab
v+aNouaOie+8jOaJgOS7peW6lOivpeWcqOavj+asoeeUqOeahOaXtuWAmeWOu+ivu+WPluOAgjxi
cj4KPGJyPgrnu4Tku7booqvliJ3lp4vljJblrozmiJDlkI7vvIzlroPnmoTnirbmgIHkvJrpmo/n
nYDnlKjmiLfnmoTmk43kvZzjgIHml7bpl7TnmoTmjqjnp7vjgIHmlbDmja7mm7TmlrDogIzkuqfn
lJ/lj5jljJbvvIzlj5jljJbnmoTov4fnqIvmmK/nu4Tku7blo7DmmI7lkajmnJ/nmoTlj6bkuIDp
g6jliIYgJmFtcDttZGFzaDsmYW1wO21kYXNoOzxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9y
OiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9kMGRWYTJFLmpwZyk8L3NwYW4+PGJy
Pgo8YnI+CuabtOaWsOi/h+eoi+OAgjxicj4KPGJyPgrlvZPnu4Tku7blt7Lnu4/ooqvlrp7kvovl
jJblkI7vvIzkvb/nlKjogIXosIPnlKggc2V0UHJvcHMoKSDmlrnms5Xkv67mlLnnu4Tku7bnmoTm
lbDmja7ml7bvvIznu4Tku7bnmoQgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpIOaWueazleS8
muiiq+iwg+eUqO+8jOWcqOi/memHjO+8jOS9oOWPr+S7peWvueWklumDqOS8oOWFpeeahOaVsOaN
rui/m+ihjOS4gOS6m+mihOWkhOeQhu+8jOavlOWmguS7jnByb3Bz5Lit6K+75Y+W5pWw5o2u5YaZ
5YWlc3RhdGXjgII8YnI+Cjxicj4K6buY6K6k5oOF5Ya15LiL77yM57uE5Lu25ZyoIHNldFN0YXRl
KCkg5LmL5ZCO77yMUmVhY3TkvJrpgY3ljobov5nkuKrnu4Tku7bnmoTmiYDmnInlrZDnu4Tku7bv
vIzov5vooYwmYW1wO2xkcXVvO+eBjOawtCZhbXA7cmRxdW8777yM5bCGcHJvcHPku47kuIrliLDk
uIvkuIDlsYLkuIDlsYLkvKDkuIvljrvvvIzlubbpgJDkuKrmiafooYzmm7TmlrDmk43kvZzvvIzo
mb3nhLZSZWFjdOWGhemDqOW3sue7j+i/m+ihjOi/h+W+iOWkmueahOS8mOWMlu+8jOi/meS4qui/
h+eoi+W5tuS4jeS8muiKsei0ueWkmuWwkeaXtumXtO+8jOS9huaYr+eoi+W6j+WRmOmHjOawuOi/
nOS4jee8uuS5j+mVv+acn+aAp+iDvemlpea4tOeahOWQjOWtpu+8jOS4jeeUqOaLheW/g++8jFJl
YWN05pyJ5LiA5Liq6IO95aSf6Kej5Yaz5L2g5oCn6IO96aWl5ri055qE5Yqe5rOVJmFtcDttZGFz
aDsmYW1wO21kYXNoO3Nob3VsZENvbXBvbmVudFVwZGF0ZSgpJmFtcDttZGFzaDsmYW1wO21kYXNo
O+acieaXtuWAme+8jHByb3Bz5Y+R55Sf5LqG5Y+Y5YyW77yM5L2G57uE5Lu25ZKM5a2Q57uE5Lu2
5bm25LiN5Lya5Zug5Li66L+Z5LiqcHJvcHPnmoTlj5jljJbogIzlj5HnlJ/lj5jljJbvvIzmiZPk
uKrmr5TmlrnvvIzkvaDmnInkuIDkuKrooajljZXnu4Tku7bvvIzkvaDmg7PopoHkv67mlLnooajl
jZXnmoRuYW1l77yM5ZCM5pe25L2g6IO95aSf56Gu5L+h6L+Z5LiqbmFtZeS4jeS8muWvuee7hOS7
tueahOa4suafk+S6p+eUn+S7u+S9leW9seWTje+8jOmCo+S5iOS9oOWPr+S7peebtOaOpeWcqOi/
meS4quaWueazlemHjHJldHVybiBmYWxzZeadpee7iOatouWQjue7reihjOS4uuOAgui/meagt+Ww
seiDveWkn+mBv+WFjeaXoOaViOeahOiZmuaLn0RPTeWvueavlOS6hu+8jOWvueaAp+iDveS8muac
ieaYjuaYvuaPkOWNh+OAgjxicj4KPGJyPgrlpoLmnpzov5nkuKrml7blgJnmnInlkIzlrabku43n
hLbppaXmuLTpmr7ogJDvvIzpgqPkuYjkvaDlj6/ku6XlsJ3or5U8c3BhbiBzdHlsZT0iY29sb3I6
ICNiMjIyMjI7ICI+W+S4jeWPr+WPmOaVsOaNrue7k+aehF0oaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy91cGRhdGUuaHRtbCk8L3NwYW4+KOeUqOi/h21vbmdvZGLnmoTlkIzl
rablupTor6Xmh4Ip44CCPGJyPgo8YnI+Cue7hOS7tuWcqOabtOaWsOWJje+8jFJlYWN05Lya5omn
6KGMY29tcG9uZW50V2lsbFVwZGF0ZSgpIOaWueazle+8jOi/meS4quaWueazleexu+S8vOS6juWJ
jemdoueci+WIsOeahCBjb21wb25lbnRXaWxsTW91bnQoKeaWueazle+8jOWUr+S4gOS4jeWQjOea
hOWcsOaWueWPquaYr+i/meS4quaWueazleWcqOaJp+ihjOeahOaXtuWAmee7hOS7tuaYr+W3sue7
j+a4suafk+i/h+eahOOAgumcgOimgeazqOaEj+eahOaYr++8jOS4jeWPr+S7peWcqOi/meS4quaW
ueazleS4reS/ruaUuXByb3Bz5oiWc3RhdGXvvIzlpoLmnpzopoHkv67mlLnvvIzlupTlvZPlnKgg
Y29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpIOS4reS/ruaUueOAgjxicj4KPGJyPgrnhLblkI7m
mK/muLLmn5PvvIxSZWFjdOS8muaLv+i/measoei/lOWbnueahOiZmuaLn0RPTeWSjOe8k+WtmOS4
reeahOiZmuaLn0RPTei/m+ihjOWvueavlO+8jOaJvuWHuuOAkOacgOWwj+S/ruaUueeCueOAke+8
jOeEtuWQjuabv+aNouOAgjxicj4KPGJyPgrmm7TmlrDlrozmiJDlkI7vvIxSZWFjdOS8muiwg+eU
qOe7hOS7tueahGNvbXBvbmVudERpZFVwZGF0ZSDmlrnms5XvvIzov5nkuKrmlrnms5XnsbvkvLzk
uo7liY3pnaIgY29tcG9uZW50RGlkTW91bnQg5pa55rOV77yM5L2g5LuN54S25Y+v5Lul5Zyo6L+Z
6YeM5Y+v5Lul6YCa6L+HIHRoaXMuZ2V0RE9NTm9kZSgpIOaWueazleWPluW+l+acgOe7iOeahERP
TeiKgueCueOAgjxicj4KPGJyPgrpppnmuK/nlLXlvbHnu5PlsL7nu4/luLjnnIvliLDkuIDkuKrl
iafmg4XvvIzlsLHmmK/oi7Hpm4TmiZPotKXkuoblnY/kurrvvIznhLblkI7orablr5/lh7rmnaXm
k6blsYHogqEmYW1wO21kYXNoOyZhbXA7bWRhc2g7PGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29s
b3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL1d0ME5HN1guanBnKTwvc3Bhbj48
YnI+Cjxicj4KY29tcG9uZW50V2lsbFVubW91bnQg6Zmk5LqG5pOm5bGB6IKh5LuA5LmI5Lmf5YGa
5LiN5LqG44CCPGJyPgo8YnI+CuS9oOWPr+S7peWcqOi/meS4quaWueazleS4remUgOavgemdnlJl
YWN057uE5Lu25rOo5YaM55qE5LqL5Lu244CB5o+S5YWl55qE6IqC54K577yM5oiW6ICF5LiA5Lqb
5a6a5pe25Zmo5LmL57G744CC6L+Z5Liq6L+H56iL5Y+v6IO95a655piT5Ye66ZSZ77yM5q+U5aaC
57uR5a6a5LqG5LqL5Lu25Y205rKh6ZSA5q+B77yM6L+Z5LiqUmVhY3Tlj6/luK7kuI3kuobkvaDv
vIzkvaDoh6rlt7HnuqbnmoTngq7vvIzlkKvnnYDms6rkuZ/opoHmiZPlrozjgII8YnI+Cjxicj4K
5LiL6Z2i5oiR5Lus5p2l55yL55yLUmVhY3TmgI7moLfnu5PlkIhub2RlanPlrp7njrDmnI3liqHn
q6/muLLmn5PjgII8YnI+Cjxicj4KITxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj5bXSho
dHRwOi8vaS5pbWd1ci5jb20vTnViR1U3SC5qcGcpPC9zcGFuPjxicj4KPGJyPgrmnI3liqHnq6/m
uLLmn5PmnInlpJrlv6vmiJHlsLHkuI3lpJror7TkuobjgII8YnI+Cjxicj4K5Zug5Li65pyJ6Jma
5oufRE9N55qE5a2Y5Zyo77yMUmVhY3Tlj6/ku6XlvojlrrnmmJPnmoTlsIbomZrmi59ET03ovazm
jaLkuLrlrZfnrKbkuLLvvIzov5nkvr/kvb/miJHku6zlj6/ku6Xlj6rlhpnkuIDku71VSeS7o+eg
ge+8jOWQjOaXtui/kOihjOWcqG5vZGXph4zlkozlkozmtY/op4jlmajph4zjgII8YnI+CiZsdDtk
aXYgY2xhc3M9ImttX2luc2VydF9jb2RlIiZndDs8YnI+CiZsdDtwcmUmZ3Q7Jmx0O2NvZGUmZ3Q7
Jmx0O3NwYW4gY2xhc3M9ImtleXdvcmQiJmd0O3ZhciZsdDsvc3BhbiZndDsgaHRtbCA9IFJlYWN0
LnJlbmRlclRvU3RyaW5nKGVsZW0pOyZsdDsvY29kZSZndDsmbHQ7L3ByZSZndDs8YnI+CiZsdDsv
ZGl2Jmd0Ozxicj4KPGJyPgrlnKhub2Rl6YeM5bCGcmVhY3Tnu4Tku7ZIVE1M5riy5p+T5Li6SFRN
TO+8jOS4gOWPpeS7o+eggeWNs+WPr+OAgjxicj4KPGJyPgrkuI3ov4flm7Tnu5Xov5nkuKpyZW5k
ZXJUb1N0cmluZ+aIkeS7rOi/mOimgeWBmuS4gOS6m+WHhuWkh+W3peS9nO+8mjxicj4KPHNwYW4g
c3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjEuJm5ic3A7PC9zcGFuPuS7juWQjuWPsHNlcnZlcuaI
luaVsOaNruW6k+etieadpea6kOaLieWPluaVsOaNrjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAj
YjIyMjIyOyAiPjIuJm5ic3A7PC9zcGFuPuiwg+eUqFJlYWN0LnJlbmRlclRvU3RyaW5nKCnmlrnm
s5XmnaXnlJ/miJBIVE1MPGJyPgo8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+My4mbmJz
cDs8L3NwYW4+5pyA5ZCO5Y+R6YCBSFRNTOWSjOaVsOaNrue7mea1j+iniOWZqDxicj4KPGJyPgrk
u6PnoIHlsLHkuI3otLTkuobvvIzlpKflrrboh6rooYzohJHooaXjgII8YnI+Cjxicj4K6ZyA6KaB
5rOo5oSP55qE5piv6L+Z6YeM55qESlNPTuWtl+espuS4suS4reWPr+iDveWHuueOsCZhbXA7bHQ7
L3NjcmlwdCZhbXA7Z3Q757uT5bC+5qCH562+5oiWSFRNTOazqOmHiu+8jOWPr+iDveS8muWvvOiH
tOivreazlemUmeivr++8jOi/memHjOmcgOimgei/m+ihjOi9rOS5ieOAgjxicj4KPGJyPgohPHNw
YW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9TQXQ5TXZF
LmpwZyk8L3NwYW4+PGJyPgo8YnI+CumhtemdoueahOekuuS+i+S7o+eggeacrOadpeaJk+eul+eU
qOWkp+WutuabtOeGn+aCieeahEhUTUzvvIzkvYblj5HnjrDku6PnoIHph4/lpKrlpJrkuobvvIzm
iYDku6XmjaLmiJDkuoZqYWRl5Luj56CB77yM5rKh55So6L+HamFkZeeahOWQjOWtpuS5n+mhuuS+
v+S6huino+S4gOS4i++8jOaIkeS5n+mhuuS+v+e7mWphZGXmiZPkuKrlub/lkYrjgIIg6L+Z5Liq
6aG16Z2i5YGa5LqG6L+Z5Yeg5Lu25LqL77yaPGJyPgo8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIy
MjI7ICI+MS4mbmJzcDs8L3NwYW4+5bCG5YmN6Z2i5ZyoYWN0aW9u6YeM55Sf5oiQ55qESFRNTOWG
meWIsCNjb250YWluZXLlhYPntKDph4w8YnI+CjxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsg
Ij4yLiZuYnNwOzwvc3Bhbj7lvJXlhaXlv4XpobvnmoRKU+aWh+S7tjxicj4KPHNwYW4gc3R5bGU9
ImNvbG9yOiAjYjIyMjIyOyAiPjMuJm5ic3A7PC9zcGFuPuiOt+WPlmFjdGlvbuaPkOS+m+eahOaV
sOaNrjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjQuJm5ic3A7PC9zcGFuPua4
suafk+e7hOS7tjxicj4KPGJyPgrov5nlsLHmmK9SZWFjdOeahOacjeWKoeerr+a4suafk++8jOe7
hOS7tueahOS7o+eggeWJjeWQjuerr+mDveWPr+S7peWkjeeUqOOAgjxicj4KPGJyPgrmmK/kuI3m
mK/mhJ/op4lSZWFjdOaMuueJm+mAvOeahO+8n+i/mOayoeWujO+8gTxicj4KPGJyPgohPHNwYW4g
c3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9FQ1pCVzZNLmpw
Zyk8L3NwYW4+PGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0
cDovL2kuaW1ndXIuY29tL1VWYjhza0suanBnKTwvc3Bhbj48YnI+Cjxicj4KUmVhY3Tog73lpJ/n
lKjkuIDlpZfku6PnoIHlkIzml7bov5DooYzlnKjmtY/op4jlmajlkoxub2Rl6YeM77yM6ICM5LiU
6IO95aSf5Lul5Y6f55SfQXBw55qE5ae/5Yq/6L+Q6KGM5ZyoaU9T5ZKMQW5kcm9pZOezu+e7n+S4
re+8jOWNs+aLpeacieS6hndlYui/reS7o+i/hemAn+eahOeJueaAp++8jOWPiOaLpeacieWOn+eU
n0FwcOeahOS9k+mqjOOAgjxicj4KPGJyPgrov5nkuKrlp7/lir/lj6vlgZogUmVhY3QtTmF0aXZl
44CCPGJyPgo8YnI+Cui/meaYr1JlYWN05ZKMUmVhY3QtTmF0aXZl5ZyoZ2l0aHVi5LiK55qE5pWw
5o2u77yM5Y+v5Lul55yL5Ye6UmVhY3QtTmF0aXZl5Lmf5piv55u45b2T54Ot6ZeoJmFtcDttZGFz
aDsmYW1wO21kYXNoO+WboOS4ulJlYWN0LU5hdGl2ZeiDveWkn+S9v1JlYWN055qE5Lu35YC85pyA
5aSn5YyW77yM6L+Z5Liq5Lu35YC85piv5LuA5LmI5ZGiJmFtcDttZGFzaDsmYW1wO21kYXNoO+Wv
ueS4muWKoeadpeivtO+8jOaEj+WRs+edgOS4jemcgOimgeS4uuS6huWBmue7iOerr+eJiOacrOWw
seaLm+iBmOWSjOWJjeerr+etiemHj+S6uuWKm+eahOe7iOerr+W8gOWPke+8jOWQjOaXtuaEj+WR
s+edgOaIkeS7rOaIkOS4uuWFqOagiOW3peeoi+W4iOacieS6huS4gOS4quaNt+W+hOOAgjxicj4K
PGJyPgohPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNv
bS9yQWQ4d0xmLmpwZyk8L3NwYW4+PGJyPgo8YnI+CuS6huino2lPU+W8gOWPkeeahOWQjOWtpumD
veefpemBk++8jOawtOaenOWFrOWPuOWvueW6lOeUqOS4iuaetueahOWuoeaguOaViOeOh+WunuWc
qOiuqeS6uuaXoOWKm+WQkOanve+8jOW+iOWkmuWboumYn+S4iuS4gOS4queJiOacrOi/mOayoeWu
oeaguOe7k+adn++8jOS4i+S4gOS4queJiOacrOWwseW3sue7j+WBmuWlveS6huOAguiAjFJlYWN0
LU5hdGl2ZeaUr+aMgeS7jue9kee7nOaLieWPlkpT77yM6L+Z5qC3aU9T5bqU55So5Lmf6IO95aSf
5YOPd2Vi5LiA5qC35a6e546w5b+r6YCf6L+t5Luj5LqG44CCPGJyPgo8YnI+CiE8c3BhbiBzdHls
ZT0iY29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tL1VBTVljSEguanBnKTwv
c3Bhbj48YnI+Cjxicj4K5LiK5Zu+5bCx5pivcmVhY3QtbmF0aXZl55qE6LCD6K+V6L+H56iL77yM
5LulIGlPUyDkuLrkvos8YnI+Cjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAjYjIyMjIyOyAiPjEu
Jm5ic3A7PC9zcGFuPuWQr+WKqCB4Y29kZSBidWlsZDxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiAj
YjIyMjIyOyAiPjIuJm5ic3A7PC9zcGFuPuWcqOaooeaLn+WZqOS4reaMieS4iyBDb21tYW5kICsg
RCDmiZPlvIDoj5zljZXvvIzpgInmi6kgRGVidWcgaW4gQ2hyb21lJm5ic3A7PGJyPgo8c3BhbiBz
dHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+My4mbmJzcDs8L3NwYW4+5ZyoIENocm9tZSBkZXYgdG9v
bHMg5Lit6LCD6K+VPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0iY29sb3I6ICNiMjIyMjI7ICI+W10o
aHR0cDovL2kuaW1ndXIuY29tL2pHdE94alAuanBnKTwvc3Bhbj48YnI+Cjxicj4K5b2T54S277yM
cmVhY3Qg5bm25LiN5piv5a6M576O55qE77yM5Zyo5a6e6ZmF5L2/55So5pe25L2g5Lmf5Lya5Y+R
546w5aW555qE5LiA5Lqb57y654K577yM5q+U5aaC77yaPGJyPgo8YnI+CiE8c3BhbiBzdHlsZT0i
Y29sb3I6ICNiMjIyMjI7ICI+W10oaHR0cDovL2kuaW1ndXIuY29tLzRGa3dtdGMuanBnKTwvc3Bh
bj48YnI+Cjxicj4K77yI5aaC5p6c5Y+q5piv5YGa5a6J5Y2TIGFwcCDlvIDlj5HvvIzpgqPkuYgm
YW1wO2xkcXVvO+iLueaenOS4pOS7tuWllyvlvIDlj5HogIXor4HkuaYmYW1wO3JkcXVvO+S4jeaY
r+W/hemhu+eahO+8jOWcqHdpbmRvd3PkuIvpnaLlvIDlj5HljbPlj6/jgILvvIk8YnI+Cjxicj4K
5pyA5ZCO77yM5aSn5a625Zyo5L2/55SoIHJlYWN0IOW8gOWPkeaXtu+8jOWPr+iDveS8mumcgOim
geWuieijhVJlYWN0IGRldmVsb3BlciB0b29sczxicj4KPGJyPgohPHNwYW4gc3R5bGU9ImNvbG9y
OiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS9Ea1BKNGNhLmpwZyk8L3NwYW4+PGJy
Pgo8YnI+CuacgOWQjuaYr+S4gOeCueWPguiAg+i1hOaWmTxicj4KPGJyPgohPHNwYW4gc3R5bGU9
ImNvbG9yOiAjYjIyMjIyOyAiPltdKGh0dHA6Ly9pLmltZ3VyLmNvbS8xTm1QdGhRLmpwZyk8L3Nw
YW4+PGJyPgo8YnI+CuS5puWxseaciei3r+WLpOS4uuW+hO+8jHJlYWN0IOS+v+aYr+mCo+mAmuW+
gOOAjuWFqOagiOW3peeoi+W4iOOAj+eahOaNt+W+hOOAgjxicj4KPGJyPgotLS0tLS0tLS0tPGJy
Pgo8YnI+CjxzcGFuIHN0eWxlPSJjb2xvcjogI2IyMjIyMjsgIj4jIyMg6IW+6K6vQnVnbHnnroDk
u4sgIyMjPC9zcGFuPjxicj4KQnVnbHnmmK/ohb7orq/lhoXpg6jkuqflk4HotKjph4/nm5Hmjqfl
ubPlj7DnmoTlpJblj5HniYjmnKzvvIzlhbbkuLvopoHlip/og73mmK9BcHDlj5HluIPku6X
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。