<commit_before>(function(win, doc){

  var playground = document.createElement('div');
  playground.id = 'playground';
  doc.body.insertBefore(playground, doc.body.childNodes[0]);

  var style = document.createElement('style');
  var content = '.scrollTrigger {position:relative;width:5px;height:5px;background:#000;top:20000px;left:20000px;}';
  style.setAttribute("type", "text/css");
  if (style.styleSheet) {
      style.styleSheet.cssText = content;
  } else {
      style.appendChild(document.createTextNode(content));
  }
  document.getElementsByTagName("head")[0].appendChild(style);

  win['getPlayground'] = function getPlayground() {
    return playground;
  }

  win['insert'] = function insert(elt, html) {
    elt.innerHTML = html;
  }

  win['clean'] = function clean() {
    insert(playground, '');
    scroll(0, 0);
  }

  win['scroller'] = function scroller(x, y, container, cb) {
    if (typeof cb === 'function') {
      setTimeout(function() {
        smartScroll(x, y, container);
        setTimeout(cb, 20);
      }, 4);
    } else {
      return function(cb) {
        setTimeout(function() {
          smartScroll(x, y, container);
          setTimeout(cb, 20);
        }, 4);
      }
    }
  }

  function smartScroll(x, y, container) {
    if (!container) {
      scroll(x || 0, y || 0);
    } else {
      // tricky, on IE8 this will triggers TWO scroll events
      container.scrollLeft = x;
      container.scrollTop = y;
    }
  }

})(window, document);<commit_msg>lower the scroller timeout for tests<commit_after>(function(win, doc){

  var playground = document.createElement('div');
  playground.id = 'playground';
  doc.body.insertBefore(playground, doc.body.childNodes[0]);

  var style = document.createElement('style');
  var content = '#playground {position:absolute;top:0;left:0;line-height:0;font-size:0};.scrollTrigger {position:relative;width:5px;height:5px;background:#000;top:20000px;left:20000px;}';
  style.setAttribute("type", "text/css");
  if (style.styleSheet) {
      style.styleSheet.cssText = content;
  } else {
      style.appendChild(document.createTextNode(content));
  }
  document.getElementsByTagName("head")[0].appendChild(style);

  win['getPlayground'] = function getPlayground() {
    return playground;
  }

  win['insert'] = function insert(elt, html) {
    elt.innerHTML = html;
  }

  win['clean'] = function clean() {
    insert(playground, '');
    scroll(0, 0);
  }

  win['scroller'] = function scroller(x, y, container, cb) {
    if (typeof cb === 'function') {
      setTimeout(function() {
        smartScroll(x, y, container);
        setTimeout(cb, 12);
      }, 4);
    } else {
      return function(cb) {
        setTimeout(function() {
          smartScroll(x, y, container);
          setTimeout(cb, 12);
        }, 4);
      }
    }
  }

  function smartScroll(x, y, container) {
    if (!container) {
      scroll(x || 0, y || 0);
    } else {
      // tricky, on IE8 this will triggers TWO scroll events
      container.scrollLeft = x;
      container.scrollTop = y;
    }
  }

})(window, document);
{'fraction_non_alphanumeric': 0.15716137394685678, 'fraction_numerical': 0.019442644199611146, 'mean_word_length': 3.2229822161422708, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, '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': '2935862', 'n_tokens_mistral': 1023, 'n_tokens_neox': 968, 'n_words': 195}