<commit_before><?xml version="1.0" encoding="UTF-8"?>

<xwikidoc>
<web>XWiki</web>
<name>WatchListMessage</name>
<language></language>
<defaultLanguage></defaultLanguage>
<translation>0</translation>
<parent>XWiki.WebHome</parent>
<creator></creator>
<author>XWiki.Admin</author>
<customClass></customClass>
<contentAuthor>XWiki.Admin</contentAuthor>
<creationDate>1203938786000</creationDate>
<date>1203938786000</date>
<contentUpdateDate>1203938786000</contentUpdateDate>
<version>1.1</version>
<title></title>
<template></template>
<defaultTemplate></defaultTemplate>
<validationScript></validationScript>
<comment></comment>
<minorEdit>false</minorEdit>
<syntaxId>xwiki/1.0</syntaxId>
<hidden>false</hidden>
<attachment>
<filename>space.gif</filename>
<filesize>996</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQAPeCAP368////v777/788+TJb+PEY9uXO/777v788vTWT/jmlf/89fXbZfLQOe/Qev/9+vrts/7+/dqPOf788fTXVPLluv/+/dyyPvHPafXekf789vv36vnpoe7PcvnppPHScvPTRPvvuerLbO/UlOLDYdmLNPrsrPzz0O/SgPPTR+aydt2ZR/becvvyzOC8WOfPffLUf/PUSf368dunO+7KovjqwvbpyduVP/z01/fji/HQbNuiO/nonPLVgf789+jQhPTdqPz47fbgfPfihf788Pfjhfv36f799PLRO+XIbv/9+P/99vTXV/Tck/XaY+nBc/TbnvjkjvXbaPzyyPjmlPPXhty0QePEYtubO/LTefjlkfrx3tuoO/DLJum5hfPaltutOfXelO7OiPbedtudPPbcbPTYXP7+/P/+/u7PduDCWe/ThfPYjv767/HOMNujO+DAVtyuQNuRPv378/Xgn/v26P368vfhgduuPPHNLtu1PPXZXfbhrPbfdu3Kavz22PvyytmMNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<KEY></content>
</attachment>
<attachment>
<filename>document.gif</filename>
<filesize>379</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQANU6APr6+vX19d/f38vLy9TU1Pf39/39/fb29sPDw+Li4sLCwvPz88bGxsjIyOrq6vHx8cDAwLS0tLq6uvT09MXFxezs7Obm5ufn57Gxsc3NzcfHx6+vr729vc7OzsrKyvDw8Ly8vPLy8unp6b6+vtbW1tPT09vb29XV1dnZ2e/v76qqqqWlpe3t7aysrNfX17i4uOPj466urt3d3c/Pz/j4+Pn5+fv7+8nJyczMzPz8/P///wAAAAAAAAAAAAAAAAAAACH5BAEAADoALAAAAAAQABAAAAaYQB0MdysaiwKDbqnD0Wy5qJSmSDJvtklg+0iJcheEVXfLFWqFwuLjyB0mFMGyXINIIhvVSpq7zXNQgDQBDxUOFn1/ORoKIy8RGDEtLIlkfFE2NAcLIZVlOR0eDAgQHCASB56XmDU1NKo5JCUzGQMNDQyvfpZSNjYAwMCwMiYoLicEyVC7n6t8uwM1zlI1OEsJA0faNzgJOkEAOw==</content>
</attachment>
<attachment>
<filename>wiki.gif</filename>
<filesize>1074</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQAPfcAGWbYzp/N3LGZWejWqHZmTR8Mdzx2d3x2v3+/ezy653Dvs7jsW65z5zBvWa0zcLbpfz+/KzwtV6nx3eucpDUg7zaoJTPjNPqtarQxECGPHq9cnHFZHS8aVio3XG9bvb69qDXh23bd3amZW2zx3DGhM3nr6nuycnq0c/psLvhpWyrY4vauG22vovI15XMgI3P1W2tZ5HJh7HSsJXT2tXv1dTq0UOGv6/VvZHHekqYx0OEt57Ylk6SwXivzF3TbFKauVyv2rft1Fuv3GKllk3XZUbQamfbdtPtztrt1H3Rc2qpxoLLw4DQqLftwVipnV+pr3rRr4TLtVujyZC/eave3LDXva/fz1aizJ3Fm4DAeczquuj1zV6w0/j892y9wprWkY3qnYPYgVylxVaq4FGUTGWt1rTeoLTaxVGm2szrtWDYpnTHaFC8WcDYv7XPtHqoZqLZmaTIiDN7MGiXWW21zc7kspDShnupZ3mvdWaxzH67c9Lss3LFZm68xmu/YESGQu3z7DuCN8/p0J7gvMfork3ZZmmx17PXmaLYjIDLdWWfgbfj1GqtYJrAfo7ByYrcv4a3cIvL2dbyx53Cs2axeLXemHinubXe1l6bvOLzwKLU1I3AdpDN212oykmLR8fexFen0Fur337Lc73Yotbu0k+cSHvJb/X69cDcpnrGb6HQzn7CvEaHQ/b69dzwvmecZVepe2e8vHXJy5rlv5zY2UuayW+kbd7ywKLim4GzxazXporDhHPegr7gxUKMPZy+gVCNTVOZxp3XlGeWWqDSwHTGZ6bb1d3vvn20ysfq0HHWmoS9fm3EtK/XkqPQkZnBgbfQtrTvtWCwVj/Rd1ebtmzRkKfvsaffzEeMuZrflJLOiXHcev///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANwALAAAAAAQABAAAAj/ALkJ5GZgR6I1Akx9ITVwIAI4AlJo6XWmii4/2roMhGAH0RYkR6xc0qQKQwwNpwQSAHFLEg1BxqhwauHoBo5l3A5syBQtQpNFtGbQGRElW4lSn4RVSmPNxIkXkRzEUsZrm7M4E0TtwQUmSDIGeWQZKUTEh54HZIq5ChNi1rVOXlaomVaEjYo6GfgcS1JtkAQuwfpAYfYE1oAFgVKhoPBoyRUgQmrZ0PFjiIhRfyw0M0OCiRhQY9DkwEZN0ZRfAGpIu8DBAwspoTrwcEJpGCo50Ljt2nQoyyolhspgYjTn2R0AAj/AgESIWC5kPSy5qPAGWIKBrfD4wjKpgQIZjQoADwDUUGAbW54CBGD1yk3DgAA7</content>
</attachment>
<object>
<class>
<name>XWiki.Mail</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<html>
<name>html</name>
<number>4</number>
<prettyName>HTML</prettyName>
<rows>15</rows>
<size>80</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType>
</html>
<language>
<name>language</name>
<number>2</number>
<prettyName>Language</prettyName>
<size>5</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.StringClass</classType>
</language>
<subject>
<name>subject</name>
<number>1</number>
<prettyName>Subject</prettyName>
<size>40</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.StringClass</classType>
</subject>
<text>
<name>text</name>
<number>3</number>
<prettyName>Text</prettyName>
<rows>15</rows>
<size>80</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType>
</text>
</class>
<name>XWiki.WatchListMessage</name>
<number>0</number>
<className>XWiki.Mail</className>
<guid>6e7ba94a-fc9c-45ad-8758-9b9a04ce92c1</guid>
<property>
<html>Hello $first_name,

