diff --git a/examples/todomvc/.babelrc b/examples/loggit-todomvc/.babelrc
similarity index 100%
rename from examples/todomvc/.babelrc
rename to examples/loggit-todomvc/.babelrc
diff --git a/examples/loggit-todomvc/actions/ActionTypes.js b/examples/loggit-todomvc/actions/ActionTypes.js
new file mode 100644
index 0000000000..3d32d4a5bf
--- /dev/null
+++ b/examples/loggit-todomvc/actions/ActionTypes.js
@@ -0,0 +1,24 @@
+import _ from 'lodash';
+
+// Hides actual keys so everyone uses these constants.
+function mirrorKeys(keys) {
+ return keys.reduce((actionMap, key) => {
+ return {
+ [key]: _.uniqueId(key + ':'),
+ ...actionMap
+ };
+ }, {});
+}
+
+export default mirrorKeys([
+ 'ADDED_TODO',
+ 'DELETED_TODO',
+ 'EDITED_TODO',
+ 'CHECK_TODO',
+ 'UNCHECK_TODO',
+ 'CHECK_ALL',
+ 'UNCHECK_ALL',
+ 'CLEAR_MARKED',
+ 'FINISHED_EDITING_TODO',
+ 'WILL_EDIT_TODO'
+]);
diff --git a/examples/loggit-todomvc/actions/TodoActions.js b/examples/loggit-todomvc/actions/TodoActions.js
new file mode 100644
index 0000000000..85a869086e
--- /dev/null
+++ b/examples/loggit-todomvc/actions/TodoActions.js
@@ -0,0 +1,69 @@
+import * as types from './ActionTypes';
+
+export function addTodo(text) {
+ return {
+ type: types.ADDED_TODO,
+ text
+ };
+}
+
+export function deleteTodo(id) {
+ return {
+ type: types.DELETED_TODO,
+ id
+ };
+}
+
+export function editTodo(id, text) {
+ return {
+ type: types.EDITED_TODO,
+ id,
+ text
+ };
+}
+
+export function checkTodo(id) {
+ return {
+ type: types.CHECK_TODO,
+ id
+ };
+}
+
+export function uncheckTodo(id) {
+ return {
+ type: types.UNCHECK_TODO,
+ id
+ };
+}
+
+export function checkAll() {
+ return {
+ type: types.CHECK_ALL
+ };
+}
+
+export function uncheckAll() {
+ return {
+ type: types.UNCHECK_ALL
+ };
+}
+
+export function clearMarked() {
+ return {
+ type: types.CLEAR_MARKED
+ };
+}
+
+export function willEditTodo(todoId) {
+ return {
+ type: types.WILL_EDIT_TODO,
+ todoId: todoId
+ };
+}
+
+export function finishedEditingTodo(todoId) {
+ return {
+ type: types.FINISHED_EDITING_TODO,
+ todoId: todoId
+ };
+}
diff --git a/examples/loggit-todomvc/components/Debugger.js b/examples/loggit-todomvc/components/Debugger.js
new file mode 100644
index 0000000000..feff43700f
--- /dev/null
+++ b/examples/loggit-todomvc/components/Debugger.js
@@ -0,0 +1,100 @@
+import React from 'react';
+import * as TodoActions from '../actions/TodoActions';
+import compactionKey from '../stores/compaction_fn';
+
+// For hacking on internals
+export default class Debugger extends React.Component {
+ static propTypes = {
+ loggit: React.PropTypes.object.isRequired
+ };
+
+ constructor(props, context) {
+ super(props, context);
+ this.state = { isMonkeyAwake: false };
+ this.MonkeyTimer = null;
+ this.pokeMonkey = this.pokeMonkey.bind(this);
+ }
+
+ // For easier profiling
+ componentDidMount() {
+ window.setTimeout(() => this.startMonkeying(), 4000);
+ }
+
+ startMonkeying() {
+ this.setState({ isMonkeyAwake: true });
+ const before = this.profileSnapshot();
+ window.setTimeout(() => {
+ this.setState({ isMonkeyAwake: false });
+ const after = this.profileSnapshot();
+ this.outputProfiling(before, after);
+ }, 3000);
+ }
+
+ profileSnapshot() {
+ return {
+ heap: window.performance.memory.usedJSHeapSize
+ };
+ }
+
+ outputProfiling(before, after) {
+ // console.table([
+ // { heap: before.heap },
+ // { heap: after.heap },
+ // { heap: '+' + (after.heap - before.heap) }
+ // ]);
+ console.info({ heap: after.heap, delta: '+' + (after.heap - before.heap) });
+ console.info(window.profilingReporter.printStats());
+ }
+
+ handleMonkey() {
+ this.setState({ isMonkeyAwake: !this.state.isMonkeyAwake });
+ }
+
+ componentDidUpdate(prevProps, prevState) {
+ if (prevState.isMonkeyAwake === this.state.isMonkeyAwake) {
+ return;
+ }
+
+ if (this.state.isMonkeyAwake) {
+ this.MonkeyTimer = window.setInterval(this.pokeMonkey, 10);
+ } else {
+ window.clearInterval(this.MonkeyTimer);
+ }
+ }
+
+ pokeMonkey() {
+ const actionFns = [
+ TodoActions.checkAll,
+ TodoActions.uncheckAll,
+ TodoActions.clearMarked,
+ () => TodoActions.addTodo('do something: ' + Math.random())
+ ]
+ const randomIndex = Math.floor(Math.random() * actionFns.length);
+ const randomAction = actionFns[randomIndex]();
+ this.props.loggit.recordFact(randomAction);
+ }
+
+ forceCompaction() {
+ this.props.loggit.experimental.forceCompaction();
+ }
+
+ render() {
+ return (
+
+
+
+
+ );
+ }
+}
diff --git a/examples/todomvc/components/Footer.js b/examples/loggit-todomvc/components/Footer.js
similarity index 100%
rename from examples/todomvc/components/Footer.js
rename to examples/loggit-todomvc/components/Footer.js
diff --git a/examples/loggit-todomvc/components/Header.js b/examples/loggit-todomvc/components/Header.js
new file mode 100644
index 0000000000..cfc8787055
--- /dev/null
+++ b/examples/loggit-todomvc/components/Header.js
@@ -0,0 +1,26 @@
+import React, { PropTypes } from 'react';
+import TodoTextInput from './TodoTextInput';
+import * as TodoActions from '../actions/TodoActions';
+
+export default class Header {
+ static propTypes = {
+ loggit: PropTypes.object.isRequired
+ };
+
+ handleSave(text) {
+ if (text.length === 0) return;
+ const userAddedTodo = TodoActions.addTodo(text);
+ this.props.loggit.recordFact(userAddedTodo);
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
diff --git a/examples/loggit-todomvc/components/MainSection.js b/examples/loggit-todomvc/components/MainSection.js
new file mode 100644
index 0000000000..7e3ee369c5
--- /dev/null
+++ b/examples/loggit-todomvc/components/MainSection.js
@@ -0,0 +1,104 @@
+import React, { Component, PropTypes } from 'react';
+import TodoItem from './TodoItem';
+import Footer from './Footer';
+import { SHOW_ALL, SHOW_MARKED, SHOW_UNMARKED } from '../constants/TodoFilters';
+import ComputeTodos from '../stores/todos.js'
+import * as TodoActions from '../actions/TodoActions';
+
+
+const TODO_FILTERS = {
+ [SHOW_ALL]: () => true,
+ [SHOW_UNMARKED]: todo => !todo.marked,
+ [SHOW_MARKED]: todo => todo.marked
+};
+
+export default class MainSection extends Component {
+ static propTypes = {
+ loggit: PropTypes.object.isRequired
+ };
+
+ constructor(props, context) {
+ super(props, context);
+ this.state = { filter: SHOW_ALL };
+ }
+
+ handleClearMarked() {
+ const {todos} = this.data();
+ const atLeastOneMarked = todos.some(todo => todo.marked);
+ if (!atLeastOneMarked) return;
+
+ this.props.loggit.recordFact(TodoActions.clearMarked());
+ }
+
+ handleShow(filter) {
+ this.setState({ filter });
+ }
+
+ handleInputChanged() {
+ const {todos} = this.data();
+ const fact = (todos.every(todo => todo.marked))
+ ? TodoActions.uncheckAll()
+ : TodoActions.checkAll();
+ this.props.loggit.recordFact(fact);
+ }
+
+ computations() {
+ return {
+ todos: ComputeTodos
+ }
+ }
+
+ data() {
+ return this.props.loggit.computeFor(this);
+ }
+
+ render() {
+ const { todos } = this.data();
+ const { filter } = this.state;
+
+ const filteredTodos = todos.filter(TODO_FILTERS[filter]);
+ const markedCount = todos.reduce((count, todo) =>
+ todo.marked ? count + 1 : count,
+ 0
+ );
+
+ return (
+
+ {this.renderToggleAll(todos, markedCount)}
+
+ {filteredTodos.map(todo =>
+
+ )}
+
+ {this.renderFooter(markedCount)}
+
+ );
+ }
+
+ renderToggleAll(todos, markedCount) {
+ if (todos.length > 0) {
+ return (
+
+ );
+ }
+ }
+
+ renderFooter(markedCount) {
+ const { todos } = this.data();
+ const { filter } = this.state;
+ const unmarkedCount = todos.length - markedCount;
+
+ if (todos.length) {
+ return (
+
+ );
+ }
+ }
+}
diff --git a/examples/loggit-todomvc/components/TodoApp.js b/examples/loggit-todomvc/components/TodoApp.js
new file mode 100644
index 0000000000..05054d003f
--- /dev/null
+++ b/examples/loggit-todomvc/components/TodoApp.js
@@ -0,0 +1,21 @@
+import 'todomvc-app-css/index.css';
+import React from 'react';
+import Header from '../components/Header';
+import MainSection from '../components/MainSection';
+import Debugger from '../components/Debugger';
+
+export default class TodoApp {
+ static propTypes = {
+ loggit: React.PropTypes.object.isRequired
+ }
+
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
+}
diff --git a/examples/loggit-todomvc/components/TodoItem.js b/examples/loggit-todomvc/components/TodoItem.js
new file mode 100644
index 0000000000..6315a13ee4
--- /dev/null
+++ b/examples/loggit-todomvc/components/TodoItem.js
@@ -0,0 +1,87 @@
+import React, { Component, PropTypes } from 'react';
+import classnames from 'classnames';
+import TodoTextInput from './TodoTextInput';
+import * as TodoActions from '../actions/TodoActions';
+import IsEditingMap from '../stores/is_editing_map.js'
+
+export default class TodoItem extends Component {
+ static propTypes = {
+ todo: PropTypes.object.isRequired,
+ loggit: PropTypes.object.isRequired
+ };
+
+ constructor(props, context) {
+ super(props, context);
+ }
+
+ computations() {
+ return {
+ isEditingMap: IsEditingMap
+ }
+ }
+
+ handleDoubleClick() {
+ const {todo} = this.props;
+ this.props.loggit.recordFact(TodoActions.willEditTodo(todo.id));
+ }
+
+ handleMarkTodo() {
+ const {todo} = this.props;
+ const fact = (todo.marked)
+ ? TodoActions.uncheckTodo(todo.id)
+ : TodoActions.checkTodo(todo.id)
+ this.props.loggit.recordFact(fact);
+ }
+
+ handleDestroyTodo() {
+ const {todo} = this.props;
+ this.props.loggit.recordFact(TodoActions.deleteTodo(todo.id));
+ }
+
+ handleSave(id, text) {
+ const finishedEditingFact = TodoActions.finishedEditingTodo(id);
+ this.props.loggit.recordFact(finishedEditingFact);
+
+ const mutationFact = (text.length === 0)
+ ? TodoActions.deleteTodo(id)
+ : TodoActions.editTodo(id, text);
+ this.props.loggit.recordFact(mutationFact);
+ }
+
+ render() {
+ const {todo} = this.props;
+ const isEditing = this.props.loggit.computeFor(this).isEditingMap[todo.id];
+
+ let element;
+ if (isEditing) {
+ element = (
+ this.handleSave(todo.id, text)} />
+ );
+ } else {
+ element = (
+
+
+
+
+
+ );
+ }
+
+ return (
+
+ {element}
+
+ );
+ }
+}
diff --git a/examples/loggit-todomvc/components/TodoTextInput.js b/examples/loggit-todomvc/components/TodoTextInput.js
new file mode 100644
index 0000000000..af376497ed
--- /dev/null
+++ b/examples/loggit-todomvc/components/TodoTextInput.js
@@ -0,0 +1,59 @@
+import React, { Component, PropTypes } from 'react';
+import classnames from 'classnames';
+
+export default class TodoTextInput extends Component {
+ static propTypes = {
+ onSave: PropTypes.func.isRequired,
+ text: PropTypes.string,
+ placeholder: PropTypes.string,
+ editing: PropTypes.bool,
+ isNewTodo: PropTypes.bool
+ };
+
+ constructor(props, context) {
+ super(props, context);
+ this.defaultProps = {
+ isNewTodo: false,
+ editing: false
+ };
+ this.state = {
+ text: this.props.text || ''
+ };
+ }
+
+ handleSubmit(e) {
+ const text = e.target.value.trim();
+ if (e.which !== 13) return;
+
+ this.props.onSave(text);
+ if (this.props.isNewTodo) {
+ this.setState({ text: '' });
+ }
+ }
+
+ handleChange(e) {
+ this.setState({ text: e.target.value });
+ }
+
+ handleBlur(e) {
+ if (!this.props.isNewTodo) {
+ this.props.onSave(e.target.value);
+ }
+ }
+
+ render() {
+ return (
+
+ );
+ }
+}
diff --git a/examples/todomvc/constants/TodoFilters.js b/examples/loggit-todomvc/constants/TodoFilters.js
similarity index 100%
rename from examples/todomvc/constants/TodoFilters.js
rename to examples/loggit-todomvc/constants/TodoFilters.js
diff --git a/examples/loggit-todomvc/index.html b/examples/loggit-todomvc/index.html
new file mode 100644
index 0000000000..13dbd4b9ae
--- /dev/null
+++ b/examples/loggit-todomvc/index.html
@@ -0,0 +1,10 @@
+
+
+ Loggit TodoMVC
+
+
+
+
+
+
+
diff --git a/examples/loggit-todomvc/index.js b/examples/loggit-todomvc/index.js
new file mode 100644
index 0000000000..8ce5148e13
--- /dev/null
+++ b/examples/loggit-todomvc/index.js
@@ -0,0 +1,17 @@
+import React from 'react';
+import LoggitShell from './loggit/shell';
+import ProfilingReporter from './loggit/profiling_reporter'
+import initialFacts from './test/initial_facts_set1';
+import TodoApp from './components/TodoApp';
+
+
+// Entry point
+const el = document.getElementById('root');
+const loggitShell = new LoggitShell(TodoApp, el, {initialFacts});
+loggitShell.start();
+
+
+// For debugging and profiling
+window.React = React;
+window.loggitShell = loggitShell;
+window.profilingReporter = new ProfilingReporter(loggitShell);
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/README.md b/examples/loggit-todomvc/loggit/README.md
new file mode 100644
index 0000000000..d7efa054f8
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/README.md
@@ -0,0 +1,115 @@
+Test results for set1:
+-------------
+Profiling methodology is to do a hard reload, then check 'time in compute'
+for each optimizer on the console. The data set is randomly generated though, so
+it's not a repeatable test, just ballpark. Logging seems to affect these
+numbers quite a bit, so there's a test that removes them.
+
+This loads initial_facts_set1 initially, and the 'monkey' in the Debugger adding random actions is set to run for 3sec, adding a random action at 10ms interval.
+
+Output format is: [
+ percent of calls using any optimization,
+ total calls,
+ total time spent in compute method,
+ optimizer
+]
+
+Raw output:
+[100, 827, 234, MemoizingSnapshotOptimizer]
+[100, 686, 191, MemoizingSnapshotOptimizer]
+[100, 898, 181, MemoizingSnapshotOptimizer]
+[100, 738, 181, MemoizingSnapshotOptimizer]
+[100, 980, 215, MemoizingSnapshotOptimizer]
+[100, 1070, 188, MemoizingSnapshotOptimizer]
+[100, 723, 173, MemoizingSnapshotOptimizer]
+[65, 777, 999, MemoizingOptimizerV2]
+[65, 754, 942, MemoizingOptimizerV2]
+[82, 1370, 903, MemoizingOptimizerV2]
+[71, 855, 1039, MemoizingOptimizerV2]
+[63, 643, 1035, MemoizingOptimizerV2]
+[76, 1005, 993, MemoizingOptimizerV2]
+[77, 1163, 914, MemoizingOptimizerV2]
+[69, 839, 1045, MemoizingOptimizer]
+[64, 713, 942, MemoizingOptimizer]
+[76, 1065, 986, MemoizingOptimizer]
+[71, 902, 1041, MemoizingOptimizer]
+[68, 888, 920, MemoizingOptimizer]
+[74, 911, 934, MemoizingOptimizer]
+[67, 789, 956, MemoizingOptimizer]
+[NaN, NaN, 1678, NoopOptimizer]
+[NaN, NaN, 1567, NoopOptimizer]
+[NaN, NaN, 1485, NoopOptimizer]
+[NaN, NaN, 1549, NoopOptimizer]
+[NaN, NaN, 1726, NoopOptimizer]
+[NaN, NaN, 1605, NoopOptimizer]
+[NaN, NaN, 1478, NoopOptimizer]
+
+
+Test2:
+-----
+This is the same as Test1, but swaps in PrecomputeReactRenderer. I re-ran the
+other tests to make sure I didn't regress previous behavior, since quite a bit changed.
+
+Results are here:
+https://docs.google.com/spreadsheets/d/1_j-exUs3XjqjXh4Xa4D7nDspH5vaRlj9_dEKmB7iGCM/edit#gid=0
+
+output format: [
+ renderer:
+ total time,
+ calls,
+ time/call,
+ compute:
+ total time,
+ calls,
+ time/call
+ renderer
+ optimizer
+]
+
+initComponents: Object {optimizer: NoopOptimizer, renderer: NaiveReactRenderer, loggit: Object}
+["r:", 2204, 228, 9.6682, "c:", 1257, 1150, 1.0935, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2353, 220, 10.6964, "c:", 1350, 1448, 0.9323, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2338, 213, 10.9755, "c:", 1364, 1399, 0.9751, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2310, 212, 10.8985, "c:", 1245, 1517, 0.8209, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2363, 225, 10.5018, "c:", 1373, 1395, 0.9845, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2216, 241, 9.1947, "c:", 1267, 1111, 1.1405, "|", NoopOptimizer, NaiveReactRenderer]
+["r:", 2271, 227, 10.0041, "c:", 1355, 1107, 1.2241, "|", NoopOptimizer, NaiveReactRenderer]
+
+initComponents: Object {optimizer: NoopOptimizer, renderer: RafReactRenderer, loggit: Object}
+["r:", 1527, 170, 8.9831, "c:", 904, 636, 1.421, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1874, 152, 12.3294, "c:", 988, 1443, 0.685, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1665, 171, 9.7351, "c:", 939, 915, 1.0267, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1655, 164, 10.0931, "c:", 847, 890, 0.9518, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1597, 168, 9.5079, "c:", 904, 1023, 0.8838, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1559, 171, 9.1186, "c:", 861, 900, 0.9568, "|", NoopOptimizer, RafReactRenderer]
+["r:", 1943, 146, 13.307, "c:", 1026, 1564, 0.6563, "|", NoopOptimizer, RafReactRenderer]
+
+
+initComponents: Object {optimizer: MemoizingOptimizer, renderer: RafReactRenderer, loggit: Object}
+["r:", 1363, 165, 8.2628, "c:", 490, 989, 0.4953, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1123, 173, 6.4916, "c:", 466, 909, 0.5123, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1263, 173, 7.2985, "c:", 509, 794, 0.6408, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1165, 172, 6.7748, "c:", 464, 832, 0.5579, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1094, 162, 6.7551, "c:", 479, 640, 0.7483, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1248, 172, 7.2538, "c:", 503, 799, 0.6294, "|", MemoizingOptimizer, RafReactRenderer]
+["r:", 1139, 174, 6.5435, "c:", 463, 848, 0.5465, "|", MemoizingOptimizer, RafReactRenderer]
+
+initComponents: Object {optimizer: MemoizingSnapshotOptimizer, renderer: RafReactRenderer, loggit: Object}
+["r:", 1088, 168, 6.4785, "c:", 182, 996, 0.1829, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 883, 167, 5.2899, "c:", 169, 981, 0.1724, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 1017, 165, 6.1609, "c:", 184, 1005, 0.1832, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 893, 165, 5.4147, "c:", 138, 754, 0.1824, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 1010, 169, 5.979, "c:", 170, 995, 0.1705, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 934, 159, 5.8751, "c:", 158, 880, 0.1801, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+["r:", 812, 170, 4.7748, "c:", 134, 769, 0.174, "|", MemoizingSnapshotOptimizer, RafReactRenderer]
+
+
+initComponents: Object {optimizer: MemoizingSnapshotOptimizer, renderer: PrecomputeReactRenderer, loggit: Object}
+["r:", 843, 166, 5.0762, "c:", 198, 1010, 0.1958, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 617, 169, 3.65, "c:", 140, 696, 0.2008, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 656, 173, 3.7938, "c:", 140, 804, 0.1739, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 816, 159, 5.1315, "c:", 220, 1057, 0.2083, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 1020, 161, 6.3332, "c:", 306, 1496, 0.2045, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 759, 168, 4.5188, "c:", 205, 927, 0.2216, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+["r:", 896, 166, 5.3999, "c:", 289, 1222, 0.2365, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer]
+
diff --git a/examples/loggit-todomvc/loggit/compactor.js b/examples/loggit-todomvc/loggit/compactor.js
new file mode 100644
index 0000000000..a55402ab35
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/compactor.js
@@ -0,0 +1,15 @@
+import _ from 'lodash';
+
+// Naive key compaction
+// obviously not efficient
+export default class Compactor {
+ // keyFn returns tuples of primitives
+ compacted(facts, keyFn) {
+ const serializedKeyFn = _.compose(JSON.stringify, keyFn);
+ const groupedFacts = _.groupBy(facts, serializedKeyFn);
+ const compactedFacts = Object.keys(groupedFacts).map((compactionKey) => {
+ return _.last(groupedFacts[compactionKey]);
+ });
+ return _.sortBy(compactedFacts, (fact) => fact['@@loggit'].timestamp);
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/log.js b/examples/loggit-todomvc/loggit/log.js
new file mode 100644
index 0000000000..c981116ce3
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/log.js
@@ -0,0 +1,52 @@
+import _ from 'lodash';
+
+// Holds the log data
+export default class Log {
+ constructor(options = {}) {
+ this.options = options;
+ this.facts = options.initialFacts || [];
+ this.offset = this.facts.length;
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ recordFact(fact) {
+ if (!fact.type) {
+ console.warn('Log#recordFact missing fact.type: ', fact);
+ }
+ this._persistStampedFact(this._stampFact(fact));
+ return undefined;
+ }
+
+ // impure, adds some stateful bits to the fact
+ _stampFact(fact) {
+ return _.extend({}, fact, {
+ '@@loggit': {
+ timestamp: Date.now(),
+ offset: ++this.offset
+ }
+ });
+ }
+
+ _persistStampedFact(stampedFact) {
+ this.logMsg('Log#_persistStampedFact', this.facts.length, stampedFact);
+ this.facts = this.facts.concat(stampedFact);
+ if (this.options.onFact) {
+ this.options.onFact(this);
+ }
+ }
+
+ // quirk here, probably a bad idea. but [].reduce short-circuits and doesn't
+ // call the reducer, meaning we won't get the same shape from the value in the
+ // reducer's optional argument and consumers have to handle the shape of the
+ // data changing.
+ // this keeps the shape of the data the same.
+ reduceComputation(computation) {
+ this.logMsg('Log#reduce:', computation);
+ return (this.facts.length === 0)
+ ? computation.initial
+ : this.facts.reduce(computation.reducer, computation.initial)
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer.js b/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer.js
new file mode 100644
index 0000000000..f1775c63e4
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer.js
@@ -0,0 +1,81 @@
+import Timer from '../timer';
+
+
+// Maintains a cache of calls, for repeats calls to the same fn
+// with the same set of facts.
+export default class MemoizingOptimizer {
+ constructor(log, options = {}) {
+ this.log = log;
+
+ // [fn, fn, fn]
+ // ->
+ // [{index: value}, {index: value}, {index: value}]
+ this._cacheSize = options.cacheSize || 10;
+ this._computations = Array(this._cacheSize);
+ this._values = Array(this._cacheSize);
+ this._nextCacheIndex = 0;
+
+ this._hitCount = 0;
+ this._missCount = 0;
+ this.timer = new Timer('MemoizingOptimizer.compute', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ compute(computations) {
+ return this.timer.time(() => {
+ return Object.keys(computations).reduce((slots, key) => {
+ slots[key] = this.reduce(this.log, computations[key]);
+ return slots;
+ }, {});
+ });
+ }
+
+ // This conflicts a bit with compaction, since if the length
+ // changes we can get collisions. With immutability, saving a reference
+ // to 'facts' and checking that for equality would be better.
+ reduce(log, computation) {
+ const offset = log.facts.length;
+
+ // read cache
+ const computationIndex = this._computations.indexOf(computation);
+ if (computationIndex !== -1) {
+ var valuesByOffset = this._values[computationIndex];
+ const cachedValue = valuesByOffset[offset];
+ if (cachedValue !== undefined) {
+ this._hitCount++;
+ this.logMsg('MemoizingOptimizer#hit:', this._hitCount);
+ return cachedValue;
+ }
+ }
+
+ // compute
+ this._missCount++;
+ this.logMsg('MemoizingOptimizer#miss:', this._missCount);
+ const computedValue = this.log.reduceComputation(computation);
+
+ // write cache, existing computation
+ if (computationIndex !== -1) {
+ this.logMsg('MemoizingOptimizer#writing for existing computation:', computation, offset, computedValue);
+ valuesByOffset[offset] = computedValue;
+ return computedValue;
+ }
+
+ // new computation, may rollover bounds
+ if (this._nextCacheIndex >= this._cacheSize) {
+ this.logMsg('MemoizingOptimizer#rolling over');
+ this._nextCacheIndex = 0;
+ }
+
+ this.logMsg('MemoizingOptimizer#writing for NEW computation', computation, offset, computedValue);
+ this._computations[this._nextCacheIndex] = computation;
+ this._values[this._nextCacheIndex] = _.extend({}, this._values[this._nextCacheIndex], { [offset]: computedValue });
+ this._nextCacheIndex++;
+
+ return computedValue;
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer_v2.js b/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer_v2.js
new file mode 100644
index 0000000000..0b91f3a786
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/optimizers/memoizing_optimizer_v2.js
@@ -0,0 +1,77 @@
+import Timer from '../timer';
+
+// Maintains a cache of calls, for repeats calls to the same fn
+// with the same set of facts.
+// This is attempting to optimize the way the cache actual works but doesn't
+// change the semantics.
+export default class MemoizingOptimizerV2 {
+ constructor(log, options = {}) {
+ this.log = log;
+
+ // {[fn,offset] -> value}
+ this._cacheSize = options.cacheSize || 10;
+ this._keys = Array(this._cacheSize);
+ this._values = Array(this._cacheSize);
+ this._heat = Array(this._cacheSize);
+ this._nextCacheIndex = 0;
+
+ this._hitCount = 0;
+ this._missCount = 0;
+ this.timer = new Timer('MemoizingOptimizerV2.compute', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ compute(computations) {
+ return this.timer.time(() => {
+ return Object.keys(computations).reduce((slots, key) => {
+ slots[key] = this.reduce(this.log, computations[key]);
+ return slots;
+ }, {});
+ });
+ }
+
+ // This conflicts a bit with compaction, since if the log length
+ // changes we can get collisions. With immutability, saving a reference
+ // to 'facts' and checking that for equality would be better.
+ reduce(log, computation) {
+ // read cache
+ const cacheKey = [
+ JSON.stringify(computation.initial), // TODO(kr) would require this to be serializable
+ computation.reducer,
+ log.facts.length
+ ].join('@@loggit');
+
+ const index = this._keys.indexOf(cacheKey);
+ if (index !== -1) {
+ const value = this._values[index];
+ if (value !== undefined) {
+ this._hitCount++;
+ this.logMsg('MemoizingOptimizerV2#hit:', this._hitCount);
+ return value;
+ }
+ }
+
+ // compute
+ this._missCount++;
+ this.logMsg('MemoizingOptimizerV2#miss:', this._missCount);
+ const computedValue = this.log.reduceComputation(computation);
+
+ // new key, may rollover bounds
+ if (this._nextCacheIndex >= this._cacheSize) {
+ this.logMsg('MemoizingOptimizerV2#rolling over');
+ this._nextCacheIndex = 0;
+ }
+
+ this.logMsg('MemoizingOptimizerV2#writing for new key', cacheKey, computedValue);
+ this._keys[this._nextCacheIndex] = cacheKey;
+ this._values[this._nextCacheIndex] = computedValue;
+ this._nextCacheIndex++;
+
+ return computedValue;
+ }
+}
diff --git a/examples/loggit-todomvc/loggit/optimizers/memoizing_snapshot_optimizer.js b/examples/loggit-todomvc/loggit/optimizers/memoizing_snapshot_optimizer.js
new file mode 100644
index 0000000000..77d27c8a60
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/optimizers/memoizing_snapshot_optimizer.js
@@ -0,0 +1,143 @@
+import Timer from '../timer';
+
+// Maintains a cache memoizing calls, for repeats calls to the same fn
+// with the same set of facts.
+//
+// Also maintains a cache of snapshots, saving previously computed values,
+// so that when new facts come in we can avoid a full re-reduce over the entire
+// log and work from the snapshot.
+//
+// no real work here to bound these caches, just focused on getting a
+// rough sense of their effect
+const VALUE_NOT_FOUND = '@@loggit:VALUE_NOT_FOUND:loggit@@';
+
+export default class MemoizingSnapshotOptimizer {
+ constructor(log, options = {}) {
+ this.log = log;
+
+ // {[fn,offset] -> value}
+ this._cacheSize = options.cacheSize || 10;
+ this._keys = Array(this._cacheSize);
+ this._values = Array(this._cacheSize);
+ this._heat = Array(this._cacheSize);
+ this._nextCacheIndex = 0;
+
+ // not bounded yet
+ this._snapshotCache = {};
+
+ this._hitCount = 0;
+ this._missCount = 0;
+
+ this.timer = new Timer('MemoizingSnapshotOptimizer.compute', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ compute(computations) {
+ return this.timer.time(() => {
+ return Object.keys(computations).reduce((slots, key) => {
+ slots[key] = this.reduce(this.log, computations[key]);
+ return slots;
+ }, {});
+ });
+ }
+
+ memoizationCacheKey(log, computation) {
+ return [
+ JSON.stringify(computation.initial),
+ computation.reducer,
+ log.facts.length
+ ].join('@loggit@');
+ }
+
+ readMemoizationCache(cacheKey) {
+ const index = this._keys.indexOf(cacheKey);
+ return (index === -1)
+ ? VALUE_NOT_FOUND
+ : this._values[index];
+ }
+
+ writeToMemoizationCache(cacheKey, computedValue) {
+ // new key, may rollover bounds
+ if (this._nextCacheIndex >= this._cacheSize) {
+ this.logMsg('MemoizingSnapshotOptimizer#rolling over');
+ this._nextCacheIndex = 0;
+ }
+
+ // write to memoization cache
+ this.logMsg('MemoizingSnapshotOptimizer#writing for new key', cacheKey, computedValue);
+ this._keys[this._nextCacheIndex] = cacheKey;
+ this._values[this._nextCacheIndex] = computedValue;
+ this._nextCacheIndex++;
+
+ return undefined;
+ }
+
+ snapshotCacheKey(computation) {
+ return [
+ JSON.stringify(computation.initial),
+ computation.reducer
+ ].join('@loggit@');
+ }
+
+ readSnapshotCache(cacheKey) {
+ const snapshot = this._snapshotCache[cacheKey];
+ return (snapshot === undefined)
+ ? VALUE_NOT_FOUND
+ : snapshot;
+ }
+
+ // Requires reaching into the log to slice the facts,
+ // and also makes assumptions about length always growing.
+ // Could swap this around to find an offset.
+ computeFromSnapshot(log, computation, snapshot) {
+ const slice = this.log.facts.slice(snapshot.index);
+ return slice.reduce(computation.reducer, snapshot.computedValue);
+ }
+
+ writeToSnapshotCache(snapshotCacheKey, log, computedValue) {
+ this._snapshotCache[snapshotCacheKey] = {
+ index: log.facts.length,
+ computedValue
+ };
+ return undefined;
+ }
+
+ // This conflicts a bit with compaction, since if the log length
+ // changes we can get collisions. With immutability, saving a reference
+ // to 'facts' and checking that for equality would be better.
+ reduce(log, computation) {
+ // check memoization cache
+ const memoizationCacheKey = this.memoizationCacheKey(log, computation);
+ const memoizedValue = this.readMemoizationCache(memoizationCacheKey);
+ if (memoizedValue !== VALUE_NOT_FOUND) {
+ this._hitCount++;
+ this.logMsg('MemoizingSnapshotOptimizer#memoizationHit:', this._hitCount);
+ return memoizedValue;
+ }
+
+ // check for snapshot to start from
+ const snapshotCacheKey = this.snapshotCacheKey(computation);
+ const snapshot = this.readSnapshotCache(snapshotCacheKey);
+ if (snapshot !== VALUE_NOT_FOUND) {
+ this._hitCount++;
+ this.logMsg('MemoizingSnapshotOptimizer#snapshotHit:', this._hitCount);
+ return this.computeFromSnapshot(log, computation, snapshot);
+ }
+
+ // compute
+ this._missCount++;
+ this.logMsg('MemoizingSnapshotOptimizer#miss:', this._missCount);
+ const computedValue = this.log.reduceComputation(computation);
+
+ // write to caches
+ this.writeToMemoizationCache(memoizationCacheKey, computedValue);
+ this.writeToSnapshotCache(snapshotCacheKey, log, computedValue);
+
+ return computedValue;
+ }
+}
diff --git a/examples/loggit-todomvc/loggit/optimizers/noop_optimizer.js b/examples/loggit-todomvc/loggit/optimizers/noop_optimizer.js
new file mode 100644
index 0000000000..7698a98e09
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/optimizers/noop_optimizer.js
@@ -0,0 +1,33 @@
+import Timer from '../timer';
+
+// Just a placeholder with profiling, does no actual optimizations.
+export default class NoopOptimizer {
+ constructor(log, options = {}) {
+ this.log = log;
+ this._timeInCompute = 0;
+ this._calls = 0;
+
+ this.timer = new Timer('NoopOptimizer.compute', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ compute(computations) {
+ return this.timer.time(() => {
+ return Object.keys(computations).reduce((slots, key) => {
+ slots[key] = this.reduce(this.log, computations[key]);
+ return slots;
+ }, {});
+ });
+ }
+
+ reduce(log, computation) {
+ this._calls++;
+ this.logMsg('NoopOptimizer#reduce:', this._calls);
+ return log.reduceComputation(computation);
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/profiling_reporter.js b/examples/loggit-todomvc/loggit/profiling_reporter.js
new file mode 100644
index 0000000000..94313cf9f7
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/profiling_reporter.js
@@ -0,0 +1,31 @@
+// code for pulling out profiling data and reporting it
+export default class ProfilingReporter {
+ constructor(loggitShell) {
+ this.loggitShell = loggitShell;
+ }
+
+ printStats() {
+ const {renderer, optimizer} = loggitShell;
+ const optimizerPercentHits = Math.round(100 * optimizer._hitCount / optimizer.timer.calls);
+ return [
+ 'r:',
+ Math.round(renderer.timer.totalTime),
+ renderer.timer.calls,
+ this.timePerCall(renderer.timer),
+ 'c:',
+ Math.round(optimizer.timer.totalTime),
+ optimizer.timer.calls,
+ this.timePerCall(optimizer.timer),
+ // 'c+:',
+ // isNaN(optimizerPercentHits) ? 0 : optimizerPercentHits,
+ // optimizer.timer.calls,
+ '|',
+ optimizer,
+ renderer
+ ];
+ }
+
+ timePerCall(timer) {
+ return parseFloat((timer.totalTime / timer.calls).toFixed(4));
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/react_interpreter.js b/examples/loggit-todomvc/loggit/react_interpreter.js
new file mode 100644
index 0000000000..ea95da18c5
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/react_interpreter.js
@@ -0,0 +1,29 @@
+// reaching into React's internals here, so isolating that out.
+// no idea if this works on react-native.
+export default {
+ nodeId: (component) => {
+ return component._reactInternalInstance._rootNodeID;
+ },
+
+ childComponents: (component) => {
+ // Not sure what this wrapping is about, seems like there are different
+ // shapes for normal components and bottom ones.
+ const renderedComponent = component._reactInternalInstance._renderedComponent._renderedComponent || component._reactInternalInstance._renderedComponent;
+ const renderedChildren = renderedComponent._renderedChildren || {};
+ if (!renderedChildren) {
+ console.warn(component);
+ }
+
+ // same here, some internal DOM components (eg, ReactDOMTextComponent) don't
+ // have this property, i assume since we're at the bottom layer bridging to
+ // the native system.
+ return _.compact(_.pluck(_.values(renderedChildren), '_instance'));
+ },
+
+ // This is part of the loggit API, not React internals.
+ // It's here since it's something the precompute
+ // renderer expects from React components.
+ computations: (component) => {
+ return (component.computations) ? component.computations() : {};
+ }
+};
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/renderers/naive_react_renderer.js b/examples/loggit-todomvc/loggit/renderers/naive_react_renderer.js
new file mode 100644
index 0000000000..fde2927335
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/renderers/naive_react_renderer.js
@@ -0,0 +1,44 @@
+import React from 'react';
+import Timer from '../timer';
+
+
+// Starting super naive, no shouldComponentUpdate or any
+// optimization.
+export default class NaiveReactRenderer {
+ constructor(reactClass, el, loggit) {
+ this.reactClass = reactClass;
+ this.el = el;
+ this.loggit = loggit;
+
+ this.timer = new Timer('NaiveReactRenderer.render', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ start() {
+ return undefined;
+ }
+
+ destroy() {
+ return undefined;
+ }
+
+ notify() {
+ this._render();
+ }
+
+ _render() {
+ this.logMsg('NaiveReactRenderer#render');
+ this.timer.time(() => {
+ React.render(
+ ,
+ this.el
+ );
+ });
+ return undefined;
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/renderers/precompute_react_renderer.js b/examples/loggit-todomvc/loggit/renderers/precompute_react_renderer.js
new file mode 100644
index 0000000000..2b8cb27955
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/renderers/precompute_react_renderer.js
@@ -0,0 +1,163 @@
+import React from 'react';
+import _ from 'lodash';
+import ReactInterpreter from '../react_interpreter'
+import Timer from '../timer';
+
+
+// This batches with RAF, but also precomputes values for `compute`
+// before calling `render` in the next animation frame.
+// This way we can split the computation step from rendering, and more computation
+// that render will need will have been memoized before synchronously
+// calling render.
+//
+// The idea is we write the computation we want performed in components, then
+// that can be precomputed before render, so that the hot path in render can stay
+// synchronous and fast.
+//
+// This doesn't work when render has branching we can't look inside, but that
+// should be isolated to that part of the component tree, and other
+// compute optimizations should help there.
+export default class PrecomputeReactRenderer {
+ constructor(reactClass, el, loggit, options = {}) {
+ this.reactClass = reactClass;
+ this.el = el;
+ this.loggit = loggit;
+ this.options = options;
+ this.optimizer = options.optimizer;
+
+ this._loop = this._loop.bind(this);
+ this._lastCompute = {};
+ this._rootComponent = null;
+
+ this.timer = new Timer('PrecomputeReactRenderer.render', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ start() {
+ this._wasDestroyed = false;
+ this._isDirty = true;
+ this._loop();
+ }
+
+ notify() {
+ this._isDirty = true;
+ }
+
+ destroy() {
+ // this._rootComponent = null;
+ this._wasDestroyed = true;
+ return undefined;
+ }
+
+ _loop() {
+ if (this._wasDestroyed) return;
+ if (this._isDirty) {
+ this.timer.time(() => {
+ this._render();
+ });
+ this._isDirty = false;
+ }
+
+ window.requestAnimationFrame(this._loop);
+ }
+
+ // additional API for optimizer/renderer cooperation
+ // we're trying to improve over naive top-down rendering
+ notifyAboutCompute(component, computations, computedValues) {
+ const reactNodeId = ReactInterpreter.nodeId(component);
+ this.logMsg('PrecomputeReactRenderer#notifyAboutCompute', reactNodeId, computedValues);
+ this._lastCompute[reactNodeId] = {computedValues}
+ }
+
+
+ // instead of top-down rendering, we'll walk the tree ourselves, calling
+ // render as we need to when a copmutedValue has changed, only in order to
+ // discover lower branches of the tree.
+ _render() {
+ this.logMsg('PrecomputeReactRenderer#render');
+ if (!this._rootComponent) {
+ return this._initialRender();
+ }
+
+ // discover what parts of the tree need to be rendered.
+ const dirtyComponents = this._findDirtyComponents(this._rootComponent);
+ // console.info('PrecomputeReactRenderer:dirtyComponents:', dirtyComponents);
+
+ // do something about it to update components.
+ // could use heuristics here to batch further.
+ // we could also optimize this if child components under a 'dirty' component
+ // end up computing the same data for their component. that's an additional
+ // step, where we essentially want to short-circuit like `shouldComponentUpdate`.
+ // could work by setState into each component, might be straightforward.
+ dirtyComponents.forEach((dirtyComponent) => {
+ this.logMsg('PrecomputeReactRenderer:forceUpdate', dirtyComponent);
+ dirtyComponent.forceUpdate();
+ });
+ }
+
+ // This is important since it also collects the
+ // information about compute for optimizing in
+ // subsequent passes.
+ _initialRender() {
+ this._rootComponent = React.render(
+ ,
+ this.el
+ );
+ }
+
+ // Computes and checks whether value changed and we should render.
+ _shouldRender(component) {
+ const reactNodeId = ReactInterpreter.nodeId(component);
+ const lastCompute = this._lastCompute[reactNodeId];
+ const computations = ReactInterpreter.computations(component);
+ this.logMsg('computations:', computations);
+ if (_.isEmpty(computations)) {
+ return false;
+ }
+
+ // immutability would help here
+ const prevComputedValues = lastCompute.computedValues || {};
+ const nextComputedValues = this.optimizer.compute(computations);
+ this.logMsg('prev:', prevComputedValues, 'next:', nextComputedValues);
+ const shouldRender = !_.isEqual(prevComputedValues, nextComputedValues);
+ this.logMsg('shouldRender:', shouldRender);
+ return shouldRender;
+ }
+
+ // this is a little slipperty, using the loggit seam to make calls
+ // to the optimizer that aren't tracked.
+ _findDirtyComponents(component) {
+ const reactNodeId = ReactInterpreter.nodeId(component);
+ this.logMsg('PrecomputeReactRenderer#_findDirtyComponents', reactNodeId);
+
+ // don't have to render that component if none of its data
+ // has changed. but we do have to keep walking the tree since
+ // child components might compute something different (ie, it's not
+ // really top-down at all anymore).
+ const shouldRender = this._shouldRender(component);
+ if (shouldRender) {
+ // we need to render the rest of the tree under this component, since
+ // its data has changed and we can't know the effects on the react component
+ // tree. this is where the strength of writing plain code in `render` hurts,
+ // since we can inspect further inside that function to do any optimizations.
+ //
+ // return this node and everythign under it as dirty.
+ this.logMsg('PrecomputeReactRenderer.shouldRender', reactNodeId);
+ return [component];
+ }
+
+ // we don't need to render this node, it's all set, so the next step
+ // is to descend into its children. this reaches into react internals,
+ // so those bits are factored out into ReactInterpreter.
+ // this recurs through the tree.
+ const childComponents = ReactInterpreter.childComponents(component);
+ return _.flatten(childComponents.map((childComponent) => {
+ return this._findDirtyComponents(childComponent);
+ }));
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/renderers/raf_react_renderer.js b/examples/loggit-todomvc/loggit/renderers/raf_react_renderer.js
new file mode 100644
index 0000000000..069e918674
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/renderers/raf_react_renderer.js
@@ -0,0 +1,58 @@
+import React from 'react';
+import Timer from '../timer';
+
+
+// Batches with RAF, no shouldComponentUpdate optimizations.
+export default class RafReactRenderer {
+ constructor(reactClass, el, loggit) {
+ this.reactClass = reactClass;
+ this.el = el;
+ this.loggit = loggit;
+ this._loop = this._loop.bind(this);
+
+ this.timer = new Timer('RafReactRenderer.render', {
+ logFn: this.logMsg.bind(this)
+ });
+ }
+
+ logMsg(...params) {
+ // console.log(...params);
+ }
+
+ start() {
+ this._wasDestroyed = false;
+ this._isDirty = true;
+ this._renderCount = 0;
+ this._loop();
+ }
+
+ notify() {
+ this._isDirty = true;
+ }
+
+ destroy() {
+ this._wasDestroyed = true;
+ return undefined;
+ }
+
+ _loop() {
+ if (this._wasDestroyed) return;
+ if (this._isDirty) {
+ this._renderCount++;
+ this.logMsg('RafReactRenderer#render', this._renderCount);
+ this._render();
+ this._isDirty = false;
+ }
+
+ window.requestAnimationFrame(this._loop);
+ }
+
+ _render() {
+ this.timer.time(() => {
+ React.render(
+ ,
+ this.el
+ );
+ });
+ }
+}
\ No newline at end of file
diff --git a/examples/loggit-todomvc/loggit/shell.js b/examples/loggit-todomvc/loggit/shell.js
new file mode 100644
index 0000000000..d36ae84a99
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/shell.js
@@ -0,0 +1,138 @@
+import Log from './log';
+
+import NoopOptimizer from './optimizers/noop_optimizer';
+import MemoizingOptimizer from './optimizers/memoizing_optimizer';
+import MemoizingOptimizerV2 from './optimizers/memoizing_optimizer_v2';
+import MemoizingSnapshotOptimizer from './optimizers/memoizing_snapshot_optimizer';
+
+import NaiveReactRenderer from './renderers/naive_react_renderer';
+import RafReactRenderer from './renderers/raf_react_renderer';
+import PrecomputeReactRenderer from './renderers/precompute_react_renderer';
+
+import Compactor from './compactor';
+import compactionFn from '../stores/compaction_fn'
+import ReactInterpreter from './react_interpreter'
+
+
+// Outermost layer of the system. defines API to components,
+// and assembles the pieces together so it all works.
+export default class Shell {
+ constructor(reactClass, el, options = {}) {
+ this.reactClass = reactClass;
+ this.el = el;
+ this.options = options;
+
+ this.log = new Log({
+ onFact: this._onFact.bind(this),
+ initialFacts: options.initialFacts || []
+ });
+ this.initComponents();
+ }
+
+ // this sets up the pieces of the system. comment here to swap implementations
+ // for profiling.
+ initComponents() {
+ // precomputed
+ // const components = this._withPrecomputeRenderer(this.reactClass, this.el, this.log, MemoizingSnapshotOptimizer);
+
+ // isolated
+ const partially = this._withIsolatedComponents.bind(this, this.reactClass, this.el, this.log);
+ // const components = partially(NoopOptimizer, NaiveReactRenderer);
+ // const components = partially(MemoizingSnapshotOptimizer, NaiveReactRenderer);
+
+ const components = partially(NoopOptimizer, RafReactRenderer);
+ // const components = partially(MemoizingOptimizer, RafReactRenderer);
+ // const components = partially(MemoizingSnapshotOptimizer, RafReactRenderer);
+
+ console.info('initComponents:', components);
+ this.renderer = components.renderer;
+ this.optimizer = components.optimizer;
+ this.loggit = components.loggit;
+ }
+
+ // inits with the optimizer and renderer isolated from each other.
+ // they aren't coupled, but can't cooperate to be more efficient.
+ _withIsolatedComponents(reactClass, el, log, optimizerClass, rendererClass) {
+ const optimizer = new optimizerClass(log);
+ const loggit = {
+ recordFact: log.recordFact.bind(log),
+ computeFor: this._isolatedComputeForWrapper.bind(this),
+ experimental: {
+ forceCompaction: this._experimentalCompaction.bind(this)
+ }
+ };
+ const renderer = new rendererClass(reactClass, el, loggit);
+ return {optimizer, renderer, loggit};
+ }
+
+ // This pulls out the computations from the component and computes
+ // them with the optimizer.
+ _isolatedComputeForWrapper(component) {
+ const computations = ReactInterpreter.computations(component);
+ return this.optimizer.compute(computations);
+ }
+
+ // This requires cooperation between the optimizer and the renderer,
+ // so we create a loggit API that allows that.
+ // It also breaks the loggit.compute method to take a component instead
+ // of just a description of computation.
+ _withPrecomputeRenderer(reactClass, el, log, optimizerClass) {
+ const optimizer = new optimizerClass(log);
+ const loggit = {
+ recordFact: log.recordFact.bind(log),
+ computeFor: this._precomputeComputeForWrapper.bind(this),
+ experimental: {
+ forceCompaction: this._experimentalCompaction.bind(this)
+ }
+ };
+ const renderer = new PrecomputeReactRenderer(reactClass, el, loggit, { optimizer });
+ return {optimizer, renderer, loggit};
+ }
+
+ // the precompute renderer setup funnels calls to loggit.computeFor through here
+ // in order to collect information about the read path, so the renderer
+ // can use that optimizing rendering updates.
+ _precomputeComputeForWrapper(component) {
+ const computations = ReactInterpreter.computations(component);
+ const computedValues = this.optimizer.compute(computations);
+ this.renderer.notifyAboutCompute(component, computations, computedValues);
+ return computedValues;
+ }
+
+ // public
+ start() {
+ this.renderer.start();
+ this._notifyRenderer();
+ return undefined;
+ }
+
+ // public
+ destroy() {
+ this.renderer.destroy();
+ return undefined;
+ }
+
+ _onFact() {
+ this._notifyRenderer();
+ }
+
+ // This inform the renderer that something has occurred.
+ // It can decide whether to respond synchronously, or to
+ // batch, etc.
+ _notifyRenderer() {
+ this.renderer.notify();
+ }
+
+ // Just hacking to see the effects here
+ _experimentalCompaction() {
+ const compactor = new Compactor();
+ const previousSize = this.log.facts.length;
+ this.log.facts = compactor.compacted(this.log.facts, compactionFn);
+
+ const compactionSize = previousSize - this.log.facts.length;
+ const percentText = Math.round(100 * (compactionSize / previousSize)) + '%';
+ console.log('compaction freed: ', compactionSize, percentText);
+
+ this._notifyRenderer();
+ }
+}
diff --git a/examples/loggit-todomvc/loggit/timer.js b/examples/loggit-todomvc/loggit/timer.js
new file mode 100644
index 0000000000..42cb3289fa
--- /dev/null
+++ b/examples/loggit-todomvc/loggit/timer.js
@@ -0,0 +1,28 @@
+// For timing blocks of code
+export default class Timer {
+ constructor(timerName, options = {}) {
+ this.timerName = timerName;
+ this.options = options;
+ this.reset();
+ }
+
+ time(fn) {
+ const before = window.performance.now();
+ const returnValue = fn();
+ const after = window.performance.now();
+ const elapsedTime = after - before;
+ this.totalTime = this.totalTime + elapsedTime;
+ this.calls++;
+ this.logMsg(this.timerName, 'elapsedTime:', elapsedTime, 'totalTime:', this.totalTime);
+ return returnValue;
+ }
+
+ reset() {
+ this.calls = 0;
+ this.totalTime = 0;
+ }
+
+ logMsg(...params) {
+ (this.options.logFn || console.log.bind(console))(...params);
+ }
+}
diff --git a/examples/loggit-todomvc/package.json b/examples/loggit-todomvc/package.json
new file mode 100644
index 0000000000..672cdaa908
--- /dev/null
+++ b/examples/loggit-todomvc/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "todomvc",
+ "version": "0.0.0",
+ "description": "TodoMVC example for loggit",
+ "main": "server.js",
+ "scripts": {
+ "start": "node server.js"
+ },
+ "keywords": [
+ "react",
+ "reactjs",
+ "hot",
+ "reload",
+ "hmr",
+ "live",
+ "edit",
+ "webpack",
+ "flux",
+ "todomvc"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "classnames": "^2.1.2",
+ "lodash": "^3.10.0",
+ "react": "^0.13.3"
+ },
+ "devDependencies": {
+ "babel-core": "^5.5.8",
+ "babel-loader": "^5.1.4",
+ "node-libs-browser": "^0.5.2",
+ "raw-loader": "^0.5.1",
+ "react-hot-loader": "^1.2.7",
+ "style-loader": "^0.12.3",
+ "todomvc-app-css": "^2.0.1",
+ "webpack": "^1.9.11",
+ "webpack-dev-server": "^1.9.0"
+ }
+}
diff --git a/examples/loggit-todomvc/server.js b/examples/loggit-todomvc/server.js
new file mode 100644
index 0000000000..f7df5d6078
--- /dev/null
+++ b/examples/loggit-todomvc/server.js
@@ -0,0 +1,18 @@
+var webpack = require('webpack');
+var WebpackDevServer = require('webpack-dev-server');
+var config = require('./webpack.config');
+
+new WebpackDevServer(webpack(config), {
+ publicPath: config.output.publicPath,
+ // hot: true,
+ historyApiFallback: true,
+ stats: {
+ colors: true
+ }
+}).listen(3001, 'localhost', function (err) {
+ if (err) {
+ console.log(err);
+ }
+
+ console.log('Listening at localhost:3001');
+});
diff --git a/examples/loggit-todomvc/stores/compaction_fn.js b/examples/loggit-todomvc/stores/compaction_fn.js
new file mode 100644
index 0000000000..d0c0ea4a37
--- /dev/null
+++ b/examples/loggit-todomvc/stores/compaction_fn.js
@@ -0,0 +1,45 @@
+import {
+ ADDED_TODO,
+ DELETED_TODO,
+ EDITED_TODO,
+ CHECK_TODO,
+ UNCHECK_TODO,
+ CHECK_ALL,
+ UNCHECK_ALL,
+ CLEAR_MARKED
+} from '../actions/ActionTypes';
+
+
+// This maps facts -> compaction key. It's semantics are coupled
+// to what facts mean and how they are used in the app. This isn't
+// library code and is tricky to tune.
+export default function compactionKey(action) {
+ switch (action.type) {
+ case ADDED_TODO:
+ return [ADDED_TODO, action.text];
+
+ case DELETED_TODO:
+ return [DELETED_TODO, action.id];
+
+ case EDITED_TODO:
+ return [EDITED_TODO, action.id];
+
+ case UNCHECK_TODO:
+ return [UNCHECK_TODO, action.id];
+
+ case CHECK_TODO:
+ return [CHECK_TODO, action.id];
+
+ case CHECK_ALL:
+ return [CHECK_ALL];
+
+ case UNCHECK_ALL:
+ return [UNCHECK_ALL];
+
+ case CLEAR_MARKED:
+ return [CLEAR_MARKED];
+
+ default:
+ return null;
+ }
+};
\ No newline at end of file
diff --git a/examples/loggit-todomvc/stores/is_editing_map.js b/examples/loggit-todomvc/stores/is_editing_map.js
new file mode 100644
index 0000000000..82abc435f8
--- /dev/null
+++ b/examples/loggit-todomvc/stores/is_editing_map.js
@@ -0,0 +1,22 @@
+import {
+ WILL_EDIT_TODO,
+ FINISHED_EDITING_TODO
+} from '../actions/ActionTypes';
+
+// Returns a computation that yields a map of
+// {todoId -> isEditing:bool}
+export default {
+ initial: {},
+ reducer: function(isEditingMap, action) {
+ switch (action.type) {
+ case WILL_EDIT_TODO:
+ return {...isEditingMap, [action.todoId]: true};
+
+ case FINISHED_EDITING_TODO:
+ return {...isEditingMap, [action.todoId]: false};
+
+ default:
+ return isEditingMap;
+ }
+ }
+};
\ No newline at end of file
diff --git a/examples/loggit-todomvc/stores/todos.js b/examples/loggit-todomvc/stores/todos.js
new file mode 100644
index 0000000000..2ec470928a
--- /dev/null
+++ b/examples/loggit-todomvc/stores/todos.js
@@ -0,0 +1,76 @@
+import {
+ ADDED_TODO,
+ DELETED_TODO,
+ EDITED_TODO,
+ CHECK_TODO,
+ UNCHECK_TODO,
+ CHECK_ALL,
+ UNCHECK_ALL,
+ CLEAR_MARKED
+} from '../actions/ActionTypes';
+
+// Returns a computation that returns the current list of todos.
+export default {
+ initial: [{
+ text: 'Learn more',
+ marked: false,
+ id: 0
+ }],
+
+ reducer: function(todos, action) {
+ switch (action.type) {
+ // TODO(kr) This case of generating a unique id is trickier.
+ // It really needs separate semantics, I think.
+ case ADDED_TODO:
+ return [{
+ id: (todos.length === 0) ? 0 : todos[0].id + 1,
+ marked: false,
+ text: action.text
+ }, ...todos];
+
+ case DELETED_TODO:
+ return todos.filter(todo =>
+ todo.id !== action.id
+ );
+
+ case EDITED_TODO:
+ return todos.map(todo =>
+ todo.id === action.id ?
+ { ...todo, text: action.text } :
+ todo
+ );
+
+ case CHECK_TODO:
+ return todos.map(todo =>
+ todo.id === action.id ?
+ { ...todo, marked: true } :
+ todo
+ );
+
+ case UNCHECK_TODO:
+ return todos.map(todo =>
+ todo.id === action.id ?
+ { ...todo, marked: false } :
+ todo
+ );
+
+ case CHECK_ALL:
+ return todos.map(todo => ({
+ ...todo,
+ marked: true
+ }));
+
+ case UNCHECK_ALL:
+ return todos.map(todo => ({
+ ...todo,
+ marked: false
+ }));
+
+ case CLEAR_MARKED:
+ return todos.filter(todo => todo.marked === false);
+
+ default:
+ return todos;
+ }
+ }
+};
\ No newline at end of file
diff --git a/examples/loggit-todomvc/test/cpu-profile-test1-optimizer3.png b/examples/loggit-todomvc/test/cpu-profile-test1-optimizer3.png
new file mode 100644
index 0000000000..3e80002f3a
Binary files /dev/null and b/examples/loggit-todomvc/test/cpu-profile-test1-optimizer3.png differ
diff --git a/examples/loggit-todomvc/test/initial_facts_set1.js b/examples/loggit-todomvc/test/initial_facts_set1.js
new file mode 100644
index 0000000000..654a1acfa2
--- /dev/null
+++ b/examples/loggit-todomvc/test/initial_facts_set1.js
@@ -0,0 +1 @@
+export default [{"type":"ADDED_TODO:1","text":"do something: 0.14005255815573037","@@loggit":{"timestamp":1436102129722,"offset":1}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129740,"offset":2}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102129750,"offset":3}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129797,"offset":4}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129809,"offset":5}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129819,"offset":6}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102129830,"offset":7}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102129841,"offset":8}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129854,"offset":9}},{"type":"ADDED_TODO:1","text":"do something: 0.3092272407375276","@@loggit":{"timestamp":1436102129866,"offset":10}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102129883,"offset":11}},{"type":"ADDED_TODO:1","text":"do something: 0.4818322150968015","@@loggit":{"timestamp":1436102129898,"offset":12}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102129914,"offset":13}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129929,"offset":14}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102129947,"offset":15}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102129959,"offset":16}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102129979,"offset":17}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102129994,"offset":18}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130011,"offset":19}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130029,"offset":20}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130042,"offset":21}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130060,"offset":22}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130075,"offset":23}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130092,"offset":24}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130111,"offset":25}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130126,"offset":26}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130142,"offset":27}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130160,"offset":28}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130177,"offset":29}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130192,"offset":30}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130202,"offset":31}},{"type":"ADDED_TODO:1","text":"do something: 0.7215771938208491","@@loggit":{"timestamp":1436102130214,"offset":32}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130228,"offset":33}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130244,"offset":34}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130261,"offset":35}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130275,"offset":36}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130297,"offset":37}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130310,"offset":38}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130328,"offset":39}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130344,"offset":40}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130362,"offset":41}},{"type":"ADDED_TODO:1","text":"do something: 0.49622164689935744","@@loggit":{"timestamp":1436102130374,"offset":42}},{"type":"ADDED_TODO:1","text":"do something: 0.984988372772932","@@loggit":{"timestamp":1436102130385,"offset":43}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130395,"offset":44}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130408,"offset":45}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130421,"offset":46}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130432,"offset":47}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130443,"offset":48}},{"type":"ADDED_TODO:1","text":"do something: 0.3038415613118559","@@loggit":{"timestamp":1436102130457,"offset":49}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130468,"offset":50}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130493,"offset":51}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130504,"offset":52}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130516,"offset":53}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130528,"offset":54}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130541,"offset":55}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130558,"offset":56}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130574,"offset":57}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130585,"offset":58}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130596,"offset":59}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130607,"offset":60}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130619,"offset":61}},{"type":"ADDED_TODO:1","text":"do something: 0.058923808857798576","@@loggit":{"timestamp":1436102130630,"offset":62}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130645,"offset":63}},{"type":"ADDED_TODO:1","text":"do something: 0.7279837913811207","@@loggit":{"timestamp":1436102130657,"offset":64}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130669,"offset":65}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130679,"offset":66}},{"type":"ADDED_TODO:1","text":"do something: 0.5087373855058104","@@loggit":{"timestamp":1436102130692,"offset":67}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130702,"offset":68}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130713,"offset":69}},{"type":"ADDED_TODO:1","text":"do something: 0.6083237426355481","@@loggit":{"timestamp":1436102130725,"offset":70}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130736,"offset":71}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130757,"offset":72}},{"type":"ADDED_TODO:1","text":"do something: 0.7988091106526554","@@loggit":{"timestamp":1436102130775,"offset":73}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130792,"offset":74}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130810,"offset":75}},{"type":"ADDED_TODO:1","text":"do something: 0.031943149864673615","@@loggit":{"timestamp":1436102130827,"offset":76}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130844,"offset":77}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130865,"offset":78}},{"type":"ADDED_TODO:1","text":"do something: 0.2757239143829793","@@loggit":{"timestamp":1436102130879,"offset":79}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102130900,"offset":80}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130917,"offset":81}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102130929,"offset":82}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130948,"offset":83}},{"type":"ADDED_TODO:1","text":"do something: 0.2834542952477932","@@loggit":{"timestamp":1436102130959,"offset":84}},{"type":"ADDED_TODO:1","text":"do something: 0.5193209995049983","@@loggit":{"timestamp":1436102130979,"offset":85}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102130995,"offset":86}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131009,"offset":87}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131021,"offset":88}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131032,"offset":89}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131042,"offset":90}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131057,"offset":91}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131069,"offset":92}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131080,"offset":93}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131092,"offset":94}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131105,"offset":95}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131116,"offset":96}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131127,"offset":97}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131140,"offset":98}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131150,"offset":99}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131162,"offset":100}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131173,"offset":101}},{"type":"ADDED_TODO:1","text":"do something: 0.6729907167609781","@@loggit":{"timestamp":1436102131184,"offset":102}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131200,"offset":103}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131218,"offset":104}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131229,"offset":105}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131250,"offset":106}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131260,"offset":107}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131276,"offset":108}},{"type":"ADDED_TODO:1","text":"do something: 0.17520188400521874","@@loggit":{"timestamp":1436102131290,"offset":109}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131302,"offset":110}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131312,"offset":111}},{"type":"ADDED_TODO:1","text":"do something: 0.8289985074661672","@@loggit":{"timestamp":1436102131329,"offset":112}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131349,"offset":113}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131372,"offset":114}},{"type":"ADDED_TODO:1","text":"do something: 0.7545692902058363","@@loggit":{"timestamp":1436102131385,"offset":115}},{"type":"ADDED_TODO:1","text":"do something: 0.5382799122016877","@@loggit":{"timestamp":1436102131398,"offset":116}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131422,"offset":117}},{"type":"ADDED_TODO:1","text":"do something: 0.5995290223509073","@@loggit":{"timestamp":1436102131434,"offset":118}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131445,"offset":119}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131467,"offset":120}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131478,"offset":121}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131506,"offset":122}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131518,"offset":123}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131538,"offset":124}},{"type":"ADDED_TODO:1","text":"do something: 0.7232135706581175","@@loggit":{"timestamp":1436102131555,"offset":125}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131569,"offset":126}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131594,"offset":127}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131606,"offset":128}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131619,"offset":129}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131633,"offset":130}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131647,"offset":131}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131666,"offset":132}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131678,"offset":133}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131703,"offset":134}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131715,"offset":135}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131736,"offset":136}},{"type":"ADDED_TODO:1","text":"do something: 0.6819780264049768","@@loggit":{"timestamp":1436102131748,"offset":137}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131761,"offset":138}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131786,"offset":139}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131796,"offset":140}},{"type":"ADDED_TODO:1","text":"do something: 0.7135758083313704","@@loggit":{"timestamp":1436102131811,"offset":141}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131834,"offset":142}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131849,"offset":143}},{"type":"ADDED_TODO:1","text":"do something: 0.8586489777080715","@@loggit":{"timestamp":1436102131864,"offset":144}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102131882,"offset":145}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131901,"offset":146}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131912,"offset":147}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131928,"offset":148}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102131957,"offset":149}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131975,"offset":150}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131985,"offset":151}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102131996,"offset":152}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132012,"offset":153}},{"type":"ADDED_TODO:1","text":"do something: 0.3047037397045642","@@loggit":{"timestamp":1436102132026,"offset":154}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132037,"offset":155}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132052,"offset":156}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132064,"offset":157}},{"type":"ADDED_TODO:1","text":"do something: 0.2750993126537651","@@loggit":{"timestamp":1436102132075,"offset":158}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132087,"offset":159}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132098,"offset":160}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132109,"offset":161}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132120,"offset":162}},{"type":"ADDED_TODO:1","text":"do something: 0.8864945033565164","@@loggit":{"timestamp":1436102132131,"offset":163}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132147,"offset":164}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132162,"offset":165}},{"type":"ADDED_TODO:1","text":"do something: 0.05065670236945152","@@loggit":{"timestamp":1436102132175,"offset":166}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132186,"offset":167}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132198,"offset":168}},{"type":"ADDED_TODO:1","text":"do something: 0.5568064225371927","@@loggit":{"timestamp":1436102132217,"offset":169}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132241,"offset":170}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132255,"offset":171}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132281,"offset":172}},{"type":"ADDED_TODO:1","text":"do something: 0.4550309986807406","@@loggit":{"timestamp":1436102132291,"offset":173}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132306,"offset":174}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132329,"offset":175}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132340,"offset":176}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132352,"offset":177}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132364,"offset":178}},{"type":"ADDED_TODO:1","text":"do something: 0.21810142416507006","@@loggit":{"timestamp":1436102132375,"offset":179}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132386,"offset":180}},{"type":"ADDED_TODO:1","text":"do something: 0.5376508221961558","@@loggit":{"timestamp":1436102132397,"offset":181}},{"type":"ADDED_TODO:1","text":"do something: 0.8478656271472573","@@loggit":{"timestamp":1436102132419,"offset":182}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132435,"offset":183}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132460,"offset":184}},{"type":"ADDED_TODO:1","text":"do something: 0.5634264687541872","@@loggit":{"timestamp":1436102132470,"offset":185}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132485,"offset":186}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132508,"offset":187}},{"type":"ADDED_TODO:1","text":"do something: 0.5262893023900688","@@loggit":{"timestamp":1436102132519,"offset":188}},{"type":"ADDED_TODO:1","text":"do something: 0.4615504681132734","@@loggit":{"timestamp":1436102132530,"offset":189}},{"type":"ADDED_TODO:1","text":"do something: 0.77141057793051","@@loggit":{"timestamp":1436102132554,"offset":190}},{"type":"ADDED_TODO:1","text":"do something: 0.7848909613676369","@@loggit":{"timestamp":1436102132571,"offset":191}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132582,"offset":192}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132592,"offset":193}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132617,"offset":194}},{"type":"ADDED_TODO:1","text":"do something: 0.9444625761825591","@@loggit":{"timestamp":1436102132636,"offset":195}},{"type":"ADDED_TODO:1","text":"do something: 0.3412559006828815","@@loggit":{"timestamp":1436102132648,"offset":196}},{"type":"ADDED_TODO:1","text":"do something: 0.5449620413128287","@@loggit":{"timestamp":1436102132669,"offset":197}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132694,"offset":198}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132717,"offset":199}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132730,"offset":200}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132755,"offset":201}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132767,"offset":202}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132778,"offset":203}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132794,"offset":204}},{"type":"ADDED_TODO:1","text":"do something: 0.13411510433070362","@@loggit":{"timestamp":1436102132818,"offset":205}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132833,"offset":206}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132851,"offset":207}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132868,"offset":208}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132879,"offset":209}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132892,"offset":210}},{"type":"ADDED_TODO:1","text":"do something: 0.18558532884344459","@@loggit":{"timestamp":1436102132903,"offset":211}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132922,"offset":212}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132937,"offset":213}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102132950,"offset":214}},{"type":"ADDED_TODO:1","text":"do something: 0.8116581216454506","@@loggit":{"timestamp":1436102132961,"offset":215}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102132983,"offset":216}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102132999,"offset":217}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133016,"offset":218}},{"type":"ADDED_TODO:1","text":"do something: 0.26068110880441964","@@loggit":{"timestamp":1436102133030,"offset":219}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133045,"offset":220}},{"type":"ADDED_TODO:1","text":"do something: 0.21020703483372927","@@loggit":{"timestamp":1436102133069,"offset":221}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133083,"offset":222}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133098,"offset":223}},{"type":"ADDED_TODO:1","text":"do something: 0.6269797650165856","@@loggit":{"timestamp":1436102133119,"offset":224}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133133,"offset":225}},{"type":"ADDED_TODO:1","text":"do something: 0.20808169362135231","@@loggit":{"timestamp":1436102133147,"offset":226}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133170,"offset":227}},{"type":"ADDED_TODO:1","text":"do something: 0.2222640668042004","@@loggit":{"timestamp":1436102133186,"offset":228}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133201,"offset":229}},{"type":"ADDED_TODO:1","text":"do something: 0.651095581939444","@@loggit":{"timestamp":1436102133223,"offset":230}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133236,"offset":231}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133250,"offset":232}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133267,"offset":233}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133282,"offset":234}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133296,"offset":235}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133320,"offset":236}},{"type":"ADDED_TODO:1","text":"do something: 0.9655132405459881","@@loggit":{"timestamp":1436102133336,"offset":237}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133347,"offset":238}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133371,"offset":239}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133382,"offset":240}},{"type":"ADDED_TODO:1","text":"do something: 0.6330494454596192","@@loggit":{"timestamp":1436102133392,"offset":241}},{"type":"ADDED_TODO:1","text":"do something: 0.442918443121016","@@loggit":{"timestamp":1436102133404,"offset":242}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133420,"offset":243}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133433,"offset":244}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133445,"offset":245}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133468,"offset":246}},{"type":"ADDED_TODO:1","text":"do something: 0.946166018024087","@@loggit":{"timestamp":1436102133479,"offset":247}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133501,"offset":248}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133518,"offset":249}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133529,"offset":250}},{"type":"ADDED_TODO:1","text":"do something: 0.6921876256819814","@@loggit":{"timestamp":1436102133544,"offset":251}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133569,"offset":252}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133591,"offset":253}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133603,"offset":254}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133616,"offset":255}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133629,"offset":256}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133652,"offset":257}},{"type":"ADDED_TODO:1","text":"do something: 0.9239256703294814","@@loggit":{"timestamp":1436102133665,"offset":258}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133690,"offset":259}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133703,"offset":260}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133713,"offset":261}},{"type":"ADDED_TODO:1","text":"do something: 0.036590346368029714","@@loggit":{"timestamp":1436102133730,"offset":262}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133746,"offset":263}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133761,"offset":264}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133780,"offset":265}},{"type":"ADDED_TODO:1","text":"do something: 0.13848169660195708","@@loggit":{"timestamp":1436102133794,"offset":266}},{"type":"ADDED_TODO:1","text":"do something: 0.9295795320067555","@@loggit":{"timestamp":1436102133819,"offset":267}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133837,"offset":268}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133854,"offset":269}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133877,"offset":270}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133892,"offset":271}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133905,"offset":272}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133917,"offset":273}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133937,"offset":274}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102133948,"offset":275}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102133966,"offset":276}},{"type":"ADDED_TODO:1","text":"do something: 0.09313372755423188","@@loggit":{"timestamp":1436102133980,"offset":277}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102133999,"offset":278}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134012,"offset":279}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134034,"offset":280}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134046,"offset":281}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134059,"offset":282}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134070,"offset":283}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134081,"offset":284}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134092,"offset":285}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134104,"offset":286}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134116,"offset":287}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134127,"offset":288}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134145,"offset":289}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134159,"offset":290}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134172,"offset":291}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134185,"offset":292}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134204,"offset":293}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134219,"offset":294}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134237,"offset":295}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134247,"offset":296}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134303,"offset":297}},{"type":"ADDED_TODO:1","text":"do something: 0.6852073271293193","@@loggit":{"timestamp":1436102134314,"offset":298}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134342,"offset":299}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134354,"offset":300}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134375,"offset":301}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134385,"offset":302}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134400,"offset":303}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134416,"offset":304}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134431,"offset":305}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134450,"offset":306}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134462,"offset":307}},{"type":"ADDED_TODO:1","text":"do something: 0.6685003007296473","@@loggit":{"timestamp":1436102134486,"offset":308}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134500,"offset":309}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134514,"offset":310}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134533,"offset":311}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134544,"offset":312}},{"type":"ADDED_TODO:1","text":"do something: 0.4182460983283818","@@loggit":{"timestamp":1436102134561,"offset":313}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134572,"offset":314}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134582,"offset":315}},{"type":"ADDED_TODO:1","text":"do something: 0.699667840031907","@@loggit":{"timestamp":1436102134606,"offset":316}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134620,"offset":317}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134639,"offset":318}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134657,"offset":319}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134668,"offset":320}},{"type":"ADDED_TODO:1","text":"do something: 0.40991490986198187","@@loggit":{"timestamp":1436102134681,"offset":321}},{"type":"ADDED_TODO:1","text":"do something: 0.0692897669505328","@@loggit":{"timestamp":1436102134699,"offset":322}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134715,"offset":323}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134730,"offset":324}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134743,"offset":325}},{"type":"ADDED_TODO:1","text":"do something: 0.5883432344999164","@@loggit":{"timestamp":1436102134768,"offset":326}},{"type":"ADDED_TODO:1","text":"do something: 0.8895238975528628","@@loggit":{"timestamp":1436102134792,"offset":327}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134811,"offset":328}},{"type":"ADDED_TODO:1","text":"do something: 0.8555215226951987","@@loggit":{"timestamp":1436102134834,"offset":329}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134851,"offset":330}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134880,"offset":331}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102134904,"offset":332}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134925,"offset":333}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134940,"offset":334}},{"type":"ADDED_TODO:1","text":"do something: 0.2516870649997145","@@loggit":{"timestamp":1436102134953,"offset":335}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102134975,"offset":336}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102134998,"offset":337}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135011,"offset":338}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135023,"offset":339}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135038,"offset":340}},{"type":"ADDED_TODO:1","text":"do something: 0.3045221050269902","@@loggit":{"timestamp":1436102135050,"offset":341}},{"type":"ADDED_TODO:1","text":"do something: 0.09074049675837159","@@loggit":{"timestamp":1436102135060,"offset":342}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135079,"offset":343}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135097,"offset":344}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135109,"offset":345}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135121,"offset":346}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135132,"offset":347}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135143,"offset":348}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135155,"offset":349}},{"type":"ADDED_TODO:1","text":"do something: 0.8395041299518198","@@loggit":{"timestamp":1436102135166,"offset":350}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135177,"offset":351}},{"type":"ADDED_TODO:1","text":"do something: 0.16590688843280077","@@loggit":{"timestamp":1436102135191,"offset":352}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135210,"offset":353}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135224,"offset":354}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135241,"offset":355}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135268,"offset":356}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135281,"offset":357}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135295,"offset":358}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135309,"offset":359}},{"type":"ADDED_TODO:1","text":"do something: 0.4529870464466512","@@loggit":{"timestamp":1436102135323,"offset":360}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135347,"offset":361}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135360,"offset":362}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135373,"offset":363}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135384,"offset":364}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135395,"offset":365}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135409,"offset":366}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135425,"offset":367}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135440,"offset":368}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135461,"offset":369}},{"type":"ADDED_TODO:1","text":"do something: 0.93687738571316","@@loggit":{"timestamp":1436102135474,"offset":370}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135493,"offset":371}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135514,"offset":372}},{"type":"ADDED_TODO:1","text":"do something: 0.06418472388759255","@@loggit":{"timestamp":1436102135526,"offset":373}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135543,"offset":374}},{"type":"ADDED_TODO:1","text":"do something: 0.02224514470435679","@@loggit":{"timestamp":1436102135567,"offset":375}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135577,"offset":376}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135593,"offset":377}},{"type":"ADDED_TODO:1","text":"do something: 0.9222635037731379","@@loggit":{"timestamp":1436102135611,"offset":378}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135632,"offset":379}},{"type":"ADDED_TODO:1","text":"do something: 0.25173273659311235","@@loggit":{"timestamp":1436102135647,"offset":380}},{"type":"ADDED_TODO:1","text":"do something: 0.4828883877489716","@@loggit":{"timestamp":1436102135662,"offset":381}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135687,"offset":382}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135700,"offset":383}},{"type":"ADDED_TODO:1","text":"do something: 0.7986698467284441","@@loggit":{"timestamp":1436102135711,"offset":384}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135727,"offset":385}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135756,"offset":386}},{"type":"ADDED_TODO:1","text":"do something: 0.3279940830543637","@@loggit":{"timestamp":1436102135767,"offset":387}},{"type":"ADDED_TODO:1","text":"do something: 0.19637850834988058","@@loggit":{"timestamp":1436102135782,"offset":388}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135799,"offset":389}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135822,"offset":390}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135839,"offset":391}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102135853,"offset":392}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135864,"offset":393}},{"type":"ADDED_TODO:1","text":"do something: 0.6273919416125864","@@loggit":{"timestamp":1436102135875,"offset":394}},{"type":"ADDED_TODO:1","text":"do something: 0.9899257100187242","@@loggit":{"timestamp":1436102135899,"offset":395}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135920,"offset":396}},{"type":"ADDED_TODO:1","text":"do something: 0.7254665286745876","@@loggit":{"timestamp":1436102135934,"offset":397}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102135946,"offset":398}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135958,"offset":399}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135975,"offset":400}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102135990,"offset":401}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136007,"offset":402}},{"type":"ADDED_TODO:1","text":"do something: 0.7734184365253896","@@loggit":{"timestamp":1436102136028,"offset":403}},{"type":"ADDED_TODO:1","text":"do something: 0.7314168883021921","@@loggit":{"timestamp":1436102136045,"offset":404}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136061,"offset":405}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136080,"offset":406}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136098,"offset":407}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136110,"offset":408}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136126,"offset":409}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136141,"offset":410}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136161,"offset":411}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136175,"offset":412}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136193,"offset":413}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136207,"offset":414}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136224,"offset":415}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136235,"offset":416}},{"type":"ADDED_TODO:1","text":"do something: 0.422729715006426","@@loggit":{"timestamp":1436102136247,"offset":417}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136261,"offset":418}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136279,"offset":419}},{"type":"ADDED_TODO:1","text":"do something: 0.04200683324597776","@@loggit":{"timestamp":1436102136292,"offset":420}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136312,"offset":421}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136327,"offset":422}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136342,"offset":423}},{"type":"ADDED_TODO:1","text":"do something: 0.5577097027562559","@@loggit":{"timestamp":1436102136360,"offset":424}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136378,"offset":425}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136393,"offset":426}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136409,"offset":427}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136424,"offset":428}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136443,"offset":429}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136459,"offset":430}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136473,"offset":431}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136487,"offset":432}},{"type":"ADDED_TODO:1","text":"do something: 0.48830057797022164","@@loggit":{"timestamp":1436102136500,"offset":433}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136511,"offset":434}},{"type":"ADDED_TODO:1","text":"do something: 0.01989316730760038","@@loggit":{"timestamp":1436102136525,"offset":435}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136542,"offset":436}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136558,"offset":437}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136573,"offset":438}},{"type":"ADDED_TODO:1","text":"do something: 0.5460176696069539","@@loggit":{"timestamp":1436102136584,"offset":439}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136595,"offset":440}},{"type":"ADDED_TODO:1","text":"do something: 0.1505391071550548","@@loggit":{"timestamp":1436102136607,"offset":441}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136617,"offset":442}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136628,"offset":443}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136641,"offset":444}},{"type":"ADDED_TODO:1","text":"do something: 0.96875120094046","@@loggit":{"timestamp":1436102136656,"offset":445}},{"type":"ADDED_TODO:1","text":"do something: 0.3230313209351152","@@loggit":{"timestamp":1436102136668,"offset":446}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136679,"offset":447}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136692,"offset":448}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136709,"offset":449}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136726,"offset":450}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136744,"offset":451}},{"type":"ADDED_TODO:1","text":"do something: 0.7913493444211781","@@loggit":{"timestamp":1436102136759,"offset":452}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136785,"offset":453}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136807,"offset":454}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136830,"offset":455}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136852,"offset":456}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136864,"offset":457}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136882,"offset":458}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102136897,"offset":459}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136917,"offset":460}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136939,"offset":461}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102136953,"offset":462}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136966,"offset":463}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102136977,"offset":464}},{"type":"ADDED_TODO:1","text":"do something: 0.21075087483040988","@@loggit":{"timestamp":1436102136989,"offset":465}},{"type":"ADDED_TODO:1","text":"do something: 0.9709739037789404","@@loggit":{"timestamp":1436102137002,"offset":466}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137014,"offset":467}},{"type":"ADDED_TODO:1","text":"do something: 0.2757791408803314","@@loggit":{"timestamp":1436102137028,"offset":468}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137044,"offset":469}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137057,"offset":470}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137068,"offset":471}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137078,"offset":472}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137092,"offset":473}},{"type":"ADDED_TODO:1","text":"do something: 0.14231174439191818","@@loggit":{"timestamp":1436102137109,"offset":474}},{"type":"ADDED_TODO:1","text":"do something: 0.04674037522636354","@@loggit":{"timestamp":1436102137127,"offset":475}},{"type":"ADDED_TODO:1","text":"do something: 0.3109889258630574","@@loggit":{"timestamp":1436102137152,"offset":476}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137169,"offset":477}},{"type":"ADDED_TODO:1","text":"do something: 0.8171535807196051","@@loggit":{"timestamp":1436102137185,"offset":478}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137207,"offset":479}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137228,"offset":480}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137241,"offset":481}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137258,"offset":482}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137276,"offset":483}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137288,"offset":484}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137300,"offset":485}},{"type":"ADDED_TODO:1","text":"do something: 0.7841590309981257","@@loggit":{"timestamp":1436102137325,"offset":486}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137345,"offset":487}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137363,"offset":488}},{"type":"ADDED_TODO:1","text":"do something: 0.02411639061756432","@@loggit":{"timestamp":1436102137378,"offset":489}},{"type":"ADDED_TODO:1","text":"do something: 0.2660655367653817","@@loggit":{"timestamp":1436102137407,"offset":490}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137424,"offset":491}},{"type":"ADDED_TODO:1","text":"do something: 0.8223617600742728","@@loggit":{"timestamp":1436102137441,"offset":492}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137470,"offset":493}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137491,"offset":494}},{"type":"ADDED_TODO:1","text":"do something: 0.5336854793131351","@@loggit":{"timestamp":1436102137516,"offset":495}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137531,"offset":496}},{"type":"ADDED_TODO:1","text":"do something: 0.8321393965743482","@@loggit":{"timestamp":1436102137548,"offset":497}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137575,"offset":498}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137592,"offset":499}},{"type":"ADDED_TODO:1","text":"do something: 0.7924634537193924","@@loggit":{"timestamp":1436102137612,"offset":500}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137629,"offset":501}},{"type":"ADDED_TODO:1","text":"do something: 0.1411982064601034","@@loggit":{"timestamp":1436102137648,"offset":502}},{"type":"ADDED_TODO:1","text":"do something: 0.6551807683426887","@@loggit":{"timestamp":1436102137678,"offset":503}},{"type":"ADDED_TODO:1","text":"do something: 0.025371880969032645","@@loggit":{"timestamp":1436102137697,"offset":504}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137730,"offset":505}},{"type":"ADDED_TODO:1","text":"do something: 0.0633802895899862","@@loggit":{"timestamp":1436102137750,"offset":506}},{"type":"ADDED_TODO:1","text":"do something: 0.48825339530594647","@@loggit":{"timestamp":1436102137780,"offset":507}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137801,"offset":508}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137839,"offset":509}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102137880,"offset":510}},{"type":"ADDED_TODO:1","text":"do something: 0.6970564434304833","@@loggit":{"timestamp":1436102137902,"offset":511}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137940,"offset":512}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102137974,"offset":513}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102137987,"offset":514}},{"type":"ADDED_TODO:1","text":"do something: 0.14618048421107233","@@loggit":{"timestamp":1436102137997,"offset":515}},{"type":"ADDED_TODO:1","text":"do something: 0.32420829497277737","@@loggit":{"timestamp":1436102138018,"offset":516}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138033,"offset":517}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138047,"offset":518}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138066,"offset":519}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138077,"offset":520}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138102,"offset":521}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138113,"offset":522}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138128,"offset":523}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138153,"offset":524}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138164,"offset":525}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138175,"offset":526}},{"type":"ADDED_TODO:1","text":"do something: 0.13416455127298832","@@loggit":{"timestamp":1436102138198,"offset":527}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138212,"offset":528}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138240,"offset":529}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138253,"offset":530}},{"type":"ADDED_TODO:1","text":"do something: 0.184239209163934","@@loggit":{"timestamp":1436102138265,"offset":531}},{"type":"ADDED_TODO:1","text":"do something: 0.9718259109649807","@@loggit":{"timestamp":1436102138289,"offset":532}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138309,"offset":533}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138326,"offset":534}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138354,"offset":535}},{"type":"ADDED_TODO:1","text":"do something: 0.6789436293765903","@@loggit":{"timestamp":1436102138370,"offset":536}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138395,"offset":537}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138413,"offset":538}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138425,"offset":539}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138438,"offset":540}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138448,"offset":541}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138459,"offset":542}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138482,"offset":543}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138493,"offset":544}},{"type":"ADDED_TODO:1","text":"do something: 0.3458652242552489","@@loggit":{"timestamp":1436102138520,"offset":545}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138532,"offset":546}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138547,"offset":547}},{"type":"ADDED_TODO:1","text":"do something: 0.24967757379636168","@@loggit":{"timestamp":1436102138572,"offset":548}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138587,"offset":549}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138600,"offset":550}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138611,"offset":551}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138633,"offset":552}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138650,"offset":553}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138661,"offset":554}},{"type":"ADDED_TODO:1","text":"do something: 0.29502437729388475","@@loggit":{"timestamp":1436102138690,"offset":555}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138703,"offset":556}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138718,"offset":557}},{"type":"ADDED_TODO:1","text":"do something: 0.8021912341937423","@@loggit":{"timestamp":1436102138734,"offset":558}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138751,"offset":559}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138765,"offset":560}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138781,"offset":561}},{"type":"ADDED_TODO:1","text":"do something: 0.7309175285045058","@@loggit":{"timestamp":1436102138797,"offset":562}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138817,"offset":563}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138828,"offset":564}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138852,"offset":565}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138863,"offset":566}},{"type":"ADDED_TODO:1","text":"do something: 0.10499419807456434","@@loggit":{"timestamp":1436102138875,"offset":567}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138902,"offset":568}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138924,"offset":569}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138937,"offset":570}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102138948,"offset":571}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102138960,"offset":572}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102138973,"offset":573}},{"type":"ADDED_TODO:1","text":"do something: 0.6404336574487388","@@loggit":{"timestamp":1436102138991,"offset":574}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139002,"offset":575}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139014,"offset":576}},{"type":"ADDED_TODO:1","text":"do something: 0.2309308301191777","@@loggit":{"timestamp":1436102139029,"offset":577}},{"type":"ADDED_TODO:1","text":"do something: 0.6952437225263566","@@loggit":{"timestamp":1436102139047,"offset":578}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139062,"offset":579}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139082,"offset":580}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139093,"offset":581}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139118,"offset":582}},{"type":"ADDED_TODO:1","text":"do something: 0.1993359902407974","@@loggit":{"timestamp":1436102139130,"offset":583}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139146,"offset":584}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139174,"offset":585}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139186,"offset":586}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139197,"offset":587}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139217,"offset":588}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139230,"offset":589}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139241,"offset":590}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139258,"offset":591}},{"type":"ADDED_TODO:1","text":"do something: 0.6750119680073112","@@loggit":{"timestamp":1436102139269,"offset":592}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139280,"offset":593}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139293,"offset":594}},{"type":"ADDED_TODO:1","text":"do something: 0.8236483507789671","@@loggit":{"timestamp":1436102139311,"offset":595}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139339,"offset":596}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139354,"offset":597}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139364,"offset":598}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139383,"offset":599}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139402,"offset":600}},{"type":"ADDED_TODO:1","text":"do something: 0.39644954865798354","@@loggit":{"timestamp":1436102139412,"offset":601}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139439,"offset":602}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139458,"offset":603}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139469,"offset":604}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139480,"offset":605}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139492,"offset":606}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139502,"offset":607}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139513,"offset":608}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139525,"offset":609}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139540,"offset":610}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139552,"offset":611}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139563,"offset":612}},{"type":"ADDED_TODO:1","text":"do something: 0.26317598042078316","@@loggit":{"timestamp":1436102139574,"offset":613}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139585,"offset":614}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102139596,"offset":615}},{"type":"ADDED_TODO:1","text":"do something: 0.02776356879621744","@@loggit":{"timestamp":1436102139612,"offset":616}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139632,"offset":617}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139648,"offset":618}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139668,"offset":619}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102139678,"offset":620}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102139701,"offset":621}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102157790,"offset":622}},{"type":"ADDED_TODO:1","text":"do something: 0.08771893940865993","@@loggit":{"timestamp":1436102157811,"offset":623}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102157829,"offset":624}},{"type":"ADDED_TODO:1","text":"do something: 0.7932970423717052","@@loggit":{"timestamp":1436102157883,"offset":625}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102157898,"offset":626}},{"type":"ADDED_TODO:1","text":"do something: 0.8414242898579687","@@loggit":{"timestamp":1436102157923,"offset":627}},{"type":"ADDED_TODO:1","text":"do something: 0.15872316737659276","@@loggit":{"timestamp":1436102157939,"offset":628}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102157956,"offset":629}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102157973,"offset":630}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102157991,"offset":631}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158005,"offset":632}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158019,"offset":633}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158030,"offset":634}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158049,"offset":635}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158067,"offset":636}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158081,"offset":637}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158094,"offset":638}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158115,"offset":639}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158127,"offset":640}},{"type":"ADDED_TODO:1","text":"do something: 0.3181078275665641","@@loggit":{"timestamp":1436102158140,"offset":641}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158161,"offset":642}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158173,"offset":643}},{"type":"ADDED_TODO:1","text":"do something: 0.40271632582880557","@@loggit":{"timestamp":1436102158185,"offset":644}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158205,"offset":645}},{"type":"ADDED_TODO:1","text":"do something: 0.07840323308482766","@@loggit":{"timestamp":1436102158219,"offset":646}},{"type":"ADDED_TODO:1","text":"do something: 0.110460584750399","@@loggit":{"timestamp":1436102158232,"offset":647}},{"type":"ADDED_TODO:1","text":"do something: 0.6061924677342176","@@loggit":{"timestamp":1436102158253,"offset":648}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158269,"offset":649}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158285,"offset":650}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158303,"offset":651}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158322,"offset":652}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158338,"offset":653}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158344,"offset":654}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158355,"offset":655}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158370,"offset":656}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158383,"offset":657}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158394,"offset":658}},{"type":"ADDED_TODO:1","text":"do something: 0.5646276413463056","@@loggit":{"timestamp":1436102158406,"offset":659}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158417,"offset":660}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158427,"offset":661}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158439,"offset":662}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158466,"offset":663}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158478,"offset":664}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158490,"offset":665}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158507,"offset":666}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158535,"offset":667}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158546,"offset":668}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158557,"offset":669}},{"type":"ADDED_TODO:1","text":"do something: 0.877351546427235","@@loggit":{"timestamp":1436102158573,"offset":670}},{"type":"ADDED_TODO:1","text":"do something: 0.37086433661170304","@@loggit":{"timestamp":1436102158610,"offset":671}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158629,"offset":672}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158647,"offset":673}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158663,"offset":674}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158695,"offset":675}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158716,"offset":676}},{"type":"ADDED_TODO:1","text":"do something: 0.7096517926547676","@@loggit":{"timestamp":1436102158733,"offset":677}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158755,"offset":678}},{"type":"ADDED_TODO:1","text":"do something: 0.719074243446812","@@loggit":{"timestamp":1436102158772,"offset":679}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158791,"offset":680}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158825,"offset":681}},{"type":"ADDED_TODO:1","text":"do something: 0.6519448289182037","@@loggit":{"timestamp":1436102158841,"offset":682}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102158859,"offset":683}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158879,"offset":684}},{"type":"ADDED_TODO:1","text":"do something: 0.614794940687716","@@loggit":{"timestamp":1436102158900,"offset":685}},{"type":"ADDED_TODO:1","text":"do something: 0.8537056755740196","@@loggit":{"timestamp":1436102158927,"offset":686}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102158952,"offset":687}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102158982,"offset":688}},{"type":"ADDED_TODO:1","text":"do something: 0.46410633786581457","@@loggit":{"timestamp":1436102158998,"offset":689}},{"type":"ADDED_TODO:1","text":"do something: 0.017600830178707838","@@loggit":{"timestamp":1436102159017,"offset":690}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159037,"offset":691}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159051,"offset":692}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159062,"offset":693}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159077,"offset":694}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159104,"offset":695}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159117,"offset":696}},{"type":"ADDED_TODO:1","text":"do something: 0.6023685790132731","@@loggit":{"timestamp":1436102159128,"offset":697}},{"type":"ADDED_TODO:1","text":"do something: 0.5312547783832997","@@loggit":{"timestamp":1436102159143,"offset":698}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159160,"offset":699}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159174,"offset":700}},{"type":"ADDED_TODO:1","text":"do something: 0.6927223540842533","@@loggit":{"timestamp":1436102159198,"offset":701}},{"type":"ADDED_TODO:1","text":"do something: 0.7840529414825141","@@loggit":{"timestamp":1436102159218,"offset":702}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159233,"offset":703}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159246,"offset":704}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159260,"offset":705}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159275,"offset":706}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159294,"offset":707}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159309,"offset":708}},{"type":"ADDED_TODO:1","text":"do something: 0.9356536802370101","@@loggit":{"timestamp":1436102159327,"offset":709}},{"type":"ADDED_TODO:1","text":"do something: 0.904379041865468","@@loggit":{"timestamp":1436102159346,"offset":710}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159366,"offset":711}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159384,"offset":712}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159400,"offset":713}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159414,"offset":714}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159429,"offset":715}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159442,"offset":716}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159458,"offset":717}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159477,"offset":718}},{"type":"ADDED_TODO:1","text":"do something: 0.9829432107508183","@@loggit":{"timestamp":1436102159494,"offset":719}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159511,"offset":720}},{"type":"ADDED_TODO:1","text":"do something: 0.08328770892694592","@@loggit":{"timestamp":1436102159527,"offset":721}},{"type":"ADDED_TODO:1","text":"do something: 0.5354504568967968","@@loggit":{"timestamp":1436102159545,"offset":722}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159563,"offset":723}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159579,"offset":724}},{"type":"ADDED_TODO:1","text":"do something: 0.7745209999848157","@@loggit":{"timestamp":1436102159594,"offset":725}},{"type":"ADDED_TODO:1","text":"do something: 0.26062949444167316","@@loggit":{"timestamp":1436102159613,"offset":726}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159633,"offset":727}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159656,"offset":728}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159669,"offset":729}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159680,"offset":730}},{"type":"ADDED_TODO:1","text":"do something: 0.2979360322933644","@@loggit":{"timestamp":1436102159691,"offset":731}},{"type":"ADDED_TODO:1","text":"do something: 0.9022073263768107","@@loggit":{"timestamp":1436102159714,"offset":732}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159730,"offset":733}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159747,"offset":734}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159761,"offset":735}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159779,"offset":736}},{"type":"ADDED_TODO:1","text":"do something: 0.4447099706158042","@@loggit":{"timestamp":1436102159795,"offset":737}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159811,"offset":738}},{"type":"ADDED_TODO:1","text":"do something: 0.8292316079605371","@@loggit":{"timestamp":1436102159829,"offset":739}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159859,"offset":740}},{"type":"ADDED_TODO:1","text":"do something: 0.0811219837050885","@@loggit":{"timestamp":1436102159876,"offset":741}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159893,"offset":742}},{"type":"ADDED_TODO:1","text":"do something: 0.7855417574755847","@@loggit":{"timestamp":1436102159912,"offset":743}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159934,"offset":744}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159949,"offset":745}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102159960,"offset":746}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102159971,"offset":747}},{"type":"ADDED_TODO:1","text":"do something: 0.023351820185780525","@@loggit":{"timestamp":1436102159982,"offset":748}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102159999,"offset":749}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160021,"offset":750}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160033,"offset":751}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160052,"offset":752}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160070,"offset":753}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160084,"offset":754}},{"type":"ADDED_TODO:1","text":"do something: 0.5137618572916836","@@loggit":{"timestamp":1436102160098,"offset":755}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160115,"offset":756}},{"type":"ADDED_TODO:1","text":"do something: 0.712469182908535","@@loggit":{"timestamp":1436102160131,"offset":757}},{"type":"ADDED_TODO:1","text":"do something: 0.9531801412813365","@@loggit":{"timestamp":1436102160155,"offset":758}},{"type":"ADDED_TODO:1","text":"do something: 0.5232113336678594","@@loggit":{"timestamp":1436102160172,"offset":759}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160187,"offset":760}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160208,"offset":761}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160229,"offset":762}},{"type":"ADDED_TODO:1","text":"do something: 0.7482757139950991","@@loggit":{"timestamp":1436102160244,"offset":763}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160260,"offset":764}},{"type":"ADDED_TODO:1","text":"do something: 0.36383438273333013","@@loggit":{"timestamp":1436102160285,"offset":765}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160297,"offset":766}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160317,"offset":767}},{"type":"ADDED_TODO:1","text":"do something: 0.640732609666884","@@loggit":{"timestamp":1436102160337,"offset":768}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160353,"offset":769}},{"type":"ADDED_TODO:1","text":"do something: 0.5342568522319198","@@loggit":{"timestamp":1436102160372,"offset":770}},{"type":"ADDED_TODO:1","text":"do something: 0.7709688991308212","@@loggit":{"timestamp":1436102160395,"offset":771}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160408,"offset":772}},{"type":"ADDED_TODO:1","text":"do something: 0.8692900573369116","@@loggit":{"timestamp":1436102160421,"offset":773}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160445,"offset":774}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160460,"offset":775}},{"type":"ADDED_TODO:1","text":"do something: 0.5825108878780156","@@loggit":{"timestamp":1436102160471,"offset":776}},{"type":"ADDED_TODO:1","text":"do something: 0.5026261345483363","@@loggit":{"timestamp":1436102160496,"offset":777}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160513,"offset":778}},{"type":"ADDED_TODO:1","text":"do something: 0.7850384258199483","@@loggit":{"timestamp":1436102160528,"offset":779}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160554,"offset":780}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160568,"offset":781}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160579,"offset":782}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160600,"offset":783}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160613,"offset":784}},{"type":"ADDED_TODO:1","text":"do something: 0.5998711455613375","@@loggit":{"timestamp":1436102160633,"offset":785}},{"type":"ADDED_TODO:1","text":"do something: 0.43055729125626385","@@loggit":{"timestamp":1436102160659,"offset":786}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160680,"offset":787}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160703,"offset":788}},{"type":"ADDED_TODO:1","text":"do something: 0.05695227370597422","@@loggit":{"timestamp":1436102160722,"offset":789}},{"type":"ADDED_TODO:1","text":"do something: 0.4529478324111551","@@loggit":{"timestamp":1436102160737,"offset":790}},{"type":"ADDED_TODO:1","text":"do something: 0.28321140981279314","@@loggit":{"timestamp":1436102160768,"offset":791}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160785,"offset":792}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160812,"offset":793}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160827,"offset":794}},{"type":"ADDED_TODO:1","text":"do something: 0.09491956676356494","@@loggit":{"timestamp":1436102160842,"offset":795}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102160868,"offset":796}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160883,"offset":797}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160897,"offset":798}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160923,"offset":799}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160950,"offset":800}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160972,"offset":801}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102160987,"offset":802}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102160997,"offset":803}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161021,"offset":804}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161032,"offset":805}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161048,"offset":806}},{"type":"ADDED_TODO:1","text":"do something: 0.5279713568743318","@@loggit":{"timestamp":1436102161063,"offset":807}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161091,"offset":808}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161105,"offset":809}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161116,"offset":810}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161133,"offset":811}},{"type":"ADDED_TODO:1","text":"do something: 0.7962201186455786","@@loggit":{"timestamp":1436102161147,"offset":812}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161168,"offset":813}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161183,"offset":814}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161203,"offset":815}},{"type":"ADDED_TODO:1","text":"do something: 0.12149566598236561","@@loggit":{"timestamp":1436102161216,"offset":816}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161234,"offset":817}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161255,"offset":818}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161266,"offset":819}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161281,"offset":820}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161304,"offset":821}},{"type":"ADDED_TODO:1","text":"do something: 0.43210729327984154","@@loggit":{"timestamp":1436102161316,"offset":822}},{"type":"ADDED_TODO:1","text":"do something: 0.9209041770081967","@@loggit":{"timestamp":1436102161332,"offset":823}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161359,"offset":824}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161373,"offset":825}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161395,"offset":826}},{"type":"ADDED_TODO:1","text":"do something: 0.5349177352618426","@@loggit":{"timestamp":1436102161411,"offset":827}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161422,"offset":828}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161440,"offset":829}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161458,"offset":830}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161469,"offset":831}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161481,"offset":832}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161504,"offset":833}},{"type":"ADDED_TODO:1","text":"do something: 0.16012726863846183","@@loggit":{"timestamp":1436102161515,"offset":834}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161539,"offset":835}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161557,"offset":836}},{"type":"ADDED_TODO:1","text":"do something: 0.16310220281593502","@@loggit":{"timestamp":1436102161568,"offset":837}},{"type":"ADDED_TODO:1","text":"do something: 0.40179657959379256","@@loggit":{"timestamp":1436102161588,"offset":838}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161612,"offset":839}},{"type":"ADDED_TODO:1","text":"do something: 0.7788990044500679","@@loggit":{"timestamp":1436102161626,"offset":840}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161643,"offset":841}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161664,"offset":842}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161675,"offset":843}},{"type":"ADDED_TODO:1","text":"do something: 0.8625650361645967","@@loggit":{"timestamp":1436102161686,"offset":844}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161698,"offset":845}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161713,"offset":846}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161723,"offset":847}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161737,"offset":848}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161749,"offset":849}},{"type":"ADDED_TODO:1","text":"do something: 0.443816339597106","@@loggit":{"timestamp":1436102161765,"offset":850}},{"type":"ADDED_TODO:1","text":"do something: 0.3585086138918996","@@loggit":{"timestamp":1436102161788,"offset":851}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161802,"offset":852}},{"type":"ADDED_TODO:1","text":"do something: 0.2784777225460857","@@loggit":{"timestamp":1436102161817,"offset":853}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161842,"offset":854}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102161855,"offset":855}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161867,"offset":856}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161884,"offset":857}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161899,"offset":858}},{"type":"ADDED_TODO:1","text":"do something: 0.8663151119835675","@@loggit":{"timestamp":1436102161912,"offset":859}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161924,"offset":860}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161942,"offset":861}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161956,"offset":862}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161966,"offset":863}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102161977,"offset":864}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102161990,"offset":865}},{"type":"ADDED_TODO:1","text":"do something: 0.10221651592291892","@@loggit":{"timestamp":1436102162001,"offset":866}},{"type":"ADDED_TODO:1","text":"do something: 0.6430722100194544","@@loggit":{"timestamp":1436102162023,"offset":867}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162046,"offset":868}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162057,"offset":869}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162069,"offset":870}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162084,"offset":871}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162100,"offset":872}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162122,"offset":873}},{"type":"ADDED_TODO:1","text":"do something: 0.18524128594435751","@@loggit":{"timestamp":1436102162135,"offset":874}},{"type":"ADDED_TODO:1","text":"do something: 0.5451269599143416","@@loggit":{"timestamp":1436102162165,"offset":875}},{"type":"ADDED_TODO:1","text":"do something: 0.5433364289347082","@@loggit":{"timestamp":1436102162179,"offset":876}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162203,"offset":877}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162224,"offset":878}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162237,"offset":879}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162255,"offset":880}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162265,"offset":881}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162292,"offset":882}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162305,"offset":883}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162317,"offset":884}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162336,"offset":885}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162350,"offset":886}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162367,"offset":887}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162383,"offset":888}},{"type":"ADDED_TODO:1","text":"do something: 0.9684900166466832","@@loggit":{"timestamp":1436102162395,"offset":889}},{"type":"ADDED_TODO:1","text":"do something: 0.3973923090379685","@@loggit":{"timestamp":1436102162418,"offset":890}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162435,"offset":891}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162459,"offset":892}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162469,"offset":893}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162481,"offset":894}},{"type":"ADDED_TODO:1","text":"do something: 0.8498023054562509","@@loggit":{"timestamp":1436102162497,"offset":895}},{"type":"ADDED_TODO:1","text":"do something: 0.6973818461410701","@@loggit":{"timestamp":1436102162517,"offset":896}},{"type":"ADDED_TODO:1","text":"do something: 0.7247556543443352","@@loggit":{"timestamp":1436102162539,"offset":897}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162556,"offset":898}},{"type":"ADDED_TODO:1","text":"do something: 0.07442711992189288","@@loggit":{"timestamp":1436102162577,"offset":899}},{"type":"ADDED_TODO:1","text":"do something: 0.44704672507941723","@@loggit":{"timestamp":1436102162589,"offset":900}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162608,"offset":901}},{"type":"ADDED_TODO:1","text":"do something: 0.7178272868040949","@@loggit":{"timestamp":1436102162631,"offset":902}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162643,"offset":903}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162661,"offset":904}},{"type":"ADDED_TODO:1","text":"do something: 0.10833626752719283","@@loggit":{"timestamp":1436102162678,"offset":905}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162693,"offset":906}},{"type":"ADDED_TODO:1","text":"do something: 0.6315070737618953","@@loggit":{"timestamp":1436102162719,"offset":907}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162735,"offset":908}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162762,"offset":909}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162776,"offset":910}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162787,"offset":911}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162798,"offset":912}},{"type":"ADDED_TODO:1","text":"do something: 0.38843976939097047","@@loggit":{"timestamp":1436102162814,"offset":913}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162840,"offset":914}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102162855,"offset":915}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162870,"offset":916}},{"type":"ADDED_TODO:1","text":"do something: 0.7571036536246538","@@loggit":{"timestamp":1436102162885,"offset":917}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102162901,"offset":918}},{"type":"ADDED_TODO:1","text":"do something: 0.5944569164421409","@@loggit":{"timestamp":1436102162920,"offset":919}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162939,"offset":920}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102162955,"offset":921}},{"type":"ADDED_TODO:1","text":"do something: 0.6849852702580392","@@loggit":{"timestamp":1436102162983,"offset":922}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163000,"offset":923}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163018,"offset":924}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163034,"offset":925}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163052,"offset":926}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163063,"offset":927}},{"type":"ADDED_TODO:1","text":"do something: 0.3441645363345742","@@loggit":{"timestamp":1436102163074,"offset":928}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163088,"offset":929}},{"type":"ADDED_TODO:1","text":"do something: 0.07857828121632338","@@loggit":{"timestamp":1436102163104,"offset":930}},{"type":"ADDED_TODO:1","text":"do something: 0.0628194659948349","@@loggit":{"timestamp":1436102163120,"offset":931}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163148,"offset":932}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163162,"offset":933}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163183,"offset":934}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163194,"offset":935}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163205,"offset":936}},{"type":"ADDED_TODO:1","text":"do something: 0.20506975264288485","@@loggit":{"timestamp":1436102163218,"offset":937}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163236,"offset":938}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163248,"offset":939}},{"type":"ADDED_TODO:1","text":"do something: 0.049287661677226424","@@loggit":{"timestamp":1436102163272,"offset":940}},{"type":"ADDED_TODO:1","text":"do something: 0.9698579341638833","@@loggit":{"timestamp":1436102163286,"offset":941}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163315,"offset":942}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163330,"offset":943}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163347,"offset":944}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163362,"offset":945}},{"type":"ADDED_TODO:1","text":"do something: 0.8146753287874162","@@loggit":{"timestamp":1436102163374,"offset":946}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163385,"offset":947}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163402,"offset":948}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163417,"offset":949}},{"type":"ADDED_TODO:1","text":"do something: 0.2895590898115188","@@loggit":{"timestamp":1436102163436,"offset":950}},{"type":"ADDED_TODO:1","text":"do something: 0.12543609435670078","@@loggit":{"timestamp":1436102163451,"offset":951}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163478,"offset":952}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163495,"offset":953}},{"type":"ADDED_TODO:1","text":"do something: 0.025785036850720644","@@loggit":{"timestamp":1436102163506,"offset":954}},{"type":"ADDED_TODO:1","text":"do something: 0.02994530531577766","@@loggit":{"timestamp":1436102163523,"offset":955}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163540,"offset":956}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163570,"offset":957}},{"type":"ADDED_TODO:1","text":"do something: 0.4789286961313337","@@loggit":{"timestamp":1436102163586,"offset":958}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163602,"offset":959}},{"type":"ADDED_TODO:1","text":"do something: 0.9798194472678006","@@loggit":{"timestamp":1436102163626,"offset":960}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163637,"offset":961}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163647,"offset":962}},{"type":"ADDED_TODO:1","text":"do something: 0.031691354932263494","@@loggit":{"timestamp":1436102163670,"offset":963}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163685,"offset":964}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163700,"offset":965}},{"type":"ADDED_TODO:1","text":"do something: 0.7762945739086717","@@loggit":{"timestamp":1436102163715,"offset":966}},{"type":"ADDED_TODO:1","text":"do something: 0.7523201471194625","@@loggit":{"timestamp":1436102163741,"offset":967}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163757,"offset":968}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163772,"offset":969}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163790,"offset":970}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163804,"offset":971}},{"type":"ADDED_TODO:1","text":"do something: 0.6762692779302597","@@loggit":{"timestamp":1436102163818,"offset":972}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163843,"offset":973}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163863,"offset":974}},{"type":"ADDED_TODO:1","text":"do something: 0.08141479920595884","@@loggit":{"timestamp":1436102163874,"offset":975}},{"type":"ADDED_TODO:1","text":"do something: 0.7797144462820143","@@loggit":{"timestamp":1436102163888,"offset":976}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163919,"offset":977}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102163935,"offset":978}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102163948,"offset":979}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163969,"offset":980}},{"type":"ADDED_TODO:1","text":"do something: 0.8436023290269077","@@loggit":{"timestamp":1436102163985,"offset":981}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102163998,"offset":982}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164012,"offset":983}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164023,"offset":984}},{"type":"ADDED_TODO:1","text":"do something: 0.703048134688288","@@loggit":{"timestamp":1436102164043,"offset":985}},{"type":"ADDED_TODO:1","text":"do something: 0.6692090334836394","@@loggit":{"timestamp":1436102164053,"offset":986}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164068,"offset":987}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164098,"offset":988}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164114,"offset":989}},{"type":"ADDED_TODO:1","text":"do something: 0.3304646727629006","@@loggit":{"timestamp":1436102164125,"offset":990}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164136,"offset":991}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164152,"offset":992}},{"type":"ADDED_TODO:1","text":"do something: 0.2346855658106506","@@loggit":{"timestamp":1436102164174,"offset":993}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164197,"offset":994}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164215,"offset":995}},{"type":"ADDED_TODO:1","text":"do something: 0.7577881868928671","@@loggit":{"timestamp":1436102164240,"offset":996}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164250,"offset":997}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164281,"offset":998}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164294,"offset":999}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164307,"offset":1000}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164318,"offset":1001}},{"type":"ADDED_TODO:1","text":"do something: 0.13504031556658447","@@loggit":{"timestamp":1436102164330,"offset":1002}},{"type":"ADDED_TODO:1","text":"do something: 0.6832038639113307","@@loggit":{"timestamp":1436102164355,"offset":1003}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164381,"offset":1004}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164393,"offset":1005}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164404,"offset":1006}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164428,"offset":1007}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164439,"offset":1008}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164459,"offset":1009}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164470,"offset":1010}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164486,"offset":1011}},{"type":"ADDED_TODO:1","text":"do something: 0.06878101592883468","@@loggit":{"timestamp":1436102164499,"offset":1012}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164529,"offset":1013}},{"type":"ADDED_TODO:1","text":"do something: 0.7025009614881128","@@loggit":{"timestamp":1436102164544,"offset":1014}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164565,"offset":1015}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164583,"offset":1016}},{"type":"ADDED_TODO:1","text":"do something: 0.9661253404337913","@@loggit":{"timestamp":1436102164594,"offset":1017}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164606,"offset":1018}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164622,"offset":1019}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164637,"offset":1020}},{"type":"ADDED_TODO:1","text":"do something: 0.08091211342252791","@@loggit":{"timestamp":1436102164655,"offset":1021}},{"type":"ADDED_TODO:1","text":"do something: 0.232247575186193","@@loggit":{"timestamp":1436102164668,"offset":1022}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164694,"offset":1023}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164711,"offset":1024}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164723,"offset":1025}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164746,"offset":1026}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164759,"offset":1027}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164770,"offset":1028}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164785,"offset":1029}},{"type":"ADDED_TODO:1","text":"do something: 0.4037988574709743","@@loggit":{"timestamp":1436102164798,"offset":1030}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164825,"offset":1031}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164837,"offset":1032}},{"type":"ADDED_TODO:1","text":"do something: 0.5978076001629233","@@loggit":{"timestamp":1436102164855,"offset":1033}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164867,"offset":1034}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102164881,"offset":1035}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164903,"offset":1036}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164921,"offset":1037}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102164946,"offset":1038}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164961,"offset":1039}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164973,"offset":1040}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102164997,"offset":1041}},{"type":"ADDED_TODO:1","text":"do something: 0.2281452901661396","@@loggit":{"timestamp":1436102165008,"offset":1042}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165035,"offset":1043}},{"type":"ADDED_TODO:1","text":"do something: 0.08324203710071743","@@loggit":{"timestamp":1436102165048,"offset":1044}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165058,"offset":1045}},{"type":"ADDED_TODO:1","text":"do something: 0.4307877258397639","@@loggit":{"timestamp":1436102165085,"offset":1046}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165103,"offset":1047}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165116,"offset":1048}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165134,"offset":1049}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165152,"offset":1050}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165162,"offset":1051}},{"type":"ADDED_TODO:1","text":"do something: 0.665548509452492","@@loggit":{"timestamp":1436102165173,"offset":1052}},{"type":"ADDED_TODO:1","text":"do something: 0.18303581117652357","@@loggit":{"timestamp":1436102165201,"offset":1053}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165215,"offset":1054}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165237,"offset":1055}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165247,"offset":1056}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165258,"offset":1057}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165278,"offset":1058}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165293,"offset":1059}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165306,"offset":1060}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165323,"offset":1061}},{"type":"ADDED_TODO:1","text":"do something: 0.7585995385888964","@@loggit":{"timestamp":1436102165338,"offset":1062}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165368,"offset":1063}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165392,"offset":1064}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165405,"offset":1065}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165417,"offset":1066}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165430,"offset":1067}},{"type":"ADDED_TODO:1","text":"do something: 0.05226557515561581","@@loggit":{"timestamp":1436102165444,"offset":1068}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165529,"offset":1069}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165545,"offset":1070}},{"type":"ADDED_TODO:1","text":"do something: 0.317363795125857","@@loggit":{"timestamp":1436102165568,"offset":1071}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165580,"offset":1072}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165606,"offset":1073}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165623,"offset":1074}},{"type":"ADDED_TODO:1","text":"do something: 0.3304983847774565","@@loggit":{"timestamp":1436102165634,"offset":1075}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165659,"offset":1076}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165675,"offset":1077}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165689,"offset":1078}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165711,"offset":1079}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165723,"offset":1080}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165734,"offset":1081}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165746,"offset":1082}},{"type":"ADDED_TODO:1","text":"do something: 0.6041659512557089","@@loggit":{"timestamp":1436102165757,"offset":1083}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165787,"offset":1084}},{"type":"ADDED_TODO:1","text":"do something: 0.22266724705696106","@@loggit":{"timestamp":1436102165802,"offset":1085}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165826,"offset":1086}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102165843,"offset":1087}},{"type":"ADDED_TODO:1","text":"do something: 0.8537821171339601","@@loggit":{"timestamp":1436102165856,"offset":1088}},{"type":"ADDED_TODO:1","text":"do something: 0.5001200472470373","@@loggit":{"timestamp":1436102165868,"offset":1089}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102165886,"offset":1090}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165913,"offset":1091}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165931,"offset":1092}},{"type":"ADDED_TODO:1","text":"do something: 0.43201730074360967","@@loggit":{"timestamp":1436102165960,"offset":1093}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102165978,"offset":1094}},{"type":"ADDED_TODO:1","text":"do something: 0.021863953210413456","@@loggit":{"timestamp":1436102165993,"offset":1095}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166006,"offset":1096}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166039,"offset":1097}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166055,"offset":1098}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166075,"offset":1099}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166095,"offset":1100}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166105,"offset":1101}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166117,"offset":1102}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166127,"offset":1103}},{"type":"ADDED_TODO:1","text":"do something: 0.55469322623685","@@loggit":{"timestamp":1436102166139,"offset":1104}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166151,"offset":1105}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166170,"offset":1106}},{"type":"ADDED_TODO:1","text":"do something: 0.20552691561169922","@@loggit":{"timestamp":1436102166182,"offset":1107}},{"type":"ADDED_TODO:1","text":"do something: 0.6849320214241743","@@loggit":{"timestamp":1436102166195,"offset":1108}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166220,"offset":1109}},{"type":"ADDED_TODO:1","text":"do something: 0.9415123532526195","@@loggit":{"timestamp":1436102166237,"offset":1110}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166257,"offset":1111}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166272,"offset":1112}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166287,"offset":1113}},{"type":"ADDED_TODO:1","text":"do something: 0.07926116231828928","@@loggit":{"timestamp":1436102166303,"offset":1114}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166316,"offset":1115}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166337,"offset":1116}},{"type":"ADDED_TODO:1","text":"do something: 0.5962083311751485","@@loggit":{"timestamp":1436102166356,"offset":1117}},{"type":"ADDED_TODO:1","text":"do something: 0.5902055213227868","@@loggit":{"timestamp":1436102166369,"offset":1118}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166390,"offset":1119}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166409,"offset":1120}},{"type":"ADDED_TODO:1","text":"do something: 0.12688180594705045","@@loggit":{"timestamp":1436102166421,"offset":1121}},{"type":"ADDED_TODO:1","text":"do something: 0.003535948460921645","@@loggit":{"timestamp":1436102166447,"offset":1122}},{"type":"ADDED_TODO:1","text":"do something: 0.6741866904776543","@@loggit":{"timestamp":1436102166466,"offset":1123}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166494,"offset":1124}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166508,"offset":1125}},{"type":"ADDED_TODO:1","text":"do something: 0.610888535855338","@@loggit":{"timestamp":1436102166518,"offset":1126}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166530,"offset":1127}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166545,"offset":1128}},{"type":"ADDED_TODO:1","text":"do something: 0.7727536929305643","@@loggit":{"timestamp":1436102166568,"offset":1129}},{"type":"ADDED_TODO:1","text":"do something: 0.09647655487060547","@@loggit":{"timestamp":1436102166582,"offset":1130}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166601,"offset":1131}},{"type":"ADDED_TODO:1","text":"do something: 0.9335666089318693","@@loggit":{"timestamp":1436102166625,"offset":1132}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166639,"offset":1133}},{"type":"ADDED_TODO:1","text":"do something: 0.6875901008024812","@@loggit":{"timestamp":1436102166658,"offset":1134}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166676,"offset":1135}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166695,"offset":1136}},{"type":"ADDED_TODO:1","text":"do something: 0.28071395494043827","@@loggit":{"timestamp":1436102166722,"offset":1137}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166740,"offset":1138}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166764,"offset":1139}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166780,"offset":1140}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102166791,"offset":1141}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166812,"offset":1142}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166824,"offset":1143}},{"type":"ADDED_TODO:1","text":"do something: 0.3414546449203044","@@loggit":{"timestamp":1436102166844,"offset":1144}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102166858,"offset":1145}},{"type":"ADDED_TODO:1","text":"do something: 0.13115435652434826","@@loggit":{"timestamp":1436102166881,"offset":1146}},{"type":"ADDED_TODO:1","text":"do something: 0.046512261033058167","@@loggit":{"timestamp":1436102166893,"offset":1147}},{"type":"ADDED_TODO:1","text":"do something: 0.1265328717418015","@@loggit":{"timestamp":1436102166921,"offset":1148}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102166944,"offset":1149}},{"type":"ADDED_TODO:1","text":"do something: 0.20763319940306246","@@loggit":{"timestamp":1436102166961,"offset":1150}},{"type":"ADDED_TODO:1","text":"do something: 0.7580849495716393","@@loggit":{"timestamp":1436102166981,"offset":1151}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167006,"offset":1152}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167025,"offset":1153}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167038,"offset":1154}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167064,"offset":1155}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167081,"offset":1156}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167096,"offset":1157}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167128,"offset":1158}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167146,"offset":1159}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167162,"offset":1160}},{"type":"ADDED_TODO:1","text":"do something: 0.3447163002565503","@@loggit":{"timestamp":1436102167187,"offset":1161}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167202,"offset":1162}},{"type":"ADDED_TODO:1","text":"do something: 0.3499762418214232","@@loggit":{"timestamp":1436102167230,"offset":1163}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167246,"offset":1164}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167269,"offset":1165}},{"type":"ADDED_TODO:1","text":"do something: 0.933516493299976","@@loggit":{"timestamp":1436102167286,"offset":1166}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167301,"offset":1167}},{"type":"ADDED_TODO:1","text":"do something: 0.8735207766294479","@@loggit":{"timestamp":1436102167329,"offset":1168}},{"type":"ADDED_TODO:1","text":"do something: 0.9135592996608466","@@loggit":{"timestamp":1436102167344,"offset":1169}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167375,"offset":1170}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167391,"offset":1171}},{"type":"ADDED_TODO:1","text":"do something: 0.8030123924836516","@@loggit":{"timestamp":1436102167411,"offset":1172}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167426,"offset":1173}},{"type":"ADDED_TODO:1","text":"do something: 0.3831872611772269","@@loggit":{"timestamp":1436102167447,"offset":1174}},{"type":"ADDED_TODO:1","text":"do something: 0.9258750306908041","@@loggit":{"timestamp":1436102167470,"offset":1175}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167489,"offset":1176}},{"type":"ADDED_TODO:1","text":"do something: 0.028277537086978555","@@loggit":{"timestamp":1436102167515,"offset":1177}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167528,"offset":1178}},{"type":"ADDED_TODO:1","text":"do something: 0.2699053920805454","@@loggit":{"timestamp":1436102167560,"offset":1179}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167581,"offset":1180}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167610,"offset":1181}},{"type":"CLEAR_MARKED:8","@@loggit":{"timestamp":1436102167628,"offset":1182}},{"type":"UNCHECK_ALL:7","@@loggit":{"timestamp":1436102167649,"offset":1183}},{"type":"ADDED_TODO:1","text":"do something: 0.9201707127504051","@@loggit":{"timestamp":1436102167666,"offset":1184}},{"type":"ADDED_TODO:1","text":"do something: 0.6313794497400522","@@loggit":{"timestamp":1436102167697,"offset":1185}},{"type":"ADDED_TODO:1","text":"do something: 0.8830798305571079","@@loggit":{"timestamp":1436102167721,"offset":1186}},{"type":"CHECK_ALL:6","@@loggit":{"timestamp":1436102167742,"offset":1187}}]
\ No newline at end of file
diff --git a/examples/loggit-todomvc/test/profile-test1-optimizer3.png b/examples/loggit-todomvc/test/profile-test1-optimizer3.png
new file mode 100644
index 0000000000..e76df6bc11
Binary files /dev/null and b/examples/loggit-todomvc/test/profile-test1-optimizer3.png differ
diff --git a/examples/loggit-todomvc/test/test1-results.png b/examples/loggit-todomvc/test/test1-results.png
new file mode 100644
index 0000000000..bbc99e7de0
Binary files /dev/null and b/examples/loggit-todomvc/test/test1-results.png differ
diff --git a/examples/loggit-todomvc/test/test1_results.csv b/examples/loggit-todomvc/test/test1_results.csv
new file mode 100644
index 0000000000..3875871081
--- /dev/null
+++ b/examples/loggit-todomvc/test/test1_results.csv
@@ -0,0 +1,28 @@
+100, 827, 234, MemoizingSnapshotOptimizer
+100, 686, 191, MemoizingSnapshotOptimizer
+100, 898, 181, MemoizingSnapshotOptimizer
+100, 738, 181, MemoizingSnapshotOptimizer
+100, 980, 215, MemoizingSnapshotOptimizer
+100, 1070, 188, MemoizingSnapshotOptimizer
+100, 723, 173, MemoizingSnapshotOptimizer
+65, 777, 999, MemoizingOptimizerV2
+65, 754, 942, MemoizingOptimizerV2
+82, 1370, 903, MemoizingOptimizerV2
+71, 855, 1039, MemoizingOptimizerV2
+63, 643, 1035, MemoizingOptimizerV2
+76, 1005, 993, MemoizingOptimizerV2
+77, 1163, 914, MemoizingOptimizerV2
+69, 839, 1045, MemoizingOptimizer
+64, 713, 942, MemoizingOptimizer
+76, 1065, 986, MemoizingOptimizer
+71, 902, 1041, MemoizingOptimizer
+68, 888, 920, MemoizingOptimizer
+74, 911, 934, MemoizingOptimizer
+67, 789, 956, MemoizingOptimizer
+NaN, NaN, 1678, NoopOptimizer
+NaN, NaN, 1567, NoopOptimizer
+NaN, NaN, 1485, NoopOptimizer
+NaN, NaN, 1549, NoopOptimizer
+NaN, NaN, 1726, NoopOptimizer
+NaN, NaN, 1605, NoopOptimizer
+NaN, NaN, 1478, NoopOptimizer
\ No newline at end of file
diff --git a/examples/loggit-todomvc/test/test1_results.numbers b/examples/loggit-todomvc/test/test1_results.numbers
new file mode 100644
index 0000000000..b92f18c578
Binary files /dev/null and b/examples/loggit-todomvc/test/test1_results.numbers differ
diff --git a/examples/loggit-todomvc/test/test2_results.csv b/examples/loggit-todomvc/test/test2_results.csv
new file mode 100644
index 0000000000..0e9d7da3bb
--- /dev/null
+++ b/examples/loggit-todomvc/test/test2_results.csv
@@ -0,0 +1,35 @@
+"r:", 2204, 228, 9.6682, "c:", 1257, 1150, 1.0935, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2353, 220, 10.6964, "c:", 1350, 1448, 0.9323, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2338, 213, 10.9755, "c:", 1364, 1399, 0.9751, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2310, 212, 10.8985, "c:", 1245, 1517, 0.8209, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2363, 225, 10.5018, "c:", 1373, 1395, 0.9845, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2216, 241, 9.1947, "c:", 1267, 1111, 1.1405, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 2271, 227, 10.0041, "c:", 1355, 1107, 1.2241, "|", NoopOptimizer, NaiveReactRenderer
+"r:", 1527, 170, 8.9831, "c:", 904, 636, 1.421, "|", NoopOptimizer, RafReactRenderer
+"r:", 1874, 152, 12.3294, "c:", 988, 1443, 0.685, "|", NoopOptimizer, RafReactRenderer
+"r:", 1665, 171, 9.7351, "c:", 939, 915, 1.0267, "|", NoopOptimizer, RafReactRenderer
+"r:", 1655, 164, 10.0931, "c:", 847, 890, 0.9518, "|", NoopOptimizer, RafReactRenderer
+"r:", 1597, 168, 9.5079, "c:", 904, 1023, 0.8838, "|", NoopOptimizer, RafReactRenderer
+"r:", 1559, 171, 9.1186, "c:", 861, 900, 0.9568, "|", NoopOptimizer, RafReactRenderer
+"r:", 1943, 146, 13.307, "c:", 1026, 1564, 0.6563, "|", NoopOptimizer, RafReactRenderer
+"r:", 1363, 165, 8.2628, "c:", 490, 989, 0.4953, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1123, 173, 6.4916, "c:", 466, 909, 0.5123, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1263, 173, 7.2985, "c:", 509, 794, 0.6408, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1165, 172, 6.7748, "c:", 464, 832, 0.5579, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1094, 162, 6.7551, "c:", 479, 640, 0.7483, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1248, 172, 7.2538, "c:", 503, 799, 0.6294, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1139, 174, 6.5435, "c:", 463, 848, 0.5465, "|", MemoizingOptimizer, RafReactRenderer
+"r:", 1088, 168, 6.4785, "c:", 182, 996, 0.1829, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 883, 167, 5.2899, "c:", 169, 981, 0.1724, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 1017, 165, 6.1609, "c:", 184, 1005, 0.1832, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 893, 165, 5.4147, "c:", 138, 754, 0.1824, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 1010, 169, 5.979, "c:", 170, 995, 0.1705, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 934, 159, 5.8751, "c:", 158, 880, 0.1801, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 812, 170, 4.7748, "c:", 134, 769, 0.174, "|", MemoizingSnapshotOptimizer, RafReactRenderer
+"r:", 843, 166, 5.0762, "c:", 198, 1010, 0.1958, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 617, 169, 3.65, "c:", 140, 696, 0.2008, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 656, 173, 3.7938, "c:", 140, 804, 0.1739, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 816, 159, 5.1315, "c:", 220, 1057, 0.2083, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 1020, 161, 6.3332, "c:", 306, 1496, 0.2045, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 759, 168, 4.5188, "c:", 205, 927, 0.2216, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
+"r:", 896, 166, 5.3999, "c:", 289, 1222, 0.2365, "|", MemoizingSnapshotOptimizer, PrecomputeReactRenderer
\ No newline at end of file
diff --git a/examples/loggit-todomvc/webpack.config.js b/examples/loggit-todomvc/webpack.config.js
new file mode 100644
index 0000000000..d525ffc7fe
--- /dev/null
+++ b/examples/loggit-todomvc/webpack.config.js
@@ -0,0 +1,34 @@
+var path = require('path');
+var webpack = require('webpack');
+
+module.exports = {
+ devtool: 'eval',
+ entry: [
+ 'webpack-dev-server/client?http://localhost:3000',
+ // 'webpack/hot/only-dev-server',
+ './index'
+ ],
+ output: {
+ path: path.join(__dirname, 'dist'),
+ filename: 'bundle.js',
+ publicPath: '/static/'
+ },
+ plugins: [
+ // new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoErrorsPlugin()
+ ],
+ resolve: {
+ extensions: ['', '.js']
+ },
+ module: {
+ loaders: [{
+ test: /\.js$/,
+ // loaders: ['react-hot', 'babel'],
+ loaders: ['babel'],
+ exclude: /node_modules/
+ }, {
+ test: /\.css?$/,
+ loaders: ['style', 'raw']
+ }]
+ }
+};
diff --git a/examples/redux-todomvc/.babelrc b/examples/redux-todomvc/.babelrc
new file mode 100644
index 0000000000..b0b9a96ef0
--- /dev/null
+++ b/examples/redux-todomvc/.babelrc
@@ -0,0 +1,3 @@
+{
+ "stage": 0
+}
diff --git a/examples/todomvc/actions/TodoActions.js b/examples/redux-todomvc/actions/TodoActions.js
similarity index 100%
rename from examples/todomvc/actions/TodoActions.js
rename to examples/redux-todomvc/actions/TodoActions.js
diff --git a/examples/redux-todomvc/components/Footer.js b/examples/redux-todomvc/components/Footer.js
new file mode 100644
index 0000000000..6cdd314e42
--- /dev/null
+++ b/examples/redux-todomvc/components/Footer.js
@@ -0,0 +1,71 @@
+import React, { PropTypes } from 'react';
+import classnames from 'classnames';
+import { SHOW_ALL, SHOW_MARKED, SHOW_UNMARKED } from '../constants/TodoFilters';
+
+const FILTER_TITLES = {
+ [SHOW_ALL]: 'All',
+ [SHOW_UNMARKED]: 'Active',
+ [SHOW_MARKED]: 'Completed'
+};
+
+export default class Footer {
+ static propTypes = {
+ markedCount: PropTypes.number.isRequired,
+ unmarkedCount: PropTypes.number.isRequired,
+ filter: PropTypes.string.isRequired,
+ onClearMarked: PropTypes.func.isRequired,
+ onShow: PropTypes.func.isRequired
+ }
+
+ render() {
+ return (
+
+ );
+ }
+
+ renderTodoCount() {
+ const { unmarkedCount } = this.props;
+ const itemWord = unmarkedCount === 1 ? 'item' : 'items';
+
+ return (
+
+ {unmarkedCount || 'No'} {itemWord} left
+
+ );
+ }
+
+ renderFilterLink(filter) {
+ const title = FILTER_TITLES[filter];
+ const { filter: selectedFilter, onShow } = this.props;
+
+ return (
+ onShow(filter)}>
+ {title}
+
+ );
+ }
+
+ renderClearButton() {
+ const { markedCount, onClearMarked } = this.props;
+ if (markedCount > 0) {
+ return (
+
+ );
+ }
+ }
+}
diff --git a/examples/todomvc/components/Header.js b/examples/redux-todomvc/components/Header.js
similarity index 100%
rename from examples/todomvc/components/Header.js
rename to examples/redux-todomvc/components/Header.js
diff --git a/examples/todomvc/components/MainSection.js b/examples/redux-todomvc/components/MainSection.js
similarity index 100%
rename from examples/todomvc/components/MainSection.js
rename to examples/redux-todomvc/components/MainSection.js
diff --git a/examples/todomvc/components/TodoItem.js b/examples/redux-todomvc/components/TodoItem.js
similarity index 100%
rename from examples/todomvc/components/TodoItem.js
rename to examples/redux-todomvc/components/TodoItem.js
diff --git a/examples/todomvc/components/TodoTextInput.js b/examples/redux-todomvc/components/TodoTextInput.js
similarity index 100%
rename from examples/todomvc/components/TodoTextInput.js
rename to examples/redux-todomvc/components/TodoTextInput.js
diff --git a/examples/todomvc/constants/ActionTypes.js b/examples/redux-todomvc/constants/ActionTypes.js
similarity index 100%
rename from examples/todomvc/constants/ActionTypes.js
rename to examples/redux-todomvc/constants/ActionTypes.js
diff --git a/examples/redux-todomvc/constants/TodoFilters.js b/examples/redux-todomvc/constants/TodoFilters.js
new file mode 100644
index 0000000000..99d05d40d0
--- /dev/null
+++ b/examples/redux-todomvc/constants/TodoFilters.js
@@ -0,0 +1,3 @@
+export const SHOW_ALL = 'show_all';
+export const SHOW_MARKED = 'show_marked';
+export const SHOW_UNMARKED = 'show_unmarked';
diff --git a/examples/redux-todomvc/containers/App.js b/examples/redux-todomvc/containers/App.js
new file mode 100644
index 0000000000..4093a918ad
--- /dev/null
+++ b/examples/redux-todomvc/containers/App.js
@@ -0,0 +1,50 @@
+import React from 'react';
+import TodoApp from './TodoApp';
+import { createRedux } from 'redux';
+import { Provider } from 'redux/react';
+import * as stores from '../stores';
+import * as TodoActions from '../actions/TodoActions';
+import initialFactsSet1 from '../test/initial_facts_set1'
+
+const redux = createRedux(stores);
+
+// for debugging
+window.redux = redux;
+
+// simulate 1000 events first to build up state
+initialFactsSet1.forEach((action) => {
+ redux.dispatch(action);
+});
+
+export default class App {
+ componentDidMount() {
+ window.setTimeout(() => this.startMonkeying(), 4000);
+ }
+
+ startMonkeying() {
+ this.MonkeyTimer = window.setInterval(this.pokeMonkey, 10);
+ window.setTimeout(() => {
+ window.clearInterval(this.MonkeyTimer);
+ console.info(window.redux.getProfilingReporter().printStats());
+ }, 30000);
+ }
+
+ pokeMonkey() {
+ const actionFns = [
+ TodoActions.markAll,
+ TodoActions.clearMarked,
+ () => TodoActions.addTodo('do something: ' + Math.random())
+ ];
+ const randomIndex = Math.floor(Math.random() * actionFns.length);
+ const randomAction = actionFns[randomIndex]();
+ redux.dispatch(randomAction);
+ }
+
+ render() {
+ return (
+
+ {() => }
+
+ );
+ }
+}
diff --git a/examples/todomvc/containers/TodoApp.js b/examples/redux-todomvc/containers/TodoApp.js
similarity index 100%
rename from examples/todomvc/containers/TodoApp.js
rename to examples/redux-todomvc/containers/TodoApp.js
diff --git a/examples/todomvc/index.html b/examples/redux-todomvc/index.html
similarity index 100%
rename from examples/todomvc/index.html
rename to examples/redux-todomvc/index.html
diff --git a/examples/todomvc/index.js b/examples/redux-todomvc/index.js
similarity index 100%
rename from examples/todomvc/index.js
rename to examples/redux-todomvc/index.js
diff --git a/examples/todomvc/package.json b/examples/redux-todomvc/package.json
similarity index 97%
rename from examples/todomvc/package.json
rename to examples/redux-todomvc/package.json
index 58e7ea36d0..2f66d6eaed 100644
--- a/examples/todomvc/package.json
+++ b/examples/redux-todomvc/package.json
@@ -30,7 +30,7 @@
"dependencies": {
"classnames": "^2.1.2",
"react": "^0.13.3",
- "redux": "^0.12.0"
+ "redux": "file:../../"
},
"devDependencies": {
"babel-core": "^5.5.8",
diff --git a/examples/todomvc/server.js b/examples/redux-todomvc/server.js
similarity index 100%
rename from examples/todomvc/server.js
rename to examples/redux-todomvc/server.js
diff --git a/examples/todomvc/stores/index.js b/examples/redux-todomvc/stores/index.js
similarity index 100%
rename from examples/todomvc/stores/index.js
rename to examples/redux-todomvc/stores/index.js
diff --git a/examples/todomvc/stores/todos.js b/examples/redux-todomvc/stores/todos.js
similarity index 100%
rename from examples/todomvc/stores/todos.js
rename to examples/redux-todomvc/stores/todos.js
diff --git a/examples/redux-todomvc/test/initial_facts_set1.js b/examples/redux-todomvc/test/initial_facts_set1.js
new file mode 100644
index 0000000000..3fb87d86e0
--- /dev/null
+++ b/examples/redux-todomvc/test/initial_facts_set1.js
@@ -0,0 +1 @@
+export default [{'type':'ADD_TODO','text':'do something: 0.14005255815573037','@@loggit':{'timestamp':1436102129722,'offset':1}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129740,'offset':2}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129750,'offset':3}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129797,'offset':4}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129809,'offset':5}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129819,'offset':6}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129830,'offset':7}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129841,'offset':8}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129854,'offset':9}},{'type':'ADD_TODO','text':'do something: 0.3092272407375276','@@loggit':{'timestamp':1436102129866,'offset':10}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129883,'offset':11}},{'type':'ADD_TODO','text':'do something: 0.4818322150968015','@@loggit':{'timestamp':1436102129898,'offset':12}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129914,'offset':13}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129929,'offset':14}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102129947,'offset':15}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129959,'offset':16}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129979,'offset':17}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102129994,'offset':18}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130011,'offset':19}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130029,'offset':20}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130042,'offset':21}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130060,'offset':22}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130075,'offset':23}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130092,'offset':24}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130111,'offset':25}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130126,'offset':26}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130142,'offset':27}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130160,'offset':28}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130177,'offset':29}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130192,'offset':30}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130202,'offset':31}},{'type':'ADD_TODO','text':'do something: 0.7215771938208491','@@loggit':{'timestamp':1436102130214,'offset':32}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130228,'offset':33}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130244,'offset':34}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130261,'offset':35}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130275,'offset':36}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130297,'offset':37}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130310,'offset':38}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130328,'offset':39}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130344,'offset':40}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130362,'offset':41}},{'type':'ADD_TODO','text':'do something: 0.49622164689935744','@@loggit':{'timestamp':1436102130374,'offset':42}},{'type':'ADD_TODO','text':'do something: 0.984988372772932','@@loggit':{'timestamp':1436102130385,'offset':43}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130395,'offset':44}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130408,'offset':45}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130421,'offset':46}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130432,'offset':47}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130443,'offset':48}},{'type':'ADD_TODO','text':'do something: 0.3038415613118559','@@loggit':{'timestamp':1436102130457,'offset':49}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130468,'offset':50}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130493,'offset':51}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130504,'offset':52}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130516,'offset':53}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130528,'offset':54}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130541,'offset':55}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130558,'offset':56}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130574,'offset':57}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130585,'offset':58}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130596,'offset':59}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130607,'offset':60}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130619,'offset':61}},{'type':'ADD_TODO','text':'do something: 0.058923808857798576','@@loggit':{'timestamp':1436102130630,'offset':62}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130645,'offset':63}},{'type':'ADD_TODO','text':'do something: 0.7279837913811207','@@loggit':{'timestamp':1436102130657,'offset':64}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130669,'offset':65}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130679,'offset':66}},{'type':'ADD_TODO','text':'do something: 0.5087373855058104','@@loggit':{'timestamp':1436102130692,'offset':67}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130702,'offset':68}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130713,'offset':69}},{'type':'ADD_TODO','text':'do something: 0.6083237426355481','@@loggit':{'timestamp':1436102130725,'offset':70}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130736,'offset':71}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130757,'offset':72}},{'type':'ADD_TODO','text':'do something: 0.7988091106526554','@@loggit':{'timestamp':1436102130775,'offset':73}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130792,'offset':74}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130810,'offset':75}},{'type':'ADD_TODO','text':'do something: 0.031943149864673615','@@loggit':{'timestamp':1436102130827,'offset':76}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130844,'offset':77}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130865,'offset':78}},{'type':'ADD_TODO','text':'do something: 0.2757239143829793','@@loggit':{'timestamp':1436102130879,'offset':79}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130900,'offset':80}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130917,'offset':81}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102130929,'offset':82}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130948,'offset':83}},{'type':'ADD_TODO','text':'do something: 0.2834542952477932','@@loggit':{'timestamp':1436102130959,'offset':84}},{'type':'ADD_TODO','text':'do something: 0.5193209995049983','@@loggit':{'timestamp':1436102130979,'offset':85}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102130995,'offset':86}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131009,'offset':87}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131021,'offset':88}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131032,'offset':89}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131042,'offset':90}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131057,'offset':91}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131069,'offset':92}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131080,'offset':93}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131092,'offset':94}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131105,'offset':95}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131116,'offset':96}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131127,'offset':97}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131140,'offset':98}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131150,'offset':99}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131162,'offset':100}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131173,'offset':101}},{'type':'ADD_TODO','text':'do something: 0.6729907167609781','@@loggit':{'timestamp':1436102131184,'offset':102}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131200,'offset':103}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131218,'offset':104}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131229,'offset':105}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131250,'offset':106}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131260,'offset':107}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131276,'offset':108}},{'type':'ADD_TODO','text':'do something: 0.17520188400521874','@@loggit':{'timestamp':1436102131290,'offset':109}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131302,'offset':110}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131312,'offset':111}},{'type':'ADD_TODO','text':'do something: 0.8289985074661672','@@loggit':{'timestamp':1436102131329,'offset':112}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131349,'offset':113}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131372,'offset':114}},{'type':'ADD_TODO','text':'do something: 0.7545692902058363','@@loggit':{'timestamp':1436102131385,'offset':115}},{'type':'ADD_TODO','text':'do something: 0.5382799122016877','@@loggit':{'timestamp':1436102131398,'offset':116}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131422,'offset':117}},{'type':'ADD_TODO','text':'do something: 0.5995290223509073','@@loggit':{'timestamp':1436102131434,'offset':118}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131445,'offset':119}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131467,'offset':120}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131478,'offset':121}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131506,'offset':122}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131518,'offset':123}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131538,'offset':124}},{'type':'ADD_TODO','text':'do something: 0.7232135706581175','@@loggit':{'timestamp':1436102131555,'offset':125}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131569,'offset':126}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131594,'offset':127}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131606,'offset':128}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131619,'offset':129}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131633,'offset':130}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131647,'offset':131}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131666,'offset':132}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131678,'offset':133}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131703,'offset':134}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131715,'offset':135}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131736,'offset':136}},{'type':'ADD_TODO','text':'do something: 0.6819780264049768','@@loggit':{'timestamp':1436102131748,'offset':137}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131761,'offset':138}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131786,'offset':139}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131796,'offset':140}},{'type':'ADD_TODO','text':'do something: 0.7135758083313704','@@loggit':{'timestamp':1436102131811,'offset':141}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131834,'offset':142}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131849,'offset':143}},{'type':'ADD_TODO','text':'do something: 0.8586489777080715','@@loggit':{'timestamp':1436102131864,'offset':144}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131882,'offset':145}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131901,'offset':146}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131912,'offset':147}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131928,'offset':148}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102131957,'offset':149}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131975,'offset':150}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131985,'offset':151}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102131996,'offset':152}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132012,'offset':153}},{'type':'ADD_TODO','text':'do something: 0.3047037397045642','@@loggit':{'timestamp':1436102132026,'offset':154}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132037,'offset':155}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132052,'offset':156}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132064,'offset':157}},{'type':'ADD_TODO','text':'do something: 0.2750993126537651','@@loggit':{'timestamp':1436102132075,'offset':158}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132087,'offset':159}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132098,'offset':160}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132109,'offset':161}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132120,'offset':162}},{'type':'ADD_TODO','text':'do something: 0.8864945033565164','@@loggit':{'timestamp':1436102132131,'offset':163}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132147,'offset':164}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132162,'offset':165}},{'type':'ADD_TODO','text':'do something: 0.05065670236945152','@@loggit':{'timestamp':1436102132175,'offset':166}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132186,'offset':167}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132198,'offset':168}},{'type':'ADD_TODO','text':'do something: 0.5568064225371927','@@loggit':{'timestamp':1436102132217,'offset':169}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132241,'offset':170}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132255,'offset':171}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132281,'offset':172}},{'type':'ADD_TODO','text':'do something: 0.4550309986807406','@@loggit':{'timestamp':1436102132291,'offset':173}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132306,'offset':174}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132329,'offset':175}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132340,'offset':176}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132352,'offset':177}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132364,'offset':178}},{'type':'ADD_TODO','text':'do something: 0.21810142416507006','@@loggit':{'timestamp':1436102132375,'offset':179}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132386,'offset':180}},{'type':'ADD_TODO','text':'do something: 0.5376508221961558','@@loggit':{'timestamp':1436102132397,'offset':181}},{'type':'ADD_TODO','text':'do something: 0.8478656271472573','@@loggit':{'timestamp':1436102132419,'offset':182}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132435,'offset':183}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132460,'offset':184}},{'type':'ADD_TODO','text':'do something: 0.5634264687541872','@@loggit':{'timestamp':1436102132470,'offset':185}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132485,'offset':186}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132508,'offset':187}},{'type':'ADD_TODO','text':'do something: 0.5262893023900688','@@loggit':{'timestamp':1436102132519,'offset':188}},{'type':'ADD_TODO','text':'do something: 0.4615504681132734','@@loggit':{'timestamp':1436102132530,'offset':189}},{'type':'ADD_TODO','text':'do something: 0.77141057793051','@@loggit':{'timestamp':1436102132554,'offset':190}},{'type':'ADD_TODO','text':'do something: 0.7848909613676369','@@loggit':{'timestamp':1436102132571,'offset':191}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132582,'offset':192}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132592,'offset':193}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132617,'offset':194}},{'type':'ADD_TODO','text':'do something: 0.9444625761825591','@@loggit':{'timestamp':1436102132636,'offset':195}},{'type':'ADD_TODO','text':'do something: 0.3412559006828815','@@loggit':{'timestamp':1436102132648,'offset':196}},{'type':'ADD_TODO','text':'do something: 0.5449620413128287','@@loggit':{'timestamp':1436102132669,'offset':197}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132694,'offset':198}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132717,'offset':199}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132730,'offset':200}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132755,'offset':201}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132767,'offset':202}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132778,'offset':203}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132794,'offset':204}},{'type':'ADD_TODO','text':'do something: 0.13411510433070362','@@loggit':{'timestamp':1436102132818,'offset':205}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132833,'offset':206}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132851,'offset':207}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132868,'offset':208}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132879,'offset':209}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132892,'offset':210}},{'type':'ADD_TODO','text':'do something: 0.18558532884344459','@@loggit':{'timestamp':1436102132903,'offset':211}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132922,'offset':212}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132937,'offset':213}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132950,'offset':214}},{'type':'ADD_TODO','text':'do something: 0.8116581216454506','@@loggit':{'timestamp':1436102132961,'offset':215}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102132983,'offset':216}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102132999,'offset':217}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133016,'offset':218}},{'type':'ADD_TODO','text':'do something: 0.26068110880441964','@@loggit':{'timestamp':1436102133030,'offset':219}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133045,'offset':220}},{'type':'ADD_TODO','text':'do something: 0.21020703483372927','@@loggit':{'timestamp':1436102133069,'offset':221}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133083,'offset':222}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133098,'offset':223}},{'type':'ADD_TODO','text':'do something: 0.6269797650165856','@@loggit':{'timestamp':1436102133119,'offset':224}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133133,'offset':225}},{'type':'ADD_TODO','text':'do something: 0.20808169362135231','@@loggit':{'timestamp':1436102133147,'offset':226}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133170,'offset':227}},{'type':'ADD_TODO','text':'do something: 0.2222640668042004','@@loggit':{'timestamp':1436102133186,'offset':228}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133201,'offset':229}},{'type':'ADD_TODO','text':'do something: 0.651095581939444','@@loggit':{'timestamp':1436102133223,'offset':230}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133236,'offset':231}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133250,'offset':232}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133267,'offset':233}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133282,'offset':234}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133296,'offset':235}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133320,'offset':236}},{'type':'ADD_TODO','text':'do something: 0.9655132405459881','@@loggit':{'timestamp':1436102133336,'offset':237}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133347,'offset':238}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133371,'offset':239}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133382,'offset':240}},{'type':'ADD_TODO','text':'do something: 0.6330494454596192','@@loggit':{'timestamp':1436102133392,'offset':241}},{'type':'ADD_TODO','text':'do something: 0.442918443121016','@@loggit':{'timestamp':1436102133404,'offset':242}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133420,'offset':243}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133433,'offset':244}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133445,'offset':245}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133468,'offset':246}},{'type':'ADD_TODO','text':'do something: 0.946166018024087','@@loggit':{'timestamp':1436102133479,'offset':247}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133501,'offset':248}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133518,'offset':249}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133529,'offset':250}},{'type':'ADD_TODO','text':'do something: 0.6921876256819814','@@loggit':{'timestamp':1436102133544,'offset':251}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133569,'offset':252}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133591,'offset':253}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133603,'offset':254}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133616,'offset':255}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133629,'offset':256}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133652,'offset':257}},{'type':'ADD_TODO','text':'do something: 0.9239256703294814','@@loggit':{'timestamp':1436102133665,'offset':258}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133690,'offset':259}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133703,'offset':260}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133713,'offset':261}},{'type':'ADD_TODO','text':'do something: 0.036590346368029714','@@loggit':{'timestamp':1436102133730,'offset':262}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133746,'offset':263}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133761,'offset':264}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133780,'offset':265}},{'type':'ADD_TODO','text':'do something: 0.13848169660195708','@@loggit':{'timestamp':1436102133794,'offset':266}},{'type':'ADD_TODO','text':'do something: 0.9295795320067555','@@loggit':{'timestamp':1436102133819,'offset':267}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133837,'offset':268}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133854,'offset':269}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133877,'offset':270}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133892,'offset':271}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133905,'offset':272}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133917,'offset':273}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133937,'offset':274}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102133948,'offset':275}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133966,'offset':276}},{'type':'ADD_TODO','text':'do something: 0.09313372755423188','@@loggit':{'timestamp':1436102133980,'offset':277}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102133999,'offset':278}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134012,'offset':279}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134034,'offset':280}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134046,'offset':281}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134059,'offset':282}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134070,'offset':283}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134081,'offset':284}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134092,'offset':285}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134104,'offset':286}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134116,'offset':287}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134127,'offset':288}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134145,'offset':289}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134159,'offset':290}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134172,'offset':291}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134185,'offset':292}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134204,'offset':293}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134219,'offset':294}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134237,'offset':295}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134247,'offset':296}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134303,'offset':297}},{'type':'ADD_TODO','text':'do something: 0.6852073271293193','@@loggit':{'timestamp':1436102134314,'offset':298}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134342,'offset':299}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134354,'offset':300}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134375,'offset':301}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134385,'offset':302}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134400,'offset':303}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134416,'offset':304}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134431,'offset':305}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134450,'offset':306}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134462,'offset':307}},{'type':'ADD_TODO','text':'do something: 0.6685003007296473','@@loggit':{'timestamp':1436102134486,'offset':308}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134500,'offset':309}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134514,'offset':310}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134533,'offset':311}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134544,'offset':312}},{'type':'ADD_TODO','text':'do something: 0.4182460983283818','@@loggit':{'timestamp':1436102134561,'offset':313}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134572,'offset':314}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134582,'offset':315}},{'type':'ADD_TODO','text':'do something: 0.699667840031907','@@loggit':{'timestamp':1436102134606,'offset':316}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134620,'offset':317}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134639,'offset':318}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134657,'offset':319}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134668,'offset':320}},{'type':'ADD_TODO','text':'do something: 0.40991490986198187','@@loggit':{'timestamp':1436102134681,'offset':321}},{'type':'ADD_TODO','text':'do something: 0.0692897669505328','@@loggit':{'timestamp':1436102134699,'offset':322}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134715,'offset':323}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134730,'offset':324}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134743,'offset':325}},{'type':'ADD_TODO','text':'do something: 0.5883432344999164','@@loggit':{'timestamp':1436102134768,'offset':326}},{'type':'ADD_TODO','text':'do something: 0.8895238975528628','@@loggit':{'timestamp':1436102134792,'offset':327}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134811,'offset':328}},{'type':'ADD_TODO','text':'do something: 0.8555215226951987','@@loggit':{'timestamp':1436102134834,'offset':329}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134851,'offset':330}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134880,'offset':331}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134904,'offset':332}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134925,'offset':333}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134940,'offset':334}},{'type':'ADD_TODO','text':'do something: 0.2516870649997145','@@loggit':{'timestamp':1436102134953,'offset':335}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102134975,'offset':336}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102134998,'offset':337}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135011,'offset':338}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135023,'offset':339}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135038,'offset':340}},{'type':'ADD_TODO','text':'do something: 0.3045221050269902','@@loggit':{'timestamp':1436102135050,'offset':341}},{'type':'ADD_TODO','text':'do something: 0.09074049675837159','@@loggit':{'timestamp':1436102135060,'offset':342}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135079,'offset':343}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135097,'offset':344}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135109,'offset':345}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135121,'offset':346}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135132,'offset':347}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135143,'offset':348}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135155,'offset':349}},{'type':'ADD_TODO','text':'do something: 0.8395041299518198','@@loggit':{'timestamp':1436102135166,'offset':350}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135177,'offset':351}},{'type':'ADD_TODO','text':'do something: 0.16590688843280077','@@loggit':{'timestamp':1436102135191,'offset':352}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135210,'offset':353}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135224,'offset':354}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135241,'offset':355}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135268,'offset':356}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135281,'offset':357}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135295,'offset':358}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135309,'offset':359}},{'type':'ADD_TODO','text':'do something: 0.4529870464466512','@@loggit':{'timestamp':1436102135323,'offset':360}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135347,'offset':361}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135360,'offset':362}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135373,'offset':363}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135384,'offset':364}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135395,'offset':365}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135409,'offset':366}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135425,'offset':367}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135440,'offset':368}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135461,'offset':369}},{'type':'ADD_TODO','text':'do something: 0.93687738571316','@@loggit':{'timestamp':1436102135474,'offset':370}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135493,'offset':371}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135514,'offset':372}},{'type':'ADD_TODO','text':'do something: 0.06418472388759255','@@loggit':{'timestamp':1436102135526,'offset':373}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135543,'offset':374}},{'type':'ADD_TODO','text':'do something: 0.02224514470435679','@@loggit':{'timestamp':1436102135567,'offset':375}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135577,'offset':376}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135593,'offset':377}},{'type':'ADD_TODO','text':'do something: 0.9222635037731379','@@loggit':{'timestamp':1436102135611,'offset':378}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135632,'offset':379}},{'type':'ADD_TODO','text':'do something: 0.25173273659311235','@@loggit':{'timestamp':1436102135647,'offset':380}},{'type':'ADD_TODO','text':'do something: 0.4828883877489716','@@loggit':{'timestamp':1436102135662,'offset':381}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135687,'offset':382}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135700,'offset':383}},{'type':'ADD_TODO','text':'do something: 0.7986698467284441','@@loggit':{'timestamp':1436102135711,'offset':384}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135727,'offset':385}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135756,'offset':386}},{'type':'ADD_TODO','text':'do something: 0.3279940830543637','@@loggit':{'timestamp':1436102135767,'offset':387}},{'type':'ADD_TODO','text':'do something: 0.19637850834988058','@@loggit':{'timestamp':1436102135782,'offset':388}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135799,'offset':389}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135822,'offset':390}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135839,'offset':391}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102135853,'offset':392}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135864,'offset':393}},{'type':'ADD_TODO','text':'do something: 0.6273919416125864','@@loggit':{'timestamp':1436102135875,'offset':394}},{'type':'ADD_TODO','text':'do something: 0.9899257100187242','@@loggit':{'timestamp':1436102135899,'offset':395}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135920,'offset':396}},{'type':'ADD_TODO','text':'do something: 0.7254665286745876','@@loggit':{'timestamp':1436102135934,'offset':397}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135946,'offset':398}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135958,'offset':399}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135975,'offset':400}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102135990,'offset':401}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136007,'offset':402}},{'type':'ADD_TODO','text':'do something: 0.7734184365253896','@@loggit':{'timestamp':1436102136028,'offset':403}},{'type':'ADD_TODO','text':'do something: 0.7314168883021921','@@loggit':{'timestamp':1436102136045,'offset':404}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136061,'offset':405}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136080,'offset':406}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136098,'offset':407}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136110,'offset':408}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136126,'offset':409}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136141,'offset':410}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136161,'offset':411}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136175,'offset':412}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136193,'offset':413}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136207,'offset':414}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136224,'offset':415}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136235,'offset':416}},{'type':'ADD_TODO','text':'do something: 0.422729715006426','@@loggit':{'timestamp':1436102136247,'offset':417}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136261,'offset':418}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136279,'offset':419}},{'type':'ADD_TODO','text':'do something: 0.04200683324597776','@@loggit':{'timestamp':1436102136292,'offset':420}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136312,'offset':421}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136327,'offset':422}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136342,'offset':423}},{'type':'ADD_TODO','text':'do something: 0.5577097027562559','@@loggit':{'timestamp':1436102136360,'offset':424}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136378,'offset':425}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136393,'offset':426}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136409,'offset':427}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136424,'offset':428}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136443,'offset':429}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136459,'offset':430}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136473,'offset':431}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136487,'offset':432}},{'type':'ADD_TODO','text':'do something: 0.48830057797022164','@@loggit':{'timestamp':1436102136500,'offset':433}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136511,'offset':434}},{'type':'ADD_TODO','text':'do something: 0.01989316730760038','@@loggit':{'timestamp':1436102136525,'offset':435}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136542,'offset':436}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136558,'offset':437}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136573,'offset':438}},{'type':'ADD_TODO','text':'do something: 0.5460176696069539','@@loggit':{'timestamp':1436102136584,'offset':439}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136595,'offset':440}},{'type':'ADD_TODO','text':'do something: 0.1505391071550548','@@loggit':{'timestamp':1436102136607,'offset':441}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136617,'offset':442}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136628,'offset':443}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136641,'offset':444}},{'type':'ADD_TODO','text':'do something: 0.96875120094046','@@loggit':{'timestamp':1436102136656,'offset':445}},{'type':'ADD_TODO','text':'do something: 0.3230313209351152','@@loggit':{'timestamp':1436102136668,'offset':446}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136679,'offset':447}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136692,'offset':448}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136709,'offset':449}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136726,'offset':450}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136744,'offset':451}},{'type':'ADD_TODO','text':'do something: 0.7913493444211781','@@loggit':{'timestamp':1436102136759,'offset':452}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136785,'offset':453}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136807,'offset':454}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136830,'offset':455}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136852,'offset':456}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136864,'offset':457}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136882,'offset':458}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136897,'offset':459}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136917,'offset':460}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136939,'offset':461}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102136953,'offset':462}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136966,'offset':463}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102136977,'offset':464}},{'type':'ADD_TODO','text':'do something: 0.21075087483040988','@@loggit':{'timestamp':1436102136989,'offset':465}},{'type':'ADD_TODO','text':'do something: 0.9709739037789404','@@loggit':{'timestamp':1436102137002,'offset':466}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137014,'offset':467}},{'type':'ADD_TODO','text':'do something: 0.2757791408803314','@@loggit':{'timestamp':1436102137028,'offset':468}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137044,'offset':469}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137057,'offset':470}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137068,'offset':471}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137078,'offset':472}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137092,'offset':473}},{'type':'ADD_TODO','text':'do something: 0.14231174439191818','@@loggit':{'timestamp':1436102137109,'offset':474}},{'type':'ADD_TODO','text':'do something: 0.04674037522636354','@@loggit':{'timestamp':1436102137127,'offset':475}},{'type':'ADD_TODO','text':'do something: 0.3109889258630574','@@loggit':{'timestamp':1436102137152,'offset':476}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137169,'offset':477}},{'type':'ADD_TODO','text':'do something: 0.8171535807196051','@@loggit':{'timestamp':1436102137185,'offset':478}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137207,'offset':479}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137228,'offset':480}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137241,'offset':481}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137258,'offset':482}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137276,'offset':483}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137288,'offset':484}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137300,'offset':485}},{'type':'ADD_TODO','text':'do something: 0.7841590309981257','@@loggit':{'timestamp':1436102137325,'offset':486}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137345,'offset':487}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137363,'offset':488}},{'type':'ADD_TODO','text':'do something: 0.02411639061756432','@@loggit':{'timestamp':1436102137378,'offset':489}},{'type':'ADD_TODO','text':'do something: 0.2660655367653817','@@loggit':{'timestamp':1436102137407,'offset':490}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137424,'offset':491}},{'type':'ADD_TODO','text':'do something: 0.8223617600742728','@@loggit':{'timestamp':1436102137441,'offset':492}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137470,'offset':493}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137491,'offset':494}},{'type':'ADD_TODO','text':'do something: 0.5336854793131351','@@loggit':{'timestamp':1436102137516,'offset':495}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137531,'offset':496}},{'type':'ADD_TODO','text':'do something: 0.8321393965743482','@@loggit':{'timestamp':1436102137548,'offset':497}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137575,'offset':498}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137592,'offset':499}},{'type':'ADD_TODO','text':'do something: 0.7924634537193924','@@loggit':{'timestamp':1436102137612,'offset':500}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137629,'offset':501}},{'type':'ADD_TODO','text':'do something: 0.1411982064601034','@@loggit':{'timestamp':1436102137648,'offset':502}},{'type':'ADD_TODO','text':'do something: 0.6551807683426887','@@loggit':{'timestamp':1436102137678,'offset':503}},{'type':'ADD_TODO','text':'do something: 0.025371880969032645','@@loggit':{'timestamp':1436102137697,'offset':504}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137730,'offset':505}},{'type':'ADD_TODO','text':'do something: 0.0633802895899862','@@loggit':{'timestamp':1436102137750,'offset':506}},{'type':'ADD_TODO','text':'do something: 0.48825339530594647','@@loggit':{'timestamp':1436102137780,'offset':507}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137801,'offset':508}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137839,'offset':509}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137880,'offset':510}},{'type':'ADD_TODO','text':'do something: 0.6970564434304833','@@loggit':{'timestamp':1436102137902,'offset':511}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137940,'offset':512}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102137974,'offset':513}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102137987,'offset':514}},{'type':'ADD_TODO','text':'do something: 0.14618048421107233','@@loggit':{'timestamp':1436102137997,'offset':515}},{'type':'ADD_TODO','text':'do something: 0.32420829497277737','@@loggit':{'timestamp':1436102138018,'offset':516}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138033,'offset':517}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138047,'offset':518}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138066,'offset':519}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138077,'offset':520}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138102,'offset':521}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138113,'offset':522}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138128,'offset':523}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138153,'offset':524}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138164,'offset':525}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138175,'offset':526}},{'type':'ADD_TODO','text':'do something: 0.13416455127298832','@@loggit':{'timestamp':1436102138198,'offset':527}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138212,'offset':528}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138240,'offset':529}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138253,'offset':530}},{'type':'ADD_TODO','text':'do something: 0.184239209163934','@@loggit':{'timestamp':1436102138265,'offset':531}},{'type':'ADD_TODO','text':'do something: 0.9718259109649807','@@loggit':{'timestamp':1436102138289,'offset':532}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138309,'offset':533}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138326,'offset':534}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138354,'offset':535}},{'type':'ADD_TODO','text':'do something: 0.6789436293765903','@@loggit':{'timestamp':1436102138370,'offset':536}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138395,'offset':537}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138413,'offset':538}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138425,'offset':539}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138438,'offset':540}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138448,'offset':541}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138459,'offset':542}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138482,'offset':543}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138493,'offset':544}},{'type':'ADD_TODO','text':'do something: 0.3458652242552489','@@loggit':{'timestamp':1436102138520,'offset':545}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138532,'offset':546}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138547,'offset':547}},{'type':'ADD_TODO','text':'do something: 0.24967757379636168','@@loggit':{'timestamp':1436102138572,'offset':548}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138587,'offset':549}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138600,'offset':550}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138611,'offset':551}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138633,'offset':552}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138650,'offset':553}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138661,'offset':554}},{'type':'ADD_TODO','text':'do something: 0.29502437729388475','@@loggit':{'timestamp':1436102138690,'offset':555}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138703,'offset':556}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138718,'offset':557}},{'type':'ADD_TODO','text':'do something: 0.8021912341937423','@@loggit':{'timestamp':1436102138734,'offset':558}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138751,'offset':559}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138765,'offset':560}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138781,'offset':561}},{'type':'ADD_TODO','text':'do something: 0.7309175285045058','@@loggit':{'timestamp':1436102138797,'offset':562}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138817,'offset':563}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138828,'offset':564}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138852,'offset':565}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138863,'offset':566}},{'type':'ADD_TODO','text':'do something: 0.10499419807456434','@@loggit':{'timestamp':1436102138875,'offset':567}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138902,'offset':568}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138924,'offset':569}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138937,'offset':570}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138948,'offset':571}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102138960,'offset':572}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102138973,'offset':573}},{'type':'ADD_TODO','text':'do something: 0.6404336574487388','@@loggit':{'timestamp':1436102138991,'offset':574}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139002,'offset':575}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139014,'offset':576}},{'type':'ADD_TODO','text':'do something: 0.2309308301191777','@@loggit':{'timestamp':1436102139029,'offset':577}},{'type':'ADD_TODO','text':'do something: 0.6952437225263566','@@loggit':{'timestamp':1436102139047,'offset':578}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139062,'offset':579}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139082,'offset':580}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139093,'offset':581}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139118,'offset':582}},{'type':'ADD_TODO','text':'do something: 0.1993359902407974','@@loggit':{'timestamp':1436102139130,'offset':583}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139146,'offset':584}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139174,'offset':585}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139186,'offset':586}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139197,'offset':587}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139217,'offset':588}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139230,'offset':589}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139241,'offset':590}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139258,'offset':591}},{'type':'ADD_TODO','text':'do something: 0.6750119680073112','@@loggit':{'timestamp':1436102139269,'offset':592}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139280,'offset':593}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139293,'offset':594}},{'type':'ADD_TODO','text':'do something: 0.8236483507789671','@@loggit':{'timestamp':1436102139311,'offset':595}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139339,'offset':596}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139354,'offset':597}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139364,'offset':598}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139383,'offset':599}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139402,'offset':600}},{'type':'ADD_TODO','text':'do something: 0.39644954865798354','@@loggit':{'timestamp':1436102139412,'offset':601}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139439,'offset':602}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139458,'offset':603}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139469,'offset':604}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139480,'offset':605}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139492,'offset':606}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139502,'offset':607}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139513,'offset':608}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139525,'offset':609}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139540,'offset':610}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139552,'offset':611}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139563,'offset':612}},{'type':'ADD_TODO','text':'do something: 0.26317598042078316','@@loggit':{'timestamp':1436102139574,'offset':613}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139585,'offset':614}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102139596,'offset':615}},{'type':'ADD_TODO','text':'do something: 0.02776356879621744','@@loggit':{'timestamp':1436102139612,'offset':616}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139632,'offset':617}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139648,'offset':618}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139668,'offset':619}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139678,'offset':620}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102139701,'offset':621}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102157790,'offset':622}},{'type':'ADD_TODO','text':'do something: 0.08771893940865993','@@loggit':{'timestamp':1436102157811,'offset':623}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102157829,'offset':624}},{'type':'ADD_TODO','text':'do something: 0.7932970423717052','@@loggit':{'timestamp':1436102157883,'offset':625}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102157898,'offset':626}},{'type':'ADD_TODO','text':'do something: 0.8414242898579687','@@loggit':{'timestamp':1436102157923,'offset':627}},{'type':'ADD_TODO','text':'do something: 0.15872316737659276','@@loggit':{'timestamp':1436102157939,'offset':628}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102157956,'offset':629}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102157973,'offset':630}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102157991,'offset':631}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158005,'offset':632}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158019,'offset':633}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158030,'offset':634}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158049,'offset':635}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158067,'offset':636}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158081,'offset':637}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158094,'offset':638}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158115,'offset':639}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158127,'offset':640}},{'type':'ADD_TODO','text':'do something: 0.3181078275665641','@@loggit':{'timestamp':1436102158140,'offset':641}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158161,'offset':642}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158173,'offset':643}},{'type':'ADD_TODO','text':'do something: 0.40271632582880557','@@loggit':{'timestamp':1436102158185,'offset':644}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158205,'offset':645}},{'type':'ADD_TODO','text':'do something: 0.07840323308482766','@@loggit':{'timestamp':1436102158219,'offset':646}},{'type':'ADD_TODO','text':'do something: 0.110460584750399','@@loggit':{'timestamp':1436102158232,'offset':647}},{'type':'ADD_TODO','text':'do something: 0.6061924677342176','@@loggit':{'timestamp':1436102158253,'offset':648}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158269,'offset':649}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158285,'offset':650}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158303,'offset':651}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158322,'offset':652}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158338,'offset':653}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158344,'offset':654}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158355,'offset':655}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158370,'offset':656}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158383,'offset':657}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158394,'offset':658}},{'type':'ADD_TODO','text':'do something: 0.5646276413463056','@@loggit':{'timestamp':1436102158406,'offset':659}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158417,'offset':660}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158427,'offset':661}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158439,'offset':662}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158466,'offset':663}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158478,'offset':664}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158490,'offset':665}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158507,'offset':666}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158535,'offset':667}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158546,'offset':668}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158557,'offset':669}},{'type':'ADD_TODO','text':'do something: 0.877351546427235','@@loggit':{'timestamp':1436102158573,'offset':670}},{'type':'ADD_TODO','text':'do something: 0.37086433661170304','@@loggit':{'timestamp':1436102158610,'offset':671}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158629,'offset':672}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158647,'offset':673}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158663,'offset':674}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158695,'offset':675}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158716,'offset':676}},{'type':'ADD_TODO','text':'do something: 0.7096517926547676','@@loggit':{'timestamp':1436102158733,'offset':677}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158755,'offset':678}},{'type':'ADD_TODO','text':'do something: 0.719074243446812','@@loggit':{'timestamp':1436102158772,'offset':679}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158791,'offset':680}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158825,'offset':681}},{'type':'ADD_TODO','text':'do something: 0.6519448289182037','@@loggit':{'timestamp':1436102158841,'offset':682}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158859,'offset':683}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158879,'offset':684}},{'type':'ADD_TODO','text':'do something: 0.614794940687716','@@loggit':{'timestamp':1436102158900,'offset':685}},{'type':'ADD_TODO','text':'do something: 0.8537056755740196','@@loggit':{'timestamp':1436102158927,'offset':686}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102158952,'offset':687}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102158982,'offset':688}},{'type':'ADD_TODO','text':'do something: 0.46410633786581457','@@loggit':{'timestamp':1436102158998,'offset':689}},{'type':'ADD_TODO','text':'do something: 0.017600830178707838','@@loggit':{'timestamp':1436102159017,'offset':690}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159037,'offset':691}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159051,'offset':692}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159062,'offset':693}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159077,'offset':694}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159104,'offset':695}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159117,'offset':696}},{'type':'ADD_TODO','text':'do something: 0.6023685790132731','@@loggit':{'timestamp':1436102159128,'offset':697}},{'type':'ADD_TODO','text':'do something: 0.5312547783832997','@@loggit':{'timestamp':1436102159143,'offset':698}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159160,'offset':699}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159174,'offset':700}},{'type':'ADD_TODO','text':'do something: 0.6927223540842533','@@loggit':{'timestamp':1436102159198,'offset':701}},{'type':'ADD_TODO','text':'do something: 0.7840529414825141','@@loggit':{'timestamp':1436102159218,'offset':702}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159233,'offset':703}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159246,'offset':704}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159260,'offset':705}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159275,'offset':706}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159294,'offset':707}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159309,'offset':708}},{'type':'ADD_TODO','text':'do something: 0.9356536802370101','@@loggit':{'timestamp':1436102159327,'offset':709}},{'type':'ADD_TODO','text':'do something: 0.904379041865468','@@loggit':{'timestamp':1436102159346,'offset':710}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159366,'offset':711}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159384,'offset':712}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159400,'offset':713}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159414,'offset':714}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159429,'offset':715}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159442,'offset':716}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159458,'offset':717}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159477,'offset':718}},{'type':'ADD_TODO','text':'do something: 0.9829432107508183','@@loggit':{'timestamp':1436102159494,'offset':719}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159511,'offset':720}},{'type':'ADD_TODO','text':'do something: 0.08328770892694592','@@loggit':{'timestamp':1436102159527,'offset':721}},{'type':'ADD_TODO','text':'do something: 0.5354504568967968','@@loggit':{'timestamp':1436102159545,'offset':722}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159563,'offset':723}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159579,'offset':724}},{'type':'ADD_TODO','text':'do something: 0.7745209999848157','@@loggit':{'timestamp':1436102159594,'offset':725}},{'type':'ADD_TODO','text':'do something: 0.26062949444167316','@@loggit':{'timestamp':1436102159613,'offset':726}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159633,'offset':727}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159656,'offset':728}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159669,'offset':729}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159680,'offset':730}},{'type':'ADD_TODO','text':'do something: 0.2979360322933644','@@loggit':{'timestamp':1436102159691,'offset':731}},{'type':'ADD_TODO','text':'do something: 0.9022073263768107','@@loggit':{'timestamp':1436102159714,'offset':732}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159730,'offset':733}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159747,'offset':734}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159761,'offset':735}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159779,'offset':736}},{'type':'ADD_TODO','text':'do something: 0.4447099706158042','@@loggit':{'timestamp':1436102159795,'offset':737}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159811,'offset':738}},{'type':'ADD_TODO','text':'do something: 0.8292316079605371','@@loggit':{'timestamp':1436102159829,'offset':739}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159859,'offset':740}},{'type':'ADD_TODO','text':'do something: 0.0811219837050885','@@loggit':{'timestamp':1436102159876,'offset':741}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159893,'offset':742}},{'type':'ADD_TODO','text':'do something: 0.7855417574755847','@@loggit':{'timestamp':1436102159912,'offset':743}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159934,'offset':744}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159949,'offset':745}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159960,'offset':746}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102159971,'offset':747}},{'type':'ADD_TODO','text':'do something: 0.023351820185780525','@@loggit':{'timestamp':1436102159982,'offset':748}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102159999,'offset':749}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160021,'offset':750}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160033,'offset':751}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160052,'offset':752}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160070,'offset':753}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160084,'offset':754}},{'type':'ADD_TODO','text':'do something: 0.5137618572916836','@@loggit':{'timestamp':1436102160098,'offset':755}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160115,'offset':756}},{'type':'ADD_TODO','text':'do something: 0.712469182908535','@@loggit':{'timestamp':1436102160131,'offset':757}},{'type':'ADD_TODO','text':'do something: 0.9531801412813365','@@loggit':{'timestamp':1436102160155,'offset':758}},{'type':'ADD_TODO','text':'do something: 0.5232113336678594','@@loggit':{'timestamp':1436102160172,'offset':759}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160187,'offset':760}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160208,'offset':761}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160229,'offset':762}},{'type':'ADD_TODO','text':'do something: 0.7482757139950991','@@loggit':{'timestamp':1436102160244,'offset':763}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160260,'offset':764}},{'type':'ADD_TODO','text':'do something: 0.36383438273333013','@@loggit':{'timestamp':1436102160285,'offset':765}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160297,'offset':766}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160317,'offset':767}},{'type':'ADD_TODO','text':'do something: 0.640732609666884','@@loggit':{'timestamp':1436102160337,'offset':768}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160353,'offset':769}},{'type':'ADD_TODO','text':'do something: 0.5342568522319198','@@loggit':{'timestamp':1436102160372,'offset':770}},{'type':'ADD_TODO','text':'do something: 0.7709688991308212','@@loggit':{'timestamp':1436102160395,'offset':771}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160408,'offset':772}},{'type':'ADD_TODO','text':'do something: 0.8692900573369116','@@loggit':{'timestamp':1436102160421,'offset':773}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160445,'offset':774}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160460,'offset':775}},{'type':'ADD_TODO','text':'do something: 0.5825108878780156','@@loggit':{'timestamp':1436102160471,'offset':776}},{'type':'ADD_TODO','text':'do something: 0.5026261345483363','@@loggit':{'timestamp':1436102160496,'offset':777}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160513,'offset':778}},{'type':'ADD_TODO','text':'do something: 0.7850384258199483','@@loggit':{'timestamp':1436102160528,'offset':779}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160554,'offset':780}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160568,'offset':781}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160579,'offset':782}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160600,'offset':783}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160613,'offset':784}},{'type':'ADD_TODO','text':'do something: 0.5998711455613375','@@loggit':{'timestamp':1436102160633,'offset':785}},{'type':'ADD_TODO','text':'do something: 0.43055729125626385','@@loggit':{'timestamp':1436102160659,'offset':786}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160680,'offset':787}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160703,'offset':788}},{'type':'ADD_TODO','text':'do something: 0.05695227370597422','@@loggit':{'timestamp':1436102160722,'offset':789}},{'type':'ADD_TODO','text':'do something: 0.4529478324111551','@@loggit':{'timestamp':1436102160737,'offset':790}},{'type':'ADD_TODO','text':'do something: 0.28321140981279314','@@loggit':{'timestamp':1436102160768,'offset':791}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160785,'offset':792}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160812,'offset':793}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160827,'offset':794}},{'type':'ADD_TODO','text':'do something: 0.09491956676356494','@@loggit':{'timestamp':1436102160842,'offset':795}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160868,'offset':796}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160883,'offset':797}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160897,'offset':798}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160923,'offset':799}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160950,'offset':800}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160972,'offset':801}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102160987,'offset':802}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102160997,'offset':803}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161021,'offset':804}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161032,'offset':805}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161048,'offset':806}},{'type':'ADD_TODO','text':'do something: 0.5279713568743318','@@loggit':{'timestamp':1436102161063,'offset':807}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161091,'offset':808}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161105,'offset':809}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161116,'offset':810}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161133,'offset':811}},{'type':'ADD_TODO','text':'do something: 0.7962201186455786','@@loggit':{'timestamp':1436102161147,'offset':812}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161168,'offset':813}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161183,'offset':814}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161203,'offset':815}},{'type':'ADD_TODO','text':'do something: 0.12149566598236561','@@loggit':{'timestamp':1436102161216,'offset':816}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161234,'offset':817}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161255,'offset':818}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161266,'offset':819}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161281,'offset':820}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161304,'offset':821}},{'type':'ADD_TODO','text':'do something: 0.43210729327984154','@@loggit':{'timestamp':1436102161316,'offset':822}},{'type':'ADD_TODO','text':'do something: 0.9209041770081967','@@loggit':{'timestamp':1436102161332,'offset':823}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161359,'offset':824}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161373,'offset':825}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161395,'offset':826}},{'type':'ADD_TODO','text':'do something: 0.5349177352618426','@@loggit':{'timestamp':1436102161411,'offset':827}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161422,'offset':828}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161440,'offset':829}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161458,'offset':830}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161469,'offset':831}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161481,'offset':832}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161504,'offset':833}},{'type':'ADD_TODO','text':'do something: 0.16012726863846183','@@loggit':{'timestamp':1436102161515,'offset':834}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161539,'offset':835}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161557,'offset':836}},{'type':'ADD_TODO','text':'do something: 0.16310220281593502','@@loggit':{'timestamp':1436102161568,'offset':837}},{'type':'ADD_TODO','text':'do something: 0.40179657959379256','@@loggit':{'timestamp':1436102161588,'offset':838}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161612,'offset':839}},{'type':'ADD_TODO','text':'do something: 0.7788990044500679','@@loggit':{'timestamp':1436102161626,'offset':840}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161643,'offset':841}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161664,'offset':842}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161675,'offset':843}},{'type':'ADD_TODO','text':'do something: 0.8625650361645967','@@loggit':{'timestamp':1436102161686,'offset':844}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161698,'offset':845}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161713,'offset':846}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161723,'offset':847}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161737,'offset':848}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161749,'offset':849}},{'type':'ADD_TODO','text':'do something: 0.443816339597106','@@loggit':{'timestamp':1436102161765,'offset':850}},{'type':'ADD_TODO','text':'do something: 0.3585086138918996','@@loggit':{'timestamp':1436102161788,'offset':851}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161802,'offset':852}},{'type':'ADD_TODO','text':'do something: 0.2784777225460857','@@loggit':{'timestamp':1436102161817,'offset':853}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161842,'offset':854}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102161855,'offset':855}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161867,'offset':856}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161884,'offset':857}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161899,'offset':858}},{'type':'ADD_TODO','text':'do something: 0.8663151119835675','@@loggit':{'timestamp':1436102161912,'offset':859}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161924,'offset':860}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161942,'offset':861}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161956,'offset':862}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161966,'offset':863}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161977,'offset':864}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102161990,'offset':865}},{'type':'ADD_TODO','text':'do something: 0.10221651592291892','@@loggit':{'timestamp':1436102162001,'offset':866}},{'type':'ADD_TODO','text':'do something: 0.6430722100194544','@@loggit':{'timestamp':1436102162023,'offset':867}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162046,'offset':868}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162057,'offset':869}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162069,'offset':870}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162084,'offset':871}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162100,'offset':872}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162122,'offset':873}},{'type':'ADD_TODO','text':'do something: 0.18524128594435751','@@loggit':{'timestamp':1436102162135,'offset':874}},{'type':'ADD_TODO','text':'do something: 0.5451269599143416','@@loggit':{'timestamp':1436102162165,'offset':875}},{'type':'ADD_TODO','text':'do something: 0.5433364289347082','@@loggit':{'timestamp':1436102162179,'offset':876}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162203,'offset':877}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162224,'offset':878}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162237,'offset':879}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162255,'offset':880}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162265,'offset':881}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162292,'offset':882}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162305,'offset':883}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162317,'offset':884}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162336,'offset':885}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162350,'offset':886}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162367,'offset':887}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162383,'offset':888}},{'type':'ADD_TODO','text':'do something: 0.9684900166466832','@@loggit':{'timestamp':1436102162395,'offset':889}},{'type':'ADD_TODO','text':'do something: 0.3973923090379685','@@loggit':{'timestamp':1436102162418,'offset':890}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162435,'offset':891}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162459,'offset':892}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162469,'offset':893}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162481,'offset':894}},{'type':'ADD_TODO','text':'do something: 0.8498023054562509','@@loggit':{'timestamp':1436102162497,'offset':895}},{'type':'ADD_TODO','text':'do something: 0.6973818461410701','@@loggit':{'timestamp':1436102162517,'offset':896}},{'type':'ADD_TODO','text':'do something: 0.7247556543443352','@@loggit':{'timestamp':1436102162539,'offset':897}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162556,'offset':898}},{'type':'ADD_TODO','text':'do something: 0.07442711992189288','@@loggit':{'timestamp':1436102162577,'offset':899}},{'type':'ADD_TODO','text':'do something: 0.44704672507941723','@@loggit':{'timestamp':1436102162589,'offset':900}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162608,'offset':901}},{'type':'ADD_TODO','text':'do something: 0.7178272868040949','@@loggit':{'timestamp':1436102162631,'offset':902}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162643,'offset':903}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162661,'offset':904}},{'type':'ADD_TODO','text':'do something: 0.10833626752719283','@@loggit':{'timestamp':1436102162678,'offset':905}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162693,'offset':906}},{'type':'ADD_TODO','text':'do something: 0.6315070737618953','@@loggit':{'timestamp':1436102162719,'offset':907}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162735,'offset':908}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162762,'offset':909}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162776,'offset':910}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162787,'offset':911}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162798,'offset':912}},{'type':'ADD_TODO','text':'do something: 0.38843976939097047','@@loggit':{'timestamp':1436102162814,'offset':913}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162840,'offset':914}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162855,'offset':915}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162870,'offset':916}},{'type':'ADD_TODO','text':'do something: 0.7571036536246538','@@loggit':{'timestamp':1436102162885,'offset':917}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102162901,'offset':918}},{'type':'ADD_TODO','text':'do something: 0.5944569164421409','@@loggit':{'timestamp':1436102162920,'offset':919}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162939,'offset':920}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102162955,'offset':921}},{'type':'ADD_TODO','text':'do something: 0.6849852702580392','@@loggit':{'timestamp':1436102162983,'offset':922}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163000,'offset':923}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163018,'offset':924}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163034,'offset':925}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163052,'offset':926}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163063,'offset':927}},{'type':'ADD_TODO','text':'do something: 0.3441645363345742','@@loggit':{'timestamp':1436102163074,'offset':928}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163088,'offset':929}},{'type':'ADD_TODO','text':'do something: 0.07857828121632338','@@loggit':{'timestamp':1436102163104,'offset':930}},{'type':'ADD_TODO','text':'do something: 0.0628194659948349','@@loggit':{'timestamp':1436102163120,'offset':931}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163148,'offset':932}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163162,'offset':933}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163183,'offset':934}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163194,'offset':935}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163205,'offset':936}},{'type':'ADD_TODO','text':'do something: 0.20506975264288485','@@loggit':{'timestamp':1436102163218,'offset':937}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163236,'offset':938}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163248,'offset':939}},{'type':'ADD_TODO','text':'do something: 0.049287661677226424','@@loggit':{'timestamp':1436102163272,'offset':940}},{'type':'ADD_TODO','text':'do something: 0.9698579341638833','@@loggit':{'timestamp':1436102163286,'offset':941}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163315,'offset':942}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163330,'offset':943}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163347,'offset':944}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163362,'offset':945}},{'type':'ADD_TODO','text':'do something: 0.8146753287874162','@@loggit':{'timestamp':1436102163374,'offset':946}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163385,'offset':947}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163402,'offset':948}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163417,'offset':949}},{'type':'ADD_TODO','text':'do something: 0.2895590898115188','@@loggit':{'timestamp':1436102163436,'offset':950}},{'type':'ADD_TODO','text':'do something: 0.12543609435670078','@@loggit':{'timestamp':1436102163451,'offset':951}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163478,'offset':952}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163495,'offset':953}},{'type':'ADD_TODO','text':'do something: 0.025785036850720644','@@loggit':{'timestamp':1436102163506,'offset':954}},{'type':'ADD_TODO','text':'do something: 0.02994530531577766','@@loggit':{'timestamp':1436102163523,'offset':955}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163540,'offset':956}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163570,'offset':957}},{'type':'ADD_TODO','text':'do something: 0.4789286961313337','@@loggit':{'timestamp':1436102163586,'offset':958}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163602,'offset':959}},{'type':'ADD_TODO','text':'do something: 0.9798194472678006','@@loggit':{'timestamp':1436102163626,'offset':960}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163637,'offset':961}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163647,'offset':962}},{'type':'ADD_TODO','text':'do something: 0.031691354932263494','@@loggit':{'timestamp':1436102163670,'offset':963}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163685,'offset':964}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163700,'offset':965}},{'type':'ADD_TODO','text':'do something: 0.7762945739086717','@@loggit':{'timestamp':1436102163715,'offset':966}},{'type':'ADD_TODO','text':'do something: 0.7523201471194625','@@loggit':{'timestamp':1436102163741,'offset':967}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163757,'offset':968}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163772,'offset':969}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163790,'offset':970}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163804,'offset':971}},{'type':'ADD_TODO','text':'do something: 0.6762692779302597','@@loggit':{'timestamp':1436102163818,'offset':972}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163843,'offset':973}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163863,'offset':974}},{'type':'ADD_TODO','text':'do something: 0.08141479920595884','@@loggit':{'timestamp':1436102163874,'offset':975}},{'type':'ADD_TODO','text':'do something: 0.7797144462820143','@@loggit':{'timestamp':1436102163888,'offset':976}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163919,'offset':977}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102163935,'offset':978}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163948,'offset':979}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163969,'offset':980}},{'type':'ADD_TODO','text':'do something: 0.8436023290269077','@@loggit':{'timestamp':1436102163985,'offset':981}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102163998,'offset':982}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164012,'offset':983}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164023,'offset':984}},{'type':'ADD_TODO','text':'do something: 0.703048134688288','@@loggit':{'timestamp':1436102164043,'offset':985}},{'type':'ADD_TODO','text':'do something: 0.6692090334836394','@@loggit':{'timestamp':1436102164053,'offset':986}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164068,'offset':987}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164098,'offset':988}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164114,'offset':989}},{'type':'ADD_TODO','text':'do something: 0.3304646727629006','@@loggit':{'timestamp':1436102164125,'offset':990}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164136,'offset':991}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164152,'offset':992}},{'type':'ADD_TODO','text':'do something: 0.2346855658106506','@@loggit':{'timestamp':1436102164174,'offset':993}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164197,'offset':994}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164215,'offset':995}},{'type':'ADD_TODO','text':'do something: 0.7577881868928671','@@loggit':{'timestamp':1436102164240,'offset':996}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164250,'offset':997}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164281,'offset':998}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164294,'offset':999}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164307,'offset':1000}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164318,'offset':1001}},{'type':'ADD_TODO','text':'do something: 0.13504031556658447','@@loggit':{'timestamp':1436102164330,'offset':1002}},{'type':'ADD_TODO','text':'do something: 0.6832038639113307','@@loggit':{'timestamp':1436102164355,'offset':1003}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164381,'offset':1004}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164393,'offset':1005}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164404,'offset':1006}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164428,'offset':1007}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164439,'offset':1008}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164459,'offset':1009}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164470,'offset':1010}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164486,'offset':1011}},{'type':'ADD_TODO','text':'do something: 0.06878101592883468','@@loggit':{'timestamp':1436102164499,'offset':1012}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164529,'offset':1013}},{'type':'ADD_TODO','text':'do something: 0.7025009614881128','@@loggit':{'timestamp':1436102164544,'offset':1014}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164565,'offset':1015}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164583,'offset':1016}},{'type':'ADD_TODO','text':'do something: 0.9661253404337913','@@loggit':{'timestamp':1436102164594,'offset':1017}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164606,'offset':1018}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164622,'offset':1019}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164637,'offset':1020}},{'type':'ADD_TODO','text':'do something: 0.08091211342252791','@@loggit':{'timestamp':1436102164655,'offset':1021}},{'type':'ADD_TODO','text':'do something: 0.232247575186193','@@loggit':{'timestamp':1436102164668,'offset':1022}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164694,'offset':1023}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164711,'offset':1024}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164723,'offset':1025}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164746,'offset':1026}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164759,'offset':1027}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164770,'offset':1028}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164785,'offset':1029}},{'type':'ADD_TODO','text':'do something: 0.4037988574709743','@@loggit':{'timestamp':1436102164798,'offset':1030}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164825,'offset':1031}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164837,'offset':1032}},{'type':'ADD_TODO','text':'do something: 0.5978076001629233','@@loggit':{'timestamp':1436102164855,'offset':1033}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164867,'offset':1034}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164881,'offset':1035}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164903,'offset':1036}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164921,'offset':1037}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102164946,'offset':1038}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164961,'offset':1039}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164973,'offset':1040}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102164997,'offset':1041}},{'type':'ADD_TODO','text':'do something: 0.2281452901661396','@@loggit':{'timestamp':1436102165008,'offset':1042}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165035,'offset':1043}},{'type':'ADD_TODO','text':'do something: 0.08324203710071743','@@loggit':{'timestamp':1436102165048,'offset':1044}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165058,'offset':1045}},{'type':'ADD_TODO','text':'do something: 0.4307877258397639','@@loggit':{'timestamp':1436102165085,'offset':1046}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165103,'offset':1047}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165116,'offset':1048}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165134,'offset':1049}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165152,'offset':1050}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165162,'offset':1051}},{'type':'ADD_TODO','text':'do something: 0.665548509452492','@@loggit':{'timestamp':1436102165173,'offset':1052}},{'type':'ADD_TODO','text':'do something: 0.18303581117652357','@@loggit':{'timestamp':1436102165201,'offset':1053}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165215,'offset':1054}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165237,'offset':1055}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165247,'offset':1056}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165258,'offset':1057}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165278,'offset':1058}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165293,'offset':1059}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165306,'offset':1060}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165323,'offset':1061}},{'type':'ADD_TODO','text':'do something: 0.7585995385888964','@@loggit':{'timestamp':1436102165338,'offset':1062}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165368,'offset':1063}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165392,'offset':1064}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165405,'offset':1065}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165417,'offset':1066}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165430,'offset':1067}},{'type':'ADD_TODO','text':'do something: 0.05226557515561581','@@loggit':{'timestamp':1436102165444,'offset':1068}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165529,'offset':1069}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165545,'offset':1070}},{'type':'ADD_TODO','text':'do something: 0.317363795125857','@@loggit':{'timestamp':1436102165568,'offset':1071}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165580,'offset':1072}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165606,'offset':1073}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165623,'offset':1074}},{'type':'ADD_TODO','text':'do something: 0.3304983847774565','@@loggit':{'timestamp':1436102165634,'offset':1075}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165659,'offset':1076}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165675,'offset':1077}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165689,'offset':1078}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165711,'offset':1079}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165723,'offset':1080}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165734,'offset':1081}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165746,'offset':1082}},{'type':'ADD_TODO','text':'do something: 0.6041659512557089','@@loggit':{'timestamp':1436102165757,'offset':1083}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165787,'offset':1084}},{'type':'ADD_TODO','text':'do something: 0.22266724705696106','@@loggit':{'timestamp':1436102165802,'offset':1085}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165826,'offset':1086}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165843,'offset':1087}},{'type':'ADD_TODO','text':'do something: 0.8537821171339601','@@loggit':{'timestamp':1436102165856,'offset':1088}},{'type':'ADD_TODO','text':'do something: 0.5001200472470373','@@loggit':{'timestamp':1436102165868,'offset':1089}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102165886,'offset':1090}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165913,'offset':1091}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165931,'offset':1092}},{'type':'ADD_TODO','text':'do something: 0.43201730074360967','@@loggit':{'timestamp':1436102165960,'offset':1093}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102165978,'offset':1094}},{'type':'ADD_TODO','text':'do something: 0.021863953210413456','@@loggit':{'timestamp':1436102165993,'offset':1095}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166006,'offset':1096}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166039,'offset':1097}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166055,'offset':1098}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166075,'offset':1099}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166095,'offset':1100}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166105,'offset':1101}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166117,'offset':1102}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166127,'offset':1103}},{'type':'ADD_TODO','text':'do something: 0.55469322623685','@@loggit':{'timestamp':1436102166139,'offset':1104}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166151,'offset':1105}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166170,'offset':1106}},{'type':'ADD_TODO','text':'do something: 0.20552691561169922','@@loggit':{'timestamp':1436102166182,'offset':1107}},{'type':'ADD_TODO','text':'do something: 0.6849320214241743','@@loggit':{'timestamp':1436102166195,'offset':1108}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166220,'offset':1109}},{'type':'ADD_TODO','text':'do something: 0.9415123532526195','@@loggit':{'timestamp':1436102166237,'offset':1110}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166257,'offset':1111}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166272,'offset':1112}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166287,'offset':1113}},{'type':'ADD_TODO','text':'do something: 0.07926116231828928','@@loggit':{'timestamp':1436102166303,'offset':1114}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166316,'offset':1115}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166337,'offset':1116}},{'type':'ADD_TODO','text':'do something: 0.5962083311751485','@@loggit':{'timestamp':1436102166356,'offset':1117}},{'type':'ADD_TODO','text':'do something: 0.5902055213227868','@@loggit':{'timestamp':1436102166369,'offset':1118}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166390,'offset':1119}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166409,'offset':1120}},{'type':'ADD_TODO','text':'do something: 0.12688180594705045','@@loggit':{'timestamp':1436102166421,'offset':1121}},{'type':'ADD_TODO','text':'do something: 0.003535948460921645','@@loggit':{'timestamp':1436102166447,'offset':1122}},{'type':'ADD_TODO','text':'do something: 0.6741866904776543','@@loggit':{'timestamp':1436102166466,'offset':1123}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166494,'offset':1124}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166508,'offset':1125}},{'type':'ADD_TODO','text':'do something: 0.610888535855338','@@loggit':{'timestamp':1436102166518,'offset':1126}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166530,'offset':1127}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166545,'offset':1128}},{'type':'ADD_TODO','text':'do something: 0.7727536929305643','@@loggit':{'timestamp':1436102166568,'offset':1129}},{'type':'ADD_TODO','text':'do something: 0.09647655487060547','@@loggit':{'timestamp':1436102166582,'offset':1130}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166601,'offset':1131}},{'type':'ADD_TODO','text':'do something: 0.9335666089318693','@@loggit':{'timestamp':1436102166625,'offset':1132}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166639,'offset':1133}},{'type':'ADD_TODO','text':'do something: 0.6875901008024812','@@loggit':{'timestamp':1436102166658,'offset':1134}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166676,'offset':1135}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166695,'offset':1136}},{'type':'ADD_TODO','text':'do something: 0.28071395494043827','@@loggit':{'timestamp':1436102166722,'offset':1137}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166740,'offset':1138}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166764,'offset':1139}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166780,'offset':1140}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102166791,'offset':1141}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166812,'offset':1142}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166824,'offset':1143}},{'type':'ADD_TODO','text':'do something: 0.3414546449203044','@@loggit':{'timestamp':1436102166844,'offset':1144}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166858,'offset':1145}},{'type':'ADD_TODO','text':'do something: 0.13115435652434826','@@loggit':{'timestamp':1436102166881,'offset':1146}},{'type':'ADD_TODO','text':'do something: 0.046512261033058167','@@loggit':{'timestamp':1436102166893,'offset':1147}},{'type':'ADD_TODO','text':'do something: 0.1265328717418015','@@loggit':{'timestamp':1436102166921,'offset':1148}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102166944,'offset':1149}},{'type':'ADD_TODO','text':'do something: 0.20763319940306246','@@loggit':{'timestamp':1436102166961,'offset':1150}},{'type':'ADD_TODO','text':'do something: 0.7580849495716393','@@loggit':{'timestamp':1436102166981,'offset':1151}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167006,'offset':1152}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167025,'offset':1153}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167038,'offset':1154}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167064,'offset':1155}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167081,'offset':1156}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167096,'offset':1157}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167128,'offset':1158}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167146,'offset':1159}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167162,'offset':1160}},{'type':'ADD_TODO','text':'do something: 0.3447163002565503','@@loggit':{'timestamp':1436102167187,'offset':1161}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167202,'offset':1162}},{'type':'ADD_TODO','text':'do something: 0.3499762418214232','@@loggit':{'timestamp':1436102167230,'offset':1163}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167246,'offset':1164}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167269,'offset':1165}},{'type':'ADD_TODO','text':'do something: 0.933516493299976','@@loggit':{'timestamp':1436102167286,'offset':1166}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167301,'offset':1167}},{'type':'ADD_TODO','text':'do something: 0.8735207766294479','@@loggit':{'timestamp':1436102167329,'offset':1168}},{'type':'ADD_TODO','text':'do something: 0.9135592996608466','@@loggit':{'timestamp':1436102167344,'offset':1169}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167375,'offset':1170}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167391,'offset':1171}},{'type':'ADD_TODO','text':'do something: 0.8030123924836516','@@loggit':{'timestamp':1436102167411,'offset':1172}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167426,'offset':1173}},{'type':'ADD_TODO','text':'do something: 0.3831872611772269','@@loggit':{'timestamp':1436102167447,'offset':1174}},{'type':'ADD_TODO','text':'do something: 0.9258750306908041','@@loggit':{'timestamp':1436102167470,'offset':1175}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167489,'offset':1176}},{'type':'ADD_TODO','text':'do something: 0.028277537086978555','@@loggit':{'timestamp':1436102167515,'offset':1177}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167528,'offset':1178}},{'type':'ADD_TODO','text':'do something: 0.2699053920805454','@@loggit':{'timestamp':1436102167560,'offset':1179}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167581,'offset':1180}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167610,'offset':1181}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167628,'offset':1182}},{'type':'CLEAR_MARKED','@@loggit':{'timestamp':1436102167649,'offset':1183}},{'type':'ADD_TODO','text':'do something: 0.9201707127504051','@@loggit':{'timestamp':1436102167666,'offset':1184}},{'type':'ADD_TODO','text':'do something: 0.6313794497400522','@@loggit':{'timestamp':1436102167697,'offset':1185}},{'type':'ADD_TODO','text':'do something: 0.8830798305571079','@@loggit':{'timestamp':1436102167721,'offset':1186}},{'type':'MARK_ALL','@@loggit':{'timestamp':1436102167742,'offset':1187}}];
diff --git a/examples/todomvc/webpack.config.js b/examples/redux-todomvc/webpack.config.js
similarity index 100%
rename from examples/todomvc/webpack.config.js
rename to examples/redux-todomvc/webpack.config.js
diff --git a/examples/todomvc/containers/App.js b/examples/todomvc/containers/App.js
deleted file mode 100644
index 253f3260e1..0000000000
--- a/examples/todomvc/containers/App.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import TodoApp from './TodoApp';
-import { createRedux } from 'redux';
-import { Provider } from 'redux/react';
-import * as stores from '../stores';
-
-const redux = createRedux(stores);
-
-export default class App {
- render() {
- return (
-
- {() => }
-
- );
- }
-}