MQTT协议及EMQ应用
MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅信息传输协议。MQTT在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进行扩展。适用于设备硬件存储空间有限或网络带宽有限的场景。物联网平台支持设备使用MQTT协议接入。
官网:mqtt.org
wiki各种语言版本开发库
https://github.com/mqtt/mqtt.github.io/wiki/libraries?spm=a2c4g.11186623.2.11.2d73174cN52z60
基础概念
Topic
物联网平台中,服务端和设备端通过 Topic 来实现消息通信。Topic是针对设备的概念,Topic类是针对产品的概念。产品的Topic类会自动映射到产品下的所有设备中,生成用于消息通信的具体设备Topic。
为了方便海量设备基于海量Topic进行通信,简化授权操作,物联网平台增加了产品Topic类的概念。Topic类是一类Topic的集合。例如,产品的自定义Topic类/${YourProductKey}/${YourDeviceName}/user/update是具体Topic/${YourProductKey}/device1/user/update和/${YourProductKey}/device2/user/update的集合。
在您创建设备后,产品的所有Topic类会自动映射到设备上。您无需单独为每个设备授权Topic。
阿里物联网平台,关于Topic类的说明:
Topic类中,以正斜线(/)进行分层,区分每个类目。其中,有两个类目为既定类目:${YourProductKey}表示产品的标识符ProductKey;${YourDeviceName}表示设备名称。
类目命名只能包含字母,数字和下划线(_)。每级类目不能为空。
设备操作权限:发布表示设备可以往Topic发布消息;订阅表示设备可以从Topic订阅消息。
MQTT会话(Clean Session)
MQTT客户端向服务器发起CONNECT请求时,可以通过’Clean Session’标志设置会话。
‘Clean Session’设置为0,表示创建一个持久会话,在客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。
‘Clean Session’设置为1,表示创建一个新的临时会话,在客户端断开时,会话自动销毁。
不管clean session的值是什么,当终端设备离线时,QoS=0,1,2的消息一律接收不到。
当clean session的值为true,当终端设备离线再上线时,离线期间发来QoS=0,1,2的消息一律接收不到。
当clean session的值为false,当终端设备离线再上线时,离线期间发来QoS=0,1,2的消息仍然可以接收到。如果同个主题发了多条就接收多条,一条不差,照单全收。
MQTT保留消息(Retained Message)
MQTT客户端向服务器发布(PUBLISH)消息时,可以设置保留消息(Retained Message)标志。保留消息(Retained Message)会驻留在消息服务器,后来的订阅者订阅主题时仍可以接收该消息。
Mnesia:retained_message
终端设备publish消息时,如果retain值是true,则服务器会一直记忆,哪怕是服务器重启。因为Mnesia会本地持久化。
如果服务器接收到终端publish某主题的消息,payload为空且retain值是true,则会删除这条持久化的消息。
如果服务器接收到终端publish某主题的消息,payload为空且retain值是false,则不会删除这条持久化的消息。
Will Message
客户端连接异常断开时,由Broker将其遗嘱消息发送给订阅方。客户端与Broker建立连接时将遗嘱消息包含在CONNECT消息中发送给Broker。
Username/Password
建立连接时,CONNECT消息中可以携带用户名和密码用于身份校验,但是默认是以明文方式传输,推荐使用TLS方式或者将密码加密后再进行传输。
EMQ应用
emq官网:http://emqtt.io,基于Erlang/OTP开发,实现了MQTT V3.1和V3.1.1,支持MQTT-SN、COAP、WebSocket、STOMP和SockJS。提供量级、可依赖、公司级别的MQTT消息。
v2.0版本支持超过1.3million连接,需要配置内核、TCP stack、Erlang VM等,参考:http://emqtt.io/docs/v2/getstarted.html。服务器和client分离,常用于服务器。
aaarticlea/png;base64,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" alt="" name="图片 1" width="252" height="158" align="bottom" border="0" />
EMQ支持windows和linux,使用方法相似,如下linux为例:
docker测试:
docker run -d --rm --name emqx -p :-p : emqx/emqx
dashboard:
admin public
因为采用Erlang语言设计,提供的client库也是erlang版本,没有提供c版本,但兼容mosquitto库,因此可用mosquitto_pub/mosquito_sub收发消息。
通过dashboard中的TOOLS/Websocket订阅查查看消息(这是EMQ提供的测试工具,可用于测试mqtt收发),首先需要连接broker:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABIQAAAJkCAYAAABgRvqOAAAACXBIWXMAAA7EAAAOxAGVKw4bAAB6N0lEQVR4nOzdC3wU5b3/8a+aNdl/3WByYDkmEjQgIIhgAyWiIihY5SpEkJuIIhUUK7aipUVsqR7aolUKKBRR5CpRwIAgR65iDNCQEgxgjAFJIEE2diNZPEncVf+zmwC5bcIlNzKfd5uXu3N7nhl9/Wb3uzPPBISFhf0kAAAAAAAAmEZAXXcAAAAAAAAAtaveB0KB7V/Qrg0x2j6go369u7Cuu3PeGsp+AAAAAACAi1/FgVCrKdq1dbwOjWqrYZtPVLxmozu1cM8idds1SjcN26yKl7Jr0Lo9mmWbpq7d5imjunqNCgW2H6ZJA6TYGcuVRuYEAAAAAAD8qDgQytigXXnj1WvAdQrcvFsVZQuB7QerS6Dxz46D1T5ws+IrXKiV+l8v5SxL0NfV2m1UpNENYzR+fKH+PYtACAAAAAAA+FdxIFT4peKSCxXT5W41126llVsgUO2H3K7gnGQdbRKtAe0DFV/BbVCBrQaoY2Cedr6fVmGoBAAAAAAAgNrnZwyhE0pZ87n0UndF2V9QmqPM7MBWurdbsI6+93ctu2uRHrq3lQJ3p5QLff67axc10QGt+ZI4CAAAAAAAoL7wO6i0I+kjHdQz6t+pkZavLzNCUPM71KtJjjbG7daHOqpn+t2h5lNSylxJ1EhR/VtIn7+u3RUNMNSok4ZN+q3G9+2iFk0CpcIcJW9/T3Oen6H1GRUHSI06Pao/T35YvaKvVrDxPu/gTn3w+h81ZXn5MMo7flGn0VM0+eFeim4R7JtSmPO5tn/wml6esUopFfXJ3kmjJ03Ww32jVbRKno4mf6xlf5+uuZszKr51rlVvTfr9b3Rft+vl3Q3vfnxu7MffK9mPctto/6hWxU1V5K6ndffo5Sq1WpXHya5hm/bopevPrDL/QFbRi+2jFDlsM1dnAQAAAACAUvw/ZSxji3blPKO+d1+nwPWlxxFq3iNGV+dt1/tpJ5QRt1054/upa/OZSis5anRge9/4QUffTFL5C4we1bINU9X285V6ddooJWUWqFHELRr82JOan9Bdrw/ooxfK3ILW5P6F+rhvE+2c+6p++8oR5QU2U9Tg8XrmpQ3q0m6A+k3ZXWJga7sGLfxYs3rlaePr0zRq25c6UdBIEbcM0GNPztKGXt016q5fq+R42YHtn9SquGfU0divt/46Vr/fZ/TafoO6DzHaWJSgmLfuN9qILzV4dqNbZ2jtiuFqkmzsx9PTjf04oaCIKA157FljP+7SWwP6aUqFaViZYxE3Vdfv+UO5MOjsjpND68f0UFKg0d173tCKZ77XtAGPaWueVPhtxSEWAAAAAAAwN/+BUGGabxyh4eXGEbKr6+AWyvv490op9C62QjvzhmtwV7sWZpyJfk6NH7R9Q5lniwV20guxU9Xig7G6/dfrz4RFu3dr87oPtXPZBr34xnOK6zLFt/0iwerWt1BP3N5Tq0qkS/GbV+nDPeu0deobmvJ+F00qDpECO03Ri72ktaPu0rgSqc/u3Zu16v1/a13Ci3p50nx1mVJ8ZVGjWzUj9hl1PPS6BvR5QWeyqN2KX79ci4ct1NaXFunNf0cr5lQHGvXWzEXD1WTjE7p99KpS+xG/aoN2LN+ql96Yove7TJK/p8yfCnxu8oZBwxeWHgj6XI5TRpovqPo26nvvvzgd+TJNaZXnUAAAAAAAwMT8B0IqLBpHqFd3dS05jpD9Vo28vlC7pheHKYUpendXoebf10mNlq8/fQWNb/ygwmTFlRk/yD7sLxoeuFajnltf7sohbwi1/I9vavyGEXq8/Z81rkSSsvMPz5QKg071MW3hU1o2foNiJnTWlNHxvj4FRbRQsLL0UUX3hWUs1/RlgzU52K4g3xak5gP/qJjgg/rbgBcqCG8KjVWe1NP9d2rW1Elqv26SL6hqPvR36hWYrKefWVV+P5Sh5c+/qYlbR2hU+ynaXeGA26OLw6BpGlA2DLqA4wQAAAAAAFCVSgIh6UTSGh3UVPXr1EgLi8cRatRpsK4v3KU5p2+FKtTu2D3S7AfUqdH64tuwzowfVDqTsevOwdercNcfFe/nCpbCtG36vHC82kb9t7T71NVFecrK9LuCVmzP0/Bud6tVYLwvrCn4co9y9JDGDGyldfPKPuGsUPGT+qhPiT51HXm90dentbz849SKObRuzna9tKKbBjSXUtKMdbz7l/y0NpdPg4qkLdafpuUoKK/8rKIw6EXd9Lk3DJpX4kqoM306v+MEAAAAAABQtUoDIX2doO05Ukz/U+MINVKnIV0U+PnTpQaKPrF7qT4PfFGD2wdqc3zh6fGDDv41ofTVLYERujnS+EfHFTqUVXnHjvpGaD4bhcr5t7eTLWQ/NSVlhh75202KnbpVyYM3auW7a7Rh62bFV3QflbdP4VLOB/tU2V1W3gDmkHrppmaNpIymamesk7f9y0rWydD6efPKTb08YpjmvfiiogN36omHKgqDVEPHCQAAAAAAoEjlgVBhmjbszNNDNxWPIxTYXoO7BOrzafGlgx5Hkt79PFgTB7RXYPxuqdXd6hiYo40JX5fZYJCCA6WcZWP1yKIjlQ54XHj87K96yS/0jp0TrMBT94DphHbP7KPrP7xTo0c9oP4Pv6SHpgZ6H0um7Stf18szlpcItIr6VHiisPIBmAsdRbejNfK+CSxaJ+9cb9UKVr9ZL0pHP1dOcLSmTrlTm3+9uYJQqWaOEwAAAAAAgFflgZBvHKEDUr/u6tr8BWU0GaDo4IN6PaHsfVIZ2rr2oF586F61CtytvK7disYPKjswjgpUlKEcUUpKRY+KPz/W4MvlDYEKC8r0Pm2z5k3x/hlvGjXXrb0f0OPPvqS44ffpD3cP10Jf/4r6FNgoUL6nxvtrJNDum3/Cl94UFq0TfO5X5xQm/01Dhs9VTm/vQNXz9eaOHopZXjbUqZnjBAAAAAAA4FVFIOS9HWytPteL6tfOriRv0HN0mbZWcFFKxocf6egzd+mO5nZ9eVcLac+r5W+HKszUv7OkmC5d9d9KUfVc2xKoZjc1kXK2VzC4c8kdyVD88hcUv36b/vHxCk39051aPWy9Thh92uHtU9sb1Mjok79tBLbqrkgd1ZtHTngvy9F+Y52HWkQY6+z2u04ju91o12G0cWpKnj54fq52eycsH6exN3+sRS8t1pR9vfRCyYNVI8cJAAAAAACgSJWBkBwJ2nZUuq/Hrbqjy9U6uvZDVTj2ckactueM111dO6lFW+/4QUkV3Arl0NZ3D0pTH9bY9gs1pcIBdCoSqCaNTt8PVmZWew2IDlZh8obiJ3XZNWjuWxrzzfMaNGV3+TVOJCo2uVAx11+npt63Rp8S3v3c6NMYDWy+XPMqTF/suvPxbgrMWaa4jKL9SFjj3Y8RutW+qoKnn3lXGa2Ve6YqZ9T1Gra5ov08oc2THtDf2m7QM4tnaMftvy4ekLto++d3nAAAAAAAAKpWdSCkDG3YlafxvUZoeJMcbY/zc71KYZriduYp5uExCg/O0QdJZccPKt7aO7/XyvEr9NAbL2jrXZNKhCBFAts/qWWvXK3XYkrOC1S3l/+sO0uFJkXTW43+i9Gvo3rr5cTi8OeEMr+PVMfhkzVofozK3Y0V2F53dwxU4edf6vjpPv1RKyeu0NQFTyqhz8xyVzY1HzZTL3eTtj/xj9PzMlb/Rdufna8Xp/VW/Liyj4ZvpDunTNT1eR9pemWPhC9M0czhTyh65yzNf3OHesQsP3010Pkcp0Lf/WxN1OxK32EAAAAAAACo0FkEQoX6Mi5ZhTHddHXeSq0oNy7QmeVS3t0lLeqlJnlr9b6/5U7Ea9ID0xQeN1WLdrbVylcXKDYpUwWNIhR19wiNHx6twmWjSj3FzHur1fadLTR75zptnLtAcUkOFQbaFTV4op7p10IH3xqgP59OcQq1+7kJWtZlkV7aukk3z3xNcZ9myqEg2a/rrgcmjlev4GRNe77EYM7ePg0p6tOGXdF669XF2rDPYfTpOt0yeLyeNNo4avRpXMlLgRzrNW7sMq1dNF8fN1umV+fEKclRoCD7DRow5lkNj87TslHPlgtyynGs0rhRN+ujFS9p8ZR96vVC8ZhB53GcTuwvur1v4l+e1JE5ScZRcygxPo0xiAAAAAAAQClnEQhJJ1LW6HN10/W7Yit+TPqp5XbHao96KfrAGn1Z6YUx8xRzU5KGTZqgMeNf0oomRcM553y+Xe+N7aEZ68uGGHna+fdBevLdcZr2m2c1/5mrfQM85x3dqWVPP64py8sMvHxisyZ166Gt436jx4e/qEXPBBdv5qB2bpymUS8s1GZH6RZ8fYpO0uhJv9XDz87WQ8FFfTqa/JFmjn1Ac9dnlAtWTmyepF49tmrS73+j8bOHq0lRp5T88VyN7TFX6/2GZ2W2Ez9FD0xrq61TF2vmjts1rjhFOufjlLFcjz0drTemPqP5K4z3n09Tj55pFd/iBwAAAAAATOusAiE5lqtP+PKqlzuxXjHh4WfX8ondWj5ltPFX+WKFKVPUMbx4obSZGrd55tltvzBN62eOM/7ObnEfx24tnDTM+Dv7VQrT1uuF0cZfVcuV3I/yc5U2r4/C51Uw6yyP0+ntLB+nbsYfAAAAAACAP2cXCAEAAAAAAKDBIBACAAAAAAAwGQIhAAAAAAAAkyEQAgAAAAAAMBkCIQAAAAAAAJMhEAIAAAAAADAZAiEAAAAAAACTIRACAAAAAAAwGQIhAAAAAAAAkyEQAgAAAAAAMBkCIQAAAAAAAJMhEAIAAAAAADAZAiEAAAAAAACTIRACAAAAAAAwGQIhAAAAAAAAkyEQAgAAAAAAMBkCIQAAAAAAAJMhEAIAAAAAADAZAiEAAAAAAACTIRACAAAAAAAwGQIhAAAAAAAAkyEQAgAAAAAAMBkCIQAAAAAAAJMhEAIAAAAAADAZAiEAAAAAAACTIRACAAAAAAAwGQIhAAAAAAAAkyEQAgAAAAAAMBkCIQAAAAAAAJMhEAIAAAAAADCZsw6Efvrppwtq6JJLLrmg9QEAAAAAAMyoJjIZv4HQhTYGAAAAAACAulc24/EGROUCIYIgAAAAAACAhsub/QSUfAMAAAAAAICGzxcIEQYBAAAAAACYRwBhEAAAAAAAgLnU2mPnCZ4AAAAAAADqh1oLhAAAAAAAAFA/EAgBAAAAAACYjN9A6BLjz2Kx6LJLL/U9nx4AAAAAAAAXJ+9QPj/8+KPcbre8g/pUGAh5A6BAi0WXXnppLXcPAAAAAAAA1c2b9QRcdpkuNf5Z6HZXHAhZAgIIgwAAAAAAABoYb97jzX0qDIQuIwwCAAAAAABokLy5j99bxgAAAAAAANDw+G4fq+tOAAAAAAAAoHYRCAEAAAAAAJgMgRAAAAAAAIDJEAgBAAAAAACYDIEQAAAAAACAyRAIAQAAAAAAmAyBEAAAAAAAgMkQCAEAAAAAAJgMgRAAAAAAAIDJEAgBAAAAAACYTLlA6KeffqqLfgAAAAAAAKCWcIUQAAAAAACAyRAIAQAAAAAAmAyBEAAAAAAAgMkQCAEAAAAAAJgMgRAAAAAAAIDJ1G4gFHSDhvzuGY29p7Vsvgn/0Rfv/0PPvbJBmQW12pPqEXG3HrnpoJbEfamLsfsAAAAAAMCcai8QCrpBv1u1QL/45HcaeftWHfcmKEHXacCLryt2VqAGjI3T8VrrTPUIujpGjwxbqXcJhAAAAAAAwEWkXCB0ySWX1EhDEYP/rHuzntcvp2/ViVMTC75U3B8m6vqNr2vcDf+rP+0jVgEAAAAAAKhptXSFUIRuH9ZY8c9tOxMGnVKQrpXvfKVftwiWfIFQI93wwFRN+9WtCrvcePt9tuJnPacpsfuKr8KJ0CPr5yrwmeeUN26KxnYOky1Q+urD5zV+8obiq4zOZhmVb+s/iZrzzNNafDqYsqvr4y/q90PbqPHlNsn1mRZPfVpzEoL0wKI3NfbGSDUO7qy1nzyt1JeG61dxjho+jgAAAAAAABeudgKhoKv1i//6Rp8cqegKoAJ9OWeUnih+d90jC/VGn016vO9vleRNj+xd9fzCBXorcLCGLc4sWujyMN3/t3Fa9NxodZtgLNQoSr9b+Zr+3GOHfrX1xFkvE1GmrUZd/6ilr89STt+x2nAiSDdMXqa/RP5TY3qN1ZcF3rveHtC81xdKD/fWnFE99W7X+dr265XqN3RD+aALAAAAAACgnqqlK4QCFRxYqLzCKhZr1EOTxkp/7zenKAzyciToT+Pm64Olz6jruxOUUJwpZc37g944tdCJJL31z2y9e1czBW09cXo8n0qXMdqaMjZQbww+09aJhL/o+fiN+kP/CG1Y00KTemfrf/rG+sIgr4J9i/XcPwdpwX3Xac70L6vp2AAAAAAAANSuevXY+aCWfdUme7meK3vnVeZHWuEaqm7NpARvDvP9N9p7oPRCJ3IKdbkt+MyEKpbxtfWfVXohs+QSBdr/0VdqPPxqBe+5S9d+s1F7ylz6k7l4tO4L4nogAAAAAABw8aqlQMh7dVCgAgOrWCwwWJcX5lRw+9UJ5eQF6hfBQdXXpcAm+q82d2rJJw+Wnn65TZd/ZnQ02ObrS/mb3E7oBGNfAwAAAACAi1jtBEIFR7X3P411W7MgxTnKpilBuu7xf+rXR5/WpKPf6PvAJmrkXaXUMo10dXChvqnqlrNzUZij//zrd37H/wm64S6jL8HyRlBcDwQAAAAAABqSWrpCKFMfrXLpkXE3q9HYraUDlqBmihl4rb6ZmKeCIx8ptfGjirbHqtQDuyJuV29bql5Kr75LcwrSN+qr8L76eaMN2lpB4uPty1eNH9JNjWK1ocT8RnfP1j9azNSDcxhDCAAAAAAAXJxqbQyhzCXP6P1BCzT38ac0cU5C0aPfgyJ09/Ovq/dXL2mw71HvOzTjnV9r8T8e0cFH39A+bxDTKEqPz5wgvT349IDS1eLENr3wzqNa8NIDynl6cVFbsqvH5GfV9qM/aE6S0Zf1f9BrLw7QgafjlOl9yljEAD33dKQ+n3ikaBt5Wfq+8U1qFrSB28gAAAAAAMBFo/YGlS7Yp78MG6Mhv5uiJbtekc038T/67P2XNPJPG4oCIt8j6Efr8bwXNe2DXWqs76XCb/Svt8foocWZlW39fDrka+uxB6Zq2spfqbFvfCOX9r79nKYkFaU7+6YP1/OTX9KCjb9X0ezPtGLqaM3ZV1C8S29qdva7WrHzXn0xf6SGz/mygjGHAAAAAAAA6pfafcrYiX2KnTxUsZUvpKTFEzRosb/5mXqjd89yUwu2DlX01nNZpqitfYt/W0lbDm2dPsr489+X2FFdqtgfAAAAAACA+qVePXYeAAAAAAAANY9ACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMppYCIZs6PzFaAUtnaYez9BzLNUP1617J+sf8VLlrpzMAgGpl1PinJqtPUK5cnlPTPPr2wIeKXZcqV112DQBwgWqoxltaasSEDto2e6Wy+BIAAHWiQV0h1LTPUxqYOVdzU/LruisAYC6eY/rfeSVDf5vaxDyih/u49Nq6rPMO/KnrAFAPVEONp54DQP3ToAIhAEB94VLq+k26ZUK0wj5aqQx+/QWABoQaDwANQf0LhKwtdVvMPfp5kwBf7woPbVPsmj1yuk/N7qPh/VrpCuN1QIBHRzet0Ko9HnUcOUJdI8PU5MZxGtdhl1YvSdDxOt0RADA5j1O5CpX11PvK6rvv1oFOOrQ3SF27XKXvPn1PSRF3U9cBoL4qU+Ot13TToH5Rauz7duHRt0mrtGy79+qhUHX2+zndopAb+qjnrZG6MugKBXy7S+8t3ELABAC1pJ4FQqG6bfRARcTP1cwU7x3JFoXfMU4P9XfptZXpyje+MAwaGKJdc1/RPu9s6zXqP+5+RWfM0idLZimTS1EBoP4ICFWInCqqyFXUd+/iIW0VZX1Tr00/XLzOl9R1AKivStZ4axsNGRyhpFOf0b0h0NgHdc/B2VqT5VSin8/pAba26h6xSAtmrTO2Y5wX+kzQwJuTNXu700+jAIDqVHuBUMBVunPMU/qFp8z0oCYK+SbZ99ISfpt+7tmkN1NODU/nVtYnq/TlhN5qYU3XPlkV5HHJVVA8O/+wNsZ+qFC+JwBA/WIJVccBd+uKA8uU7T6L+m6cGzyuQ9rw0akwCABQb5Wp8XJnaNXcg3KdHmHaqYP7PYqyB6myEaM97kPa9FF6cd13y5F8SJf1CpVlu5OHzQBALai9QMhzTJvf9veUseLO2MOkgztKP63A7VBa7hVqFWrRvqxUfbArSkMnjNfXaXu1NzlFqVnpyqqtfQAAVKxc6F+gr5NW683tRYONWquq7w55EyHCIACoj6qo8TKqd4GljXoMjVakzeKbYrmyiQK2VbHdAleJJ5edbqz6+g0AqNRFVnHdOp6wUDMTbWravKXa9hitPgFJWrI0Qcf5GQEA6o6f0B8A0ABUVeO9t4w9GK1DsSu0IKv4RuGuT2hI7fUQAHAe6lUg5HFkS52ayrrFUeJX4hBFhpxUpnfUUWu4WtqcSne4dDx9j/G3T0dGTlTP5olamk4iBAD1VZX1HQBw0bKEd1LjzI2KzSpxnWdQgAIo7wBQr9WrQMid9Yn+FTBG/dsf1opTg452i9H1xzZqq/f8Ym+tPiOsem/2uqLbkS0hamLzyFV87nG7PAoI8T7rgJsOAKA+qbK+W/ysR10HgHrPnZcrhbWW3ZLl+4xuCe+qgbc20WWbSixDPQeAeqdeBULeAeh2LFytoPsf0ZM9pR+MKZ7MbVpS/AQaOT7R4m39NWTCUwqU97Hz0je7Viu2eLA6576dcj06Qb/rsFfL58bxyEoAqDeqqO/+1qKuA0D959ii9/eP1NCnu0gFBSrMSdKmtQd0S4hVFrl84wyVq+d13WcAQG0FQi4lzppV4Rz34Xf08vwSE/LTtXXhK9pa8dJy7lmpuXv8NONM1NvTEy+sqwCAc+S/xpdSWX13p2vpK+nlp1PXAaCOnU2Nz1fGlvl6eUvpqakl35Sr5+XrvjsrTjMXnn9PAQDnpp5dIQQAAAAAAICaRiAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDIEQgAAAAAAACZDIAQAAAAAAGAyBEIAAAAAAAAmQyAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDIEQgAAAAAAACZDIAQAAAAAAGAyBEIAAAAAAAAmQyAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDIEQgAAAAAAACZTa4FQwKUBsl0ZqssvD9Jll5FDAUBt+eEHj77/vkCub53y/OipkTao8QBQN6jxANBw1XSNr5WK7j2JNG56tVx5zho9WQEAyvPW4KCfXeGrw98cP1rtNZgaDwB1hxoPAA1Xjdf4at2aH8FXNvadRL77Lq82mgMAlOA9cZx0fet77a3HTufX1bp9ajwA1B1qPAA0XDVd42slELo8MEjf5jpqoykAgB8F353Uz+zB1b5dajwA1D1qPAA0XDVV42slELr00kv1408/1kZTAAA/vL8w1MTYD9R4AKh71HgAaLhqqsYzKhwAAAAAAIDJEAgBAAAAAACYDIEQAAAAAACAyRAIAQAAAAAAmAyBEAAAAAAAgMkQCAEAAAAAAJgMgRAAAACAWmBR05tuU1sla+seZ113BgBMj0AIAAAAQM2zNFfPgfeo8dpEba3eDatpyzayHU9RuutspgMAvC66QMjWfqgeH3WtDrz6ktZkuc/MCG2vQSMGqkuETXI7lfbpasWuS1VR7TdOBp37a2DPKF0bapHyHUrbtlrLtqQr/3zaKt5maJub1atHF10faZdr2wy9vM5RNMvaUj3uH6g729mNpfLl2L9J763YroxKGqu8rQuff77HAABqRVV10xKqjjEP6t6oMFmNyv5VfKyWxp2q8VWtb1ObPjH6ZZd2CrPKV/8+27BMsQlZqqhaAgBqhqV5tK6zZut/U6s5nbG0UN9HR8m6aKpmp+RXPR0A4HPxBEK2a3Rzn4HqY3wZsKjMScQSrt5Gsf/5yW1a/GqyXPbbdN/wMXrYNV0ztzuNLwptdPc9kcpPWq3FBwtk63i37r3nYQ3J/rPeTq3g5FBZWz5WtRwwQaOjCpSybZve2Zit3OO5p1ZW50ce1d1BO7V8zjLlBLRQz1H9NPZ+h15cmFo+fKmqrQudf7rL53gMAKDWVFU3LWref4KG3ejSp8sWKM3aUfcONGp8bnGNP6u669JnaxdonVGqm3To51s/P2O6VlUYoAMAqp9FYZ1ayZq9QV9wtQ4A1AsXSSBkUfgdw3Rnk6+0btkh3T68Q+m59mj9PNSphAXrtM97kU7WSr3Xuq0eu6Wjmm7fouP5KXp7WsqZFQ66FNH2cV3XOlSW1LK/EFfelpe1zf0a2vaQFk5fqfSyWYolXDdGSF8tWq/kw96ZWVq7qYue7d5OoZZUlf7uUVVbFzq/hHM6BgBQi6qqmwEt1D3KJseG2VrjG3PioJZf1UqPde+h8B0rjaWrqrsupa5bqdTi5tIzpLbRY9TMHiQRCAFA7TBqfXRbq7I3pMqpUHUe+aDubBWmEO+Vm8pX9t5N+rertX4R1Up2Y1p+dpLWvb1Sic7iOm0J1Q29vVd7GvMtxnt3vnKP7dX7C436XlC0SLNR0/RX3yuH3p8+QztcfqYzfBEA+FwkgZBbWXHT9YL3pf0O3V52ttVq7IhHLs+Z5Z1f5EhRLRRi2aLjZT/vB9h0hbHn32bmVRCEVNGWcQLreE872SwO3Td5hnESy5cjbZvi3tlSfG+ySznGP3/eoaVsKSnGO5siWofIfSxNznKNVdXWhc6vRKXHAABqU+V102JvrWYWlz47eOonZbfxxSFT7uhIee8SznKdQ9212NS8821q5s7U5gx+ogaA2mIJj9b1vtvFnL5wqFlkmAIOxOqt3bnG59ho3Tewn/o69+qD1Qt0zGNXF+P9fSMOKnVWolHXrWoZM0EPRLn12YfLtC47XwH22zS0X6Susuh0IJS9do7eSf0/45VHed7Qx+JnOgDA5yIJhCrnPr5fX6uDbunRRskrU+UyPvCHhgTJW/QDvHtY6guBVW0GDFQrV7z+se88vgxYw9UhTMpN+lTv78yQKyBMtw4eorGjC/TXWQnGl48sbVy2Tdc+OkrPXpWmz09epeuv/ExLZqfUo7F6LvAYAEB1qqJuWqwhCjJe5eSXKOb5uSpQhJpYjU/7zrOru037TNZvuod6G9RXq1/VTr4UAEAtsSgsuq2sjk36okRQk595UKnpxoT04/ogqoPuK9itnXtSjSqdquNBUbpxYDs1tSTKFXSD7o6y6cjqaVqaUDxCqKu1cR64slQrP+Qe13FH+U/c/qYDgNk1iEBIrj2KXdZaDw0foynRJabnHytx1ZBX0a8LD7U9pvdejTu/OwWMLyY/M75iHNmZqNTD3g1kac3qdmo/potahyZoh9NiLBImW/4h/evTL6R2jWUJbasubUKVmlgfvn1UwzEAgGp1oXXz7NY/vmWe/rHfrrAOPdRn4ASNyp+hBXsIxQGgxhXfLubYtE8VV/UCnXS5ZbFZdeq33ALXSd9VnUHGBMt/tVZjObS5ugejBgCTaxiBkMG55x29vGelbKE2723IavPIZN2n/SVuFygaCHps1Em9/+pCnX824zH+Z1VQUIkpLu8v1VcV/VJt66jhQ5rpyILpWuMdrDlhh3bdMVG/GRijNvvmq27Hb66uYwAA1aiKunmw5NVApy75LHnVkK3z2dXdfKeyDnv/MuQKeU4P9bxJoXu2+/lyAgCoLpbwKF1ndejjff4rrtvjkffS/tNfTjxuo+IH+V0eAHDhGkwgVMQtl9Mpa5uh+mVEvg4sOPNIYlv7+zXyVo8+fvUN7XBcwGUxLoe+Mb5cXOt9tHHxYMwBoWGy6aQy89yyBEfoSuNLyn7nqW8gbjkPHVG+pZnxZUZ1GghV2zEAgGpUZd10fqFj7lt1bXPvgEFF9xrYO0TI4tqvTJd3jKFzrbveYN+rgZ0CAaBeMmp2VDvZHPFGnT6/LbjzDilXbdUu3KpPnBV9mPaowPhoe0VQ2brubzoAwKvBVEdraLjsdrsiOt6qO6MiVLBzgWJPfwuwq1PfdtL+ZdpvvA4PL57szpPD4ZLb1lnjJg1U4LZXNXOLo/KG3BmKT3LpxluHq9+hd7XLFaaeAyOVv3+B7xGabs9+HcmP1u0xdyjnwy+UG2BXVL8oWZ3xOuRNp86lrQtVqi1VfgxqticA4JfbWUXddB/UJqPuPtZ3hPrnbyx67Hy0Tdlrtxbd9lrV+tZrdNsdEXIdzNZJT4BCWt+mX7azyPGhv1sXAADVxmJXl3Y25cZfQM11pujjtL4aNuwR9Q8yzgMFNkVGtZWtON6X+7gO5Ug39uyjzq7dcllD5ElPVLrL3/Tq2jkAuLg1kEDIqtYjJmpYRL5yM9P08aIVik9xnAk5rE3VLtQbGg3XY+1KrObaqX9M9z6y+Fy4lbF+tpYHjFDf4Y+ri/HesX+t5i9NLRq8ND9VsfNWa9CQnnrg8Xt8y7syd2r5gvVFX1zq6srXqo4BiRCAulJV3fTW3TVz9Z5lhPoMH6Nb5NJX8Qu0dLvz7NYPsqlJ5C36ZfdQ3zimble2vvxwnlbVdCgPAJDFHq22Nqc+3XchNdel5CVzZI0Zrl8O8Z4H8uXIzi81f3fsWrUddbfuGxPlfWa9Pp6XrHSXv+l88AUAr4svEHJs0V8mbSkzMV/JsyYp2d86+SmaPWmS/226EzV3auJZtuVd3qnklbOMPz/NZSVo6SvGX0UzXefY1oXML9WWo/JjAAB1qNK66eV2KPGdV4y/81jflaJVs4y/6ukqAOCsWWTv1E42Z5IOlMyD3FlaNa3k51K3MpZM1bMlp6Qv1JSSi+RnaceSGcZf8ZbDB+jZia1KbHK7FkzfXq4H/qYDAC7GQAgAAABA/WexK6qDTblJiTpe130BAJRDIAQAAACg2lnsnXSjzal/J3KLLgDURwRCAAAAAKqdOytOL0yKq8Ft18imAcA0CIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGTqLBB6/KuCumoadWDOtUF13QUAAAAAAFCsVgKhH3/8UZdecql+/OnH2mgOAFCBgEsD9MMPnmrfLjUeAOoeNR4AGq6aqvG1Egh9X1ig/3dFsE66vq2N5gAAFQj62RVyf/99tW+XGg8AdY8aDwANV03V+FoJhPK+/UaNm16tSy65RPknXfL8WP3JFgCgYt5fFKxX2PSznzXSN8ePVvv2qfEAUHeo8QDQcNV0ja+VQMh74vB2PvjKxvp/dpsuu8xo9qsDtdE06omw8Mi67gJgWt7LS72/KHjrcE18kK+wxgMAagU1HgAarpqu8bVW0b2ddzq/rq3mUM9kZx2q6y4AqEHUeABouKjxANAwEfEDAAAAAACYDIEQAAAAAACAyRAIAQAAAAAAmAyBEAAAAAAAgMnUWSA059qgumoaAAAAAADA1LhCCAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATIZACAAAAAAAwGQIhAAAAAAAAEyGQAgAAAAAAMBkCIQAAAAAAABMhkAIAAAAAADAZAiEAAAAAAAATKZWAyFry24adE8XNQ7wKCAgQN8d2qbVaxJ13G3MtISr/4TeSps9X6m6Rvc/fY8OzX5dia6a7JFFzYdOVPfdr+rtdG8nbOr81GT1CcqVy1O0hOfkISWsWa/ErPya7AgAXLwsRs2ecKuSZi+Rr5SeZtTUJ0YraOksfeKsq84BAC5M+c/HxidkfXvgQ8WuS1WNflSvC6F36Mn7c/TP11PEp38ADV2tBUKW8D76Vb8gbX5jhvb5zhwWhXcdrZEjCvTPhSmlTybuw1o1e6Gq4wzTtM9TGpg5V3NTzrKke47pf+fN0o7iLy8We2cNeXCcrnp3ttYcdle+LgAAANDQlPl87A2J2sQ8oof7uPTauizxCRkALk61FAjZ1K5/Wx1Z/WpxGOTlVlbCSv2ry4PqGJqiT8qEP25X/cjk3Y5Exb5t02P336yms7breF13CAAAAKhTLqWu36RbJkQr7KOVyiARAoCLUu0EQtZwRV1xRJuyyp4tnEr+MF7Nyy5f8vYx7yrWa3RbTD/9vIm3ux59m7RKsduzlG9pqRHjOihpW4G6dI/UlUFXKODbXXpv4RbjxBSqziNHqGtkmJrcOE7jOuzS6iUJ5xXoeEOhf+kRtQrdruPc9gAA58Xaso+G92ulK4zXAQEeHd20Qqv2OIp+Wa6szk/opEN7g9S1y1X67tMFmrsjuJLaX9zWNd00qF+UGvvOckXbW7a9+FdsSxs9OKG1kuID1CU6wlg/SMr5VO+s2KeQu2LUPfIKBRrTvjvwrt6OSy+6ZcBf/+rgOAJAveBxKlehsha/rbTuqvJzgL95tq5PaIh7oeYWjyFhuWaoftsvU3NmJRTdSFD2lmVrS6NW31NUq43/Fx7aptg1e+T0DU9Rwflku0OytVH/kf103RUeFRbk6lBSrrFwTi0eSACoO7UUCBkni4JsuSr49cCVmqh93hcWfyt7g517ZNv6hmam5/vedxz9oAY55mrpQWMHQtqpZ+QyLZi1zvhgblF4nwkaeHOyZm93KnHJLGWe6y1jFSpQdk6Abg01OunkJxAAOGfGB/FBA0O0a+4rRVeKWq9R/3H3KzrDO75QVXW+raKsb+q16YeLAhhLcKW1X9Y2GjI4Qkmn2vKeR8Y+qHsOztaa4h8mAkI66FbbAr09a6Vv/eYDJuqhce302YdLNDvO5Vvn5ifGqFf4q8Y6Nv/9SyUSAmBSAaEKkbM4NK+i7lZ2DnBVMi/9kAJ6h8uamOqr1fYOV0khIWphS1Cyd1njXNDk5F4VlfZQ3TZ6oCLi52pminemcW64Y5we6u/SayuLwv1y5xNvrR/ZT9ats/Wyr57bdMPIp9Q14FDtH08AqAO1dMtYgC6T57zuL7aE36Yu+Rs1L/3Uh26n9m88pNt7hMtifFHwuDO16aPiX3CNFhzJh3RZr1BZjC8F1RrduL2/WFTnBgHARAKsCvK45Coofp9/WBtjP1Ro/lnUedchbfjocKmrcSqt/fkZWjX3oFynb0V26uB+j6LsQdKpK1XzD2nTJ1mn18/ee0SesC+0MdV1ep0v9haoQ1iQ8ZWikv6lpjN2BgDzsYSq44C7dcWBZcr2FkF3FXW3knNApfM8+5UdEi27JVUZ7hC1CjumzfEh6nCNVckp+bI1j5AnebuvlnvPJT/3bNKbKac64VbWJ6v05YTeamFN1z5PBeeT0BsUFfCplp0O913a91G8cmJq9vABQH1RSxGHRz8YTfm9CKgSAfYINY6M1KNPeEpMDFJA7hfGFo1pBa4STzw4vcAF9NUPq7EX5doBAJyV/FR9sCtKQyeM19dpe7U3OUWpWenKMmZZq6rzxheFctfhVFr781VgaaMeQ6MVaSs681iubKKAbWeW9BSU2abbrfx8l0pt0ngTYKnqPCQCIQANX8BVunPMU/rF6TJYoK+TVuvN07eEVVF3KzkHSJXNO64DOU3ULkTK8LRRZO5uLdsXoai7wmVJyVJ4uwDtX1MUAAXYw6SDO8o8qMahtNwr1CrUon0OlTufWILDdJmxzVLr8HkfgInUTiCU71R+UDvZKrjjytams5o7EksMNl2WR7nxKzR7i6P8LEvL6u6pH0EKC/Eom9vFAKBCbj+nk4ASSxxPWKiZiTY1bd5SbXuMVp+AJC1ZmqC86q7z3lsXHozWodgVWpBVfFOAdxyKc99SsUr6BwBm4DmmzW+XfMpYGVXWXf/ngOPuyublK2N/gbq3DFWou7UKkhOVn5unTNttCrN61NaWqV0N7rn3AFB7aikQytJnJ/upg92ijFIDS4eqY69oaWmi31U9DocCosNlMz6I11m9t3fWLwL26h0GlAaA8tx5OuYJ0VU2Kb1knbQ0VUSQS3u93w2s4Wppcyrd4dLx9D3G3z4dGTlRPZsnKraa67wlvJMaZ25UbFaJ34GDAhRwnpl+vTgPAUA9VmXdreQcsDTL7n9eulv5GfulmBvUTm7tX2Js3+3R3my7utzQTvac/XIUt+FxZEudmspq1OozvQhRZMhJZfr5Udedl6kfQuyyKV2nT18MEQHARGqp5LmU/GGaug7prZZvxCm96LEAatq5v37h2qZ/OuV3UGl31lYl6FENuilDy/YUjQtka99Ht+Vv0fqMqlt2uzwKCPE+/+D8Bv60hN6kQQ920FfvzuWR8wBQIaf2xZ/Ur2K6Km2h9xdd7zSrWvbup6sPrdYqb/m1t1afEVa9N3td0TA+lhA1sXnkyr/wOl+WOy9XCmstuyXL15YlvKsG3tpEl206v72rtH/pDCoNAFXWXZv/c0Cl87yc6friijG6pWCT5vimueXY61CzgW317aYtp2/bdWd9on8FjFH/9oe14tSg0t1idP2xjdrqG2Sogo47U7XLM0a92uzRiuJBpdvc1kVNAj6ouYMFAPVIrWXg7sNxenPtHRo0+in1KW61MDNeS5amVPGLq1M7Fi5XQMwIPdZd+sGY4sncqdVrzu5DuHPfTrkenaDfddir5XPjTj+S2K+y90gXZOpf787VjsN86AcAf1x7Fuoda4wGT7xFlxUPuHby0Ca9teZw0Yd1xydavK2/hkx4SoEqGqT/m12rFev79H9hdb4cxxa9v3+khj7dxajhBSrMSdKmtQd0S4jV+D7gOo8xf6q5fwDQ0FRVdys9B1Q2zytXh45JN2YfPP2dwZ21V9/YwpRW6vO5t1avVtD9j+jJnqdq9TYtWZleyc/C3qcSr9VVIyfot/088hSc1FdJB/R1aE0cJACof2r1okhX+ha9PWtLxTPdWVrzyvziNyVfy/e0gU+WzDJOF2Wla+kr6WU2E6eZC0tMcCbq7en+bklzK+OdGXr7TA+V+Mrv5f8GNgBAxdzKSnhHsxP8z3fuWam5e/zMPoc6L3dVtT9fGVvm6+Uyp5vU0wun6u1XUkvNc2etLH3uMDgTZml2lf0DgIbO+Hw8a1YVy1RRdys9B1RxfvB9Xp+umaUmGeeBaRX0KT9dWxe+oq0VbqaC84mXK1VrXi99TpDfcxkANCzcJQsAAAAAAGAyBEIAAAAAAAAmQyAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDIEQgAAAAAAACZDIAQAAAAAAGAyBEIAAAAAAAAmQyAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDIEQgAAAAAAACZDIAQAAAAAAGAyBEIAAAAAAAAmQyAEAAAAAABgMgRCAAAAAAAAJkMgBAAAAAAAYDK1FggFXBog25WhuvzyIF12GTkUANSWH37w6PvvC+T61inPj54aaYMaDwB1gxoPAA1XTdf4Wqno3pNI46ZXy5XnrNGTFQCgPG8NDvrZFb46/M3xo9Veg6nxAFB3qPEA0HDVeI2v1q35EXxlY99J5Lvv8mqjOQBACd4Tx0nXt77X3nrsdH5drdunxgNA3aHGA0DDVdM1vlYCocsDg/RtrqM2mgIA+FHw3Un9zB5c7dulxgNA3aPGA0DDVVM1vlYCoUsvvVQ//vRjbTQFAPDD+wtDTYz9QI0HgLpHjQeAhqumajyjwgEAAAAAAJgMgRAAAAAAAIDJEAgBAAAAAACYDIEQAAAAAACAyRAIAQAAAAAAmAyBEAAAAAAAgMkQCDVk1mt08x2Ryt2+RakuE7QLAAAAAADOikkDIYuatmwj2/EUpbvOYrq1pUZMeliN41/VzC2OWu7r+bOEdtCd3Vvp0x1blFqX7RrHr/foweoaGWocYbe+ip2uuYkkRQAAAAAA1BVzBkKWFur76ChZF03V7JT8qqd78pWdc0zKzS+/rfNiVcuYiRobLX08Y7rWl8mYbO2H6vFR1+rAqy9pTZa7aKK9j343qbtCym0rU4unztK+s+maJVQdYx7UvVFhRg9c+io+VkvjUlWz0Yx3X0fp9ivT9P6C5cr2GP/JHXeVme//WAAAAAAAgOpnzkDoXLmztPX1WdW0MYuadntEo6OsxusyKY7tGt3cZ6D6RIUZS5WJaXK3a/Gc/SX+hdnUYfAo3VKwV9lnlVNZ1Lz/BA270aVPly1QmrWj7h04Rg/nTtfM7c4L3alKmg1V20irHNvWa0dq2XYqORYAAAAAAKDGXCSBUKg6j3xQd7YKU4g3O1C+svdu0r9drfWLqFayG9Pys5O07u2VSnQWX1FjCdUNvWP0yy7GfIvx3p2v3GN79f7ClUotKFqk2ahp+qvvlUPvT5+hHS5/08M1aPJEXbtpul5O8IYaVjW/Y6SG9WylEO+2XZnaMHeutjrcVe6J5Zr+eqinR+sWbVLXMbeUnKPwO4bpziZfad2yQ7p9eIfSK7pdyjp8JiSyth+tn9uz9cH07Tods1jDdXPMEP2yg/cKoHw5svNlk6d4Xgt1j7LJsWG21uzxrnFQy69qpce691D4jpXKchvt9xmnsd0j5DvExj7tWr1Uq1KcRX3zO6+KdlX0H5m932T9tV/Rv7t/z/mzVhx2V3IsAAAAAABATbo4AiGLVc0iwxRwIFZv7c6V7NG6b2A/9XXu1QerF+iYx64uxvv7RhxU6qxEuXy3IU3QA1FuffbhMq3LzleA/TYN7Repqyw6HQhlr52jd1L/z3jlUV5R7lHp9NPdCe+tB+5ppiNG28szCmQJtSnfVXUY5B1LZ9CoDjq2eoZ2O9qra6mZbmXFTdcL3pf2O3R7pccjXD36tpOS5mnn6TTIpo4jH9e91x7Tp7GLlFYQpMionrKHFa8S2lrNLC59dvBUqORW9t5MuaMjFWGTspxuOfdv03vGfJexbtitA3XvqPt1aNrrSnZVNq/ydk/JjV+gxTucvpjo/3LdVRwLAAAAAABQky6OQKhYfuZBpaY7pfTj+iCqg+4r2K2de1LlVqqOB0XpxoHt1NSSKFfQDbo7yqYjq6dpaUJRAGJxtVaBriy1vR9yj+u4o/ytSv6mn2a1KUguHUpNVYY3kMk6m95b1Pyuwbr+2Gq9vMcld+jZ73e55lv0UtfQbK2bl67TMVRoe93eyqKvFr2hNcXjHx10hunn7VoVrxRi9DlfOfklgqv8XOOYRKiJ1XcJlfIPp2hf8ayM/2zSLzr0U+v/svgCIb/zLFW0W8yd41CW41R6ZRyL3tVzLAAAAAAAwLm7qAKhMwp00uWWxWb17YA34ihwnZQxQUHGBMt/tVZjObS5hp557s7YpoTsx9V38mS12/mxNm1NVLqziiuEQm/WvVEF2vzqngscxNmq1j1aSYeWK7nEkDyW4EiFePc563zH4rGoaef+Gtizg64OtcriLtqfbwMqn3de7VbbsQAAAAAAAOfjIg2EJLfHY/Q+4MwOeNxyK6iWGj+s9a9M1d6b7lDPngM1Nvp27Zr3qlal+w9FQtt0UZjVrrDJM9S3xHT7pP/RVQue14LUs7jlzMvaRtGR0tFF6ec2DHOZq4GKtnXmqiFL+ACNHRKlb7e9q4XJWcq3dtbQR4vG9fHeIudv3vmotmMBAAAAAADOy0UbCFXGnXdIuWqrduFWfeKsKDbxqMAtXRFUdvf9Ta9IvrL2rNPbe3botqcmq2+v5vowPdVvSOPcs0B/Ty+x3eDOeujRKH21aK7WHzz7AMTavJOu1jHFHS7dkvs/Xxj73EEdWtiMfS5/3Y3b+YWOuW/Vtc19AwbJe9WPvUOELK79yjQWD2geIZs7Te98tEfp3u5YDuo7FYU+AXb/86pqtyaPBQAAAAAAOD8NMhCSM0Ufp/XVsGGPqH/QRqUV2BQZ1fbMk6/cx3UoR7qxZx91du2WyxoiT3qi0l1+pheU2X7oTbq5Rb5yclxyBzVXZIiUn+Yp8VytCuQ7dbxkhuPJlfeaJtdxh85mPOoi/7+9ewGMqjrwP/5LMjPJJJmQxBCEIFHEQmEVFC34QMX1UUVgxRatspU+rNbntqt96P/f9u/+rf+t7VqEVlpri1vwQQsKVHGFAgoCFhCQh0FCIIEkZIAJZJJMkplM/vfOJJDHZJIAmRDu97ObJXPPveece+fOrPeXc8+1K3Nof9k9m0IhTgve7Xpn0626f+qDutf5njaZE2kPyD4xZsq3R8s3efXQ7fdqkm9Z+LHzY10qWbJSxUb7dneJvPbRuvHmS6UdbvlsA5Si8MPgA1HKOmy3244FAAAAAAA4WWdnICSvtsz9jZx33qNbpn5LVzc+Cr15+cb5SzT861/WV7412nxmvT743Rble9tZ3ioQcmYO0pcmXqMBoWew+1X++Sq9sajZBM/dxibXAJdUWaKKNmU+5S+YpT/77tTtX/66LrGHl5UXbdUhf7ifhYtn66/2ezXhHvOYeLV3zSua92F4IiJ/8bv681KXvnLjPbr/+sYavUX6zBe9rON2AQAAAADAmaZ3BEL+Yi185snmC1Q49yf6YfMl+XP0v5qv4ivWurnPGz/hl+YcOT/8txNPvvIXf6hXnvswQlMRltudciaZ0xSFEw5f/iLN+MmiU9snz1r96sm1kcvcK/T/nlwRocCnvJeebLHfLfg92r7oZeOnvXK3NrzxgvETqdCnwhVz9KtIzZrHu92yjtpt/d5FEO1YAAAAAACA0653BEI9xi5XTo5yLhyvL9o9+kdJ63vHAAAAAAAAeh8CoWjs2brpWw9rjMurvUv/W8uKo9wD5bpCj/9kqgZEKvPv0Ms/nROekBkAAAAAAKCHWSYQ8hcv0v/t4M6lCBuFbnda2Jl1vdv151+XyBmxHp/chEEAAAAAAOAMYZlAqPv55Cku7ulOAAAAAAAAdIhACAAAAAAAwGIIhAAAAAAAACyGQAgAAAAAAMBiCIQAAAAAAAAsJiaBUDAYVHxcvIINwVg0BwCIwBZvU3194LTXy3c8APQ8vuMB4OzVXd/xMQmE6mprlJyapkrv0Vg0BwCIICklVf66utNeL9/xANDz+I4HgLNXd33HxyQQqjh6WFn9BiouLk6+Sq8CwdOfbAEAIjP/ouBMdSklpY8Olx047fXzHQ8APYfveAA4e3X3d3xMAiHz/3GYnU9Lz1JytksJCUxdBACxYg4vNf+iYH4Pd8d/yPMdDwA9h+94ADh7dfd3fMy+0c3OezwHY9UcACCG+I4HgLMX3/EAcHYi4gcAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsJgYBUIuXfHodNnmzdQ6z4mlziF36jsTa/T2rHdU6I9NT5rYc+7UDx9w6o3/mKt8f4sCTXrkNn0+62Xl6Xzd9cStKpj1kjZ4Y9s/AAAAAACA7tJjI4Ts2dfqvjtc+mD2gpiHQUbrGjB2kLyHpDG5duXnt9MB/z4tnDVHIgwCAAAAAABnkZ4JhFwXa+p9I7Xrtdna0hNhiz1HoweU6n+WeHXjNRfKmZ8nXzur+r3tlQAAAAAAAPROsQ+E7Dm6bfqXpfdma2Vxq5E5zvM17s6Juqyv2a2Ajm5aqPkfFofDmvbK7EN074Mj9fkOp0aP6KvEpCSpdLneeHODytoZ+GPPGa3zDm3UkmKfBmeMV64zT3mRcp/jt4/NkW/SI7pm6yzNOz6ayK7cO41lO2ZrnrlxtL4DAAAAAACcQWIcCGVq1L1f1+Ctr+h321oPDcrUFdNulWvlHzQj3xded/p9muI2Axdn+2V7jJ3oO0LDvbP0ykyP/HIqd/IjmnZziV58p1htM6Hw7WIHNy6W3yjcWpShG3OdyouYCDXxq2RTkbKuyZU9Pz9cpznKaNAhfbzY10HfiYQAAAAAAMCZJYaBUJK+MOlbOm+QUz5vcqjhlnM5j9MY3zL9Lr8pQPFox7ICXTc+R07viHbL7HukQPkOrdniaazPp8L339PRBy9X9vvFaj0ISfZcje1fqk2NExe5NxYp/aYhcuZtizqax1+8Xvv7jteFzvzQaKLQKKPS9Vrij953e15+hFAKAAAAAACg58QuELJl67zAa5rxvFvjHvy6pgz7dYvRM7bsQcoaPFgPPBpotk2SbOW7lBSlzKbwsmYlxguPDmmsXBG6Yc+9XOeWbjw+kbXfvVF7M27Shc5t2h41EXLr44K+uj40miigAaMbRxkZRc6o/ROBEAAAAAAAOKPELhAKFOnv726WOUfzu69+pAcfmKZRs15uNql0QOVr3tSsFe42mzovHd9umexDutAJu3LHfkEZ552nh753IrxxZmSo7xCntm+LftuYe2OBMm7KlXNPTWhS6vWLm6Ke9vsOAAAAAABwpumZp4x5PtS89wbr4WnXquilD+UxFgXcbtnG5si1wt3mKe/Rypq02BFbpvrKrU2tV7Lnakzfz/WnX77R4lH39pwJeui2YXJu2xz9tjH3OhW4btPQYTUaUBK+Xayz/QMAAAAAADhT9EwgZPBuflNvD31E/zphj35rTv5cvFJr9YCmXFqo1zaH5wNyXTxB43wr9G5+lLJCYycyRuiaYe+rMDRRtV25N9yo1M/ny936IWYXjtW5petV0mq5371Fu1Nv01DXZm2pidJpv1ubCjJ0/+027Xx9wfFbwaL3nUmlAQAAAADAmaXHAiFz8ue8Ba9p8CP3aOKuWVqY79G6Oa/Ldue9euh6qV7mXWbr9VboKV6+KGXmpNIFKho0WQ9en6HEpNTGx863fsKYU7lj++vgmsK2c/r43dpakKqJQ1zasj16r8s2bJXvkgxtajFbdbS+AwAAAAAAnFliFAh5tWHmzLaL/cV694XnT7z27dPquTO1OlIV7ZXZQ4UqeH+BVkedvdmnvDnPKy9imV/Fi17Q7Ma+Ln7h5cblxc1+b+ReoV8914X+AQAAAAAAnGF6cIQQAAAAAAAAegKBEAAAAAAAgMX0/kDIn695L+T3dC8AAAAAAAB6jd4fCAEAAAAAAKBLCIQAAAAAAAAshkAIAAAAAADAYgiEAAAAAAAALIZACAAAAAAAwGIIhAAAAAAAACyGQAgAAAAAAMBiCIQAAAAAAAAshkAIAAAAAADAYgiEAAAAAAAALIZACAAAAAAAwGIIhAAAAAAAACyGQAgAAAAAAMBiCIQAAAAAAAAsJmaBkC3eJld6phyOJCUkkEMBQKzU1wdUV1cj71GPAsFAT3cHAAAAwBkgJsmMGQZl9Rsob4WHCxIAiDHzOzgpJTX0PXy47ADfwQAAAABiEwilpWeFwqCqqopYNAcAaMYMgCq9R0O/m9/HHs/BHu4RAAAAgJ4Wk0DIkZiko+XuWDQFAGhHTVWlUrLTerobAAAAAM4AMQmE4uPjFWwIxqIpAEA7zJFCzOEGAAAAwMSVAQAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFhMLwuE7MocdqVuGj9GXxycLe+q5/Wrd9yNRZkaded9+pfRA+SUV3vXzNe8RXnGbwAAAAAAAGiuFwVCTg2Z/Iimj67RtlWr9MayEpWXlTeW2ZU76RF97RKvPnrtFX3uHKV/ueNb+mb5c5rxoadHew0AAAAAAHCm6TWBkHPYXbp7eIHmPLdA+b7WhRfq+tEuud+bpcWbzQBoj17v/wU9dP145axboGJ/T/QYAAAAAADgzNRLAqFMjbp1hFx2t77y4+eV4fTJ/fkqLXpjhfK95t1iQ3We3atP9zTdIOZXydYi+ccO1iCXVMwgIQAAAAAAgON6RyDkzNHIAVL5po/09vpCeW0DdM1Xp+r+6TX6z5lr5XVmKEk+HfI1GwrkK1eNBqmv0y4zIAIAAAAAAEBYLwmEMpQin/av36C8fWa4U6zFb43Qxd8ao6GZa7Wxp/sHAAAAAADQi/SOQEgB43+cSkpqtsRrjgDqHx4BFGk0UKRRQwAAAAAAAOglgZDXrcM+6YIR2bLnFYciH1vmALlUqaIKv/yBXSr1X6MLcpsmDLIre+Qg2b07VMRz5wEAAAAAAFroHYGQv1BrNnl1yTX3aGLBX/Sxd4BuvGOwfDte0a5Q4LNHy43yh26/V5N8y8KPnR/rUsmSlTxhDAAAAAAAoJXeEQjJr8J3Z+l12726/Z6HNcZ47d6xRC/Py5OvqXzxbP3Vfq8m3PMtXS2v9q55RfM+5PFiAAAAAAAArfWSQMjg92jLgpnGT3vlbm144wXjJ6a9AgAAAAAA6HV6TyAEAAAAAACA04JACAAAAAAAwGIIhAAAAAAAACyGQAgAAAAAAMBiCIQAAAAAAAAshkAIAAAAAADAYgiEAAAAAAAALIZACAAAAAAAwGJiEggFg0HFx8Ur2BCMRXMAgAhs8TbV1wd6uhsAAAAAzgAxCYTqamuUnJqmSu/RWDQHAIggKSVV/rq6nu4GAAAAgDNATAKhiqOHldVvoOLi4uSr9CoQ5C/UABAr5sggZ6pLKSl9dLjsQE93BwAAAMAZICaBkBkAmRchaelZSs52KSGBqYsAIFbM28TMkUHm9zCBPAAAAABTzJIZ8yLE4zkYq+YAAAAAAADQDobqAAAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYTMwCIeclOTr3xzcqoY9TcQnxndqmoT6o+mM+HXxuuXyfFndzD2FVo0dfrp8886ySU1zGq7hObtWg6iqvnvnJ09q0aWN3dg8AAAAAgNMuJoGQGQbl/GKS4uLjzOvoTjODI1tGSmjb4h8sJhTCaWeGQf/5XzOVme5SsjNRNltCp7YLBOrlrUoNbfvD7z9KKAQAAAAA6FViEgid+9SNXQ6DjjM2i2uIC9Wx9+5XT3vfYG3myCAzDEpzJXdpOzM4yuiTeryOyRNu6Y7uAQAAAADQLWISCCWkd+1iu404o440Z5c3cw65VlNuHaMsW8C4gLepqmCV3lq8QWV+o9Ceo0mP3KbPZ72sPP+pda9rnTpf4+6cqC/1T1IgEJAC5fp02QKtzPN2T3v283XXE7eqYNZL2tBNTfRmKalpSk3p+rnVxGVsG77VrAs6Ogeilrt0xaPTlTRvplZ7TrrbOC5DGb+8TDVP/V2+ukivpfj+uXLddanSB+5S8ROfKdB889RzlfHktXJlG19TjnrV/GWFDr1XrmBTeeZgZT15uZLT640XCar/5GOVvVzYso5morZlcmTIdf/VyrjMpYa8j1X6fMGJdVIHKuPpq5SWbq5ntLXNaOvXBWrv662jtk61/LiuHIOO9sGRpT5PXqc+A8Mj+eo/XKuDrx9QfWe3z8zVOUZfUlKM3+1G+Xaj/DeR+tL2PAAAAADONjEJhOLiTnJ0UPM6OjnvUBN7zgR9Z2KS/v6H57U9dJ1tV85V0zXt3hr9fs429Uw2kqkrp39Vg9a/ohfnesIXKa4hmvTtb2uSd5YWF3dDMuXfp4Wz5qiHdviM12Ccl/HxnZ03qK3wLWZd2b6jc8DVQflJdxURxF80TCkHduhYXaTXyUp5+nZlZRxRxQflahjc+nbCZLmeHK/EZYtUtKY6FFZk/PLLyir6i9w7A6HwJuNnl6phtlG+s7axvsnqd8MhFa+oblNX9LYUru+Xtyv5g2Uq/tbBEyFIU1+eHqfEdxap0OyL8Tr53yar/9fKVfR6eRfbOtXyVn3uwjGIvg82JT10g1I3vaeiZyvCdT15u/pd8zeVNK4fffsMpf/scmn23xr7kijnv03RuRPLdWBJRYuetD4vTjfH/VOV/dkiHVhTG3UZAAAA0J3OyKeM/ZMzR/vqDquy/mT/w9ilEZOGa/9bv24Mg0x+Fa9doH+MuU+jMrdpdU8EJK5cjUzapLc2e078xdqbr6VLDumx8Tmyz93X7l/zT4Xf6+uGWnFSOjoHFmV0cI4c6Zl+n5VsctzcTzXvbGgc0dP6dbV8MxaqsDIgZf6TUm9qtXn/i5Sesk2laxqDDeM769gf3Trvrhwl/LRQDbkj5CrfqOKdTd9jRn3z9+ucaX0Vv6LwxCiizrRlsN9yg1y7lunAgoOttjU4+sqVvl9H/tEUslSr+r+3qeFnObK9Xt5qBExHbZ1q+QnxXTkGHe2D41ylDy3T4d9WHC+vmrtLmY8Z5Wt2G+UdbN9/kFx1n6r0eF9q5Xtrn+IfzVLCkopmAVvr8wAAAAA4O51xgdA1rot0T8aV+l8lC2T+B/tJceZodOp+LW8z4sajLUvXKDfiNuHbdC7rax6SgI5uWqj5HxbLFyq6VlMmjlZW6GiFy14zykK124fo3gdHatOqGo25frDSk1JlO/qx/jpnhQpbN1/jk882Un2dUlmzjMZfuEh/8tSE64vWjyETdM/EL8icucZmC+jA8je1cLM7tF27Za1vjXMOMeq/NVy/8b+1Bas0f/Fmefxd3BecnI7OgZqkDs6RpNj3uQfZJ96pfv6lOvBe+CI/fvg/a9CDZTrw2PZwyOE4V/1mXKKKx98P3dqTMOpKnfvAeQqN2zJv4Zq3QodWlCuYeZEG/naIPF9fquqmUR+OLKVdUKajhYHIrw3BynZvhFJ8v36KO/BJi9AgmF+k+uxzjPYLVVe6Q+4/eluO5LEbPaurVyTR2pLSlHJTvY7+LEIYFBK+HauFRJ1kW6defny9jo5B8/elo3045xzZq0oUaD5q58gR+dMvVIJjt3E+dLB96Vbtf6JlcbwjQW1S+DbnRa4GzDhPxxYlKP22frKlGJUe+FQHn98r233XKvOfkhWfmqj69StV+pvG29fM2+SeGqOUlDoF/dXyLTsq51VlKvnxYaU8fZPSL86S/drJGnjdTrmfLVJSm2XbxZ1qAAAA6G5nVCBkhkHfzLxOTxS/Lk+g6uQrcmbKWVMib4QQw5u3QdvNX+zNl2bqimm3yrXyD5qR7wu9HjX9Pk1xz9a8wlxN/eogbZr9QuNoI2Pd++/TrXtO3OJlyxihGwe/pldmviOfeWvahEd0x5VbNOvDVpO8+PdoyUfj9J1Hpqvve8u0fls46JHfK4+ng37sydGUOzL0cVM/nOdr0oN3aWzhTK32DolS1nI/x02/Q4PWzNaMbd7QQci54UF9Y5JXv12QH+pLp/cFJ6fDc6CjcmsFQv5PSxT3zb5KeK/QuNC2yT7+HCnbZXzEt8trHo/+F8hxNF915tWzY6D6PurS0Sfnq8osSz1XWc/foLTPFuho6V6VPlSk+mZX2fHDR8ix6ZPwthFedyzCrVJ1PgXVT3EO4/fKctVUNi+0KfHmfqp7Z33XR56kZijFXq6KL12nnNv6KcH4/qrfvlnul3fLb/a37qA828fonFuydHDJYQUdaXJNGyr/20vbn9snFjo6Bp7m70sH++BIVlzV0VZ3HweMehIVuqG4q8cgNUtp3+ynmjc3tAisIp0Hcf2GKCPjbyp97IPQeZj08Fc14PkL5P3T+9r/GzOsTFOfFyco46K/6PDuZPV5aowS5i9S4T/Ct66lPHmn+qSUGb9XqOLZBappdXtYXYRlAAAAQHeLeSA0JClbN7pGaPahlS2W35w2QndnXKmnSuafWhgUYjMu1QKdvv3KnjNOY3zL9Lv8piEZHu1YVqDrzFt08gq1cPYeeY8HKx7t2RHQ6GzjwrwxEAr4i7T8/XCgYv652b2lQAk3Zcr+oadVH/zyrH1ZMwov1fjxU/T4V1NV+fnHWv7uauV5/NH7UehUUsArb01jkW+fls1fqsxQihOlrNV+XhZYrj9ua9oZv4pXL9TuR27Thc58bQ90ZV9wcqKfAx2XW0zpXtVmj5DdUaj6OpeSLzgizyKXXMMT5TUunG1f7KeGD7aGL+gdDiXUVau+KYCoPKjy//pYttDpHlC9p3kskKikCS5V/rG8ndcdC5aVqGHwucZ3zeETAU//bNkckddPGD5WWf226eCWk7jgd7iUcN4F6pOxXAcf+8DYm0Q575+sAQ95tf/X5qihgGpe/Uh1M6bqwnu9CqS6pHXvaf+a1vP09Ky2x6D5+xJ9H0KjedoItPi9M8cg/qLL1P/7I5Q42KXg0sXa3+L9aOc8qCrRkQWHG4OjgOpWutVwQZHKj9+eVqHqD+rU70Ljza+8QGmOnTrY7Na1qvk75H+0a8cKAAAA6G4xD4QO+o/pEud5eqLfrfpl2dLQMjMMuifzKv2o+E2jvKKDGjojEB5N0Mm1bdmDlDV4sB54tNnFhS1JtvJdRi0+1diHafzdYzXYFa7Rnt5XtlXNKqjxytvmT9DtH1pf8Wa9O9f4kUs5l96gOx54UP3/e7bWR+uHL09/+3i07n7kuzr4+VZt3bJNecX5Cs8xHKWs2UGwZQ+Q9qxrOb+0363Py1P1hUy7tru7vi84Oe2dAysbQ8b2y3u447FWV67KA+lK6W+cmnWDlFy2SwfXZivNnINmzSE5rkxQ5ezGC+/KIh16d6jOnfEvqv0kX95VBarefUARb5pKzVF6ar4OlbbzujNKd+to+WT1/XKxDr5XHnqCVcajQ5VQt1PB1qOMMi8Kj156es3JBauJCdL+zSp7/UBjBFIr36sfqualS5ToOChfXZr6PH214v80V3vWVCioZDnvv1n9769W8cvt3WYWYx0egw72wbz1q03YZuv89o1rBXd/ouLvfhIacZR8/60a8LUqFb/e+GS4ds6DhsrqlsfQH1CwytdytJLxnscZ37fxGVmKM87T+lZlAAAAwJkm5lf65kTRPyh+U7/IuSsUCu2uLdMd6aNPYxhk8HnkSxohM79pPajCNewK5bo3NJts2hRQ+Zo3NWuFu21dzmG6976xKpj/pl4pDo+bybzqUU09mX45M5UpjzzHR+54Vbx5kV7xTtNDN12oLVuj9MPcrbVzNGODS/1yh2j4+OmaYNukufPWqszvV1l7ZSfTT3SfDs6B9W+65YxWPsdqiVCtatfVKvOSNNn956n+gzzVl1bJl3GJHKkBpWaU6djxebYDqluyVEX/kyzH8BylTL1VfR27VGrOx9Lqgtz2paGK++CD48FE69edUy3v88sU//gNGjg5QQ1HS3R07k7V3XSkZRhgPn3sqUsUmPm38G1uJ6O2XsGq+lYBRLVqq5JlS5Xiz7lEfeo2qjgUhIT75nt1jWpnXKGk1KWqroxYa+x04hjEX9TBPhj722B3tHqmn03xxjkS7Mz2rY+BUV/1qxuV/vwI2RcY69Wd7HkAAAAA9E49MvSjKRR6LPsmXZU65PSGQSZfsT6tnKiR2XYVtphYOlOjbhorzdvQYvWA2y3b2By5VrjbPJ3dnnO5soqWaX5xs/uvkmyyncQVgzN3kr4xYpVeXNDyaWK+inIFnM6o/TAnyh7i8ijf7VVZ/mbjZ7v2T/s33Zi7QfOKs9svK2y+nyXS5f3kNOo/sTcZGpxRqSIr3o7UAzo6B5I6KLei+s/2SY9doBTVq+rZ2tAkwZV7M9Tnmgvk2L8vPIeOKTVLznO88hVWq27LbuNnr2qe/qoyh+fp4Jbmw96SlXxTgiqer27ndRdUHtaxZxfoWONL+0TzsfB5zUaTJCr58RuUvPy9Zk/aOglGO3WOEbI5PjsxqbIjWQ57tbxm0HFuorFObavAqN44YomtApSe0MljYO9gH8wJpFOGyu7YfWIuqP7ZoYmmQ6872D5+1M0aeP2nOvDrZiOmQvU03Yp2CudBM8HyMjX0SzdqPXCinXZuIwQAAAB6Uo/dC2SGQi+6l+lce5/TGwaFeLVl6ee6auptGvKHRcoPpSt29btikr7kXaXfe9TiVip/8Uqt1QOacmmhXmt83Lfr4gka51uhd40LcQ0Yqmx7cWjKIHvOVbrjmr5KWN71Xvn2rNHeiRN165A5WpzfGPnYMzXq5uGq3bpO3uLCKP0Yqgn3OvXXWe+Epy6yZ6ivK6DQE+VdUcqa8Rev1j9s39Kki/fpzaZJpa+9U18sXaaVPqnT99jhpHV0DpTv8UYt97Vf9dmrtFhV6bcrvWqjDoRGeQTkX1mupEfPV2Bes6d8nTNIfX+UqLLH14VGe5jz7jgy6hWeksymhMwE1Xtqpf6D5arbqYNNI1Vavz4pNjluuFrZl+9R2U9PhB72iTcpy79Wxe9F/o5LyExWg6e641u66g7q6Lqx6nffuSp5+WDolljHLZcradcWHTb2NViUr7phl8uV+56ONT4dy3bNFUqt2qVjlV1s6zRo3lb0Y3Difel4H4xjsGucsm7JUMmS8tAtYSnThqr+7UXh2+g62D6Yv0u1jzYvt8l+w8Wy7doYDhVPy3lgKC1SRd0EZXxpt9z/MM+FRDnvMOfB+uj4Kg2eesX1Mx+BVht1GQAAANCdenRyGDMUyq+PfHvUqfLvW6Q/LrlBU6Z/TxMa97K2aI3mztvWdvSNPFo353XZ7rxXD10ffoBzoGi93lpsXH77V+jtHdN09xNjpJoa1R7apOVLdurqDKfsRk1dGlfjz9fC2Us1fvI0PT4x/LQo8xHxBz/+i15dG74Kab8fq/XnVZM09ZHvhZ6kbDP26fDHb2l+KAGKUtYi5DH38y0l3fVtPX5jU/2rNHdBvjWDhp7Q4Tng6aDcZSzor3/+1vd0WYv5dIv09uwFKjwrB3p55Ssw9ryg+PgUwsH8ParLyFJ18xEnhZ+q9C9Xq9+MqaGnTplP+vK/+6HKdhtbZX5R/X97vo58fakCVw1R/bKlx2/rsrd63SWOLJ3zf25QSnq9Ap9sVtmzBSe+E1IvUr9HBimhIFkDXmxeu1fHnntfFUcGqu+MMfI9vkDHOhFC1L3+vo7cf4NyXkoOj4I5sFMHn28chVJZKPf/c6nvv09Rn6bPvDtf7p991viErq61dUqat1XXwTGovej4++LraB/MSaN/u0zeJ2/QebclqMF4f+vXr9bBpkmjO9reKD/0jENZj07RIIfRF3uCggXbdHBGeMTQKZ0HLVTo2M8/VtZTU5T7jToFq2rl21Qk/8ATa/jX7lT9L6bo/OvydfCJNaqpi7wMAAAA6E6xCYQajMuX+Di1el5w19R3/e/a3vwVenXmisiF/mItfuHlE699+7R67kytbrOiT4UrXtavWlWTd7yefM17Ib9V1Ys0Y067ndLKucZPe51utx9+eTYv0OzNkTaKUtZmP42257wQuf2u7stZwLyVJBhsUHz8yd1YEwjUd/2WnI7OgajlXm144SltiFh2tgqo5vk/q6j5oroDOnj3gTbr+Vd8oAORPvKez3Tg7s8UGslTvkOefzQFSTbFtXjdDs927X8swvK6wzry4/k6EqFIlbt14JbdUSo19uFfW+9DlLZUreqX/9byODQT3L1dZY9tj1xY19W2TqG8RVsdHYOm9yUs6j6E6m55i15rHW0fLNwt9xOR+hPlPKgrVMl3C1ssCu7+QEU/bbmaf8kC7W964SnQ4SeMn6bX/S/ToNHNVi79TCX/+lmL7SMuAwAAALpRTAKhwNFq2dJTdNKTWTQYdVQwhgWnX1VVhY55U5TRJ/WktvdW+UJ1oLcIqG7F7iivYU2cBwAAALCemARCB3++XAN/MUmKO4lRQmaI1NAQqgM43Z75ydP6z1/NNE6zOKWmJMlmS+h4I4VHBlVW1ejYsapQHQAAAAAA9CYxCYR8nxbrwA8W69ynbpQtzSklxHduw/pgaGSQGQaZdQCn26ZNG/XDf39UP3nmWaWkpHU6rzRzSnNkkBkGmXUAQLtKP1HREz3dCQAAAKClmE0qbQY6e+9+NVbNAZ1mBjqTJ9zS090AAAAAACBmevQpYwAAAAAAAIg9AiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwGAIhAAAAAAAAiyEQAgAAAAAAsBgCIQAAAAAAAIshEAIAAAAAALAYAiEAAAAAAACLIRACAAAAAACwmE4FQg/vrenufqAX+c0FST3dBQAAAAAAcAoYIQQAAAAAAGAxBEIAAAAAAAAWQyAEAAAAAABgMQRCAAAAAAAAFnPSgRATC1sDE4oDAAAAAHD2YYQQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxRAIAQAAAAAAWEzMAqHzRw/X1GcfUnJ6mhJs8bFq1pLqA0FVH63Q/Kd/q32bdsakzUszM/XS2LHKTExUfFxcTNrEqQk2NOhIba0eWr9emz2enu4OAAAAACCGYhIImWHQN2f/WPHxcWpQnGRciKL7JNgT5DqnT+iY//HB57o9FBqRnq43r7uOIKiXMd+vvomJofduyqpV2l5e3tNdAgAAAADESEwCoak/fzgcBoVyIMKgbmceaONiP8741zz2v7jl4W5t7ndjxxIG9VbG+xZvnCezx4zRNe+919O9AQAAAADESEwCodTMNAYF9YT4eCX3cXV7M/2czm5vA93IHCnEewgAAAAAlhKTQCiO0SM9o6EhJvM18f72fgm8hwAAAABgKTxlDAAAAAAAwGIIhAAAAAAAACyGQAgAAAAAAMBiCIQAAAAAAAAshkAIAAAAAADAYgiEAAAAAAAALIZACAAAAAAAwGIIhHpMnOzxqcqIr5E74O/pzvRetgulH3xXKl8ovbS2p3vTDYyPaOYAKbVcKvL2dGdOC+eQazXl1jHKsgVks9lUVbBKby3eoLLe9DFwnq9xd07Ul/onKRAISIFyfbpsgVbmnZnvUcKoker7zeFy2OsV50hQ/bYtcv/2M9XVtV0nMcV8Va/AJxvlfrlA/tA6yUp7aZrS331DRUsqWtQdf9E1Ou+BEh14osDYqmvrZTm8xu/N1an2T0t1cE11B/22Kenhycq+zGF8kxocLjkyfKorC4SrqSqR+4kNss+I1obCfUg1yhuPQ0N5iY7+br0qdtee0vEGAAAAeoPeHwjFuXRB8kANt2coLd543VCncv8R7azep6JgQ0/3Lop0jUv/ovr58/RXr0e96Vo4NrKl739PGmA/schbIu3aIL2/TvI0Xvg506RM4197//DZHOiJvnYj2xDpqW9LRXOkF7f3dG9OmT1ngr4zMUl//8Pz2h7KTuzKuWq6pt1bo9/P2aYzJU7pN+F7uqNotmZv80UozdSV07+qQetf0YtzGz+7riGa9O1va5J3lhYX+zvY/mTaPHnxF12pnAccOvL066rymEtsSpz4ZfV/ulbFPy0IfWTih19jrJOoI8/8RQdLzSWJSvrarRrwdIKxzu7Gj5Wx3Teuleujv8nridZiJ9czvqePPLNAx0pPrt81v1mgoqZ1h/+zBt6xSweePaDg8RqSZY/aRnK4Dz84UR6f+0Vl/2SyHL9aqMM7z7YvEwAAAKCl3h0IxWXqqj7DlBsKgmpV7q9RfbxTWY5zdI5v3/GLBfRCNrtxkW2GQV5pyy7j31Rp0IXS5ZONnyulF2dKRcaFs3ez9H+KpYD77AuDzjoujZg0XPvf+nVjGGTyq3jtAv1jzH0alblNq6MGDWcIV65GJm3SW5ubBbnefC1dckiPjc+Rfe6+Huxca8lKeeB81cz8S2OoYgqodsmHOnbbl5Xav0BHS5OV+s3zVP1fxjqlTR+iWtW8/r7KfzlZ6Rft1eHdxiL/YR1bKmV+N1fVzxa2GnXTTGfXO+V+n1TFUQULP5P7GacG/vsIOR7bqrqONwEAAAB6rV4cCCWof8oXQmFQVe1n+p+qctU2K4tX0+ggpwalDNFoh0tJcVKN360tVXu0NzR6yKkhRh3D7SlKiQ+v3bXyZvUnGvUrqCp/mT6p2qsDx/9MnaiByYN1WWKGUoz26+uPaIN3l7F9Y7F9mL6SGf611LtOq/xn8qimHuDfI73xRmPYY5yuV/yrdNcI6Ru3Sc8uMJYNkn7wmHFBvkj6xWqZ74fG3S3dPCL0q3zG1eTCmdJmr7G5caBvnyKNGWYOTJE8O6TZfzL+NavOliYb210+KFxWtNFo96+S22zYKJs2TRo6IFynulrerP4rB5k7Je35WHrz7XDbofJ2+tZ0182g6dIvG3//w4+kvF6YfjlzNDp1v5YXtx4P59GWpWuUa/5qH6L7Hhmh5bMWqWk1e85kPXTTDv12Tr78Rvm9j1yugq1JumpMf1V99Ipmr0tru+xD9/Hbui7rGx46dnTTQs3/sFg+s44HR2rTqhqNuX6w0pNSZTv6sf46Z4UK/Zm6Ytq9umrwAPW95EE9OPJjvTV3rcqad7fGJ59tpPoa73VZs8E8/sJF+pMnSaOmPRpxe+f512rKxNHKCn3rhvvzmtEfv6K02d4+uC7Vg98bqVXPzVFetOGFqX2VluHWkfzW50uFKv+0zfh2Mtc5V66M/Tpc2HqdalUv9yn9cpcUuoWqXnXvf6TaR7+sc0YVy72lvXOws+udYr+7SbAwT8d0u5L7b1VdN4ROAAAAwJmi9wZCcen6oiPe+K93t9a3CINM9Y23DSRoYMrFujrRprrAERUGHervyNbYPnbVH/1MRQ0OZTtSlBLnU2mtV744l3LNcpdfh48VyquOys1Qyqw/XhV1ZdrfkKTzEvtrnCuovzUrH5foUH19uQoD9XLE16uqeeYTLNfuuppQj4/UEwZFZ1wcbvirdOUIadAoacAiqaTVKjm3SJONck+etN64mnNlSEfMq3bj6v0rj0rmxa3bKCupMcqM5aELeqPsbqNslPFvyQ6p3FhnxOXS91Kln//BWMd8PUCyu6UtRVLSIGmYUf5tr1H+jvEp6qD8eP3Gx23HOqO+bKMf1xjlxpX8L97poG+NfMbyTYcVCpPcvTAMMjkz5awpkTdCgOHN26DQDXH2tmWt2TKGa7Tzj/rtc/vCh8ie1nZZKGS5Va6Vf9CMfF/o9ajp92mKe7bm7THrGKEbB7+mV2a+Y6xvV86ER3THlVs060OPNsydqaJot2/592jJR+P0nUemq+97y7R+W3G4Tb9XHo/xE2l75zBN/eogbZr9QuPoKKN/99+nW/eYt5i112aUfcjbrldfyJOvo3tNXS7FVx0+PkdOc4F/fBbOWfu7lFB1JOI6wYPVihudovimb9i6cnln7lKfH12hxMfXqba9ITSdXe9U+t1t6lS7P0Hp/YzPa2kv/awBAAAAndBrA6H4+DT1MX+p96i83ZWyNTLR2MXAHi2tKJM5TWli4ghNScnQqESnimoa16s/qH9UlRrlCSp2jdE4e6YGxBdqV7CDcmWF6q+vy9PKqmPGpXq8ijRS/5yYpcFG+dZQucNof6/+VlGq6kh9rC/T1mrmEOo842p6j0calCmdY28bCLmywv9uXSy94z6xPPNL4cClZJH0X6tbbpN5eWMYtNAoa5yY+orvSncNM/7Nlj5sXM+9TprbOArpu/8hXTjC2PadE6N42ivXpeH6d8yR3tij0MfO/33pypFStlEeuLT9vjV9Qg+tl97u7XMI2YxPUOCUz/WAt0Dvvb+vRV7Wepk9Z5zG+Jbpd/lNSzzasaxA15m3dBlvQcBfpOXv5zeu75d7S4ESbsqU/cPOfBb98qx9WTMKL9X48VP0+FdTVfn5x1r+7mrledrZ2leohbP3yHv8VjmP9uwIaHR2ktRmxFQn9iHP6HukZK2NBMWpXlGjZkeCVBeIvE5d2xu+goWfqmz7FGXfmaf9r7f77dvxevZzlPl/p6pPs9CnoWCjSp835zXqRL87I2obURiHNt5xqo0DAAAAZ7ZeGwiZOpqbIj4+XeYDcyrqjh4PY2rrDqs8pY8y7E7Za1rXEFRl0LxySJArLi5CjS3L4+PSlWa+cgzTZEfL9dLijXKFyyvqPJHDIJx+hWsk7zBp/A+kC7dIK96VtnukjKHh8g072m5zvCzvxLK8rcb/uVAaagZCrUeJmKN0jCv7C52S03YiEGqvPKmx/hHTpf9otZ7L/AhG6dtZJWB8Zm2dGQTUQTVetRm302qZLXuQsgYP1gOPNrvstyXJVr7L6IGxrMYrb5tEoGtfh77izXp3rvEjl3IuvUF3PPCg+v/3bK2MGPD4VGMfpvF3j9VgV/gI2NP7yraq/fqj74M6GayZoUqCIn2bHVdnrOOwRV7HDIvaCKj21bWqm3Gd+qx6O8pE4B2s5z8iT7sTPnei350RtY0ojP/HEWQCIQAAAJzlem0gFAxWGJdY/ZWSkKk0eXTkNNVb32D+Tbr9y5AW5XHhiYVqandrfW1ds4AqKJ95+5ct/jT1Cie4pKHmpEvG5aU7wiWxeWvVL16QbrhZumaUNN34WWO8zot0YXsKasy2o0QbzcvtjW1veVNa13zWZGOdEuNiP/c09+1M5fPIlzQiNFd464E0rmFXKNe9odlk06cqoPI1b2rWCnfbIvuQU6vamalM4zvHczyB8qp48yK94p2mh266UOvn5EXYZpim3jdWBfPf1CvFjTe1XfWopp7sPnSW16tgyvlKcKjx8fEn2L70RSXu/0xV5jr2AaF1Aq3WiT83WQ0FVc2e3NWo8oAO/+liDXzwIlXPjdJ+Z9c7mX532/w+DiX2q1dtGbeLAQAA4OzWawMhNVQo37iozLJna2xymd6v9jb7i3lcaFLpYPCoqpShNEe6kmsabxlzZBlLpCq/z1j/1O4JCNY31m9zqLLqUNu/gDeVOzKN9lvfMhZUaP7oeKeS1Nm/9ludcbpedZc0wPjVs1Fq74LNVyy98ydpxbDwI9tHXiF9ZD6pzLwFbIS0utVtWeVNZcbP6sZbxoaNDP+7y7wYd51at92N9Q8w6inc0PZpaO4ofTPPDPPkSMo+tT6cCYz35dPKiRqZbVdhi1E0mRp101hp3obQq4CcLb+Y7F3/mgq43bKNzZFrhfu0P8remTtJ3xixSi8u2Nfic+urKFfA6Yy4jT3ncmUVLdP84mbjmJJsskX54J+Wfag0vpfKr1Jqrk01u5ufeGlKnTZceu4zY52D8lZdLpexTm2LdZLlvNGh6t+Zrbf9rqxf84HKJ0xW38ujB1adXa/L/e4uucPUx56vg0woDQAAgLNc7w2EjEuxwqq9GpJ+gbKSLtZXHD4drjdH6TiUYbfL7d2k1X63ttadp3GOC3VrWrpKgw71cxgX5Q3l2lJrXpid4iQRwcPaVperqx25ur1Pug4EalUf51RaQ5Herzqm4PHyCxrL65UQFyd39efaFaxRab000Jara1OdOtyQoPq6fG30n9xDms9a9gulu6cZ/yZJ/Y3fM0OPAJNe/Z9wsNL6DB50pzTBuCgvLQ9P7mxen5cckQ5tkfJuk4ZNln4wVKEJpFKNuhb/WXJvlHbcLI2YIn1/aOOk0sa2/jxpw2kIhDxNbd8WbrvA6FtqtlTzjjR3T7PySH0z1j1k1DHAKP+2uY2xQxvfMNaPMNnxGc+rLUs/11VTb9OQPyxSfijlsKvfFZP0Je8q/T40eKpMBYHzNDrHrsJ9fqM4UyOuH6m+9q1daslfvFJr9YCmXFqo1xofD++6eILG+Vbo3cJObO8NyJYRekxdmzLfnjXaO3Gibh0yR4vzG6Mao5+jbh6u2q3rQls4W23vrzDexwFDlW0vDk0ZZM+5Sndc01cJy9tvM+o+5AfkdNnk83Z0HlSr8o/7NfD7Y+V8ek3ooXvmh8bx5avVp3yziksb1/mduc7VSnn6g8bHvNuUOPEGZVYZ64QCmUjfldWqeHGn+rx8tWx5e6P2oXPrdbXfp198/4vU9ydDVP2rRTxyHgAAAGe9XhwImbeNlervR2t1cfJ5GmxPUZbdvJgKqMp/VO7QbKT1OlC5TR+FHgt/Tuix1uZj49dX7VHRaXmgl19FlcaFaspgjXL00UDzWcgNdSqvi5d5E1CwsTzBaP9iR4ZyjfL6YJUqzTvJgrUqqNyj/q4LNNCRrbSGWpUGbOp4ZiSLCBiXv+W+0NOGNGpUeJnXLa1bI72/Vu0OmUg2fgaMCk3/ExpaE3r8+zqF0qM5LzQ+Wn5Y6Enx8pUoNDzLvAD/88zGx8KPCI9AanpsvNnOKX9KvI1t32m0bXTscoWeSKWN9lblkfpmXAnPXShNnxh+cpnfeF0QOajoDfz7FumPS27QlOnf04TG41pbtEZz521rfEu92rjwI91zzxP690CNAoFK7d26U4cGd7Ulj9bNeV22O+/VQ9eHP1WBovV6a3Hnjptn+3p5H3hEPxq5Va/PXqTC5iN5/PlaOHupxk+epscnht4k2WwBHfz4L3p1rSfy9u4VenvHNN39xBjjS6hGtYc2afmSnbo6wym7wqMb27YZZR9cV+i+743Q8ufmhEZKRhPcuUYlv7tM2T+bqr6Np1xw1zaVPntiYuXg7nUqNtbp97OvKSslPJlz/SebjXV2R598uXSHyhYN13lDOzigkdaLMOFz6JH1f1mqgyuqO9XvDkVtI0J5VZmO/WqRju2sbVsXAAAAcJbp1YGQKRj0aGul8dPuGj4VVW0zfiKVHdPa8rVae/x1g7zVm/R6dWfLm+rf0U794fK9Rvt7I5QHg2Vafays3Z5bm1t68X93vFqgSPrfT5x4nbfAeL2gnXWNOhe8aPx0tWyP9OMnmi+Q3vm58dP0uqPypvpfilx/R+27jTPwF2sjFPRO3vwVenXminbL/cVr9erzrfa36Ulv/nzNeyG/1QYRlpl8+7R67ky1vglParu+v3iRZsxptsCzQa8+tyHaTmjlXOOnvfI22/tUuOJl/arVbudF3SbKPvg3aPYzUfrXSmDLJyp57JOo69RHXadaFY9F/HCo7uXXzU9A19f77u/bzsd+Ev02BXf+XUU7I/S5gzY60wcAAADgbNXrAyEAAAAAAAB0DYEQAAAAAACAxRAIAQAAAAAAWAyBEAAAAAAAgMUQCAEAAAAAAFgMgRAAAAAAAIDFEAgBAAAAAABYDIEQAAAAAACAxcQkEGpoaFBcXFwsmkJzxjEPBuq7vRne396vPhjs6S4AAAAAAGIoJoFQpadCrsy0UECBGDIu8quOeru9GXdNjfolJfH+9lYNDTpkvIcAAAAAAOuISSA0/6nf6Juzf3xiFIlxAYpu1HiczZE75rHvbo9+/LHeuO46xXd7S+gO5tigB9av7+luAAAAAABiKCaB0L5NO/XHB5/T1J8/rJR0l+ITiA66k3mbmDkyyAyDzGPf3T7xeHTXBx/opbFjlelwKD6e97c3CAaD8tTV6bvr12vH0aM93R0AAAAAQAzFbFJpM5j4xS0Px6o5xNhmj0dj3323p7sBAAAAAAA6oU0g1MDtXAAAAAAAAGe1kx4h9PBeJqEFAAAAAADojWJ2yxgAAAAAAADODARCAAAAAAAAFkMgBAAAAAAAYDH/H63qZBhNbuJwAAAAAElFTkSuQmCC" alt="" name="图片 2" width="553" height="293" align="bottom" border="0" />
注:直接采用默认值连接即可。但要注意HOST主机IP必须是emqx主机IP,若采用docker,则为emqx docker IP,否则连接不成功。
参考:
什么是Topic
Mqtt精髓系列之连接建立过程
mqtt.github.io wiki各种语言版本开发库
https://github.com/mqtt/mqtt.github.io/wiki/libraries?spm=a2c4g.11186623.2.11.2d73174cN52z60
11. 中移动MQTT库,采用EPOLL框架监控输入和MQTT cm-heclouds/MQTT
12. 中移动OneNet平台 http://open.iot.10086.cn/doc/multiprotocol/
13. 中移动OneNet SDK https://open.iot.10086.cn/doc/book/device-develop/multpro/sdk-doc-tool/sdk.html#%E8%AE%BE%E5%A4%87%E6%8E%A5%E5%85%A5sdk
14. EMQ集群及压力测试总结 https://blog.csdn.net/xianglingchuan/article/details/82219344
MQTT协议及EMQ应用的更多相关文章
- MQTT研究之EMQ:【CoAP协议应用开发】
本博文的重点是尝试CoAP协议的应用开发,其中包含CoAP协议中一个重要的开源工具libcoap的安装和遇到的问题调研.当然,为了很好的将EMQ的CoAP协议网关用起来,也调研了下EMQ体系下,CoA ...
- MQTT研究之EMQ:【CoAP协议的ECC证书研究】
今天研究的内容,是CoAP这个协议在EMQ消息队列的支持,CoAP是一个受限资源的协议,基于UDP实现的多用于物联网环境的通信协议.相关介绍不多说,可以看RFC. CoAP协议下,基于DTLS通信,同 ...
- MQTT研究之EMQ:【JAVA代码构建X509证书【续集】】
openssl创建私钥,获取公钥,创建证书都是比较简单的,就几个指令,很快就可以搞定,之所以说简单,是因为证书里面的基本参数配置不需要我们组装,只需要将命令行里面需要的几个参数配置进去即可.但是呢,用 ...
- MQTT协议通俗讲解
参考 Reference v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy(基于JDK) Chrome插件 MQTT ...
- 消息中间件技术 - 浅谈mqtt协议及其实现
作者:carter(佘虎),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 1.1概念 MQTT(MQ Telemetry ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- 基于MQTT协议进行应用开发
官方协议有句如下的话来形容MQTT的设计思想: "It is designed for connections with remote locations where a "sma ...
- 云巴:基于MQTT协议的实时通信编程模型
概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...
- MQTT协议(一)
MQTT(Message Queue Telemetry Transport),遥测传输协议,提供订阅/发布模式,更为简约.轻量,易于使用,针对受限环境(带宽低.网络延迟高.网络通信不稳定),可以简单 ...
随机推荐
- CNeo编程语言概述
C语言诞生于1970年,当时在AT&T实验室由Dennis Ritchie主导开发的.据说当时仅用了一周的时间就做好了C语言编译器,所以尽管C语言从90年正式纳入ISO标准委员会,其编号为IS ...
- CefSharp在高DPI的屏幕上出现黑边(winform)
目录 问题现象 解决办法 1.将cefsharp的gpu设置为无效,(后遗症,h5动画会出现卡顿现象,慎用) 2.将屏幕的DPI置为96(缩放比例为100%)(后遗症,不可能每个电脑都去配置) 3.支 ...
- Java3d 案例程序
今天偶尔翻出了很久以前写的java3d程序,很怀念曾经探索java3d解析.渲染ifc数据的日子 package com.vfsd.test0621; import java.applet.Apple ...
- Java之java简介
Java最早有SUN公司(已被Oracle收购)的詹姆斯高斯林在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,目标是针对小型家电设备的嵌入式应用,结果市场没啥反响.谁料到互联网的崛起,让O ...
- Java设计模式之:单例模式
单例模式 建议实现方式:枚举方式实现单例 单例模式的定义 单例模式就是在程序运行中只实例化一次,创建一个全局唯一对象,有点像 Java 的静态变量,但是单例模式要优于静态变量,静态变量在程序启动的时候 ...
- django:资源网站汇总
Django REST framework官网 http://www.sinodocs.cn/ django中文网 https://www.django.cn/
- mysql查询之获取第n高薪水
获取 Employee 表中第 n 高的薪水(Salary) +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 ...
- 高级UI-自定义控件
自定义控件在Android开发中有着大量的运用,为了做出符合项目的效果很多时候需要自定义控件,这里就使用两个自定义控件,来说明自定义控件的使用流程 仿QQ侧滑 之前使用DrawerLayout和Nav ...
- python爬虫3之去哪儿网
学习任务 获取去哪儿网的出发地列表 获取旅游景点列表 获取景点产品列表 存储数据 1 获取出发地站点 (1)访问touch.qunar.com (2)按F12,单击自由行,在自由行页面点击搜索框 (3 ...
- 3.JVM 垃圾收集器
Garbage Collect(垃圾回收) 1.1 如何确定一个对象是垃圾? 要想进行垃圾回收,得先知道什么样的对象是垃圾. 1.1.1 引用计数法 对于某个对象而言,只要应用程序中持有该对象的引用, ...