This message is sent by XWiki. Here are the documents in your watchlist that have been created, updated or deleted since the last notification ($xwiki.formatDate($previousFireTime, $format)) :

#set($lightGray = "#CCC")
#set($veryLightGray = "#FDFDFD")
#set($darkGray = "#333")
#set($commonHeadingStyle = "margin:0;")
#set($h1Style = "$commonHeadingStyle")
#set($h2Style = "$commonHeadingStyle")
#set($h3Style = "$commonHeadingStyle")
#set($h4Style = "$commonHeadingStyle;margin-top:2px;margin-bottom:2px;")
#set($h3BaselineStyle = "font-size:0.8em;color:${darkGray};padding-left:21px;")
#set($commonDivStyle = "")
#set($wikiDivStyle = "$commonDivStyle margin-top:16px;")
#set($spaceDivStyle = "$commonDivStyle margin-left:8px;padding:10px;border-left:solid 1px ${lightGray};")
#set($documentDivStyle = "$commonDivStyle margin-left:8px;padding:10px;border-left:solid 1px ${lightGray};")
#set($iconStyle = "width:16px;height:16px;")
#set($eventStyle = "padding-left:21px;")
#set($diffStyle = "padding:5px;margin:5px;background-color:$veryLightGray;border-left:solid 4px $lightGray;")
#set($propDiffStyle = "margin-right:2px;padding:2px;")

