/** * <a href="http://www.openolat.org"> * OpenOLAT - Online Learning and Training</a><br> * <p> * Licensed under the Apache License, Version 2.0 (the "License"); <br> * you may not use this file except in compliance with the License.<br> * You may obtain a copy of the License at the * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> * <p> * Unless required by applicable law or agreed to in writing,<br> * software distributed under the License is distributed on an "AS IS" BASIS, <br> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> * See the License for the specific language governing permissions and <br> * limitations under the License. * <p> * Initial code contributed and copyrighted by<br> * frentix GmbH, http://www.frentix.com * <p> */ package org.olat.core.util.filter.impl; import java.util.regex.Pattern; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.filter.Filter; /** * Description:<br> * This filter replaces emoticons images generated by TinyMCE with inline data uri, e.g. for sending by email * <P> * Initial Date: 15.07.2009 <br> * * @author gnaegi */ public class SmileysCssToDataUriFilter implements Filter { private static final OLog log = Tracing.createLoggerFor(SmileysCssToDataUriFilter.class); private static final Pattern smile = Pattern.compile("<img class=\"o_emoticons_smile\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern sad = Pattern.compile("<img class=\"o_emoticons_sad\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern blushing = Pattern.compile("<img class=\"o_emoticons_blushing\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern confused = Pattern.compile("<img class=\"o_emoticons_confused\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern cool = Pattern.compile("<img class=\"o_emoticons_cool\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern cry = Pattern.compile("<img class=\"o_emoticons_cry\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern devil = Pattern.compile("<img class=\"o_emoticons_devil\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern grin = Pattern.compile("<img class=\"o_emoticons_grin\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern kiss = Pattern.compile("<img class=\"o_emoticons_kiss\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern ohoh = Pattern.compile("<img class=\"o_emoticons_ohoh\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern angry = Pattern.compile("<img class=\"o_emoticons_angry\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern sick = Pattern.compile("<img class=\"o_emoticons_sick\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern angel = Pattern.compile("<img class=\"o_emoticons_angel\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern tongue = Pattern.compile("<img class=\"o_emoticons_tongue\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern ugly = Pattern.compile("<img class=\"o_emoticons_ugly\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern weird = Pattern.compile("<img class=\"o_emoticons_weird\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern wink = Pattern.compile("<img class=\"o_emoticons_wink\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final Pattern worried = Pattern.compile("<img class=\"o_emoticons_worried\" src=\"/?+[^/]*/?+raw/_noversion_/images/transparent.gif\" alt=\"\" />"); private static final String smile_img = "<img alt=\":-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAs1JREFUeNqkU89PE1EQ/trulrKWlh9bGiKGUCRWoRjaKgoc/IExhoQYr0YPJCZcvHnlxN9g4kUPJMaEeCIhJoqJJASCsRotlR9tIYgCLSi4sNvabvc57yHIwZsv+TL7Zr75dnZ2xvZlGLDZAEkSVrHb0QOgl9BE8BA0QpowZlkYZwyGaQJkceIOA6UdnmZyDklqtP1YoM8vuRsUu7NCsgq7prm3EtWXRi/9yrz7QLxBQvIg6UCg2bKVP6oM3W1T/GEVFnnoDSjosDPITsXvdbbd8xqZSPVOfNgH5AYORGzpx6LsJ77I7avatqUmpmeE4pnuG6hrasV6ehafJ18IX8vFDniq7Fubsaev6XP6A/3MkEol9Lh8wbDi9qhadgXBcAiwy7CbO0B+TdhgNAxYRaD4E4q7QXXWBMP6xjzv1ai9WESvp761lmmrUMpKqLsygpsj11Au58GMVWH5nft5nPM4n+fxqrhAk1OWFVbIgRUNUWokEgEr7IDlNoXld354nPM4n+eJJhYK8DiYKTHyuMtsYDPX8TAk2kNkg3yg+wPyYz9OPIfLFHmiAnrQCrpuMvq5qeQGWMkEMy2yHGzfijvFUxQnHufzPFFBPo/07o/taKWLeecXN/AxkYHX66XB+jsiJeq0pmmQJQuB+mrs7m0bPE8I7O1hLBlPXz7XcdrbdT6IqdgyGvue4VSo81BgIT6Fxee3cCHcQDWXIRmfy/I8IaDrGNcWs+/VWn9VY+C42t2lYnn6PiZe6SjS98qyDHeFG12dEbhdFpaXvm0tEd/hwLgQMAwYNMKD0xNzvlLJ2XayJaieDdcDDidvEYHGslSg5ulIJea33k7OfSLdQdob43CUSSBpGObAm5exodTCWntrpMVf469VXOUuKZ/Lm98zWWM2lsh8XVkXu0DtSfIFPLoL+DPb/UTqIfxzGwm8bONIDmyM7+V/nN8CDADy3GHMzGgijgAAAABJRU5ErkJggg==\" />"; private static final String sad_img = "<img alt=\":-(\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApVJREFUeNqcU0FPE1EQ/ra7Xdql7YJd6EENsUCiAjVQDAc9aELigcQDRxM9mBj5AV458RtMPBN/gQmaKAdNSBRDUUHTaGkVEUwLCJTudt1u9znzsISDJzf5Mjsz3zc7O/Oe8n0WUBRA06Q1QiGMA5gg9BIShCqhSJgLAswLAcf3AbI4e1uAZMdPPwVnNGt0uD19M6XFeoyQHtcC79D3a+ujdunJtd/lpXfEmyYUWqJWgf5AiT7qGLqTMVIjFgKK0Bfg2QgJhHUjZeqZe6ZTzp7aX53tAupTrSKhRgMGtTRjXpzMGPFOa+/be+SePkYp9wKiUZOWfY5znnnMZ50s0GxiXE+eHzFiCau4/Ab5xQXETQNWVxxwt6Rln+OcZx7zWdfqYCJxZrBbVDdgJdswdn8Jt55NQrgVCGdDWvY5znnmMZ91rQK9ejhsCK9OLTtyINlsFsLbh6hvS8s+P5xnHvNZJ4foeUiowtcERWJtCsTiDTwc4hS9ew7FQP4DiuMoTzw14ktdq0DVs21f8/0wi6DwCkJHh4N9XgcvnVcjrUCD+KyTv+C6KB7+2nOEH0CwNuDN6oS2E9BlnPPMYz7rZAe1GuYKq8Xrl8cumBDUohrFQa2BDytrxyfsUiYNMxYFfP6khsJqvsI6WcC2MV/9Ulm2ulOd59KnLUWN4eBwF2NXryASaYfr2ihvbqLDjFEHAl9Lmzsl4qsq5mUBx4FDvzb9+lW+q9nUM30DSasn3QeoupxFxNDQk47S8GysFbZ33i7kV2iO0zQi5/goU4GC4/hTL5/nZtY+bw0PZgdSyVS3EYlGNLfu+rvlivMx96n8Y/2nvAt08QpyxifuAv6e7btEGif88zYSuG3nhAaKkKv5/+ePAAMAMm1OvlPG4woAAAAASUVORK5CYII=\" />"; private static final String blushing_img = "<img alt=\":\\$\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqNJREFUeNqkU0tPU1EQ/u6jF3rpA+iFYkANL0XFJlASt4awI3HB0kQXJkb2bHHFX3DhmvgLjI9EWLhwUQ1FgxpBKAV5pUh59HHb297e48yBIgt3nubLZGa+b+50zhzl1yygKICuS2uqKsYAjBN6CSFCjpAivPY8zAsB23UBsrj8QIBk56efgjO6NTLU1HMvqgeumqoR1L1K3nULmyPF9Zd3nczCZ+I9JazWRfUC/Z7if958+2HMjA5b8ChCX0ClCFXAZ5jRsBF7HLYz8dbjr7NtQGmyXkStVmFSSzPhmxMxM9hiHW18QfLNC6wn5yCqBWnZ5zjnmcd81skCtRrGjMjAsBkIWanFBH58/IBg2ITVFgTKu9Kyz3HOM4/5rKt3MB7qGmwXJ1uwWg3cebKA+28nIMr7EPaWtOxznPPMYz7rzgoovT5FM71CAV6xKAcSj8chKscQpd/Sss+H88xjPuvkEJ0ywmrO0d3tAvwUqL0bxbMbNFtNJbGNJgPkT1Hchf/IgXvoQOtqljpZoOog5+wc1sRaXt6Ir9uD6jOhNNBF8ILQ3QqnBu+ghGr6tENXOayxTv6FsoNU/vikLGhLhKcQNBL5KNXwF+Rz/DTvgfmskx0UbPEqtbszOtTbHVC4YoQ6awiQxoBCP8ELISoU16CL0/VIpdIZ1skCNJf5fC6btDo7mrt7LkWUxhAyR0WsLC+dr+j1gWuItoShGQrS63vZjd1sUtUwLwvYNmwhxHQisWx5mhHrG2y3Ojoj6LjSx/3w7GmyFVqqIlIr6YNPieWlalVM03js81WmOa3atjv5fm5xZu3n3tBg/FY0Em03G/2NerlUdrOZfftb8ntme3NPvgV6eKs834tvAWe7/YhIY4R/vkYCt21f0EAR/C7/4/wRYAAydVbETcecbQAAAABJRU5ErkJggg==\" />"; private static final String confused_img = "<img alt=\"%)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAApFJREFUeNqcU01PE1EUPTOdDmWkH9CBLtQ0giREoAmUxKUmNnFB4oKliS5MjPwAt6z4DSasib/ABE2UhST4gVIUkVQtrSKCtKKQ0nkdp9M+731YwsKVLzm5c+895857976nfZ0FNA0wDGUtXUcGwDihjxAhVAgFwlyziXkpIXwfIIuzNyRIdrz6KTht2GMjp3qvJYyOpKWbYaPpHfp+dXPMKT64/Lu0/IZ4U4R8S9Qq0N/U2mdiwzdTVmLURpMi9Ad4DnSJoGklombqdlSU0l0Ha7PdQG2yVUSv12HRlqajFyZSVrjT3v/yFtmH91HMPoGsV5Vln+OcZx7zWacKNBrImPGBUasjYhdWXiK3tIhw1ILdHQbcHWXZ5zjnmcd81rV2MB45M9QjK1uw4224eGcZ1x9NQLplSLGlLPsc5zzzmM+6VoE+Mxi0pFejLQvVkHQ6DekdQNZ+KMs+L84zj/msU030PEQC0jckRTraNMilq7g3zCn69gTFQP5diuMoT7xAyFe6VoGK5zi+4ftBFkHjEehHl4N9HgcPnUejrESd+KxTR3BdFA5/7QvpNyFZ2+TJmoS2EzBVnPPMYz7rVIFqFXP5tUIZOhFlEKu5Pbh1+jZiWF3fxcKzDSw8L2Jz21F55jGfdeoIjoP5yqfyit2T6DzXe9qORaNYep1TTYt1xXEpcwWuc4jdnW0Sh/C5uL1XJH4ggHlVQAgIOtrUi4Vcd6Nhps4PDtjJ/kEgYB71gs4esjQkkwFsrH/Ye7WYe0d9nKIWieOrTAXyQviTTx9npzc+7owMpQcT8USPFWoPGW7N9X+WyuJ9dr30bfO7egv08PKqxyfeAv7e7VtEyhD++RoJvG1xQgNNqtH8//ojwAClW1FVSdFbJwAAAABJRU5ErkJggg==\" />"; private static final String cool_img = "<img alt=\"|-O\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAt5JREFUeNqkU99LU3EU/9y7u7u729ymu9uSkvAny1/hHEgQZLTAEnqrIKlgFEj0Xi/2Iv0PvdRDYPUsSRIqJolaWZGa1ZxllDY1leXu5nZ3b+f7Jc2gt77w4Xw593M+95zzPUf4cg8QBECSuFVFEVEA7YRKgpuQIiQIfaaJAcuCbhgAWZRdsEBhO6eanN2SFmnaU3E6KLkOqKJcJJm5n4axuRBJz/e2biVfviZeFyG+HbQtUG0KztvehouNajCswSQP/QG5NEQLdlkNeuTGKx492VyyMXXPD2Q6t0WExB2e9l1/c8fx1LqpzYxNcMXaIydRWlmPpcQ03j17zH11h1vgLhZXVyZ7BqmcWEXM0qVCAVHFHwqrLrdmZFYQCjcAoh0uJ6WRXeQ2FAkDZh6qQnD5NdkXCqe/v2e96pXyebQ/HEHg/o0HuHL1Oh71j2Jo/A1qtBQ62vahp/8bzsRuYmxkEF/jw7DZBJw/tTfQVs4b3SuSQOW1S02qQ3FgeLAPmUwGZWX7oThknDvm4XZoZJT7vd5iMB7jszhWlpjLwW2zDOnSCR/yW0RybKC+dAu3Lu+HS7G49Zqfud/n8+FitASMz+L4K9AllUunjbOte+xtEYP1lTfMV+KELEtoqRVRtTfz+1ksuF0uMD6L4wLZLBI/19YjXsXmUTWZhslOebGpErmYLMsoDSrURIOGJ0+2gI21dZ3F8RI2N9EXn0osQ3TQD+x4Ov4F2TzdJe8f2IpgiU7+nfEYn8XxDNJpDKQ+Lr/SAsHi8op92qGGGky8mMXuEzpYg6BGIqaFT/PfVueJb7NhgAvoOnQa4a6xp7P+QkFurKoLaUeP0xPbZJYggeahkIOVT2MuvrL6/NnsW3qBLtobfWeUSSCu60bn8JPJ7rkPi031zXVBXzCgKk5Fymayxo/ksj49OZP8urDEd4EWLy4If+8Cfs92jEhRwj+3kcDS1neXJ1hsL//j/BJgAG6lMskZhtnHAAAAAElFTkSuQmCC\" />"; private static final String cry_img = "<img alt=\";-;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArNJREFUeNqkU11PE0EUPbvdbumWbUG2NEYQpTYBwRqQQEx8QMIbiQ8++kGM0cQ/wRN/gsQXQ/gFJPgiLyYQxED9aCJIbRVBDYTQ2nY/ut3ueGdIDRrfnOTkZu6ce+bOnXulr/OAJAGKIqwmy5gEMEVIEqKEMiFPWPJ9LDMGy/MAsui+z0Bhv1eKnLOKMTIU6b2VUFp7NFnVFd+teF51d8QsLI7XDjbeEG+GkGsGNQVSvhSea7syndYSwwZ88tANcE3IDEFVS8TU9OOYdXDtTCk7HwfsJ00RuV6HRinNxi7fTmt6u1H88habzxdQ2HwBVq8Ky/fcz885j/N5nBBoNDCpdvQNa61RI595ha31FegxDUZcB5zvwvI99/NzzuN8HieeQEpT0a7BTlbeg9ERgmGcp2oqYM4hmGWTrSDR2YJEnPzMA+dxfmlvmxd6kQsk1WBQY3aRUnax8fqbKMrI2EUw2wFzHWysfz7xjZ6jvQo1rGs8TmTguogGmKfUTAex8RVMJJ9RBnRZ+Z2AHr+KiTv3RFGl7gewX95AqMUTcU2BsmuaXs12g3LNh/1hDq2R0ElzkBIr0s8dZ1A1awh3ToN4kIjP40QRHQf5ynHRYg0G26Y3+gFyq4TQKajCL86Jx/k8TmRQrWIpl83f7B+8FDPNBuqVBjLZAv5eyQtxBOlck1Tksp8OeZwQME0sl3cOM9E2oz2U8oxyqYax66OQFZ6FTPDhey4+bm0janko7peOCsQPBLAsBCwLFrXwzObaTryvZ3VsOD0QMe0GKj9/ihrw6umRMNLpAWQKq+b22s57+oEZKpHFBaSnd+kOal3qrhTtZ7t6zg4l+3sTlJAWCrcoNdvxSkdFK79VONjf/SFmgQYvR0OHRwt/DhPv7YdEmiT8cxoJPG3rdG0kxufyP9YvAQYAl39YDFafdcEAAAAASUVORK5CYII=\" />"; private static final String devil_img = "<img alt=\"}:)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtlJREFUeNqcU11IU2EYfradc5xz20ldLkmUbYUbmpGzH5wXFdKNYCRIl0FQGdF1QXjVXfddFAVFUYERUVhgRgmhEM1KG/7Mbbn8ybFc7ueoZ2c7vd/nD1101QcP3/e97/M8fO/7nmN4AkAHbhWA265uTOztRjuFOggegp2QJkQI/eE+DMb64DMB5w3AhdO6DkEBX/7q2tpHyVA847vYYitzdzoFa53FKNmEoprRtOxsSy764mgy9ClTWVtrW4zHM9hcwsrmoft4s0u41KWYXT4ZxY1nQc3BqEOULE5Zajonn7jftqLd/G65cy8+tmVg7LwLi+il0xmroluLcvDlA6TmwtC1LPR8lu/szuIsz3iMz3TcoFBA+6kbXntZnU1W0wuw2UsQHHiGVPwLRl8/5Du7szjLMx7jMx03yOfRYa9prNLTP7CeScFz8hWuRq9g9N1bpBKLfGd3Fmd5xmN8puM9oINHEkWLvprCeja70VG/H/W7qrfKhL/cz3eW12kuUqnNwnTcQFVhN+maoFNEoo7NPw/gmoNIRhMkyQRVLdC9h+JAiWQE45nMGtdtGaTVXE4TNE1MLf+Gx13FKgMMNGkQLDQOnY2kiEgsgQrZgTzxmY4brK0hkllOteww6/Lk9E98DS1BlmUIgrBdQoE6lk6nIQpFuGsqkMmmFKbjBlRWf3g8cuzgYZ8cOOTFcDAGV+dj1O9r3TaYGh/G9NMuHGmuo8eVIDw+kWA6bpDLYTA9nRh1VDnLXe7djraAA7GRyxh6k0Oe6hVFEVabFYFWP6zmImLR+WSU+CYTBrmBokChEntHhiZ2FgpS054Gr2N/cw1gkjZ6wT7LgkrNy2EmNJn8+GFijHx7qUX8L+CFkkFYUbSe9wPB6zNTCwca/Q3OSmeVxVxqFtZW17RfSwnlWzC0NDe7+JnovdSeMO/xlsHmChPOEqmd8M+/kcCerfylgUHnI/r/9UeAAQC0rlpXk0nToQAAAABJRU5ErkJggg==\" />"; private static final String grin_img = "<img alt=\":-D\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArZJREFUeNqkU0trE2EUPZnO5DGNaWrThGg0ITVY2hjtA0XoomA3WuxGFKTooqh05T9w1ZX/oCK6KIogCCpUF0ZwUdGW1qJ9aA1J3y1JE5umyWSaTGe83ycplbpz4HD57j3nzP0e17Q0BJhMgCjyKAsCugB0ExoIDkKOECcM6zqihgFF0wCKOHbDAMn2vhAlB0RXe0t1sMcj2v2yYD4k6qVtTcsvthcSrzt3kuOTxLtHiFVEFYOQbrINOk/djMieVhd0ytAfUCpAMCCZZU+NOXK7Rkm2Hc5ODdUDxf6KiSn+iLf9uL6t90JuU3fNfBrljk0dF+FtCGM9Po3Zkbc813z+HBy1Qnpj4ul72k5fsM9QhN1ddJnrGltlu8OF8haCV99xCFoWUNd4rORYnfEYn+mYqVAuo9vhC7uN3DJkyy78fh+u3Y/CJqkwlGUe2ZrlWZ3xGJ/pKgYNZkmSY7PzsFtp85M9GL3zEnYLGRQ3eGRrlmd1xmN8puOHWCrBUWVo4seROUyML8Jut8Nms9GVmvaux6DrKRaLyOfzUFUVJ8JNXFcxyJUKBa1aNkvh669gcwaQSCQQDAb/imGKxewCpp9dBuMzHTcgw/j2r812r9tRo6fHEDjTCZ2OOBAIHIgz0ecgHoivMB0/A+pqODYVTzU1+jH/+QFW5z6gUCgcAMuzOuMxPtPxDqgWzf1MfXG5PbWRk27Xj+G7kHyXkLFcQW5LQWZVxeb3F0itvAHVkUkr6QTxq6oQ5Q/pYS9/1yFJEgfPdpyOeAPHXatrKWSzWyjtqDBbrHA6a3D0iBvrC0vpsZGv38plrZ/OOHbrifHHgLYIGpAQGQ74/N6WcFuzp87jlq02q6gWVS2TTCnTEzPJlcV1Pgs0eDF6vWAG+4eJve0+InUR/jmNBNa2sk8DE7vj//l+CzAA9Fpgfb1zWIoAAAAASUVORK5CYII=\" />"; private static final String kiss_img = "<img alt=\":-*\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAwhJREFUeNqcU89vE0cU/nY8u7HXP2LHW7ukSZ0QQKjQtA2RqkpVQWqkVorEgT8AJE7ce6vEif+h4obInQOgcCgBpT0kaZQElEqFJo1jG9MosYkde395dz3Tt6tGtBInRvr0Zt689817b95TanOAogCcR1JnDDMAZgkThAyhQ9ghzAuBBSlhBwFAMlocb9dpUt7ixvQXyZOXizxV0pmW5sLrBoFZnbbKDy719teekd1Nwvaxk/JvBKeZmrid/fTqpF6cMiDCmziB0VN0kC5AW3t/o9n+fW5T+M4NeiwiYb4PnUK6NfjJlUk9nTOkvYdWfQvr83dQXvsZMjBRXl/E+sO76Ll9I7QL7UM/Ali/jxktf3ZKT2UM4eyj/GwJL5YfIz2YgFGgErh/k0zTWSf9CvbrR0ZoH/qFteDEMpsZOV+QnVcUUAzGkArDGI/2kgjlgEkZHKFYGEDRGKZ0HMRS5wrtVy9nf3qEByHBhMZVXViHADEKy8f689dRgaa/HCd7B9KzsfZbNdJd+OxDxPUh3XOVUx9YFxn3PGRY3+ei5UK0PCSg4JvJYSipGAUhIuekJnHxqxFIK4A49Citrhocsfy1ZDIWEnR80wyUhq36FScsP9RxCfoV1A462K21cKKQwJnRHETDgV+xEfB+32txP6FpnLkudrqtti37kppDITBIqESkoTRawKWvz6D2+ohyp5oIuqduMru2HzhanYwCZpqY3/6jfKAYKfBSGvxkHswYAuI5SDWLJ7+8RDKZANQkWC4BPpZFxXnTSIvhe0XOA2ZZWChvHWxUG51mbDgL/pEBls1TH+WgqDl8+/13sKweEaSoLinUXLtZa7dWhTN6f7HRkMy2YVMaN5d/fbG5U33TRDx8jbowNoBqpYLFxwv4uFSKzn/tNpsrK39uZuv9H/MDI93wV2KXJ6PBOOz1xHKlvDd2sNfU4nGVq5zF8kM5ViyeCALXM5eertY2N7aWfF/8kLGxXRz8HO12+3/DFPb29Xp1b4bwzmkkLBDs//hAkcdz+Z7rHwEGAJ3sbipKsR2JAAAAAElFTkSuQmCC\" />"; private static final String ohoh_img = "<img alt=\":-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtNJREFUeNqkU0tPE1EU/mY6nb4oI2npBBGwUCgPY2zEuJAYjKw0wcSVOwwrF8bEPWzkB7g3MYadKxYmmEjQqCExKGA0ltIWijxLKQWhnenQTud6ZhAiiTsn+XJy7/eYmXPv4ZZfAIJwBI6Dm+fRB+A2oYVQTTggLBHGDQOTjEHVdcDE+fsMZDt5WokcEfzdEU9zvyxUNbl50SsYpbyuF1a6ldSr3sPMzFfSDROSx6bjgHs68zyuSD0dTAx6RY2H6KHdkgKewV7WeEkTu6VSta/Otj8VBJSnxL60Agxmu3vo7ByqvT7a5joTthf3fyIbfQ5mVOCpCUDZ20Y2sw9f10P4paC3+CseyX4cGOLy8yXyj/E5vX7Q3f0s6JA67RQGR3ULnKEBbKxvANqmVV20dlSHYPGkM/Wmz/wCfksPhexV592apuHao1GY1e4MIH1gB1PXsEXVXJ/iSW/6rIAca7AruylmEuNP7lgCJZdEwfCCFbPIUzXXp3jS59g5u9UDXleQmJ/kwq15wE39UZcRj0/B6yiBlVSrxqMTCIfVEz6RnOZ4XT06hfrC29V0uadpa27W5uXeIM/8EBwSbvlmwCoMl6R5vM7cBPE45jmnVDF9R8dY3Ev0usYieU+jtKf70C4uocGVhmgziHbATbVffoe1Yh12S16EhRi8xmohTj4roFDA+Ep04caVq5wEtk47LnA2J3XH/EWOwCDyZTTzaTQ7UrTF8GV6Ydv0WQGKgsmDxPacPyDXBJvr/ZytCpmdPBZi306uaHtHG2Q/NdVgWE5t7KRIb7Nh0gpQVah0hYc/fYjVVirixVCXzy+fbYTcYJ4ST6BfqVBDywoWk9mdz1Ox7+Uyhmlu1JOrTAFJVdUfvJ+YHVmMb0YuXO6SfXLA7XQ5Ba2o6bnMtvpjNppZX0lbs0CDl+S407OAPwMySKI+wj+nkWB+tvqXh1pCr/+f57cAAwDSAGL1JylI4AAAAABJRU5ErkJggg==\" />"; private static final String angry_img = "<img alt=\":@\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAArBJREFUeNqcU01LVFEYfu6n49X50qtjlEQj0pcN6ChFbYp0JRTUuhZB4KZ1QbjyP0SrFtY6orBAjCyKIBr7MNEavaH5wQzWjZm5d8Y7d+7pPUdnaNGqCy/vPe95nuec85z3SGuTgCQBqiqyIcsYBjBK0UMRoShQrFBMBQFmGIPr+wBldF9hIFrj66XihGoO9rckLyTU1oOGrIfVwCv6fml10LEen93Jvf9AuHGKbJ1UF+gNpOa7sRNXU0ZiwERAFVoBngOZQdONRFRPXY+6uXTb7/nJDqA8VheRq1UYtKWJ6LFLKUluMjNP7sNez4L5JbBqSWQ+5nU+z3Ecz3lCoFbDsN5+ZMBojZheYRPhSBMy0w9hr33E3LMHIvMxr/N5juN4zqvvYDRyoK+TFX5gp2ij5+JT3LJuYu7Fc9j5LZH5mNf5PMdxPOcJD+inR9c0g5Vt7JRKwpB0Oo3DXfsa7qbjaZH5PKN70ZvDBucJAc9DRGG+yqiik2Mbj87gtkkgWYGuK/C8Go3HqA406TI4Tgn5glcXKHiO46u+r7VFtd2mgLyXKQy2e+n8aigzcrBKeM4TApUKVoq/7MFYiEVBq+a3S1jdKCAIaPVqAF1ToGkM3V2t6DDJeOqmYsl2OU8I0LGmsvMr54ZOHo2CSZh9s4TTNxaQTCYbHliWhVd3Urg8OkSbU5GdX8xznhBwHMwUvuXnzM5E/FByvxmPx/Dp3ilY4XBDoFwuIx6LETmE79bGtkV4RcGMEHBduHS08bcvFztqNT01MnLelLQWQNF3veBnr3lknoPlhaXtd68XP5OP42SR22hlEsi6rj82O52ZWP662d+XPp5oT3QaoeaQWilX/J+5vPsls5BbX90Sb4EeXlZ4/NdbwF5vXyPQMMU/XyMF37b7FwcSE1f0/98fAQYAWEBP5xdjNFQAAAAASUVORK5CYII=\" />"; private static final String sick_img = "<img alt=\":###..\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvtJREFUeNqkU1tPE0EU/mZn2d1ebEvpReEBLCABDAYromKMEm+J+qZRY3wxMZrom8Y3nvwFJpr44Iv6oH+AxBjiLSYmGjSiiFpBCZdaKNJCu2y7l/HsCsZ3T/LN7Dlzvm9mz5xh/OwjxNQiqtDAJaGW7GCXAykNIEnwE3RCToIzHOSlEdthFQUG8pUwrHuHIGPVFMmstwU/tb/Dt/fo1vqe+ogWU2u4bJi2lS0Y+cG3s29efV5+pkjWQziYXeN5AqTesCFoXj7d3368oyHcoko2avgKmMSgKUIORJ31F/uTx/a0ae0PnnyKZ5fkm0Sbcbn8+IGYpkrV8yf7286k6tCqLL6DNHoDbGUacm0r7C/3ITL3gRo/QuFQtDGhJeanPljbQiPDJw4etqQwL2zd2ar0tdSWNmnf74J/vg0WiIOFm2AbP8EiTZ7vxt11N6+3Ve0jXto7fYQt9u1o83X7KuNQQjHsu/QC155vh1TNQjJ+gFWynu/G3XU3b2ebv5t4u7waJOS5pobAchwrC7BFwStMOp2Gat0BNyuw7V/kH/HifjEPDhOhQDTu8jyBuDQXj/K8aiPvXdr40wu42sz+lNjJQviAK823KC4Q9QsKkggXaox4nkAIBeYzc1WJFVSAiEyi0Z1dERdEEgKCCTDhkCfgmFY1gkVvF1m1SzmnOKWv80FljBOHblaS8ed7jW/TYNGJLG8uFJd1xS7nPAFLrzyeHB072NPbXgvaATJHsVTF+5GJtV7Blq4UwsEaIldJnIHy8y7PEyiXMbT0de5tLJGs3ZhqiDEeRHF5Ab27+6BpARhGGbmZGUTCQdIX+D4xk5+gfM4x5AnoOnT6xYFXz8fitq10tXTWxRpTLdRiitejml9GY8oHYZbxLTOff/1ybMQ0MUAl0v+2MglkdN26+Ozx8PVvX2a7N6c7k3XJhF/zabKxYlgLuTn94/Bobnoy+47SB2QZGcb+eQurliGco6T9BPfimwkhwhJhnDBIGFp9nX+NCSHwP/ZbgAEAkow6ikJMeqYAAAAASUVORK5CYII=\" />"; private static final String angel_img = "<img alt=\"0:)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjdDRUUyNTBEOEIxRjExRTA5OTNDRjQzODc3MzdBN0FBIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjdDRUUyNTBDOEIxRjExRTA5OTNDRjQzODc3MzdBN0FBIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rOb5vgAAAwlJREFUeNpcUjtvU1kQ/u7LN76JjR2bBC8JTnhIIAIBXFIggVcrRBNRItFAQ0WzDQVb7T9AW1JRUiCEoGFZaZsVWaRAWCUQ8oCAkzhO/Ehy7WOf3OtzduYG7SJG+s7RzHzf6MycMZ7evAm2TDrtuK47bJrmEXJThD6CQwgITcKWUmpJSlmqNRocw5X792Fjz/qkYUzsLxQuDZw9U3BT3iE7nkiYjmuqQKqw7ftyS3zZeDM9tfLy5R/Ef/y1KOzK5ibfI+nTxy7ni8VrG6US5mffoVYuQ/g+PKqTyeX25UZHT1H+VKU0H6t8+DBNmhkWGl8eAI2qd6Yuzz/Kjt8e6T9w0PB6exFzXVi2jW4YYldKiFYL9fVVXX17b7nf/etqOiumh69r2EEAL5kWd/Ljg4lW55WxsuDB37EhhIEwIIJjwPM0EskQQ8PCGP5pMNF4K+6Q7gY9QNjdLoo9+4+fS6YSWdf/CJWm1jIOsj/k4cY9yLZAde0zoAL09/bBTSSzrczxc631uSIVeGJSpSvJobEBvV2C3N5E7uJDTDz8EbKxDC1K0c0+xznPPOazjmdABYwjjmF5qtmEoj7ZCoUC9O4WdHszutln4zzzmM+66BdkB/vMHWmHK03EKdB9fhG/naDftUwSC/TGQP7PFA8Rb0iEdQlrKBXpogKBxI5crXf1oh/thDOqYDoeDBfQhkGHhpZdqGobwae9F4ZGvcu6qIWOxJK/td3RSkErg2CRiBfQ/R/kc3wvr8B81kUFmkI/XVpbrVgjKdgjCcw2BSQ1ox3aZjsV3exznPPMYz7rohZoLi/8ndpU9uCB1OjhXCa/24+/X8/hexs/eQxWTOHTx3Jtea02ZVp4ERUQAkJrfXdyci6rrNjpo2Mnshcu5WmIMX4gz54muwsdtLA48776anLunyDQd2k8IirAB81pQYjw1p+/v/51cb58dqxwcjAzOOD1xHvsTrsT1iobYmZqtrLyufyG6L/Qhi/wfP8r8NUWCDeIVCTwkvA/Jwk8bR7YMwI/W3zb2r8CDADOp4To33qXnQAAAABJRU5ErkJggg==\" />"; private static final String tongue_img = "<img alt=\":-P\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAr5JREFUeNqkU89PE1EQ/na7Ldu17VZoaUhoSEBilR8JbQ0h8YBaQ5TEeCd6aDTxD/DKib/BxMTogeiFIwnxggcTEoIRRAEh1EKwRmhBKNt2u7bbfc57CNHEmy+ZzM7M982bNzsjfZ0EJAlQFKE1WUYKwChJF0mAxCDJksw4DmYZg2nbAGlE7zEQ7ex0k3NCCSUHznXeiSi+Dk32+BWnVrLt8k6ysjU9/DP//gPhxkkyp6TTBN2O5H0a7Lvfr0XiITjkoRtQq0BmcHu0iO7pf6ib+URzcWUyDFQfnSaRss9F2S/CibEbxpETWptfEBkvX72Ftq5e7GZX8XnutfD1DA0icF4+2F989Yaek+5MM1NpNJBSw7G45guEjMIOYvE+QHZDtouA9V3oWDIOOHWgfgzN1xHytMTilb0N3qtpuV7HaKC9t5UZOWhNDbRdn8LdqZvwui0wMyc0t7mfxzmO4zmPV8UTdHncbo3VqmB1U5SaSCTAakWw6r7Q3OaHxzmO4zlPNLFWQ8DFbIWRx9ckgS2M4EmfaA+BTfKB7Mfkx0mccC7VFjxRAX0YtUrFZvRzv2T2wBo2mO2Q5sJOtLB/xwnH8ZwnKrAsZEuHR8mgyvSNzT18XMtD13X4N/1nA1K+WIZhGHC7HHRGm1EqH5mcJxKUy5jJrGSvXRm8pN9OUbcVLySXiuMlCcFoFMVcDvowr8QC7Cq9jCGzsl7gPPGESgWzW5uFpe3twwPIKpF9lCSAEt2aXV4WmtvCT3GO43jOExWYJkwa4fH5t+vhRsPTf6GnJSTJTQiORFAaKsEfoKeQzSTeg/2Dd3Prn6iP47Q34pdJz8ZoRmh0qTfdZE+0d7QN9CZ6Ii2RVk31qopVtewf+YK5uriW/7azK3aBFi9D04sHL/9eJj7baQKlSP65jSS8bPMPDrWE7+V/nF8CDADgrmF3yJy7+QAAAABJRU5ErkJggg==\" />"; private static final String ugly_img = "<img alt=\"\\$-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAzVJREFUeNqkk3lIFGEYxp/ZmV3PbVzb9Q7TsjKzMq3NXCIhNDs0MCpIMKwgov6rKCgI6o8IgqCiG6QburCTbCWCkg4tc0vRZdc8Mt2m3XZ39nJ29uubXajo3wYeZvie9/3N+3wzH7N/7SywKgY6Q8bmSamG+Tl8b6g035ICYBrVJCoPla3TXvxzxF0Y53F+73J9H2smdPHInR5wShGvz2xIMmRXNe07Xvfw0g5vn2TidJlZ6qKyIjbgEcI9bzrKJ+KdctPOU9qLx/Y8SEpJW+B2jnfT3os4urVyW/+7ZwMB1xARBRvxOwdJyD1KXt0+SIhwhVhaD5Gh7lbyr39674azhBCoErQpxqyp06c+vXVaJhGg7d55vH5yBsmJYRBJhPOHD6mZBTDfvQDFf3rrpNzavHvMLQz30QmgYkJ272B/h1xR08CKPjcWV21ERl4ZpIALCI4iSePGiL2brq+H4ptWNrL5pXX6OC6QHQVk6UNzbJ9ekLaWy2AYFm33r0OXkQ+HwwfiH4YUFGG3PEdby9WY33INhimzOT5VV60AOI+cW1xTtYULh8OQpAmYquvpGz9DywkgARXGBR7G2kb89lesw7C9BwlkSBMFIGCXzTePQgxqsLphFx5cPoH8yV9hLIqATLBIZEIwXzsMUUqK+VdOYFqGGznJdjEaYUaqtbd+mVcyaKy4e+4ADHEDqCyJIDGOAZEJlpVI2LBUgEFji/n0bpofkVgm4opOEAzC5nW6ytYsBg+Vj+bURAejbCqGSvllIqitUIEQn/KIn06XX+mLAkQRj6wWW+VCYyH/+FkXQhLA8zw4ToHELlmW4fF4oOYIVi6fB6ul16H0RQE+H8yefsd7fVq6rsI4V9/e0Ye82huYWbzkN6DP0o7+O/UoLy3AwIBTsNN6loVZ8ZgLm+iQBAVqNXd2kWne3PQp2fovg6MQRS/ddQlqtRrJWi3ycrMxNjQivH35sVuSwtsZBtatV0kMEKG56FcqoMDDObmZJXNKi9Inp6clxifEc8FAMPxj3OH/1Pl5fGTw2wdac5Cms6roFimAP0EBK1UTLVpOterf00ilZFbG9v/VA0Y5EP9z/RJgAH36jAfulxvbAAAAAElFTkSuQmCC\" />"; private static final String weird_img = "<img alt=\"\\$-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2lpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjdEMTQ0QUE2OEIxRjExRTA5OTNDRjQzODc3MzdBN0FBIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjdDRUUyNTEwOEIxRjExRTA5OTNDRjQzODc3MzdBN0FBIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzMgV2luZG93cyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkFDMUYyRTgzMzI0QURGMTFBQUI4QzUzOTBEODVCNUIzIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkM5RDM0OTY2NEEzQ0REMTFCMDhBQkJCQ0ZGMTcyMTU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sDnHKwAAAsZJREFUeNqkU0tPU0EU/u71tpTyKMVirUJa21QkSAmCEIILwJKAr7iAuDA+QjQS2evKFT/AlYbEmBiiIRE2gqCJXajRKEZFCgakaWsBpUW0pPReSl/jzDQ1NXHnJF/OnXPOd2bm3PMJS0OAIACSxK1WFOEEcJzCRlFMEaHwUkyk03ARAiWZBKhFxTkCSvuz7NQ5IBka6gqsp4xSoVkrqoukdHwzmYwGGmTfWOt26P00zbtB4cmSsgXsaSF/sKTmvENrPGRAmnroCYjLEAlUaq1Rp3Zc1imh+tKN2aEyYKsvW0Tw3oX2qcfheu6tbM65DXq69qGbYvSJHyMUuavV9uVNp93ttPYSRUql4GTk/hNbsO2mjxPy4A1KuDXuR3dbHif3n0xnYmQ7E3tc2dxhdbNejYmVV4ROVtVWGobp6COcHj0GmyHCTzpzbYFbtje1P+RxlsdWlidO3yT7rVYrSCrBA1O3L4IkZDDf8HWFW7ZvunqPx1ke8zEeb2I8juLa6nIE0QjTVAeriSCpR0tNIUhcgeOAke/fXhgGmXrA81h+PMh/MS8QcZpfJuZWLapJn5OfUqSW0Wl20dMEdFH76UcNJn3tmZhqEyx/cYnPB6RYDF4SXWloKVvWQdyBwDcZAX8EL/5q/AKqyoth3lsApFPYiAoK4/EC0SgmPLPetsNNVToQAYGVCKw9zzjN5/Px9/LvkQ6Y95TQF0rwzM6vMR5voizD5Vtc++j3/1qHqIFGowb5Pg6LxQJ97DW3bM/8LM7yWD7j8UG6c5bPtV2lkgYbj9Q6KmwWw4x7HjF6x3A4DL1eT8ka1DqqsOz9uv7u1Yw7kUj2Ud14Lt0nmQJUJKACsdOCA+VmU93B+mrjTuMurSZfI8W2YsmfoTVl7sPn0EpglWuBCs9DRQdWIFdMbLZ7aZKT4p9qpGDXVnLbKxCmy/9YvwUYAC20OAGoAt4RAAAAAElFTkSuQmCC\" />"; private static final String wink_img = "<img alt=\";-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAr5JREFUeNqkU01PE1EUPTP9npaCdEqDokCRBAVqaFm6MIoxhsS4N7ogMeFPsOI3mLjRBYkbliRsDCZqVAIRv4DwUVqECtJSpLad6TCdmed9DyEs3DnJyXt575wz9953r7Q9AUgS4HaLVZFlDAEYJnQRwoQyIUOYdhzMMAbdsgBacfEhA8lOv246HHergwPB+L2YO9SuyN4Gt2NWLKu6Nahlp24c5T9+Jt4YIX0iOjHodqTA06b+RwklllTh0An9AaYGmcHjVWKN3sTjRj2fai4tTkSB2uiJiZR5JsJ+Hk09uFU+dNTl2TnhePX6XbR29dGO3BwDsCuQYEAr5Yr7Cy9eUToj8RGmu20bQ/5oT1IJhdVyYQs9yX5A9kC2SoCxKwwOC3vYXF5CU3MA8cQV1RvpSWp7q7xWU3K9juFwW18LK+eg+Gy03pzE/cnbCHgMMD2H7JcPWJ2fRUNIhhrxgfM4n+t4pNygy+vxKMysgdV1EX4qlQIzS2C1fYDOdM3AdjYv7jmP87lOFNE0EXYxy83oJOSTwObu4Em/KA+RdbS3KYRLx0WldDjP5beETkRAm7KpaRajx2WWDWbzlYg2BxOrdWTh7fvc8T3xOJ/rhIFhIFP5dagLEX8+h7+sl+A7RVUDlIBH3HMe53OdMKhWMZ1ezBQgE5l58H1Hw16xTsk1wXE14rfmwlrmAG3nI+Ke8zif60QNNA0z5fXCJ7Uldq4zfkHt6Iji61IGa+s5SNQgwWAQ7Z2diEWClH8Fm9mdYpb4LhdmhIFORaYWHpt9sxK1bW/icm9EvZYcBFw8Dfm4kWyTxBo20vvF+Xcr36iOYzQ3+mkrk0Fa163R1y8XxjfWdgf6Ur2xSKxF8Qf8bqNmWAf5gr60sJz/sfVTzAINXpoP4NlZwN/eHiHSEOGf00jgYetnNJAYY/if748AAwD28GzxyCIY4gAAAABJRU5ErkJggg==\" />"; private static final String worried_img = "<img alt=\":-)\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxlJREFUeNqkU01vG1UUPe+9+bTjxHZsT+U6hTaO2yZQlAQkUGiBKlIWgKoiPgVskJC6AAm2SFmxYcuX2NMFrIFKpQRRpDZIrRJEaOOWJKVJU9c2Tuu49WTsmXnDnSHJH+BKR/PmvnPO3HffHSbePot+vQUXBjgP9Lbfc0QGbByARYgRbEKNs2AuLh4sSMk6KhxsdHrhfT0FBduhcTfvBfz1yWHj2RfG8k/kk0ZGV4XScX2v0nQaZ+Yrl2evtc5rXH4bSFR2dJGBgMzv6em8/8Zzwy+PFPqKOvehii0wzmBogRJLyz2njlsvHisZh7/5ZTF7p6V+TrLIRLw0mTUM3nn3teMH3zzoXRjSL30ALJ8GN5MQiTzk2o/wL74HsXIayVQqPbC/lKvfuuKNJ/6cf3VqylOSojk2+FB+YihRLWnVNSiFoxB6AsyIwXeqtFbBBo5CBnRM3Eex717pyaL29MZ68yIVMMtT4u7EU4dio8badxgeO4GJV77Chz89Crl1G9y5Ca8yi8HH34ryH53dB7N5GSE/1IVH4DlRf3hvvJVRSJDIjcLpePj5k5NQ7RWY7irYg5voyT62mze76wj5oS5qYobXs2nRMDxFolr+HvHCM3BqszD9u4hLFd0o/wPlj8GpUl420Uv8UBcZ9OEeM91at5Dv0+uLX6C58BnMuImslYXCN2EW0qgtfkn5T2HEdORyaTC32g11kYHut2ty85adNKGnDqQARjfLFbBwm7l0TxzJIZqpwAMkIbDR3NyyQ13UA8/unFu9Wm7ogrrMJDRFQFd1aJoJTY1Fz+hdiP/2BUPID3VRBe02Zlp/1eczOSu1/8DeDBM9qDXu41r5j51hw6HDJViZBAK6y79v3G7cID75zUQGtg07CDD926/lrO9rR4oj/Rkrvw/WQDEskCABv4vAbWN56Z/GpQvlBdfFNB3R3h1lMliybe/U+XNzHy9fr4w+Mj5i9Vu5mGEairPleBu1un1l7mptffXO70SfVhQsRT3aMdiOJcI7RJokPE/rQUIvoUVYIZwhzGz/nbvBAvr8/4l/BRgAuh1CRR/gXg0AAAAASUVORK5CYII=\" />"; /** * @see org.olat.core.util.filter.Filter#filter(java.lang.String) */ public String filter(String original) { try { if (original == null) return null; String modified = smile.matcher(original).replaceAll(smile_img); modified = sad.matcher(modified).replaceAll(sad_img); modified = blushing.matcher(modified).replaceAll(blushing_img); modified = confused.matcher(modified).replaceAll(confused_img); modified = cool.matcher(modified).replaceAll(cool_img); modified = cry.matcher(modified).replaceAll(cry_img); modified = devil.matcher(modified).replaceAll(devil_img); modified = grin.matcher(modified).replaceAll(grin_img); modified = kiss.matcher(modified).replaceAll(kiss_img); modified = ohoh.matcher(modified).replaceAll(ohoh_img); modified = angry.matcher(modified).replaceAll(angry_img); modified = sick.matcher(modified).replaceAll(sick_img); modified = angel.matcher(modified).replaceAll(angel_img); modified = tongue.matcher(modified).replaceAll(tongue_img); modified = ugly.matcher(modified).replaceAll(ugly_img); modified = weird.matcher(modified).replaceAll(weird_img); modified = wink.matcher(modified).replaceAll(wink_img); modified = worried.matcher(modified).replaceAll(worried_img); return modified; } catch (Throwable e) { log.error("Could not filter HTML tags. Using unfiltered string! Original string was::" + original, e); return original; } } }