본문 바로가기

프로그래밍/JAVA & SPRING

[LifeSoft] spring 19강 Smart Editor(CKEditor, SummerNote)

반응형

12. Smart Editor

가. Smart Editor

WYSIWYG Editor (위지윅 에디터, what yout see is what  you get)

- 사용자가 현재 화면에서 모고 있는 내용과 동일한 html codr를 생성하는 에디터

- 네이버. 다음 에디터, CKEditor(자바 쪽 많이씀), SummerNote 등

 

나. CKEditor

- http://ckeditor.com

- 현재 CKEditor5 버전이 최신 버전이지만 여기서는 안정화된 버전인

CKEditor 4.11.2 버전으로 실습함

- 이미지 업로드를 위해서는 별도의 작업이 필요함

- 적용 예

게시물 작성

 

 

ckeditor 홈페이지에서 download - https://ckeditor.com/ckeditor-4/download/

Standard Package 다운로드

압축해제 후 ckeditor 폴더를 views 밑에 붙인다.

그리고 외부에서 views 이하 폴더를 접근하면

servlet으로 인식해서 404에러가 뜬다.

 

다. CKEditor 실습예제

1)context-servlet.xml 에 리소스 매핑 추가

 <resources location="/WEB-INF/views/ckeditor/" mapping="/ckeditor/**" />  

 

2) ckeditor.js 참조

 

3) ckeditor를 적용할 태그에 작성

WEB-INF/views/shop/product_write.jsp와 product_edit.jsp에 적용 테스트

<script>
//id가 description인 태그에 ckeditor 적용
// CKEDITOR.replace("description");

// 이미지 업로드를 할 경우

CKEDITOR.replace("description",{

  filebrowserUploadUrl : "${path}/imageUpload.do"

});

</script>

 

4) controller.upload.ImageUploadController.java

 

@Controller //현재 클래스를 컨트롤러 빈(bean)으로 등록
public class ImageUploadController {
 private static final Logger logger = LoggerFactory.getLogger(ImageUploadController.class);
 
 @ResponseBody
 @RequestMapping("imageUpload.do")
 public void imageUpload(HttpServletRequest req,
   HttpServletResponse res,
   @RequestParam MultipartFile upload) throws Exception {
  
  res.setCharacterEncoding("utf-8"); // http header 설정 (브라우저에 인코딩 지정)
  res.setContentType("text/html; charset=utf-8");
  // http body 설정
  String fileName = upload.getOriginalFilename(); // 업로드한 파일 이름
  byte[] bytes = upload.getBytes(); // 바이트 배열로 변환
  //이미지를 업로드할 디렉토리(배포 경로로 설정)
  String uploadPath = "D:\\workspace-softlife\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp5\\wtpwebapps\\spring02\\WEB-INF\\views\\images\\";
  OutputStream out = new FileOutputStream(new File(uploadPath+fileName)); // java.io | 파일을 output stream 으로 만들고
  out.write(bytes); // 서버에 저장됨
  
  String callback = req.getParameter("CKEditorFuncNum"); // CKEditorFuncNum는 에디터 내부에서 쓰는 이름
  PrintWriter printWriter = res.getWriter();
  String fileUrl = req.getContextPath()+"/images/"+fileName;
  System.out.println("fileUrl===="+fileUrl);
  printWriter.println(
    "<script>window.parent.CHEDITOR.tools.callFunction("
    + callback +", '"+fileUrl+"','이미지가 업로드 되었습니다.')"
    + "</script>" );
 
  printWriter.flush(); //스트림 닫기
 }
}

 

에러가 발생할 경우

ckeditor/config.js 파일을 열고 마지막 라인에 추가

config.filebrowserUploadMethod='form';

 

이미지 파일이 성공적으로 업로드가 되었으면

수정모드에서 소스버튼을 클릭하면 아래와 같다

<p><img alt="" src="/spring02/images/avatar.jpg" style="height:178px; width:173px" /></p>

파일만 따로 배포 폴더에 올리고 링크만 걸려있는 방식임을 알 수 있다.

 

개발디렉토리

D:\workspace-softlife\spring02\src\main\webapp\WEB-INF\views\images

배포디렉토리 (확인은 HomeController에 코드가 있음)

D:\workspace-softlife\.metadata\.plugins\org.eclipse.wst.server.core\tmp5\wtpwebapps\spring02\ 여기에 WEB-INF\views\images를 붙인다.

실제 코드에서는 이스케이프('\')를 써서 \\ 이런 표기로 된다.

String uploadPath = "D:\\workspace-softlife\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp5\\wtpwebapps\\spring02\\WEB-INF\\views\\images\\""

 

 

라. SummerNote 

- http://summernote.org

- 이미지를 텍스트 형식으로 저장함

- 우리나라 개발자가 개발함.

- 다운로드 - 압축해제 - dist 폴더를 views 폴더에 붙여넣고 이름을 summernote로 변경

 

라. SummerNote

1) servlet-context.xml 에 리소스 매핑 추가

2) product_write.jsp (상품등록페이지에 적용)

https://summernote.org/getting-started/ 에서 아래 내용을 적용

<!-- include libraries(jQuery, bootstrap) -->
<link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script>

<!-- include summernote css/js -->
<link href="${path}/summernote/summernote.css" rel="stylesheet">
<script src="${path}/summernote/summernote.js"></script>

$(function(){
 //id가 description인 태그를 summernote로 변경
 $("#description").summernote({
  height: 300, width: 800
 });
});​
 

 

글쓰기시에 이미지버튼 클릭해서 파일을 지정해서 올릴 수 있는데

이미지를 올리는 자바코드가 필요없다

글쓰기 완료 후에 글수정페이지에서 소스보기(코드뷰)를 보면

엄청 복잡하게 되어 있는데

이미지 파일이 업로드 폴더에 올라가는것이 아니라

이미지가 통채로 디비(base64인코딩:2진파일로 저장되는 것을 text 형식으로 저장)에 올라간다. 디비가 커진다.

대신에 업로드 폴더 관리나 업로드 관련 코드가 필요없다.

아래와 같이 디비에 저장된다.

 