#macro(displayhtmldiff $html)
  #set($result = $html.replaceAll('\&lt;div class="diff"\&gt;\&lt;/div\&gt;', "").trim())
  #set($result = $result.replaceAll('class="diffaddword"', 'style="font-weight:bold;background-color:#99FF99;"'))
  #set($result = $result.replaceAll('class="diffremoveword"', 'style="text-decoration: line-through;background-color:#FF9999;"'))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_contentDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_attachmentDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_objectDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_classDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_objectClassName", "text-decoration:underline; display:block; margin-bottom:0.5em;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_classClassName", "text-decoration:underline; display:block; margin-bottom:0.5em;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiffOldValue", "$propDiffStyle background:#FFEDED;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiffNewValue", "$propDiffStyle background:#EDFFED;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiff", "$propDiffStyle"))
  $result
#end

#set($previousEvent = $util.getNull())
#set($previousDoc = $util.getNull())
#foreach ($event in $events)
  #set($firstEntry = ($previousEvent == $util.getNull()))
  #set($prefixedFullName = $event.getPrefixedFullName())
  #set($newWiki = ($event.getWiki() != $previousEvent.getWiki()))
  #set($newSpace = ($event.getSpace() != $previousEvent.getSpace()))
  #set($newDocument = $prefixedFullName != $previousDoc.getPrefixedFullName())
  #if ($newWiki)
    #if (!$firstEntry) &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; #end
    &lt;div class="wiki" style="$wikiDivStyle"&gt;
    &lt;h1 style="$h1Style"&gt;&lt;img src="cid:wiki.gif" style="$iconStyle" /&gt; $event.getWiki()&lt;/h1&gt;
  #end
  #if ($newSpace)
    #if (!$firstEntry &amp;&amp; !$newWiki) &lt;/div&gt;&lt;/div&gt; #end
    &lt;div class="space" style="$spaceDivStyle"&gt;
    &lt;h2 style="$h2Style"&gt;&lt;img src="cid:space.gif" style="$iconStyle" /&gt; $event.getSpace()&lt;/h2&gt;
  #end
  #if($newDocument)
    #if (!$firstEntry &amp;&amp; !$newWiki &amp;&amp; !$newSpace) &lt;/div&gt; #end
    &lt;div class="document" style="$documentDivStyle"&gt;
    #set($currentDoc = $xwiki.getDocument($prefixedFullName))
    &lt;h3 style="$h3Style"&gt;&lt;img src="cid:document.gif" style="$iconStyle" /&gt; $currentDoc.getDisplayTitle()&lt;/h3&gt;
    &lt;span style="$h3BaselineStyle"&gt;$event.getFullName()&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;
  #end
  &lt;div style="$eventStyle"&gt;
    #if ($event.getType() != "update")
      &lt;h4 style="$h4Style"&gt;$msg.get("watchlist.event.${event.getType()}", [$xwiki.formatDate($event.getDate()), $xwiki.getLocalUserName($event.getAuthor(), false)])&lt;/h4&gt;
    #else
      #if ($event.isComposite())
        #set($authors = "")
        #foreach($author in $event.getAuthors())
          #set($authors = "${authors}${xwiki.getLocalUserName($author, false)}")
          #if($event.getAuthors().indexOf($author) &lt; $event.getAuthors().size() - 1)
            #set($authors = "${authors}, ")  
          #end
        #end
        #set($firstDateIndex = $event.getDates().size() - 1)
        #set($firstDate = $xwiki.formatDate($event.getDates().get($firstDateIndex)))
        &lt;h4 style="$h4Style"&gt;$msg.get("watchlist.event.update.multiple", [$firstDate, $xwiki.formatDate($event.getDate()), $event.getVersions().size(), $event.getAuthors().size(), $authors])&lt;/h4&gt;
      #end
      &lt;div class="diff"&gt;
        #displayhtmldiff($event.getHTMLDiff($context.context))
      &lt;/div&gt;
    #end
  &lt;/div&gt;
  #set($previousEvent = $event)
  #set($previousDoc = $currentDoc)
