<commit_before>var examples = {
  "My Stack": "",
  "Editor": "* tableCardProgram\n  ~ run program\n  \n* stacksToInject\n  ~ stack\n  + \"Editor injection\"\n  \n* editor|hasUI\n  ~ count hasUI\n\n* remoteViewsToTrack\n  ~ recipient view alias asCells\n  + \"Editor\" \"error\" \"editorError\" \"\"\n  + \"Editor\" \"profile\" \"editorProfile\" \"\"\n  + \"Editor\" \"hasUI\" \"editor|hasUI\" \"\"\n\n* drawControlCard\n  | tableCardProgram program\n  [\"div\" {\"id\" \"controlCard\" \"class\" \"card controlCard open\" \"ix\" \"a\"}\n    [\"h1\" program]]\n\n* drawUICard\n  | editor|hasUI hasUI\n  ? @hasUI\n  [\"div\" {\"id\" \"uiCard\" \"class\" \"card uiCard open\" \"ix\" \"aaa\"}\n    [\"header\"\n      [\"h2\" \"UI\"]]]\n\n* drawErrorCard\n  > error | localErrors = count(@error.error)\n  > compileError | compileErrors = count(@compileError.error)\n  > editorError | remoteErrors = count(@editorError.error)\n  ? @remoteErrors + @localErrors + @compileErrors > 0\n  [\"div\" {\"id\" \"errorCard\" \"class\" \"card errorCard\" \"ix\" \"aa\"}\n    ]\n\n* drawRemoteErrors\n  | editorError error\n  [\"pre\" {\"parent\" \"errorCard\" \"id\" error} error]\n\n* drawLocalErrors\n  | error error\n  [\"pre\" {\"parent\" \"errorCard\" \"id\" error} error]\n\n* drawCompileErrors\n  | compileError error\n  [\"pre\" {\"parent\" \"errorCard\" \"id\" error} error]\n\n* drawPerfCard\n  > editorProfile event=\"runtime\" | runtime = maxBy(@editorProfile.time, @editorProfile.run, 0)\n  > editorProfile event=\"remoteWatcher\" | watcher = maxBy(@editorProfile.time, @editorProfile.run, 0)\n  > editorProfile event=\"compile\" | compile = maxBy(@editorProfile.time, @editorProfile.run, 0).toFixed(2)\n  > profile event=\"runtime\" | editor = maxBy(@profile.time, @profile.run, 0)\n  > profile event=\"remoteWatcher\" | editorWatcher = maxBy(@profile.time, @profile.run, 0)\n  totalRun = (@watcher + @runtime).toFixed(2)\n  totalEditor = (@editorWatcher + @editor).toFixed(2)\n  [\"div\" {\"id\" \"perfCard\" \"class\" \"card perfCard\" \"ix\" \"zzzzzzzzzzz\"}\n    [\"h2\" \"Performance\"]\n    [\"p\" {\"style\" \"margin-top:10px\"} \"runtime: \" totalRun]\n    [\"p\" \"compile: \" compile]\n    [\"p\" \"editor: \" totalEditor]\n    ]\n\n* drawTableCard\n  | realViews view:table remote\n  id = \"table|\" + @remote + \"|\" + @table\n  gridId = \"grid\" + @remote + \"|\" + @table\n  gridHeaderId = \"gridHeader\" + @table\n  [\"div\" {\"id\" id \"class\" \"card table-card open\" \"ix\" table}\n    [\"h2\" table]\n    [\"div\" {\"id\" gridId \"class\" \"grid\" \"gid\" gridId}\n    [\"div\" {\"id\" gridHeaderId \"class\" \"grid-header\" \"ix\" \"\" \"hid\" gridHeaderId}]]]\n\n* drawTableCardGridHeaders\n  | realViews view\n  | editor|field view field ix\n  | editor|displayName id:field name\n  gridHeaderId = \"gridHeader\" + @view\n  id = @view + @field + @ix\n  [\"div\" {\"id\" id \"parent\" gridHeaderId \"class\" \"header\" \"ix\" ix \"style\" \"\"}\n   name]\n\n* drawTableCardRows\n  | resultCell view:table row\n  id = \"row\" + @table + @row\n  gridId = \"grid\" + @table\n  ix = @row + 1\n  [\"div\" {\"id\" id \"parent\" gridId \"row\" ix \"ix\" ix \"class\" \"grid-row\"}]\n\n* drawTableCardCells\n  | resultCell view:table row col value\n  id = @table + @row + @col\n  rowId = \"row\" + @table + @row\n  [\"div\" {\"id\" id \"parent\" rowId \"ix\" col} value]\n\n* realViews\n  | tableCardProgram program\n  | editor|programView program view\n  | editor|activeView view remote\n  | !editor|generatedView view\n\n* subs\n  | realViews view remote\n  recipient = \"Editor\"\n  alias = @remote + \"|\" + @view\n  asCells = true\n\n* remote|subscription\n  | editor|activeProgram remote\n  | remoteViewsToTrack recipient view alias asCells\n\n* remote|subscription\n  | subs remote view recipient alias asCells\n\n* editor|injections\n  | tableCardProgram program\n  | stacksToInject stack\n  remote = \"editor|\" + @program\n \n* editor|activeProgram\n  | editor|injections stack:program remote\n\n* editor|activeProgram\n  | tableCardProgram program\n  remote = \"editor|\" + @program\n\n* editor|activeView\n  | editor|activeProgram program remote\n  | editor|programView program view\n\n* editor|activeQuery\n  | editor|activeProgram program remote\n  | editor|programQuery program query\n\n* editor|activeInsertedFact\n  | editor|activeProgram remote program\n  | editor|insertedFact program view row col value\n\n* remote|insertedFact\n  | editor|activeInsertedFact view remote row col value\n\n* remote\n  | editor|activeProgram remote\n\n* remote|view\n  | editor|activeView view remote\n  | editor|view view\n\n* remote|query\n  | editor|activeQuery query remote\n  | editor|query view query ix\n\n* remote|query\n  | remote|view view remote\n  | editor|query view query ix\n\n* remote|field\n  | remote|view view remote\n  | editor|field field view ix\n\n* remote|constantConstraint\n  | remote|query query remote\n  | editor|constantConstraint query field value\n\n* remote|functionConstraint\n  | remote|query query remote\n  | editor|functionConstraint constraint query field code\n\n* remote|functionConstraintInput\n  | remote|functionConstraint constraint remote\n  | editor|functionConstraintInput constraint field variable\n\n* remote|viewConstraint\n  | remote|query query remote\n  | editor|viewConstraint constraint query sourceView isNegated\n\n* remote|viewConstraintBinding\n  | remote|viewConstraint constraint remote\n  | editor|viewConstraintBinding constraint field sourceField\n\n* remote|aggregateConstraint\n  | remote|query query remote\n  | editor|aggregateConstraint constraint query field sourceView code\n\n* remote|aggregateConstraintBinding\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintBinding constraint field sourceField\n\n* remote|aggregateConstraintSolverInput\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintSolverInput constraint field variable\n\n* remote|aggregateConstraintAggregateInput\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintAggregateInput constraint sourceField variable\n\n* remote|isInput\n  | remote|view view remote\n  | editor|isInput view\n\n* remote|isCheck\n  | remote|view view remote\n  | editor|isCheck view\n",
  "Runtime": "",
  "Editor injection": "* hasUI\n  > uiElem | count = count(@uiElem.id)\n  hasUI = @count > 0",
  "Tutorial": "; This is a wireframe version of a textual editor for Eve. Ultimately, \n; this is unlikely to be how people interact with the system, but it \n; gives us an opportunity to work with the language before the real \n; workflow has fully come together and test the language in fun and \n; interesting ways.\n\n; Eve is based on datalog, but you can think of it more as a non-crappy \n; SQL. As such, the operations you have available to you look and feel \n; like relational algebra. As a matter of fact, everything in Eve is \n; just a view over some inputs. Let's see how we define a view:\n\n* user\n  ~ name age\n  + \"Chris\" 27\n  \n; The * denotes a new view. The symbol that follows it is its name. \n; You'll also notice that there's a table card on the right. Based on\n; that card, you can see that the first is defining the headers of \n; the view, the second adds a single row with the name \"Chris\" and the \n; age 27. Let's see how we use that information in another view to \n; calculate when I was born by uncommenting the code below:\n\n;* yearBorn\n;  | user age\n;  born = 2014 - @age\n\n; Here we've defined \"yearBorn\", which selects the age from the \"user\" \n; view and then calculates a new column called \"born\". Everything after\n; an equals sign is a javascript function right, so in order to \n; denote the we want the value of the age column, not some random\n; bit of js, we precede the symbol with an @. This allows you to do\n; the equivalent of formulas in Excel.\n\n; Also like Excel, everything in Eve is live - this is one of the \n; benefits we get from everything being a view. Try adding a new name \n; and age to the user view and see what happens. You'll see that all \n; the views update and now have multiple rows. But right now, our\n; information is in two different tables. Let's see how we can join \n; the yearBorn and user view together:\n\n;* userBorn\n;  | user name age\n;  | yearBorn age born\n  \n; Joins are implicit in Eve, which means columns referenced with the same\n; symbol are joined automatically. To have greater control over this, you \n; can alias fields by doing column:alias like so:\n\n;* userBornAlias\n;  | user name age:a\n;  | yearBorn age:a born:birthYear\n  \n; You can also filter your views by a value using column=value:\n\n;* peopleAged27\n;  | user name age=27\n\n; Only being able to filter by constants would be fairly limiting though, \n; so you can also filter via a javascript function that returns true or \n; false using the ? operator:\n\n;* peopleOlderThan 25\n;  | user name age\n;  ? @age > 25\n\n; So that lets us do the standard relational operations, but we're missing\n; a way to calculate over a set of rows (e.g. to sum something or take\n; the average). For example, let's see how we would calculate the average \n; age of our users:\n\n;* averageAge\n;  > user | age = avg(@user.age)\n  \n; The > denotes that we're doing an aggregation, taking lots of rows and \n; turning them into a single value. We name that value \"age\" in this case \n; and set it equal to a function that takes the average of the age column\n; in the user table. Note that if we had used @age instead of @user.age \n; it would mean the age field in the current view as opposed to the \n; age field in the table we're aggregating over.\n\n; One other thing we added syntax for is UI since it's pretty common in \n; applications. We represent HTML as nested lists denoted by\n; enclosing brackets like so:\n\n;* drawUsers\n;  | user name age\n;  [\"p\" {\"id\" name} name \" is \" age \" years old.\"]\n\n; You'll note at the top of our stack of cards that a UI card has now \n; appeared and that there are lines for each user in the user table. \n; In order to get a line per user, we needed to make each paragraph \n; unique by giving it an id as Eve has set semantics. The second element \n; of a UI list can be a map of attributes. The first is the type of HTML \n; tag and everything else is interpreted as a child. You can nest these \n; lists to your heart's content.\n  \n; And that's more or less it. The entire language is just stringing these\n; views together in interesting ways. Checkout the various examples to get\n; a feel for how these things start to come together and see some more\n; advanced notions like views that have multiple contributors (which\n; allows you to do recursion).\n  ",
  "Incrementer": ";*****************************************************\n; An incrementer button\n;*****************************************************\n\n* increment button\n  > event label=\"increment\" | clicks = count(@event.eid)\n  [\"button\" {\"click\" \"increment\"}\n    \"I've been clicked \" clicks \" times.\"]",
  "Net worth": ";;***********************************************\n;; Net worth example\n;;***********************************************\n\n* netWorth\n  year = 2014\n  rate = 0.02\n  principle = 100000\n \n* netWorthRecurse\n  | netWorth year:prev principle:pr rate\n  year = @prev + 1\n  ? @year < 2030\n  principle = (@pr * (1 + @rate)).toFixed(2)\n\n* netWorth\n  | netWorthRecurse year principle rate",<commit_msg>Updates editor error cards to use new stack and line fields<commit_after>var examples = {
  "My Stack": "",
  "Editor": "* tableCardProgram\n  ~ run program\n  \n* stacksToInject\n  ~ stack\n  + \"Editor injection\"\n  \n* editor|hasUI\n  ~ count hasUI\n\n* remoteViewsToTrack\n  ~ recipient view alias asCells\n  + \"Editor\" \"error\" \"editorError\" \"\"\n  + \"Editor\" \"profile\" \"editorProfile\" \"\"\n  + \"Editor\" \"hasUI\" \"editor|hasUI\" \"\"\n\n* drawControlCard\n  | tableCardProgram program\n  [\"div\" {\"id\" \"controlCard\" \"class\" \"card controlCard open\" \"ix\" \"a\"}\n    [\"h1\" program]]\n\n* drawUICard\n  | editor|hasUI hasUI\n  ? @hasUI\n  [\"div\" {\"id\" \"uiCard\" \"class\" \"card uiCard open\" \"ix\" \"aaa\"}\n    [\"header\"\n      [\"h2\" \"UI\"]]]\n\n* drawErrorCard\n  > error | localErrors = count(@error.error)\n  > compileError | compileErrors = count(@compileError.error)\n  > editorError | remoteErrors = count(@editorError.error)\n  ? @remoteErrors + @localErrors + @compileErrors > 0\n  [\"div\" {\"id\" \"errorCard\" \"class\" \"card errorCard\" \"ix\" \"aa\"}\n    ]\n\n* drawRemoteErrors\n  | editorError error line stack\n  [\"div\" {\"parent\" \"errorCard\" \"id\" error}\n    [\"h3\" \"[remote] \" error \" Line: \" line]\n    [\"pre\" stack]\n  ]\n\n* drawLocalErrors\n  | error error line stack\n  [\"div\" {\"parent\" \"errorCard\" \"id\" error}\n    [\"h3\" \"[local] \" error \" -- Line: \" line]\n    [\"pre\" stack]\n  ]\n\n* drawCompileErrors\n  | compileError error line stack\n  [\"div\" {\"parent\" \"errorCard\" \"id\" error}\n    [\"h3\" \"[compile] \" error \" -- Line: \" line]\n    [\"pre\" stack]\n  ]\n  \n* drawPerfCard\n  > editorProfile event=\"runtime\" | runtime = maxBy(@editorProfile.time, @editorProfile.run, 0)\n  > editorProfile event=\"remoteWatcher\" | watcher = maxBy(@editorProfile.time, @editorProfile.run, 0)\n  > editorProfile event=\"compile\" | compile = maxBy(@editorProfile.time, @editorProfile.run, 0).toFixed(2)\n  > profile event=\"runtime\" | editor = maxBy(@profile.time, @profile.run, 0)\n  > profile event=\"remoteWatcher\" | editorWatcher = maxBy(@profile.time, @profile.run, 0)\n  totalRun = (@watcher + @runtime).toFixed(2)\n  totalEditor = (@editorWatcher + @editor).toFixed(2)\n  [\"div\" {\"id\" \"perfCard\" \"class\" \"card perfCard\" \"ix\" \"zzzzzzzzzzz\"}\n    [\"h2\" \"Performance\"]\n    [\"p\" {\"style\" \"margin-top:10px\"} \"runtime: \" totalRun]\n    [\"p\" \"compile: \" compile]\n    [\"p\" \"editor: \" totalEditor]\n    ]\n\n* drawTableCard\n  | realViews view:table remote\n  id = \"table|\" + @remote + \"|\" + @table\n  gridId = \"grid\" + @remote + \"|\" + @table\n  gridHeaderId = \"gridHeader\" + @table\n  [\"div\" {\"id\" id \"class\" \"card table-card open\" \"ix\" table}\n    [\"h2\" table]\n    [\"div\" {\"id\" gridId \"class\" \"grid\" \"gid\" gridId}\n    [\"div\" {\"id\" gridHeaderId \"class\" \"grid-header\" \"ix\" \"\" \"hid\" gridHeaderId}]]]\n\n* drawTableCardGridHeaders\n  | realViews view\n  | editor|field view field ix\n  | editor|displayName id:field name\n  gridHeaderId = \"gridHeader\" + @view\n  id = @view + @field + @ix\n  [\"div\" {\"id\" id \"parent\" gridHeaderId \"class\" \"header\" \"ix\" ix \"style\" \"\"}\n   name]\n\n* drawTableCardRows\n  | resultCell view:table row\n  id = \"row\" + @table + @row\n  gridId = \"grid\" + @table\n  ix = @row + 1\n  [\"div\" {\"id\" id \"parent\" gridId \"row\" ix \"ix\" ix \"class\" \"grid-row\"}]\n\n* drawTableCardCells\n  | resultCell view:table row col value\n  id = @table + @row + @col\n  rowId = \"row\" + @table + @row\n  [\"div\" {\"id\" id \"parent\" rowId \"ix\" col} value]\n\n* realViews\n  | tableCardProgram program\n  | editor|programView program view\n  | editor|activeView view remote\n  | !editor|generatedView view\n\n* subs\n  | realViews view remote\n  recipient = \"Editor\"\n  alias = @remote + \"|\" + @view\n  asCells = true\n\n* remote|subscription\n  | editor|activeProgram remote\n  | remoteViewsToTrack recipient view alias asCells\n\n* remote|subscription\n  | subs remote view recipient alias asCells\n\n* editor|injections\n  | tableCardProgram program\n  | stacksToInject stack\n  remote = \"editor|\" + @program\n \n* editor|activeProgram\n  | editor|injections stack:program remote\n\n* editor|activeProgram\n  | tableCardProgram program\n  remote = \"editor|\" + @program\n\n* editor|activeView\n  | editor|activeProgram program remote\n  | editor|programView program view\n\n* editor|activeQuery\n  | editor|activeProgram program remote\n  | editor|programQuery program query\n\n* editor|activeInsertedFact\n  | editor|activeProgram remote program\n  | editor|insertedFact program view row col value\n\n* remote|insertedFact\n  | editor|activeInsertedFact view remote row col value\n\n* remote\n  | editor|activeProgram remote\n\n* remote|view\n  | editor|activeView view remote\n  | editor|view view\n\n* remote|query\n  | editor|activeQuery query remote\n  | editor|query view query ix\n\n* remote|query\n  | remote|view view remote\n  | editor|query view query ix\n\n* remote|field\n  | remote|view view remote\n  | editor|field field view ix\n\n* remote|constantConstraint\n  | remote|query query remote\n  | editor|constantConstraint query field value\n\n* remote|functionConstraint\n  | remote|query query remote\n  | editor|functionConstraint constraint query field code\n\n* remote|functionConstraintInput\n  | remote|functionConstraint constraint remote\n  | editor|functionConstraintInput constraint field variable\n\n* remote|viewConstraint\n  | remote|query query remote\n  | editor|viewConstraint constraint query sourceView isNegated\n\n* remote|viewConstraintBinding\n  | remote|viewConstraint constraint remote\n  | editor|viewConstraintBinding constraint field sourceField\n\n* remote|aggregateConstraint\n  | remote|query query remote\n  | editor|aggregateConstraint constraint query field sourceView code\n\n* remote|aggregateConstraintBinding\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintBinding constraint field sourceField\n\n* remote|aggregateConstraintSolverInput\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintSolverInput constraint field variable\n\n* remote|aggregateConstraintAggregateInput\n  | remote|aggregateConstraint constraint remote\n  | editor|aggregateConstraintAggregateInput constraint sourceField variable\n\n* remote|isInput\n  | remote|view view remote\n  | editor|isInput view\n\n* remote|isCheck\n  | remote|view view remote\n  | editor|isCheck view\n",
  "Runtime": "",
  "Editor injection": "* hasUI\n  > uiElem | count = count(@uiElem.id)\n  hasUI = @count > 0",
  "Tutorial": "; This is a wireframe version of a textual editor for Eve. Ultimately, \n; this is unlikely to be how people interact with the system, but it \n; gives us an opportunity to work with the language before the real \n; workflow has fully come together and test the language in fun and \n; interesting ways.\n\n; Eve is based on datalog, but you can think of it more as a non-crappy \n; SQL. As such, the operations you have available to you look and feel \n; like relational algebra. As a matter of fact, everything in Eve is \n; just a view over some inputs. Let's see how we define a view:\n\n* user\n  ~ name age\n  + \"Chris\" 27\n  \n; The * denotes a new view. The symbol that follows it is its name. \n; You'll also notice that there's a table card on the right. Based on\n; that card, you can see that the first is defining the headers of \n; the view, the second adds a single row with the name \"Chris\" and the \n; age 27. Let's see how we use that information in another view to \n; calculate when I was born by uncommenting the code below:\n\n;* yearBorn\n;  | user age\n;  born = 2014 - @age\n\n; Here we've defined \"yearBorn\", which selects the age from the \"user\" \n; view and then calculates a new column called \"born\". Everything after\n; an equals sign is a javascript function right, so in order to \n; denote the we want the value of the age column, not some random\n; bit of js, we precede the symbol with an @. This allows you to do\n; the equivalent of formulas in Excel.\n\n; Also like Excel, everything in Eve is live - this is one of the \n; benefits we get from everything being a view. Try adding a new name \n; and age to the user view and see what happens. You'll see that all \n; the views update and now have multiple rows. But right now, our\n; information is in two different tables. Let's see how we can join \n; the yearBorn and user view together:\n\n;* userBorn\n;  | user name age\n;  | yearBorn age born\n  \n; Joins are implicit in Eve, which means columns referenced with the same\n; symbol are joined automatically. To have greater control over this, you \n; can alias fields by doing column:alias like so:\n\n;* userBornAlias\n;  | user name age:a\n;  | yearBorn age:a born:birthYear\n  \n; You can also filter your views by a value using column=value:\n\n;* peopleAged27\n;  | user name age=27\n\n; Only being able to filter by constants would be fairly limiting though, \n; so you can also filter via a javascript function that returns true or \n; false using the ? operator:\n\n;* peopleOlderThan 25\n;  | user name age\n;  ? @age > 25\n\n; So that lets us do the standard relational operations, but we're missing\n; a way to calculate over a set of rows (e.g. to sum something or take\n; the average). For example, let's see how we would calculate the average \n; age of our users:\n\n;* averageAge\n;  > user | age = avg(@user.age)\n  \n; The > denotes that we're doing an aggregation, taking lots of rows and \n; turning them into a single value. We name that value \"age\" in this case \n; and set it equal to a function that takes the average of the age column\n; in the user table. Note that if we had used @age instead of @user.age \n; it would mean the age field in the current view as opposed to the \n; age field in the table we're aggregating over.\n\n; One other thing we added syntax for is UI since it's pretty common in \n; applications. We represent HTML as nested lists denoted by\n; enclosing brackets like so:\n\n;* drawUsers\n;  | user name age\n;  [\"p\" {\"id\" name} name \" is \" age \" years old.\"]\n\n; You'll note at the top of our stack of cards that a UI card has now \n; appeared and that there are lines for each user in the user table. \n; In order to get a line per user, we needed to make each paragraph \n; unique by giving it an id as Eve has set semantics. The second element \n; of a UI list can be a map of attributes. The first is the type of HTML \n; tag and everything else is interpreted as a child. You can nest these \n; lists to your heart's content.\n  \n; And that's more or less it. The entire language is just stringing these\n; views together in interesting ways. Checkout the various examples to get\n; a feel for how these things start to come together and see some more\n; advanced notions like views that have multiple contributors (which\n; allows you to do recursion).\n  ",
  "Incrementer": ";*****************************************************\n; An incrementer button\n;*****************************************************\n\n* increment button\n  > event label=\"increment\" | clicks = count(@event.eid)\n  [\"button\" {\"click\" \"increment\"}\n    \"I've been clicked \" clicks \" times.\"]",
  "Net worth": ";;***********************************************\n;; Net worth example\n;;***********************************************\n\n* netWorth\n  year = 2014\n  rate = 0.02\n  principle = 100000\n \n* netWorthRecurse\n  | netWorth year:prev principle:pr rate\n  year = @prev + 1\n  ? @year < 2030\n  principle = (@pr * (1 + @rate)).toFixed(2)\n\n* netWorth\n  | netWorthRecurse year principle rate",
{'fraction_non_alphanumeric': 0.16089499978649816, 'fraction_numerical': 0.0046543404927622874, 'mean_word_length': 3.7805674627474994, 'pattern_counts': {'":': 14, '<': 5, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1626350', 'n_tokens_mistral': 7350, 'n_tokens_neox': 7106, 'n_words': 2695}