WMy LTQ1OWQtYTY1MC0wYWEzZTc2ZTk3N2UgMjU2IDAgUi9kZmQ4YmY1Mi1kMTk3LTRhMDctOGVjMi1m ODRhOTZiMzU2YjAgMjUzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUv UGFnZT4+DWVuZG9iag03MCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0 cmVhbQ0KOpoKw5ZizboGDQplbmRzdHJlYW0NZW5kb2JqDTcxIDAgb2JqDTw8L0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQrCtmsrGFhjWHgNCmVuZHN0cmVhbQ1lbmRvYmoNNzIg MCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyMDAwPj5zdHJlYW0NCgJqlPTMRmyg S7uYMLFw3/qRx3MPzwgyBaFem+KTzSS58tyHX3wXMToK80eaK1WZTKvs+YdXfqaTDUtfZssB9ccA k7Ii8g68q35nZoIvrDmt7yAKVS308CO1HjQLAIlNCokZPBoe4g6aH9gvtBZ+ONsxyELBobwNQTtB Naoj4lM041Pw7sadgHf1IgNcENYtq2BLLfhZ7knDOuvqEUVd8rZOtbirUKZPC+PzKx58ZEt4w8Dp dhSeBDu6PZ251hF8UZ5d1+Mm3OG0I4sxW+zQDnlXpzRCiEjDuVEA4QdTHw8yS7VGr74Nhl6+j7jm JWGVdIk4VnfOJXD0JCefd7+q0IptEcCJj0X6+/08K6+qW4h9dZ4psCJFVBD6idMsR3DucnNwNnFz x6/b6cF0BK+W5E9rodxWsT0mZU86cCiY1+7dFnE2ogv1iFoOOOBeSSI4JpSRi9xdHJ9dJA9N/dNM 0Ot17uzvqfmW0s3G//z0yP6kWzpJzyyQDRk6UOwLKjrhFEM6qfz3WYmLhtJVGfzNUxlaPBi+2SJp d/VHgkNT35wBQsYP5bKxyb4AJvrjsXw77ENeLURloMMK2YXMlTUflMLtCIWswJpXuN0rqz1XejrW jie3CLasebAUsV7QB1JyJqnFrkpONdaEGLHTs1moQWyyRPfK3SnMa6MNafwp/q+qenJI5McUimKl Mqm+vNXWUnpdR0DmnZsbj8MxIoT2mrE7ZHAcuFWIh3mbKq8pSD9TK2OeOEM6Y1iqRdxGlvx1pdsi FHpEZ6Um5NzerXR2BmbN+QAguMwDWeMFr7xnN+R5GFqxr3oSC18cLH2xa7Eghg8aVug4QVZckaT+ otiEFK5dPO1QAF5aPU7C6EJ64zyzgsUgBnKjWnAq8q35rtkODOtNI8UKyaDnZdRRBCrjCa9DVa4M SmvuC7tFKCi3XTiyILbqsFrJoOjeB1zURjQmkyCVMRMN5FkSe/fu2BLFsKrjjY1DXley5dxQDLQP A13GRxtrEfX2iRZdCLZ3K5y2HuFMXYVdVHYXaJeeGjb/DEEQVyqil27wOZMbEjbqAwJrsyDI4tpm x2q4PceMyHLhPvdxb63stMRp5mg7dL0Sti0+yNNUFZsk6mdcmCDMii0H4PCk/jtk8fIlhdwH4GZY RuhfeN3fLtKNwmsjNMXqSIeL8Vlm5dYzT0nHTXuZJGB/kDNTj2xIgqnDpthdrUHpOKIsFdfBDKQV n48h5jHJIILIb9LPguxXpzjK1srHtrHqeDXYjIoWnugWIOJx4dSHBVO2dwLjT9NCjw3A1ok4d0Bd tFOY/Cl2ViF7ePuEiSnWEATsbqQat7zNOSN8+OdvdnMoYreLLIc8YnqLuWzmtSAKynIaMxPkaBbh 5i2MYO7WO12l3YoQLyTlLhSrqDLt/CcHQqv0R3zK0NELOgoZ+APyAQ2TjCEuN3t+ddW1lThzWJdi VAv7GNnxyxOGnjbj6go37qa2/0JiwpCvpf81qyGSdtmZraEyi1Mwraenjkmg/ZEGyO3LG2xn87dj OwBdx99aiArXmFPa4aCaeHn46+kR/p2i95WGqkQwxdBym65zz9KokUUHvrf1nodwFNGOrWqbYnLT 7kc5bjAunEl/SPPhZaDN1PhXo8mFULuGk3XTnAQ7E9QioIbkEQxoOm4a1lUPlxwkfPSRDPdSLj13 Tu07RpB65PuIWYeLy4fVhpV2fchkp2VykFsVU3TZy5cR4IoIzTwSwU8xHNlP3sCt0ncnTiYfkCw7 y8MCUfN9Fjfb2OtyfuRSuDjOsZDeNNyX1X33x5OOqWoOKSvgguIRrlqu/Me3TkjepY2sA81umQJq bGx+TK6EHOtdHsia1xJ7peZbEGZ4dPVWERXJmh1mNoKW3WxQRpCwxG0+HJnvspGbwHPmGAsy/fwl nGvhs6nj4OP8R9/jCLzulySxE+wc5Us9Xso5T1DPYBWAXfF6iCrBYxuJDdv6wh1NGUqIqSryjPRZ pOJIUL+2AWCll2yUi8vBmZLVnWR+RDrdjPgLrU2gW6aWzZThNjzsOs/9c4zVDMKAkK6w6Hq6nj2+ hafpV7gOnWf4W6HPZk2ibECtxWA7fYIDv8sMCKE6I0w20ChteR2SJzmXh0VBMrKwHnrjZv6Nj94i 5prf0xAb0cDRXPeaZlnk68Sk11AAXmMVKRIRYwBz73Z8DsaE016uQr3ofL+5XHda8xF96rnPOzxg unCOf2rhJUScSzPj6hTMCir5jE/oHUfLMkfRRi97aFijiqsj9eAD5IEqKNcoRgKbojWWUfR4gMyc gt8nuOp6AtRGsQKMyROb/u/zNMnIzS4JUCzHLdUVSSyNFPOZu9LMmANGeHGCyqtdMnKBajiYI1E7 yYZ3na/XuSze2BPsFZAnV1i3KNwfSGgPiOt7woXOLNoQGNv1jf6D3vcGoSHIxtia+E1KX2z0nlYE EFDRSyxbF3rAQeWXLVZCKcRcny7GyKfkEAUtPJAZNa+VMJ41PWZ3JXXwhlBD6wgT6LDWg1o5SKCA 79u5Q/T77a+o82qbe5PUpGN9lUcTztb4PR5n4b3cryZn2psFsxy7zbktriM5uzk5jJzPLptkWjlK V3i/32sEINQ975X3cB7hb6l6Pvi2c+aX/nM7ttYXuVSKzY4MLGNTuIziwF5BjpclmPo93YvTDQpl bmRzdHJlYW0NZW5kb2JqDTczIDAgb2JqDTw8L0NvbnRlbnRzWzc0IDAgUiA3NSAwIFIgNzYgMCBS XS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQy LjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC80ODdhMTgzMy1hZGU0LTQ1Zjgt YmIxMC1lNTBiMzUwM2EyOTIgMjUzIDAgUi85NzIzMmM4MC02NDhkLTRmNmUtYmI0NS1iZjdmNzA3 N2U2NjcgMjU2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+ DWVuZG9iag03NCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K Noa8pJ6coCPuDQplbmRzdHJlYW0NZW5kb2JqDTc1IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29k 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 kAcPNUfuF2GGKqXp9PXMMWbIGIDPLtSdrXWX8lZvc4mfRVhZZeG1yNcu9yS3pIjV8n4wSCrxQg3b 79BSABEsHhy/vk0qbG0SrXrMcpSkZoiSREROk9w0fs2PFYrc2x8R3n7aICY3WQpyihrCdBE3+X3N egTu8RXhy+AbijyZjEwicpGVN7YYD2pjRaxt+00QUZ7LBMXda/CPyBwgZUin2XUGviQhtV+b4/ck 3MfAxrrN5lcoPnSmFpsjmCkyFZIk0IzABCUYukkev+mAsjbahQEOXNXUfK+yYEThI+gapW1VV/Jm qupw3WzR0WfCH3kEUIzsq6SyUp/4KGwBnOUddZ2CCWnpzapLdxCsDQplbmRzdHJlYW0NZW5kb2Jq DTc3IDAgb2JqDTw8L0NvbnRlbnRzWzc4IDAgUiA3OSAwIFIgODAgMCBSXS9Dcm9wQm94WzAuMCAw LjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEg MCBSL1Jlc291cmNlczw8L0ZvbnQ8PC8yM2ZhYmM0Yi0zZmExLTRmYTktOTJlZi0zMGNhOGZiNjY4 MDkgMjU2IDAgUi8zNDMwODEyNy05NGIzLTQ5ZTEtYjVjOC0zN2UxNjVjOTM2NjEgMjUzIDAgUj4+ L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag03OCAwIG9i ag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KdO7d92CU8p9gDQplbmRz dHJlYW0NZW5kb2JqDTc5IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3Ry ZWFtDQpsVpVKVqB/si0NCmVuZHN0cmVhbQ1lbmRvYmoNODAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCAxOTgyPj5zdHJlYW0NClv0bKFRqj8RA4H5KqkidTewD3JLoY0xUVEKRnwV FE/gEHqAwx5PXzimhpZJjLEZg+P2kyTEj/sJ0RsnEoIyvVPfTn6Z4FMBK61k/31Xf4iQ8QdLzmFS EBUjSbnf5swZ3HLwDnxd25KI9jT1ClPufBxvSy53DkLRy4KiLxqO7tpmfvpD2elUDn0B3qLP5fVQ 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 F3dZjpBBwIqkCkemz783DQplbmRzdHJlYW0NZW5kb2JqDTgxIDAgb2JqDTw8L0NvbnRlbnRzWzgy IDAgUiA4MyAwIFIgODQgMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94 WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC81 YjIzOGRlYy0wMmZjLTRlODctOGIwYS0yN2ViZWVjZjIwMjMgMjUzIDAgUi85ZDE4NDcxNi1lYjYy LTQzNjQtYjE4MC04YjdkYTM1OWZlODQgMjU2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1Jv dGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag04MiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv TGVuZ3RoIDk+PnN0cmVhbQ0Kf6/+35ETFq7QDQplbmRzdHJlYW0NZW5kb2JqDTgzIDAgb2JqDTw8 L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQrsR9gRUjhOYMYNCmVuZHN0cmVh bQ1lbmRvYmoNODQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTU1Pj5zdHJl YW0NCvlZ2DSqk+QHnCA/gHGnVU/S156hIlm7kwImGh0yXNxtzstZWs/4fG9hMAcdEme34nW5a6Y0 3Bt92+/H4mhT1TzPvYa+VUQM4346l0eVBhJ+CQCMqLhYEHZUN5NOec86DiE8+RRaLWVdx2yRFVqR 2QzBdEs9thp/dJ1XqiL2PD3sJZNsuN4U8aXzfFMDimUYcPJBmCyib8hZEEQNAfGR6JU+ogSPfDbZ SStcQyAG64q9PukARtNpzRtiNa7jPWGkkLGg1hB7Ll5CPnI6yObfEtjeFpoSyZr+7G8dkZ60yjbx 6trvT+wtyOSDe/RhQ96POnSQGpIp6C3T8DJKD323XAEZYJ0ezfUMiZpmEeebvY2wbXlQ7eZEuooK 2CuG7fubGV0IQYDc3QavujZ2l1NJdc5AQBeR8FF3UWnc+c53K91eJfkdGCLHvb6SzGyl/VkXhF0V D6UXa9ZukAnH/bZ0OWujIZH2j99Kk6C53d0aqc32RME/+JO0iLzzXljd7LfOvrPIrUcT/59R/QoA KGzN5MUIWJ/JSu1pWZEYh+IUcb7toiPDNh+zjbF9Blq87sarIqjerUVIOOXaNZnLspR0c0HCd9b6 /c6QOgDbwhXHSLE/dA4rhM2jABJLeTHQ/hJneFCO1sB6ANw/X7TxJ2QwabOBGvcdlpFrd9/X//Ay xaACxg6ofqgDZcCaD8nElVEp0m8lLWY7CR+9uyGGxK8vEktrf+SmrNuX2A+8LjOZAypO9F++3cDp wrixTLJ3E5E1cbDVFcdkRzR2AmdnCEeOYHDBsVFueHfhnO9ZQ+In8aPvXE0LONV5jduzrSn8q+pW PIs2iIvv4XvNSDx8rRiD9lgI+GnGjJMeuaijmekOhOJVJRA0Fd6P3dez0eICtSZx6jHJXh5eyfa2 R/ZVnEHGIV2vEW9TxXeq0R1DSXFhC+dn8TSNHz/KKEBTutD5WqQuXQuQkkZWcQsMg0k5Mwaspu8E Huc4TzDMGpQgZwitp6BxbU+uzKZAPDsYk2qt/ncuDk5cEvf9MvVpTXBUme6HGYxF29hr5eyEM/H8 ryLMMvf3RaoKf+LPLG4KxJs7KML1joh+sRPPcpp7vc1Jme1Slb3zSLnmm+H7O+gUIafjbhRbs3GS Gw16YtdwvqWn3Emw2MX/O9IyhNpY1bGkEjZ8UjA/HPUZ+8z3DwDZvP0qpKiMvqJKp5qp3N8SgYHR jevT7dXOQMA6WMH25JQXV3EgHylggGKBsWAXWuDpXHYZRhSIvssnnh6QzsyTTYTzxfFW9ERrw4Or jIldTHFagiBC92ZpxglpHDVjAxBM2ugxGKMYTJ/vxoLIOz9bpi5zzjEEr9xJJusz0uKyQJIzk2Px cAezSdv6+Ogsf2r6oLf6RBMVAXgqBp2SS5wpXo/snqN4r19H9oNmj3+k8juGuaFku/vaXRX0ylie z6aH4SYXLQ49L4cQEjJMwhEq8wec8R/TxXupk463WD7SFMIUJwm9VHhOOdQycNtOSWS15W8yqg97 DEW0CtiO6lI1eIDHRzYLvRYn/oGePfraiGoBCr9ReM0MvyYA5g3Jmlf3duCfdF0nPXHLJjMlFLUD rKz62vy2AD9hnqTQ9QGlbJ1tTSydUyFO5enIk0dq5bqmlmIo+jLQMa+0Lq9llNoqTyg+Fm7O+7dd sS+zFFhQnu7rZJn33eFVzrMhTPvdUVAqA7CFPmgz9oL2H4D8acXYQkzOMVCzfDFIp2zIh5i8YhvE 942bSMrbFxiR6dv9T+aZZumAuXrGCMzBwK9ai1kE8vJYFh9EaR2DHLyvyfyA65gFKUwASqNUJVDk +dHt5p25PgdlqAT9dOp7uTjt7aZvau5NBd5Ka9hUSWqpvSQDvPycGPOIr2DTmvQe9dHALmvs6O91 Mh5ZwX3KAaug60UV+wwLcPZb1AOSBMzFEH8hxz4rKcFu7/EoR51ysseEBNi08umYyqM6agr60iUw LIGR+ITOBg/S0Q5+dhybi6Xp7Rs5az4YbIeH6JB/grdu2zbLRxUqyRX2mCTQhb21JB5sQDNQyjL/ P54/fU/yGEw8FHRN/YYBbLfhami/LEKO9YlxAyIjNwwv2vwxPhWWkP6mzqtA4NrUTseigPSXBrtE YcmvWuScTVUqRMJ0auPRtDDlWfNX7CxHw/aYbdK9tnrkZsjfQlx5b9Z3QBNq4ji1tpDNtue3gumP 2RUNovftv+0xgPaPh9krj5WYckFaIRKESW43vLwrEXXczSg+5fCTNNRS/qAwGYMRe+zFhF0eXZ1a iiCxtsrjSjTZZP7sGc2ES+cGDNhdWlSXlv1gmkynEdACNFCxEoZzri3BdXjg65crYe3ecSFL4bSk x7gQPzflIgy41QqL3said+LsZ8/ZZ8ElxdMaH0B3xx/HxW6ePxRcMJYVo46uQjkKdiKjfpviGTAP Q9sJJqWZCf32IG4vS7r2IVQJTts2K/amJJGKLxqGtq9OWXM2JsgGW1winvln/CL941WN8VOxgysM UiHrmLDzMPUTCh3cH8kokQEC3UkuuzPvfMNIiAiSHaRrwp6/HjK71yf8kFF2cUC4B0Vu9wqrf3PR Dn0wNbZ+X5F5fVBhNPg0xqtvZdwYDQplbmRzdHJlYW0NZW5kb2JqDTg1IDAgb2JqDTw8L0NvbnRl bnRzWzg2IDAgUiA4NyAwIFIgODggMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01l ZGlhQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0Zv bnQ8PC82ODhmNWRkZS03ZWNhLTQ1NmItOTU5My1mNTQxMmIzNDM0ZjMgMjUzIDAgUi84MjNjOTBl YS0yZTgwLTQ3YTEtOTMyNi01NTA0ZjA2ODk3MGQgMjU2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0 XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag04NiAwIG9iag08PC9GaWx0ZXIvRmxhdGVE ZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KH2S6LkWOUMLODQplbmRzdHJlYW0NZW5kb2JqDTg3IDAg b2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQo5qtx3C5C6sbgNCmVu ZHN0cmVhbQ1lbmRvYmoNODggMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTg3 Pj5zdHJlYW0NCjY/kkdy8sT12unJk6fM7UulqawK8yB4Z+LHWSuUTVMVRuKcM489AoVvX1ltchV3 hefBSxDV635h1NVL9pFINMEhMJuOMLsvHWCKN7TKeNZz/XjC3sYml3vneP+N6EPigg7S4O45Riv2 yhiK2jjz1fCC3E/wz+b8M6ZpPDKtbHvgdBbOzrsvNW9jMvBKiOMcJQCA8YaacR/iQ1HWcDj89aSD 4OIHfXiB0xbtRGdTNF1BFvv0scXt7Dbhde2vw79W7a+SSbCzMwG8AvF9ffK14JJ/4ALwAblBIKwX eIXNKmtZDLJC4K8bK+Pf+dVudBqE8N1jDAQ77hlp01swGVb28Udc1Xc/sI8rnouhGAxXb6GJy/+B wXqewPKoX/GwyiFAOSDGpVlaQIm+Y9rcnN5OQOqAbAj5mepF94CVg6/1866UyJcS0Jfw429Z2Ekl YSHEVlBG98x082fTTzNZu3ee4P7cEUHkG1aErJqQaLk2j3slasjNtzFxG1P2e8GXdIU1FaofiJSv S+pedJ55TCPlnsXDlhf5q6tq8GCDg3JSK36UTagGp7kBD69DH2i+QVHRR3yDEB6IvZqj0B2UlSIt MVqg+ehvcRuZ17B3e2VvHVNIVe0KQLz65ljVDJxP8RvV8VFsCF7sMTc05xWJjxbz2bI2w5+DJ8Nj +Q3v2eKm1X23C/r71/bcctQvoPCTxgQ7DhuiN9Re4XC20FKR6zmyLaDdyzGHGrLkgqDIsnxVwjj6 JqoSamtAWTUmTHNmJCYoY/Vu5ARyDv5IWpcTWgBx+hjqAl9ldDRdFtq6cFWdHYytOWjkfediFfel x9GABaxuMJDVLzKLVMj0KQzz4DsA6TjeATwhcbGiaGRKtWk0VEcph/wSv7RZ9LmWdMKXLm6X5lEn bKc5eS+YjgTBQEr2K1pI8vmz6ptxl7W00+bC5jr+V8aE62kHD9MzKV4Db6eFi/5239ST/wFxLmcY 6quFU7cb9vLSP04mWErk2JkENuVxeLbOOWQtIn8lt4EFlnjBi09t0zo0PXXISxXyQ3dQADtcNP5I Xg6i8SK1yDXxCZ9gYCl/gyphSaxNFoNmMatQOdLUJpmii5da64xIVmMUf3Vhmm4wAmcuIHhQW/wI J5uwdu2YPaJ9eyZknE4QwnFgSLdVmVmWKTJ5qXnqgxhWRn53Qq7JaGiFmmRLOwXBS/vopDKiTiSK hoBTMlQMcL32ERC2wKt3ga0ITxjb/+TDRGUTuvqSa7D0iMVmtZ2rsNeMt/0KnvZVfK8xFV1Q/BKn F0SzzGQlrN+n4MuMDi/90Rk5N3rZY+bM7rkWR5D2CFbYW1GathMpns+F3/7I69KFz6MVA25eqJ/L tZ7Q4DxcNbIHZ/uUMhbnCCZleUGPJJlFufw/0QM/vkZ6fgrzyfPUZC2ebk7LAJWhl3iQ0N6rlAtF LTamZq5LxYydl5gbNDcXxxHCZ+qBihSjk32hE06s5Bo9WWDG0wPPi5uLgeW67Zn43B2JujclAQXz /ojkY+GKL47skYeaSlMHEWmSG2BgWkoiPK3KNdhMw9ifydaAnUmftbzD+b91knnFuFBv9O5nRR+a zHJJgMPR+E4sMNNJ6IQ8776/uu2k4lzoCnDzJjFALjdBiu5HfzY8YYxzx1BvknCWIfjeS2+IcdFK oPsTM6jldIoK1wYqjXDuLbzNcsiH827OsLeyVyShBkcI13K9o2hyB+wBTrp7WJWHLgIAQ9IpMDUF vG4OZBn9isefxxJgRqvqs/iDVOgy2TVaxUd2dxkloQGCXER+tYEQTHrcn6h7zgOHQj6CxTBreDek omu10hl5DGSRil4g1P2urEfaj2UI98z6Zy+AE0ujroyNgAy4CSML1OzBhat6pPtSV8ED9MgoparS 9Muh0KwUKLJM3c5dyEASIMi3SplBYC9qRuu212fCOCChunYHU0bdPdtoUDRvJ2sPM068Ysc7NGzI 58HOaTPhyTz2ylch0ksJWJv/akeS+2iYa+xD3rtx+CYM2vYw51yCLOtuITBFeHIk2zT35VRHgUyM opJl0a2vy4FwkS9eP/cjFmLnwFW9wp0AXLbBvPLba4/NE3cf0mmIDymZ6FNiCW5HxAWihC1R+kNd 9UvOYMApizH5dPJXeiVKdu3kNgJqTfydWkU6kCd9oLpeD36qVRyFEB0cuV38AVW+rDl+7m+cwB8e qc1LBjT/Cd/nSAPVdifO6f/7KFMic5UfFWF3mM3XA9oQSq+u0IspG8hLzsAhGH+Dfe7hVIUPjp/r mdJP5PH1PS6FSAqJyy7Gl5qathmEMO0+kREoSpf9Eh8noGyeOqtToY0XdC5CHx/DxaWzmyKGFbBI KknW0sFA1RZt6NHDTgw9XtQOh0XIcSfvtB1+RsydrBdcYhqdgE2QNTgf2CLYreyqptuTMcMS2w+n S3xQMGh5DkvhYizaK6Y0Zn3kVyRqDS88epzc82AMXDlMrVLk1Un326qEqHyvhRILd03lT1r+FlTV 5I6suRXzepNdjCCvYIxShbhwUYSQfzREYrP6Yi3BxVrJ5U+Qel4wluylfkOsb7eSGf1//jUYv2qt UFYwXJH45S79LKvnj+T1KpOeJH/lOJap6o1P2+uPv8wA9KaNtQU2MfaqNF2PDzXV8977vOgsQyNl zugNCmVuZHN0cmVhbQ1lbmRvYmoNODkgMCBvYmoNPDwvQ29udGVudHNbOTAgMCBSIDkxIDAgUiA5 MiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vTWVkaWFCb3hbMC4wIDAuMCA1OTUu MCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwvRm9udDw8LzJkN2U0ODAwLWViMDkt NGNkNi04Y2UxLTc3ZWY4ZjcyOGNmMSAyNTMgMCBSLzUwYWUzMTlhLTk0YzctNDEwZC04MWZlLTIy MzIyYzY3OWE1MyAyNTYgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vUm90YXRlIDAvVHlwZS9Q YWdlPj4NZW5kb2JqDTkwIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3Ry ZWFtDQr7CFx5pG+DcKwNCmVuZHN0cmVhbQ1lbmRvYmoNOTEgMCBvYmoNPDwvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCi+ZEngY0blaLA0KZW5kc3RyZWFtDWVuZG9iag05MiAw IG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5NjU+PnN0cmVhbQ0KQQ4PuAUmdMaw 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 /ZGlD3MuZQcu+eYGhqh7fePWTPMdDgjKrjQojWBMiUkkkyBEbrOEt4vg0rrHrheXImgGKaUwxDUZ 6QVah8I1SXjuF7k/tolBVd1FM+bE7Y6mSjQ11/EVSs8O8xCbRXxdZ8Bv3cNsIUqv6kQuqXpaSPBL 9KYg53KG/fs/sbtwY30B3kgbDQplbmRzdHJlYW0NZW5kb2JqDTkzIDAgb2JqDTw8L0NvbnRlbnRz Wzk0IDAgUiA5NSAwIFIgOTYgMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlh Qm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8 PC8xY2MzOWM1YS1iYzk4LTRlNzAtYTZhMi1kY2IxYjAxMzI4MjQgMjUzIDAgUi9hNTU0NjQ1OS0y YzE5LTQ4Y2QtOWEyYi0zZmJkMmUwZGYzZTcgMjU2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+ L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag05NCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNv ZGUvTGVuZ3RoIDk+PnN0cmVhbQ0Kf/5If+y8xUf2DQplbmRzdHJlYW0NZW5kb2JqDTk1IDAgb2Jq DTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQoJ5PIP0tLkziYNCmVuZHN0 cmVhbQ1lbmRvYmoNOTYgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTY5Pj5z dHJlYW0NClx7UKp4BRDxWOv7tV2GkUPM5WQ53+sRQ31+3VBpB5RZ3vVmgSgLKOG5zBvVSETMLRH8 gMhL4MoIsBEWd4ktmQKMJe0nsBngWA4EE5jAQzgL4Vy9Y5Vrxlco8wMRzRp4UiDPrxxBFUqJlEEE FDxiAUyn3W/x6HkwOkk2kflHd8OOAI78avXU05OXV3kzK74wtGkM0pDgs4hd6xdgdq8VNF9ADcRa V4pSw2xOCB6cKlDrIMU67ykFsZk53w+qMGJKoD9Nz4IS4vZ7IrkZapuSXOBvkVK3ryilgZnVH/YS Hsz4FzVVIuyjmN7J16+MgzWpLxkJ84V9gh3BfdQsBMpXFxbJZNnTRpyAWS/p035o+/xMshgBG7Y4 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 MCBSL1Jlc291cmNlczw8L0ZvbnQ8PC84MDZkNzg3ZS02NjdlLTQ1NDktYWMyNi05OGRiMGYzNjNl ZDEgMjUzIDAgUi85N2E3MGYyYS05Mjg2LTQ3NTAtYjhjZC0yNmQ1OGUyMTA2ODAgMjU2IDAgUj4+ L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag05OCAwIG9i ag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KjWzknXr1sykTDQplbmRz dHJlYW0NZW5kb2JqDTk5IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3Ry ZWFtDQpj2MONAMwBZs0NCmVuZHN0cmVhbQ1lbmRvYmoNMTAwIDAgb2JqDTw8L0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGggMTk5MD4+c3RyZWFtDQpPMGha2j/jRD3E+OhaASUvBKE07Mc63WQX92pM cSM/FJ7x8LnhUxeTToVaT6PBe1B4QRKW0NqfaDfF9a9AqyxDevKSdG2Ct8mdyTlSX2eHqMZh4yE+ OYhTrdwd3Oh9m2SS0p48DijA6zdMKzYkALEOzWSEvvlCFu3FNen3qq8/xdEvef1ZJH3kS5+X2hC8 BK2UP0RpVsxU4Re9zGPIOOwxj2dNeSzC60ZPo09yPQqNaAQUFoAOE/jQ0TUoxl5EOQzTnAvuhfXi hdPA2a4mBTebPkqPAmUtm4Kv6j60WBVLIk9hsIuYw/rGEvyUqQwzz/jL/kH6keGMQKeeUIHEOqr2 dG+Q4fM5ya4NI5XbT9iaVYF1NGWNMF8hR5KvWgeu5RN28+/H8uITCmcwLMkCS0MupHI8uWm9P6HM HyX2/btEE+PUExzAVuXZmKBwE1X75sIqb+3EtM3y3wOX7Zh201WQCdMcX2JxUd2PXUPc3TlAlUVH x45Hs662bLs5T2VHCLDrUfLJUAJsCIX0XPZ4GCEw80NlXGWTRv+y6qgGHlcRECbeUsdYOpx4w3KS q1ArPrfMPhfNmQgfy4pDuqkCwW+HQP0ziOmdPmi8ttVsVIMTeEtSxVsX2p1L/+U9DTcty23++RO5 bYoKw01tU3hvY/6ZccDyt0tpRExvyC/zRPCZ0i+ZqxGgKhzEfhVkg67HVQ2o+f2kUL9B25xg0PMC 8lSpX95U3wCmP+fY4d0r3+rmz15dIfb3LpP/Cx6HSLaNg5jt8rMMTP0SB7TSowc58IpbK/0gFxqe 10Oha2f9HbhAJ6eJAC0m5iA/B7AIfNGCwMrdPtU1swayy2j9JWwm/VKOqSmi+1z7ayWMVUF0tdJe uv1HIQJzx5d2J97vgdI3Zczu6yAwy4bOJ+HPifykYgEfmrtTN3JgniYMdFjFJMArRhCxu0iCd0Vx JiVYvLB/YMtF01T57tzPg/Gd9kVzFrq/yxORhx71XGxkaW0d5RRNp7PZcVDmgbb5f4L0zQP7SyI6 F6ynbWPT1gJR+afSX8efFKNVXoadDS3FAD6TVf3g/rCNlHodOyir9/LsVIJuNqq6AGn7t3TyqCMy Gq8EKeqggevUOeWLoZlqAl7/hcTwsv//xDEdu9Oz+3ciJhaldOIX2LnTsqxrcAO7d4BNjuHmnzE2 xHfPHm9y19+YXUsKJ4Ci3eMKG0VSXP2wbxIhCFJdvUB7hFmhqaIgzuO0N/dyEnRXnDMFgawUjVXg TLCCs8/qjiEUa0HIXb3nElrYI5xKy6XYa9q1UiS3+15B95Uzhe7pKXHkIMAPC5fTTVqdtr9n1LvZ 6AxiLkf1+Jfg+uePePw0j/YKIpYKitFPk8dtP3JFtgNAbEaV0eHgTS8pUpE7hpHcoo+uyS5y2x+2 12RFmDOvv+aOib7YmEa3sqCJjH37/ZOC8+spWk/lDBoHyz/Lyn33ScZDluOGNV5hkJoiAJNtW/k1 qfmSAkrjZ8Jxuxa0/o0ZW6NQGlHJaAW9doLDPgRY29CTijZ4QPl4rhaAtUKFqyISHFu7g/p86TLu 2gtvHHwAScwpcuP0QCdT0uOdFDjVVEt6LTiSDAi0wVT0IS7SdZw0qObX2UeF0Zs9FMveo+jUNVOn +CkMINWnURxVH/x6AaBDhMex+4bS+PTD2BFuyt43VohVCk24LceNavgT9fVRx+CWyEHSZ1PiungB 4250PYWJNSdRiVFg8o+yhrjvv0PvHWYi855anohlhbrFy0B6Foo3rQPd1xSClZi1afXZ9Fkbxg/L 7hi4eEc6pcS4UPqRAHyiRpT/LwriJZMhStO2aJ9KM+LGHmhq9fFkOpyBUEvhTrKXjrT9UZdmDinI pMXGjEd9+iC5tDoLoBZgg3qzOvFq3X+7K9SyYC3xmnwGpQOx9xex74I/Id/rYEh4RlJkRSvyfPiP 32362LuGIft0inLuwk4LSIi1S0oqxPdBw7vLgvxo7kMTVCAmyjmYYdhctuskQ+PG/gFvO6cAuk3j ftrav/S5Rfuzj84ZUMx8eXr3EvLVeG8rtgCfC1LZbZJBXb0YFAGfQx6OqfyMBHJ/yEh3gM4j1qWT 7h1clAj2Bko0GFcuu5z5nFDHH8kXc58wvm5AHSOTMcpqArGHt4a5FXnBDNUBN2rQa/DTBxYcugMD eRiWpeo8rNBdCR1iRrwx+uI1AwXhsW5pOynKUyE1b2IjFVm7CgALiI2kujW6qwCrL5g8SEkhDrS5 3YvF3f295UVvzxyFks62ZeN0XBEITynocGHBLabN+hbyxf00mmJwfJFaZVBm8aYmuY3rP91mjaSN xOEp6ZqtxuRHkLmSPNBml+L+1fPITs2mmpyNxkFWd6sJQBqtrh8FfyN3wDB1HisidDjqSOnbEzK7 JJHSKet/URpSw9TfSRdDVkxRqcbErN6zPRmTpji6NMAHZRP8Xjvf3ZzRfcP92ll8xrW0DzbairBL CtDI271WHj+ah/TRnQvsD/X02N1+LibRmtt7XDZRVr67wZsLvduRSxNGI2eFrekGS7vrH1W9Xxzp G+f1W09ok6xr5i2+La2qPHpggcZ7HEITlW0GW1x4SR+d5ecDdjdbh+VgsykbyHmLDYah3wbikzRq 2f3QGj/AqcQuvNzX7lK8y1jAvyD849PTDQplbmRzdHJlYW0NZW5kb2JqDTEwMSAwIG9iag08PC9D b250ZW50c1sxMDIgMCBSIDEwMyAwIFIgMTA0IDAgUl0vQ3JvcEJveFswLjAgMC4wIDU5NS4wIDg0 Mi4wXS9NZWRpYUJveFswLjAgMC4wIDU5NS4wIDg0Mi4wXS9QYXJlbnQgMjMxIDAgUi9SZXNvdXJj ZXM8PC9Gb250PDwvOWM5OGY5N2YtMDIwOS00NTg5LTgyYjgtNGJiMWNhOTQzMmVlIDI1MyAwIFIv ZDFmZGFhOTctM2E5Mi00ZTY0LTk1MWMtN2U3NjQ5MjRiYTg2IDI1NiAwIFI+Pi9Qcm9jU2V0Wy9Q REYvVGV4dF0+Pi9Sb3RhdGUgMC9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTAyIDAgb2JqDTw8L0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQoPnelJvC1MmeMNCmVuZHN0cmVhbQ1lbmRv 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 xO0pchONtWbGb/dONjLgaTkfjlTieDhKx518e/qVr2GKtDkoZ/ZU2+Eka/pBBtyObWXC5LZ5uDvM Z5cHSaH9+10hViE+gF+n6pJl2h1sWeP/llaGewg4cxdtOJJsIX24GezYSTjgx3lRwyS79NVxeb8S RvT4WVSmTF8TQ6hsrUHPlXwlRW29cyF8Ibz8QAlj8suPI8MNkfIU6mbk9teW6aj2i8yBCYMaIIWH sQFG9n9FxxdEOP1bQJxH6MdcQZ9cMuQkFarB4HaM2jEU/xPm09LKGSa1JU1u2++NRUUX1xcJYLyw I6HLzkcITbP890UgOTl7IZ85LJ4jIPR9A1gCSaJtyH2w5R9sPYvr4jihLPH7hudMXbaMhTQly6uT P/DNMrOAVQ0KZW5kc3RyZWFtDWVuZG9iag0xMDUgMCBvYmoNPDwvQ29udGVudHNbMTA2IDAgUiAx MDcgMCBSIDEwOCAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vTWVkaWFCb3hbMC4w IDAuMCA1OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwvRm9udDw8LzBlY2U1 NzlkLTUxYzAtNGIxYS1hNjgzLWQ3ZGEyNjdkZmMwOSAyNTYgMCBSLzVhODhkZjQ4LWIzNjktNGEw My1iYWU5LWJmZTY5ODU3ZmJiZSAyNTMgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vUm90YXRl IDAvVHlwZS9QYWdlPj4NZW5kb2JqDTEwNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDk+PnN0cmVhbQ0KGFUrB7WX9vLEDQplbmRzdHJlYW0NZW5kb2JqDTEwNyAwIG9iag08PC9G aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KcRSqi4CCLtUNDQplbmRzdHJlYW0N ZW5kb2JqDTEwOCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5NzA+PnN0cmVh bQ0Kb1XW2VHvwTD6UFXkLuq5PLKd7T7RWD/5QRovz3IkVTVnMc1+atOOYLKM7Wx4IwU9o5NDPyil otonh/LzVSbXM0MmeO4wzEj9+gy/iPdPirl3mMzXQRcGK+TDgQCtMPeC6ViF5fvyQyTho9CSnDW/ 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 dgwmA+SjtPEDQ2JchIQm2wMVvgaTplf5uNlJ/OsDNt7dLVENCmVuZHN0cmVhbQ1lbmRvYmoNMTA5 IDAgb2JqDTw8L0NvbnRlbnRzWzExMCAwIFIgMTExIDAgUiAxMTIgMCBSXS9Dcm9wQm94WzAuMCAw LjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEg MCBSL1Jlc291cmNlczw8L0ZvbnQ8PC80ZTc1ZTVhMy02YWRjLTRhNzAtOTRkZi03ODZhZTRlOTdh YTQgMjU2IDAgUi9jNTI5OGE1OC01YmVkLTQ1NDctYTYzMy0wZGU0MGRhYTM4ZDggMjUzIDAgUj4+ L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag0xMTAgMCBv YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCuIgwFHGbzf1kw0KZW5k c3RyZWFtDWVuZG9iag0xMTEgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5z dHJlYW0NCuN1F4bHlJNLdg0KZW5kc3RyZWFtDWVuZG9iag0xMTIgMCBvYmoNPDwvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCAxOTgzPj5zdHJlYW0NCln6WjU6OIuq4+kM3zTf/XZqu0l0ZfyRWM85 Y35SeQXIdXESYjSuoYO6hnJ9JZ3DgL7Gn2a8bu+nUTPMXljyiOJ1W487ZPOa+9vDpt/Dkk252PtA skyRHljSJExRoazARn+5LSHYOQCFFwhxo93dELwN/pbm8+CnNNP2cuff8Jkdkx05+DK9qg8aJzTA rwpPXp5oqf4fDyneL5O/RYhVYayBQFdOwqEvgcfVpBWd0/kNxLheY5BsUqvlC53sPZhCnzu/t7cx EKLq3kYZl4IkdSpwbbCkYorVMD1bG6SH8e+NmIYAe6/a5PKr1dUGy6zALVxKWCK3cmzI4huv3Pmc 3LrGjlK4C373izMCNdykyuWNNzaCNLskwpeb0Is/DmVLQ5EEae7EQoI9FG4qwOwd0UP2Nbp5567j ni7EOGY3q2MPelHJeG7u455TpWy4ZaKz/nj0ANI6kYvQgzLbUXxPI2tsPy4MRZNhypLWvdr9nnvO Kmi4q8NfMr9tNwXwxGiNNZFZsmPH6xuRhWAFAllyUI9hUJysZ1MO9mUr3UpRszHBMjqEURqYR7RR ploAfCGTtUSNlWUK6WzuSqaeGD4dU/BEa04oo2Wwt6WNmzI26On7mPzxYE8/zzMi2ZvPMYzfDDs1 gM1lfzMrwHnyaO/iQIkk3cGVSe3m3mJ4QdjuJL6MEQozw30XEQAKjJnP7+ytdAYxShjQoGWjmQXU Czbn3OnsKodzCJOtNgYh9twdKWMqzU6P2mYLN+LThqRIHc2xYIoZs00Whd6d+PYOmnQkPSfbTET6 H0rvfFDm5FIe/c1dGwqKAPp0ZG+Ok8z81oj3UsX+SVr2cyW9F3EuIec7Yd0vHpDawS17rW4gFO8Z 0zEgnYDfSDijNsFepG5UZfaEC/6whI2XNf9iw/iQbRvtLPeBRnD74VAEkizsOvL6FQ3+pFf5KJhh ztL/6eSwPNYBkapxVs6YSVunAXVBHqdUskdRlMy+RgP7eDKoJadXfjbEcyKRaHKlgxfvaTGH2lEz BRhbTY9dFCUN5abS+C1nTFvzpR1t91cFbWbjCYuQeW9+fQaa0OywEczYy7+2ymI7KiS1Abd+hy6u Ehd+yTm8b5EDDT02w14Emouvx/FBZRcruhQkmhPCviKHA9+bJC72xB9Am4L+6J0+swra+f9NyDdv nFrZG2LFxpP0Gt1mECbJD6dqMIWdsIWYfBv2cVjOxu+QF39Ouuh6Y1s4790DuJvYrlS34OQOITMN 5cSqVninSkPqFY2QeQm96OjdQv3aN1R+zOQrdtE2qfKd0Jx/MKmwv1yZdVubtXrO7n4nJGym91CK TyNq48S34QFcIdmYBkhARC40AFlRiuTE86W97FgIhlcyJJcDsvY1ePSr/WCzb6yNiaRleBCs1nlD gTj0XmX9bkQ8kQp2STJMI0yEOobqmB9e0vjEjpuBJMWjNEq05r8X29pU5f7udfjjMv0ALBs4f1j/ 2lDMrQqrNcJbQs7irAIKoGEfeGRgSD1/gSvZUY+F2gs0tcZEpyZM8L6Q9DdIQBWTRhu1lnZN+qeI VLFEf8IWaMZU8OWa3OhYF1SxeUGqeXn2pYoBSq8AMiDj3eFS8uJE2fE5z1NTPVz2f/26i4NfvGlh 9C1FwdKXDyp/cIOfmGHTVsLMM2o9S6elVK9yk96sKYvgZSJIGT7S/7TBjOTVIeA26Jo6IG+xsiDS w/VXmLU8gBKDip0oB2QZGN6XbuQKtfoFSzLPre4dd+Kh2iOHLmH3YUuqwgBNSU8EGyf/6XOuBZEi 2v04cSuz/Z/jY1tAqiVmCvi0Zl7edtgy+cXqdhXnw6KU6XOP7LABzvaQ5yhpztu5mrDMsmzU3c20 x326qxtzqXbiGkUzwqpAhSzWcp0cf3fD94Hk2otL+1tvcxlMCqQXKTupUfPbBBKYJp5ln7gztQaj cxatOc92z5vUhSFdsEOyxbM+taIMUvrM3+aXNJ6LQwrXyv5YDuOccoziilqK3EwzRcIgo7QJszpn PJcF+Hbj0pnRnAsz80nEn7PiN85kkMCPUP+GIDXYH4yjFDKGZlg3xIRYKd/Ix/FX12A4xujpaPXd Qn93Iu4CA0n+5yCxm7NX2qxRz86ibM+aagXCq986LgDTZGInFlEVDNe4t22F1EmZiujwnPEXTvKN kB8MxJu7omu0QAWgsS2GMeUzEIuah2w/bB00+SG8tQnWBbw5N9WqUMdft/FNFuRAlurpvsekca17 7ylrGVuzpBi1Oiw1SZidqcqYdaGscUKnOOOUpauw1e0CKgE/tVNzrAJoOjn4PSiMBHmZIhSjWpz7 ItYoAKoIfTXQ/t8DqcA+oRzZvU84VR1+OZ309WmHQzHh0wdk0l5XZjGg+et3f91PLalIZHxFGQGE Z00v5cuj4SnXCm2nCi8MOgYsBU7id4PqpC7XFg+JX/uZHQJgT8oyoc1ZPejAccmoJA29LVGDbXfV gXt70HRxJi2VbTnyMf4Rlf2nVBJ1pVBvVP34O+xEzzd1D5TLZKK/fVtBG1bgr9E0srMYALR/w3bA PDFVNUwTbk+VhDlAC/4N16098ipucyRYug9+VonKvQP1HxTT5I1097hmBNi0oV2ESkGpPJ8FRAEn BzDWvnKLFjTmDlC7jdpL4eUhzg0KZW5kc3RyZWFtDWVuZG9iag0xMTMgMCBvYmoNPDwvQ29udGVu dHNbMTE0IDAgUiAxMTUgMCBSIDExNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0v TWVkaWFCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwv Rm9udDw8LzIyNjU5MjYzLWQ1NWYtNGNhOS05YmRlLWJlMjk1MWMyN2Q0MyAyNTYgMCBSLzg0NjBl ODkzLTdhYWEtNDI5OS1hMjZmLWUxMjU5ZmU3OGE3MiAyNTMgMCBSPj4vUHJvY1NldFsvUERGL1Rl eHRdPj4vUm90YXRlIDAvVHlwZS9QYWdlPj4NZW5kb2JqDTExNCAwIG9iag08PC9GaWx0ZXIvRmxh dGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K8zyk1QWef7E+DQplbmRzdHJlYW0NZW5kb2JqDTEx NSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K0zg9vnSpSbyc DQplbmRzdHJlYW0NZW5kb2JqDTExNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro IDE5NjE+PnN0cmVhbQ0K3LnfEqCZHR0AK5oYHjl5S2y+LLS/2lEaL5djwv7/bH+CH/Ij76isHG1p lYXnObVRaGk/54aMwDO8bdo0JvMYNbd2qnKRE0nRAaghpFPSvsFOPCpSwRNppBbsjlyuBVnEzZT9 itdDY4Cs/sKdRY8x4n327grvr82GC+EVedOzpCmS1SQt3uFGbz+aBOLsGNL2eMTLP1ZM3AKp0g6U T3k+qJhLRI6sm/HqsMxttnb6jZq3zvKZjnLxCqCDPg2ftfIPcWHRPGn7srLbJPUMxsKok7YWKqHt fSErGp9Ewqed84lQjtGvHEOgO5kMkp3QRWyxLOrhz4JmMFrhDOqQo0fN31FfWtTVyUTA/lV+mVwu rmcFvYW2EuHT8agCAMGTcPZsiJf2/WPOBX9aeq02tIs0IhZ46s2w9wYJwwkVCF9Jc+3RaewE4zY8 baxBNJSOzW9ZXUezZ/cCisjipGJJEVTIes80FvFMiBZrWsd9eWv8yEcg4bQChYX3zh7TS4SM0dR6 rMXMutjmPpNDQuUAtaIH3/ciBcFTFiJPsCjWrlQKZCMqIbHl4IHMk/ghrhCARU1j0CezXEyyIh7z oPyT9fthMJGDFH50nef1CF/0oOeXaaGMFtlbNbJ6lOIhFoPQtI9na6rUs5TWr6kEhOUAqYxNulGD tXVOKfh1g3tHv/n6Eo24Gb+EHz5cB/SvmQBv/unT05yUJ+BHgjCz0dRuxGd2jcwoBhyrvKjvBHqZ XWd2wEoukRKYW/9Iz8+X3TwA1fWX1W9MF4ZN4uRmH1uz0slSAm0wk8us9UwS8/hrwXlui/TOA5VV cZPHDj6uLm6NkmyBCsEZZvtUsfxXyCJ0M0Nmw+/clGabMHgD0Mj+yC9NAxvqiO8ek9gARKReqNtX ti0XuAm6tjGynuu7qgRp1jhaNZpkhTpF3edej645EkUqpIoA9gfemj3gybxjX+c2CwTUKb5gkJnW XzSlOiKkEaNmH0xqHTTAeLCtkJYEqa3yPR8OQlmU2yKjLOoAxht28QlSEk6aLqIgF8Bh2EbFkab2 +f3wIvL2UDgKGMM3wWD03LM17qMNVPvnabioxOWsIBEnrnnDYWoMH7FfttBlOr0Kl0he4LP+TAGX Ce46j+eQ3boA4xnD8D7JvLschJLFnGWhX5FFo+aEEx3s7HAPfCbiubOnWNGsno26P4yDGlwS3n2S +DF3GUdgTA3C5EK/PvUV8o3OfpfT6u8J9PLkPPagjHbhAKbJO0Cjs9dO4SPYsqG5JsUFdGmGWy/r MoIT/osM6016xtIJeviMmz2u4i+k59QF4rgfuaMkg0lTb2IW4/FJ1v4UHJ/LiLEIvMe4UvpCjTbD hzCi6KOLFMKbaTJAP878TNpmaEf8Z1axVPU3jaHhvsou6D6JmfM1nsC3jIdeRAOgFs7SejzQRBV1 4CssdUSPIv5CoO1rChwUFPAZ1YsU4KSkCqnFvfWRDvA2xYDDcGFTpsPa5Ro3BRtmPe53yi4ix0AE fzzLXs+DwGcryQQrZTOarx3fxpjMBC/XabyaIuf9YGTse3N7+ZxZsbLlYb5/6nL+DVY42RN5mye3 eWFaB+P00fYNbpVEo0/kBD/Ldb4B8YOouv5wuAJU3x4LTU9Y858YEWphrWhZ3SWov6NDMaASU4dh KDLaURWgP2kZpCGRWhK9pdPvZqX9uabXvY0mLzGCPS9+cqlJ0xranqP9mHa2rrt+8Hz+WVVGRFPO hlStHEDWWRIRBsrykcPVAqeigkkUiO219e1V5jG3ZQsZDvqKwMANvigLY2uXjeXFb9J6TkVlkgNS pQMw0a1srto3Rbs8uFWhlsjtvlGVzCqE5rB9J8qZlbdsr7rzprHMXuK8NcwaPa9Y6hYsQcCh8jJX DDRtPqSK2kM0UZfGQXRPjeNFKyKbHNZn57veHK4YHN0VOxrWQfCT1qDufyKSFcdAQd6D/NNnWXy0 NKC/QqdVWTquD1Deu9XmI+90gwtckdWPIx+9gimu+rj0ppEKPrNu1M5IZox3yXgwZlqam63OVOuV LvOI+I2bxypAJvMRsHpUqq+k0yGr+BDpXCzwmFahQkd+xwt8S16/5zzUK+FfupswJS7yPNkXu2G4 /PntWtgLbVRtNg7hn9qTsWb5lOlIPwpr3pEwUAKastwoVRLO3KWzcc0jKMkd6+CTYfnU+0Z29IiD x002ozxCmM2ltqC/i/aG/vhXejbMQUSpLD/CJ+54bg9UH5e1bKGONZsHrYpov+Gx2+dqALusyyVf 84k/SvRt1glFp5AVYb4Het1XspuyaxUKyKI01yXby5lLv4h3uBZkBRF+PcVI55WZZwNG4dXGnKZ9 lMs+Kkmj46yi8mHJmz+Xf4StUSei5i4hOcGkDIJMouoliLDUsqvCFRIxETIrSx8x3ZnMQ6CHFEvo Mov7jjVJYo6jfo60pi6hFQfaZj0oeB0ILICNmviVfjN5uoaXq18y5ie/zzZ+9gtAUzwAKhO2ydQG UAsA0JHJlCvEhGuivv0nNQCzSweKXZ/KP21Bk7BKjqBfQJcjD3lp9n3C/5mbiNbU2QC625TvApi+ 2Wlg3WGd8U6lGFneZIq+5NbnL4/bdrkxytbXfZRaBuZI2kOn1ZINCmVuZHN0cmVhbQ1lbmRvYmoN MTE3IDAgb2JqDTw8L0NvbnRlbnRzWzExOCAwIFIgMTE5IDAgUiAxMjAgMCBSXS9Dcm9wQm94WzAu MCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAy MzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC80NjcwNzAxNS02MmNlLTQ2NWUtOTg3ZC1jOWQ4MDkw NTMzMTEgMjU2IDAgUi82ZmU5N2ZlNi0yOGRjLTRlZDMtOWNiNS1hMmJlNmQ3NDk0ODQgMjUzIDAg Uj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag0xMTgg MCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCnslmtfCT+XiTA0K ZW5kc3RyZWFtDWVuZG9iag0xMTkgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5 Pj5zdHJlYW0NCrcbMBEchI4Q+Q0KZW5kc3RyZWFtDWVuZG9iag0xMjAgMCBvYmoNPDwvRmlsdGVy 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 vSWgfJYMhiC1cZgcs8jtDSeDfAhIm6Z0cq1gUNc1N0mZ0JY6kkYMNumFK1XRL4KYHmUe61IZEX+5 uigIa34UgTqPsV0iYZkvGR/X+BCMofHgTlA4ApyctuHB2JR6GsxrXaDD8IyGoH2fplImko0GzaOx 87ple9ivt9oAIT0rH47IRds1v7HsFzG8vQIKGYS1HnPhqhBrsiOG0/IVAsQRQMG7FqETWVUk22Be Ph9xtfbgDtG4lCZJwRmped6+ig4CTHwwDQplbmRzdHJlYW0NZW5kb2JqDTEyMSAwIG9iag08PC9D b250ZW50c1sxMjIgMCBSIDEyMyAwIFIgMTI0IDAgUl0vQ3JvcEJveFswLjAgMC4wIDU5NS4wIDg0 Mi4wXS9NZWRpYUJveFswLjAgMC4wIDU5NS4wIDg0Mi4wXS9QYXJlbnQgMjMxIDAgUi9SZXNvdXJj ZXM8PC9Gb250PDwvMWUzY2ZmMWQtMzI0OS00OTVjLWExYzItMjEyNTNjNWMzZmVmIDI1MyAwIFIv ZmY4NjQ4OWYtNWQ1Yi00YjNiLWI0ZjQtOWQzNTU3NGViOTMyIDI1NiAwIFI+Pi9Qcm9jU2V0Wy9Q REYvVGV4dF0+Pi9Sb3RhdGUgMC9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTIyIDAgb2JqDTw8L0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQo6VBYPQSaMxCkNCmVuZHN0cmVhbQ1lbmRv YmoNMTIzIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQqh1rdF /4cVdSENCmVuZHN0cmVhbQ1lbmRvYmoNMTI0IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggMTk4OD4+c3RyZWFtDQpYtIv1lVr8HVZiSWTiW24QomkW9PtJ8Yg9SNSQMYMy7U7zng/Y whQfmWQOpdBVXjXp8fWRuxJI24Gkazm9RfcijrIEG2QJbjTdtqEIIlgd1cc0DAYygsBpyRcUKus2 Um2S82ks+JyiLdtE5epR8r/0f8uSNCqQBVrd0dfm4zOlF8/hO1fjbkXctAHgl4HJVtisJ6+SIcpz v1sIMaolTKjonIyA82dGLhv8Q4oJl9mv0EmiT/IKxEYzKf3uAlxRSRC/UoZlqD8dl7LjpXkgsiPz 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 IDAgUiAxMjcgMCBSIDEyOCAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vTWVkaWFC b3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwvRm9udDw8 LzQ1YTM2Y2U0LTk5ODAtNDQ5Yy04OGRkLTg4NTVmODZjOWNiNSAyNTYgMCBSL2MzOGFlNGMyLWVk YmMtNDY0Mi1iZTFiLTk4OGY5ZWFiNmFhYyAyNTMgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4v Um90YXRlIDAvVHlwZS9QYWdlPj4NZW5kb2JqDTEyNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNv ZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KsA44CQaHQQMTDQplbmRzdHJlYW0NZW5kb2JqDTEyNyAwIG9i ag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K2xZ5R87jOgUpDQplbmRz dHJlYW0NZW5kb2JqDTEyOCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIwMDA+ PnN0cmVhbQ0KArlgTkxvmOBRSUqh1sNZkYy5cw81BfUUwuasu7Jd+0B58V06xKQ+5m4J8DbM9GMR pqHY6y+i5ZoKrNaZ15IKzuIrgBWJSBFCyKiNHiy6IriH3G7iMSuEGzRsPQLpNqnxsshDN5/blRX1 cnpu/itaF/7AvQmTl6GVwMn9u2du4RTfbXVDcI5Y0VElba9Ro+JFALSrKwMrBhucmUtlxd41Hwgz Ql/IroT/u7wu9Mba1Zt6PXXGpXjSND+o+U2mH+J3kmtFbiu1zTPHDMJho8O0YHyTP2dnpSHTjaY2 p3pnb7AbCF1QOhBROSY7i9bBSsVrvooizcZpeIxJPhVmb7tOHinlDUbgXErkJLIZITJaOreqa6eR xmbbQyBOYDDxmii631e79mj3/7VS9rxJvRSooOI2qZLJ/l9YM5ta+YwfyAsaw+fThhB0WkoUIzbL IfWu4NhyEMe/wRbtVurBd19ACp40y9hW2Mm0a7oZZz/E10974zUkqjdJ09ChlVZzOLCR7Xz+6xZt RJMkjtJakHKA2ftze7c0j/CTUz38G7OMpU8Lmdbz+1uIKMutzdlEo/Hj+/irIA5BX8bk5iLvDlIa XVDNd0+iTeU3k5Js8WMWQXesC3LDdV2BadKX4DcJMi5wTMnAvrSvxob+ugAJF0Gefwym87g3Hx54 swiHBhS48Oi9Hthx6IaEgUscVMtVS8tXlZGkreWO484v7l8RHz2vt7RVFyZe95ayxgzBuc+8T/Rq XalqFk6xt3P4OxoJv+sEaSYu2jy9RkJqCg1SgrNlEK4bSVEOtsbRGXqN1T1WZIiUmilR1zLwXXmy l2IL5a7eSJBahQkVigvkC1v8wpNEnd0M6d3C/amvwScz/8JVRcggjllrZWIWYrvc21lqc/C85IL6 bNinOYBw4OkePFOdgNr5qSDwyxsqNR09hFVRSK6sk/C76ZQ/QNwkPqvirXGqFFU822wzGg/ejHn+ ac9EHwGKsRiy7i4I2wx6eT0dpv80UfPUWerHizajAsUVi7HzxnZKmKdQ1Q1+UevDJIBqZyHjVq/L BoehQ/cy0J99GE0XDr0yP47keAioaEraA3tRNBxONL4eUQVqctXD/oAMZIQXMEONR4lpc85JnuBX +LgNhvBZVExG9HjgL8Ua1n/NspraodgwKi81OPO3zXV/eTmqic2ZjNN6wXpwsryof1Km2mnH1Xhv ncIgqKEZzA+QmxU/trqPX616C0sfZ9M8nkrxbuP79SQ90YrammVvj4CECAtQTgzEKAvjJiflkPHJ iSVdRiWrgLnEmqQsDiOZ5eVp0cpYbhUs4RcGhQnOky9bwxzAVvh5H0VsXZPu2/RwvnP1YAZVgZbO yGBpIYPVmo2SRlfu160/GoysJVYW/y3nWb33deN1cZr/jVqSPIGx74YVh2hFk7hs4FhunaJX9vJv 7OytjMEu3sy3ZZpRLacXXBy4hZuGYSu2u1wSrDSJ42XwhjjYBZQqziToMCaR0S/f640gCkT7Jssa i6y0v4CWIQILuqesgOZL5Vs3ItJa1OUyfWM4sZ+qWAXDSZ8s/f0scyXq4EJiQFMQyM2NeyMkHzBo ofLFjhVvPYLtXH0dI1rhGzK+BrVNV0J8ZrOKAs6E80JWo+sjswsUSwiMsY/Z+ovQoHPaUJPlFfJL oF2jnfZolEoyv04/7QqkPoTrfIOtusYq808IuYYFqWdKH/CCT54lNKTnYZ8a7YphLlFASywdAq5z bcHcPTC7X3e4SzeLdZWa4JGka4JQxX6FR/aJk4DR18ltdzaYhHZhKtMdTjVHrHThHaY1cSIWApHX /jbz8VLK6n4eTWzOWeGjVB/FcXO5hVPa1KhsA2lKeMrmbMpUeSNElDOcd6nCPP6c+Zxhnpd7MYFI 6p6ORSnld0OgbbmlttGdzplaU29WW5e1bz/2v7ddrNaDRF9PRBUflgZMbkCWqM2SE5fbV7DX1fDK KCaUwhWxE1qkMYJDx3JZIdXGo+7Cg2VFoE8BJH/I/ktC3zXkB8PA+M7ibrlFJz7NhAYqFcnXoAP0 3h3sZkCCODG6MqsztXaTVygUlKjhQqddnsag672p3PYTMGVIgtQGWtRzsWDaFncKkB6mYx/TWDmF qzYoSl3N/tYfD6/3SCYNZrdumJIf7j9Fnx4gZiYn1hwXWWz/wga5i1pOv1VcrMC2b7k4nf6U2ATK 8YTdA9fVg7zZTvhJCmdTXYCcmnjZFiJl/o3EwCzueCkPtMcLdJ6OiIKoQR4RspJcljIeMKYc/veB djwciHFtxStWLkTt0WSgWWzXCfPY+oHBTwKeYUUSjTMotWAVfVAgFWBLiS/9P6nhDB46FlPanj2H G5bkphdT0zF8Py5//EtfWz0TUrQuuNs7lzTYVgixh//zLU1mvVXLe0J4aArYw0kXMAo3Jlqq6Z4i qCrzWrag/Lxgo50I0Zg4LQUUyymVNl1GpOBrNU+4HJsW8E8iOw09d+4tcLWf6Pa1q/8ufxw6SVeI fbAsToHAnvB4ehzlHm5H8KE472fnQgC3hYPeZAPZFjqn9qsXED76OcT8sQQ3XlSptrGDUZLAhwap zBo9FIktcjbvcLONLmY/XUBglTU+GLOVoBw0Au5V6rfitkvebiGqoXscsT2s7n9bacdEzVM0QQyY lbdIq8XRCWBO5flA7hQNCmVuZHN0cmVhbQ1lbmRvYmoNMTI5IDAgb2JqDTw8L0NvbnRlbnRzWzEz MCAwIFIgMTMxIDAgUiAxMzIgMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlh Qm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8 PC81YTBjYTE2YS1iNmRkLTQ5NmYtYWFkZi04MmVlYWVmMTdmODQgMjU2IDAgUi9mYzUxZDk3NC0x MGUyLTQ2MDgtOGIxNy1kODkzYTY4ZGM3MmIgMjUzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+ L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag0xMzAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCA5Pj5zdHJlYW0NCn0eHwTHJ4J57Q0KZW5kc3RyZWFtDWVuZG9iag0xMzEgMCBv YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCjI61/pz0s6yXw0KZW5k c3RyZWFtDWVuZG9iag0xMzIgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTg0 Pj5zdHJlYW0NCsTu2l4SAGDTveFWzx0IilzefGbR1iwIy9bZL9adLsHP6XkbzhHVEk2lwj6hOB2v iNC4Znk3lLShXpZbq/Dm98wUM3rq/kIswjeMoyNOjrU0z3c7Tdj9jaOhE+lrK9/nIsssTsuD4Kd4 p+pjQliOqpiPxSt2yAdrJbjUXHAp7v8JVnyP5k0CtjFRqqCttMrxwH4Vnmhc5zhf9ZjgDKtJmLbj qXbrBmG0L2T6iyMu1n7leOWc+qmtSNqgy4cmV2dR8Bwy+8MKjl9+/6ruIU7BKVCXtWVSVvqHErt5 DR4PTxI9Qy7Lg12E6foqNVH3WqxWeeuDAqkVX5Pv2hBmD0Iz0zFU3mI3XlRUvo7j3oKkqMG0gr6/ dHFY1DyUHsyyeOzieYn+EgQ+tE7n1LtmFCYIghmCRsNKVwtCqneH6hOcO/sjBukCTGapIv9y3pPq LSL0kaj3Iv9eGzMFcoeKbH+4i1Hwk6nKKU4cCO5fsgpjtnutykfFxjRo3pHXjfYMFDwD7GIVTP8l aXKnFfqur1dwRd2uIb5O0F1feAcWJBiEQwqptobVMSLHKNMyB1kIft8Sfy7QNSeSTjiwJUfHZKRb IOul6ddYR6vuKb9N8LXQNVK47kJt/Lk20bF0b8IyEb7xdawB2ynu8kWf6lfsfXYa7AAEM/hIXsW/ rHRFcLOOt9up7KbFXqbrFmYjbg1V3wS1bLNthsO/uihr5PsQXB53XfS2NLv7BuUdIDpapZOJt4F1 73FzEoEThb11Ki6zXPMXfWqv8oyMh6vaVVFM29mBK74mUo2LSGZJPbqYM9gbwMkz5JpkEqMquP6D HEEwxPSDys/IVJt2ivtjCHyDZteyl5EECSMsCq2060PBloXTdARR4Ap7uXvq1Q4siRu5Vo/Mqk0x gXr6VCDMYarIleRLVDZuDZtwjid5KQehKWPPToSBeu+Sw0GnVD5pMpRsOO6cURx8Kskzx5+EoFmV NrdNBZq7wpTeM2mIsqEljYpKA9hzncK4ZYWmOMPqLw9qr/mIyZeHf65LxIqo4GTLOSMD4V3qMt3g PeVRbSMlFv71vICP7mmSrJOSB0vNs8r5+HoGUqKmmhKJOtpQT5Be4KfYHcUrj6YZuzcCN9oIY8b6 iISEe47fkmleddtCUG4sXDioSH11kJlg2puuY9d3xnFTbWQZDYTyJsZT9Hr+o6J8Xjers+XguUOK p5cUm2zq0NIGbhD5sgA4hdvboUz7qILAmksE5gbesRTiAhKDGALjYnc+AMJj/e+/iWeSblqxjKVT FsxsTuR4caRhB4uakJS1SY+4pQ6AtvJf4oFiuO0fsoJ4xsXFnbflo79l8iJ+Suqv6GRjLOU0UeZ2 U/Z9Zyl5PIPp0P0lvRm+YVm4E4UelUg1ZoZBd+dW8RBwWnR/KPLY/TW4dKZ8FH7K4gc9C4rTHIEW u4wuwufhWixPvf1F3W+UtZFKkDkGyRr8ewQlT1TpqTXZwPFzfpgaswmNJI6mFNExP16Ai5e2I4zg S+E5DVc79ZN7bd4X5YrvnC/0FAaMQHRJrxs2K0ot/LmuiH4PTYzLa5+GTZg+ZahubeLiSls2p1+r fRsW+e2P3PC3jAHQUInnvPlOIOtC25yVKXL785HEt3hSKatj7AcbS7Rmt4g8cDmp4wPUpQniUjir e+JLd7TmSK/xnTxCXBcocIZXxsXjLfb9ZkXW+Csy9GywXuwW33oK8WoCSVsejMmBMdADE8cJV8hz sfpv7zSqhKGPqW1t0hoEgqRfZ9ixTHFIp6fIvm0a8ytiVsunW9prJEu4pqU2e6WD0hgUAkkFlf+k LX9Xn5510UTKMFfjfVN7fPa9aYMdYurgFOPgfE1VYNS3gI2dqgfr5XHfEdaguXa9fzQSukE0wP/B P+aBo/eCXOYrXTdOfQ966mk79FVmSVGx96/q39x/dkejS2yYczjfwmslQSQBhCnqQHWOS9LMauKs ZwpxllAk4+FXAbW7opChepDaB7Mivd8KFtjsnJ1bi2dWTGmHCX+D9IO2ijupOoWelLmrVB5B4vsv UXSowd1uPBi6X1tMK0Mg3OB2XcqYado+u89/tjD6sYWPyW8aYBX8t3nTvivi+HQUm0DQvcFdpslD 0UPb5Bhj44J04BpP9DusDyGdhScuEfCfGLYPwd7U3TY62dG0LmGVGVwB5rxv2BDzN80xGioR5v6J EuOZco5yQyVJvAFgwASDPxcb3KQgm3Qi9+AYzfJmny82j7cFSxxsRo1ja07GGG4+Ub42nDgj+Ysk HvRWjpop4GUeYcjDD4YTvdx8/EGtf0WrBSxQ7f94CZYsQ4oHp868PVBF+QjFHobbzfivSMCkVQzM Fwj5a3qDu+1sUvRnquV49qn73Lnw2PSFF1AHuy1Bb1bHTDb3ERGgiwlNu8PcTUMulQGMElSeEdW/ yl2apU5HpL4sdwjDOcPUGLixzeXGkc0hHBj3OYKwyXGxM1A5yYql2CMoci7ptAT6hPiUIscUSkpg kEWP2vQH9S4osnC4YbEpwBp5nPRFZOiowGblk4Utsj9Kd2bG7MAhyBbjNAy2nSYXFa2Dniqzm+Qb xMvoXWlVMlmhi4RYHDrhObyw07pw0v2T4sqvihSF7vFXNwe10kyf5mNxodoSbLGW2KnW8/LGZf0N CmVuZHN0cmVhbQ1lbmRvYmoNMTMzIDAgb2JqDTw8L0NvbnRlbnRzWzEzNCAwIFIgMTM1IDAgUiAx MzYgMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1 LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC8xZGJkNjBhNS02MGRm LTQ1YjktOTc2Mi1kMDY1MGM4MmM3YjMgMjU2IDAgUi9iZDZhMWJjNC1hOGM1LTRiYjktODcyOS0z ZGY1MGU4NmVkYjkgMjUzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUv UGFnZT4+DWVuZG9iag0xMzQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5z dHJlYW0NClJgaSd+AwxBKw0KZW5kc3RyZWFtDWVuZG9iag0xMzUgMCBvYmoNPDwvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCi0wWYmNKypydw0KZW5kc3RyZWFtDWVuZG9iag0x MzYgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTc1Pj5zdHJlYW0NCrgGTHKr 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 bJZwM3Slf2/pHQ5JkDnxTRGsAQ5nH+s7pGyGFvAm0V5fjAsnkjwSriSqb0+E1piN47hJME4N5ne8 n5InI7RDTarpWU8A9gIoEoEj9W3XYRjOCA6zSsg88uo4bJbMeuRq2xc0XCWM9UyJy678Pm7OKt/G bR8hnyoh2hoBUp6ToLBhlX8Y8LQpY14b5RkNHhcue2cNCmVuZHN0cmVhbQ1lbmRvYmoNMTM3IDAg b2JqDTw8L0NvbnRlbnRzWzEzOCAwIFIgMTM5IDAgUiAxNDAgMCBSXS9Dcm9wQm94WzAuMCAwLjAg NTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL1BhcmVudCAyMzEgMCBS L1Jlc291cmNlczw8L0ZvbnQ8PC8zMGJkOTEzMC0xN2M5LTRjODEtYTk1NC1kOGJkNThjODkwMjcg MjU2IDAgUi85NzgxMjhjYi04NjhjLTRiZWItYTI3Yi0wMWY4NjVhNzQ3YTAgMjUzIDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+DWVuZG9iag0xMzggMCBvYmoN PDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCh2ZJZgYRbEXTw0KZW5kc3Ry ZWFtDWVuZG9iag0xMzkgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJl YW0NCvAU9UZ1as3tEw0KZW5kc3RyZWFtDWVuZG9iag0xNDAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCAxOTc2Pj5zdHJlYW0NCpaNe7ufLtrBPJkCPA5RXV8BAbQTEmkXj77di6lZ t0hIPV67OHp1kWighAYliDI5ZP4boh4RLNdsoDWs8WHHHCh/bTx7NBIixBMQniCvSSDwgoaeWqym OAEzzNccNncy5nJZCFFu+zVLl4JxGJfcv/w9e/YxpBu6aTgwpORd2+bKzejAB1ZuY/LJu12kuxiM NOY7Hg/f0p4EVCZC4Iw1rW2/nfYW8kGsLmWk9dD+fgEWTr5Id70KURYn4hKRC+Yliy0KEAoGLUH3 YsWm04zKPxrEmtuAwYyNBDsCFuJqVyVnrawZ1oEOb8IlrMEd9VC2ElpNIb6+DUZCrkx7T1YFS6OU H4w+O+rzofTNNO5POgDwUkNFQveQTMBLnTCHlenZX+p7vSeCFThxUDGpGDRxyuPuTNDAEQblnMlQ oWNTbpssP3z+R01rqGBaxHvJwVv7GRgGNwNA/p/+o5ORUxS/P3E5o5D1m+5WUGgOYmF25Op3O7Zj r/Yoi5dNn2wKpX8UskkyBkYtwP/DJ2xcv9iWc/nlkjFhCHIufg3iw3v/+jQSsoQzVtZUk/DySG9v sg0a0XIBVefVD6i9ELQo1JIctat4a2GA5CuEKmJth44poMDd8/nGn+cD5jfZSJEiCxBGMFphxZGt ezVGc+sZ/i8UP+DNDLNdyThKfNtWfLVzvbOY7XJVqThiQU/lJk14Dq8HBUQtNFcn3AqcnXf0ZKmD qmZBrbBj/v68XZyWyTlCTG7eige9JhFgus70nyFasFpcgJ5Ujk6VulKpYoFim4as7DB6LQjwZxA1 2hN8QgfR8BGWYWkWMCXGl4H+DNB+4kllhnbs6z2aDzwj19tiYSk+1WTjyJ6qdakDqzCYDTFdEt9C OjAgEF3MQ7cBYdwKTVbTKc9qFQ4KMNoXESZ1lyK1su8/m22xHto0bhGP5BfP17giShY6W/CCqsJY WAbLCDVhVpn7/pmp+IPChxLIAnMCC3nR0P+5U36vARxStPrzmcKacjB9uJxRLfFYOWZSzVo6P9Mk kzA0RYbW+z5naNP9zy1B0aBpGnHDFwCQQB1sQ+WoWVNMwAq7R8z0DI85Sd7WyHAJMsYZ2z4ZVIRC P3ASfLLMJd2GDHSqHaSom347Pr+FzdfIBsEslVu9uhVY7JyvCsx3psh723+muzYS/i6ykvinyTUn 7kZ7otJRXkd30Dp1l+MxrWovZ9UZCQln5BY7QQCueO3sPLuBrT5HVm2moDmnlxTaiSRPbrmOOc/G v7Jew7E0jsldCLlpVDVkM8THianlLDa/hPRgsTF9W7DHs2pq85iMt0P76XINMMW+23C+2K+xW3xb yXQxt0aqqwtTg997yoBpww2FYUrDH+/ahSiHkrxfQCdKY31uoWqfLDFBKOQ8hN3y1cZq1aY9PUdZ 6AUnvOzIvp+WIDrl6g0BUkQLTKn8LG2zeSJPP0S0xI00Dl1sm0QmPQQ0C3X3gFGupK6o4bF3WLSn zDyk/HXcTqTsBhxC0ZX9lKQM3WkaWCBx3cX7lgbbVA6yFwzZNOKIwR5R84LgpE0EfjsddKPWlmCp ZCAwzLpP4pvoE6xRjeWUuV2i4BEVI5bzMHrGu/NPeb7JVOrAuf9p1kRizh3t5qFPzWlgm1EisWPS jIO4Rh9s656UisPFXExdw+96y4N3IIWk/hr7e6rg1UzZAYltKHCQNBJXTqQEFQpaN/+hyymq1LSY 6sbha59GXSOzv3EUI9lE//Lxd01ZgbtVCC1eg1GEXH0SL2jRYXtXolEOTdruKNKyDS1JjPGH2kK9 dbX9LTO/ZUMcihxNDr0qcXDxUM+8kqLI8/lMACzsnfQqMWsK24tz6Jdy9B+XyPiQ5eS2R65n05Yn PsLaoTcJo9abL+9xKtVMd8eBITax/EJ4C5pRZkbZBKGdCVSROOZXji5fH9bobFCksn7sBoFtJuGZ QthWTXAPz6vbjgBrJUjzJ5OUQJ+aV7or7WhTVmMA3cw/vQmekMay1ENNgq8UGI9Ox1xHKsaW2Pwr Ls4wQT0gFQP80DXYaY7PIPMYJ0QPW6VNk11br6teU1ANOD63rRFpTyorItNW2fFD3fGKLeb1OsZ9 OU/jHGmyufwu/Dtx7fz9poldtYJBUga2LLRjPZhPHyix8LHgW+1LVCGSMbH4ir2OX+TPXSXkmPth kV8XiTHOk/GbvF3p5ho1lGsqNCEInjmKU6pxLyqc/p9utDqVIVV+TUMy+d7jvlQ0OhiN1LtVBznS zKHHU2jLQj/WMtYm3Ez7ZkFsqHKtLqSW53PWy1XbjXgxhr7dtNLyqpbxajU0JzSBj1Wm7Pv0cmyp fwu/KnuWmrDpjBka2cH73ufXPrtNi1fA6xAQgcR5ZlTAgFljds+EVfg3c3xvfNJp5pXhZkmaVEJP onOCFlUL+fOGAk5a9R5qn563/ajqvtz1gUGpWJxVpejoA/dO9ZEW4ZWaJLiZek0bKUKur4B4I6SV FzrkPTPgINd+TxE+Z4ts4SG4TW6DVyMoQxeRRdidKriLWjviWTXwiOt9cZgzG3BUTHcH/HLrxkfq 9oG/jOA/ErSKHjTJFUP+UcDXmZJLXHhC+jQG9c4Oiir5lsqdeNxMeDWA9puiQuqe/rNEW3+GzZLl I3BMIZC+QoR5DQplbmRzdHJlYW0NZW5kb2JqDTE0MSAwIG9iag08PC9Db250ZW50c1sxNDIgMCBS IDE0MyAwIFIgMTQ0IDAgUl0vQ3JvcEJveFswLjAgMC4wIDU5NS4wIDg0Mi4wXS9NZWRpYUJveFsw LjAgMC4wIDU5NS4wIDg0Mi4wXS9QYXJlbnQgMjMxIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvZDUz MTlmZjMtZWQzZS00YTg2LThjODktMzdjMGQwYTVjMDEwIDI1NiAwIFIvZWNlN2JlODQtY2M1Yi00 ZjI3LTkwZDQtMzk1MmYzOTI4NDdjIDI1MyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0+Pi9Sb3Rh dGUgMC9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTQyIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggOT4+c3RyZWFtDQpbCBwFy6J6lKoNCmVuZHN0cmVhbQ1lbmRvYmoNMTQzIDAgb2JqDTw8 L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOT4+c3RyZWFtDQol/rHedbBEkE4NCmVuZHN0cmVh bQ1lbmRvYmoNMTQ0IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTk5MT4+c3Ry ZWFtDQqofd750/7TzATjI9zZnl+KOluYfEq7JaVMxI66SLOYyAgZHNSlOO9ec6VIxyCQlfdohwnd eMGbhqh3QJry0GjDEw2Ls22I5rmxgGtgvb7sR7lxzwGHJT6OEWlH1VZxCfy53bFGNGlU4A5Lzc6T u2Fz7QcNIoWkLypsKs6brHj0pu1AXw3UPYvm4W0CiJZ1hMcdzJ1ALrhcuvZzYlP0/gxDcKMlTjyu 3vAiE1U1vYzeVityAxxuciBx8kEOOTKRlSIU34BqBB5Z8q7vggpW7k6T3A/EWsXqp3j9RRrfKMXX PlwG8VhyT7WApz00+QfhO8irFusHr/TraHLDgi9x+u4n+AA7bwHIH3p16CozDTueJo/T23ZoMlQp OfbfRN/9PNFX9eNIXSzsQtEAEASv+JzDmnlheO1df17QWYb/D2nFsNlpOPcr/QAJ6O7FYAf1jjC8 tfUrsKKZo09M5wweIr+G1bxmsl8fFqZpC6cvU6OHw3ZEVvVTfZABIPMGaGRMRy4BTZBz8nYKxJbv kY5K9r+uHvvaa8HyQu0gtxF5FFsL/EJKTGjJssNW9zx1c/4fodv8FovpwtOHWVq7bhX2/EGpiCds SybmqK/wbJqMuTw+V+U4jdvMLblQuC7OyZUXYvuCZcS+wHKUHvRTmQTLcny8goId9ernEtdt9E9h Eqye5b4pX0N1k8nJY8sK1C2niWtPmzDOM7KqD29gYGbcj1fyHqLdUqU9GYFx0uU2UxdqP8ef4/9E v/vv3ESEVk+02Hv6Ck6asZH/dX46amZqx3k2DZGNM48JrnrZLpQyUT6bnYN5E5Emun91gB9p1yIF zgRYjHgHGe8OsZCRTuzRDbrPC7i7xnardq0jIA57tWXqmB2UU77glEFrv6JZKiqehKp1yMZGbG3Y 4a270cFkDao/ML9Mf0w1ddbFsPl/Yku6c9VjsI8/EyhMkaSE72oR/V+u5T/wkQBVHJbairvzRJ0j ZEdRgSZ/wXLxfmmRRwKXEdqxGm6pQ785zCNE//lBU/MDtZj9ub0Fh/14eTCdOCeijAemm1RGxAOz Ch+164jpmB4wR6sg4kptnqejNnqSFFd6b0cxb1pX26nv0WQSwW3+9RWe/rn1PUA3tqmUcKcq9hwb YYCF7Esl/5fNLKDDXxbU219SrNrX4whBgXdIvPhc2eWdr57XvNUFsyANaYI+kRKXBLfETROLMlN9 0rRl2eC0+6YDYbuzoRc1gg9il51KvnhcpiAQycIc3O0L5oYjI9qCCedclE7zq2B8l9cApqOCLwVO 46obNy1dxeiC9NcYEBJwz2TwnGYF0rZEHDxhNjYkUGeFxZ6AeGLGiRCyPA63sinFIvGEzn4j8eFS +XHiEDXVslSVtiM79HsIq/6doiWgF2D6lf87qRUTJX/+H91V38OSwIvXPYnUNpvoTjKgIfwz7Gbi SrDpj/H5yL4UUtdwyF25e4y5423lT7EaLMxxcmCK5mqo//h/Tq4ue4l04+e5F1gSootKigwDtYmc 2DrJQ87D/SjYrJc7tSdyKHh9+cT0jOEgfqhIXilHUdccFgGbi+3ijFaWM/zrWUnJrFt7qUkscmFx ZrH+CybWnjK6OUJjF7EG1LakXaGu0aTUeKEl1Jp/NVdhVgOUIpVGjR6njf0TrJk0IbQA9octBT6j iZw40LIAUIc2BMDbycrvP5S+0gs9229T15mAy68Ld4xuU0yENQJWNZBaPKlbH5oW4PQ7deUbJpYe g3DzVRBmateZ2gTYHktLY+nUAvYJjnMzmtSkb2v5hoUTeePGd/RK5IfyAnvhX3e19AtPK/tX8XNn B5zEds4H5E1VyL2mhIzrb88iu55oqRM6K4jRJOBuYYlivubDAyFQ9mE4LDdstii8m7lNy46mE+Fb Ove/2odK5mdAxfdUk7CWiOx6Kne/O9lfKh/bA0Maebm1DD09aWgD2mpPxCDtquuKglvxhKaDEXJt YMJiJRXGC4YMRtOsV7jl6yg8gPRhQzQVebanrk8lKFMONM0MsKkjKxdXN2Q6kiLYz7/HxN/a5+K3 7RIIxY4xDKuhPlOrspi0017/Wel1gbpFxVg4ZUtuDTn0Mq8hn4J00JVSFed9W0wqjr2PxzrXApgE Zkc7k11EQaHH0+nJjQLMsOiR7UrdUSBvsd2BmDND+RUdGgN6WMyZMIPImAMr2u4XVlBwR/ZMHJIk MXia1pCrYhKFJaeDOWRQaTuAG+EoCK4gbmoqLE/pq26w/RkjZyuHaQTprGiW4EX7mlRjjFTMLwj5 thAeauZvYFhJ6cQA1dQS6GBgU9UrETNshqJa6XuE571p1FomcrdlftNHiizAlr4jhlo5Y73aFZ/v fDHRGUU7/tWOYcD55ZBve8VFLMLC0hiDfcvpsTch1kXG+/AnQkVDH7fPACNB1Dh56azEtijh7zmb 4UEl/u8arhmaIuN2X3c/6cYAx6bS6eBK0W/bpat8nJ373nsVXxBo3Unns37BgJslvmPM6SxxFJuq QJnR9N6l96iGGfcfCFGB8GVbROdH6VYKTZ/qHEKwI/EjHREQVRooOov46u+5g5a4NnVvskUd6BHu veLbn/5/4Mto/G70tnwNChOmsxBt6wzwGOkZ/qO9n0c4HTovvIYb+3si2MmcEcrL7/od8anDjX9D zQ0KZW5kc3RyZWFtDWVuZG9iag0xNDUgMCBvYmoNPDwvQ29udGVudHNbMTQ2IDAgUiAxNDcgMCBS IDE0OCAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vTWVkaWFCb3hbMC4wIDAuMCA1 OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwvRm9udDw8LzEwY2I1ZGMyLTUy ZjYtNDM2Ni05NWEwLTE5N2ZhNjJmMzU5MCAyNTMgMCBSLzE3NTJjMzg3LWMzZDUtNDUwYS1hMDg4 LTUzOTUyMDY3NWQ3NiAyNTYgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vUm90YXRlIDAvVHlw ZS9QYWdlPj4NZW5kb2JqDTE0NiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+ PnN0cmVhbQ0KPdFK54He2kOSDQplbmRzdHJlYW0NZW5kb2JqDTE0NyAwIG9iag08PC9GaWx0ZXIv RmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K3sXFvqxjFMtvDQplbmRzdHJlYW0NZW5kb2Jq DTE0OCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5OTE+PnN0cmVhbQ0KeDyo 1fn+UkIHxb11ceppdQBDoI/gost+r1Ax9N0/2qEKaYCBMNRwwmZVeQpmHIR6ywX5C4XC5jS4Cfaz PxyLlVdAvQf8mjn67pa+I5Y5sdFwBxo6cWfDUz9cq91ORPPJGvf+HzlEHX1HrDNTYQgyxLErDaDe vLQsAlKJrnS/CpBfbpJ1eMG16W+iqu/Rb+aXI3+HqvaFjH6rLUQM628QHxg3caT9exNMU36el2Ag iu3noLg7fQfFjp+6pJOcMpxdXzSyeRPN9hvgrvCG0q4M1aR2DSR+ni1z7H9Y1K7HHlPI84qNl6La q9d8GD4T8r1HAPjY2D03z4lf7ZItwEpuJirBgXw5WKqBHLaBC9/6jrJ91J0GsRbfvj08t4BJnOlH j5XvGB5Fbv8r0OzYHgh/7/zY59HAVqEUgTh7V2x40k1A4sXWWT93BYbe7HbbzZKcywxO+oyTLqh8 RtRE4ihuvkcIG6BzEWLdqVlfaIorOO2h18vmFW5TxS7KvmUNkJFle4S56ubmK+Fr+WeRAd73QARj /aJ/UaigQHFncrFE6gkql94bXf+pVpP5BP0S9sZTVnzsNoy9bBFsVGv4/qqyjdj8oCox30+MBY8G bjEabrdvffjvejzfjv+FgJ3rE+rj/OUmxSF9NQroig8tmoci/IOq2eFIk4Fpqj6ywM4uOVm962GA YVbKj3RBUb+dZc+HxkPC7D/wqAZzh3UQQS2WJh5H2Q3eZEHP1MNYakD9y68CosdcBj6zrP9T/22G g4hszt5DEf0adPr27ifH1pq/oJvrden9FrYCvk9EjD78oIGBxW/oLJJ/uAnrd3N1pAZiHQZ+/NAN 9RDAkgaykk1HUdpfUNkg0rnScrNFexKSzwek5GAtzb9Qa1VfkDQTYti9vFdAYUy6bQJrj0JJSSnO 0YbpsZDbA3lspYNizAVuDM31UiY/lC81PYjNSNS/lTcqj5EOMSZ3hO3eO/6x+2bFZCZtjv7KLzLt YGN33Gap5EOM5WnA+oKeLASeXMHiUpZ6ZgLjty2RC5yI1Fu6fpFGOKCuH8yLYw5fIGg9deKLYtXt gBvUDAunc8Q8bAyAc6EASPtHcnG0hJ0CYbQ5s9ajljcpn0Nw9xubjNBUsrGA3/EPwWjnRnIGOkSY cprbleK/iNE+XBpds2dd7yIGvMP6aKVQTWbaJ+rIz5dsRAbZ33Of0cFVX+mesoF9OBvKS0VnHi3N yn4OSqC/FgFk4n//hsZ6kHIOXWC7zEwRVHfdtmTwO+vFXuia8wiu9Hwa+pd01QxD1J7l55XH4sbD ibZOkTdCMNG5P1qaGD75tjNHBTOs5sXAxQSL0jBSwtuGF6OSYOygatk+gmOShvloAIAlbzSJSRak EYRHi8pQjOy7wqgAt39xZ7Yr7qJwu1xVsIg41ieiE7aNj8Tnp/3XuFgZPNnfXycdemIJOKJAnEIw bgiPChK2lWkAGmTceePp03vLwD2rxeOqqc7me0piD7AaX6c8hc8uVC5Vx7NjK9vZMxTQVUXtC89K dc1XGgzkIgEo0aW/P+lsQielt8TbCrnG6qWeXIMQTkM8DiOM2HZTFldrVY7JISPXgDHWlEiNxr9N H+ROmTwbe08TPPKl+QTpDmuU6Wbiyn8Ium3m69bA+dtNTzvbxES783sIgWTWvyaNf5tStemewOKi X1rMSsifWD2kJWV/oSJlMzBZVkDVjpfN4njWIVRA5HKEJ5sR+8WeYAfeWaPOGAVaTRcdU7VqG0Wr m8Yz37QzQBEAOcq+052ZNIkVW/g9k7ODRsVmX5JNJkocmhGytOn8jEGib604vxETA1KhFkfoL6ma RN64fs3Yz7nH8wsxxajP4GI5g9c9MksXq0NPIguUFifvoU4FRXl/yqrq96+eNLng/S4oxbobMw7K j4A3Ih2aS4LpEMIUzImn1qOzmbiDYUhrms7vNRA4SW/73ql5pUkgcHy8HXr63b4tP0ENzaTdW0D2 kPufZt6lkNOK6BEEJO0+zyo/Drz8LsyF1stcBN3dDhtOOQ4IiG3cnn+cyuh6U2Itj33HD6BbmXWV JjMorGwFpPlYGezprMPvfe/VxRnBaeD0sGXGQgWEM0fS7XCc+nsZ1RwdSviuTCecguvQ42/H8j0S KeZYdQ4zW/6+GKIcwA3ZY2PjESHcfedVN2T9H3GS+VBPJf1N/1bT39nuSRg1C4lLbf1Lm/a/DE9j JBbiyXdFSW4YsTIES57RXQok2O2nU4yFjgg92EYvcfCx2MyxIrm87ezP1jILqf29NsrJPG6obxGU q18u60rmE4nU4q/DfDikEwa83IVuSK6YpHOof3orOxtxAWhKQHxRl4k/LyVBM3cZE0IQIGEoOmkI bGfo0rBlHj/okqBVb8sOVcAJ3hV8VNhfFSt9ozx+TrOLmJrfjjqoiZoGQty9RIEw3lxnm9Lzf/5g GUPljRbXmftzwLXxrzBnSKmQAUXmyhNCkoQURuS/nOpjFaEAwpyrTqIzSH97bWB2HGk1Y5BmZGOs v64eQrqkuC0FDUqZGmgwaO0cRHVElP37Vkd6Kl+GKuNKtAdukr4J69UrslMGkAbBC8tNbsQ+rmkq sWhJXAWPO3K4PdC28wPK0QM0tOHqhJhqNcMRGsnx7lU+oaCbpYYJ3F8VHwwqqVz2qdgNCmVuZHN0 cmVhbQ1lbmRvYmoNMTQ5IDAgb2JqDTw8L0NvbnRlbnRzWzE1MCAwIFIgMTUxIDAgUiAxNTIgMCBS XS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1LjAgODQy LjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC8yNmFjM2YwYi1lZjcyLTRkZmYt YmU1ZS0xMzVjNTc1ZTA5NzAgMjUzIDAgUi8yOWU2MTBiOC0wNjI3LTQ4ZTYtODU1Zi0yZTZiZGM3 MDQ5MGMgMjU2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUvUGFnZT4+ DWVuZG9iag0xNTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0N ClJmtAqLweyQPQ0KZW5kc3RyZWFtDWVuZG9iag0xNTEgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCA5Pj5zdHJlYW0NCiy3szaqYXvSKg0KZW5kc3RyZWFtDWVuZG9iag0xNTIgMCBv YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTc3Pj5zdHJlYW0NCou8O86etnT/P+I4 nIwbzSk6CMHtfUDyZtJeZnpa3jBYPipPCXx5TLfq5NcXQFCaC8MrL+fImj0CNswKX8bT7/DLu6j2 ByPR9RfkTuOAmP4JYiouQBob5g8W8+sA8XoWaT3I4duVe/73RaOfrv4sGHo3LpTUOX1uSqFvP1fI BKHgtHCXVyUZQwLqRLqcEzVcj4UqGxWCXnqZfB/2S0OgLYinYaxBPcAnslHKqEmxKpsOAvQ1fY8u WSGRaR/xqaIgXQqi/4fXHFT2KEmtbbMEXfghBtXYAgH4vuqOTANxBzAWWmY3pWKW0RyS5LMF8Zqn O0OXfg90gRTl2Niwx8him98vw8TyZ55QmS/EHrirrmfmFBHaRv6IhYgubnJX8mc7E6UDgE5fR+wK 68dA5ookp0W0yNY6q8hxlkwa+y2P0Jm3IgqH0YYk9xXNqFOZMT5sS0tRepEMGcO5k5Gv/ntd+Ehn yzyIRpxydLe9IWQtNorV1r/KPaHbeqYA4yqF96hSL7jK9tnxAImngMSdLsUoPDxANfX6CrkfxZn3 +Yq6lakD8p2xNgicA6w5tfIO0knUvuTNIQaRy8lv64gANFzrbvnXZyEjXaNRIh2ouQK2uc+bORnQ Ivs6S7Nzeq5Vriqck+sQRpZ7+8u8FKu57WZdTtYcN5db/gBHznzX/uy5n+mL1i0Hsajqggl9+BBx ZMlMzxW1JOMB128BynVAvAtKrhfNFFzG/7SdXADso8Jo9TLZZrwgwy2y6hI73/jp4mBcrN1xWKgH MWmWJmtrURAvsdiXIfYoyIibECBhpJNcuSGYVyjlD41XfX2Baxfuw0TwM42QDbl2XFqk16/aw+PI yFjSKPau225LFsJ6ytEhBKcvNAxWnenB4I6xK+9eTmmWepqKrZ/BpHSLkxlna1gEE5VBzXcSVoUR vGExpVoMxv6agJTrb2fGneKGvuWmZyG6B9T+60QQuWn464YSQSlsYYm10+TubXk44EdASolI7085 fDsAEQfCKtWg0E0qXvwKuXKsLErYwudtFJdH8dkRxisUOuz0ddbhvt8SrhDkzWrKPBwTeq78fms+ hKjZ9klUBP2rWt3HCYn24T6yztHPvsfYfMfx9raZNZM8GJHHhs3Tzatg1vp3Ct3M3TNJVxlDhLVh HmbpgUj2xpIdTIqIkiNH6cFMumagwbe9LXO5rjWj7oZNx8JFshO8BjPxItYc2cDYcVuXvW3FV+AY aRaVsva6ruzjT7iMhQzGnVfdvnsH7RzFl6yxO59XAAJgEiKEIwZjkIJR7ab/S8BGlxIXOu8eag47 N6yoKPKDdMOSGRJRDzoldZUS2gTpY0JW/165dZjbHGijBn2gC46JBZDvCoBTg8UfRJMPzm308OUR 15hPF17hVsxGmjXOIw0rX7M3j9biUMcE6fockdBiUaBxDXBIdQ4TZqdijSALxK6Nzii3IfEbUfIj CHa1407k4VOLCqXVpzZS4Lh9vCd5a4OZLLNm0Wri/cfSjJczyCh1HiY1cNCn6SrSF06lw9IE3JMR 9pyAtLBNP0k897gGU+M5VSckbgGTwCN65aymhhjL3rbSaUZaYIwKa0d+HWB4NJURvFWN+vY7G0iY 4cIvooEQ8CatF9/dxZIZX9/eM/ktW0lz0+u71Ucwdispg0n6s2Wq05KeukP9vyGhAb8g30uth5a9 ZGR0pMmLej15kU7WZ9awOswv62bopaytry5srcBV+UmreIHMhyRDsSrGZOmlc1xRS7sIUp62uPrt rt25Xhv9Pg8Wdu0rXpU236eqJgc1hW87JaugzH9xhWgvFj7eEGs6sov03yUJaTnSPYKi8tydi7Dv cY+7QeoqLFQoqoJO5hBLf+4wdFCVmFGOOyBgpxBAkMI/daQgxs3P2iHOHESqYoxTGe0aE1XTqBot kNlNOn6ljcy1nC8MeMVRt7G7NOGf4jmLVvaYjlEju04FOLJhQTH32f2JBAVFZwTLyswO+ejthul2 gnMup9XoMswhj4yCihr1kAAZZtZU8cgx2crbEIfejhVr4fx0LW4HapH988js3HPoeNYqtA9t7/bL ieFWR/95kOXSwLvPX/5qWHgXAUHEtJOEf7bOGE9vRgyqt1QJ7HegWWSaCKUy7cDc7tb7SM4rgnJi RTVGvS5NKlj4GgTX3cJrHJJvabMNwSPTjGxBvkDseDMQ8fH4B3PNagVRbXBjT0rgQD3ZrPByTVEi DoDCUjKFc7rkM0+ZkEvaS5gA55dO5oOhCH1ZqJI7+nYPscatLK1BDeBwQTBTToL5zwi+ndE5JERS 1cwa1GMnm2FpHxrnlBHUuGDA2GvJZJJs2x+Zid0TNVMGkahvqRXm2FFwV7gBk1SR/3rkjf6GE7j4 U4ILHdqP++H46l85Vl5+afCQv0dZvhwdEgtv7+bcbeTr3hpcMD5RBMVQuW1oypK1t2wITNfRX0Jd LCHQj/tRIUlhrnLjQ1lqV6U0nfTLh336HcImoSJdyzOTvfWVG6KMiY3LEeBW+Rhp38EFSqrdqzCm zG0xSXnJ2d5d2vCbi+N/xCrlP6XiEu52AiIGMLd9RbyBFSB2c62eKumOIvU6GvtgGd7Cm/ew8gkm bDra+Px9HdMACMQgiD+q2UvrZeIEP5Whh52sWg0KZW5kc3RyZWFtDWVuZG9iag0xNTMgMCBvYmoN PDwvQ29udGVudHNbMTU0IDAgUiAxNTUgMCBSIDE1NiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUu MCA4NDIuMF0vTWVkaWFCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVz b3VyY2VzPDwvRm9udDw8LzMxMGQ0YjY1LWE4OWEtNDU5MC1iMzUzLTkzZmMxMWU3YzlkZSAyNTYg MCBSLzhhMzNmMTQwLTMyYjUtNDJjZC1iNzY5LTYzMjJiNjYyZjYyZSAyNTMgMCBSPj4vUHJvY1Nl dFsvUERGL1RleHRdPj4vUm90YXRlIDAvVHlwZS9QYWdlPj4NZW5kb2JqDTE1NCAwIG9iag08PC9G aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0KWSx/iyoJdNQ3DQplbmRzdHJlYW0N ZW5kb2JqDTE1NSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0K aF7EdOZf/zAdDQplbmRzdHJlYW0NZW5kb2JqDTE1NiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNv ZGUvTGVuZ3RoIDE5NzA+PnN0cmVhbQ0KogiaGlRhiXcirR+feJZwGn43c7MpPfM8mzHM03lolUHY lVw0Mg40AYTuUMeB9pppPEcoYO0cMW1tHPBpLVTqLq+lPkT7ZcyxFRT/ReJVhsKeAwZ5YHfl08aO qWFsE60Y5rpEG/vLlPutU162Jc4Nvsv3A6PUPm+p7CLMXkLA1C6eXHSwhAah0h8sOLO1xQFEf08A /tS8bzxlIaVQUMuBcKwEGDkShngxDMYYxL0hN9B5tyGttyoARWzEFjcQi7fQ+M2iWkTVon4ulw6v ohPiU5sTop974+Fap1moRCSyjF9JtqUk7s5J5a2JBb8j7aYaoZfNo/RLHALoEsiTmYwXes5NeLnF vS7Kj1vrdRIpxOb+4SVBE6CPdM7XvqknrBul88Iwnl6BisRE8+k/GK3Wt80HbenWcnkJhGBv65SQ 5zO0Zr0PB6HzgBMcL+w89zTsUh95iiQ6KIS8y305BwI+6dWg8ZBAdIpLv1yppWFNnA459X+2Sqpy 7+WDscqtmhydwFWbn6O8E65X+tQKoamXq3eww4tLMQwh5g2BzjXbkPawwOagR9vzV4uYDWQzmY4F NNkin8SXYk4slC2qqUk+Yx9kvbr7XBTqvmmC31aSgq6d+nEwn8RgTiL3EZlhBHP1DG6lsKi3AGVh OwO3KuR9Czs6VUfz/LDuVgqejA+C+jicDB65q0OzaJAJIlu7peTCrvP4gaRWOtcx4AZOKi4C72kZ c2+B1Hral4Wpiml2eZE8abfbphHz1kgl5Qcayj2gN5ye03nMfZFXuMFcmQvbIu8wMf+smSYzgXkT D0UQX/ahfAIxZk3bhpg3N1vwNP1FGFlkR6merTILIbl3aKHie9QJMo7xSIGvIJbwb7oM3X7MCfGK 2Y6b8814YxslQvo7jC5X6CyC8x6sxEpHfKIcP9JPyvriitp2Gigd5hS9LWC2n9C9wzZC+9YLJhfo Dr59/3hsP3Vs1Dm60iP3XzR+ITyHHpANgCmBMn7H6wNQe6XJPZ6qaqNATsx3P5+wsfc8gck1UzL5 ALRCZwK/bo2MwL2AwXfFQJrAPMwCRPl90XUgA2eW9KgUcKa0qIHyIWxsCIUyvPQcYhkOKzLkk/fl 2vMqxuXLIzgJR8AqSBEaUgaevQHjK20j6CaZsCx0/780Ml8BL+EmH0rNkIrIKFxnn4V5bCGiKYBN XPflcq+IicBah42zWl1b2NipqK3pImwG5TzmUkP8f+QVgFUnWq3AOEzGXF/HvjuipxGsUjCK5Q4q FBfLaDSxER/SNkUcj1tX1wFAkq8Px6wBeWY5PJrXe8a6fODjTnyvSqt1r4bSZP9cK0UlXpPN9Rhw rrbtcoP3ln06JJPWaLRWD+vfI5xE/tdcu37FTKi6eoo6rck+zy7Q3gMGXJGSBgqijLGHfaLHA8EG ukSbpRrcQ72pdfdN5HjTSSLad5Mwwx6SwH9DxkY9jTYsHFdtz6gQc42ffXclIAxfZdR36+dIehMX 3Um+zSXtuhtA7oMh2B538GQTASsBFLcFpvzDfcMLY40Mp1nm3BHCGwGGGtQ6OWFp8XcJTs/R/8Jj dXf9nximZwqwHmxA5rV97egmr3Q6tvOh+lJjROnuxPp+dXrnoIkybS6hQ+PwHGiu9cgc9Gv7lZGr UXcwr2qsZ0PmM33rkobHDkSS9DkfQeSflsrIoCIHbmw9aMP5Fibuk6On0eiKdGkTH7JNowRnWQEy NJ8EDuxMByp7aVtWADXjxXByK/l4tvTtnfYfde+jDH1fm1AiejaRmz86JHwqULG+4IIlCOGt8QKv cDuyAhvZkosgqIfzPow1EdqlKjil5wqGspSRLjO9lIlxJHozxy4k5/FRl/bl8/MrJvRLrJ0vzCm/ 8hYFREzB7kXDQNO2TqM6UoIhoMqvD7DGapcJbiTNI/tISi1FcEglQuy80YDtwgsn1X0lLCPSDHUN Zyvjc6f+yKITkuINnQbFR7IHBd4S8GBIii7fOZs3QyldityzYpRU8vx5uj3kmqbS+zsgdNhzaFxa RDikez3fwuPbNl6vDFuGRIlKlJTPLVaoEnMTcyY71ku6KDEAqi+9R0UxlB1lXMuxT/oldwGv8q38 lDaco7g3/FRVfZhXDjfuoPQaJvi8L+mjiIj3OMyq6HMOmcuJYYpWUp1VY01Eeq3cLwfPZXbsfqG0 R0/Rl8gZ1WP8UroAD7vpd/03IotIRfl3B88hfjPpVVPeG6mHf/gqfbtylR45LeOuy/NUhz6NEKRA SjIM2s6sVff5kI+D+YI8Z0dyZ0CtdUZxF9eFBkDyTveFfbEB1tPXhWdXRkage7x2l0rdfMTlJvgE sF190S6uJBec08Z7QwsfXwp+zVe8J9IC6Vz22Ha+YMeg263h1z7vd6NlnYvjSGMBxgmS/B32bVdJ BLxW6x43c7Ks20ZaPmbUBzMQWVt8FWfFE19dZJU9sYd6b7UtTmri3kI8GjUp80eIrwX1M+5QhOat 4+6t48kmvJFUvC50m6+F5lASTIyXRk8CGvMWI29X34Nw5YT1cEfnGxSXfGeE4KneT4afdkdZbcGa aEzyJtVtLEJwoYWTTaQ7kCJV6i3cxlK/sd0XY2WZqYwgiF0u+LaPJVfXdMLB/uAZATbbkFS6cqYN CmVuZHN0cmVhbQ1lbmRvYmoNMTU3IDAgb2JqDTw8L0NvbnRlbnRzWzE1OCAwIFIgMTU5IDAgUiAx NjAgMCBSXS9Dcm9wQm94WzAuMCAwLjAgNTk1LjAgODQyLjBdL01lZGlhQm94WzAuMCAwLjAgNTk1 LjAgODQyLjBdL1BhcmVudCAyMzEgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC8zOWNlNDY3Yy0xNGM4 LTQ0NjktODUxMS04OWY3Y2VhZDJhNmUgMjU2IDAgUi84OWM5MjRhZS1kMjMwLTRmMGEtODU1OC1m YWYwMzk3YTEzMWMgMjUzIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1JvdGF0ZSAwL1R5cGUv UGFnZT4+DWVuZG9iag0xNTggMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5Pj5z dHJlYW0NCq/jUFQHcJEKWg0KZW5kc3RyZWFtDWVuZG9iag0xNTkgMCBvYmoNPDwvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCA5Pj5zdHJlYW0NCvBEoxJkNO4ifw0KZW5kc3RyZWFtDWVuZG9iag0x NjAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxOTUwPj5zdHJlYW0NCvZQUMXQ DWrd0RYcU5j8SXrkdlAQz9BZcBjQL7Re/vfW25zUzoa3o3rzkXm7GngucH4MWjBbWNGt8AAD/f+M 9AiYv/WclJ26xKZ6k8pSh6x+lVbzbT+6Q1Kp/meGC/2h//G9I9mCA0EZz/RE9X9RO/V6GtFFvPn3 1jojjfJ9WXFrdelf66iuZwnhTgWnAXOZ5O6WjcblpiQEpIzZn6p0uQIguvdBBDGM03N6K2fTviIz zK1VmacePGF2JeKHKlI3gtvQWsZxta0BvmHKYuPHoaFd3Qzo7ShYYhC+qOo/CJmfdyZzllnWkTKW XHVBpA02OVFgk03kPqtq1SUrV8sZoiFqXuyOoRVyZtOs0ZfKTIlDdOoQMk+xdn4/H7+P3qkSKbh4 XuFdzOJzKX6u7m+fakQkzggUpY5+1hi6JBy+GExhJsdcM0MsrJUmW7MfuCtrwEZ6IZUuLlXzZcO2 ubXjvjo954ImNn/4dD1KN0TEG5zfUeN1x/QeSN9NaNDNU7R8rChEC4/d0j035iVRDfQwEx2fItbN TjXMDLggWrHgWUH+3woZ7wnSP/rlhkO9i4h7UVVFPyEDkbajIfEtk5bwzmnGUWXq7z3lUekdszfw zrz2jX7iaBg0CEN1D0wzPClLt1SVQYcB4SQunS4g+bX6UydxjjLI2vffv3PcDxZXboz6qpOZ2qSn Lo+ykq3crJpJNSUfhaKQ4Faj+U3iD1/dh58bdOFOdb8+KULlFAE8oHU/kOM+VpIVr+aZGlHInYkF QTQYpUwP1jFDUQHtAwqz/ulTPx4PwBrwyP8poS5wyFyS0Yn6RSBE2YhkpNrHi0PabiODIj9QOD6i CVLADEEQeH75gJHKxzVi9+Nv4mZpvVspZkFxRlzRC0DQeUvbMfTVKM8cGZAGY00xsomfou9Ql7Wd ClMIsHdtDAPBTuzaWqMOSv4itChtD7+uMZKfYgQKNbNWmYE0yep3yvnf18mULm5YOEJub8eGueJa 1J360du7fwwzfARoy6rreTA4xYK42CYARUeG98hnqZJV9NeZCyDqZovjzu1G9ndJ84C7+0eomTzJ xXP2BFj3ZhydVGeNyLQozzJ1BzaKfk+5WaU73VAnvmoXkEKzReS8RbrqIIahHhL3F7OdFW+sD0pB X2nY9Z+ExuamnOLy0IjpSEzwsi5yTHgs6XoKgKLv4riyeDWfd3fJcBtJYy33dJOxCbcI2NQ9yQkV zl+VgZb9InE0o7wOK1BsvHWQ9A6Vk5yfoPEeF/TXFXFHhqZp72YO/fkxRSi43a7xuAVVyFZNnmkJ lgrPWxqA54FgfHRmSrdRt48fgBjPlDqB0G87lYrVwiNOdPy7YIZf7N180a8f350niZnu/9TBzBUP C9PcDwDOvn8y6fGlnggLzPk7rKRwWsScjeb7eHrfiJ969v1xnEoO+u3eCfbQYIPNZO0VAZu5a0e9 7SdzGrOi40iZxcUBkr6vAg7YsMTJuvQuYM4df+O2y7MhewGB8mMNPOKc+kdYkMAeR9BsWRJPRQ2q ann6PLEbR1Xdy3hXKFTe6/YV7pbXl44XIZtA0RzBqygbFJH0NiEV5q4M8vTsN2CXGxf972+ryrte sNbYi+vw990yYdvj7lsRZeCLaJszE9vdxb3GhSu1Xv6y84JjElSTERGyJ9YYo7pdlxnZsQERXi53 Jj/i/77huTnHAOE7rpRX/Mqy3MNCus8fRrBvMCqrWFohouSlCmyUvRH+mU85+eyGtaCmHs1INwyr +jDsu5zN8ynpplOn3McJw1VuaAq0WgzwrjjeSIsUbM4V5KbJLunKgzbgV4B4XkGsOuTJVWxD1ypy mo2k5eKLZSYT0hU9JDN0vxmprzKQP2nBEIu9wu9B4fLYLeaQK0uul4G64wzx26CXsMGH/8Px3vOq BmkuYcsKpPjzZLijm9fShyaR1WY4BBJMCyPhS5wk0SKt2Q7QwCmFYEGZmOv5u1zlgZYKTUoVf1v3 S1yJUPVNWTus6g9nC/Z5UTpvuzWn5iaFtvSVSKBFQvcwPcScvIIt5gF4Wpm47ghcW4PoNynZhE8w GZbwjJI64pXocGjYioKTm85hwIfbe591bdbCQMw227IsDT2zfNH78Ezh0f+DF88iw7ouCRkz1KG6 zgD48FAEDcCRWt0RI0AtBWav5/Tf3X89r8U5rJFAKwUcBiaRgwiYIiJ1MgBYNFmw5l4eHsj/OWa7 Ez1lfPWpXQX9p1ayOrBk6aDEHmz5/oDUtBReVg7kbBnq19iRgTgyxEKMNDjfXxjy437pP5Y/TU35 M0pX3Jxn2/+Vhsr46ZIleC2zK3yeuRhjihVdmzIC7xN+em61qL8orL5rNN5uSlKQmHtIoA+bQrTr b+mB7vY+6exNbwuUViA8n37FxkiSwK3LjhD/2ymghaEEZqwl4pDuaWuKyVUsGxhx0MRg4ecEo+W3 y01NW2yRY7WE/6j5Qp4VgoK6DGiOFI2UvYmA8kBoVzyzRzSEJpfTJXjVRzbe/iP0gFwRP+G3cqVT b0szwLvLNyDhLLJdwPfPm3EcJqq8TM4cUQ1BTxemolT1N7XDhdl4Fg5Mx5AYwzYgPMvCtEshLPNZ glOc66Fwcw0KZW5kc3RyZWFtDWVuZG9iag0xNjEgMCBvYmoNPDwvQ29udGVudHNbMTYyIDAgUiAx NjMgMCBSIDE2NCAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMCA4NDIuMF0vTWVkaWFCb3hbMC4w IDAuMCA1OTUuMCA4NDIuMF0vUGFyZW50IDIzMSAwIFIvUmVzb3VyY2VzPDwvRm9udDw8Lzc5NThk ZTk4LWY3ODEtNDI2Ny1iYjIwLWU4OGMzYjcwZTkzZCAyNTMgMCBSL2IxZWY1MzFmLWE0NDAtNGEz NC04MTg0LTgzYWY1MjdmYTk3ZCAyNTYgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vUm90YXRl IDAvVHlwZS9QYWdlPj4NZW5kb2JqDTE2MiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDk+PnN0cmVhbQ0KfGGKGPNiTvRQDQplbmRzdHJlYW0NZW5kb2JqDTE2MyAwIG9iag08PC9G aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk+PnN0cmVhbQ0Kq6Fb83Q6gRkkDQplbmRzdHJlYW0N ZW5kb2JqDTE2NCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE5ODQ+PnN0cmVh bQ0KZDPmEWJFCELEfXWqxMYVESYOtcq5lNuqN5eX4RNyxYnuwK5Wn3f3exaXeI8VxCQ+tJ10cjUD GjntrE4i9NyTXdRejn4Ygpgs/3uMy6kJgpWh3rsD5j6AHk4Dgh was written. Either 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Optional. Whether to retrieve the GMT time. Default false. * @param int|WP_Post $post WP_Post object or ID. Default is global $post object. * @param bool $translate Whether to translate the time string. Default false. * @return string|int|false Formatted date string or Unix timestamp if `$id` is 'U' or 'G'. False on failure. */ function get_post_time( $d = 'U', $gmt = false, $post = null, $translate = false ) { $post = get_post($post); if ( ! $post ) { return false; } if ( $gmt ) $time = $post->post_date_gmt; else $time = $post->post_date; $time = mysql2date($d, $time, $translate); /** * Filters the localized time a post was written. * * @since 2.6.0 * * @param string $time The formatted time. * @param string $d Format to use for retrieving the time the post was written. * Accepts 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Whether to retrieve the GMT time. Default false. */ return apply_filters( 'get_post_time', $time, $d, $gmt ); } /** * Display the time at which the post was last modified. * * @since 2.0.0 * * @param string $d Optional Either 'G', 'U', or php date format defaults to the value specified in the time_format option. */ function the_modified_time($d = '') { /** * Filters the localized time a post was last modified, for display. * * @since 2.0.0 * * @param string $get_the_modified_time The formatted time. * @param string $d The time format. Accepts 'G', 'U', * or php date format. Defaults to value * specified in 'time_format' option. */ echo apply_filters( 'the_modified_time', get_the_modified_time($d), $d ); } /** * Retrieve the time at which the post was last modified. * * @since 2.0.0 * @since 4.6.0 Added the `$post` parameter. * * @param string $d Optional. Format to use for retrieving the time the post * was modified. Either 'G', 'U', or php date format defaults * to the value specified in the time_format option. Default empty. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. * @return false|string Formatted date string or Unix timestamp. False on failure. */ function get_the_modified_time( $d = '', $post = null ) { $post = get_post( $post ); if ( ! $post ) { // For backward compatibility, failures go through the filter below. $the_time = false; } elseif ( empty( $d ) ) { $the_time = get_post_modified_time( get_option( 'time_format' ), false, $post, true ); } else { $the_time = get_post_modified_time( $d, false, $post, true ); } /** * Filters the localized time a post was last modified. * * @since 2.0.0 * @since 4.6.0 Added the `$post` parameter. * * @param string|bool $the_time The formatted time or false if no post is found. * @param string $d Format to use for retrieving the time the post was * written. Accepts 'G', 'U', or php date format. Defaults * to value specified in 'time_format' option. * @param WP_Post|null $post WP_Post object or null if no post is found. */ return apply_filters( 'get_the_modified_time', $the_time, $d, $post ); } /** * Retrieve the time at which the post was last modified. * * @since 2.0.0 * * @param string $d Optional. Format to use for retrieving the time the post * was modified. Either 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Optional. Whether to retrieve the GMT time. Default false. * @param int|WP_Post $post WP_Post object or ID. Default is global $post object. * @param bool $translate Whether to translate the time string. Default false. * @return string|int|false Formatted date string or Unix timestamp if `$id` is 'U' or 'G'. False on failure. */ function get_post_modified_time( $d = 'U', $gmt = false, $post = null, $translate = false ) { $post = get_post($post); if ( ! $post ) { return false; } if ( $gmt ) $time = $post->post_modified_gmt; else $time = $post->post_modified; $time = mysql2date($d, $time, $translate); /** * Filters the localized time a post was last modified. * * @since 2.8.0 * * @param string $time The formatted time. * @param string $d The date format. Accepts 'G', 'U', or php date format. Default 'U'. * @param bool $gmt Whether to return the GMT time. Default false. */ return apply_filters( 'get_post_modified_time', $time, $d, $gmt ); } /** * Display the weekday on which the post was written. * * @since 0.71 * * @global WP_Locale $wp_locale */ function the_weekday() { global $wp_locale; $the_weekday = $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); /** * Filters the weekday on which the post was written, for display. * * @since 0.71 * * @param string $the_weekday */ echo apply_filters( 'the_weekday', $the_weekday ); } /** * Display the weekday on which the post was written. * * Will only output the weekday if the current post's weekday is different from * the previous one output. * * @since 0.71 * * @global WP_Locale $wp_locale * @global string|int|bool $currentday * @global string|int|bool $previousweekday * * @param string $before Optional Output before the date. * @param string $after Optional Output after the date. */ function the_weekday_date($before='',$after='') { global $wp_locale, $currentday, $previousweekday; $the_weekday_date = ''; if ( $currentday != $previousweekday ) { $the_weekday_date .= $before; $the_weekday_date .= $wp_locale->get_weekday( mysql2date( 'w', get_post()->post_date, false ) ); $the_weekday_date .= $after; $previousweekday = $currentday; } /** * Filters the localized date on which the post was written, for display. * * @since 0.71 * * @param string $the_weekday_date * @param string $before The HTML to output before the date. * @param string $after The HTML to output after the date. */ $the_weekday_date = apply_filters( 'the_weekday_date', $the_weekday_date, $before, $after ); echo $the_weekday_date; } /** * Fire the wp_head action. * * See {@see 'wp_head'}. * * @since 1.2.0 */ function wp_head() { /** * Prints scripts or data in the head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); } /** * Fire the wp_footer action. * * See {@see 'wp_footer'}. * * @since 1.5.1 */ function wp_footer() { /** * Prints scripts or data before the closing body tag on the front end. * * @since 1.5.1 */ do_action( 'wp_footer' ); } /** * Display the links to the general feeds. * * @since 2.8.0 * * @param array $args Optional arguments. */ function feed_links( $args = array() ) { if ( !current_theme_supports('automatic-feed-links') ) return; $defaults = array( /* translators: Separator between blog name and feed type in feed links */ 'separator' => _x('»', 'feed link'), /* translators: 1: blog title, 2: separator (raquo) */ 'feedtitle' => __('%1$s %2$s Feed'), /* translators: 1: blog title, 2: separator (raquo) */ 'comstitle' => __('%1$s %2$s Comments Feed'), ); $args = wp_parse_args( $args, $defaults ); /** * Filters whether to display the posts feed link. * * @since 4.4.0 * * @param bool $show Whether to display the posts feed link. Default true. */ if ( apply_filters( 'feed_links_show_posts_feed', true ) ) { echo '\n"; } /** * Filters whether to display the comments feed link. * * @since 4.4.0 * * @param bool $show Whether to display the comments feed link. Default true. */ if ( apply_filters( 'feed_links_show_comments_feed', true ) ) { echo '\n"; } } /** * Display the links to the extra feeds such as category feeds. * * @since 2.8.0 * * @param array $args Optional arguments. */ function feed_links_extra( $args = array() ) { $defaults = array( /* translators: Separator between blog name and feed type in feed links */ 'separator' => _x('»', 'feed link'), /* translators: 1: blog name, 2: separator(raquo), 3: post title */ 'singletitle' => __('%1$s %2$s %3$s Comments Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: category name */ 'cattitle' => __('%1$s %2$s %3$s Category Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: tag name */ 'tagtitle' => __('%1$s %2$s %3$s Tag Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: term name, 4: taxonomy singular name */ 'taxtitle' => __('%1$s %2$s %3$s %4$s Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: author name */ 'authortitle' => __('%1$s %2$s Posts by %3$s Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: search phrase */ 'searchtitle' => __('%1$s %2$s Search Results for “%3$s” Feed'), /* translators: 1: blog name, 2: separator(raquo), 3: post type name */ 'posttypetitle' => __('%1$s %2$s %3$s Feed'), ); $args = wp_parse_args( $args, $defaults ); if ( is_singular() ) { $id = 0; $post = get_post( $id ); if ( comments_open() || pings_open() || $post->comment_count > 0 ) { $title = sprintf( $args['singletitle'], get_bloginfo('name'), $args['separator'], the_title_attribute( array( 'echo' => false ) ) ); $href = get_post_comments_feed_link( $post->ID ); } } elseif ( is_post_type_archive() ) { $post_type = get_query_var( 'post_type' ); if ( is_array( $post_type ) ) $post_type = reset( $post_type ); $post_type_obj = get_post_type_object( $post_type ); $title = sprintf( $args['posttypetitle'], get_bloginfo( 'name' ), $args['separator'], $post_type_obj->labels->name ); $href = get_post_type_archive_feed_link( $post_type_obj->name ); } elseif ( is_category() ) { $term = get_queried_object(); if ( $term ) { $title = sprintf( $args['cattitle'], get_bloginfo('name'), $args['separator'], $term->name ); $href = get_category_feed_link( $term->term_id ); } } elseif ( is_tag() ) { $term = get_queried_object(); if ( $term ) { $title = sprintf( $args['tagtitle'], get_bloginfo('name'), $args['separator'], $term->name ); $href = get_tag_feed_link( $term->term_id ); } } elseif ( is_tax() ) { $term = get_queried_object(); $tax = get_taxonomy( $term->taxonomy ); $title = sprintf( $args['taxtitle'], get_bloginfo('name'), $args['separator'], $term->name, $tax->labels->singular_name ); $href = get_term_feed_link( $term->term_id, $term->taxonomy ); } elseif ( is_author() ) { $author_id = intval( get_query_var('author') ); $title = sprintf( $args['authortitle'], get_bloginfo('name'), $args['separator'], get_the_author_meta( 'display_name', $author_id ) ); $href = get_author_feed_link( $author_id ); } elseif ( is_search() ) { $title = sprintf( $args['searchtitle'], get_bloginfo('name'), $args['separator'], get_search_query( false ) ); $href = get_search_feed_link(); } elseif ( is_post_type_archive() ) { $title = sprintf( $args['posttypetitle'], get_bloginfo('name'), $args['separator'], post_type_archive_title( '', false ) ); $post_type_obj = get_queried_object(); if ( $post_type_obj ) $href = get_post_type_archive_feed_link( $post_type_obj->name ); } if ( isset($title) && isset($href) ) echo '' . "\n"; } /** * Display the link to the Really Simple Discovery service endpoint. * * @link http://archipelago.phrasewise.com/rsd * @since 2.0.0 */ function rsd_link() { echo '' . "\n"; } /** * Display the link to the Windows Live Writer manifest file. * * @link https://msdn.microsoft.com/en-us/library/bb463265.aspx * @since 2.3.1 */ function wlwmanifest_link() { echo ' ', "\n"; } /** * Displays a noindex meta tag if required by the blog configuration. * * If a blog is marked as not being public then the noindex meta tag will be * output to tell web robots not to index the page content. Add this to the * {@see 'wp_head'} action. * * Typical usage is as a {@see 'wp_head'} callback: * * add_action( 'wp_head', 'noindex' ); * * @see wp_no_robots * * @since 2.1.0 */ function noindex() { // If the blog is not public, tell robots to go away. if ( '0' == get_option('blog_public') ) wp_no_robots(); } /** * Display a noindex meta tag. * * Outputs a noindex meta tag that tells web robots not to index the page content. * Typical usage is as a wp_head callback. add_action( 'wp_head', 'wp_no_robots' ); * * @since 3.3.0 */ function wp_no_robots() { echo "\n"; } /** * Display site icon meta tags. * * @since 4.3.0 * * @link https://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon HTML5 specification link icon. */ function wp_site_icon() { if ( ! has_site_icon() && ! is_customize_preview() ) { return; } $meta_tags = array(); $icon_32 = get_site_icon_url( 32 ); if ( empty( $icon_32 ) && is_customize_preview() ) { $icon_32 = '/favicon.ico'; // Serve default favicon URL in customizer so element can be updated for preview. } if ( $icon_32 ) { $meta_tags[] = sprintf( '', esc_url( $icon_32 ) ); } $icon_192 = get_site_icon_url( 192 ); if ( $icon_192 ) { $meta_tags[] = sprintf( '', esc_url( $icon_192 ) ); } $icon_180 = get_site_icon_url( 180 ); if ( $icon_180 ) { $meta_tags[] = sprintf( '', esc_url( $icon_180 ) ); } $icon_270 = get_site_icon_url( 270 ); if ( $icon_270 ) { $meta_tags[] = sprintf( '', esc_url( $icon_270 ) ); } /** * Filters the site icon meta tags, so Plugins can add their own. * * @since 4.3.0 * * @param array $meta_tags Site Icon meta elements. */ $meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags ); $meta_tags = array_filter( $meta_tags ); foreach ( $meta_tags as $meta_tag ) { echo "$meta_tag\n"; } } /** * Prints resource hints to browsers for pre-fetching, pre-rendering * and pre-connecting to web sites. * * Gives hints to browsers to prefetch specific pages or render them * in the background, to perform DNS lookups or to begin the connection * handshake (DNS, TCP, TLS) in the background. * * These performance improving indicators work by using ``. * * @since 4.6.0 */ function wp_resource_hints() { $hints = array( 'dns-prefetch' => wp_dependencies_unique_hosts(), 'preconnect' => array(), 'prefetch' => array(), 'prerender' => array(), ); /* * Add DNS prefetch for the Emoji CDN. * The path is removed in the foreach loop below. */ /** This filter is documented in wp-includes/formatting.php */ $hints['dns-prefetch'][] = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/11/svg/' ); foreach ( $hints as $relation_type => $urls ) { $unique_urls = array(); /** * Filters domains and URLs for resource hints of relation type. * * @since 4.6.0 * * @param array $urls URLs to print for resource hints. * @param string $relation_type The relation type the URLs are printed for, e.g. 'preconnect' or 'prerender'. */ $urls = apply_filters( 'wp_resource_hints', $urls, $relation_type ); foreach ( $urls as $key => $url ) { $atts = array(); if ( is_array( $url ) ) { if ( isset( $url['href'] ) ) { $atts = $url; $url = $url['href']; } else { continue; } } $url = esc_url( $url, array( 'http', 'https' ) ); if ( ! $url ) { continue; } if ( isset( $unique_urls[ $url ] ) ) { continue; } if ( in_array( $relation_type, array( 'preconnect', 'dns-prefetch' ) ) ) { $parsed = wp_parse_url( $url ); if ( empty( $parsed['host'] ) ) { continue; } if ( 'preconnect' === $relation_type && ! empty( $parsed['scheme'] ) ) { $url = $parsed['scheme'] . '://' . $parsed['host']; } else { // Use protocol-relative URLs for dns-prefetch or if scheme is missing. $url = '//' . $parsed['host']; } } $atts['rel'] = $relation_type; $atts['href'] = $url; $unique_urls[ $url ] = $atts; } foreach ( $unique_urls as $atts ) { $html = ''; foreach ( $atts as $attr => $value ) { if ( ! is_scalar( $value ) || ( ! in_array( $attr, array( 'as', 'crossorigin', 'href', 'pr', 'rel', 'type' ), true ) && ! is_numeric( $attr )) ) { continue; } $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); if ( ! is_string( $attr ) ) { $html .= " $value"; } else { $html .= " $attr='$value'"; } } $html = trim( $html ); echo "\n"; } } } /** * Retrieves a list of unique hosts of all enqueued scripts and styles. * * @since 4.6.0 * * @return array A list of unique hosts of enqueued scripts and styles. */ function wp_dependencies_unique_hosts() { global $wp_scripts, $wp_styles; $unique_hosts = array(); foreach ( array( $wp_scripts, $wp_styles ) as $dependencies ) { if ( $dependencies instanceof WP_Dependencies && ! empty( $dependencies->queue ) ) { foreach ( $dependencies->queue as $handle ) { if ( ! isset( $dependencies->registered[ $handle ] ) ) { continue; } /* @var _WP_Dependency $dependency */ $dependency = $dependencies->registered[ $handle ]; $parsed = wp_parse_url( $dependency->src ); if ( ! empty( $parsed['host'] ) && ! in_array( $parsed['host'], $unique_hosts ) && $parsed['host'] !== $_SERVER['SERVER_NAME'] ) { $unique_hosts[] = $parsed['host']; } } } } return $unique_hosts; } /** * Whether the user can access the visual editor. * * Checks if the user can access the visual editor and that it's supported by the user's browser. * * @since 2.0.0 * * @global bool $wp_rich_edit Whether the user can access the visual editor. * @global bool $is_gecko Whether the browser is Gecko-based. * @global bool $is_opera Whether the browser is Opera. * @global bool $is_safari Whether the browser is Safari. * @global bool $is_chrome Whether the browser is Chrome. * @global bool $is_IE Whether the browser is Internet Explorer. * @global bool $is_edge Whether the browser is Microsoft Edge. * * @return bool True if the user can access the visual editor, false otherwise. */ function user_can_richedit() { global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE, $is_edge; if ( !isset($wp_rich_edit) ) { $wp_rich_edit = false; if ( get_user_option( 'rich_editing' ) == 'true' || ! is_user_logged_in() ) { // default to 'true' for logged out users if ( $is_safari ) { $wp_rich_edit = ! wp_is_mobile() || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval( $match[1] ) >= 534 ); } elseif ( $is_IE ) { $wp_rich_edit = ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Trident/7.0;' ) !== false ); } elseif ( $is_gecko || $is_chrome || $is_edge || ( $is_opera && !wp_is_mobile() ) ) { $wp_rich_edit = true; } } } /** * Filters whether the user can access the visual editor. * * @since 2.1.0 * * @param bool $wp_rich_edit Whether the user can access the visual editor. */ return apply_filters( 'user_can_richedit', $wp_rich_edit ); } /** * Find out which editor should be displayed by default. * * Works out which of the two editors to display as the current editor for a * user. The 'html' setting is for the "Text" editor tab. * * @since 2.5.0 * * @return string Either 'tinymce', or 'html', or 'test' */ function wp_default_editor() { $r = user_can_richedit() ? 'tinymce' : 'html'; // defaults if ( wp_get_current_user() ) { // look for cookie $ed = get_user_setting('editor', 'tinymce'); $r = ( in_array($ed, array('tinymce', 'html', 'test') ) ) ? $ed : $r; } /** * Filters which editor should be displayed by default. * * @since 2.5.0 * * @param string $r Which editor should be displayed by default. Either 'tinymce', 'html', or 'test'. */ return apply_filters( 'wp_default_editor', $r ); } /** * Renders an editor. * * Using this function is the proper way to output all needed components for both TinyMCE and Quicktags. * _WP_Editors should not be used directly. See https://core.trac.wordpress.org/ticket/17144. * * NOTE: Once initialized the TinyMCE editor cannot be safely moved in the DOM. For that reason * running wp_editor() inside of a meta box is not a good idea unless only Quicktags is used. * On the post edit screen several actions can be used to include additional editors * containing TinyMCE: 'edit_page_form', 'edit_form_advanced' and 'dbx_post_sidebar'. * See https://core.trac.wordpress.org/ticket/19173 for more information. * * @see _WP_Editors::editor() * @since 3.3.0 * * @param string $content Initial content for the editor. * @param string $editor_id HTML ID attribute value for the textarea and TinyMCE. Can only be /[a-z]+/. * @param array $settings See _WP_Editors::editor(). */ function wp_editor( $content, $editor_id, $settings = array() ) { if ( ! class_exists( '_WP_Editors', false ) ) require( ABSPATH . WPINC . '/class-wp-editor.php' ); _WP_Editors::editor($content, $editor_id, $settings); } /** * Outputs the editor scripts, stylesheets, and default settings. * * The editor can be initialized when needed after page load. * See wp.editor.initialize() in wp-admin/js/editor.js for initialization options. * * @uses _WP_Editors * @since 4.8.0 */ function wp_enqueue_editor() { if ( ! class_exists( '_WP_Editors', false ) ) { require( ABSPATH . WPINC . '/class-wp-editor.php' ); } _WP_Editors::enqueue_default_editor(); } /** * Enqueue assets needed by the code editor for the given settings. * * @since 4.9.0 * * @see wp_enqueue_editor() * @see _WP_Editors::parse_settings() * @param array $args { * Args. * * @type string $type The MIME type of the file to be edited. * @type string $file Filename to be edited. Extension is used to sniff the type. Can be supplied as alternative to `$type` param. * @type WP_Theme $theme Theme being edited when on theme editor. * @type string $plugin Plugin being edited when on plugin editor. * @type array $codemirror Additional CodeMirror setting overrides. * @type array $csslint CSSLint rule overrides. * @type array $jshint JSHint rule overrides. * @type array $htmlhint JSHint rule overrides. * } * @returns array|false Settings for the enqueued code editor, or false if the editor was not enqueued . */ function wp_enqueue_code_editor( $args ) { if ( is_user_logged_in() && 'false' === wp_get_current_user()->syntax_highlighting ) { return false; } $settings = array( 'codemirror' => array( 'indentUnit' => 4, 'indentWithTabs' => true, 'inputStyle' => 'contenteditable', 'lineNumbers' => true, 'lineWrapping' => true, 'styleActiveLine' => true, 'continueComments' => true, 'extraKeys' => array( 'Ctrl-Space' => 'autocomplete', 'Ctrl-/' => 'toggleComment', 'Cmd-/' => 'toggleComment', 'Alt-F' => 'findPersistent', 'Ctrl-F' => 'findPersistent', 'Cmd-F' => 'findPersistent', ), 'direction' => 'ltr', // Code is shown in LTR even in RTL languages. 'gutters' => array(), ), 'csslint' => array( 'errors' => true, // Parsing errors. 'box-model' => true, 'display-property-grouping' => true, 'duplicate-properties' => true, 'known-properties' => true, 'outline-none' => true, ), 'jshint' => array( // The following are copied from . 'boss' => true, 'curly' => true, 'eqeqeq' => true, 'eqnull' => true, 'es3' => true, 'expr' => true, 'immed' => true, 'noarg' => true, 'nonbsp' => true, 'onevar' => true, 'quotmark' => 'single', 'trailing' => true, 'undef' => true, 'unused' => true, 'browser' => true, 'globals' => array( '_' => false, 'Backbone' => false, 'jQuery' => false, 'JSON' => false, 'wp' => false, ), ), 'htmlhint' => array( 'tagname-lowercase' => true, 'attr-lowercase' => true, 'attr-value-double-quotes' => false, 'doctype-first' => false, 'tag-pair' => true, 'spec-char-escape' => true, 'id-unique' => true, 'src-not-empty' => true, 'attr-no-duplication' => true, 'alt-require' => true, 'space-tab-mixed-disabled' => 'tab', 'attr-unsafe-chars' => true, ), ); $type = ''; if ( isset( $args['type'] ) ) { $type = $args['type']; // Remap MIME types to ones that CodeMirror modes will recognize. if ( 'application/x-patch' === $type || 'text/x-patch' === $type ) { $type = 'text/x-diff'; } } elseif ( isset( $args['file'] ) && false !== strpos( basename( $args['file'] ), '.' ) ) { $extension = strtolower( pathinfo( $args['file'], PATHINFO_EXTENSION ) ); foreach ( wp_get_mime_types() as $exts => $mime ) { if ( preg_match( '!^(' . $exts . ')$!i', $extension ) ) { $type = $mime; break; } } // Supply any types that are not matched by wp_get_mime_types(). if ( empty( $type ) ) { switch ( $extension ) { case 'conf': $type = 'text/nginx'; break; case 'css': $type = 'text/css'; break; case 'diff': case 'patch': $type = 'text/x-diff'; break; case 'html': case 'htm': $type = 'text/html'; break; case 'http': $type = 'message/http'; break; case 'js': $type = 'text/javascript'; break; case 'json': $type = 'application/json'; break; case 'jsx': $type = 'text/jsx'; break; case 'less': $type = 'text/x-less'; break; case 'md': $type = 'text/x-gfm'; break; case 'php': case 'phtml': case 'php3': case 'php4': case 'php5': case 'php7': case 'phps': $type = 'application/x-httpd-php'; break; case 'scss': $type = 'text/x-scss'; break; case 'sass': $type = 'text/x-sass'; break; case 'sh': case 'bash': $type = 'text/x-sh'; break; case 'sql': $type = 'text/x-sql'; break; case 'svg': $type = 'application/svg+xml'; break; case 'xml': $type = 'text/xml'; break; case 'yml': case 'yaml': $type = 'text/x-yaml'; break; case 'txt': default: $type = 'text/plain'; break; } } } if ( 'text/css' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'css', 'lint' => true, 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); } elseif ( 'text/x-scss' === $type || 'text/x-less' === $type || 'text/x-sass' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => $type, 'lint' => false, 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); } elseif ( 'text/x-diff' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'diff', ) ); } elseif ( 'text/html' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'htmlmixed', 'lint' => true, 'autoCloseBrackets' => true, 'autoCloseTags' => true, 'matchTags' => array( 'bothTags' => true, ), ) ); if ( ! current_user_can( 'unfiltered_html' ) ) { $settings['htmlhint']['kses'] = wp_kses_allowed_html( 'post' ); } } elseif ( 'text/x-gfm' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'gfm', 'highlightFormatting' => true, ) ); } elseif ( 'application/javascript' === $type || 'text/javascript' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'javascript', 'lint' => true, 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); } elseif ( false !== strpos( $type, 'json' ) ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => array( 'name' => 'javascript', ), 'lint' => true, 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); if ( 'application/ld+json' === $type ) { $settings['codemirror']['mode']['jsonld'] = true; } else { $settings['codemirror']['mode']['json'] = true; } } elseif ( false !== strpos( $type, 'jsx' ) ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'jsx', 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); } elseif ( 'text/x-markdown' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'markdown', 'highlightFormatting' => true, ) ); } elseif ( 'text/nginx' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'nginx', ) ); } elseif ( 'application/x-httpd-php' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'php', 'autoCloseBrackets' => true, 'autoCloseTags' => true, 'matchBrackets' => true, 'matchTags' => array( 'bothTags' => true, ), ) ); } elseif ( 'text/x-sql' === $type || 'text/x-mysql' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'sql', 'autoCloseBrackets' => true, 'matchBrackets' => true, ) ); } elseif ( false !== strpos( $type, 'xml' ) ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'xml', 'autoCloseBrackets' => true, 'autoCloseTags' => true, 'matchTags' => array( 'bothTags' => true, ), ) ); } elseif ( 'text/x-yaml' === $type ) { $settings['codemirror'] = array_merge( $settings['codemirror'], array( 'mode' => 'yaml', ) ); } else { $settings['codemirror']['mode'] = $type; } if ( ! empty( $settings['codemirror']['lint'] ) ) { $settings['codemirror']['gutters'][] = 'CodeMirror-lint-markers'; } // Let settings supplied via args override any defaults. foreach ( wp_array_slice_assoc( $args, array( 'codemirror', 'csslint', 'jshint', 'htmlhint' ) ) as $key => $value ) { $settings[ $key ] = array_merge( $settings[ $key ], $value ); } /** * Filters settings that are passed into the code editor. * * Returning a falsey value will disable the syntax-highlighting code editor. * * @since 4.9.0 * * @param array $settings The array of settings passed to the code editor. A falsey value disables the editor. * @param array $args { * Args passed when calling `wp_enqueue_code_editor()`. * * @type string $type The MIME type of the file to be edited. * @type string $file Filename being edited. * @type WP_Theme $theme Theme being edited when on theme editor. * @type string $plugin Plugin being edited when on plugin editor. * @type array $codemirror Additional CodeMirror setting overrides. * @type array $csslint CSSLint rule overrides. * @type array $jshint JSHint rule overrides. * @type array $htmlhint JSHint rule overrides. * } */ $settings = apply_filters( 'wp_code_editor_settings', $settings, $args ); if ( empty( $settings ) || empty( $settings['codemirror'] ) ) { return false; } wp_enqueue_script( 'code-editor' ); wp_enqueue_style( 'code-editor' ); if ( isset( $settings['codemirror']['mode'] ) ) { $mode = $settings['codemirror']['mode']; if ( is_string( $mode ) ) { $mode = array( 'name' => $mode, ); } if ( ! empty( $settings['codemirror']['lint'] ) ) { switch ( $mode['name'] ) { case 'css': case 'text/css': case 'text/x-scss': case 'text/x-less': wp_enqueue_script( 'csslint' ); break; case 'htmlmixed': case 'text/html': case 'php': case 'application/x-httpd-php': case 'text/x-php': wp_enqueue_script( 'htmlhint' ); wp_enqueue_script( 'csslint' ); wp_enqueue_script( 'jshint' ); if ( ! current_user_can( 'unfiltered_html' ) ) { wp_enqueue_script( 'htmlhint-kses' ); } break; case 'javascript': case 'application/ecmascript': case 'application/json': case 'application/javascript': case 'application/ld+json': case 'text/typescript': case 'application/typescript': wp_enqueue_script( 'jshint' ); wp_enqueue_script( 'jsonlint' ); break; } } } wp_add_inline_script( 'code-editor', sprintf( 'jQuery.extend( wp.codeEditor.defaultSettings, %s );', wp_json_encode( $settings ) ) ); /** * Fires when scripts and styles are enqueued for the code editor. * * @since 4.9.0 * * @param array $settings Settings for the enqueued code editor. */ do_action( 'wp_enqueue_code_editor', $settings ); return $settings; } /** * Retrieves the contents of the search WordPress query variable. * * The search query string is passed through esc_attr() to ensure that it is safe * for placing in an html attribute. * * @since 2.3.0 * * @param bool $escaped Whether the result is escaped. Default true. * Only use when you are later escaping it. Do not use unescaped. * @return string */ function get_search_query( $escaped = true ) { /** * Filters the contents of the search query variable. * * @since 2.3.0 * * @param mixed $search Contents of the search query variable. */ $query = apply_filters( 'get_search_query', get_query_var( 's' ) ); if ( $escaped ) $query = esc_attr( $query ); return $query; } /** * Displays the contents of the search query variable. * * The search query string is passed through esc_attr() to ensure that it is safe * for placing in an html attribute. * * @since 2.1.0 */ function the_search_query() { /** * Filters the contents of the search query variable for display. * * @since 2.3.0 * * @param mixed $search Contents of the search query variable. */ echo esc_attr( apply_filters( 'the_search_query', get_search_query( false ) ) ); } /** * Gets the language attributes for the html tag. * * Builds up a set of html attributes containing the text direction and language * information for the page. * * @since 4.3.0 * * @param string $doctype Optional. The type of html document. Accepts 'xhtml' or 'html'. Default 'html'. */ function get_language_attributes( $doctype = 'html' ) { $attributes = array(); if ( function_exists( 'is_rtl' ) && is_rtl() ) $attributes[] = 'dir="rtl"'; if ( $lang = get_bloginfo( 'language' ) ) { if ( get_option( 'html_type' ) == 'text/html' || $doctype == 'html' ) { $attributes[] = 'lang="' . esc_attr( $lang ) . '"'; } if ( get_option( 'html_type' ) != 'text/html' || $doctype == 'xhtml' ) { $attributes[] = 'xml:lang="' . esc_attr( $lang ) . '"'; } } $output = implode(' ', $attributes); /** * Filters the language attributes for display in the html tag. * * @since 2.5.0 * @since 4.3.0 Added the `$doctype` parameter. * * @param string $output A space-separated list of language attributes. * @param string $doctype The type of html document (xhtml|html). */ return apply_filters( 'language_attributes', $output, $doctype ); } /** * Displays the language attributes for the html tag. * * Builds up a set of html attributes containing the text direction and language * information for the page. * * @since 2.1.0 * @since 4.3.0 Converted into a wrapper for get_language_attributes(). * * @param string $doctype Optional. The type of html document. Accepts 'xhtml' or 'html'. Default 'html'. */ function language_attributes( $doctype = 'html' ) { echo get_language_attributes( $doctype ); } /** * Retrieve paginated link for archive post pages. * * Technically, the function can be used to create paginated link list for any * area. The 'base' argument is used to reference the url, which will be used to * create the paginated links. The 'format' argument is then used for replacing * the page number. It is however, most likely and by default, to be used on the * archive post pages. * * The 'type' argument controls format of the returned value. The default is * 'plain', which is just a string with the links separated by a newline * character. The other possible values are either 'array' or 'list'. The * 'array' value will return an array of the paginated link list to offer full * control of display. The 'list' value will place all of the paginated links in * an unordered HTML list. * * The 'total' argument is the total amount of pages and is an integer. The * 'current' argument is the current page number and is also an integer. * * An example of the 'base' argument is "http://example.com/all_posts.php%_%" * and the '%_%' is required. The '%_%' will be replaced by the contents of in * the 'format' argument. An example for the 'format' argument is "?page=%#%" * and the '%#%' is also required. The '%#%' will be replaced with the page * number. * * You can include the previous and next links in the list by setting the * 'prev_next' argument to true, which it is by default. You can set the * previous text, by using the 'prev_text' argument. You can set the next text * by setting the 'next_text' argument. * * If the 'show_all' argument is set to true, then it will show all of the pages * instead of a short list of the pages near the current page. By default, the * 'show_all' is set to false and controlled by the 'end_size' and 'mid_size' * arguments. The 'end_size' argument is how many numbers on either the start * and the end list edges, by default is 1. The 'mid_size' argument is how many * numbers to either side of current page, but not including current page. * * It is possible to add query vars to the link by using the 'add_args' argument * and see add_query_arg() for more information. * * The 'before_page_number' and 'after_page_number' arguments allow users to * augment the links themselves. Typically this might be to add context to the * numbered links so that screen reader users understand what the links are for. * The text strings are added before and after the page number - within the * anchor tag. * * @since 2.1.0 * @since 4.9.0 Added the `aria_current` argument. * * @global WP_Query $wp_query * @global WP_Rewrite $wp_rewrite * * @param string|array $args { * Optional. Array or string of arguments for generating paginated links for archives. * * @type string $base Base of the paginated url. Default empty. * @type string $format Format for the pagination structure. Default empty. * @type int $total The total amount of pages. Default is the value WP_Query's * `max_num_pages` or 1. * @type int $current The current page number. Default is 'paged' query var or 1. * @type string $aria_current The value for the aria-current attribute. Possible values are 'page', * 'step', 'location', 'date', 'time', 'true', 'false'. Default is 'page'. * @type bool $show_all Whether to show all pages. Default false. * @type int $end_size How many numbers on either the start and the end list edges. * Default 1. * @type int $mid_size How many numbers to either side of the current pages. Default 2. * @type bool $prev_next Whether to include the previous and next links in the list. Default true. * @type bool $prev_text The previous page text. Default '« Previous'. * @type bool $next_text The next page text. Default 'Next »'. * @type string $type Controls format of the returned value. Possible values are 'plain', * 'array' and 'list'. Default is 'plain'. * @type array $add_args An array of query args to add. Default false. * @type string $add_fragment A string to append to each link. Default empty. * @type string $before_page_number A string to appear before the page number. Default empty. * @type string $after_page_number A string to append after the page number. Default empty. * } * @return array|string|void String of page links or array of page links. */ function paginate_links( $args = '' ) { global $wp_query, $wp_rewrite; // Setting up default values based on the current URL. $pagenum_link = html_entity_decode( get_pagenum_link() ); $url_parts = explode( '?', $pagenum_link ); // Get max pages and current page out of the current query, if available. $total = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1; $current = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1; // Append the format placeholder to the base URL. $pagenum_link = trailingslashit( $url_parts[0] ) . '%_%'; // URL base depends on permalink settings. $format = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : ''; $format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%'; $defaults = array( 'base' => $pagenum_link, // http://example.com/all_posts.php%_% : %_% is replaced by format (below) 'format' => $format, // ?page=%#% : %#% is replaced by the page number 'total' => $total, 'current' => $current, 'aria_current' => 'page', 'show_all' => false, 'prev_next' => true, 'prev_text' => __( '« Previous' ), 'next_text' => __( 'Next »' ), 'end_size' => 1, 'mid_size' => 2, 'type' => 'plain', 'add_args' => array(), // array of query args to add 'add_fragment' => '', 'before_page_number' => '', 'after_page_number' => '', ); $args = wp_parse_args( $args, $defaults ); if ( ! is_array( $args['add_args'] ) ) { $args['add_args'] = array(); } // Merge additional query vars found in the original URL into 'add_args' array. if ( isset( $url_parts[1] ) ) { // Find the format argument. $format = explode( '?', str_replace( '%_%', $args['format'], $args['base'] ) ); $format_query = isset( $format[1] ) ? $format[1] : ''; wp_parse_str( $format_query, $format_args ); // Find the query args of the requested URL. wp_parse_str( $url_parts[1], $url_query_args ); // Remove the format argument from the array of query arguments, to avoid overwriting custom format. foreach ( $format_args as $format_arg => $format_arg_value ) { unset( $url_query_args[ $format_arg ] ); } $args['add_args'] = array_merge( $args['add_args'], urlencode_deep( $url_query_args ) ); } // Who knows what else people pass in $args $total = (int) $args['total']; if ( $total < 2 ) { return; } $current = (int) $args['current']; $end_size = (int) $args['end_size']; // Out of bounds? Make it the default. if ( $end_size < 1 ) { $end_size = 1; } $mid_size = (int) $args['mid_size']; if ( $mid_size < 0 ) { $mid_size = 2; } $add_args = $args['add_args']; $r = ''; $page_links = array(); $dots = false; if ( $args['prev_next'] && $current && 1 < $current ) : $link = str_replace( '%_%', 2 == $current ? '' : $args['format'], $args['base'] ); $link = str_replace( '%#%', $current - 1, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** * Filters the paginated links for the given archive pages. * * @since 3.0.0 * * @param string $link The paginated link URL. */ $page_links[] = ''; endif; for ( $n = 1; $n <= $total; $n++ ) : if ( $n == $current ) : $page_links[] = "" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . ""; $dots = true; else : if ( $args['show_all'] || ( $n <= $end_size || ( $current && $n >= $current - $mid_size && $n <= $current + $mid_size ) || $n > $total - $end_size ) ) : $link = str_replace( '%_%', 1 == $n ? '' : $args['format'], $args['base'] ); $link = str_replace( '%#%', $n, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** This filter is documented in wp-includes/general-template.php */ $page_links[] = "" . $args['before_page_number'] . number_format_i18n( $n ) . $args['after_page_number'] . ""; $dots = true; elseif ( $dots && ! $args['show_all'] ) : $page_links[] = '' . __( '…' ) . ''; $dots = false; endif; endif; endfor; if ( $args['prev_next'] && $current && $current < $total ) : $link = str_replace( '%_%', $args['format'], $args['base'] ); $link = str_replace( '%#%', $current + 1, $link ); if ( $add_args ) $link = add_query_arg( $add_args, $link ); $link .= $args['add_fragment']; /** This filter is documented in wp-includes/general-template.php */ $page_links[] = ''; endif; switch ( $args['type'] ) { case 'array' : return $page_links; case 'list' : $r .= "\n"; break; default : $r = join("\n", $page_links); break; } return $r; } /** * Registers an admin colour scheme css file. * * Allows a plugin to register a new admin colour scheme. For example: * * wp_admin_css_color( 'classic', __( 'Classic' ), admin_url( "css/colors-classic.css" ), array( * '#07273E', '#14568A', '#D54E21', '#2683AE' * ) ); * * @since 2.5.0 * * @global array $_wp_admin_css_colors * * @param string $key The unique key for this theme. * @param string $name The name of the theme. * @param string $url The URL of the CSS file containing the color scheme. * @param array $colors Optional. An array of CSS color definition strings which are used * to give the user a feel for the theme. * @param array $icons { * Optional. CSS color definitions used to color any SVG icons. * * @type string $base SVG icon base color. * @type string $focus SVG icon color on focus. * @type string $current SVG icon color of current admin menu link. * } */ function wp_admin_css_color( $key, $name, $url, $colors = array(), $icons = array() ) { global $_wp_admin_css_colors; if ( !isset($_wp_admin_css_colors) ) $_wp_admin_css_colors = array(); $_wp_admin_css_colors[$key] = (object) array( 'name' => $name, 'url' => $url, 'colors' => $colors, 'icon_colors' => $icons, ); } /** * Registers the default Admin color schemes * * @since 3.0.0 */ function register_admin_color_schemes() { $suffix = is_rtl() ? '-rtl' : ''; $suffix .= SCRIPT_DEBUG ? '' : '.min'; wp_admin_css_color( 'fresh', _x( 'Default', 'admin color scheme' ), false, array( '#222', '#333', '#0073aa', '#00a0d2' ), array( 'base' => '#82878c', 'focus' => '#00a0d2', 'current' => '#fff' ) ); // Other color schemes are not available when running out of src if ( false !== strpos( get_bloginfo( 'version' ), '-src' ) ) { return; } wp_admin_css_color( 'light', _x( 'Light', 'admin color scheme' ), admin_url( "css/colors/light/colors$suffix.css" ), array( '#e5e5e5', '#999', '#d64e07', '#04a4cc' ), array( 'base' => '#999', 'focus' => '#ccc', 'current' => '#ccc' ) ); wp_admin_css_color( 'blue', _x( 'Blue', 'admin color scheme' ), admin_url( "css/colors/blue/colors$suffix.css" ), array( '#096484', '#4796b3', '#52accc', '#74B6CE' ), array( 'base' => '#e5f8ff', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'midnight', _x( 'Midnight', 'admin color scheme' ), admin_url( "css/colors/midnight/colors$suffix.css" ), array( '#25282b', '#363b3f', '#69a8bb', '#e14d43' ), array( 'base' => '#f1f2f3', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'sunrise', _x( 'Sunrise', 'admin color scheme' ), admin_url( "css/colors/sunrise/colors$suffix.css" ), array( '#b43c38', '#cf4944', '#dd823b', '#ccaf0b' ), array( 'base' => '#f3f1f1', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'ectoplasm', _x( 'Ectoplasm', 'admin color scheme' ), admin_url( "css/colors/ectoplasm/colors$suffix.css" ), array( '#413256', '#523f6d', '#a3b745', '#d46f15' ), array( 'base' => '#ece6f6', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'ocean', _x( 'Ocean', 'admin color scheme' ), admin_url( "css/colors/ocean/colors$suffix.css" ), array( '#627c83', '#738e96', '#9ebaa0', '#aa9d88' ), array( 'base' => '#f2fcff', 'focus' => '#fff', 'current' => '#fff' ) ); wp_admin_css_color( 'coffee', _x( 'Coffee', 'admin color scheme' ), admin_url( "css/colors/coffee/colors$suffix.css" ), array( '#46403c', '#59524c', '#c7a589', '#9ea476' ), array( 'base' => '#f3f2f1', 'focus' => '#fff', 'current' => '#fff' ) ); } /** * Displays the URL of a WordPress admin CSS file. * * @see WP_Styles::_css_href and its {@see 'style_loader_src'} filter. * * @since 2.3.0 * * @param string $file file relative to wp-admin/ without its ".css" extension. * @return string */ function wp_admin_css_uri( $file = 'wp-admin' ) { if ( defined('WP_INSTALLING') ) { $_file = "./$file.css"; } else { $_file = admin_url("$file.css"); } $_file = add_query_arg( 'version', get_bloginfo( 'version' ), $_file ); /** * Filters the URI of a WordPress admin CSS file. * * @since 2.3.0 * * @param string $_file Relative path to the file with query arguments attached. * @param string $file Relative path to the file, minus its ".css" extension. */ return apply_filters( 'wp_admin_css_uri', $_file, $file ); } /** * Enqueues or directly prints a stylesheet link to the specified CSS file. * * "Intelligently" decides to enqueue or to print the CSS file. If the * {@see 'wp_print_styles'} action has *not* yet been called, the CSS file will be * enqueued. If the {@see 'wp_print_styles'} action has been called, the CSS link will * be printed. Printing may be forced by passing true as the $force_echo * (second) parameter. * * For backward compatibility with WordPress 2.3 calling method: If the $file * (first) parameter does not correspond to a registered CSS file, we assume * $file is a file relative to wp-admin/ without its ".css" extension. A * stylesheet link to that generated URL is printed. * * @since 2.3.0 * * @param string $file Optional. Style handle name or file name (without ".css" extension) relative * to wp-admin/. Defaults to 'wp-admin'. * @param bool $force_echo Optional. Force the stylesheet link to be printed rather than enqueued. */ function wp_admin_css( $file = 'wp-admin', $force_echo = false ) { // For backward compatibility $handle = 0 === strpos( $file, 'css/' ) ? substr( $file, 4 ) : $file; if ( wp_styles()->query( $handle ) ) { if ( $force_echo || did_action( 'wp_print_styles' ) ) // we already printed the style queue. Print this one immediately wp_print_styles( $handle ); else // Add to style queue wp_enqueue_style( $handle ); return; } /** * Filters the stylesheet link to the specified CSS file. * * If the site is set to display right-to-left, the RTL stylesheet link * will be used instead. * * @since 2.3.0 * @param string $stylesheet_link HTML link element for the stylesheet. * @param string $file Style handle name or filename (without ".css" extension) * relative to wp-admin/. Defaults to 'wp-admin'. */ echo apply_filters( 'wp_admin_css', "\n", $file ); if ( function_exists( 'is_rtl' ) && is_rtl() ) { /** This filter is documented in wp-includes/general-template.php */ echo apply_filters( 'wp_admin_css', "\n", "$file-rtl" ); } } /** * Enqueues the default ThickBox js and css. * * If any of the settings need to be changed, this can be done with another js * file similar to media-upload.js. That file should * require array('thickbox') to ensure it is loaded after. * * @since 2.5.0 */ function add_thickbox() { wp_enqueue_script( 'thickbox' ); wp_enqueue_style( 'thickbox' ); if ( is_network_admin() ) add_action( 'admin_head', '_thickbox_path_admin_subfolder' ); } /** * Displays the XHTML generator that is generated on the wp_head hook. * * See {@see 'wp_head'}. * * @since 2.5.0 */ function wp_generator() { /** * Filters the output of the XHTML generator tag. * * @since 2.5.0 * * @param string $generator_type The XHTML generator. */ the_generator( apply_filters( 'wp_generator_type', 'xhtml' ) ); } /** * Display the generator XML or Comment for RSS, ATOM, etc. * * Returns the correct generator type for the requested output format. Allows * for a plugin to filter generators overall the {@see 'the_generator'} filter. * * @since 2.5.0 * * @param string $type The type of generator to output - (html|xhtml|atom|rss2|rdf|comment|export). */ function the_generator( $type ) { /** * Filters the output of the XHTML generator tag for display. * * @since 2.5.0 * * @param string $generator_type The generator output. * @param string $type The type of generator to output. Accepts 'html', * 'xhtml', 'atom', 'rss2', 'rdf', 'comment', 'export'. */ echo apply_filters( 'the_generator', get_the_generator($type), $type ) . "\n"; } /** * Creates the generator XML or Comment for RSS, ATOM, etc. * * Returns the correct generator type for the requested output format. Allows * for a plugin to filter generators on an individual basis using the * {@see 'get_the_generator_$type'} filter. * * @since 2.5.0 * * @param string $type The type of generator to return - (html|xhtml|atom|rss2|rdf|comment|export). * @return string|void The HTML content for the generator. */ function get_the_generator( $type = '' ) { if ( empty( $type ) ) { $current_filter = current_filter(); if ( empty( $current_filter ) ) return; switch ( $current_filter ) { case 'rss2_head' : case 'commentsrss2_head' : $type = 'rss2'; break; case 'rss_head' : case 'opml_head' : $type = 'comment'; break; case 'rdf_header' : $type = 'rdf'; break; case 'atom_head' : case 'comments_atom_head' : case 'app_head' : $type = 'atom'; break; } } switch ( $type ) { case 'html': $gen = ''; break; case 'xhtml': $gen = ''; break; case 'atom': $gen = 'WordPress'; break; case 'rss2': $gen = '' . esc_url_raw( 'https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) ) . ''; break; case 'rdf': $gen = ''; break; case 'comment': $gen = ''; break; case 'export': $gen = ''; break; } /** * Filters the HTML for the retrieved generator type. * * The dynamic portion of the hook name, `$type`, refers to the generator type. * * @since 2.5.0 * * @param string $gen The HTML markup output to wp_head(). * @param string $type The type of generator. Accepts 'html', 'xhtml', 'atom', * 'rss2', 'rdf', 'comment', 'export'. */ return apply_filters( "get_the_generator_{$type}", $gen, $type ); } /** * Outputs the html checked attribute. * * Compares the first two arguments and if identical marks as checked * * @since 1.0.0 * * @param mixed $checked One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function checked( $checked, $current = true, $echo = true ) { return __checked_selected_helper( $checked, $current, $echo, 'checked' ); } /** * Outputs the html selected attribute. * * Compares the first two arguments and if identical marks as selected * * @since 1.0.0 * * @param mixed $selected One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function selected( $selected, $current = true, $echo = true ) { return __checked_selected_helper( $selected, $current, $echo, 'selected' ); } /** * Outputs the html disabled attribute. * * Compares the first two arguments and if identical marks as disabled * * @since 3.0.0 * * @param mixed $disabled One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function disabled( $disabled, $current = true, $echo = true ) { return __checked_selected_helper( $disabled, $current, $echo, 'disabled' ); } /** * Outputs the html readonly attribute. * * Compares the first two arguments and if identical marks as readonly * * @since 4.9.0 * * @param mixed $readonly One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @return string html attribute or empty string */ function readonly( $readonly, $current = true, $echo = true ) { return __checked_selected_helper( $readonly, $current, $echo, 'readonly' ); } /** * Private helper function for checked, selected, disabled and readonly. * * Compares the first two arguments and if identical marks as $type * * @since 2.8.0 * @access private * * @param mixed $helper One of the values to compare * @param mixed $current (true) The other value to compare if not just true * @param bool $echo Whether to echo or just return the string * @param string $type The type of checked|selected|disabled|readonly we are doing * @return string html attribute or empty string */ function __checked_selected_helper( $helper, $current, $echo, $type ) { if ( (string) $helper === (string) $current ) $result = " $type='$type'"; else $result = ''; if ( $echo ) echo $result; return $result; } /** * Default settings for heartbeat * * Outputs the nonce used in the heartbeat XHR * * @since 3.6.0 * * @param array $settings * @return array $settings */ function wp_heartbeat_settings( $settings ) { if ( ! is_admin() ) $settings['ajaxurl'] = admin_url( 'admin-ajax.php', 'relative' ); if ( is_user_logged_in() ) $settings['nonce'] = wp_create_nonce( 'heartbeat-nonce' ); return $settings; } Return-Path: Delivered-To: elle@unifinance.co.za Received: from chs26.ampledns.com by chs26.ampledns.com with LMTP id aNnjEc02aVsMXSgATy8HrA for ; Tue, 07 Aug 2018 08:06:05 +0200 Return-path: Envelope-to: elle@unifinance.co.za Delivery-date: Tue, 07 Aug 2018 08:06:05 +0200 Received: from mailb42.outbound.eversrv.com ([68.169.14.42]:42360) by chs26.ampledns.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1fmv5E-00B5Gv-39 for elle@unifinance.co.za; Tue, 07 Aug 2018 08:06:05 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=eversrv; d=hyperli.com; h=Reply-To:List-Unsubscribe:From:To:Subject:MIME-Version:Date:Message-Id: Content-Type; i=hello@hyperli.com; bh=BmCSIYCwghU1qsMeNur7Na8TrXBnXFr9hv64XUmeQ2Y=; b=mOPBmm8ccQcKLTR9lGi5yZpgR/e84yI7/OVrPqIaw3xiq8evoNPgVvSApdx7l3m4VN7NBAOyfW+m Ntnb8lgoLD44g6Ol1mEEV1VzmvqhCEQeWe8Jq+mBHCYAXajJ3xEyrnZbUEI/hbc6cyfBJaJER9DA 1e6awsFfoO7ylGG4+dKkcVZe3vorSFu8tNv/9k2QSbeFA/tlQjcN6IejGvBPjqjzwyKI2aQ8E4HX Fu1TMAWbuIw3bm4yvwIEObln3zoYG9t0Gl4Mib+h0gOKiLxdrpSwYl3jPaqnGr7UrPY1/ysmUIWm FMblrJ+N/EfXJznIpLvjs9DgkndQ02KevFuTbA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=eversrv; d=eversrv.com; h=Reply-To:List-Unsubscribe:From:To:Subject:MIME-Version:Date:Message-Id: Content-Type; bh=BmCSIYCwghU1qsMeNur7Na8TrXBnXFr9hv64XUmeQ2Y=; b=WKCAKCwe6b7v2qBKSEwfVwv2M2+4dM61Tc4/JqMgbNhtasB55KD3kt1x80CI4aL8SUjrjDGIIoTP MWXHzc4Tb21+UDcZcRjwjedfnRAoxRUxVMdSRMw+xpL5QoZ/a1tNJI/Q+bna6harPs+V32Pi0u5Y 56ZJmarrwHc/3JbNgqrfO1Ocu+UL3MqdUSB9cFc9M8eWbzRL14rKrzlgtmu1YfPPGaGgJuMwaMQ2 VbclHlE7tEZuDeFeaYgeGWP3gk1my3VuRNYoCT5vkSHKTyHoTCWIsd+mk7ENKNitcvBg1tWLmZlr iXsRtjoqKCpR7IX/WsWtTRJ67jbRBeU18Xq9WQ== Received: from localhost (10.10.204.20) by mailb42.outbound.eversrv.com id hd4r1g2ctlk0 for ; Tue, 7 Aug 2018 08:02:15 +0200 (envelope-from ) Reply-To: hello@hyperli.com X-Priority: 3 X-Report-Abuse: List-Unsubscribe: , X-Data: mzaEcoS2tRXy0xkm.cb559913513e135c X-Data-EUID: 761d327acfda2e877fa2af27c63a23f5 X-Data-Rating: 60 X-Contact-Score: 5 From: Hyperli Shopping To: Eleanore Subject: =?utf-8?B?U21hcnQgU2hvcHBpbmcgU3RhcnRzIEhlcmUhwqDwn5SN8J+Ygw==?= MIME-Version: 1.0 Date: Tue, 07 Aug 2018 08:02:01 +0200 Message-Id: <20180807808715.38853.173@hyperli.com> Content-Type: multipart/alternative; boundary="20180807808715:38853:173" X-Spam-Status: No, score= X-Spam-Score: X-Spam-Bar: X-Ham-Report: X-Spam-Flag: NO This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. --20180807808715:38853:173 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hyperli® ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347552 ) FOOD & DRINK ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347553 ) ACTIVITIES ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347554 ) BEAUTY & SPA ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347555 ) HEALTH & FITNESS ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347556 ) GETAWAYS ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347557 ) SHOPPING ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347558 ) ( http://hyperli.evlink7.net/servlet/link/3371/21281/12197877/347559 ) Hyperli true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'form' => array( 'action' => true, 'accept' => true, 'accept-charset' => true, 'enctype' => true, 'method' => true, 'name' => true, 'target' => true, ), 'h1' => array( 'align' => true, ), 'h2' => array( 'align' => true, ), 'h3' => array( 'align' => true, ), 'h4' => array( 'align' => true, ), 'h5' => array( 'align' => true, ), 'h6' => array( 'align' => true, ), 'header' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'hgroup' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'hr' => array( 'align' => true, 'noshade' => true, 'size' => true, 'width' => true, ), 'i' => array(), 'img' => array( 'alt' => true, 'align' => true, 'border' => true, 'height' => true, 'hspace' => true, 'longdesc' => true, 'vspace' => true, 'src' => true, 'usemap' => true, 'width' => true, ), 'ins' => array( 'datetime' => true, 'cite' => true, ), 'kbd' => array(), 'label' => array( 'for' => true, ), 'legend' => array( 'align' => true, ), 'li' => array( 'align' => true, 'value' => true, ), 'map' => array( 'name' => true, ), 'mark' => array(), 'menu' => array( 'type' => true, ), 'nav' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'p' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'pre' => array( 'width' => true, ), 'q' => array( 'cite' => true, ), 's' => array(), 'samp' => array(), 'span' => array( 'dir' => true, 'align' => true, 'lang' => true, 'xml:lang' => true, ), 'section' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'small' => array(), 'strike' => array(), 'strong' => array(), 'sub' => array(), 'summary' => array( 'align' => true, 'dir' => true, 'lang' => true, 'xml:lang' => true, ), 'sup' => array(), 'table' => array( 'align' => true, 'bgcolor' => true, 'border' => true, 'cellpadding' => true, 'cellspacing' => true, 'dir' => true, 'rules' => true, 'summary' => true, 'width' => true, ), 'tbody' => array( 'align' => true, 'char' => true, 'charoff' => true, 'valign' => true, ), 'td' => array( 'abbr' => true, 'align' => true, 'axis' => true, 'bgcolor' => true, 'char' => true, 'charoff' => true, 'colspan' => true, 'dir' => true, 'headers' => true, 'height' => true, 'nowrap' => true, 'rowspan' => true, 'scope' => true, 'valign' => true, 'width' => true, ), 'textarea' => array( 'cols' => true, 'rows' => true, 'disabled' => true, 'name' => true, 'readonly' => true, ), 'tfoot' => array( 'align' => true, 'char' => true, 'charoff' => true, 'valign' => true, ), 'th' => array( 'abbr' => true, 'align' => true, 'axis' => true, 'bgcolor' => true, 'char' => true, 'charoff' => true, 'colspan' => true, 'headers' => true, 'height' => true, 'nowrap' => true, 'rowspan' => true, 'scope' => true, 'valign' => true, 'width' => true, ), 'thead' => array( 'align' => true, 'char' => true, 'charoff' => true, 'valign' => true, ), 'title' => array(), 'tr' => array( 'align' => true, 'bgcolor' => true, 'char' => true, 'charoff' => true, 'valign' => true, ), 'track' => array( 'default' => true, 'kind' => true, 'label' => true, 'src' => true, 'srclang' => true, ), 'tt' => array(), 'u' => array(), 'ul' => array( 'type' => true, ), 'ol' => array( 'start' => true, 'type' => true, 'reversed' => true, ), 'var' => array(), 'video' => array( 'autoplay' => true, 'controls' => true, 'height' => true, 'loop' => true, 'muted' => true, 'poster' => true, 'preload' => true, 'src' => true, 'width' => true, ), ); /** * Kses allowed HTML elements. * * @global array $allowedtags * @since 1.0.0 */ $allowedtags = array( 'a' => array( 'href' => true, 'title' => true, ), 'abbr' => array( 'title' => true, ), 'acronym' => array( 'title' => true, ), 'b' => array(), 'blockquote' => array( 'cite' => true, ), 'cite' => array(), 'code' => array(), 'del' => array( 'datetime' => true, ), 'em' => array(), 'i' => array(), 'q' => array( 'cite' => true, ), 's' => array(), 'strike' => array(), 'strong' => array(), ); $allowedentitynames = array( 'nbsp', 'iexcl', 'cent', 'pound', 'curren', 'yen', 'brvbar', 'sect', 'uml', 'copy', 'ordf', 'laquo', 'not', 'shy', 'reg', 'macr', 'deg', 'plusmn', 'acute', 'micro', 'para', 'middot', 'cedil', 'ordm', 'raquo', 'iquest', 'Agrave', 'Aacute', 'Acirc', 'Atilde', 'Auml', 'Aring', 'AElig', 'Ccedil', 'Egrave', 'Eacute', 'Ecirc', 'Euml', 'Igrave', 'Iacute', 'Icirc', 'Iuml', 'ETH', 'Ntilde', 'Ograve', 'Oacute', 'Ocirc', 'Otilde', 'Ouml', 'times', 'Oslash', 'Ugrave', 'Uacute', 'Ucirc', 'Uuml', 'Yacute', 'THORN', 'szlig', 'agrave', 'aacute', 'acirc', 'atilde', 'auml', 'aring', 'aelig', 'ccedil', 'egrave', 'eacute', 'ecirc', 'euml', 'igrave', 'iacute', 'icirc', 'iuml', 'eth', 'ntilde', 'ograve', 'oacute', 'ocirc', 'otilde', 'ouml', 'divide', 'oslash', 'ugrave', 'uacute', 'ucirc', 'uuml', 'yacute', 'thorn', 'yuml', 'quot', 'amp', 'lt', 'gt', 'apos', 'OElig', 'oelig', 'Scaron', 'scaron', 'Yuml', 'circ', 'tilde', 'ensp', 'emsp', 'thinsp', 'zwnj', 'zwj', 'lrm', 'rlm', 'ndash', 'mdash', 'lsquo', 'rsquo', 'sbquo', 'ldquo', 'rdquo', 'bdquo', 'dagger', 'Dagger', 'permil', 'lsaquo', 'rsaquo', 'euro', 'fnof', 'Alpha', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zeta', 'Eta', 'Theta', 'Iota', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Xi', 'Omicron', 'Pi', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'Phi', 'Chi', 'Psi', 'Omega', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta', 'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu', 'xi', 'omicron', 'pi', 'rho', 'sigmaf', 'sigma', 'tau', 'upsilon', 'phi', 'chi', 'psi', 'omega', 'thetasym', 'upsih', 'piv', 'bull', 'hellip', 'prime', 'Prime', 'oline', 'frasl', 'weierp', 'image', 'real', 'trade', 'alefsym', 'larr', 'uarr', 'rarr', 'darr', 'harr', 'crarr', 'lArr', 'uArr', 'rArr', 'dArr', 'hArr', 'forall', 'part', 'exist', 'empty', 'nabla', 'isin', 'notin', 'ni', 'prod', 'sum', 'minus', 'lowast', 'radic', 'prop', 'infin', 'ang', 'and', 'or', 'cap', 'cup', 'int', 'sim', 'cong', 'asymp', 'ne', 'equiv', 'le', 'ge', 'sub', 'sup', 'nsub', 'sube', 'supe', 'oplus', 'otimes', 'perp', 'sdot', 'lceil', 'rceil', 'lfloor', 'rfloor', 'lang', 'rang', 'loz', 'spades', 'clubs', 'hearts', 'diams', 'sup1', 'sup2', 'sup3', 'frac14', 'frac12', 'frac34', 'there4', ); $allowedposttags = array_map( '_wp_add_global_attributes', $allowedposttags ); } else { $allowedtags = wp_kses_array_lc( $allowedtags ); $allowedposttags = wp_kses_array_lc( $allowedposttags ); } /** * Filters content and keeps only allowable HTML elements. * * This function makes sure that only the allowed HTML element names, attribute * names and attribute values plus only sane HTML entities will occur in * $string. You have to remove any slashes from PHP's magic quotes before you * call this function. * * The default allowed protocols are 'http', 'https', 'ftp', 'mailto', 'news', * 'irc', 'gopher', 'nntp', 'feed', 'telnet, 'mms', 'rtsp' and 'svn'. This * covers all common link protocols, except for 'javascript' which should not * be allowed for untrusted users. * * @since 1.0.0 * * @param string $string Content to filter through kses * @param array $allowed_html List of allowed HTML elements * @param array $allowed_protocols Optional. Allowed protocol in links. * @return string Filtered content with only allowed HTML elements */ function wp_kses( $string, $allowed_html, $allowed_protocols = array() ) { if ( empty( $allowed_protocols ) ) $allowed_protocols = wp_allowed_protocols(); $string = wp_kses_no_null( $string, array( 'slash_zero' => 'keep' ) ); $string = wp_kses_normalize_entities($string); $string = wp_kses_hook($string, $allowed_html, $allowed_protocols); // WP changed the order of these funcs and added args to wp_kses_hook return wp_kses_split($string, $allowed_html, $allowed_protocols); } /** * Filters one attribute only and ensures its value is allowed. * * This function has the advantage of being more secure than esc_attr() and can * escape data in some situations where wp_kses() must strip the whole attribute. * * @since 4.2.3 * * @param string $string The 'whole' attribute, including name and value. * @param string $element The element name to which the attribute belongs. * @return string Filtered attribute. */ function wp_kses_one_attr( $string, $element ) { $uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action'); $allowed_html = wp_kses_allowed_html( 'post' ); $allowed_protocols = wp_allowed_protocols(); $string = wp_kses_no_null( $string, array( 'slash_zero' => 'keep' ) ); // Preserve leading and trailing whitespace. $matches = array(); preg_match('/^\s*/', $string, $matches); $lead = $matches[0]; preg_match('/\s*$/', $string, $matches); $trail = $matches[0]; if ( empty( $trail ) ) { $string = substr( $string, strlen( $lead ) ); } else { $string = substr( $string, strlen( $lead ), -strlen( $trail ) ); } // Parse attribute name and value from input. $split = preg_split( '/\s*=\s*/', $string, 2 ); $name = $split[0]; if ( count( $split ) == 2 ) { $value = $split[1]; // Remove quotes surrounding $value. // Also guarantee correct quoting in $string for this one attribute. if ( '' == $value ) { $quote = ''; } else { $quote = $value[0]; } if ( '"' == $quote || "'" == $quote ) { if ( substr( $value, -1 ) != $quote ) { return ''; } $value = substr( $value, 1, -1 ); } else { $quote = '"'; } // Sanitize quotes, angle braces, and entities. $value = esc_attr( $value ); // Sanitize URI values. if ( in_array( strtolower( $name ), $uris ) ) { $value = wp_kses_bad_protocol( $value, $allowed_protocols ); } $string = "$name=$quote$value$quote"; $vless = 'n'; } else { $value = ''; $vless = 'y'; } // Sanitize attribute by name. wp_kses_attr_check( $name, $value, $string, $vless, $element, $allowed_html ); // Restore whitespace. return $lead . $string . $trail; } /** * Return a list of allowed tags and attributes for a given context. * * @since 3.5.0 * * @global array $allowedposttags * @global array $allowedtags * @global array $allowedentitynames * * @param string|array $context The context for which to retrieve tags. * Allowed values are post, strip, data, entities, or * the name of a field filter such as pre_user_description. * @return array List of allowed tags and their allowed attributes. */ function wp_kses_allowed_html( $context = '' ) { global $allowedposttags, $allowedtags, $allowedentitynames; if ( is_array( $context ) ) { /** * Filters HTML elements allowed for a given context. * * @since 3.5.0 * * @param array $context Context to judge allowed tags by. * @param string $context_type Context type (explicit). */ return apply_filters( 'wp_kses_allowed_html', $context, 'explicit' ); } switch ( $context ) { case 'post': /** This filter is documented in wp-includes/kses.php */ return apply_filters( 'wp_kses_allowed_html', $allowedposttags, $context ); case 'user_description': case 'pre_user_description': $tags = $allowedtags; $tags['a']['rel'] = true; /** This filter is documented in wp-includes/kses.php */ return apply_filters( 'wp_kses_allowed_html', $tags, $context ); case 'strip': /** This filter is documented in wp-includes/kses.php */ return apply_filters( 'wp_kses_allowed_html', array(), $context ); case 'entities': /** This filter is documented in wp-includes/kses.php */ return apply_filters( 'wp_kses_allowed_html', $allowedentitynames, $context); case 'data': default: /** This filter is documented in wp-includes/kses.php */ return apply_filters( 'wp_kses_allowed_html', $allowedtags, $context ); } } /** * You add any kses hooks here. * * There is currently only one kses WordPress hook, {@see 'pre_kses'}, and it is called here. * All parameters are passed to the hooks and expected to receive a string. * * @since 1.0.0 * * @param string $string Content to filter through kses * @param array $allowed_html List of allowed HTML elements * @param array $allowed_protocols Allowed protocol in links * @return string Filtered content through {@see 'pre_kses'} hook. */ function wp_kses_hook( $string, $allowed_html, $allowed_protocols ) { /** * Filters content to be run through kses. * * @since 2.3.0 * * @param string $string Content to run through kses. * @param array $allowed_html Allowed HTML elements. * @param array $allowed_protocols Allowed protocol in links. */ return apply_filters( 'pre_kses', $string, $allowed_html, $allowed_protocols ); } /** * This function returns kses' version number. * * @since 1.0.0 * * @return string KSES Version Number */ function wp_kses_version() { return '0.2.2'; } /** * Searches for HTML tags, no matter how malformed. * * It also matches stray ">" characters. * * @since 1.0.0 * * @global array $pass_allowed_html * @global array $pass_allowed_protocols * * @param string $string Content to filter * @param array $allowed_html Allowed HTML elements * @param array $allowed_protocols Allowed protocols to keep * @return string Content with fixed HTML tags */ function wp_kses_split( $string, $allowed_html, $allowed_protocols ) { global $pass_allowed_html, $pass_allowed_protocols; $pass_allowed_html = $allowed_html; $pass_allowed_protocols = $allowed_protocols; return preg_replace_callback( '%(|$))|(<[^>]*(>|$)|>)%', '_wp_kses_split_callback', $string ); } /** * Callback for wp_kses_split. * * @since 3.1.0 * @access private * * @global array $pass_allowed_html * @global array $pass_allowed_protocols * * @return string */ function _wp_kses_split_callback( $match ) { global $pass_allowed_html, $pass_allowed_protocols; return wp_kses_split2( $match[0], $pass_allowed_html, $pass_allowed_protocols ); } /** * Callback for wp_kses_split for fixing malformed HTML tags. * * This function does a lot of work. It rejects some very malformed things like * <:::>. It returns an empty string, if the element isn't allowed (look ma, no * strip_tags()!). Otherwise it splits the tag into an element and an attribute * list. * * After the tag is split into an element and an attribute list, it is run * through another filter which will remove illegal attributes and once that is * completed, will be returned. * * @access private * @since 1.0.0 * * @param string $string Content to filter * @param array $allowed_html Allowed HTML elements * @param array $allowed_protocols Allowed protocols to keep * @return string Fixed HTML element */ function wp_kses_split2($string, $allowed_html, $allowed_protocols) { $string = wp_kses_stripslashes($string); if (substr($string, 0, 1) != '<') return '>'; // It matched a ">" character if ( ''), '', $string ); while ( $string != ($newstring = wp_kses($string, $allowed_html, $allowed_protocols)) ) $string = $newstring; if ( $string == '' ) return ''; // prevent multiple dashes in comments $string = preg_replace('/--+/', '-', $string); // prevent three dashes closing a comment $string = preg_replace('/-$/', '', $string); return ""; } // Allow HTML comments if (!preg_match('%^<\s*(/\s*)?([a-zA-Z0-9-]+)([^>]*)>?$%', $string, $matches)) return ''; // It's seriously malformed $slash = trim($matches[1]); $elem = $matches[2]; $attrlist = $matches[3]; if ( ! is_array( $allowed_html ) ) $allowed_html = wp_kses_allowed_html( $allowed_html ); if ( ! isset($allowed_html[strtolower($elem)]) ) return ''; // They are using a not allowed HTML element if ($slash != '') return ""; // No attributes are allowed for closing elements return wp_kses_attr( $elem, $attrlist, $allowed_html, $allowed_protocols ); } /** * Removes all attributes, if none are allowed for this element. * * If some are allowed it calls wp_kses_hair() to split them further, and then * it builds up new HTML code from the data that kses_hair() returns. It also * removes "<" and ">" characters, if there are any left. One more thing it does * is to check if the tag has a closing XHTML slash, and if it does, it puts one * in the returned code as well. * * @since 1.0.0 * * @param string $element HTML element/tag * @param string $attr HTML attributes from HTML element to closing HTML element tag * @param array $allowed_html Allowed HTML elements * @param array $allowed_protocols Allowed protocols to keep * @return string Sanitized HTML element */ function wp_kses_attr($element, $attr, $allowed_html, $allowed_protocols) { if ( ! is_array( $allowed_html ) ) $allowed_html = wp_kses_allowed_html( $allowed_html ); // Is there a closing XHTML slash at the end of the attributes? $xhtml_slash = ''; if (preg_match('%\s*/\s*$%', $attr)) $xhtml_slash = ' /'; // Are any attributes allowed at all for this element? $element_low = strtolower( $element ); if ( empty( $allowed_html[ $element_low ] ) || true === $allowed_html[ $element_low ] ) { return "<$element$xhtml_slash>"; } // Split it $attrarr = wp_kses_hair($attr, $allowed_protocols); // Go through $attrarr, and save the allowed attributes for this element // in $attr2 $attr2 = ''; foreach ( $attrarr as $arreach ) { if ( wp_kses_attr_check( $arreach['name'], $arreach['value'], $arreach['whole'], $arreach['vless'], $element, $allowed_html ) ) { $attr2 .= ' '.$arreach['whole']; } } // Remove any "<" or ">" characters $attr2 = preg_replace('/[<>]/', '', $attr2); return "<$element$attr2$xhtml_slash>"; } /** * Determine whether an attribute is allowed. * * @since 4.2.3 * * @param string $name The attribute name. Returns empty string when not allowed. * @param string $value The attribute value. Returns a filtered value. * @param string $whole The name=value input. Returns filtered input. * @param string $vless 'y' when attribute like "enabled", otherwise 'n'. * @param string $element The name of the element to which this attribute belongs. * @param array $allowed_html The full list of allowed elements and attributes. * @return bool Is the attribute allowed? */ function wp_kses_attr_check( &$name, &$value, &$whole, $vless, $element, $allowed_html ) { $allowed_attr = $allowed_html[strtolower( $element )]; $name_low = strtolower( $name ); if ( ! isset( $allowed_attr[$name_low] ) || '' == $allowed_attr[$name_low] ) { $name = $value = $whole = ''; return false; } if ( 'style' == $name_low ) { $new_value = safecss_filter_attr( $value ); if ( empty( $new_value ) ) { $name = $value = $whole = ''; return false; } $whole = str_replace( $value, $new_value, $whole ); $value = $new_value; } if ( is_array( $allowed_attr[$name_low] ) ) { // there are some checks foreach ( $allowed_attr[$name_low] as $currkey => $currval ) { if ( ! wp_kses_check_attr_val( $value, $vless, $currkey, $currval ) ) { $name = $value = $whole = ''; return false; } } } return true; } /** * Builds an attribute list from string containing attributes. * * This function does a lot of work. It parses an attribute list into an array * with attribute data, and tries to do the right thing even if it gets weird * input. It will add quotes around attribute values that don't have any quotes * or apostrophes around them, to make it easier to produce HTML code that will * conform to W3C's HTML specification. It will also remove bad URL protocols * from attribute values. It also reduces duplicate attributes by using the * attribute defined first (foo='bar' foo='baz' will result in foo='bar'). * * @since 1.0.0 * * @param string $attr Attribute list from HTML element to closing HTML element tag * @param array $allowed_protocols Allowed protocols to keep * @return array List of attributes after parsing */ function wp_kses_hair($attr, $allowed_protocols) { $attrarr = array(); $mode = 0; $attrname = ''; $uris = array('xmlns', 'profile', 'href', 'src', 'cite', 'classid', 'codebase', 'data', 'usemap', 'longdesc', 'action'); // Loop through the whole attribute list while (strlen($attr) != 0) { $working = 0; // Was the last operation successful? switch ($mode) { case 0 : // attribute name, href for instance if ( preg_match('/^([-a-zA-Z:]+)/', $attr, $match ) ) { $attrname = $match[1]; $working = $mode = 1; $attr = preg_replace( '/^[-a-zA-Z:]+/', '', $attr ); } break; case 1 : // equals sign or valueless ("selected") if (preg_match('/^\s*=\s*/', $attr)) // equals sign { $working = 1; $mode = 2; $attr = preg_replace('/^\s*=\s*/', '', $attr); break; } if (preg_match('/^\s+/', $attr)) // valueless { $working = 1; $mode = 0; if(false === array_key_exists($attrname, $attrarr)) { $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y'); } $attr = preg_replace('/^\s+/', '', $attr); } break; case 2 : // attribute value, a URL after href= for instance if (preg_match('%^"([^"]*)"(\s+|/?$)%', $attr, $match)) // "value" { $thisval = $match[1]; if ( in_array(strtolower($attrname), $uris) ) $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); if(false === array_key_exists($attrname, $attrarr)) { $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); } $working = 1; $mode = 0; $attr = preg_replace('/^"[^"]*"(\s+|$)/', '', $attr); break; } if (preg_match("%^'([^']*)'(\s+|/?$)%", $attr, $match)) // 'value' { $thisval = $match[1]; if ( in_array(strtolower($attrname), $uris) ) $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); if(false === array_key_exists($attrname, $attrarr)) { $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname='$thisval'", 'vless' => 'n'); } $working = 1; $mode = 0; $attr = preg_replace("/^'[^']*'(\s+|$)/", '', $attr); break; } if (preg_match("%^([^\s\"']+)(\s+|/?$)%", $attr, $match)) // value { $thisval = $match[1]; if ( in_array(strtolower($attrname), $uris) ) $thisval = wp_kses_bad_protocol($thisval, $allowed_protocols); if(false === array_key_exists($attrname, $attrarr)) { $attrarr[$attrname] = array ('name' => $attrname, 'value' => $thisval, 'whole' => "$attrname=\"$thisval\"", 'vless' => 'n'); } // We add quotes to conform to W3C's HTML spec. $working = 1; $mode = 0; $attr = preg_replace("%^[^\s\"']+(\s+|$)%", '', $attr); } break; } // switch if ($working == 0) // not well formed, remove and try again { $attr = wp_kses_html_error($attr); $mode = 0; } } // while if ($mode == 1 && false === array_key_exists($attrname, $attrarr)) // special case, for when the attribute list ends with a valueless // attribute like "selected" $attrarr[$attrname] = array ('name' => $attrname, 'value' => '', 'whole' => $attrname, 'vless' => 'y'); return $attrarr; } /** * Finds all attributes of an HTML element. * * Does not modify input. May return "evil" output. * * Based on wp_kses_split2() and wp_kses_attr() * * @since 4.2.3 * * @param string $element HTML element/tag * @return array|bool List of attributes found in $element. Returns false on failure. */ function wp_kses_attr_parse( $element ) { $valid = preg_match('%^(<\s*)(/\s*)?([a-zA-Z0-9]+\s*)([^>]*)(>?)$%', $element, $matches); if ( 1 !== $valid ) { return false; } $begin = $matches[1]; $slash = $matches[2]; $elname = $matches[3]; $attr = $matches[4]; $end = $matches[5]; if ( '' !== $slash ) { // Closing elements do not get parsed. return false; } // Is there a closing XHTML slash at the end of the attributes? if ( 1 === preg_match( '%\s*/\s*$%', $attr, $matches ) ) { $xhtml_slash = $matches[0]; $attr = substr( $attr, 0, -strlen( $xhtml_slash ) ); } else { $xhtml_slash = ''; } // Split it $attrarr = wp_kses_hair_parse( $attr ); if ( false === $attrarr ) { return false; } // Make sure all input is returned by adding front and back matter. array_unshift( $attrarr, $begin . $slash . $elname ); array_push( $attrarr, $xhtml_slash . $end ); return $attrarr; } /** * Builds an attribute list from string containing attributes. * * Does not modify input. May return "evil" output. * In case of unexpected input, returns false instead of stripping things. * * Based on wp_kses_hair() but does not return a multi-dimensional array. * * @since 4.2.3 * * @param string $attr Attribute list from HTML element to closing HTML element tag * @return array|bool List of attributes found in $attr. Returns false on failure. */ function wp_kses_hair_parse( $attr ) { if ( '' === $attr ) { return array(); } $regex = '(?:' . '[-a-zA-Z:]+' // Attribute name. . '|' . '\[\[?[^\[\]]+\]\]?' // Shortcode in the name position implies unfiltered_html. . ')' . '(?:' // Attribute value. . '\s*=\s*' // All values begin with '=' . '(?:' . '"[^"]*"' // Double-quoted . '|' . "'[^']*'" // Single-quoted . '|' . '[^\s"\']+' // Non-quoted . '(?:\s|$)' // Must have a space . ')' . '|' . '(?:\s|$)' // If attribute has no value, space is required. . ')' . '\s*'; // Trailing space is optional except as mentioned above. // Although it is possible to reduce this procedure to a single regexp, // we must run that regexp twice to get exactly the expected result. $validation = "%^($regex)+$%"; $extraction = "%$regex%"; if ( 1 === preg_match( $validation, $attr ) ) { preg_match_all( $extraction, $attr, $attrarr ); return $attrarr[0]; } else { return false; } } /** * Performs different checks for attribute values. * * The currently implemented checks are "maxlen", "minlen", "maxval", "minval" * and "valueless". * * @since 1.0.0 * * @param string $value Attribute value * @param string $vless Whether the value is valueless. Use 'y' or 'n' * @param string $checkname What $checkvalue is checking for. * @param mixed $checkvalue What constraint the value should pass * @return bool Whether check passes */ function wp_kses_check_attr_val($value, $vless, $checkname, $checkvalue) { $ok = true; switch (strtolower($checkname)) { case 'maxlen' : // The maxlen check makes sure that the attribute value has a length not // greater than the given value. This can be used to avoid Buffer Overflows // in WWW clients and various Internet servers. if (strlen($value) > $checkvalue) $ok = false; break; case 'minlen' : // The minlen check makes sure that the attribute value has a length not // smaller than the given value. if (strlen($value) < $checkvalue) $ok = false; break; case 'maxval' : // The maxval check does two things: it checks that the attribute value is // an integer from 0 and up, without an excessive amount of zeroes or // whitespace (to avoid Buffer Overflows). It also checks that the attribute // value is not greater than the given value. // This check can be used to avoid Denial of Service attacks. if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value)) $ok = false; if ($value > $checkvalue) $ok = false; break; case 'minval' : // The minval check makes sure that the attribute value is a positive integer, // and that it is not smaller than the given value. if (!preg_match('/^\s{0,6}[0-9]{1,6}\s{0,6}$/', $value)) $ok = false; if ($value < $checkvalue) $ok = false; break; case 'valueless' : // The valueless check makes sure if the attribute has a value // (like ) or not (