#end
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</html>
</property>
<property>
<language>en</language>
</property>
<property>
<subject>XWiki updates, $events.size() documents have been updated since $xwiki.formatDate($previousFireTime, $format)</subject>
</property>
<property>
<text></text>
</property>
</object>
<object>
<class>
<name>XWiki.TagClass</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<tags>
<cache>0</cache>
<displayType>input</displayType>
<multiSelect>1</multiSelect>
<name>tags</name>
<number>1</number>
<prettyName>Tags</prettyName>
<relationalStorage>1</relationalStorage>
<separator> </separator>
<separators> ,|</separators>
<size>30</size>
<unmodifiable>0</unmodifiable>
<values></values>
<classType>com.xpn.xwiki.objects.classes.StaticListClass</classType>
</tags>
</class>
<name>XWiki.WatchListMessage</name>
<number>0</number>
<className>XWiki.TagClass</className>
<guid>0f7e83e5-a401-4c01-8d75-49ba09398575</guid>
<property>
<tags/>
</property>
</object>
<content>
</content></xwikidoc><commit_msg>XPWATCHLIST-55 : Make the watchlist plugin use the activitystream plugin to retrieve events <commit_after><?xml version="1.0" encoding="UTF-8"?>

<xwikidoc>
<web>XWiki</web>
<name>WatchListMessage</name>
<language></language>
<defaultLanguage></defaultLanguage>
<translation>0</translation>
<parent>XWiki.WebHome</parent>
<creator></creator>
<author>XWiki.Admin</author>
<customClass></customClass>
<contentAuthor>XWiki.Admin</contentAuthor>
<creationDate>1203938786000</creationDate>
<date>1203938786000</date>
<contentUpdateDate>1203938786000</contentUpdateDate>
<version>1.1</version>
<title></title>
<template></template>
<defaultTemplate></defaultTemplate>
<validationScript></validationScript>
<comment></comment>
<minorEdit>false</minorEdit>
<syntaxId>xwiki/1.0</syntaxId>
<hidden>false</hidden>
<attachment>
<filename>space.gif</filename>
<filesize>996</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQAPeCAP368////v777/788+TJb+PEY9uXO/777v788vTWT/jmlf/89fXbZfLQOe/Qev/9+vrts/7+/dqPOf788fTXVPLluv/+/dyyPvHPafXekf789vv36vnpoe7PcvnppPHScvPTRPvvuerLbO/UlOLDYdmLNPrsrPzz0O/SgPPTR+aydt2ZR/becvvyzOC8WOfPffLUf/PUSf368dunO+7KovjqwvbpyduVP/z01/fji/HQbNuiO/nonPLVgf789+jQhPTdqPz47fbgfPfihf788Pfjhfv36f799PLRO+XIbv/9+P/99vTXV/Tck/XaY+nBc/TbnvjkjvXbaPzyyPjmlPPXhty0QePEYtubO/LTefjlkfrx3tuoO/DLJum5hfPaltutOfXelO7OiPbedtudPPbcbPTYXP7+/P/+/u7PduDCWe/ThfPYjv767/HOMNujO+DAVtyuQNuRPv378/Xgn/v26P368vfhgduuPPHNLtu1PPXZXfbhrPbfdu3Kavz22PvyytmMNP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAIIALAAAAAAQABAAAAjBAAUJHEiwoMGDCBMSVEOigMMrcIIAmAhgzhmBeiIEQGMhwIYkBEK++FFBoBUfUTLQ4SPgyIAJAg48cCEwjowwTXr4EbEGhYM0HYxcEAimzggxT2wgGICASMwAeARyCaBkyYIBf6gU6SPFDI4ZAt9omBLCBI8cQsrsSQDixA6BZOxA8KBgyBgGTGIgcdMCi0ADbThoucPCCYUUDfJ0AWRA4IotQKB8YVMFRpYPOjDUuCGQhgo5gUKLDl1CgheFqFMHBAA7</content>
</attachment>
<attachment>
<filename>document.gif</filename>
<filesize>379</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQANU6APr6+vX19d/f38vLy9TU1Pf39/39/fb29sPDw+Li4sLCwvPz88bGxsjIyOrq6vHx8cDAwLS0tLq6uvT09MXFxezs7Obm5ufn57Gxsc3NzcfHx6+vr729vc7OzsrKyvDw8Ly8vPLy8unp6b6+vtbW1tPT09vb29XV1dnZ2e/v76qqqqWlpe3t7aysrNfX17i4uOPj466urt3d3c/Pz/j4+Pn5+fv7+8nJyczMzPz8/P///wAAAAAAAAAAAAAAAAAAACH5BAEAADoALAAAAAAQABAAAAaYQB0MdysaiwKDbqnD0Wy5qJSmSDJvtklg+0iJcheEVXfLFWqFwuLjyB0mFMGyXINIIhvVSpq7zXNQgDQBDxUOFn1/ORoKIy8RGDEtLIlkfFE2NAcLIZVlOR0eDAgQHCASB56XmDU1NKo5JCUzGQMNDQyvfpZSNjYAwMCwMiYoLicEyVC7n6t8uwM1zlI1OEsJA0faNzgJOkEAOw==</content>
</attachment>
<attachment>
<filename>wiki.gif</filename>
<filesize>1074</filesize>
<author>XWiki.Admin</author>
<date>1251111875000</date>
<version>1.1</version>
<comment></comment>
<content>R0lGODlhEAAQAPfcAGWbYzp/N3LGZWejWqHZmTR8Mdzx2d3x2v3+/ezy653Dvs7jsW65z5zBvWa0zcLbpfz+/KzwtV6nx3eucpDUg7zaoJTPjNPqtarQxECGPHq9cnHFZHS8aVio3XG9bvb69qDXh23bd3amZW2zx3DGhM3nr6nuycnq0c/psLvhpWyrY4vauG22vovI15XMgI3P1W2tZ5HJh7HSsJXT2tXv1dTq0UOGv6/VvZHHekqYx0OEt57Ylk6SwXivzF3TbFKauVyv2rft1Fuv3GKllk3XZUbQamfbdtPtztrt1H3Rc2qpxoLLw4DQqLftwVipnV+pr3rRr4TLtVujyZC/eave3LDXva/fz1aizJ3Fm4DAeczquuj1zV6w0/j892y9wprWkY3qnYPYgVylxVaq4FGUTGWt1rTeoLTaxVGm2szrtWDYpnTHaFC8WcDYv7XPtHqoZqLZmaTIiDN7MGiXWW21zc7kspDShnupZ3mvdWaxzH67c9Lss3LFZm68xmu/YESGQu3z7DuCN8/p0J7gvMfork3ZZmmx17PXmaLYjIDLdWWfgbfj1GqtYJrAfo7ByYrcv4a3cIvL2dbyx53Cs2axeLXemHinubXe1l6bvOLzwKLU1I3AdpDN212oykmLR8fexFen0Fur337Lc73Yotbu0k+cSHvJb/X69cDcpnrGb6HQzn7CvEaHQ/b69dzwvmecZVepe2e8vHXJy5rlv5zY2UuayW+kbd7ywKLim4GzxazXporDhHPegr7gxUKMPZy+gVCNTVOZxp3XlGeWWqDSwHTGZ6bb1d3vvn20ysfq0HHWmoS9fm3EtK/XkqPQkZnBgbfQtrTvtWCwVj/Rd1ebtmzRkKfvsaffzEeMuZrflJLOiXHcev///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAANwALAAAAAAQABAAAAj/ALkJ5GZgR6I1Akx9ITVwIAI4AlJo6XWmii4/2roMhGAH0RYkR6xc0qQKQwwNpwQSAHFLEg1BxqhwauHoBo5l3A5syBQtQpNFtGbQGRElW4lSn4RVSmPNxIkXkRzEUsZrm7M4E0TtwQUmSDIGeWQZKUTEh54HZIq5ChNi1rVOXlaomVaEjYo6GfgcS1JtkAQuwfpAYfYE1oAFgVKhoPBoyRUgQmrZ0PFjiIhRfyw0M0OCiRhQY9DkwEZN0ZRfAGpIu8DBAwspoTrwcEJpGCo50Ljt2nQoyyolhspgYjTn2R0AAj/AgESIWC5kPSy5qPAGWIKBrfD4wjKpgQIZjQoADwDUUGAbW54CBGD1yk3DgAA7</content>
</attachment>
<object>
<class>
<name>XWiki.Mail</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<html>
<name>html</name>
<number>4</number>
<prettyName>HTML</prettyName>
<rows>15</rows>
<size>80</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType>
</html>
<language>
<name>language</name>
<number>2</number>
<prettyName>Language</prettyName>
<size>5</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.StringClass</classType>
</language>
<subject>
<name>subject</name>
<number>1</number>
<prettyName>Subject</prettyName>
<size>40</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.StringClass</classType>
</subject>
<text>
<name>text</name>
<number>3</number>
<prettyName>Text</prettyName>
<rows>15</rows>
<size>80</size>
<unmodifiable>0</unmodifiable>
<classType>com.xpn.xwiki.objects.classes.TextAreaClass</classType>
</text>
</class>
<name>XWiki.WatchListMessage</name>
<number>0</number>
<className>XWiki.Mail</className>
<guid>6e7ba94a-fc9c-45ad-8758-9b9a04ce92c1</guid>
<property>
<html>Hello $first_name,

