├── .gitignore ├── runserver.sh ├── data └── read-along │ ├── routes.js │ ├── style.css │ ├── index.html │ ├── views.js │ ├── models.js │ └── underscore.js ├── reports ├── Ps.117 ├── Ps.1 ├── John.2 ├── John.1 ├── Ps.118 ├── Gen.2 ├── Gen.3 ├── Col.1 ├── John.3 └── Gen.1 ├── README.md ├── generate-reports.py ├── bookinfo.py └── align.py /.gitignore: -------------------------------------------------------------------------------- 1 | /long-audio-aligner 2 | /data/*.mp3 3 | /data/*.wav 4 | /data/*.txt 5 | /data/*.html 6 | /data/*.json 7 | *.pyc 8 | *.komodoproject 9 | -------------------------------------------------------------------------------- /runserver.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Open http://127.0.0.1:8000/read-along/ in your browser" 4 | 5 | cd data 6 | python -m SimpleHTTPServer 8000 7 | 8 | -------------------------------------------------------------------------------- /data/read-along/routes.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | var AppRouter = Backbone.Router.extend({ 4 | routes: { 5 | ":bookCode.:chapterNumber": "viewChapter" 6 | }, 7 | viewChapter: function(bookCode, chapterNumber){ 8 | chapterNumber = parseInt(chapterNumber, 10); 9 | 10 | query_view.selectBook(bookCode); 11 | query_view.selectChapter(chapterNumber); 12 | 13 | var bookObj = _(esv_bible.select(function(bookObj){ return bookObj.get('osis') == bookCode; })).first(); 14 | var chapter = new Chapter({ 15 | book: bookObj, 16 | number: chapterNumber 17 | }); 18 | 19 | chapter_view.model = chapter; 20 | chapter_view.render(); 21 | } 22 | }); 23 | var app_router = new AppRouter(); 24 | 25 | document.addEventListener('DOMContentLoaded', function(){ 26 | Backbone.history.start(); 27 | }, true); 28 | 29 | 30 | -------------------------------------------------------------------------------- /reports/Ps.117: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 28 7 | Words found by aligner: 29 8 | Number of words: 1 9 | All words in the text are reported to be discovered in audio 10 | 0.3s Praise +++ 11 | 0.6s ------- 12 | 0.1s the + 13 | 0.3s LORD +++ 14 | 0.1s all + 15 | 0.7s nations +++++++ 16 | 0.6s Extol +++++++ 17 | 0.4s him ++++ 18 | 0.4s all ++++ 19 | 0.6s peoples +++++++ 20 | 0.4s For +++++ 21 | 0.4s great +++++ 22 | 0.2s is ++ 23 | 0.1s his ++ 24 | 0.7s steadfast +++++++ 25 | 0.3s love +++ 26 | 0.4s toward ++++ 27 | 0.2s us +++ 28 | 0.2s and ++ 29 | 0.1s the + 30 | 0.7s faithfulness +++++++ 31 | 0.1s of + 32 | 0.1s the + 33 | 0.5s LORD +++++ 34 | 0.7s endures +++++++ 35 | 0.6s forever ++++++ 36 | 0.4s Praise +++++ 37 | 0.1s the ++ 38 | 0.4s LORD +++++ 39 | Words left off: 0 40 | -------------------------------------------------------------------------------- /data/read-along/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: sans-serif; 3 | } 4 | 5 | 6 | #notification_view { 7 | position: fixed; 8 | left:30%; 9 | right:30%; 10 | top:0; 11 | display:block; 12 | min-height:25px; 13 | line-height:25px; 14 | font-size:15px; 15 | margin:0; 16 | padding:0; 17 | 18 | text-align:center; 19 | 20 | background: rgba(230,230,230,0.90); 21 | border: solid 1px gray; 22 | border-top: none; 23 | 24 | -webkit-border-bottom-right-radius: 10px; 25 | -webkit-border-bottom-left-radius: 10px; 26 | -moz-border-radius-bottomright: 10px; 27 | -moz-border-radius-bottomleft: 10px; 28 | border-bottom-right-radius: 10px; 29 | border-bottom-left-radius: 10px; 30 | } 31 | #notification_view .notification { 32 | list-style: none; 33 | display: block; 34 | cursor: pointer; 35 | } 36 | #notification_view .notification:focus, 37 | #notification_view .notification:hover { 38 | text-decoration: underline; 39 | } 40 | #notification_view .notification.error { 41 | color:red; 42 | /*background: #FFCCCC;*/ 43 | } 44 | 45 | #notification_view[hidden] { 46 | display: none; 47 | } 48 | 49 | 50 | body > footer { 51 | margin-top:2em; 52 | padding-top:1em; 53 | border-top:solid 1px gray; 54 | font-size:smaller; 55 | } -------------------------------------------------------------------------------- /data/read-along/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ESV Read Along 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 |

ESV Read Along