<p><img src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABLAAD/4QNvaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NjNBN0ZDRTE0MkU2RTUxMUFCOUFEOUY0Njg3RTgzNUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODIyMEZBQ0NFNjQzMTFFNThGNDZCOUMwQTU0Mzg5QTMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODIyMEZBQ0JFNjQzMTFFNThGNDZCOUMwQTU0Mzg5QTMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2NkE3RkNFMTQyRTZFNTExQUI5QUQ5RjQ2ODdFODM1RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2M0E3RkNFMTQyRTZFNTExQUI5QUQ5RjQ2ODdFODM1RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAMCAgICAgMCAgMFAwMDBQUEAwMEBQYFBQUFBQYIBgcHBwcGCAgJCgoKCQgMDAwMDAwODg4ODhAQEBAQEBAQEBABAwQEBgYGDAgIDBIODA4SFBAQEBAUERAQEBAQEREQEBAQEBAREBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/AABEIALIArQMBEQACEQEDEQH/xACtAAABBQEBAQEAAAAAAAAAAAAGAwQFBwgCAQAJAQACAwEBAQAAAAAAAAAAAAACAwABBAUGBxAAAQMCBAQDBAUJBgQHAQAAAQIDBBEFACESBjFBEwdRYSJxMhQIgUIjMxWRobHBUmJyNDXxoiQWNjfw0eEXgkNzo8N0JhgRAAICAQMCBAUDBAEFAAAAAAABEQIDITESQQRRYSITcZGhMgWBsRTw0UIVweHxUiMz/9oADAMBAAIRAxEAPwDHEcNzXgEKIWTkPbgjMS1qXPtUgiPH6lTUlQywFkKslbckdwXafcz1Jx6VBpQ0CaZcs8SoNKpbEAhJiqC1pyVmK8Tgxj1JK2lx989MeRFfd88UwLEtKkCLCdSxVYz6iiOBp+rClXXUWtwQaDfWUtYJJOWHjj4uORpnV6YUOSTiE3Q2luKfUpxSQgKrQYtBVGFaE19o8cEELNISR6sq4Eh6/GJ9SD/Zi0UJqCk0QcqcQcRFnZbdUAQgkcvDAlSclK2yAsUHspiFnRooZivlyxCHwFK+A4nEIecjVP8A088Qh6yihSvTmM/bi2yx42aIJIGBINVkA5DLFlH3LjiEJFoqtroUWyhR5kcfZiitwktG60IUpLqEhIFCaD9eIJtQk7VdLZci5OmsoCWskCoTU8jnXCrC2mh8/Ds95gF5yOY9CSlxIISo+0CuBUomqZ7t3tZvC6rXIjMfBxlGgdeVT0HnTBO6KvlSWpD72t0rar6rKuQiQRUqU2Mx4jLF1c6kxvlqCDDiw/02k+pXAnkcMNDR7IU+h/pSCCvwxaKQtItskxA8qOoNngunH8uJoRWUkb8A24mqVU8cEMk4+GLJBKq1rliizwa1LGlVK8cToQcOQipIWOORPLERTY5jtrbbqp4BCeRpikLbEXWws6k+oePtxYSY3W0U5DFBHAqDThy+jELFQyVI1acuZGIQ4XRKARXLhiFnTepbYST9OIUc9LUSE1PsxCH3SX0uHlWmKkuC1dwbr7ZSmgwiGt0aSUuJBB1eBBwv1GGtchWzy2XXnDEBQyo5A5EJ88Ga+mobQLfYWbW1+HdSS6BreUR6AfCpwvWTM251HrfcKdHSyCw0GmFfZthNSaeOC4kWPzJc9wpW5XPhpk1cZt0aNCVUQE/RTF8UA8S3IHcew34bCrvGkiSwa5qV+s4i0G1v0ISw2r4t7rSAEIBoVA0IHjghlraBXMi7OteiS0wJskDhUEV8DiQJ1eiBrcm9LpJjritxEstEUApUUHniKoVccMC25rtPUOODNEHhW48olQOIWfIdQ25qWMvA4hDp6Yt9YoaJHAA88UVAo02pRqUdQcxyxCmPSkKQEadPgAcWANlNdOql58wP14oORoVKWvMVHLFBDlDjnS/VwxZQir1VB/J5YoIUCap8eR5Yoh2z9msAfW4YoiH3T9HToOFdXn7MQKREQlqeVGdRmBQUxYuRxHsy3WV9E+oZFJxAWyZt5nW+Cph10ITQiic64BpyKsQ78hCUaEV1VPHjgwhqXnBnUp5imKCJeLuqT8Eq2vLX0yPTpVln44srjJCu3Ga0lTbLpCCeRNRiw+KEI0pwPUeWopPvEVJFM8hiEhBDZtt7x3gt2PYoqrgY4BlLC0oaYqKgOuLIQkkcNRFcRtLcZTFa2yOL32+3xtthMi/bfmQ2nSOhJWyXGHRxJQ81raIH8WLT8C3Sy3R9YtobivKunbbNOlCtNUeI86Co/VGhJFcWDxs+hBXi1zbVPfg3OM/EeZUQqO+yptxIBoCoLpx8sWSIGmjppbcr6XalJIofSaGo9uBZQuiU8gaUqongfZigYO3JvTpoGYGeLkqBuuStRzPveGKCOggn1E5jj5eGIQ6NQmtfaB5YhZ02CvInFFjgJSlOlR5VxRBcIbbbL6/ep6RiFnHXHR868OX9mIUKWqWp2alUlfvZAnFgNaEndvgkKHwUj7QD1BJ44gtSMojsoVIKnR9biRTFBwhOQ5GfWpOba/PI1/5YhfFC8e1TXWC4hpTjf7QGVMSQXCFWrQQkqS36vA/8sWU2IvtMs5dAkp94+Ff+uLLF9q7Svu+NzQNvbdtkmZLnuhmM3FaLilKAqRnRIA+somieeLG1q24R+iPbX5eInbyBEsV9t8V9FujJKYClKmhcpwdR51xGbWpRyqsKVQUGWFWqdarhJJbFxWKBCjxRBjWu3Jtbn2xiRmAghYHvFpSNCssssJ1TNGjRP2ti3W63dXbymosNRVk02n4crr6kqS3RSCOdPyYF3QSxuQB7jWXtzvMIt3cLbsKW9QqanqYQqQ0iubjbidJcSnidJC0804Cudr4DH26Zl/v/APKctqxu3Ptqk3CMwRK+FQvqupZoauMVBK0acynyy541UzK2jMGftnGhjq7bfudoluQ5kFxlxlOtygUQUDIuClaI514Dnhpy7Va0aIpYTSifViAidRkeFOOCggoFBYyyHhzwJDxSiKAc8xiEHDBIFDxplimWLpzCU19vniiHRdDiS2eVM/LELPdLfUpT0afHniEGaQoLCUZ88jQ5YsE9NAvUoHjQ1xCBba9/qs8VMaPAacIFCpYrX24FqTPbG29yLkXpi43NdylxkpJz6KPd+jFxAaTSgk4e8ZvWMdAQ1HOWnSK08cUkC6CtwvcNTZaQ4OoRVKgCBn44IpVZ7svae7d77jgbU22wJlxvDqY0ZCqhOpZ99xX1UIpqUeQxJg00xuzSR+oPaXs1sXsZtRmz7djofvIYCLxuRwf4h4mhfKFHNtskKISOVNWeEu+ks7FMSr6UFFh3LF3Da41xiOKamTEJkIbfBGpJPMAcCKcMXyjcJ0l6DO63NhqLIclwlxpbIoGVOJa1qWfSWl10kmnp/JhF2aMdSjd6d29utS0iy7hXZ7qsrS51Ehxt14Vo1MaVpz9NCFAKpmFYy2xTudCt0lAG3HvreLd8C7uRCJe3L2kLt1zaUUC3z21lHS6q8wnWkpBUNSD6FemmAWJrbdfVF2y10nZ9fB+DDfaPzAbRuTaba/LSh5cdUiCtCg2Y0tpR6rSCOCVCi8idKwaZHFua/AD022eoKd/ewkDdeynu5nb1xiFd2Cl+8MRQlEaYHfUJNEVLZUDpdSn7NShUpzxsxZujOd3Pb8vt0ZhS/Wx22XJ2ApKUPxwlEhCPd6umqtPlnjacCyhwRqmVnLh5YsqTkp05DhzxRD4pBofy4hByCpKRT6PHAlimoqGfPEIK6AlPUVxxCHfTPRrUe3EINUOtsPamc+X9lcWUevP9dJ1ICKcKYhBu2pSV1OfinFlMdJSAkmoz4Dz9uKBOkkIp1ATXniiHgQ249QGn7JxZaZp/5Fo8KDv64XyY2XZMNrTGJzShsNOvuKz4V6YSDheRxU6HZqbM1nKv1wuPbj8dDiWl7gGt91SikssFZTpSMwDpQT5+zGVptx0O1WKuepDt77scKzRI0m5dJyIhMRclsa1RXEhKkLU0nUShYoQQKZ1GDumkDRJsqvd3dZfcuI/se/PCFdm1LjxlIcLLExLaqokxJHiQRqbzI5YTrXXoaEqv07P+tijN67JuLakTN3syY6nk6Y92fUpUWQGxp0KeAoSoAUPpINcsNrdPYy5MP/loc2TerbEV2w7jJFpfFGnVqDsVHTAHqWipCgkAawMwM8xgXXwLplS0tt9Bjfdsx7He417tUgqbdUl5qQhYW0sLFArU3VPCvqT6VgZgHFcuVYBtj42VkXT2h7xuWKzWc3haW2LXcvwW7xisFp233BCikuIVWrYXqAOeeMuSrmV8TdjunWLfAzR3igLs27pcSUwplaVuBgKRoV0dai2CASKaSCk8SmmOtjtyqmeX7rHxyNAFVavVyplhhlPNKSMjTzxCSfBpKMQh8rhwr7MQIXQQAgnh+nEIKOPAqoOQplxqcCQT6zvS0f3a8sWQ+t1smXSUIsFBccPBIzoK0zxTaS1BbSJq87Tu1jiImSGlFk+8sDIHAVumLrkq3BAttFR16cuQGHDJFWoTjqQUqp4A4oqR0mGumedOIGKBEpECaysLAy5ezFllzfKRumTtzu9HgSk9WFfokq3TGyrSkakFSFAngQAoDCcq9Jv7G0ZY8Ubns0UQtuP7aeQmTHYbCIAcNW3emnV0irjrU25qR40yxkdoc+J3+PL9DLm+LPPuVyf2vZo8pU+HI+Ecsr0YyHENKGpqQ06ACG1pIGoEJC8qDGp2US2ZnSzcISg7PuUCzy9t7ydiKugLTsC1XFTkOYwhR9SozwqhRFRXUTRQzI44VZUalSg6LItHD/roCd6313Z2o67axKMiHHJStTiW5kR5NaVcQNVFDxA/LhHtUeo23cZa6P8AuAc2XBv8kzbpJdgSydKpEVTSmFqUcqo0oomlcjTDU2vMyW43ctw/oFNkclbftghJk2vcEJClvPW5Slx5LCDmVeglIChnSufMDjhbsm9mmPrW1KxKsiW2tfI+6NyN2Ru2NvxZyWmHqLJWhMdxBJTUUro/aGXHjhWX01H4XzvHT+xL/OHadsWvcHWZOqVcUh95IbKHGVtISlOv1EeoGgVTMDMVpjZ2zfBHK79JW+JmBa6pUsI0D9gGtPpPHGs44gHFUryxCCiVasycziEFNNW6k4hYoAaeY/NTEIIOuUUVDj+nEId6vser+fEgqTQnavYt/wBrQDexbAh6WUhtx9WlQR51BIpjFd83BzMl1dx0JDc1+sbDsu17mCCy+PtNAoUnxCqZ4iT6CuD/AMSiLqqyxp7zVnXrj1PTFa5eVc8a0dOsxqd23bW4b6+lFkguyKnL0kJH04p2SI7KurChvtzeIcZcq9TGYCWh6mlmiqjlngPc8DM+4XRAnLlqS+5HDgcbGSVjMZeGGmlPxI8y3oq0Pw3lNSG1BTLqFEFK0nUlVRnxxAlMyj9Htsd01S+1vb3dtwtxbi7zt6IzheT023JcYrb1pUqtCpaFFtRyUCMc/Kmk/A9b29leHOoH77ucfeU2GpvcN2tK7apCZ9tYUIiJgQoOJWl9nVqoKpyVwPAYxzxWy8jo+3ytu46gr3lvUvdHaaHe7i4mRMacPUfacQpcZpx9cfodcD3gAklSSPDGfDl45VXdM6nddksnbPItGvAy+9AvsO2iRuCe9bojiSYUdSiJLyDkChmoogn666JpwrjuJp/bqeEaul63C+oPRbg4y8GjcPh2TUKeeaUsJB8dGZwxryM1bRpMISVNjsKdTqDoIJTIS1WvmakUr4YKJAdoNMfJVF2tuTelxut8jrWuzxlqhQGQlqO6XKIcW6U6iSgEenhzz4Y5veJpI7346ytL2aLT7i/JaxuQztzDeLkhLhU8zIcgh2cGzVSWllKilRSctaRQp5VxMfd6bEz9jztvqZO3v2K3htdp24wFJvduDqmXLhDQr7OR7wZcZIC0FSarCvdIGRx0a5Ks4WfBbHvsVo4y9HcUy8koWk5imGmY+bQpRHh4+FMUQctkCqRiFihFaIB/sxCDV0VJpmBmaYtEFNI+Hrz9v/HLEB6l03HvLe92Pq6zxiIOTbLZohA+j9eEqiRk9hVG9s2QreMwmfdQgKzWa+ojzpli9gpVSx7P2j7XbRjJl3WQh14+oKcoa0wFrMTbM+gGbs7iWzZ7qxse4NL1qUFNpAVo9uWBVeW5K1d9ym9wblnbgnuTZzqlLeNV0JAJ9nDGhVSRrpjVVoMmEpJ9R9JxbLbFpCYrbamyjqFYoUH6ya5ivEEjKvLFEUyfpWd87V7/AHYzbl22faPw2zx0i2w7MMvw5+2BMcoRSmkpACkkeNa44/dWump3Pffjq4bVbq5Xnv8AD9CtN1NXi1Q3It2QmS99kluY4gdUkKFCv6q1U4qPljm8mdVY1pBCdwd0WS3WiDtLZ7EeSkJbkzJhYbUWlgl2pQEhsuFxRPu5caYViTtZ2ZuyWWPCqJ+ceH/Uydu243OTfpi5TqpC3lKdLj59aws/t8a+Rx6jElwR827qz91ka3OfbUr4eE028QUqdKUnRXKoJJA9tMMjzMvKNkRrpmSHURFp1AEq1JSRUjicsz9OGIQ23ob9+UDtlJ2lt5BkBDd1n+uW1ROqM1J9TbCss1KA1uV92qRyxye5ycnC6Hqezw+3j13ZcG6u4zG3e3DVxt0YTbraJ7MdVtdPT6kZ4pLkdRqkirZUpBBrqSKZ4y1ddF1NtquW+kf1BXnfPs9Kue1bpuTYVvl3N2/NQCyhoFE1ppL4dU28U0Pp/bOdTnlXGvFdV3Of3OJZKtPf9zH1x7b3no/CbqYTbHGnVo6pdbUciRqOnPjkqlQk46Nbp7Hlc+K+FTBBXbYaY0cO2EmYU5PkVIFOPEfkOLq31Mdc+uoJ/CPtLW082W1p95BFKYYbExIjS7+nFBBDs3t7e94yEiMgtx1kpTIVkkqHKvhgLXVdzPlzKiDcfLbuP4dSPxBnqhxKelUe4Qc+Na5YV79Zgz/y1IZbX7X9ptv3FmNuW6qnzEEF2I2TQHwKEZ0/iOAtaz2KyZLvYP792hY3jMj3Pt5LZtMJCNLnUIqSPBKafnwFbuujE48nGZ1Afdfy8bphJbvV1v7d0jM1q0g0UPZpJ/Pg65ZNvbZVe8NAe9s3aoVpcQEqHHMcvPDeR3f49eo1c2tsuPVbppTlliSynhxog5z+y4yXG4ccuOJqEqPji9TM64wJmn4t4uJRoSD6Rwwwzwa2+QresaON09qroop+K07hsgWfStxlAZltIrz06HMuNDjD3dJrJ3vxeXjZ08S2u4q2bq+7GbHqGXpHPHnr2g9tjqwP23sKmzL1cX2xrmzAy06QCdEdqq1CvIFWIrTAF/vaM8d4tvtW5vrW+3NJjFSEuLUmrvD7xS1VOZ4DgnHd7XLOh5X8lghckiv4FnRe50K12tKzLeTolspdQ6XFKFU6RpyFM8hje2cSteThBH2+2ktnedtiR4KpT5dQ8tRBcQA0hT6eFBQhNSB7MLvf0s04MMZEoLy293ondur1b3ZTyn4k64KkXJxCxRaXmtTbieRT1EUUjLieeOe6clp0O37nFpPqy5+8y4Ubbj+8ItVRDKEy7sEBbiWTBEllsKy9KlJ9ChzNDhFccviPeTipZGw/mFuW5dt2G2WKb+G3yTFjXKS4yptK+qqRpdjVdBSUFmmqoz5YQlCaeyY6U4a6rYqL5mbrsG+d2rZuPZi+uz8O+u7PtIAj9fUEBLIUDpVkouAZZjnXHW7ZN0c7HkPzDSsq13jUoxzd92gXNSbYCw24utFjVlyNT7cbtkcL2q8dQ7sGw3t10mzy2j4kAFzSBqJ5+GFPI4Ml83FaE9I7N7H2zaX5V/kBxIGpATUrJrwAOWF87MWu5yWehATe5li21bE2bb1vcjMJTULWkgOFJqDqHM4LhO4/2nfdgMO7FyF8XcvtemVpV0qipoFZ+3OmC9mo3+JWBK3bqkbajJTbaLkPai8+v1KUVcyThsG2+OTgbv3KWFRlXV9ptw6i2h1SRQ8RlicUB7NZ2Hcbf92aa/D/AIt1KTkqjitKq8zgHRG+l0ugo5JuN2Ai2tDs2UulGY6FOH+6DgdFuPd2wz2p8vvd7eSUrFlXBbPF2aen/d4nFryCrju1LDyxfKjt61rdkdy9wtwW2hqUwy4lBNONScH8XA19vCIrcM75b9kR1sbbhG7SUAgSCCoEjnrcyxadfCRbVKgBsfupB2z3X2zvo2tTdqs80SLgxGoHnIikKadCAaBRCV10/WpTA2ryTQqmbjkVuiZppPcPtNIYXepW87WhmRqXHWuTRegnKrQBWk/ukVGPJZO1z2tpVn0Wn5Dta0Td0WLs+DE3j2qs7mx3W7sLs7KTb3kakNOKQ+rquuFYSpLaCKqyqaAeGC9m6ao1qZf5NLN3T9PiCHdDsqZ9sTty2RzMcaFHJjiKKfdGZWrTWgJ91PIUw6s1sJs1euvUz9Y+0G5e3m4Wu4spVttrNrW70XZEgLfTICShtaGwCCUOaTQ+BBGN67yr9GrZzf8AX2rbmoS8y3+2Nk29tlmxb/mtQWYlwRIixXmpFWLfcyCVoUhfqbU6oqSg00hvhmcDny2dfL6mvBgqnotfoD8zsSL658XblquVqs8V653i5qQpllyf6nGY8dJFVlayCmmQSKqHqAwNM0y9p0QGbBqq9dyL7zb03HYLQjZ12SYZmWqExITK9ZX0Y4YeUoA1BS4gGpA4mmDxeq3NeInuHwx8X4FN7durcaYhr4RwTW1NtOCOouAtUohbSU0KlJOYorDrr5GTFbprJcl67Hy7Fa03W4oeukeSr/BS4xFXkOJLmt1pOSHBX158Rnhnb3mrfQ435jDZXqq6uNSL2ltDarUJ+93GMZbKAUpiKTqcrSuoppXPGnWTyF8lpgErXuWbdd8IsFvjogRVqKWWwaAEHz4YZVahXoq15Nll7m25frGTKdjIubbLetsE8ymoORIOeH+3GuguvF+RTl+uz9xtRf3BDDRJUn0JSOGRonifaMZtZNlaRb0sDf8AI56X4hoX0T9rp0q90fu8eeGybfd6DKy7O3Zud5KNr2qXcQo0BaaVoB/iIAwMo21x2s/SpLv2X8mXdTcJambicYsccgFRdOtynmMgMByZur2N3u4LJi/Ld8vnbr/G9wL7+KvtjUqP1RpqOQQg4uZ3NNe0x131CKB347ZbSb+A7X7NS5oGlEtaENI8jUiuEOyWxpSqtit9/wDzJdwLmh5t+6tW1tIJ+FtwAWB5qxFL3AvlVSkpG49yb2dCoKnpqlLo6484pZAJ4nUaYbxgxPJa+x09tBi2nVdnvjJRqW4reYB8KYOUC8Ub6gzdosqROat/RcU44oIbhRWy88o+CEIBKleQGDUsyX8yyu23y29791TIEW3bLnxV3kKXBkXBv4GOWUmhcdceoUJH7wqfqg4K2OwzDDP067Kdk4vZftnbNhvTjdJsbrPXC4AFKVPyXC642yFeoNJUaJrmeJxm9qst9WdJZWqqvRBXK23Cfivxgkt9dpxkuNnS4nqIKSpKuShWoPI4H2a+A1ZmAO69q7Qs2xHLNc7E07FgQlNIS2wl0aWG6BXCupVKk8ycY8lFWuq1N+K9r5JT08zCXfyzzV2SQzbJAjWSxrUu2tJJCfgpobcSyoKoaNr1JFTkeGAwPXzHd5Rqj1hIqjZvePftgft1oi3d2Tao5o5BkPlttY1BelwqqQnLDM3a47JuIZz+2/IZa2rVua+f9wg3beNi3mUifZ1JtyZa3JM22yQ4ppic6R1Cw8C4FtOgVUCQQcx4YXT3Eoa26rw+HiacjxWcp6PXXx+PgwetsezT3022522bITGH9StRLzrDZNE6g1xR4VArzw5q61rr5MyL236bp6f5I1Z237z7CsG2IPb6KuXPdtyAHDdwGVpqok1Bqamvu4b21c1n64qvDxDzvCtKN2fmWY1K7R7yjdCfFRbX306UvJCUgmlAQpNBja6eKONl7PFfoAF2+UKzPKevmz76p6aCXI3VKVJCuQ9NDTC+ujOZm/HXX2vQantvvKybd03iOuTcW6pd6dS2oHI5csOd9NdziZMGWj1WhBXfbtpf243BnWhLcpKzqBSCG1HMGvGmFJ+RnrdplG/5d3idxmR01fhKXehz0hKjWnsywUG/3MfGJ1L+k/MvZbdGVb+3O30spSKNPdJLaB4eeFtpHvfc8CuNwdy+6G6lLN4va4sdVfsY56aQD54Tz8CcrMBZ10sEJqS+HzcpDIHUKlFZCj5muBSbYl3qp6wCcfee4tw3JNptqC0haSlLDCSVnwpTDnRLcyLPa7hBLt3tkixuu37uTKEVhxB0wVKBeXXMAjlXBt6jads663E7bclXW+M2rZEH8PgR1JVIfA9RbBzUrC2xtdXFFCLP2l2g3XvqU9F7cW03Cq9EzcMw9CBHPPU+oUUf3UBRw6mNvb5g5b0pvuaH7SfKrtHtMqVuS6SDuXdc2O5HduS9cePEadH2iYTaCHEqIFC6o66ZAAY6GJKj038TjZfUmNd0bE33b0Ld7edyJzDDh1SLTuDTdY/pzAQpz7eg5VVjerTuoML08yPg/NB3v7WqRG3tZIN9t7VEqdhyXULI4BWh7Vor4BWFX7attf2NGPurV0/cNIPz0bZmBlMzY96bW9klURUeQkqrT0+tJIJxmfZvo/obK97Vbo73l81u02Le7D/AJpuMhspatE6TCgyFhYNKocdJFfZXCb/jm9HZDqfkVXWtWYx7094L7vN4tM2lmxMFK40m1uvsyEvtke6rpVOoHh54Q+ypT7Vr5sbb8lkutdvCDPbq0s6mVtlKkmgb4geNDgIaMTsoHG39Um7R4ilrRFcWn4ltKjTp19XsNMsXxTZK3a+BsDZnae6W21R9x9mLpSaihdhyKBx9hR1dNwnJdPI405eza1ox2Hva7W9L+grdxtXuwt/Y+5YqdmbuQS31X09IvuhX/lqWASCcwD9GMdrcfu0OrxrkWgA7hid1/l+tcaPf0fikIuqAlCq0FuuXq5GnI4artIxtWxrXUsjt13ttlwt0ObHuKrTIkqo3HcWQCRxoDliX4s14LqyL0s3d2Y0wGr6wma2QNLzQqVDzwjjZD70rbSB7Mt3a3uC0avfCTFgDUFFtaT4csDyUnKzfisd9Y+QM/wD86XTV8J/mRP4KXOuVaU9ao+rq4cOdMN5eZyP9P699DGX+fbA2+xY7Sn4h9ajreT7ooMZeD3Z6J56TC1Bffd4u0uV8K3IUGaAJaRUE/rw/HVGTuLW0CLtl2quk+0z7juVf4NbXgD8VI9KlpHHSDgbvWTR23bvi+WiZKt7t2fsp42ztxBD8yhDt6kCprwOkYq1maKOlfTRfqOtidst6d2tzRzPLj6569La3CRVIzWvP3W0DNSsVSru/SBkXH132RtXYvyw9othJanymRuCSnRoeleiIhQy9EZJoo14Fwq9mOhTEq7LU51+4s9tF5Fkv36BBZajNBDTLFUsxm0httFMqJSgBKQPIUxoVGzE8iQMXTe7OlxqKSQPSo6RQKJ/LjRXCZrZvACNzXOaUrkyW0xm2iVrEijKnE6dKUpUoEVUeFMaqJIz21ZUV5fTKCpm4LlHtsh+qm2i62pot5koAJ9QT+1QYa9C0/IC5h7e7Lce3RbZjMyaoLUzES+g6VE8QAcsuYwtutdQkrPQqy6XR+93FV0mSGy+4FOKUXEkprw05nPGR2dnLHxGwgxbU3JaXVoDxFVJdJNU05eVcCqyRuAMu23JjsqZIDdEBeXGuMt8blhqx5YIa7bLS6tuqwR7wP6MDVQwmak7Q75bisNB10toZBGitKE/u1FAfHljr0fJGO9TRLNy2N3EtqLXvixQb3HSlJb+ObC1hI4KbcGlafLSrCMmIPHldQS37YXu2NjlTbay5vXt9pL1y27NV8RdrREPvOR3V1MlhvmlX2iB4jPHMydvZa1X6f2O3g72r9N/mUrvX5fdtdxtkxtz9gZ7c2KwVSPwkro62V1UUpz1JOfDGNZFsjZftuVPSV7233f3C2SxuKFfg8tyytJWLdNBCxVVCEk8cGrLWAMFslU+XQsnZPfHZm8KMPvC2XA0/w750gq56VYGyXU34e5pfROH4Mtv8Xugtpj/iLnwpAd+89OQI97wz4YRDN3pnYxN2s7bbq3ZfWJFqhqRDRq6twcTpaRUcanGm2ux5ft8Vm56Ft3tXbPtU4H3kI3LuIJ9CT6mWlfo44TU61uFIbUsApe7t0b+dlyLk6pwCjcW3tZITXgAkeGF3eqkHFe15kJLHsS0bIZa3JvtYTIWmsOzpzWonMahiWfiMriVYbNTfLw3Ob2SvfMhlDUzcS1pgMaR9haoqiG0o5VdcSpavYnHX7TH6JfU4f5LO3k4eH7lpWi5yZ9sMaQhxAirc1ON0+yR7xWoVBp58Mbb1Sco5VLtqAY3TuWz7bsy73Ims9ErDUe4POqSwOQCdIK3Mq+4KctWHVq2Ayo9yd0bnIJYtTjyk6Q491lKiAgn0DRGq5pp+05Xxw/ikLUgc9fN0yVl2O20gkdVCxBEtSCOKkGUXFHPOo+jFuS4QMXBvuG629dNt7hhbiMcK+Mt6I0Zqa0qvqJbcZNQOdMJtz6OQor1QHr3/ALqXVmc4EPIoOk5BiuCozPBj04T7luoxUqIubi3BLkVmqivNUoErtcMhNRzo2n2YnKz/AOxfFCbktlxLqlRowrpVqTHQwnLhkhSQfOgxckSIpTaipThYWSQSCFLpVfMDVQeWFBjVDMhh/wCJbZIUaISla1e9xoc/y4CCwnsO6Hba+2mRDWvhr6CkLIUOKgHEaT7CcPpeALKS+tj7+2rLLEeW/wDhCidDCZrS2kqcVwHVRqb4+acauUma1WHcDdW7Zd1h2Jm0EpbfW0q4SPW02Fp1VToPqCxlQ1SR5YuK7i3O3Uz93hsm4Oxe5Iu4O3DztrgOvvLhPsV6SAVkqjuj3ToUSkV+rTHmO5xKuSPHVHrsGd2wVtX7low12f3q7d97LPL233itjdmuLzaY6twxk6WlqPulShmkk+OMzbrv8zZS6utSn+7/AMrO8+3gO4bCP8xbcX62LlD9a20E1GoJ8uYw5ZFGpzs3Z2q5WqCFU3cSeyDbokL1LW42pGo9TQhaEBNePBRyxcLYze5b+NPJ/dBBXfvDeN2z2Nq7baFi2+SdbEcBLi0J5kjCrt8Tp+9ytxWiB87Uu27NxptW3o6pKgqi3KEpSAc1KUcBS2hoyY5aSD4DafZ2Ku2QnE3fcr41Pu5KZYV4A+WKsFWtaOOpHbX2PuzujekXe8Lc+EkONsCarm46oIShoHzOJWvJwgbJzyeyNvzLfE2/ZotitCfhY9rjtQ4ujPShlARkPaOHM49Piqkkjx2a7vZ2e7K/ve1NzPy2nbPdhDlyQG3FTUdVtIUfvS0ogaqcCoFKRnTLGtWUGbVMp17c8LuLuuRf47i5O29sKXbNoRZKtSJshj0SbrIr77jix9kCKITTTSmF09TnoaLaKOo7S8Fr0uuhS3D1HXEelIeUeZOZT+jDgIEpd3ejANgF2lavuuaEnTllp9RpyFcQkFV7qLsu4/jMXTFuTBOmY2npqITXJZGagR5Yy5NXK3HV0I565LvjYduKUtSQAXHW6EKVWhJHHPA8uW5cRsMEoUVhpCiggeuiiTQeNMhgC9x4lphRS2hslY9SxT3jTI1plniyEvbW20lGbanlmoJIoOWRVxp5DDEUeXeystPahUrXkWykhJURU04ZfRiWqSRrEbjIWAG6A5huvp8Kmh4V8cVoTWAjgvvwoaJNvVS4W9QkwQBq6qKVU04nOoIqDXDVsLZcOyr5cZt8iztqsBuBuBuPIknV6mGEE9VrpJI0OtOJKdY9QSRxGGSmpENRoF25t37LtW13Ge4ERE/bM64KhXR8J1mEZRUGnqck6xpUeRIOOV+Qx+lWjbc6/wCMyxZ0fXUpruL8vSdi7O3JuHZz4vu2rohpyC419otlHvUyrUY4mu+6PRJKtLLxK37RfMTvvtQ6m3tum87fcol+zy1a0pQTn0yqtPZgnTqtzJjz2po9UaZ/7sdgF7ZHcYQ6OMkpVtvRmZLtFg6eGXTOfDPATrEahcsPDl/jP1Mzdr+2N63BdU36Qn4CyRkqMic76AQR9WuCeq0JjxW5cugU7t7lW7aNuf2j23bS23I/nLsR9qqnHSfDAJ6aG2142B3tx21mbxWq/Xh4xbUytT0ue+fvqZ6QTxrTE8jPjq3aS3+2u7G96d5Nv2m1t/Dba2m1IuRitJql5yM0UNFYFKguLBxq7SvLIvBCPyGXjjfyLiv/AHDiWmclalFbTqHUEjMpVQqA1U8RSmPSrHoeS5SZk7j95rnKt+7b3aLgXHb4WLbCWCR0kPNrbKkA5jSmufGuFZMirRx+g9Y5akY7bnQ7Jt62WphyjUVtLaG0JOsnKvCg8ycMpCqkS0tkymfEU+hXAIqQSfWvOgNchorhklQc3W4fZOpZcQkpHT6ldNCD4kAEj8lMU2WkVfc7kmTMKyFZeguaq1V7V8BjFa2o1IbawkkN9NDpNAoqIKsqcRlniiC9VBICCnqfXUrwHEA88FJUDpExOgIU64hCSCllJqeIqnLOmLkslYkstLCHilC+dBWieOVQaVwaZUHL9wVJcIUrUKUUp0knLMe6RQe3EmSQR8mYY4QFBJUoGhRkrPxJ/RgXaCoOo25gy3pKilaalLiVHOmRyz9mIshOIpYe49zsyvgrbPat8d1x1c2U4ojTH06lpSRmFKIpXjga5o0LeOS57FdIncfZd12fPUUt3xh1pEsIUvS8khbTgTWp0rSB6ciPPGq9Vko14iKW9rIreALdmO527OzlkvMTcEdyZbLbISxdtuyRqLaF8VMhXAc6cDyx5ByraHtKfY34E/3G7BbT7pWE91+wUhEhD461wsKSApKuK6J4pUPDB1fh8hWbGmuSIJ3bMD/t/FgCIv4/4OSwY3TV1uv8SxROnj44GfUY/Zf8HzmfqBfcHufdt6oes9pH4XYobK1tw2vRrAIAKqYs2ZcrtKW0E52l7UR97x0bj3K/+H2C3NJdkKX6VPppWia8v04GPkHSGkJ9y+40zd91texdhRTH2+04pmLEYFFyCnIqVTl4nEmUDa75pLYvftNtLamwdo3aXImoi3NYYjXC5PJPQQ+8C4I63BXp5JFCfSOZx1vx1Ibscv8AK2lKi66lUd47xcobK3nVll1wa0vApLDqU+64zIbKmlHKikFQ1cRjs5bxXQ4eNa6mcpVycuMppC1gNOvBygzCHCSVADwJJI9uOK7SzckHbc/ou6XapSnT9mfADIHx9mNyvAviTMbdCwAAsgoANTQCtKcsyeWHLIBxIi/7nTMjksGo+uV19NOJrwHkMKvkkJVA9qe4p1awSSs0Or/rljIrajIJBiWPU44ftOBKeBBPGlOOGcgYHCH20ugIJByBSeFOHA5DBSSDtD4Q4ChNUg0ABVTLmefPBSDBIxbouAnqLcOvT7goOGWVPLBcoLSkjVXujq6K6aeNa5kcc6cML9wLiM5F5DpC0ZpOSjxP5TXM4B3IkR67opFUMAJR+9nn4YU7hQQjrxcklv3tKqrHAEjMZ+HM4VJZc3Z7cbVqmxJ1yllEZLiBb4DKkpkSpA90JCiA21X7xxWXhnjqdvfTUyZqyjRN7hbW+Y/Yd8h7ObZt+9bYfhbnDTwdMf0ggk1UlQGRx5/Kv/Y/FfU9XhtOOF1S/Qy9srefcDsfvVarSpcCfHdS1crW9UNPgGlFJ8+ShgGk9eotO1HBq49/e2Lm1091/wALIvsdKrf+DaBm/IIc6nhpCmaauGeB5qdtTR/j5FGduO0Tj8KVvnfem3bbYbJ0P+hchKTq4HkacMRptCa1e72GW+O5K9+vRrFs+OqJZWwI8CCwCkyCMhlzBwNm+poVlZaBjFatPy6WGHf9wpam7qvCCiDBIBVECgTq9meDS69RTim/UtH5eO225N0bb3TeNz3V2MdwIZmxYIAcYSrUpsuOtLyUVI9PswWLuMmFcq/XqVk7XHn9N18I3RSnd3tFvDaNwlG2uoYbdVUPW99bUd3l9tHXVNfbXD/9rS+6dX5bCbfhMtftsrLzKHve0NwwlKuc5LILJCytBSCrQa8EADlil3NLPQyX7DLRS4+Yq/PVIDbrZolYHOpzzyxs5SYYPnbo44hYaAQhKaIFM6DIknzxbuyoPoxdXbH5isg6oNjzSBnQnLBV+2SnuRjCipXvZcB9GFJkJFiRpprBOVRUUGGJkHJeBACapBFSagDxwclCzDrgCiigFMzXP8+CTIcPu9I+kAZVUSePLhimykQcl4h0qqSeZOMzYwS+JcJNCoHnnTFSQ5Rq9SkAVPCudTyH5cC2ElI6g7Q3NMotMFR1HMrWkJz+nCXnxrqaa9lnttUuTsV2vizd5wX9zFDsdhWuSwnNLiQKFCycigDOmM2XvWlFNPM6/b/iofLLrHTp+oZ707e7p+W243jd20pmplySzJ2/cQSULjroVR3ae8kjhiWUv9iqKK2fUMJ9n2V82+1mt37VS3at/wBnSFXKAaAvKSmukj6yVHgcFMvz/cmllJVr2y9x/wDbSHYvwh7/ADH0ZbRh6PtNf4hH/u0zr4YVPqnzCafsrx1/dDDvZ3XuvcduTaYiDEsMBsCDAbFC6SqiSQMzWmQwxW1RnyuU/AJe0W2kdn9uxe42+ogVLdbP4VbHffGsZKIPPEbUyOxVdaKRPZW03u9u/wCX3G7gSujYLOVPvKWr0qUCShpNeQ5+eIpf/IrjLl9DRXyw365brve/NyRWlo222xEtlhcOTSiw8tTmgeQIrhGZ+k2YLTYFe+EgKecQk5ZjP2545Fdz1FvtM17p0KiutnMKrljfi3OJ3OtWVFEkOoQ6zktQUptmnFLdaEk/mx3avQ8a9yVucdUS3Ml7+anAKSihHTYRknj+0cOdYr5sCZZKXqKIG17fGUkJWqq1CpJqeRHD8mH3UUSFLVsHY+lJ4kDio0zyxnQwc1RX1hS9JFK5nx4YIoVQoLdpQqPsI0+ymLRB4y4TqTTQDw51y88MKGEx0VXVVCRSozV9OF2LIx1aQqlMjy44Syz1pJKgANJ4jmcCGh/a2EyZ7TZyCfWrhTLhhGVxU2dvSblsWFklsJIyoKjHHuetwrQs3tXDefvUxiMkKceiSW2EHm4tlaUj6ScL6r4mu32v4D35fd3tdzti3PsV3hOlyM6uBaJsg0Wh1oZMrJ+ujl4jHWs0n5fseVwzZOSn75aN9/LX3JlPMOqjzbakrgSswzNYKskLpxFOPhxGLVW9HuVZ8JZos/Mls53twnvd+Gq/zJGjKgiz5ai5IId6nhp1M+/+vFclt1C5enl0Km7ebAjbZsEju9vohiBFAXbYDwAMgpqUnPx5YFKQqriuTIezbg3J8yu/mY0w/BRS500IRk3FjDn4aiMh4YlquQaZeaYWd3Iju7937d+XDsy10mQUpu85gkI6TdOotwp5JH5chzw2YUGfK+iNbdvLFZ+39kl9tbA51WbBCjuPn63VfUoEqI5mhOMfc6Vg6XZL1SZ47w3BTtxfTSuZAPhTwxy6bnqsuxQG5lgsuDyPH9ON+Nann+4ehVVi9E1155AUkKWoJoDq9WQzx3aaHj31JxLDtxuaHpK+opZAocgPDLgB5YelytqC3CJruS8Ey48AqH+HQ2nSmgCfSPDx8cP7h6pC8ewHtrAUSMyOBr58hjIhgokiudARxJzGLILR0alD7QppwI/XgkUPVOtIaUnOqcxpqR54YCRDjhOpWXDmePswhsMaD1Kqs8OWFkQqlJSmicqnPFMYgui7dNnte1bw4kpc3FFmzSTwU0xOcitEeVGzjNm2Oh2q1LBsdOhVPEDHItueqw7B72zvDlivUm+pT1DbY780t1974ZtToA9ummAiWviaL/Zb4Mku8lo2/v3tWO+PahtSUXdxi4XRMYaXI8hABLgAzC0EZ47Nq/I8msk0ldR7tO42T5tu1UjY26nERd82Zv8AwE/JJkhI9Dia8QeChyOWFqU4+Q703pDAV/tZub/KELt6IP8A+k/CpkQtfV1fGxwF1/ZpU/mwOshNL2Uusf8AKCL5uv8AbiwfecGvuP5H+3BLcHuPsB35UP8ASO7Pu/cc+5/nfdHDy8PLDV9zEYft/Usj5HP9wd0/yn8sj+Z/qv3y+H7n7X71MLr9yAe5dHbT/WXdD7z7+F/M/ecF/wB3wxk7jY6/ZdCgO8P9XkfxK4/qxz6bnpc2xR25P5V7+A434tzzvc7Mq+1cE8OP1uHHHarueS6Bjtz+pt/xJ4e7y4+Xjjbi+4TfYR3z/W3v4+fHjz8v1YrP9xMewOJ+/P6vd+jGdDDhr7z/AMX1v1YiKH8H6n8X1uGGVKY5m/duf/F7vPjgrbFIgHOPLhy/444zsI+H/HjgSxU+6r2DAsYi6+7H+nex/wBz/otn+V9z+fe4+f7X71cZ8uz+J0u36fA8sH3GOVY9Lh2DPZH3959z+nXD7z3f5Zfvfu+OAW6+KNd//nb4P9gj+Rb/AGD3f/6jv87/ACH3Y9z9fnjs2+5njO1+wpXtJ/uttb+Y/qMz+jceJ/8AY8fKmBWy+JfVG2JH++ED3P6FO/8AtfzEX8/68M/yGdD/2Q==" data-filename="avatar.jpg" style="width: 173px;"><br></p>