This message is sent by XWiki. Here are the documents in your watchlist that have been created, updated or deleted since the last notification:

#set($lightGray = "#CCC")
#set($veryLightGray = "#FDFDFD")
#set($darkGray = "#333")
#set($commonHeadingStyle = "margin:0;")
#set($h1Style = "$commonHeadingStyle")
#set($h2Style = "$commonHeadingStyle")
#set($h3Style = "$commonHeadingStyle")
#set($h4Style = "$commonHeadingStyle;margin-top:2px;margin-bottom:2px;")
#set($h3BaselineStyle = "font-size:0.8em;color:${darkGray};padding-left:21px;")
#set($commonDivStyle = "")
#set($wikiDivStyle = "$commonDivStyle margin-top:16px;")
#set($spaceDivStyle = "$commonDivStyle margin-left:8px;padding:10px;border-left:solid 1px ${lightGray};")
#set($documentDivStyle = "$commonDivStyle margin-left:8px;padding:10px;border-left:solid 1px ${lightGray};")
#set($iconStyle = "width:16px;height:16px;")
#set($eventStyle = "padding-left:21px;")
#set($diffStyle = "padding:5px;margin:5px;background-color:$veryLightGray;border-left:solid 4px $lightGray;")
#set($propDiffStyle = "margin-right:2px;padding:2px;")