16 | 17 |
18 | 28 | 29 | 30 |
31 | 40 | 41 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ESV Text/Audio Aligner 2 | ====================== 3 | 4 | Pulls down the ESV text and audio from the ESV API, then aligns the text and 5 | audio chapter-by-chapter by means of [CMU Sphinx](http://cmusphinx.sourceforge.net/) 6 | and generates `{book}.{chapter}.timings.json` timing files in the `data/` 7 | directory (see [output for John 3](https://github.com/westonruter/esv-text-audio-aligner/blob/master/data/John.3.timings.json)). 8 | The audio and text for each chapter is also saved in this directory. 9 | Previously-aligned chapters are skipped unless `--force`d. There is an 10 | ongoing [discussion](http://sourceforge.net/projects/cmusphinx/forums/forum/382337/topic/4503550) 11 | on the CMU Sphinx forums on the quality of the alignment data it provides. 12 |
13 | 14 | __Author__: (@westonruter) 15 | __GitHub__: https://github.com/westonruter/esv-text-audio-aligner 16 | __Dependencies__: Python 2.7, java, ant, [sox](http://sox.sourceforge.net/), svn 17 | 18 | The ESV Text and MP3 data downloaded by this script is subject to [copyright](http://www.crossway.org/rights-permissions/esv/): 19 | 20 | > The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, a 21 | > publishing ministry of Good News Publishers. All rights reserved. 22 | 23 | ESV API usage terms (see [full conditions](http://www.esvapi.org/#conditions)): 24 | 25 | > You can access the ESV text using the key "IP" (without the quotes). This 26 | > key limits you to 5,000 queries per day from a single IP address. You are 27 | > bound by the below conditions of use, including the non-commercial 28 | > aspects. 29 | 30 | Background 31 | ---------- 32 | 33 | This project was birthed out of a desire to realize the read-along app, where 34 | the currently-spoken word in the audio is higlighted in the text on the screen. 35 | I made an [HTML5 Audio Read-Along prototype](https://github.com/westonruter/html5-audio-read-along#readme) 36 | (includes writeup) featuring a passage from Luke 2 of the ESV, but the actual audio timing 37 | data for the Luke 2 sample I had to obtain manually (read: painstakingly). This 38 | project aims to generate the audio word timings automatically so that the entire 39 | Bible can be used in a read-along app. 40 | 41 | Usage 42 | ----- 43 | 44 | $ python align.py [-f|--force] [osisBook [[chapter], [chapter]...]]... 45 | 46 | Examples 47 | -------- 48 | 49 | Align Genesis 1: 50 | 51 | $ python align.py Gen 1 52 | 53 | Align John 3, overridding any existing timings: 54 | 55 | $ python align.py -f John 3 56 | 57 | Align Genesis 1-3, Psalm 1, and all of Colossians: 58 | 59 | $ python align.py Gen 1 2 3 Ps 1 Col 60 | 61 | License 62 | ------- 63 | Dual licensed under the MIT or GPL Version 2 licenses. 64 | MIT License: http://creativecommons.org/licenses/MIT/ 65 | GPL 2.0 license: http://creativecommons.org/licenses/GPL/2.0/ 66 | -------------------------------------------------------------------------------- /generate-reports.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Report generator to help provide feedback to the CMU Sphinx project. 4 | Usage: generate-reports.py [osisBook chapter[...]]... 5 | """ 6 | 7 | import json 8 | import codecs 9 | import sys 10 | import re 11 | import math 12 | import bookinfo 13 | import os 14 | 15 | # Get args 16 | books = bookinfo.get_book_subset(sys.argv[1:]) 17 | 18 | for bookinfo in books: 19 | for chapter in bookinfo.chapters: 20 | # Get timings 21 | timings_file = "data/%s.%d.timings.json" % (bookinfo.osis, chapter) 22 | if not os.path.exists(timings_file): 23 | continue 24 | with codecs.open(timings_file, encoding='utf-8') as f: 25 | timings = json.loads(f.read()).get('words') 26 | 27 | # Get the original 28 | text_file = "data/%s.%d.txt" % (bookinfo.osis, chapter) 29 | if not os.path.exists(text_file): 30 | continue 31 | with codecs.open(text_file, encoding='utf-8') as f: 32 | original_words = map(lambda s: re.sub(r'^\W+|\W+$', '', s), f.read().strip().split()) 33 | assert(len(original_words) != 0) 34 | 35 | print '%s.%d' % (bookinfo.osis, chapter) 36 | 37 | freport = codecs.open('reports/%s.%d' % (bookinfo.osis, chapter), mode='w', encoding='utf-8') 38 | 39 | freport.write("Any data appearing in the ESV text column herein is copyrighted:\n") 40 | freport.write("The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles,\n") 41 | freport.write("a publishing ministry of Good News Publishers. All rights reserved.\n") 42 | freport.write("\n\n") 43 | 44 | freport.write("Words in source text: %d\n" % len(original_words)) 45 | freport.write("Words found by aligner: %d\n" % len(timings)) 46 | freport.write("Number of words: %d\n" % len(filter(lambda t: t['word'] is None, timings))) 47 | 48 | missing_original_words = list(original_words) 49 | for timing in timings: 50 | if len(missing_original_words) == 0: 51 | assert(timing['word'] is None) 52 | elif missing_original_words[0] == timing['word']: 53 | missing_original_words.pop(0) 54 | 55 | if len(missing_original_words): 56 | freport.write("Number of words that were left off: %d (%.1f%%)\n" % ( 57 | len(missing_original_words), 58 | float(len(missing_original_words))/len(original_words)*100 59 | )) 60 | else: 61 | freport.write("All words in the text are reported to be discovered in audio\n") 62 | word_max_length = max([len(word) for word in original_words]) 63 | pad_format = "%% -%ds" % (word_max_length+1) # so meta 64 | 65 | timings_queue = list(timings) 66 | for timing in timings_queue: 67 | freport.write('% 2.01fs ' % (timing['end'] - timing['start'])) 68 | word = '' 69 | if timing['word'] is None: 70 | word = '' 71 | else: 72 | word = timing['word'] 73 | freport.write(pad_format % word) 74 | freport.write(' ') 75 | 76 | for i in range(0, int((timing['end'] - timing['start'])*10)+1): 77 | if timing['word'] is None: 78 | freport.write('-') 79 | else: 80 | freport.write('+') 81 | freport.write("\n") 82 | 83 | freport.write("Words left off: %d\n" % len(missing_original_words)) 84 | 85 | freport.close() 86 | -------------------------------------------------------------------------------- /reports/Ps.1: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 124 7 | Words found by aligner: 126 8 | Number of words: 2 9 | All words in the text are reported to be discovered in audio 10 | 0.3s Blessed ++++ 11 | 0.2s is +++ 12 | 0.1s the + 13 | 0.4s man ++++ 14 | 0.1s who ++ 15 | 0.4s walks ++++ 16 | 0.3s not +++ 17 | 0.1s in + 18 | 0.1s the + 19 | 0.5s counsel ++++++ 20 | 0.1s of + 21 | 0.1s the ++ 22 | 0.4s wicked +++++ 23 | 0.2s nor ++ 24 | 0.5s stands +++++ 25 | 0.1s in + 26 | 0.1s the + 27 | 0.1s way ++ 28 | 0.1s of ++ 29 | 0.5s sinners ++++++ 30 | 0.6s nor ++++++ 31 | 0.4s sits ++++ 32 | 0.1s in + 33 | 0.1s the + 34 | 0.3s seat ++++ 35 | 0.1s of ++ 36 | 0.7s scoffers +++++++ 37 | 0.2s but +++ 38 | 0.2s his +++ 39 | 0.5s delight +++++ 40 | 0.1s is ++ 41 | 0.1s in + 42 | 0.1s the + 43 | 0.4s law ++++ 44 | 0.1s of + 45 | 0.1s the ++ 46 | 0.5s LORD +++++ 47 | 0.2s and ++ 48 | 0.2s on +++ 49 | 0.3s his ++++ 50 | 0.3s law ++++ 51 | 0.2s he ++ 52 | 0.6s meditates +++++++ 53 | 0.3s day +++ 54 | 0.2s and ++ 55 | 0.4s night ++++ 56 | 0.6s ------- 57 | 0.1s He + 58 | 0.1s is ++ 59 | 0.2s like +++ 60 | 0.1s a + 61 | 0.5s tree +++++ 62 | 0.5s planted +++++ 63 | 0.2s by ++ 64 | 0.6s streams ++++++ 65 | 0.1s of ++ 66 | 0.4s water +++++ 67 | 0.2s that ++ 68 | 0.5s yields ++++++ 69 | 0.1s its ++ 70 | 0.5s fruit +++++ 71 | 0.1s in + 72 | 0.2s its ++ 73 | 0.6s season ++++++ 74 | 0.4s and ++++ 75 | 0.2s its ++ 76 | 0.3s leaf ++++ 77 | 0.3s does +++ 78 | 0.2s not +++ 79 | 0.4s wither ++++ 80 | 0.8s -------- 81 | 0.2s In ++ 82 | 0.2s all ++ 83 | 0.1s that ++ 84 | 0.1s he ++ 85 | 0.4s does +++++ 86 | 0.1s he ++ 87 | 0.8s prospers +++++++++ 88 | 1.1s The +++++++++++ 89 | 0.4s wicked ++++ 90 | 0.1s are + 91 | 0.2s not +++ 92 | 0.4s so ++++ 93 | 0.1s but ++ 94 | 0.1s are + 95 | 0.3s like +++ 96 | 0.4s chaff +++++ 97 | 0.2s that ++ 98 | 0.1s the ++ 99 | 0.4s wind ++++ 100 | 0.4s drives +++++ 101 | 0.5s away ++++++ 102 | 0.6s Therefore +++++++ 103 | 0.1s the ++ 104 | 0.3s wicked ++++ 105 | 0.1s will ++ 106 | 0.2s not +++ 107 | 0.5s stand +++++ 108 | 0.1s in + 109 | 0.1s the + 110 | 0.5s judgment +++++ 111 | 0.2s nor +++ 112 | 0.4s sinners +++++ 113 | 0.1s in + 114 | 0.1s the ++ 115 | 0.7s congregation ++++++++ 116 | 0.1s of + 117 | 0.1s the ++ 118 | 0.5s righteous ++++++ 119 | 0.6s for +++++++ 120 | 0.1s the ++ 121 | 0.3s LORD ++++ 122 | 0.2s knows +++ 123 | 0.1s the ++ 124 | 0.2s way ++ 125 | 0.1s of ++ 126 | 0.1s the ++ 127 | 0.5s righteous ++++++ 128 | 0.2s but ++ 129 | 0.1s the ++ 130 | 0.2s way +++ 131 | 0.1s of ++ 132 | 0.1s the ++ 133 | 0.3s wicked ++++ 134 | 0.2s will ++ 135 | 0.6s perish +++++++ 136 | Words left off: 0 137 | -------------------------------------------------------------------------------- /data/read-along/views.js: -------------------------------------------------------------------------------- 1 | var NotificationView = Backbone.View.extend({ 2 | collection: null, 3 | initialize: function(){ 4 | //this.notifications.create({message:'fp'}) 5 | var view = this; 6 | 7 | this.collection.bind("add", function(notification){ 8 | view.el.prop('hidden', false); 9 | var item = _.template( $("#notification_template").html(), { 10 | cid: notification.cid, 11 | message: notification.get('message'), 12 | type: notification.get('type') 13 | }); 14 | view.el.prepend(item); 15 | }); 16 | 17 | this.collection.bind("remove", function(notification){ 18 | view.el.find('[data-cid="' + notification.cid + '"]').remove(); 19 | if(this.isEmpty()){ 20 | view.el.prop('hidden', true); 21 | } 22 | }); 23 | 24 | this.render(); 25 | }, 26 | render: function(){ 27 | // This needs to list out all from the Notification collection 28 | }, 29 | events: { 30 | "click .notification": "clickItem" 31 | }, 32 | clickItem: function(e){ 33 | var notification = this.collection.getByCid($(e.target).data('cid')); 34 | this.collection.remove(notification); 35 | } 36 | }); 37 | var notification_view = new NotificationView({ 38 | el: $('#notification_view'), 39 | collection: notifications 40 | }); 41 | 42 | 43 | var ChapterView = Backbone.View.extend({ 44 | model: Chapter, // ??? 45 | 46 | initialize: function(){ 47 | 48 | }, 49 | render: function(){ 50 | var vars = { 51 | title: this.model.get('book').get('name') + ' ' + this.model.get('number') 52 | }; 53 | var template = _.template( $("#chapter_template").html(), vars ); 54 | this.el.html( template ); 55 | var view = this; 56 | this.model.loadData(function(responseData){ 57 | if(responseData.errors.length){ 58 | _(responseData.errors).each(function(error){ 59 | notifications.add({message: error.toString(), type:"error"}); 60 | }); 61 | view.$('.text').html(''); 62 | } 63 | else { 64 | view.$('.text').html(responseData.text); 65 | } 66 | }); 67 | } 68 | }); 69 | 70 | var chapter_view = new ChapterView({ 71 | el: $("#chapter_view") 72 | }); 73 | 74 | var QueryView = Backbone.View.extend({ 75 | initialize: function(){ 76 | this.render() 77 | }, 78 | render: function(){ 79 | var vars = { 80 | books: esv_bible.map(function(book){ return { 81 | text: book.get('name'), 82 | value: book.get('osis') 83 | }}) 84 | }; 85 | var template = _.template( $("#query_template").html(), vars ); 86 | this.el.html( template ); 87 | this.$('#book')[0].selectedIndex = -1; 88 | this.$('#chapter').val(''); 89 | }, 90 | 91 | 92 | selectBook: function(osisBook){ 93 | if( osisBook == this.$('#book').val() ){ 94 | return; 95 | } 96 | this.$('#book').val(osisBook).trigger('change'); 97 | }, 98 | selectChapter: function(chapterNumber){ 99 | if( chapterNumber == this.$('#chapter').val() ){ 100 | return; 101 | } 102 | this.$('#chapter').val(chapterNumber); 103 | }, 104 | 105 | events: { 106 | "submit form" : "onSubmitForm", 107 | "change #book" : "onChangeBook" 108 | }, 109 | 110 | onSubmitForm: function(e){ 111 | e.preventDefault(); 112 | var book = this.$('#book').val(); 113 | var chapter = this.$('#chapter').val(); 114 | if( !book || !chapter ){ 115 | alert("Oops! Your browser shouldn't have let you submit the form. You're missing values."); 116 | return; 117 | } 118 | app_router.navigate(book + '.' + chapter, true); 119 | }, 120 | 121 | onChangeBook: function(e){ 122 | var book = this.$('#book').val(); 123 | var bookObj = _.first(esv_bible.select(function(bookObj){ return book == bookObj.get('osis'); })); 124 | var $chapter = this.$('#chapter'); 125 | $chapter.attr('max', bookObj.get('chapters')); 126 | $chapter.val( Math.min($chapter.val(), bookObj.get('chapters')) ); 127 | } 128 | 129 | }); 130 | 131 | var query_view = new QueryView({ 132 | el: $("#query_view") 133 | }); 134 | -------------------------------------------------------------------------------- /bookinfo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | Basic metadata for books of the Bible 4 | """ 5 | 6 | class BookInfo: 7 | def __init__(self, chapters, osis, name): 8 | self.chapters = chapters 9 | self.osis = osis 10 | self.name = name 11 | 12 | # @todo This might work better as an OrderedDict, keyed by osisBook 13 | books = ( 14 | BookInfo(range(1,50+1), 'Gen', 'Genesis'), 15 | BookInfo(range(1,40+1), 'Exod', 'Exodus'), 16 | BookInfo(range(1,27+1), 'Lev', 'Leviticus'), 17 | BookInfo(range(1,36+1), 'Num', 'Numbers'), 18 | BookInfo(range(1,34+1), 'Deut', 'Deuteronomy'), 19 | BookInfo(range(1,24+1), 'Josh', 'Joshua'), 20 | BookInfo(range(1,21+1), 'Judg', 'Judges'), 21 | BookInfo(range(1,4+1), 'Ruth', 'Ruth'), 22 | BookInfo(range(1,31+1), '1Sam', '1 Samuel'), 23 | BookInfo(range(1,24+1), '2Sam', '2 Samuel'), 24 | BookInfo(range(1,22+1), '1Kgs', '1 Kings'), 25 | BookInfo(range(1,25+1), '2Kgs', '2 Kings'), 26 | BookInfo(range(1,29+1), '1Chr', '1 Chronicles'), 27 | BookInfo(range(1,36+1), '2Chr', '2 Chronicles'), 28 | BookInfo(range(1,10+1), 'Ezra', 'Ezra'), 29 | BookInfo(range(1,13+1), 'Neh', 'Nehemiah'), 30 | BookInfo(range(1,10+1), 'Esth', 'Esther'), 31 | BookInfo(range(1,42+1), 'Job', 'Job'), 32 | BookInfo(range(1,150+1), 'Ps', 'Psalms'), 33 | BookInfo(range(1,31+1), 'Prov', 'Proverbs'), 34 | BookInfo(range(1,12+1), 'Eccl', 'Ecclesiastes'), 35 | BookInfo(range(1,8+1), 'Song', 'Song of Solomon'), 36 | BookInfo(range(1,66+1), 'Isa', 'Isaiah'), 37 | BookInfo(range(1,52+1), 'Jer', 'Jeremiah'), 38 | BookInfo(range(1,5+1), 'Lam', 'Lamentations'), 39 | BookInfo(range(1,48+1), 'Ezek', 'Ezekiel'), 40 | BookInfo(range(1,12+1), 'Dan', 'Daniel'), 41 | BookInfo(range(1,14+1), 'Hos', 'Hosea'), 42 | BookInfo(range(1,3+1), 'Joel', 'Joel'), 43 | BookInfo(range(1,9+1), 'Amos', 'Amos'), 44 | BookInfo(range(1,1+1), 'Obad', 'Obadiah'), 45 | BookInfo(range(1,4+1), 'Jonah', 'Jonah'), 46 | BookInfo(range(1,7+1), 'Mic', 'Micah'), 47 | BookInfo(range(1,3+1), 'Nah', 'Nahum'), 48 | BookInfo(range(1,3+1), 'Hab', 'Habakkuk'), 49 | BookInfo(range(1,3+1), 'Zeph', 'Zephaniah'), 50 | BookInfo(range(1,2+1), 'Hag', 'Haggai'), 51 | BookInfo(range(1,14+1), 'Zech', 'Zechariah'), 52 | BookInfo(range(1,4+1), 'Mal', 'Malachi'), 53 | BookInfo(range(1,28+1), 'Matt', 'Matthew'), 54 | BookInfo(range(1,16+1), 'Mark', 'Mark'), 55 | BookInfo(range(1,24+1), 'Luke', 'Luke'), 56 | BookInfo(range(1,21+1), 'John', 'John'), 57 | BookInfo(range(1,28+1), 'Acts', 'Acts'), 58 | BookInfo(range(1,16+1), 'Rom', 'Romans'), 59 | BookInfo(range(1,16+1), '1Cor', '1 Corinthians'), 60 | BookInfo(range(1,13+1), '2Cor', '2 Corinthians'), 61 | BookInfo(range(1,6+1), 'Gal', 'Galatians'), 62 | BookInfo(range(1,6+1), 'Eph', 'Ephesians'), 63 | BookInfo(range(1,4+1), 'Phil', 'Philippians'), 64 | BookInfo(range(1,4+1), 'Col', 'Colossians'), 65 | BookInfo(range(1,5+1), '1Thess', '1 Thessalonians'), 66 | BookInfo(range(1,3+1), '2Thess', '2 Thessalonians'), 67 | BookInfo(range(1,6+1), '1Tim', '1 Timothy'), 68 | BookInfo(range(1,4+1), '2Tim', '2 Timothy'), 69 | BookInfo(range(1,3+1), 'Titus', 'Titus'), 70 | BookInfo(range(1,1+1), 'Phlm', 'Philemon'), 71 | BookInfo(range(1,13+1), 'Heb', 'Hebrews'), 72 | BookInfo(range(1,5+1), 'Jas', 'James'), 73 | BookInfo(range(1,5+1), '1Pet', '1 Peter'), 74 | BookInfo(range(1,3+1), '2Pet', '2 Peter'), 75 | BookInfo(range(1,5+1), '1John', '1 John'), 76 | BookInfo(range(1,1+1), '2John', '2 John'), 77 | BookInfo(range(1,1+1), '3John', '3 John'), 78 | BookInfo(range(1,1+1), 'Jude', 'Jude'), 79 | BookInfo(range(1,22+1), 'Rev', 'Revelation'), 80 | ) 81 | 82 | 83 | def get_book_subset(args): 84 | """ 85 | Get a subset of BookInfo books; if args is empty, returns all books 86 | 87 | args -- a list of osisBooks and chapter numbers; the chapter numbers are associated 88 | 89 | with their immediately-preceding osisBook. If an osisBook appears without any 90 | subsequent chapters, then all chapters in the book will be returned. 91 | 92 | >>> subset_books = get_book_subset('John', '1') 93 | >>> len(subset_books) 94 | 1 95 | >>> subset_books[0].osis 96 | 'John' 97 | >>> len(subset_books[0].chapters) 98 | 1 99 | >>> subset_books[0].chapters[0] 100 | 1 101 | >>> subset_books = get_book_subset('Mark', '1', '3', '6', 'Jude') 102 | >>> subset_books[0].chapters 103 | [1, 3, 6] 104 | >>> len(subset_books) 105 | 2 106 | >>> subset_books[1].osis 107 | 'Jude' 108 | >>> subset_books[1].chapters 109 | [1] 110 | >>> len(get_book_subset()) 111 | 66 112 | >>> subset_books = get_book_subset('Mark', '1', 'Mark') 113 | Traceback (most recent call last): 114 | ... 115 | ValueError: You already provided the osisBook 'Mark' 116 | >>> subset_books = get_book_subset('1', 'Mark') 117 | Traceback (most recent call last): 118 | ... 119 | ValueError: Expected osisBook. A chapter must be preceded by an osisBook 120 | >>> subset_books = get_book_subset('Jude', 2) 121 | Traceback (most recent call last): 122 | ... 123 | ValueError: Chapter '2' does not exist in Jude 124 | >>> subset_books = get_book_subset('Matt', 1, 2, 3, 'FOO') 125 | Traceback (most recent call last): 126 | ... 127 | ValueError: Invalid arg 'FOO'. Expected valid osisBook or chapter. 128 | >>> subset_books = get_book_subset('Matt', 1, 2, 1) 129 | Traceback (most recent call last): 130 | ... 131 | ValueError: You already provided chapter '1' for Matt 132 | 133 | """ 134 | 135 | import re 136 | from copy import deepcopy 137 | from collections import OrderedDict 138 | 139 | osis_books = [book.osis for book in books] 140 | current_osis_book = None 141 | subset_book_dict = OrderedDict() 142 | for arg in args: 143 | # osisBook 144 | if arg in osis_books: 145 | if arg in subset_book_dict: 146 | raise ValueError("You already provided the osisBook '%s'" % arg) 147 | current_osis_book = arg 148 | subset_book_dict[current_osis_book] = [] 149 | # chapter 150 | elif re.match('^\d+$', str(arg)): 151 | if current_osis_book is None: 152 | raise ValueError("Expected osisBook. A chapter must be preceded by an osisBook") 153 | 154 | chapter = int(arg) 155 | if chapter not in books[osis_books.index(current_osis_book)].chapters: 156 | raise ValueError("Chapter '%d' does not exist in %s" % (chapter, current_osis_book)) 157 | 158 | if chapter in subset_book_dict[current_osis_book]: 159 | raise ValueError("You already provided chapter '%d' for %s" % (chapter, current_osis_book)) 160 | subset_book_dict[current_osis_book].append(chapter) 161 | else: 162 | raise ValueError("Invalid arg '%s'. Expected valid osisBook or chapter." % arg) 163 | 164 | if len(subset_book_dict.keys()) == 0: 165 | return books 166 | else: 167 | subset_books = [] 168 | for osis_book, chapters in subset_book_dict.iteritems(): 169 | if len(chapters) == 0: 170 | subset_books.append(books[osis_books.index(osis_book)]) 171 | else: 172 | book_info = deepcopy(books[osis_books.index(osis_book)]) 173 | book_info.chapters = chapters 174 | subset_books.append(book_info) 175 | return subset_books 176 | 177 | 178 | # Run tests 179 | if __name__ == '__main__': 180 | import sys 181 | if '--json' in sys.argv: 182 | import json 183 | print json.dumps([book.__dict__ for book in books], indent=4) 184 | elif '--js' in sys.argv: 185 | import json 186 | import re 187 | bookinfo_json = json.dumps([book.__dict__ for book in books], indent=4) 188 | bookinfo_js = re.sub(r'\[\s+(\d+)[^\]]+?(\d+)\s+\]', '_.range(\g<1>, \g<2>+1)', bookinfo_json, 0, re.S) 189 | bookinfo_js = re.sub(r'\[\s+(\d+)\s+\]', '_.range(\g<1>, \g<1>+1)', bookinfo_js, 0, re.S) 190 | print bookinfo_js 191 | else: 192 | print "Running tests wthout without any args" 193 | import doctest 194 | doctest.testmod() 195 | -------------------------------------------------------------------------------- /reports/John.2: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 497 7 | Words found by aligner: 285 8 | Number of words: 24 9 | Number of words that were left off: 236 (47.5%) 10 | 0.2s On ++ 11 | 0.1s the + 12 | 0.3s third ++++ 13 | 0.2s day +++ 14 | 0.1s there ++ 15 | 0.1s was ++ 16 | 0.1s a + 17 | 0.3s wedding +++ 18 | 0.1s at ++ 19 | 0.4s Cana +++++ 20 | 0.1s in ++ 21 | 0.6s Galilee ++++++ 22 | 0.1s and ++ 23 | 0.1s the + 24 | 0.3s mother ++++ 25 | 0.1s of ++ 26 | 0.4s Jesus +++++ 27 | 0.2s was ++ 28 | 0.4s there +++++ 29 | 0.5s Jesus +++++ 30 | 0.3s also ++++ 31 | 0.1s was ++ 32 | 0.4s invited +++++ 33 | 0.1s to + 34 | 0.1s the ++ 35 | 0.3s wedding ++++ 36 | 0.2s with ++ 37 | 0.1s his ++ 38 | 0.7s disciples +++++++ 39 | 1.0s When +++++++++++ 40 | 0.1s the + 41 | 0.3s wine ++++ 42 | 0.2s ran +++ 43 | 0.2s out +++ 44 | 0.1s the + 45 | 0.3s mother +++ 46 | 0.1s of + 47 | 0.4s Jesus ++++ 48 | 0.2s said +++ 49 | 0.1s to ++ 50 | 0.2s him ++ 51 | 0.1s They ++ 52 | 0.2s have +++ 53 | 0.3s no ++++ 54 | 0.3s wine ++++ 55 | 0.2s And ++ 56 | 0.4s Jesus ++++ 57 | 0.2s said +++ 58 | 0.1s to + 59 | 0.2s her +++ 60 | 0.2s Woman ++ 61 | 1.2s what +++++++++++++ 62 | 0.2s does ++ 63 | 0.2s this ++ 64 | 0.2s have ++ 65 | 0.1s to + 66 | 0.1s do ++ 67 | 0.2s with ++ 68 | 0.4s me +++++ 69 | 0.2s My ++ 70 | 0.3s hour ++++ 71 | 0.1s has ++ 72 | 0.2s not +++ 73 | 0.2s yet ++ 74 | 0.4s come ++++ 75 | 0.2s His ++ 76 | 0.3s mother +++ 77 | 0.2s said +++ 78 | 0.1s to ++ 79 | 0.1s the + 80 | 0.5s servants +++++ 81 | 0.8s Do +++++++++ 82 | 0.4s whatever ++++ 83 | 0.1s he + 84 | 0.3s tells ++++ 85 | 0.2s you ++ 86 | 0.3s Now ++++ 87 | 0.2s there ++ 88 | 0.1s were + 89 | 0.4s six ++++ 90 | 0.4s stone ++++ 91 | 0.4s water ++++ 92 | 0.3s jars ++++ 93 | 0.2s there +++ 94 | 0.2s for ++ 95 | 0.1s the ++ 96 | 0.3s Jewish ++++ 97 | 0.3s rites ++++ 98 | 0.1s of + 99 | 0.8s purification ++++++++ 100 | 0.2s each +++ 101 | 0.4s holding +++++ 102 | 0.4s twenty ++++ 103 | 0.1s or + 104 | 0.3s thirty ++++ 105 | 0.5s gallons ++++++ 106 | 0.5s Jesus ++++++ 107 | 0.2s said +++ 108 | 0.1s to + 109 | 0.1s the ++ 110 | 0.6s servants ++++++ 111 | 0.8s Fill ++++++++ 112 | 0.1s the ++ 113 | 0.5s jars +++++ 114 | 0.2s with ++ 115 | 0.5s water +++++ 116 | 0.2s And ++ 117 | 0.1s they ++ 118 | 0.3s filled +++ 119 | 0.1s them ++ 120 | 0.1s up ++ 121 | 0.1s to + 122 | 0.1s the + 123 | 0.5s brim +++++ 124 | 0.1s And ++ 125 | 0.1s he + 126 | 0.2s said +++ 127 | 0.1s to + 128 | 0.2s them +++ 129 | 0.2s Now +++ 130 | 0.4s draw ++++ 131 | 0.3s some +++ 132 | 0.3s out ++++ 133 | 0.1s and ++ 134 | 0.2s take ++ 135 | 0.1s it ++ 136 | 0.1s to + 137 | 0.1s the ++ 138 | 0.5s master +++++ 139 | 0.1s of + 140 | 0.1s the + 141 | 0.5s feast +++++ 142 | 0.2s So ++ 143 | 0.1s they ++ 144 | 0.2s took +++ 145 | 0.2s it ++ 146 | 1.1s When +++++++++++ 147 | 0.1s the + 148 | 0.3s master ++++ 149 | 0.1s of + 150 | 0.1s the + 151 | 0.4s feast +++++ 152 | 0.4s tasted +++++ 153 | 0.1s the ++ 154 | 0.3s water ++++ 155 | 0.3s now +++ 156 | 0.4s become ++++ 157 | 0.5s wine +++++ 158 | 0.2s and +++ 159 | 0.1s did ++ 160 | 0.2s not ++ 161 | 0.1s know ++ 162 | 0.2s where ++ 163 | 0.1s it + 164 | 0.3s came +++ 165 | 0.3s from ++++ 166 | 0.2s though ++ 167 | 0.1s the + 168 | 0.5s servants +++++ 169 | 0.1s who ++ 170 | 0.2s had ++ 171 | 0.3s drawn +++ 172 | 0.1s the ++ 173 | 0.3s water +++ 174 | 0.3s knew ++++ 175 | 0.2s the ++ 176 | 0.4s master +++++ 177 | 0.1s of + 178 | 0.1s the + 179 | 0.4s feast +++++ 180 | 0.4s called ++++ 181 | 0.1s the + 182 | 0.5s bridegroom ++++++ 183 | 0.1s and ++ 184 | 0.2s said +++ 185 | 0.1s to + 186 | 0.2s him +++ 187 | 0.6s Everyone +++++++ 188 | 0.4s serves ++++ 189 | 0.1s the ++ 190 | 0.2s good ++ 191 | 0.3s wine ++++ 192 | 0.5s first ++++++ 193 | 0.1s and ++ 194 | 0.1s when ++ 195 | 0.3s people +++ 196 | 0.1s have ++ 197 | 0.3s drunk +++ 198 | 0.4s freely +++++ 199 | 0.2s then +++ 200 | 0.1s the + 201 | 0.4s poor ++++ 202 | 0.5s wine +++++ 203 | 0.2s But ++ 204 | 0.1s you ++ 205 | 0.2s have ++ 206 | 0.3s kept ++++ 207 | 0.2s the ++ 208 | 0.2s good ++ 209 | 0.4s wine ++++ 210 | 0.3s until +++ 211 | 0.4s now +++++ 212 | 1.1s This +++++++++++ 213 | 0.2s the ++ 214 | 0.3s first ++++ 215 | 0.1s of + 216 | 0.2s his +++ 217 | 0.7s signs ++++++++ 218 | 0.5s Jesus ++++++ 219 | 0.3s did +++ 220 | 0.1s at ++ 221 | 0.4s Cana +++++ 222 | 0.1s in ++ 223 | 0.6s Galilee ++++++ 224 | 0.2s and ++ 225 | 0.6s manifested +++++++ 226 | 0.2s his ++ 227 | 0.5s glory +++++ 228 | 0.2s And ++ 229 | 0.2s his ++ 230 | 0.7s disciples +++++++ 231 | 0.4s believed +++++ 232 | 0.1s in ++ 233 | 0.2s him +++ 234 | 0.3s After ++++ 235 | 0.2s this +++ 236 | 0.1s he + 237 | 0.2s went ++ 238 | 0.2s down ++ 239 | 0.1s to + 240 | 0.6s Capernaum ++++++ 241 | 0.1s with ++ 242 | 0.2s his ++ 243 | 0.4s mother ++++ 244 | 0.1s and ++ 245 | 0.1s his ++ 246 | 0.5s brothers +++++ 247 | 0.4s and +++++ 248 | 0.1s his ++ 249 | 0.7s disciples ++++++++ 250 | 0.1s and ++ 251 | 0.1s they + 252 | 0.3s stayed ++++ 253 | 0.2s there ++ 254 | 0.1s for ++ 255 | 0.0s a + 256 | 0.2s few ++ 257 | 0.5s days ++++++ 258 | 0.8s -------- 259 | 3.6s ------------------------------------ 260 | 3.4s ---------------------------------- 261 | 1.7s ----------------- 262 | 4.4s --------------------------------------------- 263 | 3.4s ---------------------------------- 264 | 0.4s The +++++ 265 | 7.0s ---------------------------------------------------------------------- 266 | 2.3s ------------------------ 267 | 2.1s --------------------- 268 | 1.4s -------------- 269 | 2.2s ---------------------- 270 | 2.9s ----------------------------- 271 | 1.8s ------------------ 272 | 7.3s -------------------------------------------------------------------------- 273 | 2.0s -------------------- 274 | 0.6s ------- 275 | 4.4s -------------------------------------------- 276 | 2.9s ------------------------------ 277 | 0.7s -------- 278 | 1.6s ----------------- 279 | 0.4s Passover +++++ 280 | 0.1s of + 281 | 0.1s the ++ 282 | 0.2s Jews +++ 283 | 2.6s -------------------------- 284 | 0.1s was ++ 285 | 0.3s at +++ 286 | 0.1s hand ++ 287 | 5.9s ----------------------------------------------------------- 288 | 0.4s and ++++ 289 | 0.1s -- 290 | 0.4s Jesus +++++ 291 | 0.7s -------- 292 | 0.2s went +++ 293 | 0.2s up ++ 294 | 0.3s to ++++ 295 | Words left off: 236 296 | -------------------------------------------------------------------------------- /reports/John.1: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 965 7 | Words found by aligner: 281 8 | Number of words: 116 9 | Number of words that were left off: 800 (82.9%) 10 | 0.2s In ++ 11 | 0.1s the ++ 12 | 0.5s beginning +++++ 13 | 0.2s was +++ 14 | 0.1s the ++ 15 | 0.5s Word ++++++ 16 | 0.2s and ++ 17 | 0.1s the ++ 18 | 0.3s Word ++++ 19 | 0.2s was +++ 20 | 0.3s with +++ 21 | 0.4s God +++++ 22 | 0.1s and ++ 23 | 0.1s the + 24 | 0.2s Word +++ 25 | 0.3s was +++ 26 | 0.4s God ++++ 27 | 0.2s He +++ 28 | 0.2s was +++ 29 | 0.2s in ++ 30 | 0.1s the + 31 | 0.5s beginning ++++++ 32 | 0.2s with +++ 33 | 0.5s God +++++ 34 | 0.3s All +++ 35 | 0.3s things +++ 36 | 0.1s were ++ 37 | 0.4s made ++++ 38 | 0.3s through +++ 39 | 0.3s him ++++ 40 | 0.2s and ++ 41 | 0.3s without ++++ 42 | 0.2s him +++ 43 | 0.2s was ++ 44 | 0.3s not +++ 45 | 0.2s any +++ 46 | 0.2s thing ++ 47 | 0.4s made +++++ 48 | 0.2s that ++ 49 | 0.2s was ++ 50 | 0.5s made +++++ 51 | 0.3s In ++++ 52 | 0.1s him ++ 53 | 0.2s was ++ 54 | 0.5s life ++++++ 55 | 0.1s and ++ 56 | 0.1s the + 57 | 0.4s life ++++ 58 | 0.2s was ++ 59 | 0.1s the ++ 60 | 0.3s light +++ 61 | 0.1s of ++ 62 | 0.4s men +++++ 63 | 0.1s The ++ 64 | 0.2s light +++ 65 | 0.5s shines ++++++ 66 | 0.1s in + 67 | 0.1s the ++ 68 | 0.6s darkness +++++++ 69 | 0.1s and ++ 70 | 0.1s the ++ 71 | 0.5s darkness ++++++ 72 | 0.2s has ++ 73 | 0.2s not +++ 74 | 0.4s overcome +++++ 75 | 0.2s it ++ 76 | 1.6s ----------------- 77 | 0.2s There ++ 78 | 0.2s was ++ 79 | 0.3s ---- 80 | 0.1s a + 81 | 3.0s ------------------------------- 82 | 1.7s ----------------- 83 | 0.9s ---------- 84 | 2.0s --------------------- 85 | 3.5s ----------------------------------- 86 | 3.6s ------------------------------------- 87 | 1.6s ----------------- 88 | 2.7s ---------------------------- 89 | 1.0s ---------- 90 | 1.6s ----------------- 91 | 1.4s -------------- 92 | 2.4s ------------------------- 93 | 1.5s ---------------- 94 | 2.3s ----------------------- 95 | 0.2s man +++ 96 | 0.2s sent +++ 97 | 0.1s from ++ 98 | 0.5s God ++++++ 99 | 2.2s ---------------------- 100 | 0.3s whose ++++ 101 | 1.9s ------------------- 102 | 3.7s -------------------------------------- 103 | 3.8s -------------------------------------- 104 | 0.1s name ++ 105 | 0.3s was +++ 106 | 0.3s John +++ 107 | 0.2s He +++ 108 | 1.9s ------------------- 109 | 0.2s came +++ 110 | 1.2s ------------- 111 | 1.3s as +++++++++++++ 112 | 2.0s --------------------- 113 | 0.0s a + 114 | 0.3s witness ++++ 115 | 0.1s to ++ 116 | 0.2s bear ++ 117 | 0.6s witness +++++++ 118 | 1.9s ------------------- 119 | 2.7s ---------------------------- 120 | 0.7s -------- 121 | 0.9s ---------- 122 | 0.5s about ++++++ 123 | 0.4s the +++++ 124 | 0.3s light ++++ 125 | 0.3s that +++ 126 | 2.6s --------------------------- 127 | 0.3s all +++ 128 | 5.1s --------------------------------------------------- 129 | 0.3s ---- 130 | 1.2s ------------ 131 | 0.4s might +++++ 132 | 3.5s ----------------------------------- 133 | 0.3s believe +++ 134 | 0.2s through +++ 135 | 0.3s him ++++ 136 | 0.2s He +++ 137 | 0.2s was ++ 138 | 0.4s not ++++ 139 | 0.3s the +++ 140 | 0.4s light ++++ 141 | 0.8s but +++++++++ 142 | 2.7s ---------------------------- 143 | 1.7s ----------------- 144 | 1.8s ------------------ 145 | 3.0s ------------------------------ 146 | 2.6s --------------------------- 147 | 2.9s ------------------------------ 148 | 3.6s ------------------------------------- 149 | 4.1s ----------------------------------------- 150 | 0.9s ---------- 151 | 1.4s -------------- 152 | 2.5s -------------------------- 153 | 5.0s -------------------------------------------------- 154 | 2.5s -------------------------- 155 | 1.4s --------------- 156 | 2.8s ----------------------------- 157 | 1.6s ----------------- 158 | 0.1s came ++ 159 | 0.2s to +++ 160 | 0.1s bear + 161 | 0.4s witness +++++ 162 | 0.2s about +++ 163 | 0.1s the + 164 | 0.5s light ++++++ 165 | 0.2s The ++ 166 | 0.5s ------ 167 | 0.2s true ++ 168 | 0.3s light ++++ 169 | 0.2s --- 170 | 2.4s ------------------------- 171 | 1.3s -------------- 172 | 1.5s ---------------- 173 | 2.6s --------------------------- 174 | 0.2s which +++ 175 | 0.6s enlightens ++++++ 176 | 0.6s everyone ++++++ 177 | 0.6s ------- 178 | 1.0s ----------- 179 | 0.4s was ++++ 180 | 0.4s ----- 181 | 2.8s ----------------------------- 182 | 0.7s coming +++++++ 183 | 0.6s into ++++++ 184 | 1.4s -------------- 185 | 2.4s ------------------------ 186 | 0.2s the +++ 187 | 0.5s ----- 188 | 0.2s world ++ 189 | 0.1s He + 190 | 0.2s was ++ 191 | 0.1s in ++ 192 | 1.1s ------------ 193 | 0.4s the +++++ 194 | 2.6s --------------------------- 195 | 3.9s --------------------------------------- 196 | 0.7s -------- 197 | 2.6s -------------------------- 198 | 0.1s world ++ 199 | 0.2s and ++ 200 | 0.2s the ++ 201 | 0.9s ---------- 202 | 0.4s world ++++ 203 | 0.3s ---- 204 | 0.2s was ++ 205 | 0.2s -- 206 | 4.4s -------------------------------------------- 207 | 0.2s made +++ 208 | 0.2s --- 209 | 0.2s through +++ 210 | 3.2s --------------------------------- 211 | 0.2s him +++ 212 | 0.3s ---- 213 | 0.2s yet +++ 214 | 0.7s -------- 215 | 0.6s the +++++++ 216 | 1.2s ------------ 217 | 1.7s ----------------- 218 | 1.0s ---------- 219 | 0.8s --------- 220 | 1.3s -------------- 221 | 3.0s ------------------------------- 222 | 0.2s world +++ 223 | 0.2s --- 224 | 0.2s did ++ 225 | 0.2s not +++ 226 | 0.3s know +++ 227 | 0.1s him + 228 | 1.4s -------------- 229 | 0.2s He ++ 230 | 0.2s came ++ 231 | 0.4s ----- 232 | 0.2s to ++ 233 | 0.5s his +++++ 234 | 1.8s ------------------- 235 | 2.4s ------------------------ 236 | 0.4s ----- 237 | 0.3s own +++ 238 | 0.1s and ++ 239 | 0.2s his +++ 240 | 8.7s --------------------------------------------------------------------------------------- 241 | 0.4s own +++++ 242 | 1.4s -------------- 243 | 1.6s ---------------- 244 | 2.5s -------------------------- 245 | 1.8s ------------------- 246 | 0.7s ------- 247 | 2.9s ----------------------------- 248 | 1.8s ------------------- 249 | 6.6s ------------------------------------------------------------------ 250 | 4.7s ------------------------------------------------ 251 | 1.5s ---------------- 252 | 1.0s ---------- 253 | 2.6s --------------------------- 254 | 1.4s --------------- 255 | 0.7s people +++++++ 256 | 0.3s did ++++ 257 | 0.2s not +++ 258 | 0.3s receive ++++ 259 | 1.8s ------------------ 260 | 1.0s ----------- 261 | 1.1s ----------- 262 | 0.1s him + 263 | 0.2s But ++ 264 | 0.9s --------- 265 | 0.3s to ++++ 266 | 2.2s ----------------------- 267 | 3.3s ---------------------------------- 268 | 1.2s ------------- 269 | 1.2s ------------- 270 | 0.2s all ++ 271 | 1.8s ------------------- 272 | 0.1s who + 273 | 1.3s -------------- 274 | 1.0s ----------- 275 | 0.3s did ++++ 276 | 0.3s receive ++++ 277 | 0.2s him ++ 278 | 0.1s who ++ 279 | 0.7s believed +++++++ 280 | 0.2s in ++ 281 | 1.5s --------------- 282 | 0.4s his +++++ 283 | 1.0s ----------- 284 | 1.6s ---------------- 285 | 1.3s -------------- 286 | 0.1s name ++ 287 | 0.1s he ++ 288 | 0.2s gave +++ 289 | 2.7s --------------------------- 290 | 0.4s the ++++ 291 | Words left off: 800 292 | -------------------------------------------------------------------------------- /data/read-along/models.js: -------------------------------------------------------------------------------- 1 | var Notification = Backbone.Model.extend({ 2 | defaults: { 3 | message: "" 4 | } 5 | }); 6 | var NotificationCollection = Backbone.Collection.extend({ 7 | model: Notification 8 | }); 9 | var notifications = new NotificationCollection(); 10 | 11 | var Book = Backbone.Model.extend({ 12 | defaults: { 13 | name: "Unknown", 14 | osis: "unknown", 15 | chapters: 0 16 | }, 17 | initialize: function(attributes){ 18 | 19 | }, 20 | getChapter: function(number){ 21 | if(number <= 0 || number > this.attributes.chapters){ 22 | throw Error("Chapter number out of range: " + number); 23 | } 24 | return new Chapter({ 25 | book: this, 26 | number: number 27 | }); 28 | } 29 | }); 30 | 31 | 32 | var Chapter = Backbone.Model.extend({ 33 | defaults: { 34 | book: null, 35 | number: 0 36 | /*, 37 | timings: [], 38 | html: null, 39 | audio: [] // list of URLs to audio 40 | */ 41 | }, 42 | audioFormats: [ 43 | { 44 | 'mime': 'audio/mpeg', 45 | 'ext': 'mp3' 46 | }, 47 | { 48 | 'mime': 'audio/vnd.wave', 49 | 'ext': 'wav' 50 | }, 51 | { 52 | 'mime': 'audio/ogg', 53 | 'ext': 'ogg' 54 | } 55 | ], 56 | initialize: function( attributes ){ 57 | 58 | // @todo Can this be async to fetch the html, audio urls 59 | }, 60 | 61 | loadData: function(callback){ 62 | var dataPath = '../'; 63 | var osisID = this.get('book').get('osis') + '.' + this.get('number'); 64 | 65 | var requestQueue = [ 66 | { 67 | url: dataPath + osisID + '.html', 68 | property: 'text', 69 | type: 'html' 70 | }, 71 | { 72 | url: dataPath + osisID + '.timings.json', 73 | property: 'timings', 74 | type: 'json' 75 | } 76 | ]; 77 | var completedRequestCount = 0; // TODO: Implement via promises? 78 | 79 | var responseData = { 80 | errors: [] 81 | }; 82 | 83 | _(requestQueue).each(function(request){ 84 | try { 85 | var xhr = new XMLHttpRequest(); 86 | xhr.open('GET', request.url); 87 | xhr.onreadystatechange = function(){ 88 | if(xhr.readyState == 4){ 89 | completedRequestCount++; 90 | 91 | if(xhr.status == 200){ 92 | var data = xhr.responseText; 93 | if( request.type == 'json' ){ 94 | data = JSON.parse(data); 95 | } 96 | responseData[request.property] = data; 97 | } 98 | else { 99 | responseData.errors.push(new Error(xhr.statusText + ': ' + request.url)); 100 | } 101 | 102 | if(completedRequestCount == requestQueue.length){ 103 | callback(responseData); 104 | } 105 | } 106 | }; 107 | xhr.send(null); 108 | } 109 | catch(e){ 110 | responseData.push(new Error(xhr.statusText)); 111 | callback(responseData); 112 | } 113 | }); 114 | 115 | } 116 | 117 | }); 118 | 119 | var Bible = Backbone.Collection.extend({ 120 | model: Book 121 | }); 122 | 123 | var esv_bible = new Bible([ // This array is generated via $ python bokinfo.py --js 124 | { 125 | "osis": "Gen", 126 | "chapters": 50, 127 | "name": "Genesis" 128 | }, 129 | { 130 | "osis": "Exod", 131 | "chapters": 40, 132 | "name": "Exodus" 133 | }, 134 | { 135 | "osis": "Lev", 136 | "chapters": 27, 137 | "name": "Leviticus" 138 | }, 139 | { 140 | "osis": "Num", 141 | "chapters": 36, 142 | "name": "Numbers" 143 | }, 144 | { 145 | "osis": "Deut", 146 | "chapters": 34, 147 | "name": "Deuteronomy" 148 | }, 149 | { 150 | "osis": "Josh", 151 | "chapters": 24, 152 | "name": "Joshua" 153 | }, 154 | { 155 | "osis": "Judg", 156 | "chapters": 21, 157 | "name": "Judges" 158 | }, 159 | { 160 | "osis": "Ruth", 161 | "chapters": 4, 162 | "name": "Ruth" 163 | }, 164 | { 165 | "osis": "1Sam", 166 | "chapters": 31, 167 | "name": "1 Samuel" 168 | }, 169 | { 170 | "osis": "2Sam", 171 | "chapters": 24, 172 | "name": "2 Samuel" 173 | }, 174 | { 175 | "osis": "1Kgs", 176 | "chapters": 22, 177 | "name": "1 Kings" 178 | }, 179 | { 180 | "osis": "2Kgs", 181 | "chapters": 25, 182 | "name": "2 Kings" 183 | }, 184 | { 185 | "osis": "1Chr", 186 | "chapters": 29, 187 | "name": "1 Chronicles" 188 | }, 189 | { 190 | "osis": "2Chr", 191 | "chapters": 36, 192 | "name": "2 Chronicles" 193 | }, 194 | { 195 | "osis": "Ezra", 196 | "chapters": 10, 197 | "name": "Ezra" 198 | }, 199 | { 200 | "osis": "Neh", 201 | "chapters": 13, 202 | "name": "Nehemiah" 203 | }, 204 | { 205 | "osis": "Esth", 206 | "chapters": 10, 207 | "name": "Esther" 208 | }, 209 | { 210 | "osis": "Job", 211 | "chapters": 42, 212 | "name": "Job" 213 | }, 214 | { 215 | "osis": "Ps", 216 | "chapters": 150, 217 | "name": "Psalms" 218 | }, 219 | { 220 | "osis": "Prov", 221 | "chapters": 31, 222 | "name": "Proverbs" 223 | }, 224 | { 225 | "osis": "Eccl", 226 | "chapters": 12, 227 | "name": "Ecclesiastes" 228 | }, 229 | { 230 | "osis": "Song", 231 | "chapters": 8, 232 | "name": "Song of Solomon" 233 | }, 234 | { 235 | "osis": "Isa", 236 | "chapters": 66, 237 | "name": "Isaiah" 238 | }, 239 | { 240 | "osis": "Jer", 241 | "chapters": 52, 242 | "name": "Jeremiah" 243 | }, 244 | { 245 | "osis": "Lam", 246 | "chapters": 5, 247 | "name": "Lamentations" 248 | }, 249 | { 250 | "osis": "Ezek", 251 | "chapters": 48, 252 | "name": "Ezekiel" 253 | }, 254 | { 255 | "osis": "Dan", 256 | "chapters": 12, 257 | "name": "Daniel" 258 | }, 259 | { 260 | "osis": "Hos", 261 | "chapters": 14, 262 | "name": "Hosea" 263 | }, 264 | { 265 | "osis": "Joel", 266 | "chapters": 3, 267 | "name": "Joel" 268 | }, 269 | { 270 | "osis": "Amos", 271 | "chapters": 9, 272 | "name": "Amos" 273 | }, 274 | { 275 | "osis": "Obad", 276 | "chapters": 1, 277 | "name": "Obadiah" 278 | }, 279 | { 280 | "osis": "Jonah", 281 | "chapters": 4, 282 | "name": "Jonah" 283 | }, 284 | { 285 | "osis": "Mic", 286 | "chapters": 7, 287 | "name": "Micah" 288 | }, 289 | { 290 | "osis": "Nah", 291 | "chapters": 3, 292 | "name": "Nahum" 293 | }, 294 | { 295 | "osis": "Hab", 296 | "chapters": 3, 297 | "name": "Habakkuk" 298 | }, 299 | { 300 | "osis": "Zeph", 301 | "chapters": 3, 302 | "name": "Zephaniah" 303 | }, 304 | { 305 | "osis": "Hag", 306 | "chapters": 2, 307 | "name": "Haggai" 308 | }, 309 | { 310 | "osis": "Zech", 311 | "chapters": 14, 312 | "name": "Zechariah" 313 | }, 314 | { 315 | "osis": "Mal", 316 | "chapters": 4, 317 | "name": "Malachi" 318 | }, 319 | { 320 | "osis": "Matt", 321 | "chapters": 28, 322 | "name": "Matthew" 323 | }, 324 | { 325 | "osis": "Mark", 326 | "chapters": 16, 327 | "name": "Mark" 328 | }, 329 | { 330 | "osis": "Luke", 331 | "chapters": 24, 332 | "name": "Luke" 333 | }, 334 | { 335 | "osis": "John", 336 | "chapters": 21, 337 | "name": "John" 338 | }, 339 | { 340 | "osis": "Acts", 341 | "chapters": 28, 342 | "name": "Acts" 343 | }, 344 | { 345 | "osis": "Rom", 346 | "chapters": 16, 347 | "name": "Romans" 348 | }, 349 | { 350 | "osis": "1Cor", 351 | "chapters": 16, 352 | "name": "1 Corinthians" 353 | }, 354 | { 355 | "osis": "2Cor", 356 | "chapters": 13, 357 | "name": "2 Corinthians" 358 | }, 359 | { 360 | "osis": "Gal", 361 | "chapters": 6, 362 | "name": "Galatians" 363 | }, 364 | { 365 | "osis": "Eph", 366 | "chapters": 6, 367 | "name": "Ephesians" 368 | }, 369 | { 370 | "osis": "Phil", 371 | "chapters": 4, 372 | "name": "Philippians" 373 | }, 374 | { 375 | "osis": "Col", 376 | "chapters": 4, 377 | "name": "Colossians" 378 | }, 379 | { 380 | "osis": "1Thess", 381 | "chapters": 5, 382 | "name": "1 Thessalonians" 383 | }, 384 | { 385 | "osis": "2Thess", 386 | "chapters": 3, 387 | "name": "2 Thessalonians" 388 | }, 389 | { 390 | "osis": "1Tim", 391 | "chapters": 6, 392 | "name": "1 Timothy" 393 | }, 394 | { 395 | "osis": "2Tim", 396 | "chapters": 4, 397 | "name": "2 Timothy" 398 | }, 399 | { 400 | "osis": "Titus", 401 | "chapters": 3, 402 | "name": "Titus" 403 | }, 404 | { 405 | "osis": "Phlm", 406 | "chapters": 1, 407 | "name": "Philemon" 408 | }, 409 | { 410 | "osis": "Heb", 411 | "chapters": 13, 412 | "name": "Hebrews" 413 | }, 414 | { 415 | "osis": "Jas", 416 | "chapters": 5, 417 | "name": "James" 418 | }, 419 | { 420 | "osis": "1Pet", 421 | "chapters": 5, 422 | "name": "1 Peter" 423 | }, 424 | { 425 | "osis": "2Pet", 426 | "chapters": 3, 427 | "name": "2 Peter" 428 | }, 429 | { 430 | "osis": "1John", 431 | "chapters": 5, 432 | "name": "1 John" 433 | }, 434 | { 435 | "osis": "2John", 436 | "chapters": 1, 437 | "name": "2 John" 438 | }, 439 | { 440 | "osis": "3John", 441 | "chapters": 1, 442 | "name": "3 John" 443 | }, 444 | { 445 | "osis": "Jude", 446 | "chapters": 1, 447 | "name": "Jude" 448 | }, 449 | { 450 | "osis": "Rev", 451 | "chapters": 22, 452 | "name": "Revelation" 453 | } 454 | ]); 455 | -------------------------------------------------------------------------------- /align.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | """ 3 | ESV Text/Audio Aligner using CMU Sphinx 4 | Pulls down the ESV text and audio from the ESV API, then generates 5 | chapyer-by-chapter {book}.{chapter}.timings.json files in the data/ directory. 6 | Previously-aligned chapters are skipped unless forced. 7 | 8 | Author: Weston Ruter @westonruter 9 | Project: https://github.com/westonruter/esv-audio-timings 10 | Dependencies: Python 2.7, java, ant, sox, svn 11 | 12 | The ESV Text and MP3 data downloaded by this script is subject to copyright: 13 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, a 14 | publishing ministry of Good News Publishers. All rights reserved. 15 | 16 | 17 | ESV API usage terms available from http://www.esvapi.org/ 18 | You can access the ESV text using the key "IP" (without the quotes). This 19 | key limits you to 5,000 queries per day from a single IP address. You are 20 | bound by the below conditions of use, including the non-commercial 21 | aspects. 22 | 23 | USAGE: 24 | $ python align.py [-f|--force] [osisBook] [chapter, [chapter]...] [osisBook] [chapter, [chapter]...] ... 25 | 26 | See README for examples and further information. 27 | 28 | Dual licensed under the MIT or GPL Version 2 licenses. 29 | MIT License: http://creativecommons.org/licenses/MIT/ 30 | GPL 2.0 license: http://creativecommons.org/licenses/GPL/2.0/ 31 | """ 32 | 33 | import subprocess 34 | import os 35 | from os import path 36 | import urllib 37 | import codecs 38 | import sys 39 | import shutil 40 | import json 41 | import re 42 | from collections import OrderedDict 43 | from time import time as clock 44 | import bookinfo 45 | 46 | def align(argv): 47 | """ Main function for this module (see its docstring for usage) """ 48 | 49 | init_start_time = clock() 50 | 51 | __dir__ = path.realpath(path.dirname(__file__)) 52 | sphinx_long_audio_aligner_repo_url = "http://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/branches/long-audio-aligner/Aligner" 53 | long_audio_aligner_path = __dir__ + '/long-audio-aligner' 54 | data_path = __dir__ + '/data' 55 | is_force = ('--force' in sys.argv or '-f' in sys.argv) 56 | book_args = filter(lambda arg: arg[0] != '-', argv) 57 | 58 | books = bookinfo.get_book_subset(book_args) 59 | 60 | # svn co http://cmusphinx.svn.sourceforge.net/svnroot/cmusphinx/branches/long-audio-aligner/Aligner aligner 61 | if not path.exists(long_audio_aligner_path): 62 | print "Fetching long-audio-aligner from Sourceforge..." 63 | subprocess.call(['svn', 'co', sphinx_long_audio_aligner_repo_url, long_audio_aligner_path]) 64 | 65 | # Remove the initial batchFile since we don't want to process it anyway 66 | f = open(long_audio_aligner_path + '/resource/batchFile.txt', 'w') 67 | f.write('') 68 | f.close() 69 | 70 | # Build the Java project 71 | cwd = os.path.realpath(os.curdir) 72 | os.chdir(long_audio_aligner_path) 73 | print "Running ant" 74 | retcode = subprocess.call(['ant']) 75 | if retcode != 0: 76 | raise Exception("fail (have you ant?)") 77 | os.chdir(cwd) 78 | 79 | # Create the data directory which is where we put all the ESV data: audio, text, HTML, alignments 80 | if not path.exists(data_path): 81 | print "Making data dir" 82 | os.mkdir(data_path) 83 | 84 | def save_url(url, file, encoding=None): 85 | """Fetch a URL and save if to file, throwing exception if HTTP fail""" 86 | if encoding: 87 | fo = codecs.open(file, mode='w', encoding=encoding) 88 | else: 89 | fo = open(file, 'w') 90 | fi = urllib.urlopen(url) 91 | if not fi.getcode() or fi.getcode() != 200: 92 | raise Exception("Unable to fetch %s. Status code: %s" % (url, str(fi.getcode()))) 93 | fo.write(fi.read()) 94 | fo.close() 95 | 96 | for book in books: 97 | print "########################" 98 | print "%s (%s)" % (book.name, book.osis) 99 | print "########################" 100 | 101 | book_start_time = clock() 102 | 103 | for chapter in book.chapters: 104 | chapter_start_time = clock() 105 | 106 | mp3_file = data_path + '/%s.%d.mp3' % (book.osis, chapter) 107 | print "%s %d" % (book.osis, chapter) 108 | 109 | # Fetch MP3 110 | if not os.path.exists(mp3_file): 111 | mp3_url = 'http://www.esvapi.org/v2/rest/passageQuery?key=IP&output-format=mp3&passage={book}+{chapter}'.format( 112 | book=book.name, 113 | chapter=chapter 114 | ) 115 | print "Downloading MP3" 116 | save_url(mp3_url, mp3_file) 117 | else: 118 | print "Skipping MP3 (already-fetched)" 119 | 120 | # Convert to WAV 121 | wav_file = mp3_file.replace('.mp3', '.wav') 122 | if not os.path.exists(wav_file): 123 | print "Generating WAV file from MP3" 124 | retcode = subprocess.call(['sox', mp3_file, wav_file, 'rate', '16k']) 125 | if retcode != 0: 126 | raise Exception("fail (have you installed SoX?)") 127 | else: 128 | print "Skipping WAV (already-generated)" 129 | 130 | # Fetch text for chapter for Aligner, first verseless then versed 131 | text_params = { 132 | 'key': 'IP', 133 | 'output-format': 'plain-text', 134 | 'passage': '{book} {chapter}'.format(book=book.name, chapter=chapter), 135 | 'include-passage-references': 'false', 136 | 'include-first-verse-numbers': 'false', 137 | 'include-footnotes': 'false', 138 | 'include-short-copyright': 'false', 139 | 'include-passage-horizontal-lines': 'false', 140 | 'include-heading-horizontal-lines': 'false', 141 | 'include-headings': 'false', 142 | 'include-subheadings': 'false', 143 | 'include-selahs': 'true', 144 | 'line-length': '0', 145 | } 146 | text_params['include-verse-numbers'] = 'false' 147 | verseless_text_file = data_path + '/%s.%d.verseless.txt' % (book.osis, chapter) 148 | if not path.exists(verseless_text_file): 149 | print "Fetching verseless text" 150 | # @todo What is the character encoding of the response?? 151 | text_url = 'http://www.esvapi.org/v2/rest/passageQuery?%s' % urllib.urlencode(text_params) 152 | save_url(text_url, verseless_text_file, 'utf-8') 153 | else: 154 | print "Skipping verseless text (already-fetched)" 155 | 156 | text_params['include-verse-numbers'] = 'true' 157 | versed_text_file = data_path + '/%s.%d.versed.txt' % (book.osis, chapter) 158 | if not path.exists(versed_text_file): 159 | print "Fetching versed text" 160 | # @todo What is the character encoding of the response?? 161 | text_url = 'http://www.esvapi.org/v2/rest/passageQuery?%s' % urllib.urlencode(text_params) 162 | save_url(text_url, versed_text_file, 'utf-8') 163 | else: 164 | print "Skipping versed text (already-fetched)" 165 | 166 | # Fetch HTML for chapter 167 | html_file = data_path + '/%s.%d.html' % (book.osis, chapter) 168 | if not path.exists(html_file): 169 | print "Fetching HTML" 170 | params = { 171 | 'key': 'IP', 172 | 'passage': '{book} {chapter}'.format(book=book.name, chapter=chapter), 173 | 'include-passage-references': 'false', 174 | 'include-first-verse-numbers': 'false', 175 | 'include-verse-numbers': 'true', 176 | 'include-footnotes': 'true', 177 | 'include-surrounding-chapters': 'false', 178 | 'include-audio-link': 'false', 179 | 'include-short-copyright': 'false', 180 | 'include-copyright': 'true', 181 | } 182 | html_url = 'http://www.esvapi.org/v2/rest/passageQuery?%s' % urllib.urlencode(params) 183 | save_url(html_url, html_file, 'utf-8') 184 | else: 185 | print "Skipping HTML (already-fetched)" 186 | 187 | # Create batch file for this chapter 188 | f = open(long_audio_aligner_path + '/resource/batchFile.txt', 'w') 189 | f.write('../data/{book}.{chapter}.verseless.txt ../data/{book}.{chapter}.wav'.format(book=book.osis, chapter=chapter)) 190 | f.close() 191 | 192 | # Now run the aligner on the batchFile 193 | timings_file = data_path + '/%s.%d.timings.json' % (book.osis, chapter) 194 | if not path.exists(timings_file) or is_force: 195 | print "Aligning text" 196 | 197 | cwd = path.realpath(path.curdir) 198 | os.chdir(long_audio_aligner_path) 199 | retcode = subprocess.call(['java', '-Xmx3g', '-jar', 'bin/aligner.jar']) 200 | if retcode != 0: 201 | raise Exception("fail (haz Java?)") 202 | os.chdir(cwd) 203 | 204 | # Chapter word segments: split up the chapter into an OrderedDict where each verse is separate 205 | fi = codecs.open(versed_text_file, mode='r', encoding='utf-8') 206 | chapter_text = fi.read() 207 | fi.close() 208 | 209 | # Split the text into words 210 | chapter_text = re.sub(r'(\[\d+\])', r' \1 ', chapter_text) 211 | unnormalized_word_chunks = chapter_text.strip().split() 212 | unnormalized_word_chunks.insert(0, '[1]') 213 | 214 | # Obtain the timed output 215 | fi = codecs.open(long_audio_aligner_path + '/timedOutput/1.txt', encoding='utf-8') 216 | raw_timings = fi.read().split() 217 | fi.close() 218 | 219 | verse_timings = OrderedDict() 220 | word_timings = [] 221 | 222 | # Parse the timings out of the raw timings, and then pair up the 223 | # normalized word from Sphinx with the actual word from the text 224 | normalize_word_chunk = lambda s: re.sub(r'\W', '', s).lower() 225 | stip_punc = lambda s: re.sub(r'^\W+|\W+$', '', s) 226 | current_verse = None 227 | for raw_timing in raw_timings: 228 | matches = re.match(r'(.+)\((.+),(.+)\)', raw_timing) 229 | word = matches.group(1) 230 | if word == '': 231 | word = None 232 | else: 233 | skipped_words = 0 234 | while True: 235 | unnormalized_word_chunk = unnormalized_word_chunks.pop(0) 236 | 237 | # Detect the verses 238 | if unnormalized_word_chunk.startswith('[') and unnormalized_word_chunk.endswith(']'): 239 | current_verse = unnormalized_word_chunk.strip('[]') 240 | verse_timings[current_verse] = {'start': None, 'end': None} 241 | unnormalized_word_chunk = unnormalized_word_chunks.pop(0) 242 | 243 | if word == normalize_word_chunk(unnormalized_word_chunk): 244 | word = stip_punc(unnormalized_word_chunk) 245 | break 246 | skipped_words.append(unnormalized_word_chunk) 247 | if len(skipped_words) > 5: 248 | raise Exception("Skipping several words: " + ", ".join(skipped_words)) 249 | 250 | start = float(matches.group(2)) 251 | end = float(matches.group(3)) 252 | 253 | # Keep track of verse timings 254 | if verse_timings[current_verse]['start'] is None: 255 | verse_timings[current_verse]['start'] = start 256 | verse_timings[current_verse]['end'] = end 257 | 258 | # Record word timings 259 | word_timings.append({ 260 | 'word' : word, 261 | 'start' : start, 262 | 'end' : end, 263 | }) 264 | 265 | fo = codecs.open(timings_file, mode='w', encoding='utf-8') 266 | fo.write(json.dumps({'verses': verse_timings, 'words': word_timings}, indent=2)) 267 | fo.close() 268 | else: 269 | print "Text already aligned" 270 | 271 | print "Time: %.02fs" % (clock() - chapter_start_time) 272 | print "--" 273 | 274 | print "%s book execution time: %.02fs" % (book.name, clock() - book_start_time) 275 | 276 | print "Total execution time: %.02fs" % (clock() - init_start_time) 277 | 278 | 279 | 280 | if __name__ == '__main__': 281 | try: 282 | align(sys.argv[1:]) 283 | except Exception as e: 284 | print "Exception:", e 285 | sys.exit(1) 286 | -------------------------------------------------------------------------------- /reports/Ps.118: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 451 7 | Words found by aligner: 464 8 | Number of words: 13 9 | All words in the text are reported to be discovered in audio 10 | 0.2s Oh +++ 11 | 0.2s give +++ 12 | 0.4s thanks +++++ 13 | 0.1s to ++ 14 | 0.1s the ++ 15 | 0.4s LORD ++++ 16 | 0.1s for ++ 17 | 0.1s he ++ 18 | 0.2s is ++ 19 | 0.4s good ++++ 20 | 0.1s for ++ 21 | 0.2s his ++ 22 | 0.7s steadfast ++++++++ 23 | 0.4s love ++++ 24 | 0.6s endures +++++++ 25 | 0.5s forever ++++++ 26 | 0.3s Let ++++ 27 | 0.5s Israel +++++ 28 | 0.5s say ++++++ 29 | 0.2s His +++ 30 | 0.7s steadfast ++++++++ 31 | 0.3s love ++++ 32 | 0.4s endures +++++ 33 | 0.5s forever ++++++ 34 | 0.2s Let ++ 35 | 0.1s the + 36 | 0.2s house +++ 37 | 0.2s of ++ 38 | 0.4s Aaron ++++ 39 | 0.4s say +++++ 40 | 0.2s His ++ 41 | 0.7s steadfast +++++++ 42 | 0.4s love ++++ 43 | 0.5s endures +++++ 44 | 0.5s forever ++++++ 45 | 0.2s Let +++ 46 | 0.2s those +++ 47 | 0.1s who ++ 48 | 0.3s fear ++++ 49 | 0.1s the ++ 50 | 0.4s LORD ++++ 51 | 0.4s say ++++ 52 | 0.2s His +++ 53 | 0.7s steadfast +++++++ 54 | 0.3s love ++++ 55 | 0.5s endures ++++++ 56 | 0.5s forever ++++++ 57 | 0.9s ---------- 58 | 0.2s Out +++ 59 | 0.2s of ++ 60 | 0.1s my ++ 61 | 0.5s distress ++++++ 62 | 0.1s I + 63 | 0.4s called +++++ 64 | 0.1s on ++ 65 | 0.1s the + 66 | 0.5s LORD +++++ 67 | 0.6s the +++++++ 68 | 0.3s LORD +++ 69 | 0.4s answered +++++ 70 | 0.3s me ++++ 71 | 0.2s and ++ 72 | 0.3s set ++++ 73 | 0.1s me ++ 74 | 0.5s free +++++ 75 | 0.5s The +++++ 76 | 0.3s LORD ++++ 77 | 0.1s is ++ 78 | 0.2s on ++ 79 | 0.2s my ++ 80 | 0.5s side +++++ 81 | 0.1s I ++ 82 | 0.2s will ++ 83 | 0.2s not ++ 84 | 0.4s fear +++++ 85 | 0.6s What ++++++ 86 | 0.3s can ++++ 87 | 0.4s man ++++ 88 | 0.2s do +++ 89 | 0.1s to ++ 90 | 0.2s me +++ 91 | 0.2s The +++ 92 | 0.2s LORD +++ 93 | 0.1s is ++ 94 | 0.2s on ++ 95 | 0.2s my ++ 96 | 0.4s side +++++ 97 | 0.1s as ++ 98 | 0.2s my ++ 99 | 0.5s helper ++++++ 100 | 0.2s I ++ 101 | 0.3s shall +++ 102 | 0.2s look +++ 103 | 0.1s in ++ 104 | 0.5s triumph ++++++ 105 | 0.2s on ++ 106 | 0.3s those +++ 107 | 0.1s who ++ 108 | 0.2s hate +++ 109 | 0.2s me +++ 110 | 1.0s ----------- 111 | 0.1s It ++ 112 | 0.1s is ++ 113 | 0.3s better +++ 114 | 0.1s to ++ 115 | 0.2s take +++ 116 | 0.5s refuge +++++ 117 | 0.1s in + 118 | 0.1s the + 119 | 0.3s LORD ++++ 120 | 0.1s than ++ 121 | 0.1s to ++ 122 | 0.3s trust ++++ 123 | 0.1s in ++ 124 | 0.4s man ++++ 125 | 0.3s It +++ 126 | 0.1s is ++ 127 | 0.2s better +++ 128 | 0.1s to ++ 129 | 0.2s take +++ 130 | 0.5s refuge +++++ 131 | 0.1s in + 132 | 0.1s the + 133 | 0.6s LORD +++++++ 134 | 0.2s than ++ 135 | 0.1s to ++ 136 | 0.4s trust +++++ 137 | 0.1s in ++ 138 | 0.6s princes +++++++ 139 | 0.9s ---------- 140 | 0.3s All ++++ 141 | 0.6s nations +++++++ 142 | 0.6s surrounded ++++++ 143 | 0.3s me ++++ 144 | 0.1s in ++ 145 | 0.1s the + 146 | 0.3s name ++++ 147 | 0.1s of + 148 | 0.1s the ++ 149 | 0.3s LORD ++++ 150 | 0.1s I ++ 151 | 0.3s cut ++++ 152 | 0.2s them +++ 153 | 0.4s off ++++ 154 | 0.8s --------- 155 | 0.1s They ++ 156 | 0.6s surrounded +++++++ 157 | 0.3s me +++ 158 | 0.6s surrounded ++++++ 159 | 0.1s me ++ 160 | 0.1s on ++ 161 | 0.2s every +++ 162 | 0.5s side ++++++ 163 | 0.1s in ++ 164 | 0.1s the + 165 | 0.3s name +++ 166 | 0.1s of + 167 | 0.1s the + 168 | 0.5s LORD +++++ 169 | 0.1s I ++ 170 | 0.3s cut +++ 171 | 0.2s them ++ 172 | 0.4s off ++++ 173 | 0.5s They ++++++ 174 | 0.6s surrounded ++++++ 175 | 0.1s me ++ 176 | 0.4s like ++++ 177 | 0.8s bees ++++++++ 178 | 0.6s they ++++++ 179 | 0.2s went ++ 180 | 0.2s out ++ 181 | 0.2s like ++ 182 | 0.1s a + 183 | 0.5s fire +++++ 184 | 0.3s among +++ 185 | 0.8s thorns ++++++++ 186 | 0.1s in ++ 187 | 0.1s the + 188 | 0.2s name +++ 189 | 0.1s of + 190 | 0.1s the ++ 191 | 0.3s LORD ++++ 192 | 0.1s I + 193 | 0.3s cut +++ 194 | 0.2s them ++ 195 | 0.4s off +++++ 196 | 0.5s ------ 197 | 0.2s I ++ 198 | 0.2s was +++ 199 | 0.3s pushed ++++ 200 | 0.6s hard ++++++ 201 | 0.2s so ++ 202 | 0.1s that ++ 203 | 0.1s I + 204 | 0.2s was ++ 205 | 0.6s falling ++++++ 206 | 0.1s but ++ 207 | 0.1s the + 208 | 0.3s LORD ++++ 209 | 0.3s helped ++++ 210 | 0.2s me +++ 211 | 0.7s The +++++++ 212 | 0.3s LORD +++ 213 | 0.1s is ++ 214 | 0.1s my ++ 215 | 0.5s strength ++++++ 216 | 0.1s and ++ 217 | 0.2s my ++ 218 | 0.5s song ++++++ 219 | 0.2s he ++ 220 | 0.2s has ++ 221 | 0.4s become +++++ 222 | 0.2s my ++ 223 | 0.7s salvation ++++++++ 224 | 0.4s Glad +++++ 225 | 0.5s songs +++++ 226 | 0.2s of ++ 227 | 0.6s salvation +++++++ 228 | 0.1s are ++ 229 | 0.1s in + 230 | 0.1s the ++ 231 | 0.4s tents ++++ 232 | 0.1s of + 233 | 0.1s the ++ 234 | 0.6s righteous ++++++ 235 | 0.8s --------- 236 | 0.2s The +++ 237 | 0.2s right ++ 238 | 0.3s hand +++ 239 | 0.1s of + 240 | 0.1s the + 241 | 0.4s LORD ++++ 242 | 0.3s does +++ 243 | 0.7s valiantly +++++++ 244 | 0.1s the ++ 245 | 0.3s right +++ 246 | 0.2s hand +++ 247 | 0.1s of + 248 | 0.1s the + 249 | 0.4s LORD ++++ 250 | 0.8s exalts +++++++++ 251 | 0.2s the +++ 252 | 0.2s right +++ 253 | 0.2s hand +++ 254 | 0.1s of + 255 | 0.1s the + 256 | 0.4s LORD +++++ 257 | 0.3s does ++++ 258 | 0.8s valiantly +++++++++ 259 | 0.8s --------- 260 | 0.2s I ++ 261 | 0.2s shall +++ 262 | 0.2s not +++ 263 | 0.4s die ++++ 264 | 0.2s but ++ 265 | 0.1s I ++ 266 | 0.3s shall +++ 267 | 0.4s live +++++ 268 | 0.2s and ++ 269 | 0.4s recount ++++ 270 | 0.1s the ++ 271 | 0.4s deeds +++++ 272 | 0.1s of + 273 | 0.1s the + 274 | 0.4s LORD +++++ 275 | 0.5s The ++++++ 276 | 0.3s LORD +++ 277 | 0.2s has +++ 278 | 0.6s disciplined +++++++ 279 | 0.2s me ++ 280 | 0.8s severely +++++++++ 281 | 0.1s but ++ 282 | 0.1s he + 283 | 0.2s has ++ 284 | 0.2s not ++ 285 | 0.3s given +++ 286 | 0.1s me ++ 287 | 0.2s over ++ 288 | 0.2s to ++ 289 | 0.4s death ++++ 290 | 0.3s Open ++++ 291 | 0.2s to ++ 292 | 0.2s me ++ 293 | 0.1s the ++ 294 | 0.4s gates +++++ 295 | 0.2s of ++ 296 | 0.7s righteousness ++++++++ 297 | 0.2s that +++ 298 | 0.2s I ++ 299 | 0.2s may +++ 300 | 0.3s enter ++++ 301 | 0.3s through ++++ 302 | 0.3s them ++++ 303 | 0.1s and ++ 304 | 0.2s give ++ 305 | 0.5s thanks +++++ 306 | 0.1s to ++ 307 | 0.1s the + 308 | 0.5s LORD +++++ 309 | 0.6s This ++++++ 310 | 0.2s is ++ 311 | 0.2s the ++ 312 | 0.4s gate ++++ 313 | 0.1s of ++ 314 | 0.1s the ++ 315 | 0.4s LORD +++++ 316 | 0.2s the +++ 317 | 0.6s righteous +++++++ 318 | 0.3s shall +++ 319 | 0.3s enter +++ 320 | 0.3s through ++++ 321 | 0.2s it ++ 322 | 0.2s I +++ 323 | 0.4s thank ++++ 324 | 0.1s you ++ 325 | 0.2s that ++ 326 | 0.1s you + 327 | 0.2s have ++ 328 | 0.5s answered +++++ 329 | 0.3s me +++ 330 | 0.2s and ++ 331 | 0.1s have ++ 332 | 0.5s become +++++ 333 | 0.2s my +++ 334 | 0.8s salvation ++++++++ 335 | 0.1s The ++ 336 | 0.5s stone ++++++ 337 | 0.1s that ++ 338 | 0.1s the ++ 339 | 0.5s builders ++++++ 340 | 0.6s rejected +++++++ 341 | 0.4s has +++++ 342 | 0.6s become ++++++ 343 | 0.1s the ++ 344 | 0.8s cornerstone +++++++++ 345 | 0.7s ------- 346 | 0.6s This +++++++ 347 | 0.1s is ++ 348 | 0.2s the ++ 349 | 0.4s LORD's +++++ 350 | 0.5s doing +++++ 351 | 0.2s it ++ 352 | 0.1s is ++ 353 | 0.6s marvelous +++++++ 354 | 0.2s in ++ 355 | 0.2s our +++ 356 | 0.6s eyes ++++++ 357 | 0.6s This +++++++ 358 | 0.1s is ++ 359 | 0.1s the ++ 360 | 0.2s day +++ 361 | 0.1s that ++ 362 | 0.1s the + 363 | 0.2s LORD +++ 364 | 0.2s has ++ 365 | 0.5s made +++++ 366 | 0.2s let ++ 367 | 0.2s us ++ 368 | 0.7s rejoice +++++++ 369 | 0.2s and ++ 370 | 0.1s be + 371 | 0.4s glad +++++ 372 | 0.1s in ++ 373 | 0.2s it ++ 374 | 0.8s --------- 375 | 0.3s Save ++++ 376 | 0.2s us ++ 377 | 0.2s we ++ 378 | 0.4s pray ++++ 379 | 0.1s O + 380 | 0.5s LORD ++++++ 381 | 0.3s O ++++ 382 | 0.3s LORD ++++ 383 | 0.2s we ++ 384 | 0.3s pray ++++ 385 | 0.3s give +++ 386 | 0.2s us +++ 387 | 0.8s success ++++++++ 388 | 0.6s ------- 389 | 0.3s Blessed ++++ 390 | 0.2s is +++ 391 | 0.2s he ++ 392 | 0.1s who ++ 393 | 0.4s comes ++++ 394 | 0.1s in + 395 | 0.1s the + 396 | 0.3s name +++ 397 | 0.1s of + 398 | 0.1s the + 399 | 0.4s LORD +++++ 400 | 0.9s --------- 401 | 0.2s We ++ 402 | 0.4s bless ++++ 403 | 0.2s you +++ 404 | 0.2s from ++ 405 | 0.1s the + 406 | 0.3s house ++++ 407 | 0.1s of + 408 | 0.1s the + 409 | 0.4s LORD +++++ 410 | 0.5s The +++++ 411 | 0.3s LORD ++++ 412 | 0.2s is ++ 413 | 0.5s God ++++++ 414 | 0.2s and ++ 415 | 0.2s he ++ 416 | 0.2s has ++ 417 | 0.3s made +++ 418 | 0.2s his ++ 419 | 0.3s light +++ 420 | 0.1s to + 421 | 0.4s shine ++++ 422 | 0.3s upon ++++ 423 | 0.3s us ++++ 424 | 1.0s ---------- 425 | 0.4s Bind +++++ 426 | 0.2s the ++ 427 | 0.5s festal +++++ 428 | 0.7s sacrifice +++++++ 429 | 0.2s with ++ 430 | 0.8s cords +++++++++ 431 | 0.2s up ++ 432 | 0.1s to + 433 | 0.1s the + 434 | 0.5s horns +++++ 435 | 0.1s of + 436 | 0.1s the ++ 437 | 0.5s altar +++++ 438 | 0.2s You +++ 439 | 0.1s are ++ 440 | 0.2s my ++ 441 | 0.4s God +++++ 442 | 0.1s and ++ 443 | 0.1s I + 444 | 0.2s will ++ 445 | 0.2s give ++ 446 | 0.4s thanks ++++ 447 | 0.2s to ++ 448 | 0.2s you +++ 449 | 0.2s you +++ 450 | 0.2s are ++ 451 | 0.2s my +++ 452 | 0.6s God ++++++ 453 | 0.1s I ++ 454 | 0.2s will +++ 455 | 0.5s extol ++++++ 456 | 0.2s you +++ 457 | 1.0s ----------- 458 | 0.3s Oh +++ 459 | 0.2s give ++ 460 | 0.4s thanks +++++ 461 | 0.1s to ++ 462 | 0.1s the + 463 | 0.4s LORD ++++ 464 | 0.2s for ++ 465 | 0.2s he ++ 466 | 0.2s is ++ 467 | 0.5s good +++++ 468 | 0.2s for +++ 469 | 0.2s his ++ 470 | 0.7s steadfast +++++++ 471 | 0.3s love ++++ 472 | 0.6s endures ++++++ 473 | 0.6s forever ++++++ 474 | Words left off: 0 475 | -------------------------------------------------------------------------------- /reports/Gen.2: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 634 7 | Words found by aligner: 641 8 | Number of words: 7 9 | All words in the text are reported to be discovered in audio 10 | 0.3s Thus +++ 11 | 0.1s the ++ 12 | 0.4s heavens ++++ 13 | 0.1s and ++ 14 | 0.1s the ++ 15 | 0.2s earth +++ 16 | 0.2s were ++ 17 | 0.4s finished +++++ 18 | 0.1s and ++ 19 | 0.2s all +++ 20 | 0.1s the + 21 | 0.4s host ++++ 22 | 0.1s of + 23 | 0.4s them +++++ 24 | 0.2s And ++ 25 | 0.1s on ++ 26 | 0.1s the + 27 | 0.4s seventh +++++ 28 | 0.3s day +++ 29 | 0.3s God ++++ 30 | 0.4s finished ++++ 31 | 0.1s his ++ 32 | 0.3s work +++ 33 | 0.1s that ++ 34 | 0.1s he ++ 35 | 0.1s had ++ 36 | 0.4s done +++++ 37 | 0.2s and ++ 38 | 0.1s he ++ 39 | 0.4s rested +++++ 40 | 0.1s on + 41 | 0.1s the + 42 | 0.4s seventh ++++ 43 | 0.2s day ++ 44 | 0.2s from ++ 45 | 0.2s all ++ 46 | 0.2s his ++ 47 | 0.3s work +++ 48 | 0.1s that ++ 49 | 0.1s he + 50 | 0.1s had ++ 51 | 0.3s done ++++ 52 | 0.3s So +++ 53 | 0.3s God ++++ 54 | 0.3s blessed ++++ 55 | 0.1s the ++ 56 | 0.4s seventh +++++ 57 | 0.4s day ++++ 58 | 0.2s and ++ 59 | 0.2s made ++ 60 | 0.1s it + 61 | 0.5s holy +++++ 62 | 0.8s because ++++++++ 63 | 0.2s on +++ 64 | 0.1s it ++ 65 | 0.3s God ++++ 66 | 0.4s rested +++++ 67 | 0.2s from ++ 68 | 0.2s all +++ 69 | 0.2s his ++ 70 | 0.3s work +++ 71 | 0.1s that ++ 72 | 0.1s he + 73 | 0.1s had ++ 74 | 0.2s done +++ 75 | 0.1s in ++ 76 | 0.6s creation +++++++ 77 | 0.4s These +++++ 78 | 0.1s are + 79 | 0.1s the ++ 80 | 0.7s generations +++++++ 81 | 0.1s of + 82 | 0.1s the + 83 | 0.5s heavens +++++ 84 | 0.1s and ++ 85 | 0.1s the ++ 86 | 0.4s earth ++++ 87 | 0.1s when ++ 88 | 0.1s they + 89 | 0.1s were ++ 90 | 0.6s created ++++++ 91 | 0.2s in ++ 92 | 0.1s the ++ 93 | 0.2s day +++ 94 | 0.2s that ++ 95 | 0.1s the ++ 96 | 0.3s LORD ++++ 97 | 0.4s God +++++ 98 | 0.2s made +++ 99 | 0.1s the ++ 100 | 0.4s earth ++++ 101 | 0.1s and ++ 102 | 0.1s the + 103 | 0.6s heavens +++++++ 104 | 1.8s When +++++++++++++++++++ 105 | 0.3s no +++ 106 | 0.3s bush +++ 107 | 0.1s of ++ 108 | 0.1s the + 109 | 0.4s field ++++ 110 | 0.2s was +++ 111 | 0.2s yet ++ 112 | 0.1s in + 113 | 0.1s the + 114 | 0.5s land +++++ 115 | 0.2s and ++ 116 | 0.2s no +++ 117 | 0.4s small ++++ 118 | 0.3s plant ++++ 119 | 0.1s of + 120 | 0.1s the + 121 | 0.4s field ++++ 122 | 0.1s had ++ 123 | 0.2s yet ++ 124 | 0.4s sprung ++++ 125 | 0.4s up--for ++++ 126 | 0.2s the ++ 127 | 0.3s LORD ++++ 128 | 0.2s God +++ 129 | 0.1s had ++ 130 | 0.2s not ++ 131 | 0.4s caused ++++ 132 | 0.1s it + 133 | 0.1s to ++ 134 | 0.3s rain +++ 135 | 0.1s on ++ 136 | 0.1s the + 137 | 0.4s land +++++ 138 | 0.1s and ++ 139 | 0.1s there ++ 140 | 0.1s was ++ 141 | 0.2s no ++ 142 | 0.3s man ++++ 143 | 0.1s to ++ 144 | 0.3s work +++ 145 | 0.1s the ++ 146 | 0.6s ground +++++++ 147 | 0.2s and ++ 148 | 0.1s a + 149 | 0.4s mist ++++ 150 | 0.1s was ++ 151 | 0.2s going +++ 152 | 0.2s up ++ 153 | 0.2s from +++ 154 | 0.1s the + 155 | 0.3s land ++++ 156 | 0.1s and ++ 157 | 0.1s was ++ 158 | 0.4s watering +++++ 159 | 0.1s the + 160 | 0.2s whole +++ 161 | 0.3s face ++++ 162 | 0.1s of + 163 | 0.1s the + 164 | 0.5s ground +++++ 165 | 0.4s then +++++ 166 | 0.1s the ++ 167 | 0.3s LORD ++++ 168 | 0.3s God ++++ 169 | 0.4s formed +++++ 170 | 0.1s the ++ 171 | 0.4s man +++++ 172 | 0.2s of +++ 173 | 0.4s dust ++++ 174 | 0.1s from ++ 175 | 0.1s the + 176 | 0.6s ground ++++++ 177 | 0.5s and +++++ 178 | 0.4s breathed +++++ 179 | 0.2s into ++ 180 | 0.2s his ++ 181 | 0.6s nostrils ++++++ 182 | 0.1s the ++ 183 | 0.4s breath ++++ 184 | 0.1s of ++ 185 | 0.4s life +++++ 186 | 0.1s and ++ 187 | 0.1s the + 188 | 0.4s man ++++ 189 | 0.6s became ++++++ 190 | 0.0s a + 191 | 0.4s living ++++ 192 | 0.6s creature ++++++ 193 | 0.2s And ++ 194 | 0.1s the + 195 | 0.3s LORD +++ 196 | 0.3s God ++++ 197 | 0.4s planted ++++ 198 | 0.1s a + 199 | 0.4s garden +++++ 200 | 0.1s in ++ 201 | 0.4s Eden ++++ 202 | 0.2s in ++ 203 | 0.2s the ++ 204 | 0.4s east ++++ 205 | 0.2s and ++ 206 | 0.2s there +++ 207 | 0.2s he ++ 208 | 0.2s put ++ 209 | 0.1s the + 210 | 0.4s man +++++ 211 | 0.2s whom +++ 212 | 0.1s he + 213 | 0.1s had ++ 214 | 0.5s formed ++++++ 215 | 0.2s And +++ 216 | 0.2s out ++ 217 | 0.1s of + 218 | 0.1s the ++ 219 | 0.4s ground +++++ 220 | 0.1s the + 221 | 0.3s LORD ++++ 222 | 0.3s God ++++ 223 | 0.2s made +++ 224 | 0.1s to + 225 | 0.3s spring ++++ 226 | 0.2s up ++ 227 | 0.5s every +++++ 228 | 0.4s tree ++++ 229 | 0.2s that ++ 230 | 0.1s is ++ 231 | 0.5s pleasant +++++ 232 | 0.1s to + 233 | 0.1s the ++ 234 | 0.4s sight +++++ 235 | 0.2s and +++ 236 | 0.3s good +++ 237 | 0.2s for ++ 238 | 0.5s food +++++ 239 | 1.1s The ++++++++++++ 240 | 0.2s tree +++ 241 | 0.1s of ++ 242 | 0.3s life ++++ 243 | 0.1s was ++ 244 | 0.1s in + 245 | 0.1s the + 246 | 0.3s midst ++++ 247 | 0.1s of + 248 | 0.1s the + 249 | 0.5s garden +++++ 250 | 0.1s and ++ 251 | 0.1s the + 252 | 0.4s tree ++++ 253 | 0.1s of ++ 254 | 0.1s the + 255 | 0.4s knowledge +++++ 256 | 0.1s of ++ 257 | 0.2s good +++ 258 | 0.1s and ++ 259 | 0.4s evil ++++ 260 | 1.0s ---------- 261 | 0.1s A + 262 | 0.3s --- 263 | 0.1s river ++ 264 | 0.2s flowed +++ 265 | 0.2s out ++ 266 | 0.1s of + 267 | 0.4s Eden ++++ 268 | 0.2s to ++ 269 | 0.3s water +++ 270 | 0.1s the ++ 271 | 0.5s garden +++++ 272 | 0.2s and ++ 273 | 0.2s there ++ 274 | 0.1s it ++ 275 | 0.5s divided ++++++ 276 | 0.1s and + 277 | 0.3s became ++++ 278 | 0.4s four ++++ 279 | 0.5s rivers ++++++ 280 | 0.1s The + 281 | 0.3s name +++ 282 | 0.1s of + 283 | 0.1s the + 284 | 0.5s first ++++++ 285 | 0.2s is ++ 286 | 0.1s the + 287 | 0.6s Pishon +++++++ 288 | 0.2s It +++ 289 | 0.1s is ++ 290 | 0.1s the + 291 | 0.2s one ++ 292 | 0.1s that ++ 293 | 0.3s flowed ++++ 294 | 0.3s around ++++ 295 | 0.1s the + 296 | 0.3s whole ++++ 297 | 0.3s land ++++ 298 | 0.1s of + 299 | 0.4s Havilah +++++ 300 | 0.2s where ++ 301 | 0.2s there ++ 302 | 0.1s is ++ 303 | 0.5s gold +++++ 304 | 0.1s And ++ 305 | 0.1s the + 306 | 0.3s gold ++++ 307 | 0.1s of + 308 | 0.2s that +++ 309 | 0.4s land +++++ 310 | 0.1s is ++ 311 | 0.5s good +++++ 312 | 0.5s bdellium ++++++ 313 | 0.2s and ++ 314 | 0.3s onyx ++++ 315 | 0.3s stone +++ 316 | 0.1s are + 317 | 0.3s there ++++ 318 | 0.4s The ++++ 319 | 0.2s name +++ 320 | 0.1s of + 321 | 0.1s the + 322 | 0.4s second ++++ 323 | 0.3s river +++ 324 | 0.1s is ++ 325 | 0.1s the ++ 326 | 0.5s Gihon +++++ 327 | 0.8s It ++++++++ 328 | 0.1s is ++ 329 | 0.1s the ++ 330 | 0.2s one ++ 331 | 0.1s that ++ 332 | 0.3s flowed ++++ 333 | 0.3s around +++ 334 | 0.1s the + 335 | 0.3s whole +++ 336 | 0.4s land +++++ 337 | 0.1s of + 338 | 0.5s Cush ++++++ 339 | 0.6s ------ 340 | 0.1s And ++ 341 | 0.1s the + 342 | 0.2s name +++ 343 | 0.1s of + 344 | 0.1s the + 345 | 0.3s third ++++ 346 | 0.3s river ++++ 347 | 0.2s is ++ 348 | 0.1s the + 349 | 0.6s Tigris +++++++ 350 | 0.5s which +++++ 351 | 0.4s flows ++++ 352 | 0.4s east ++++ 353 | 0.1s of + 354 | 0.6s Assyria ++++++ 355 | 0.7s And ++++++++ 356 | 0.1s the + 357 | 0.3s fourth ++++ 358 | 0.4s river +++++ 359 | 0.2s is +++ 360 | 0.1s the ++ 361 | 0.8s Euphrates +++++++++ 362 | 1.3s The +++++++++++++ 363 | 0.3s LORD ++++ 364 | 0.5s God +++++ 365 | 0.2s took ++ 366 | 0.1s the ++ 367 | 0.3s man ++++ 368 | 0.2s and ++ 369 | 0.2s put ++ 370 | 0.1s him ++ 371 | 0.1s in + 372 | 0.1s the ++ 373 | 0.3s garden ++++ 374 | 0.1s of + 375 | 0.2s Eden +++ 376 | 0.2s to ++ 377 | 0.3s work +++ 378 | 0.2s it +++ 379 | 0.2s and ++ 380 | 0.3s keep +++ 381 | 0.2s it ++ 382 | 0.2s And ++ 383 | 0.1s the ++ 384 | 0.3s LORD +++ 385 | 0.2s God +++ 386 | 0.5s commanded ++++++ 387 | 0.1s the + 388 | 0.3s man +++ 389 | 0.4s saying +++++ 390 | 0.2s You ++ 391 | 0.2s may ++ 392 | 0.4s surely ++++ 393 | 0.2s eat ++ 394 | 0.1s of ++ 395 | 0.3s every +++ 396 | 0.4s tree ++++ 397 | 0.1s of + 398 | 0.1s the + 399 | 0.5s garden +++++ 400 | 0.3s but +++ 401 | 0.1s of + 402 | 0.1s the ++ 403 | 0.2s tree +++ 404 | 0.1s of + 405 | 0.1s the + 406 | 0.4s knowledge ++++ 407 | 0.1s of + 408 | 0.2s good +++ 409 | 0.1s and ++ 410 | 0.4s evil +++++ 411 | 0.1s you ++ 412 | 0.3s shall +++ 413 | 0.2s not +++ 414 | 0.3s eat +++ 415 | 0.7s for +++++++ 416 | 0.2s in ++ 417 | 0.1s the ++ 418 | 0.2s day +++ 419 | 0.2s that ++ 420 | 0.1s you ++ 421 | 0.2s eat ++ 422 | 0.1s of ++ 423 | 0.2s it ++ 424 | 0.2s you +++ 425 | 0.2s shall +++ 426 | 0.4s surely +++++ 427 | 0.5s die +++++ 428 | 0.8s Then +++++++++ 429 | 0.1s the + 430 | 0.3s LORD +++ 431 | 0.3s God +++ 432 | 0.5s said ++++++ 433 | 0.1s It ++ 434 | 0.1s is ++ 435 | 0.2s not +++ 436 | 0.4s good ++++ 437 | 0.1s that ++ 438 | 0.1s the + 439 | 0.3s man ++++ 440 | 0.2s should ++ 441 | 0.1s be ++ 442 | 0.5s alone +++++ 443 | 0.1s I ++ 444 | 0.2s will ++ 445 | 0.2s make +++ 446 | 0.2s -- 447 | 0.2s him ++ 448 | 0.0s a + 449 | 0.5s helper ++++++ 450 | 0.2s fit +++ 451 | 0.2s for ++ 452 | 0.3s him +++ 453 | 1.2s ------------ 454 | 0.2s Now +++ 455 | 0.1s out ++ 456 | 0.1s of + 457 | 0.1s the ++ 458 | 0.4s ground +++++ 459 | 0.1s the ++ 460 | 0.3s LORD +++ 461 | 0.3s God +++ 462 | 0.1s had ++ 463 | 0.4s formed ++++ 464 | 0.3s every +++ 465 | 0.3s beast ++++ 466 | 0.1s of + 467 | 0.1s the + 468 | 0.4s field +++++ 469 | 0.1s and ++ 470 | 0.2s every +++ 471 | 0.3s bird ++++ 472 | 0.1s of + 473 | 0.1s the + 474 | 0.5s heavens +++++ 475 | 0.4s and +++++ 476 | 0.2s brought +++ 477 | 0.1s them ++ 478 | 0.1s to + 479 | 0.1s the + 480 | 0.2s man +++ 481 | 0.1s to + 482 | 0.2s see +++ 483 | 0.2s what ++ 484 | 0.1s he + 485 | 0.1s would ++ 486 | 0.3s call ++++ 487 | 0.2s them ++ 488 | 0.1s And ++ 489 | 1.5s whatever ++++++++++++++++ 490 | 0.1s the + 491 | 0.3s man ++++ 492 | 0.4s called ++++ 493 | 0.2s every +++ 494 | 0.3s living +++ 495 | 0.5s creature ++++++ 496 | 0.2s that +++ 497 | 0.2s was ++ 498 | 0.2s its ++ 499 | 0.5s name +++++ 500 | 0.2s The +++ 501 | 0.3s man +++ 502 | 0.2s gave ++ 503 | 0.4s names +++++ 504 | 0.1s to + 505 | 0.3s all +++ 506 | 0.7s livestock ++++++++ 507 | 0.1s and ++ 508 | 0.1s to + 509 | 0.1s the + 510 | 0.4s birds ++++ 511 | 0.1s of + 512 | 0.1s the + 513 | 0.5s heavens +++++ 514 | 0.3s and ++++ 515 | 0.1s to ++ 516 | 0.2s every +++ 517 | 0.4s beast ++++ 518 | 0.1s of + 519 | 0.1s the + 520 | 0.6s field ++++++ 521 | 0.3s But +++ 522 | 0.2s for ++ 523 | 0.4s Adam +++++ 524 | 0.2s there ++ 525 | 0.2s was ++ 526 | 0.2s not +++ 527 | 0.3s found +++ 528 | 0.1s a + 529 | 0.4s helper ++++ 530 | 0.2s fit +++ 531 | 0.2s for ++ 532 | 0.3s him +++ 533 | 0.2s So ++ 534 | 0.1s the + 535 | 0.3s LORD +++ 536 | 0.4s God ++++ 537 | 0.5s caused +++++ 538 | 0.1s a ++ 539 | 0.3s deep ++++ 540 | 0.4s sleep ++++ 541 | 0.1s to ++ 542 | 0.2s fall +++ 543 | 0.3s upon +++ 544 | 0.1s the + 545 | 0.3s man +++ 546 | 0.1s and ++ 547 | 0.2s while +++ 548 | 0.2s he ++ 549 | 0.5s slept ++++++ 550 | 0.6s took ++++++ 551 | 0.2s one ++ 552 | 0.1s of + 553 | 0.2s his ++ 554 | 0.4s ribs +++++ 555 | 0.2s and ++ 556 | 0.4s closed ++++ 557 | 0.1s up ++ 558 | 0.1s its ++ 559 | 0.4s place +++++ 560 | 0.2s with +++ 561 | 0.5s flesh ++++++ 562 | 1.0s ----------- 563 | 0.2s And ++ 564 | 0.1s the ++ 565 | 0.2s rib +++ 566 | 0.1s that + 567 | 0.1s the + 568 | 0.3s LORD +++ 569 | 0.2s God +++ 570 | 0.2s had ++ 571 | 0.3s taken ++++ 572 | 0.2s from ++ 573 | 0.1s the + 574 | 0.5s man +++++ 575 | 0.1s he ++ 576 | 0.4s made ++++ 577 | 0.3s into +++ 578 | 0.1s a ++ 579 | 0.4s woman +++++ 580 | 0.2s and +++ 581 | 0.2s brought +++ 582 | 0.2s her ++ 583 | 0.1s to ++ 584 | 0.1s the + 585 | 0.5s man +++++ 586 | 0.6s Then +++++++ 587 | 0.1s the ++ 588 | 0.3s man +++ 589 | 0.4s said +++++ 590 | 1.5s This +++++++++++++++ 591 | 0.1s at ++ 592 | 0.4s last ++++ 593 | 0.2s is ++ 594 | 0.2s bone +++ 595 | 0.1s of ++ 596 | 0.2s my ++ 597 | 0.8s bones ++++++++ 598 | 0.2s and ++ 599 | 0.3s flesh ++++ 600 | 0.1s of + 601 | 0.2s my ++ 602 | 0.6s flesh ++++++ 603 | 0.2s she ++ 604 | 0.2s shall ++ 605 | 0.1s be + 606 | 0.3s called ++++ 607 | 0.5s Woman +++++ 608 | 0.5s because +++++ 609 | 0.1s she ++ 610 | 0.1s was ++ 611 | 0.3s taken ++++ 612 | 0.1s out ++ 613 | 0.1s of ++ 614 | 0.4s Man +++++ 615 | 1.4s --------------- 616 | 0.5s Therefore +++++ 617 | 0.1s a + 618 | 0.2s man +++ 619 | 0.2s shall ++ 620 | 0.2s leave ++ 621 | 0.2s his ++ 622 | 0.4s father +++++ 623 | 0.1s and ++ 624 | 0.1s his ++ 625 | 0.3s mother ++++ 626 | 0.1s and + 627 | 0.3s hold +++ 628 | 0.4s fast ++++ 629 | 0.1s to + 630 | 0.1s his ++ 631 | 0.4s wife +++++ 632 | 0.1s and ++ 633 | 0.1s they ++ 634 | 0.2s shall ++ 635 | 0.3s become ++++ 636 | 0.4s one ++++ 637 | 0.6s flesh ++++++ 638 | 0.2s And ++ 639 | 0.1s the + 640 | 0.3s man ++++ 641 | 0.2s and ++ 642 | 0.1s his ++ 643 | 0.3s wife ++++ 644 | 0.1s were + 645 | 0.2s both +++ 646 | 0.5s naked ++++++ 647 | 0.2s and ++ 648 | 0.1s were + 649 | 0.2s not +++ 650 | 0.6s ashamed ++++++ 651 | Words left off: 0 652 | -------------------------------------------------------------------------------- /reports/Gen.3: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 682 7 | Words found by aligner: 688 8 | Number of words: 6 9 | All words in the text are reported to be discovered in audio 10 | 0.1s Now ++ 11 | 0.1s the ++ 12 | 0.4s serpent +++++ 13 | 0.2s was ++ 14 | 0.2s more +++ 15 | 0.5s crafty ++++++ 16 | 0.3s than ++++ 17 | 0.1s any ++ 18 | 0.2s other ++ 19 | 0.3s beast ++++ 20 | 0.1s of + 21 | 0.1s the + 22 | 0.4s field +++++ 23 | 0.1s that ++ 24 | 0.1s the + 25 | 0.3s LORD +++ 26 | 0.3s God ++++ 27 | 0.1s had ++ 28 | 0.4s made +++++ 29 | 0.1s He ++ 30 | 0.3s said +++ 31 | 0.1s to + 32 | 0.1s the ++ 33 | 0.4s woman +++++ 34 | 0.4s Did +++++ 35 | 0.4s God +++++ 36 | 0.5s actually ++++++ 37 | 0.7s say +++++++ 38 | 0.2s You +++ 39 | 0.3s shall +++ 40 | 0.2s not +++ 41 | 0.2s eat ++ 42 | 0.1s of + 43 | 0.2s any ++ 44 | 0.3s tree ++++ 45 | 0.1s in ++ 46 | 0.1s the + 47 | 0.5s garden +++++ 48 | 0.1s And ++ 49 | 0.7s the +++++++ 50 | 0.5s woman +++++ 51 | 0.2s said +++ 52 | 0.1s to + 53 | 0.1s the + 54 | 0.5s serpent ++++++ 55 | 0.1s We + 56 | 0.1s may + 57 | 0.5s eat ++++++ 58 | 0.1s of + 59 | 0.1s the ++ 60 | 0.2s fruit +++ 61 | 0.1s of ++ 62 | 0.1s the ++ 63 | 0.4s trees ++++ 64 | 0.1s in ++ 65 | 0.1s the ++ 66 | 0.5s garden ++++++ 67 | 0.2s but ++ 68 | 0.3s God ++++ 69 | 0.4s said ++++ 70 | 0.2s You ++ 71 | 0.2s shall +++ 72 | 0.2s not ++ 73 | 0.2s eat +++ 74 | 0.1s of + 75 | 0.1s the + 76 | 0.2s fruit +++ 77 | 0.1s of + 78 | 0.1s the + 79 | 0.3s tree ++++ 80 | 0.2s that ++ 81 | 0.1s is ++ 82 | 0.1s in + 83 | 0.1s the + 84 | 0.4s midst ++++ 85 | 0.1s of + 86 | 0.1s the + 87 | 0.5s garden +++++ 88 | 0.4s neither ++++ 89 | 0.2s shall +++ 90 | 0.1s you ++ 91 | 0.3s touch ++++ 92 | 0.1s it ++ 93 | 0.3s lest ++++ 94 | 0.1s you ++ 95 | 0.4s die +++++ 96 | 1.3s But ++++++++++++++ 97 | 0.1s the ++ 98 | 0.4s serpent ++++ 99 | 0.2s said +++ 100 | 0.1s to + 101 | 0.1s the ++ 102 | 0.4s woman ++++ 103 | 0.3s You +++ 104 | 0.1s will ++ 105 | 0.2s not +++ 106 | 0.7s surely +++++++ 107 | 0.6s die ++++++ 108 | 0.2s For ++ 109 | 0.3s God ++++ 110 | 0.3s knows ++++ 111 | 0.1s that ++ 112 | 0.2s when ++ 113 | 0.1s you ++ 114 | 0.2s eat ++ 115 | 0.1s of ++ 116 | 0.1s it ++ 117 | 0.2s your +++ 118 | 0.3s eyes +++ 119 | 0.1s will ++ 120 | 0.2s be ++ 121 | 0.6s opened ++++++ 122 | 0.2s and ++ 123 | 0.1s you ++ 124 | 0.1s will ++ 125 | 0.1s be ++ 126 | 0.3s like +++ 127 | 0.7s God +++++++ 128 | 0.6s knowing +++++++ 129 | 0.2s good +++ 130 | 0.1s and ++ 131 | 0.6s evil ++++++ 132 | 0.2s So ++ 133 | 0.1s when ++ 134 | 0.1s the + 135 | 0.2s woman +++ 136 | 0.3s saw +++ 137 | 0.1s that ++ 138 | 0.1s the + 139 | 0.2s tree +++ 140 | 0.2s was ++ 141 | 0.4s good ++++ 142 | 0.1s for ++ 143 | 0.6s food ++++++ 144 | 0.2s and +++ 145 | 0.1s that ++ 146 | 0.1s it + 147 | 0.2s was ++ 148 | 0.1s a + 149 | 0.5s delight +++++ 150 | 0.1s to + 151 | 0.2s the ++ 152 | 0.4s eyes +++++ 153 | 0.1s and ++ 154 | 0.1s that ++ 155 | 0.1s the + 156 | 0.3s tree ++++ 157 | 0.2s was ++ 158 | 0.1s to ++ 159 | 0.1s be ++ 160 | 0.6s desired +++++++ 161 | 0.1s to + 162 | 0.2s make +++ 163 | 0.3s one +++ 164 | 0.7s wise +++++++ 165 | 0.2s she ++ 166 | 0.2s took +++ 167 | 0.1s of + 168 | 0.2s its ++ 169 | 0.4s fruit +++++ 170 | 0.2s and +++ 171 | 0.3s ate ++++ 172 | 0.2s and ++ 173 | 0.2s she ++ 174 | 0.3s also +++ 175 | 0.2s gave +++ 176 | 0.2s some +++ 177 | 0.1s to ++ 178 | 0.1s her ++ 179 | 0.5s husband +++++ 180 | 0.1s who + 181 | 0.1s was ++ 182 | 0.2s with +++ 183 | 0.3s her +++ 184 | 0.1s and ++ 185 | 0.3s he ++++ 186 | 0.3s ate +++ 187 | 0.7s Then +++++++ 188 | 0.2s the ++ 189 | 0.4s eyes +++++ 190 | 0.1s of ++ 191 | 0.3s both ++++ 192 | 0.2s were ++ 193 | 0.5s opened +++++ 194 | 0.1s and ++ 195 | 0.1s they ++ 196 | 0.5s knew ++++++ 197 | 0.2s that ++ 198 | 0.1s they ++ 199 | 0.1s were ++ 200 | 0.4s naked +++++ 201 | 0.2s And ++ 202 | 0.1s they + 203 | 0.3s sewed ++++ 204 | 0.3s fig ++++ 205 | 0.3s leaves +++ 206 | 0.5s together +++++ 207 | 0.1s and + 208 | 0.2s made +++ 209 | 0.6s themselves +++++++ 210 | 1.0s loincloths +++++++++++ 211 | 0.6s ------- 212 | 0.2s And ++ 213 | 0.1s they ++ 214 | 0.3s heard +++ 215 | 0.1s the + 216 | 0.4s sound ++++ 217 | 0.1s of + 218 | 0.1s the ++ 219 | 0.3s LORD +++ 220 | 0.3s God ++++ 221 | 0.4s walking +++++ 222 | 0.1s in ++ 223 | 0.1s the + 224 | 0.5s garden ++++++ 225 | 0.1s in ++ 226 | 0.1s the ++ 227 | 0.4s cool +++++ 228 | 0.1s of + 229 | 0.1s the ++ 230 | 0.4s day ++++ 231 | 0.1s and + 232 | 0.1s the + 233 | 0.3s man ++++ 234 | 0.1s and + 235 | 0.1s his ++ 236 | 0.3s wife ++++ 237 | 0.3s hid +++ 238 | 0.5s themselves ++++++ 239 | 0.2s from ++ 240 | 0.1s the ++ 241 | 0.4s presence ++++ 242 | 0.1s of + 243 | 0.1s the + 244 | 0.3s LORD +++ 245 | 0.3s God ++++ 246 | 0.2s among ++ 247 | 0.1s the + 248 | 0.4s trees ++++ 249 | 0.1s of + 250 | 0.1s the + 251 | 0.5s garden +++++ 252 | 0.6s But +++++++ 253 | 0.1s the ++ 254 | 0.2s LORD +++ 255 | 0.3s God ++++ 256 | 0.4s called ++++ 257 | 0.1s to + 258 | 0.1s the + 259 | 0.3s man ++++ 260 | 0.1s and ++ 261 | 0.3s said +++ 262 | 0.1s to ++ 263 | 0.2s him +++ 264 | 1.0s Where ++++++++++ 265 | 0.2s are ++ 266 | 0.2s you +++ 267 | 0.2s And +++ 268 | 0.1s he + 269 | 0.4s said +++++ 270 | 0.3s I +++ 271 | 0.3s heard ++++ 272 | 0.1s the ++ 273 | 0.3s sound ++++ 274 | 0.1s of + 275 | 0.1s you + 276 | 0.1s in + 277 | 0.1s the + 278 | 0.4s garden ++++ 279 | 0.2s and ++ 280 | 0.2s I ++ 281 | 0.3s was ++++ 282 | 0.4s afraid +++++ 283 | 0.3s because +++ 284 | 0.1s I + 285 | 0.2s was ++ 286 | 0.5s naked +++++ 287 | 0.2s and +++ 288 | 0.1s I + 289 | 0.2s hid +++ 290 | 0.5s myself ++++++ 291 | 1.2s ------------- 292 | 0.2s He ++ 293 | 0.5s said +++++ 294 | 0.2s Who +++ 295 | 0.2s --- 296 | 0.3s told ++++ 297 | 0.2s you ++ 298 | 0.1s that ++ 299 | 0.2s you ++ 300 | 0.1s were + 301 | 0.6s naked ++++++ 302 | 0.2s Have +++ 303 | 0.1s you ++ 304 | 0.3s eaten +++ 305 | 0.1s of + 306 | 0.1s the + 307 | 0.3s tree ++++ 308 | 0.1s of + 309 | 0.2s which ++ 310 | 0.1s I + 311 | 0.5s commanded +++++ 312 | 0.1s you ++ 313 | 0.3s not ++++ 314 | 0.1s to ++ 315 | 0.3s eat +++ 316 | 0.8s The ++++++++ 317 | 0.3s man +++ 318 | 0.3s said +++ 319 | 0.3s The ++++ 320 | 0.7s woman ++++++++ 321 | 0.2s whom ++ 322 | 0.1s you + 323 | 0.3s gave ++++ 324 | 0.1s to + 325 | 0.1s be ++ 326 | 0.2s with +++ 327 | 0.2s me ++ 328 | 0.3s she ++++ 329 | 0.3s gave +++ 330 | 0.1s me ++ 331 | 0.3s fruit +++ 332 | 0.1s of + 333 | 0.1s the + 334 | 0.3s tree ++++ 335 | 0.1s and ++ 336 | 0.2s I ++ 337 | 0.4s ate +++++ 338 | 1.1s Then ++++++++++++ 339 | 0.1s the + 340 | 0.2s LORD +++ 341 | 0.2s God +++ 342 | 0.2s said +++ 343 | 0.1s to + 344 | 0.1s the + 345 | 0.4s woman ++++ 346 | 1.3s What +++++++++++++ 347 | 0.2s is ++ 348 | 0.2s this ++ 349 | 0.1s that + 350 | 0.2s you ++ 351 | 0.1s have + 352 | 0.5s done +++++ 353 | 0.7s The ++++++++ 354 | 0.3s woman +++ 355 | 0.4s said ++++ 356 | 0.8s The +++++++++ 357 | 0.5s serpent ++++++ 358 | 0.5s deceived ++++++ 359 | 0.1s me ++ 360 | 0.2s and ++ 361 | 0.1s I ++ 362 | 0.4s ate +++++ 363 | 1.0s The +++++++++++ 364 | 0.3s LORD ++++ 365 | 0.3s God +++ 366 | 0.3s said +++ 367 | 0.1s to + 368 | 0.1s the ++ 369 | 0.5s serpent ++++++ 370 | 1.3s Because +++++++++++++ 371 | 0.1s you + 372 | 0.2s have ++ 373 | 0.3s done +++ 374 | 0.5s this +++++ 375 | 0.8s cursed +++++++++ 376 | 0.1s are ++ 377 | 0.2s you ++ 378 | 0.3s above +++ 379 | 0.3s all +++ 380 | 0.7s livestock ++++++++ 381 | 0.1s and ++ 382 | 0.2s above +++ 383 | 0.3s all ++++ 384 | 0.4s beasts +++++ 385 | 0.1s of + 386 | 0.1s the + 387 | 0.5s field ++++++ 388 | 0.8s -------- 389 | 0.1s on ++ 390 | 0.2s your ++ 391 | 0.4s belly ++++ 392 | 0.1s you ++ 393 | 0.2s shall +++ 394 | 0.4s go +++++ 395 | 0.2s and ++ 396 | 0.4s dust ++++ 397 | 0.1s you ++ 398 | 0.2s shall +++ 399 | 0.3s eat +++ 400 | 0.2s all ++ 401 | 0.1s the ++ 402 | 0.3s days +++ 403 | 0.1s of + 404 | 0.2s your ++ 405 | 0.4s life +++++ 406 | 0.9s --------- 407 | 0.2s I +++ 408 | 0.2s will ++ 409 | 0.3s put +++ 410 | 0.5s enmity ++++++ 411 | 0.3s between ++++ 412 | 0.1s you ++ 413 | 0.2s and +++ 414 | 0.1s the + 415 | 0.4s woman +++++ 416 | 0.1s and ++ 417 | 0.3s between +++ 418 | 0.3s your +++ 419 | 0.6s offspring +++++++ 420 | 0.2s and ++ 421 | 0.2s her +++ 422 | 0.6s offspring ++++++ 423 | 0.2s he +++ 424 | 0.3s shall +++ 425 | 0.4s bruise +++++ 426 | 0.2s your +++ 427 | 0.4s head ++++ 428 | 0.2s and ++ 429 | 0.1s you ++ 430 | 0.2s shall +++ 431 | 0.3s bruise ++++ 432 | 0.2s his +++ 433 | 0.5s heel +++++ 434 | 0.5s To +++++ 435 | 0.8s the +++++++++ 436 | 0.4s woman +++++ 437 | 0.1s he + 438 | 0.4s said ++++ 439 | 0.3s I +++ 440 | 0.2s will ++ 441 | 0.4s surely ++++ 442 | 0.6s multiply ++++++ 443 | 0.2s your +++ 444 | 0.4s pain +++++ 445 | 0.1s in ++ 446 | 0.8s childbearing +++++++++ 447 | 0.2s in +++ 448 | 0.4s pain +++++ 449 | 0.1s you ++ 450 | 0.2s shall +++ 451 | 0.3s bring +++ 452 | 0.3s forth +++ 453 | 0.5s children ++++++ 454 | 0.3s Your +++ 455 | 0.5s desire +++++ 456 | 0.2s shall ++ 457 | 0.1s be ++ 458 | 0.1s for ++ 459 | 0.1s your ++ 460 | 0.5s husband ++++++ 461 | 0.1s and ++ 462 | 0.2s he +++ 463 | 0.3s shall ++++ 464 | 0.4s rule +++++ 465 | 0.2s over ++ 466 | 0.3s you +++ 467 | 0.2s And +++ 468 | 0.2s to ++ 469 | 0.4s Adam ++++ 470 | 0.1s he ++ 471 | 0.4s said ++++ 472 | 1.1s Because ++++++++++++ 473 | 0.1s you ++ 474 | 0.1s have + 475 | 0.3s listened ++++ 476 | 0.1s to + 477 | 0.1s the + 478 | 0.3s voice ++++ 479 | 0.1s of ++ 480 | 0.2s your ++ 481 | 0.3s wife ++++ 482 | 0.1s and ++ 483 | 0.1s have ++ 484 | 0.4s eaten ++++ 485 | 0.1s of + 486 | 0.1s the + 487 | 0.3s tree ++++ 488 | 0.1s of ++ 489 | 0.2s which +++ 490 | 0.1s I ++ 491 | 0.6s commanded ++++++ 492 | 0.2s you +++ 493 | 0.1s You ++ 494 | 0.2s shall +++ 495 | 0.2s not +++ 496 | 0.2s eat ++ 497 | 0.1s of ++ 498 | 0.2s it +++ 499 | 0.9s cursed ++++++++++ 500 | 0.2s is ++ 501 | 0.2s the ++ 502 | 0.5s ground +++++ 503 | 0.3s because ++++ 504 | 0.1s of ++ 505 | 0.3s you +++ 506 | 0.7s in +++++++ 507 | 0.4s pain +++++ 508 | 0.1s you ++ 509 | 0.2s shall +++ 510 | 0.1s eat ++ 511 | 0.1s of + 512 | 0.1s it + 513 | 0.2s all ++ 514 | 0.1s the ++ 515 | 0.3s days +++ 516 | 0.1s of + 517 | 0.2s your ++ 518 | 0.4s life +++++ 519 | 0.5s thorns ++++++ 520 | 0.3s and +++ 521 | 0.4s thistles ++++ 522 | 0.1s it + 523 | 0.2s shall ++ 524 | 0.2s bring +++ 525 | 0.3s forth ++++ 526 | 0.2s for ++ 527 | 0.2s you +++ 528 | 0.3s and ++++ 529 | 0.1s you ++ 530 | 0.2s shall +++ 531 | 0.2s eat +++ 532 | 0.1s the ++ 533 | 0.4s plants +++++ 534 | 0.1s of + 535 | 0.1s the + 536 | 0.5s field ++++++ 537 | 0.5s By ++++++ 538 | 0.1s the ++ 539 | 0.3s sweat ++++ 540 | 0.1s of + 541 | 0.1s your ++ 542 | 0.4s face +++++ 543 | 0.1s you ++ 544 | 0.2s shall +++ 545 | 0.2s eat ++ 546 | 0.4s bread +++++ 547 | 0.2s till ++ 548 | 0.1s you ++ 549 | 0.5s return ++++++ 550 | 0.1s to + 551 | 0.1s the ++ 552 | 0.6s ground ++++++ 553 | 0.2s for +++ 554 | 0.2s out ++ 555 | 0.1s of + 556 | 0.1s it ++ 557 | 0.1s you ++ 558 | 0.1s were + 559 | 0.5s taken +++++ 560 | 0.2s for +++ 561 | 0.4s you ++++ 562 | 0.2s are ++ 563 | 0.5s dust ++++++ 564 | 0.5s and ++++++ 565 | 0.2s to ++ 566 | 0.4s dust ++++ 567 | 0.2s you ++ 568 | 0.3s shall +++ 569 | 0.6s return ++++++ 570 | 0.5s The ++++++ 571 | 0.3s man +++ 572 | 0.3s called ++++ 573 | 0.2s his ++ 574 | 0.4s wife's ++++ 575 | 0.4s name ++++ 576 | 0.5s Eve ++++++ 577 | 0.4s because +++++ 578 | 0.1s she ++ 579 | 0.2s was ++ 580 | 0.1s the + 581 | 0.3s mother ++++ 582 | 0.1s of ++ 583 | 0.2s all +++ 584 | 0.4s living +++++ 585 | 0.1s And ++ 586 | 0.1s the + 587 | 0.3s LORD +++ 588 | 0.3s God +++ 589 | 0.2s made +++ 590 | 0.2s for ++ 591 | 0.3s Adam ++++ 592 | 0.1s and ++ 593 | 0.1s for ++ 594 | 0.1s his ++ 595 | 0.3s wife ++++ 596 | 0.5s garments +++++ 597 | 0.1s of ++ 598 | 0.7s skins +++++++ 599 | 0.2s and ++ 600 | 0.5s clothed +++++ 601 | 0.5s them +++++ 602 | 0.3s Then ++++ 603 | 0.1s the + 604 | 0.3s LORD ++++ 605 | 0.3s God +++ 606 | 0.4s said +++++ 607 | 0.9s Behold ++++++++++ 608 | 0.1s the + 609 | 0.2s man +++ 610 | 0.2s has ++ 611 | 0.3s become ++++ 612 | 0.2s like ++ 613 | 0.2s one ++ 614 | 0.1s of + 615 | 0.3s us ++++ 616 | 0.2s in ++ 617 | 0.4s knowing ++++ 618 | 0.3s good +++ 619 | 0.1s and ++ 620 | 0.4s evil +++++ 621 | 0.3s Now ++++ 622 | 0.2s lest +++ 623 | 0.1s he + 624 | 0.3s reach +++ 625 | 0.2s out ++ 626 | 0.2s his ++ 627 | 0.3s hand ++++ 628 | 0.1s and + 629 | 0.2s take ++ 630 | 0.3s also ++++ 631 | 0.1s of + 632 | 0.1s the + 633 | 0.2s tree +++ 634 | 0.1s of ++ 635 | 0.4s life ++++ 636 | 0.2s and ++ 637 | 0.3s eat ++++ 638 | 0.2s and ++ 639 | 0.2s live +++ 640 | 0.6s forever ++++++ 641 | 0.5s therefore +++++ 642 | 0.1s the + 643 | 0.3s LORD +++ 644 | 0.3s God +++ 645 | 0.2s sent +++ 646 | 0.1s him ++ 647 | 0.2s out +++ 648 | 0.2s from ++ 649 | 0.1s the + 650 | 0.3s garden ++++ 651 | 0.1s of ++ 652 | 0.3s Eden +++ 653 | 0.2s to ++ 654 | 0.3s work +++ 655 | 0.1s the + 656 | 0.5s ground +++++ 657 | 0.2s from ++ 658 | 0.2s which ++ 659 | 0.1s he + 660 | 0.2s was ++ 661 | 0.4s taken +++++ 662 | 1.1s ----------- 663 | 0.2s He +++ 664 | 0.4s drove ++++ 665 | 0.2s out +++ 666 | 0.1s the ++ 667 | 0.3s man +++ 668 | 0.3s and +++ 669 | 0.2s at +++ 670 | 0.1s the ++ 671 | 0.3s east ++++ 672 | 0.1s of + 673 | 0.1s the + 674 | 0.3s garden ++++ 675 | 0.1s of ++ 676 | 0.3s Eden +++ 677 | 0.2s he ++ 678 | 0.3s placed ++++ 679 | 0.1s the + 680 | 0.7s cherubim ++++++++ 681 | 0.1s and ++ 682 | 0.1s a + 683 | 0.5s flaming +++++ 684 | 0.4s sword +++++ 685 | 0.2s that ++ 686 | 0.4s turned +++++ 687 | 0.3s every +++ 688 | 0.3s way ++++ 689 | 0.2s to ++ 690 | 0.4s guard +++++ 691 | 0.1s the ++ 692 | 0.2s way +++ 693 | 0.1s to ++ 694 | 0.1s the + 695 | 0.2s tree +++ 696 | 0.1s of + 697 | 0.4s life +++++ 698 | Words left off: 0 699 | -------------------------------------------------------------------------------- /reports/Col.1: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 620 7 | Words found by aligner: 624 8 | Number of words: 4 9 | All words in the text are reported to be discovered in audio 10 | 1.3s ------------- 11 | 0.3s Paul +++ 12 | 0.2s -- 13 | 0.1s an ++ 14 | 0.5s apostle +++++ 15 | 0.1s of ++ 16 | 0.3s Christ ++++ 17 | 0.4s Jesus +++++ 18 | 0.1s by ++ 19 | 0.1s the ++ 20 | 0.2s will ++ 21 | 0.1s of + 22 | 0.5s God +++++ 23 | 0.2s and ++ 24 | 0.4s Timothy ++++ 25 | 0.1s our ++ 26 | 0.5s brother +++++ 27 | 0.5s To ++++++ 28 | 0.1s the ++ 29 | 0.4s saints +++++ 30 | 0.1s and ++ 31 | 0.4s faithful ++++ 32 | 0.4s brothers +++++ 33 | 0.1s in ++ 34 | 0.4s Christ +++++ 35 | 0.1s at + 36 | 0.4s Colossae ++++ 37 | 0.4s Grace +++++ 38 | 0.2s to ++ 39 | 0.2s you ++ 40 | 0.3s and ++++ 41 | 0.3s peace ++++ 42 | 0.2s from +++ 43 | 0.3s God +++ 44 | 0.2s our ++ 45 | 0.5s Father +++++ 46 | 0.2s We +++ 47 | 0.4s always +++++ 48 | 0.4s thank ++++ 49 | 0.3s God ++++ 50 | 0.1s the + 51 | 0.4s Father ++++ 52 | 0.1s of + 53 | 0.2s our ++ 54 | 0.2s Lord +++ 55 | 0.3s Jesus ++++ 56 | 0.5s Christ +++++ 57 | 0.2s when ++ 58 | 0.1s we ++ 59 | 0.2s pray +++ 60 | 0.2s for ++ 61 | 0.2s you +++ 62 | 0.2s since +++ 63 | 0.1s we ++ 64 | 0.3s heard +++ 65 | 0.1s of + 66 | 0.1s your ++ 67 | 0.3s faith ++++ 68 | 0.1s in ++ 69 | 0.4s Christ ++++ 70 | 0.6s Jesus ++++++ 71 | 0.4s and +++++ 72 | 0.1s of + 73 | 0.1s the ++ 74 | 0.3s love ++++ 75 | 0.1s that ++ 76 | 0.1s you + 77 | 0.3s have ++++ 78 | 0.2s for ++ 79 | 0.2s all ++ 80 | 0.1s the ++ 81 | 0.6s saints ++++++ 82 | 0.4s because +++++ 83 | 0.1s of ++ 84 | 0.1s the ++ 85 | 0.3s hope ++++ 86 | 0.2s laid +++ 87 | 0.2s up ++ 88 | 0.1s for ++ 89 | 0.1s you ++ 90 | 0.1s in + 91 | 0.4s heaven ++++ 92 | 0.2s Of ++ 93 | 0.2s this +++ 94 | 0.2s you ++ 95 | 0.1s have + 96 | 0.2s heard +++ 97 | 0.4s before ++++ 98 | 0.1s in + 99 | 0.1s the + 100 | 0.2s word +++ 101 | 0.1s of + 102 | 0.1s the ++ 103 | 0.4s truth ++++ 104 | 0.1s the ++ 105 | 0.5s gospel ++++++ 106 | 0.4s which +++++ 107 | 0.1s has ++ 108 | 0.3s come +++ 109 | 0.1s to ++ 110 | 0.2s you +++ 111 | 0.2s as +++ 112 | 0.3s indeed ++++ 113 | 0.1s in + 114 | 0.1s the + 115 | 0.4s whole ++++ 116 | 0.4s world ++++ 117 | 0.1s it ++ 118 | 0.1s is ++ 119 | 0.3s bearing ++++ 120 | 0.3s fruit ++++ 121 | 0.2s and ++ 122 | 0.4s growing--as +++++ 123 | 0.1s it ++ 124 | 0.2s also ++ 125 | 0.3s does +++ 126 | 0.4s ----- 127 | 0.2s among +++ 128 | 0.4s you ++++ 129 | 0.3s since ++++ 130 | 0.1s the ++ 131 | 0.2s day +++ 132 | 0.1s you ++ 133 | 0.3s heard ++++ 134 | 0.2s it ++ 135 | 0.1s and ++ 136 | 0.5s understood +++++ 137 | 0.1s the + 138 | 0.4s grace ++++ 139 | 0.1s of ++ 140 | 0.4s God ++++ 141 | 0.1s in ++ 142 | 0.4s truth +++++ 143 | 0.4s just +++++ 144 | 0.1s as ++ 145 | 0.1s you ++ 146 | 0.2s learned +++ 147 | 0.1s it ++ 148 | 0.2s from ++ 149 | 0.6s Epaphras +++++++ 150 | 0.2s our ++ 151 | 0.4s beloved +++++ 152 | 0.2s fellow +++ 153 | 0.5s servant +++++ 154 | 0.1s He ++ 155 | 0.1s is ++ 156 | 0.1s a ++ 157 | 0.4s faithful ++++ 158 | 0.5s minister +++++ 159 | 0.1s of ++ 160 | 0.5s Christ +++++ 161 | 0.1s on ++ 162 | 0.2s your ++ 163 | 0.6s behalf ++++++ 164 | 0.2s and +++ 165 | 0.1s has ++ 166 | 0.2s made +++ 167 | 0.3s known +++ 168 | 0.2s to ++ 169 | 0.2s us ++ 170 | 0.2s your ++ 171 | 0.3s love +++ 172 | 0.1s in ++ 173 | 0.1s the + 174 | 0.5s Spirit +++++ 175 | 0.2s And ++ 176 | 0.2s so +++ 177 | 0.2s from ++ 178 | 0.1s the ++ 179 | 0.2s day +++ 180 | 0.2s we ++ 181 | 0.5s heard +++++ 182 | 0.2s we ++ 183 | 0.2s have ++ 184 | 0.3s not +++ 185 | 0.5s ceased ++++++ 186 | 0.1s to ++ 187 | 0.3s pray ++++ 188 | 0.2s for +++ 189 | 0.2s you +++ 190 | 0.4s asking +++++ 191 | 0.1s that ++ 192 | 0.1s you ++ 193 | 0.2s may ++ 194 | 0.1s be ++ 195 | 0.5s filled ++++++ 196 | 0.1s with ++ 197 | 0.1s the ++ 198 | 0.4s knowledge +++++ 199 | 0.1s of + 200 | 0.2s his ++ 201 | 0.4s will +++++ 202 | 0.2s in +++ 203 | 0.3s all ++++ 204 | 0.6s spiritual ++++++ 205 | 0.6s wisdom ++++++ 206 | 0.1s and ++ 207 | 0.8s understanding ++++++++ 208 | 0.2s so +++ 209 | 0.1s as + 210 | 0.1s to ++ 211 | 0.4s walk ++++ 212 | 0.1s in ++ 213 | 0.1s a + 214 | 0.4s manner ++++ 215 | 0.4s worthy ++++ 216 | 0.1s of + 217 | 0.1s the + 218 | 0.5s Lord +++++ 219 | 0.4s fully +++++ 220 | 0.6s pleasing ++++++ 221 | 0.1s to + 222 | 0.6s him +++++++ 223 | 0.5s bearing +++++ 224 | 0.4s fruit +++++ 225 | 0.2s in ++ 226 | 0.3s every +++ 227 | 0.2s good +++ 228 | 0.4s work ++++ 229 | 0.1s and ++ 230 | 0.6s increasing +++++++ 231 | 0.1s in + 232 | 0.1s the + 233 | 0.4s knowledge ++++ 234 | 0.1s of ++ 235 | 0.5s God +++++ 236 | 0.3s May +++ 237 | 0.2s you +++ 238 | 0.1s be ++ 239 | 0.6s strengthened +++++++ 240 | 0.2s with ++ 241 | 0.3s all ++++ 242 | 0.5s power ++++++ 243 | 0.5s according +++++ 244 | 0.1s to ++ 245 | 0.2s his ++ 246 | 0.7s glorious +++++++ 247 | 0.4s might +++++ 248 | 0.2s for ++ 249 | 0.3s all +++ 250 | 0.7s endurance ++++++++ 251 | 0.2s and ++ 252 | 0.5s patience +++++ 253 | 0.2s with +++ 254 | 0.5s joy ++++++ 255 | 0.3s giving +++ 256 | 0.4s thanks ++++ 257 | 0.1s to ++ 258 | 0.1s the + 259 | 0.5s Father ++++++ 260 | 0.1s who ++ 261 | 0.2s has ++ 262 | 0.7s qualified +++++++ 263 | 0.3s you +++ 264 | 0.2s to ++ 265 | 0.6s share ++++++ 266 | 0.2s in +++ 267 | 0.1s the + 268 | 0.7s inheritance +++++++ 269 | 0.1s of + 270 | 0.1s the ++ 271 | 0.4s saints +++++ 272 | 0.2s in ++ 273 | 0.4s light ++++ 274 | 0.2s He +++ 275 | 0.2s has +++ 276 | 0.5s delivered +++++ 277 | 0.2s us ++ 278 | 0.2s from ++ 279 | 0.1s the ++ 280 | 0.5s domain +++++ 281 | 0.1s of ++ 282 | 0.7s darkness +++++++ 283 | 0.6s and +++++++ 284 | 0.7s transferred +++++++ 285 | 0.2s us +++ 286 | 0.1s to ++ 287 | 0.1s the ++ 288 | 0.6s kingdom +++++++ 289 | 0.1s of ++ 290 | 0.2s his ++ 291 | 0.4s beloved +++++ 292 | 0.4s Son +++++ 293 | 0.3s in +++ 294 | 0.3s whom ++++ 295 | 0.2s we +++ 296 | 0.3s have +++ 297 | 0.7s redemption ++++++++ 298 | 0.1s the ++ 299 | 0.6s forgiveness ++++++ 300 | 0.1s of ++ 301 | 0.6s sins +++++++ 302 | 0.2s He +++ 303 | 0.2s is ++ 304 | 0.2s the ++ 305 | 0.4s image +++++ 306 | 0.1s of ++ 307 | 0.1s the ++ 308 | 0.6s invisible ++++++ 309 | 0.5s God ++++++ 310 | 0.1s the ++ 311 | 0.6s firstborn +++++++ 312 | 0.1s of + 313 | 0.2s all +++ 314 | 0.7s creation ++++++++ 315 | 0.5s For +++++ 316 | 0.3s by +++ 317 | 0.4s him ++++ 318 | 0.3s all +++ 319 | 0.3s things +++ 320 | 0.1s were ++ 321 | 0.6s created +++++++ 322 | 0.2s in ++ 323 | 0.5s heaven ++++++ 324 | 0.2s and ++ 325 | 0.1s on ++ 326 | 0.3s earth ++++ 327 | 0.7s visible +++++++ 328 | 0.2s and ++ 329 | 0.6s invisible +++++++ 330 | 0.8s whether +++++++++ 331 | 0.6s thrones +++++++ 332 | 0.1s or + 333 | 0.6s dominions +++++++ 334 | 0.4s or ++++ 335 | 0.5s rulers +++++ 336 | 0.1s or ++ 337 | 0.6s authorities--all +++++++ 338 | 0.3s --- 339 | 0.3s things +++ 340 | 0.1s were ++ 341 | 0.5s created ++++++ 342 | 0.3s through ++++ 343 | 0.3s him ++++ 344 | 0.1s and ++ 345 | 0.3s for +++ 346 | 0.3s him +++ 347 | 0.2s And ++ 348 | 0.2s he ++ 349 | 0.2s is +++ 350 | 0.6s before ++++++ 351 | 0.2s all +++ 352 | 0.5s things +++++ 353 | 0.5s and ++++++ 354 | 0.2s in +++ 355 | 0.3s him ++++ 356 | 0.4s all ++++ 357 | 0.3s things ++++ 358 | 0.4s hold +++++ 359 | 0.6s together +++++++ 360 | 0.2s And ++ 361 | 0.1s he ++ 362 | 0.2s is ++ 363 | 0.1s the + 364 | 0.2s head ++ 365 | 0.1s of + 366 | 0.1s the ++ 367 | 0.4s body ++++ 368 | 0.1s the ++ 369 | 0.6s church ++++++ 370 | 0.2s He +++ 371 | 0.2s is ++ 372 | 0.1s the + 373 | 0.5s beginning ++++++ 374 | 0.1s the ++ 375 | 0.7s firstborn +++++++ 376 | 0.1s from ++ 377 | 0.1s the ++ 378 | 0.4s dead ++++ 379 | 0.3s that ++++ 380 | 0.2s in ++ 381 | 0.5s everything ++++++ 382 | 0.2s he +++ 383 | 0.2s might +++ 384 | 0.2s be ++ 385 | 0.7s preeminent +++++++ 386 | 0.3s For +++ 387 | 0.2s in ++ 388 | 0.3s him ++++ 389 | 0.3s all +++ 390 | 0.1s the ++ 391 | 0.5s fullness ++++++ 392 | 0.1s of ++ 393 | 0.4s God ++++ 394 | 0.1s was ++ 395 | 0.4s pleased ++++ 396 | 0.1s to + 397 | 0.5s dwell +++++ 398 | 0.2s and +++ 399 | 0.3s through ++++ 400 | 0.2s him +++ 401 | 0.2s to ++ 402 | 0.6s reconcile +++++++ 403 | 0.1s to ++ 404 | 0.5s himself +++++ 405 | 0.3s all +++ 406 | 0.6s things ++++++ 407 | 0.4s whether +++++ 408 | 0.2s on ++ 409 | 0.3s earth ++++ 410 | 0.2s or ++ 411 | 0.1s in ++ 412 | 0.4s heaven ++++ 413 | 0.4s making ++++ 414 | 0.4s peace +++++ 415 | 0.2s by ++ 416 | 0.1s the ++ 417 | 0.3s blood +++ 418 | 0.1s of + 419 | 0.2s his ++ 420 | 0.6s cross ++++++ 421 | 0.2s And +++ 422 | 0.3s you ++++ 423 | 0.2s who +++ 424 | 0.3s once +++ 425 | 0.1s were + 426 | 0.7s alienated +++++++ 427 | 0.1s and + 428 | 0.6s hostile ++++++ 429 | 0.2s in ++ 430 | 0.5s mind ++++++ 431 | 0.5s doing ++++++ 432 | 0.4s evil +++++ 433 | 0.6s deeds ++++++ 434 | 0.2s he ++ 435 | 0.2s has ++ 436 | 0.2s now ++ 437 | 0.8s reconciled ++++++++ 438 | 0.1s in ++ 439 | 0.2s his ++ 440 | 0.3s body ++++ 441 | 0.1s of ++ 442 | 0.3s flesh ++++ 443 | 0.2s by +++ 444 | 0.2s his ++ 445 | 0.3s death ++++ 446 | 0.3s in ++++ 447 | 0.3s order +++ 448 | 0.1s to ++ 449 | 0.4s present ++++ 450 | 0.2s you ++ 451 | 0.6s holy ++++++ 452 | 0.2s and +++ 453 | 0.6s blameless +++++++ 454 | 0.2s and +++ 455 | 0.4s above ++++ 456 | 0.5s reproach ++++++ 457 | 0.4s before +++++ 458 | 0.2s him +++ 459 | 0.2s if ++ 460 | 0.4s indeed ++++ 461 | 0.1s you ++ 462 | 0.5s continue ++++++ 463 | 0.1s in + 464 | 0.1s the + 465 | 0.4s faith ++++ 466 | 0.6s stable ++++++ 467 | 0.1s and ++ 468 | 0.7s steadfast ++++++++ 469 | 0.2s not +++ 470 | 0.5s shifting +++++ 471 | 0.1s from ++ 472 | 0.1s the + 473 | 0.3s hope +++ 474 | 0.1s of + 475 | 0.1s the + 476 | 0.4s gospel ++++ 477 | 0.2s that ++ 478 | 0.2s you ++ 479 | 0.4s heard ++++ 480 | 0.2s which +++ 481 | 0.1s has ++ 482 | 0.2s been ++ 483 | 0.6s proclaimed +++++++ 484 | 0.1s in + 485 | 0.2s all +++ 486 | 0.6s creation ++++++ 487 | 0.2s under +++ 488 | 0.4s heaven ++++ 489 | 0.2s and ++ 490 | 0.1s of + 491 | 0.2s which +++ 492 | 0.3s I +++ 493 | 0.5s Paul ++++++ 494 | 0.3s became ++++ 495 | 0.0s a + 496 | 0.6s minister ++++++ 497 | 0.3s Now ++++ 498 | 0.1s I ++ 499 | 0.5s rejoice ++++++ 500 | 0.1s in ++ 501 | 0.2s my ++ 502 | 0.6s sufferings ++++++ 503 | 0.2s for ++ 504 | 0.2s your ++ 505 | 0.5s sake +++++ 506 | 0.1s and ++ 507 | 0.1s in ++ 508 | 0.1s my ++ 509 | 0.5s flesh +++++ 510 | 0.2s I ++ 511 | 0.2s am ++ 512 | 0.4s filling +++++ 513 | 0.2s up ++ 514 | 0.1s what ++ 515 | 0.2s is ++ 516 | 0.4s lacking +++++ 517 | 0.1s in ++ 518 | 0.5s Christ's +++++ 519 | 0.7s afflictions +++++++ 520 | 0.2s for ++ 521 | 0.1s the + 522 | 0.2s sake +++ 523 | 0.1s of + 524 | 0.2s his ++ 525 | 0.4s body +++++ 526 | 0.2s that ++ 527 | 0.2s is +++ 528 | 0.1s the ++ 529 | 0.5s church +++++ 530 | 0.3s of +++ 531 | 0.2s which +++ 532 | 0.1s I ++ 533 | 0.4s became ++++ 534 | 0.1s a + 535 | 0.6s minister ++++++ 536 | 0.4s according ++++ 537 | 0.1s to + 538 | 0.1s the ++ 539 | 0.6s stewardship ++++++ 540 | 0.2s from +++ 541 | 0.4s God +++++ 542 | 0.2s that ++ 543 | 0.2s was ++ 544 | 0.4s given ++++ 545 | 0.1s to ++ 546 | 0.2s me ++ 547 | 0.2s for ++ 548 | 0.4s you +++++ 549 | 0.1s to ++ 550 | 0.3s make +++ 551 | 0.1s the ++ 552 | 0.2s word +++ 553 | 0.1s of ++ 554 | 0.4s God +++++ 555 | 0.4s fully +++++ 556 | 0.5s known +++++ 557 | 0.1s the ++ 558 | 0.7s mystery +++++++ 559 | 0.5s hidden +++++ 560 | 0.2s for +++ 561 | 0.6s ages ++++++ 562 | 0.1s and ++ 563 | 0.8s generations +++++++++ 564 | 0.2s but +++ 565 | 0.3s now +++ 566 | 0.5s revealed ++++++ 567 | 0.1s to ++ 568 | 0.2s his ++ 569 | 0.6s saints +++++++ 570 | 1.0s To +++++++++++ 571 | 0.3s them ++++ 572 | 0.3s God ++++ 573 | 0.4s chose ++++ 574 | 0.1s to ++ 575 | 0.2s make +++ 576 | 0.4s known +++++ 577 | 0.4s how ++++ 578 | 0.5s great +++++ 579 | 0.3s among +++ 580 | 0.1s the ++ 581 | 0.7s Gentiles +++++++ 582 | 0.2s are ++ 583 | 0.1s the ++ 584 | 0.5s riches +++++ 585 | 0.1s of + 586 | 0.1s the ++ 587 | 0.4s glory ++++ 588 | 0.1s of + 589 | 0.2s this ++ 590 | 0.5s mystery ++++++ 591 | 0.2s which +++ 592 | 0.1s is ++ 593 | 0.6s Christ ++++++ 594 | 0.2s in +++ 595 | 0.4s you ++++ 596 | 0.1s the ++ 597 | 0.4s hope ++++ 598 | 0.1s of ++ 599 | 0.5s glory ++++++ 600 | 0.3s Him +++ 601 | 0.2s we +++ 602 | 0.7s proclaim ++++++++ 603 | 0.5s warning +++++ 604 | 0.7s everyone +++++++ 605 | 0.2s and +++ 606 | 0.4s teaching ++++ 607 | 0.4s everyone +++++ 608 | 0.1s with ++ 609 | 0.3s all +++ 610 | 0.5s wisdom +++++ 611 | 0.2s that ++ 612 | 0.2s we ++ 613 | 0.2s may ++ 614 | 0.5s present +++++ 615 | 0.5s everyone +++++ 616 | 0.5s mature ++++++ 617 | 0.1s in ++ 618 | 0.6s Christ ++++++ 619 | 0.2s For +++ 620 | 0.3s this +++ 621 | 0.2s I ++ 622 | 0.7s toil +++++++ 623 | 0.6s struggling ++++++ 624 | 0.2s with ++ 625 | 0.3s all ++++ 626 | 0.3s his ++++ 627 | 0.5s energy ++++++ 628 | 0.1s that ++ 629 | 0.2s he ++ 630 | 0.6s powerfully +++++++ 631 | 0.3s works +++ 632 | 0.3s within ++++ 633 | 0.2s me +++ 634 | Words left off: 0 635 | -------------------------------------------------------------------------------- /reports/John.3: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 751 7 | Words found by aligner: 757 8 | Number of words: 6 9 | All words in the text are reported to be discovered in audio 10 | 0.1s Now ++ 11 | 0.1s there ++ 12 | 0.1s was ++ 13 | 0.1s a + 14 | 0.3s man +++ 15 | 0.1s of + 16 | 0.1s the + 17 | 0.7s Pharisees +++++++ 18 | 0.4s named +++++ 19 | 0.9s Nicodemus +++++++++ 20 | 0.1s a ++ 21 | 0.3s ruler ++++ 22 | 0.1s of + 23 | 0.1s the ++ 24 | 0.5s Jews ++++++ 25 | 0.2s This +++ 26 | 0.2s man ++ 27 | 0.3s came +++ 28 | 0.1s to + 29 | 0.4s Jesus ++++ 30 | 0.2s by ++ 31 | 0.3s night ++++ 32 | 0.1s and ++ 33 | 0.2s said +++ 34 | 0.1s to ++ 35 | 0.2s him +++ 36 | 0.6s Rabbi ++++++ 37 | 0.1s we ++ 38 | 0.2s know +++ 39 | 0.1s that ++ 40 | 0.1s you ++ 41 | 0.1s are + 42 | 0.1s a + 43 | 0.4s teacher ++++ 44 | 0.2s come +++ 45 | 0.2s from ++ 46 | 0.5s God +++++ 47 | 0.1s for ++ 48 | 0.2s no ++ 49 | 0.1s one ++ 50 | 0.2s can ++ 51 | 0.2s do ++ 52 | 0.2s these +++ 53 | 0.5s signs +++++ 54 | 0.2s that ++ 55 | 0.1s you + 56 | 0.3s do +++ 57 | 0.3s unless ++++ 58 | 0.4s God ++++ 59 | 0.1s is ++ 60 | 0.3s with +++ 61 | 0.1s him ++ 62 | 0.5s Jesus +++++ 63 | 0.4s answered ++++ 64 | 0.3s him +++ 65 | 0.7s -------- 66 | 0.4s Truly ++++ 67 | 0.4s truly ++++ 68 | 0.1s I + 69 | 0.3s say +++ 70 | 0.1s to ++ 71 | 0.2s you +++ 72 | 0.4s unless +++++ 73 | 0.2s one +++ 74 | 0.2s is ++ 75 | 0.3s born ++++ 76 | 0.5s again ++++++ 77 | 0.1s he + 78 | 0.4s cannot ++++ 79 | 0.3s see +++ 80 | 0.1s the + 81 | 0.4s kingdom ++++ 82 | 0.1s of + 83 | 0.5s God +++++ 84 | 0.7s ------- 85 | 0.6s Nicodemus +++++++ 86 | 0.2s said +++ 87 | 0.1s to ++ 88 | 0.1s him ++ 89 | 0.1s How + 90 | 1.0s can +++++++++++ 91 | 0.1s a + 92 | 0.2s man +++ 93 | 0.1s be ++ 94 | 0.4s born +++++ 95 | 0.1s when ++ 96 | 0.1s he + 97 | 0.2s is ++ 98 | 0.5s old +++++ 99 | 0.2s Can ++ 100 | 0.2s he ++ 101 | 0.3s enter ++++ 102 | 0.1s a + 103 | 0.3s second ++++ 104 | 0.3s time ++++ 105 | 0.2s into ++ 106 | 0.1s his ++ 107 | 0.3s mother's ++++ 108 | 0.3s womb +++ 109 | 0.1s and + 110 | 0.1s be + 111 | 0.5s born +++++ 112 | 0.6s Jesus ++++++ 113 | 0.5s answered +++++ 114 | 0.4s Truly ++++ 115 | 0.4s truly +++++ 116 | 0.1s I + 117 | 0.3s say +++ 118 | 0.1s to + 119 | 0.3s you +++ 120 | 0.4s unless ++++ 121 | 0.2s one ++ 122 | 0.1s is ++ 123 | 0.2s born +++ 124 | 0.1s of ++ 125 | 0.4s water +++++ 126 | 0.1s and + 127 | 0.1s the + 128 | 0.5s Spirit +++++ 129 | 0.1s he ++ 130 | 0.5s cannot ++++++ 131 | 0.2s enter +++ 132 | 0.1s the ++ 133 | 0.3s kingdom ++++ 134 | 0.1s of ++ 135 | 0.4s God +++++ 136 | 0.8s That ++++++++ 137 | 0.2s which ++ 138 | 0.2s is ++ 139 | 0.2s born +++ 140 | 0.1s of + 141 | 0.1s the + 142 | 0.6s flesh +++++++ 143 | 0.2s is ++ 144 | 0.5s flesh ++++++ 145 | 0.2s and ++ 146 | 0.2s that ++ 147 | 0.1s which ++ 148 | 0.1s is ++ 149 | 0.2s born +++ 150 | 0.1s of + 151 | 0.1s the + 152 | 0.5s Spirit ++++++ 153 | 0.1s is ++ 154 | 0.5s spirit ++++++ 155 | 0.2s Do ++ 156 | 0.2s not ++ 157 | 0.3s marvel ++++ 158 | 0.1s that ++ 159 | 0.1s I + 160 | 0.3s said +++ 161 | 0.1s to + 162 | 0.2s you +++ 163 | 0.1s You ++ 164 | 0.3s must +++ 165 | 0.1s be + 166 | 0.2s born +++ 167 | 0.5s again ++++++ 168 | 0.2s The +++ 169 | 0.4s wind ++++ 170 | 0.5s blows +++++ 171 | 0.1s where ++ 172 | 0.2s it ++ 173 | 0.5s wishes ++++++ 174 | 0.2s and ++ 175 | 0.1s you + 176 | 0.3s hear +++ 177 | 0.2s its ++ 178 | 0.6s sound ++++++ 179 | 0.2s but ++ 180 | 0.1s you + 181 | 0.1s do ++ 182 | 0.2s not ++ 183 | 0.2s know ++ 184 | 0.1s where ++ 185 | 0.1s it + 186 | 0.4s comes ++++ 187 | 0.2s from +++ 188 | 0.1s or + 189 | 0.2s where ++ 190 | 0.1s it + 191 | 0.5s goes ++++++ 192 | 0.3s So +++ 193 | 0.1s it + 194 | 0.2s is ++ 195 | 0.2s with +++ 196 | 0.5s everyone +++++ 197 | 0.1s who ++ 198 | 0.1s is ++ 199 | 0.3s born ++++ 200 | 0.1s of + 201 | 0.1s the + 202 | 0.5s Spirit ++++++ 203 | 0.9s --------- 204 | 0.7s Nicodemus +++++++ 205 | 0.2s said +++ 206 | 0.2s to ++ 207 | 0.2s him +++ 208 | 0.3s How ++++ 209 | 0.2s can ++ 210 | 0.2s these ++ 211 | 0.4s things ++++ 212 | 0.5s be ++++++ 213 | 0.5s Jesus ++++++ 214 | 0.4s answered +++++ 215 | 0.2s him ++ 216 | 0.1s Are ++ 217 | 0.1s you ++ 218 | 0.1s the ++ 219 | 0.4s teacher ++++ 220 | 0.1s of + 221 | 0.7s Israel ++++++++ 222 | 0.2s and ++ 223 | 0.2s yet ++ 224 | 0.1s you ++ 225 | 0.1s do ++ 226 | 0.2s not ++ 227 | 0.6s understand ++++++ 228 | 0.2s these ++ 229 | 0.6s things ++++++ 230 | 0.5s Truly +++++ 231 | 0.3s truly ++++ 232 | 0.1s I + 233 | 0.3s say +++ 234 | 0.1s to ++ 235 | 0.2s you +++ 236 | 0.1s we ++ 237 | 0.3s speak ++++ 238 | 0.1s of ++ 239 | 0.2s what ++ 240 | 0.1s we ++ 241 | 0.5s know +++++ 242 | 0.2s and +++ 243 | 0.2s bear ++ 244 | 0.4s witness ++++ 245 | 0.1s to ++ 246 | 0.1s what ++ 247 | 0.1s we ++ 248 | 0.1s have ++ 249 | 0.5s seen +++++ 250 | 0.2s but ++ 251 | 0.2s you ++ 252 | 0.1s do ++ 253 | 0.2s not ++ 254 | 0.4s receive ++++ 255 | 0.1s our ++ 256 | 0.6s testimony +++++++ 257 | 0.2s If ++ 258 | 0.1s I ++ 259 | 0.2s have ++ 260 | 0.3s told +++ 261 | 0.2s you ++ 262 | 0.4s earthly ++++ 263 | 0.4s things +++++ 264 | 0.1s and ++ 265 | 0.1s you + 266 | 0.1s do + 267 | 0.2s not +++ 268 | 0.5s believe ++++++ 269 | 0.2s how ++ 270 | 0.1s can ++ 271 | 0.1s you ++ 272 | 0.3s believe ++++ 273 | 0.1s if ++ 274 | 0.1s I + 275 | 0.3s tell +++ 276 | 0.1s you + 277 | 0.4s heavenly +++++ 278 | 0.5s things ++++++ 279 | 0.2s No +++ 280 | 0.2s one ++ 281 | 0.3s has +++ 282 | 0.6s ascended ++++++ 283 | 0.2s into ++ 284 | 0.4s heaven +++++ 285 | 0.4s except +++++ 286 | 0.2s he +++ 287 | 0.2s who ++ 288 | 0.6s descended +++++++ 289 | 0.2s from ++ 290 | 0.4s heaven ++++ 291 | 0.1s the ++ 292 | 0.3s Son +++ 293 | 0.1s of ++ 294 | 0.5s Man +++++ 295 | 0.2s And ++ 296 | 0.2s as ++ 297 | 0.5s Moses ++++++ 298 | 0.3s lifted ++++ 299 | 0.1s up ++ 300 | 0.1s the + 301 | 0.4s serpent +++++ 302 | 0.1s in + 303 | 0.1s the + 304 | 0.6s wilderness ++++++ 305 | 0.2s so +++ 306 | 0.3s must +++ 307 | 0.1s the + 308 | 0.3s Son +++ 309 | 0.1s of ++ 310 | 0.4s Man ++++ 311 | 0.1s be ++ 312 | 0.3s lifted ++++ 313 | 0.3s up +++ 314 | 0.5s that +++++ 315 | 0.4s whoever ++++ 316 | 0.5s believes +++++ 317 | 0.1s in ++ 318 | 0.4s him +++++ 319 | 0.2s may ++ 320 | 0.2s have +++ 321 | 0.5s eternal +++++ 322 | 0.5s life +++++ 323 | 0.3s For +++ 324 | 0.4s God ++++ 325 | 0.4s so ++++ 326 | 0.3s loved ++++ 327 | 0.1s the ++ 328 | 0.5s world ++++++ 329 | 0.1s that ++ 330 | 0.1s he ++ 331 | 0.5s gave +++++ 332 | 0.2s his ++ 333 | 0.2s only +++ 334 | 0.5s Son ++++++ 335 | 0.1s that ++ 336 | 0.4s whoever ++++ 337 | 0.4s believes +++++ 338 | 0.1s in ++ 339 | 0.3s him +++ 340 | 0.3s should +++ 341 | 0.3s not +++ 342 | 0.5s perish ++++++ 343 | 0.1s but ++ 344 | 0.2s have +++ 345 | 0.5s eternal +++++ 346 | 0.4s life +++++ 347 | 0.8s For ++++++++ 348 | 0.3s God ++++ 349 | 0.1s did ++ 350 | 0.2s not ++ 351 | 0.2s send +++ 352 | 0.1s his ++ 353 | 0.2s Son +++ 354 | 0.2s into ++ 355 | 0.1s the + 356 | 0.3s world +++ 357 | 0.1s to ++ 358 | 0.4s condemn +++++ 359 | 0.1s the ++ 360 | 0.4s world ++++ 361 | 0.2s but +++ 362 | 0.1s in ++ 363 | 0.3s order ++++ 364 | 0.2s that ++ 365 | 0.2s the ++ 366 | 0.4s world ++++ 367 | 0.2s might ++ 368 | 0.1s be ++ 369 | 0.6s saved ++++++ 370 | 0.2s through ++ 371 | 0.4s him ++++ 372 | 0.5s Whoever +++++ 373 | 0.5s believes +++++ 374 | 0.2s in ++ 375 | 0.2s him +++ 376 | 0.1s is ++ 377 | 0.2s not +++ 378 | 0.6s condemned +++++++ 379 | 0.3s but ++++ 380 | 0.3s whoever ++++ 381 | 0.2s does ++ 382 | 0.2s not +++ 383 | 0.4s believe ++++ 384 | 0.1s is ++ 385 | 0.5s condemned +++++ 386 | 0.5s already ++++++ 387 | 0.4s because +++++ 388 | 0.1s he + 389 | 0.2s has +++ 390 | 0.2s not +++ 391 | 0.4s believed +++++ 392 | 0.1s in + 393 | 0.1s the + 394 | 0.3s name ++++ 395 | 0.1s of + 396 | 0.1s the ++ 397 | 0.2s only ++ 398 | 0.3s Son +++ 399 | 0.1s of + 400 | 0.5s God +++++ 401 | 0.6s ------ 402 | 0.2s And +++ 403 | 0.3s this ++++ 404 | 0.2s is ++ 405 | 0.2s the ++ 406 | 0.5s judgment ++++++ 407 | 0.6s the ++++++ 408 | 0.3s light +++ 409 | 0.1s has ++ 410 | 0.2s come ++ 411 | 0.2s into ++ 412 | 0.1s the ++ 413 | 0.4s world +++++ 414 | 0.2s and ++ 415 | 0.4s people +++++ 416 | 0.4s loved ++++ 417 | 0.2s the ++ 418 | 0.6s darkness +++++++ 419 | 0.3s rather ++++ 420 | 0.1s than ++ 421 | 0.1s the + 422 | 0.3s light ++++ 423 | 0.3s because ++++ 424 | 0.2s their ++ 425 | 0.3s works ++++ 426 | 0.2s were ++ 427 | 0.4s evil ++++ 428 | 0.2s For +++ 429 | 0.5s everyone +++++ 430 | 0.1s who + 431 | 0.2s does +++ 432 | 0.3s wicked ++++ 433 | 0.5s things ++++++ 434 | 0.6s hates +++++++ 435 | 0.1s the ++ 436 | 0.4s light +++++ 437 | 0.2s and ++ 438 | 0.2s does ++ 439 | 0.2s not ++ 440 | 0.3s come +++ 441 | 0.1s to ++ 442 | 0.1s the + 443 | 0.3s light ++++ 444 | 0.3s lest +++ 445 | 0.1s his ++ 446 | 0.4s works ++++ 447 | 0.2s should +++ 448 | 0.1s be ++ 449 | 0.8s exposed ++++++++ 450 | 0.8s --------- 451 | 0.2s But +++ 452 | 0.4s whoever ++++ 453 | 0.3s does +++ 454 | 0.2s what +++ 455 | 0.1s is ++ 456 | 0.4s true +++++ 457 | 0.4s comes +++++ 458 | 0.1s to ++ 459 | 0.1s the + 460 | 0.4s light ++++ 461 | 0.2s so ++ 462 | 0.1s that ++ 463 | 0.1s it + 464 | 0.2s may ++ 465 | 0.1s be + 466 | 0.5s clearly +++++ 467 | 0.3s seen ++++ 468 | 0.1s that ++ 469 | 0.2s his ++ 470 | 0.4s works ++++ 471 | 0.1s have ++ 472 | 0.2s been ++ 473 | 0.4s carried +++++ 474 | 0.2s out ++ 475 | 0.2s in ++ 476 | 0.4s God +++++ 477 | 0.4s After ++++ 478 | 0.3s this ++++ 479 | 0.5s Jesus +++++ 480 | 0.2s and ++ 481 | 0.1s his ++ 482 | 0.6s disciples ++++++ 483 | 0.3s went +++ 484 | 0.2s into +++ 485 | 0.1s the ++ 486 | 0.4s Judean ++++ 487 | 0.8s countryside ++++++++ 488 | 0.2s and ++ 489 | 0.1s he + 490 | 0.4s remained +++++ 491 | 0.2s there ++ 492 | 0.2s with ++ 493 | 0.2s them +++ 494 | 0.1s and ++ 495 | 0.1s was ++ 496 | 0.7s baptizing +++++++ 497 | 0.3s John ++++ 498 | 0.4s also ++++ 499 | 0.2s was ++ 500 | 0.6s baptizing ++++++ 501 | 0.1s at ++ 502 | 0.4s Aenon ++++ 503 | 0.2s near ++ 504 | 0.5s Salim ++++++ 505 | 0.3s because +++ 506 | 0.3s water ++++ 507 | 0.1s was ++ 508 | 0.5s plentiful +++++ 509 | 0.3s there +++ 510 | 0.2s and ++ 511 | 0.4s people ++++ 512 | 0.1s were ++ 513 | 0.5s coming +++++ 514 | 0.2s and ++ 515 | 0.2s being +++ 516 | 0.7s baptized ++++++++ 517 | 0.2s for ++ 518 | 0.3s John ++++ 519 | 0.2s had ++ 520 | 0.2s not +++ 521 | 0.2s yet ++ 522 | 0.2s been ++ 523 | 0.2s put ++ 524 | 0.1s in ++ 525 | 0.4s prison +++++ 526 | 0.3s Now +++ 527 | 0.0s a + 528 | 0.6s discussion ++++++ 529 | 0.4s arose +++++ 530 | 0.3s between ++++ 531 | 0.2s some ++ 532 | 0.1s of ++ 533 | 0.4s John's ++++ 534 | 0.7s disciples +++++++ 535 | 0.2s and ++ 536 | 0.0s a + 537 | 0.5s Jew +++++ 538 | 0.2s over +++ 539 | 0.9s purification +++++++++ 540 | 0.1s And ++ 541 | 0.1s they + 542 | 0.2s came +++ 543 | 0.1s to ++ 544 | 0.4s John ++++ 545 | 0.1s and ++ 546 | 0.2s said +++ 547 | 0.2s to ++ 548 | 0.5s him +++++ 549 | 0.5s Rabbi ++++++ 550 | 0.2s he +++ 551 | 0.1s who + 552 | 0.2s was ++ 553 | 0.2s with ++ 554 | 0.1s you ++ 555 | 0.4s across ++++ 556 | 0.1s the ++ 557 | 0.4s Jordan ++++ 558 | 0.1s to ++ 559 | 0.2s whom ++ 560 | 0.1s you + 561 | 0.2s bore +++ 562 | 1.0s witness--look +++++++++++ 563 | 0.2s he ++ 564 | 0.2s is ++ 565 | 0.7s baptizing +++++++ 566 | 0.1s and + 567 | 0.3s all +++ 568 | 0.1s are + 569 | 0.3s going +++ 570 | 0.1s to ++ 571 | 0.6s him ++++++ 572 | 0.4s John ++++ 573 | 0.6s answered +++++++ 574 | 0.1s A ++ 575 | 0.4s person ++++ 576 | 0.3s cannot ++++ 577 | 0.4s receive +++++ 578 | 0.2s even +++ 579 | 0.3s one +++ 580 | 0.5s thing +++++ 581 | 0.3s unless ++++ 582 | 0.1s it + 583 | 0.1s is ++ 584 | 0.3s given ++++ 585 | 0.2s him +++ 586 | 0.1s from ++ 587 | 0.4s heaven ++++ 588 | 0.2s You +++ 589 | 0.5s yourselves ++++++ 590 | 0.2s bear +++ 591 | 0.1s me ++ 592 | 0.5s witness +++++ 593 | 0.1s that ++ 594 | 0.1s I + 595 | 0.3s said +++ 596 | 0.1s I ++ 597 | 0.2s am ++ 598 | 0.2s not +++ 599 | 0.1s the + 600 | 0.6s Christ ++++++ 601 | 0.1s but ++ 602 | 0.1s I ++ 603 | 0.1s have ++ 604 | 0.2s been ++ 605 | 0.4s sent ++++ 606 | 0.4s before ++++ 607 | 0.2s him +++ 608 | 0.1s The + 609 | 1.3s one ++++++++++++++ 610 | 0.1s who + 611 | 0.3s has ++++ 612 | 0.1s the ++ 613 | 0.5s bride +++++ 614 | 0.1s is ++ 615 | 0.1s the + 616 | 0.6s bridegroom ++++++ 617 | 0.1s The + 618 | 0.3s friend ++++ 619 | 0.1s of + 620 | 0.1s the + 621 | 0.6s bridegroom ++++++ 622 | 0.1s who + 623 | 0.4s stands +++++ 624 | 0.1s and + 625 | 0.3s hears ++++ 626 | 0.2s him ++ 627 | 0.8s rejoices +++++++++ 628 | 0.5s greatly ++++++ 629 | 0.1s at ++ 630 | 0.1s the + 631 | 0.6s bridegroom's +++++++ 632 | 0.6s voice ++++++ 633 | 0.9s Therefore ++++++++++ 634 | 0.2s this +++ 635 | 0.3s joy ++++ 636 | 0.2s of ++ 637 | 0.5s mine +++++ 638 | 0.2s is +++ 639 | 0.2s now ++ 640 | 0.6s complete ++++++ 641 | 0.3s He ++++ 642 | 0.3s must ++++ 643 | 0.9s increase +++++++++ 644 | 0.3s but +++ 645 | 0.1s I ++ 646 | 0.3s must ++++ 647 | 0.7s decrease +++++++ 648 | 0.7s -------- 649 | 0.3s He +++ 650 | 0.2s who ++ 651 | 0.3s comes ++++ 652 | 0.2s from +++ 653 | 0.5s above +++++ 654 | 0.2s is +++ 655 | 0.3s above ++++ 656 | 0.4s all +++++ 657 | 0.3s He +++ 658 | 0.1s who ++ 659 | 0.1s is + 660 | 0.2s of ++ 661 | 0.2s the ++ 662 | 0.3s earth +++ 663 | 0.5s belongs +++++ 664 | 0.1s to ++ 665 | 0.1s the ++ 666 | 0.2s earth +++ 667 | 0.1s and ++ 668 | 0.4s speaks +++++ 669 | 0.1s in ++ 670 | 0.1s an ++ 671 | 0.3s earthly ++++ 672 | 0.5s way +++++ 673 | 0.2s He +++ 674 | 0.1s who ++ 675 | 0.3s comes ++++ 676 | 0.2s from ++ 677 | 0.4s heaven +++++ 678 | 0.1s is ++ 679 | 0.3s above ++++ 680 | 0.4s all +++++ 681 | 0.2s He ++ 682 | 0.3s bears ++++ 683 | 0.4s witness ++++ 684 | 0.1s to ++ 685 | 0.2s what ++ 686 | 0.1s he ++ 687 | 0.1s has ++ 688 | 0.5s seen ++++++ 689 | 0.2s and ++ 690 | 0.4s heard +++++ 691 | 0.2s yet ++ 692 | 0.3s no ++++ 693 | 0.2s one +++ 694 | 0.4s receives +++++ 695 | 0.1s his ++ 696 | 0.6s testimony +++++++ 697 | 0.4s Whoever +++++ 698 | 0.5s receives +++++ 699 | 0.2s his ++ 700 | 0.6s testimony +++++++ 701 | 0.4s sets +++++ 702 | 0.2s his +++ 703 | 0.4s seal +++++ 704 | 0.2s to ++ 705 | 0.4s this ++++ 706 | 0.2s that +++ 707 | 0.6s God ++++++ 708 | 0.2s is +++ 709 | 0.5s true +++++ 710 | 0.5s For ++++++ 711 | 0.2s he +++ 712 | 0.2s whom +++ 713 | 0.3s God +++ 714 | 0.2s has ++ 715 | 0.4s sent ++++ 716 | 0.4s utters ++++ 717 | 0.1s the ++ 718 | 0.3s words ++++ 719 | 0.1s of ++ 720 | 0.4s God +++++ 721 | 0.2s for +++ 722 | 0.1s he ++ 723 | 0.2s gives +++ 724 | 0.1s the ++ 725 | 0.5s Spirit +++++ 726 | 0.3s without ++++ 727 | 0.5s measure +++++ 728 | 0.1s The ++ 729 | 0.4s Father ++++ 730 | 0.3s loves +++ 731 | 0.1s the ++ 732 | 0.5s Son +++++ 733 | 0.3s and ++++ 734 | 0.1s has ++ 735 | 0.3s given +++ 736 | 0.3s all ++++ 737 | 0.4s things ++++ 738 | 0.2s into +++ 739 | 0.2s his ++ 740 | 0.4s hand +++++ 741 | 0.4s Whoever +++++ 742 | 0.4s believes +++++ 743 | 0.1s in ++ 744 | 0.1s the + 745 | 0.4s Son +++++ 746 | 0.2s has +++ 747 | 0.4s eternal ++++ 748 | 0.4s life ++++ 749 | 0.4s whoever ++++ 750 | 0.2s does ++ 751 | 0.2s not ++ 752 | 0.3s obey ++++ 753 | 0.1s the ++ 754 | 0.4s Son +++++ 755 | 0.3s shall ++++ 756 | 0.3s not +++ 757 | 0.3s see ++++ 758 | 0.5s life +++++ 759 | 0.2s but +++ 760 | 0.2s the ++ 761 | 0.4s wrath ++++ 762 | 0.1s of + 763 | 0.4s God +++++ 764 | 0.5s remains ++++++ 765 | 0.2s on ++ 766 | 0.2s him +++ 767 | Words left off: 0 768 | -------------------------------------------------------------------------------- /reports/Gen.1: -------------------------------------------------------------------------------- 1 | Any data appearing in the ESV text column herein is copyrighted: 2 | The Holy Bible, English Standard Version copyright (c)2001 by Crossway Bibles, 3 | a publishing ministry of Good News Publishers. All rights reserved. 4 | 5 | 6 | Words in source text: 791 7 | Words found by aligner: 811 8 | Number of words: 20 9 | All words in the text are reported to be discovered in audio 10 | 0.2s In ++ 11 | 0.1s the + 12 | 0.7s beginning +++++++ 13 | 0.4s God +++++ 14 | 0.6s created ++++++ 15 | 0.1s the + 16 | 0.5s heavens +++++ 17 | 0.1s and ++ 18 | 0.2s the ++ 19 | 0.3s earth ++++ 20 | 0.2s The ++ 21 | 0.3s earth +++ 22 | 0.2s was +++ 23 | 0.3s without +++ 24 | 0.4s form +++++ 25 | 0.1s and ++ 26 | 0.5s void ++++++ 27 | 0.2s and +++ 28 | 0.5s darkness +++++ 29 | 0.2s was ++ 30 | 0.2s over ++ 31 | 0.1s the ++ 32 | 0.4s face ++++ 33 | 0.1s of + 34 | 0.1s the + 35 | 0.4s deep ++++ 36 | 0.8s --------- 37 | 0.1s And + 38 | 0.1s the + 39 | 0.4s Spirit +++++ 40 | 0.1s of ++ 41 | 0.3s God +++ 42 | 0.2s was ++ 43 | 0.4s hovering +++++ 44 | 0.2s over ++ 45 | 0.1s the + 46 | 0.3s face ++++ 47 | 0.1s of ++ 48 | 0.1s the ++ 49 | 0.6s waters ++++++ 50 | 0.8s -------- 51 | 0.2s And ++ 52 | 0.3s God ++++ 53 | 0.4s said +++++ 54 | 0.2s Let +++ 55 | 0.1s there ++ 56 | 0.2s be ++ 57 | 0.5s light +++++ 58 | 0.2s and ++ 59 | 0.2s there ++ 60 | 0.2s was +++ 61 | 0.4s light +++++ 62 | 0.2s And ++ 63 | 0.3s God +++ 64 | 0.3s saw ++++ 65 | 0.1s that ++ 66 | 0.1s the + 67 | 0.3s light +++ 68 | 0.2s was ++ 69 | 0.5s good ++++++ 70 | 0.2s And ++ 71 | 0.3s God +++ 72 | 0.6s separated ++++++ 73 | 0.1s the + 74 | 0.3s light ++++ 75 | 0.2s from ++ 76 | 0.1s the + 77 | 0.6s darkness +++++++ 78 | 0.3s God +++ 79 | 0.2s called +++ 80 | 0.1s the + 81 | 0.4s light +++++ 82 | 0.4s Day +++++ 83 | 0.3s and +++ 84 | 0.1s the ++ 85 | 0.5s darkness ++++++ 86 | 0.1s he ++ 87 | 0.3s called +++ 88 | 0.4s Night +++++ 89 | 0.1s And ++ 90 | 0.1s there + 91 | 0.2s was ++ 92 | 0.5s evening ++++++ 93 | 0.1s and ++ 94 | 0.1s there ++ 95 | 0.2s was ++ 96 | 0.5s morning ++++++ 97 | 0.3s the +++ 98 | 0.4s first ++++ 99 | 0.4s day +++++ 100 | 0.2s And +++ 101 | 0.3s God +++ 102 | 0.7s said +++++++ 103 | 0.2s Let ++ 104 | 0.1s there ++ 105 | 0.1s be ++ 106 | 0.1s an + 107 | 0.7s expanse +++++++ 108 | 0.1s in + 109 | 0.1s the + 110 | 0.3s midst ++++ 111 | 0.1s of + 112 | 0.1s the ++ 113 | 0.6s waters +++++++ 114 | 0.2s and ++ 115 | 0.1s let ++ 116 | 0.1s it + 117 | 0.5s separate ++++++ 118 | 0.1s the ++ 119 | 0.4s waters +++++ 120 | 0.2s from +++ 121 | 0.1s the + 122 | 0.5s waters ++++++ 123 | 0.2s And ++ 124 | 0.3s God ++++ 125 | 0.2s made +++ 126 | 0.1s the ++ 127 | 0.8s expanse +++++++++ 128 | 0.2s and +++ 129 | 0.6s separated ++++++ 130 | 0.1s the ++ 131 | 0.4s waters +++++ 132 | 0.1s that ++ 133 | 0.1s were ++ 134 | 0.2s under +++ 135 | 0.1s the ++ 136 | 0.7s expanse ++++++++ 137 | 0.1s from ++ 138 | 0.1s the ++ 139 | 0.4s waters +++++ 140 | 0.2s that ++ 141 | 0.1s were ++ 142 | 0.3s above ++++ 143 | 0.1s the ++ 144 | 0.8s expanse ++++++++ 145 | 0.2s And ++ 146 | 0.1s it + 147 | 0.2s was ++ 148 | 0.5s so +++++ 149 | 1.0s ---------- 150 | 0.2s And +++ 151 | 0.4s God ++++ 152 | 0.3s called +++ 153 | 0.1s the ++ 154 | 0.8s expanse ++++++++ 155 | 0.5s Heaven +++++ 156 | 0.1s And ++ 157 | 0.1s there + 158 | 0.2s was ++ 159 | 0.5s evening +++++ 160 | 0.1s and ++ 161 | 0.1s there + 162 | 0.1s was ++ 163 | 0.5s morning +++++ 164 | 0.2s the +++ 165 | 0.4s second ++++ 166 | 0.4s day ++++ 167 | 0.8s --------- 168 | 0.2s And ++ 169 | 0.3s God +++ 170 | 0.5s said +++++ 171 | 0.2s Let ++ 172 | 0.1s the ++ 173 | 0.4s waters ++++ 174 | 0.2s under +++ 175 | 0.1s the ++ 176 | 0.4s heavens ++++ 177 | 0.1s be ++ 178 | 0.4s gathered ++++ 179 | 0.4s together ++++ 180 | 0.2s into +++ 181 | 0.2s one +++ 182 | 0.6s place +++++++ 183 | 0.2s and ++ 184 | 0.2s let ++ 185 | 0.1s the ++ 186 | 0.4s dry ++++ 187 | 0.4s land ++++ 188 | 0.6s appear ++++++ 189 | 0.2s And ++ 190 | 0.1s it ++ 191 | 0.2s was ++ 192 | 0.4s so +++++ 193 | 0.4s God +++++ 194 | 0.2s called +++ 195 | 0.1s the ++ 196 | 0.3s dry +++ 197 | 0.5s land +++++ 198 | 0.4s Earth ++++ 199 | 0.1s and ++ 200 | 0.1s the + 201 | 0.4s waters +++++ 202 | 0.1s that ++ 203 | 0.1s were ++ 204 | 0.4s gathered ++++ 205 | 0.4s together ++++ 206 | 0.1s he ++ 207 | 0.4s called ++++ 208 | 0.8s Seas ++++++++ 209 | 0.6s ------- 210 | 0.2s And +++ 211 | 0.3s God ++++ 212 | 0.5s saw +++++ 213 | 0.1s that ++ 214 | 0.1s it + 215 | 0.2s was ++ 216 | 0.5s good +++++ 217 | 0.2s And +++ 218 | 0.3s God +++ 219 | 0.6s said +++++++ 220 | 0.2s Let ++ 221 | 0.2s the ++ 222 | 0.2s earth ++ 223 | 0.4s sprout +++++ 224 | 1.0s vegetation ++++++++++ 225 | 0.5s plants ++++++ 226 | 0.4s yielding +++++ 227 | 0.6s seed ++++++ 228 | 0.2s and ++ 229 | 0.3s fruit +++ 230 | 0.4s trees ++++ 231 | 0.3s bearing ++++ 232 | 0.4s fruit ++++ 233 | 0.1s in ++ 234 | 0.2s which +++ 235 | 0.1s is ++ 236 | 0.2s their ++ 237 | 0.5s seed +++++ 238 | 0.3s each ++++ 239 | 0.5s according +++++ 240 | 0.2s to ++ 241 | 0.1s its ++ 242 | 0.5s kind ++++++ 243 | 0.1s on + 244 | 0.2s the ++ 245 | 0.3s earth ++++ 246 | 0.2s And ++ 247 | 0.1s it + 248 | 0.2s was ++ 249 | 0.5s so ++++++ 250 | 0.9s The +++++++++ 251 | 0.3s --- 252 | 0.1s earth + 253 | 0.2s brought +++ 254 | 0.4s forth ++++ 255 | 0.9s vegetation +++++++++ 256 | 0.5s plants +++++ 257 | 0.3s yielding ++++ 258 | 0.3s seed ++++ 259 | 0.4s according ++++ 260 | 0.1s to + 261 | 0.2s their +++ 262 | 0.1s own ++ 263 | 0.7s kinds ++++++++ 264 | 0.2s and ++ 265 | 0.5s trees +++++ 266 | 0.3s bearing ++++ 267 | 0.3s fruit ++++ 268 | 0.1s in ++ 269 | 0.2s which +++ 270 | 0.1s is ++ 271 | 0.2s their ++ 272 | 0.5s seed +++++ 273 | 0.3s each +++ 274 | 0.5s according +++++ 275 | 0.2s to ++ 276 | 0.1s its ++ 277 | 0.5s kind ++++++ 278 | 1.1s ----------- 279 | 0.2s And +++ 280 | 0.3s God ++++ 281 | 0.4s saw ++++ 282 | 0.1s that ++ 283 | 0.1s it + 284 | 0.2s was ++ 285 | 0.5s good +++++ 286 | 0.1s And ++ 287 | 0.1s there + 288 | 0.1s was ++ 289 | 0.5s evening +++++ 290 | 0.1s and + 291 | 0.1s there ++ 292 | 0.2s was ++ 293 | 0.5s morning ++++++ 294 | 0.3s the ++++ 295 | 0.3s third ++++ 296 | 0.4s day ++++ 297 | 1.0s ---------- 298 | 0.2s And +++ 299 | 0.3s God ++++ 300 | 0.5s said +++++ 301 | 0.2s Let +++ 302 | 0.1s there ++ 303 | 0.1s be ++ 304 | 0.4s lights +++++ 305 | 0.1s in + 306 | 0.1s the + 307 | 0.6s expanse +++++++ 308 | 0.1s of + 309 | 0.1s the + 310 | 0.5s heavens ++++++ 311 | 0.2s to ++ 312 | 0.5s separate +++++ 313 | 0.1s the ++ 314 | 0.3s day ++++ 315 | 0.2s from ++ 316 | 0.1s the + 317 | 0.4s night +++++ 318 | 0.8s -------- 319 | 0.2s And ++ 320 | 0.1s let ++ 321 | 0.2s them ++ 322 | 0.1s be ++ 323 | 0.2s for ++ 324 | 0.6s signs ++++++ 325 | 0.2s and +++ 326 | 0.1s for ++ 327 | 0.7s seasons +++++++ 328 | 0.2s and +++ 329 | 0.1s for ++ 330 | 0.5s days +++++ 331 | 0.2s and ++ 332 | 0.6s years +++++++ 333 | 0.1s and ++ 334 | 0.1s let ++ 335 | 0.2s them ++ 336 | 0.2s be ++ 337 | 0.5s lights ++++++ 338 | 0.1s in ++ 339 | 0.1s the + 340 | 0.5s expanse +++++ 341 | 0.1s of + 342 | 0.1s the + 343 | 0.6s heavens ++++++ 344 | 0.1s to ++ 345 | 0.2s give ++ 346 | 0.3s light +++ 347 | 0.2s upon +++ 348 | 0.1s the ++ 349 | 0.3s earth ++++ 350 | 0.7s ------- 351 | 0.2s And ++ 352 | 0.1s it + 353 | 0.2s was ++ 354 | 0.6s so ++++++ 355 | 0.2s And +++ 356 | 0.4s God +++++ 357 | 0.2s made +++ 358 | 0.1s the ++ 359 | 0.3s two ++++ 360 | 0.4s great ++++ 361 | 0.3s lights--the +++ 362 | 0.7s ------- 363 | 0.4s greater +++++ 364 | 0.3s light +++ 365 | 0.1s to + 366 | 0.2s rule +++ 367 | 0.1s the ++ 368 | 0.4s day ++++ 369 | 0.1s and ++ 370 | 0.1s the + 371 | 0.4s lesser ++++ 372 | 0.3s light ++++ 373 | 0.2s to ++ 374 | 0.2s rule +++ 375 | 0.1s the ++ 376 | 0.4s night--and +++++ 377 | 0.2s the ++ 378 | 0.8s stars ++++++++ 379 | 0.2s And ++ 380 | 0.3s God ++++ 381 | 0.3s set +++ 382 | 0.2s them ++ 383 | 0.1s in + 384 | 0.1s the + 385 | 0.6s expanse +++++++ 386 | 0.1s of + 387 | 0.1s the + 388 | 0.4s heavens ++++ 389 | 0.1s to ++ 390 | 0.2s give ++ 391 | 0.3s light ++++ 392 | 0.1s on + 393 | 0.1s the ++ 394 | 0.3s earth ++++ 395 | 0.5s to ++++++ 396 | 0.3s rule ++++ 397 | 0.2s over ++ 398 | 0.1s the ++ 399 | 0.3s day ++++ 400 | 0.1s and ++ 401 | 0.2s over ++ 402 | 0.1s the ++ 403 | 0.4s night ++++ 404 | 0.2s and ++ 405 | 0.1s to ++ 406 | 0.5s separate ++++++ 407 | 0.1s the + 408 | 0.3s light ++++ 409 | 0.2s from ++ 410 | 0.1s the + 411 | 0.6s darkness +++++++ 412 | 0.9s --------- 413 | 0.2s And ++ 414 | 0.3s God ++++ 415 | 0.3s saw ++++ 416 | 0.1s that + 417 | 0.1s it + 418 | 0.1s was ++ 419 | 0.3s good ++++ 420 | 0.2s And +++ 421 | 1.0s there +++++++++++ 422 | 0.1s was ++ 423 | 0.5s evening ++++++ 424 | 0.1s and ++ 425 | 0.1s there ++ 426 | 0.2s was ++ 427 | 0.6s morning ++++++ 428 | 0.4s the +++++ 429 | 0.3s fourth ++++ 430 | 0.4s day +++++ 431 | 0.9s --------- 432 | 0.1s And + 433 | 0.8s -------- 434 | 0.2s God ++ 435 | 0.1s said + 436 | 0.2s Let +++ 437 | 0.1s the + 438 | 0.4s waters +++++ 439 | 0.6s swarm ++++++ 440 | 0.2s with +++ 441 | 0.6s swarms +++++++ 442 | 0.2s of ++ 443 | 0.3s living +++ 444 | 0.9s creatures +++++++++ 445 | 0.2s and +++ 446 | 0.1s let ++ 447 | 0.4s birds +++++ 448 | 0.4s fly +++++ 449 | 0.3s above +++ 450 | 0.2s the ++ 451 | 0.2s earth +++ 452 | 0.3s across ++++ 453 | 0.1s the + 454 | 0.6s expanse ++++++ 455 | 0.1s of + 456 | 0.1s the + 457 | 0.6s heavens ++++++ 458 | 0.7s ------- 459 | 0.2s So +++ 460 | 0.3s God ++++ 461 | 0.4s created +++++ 462 | 0.1s the + 463 | 0.3s great ++++ 464 | 0.3s sea ++++ 465 | 0.6s creatures ++++++ 466 | 0.2s and +++ 467 | 0.2s every +++ 468 | 0.4s living ++++ 469 | 0.4s creature ++++ 470 | 0.2s that ++ 471 | 0.5s moves ++++++ 472 | 0.2s with ++ 473 | 0.2s which +++ 474 | 0.1s the ++ 475 | 0.4s waters +++++ 476 | 0.6s swarm ++++++ 477 | 0.4s according ++++ 478 | 0.1s to + 479 | 0.2s their ++ 480 | 0.6s kinds ++++++ 481 | 0.3s and +++ 482 | 0.2s every +++ 483 | 0.4s winged +++++ 484 | 0.3s bird ++++ 485 | 0.4s according +++++ 486 | 0.2s to ++ 487 | 0.1s its ++ 488 | 0.5s kind ++++++ 489 | 0.2s And ++ 490 | 0.3s God ++++ 491 | 0.4s saw +++++ 492 | 0.1s that ++ 493 | 0.1s it + 494 | 0.2s was ++ 495 | 0.5s good ++++++ 496 | 0.2s And ++ 497 | 0.3s God ++++ 498 | 0.3s blessed ++++ 499 | 0.2s them +++ 500 | 0.5s saying +++++ 501 | 0.2s Be ++ 502 | 0.5s fruitful ++++++ 503 | 0.1s and ++ 504 | 0.6s multiply +++++++ 505 | 0.2s and ++ 506 | 0.3s fill ++++ 507 | 0.1s the ++ 508 | 0.5s waters ++++++ 509 | 0.1s in + 510 | 0.1s the + 511 | 0.7s seas ++++++++ 512 | 0.1s and ++ 513 | 0.2s let ++ 514 | 0.4s birds ++++ 515 | 0.6s multiply ++++++ 516 | 0.1s on ++ 517 | 0.2s the ++ 518 | 0.3s earth ++++ 519 | 0.1s And ++ 520 | 0.1s there ++ 521 | 0.1s was ++ 522 | 0.4s evening +++++ 523 | 0.1s and + 524 | 0.1s there + 525 | 0.2s was ++ 526 | 0.5s morning +++++ 527 | 0.1s the + 528 | 0.3s fifth +++ 529 | 0.5s day +++++ 530 | 0.2s And +++ 531 | 0.3s God ++++ 532 | 0.3s said +++ 533 | 0.3s Let ++++ 534 | 0.4s the ++++ 535 | 0.3s earth ++++ 536 | 0.3s bring ++++ 537 | 0.3s forth +++ 538 | 0.4s living ++++ 539 | 0.6s creatures ++++++ 540 | 0.4s according +++++ 541 | 0.1s to + 542 | 0.2s their ++ 543 | 1.1s ----------- 544 | 0.8s kinds--livestock ++++++++ 545 | 0.2s and ++ 546 | 0.4s creeping +++++ 547 | 0.5s things ++++++ 548 | 0.3s and +++ 549 | 0.4s beasts ++++ 550 | 0.1s of ++ 551 | 0.1s the ++ 552 | 0.2s earth +++ 553 | 0.4s according +++++ 554 | 0.1s to + 555 | 0.2s their ++ 556 | 0.7s kinds +++++++ 557 | 0.2s And ++ 558 | 0.1s it ++ 559 | 0.2s was ++ 560 | 0.5s so +++++ 561 | 0.2s And ++ 562 | 0.3s God +++ 563 | 0.2s made +++ 564 | 0.1s the ++ 565 | 0.4s beasts ++++ 566 | 0.1s of + 567 | 0.2s the ++ 568 | 0.2s earth ++ 569 | 0.4s according +++++ 570 | 0.1s to + 571 | 0.2s their ++ 572 | 0.6s kinds +++++++ 573 | 0.4s and +++++ 574 | 0.1s the + 575 | 0.6s livestock ++++++ 576 | 0.3s according ++++ 577 | 0.1s to ++ 578 | 0.2s their ++ 579 | 0.6s kinds +++++++ 580 | 0.2s and ++ 581 | 0.5s everything ++++++ 582 | 0.1s that ++ 583 | 0.4s creeps +++++ 584 | 0.1s on ++ 585 | 0.1s the ++ 586 | 0.4s ground +++++ 587 | 0.4s according +++++ 588 | 0.2s to ++ 589 | 0.1s its ++ 590 | 0.5s kind +++++ 591 | 0.2s And ++ 592 | 0.4s God ++++ 593 | 0.4s saw +++++ 594 | 0.2s that ++ 595 | 0.1s it ++ 596 | 0.2s was ++ 597 | 0.5s good ++++++ 598 | 1.6s Then +++++++++++++++++ 599 | 0.3s God +++ 600 | 0.7s said +++++++ 601 | 0.2s Let +++ 602 | 0.2s us ++ 603 | 0.2s make +++ 604 | 0.4s man ++++ 605 | 0.1s in ++ 606 | 0.2s our ++ 607 | 0.5s image ++++++ 608 | 0.4s after +++++ 609 | 0.2s our ++ 610 | 0.7s likeness +++++++ 611 | 0.1s And ++ 612 | 0.2s let ++ 613 | 0.1s them ++ 614 | 0.2s have ++ 615 | 0.5s dominion +++++ 616 | 0.2s over ++ 617 | 0.1s the + 618 | 0.3s fish +++ 619 | 0.1s of ++ 620 | 0.1s the + 621 | 0.4s sea +++++ 622 | 0.1s and ++ 623 | 0.2s over ++ 624 | 0.1s the + 625 | 0.4s birds +++++ 626 | 0.1s of ++ 627 | 0.1s the + 628 | 0.6s heavens ++++++ 629 | 0.2s and ++ 630 | 0.1s over ++ 631 | 0.1s the ++ 632 | 0.7s livestock ++++++++ 633 | 0.1s and ++ 634 | 0.3s over +++ 635 | 0.2s all +++ 636 | 0.1s the ++ 637 | 0.3s earth ++++ 638 | 0.1s and ++ 639 | 0.2s over +++ 640 | 0.3s every +++ 641 | 0.5s creeping ++++++ 642 | 0.2s thing +++ 643 | 0.2s that ++ 644 | 0.4s creeps +++++ 645 | 0.1s on ++ 646 | 0.2s the ++ 647 | 0.3s earth ++++ 648 | 0.2s So +++ 649 | 0.3s God +++ 650 | 0.5s created +++++ 651 | 0.3s man ++++ 652 | 0.1s in ++ 653 | 0.2s his ++ 654 | 0.2s own ++ 655 | 0.5s image +++++ 656 | 0.5s in ++++++ 657 | 0.1s the ++ 658 | 0.3s image ++++ 659 | 0.1s of ++ 660 | 0.4s God ++++ 661 | 0.2s he ++ 662 | 0.5s created ++++++ 663 | 0.2s him +++ 664 | 0.5s male ++++++ 665 | 0.2s and ++ 666 | 0.5s female ++++++ 667 | 0.2s he ++ 668 | 0.5s created ++++++ 669 | 0.3s them +++ 670 | 0.8s --------- 671 | 0.3s And +++ 672 | 0.4s God ++++ 673 | 0.4s blessed ++++ 674 | 0.4s them +++++ 675 | 0.2s And ++ 676 | 0.3s God +++ 677 | 0.2s said +++ 678 | 0.1s to + 679 | 0.3s them ++++ 680 | 0.2s Be ++ 681 | 0.6s fruitful ++++++ 682 | 0.2s and ++ 683 | 0.6s multiply ++++++ 684 | 0.2s and ++ 685 | 0.3s fill ++++ 686 | 0.2s the ++ 687 | 0.4s earth ++++ 688 | 0.1s and ++ 689 | 0.5s subdue ++++++ 690 | 0.2s it +++ 691 | 0.1s and ++ 692 | 0.1s have ++ 693 | 0.5s dominion +++++ 694 | 0.2s over ++ 695 | 0.1s the + 696 | 0.3s fish +++ 697 | 0.1s of + 698 | 0.1s the ++ 699 | 0.5s sea +++++ 700 | 0.4s and +++++ 701 | 0.2s over ++ 702 | 0.1s the + 703 | 0.4s birds +++++ 704 | 0.1s of + 705 | 0.1s the + 706 | 0.6s heavens ++++++ 707 | 0.2s and +++ 708 | 0.3s over ++++ 709 | 0.3s every ++++ 710 | 0.4s living ++++ 711 | 0.3s thing +++ 712 | 0.1s that ++ 713 | 0.5s moves ++++++ 714 | 0.1s on ++ 715 | 0.2s the ++ 716 | 0.3s earth ++++ 717 | 0.6s ------ 718 | 0.2s And +++ 719 | 0.3s God +++ 720 | 0.4s said ++++ 721 | 0.6s Behold ++++++ 722 | 0.1s I ++ 723 | 0.1s have ++ 724 | 0.3s given +++ 725 | 0.1s you ++ 726 | 0.3s every ++++ 727 | 0.5s plant ++++++ 728 | 0.4s yielding ++++ 729 | 0.4s seed ++++ 730 | 0.1s that ++ 731 | 0.1s is ++ 732 | 0.1s on ++ 733 | 0.1s the + 734 | 0.3s face ++++ 735 | 0.1s of ++ 736 | 0.3s all +++ 737 | 0.2s the ++ 738 | 0.3s earth ++++ 739 | 0.2s and ++ 740 | 0.3s every +++ 741 | 0.4s tree +++++ 742 | 0.2s with ++ 743 | 0.5s seed +++++ 744 | 0.1s in + 745 | 0.2s its ++ 746 | 0.4s fruit +++++ 747 | 0.2s You ++ 748 | 0.2s shall ++ 749 | 0.2s have +++ 750 | 0.2s them +++ 751 | 0.2s for ++ 752 | 0.5s food ++++++ 753 | 0.3s And +++ 754 | 0.1s to ++ 755 | 0.3s every ++++ 756 | 0.3s beast ++++ 757 | 0.1s of ++ 758 | 0.1s the ++ 759 | 0.2s earth +++ 760 | 0.1s and ++ 761 | 0.1s to ++ 762 | 0.2s every +++ 763 | 0.3s bird ++++ 764 | 0.1s of + 765 | 0.1s the + 766 | 0.5s heavens ++++++ 767 | 0.2s and ++ 768 | 0.1s to ++ 769 | 0.5s everything +++++ 770 | 0.1s that ++ 771 | 0.4s creeps +++++ 772 | 0.1s on ++ 773 | 0.2s the ++ 774 | 0.3s earth +++ 775 | 0.9s everything +++++++++ 776 | 0.2s that ++ 777 | 0.2s has +++ 778 | 0.1s the ++ 779 | 0.3s breath ++++ 780 | 0.1s of ++ 781 | 0.4s life ++++ 782 | 0.2s I ++ 783 | 0.1s have ++ 784 | 0.3s given +++ 785 | 0.2s every +++ 786 | 0.4s green +++++ 787 | 0.3s plant ++++ 788 | 0.1s for ++ 789 | 0.5s food +++++ 790 | 1.2s ------------- 791 | 0.2s And ++ 792 | 0.1s it ++ 793 | 0.1s was ++ 794 | 0.5s so ++++++ 795 | 0.3s And +++ 796 | 0.3s God +++ 797 | 0.2s saw +++ 798 | 0.5s everything +++++ 799 | 0.1s that ++ 800 | 0.1s he + 801 | 0.2s had ++ 802 | 0.4s made +++++ 803 | 0.1s and ++ 804 | 0.5s behold ++++++ 805 | 0.1s it ++ 806 | 0.2s was +++ 807 | 0.4s very +++++ 808 | 0.5s good +++++ 809 | 0.1s And ++ 810 | 0.1s there ++ 811 | 0.2s was ++ 812 | 0.6s evening ++++++ 813 | 0.2s and ++ 814 | 0.1s there ++ 815 | 0.2s was ++ 816 | 0.6s morning +++++++ 817 | 0.2s the ++ 818 | 0.4s sixth +++++ 819 | 0.5s day +++++ 820 | 1.0s ---------- 821 | Words left off: 0 822 | -------------------------------------------------------------------------------- /data/read-along/underscore.js: -------------------------------------------------------------------------------- 1 | // Underscore.js 1.1.7 2 | // (c) 2011 Jeremy Ashkenas, DocumentCloud Inc. 3 | // Underscore is freely distributable under the MIT license. 4 | // Portions of Underscore are inspired or borrowed from Prototype, 5 | // Oliver Steele's Functional, and John Resig's Micro-Templating. 6 | // For all details and documentation: 7 | // http://documentcloud.github.com/underscore 8 | 9 | (function() { 10 | 11 | // Baseline setup 12 | // -------------- 13 | 14 | // Establish the root object, `window` in the browser, or `global` on the server. 15 | var root = this; 16 | 17 | // Save the previous value of the `_` variable. 18 | var previousUnderscore = root._; 19 | 20 | // Establish the object that gets returned to break out of a loop iteration. 21 | var breaker = {}; 22 | 23 | // Save bytes in the minified (but not gzipped) version: 24 | var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; 25 | 26 | // Create quick reference variables for speed access to core prototypes. 27 | var slice = ArrayProto.slice, 28 | unshift = ArrayProto.unshift, 29 | toString = ObjProto.toString, 30 | hasOwnProperty = ObjProto.hasOwnProperty; 31 | 32 | // All **ECMAScript 5** native function implementations that we hope to use 33 | // are declared here. 34 | var 35 | nativeForEach = ArrayProto.forEach, 36 | nativeMap = ArrayProto.map, 37 | nativeReduce = ArrayProto.reduce, 38 | nativeReduceRight = ArrayProto.reduceRight, 39 | nativeFilter = ArrayProto.filter, 40 | nativeEvery = ArrayProto.every, 41 | nativeSome = ArrayProto.some, 42 | nativeIndexOf = ArrayProto.indexOf, 43 | nativeLastIndexOf = ArrayProto.lastIndexOf, 44 | nativeIsArray = Array.isArray, 45 | nativeKeys = Object.keys, 46 | nativeBind = FuncProto.bind; 47 | 48 | // Create a safe reference to the Underscore object for use below. 49 | var _ = function(obj) { return new wrapper(obj); }; 50 | 51 | // Export the Underscore object for **CommonJS**, with backwards-compatibility 52 | // for the old `require()` API. If we're not in CommonJS, add `_` to the 53 | // global object. 54 | if (typeof module !== 'undefined' && module.exports) { 55 | module.exports = _; 56 | _._ = _; 57 | } else { 58 | // Exported as a string, for Closure Compiler "advanced" mode. 59 | root['_'] = _; 60 | } 61 | 62 | // Current version. 63 | _.VERSION = '1.1.7'; 64 | 65 | // Collection Functions 66 | // -------------------- 67 | 68 | // The cornerstone, an `each` implementation, aka `forEach`. 69 | // Handles objects with the built-in `forEach`, arrays, and raw objects. 70 | // Delegates to **ECMAScript 5**'s native `forEach` if available. 71 | var each = _.each = _.forEach = function(obj, iterator, context) { 72 | if (obj == null) return; 73 | if (nativeForEach && obj.forEach === nativeForEach) { 74 | obj.forEach(iterator, context); 75 | } else if (obj.length === +obj.length) { 76 | for (var i = 0, l = obj.length; i < l; i++) { 77 | if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return; 78 | } 79 | } else { 80 | for (var key in obj) { 81 | if (hasOwnProperty.call(obj, key)) { 82 | if (iterator.call(context, obj[key], key, obj) === breaker) return; 83 | } 84 | } 85 | } 86 | }; 87 | 88 | // Return the results of applying the iterator to each element. 89 | // Delegates to **ECMAScript 5**'s native `map` if available. 90 | _.map = function(obj, iterator, context) { 91 | var results = []; 92 | if (obj == null) return results; 93 | if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); 94 | each(obj, function(value, index, list) { 95 | results[results.length] = iterator.call(context, value, index, list); 96 | }); 97 | return results; 98 | }; 99 | 100 | // **Reduce** builds up a single result from a list of values, aka `inject`, 101 | // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. 102 | _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { 103 | var initial = memo !== void 0; 104 | if (obj == null) obj = []; 105 | if (nativeReduce && obj.reduce === nativeReduce) { 106 | if (context) iterator = _.bind(iterator, context); 107 | return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); 108 | } 109 | each(obj, function(value, index, list) { 110 | if (!initial) { 111 | memo = value; 112 | initial = true; 113 | } else { 114 | memo = iterator.call(context, memo, value, index, list); 115 | } 116 | }); 117 | if (!initial) throw new TypeError("Reduce of empty array with no initial value"); 118 | return memo; 119 | }; 120 | 121 | // The right-associative version of reduce, also known as `foldr`. 122 | // Delegates to **ECMAScript 5**'s native `reduceRight` if available. 123 | _.reduceRight = _.foldr = function(obj, iterator, memo, context) { 124 | if (obj == null) obj = []; 125 | if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { 126 | if (context) iterator = _.bind(iterator, context); 127 | return memo !== void 0 ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); 128 | } 129 | var reversed = (_.isArray(obj) ? obj.slice() : _.toArray(obj)).reverse(); 130 | return _.reduce(reversed, iterator, memo, context); 131 | }; 132 | 133 | // Return the first value which passes a truth test. Aliased as `detect`. 134 | _.find = _.detect = function(obj, iterator, context) { 135 | var result; 136 | any(obj, function(value, index, list) { 137 | if (iterator.call(context, value, index, list)) { 138 | result = value; 139 | return true; 140 | } 141 | }); 142 | return result; 143 | }; 144 | 145 | // Return all the elements that pass a truth test. 146 | // Delegates to **ECMAScript 5**'s native `filter` if available. 147 | // Aliased as `select`. 148 | _.filter = _.select = function(obj, iterator, context) { 149 | var results = []; 150 | if (obj == null) return results; 151 | if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); 152 | each(obj, function(value, index, list) { 153 | if (iterator.call(context, value, index, list)) results[results.length] = value; 154 | }); 155 | return results; 156 | }; 157 | 158 | // Return all the elements for which a truth test fails. 159 | _.reject = function(obj, iterator, context) { 160 | var results = []; 161 | if (obj == null) return results; 162 | each(obj, function(value, index, list) { 163 | if (!iterator.call(context, value, index, list)) results[results.length] = value; 164 | }); 165 | return results; 166 | }; 167 | 168 | // Determine whether all of the elements match a truth test. 169 | // Delegates to **ECMAScript 5**'s native `every` if available. 170 | // Aliased as `all`. 171 | _.every = _.all = function(obj, iterator, context) { 172 | var result = true; 173 | if (obj == null) return result; 174 | if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); 175 | each(obj, function(value, index, list) { 176 | if (!(result = result && iterator.call(context, value, index, list))) return breaker; 177 | }); 178 | return result; 179 | }; 180 | 181 | // Determine if at least one element in the object matches a truth test. 182 | // Delegates to **ECMAScript 5**'s native `some` if available. 183 | // Aliased as `any`. 184 | var any = _.some = _.any = function(obj, iterator, context) { 185 | iterator = iterator || _.identity; 186 | var result = false; 187 | if (obj == null) return result; 188 | if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); 189 | each(obj, function(value, index, list) { 190 | if (result |= iterator.call(context, value, index, list)) return breaker; 191 | }); 192 | return !!result; 193 | }; 194 | 195 | // Determine if a given value is included in the array or object using `===`. 196 | // Aliased as `contains`. 197 | _.include = _.contains = function(obj, target) { 198 | var found = false; 199 | if (obj == null) return found; 200 | if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; 201 | any(obj, function(value) { 202 | if (found = value === target) return true; 203 | }); 204 | return found; 205 | }; 206 | 207 | // Invoke a method (with arguments) on every item in a collection. 208 | _.invoke = function(obj, method) { 209 | var args = slice.call(arguments, 2); 210 | return _.map(obj, function(value) { 211 | return (method.call ? method || value : value[method]).apply(value, args); 212 | }); 213 | }; 214 | 215 | // Convenience version of a common use case of `map`: fetching a property. 216 | _.pluck = function(obj, key) { 217 | return _.map(obj, function(value){ return value[key]; }); 218 | }; 219 | 220 | // Return the maximum element or (element-based computation). 221 | _.max = function(obj, iterator, context) { 222 | if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj); 223 | var result = {computed : -Infinity}; 224 | each(obj, function(value, index, list) { 225 | var computed = iterator ? iterator.call(context, value, index, list) : value; 226 | computed >= result.computed && (result = {value : value, computed : computed}); 227 | }); 228 | return result.value; 229 | }; 230 | 231 | // Return the minimum element (or element-based computation). 232 | _.min = function(obj, iterator, context) { 233 | if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj); 234 | var result = {computed : Infinity}; 235 | each(obj, function(value, index, list) { 236 | var computed = iterator ? iterator.call(context, value, index, list) : value; 237 | computed < result.computed && (result = {value : value, computed : computed}); 238 | }); 239 | return result.value; 240 | }; 241 | 242 | // Sort the object's values by a criterion produced by an iterator. 243 | _.sortBy = function(obj, iterator, context) { 244 | return _.pluck(_.map(obj, function(value, index, list) { 245 | return { 246 | value : value, 247 | criteria : iterator.call(context, value, index, list) 248 | }; 249 | }).sort(function(left, right) { 250 | var a = left.criteria, b = right.criteria; 251 | return a < b ? -1 : a > b ? 1 : 0; 252 | }), 'value'); 253 | }; 254 | 255 | // Groups the object's values by a criterion produced by an iterator 256 | _.groupBy = function(obj, iterator) { 257 | var result = {}; 258 | each(obj, function(value, index) { 259 | var key = iterator(value, index); 260 | (result[key] || (result[key] = [])).push(value); 261 | }); 262 | return result; 263 | }; 264 | 265 | // Use a comparator function to figure out at what index an object should 266 | // be inserted so as to maintain order. Uses binary search. 267 | _.sortedIndex = function(array, obj, iterator) { 268 | iterator || (iterator = _.identity); 269 | var low = 0, high = array.length; 270 | while (low < high) { 271 | var mid = (low + high) >> 1; 272 | iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid; 273 | } 274 | return low; 275 | }; 276 | 277 | // Safely convert anything iterable into a real, live array. 278 | _.toArray = function(iterable) { 279 | if (!iterable) return []; 280 | if (iterable.toArray) return iterable.toArray(); 281 | if (_.isArray(iterable)) return slice.call(iterable); 282 | if (_.isArguments(iterable)) return slice.call(iterable); 283 | return _.values(iterable); 284 | }; 285 | 286 | // Return the number of elements in an object. 287 | _.size = function(obj) { 288 | return _.toArray(obj).length; 289 | }; 290 | 291 | // Array Functions 292 | // --------------- 293 | 294 | // Get the first element of an array. Passing **n** will return the first N 295 | // values in the array. Aliased as `head`. The **guard** check allows it to work 296 | // with `_.map`. 297 | _.first = _.head = function(array, n, guard) { 298 | return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; 299 | }; 300 | 301 | // Returns everything but the first entry of the array. Aliased as `tail`. 302 | // Especially useful on the arguments object. Passing an **index** will return 303 | // the rest of the values in the array from that index onward. The **guard** 304 | // check allows it to work with `_.map`. 305 | _.rest = _.tail = function(array, index, guard) { 306 | return slice.call(array, (index == null) || guard ? 1 : index); 307 | }; 308 | 309 | // Get the last element of an array. 310 | _.last = function(array) { 311 | return array[array.length - 1]; 312 | }; 313 | 314 | // Trim out all falsy values from an array. 315 | _.compact = function(array) { 316 | return _.filter(array, function(value){ return !!value; }); 317 | }; 318 | 319 | // Return a completely flattened version of an array. 320 | _.flatten = function(array) { 321 | return _.reduce(array, function(memo, value) { 322 | if (_.isArray(value)) return memo.concat(_.flatten(value)); 323 | memo[memo.length] = value; 324 | return memo; 325 | }, []); 326 | }; 327 | 328 | // Return a version of the array that does not contain the specified value(s). 329 | _.without = function(array) { 330 | return _.difference(array, slice.call(arguments, 1)); 331 | }; 332 | 333 | // Produce a duplicate-free version of the array. If the array has already 334 | // been sorted, you have the option of using a faster algorithm. 335 | // Aliased as `unique`. 336 | _.uniq = _.unique = function(array, isSorted) { 337 | return _.reduce(array, function(memo, el, i) { 338 | if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo[memo.length] = el; 339 | return memo; 340 | }, []); 341 | }; 342 | 343 | // Produce an array that contains the union: each distinct element from all of 344 | // the passed-in arrays. 345 | _.union = function() { 346 | return _.uniq(_.flatten(arguments)); 347 | }; 348 | 349 | // Produce an array that contains every item shared between all the 350 | // passed-in arrays. (Aliased as "intersect" for back-compat.) 351 | _.intersection = _.intersect = function(array) { 352 | var rest = slice.call(arguments, 1); 353 | return _.filter(_.uniq(array), function(item) { 354 | return _.every(rest, function(other) { 355 | return _.indexOf(other, item) >= 0; 356 | }); 357 | }); 358 | }; 359 | 360 | // Take the difference between one array and another. 361 | // Only the elements present in just the first array will remain. 362 | _.difference = function(array, other) { 363 | return _.filter(array, function(value){ return !_.include(other, value); }); 364 | }; 365 | 366 | // Zip together multiple lists into a single array -- elements that share 367 | // an index go together. 368 | _.zip = function() { 369 | var args = slice.call(arguments); 370 | var length = _.max(_.pluck(args, 'length')); 371 | var results = new Array(length); 372 | for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); 373 | return results; 374 | }; 375 | 376 | // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), 377 | // we need this function. Return the position of the first occurrence of an 378 | // item in an array, or -1 if the item is not included in the array. 379 | // Delegates to **ECMAScript 5**'s native `indexOf` if available. 380 | // If the array is large and already in sort order, pass `true` 381 | // for **isSorted** to use binary search. 382 | _.indexOf = function(array, item, isSorted) { 383 | if (array == null) return -1; 384 | var i, l; 385 | if (isSorted) { 386 | i = _.sortedIndex(array, item); 387 | return array[i] === item ? i : -1; 388 | } 389 | if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item); 390 | for (i = 0, l = array.length; i < l; i++) if (array[i] === item) return i; 391 | return -1; 392 | }; 393 | 394 | 395 | // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. 396 | _.lastIndexOf = function(array, item) { 397 | if (array == null) return -1; 398 | if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item); 399 | var i = array.length; 400 | while (i--) if (array[i] === item) return i; 401 | return -1; 402 | }; 403 | 404 | // Generate an integer Array containing an arithmetic progression. A port of 405 | // the native Python `range()` function. See 406 | // [the Python documentation](http://docs.python.org/library/functions.html#range). 407 | _.range = function(start, stop, step) { 408 | if (arguments.length <= 1) { 409 | stop = start || 0; 410 | start = 0; 411 | } 412 | step = arguments[2] || 1; 413 | 414 | var len = Math.max(Math.ceil((stop - start) / step), 0); 415 | var idx = 0; 416 | var range = new Array(len); 417 | 418 | while(idx < len) { 419 | range[idx++] = start; 420 | start += step; 421 | } 422 | 423 | return range; 424 | }; 425 | 426 | // Function (ahem) Functions 427 | // ------------------ 428 | 429 | // Create a function bound to a given object (assigning `this`, and arguments, 430 | // optionally). Binding with arguments is also known as `curry`. 431 | // Delegates to **ECMAScript 5**'s native `Function.bind` if available. 432 | // We check for `func.bind` first, to fail fast when `func` is undefined. 433 | _.bind = function(func, obj) { 434 | if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); 435 | var args = slice.call(arguments, 2); 436 | return function() { 437 | return func.apply(obj, args.concat(slice.call(arguments))); 438 | }; 439 | }; 440 | 441 | // Bind all of an object's methods to that object. Useful for ensuring that 442 | // all callbacks defined on an object belong to it. 443 | _.bindAll = function(obj) { 444 | var funcs = slice.call(arguments, 1); 445 | if (funcs.length == 0) funcs = _.functions(obj); 446 | each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); 447 | return obj; 448 | }; 449 | 450 | // Memoize an expensive function by storing its results. 451 | _.memoize = function(func, hasher) { 452 | var memo = {}; 453 | hasher || (hasher = _.identity); 454 | return function() { 455 | var key = hasher.apply(this, arguments); 456 | return hasOwnProperty.call(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); 457 | }; 458 | }; 459 | 460 | // Delays a function for the given number of milliseconds, and then calls 461 | // it with the arguments supplied. 462 | _.delay = function(func, wait) { 463 | var args = slice.call(arguments, 2); 464 | return setTimeout(function(){ return func.apply(func, args); }, wait); 465 | }; 466 | 467 | // Defers a function, scheduling it to run after the current call stack has 468 | // cleared. 469 | _.defer = function(func) { 470 | return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); 471 | }; 472 | 473 | // Internal function used to implement `_.throttle` and `_.debounce`. 474 | var limit = function(func, wait, debounce) { 475 | var timeout; 476 | return function() { 477 | var context = this, args = arguments; 478 | var throttler = function() { 479 | timeout = null; 480 | func.apply(context, args); 481 | }; 482 | if (debounce) clearTimeout(timeout); 483 | if (debounce || !timeout) timeout = setTimeout(throttler, wait); 484 | }; 485 | }; 486 | 487 | // Returns a function, that, when invoked, will only be triggered at most once 488 | // during a given window of time. 489 | _.throttle = function(func, wait) { 490 | return limit(func, wait, false); 491 | }; 492 | 493 | // Returns a function, that, as long as it continues to be invoked, will not 494 | // be triggered. The function will be called after it stops being called for 495 | // N milliseconds. 496 | _.debounce = function(func, wait) { 497 | return limit(func, wait, true); 498 | }; 499 | 500 | // Returns a function that will be executed at most one time, no matter how 501 | // often you call it. Useful for lazy initialization. 502 | _.once = function(func) { 503 | var ran = false, memo; 504 | return function() { 505 | if (ran) return memo; 506 | ran = true; 507 | return memo = func.apply(this, arguments); 508 | }; 509 | }; 510 | 511 | // Returns the first function passed as an argument to the second, 512 | // allowing you to adjust arguments, run code before and after, and 513 | // conditionally execute the original function. 514 | _.wrap = function(func, wrapper) { 515 | return function() { 516 | var args = [func].concat(slice.call(arguments)); 517 | return wrapper.apply(this, args); 518 | }; 519 | }; 520 | 521 | // Returns a function that is the composition of a list of functions, each 522 | // consuming the return value of the function that follows. 523 | _.compose = function() { 524 | var funcs = slice.call(arguments); 525 | return function() { 526 | var args = slice.call(arguments); 527 | for (var i = funcs.length - 1; i >= 0; i--) { 528 | args = [funcs[i].apply(this, args)]; 529 | } 530 | return args[0]; 531 | }; 532 | }; 533 | 534 | // Returns a function that will only be executed after being called N times. 535 | _.after = function(times, func) { 536 | return function() { 537 | if (--times < 1) { return func.apply(this, arguments); } 538 | }; 539 | }; 540 | 541 | 542 | // Object Functions 543 | // ---------------- 544 | 545 | // Retrieve the names of an object's properties. 546 | // Delegates to **ECMAScript 5**'s native `Object.keys` 547 | _.keys = nativeKeys || function(obj) { 548 | if (obj !== Object(obj)) throw new TypeError('Invalid object'); 549 | var keys = []; 550 | for (var key in obj) if (hasOwnProperty.call(obj, key)) keys[keys.length] = key; 551 | return keys; 552 | }; 553 | 554 | // Retrieve the values of an object's properties. 555 | _.values = function(obj) { 556 | return _.map(obj, _.identity); 557 | }; 558 | 559 | // Return a sorted list of the function names available on the object. 560 | // Aliased as `methods` 561 | _.functions = _.methods = function(obj) { 562 | var names = []; 563 | for (var key in obj) { 564 | if (_.isFunction(obj[key])) names.push(key); 565 | } 566 | return names.sort(); 567 | }; 568 | 569 | // Extend a given object with all the properties in passed-in object(s). 570 | _.extend = function(obj) { 571 | each(slice.call(arguments, 1), function(source) { 572 | for (var prop in source) { 573 | if (source[prop] !== void 0) obj[prop] = source[prop]; 574 | } 575 | }); 576 | return obj; 577 | }; 578 | 579 | // Fill in a given object with default properties. 580 | _.defaults = function(obj) { 581 | each(slice.call(arguments, 1), function(source) { 582 | for (var prop in source) { 583 | if (obj[prop] == null) obj[prop] = source[prop]; 584 | } 585 | }); 586 | return obj; 587 | }; 588 | 589 | // Create a (shallow-cloned) duplicate of an object. 590 | _.clone = function(obj) { 591 | return _.isArray(obj) ? obj.slice() : _.extend({}, obj); 592 | }; 593 | 594 | // Invokes interceptor with the obj, and then returns obj. 595 | // The primary purpose of this method is to "tap into" a method chain, in 596 | // order to perform operations on intermediate results within the chain. 597 | _.tap = function(obj, interceptor) { 598 | interceptor(obj); 599 | return obj; 600 | }; 601 | 602 | // Perform a deep comparison to check if two objects are equal. 603 | _.isEqual = function(a, b) { 604 | // Check object identity. 605 | if (a === b) return true; 606 | // Different types? 607 | var atype = typeof(a), btype = typeof(b); 608 | if (atype != btype) return false; 609 | // Basic equality test (watch out for coercions). 610 | if (a == b) return true; 611 | // One is falsy and the other truthy. 612 | if ((!a && b) || (a && !b)) return false; 613 | // Unwrap any wrapped objects. 614 | if (a._chain) a = a._wrapped; 615 | if (b._chain) b = b._wrapped; 616 | // One of them implements an isEqual()? 617 | if (a.isEqual) return a.isEqual(b); 618 | if (b.isEqual) return b.isEqual(a); 619 | // Check dates' integer values. 620 | if (_.isDate(a) && _.isDate(b)) return a.getTime() === b.getTime(); 621 | // Both are NaN? 622 | if (_.isNaN(a) && _.isNaN(b)) return false; 623 | // Compare regular expressions. 624 | if (_.isRegExp(a) && _.isRegExp(b)) 625 | return a.source === b.source && 626 | a.global === b.global && 627 | a.ignoreCase === b.ignoreCase && 628 | a.multiline === b.multiline; 629 | // If a is not an object by this point, we can't handle it. 630 | if (atype !== 'object') return false; 631 | // Check for different array lengths before comparing contents. 632 | if (a.length && (a.length !== b.length)) return false; 633 | // Nothing else worked, deep compare the contents. 634 | var aKeys = _.keys(a), bKeys = _.keys(b); 635 | // Different object sizes? 636 | if (aKeys.length != bKeys.length) return false; 637 | // Recursive comparison of contents. 638 | for (var key in a) if (!(key in b) || !_.isEqual(a[key], b[key])) return false; 639 | return true; 640 | }; 641 | 642 | // Is a given array or object empty? 643 | _.isEmpty = function(obj) { 644 | if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; 645 | for (var key in obj) if (hasOwnProperty.call(obj, key)) return false; 646 | return true; 647 | }; 648 | 649 | // Is a given value a DOM element? 650 | _.isElement = function(obj) { 651 | return !!(obj && obj.nodeType == 1); 652 | }; 653 | 654 | // Is a given value an array? 655 | // Delegates to ECMA5's native Array.isArray 656 | _.isArray = nativeIsArray || function(obj) { 657 | return toString.call(obj) === '[object Array]'; 658 | }; 659 | 660 | // Is a given variable an object? 661 | _.isObject = function(obj) { 662 | return obj === Object(obj); 663 | }; 664 | 665 | // Is a given variable an arguments object? 666 | _.isArguments = function(obj) { 667 | return !!(obj && hasOwnProperty.call(obj, 'callee')); 668 | }; 669 | 670 | // Is a given value a function? 671 | _.isFunction = function(obj) { 672 | return !!(obj && obj.constructor && obj.call && obj.apply); 673 | }; 674 | 675 | // Is a given value a string? 676 | _.isString = function(obj) { 677 | return !!(obj === '' || (obj && obj.charCodeAt && obj.substr)); 678 | }; 679 | 680 | // Is a given value a number? 681 | _.isNumber = function(obj) { 682 | return !!(obj === 0 || (obj && obj.toExponential && obj.toFixed)); 683 | }; 684 | 685 | // Is the given value `NaN`? `NaN` happens to be the only value in JavaScript 686 | // that does not equal itself. 687 | _.isNaN = function(obj) { 688 | return obj !== obj; 689 | }; 690 | 691 | // Is a given value a boolean? 692 | _.isBoolean = function(obj) { 693 | return obj === true || obj === false; 694 | }; 695 | 696 | // Is a given value a date? 697 | _.isDate = function(obj) { 698 | return !!(obj && obj.getTimezoneOffset && obj.setUTCFullYear); 699 | }; 700 | 701 | // Is the given value a regular expression? 702 | _.isRegExp = function(obj) { 703 | return !!(obj && obj.test && obj.exec && (obj.ignoreCase || obj.ignoreCase === false)); 704 | }; 705 | 706 | // Is a given value equal to null? 707 | _.isNull = function(obj) { 708 | return obj === null; 709 | }; 710 | 711 | // Is a given variable undefined? 712 | _.isUndefined = function(obj) { 713 | return obj === void 0; 714 | }; 715 | 716 | // Utility Functions 717 | // ----------------- 718 | 719 | // Run Underscore.js in *noConflict* mode, returning the `_` variable to its 720 | // previous owner. Returns a reference to the Underscore object. 721 | _.noConflict = function() { 722 | root._ = previousUnderscore; 723 | return this; 724 | }; 725 | 726 | // Keep the identity function around for default iterators. 727 | _.identity = function(value) { 728 | return value; 729 | }; 730 | 731 | // Run a function **n** times. 732 | _.times = function (n, iterator, context) { 733 | for (var i = 0; i < n; i++) iterator.call(context, i); 734 | }; 735 | 736 | // Add your own custom functions to the Underscore object, ensuring that 737 | // they're correctly added to the OOP wrapper as well. 738 | _.mixin = function(obj) { 739 | each(_.functions(obj), function(name){ 740 | addToWrapper(name, _[name] = obj[name]); 741 | }); 742 | }; 743 | 744 | // Generate a unique integer id (unique within the entire client session). 745 | // Useful for temporary DOM ids. 746 | var idCounter = 0; 747 | _.uniqueId = function(prefix) { 748 | var id = idCounter++; 749 | return prefix ? prefix + id : id; 750 | }; 751 | 752 | // By default, Underscore uses ERB-style template delimiters, change the 753 | // following template settings to use alternative delimiters. 754 | _.templateSettings = { 755 | evaluate : /<%([\s\S]+?)%>/g, 756 | interpolate : /<%=([\s\S]+?)%>/g 757 | }; 758 | 759 | // JavaScript micro-templating, similar to John Resig's implementation. 760 | // Underscore templating handles arbitrary delimiters, preserves whitespace, 761 | // and correctly escapes quotes within interpolated code. 762 | _.template = function(str, data) { 763 | var c = _.templateSettings; 764 | var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' + 765 | 'with(obj||{}){__p.push(\'' + 766 | str.replace(/\\/g, '\\\\') 767 | .replace(/'/g, "\\'") 768 | .replace(c.interpolate, function(match, code) { 769 | return "'," + code.replace(/\\'/g, "'") + ",'"; 770 | }) 771 | .replace(c.evaluate || null, function(match, code) { 772 | return "');" + code.replace(/\\'/g, "'") 773 | .replace(/[\r\n\t]/g, ' ') + "__p.push('"; 774 | }) 775 | .replace(/\r/g, '\\r') 776 | .replace(/\n/g, '\\n') 777 | .replace(/\t/g, '\\t') 778 | + "');}return __p.join('');"; 779 | var func = new Function('obj', tmpl); 780 | return data ? func(data) : func; 781 | }; 782 | 783 | // The OOP Wrapper 784 | // --------------- 785 | 786 | // If Underscore is called as a function, it returns a wrapped object that 787 | // can be used OO-style. This wrapper holds altered versions of all the 788 | // underscore functions. Wrapped objects may be chained. 789 | var wrapper = function(obj) { this._wrapped = obj; }; 790 | 791 | // Expose `wrapper.prototype` as `_.prototype` 792 | _.prototype = wrapper.prototype; 793 | 794 | // Helper function to continue chaining intermediate results. 795 | var result = function(obj, chain) { 796 | return chain ? _(obj).chain() : obj; 797 | }; 798 | 799 | // A method to easily add functions to the OOP wrapper. 800 | var addToWrapper = function(name, func) { 801 | wrapper.prototype[name] = function() { 802 | var args = slice.call(arguments); 803 | unshift.call(args, this._wrapped); 804 | return result(func.apply(_, args), this._chain); 805 | }; 806 | }; 807 | 808 | // Add all of the Underscore functions to the wrapper object. 809 | _.mixin(_); 810 | 811 | // Add all mutator Array functions to the wrapper. 812 | each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { 813 | var method = ArrayProto[name]; 814 | wrapper.prototype[name] = function() { 815 | method.apply(this._wrapped, arguments); 816 | return result(this._wrapped, this._chain); 817 | }; 818 | }); 819 | 820 | // Add all accessor Array functions to the wrapper. 821 | each(['concat', 'join', 'slice'], function(name) { 822 | var method = ArrayProto[name]; 823 | wrapper.prototype[name] = function() { 824 | return result(method.apply(this._wrapped, arguments), this._chain); 825 | }; 826 | }); 827 | 828 | // Start chaining a wrapped Underscore object. 829 | wrapper.prototype.chain = function() { 830 | this._chain = true; 831 | return this; 832 | }; 833 | 834 | // Extracts the result from a wrapped and chained object. 835 | wrapper.prototype.value = function() { 836 | return this._wrapped; 837 | }; 838 | 839 | })(); 840 | --------------------------------------------------------------------------------