#macro(displayhtmldiff $html)
  #set($result = $html.replaceAll('\&lt;div class="diff"\&gt;\&lt;/div\&gt;', "").trim())
  #set($result = $result.replaceAll('class="diffaddword"', 'style="font-weight:bold;background-color:#99FF99;"'))
  #set($result = $result.replaceAll('class="diffremoveword"', 'style="text-decoration: line-through;background-color:#FF9999;"'))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_contentDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_attachmentDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_objectDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_classDiff", "$diffStyle"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_objectClassName", "text-decoration:underline; display:block; margin-bottom:0.5em;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_classClassName", "text-decoration:underline; display:block; margin-bottom:0.5em;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiffOldValue", "$propDiffStyle background:#FFEDED;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiffNewValue", "$propDiffStyle background:#EDFFED;"))
  #set($result = $result.replaceAll("WATCHLIST_STYLE_DIFF_propDiff", "$propDiffStyle"))
  $result
#end

#set($previousEvent = $util.getNull())
#set($previousDoc = $util.getNull())
#foreach ($event in $events)
  #set($firstEntry = ($previousEvent == $util.getNull()))
  #set($prefixedFullName = $event.getPrefixedFullName())
  #set($newWiki = ($event.getWiki() != $previousEvent.getWiki()))
  #set($newSpace = ($event.getSpace() != $previousEvent.getSpace()))
  #set($newDocument = $prefixedFullName != $previousDoc.getPrefixedFullName())
  #if ($newWiki)
    #if (!$firstEntry) &lt;/div&gt;&lt;/div&gt;&lt;/div&gt; #end
    &lt;div class="wiki" style="$wikiDivStyle"&gt;
    &lt;h1 style="$h1Style"&gt;&lt;img src="cid:wiki.gif" style="$iconStyle" /&gt; $event.getWiki()&lt;/h1&gt;
  #end
  #if ($newSpace)
    #if (!$firstEntry &amp;&amp; !$newWiki) &lt;/div&gt;&lt;/div&gt; #end
    &lt;div class="space" style="$spaceDivStyle"&gt;
    &lt;h2 style="$h2Style"&gt;&lt;img src="cid:space.gif" style="$iconStyle" /&gt; $event.getSpace()&lt;/h2&gt;
  #end
  #if($newDocument)
    #if (!$firstEntry &amp;&amp; !$newWiki &amp;&amp; !$newSpace) &lt;/div&gt; #end
    &lt;div class="document" style="$documentDivStyle"&gt;
    #set($currentDoc = $xwiki.getDocument($prefixedFullName))
    &lt;h3 style="$h3Style"&gt;&lt;img src="cid:document.gif" style="$iconStyle" /&gt; $currentDoc.getDisplayTitle()&lt;/h3&gt;
    &lt;span style="$h3BaselineStyle"&gt;$event.getFullName()&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;
  #end
  &lt;div style="$eventStyle"&gt;
    #if ($event.getType() != "update")
      &lt;h4 style="$h4Style"&gt;$msg.get("watchlist.event.${event.getType()}", [$xwiki.formatDate($event.getDate()), $xwiki.getLocalUserName($event.getAuthor(), false)])&lt;/h4&gt;
    #else
      #if ($event.isComposite())
        #set($authors = "")
        #foreach($author in $event.getAuthors())
          #set($authors = "${authors}${xwiki.getLocalUserName($author, false)}")
          #if($event.getAuthors().indexOf($author) &lt; $event.getAuthors().size() - 1)
            #set($authors = "${authors}, ")  
          #end
        #end
        #set($firstDateIndex = $event.getDates().size() - 1)
        #set($firstDate = $xwiki.formatDate($event.getDates().get($firstDateIndex)))
        &lt;h4 style="$h4Style"&gt;$msg.get("watchlist.event.update.multiple", [$firstDate, $xwiki.formatDate($event.getDate()), $event.getVersions().size(), $event.getAuthors().size(), $authors])&lt;/h4&gt;
      #end
      &lt;div class="diff"&gt;
        #displayhtmldiff($event.getHTMLDiff($context.context))
      &lt;/div&gt;
    #end
  &lt;/div&gt;
  #set($previousEvent = $event)
  #set($previousDoc = $currentDoc)
#end
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</html>
</property>
<property>
<language>en</language>
</property>
<property>
<subject>XWiki updates, $modifiedDocuments.size() documents have been modified since $xwiki.formatDate($previousFireTime, $format)</subject>
</property>
<property>
<text></text>
</property>
</object>
<object>
<class>
<name>XWiki.TagClass</name>
<customClass></customClass>
<customMapping></customMapping>
<defaultViewSheet></defaultViewSheet>
<defaultEditSheet></defaultEditSheet>
<defaultWeb></defaultWeb>
<nameField></nameField>
<validationScript></validationScript>
<tags>
<cache>0</cache>
<displayType>input</displayType>
<multiSelect>1</multiSelect>
<name>tags</name>
<number>1</number>
<prettyName>Tags</prettyName>
<relationalStorage>1</relationalStorage>
<separator> </separator>
<separators> ,|</separators>
<size>30</size>
<unmodifiable>0</unmodifiable>
<values></values>
<classType>com.xpn.xwiki.objects.classes.StaticListClass</classType>
</tags>
</class>
<name>XWiki.WatchListMessage</name>
<number>0</number>
<className>XWiki.TagClass</className>
<guid>0f7e83e5-a401-4c01-8d75-49ba09398575</guid>
<property>
<tags/>
</property>
</object>
<content>
</content></xwikidoc>
{'fraction_non_alphanumeric': 0.15994809326468248, 'fraction_numerical': 0.050274184771233625, 'mean_word_length': 9.913659205116492, 'pattern_counts': {'":': 0, '<': 524, '<?xml version=': 2, '>': 524, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 6, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7154325', 'n_tokens_mistral': 10748, 'n_tokens_neox': 10027, 'n_words': 831}