diff options
-rw-r--r-- | migratetags/Makefile | 2 | ||||
-rw-r--r-- | migratetags/matchers/defaultmatcher.h | 5 | ||||
-rw-r--r-- | migratetags/migratetags.cpp | 147 | ||||
-rw-r--r-- | migratetags/tag-exceptions-na28-example.conf | 365 |
4 files changed, 482 insertions, 37 deletions
diff --git a/migratetags/Makefile b/migratetags/Makefile index 19f4335..fcfea28 100644 --- a/migratetags/Makefile +++ b/migratetags/Makefile @@ -4,7 +4,7 @@ TARGETS= migratetags all: $(TARGETS) clean: - rm $(TARGETS) + rm -f $(TARGETS) .cpp: g++ -g `pkg-config --cflags sword` $< -o $@ `pkg-config --libs sword` diff --git a/migratetags/matchers/defaultmatcher.h b/migratetags/matchers/defaultmatcher.h index b74ed38..fbf14ff 100644 --- a/migratetags/matchers/defaultmatcher.h +++ b/migratetags/matchers/defaultmatcher.h @@ -1,12 +1,15 @@ #include "matcher.h" +#include <utf8greekaccents.h> #ifndef defaultmatcher_h #define defaultmatcher_h class DefaultMatcher : public Matcher { + UTF8GreekAccents sanitizeGreekAccentFilter; public: - DefaultMatcher() { + DefaultMatcher() : sanitizeGreekAccentFilter() { + sanitizeGreekAccentFilter.setOptionValue("off"); } // Compares 2 words and tries to give a percentage assurance of a match diff --git a/migratetags/migratetags.cpp b/migratetags/migratetags.cpp index 2b6b92b..ecb1ed0 100644 --- a/migratetags/migratetags.cpp +++ b/migratetags/migratetags.cpp @@ -3,6 +3,7 @@ #include <swmgr.h> #include <utilxml.h> #include <swbuf.h> +#include <swconfig.h> #include <swmodule.h> #include <stringmgr.h> #include <iostream> @@ -14,11 +15,13 @@ using namespace std; #include "matchers/matcher.h" // select your matcher here +//#include "matchers/gntmatcher.h" #include "matchers/defaultmatcher.h" Matcher *matcher = new DefaultMatcher(); -const char *targetModuleName="NA28"; -const char *strongsSourceModuleName="WHNU"; +// hard code your from and to modules here or pass them on the command line with - +SWBuf strongsSourceModuleName = "WHNU"; +SWBuf targetModuleName = "NA28FromImp"; const char *ignoreSeries = "⸆¹⸆²⸆⸇᾿˸¹˸²˸³˸·¹²⟦–ʹ°¹°²⸋¹⸋²⸋⸌¹⸌°*[];⸀¹⸀²⸀³⸁⸀◆⟧ ⸂¹⸂²⸄⸂⸅⸃⸉¹⸈⸉⸊ "; @@ -30,12 +33,14 @@ void insert(SWBuf addText, SWBuf &out, int bibPos, BibMap &bibMap, BibMap &wTags SWBuf findCanonicalBibleText(SWBuf orig, BibMap &bibMap, BibMap &tTags); SWBuf buildWordMaps(const SWBuf &markupBuf, const BibMap &bibMap, vector<SWBuf> &targetWords, vector<int> &targetWordStarts, vector<int> &targetWordEnds); void pullFromModData(SWModule &fromMod, vector<XMLTag>&wordTags, vector<SWBuf> &fromWords, vector<int> &fromWordTags); -void insertWordTags(SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, const vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds); +void insertWordTags(VerseKey *vk, SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds); // app options bool optionFilterAccents = false; bool optionFilterAppCrit = false; bool optionDebug = false; +vector<SWBuf> optionExceptionFile; +SWConfig *exceptionFile = 0; void usage(const char *progName, const char *error = 0) { if (error) fprintf(stderr, "\n%s: %s\n", progName, error); @@ -43,6 +48,10 @@ void usage(const char *progName, const char *error = 0) { fprintf(stderr, "\nusage: %s [options]\n", progName); fprintf(stderr, " -v\t\t\t verbose: print lots of information while processing\n"); fprintf(stderr, " -fa\t\t\t filter accents: remove Greek accents from final text\n"); + fprintf(stderr, " -fc\t\t\t filter critical apparatus markers from final text\n"); + fprintf(stderr, " -ss <moduleName>\t provide the Strong's source module name\n"); + fprintf(stderr, " -t <moduleName>\t provide the target module name\n"); + fprintf(stderr, " -e <exception file>\t provide an ini-style .conf file with overriding tag exceptions.\n"); fprintf(stderr, "\n\n"); exit(-1); } @@ -61,6 +70,24 @@ int main(int argc, char **argv) { else if (!strcmp(argv[i], "-fc")) { optionFilterAppCrit = true; } + else if (!strcmp(argv[i], "-ss")) { + if ((i + 1) < argc) { + strongsSourceModuleName = argv[++i]; + } + else usage(progName, "-ss argument requires a module name."); + } + else if (!strcmp(argv[i], "-t")) { + if ((i + 1) < argc) { + targetModuleName = argv[++i]; + } + else usage(progName, "-t argument requires a module name."); + } + else if (!strcmp(argv[i], "-e")) { + if (i+1 < argc) { + optionExceptionFile.push_back(argv[++i]); + } + else usage(progName, "-e argument requires a file name."); + } else usage(progName, (((SWBuf)"Unknown argument: ")+ argv[i]).c_str()); } @@ -72,16 +99,23 @@ int main(int argc, char **argv) { exit(1); } SWModule &targetMod = *m; - m = lib.getModule(strongsSourceModuleName); + m = lib.getModule(strongsSourceModuleName.c_str()); if (!m) { - cerr << "couldn't find source module: " << strongsSourceModuleName << ".\n"; + cerr << "couldn't find source module: " << strongsSourceModuleName.c_str() << ".\n"; exit(1); } SWModule &fromMod = *m; + for (int i = 0; i < optionExceptionFile.size(); ++i) { + SWBuf fileName = optionExceptionFile[i]; + if (!i) exceptionFile = new SWConfig(fileName); + else (*exceptionFile) += SWConfig(fileName); + } + // we'll do the whole Bible eventually, but let's just get one verse // working well. - targetMod.setKey("mat1.1"); // let's try this verse + ((VerseKey *)targetMod.getKey())->setIntros(true); + targetMod.getKey()->setText("mat0.0"); // let's try this verse int z = 0; for (; //!z && @@ -147,7 +181,7 @@ if (optionDebug) { cout << "\nProcessing Verse: " << targetMod.getKeyText() << endl; cout << "---------------------" << endl; - cout << "\nOur FromMod Verse Markup" << endl; + cout << "\nOur strongsSourceModule Markup" << endl; cout << "---------------------" << endl; cout << fromMod.getRawEntry() << endl; cout << "---------------------" << endl; @@ -157,18 +191,20 @@ if (optionDebug) { // grab our raw, fully marked up TargetMod text for this verse SWBuf orig = targetMod.getRawEntryBuf(); - if (optionFilterAccents) { - UTF8GreekAccents filter; - filter.setOptionValue("off"); - filter.processText(orig); - } + +if (optionDebug) { + cout << "\nOur Original targetModule Markup" << endl; + cout << "---------------------" << endl; + cout << orig << endl; + cout << "---------------------" << endl; +} if (optionFilterAppCrit) { SWBuf o = orig; const unsigned char* from = (unsigned char*)o.c_str(); orig = ""; while (*from) { - __u32 ch = getUniCharFromUTF8(&from, true); + SW_u32 ch = getUniCharFromUTF8(&from, true); // if ch is bad, then convert to replacement char if (!ch) ch = 0xFFFD; SWBuf checkChar; @@ -178,13 +214,6 @@ if (optionDebug) { } } -if (optionDebug) { - cout << "\nOur Original TargetMod Markup" << endl; - cout << "---------------------" << endl; - cout << orig << endl; - cout << "---------------------" << endl; -} - // let's find where just the canonical text is amongst // all our markup // newTargetModMarkup will eventually hold our updated markup with @@ -196,7 +225,7 @@ if (optionDebug) { SWBuf newTargetModMarkup = findCanonicalBibleText(orig, bibMap, wTags); if (optionDebug) { - cout << "\nOur Original TargetMod Markup After XMLTag-ifying" << endl; + cout << "\nOur Original targetModule Markup After XMLTag-ifying" << endl; cout << "---------------------" << endl; cout << newTargetModMarkup << endl; cout << "---------------------" << endl; @@ -214,7 +243,7 @@ if (optionDebug) { justTargetModBibleText = buildWordMaps(newTargetModMarkup, bibMap, targetWords, targetWordStarts, targetWordEnds); if (optionDebug) { - cout << "\nJust TargetMod Bible Text" << endl; + cout << "\nJust targetModule Bible Text" << endl; cout << "---------------------" << endl; cout << justTargetModBibleText << endl; cout << "---------------------" << endl; @@ -234,14 +263,13 @@ if (optionDebug) { // matcher->matchWords(targetWordTags, targetWords, fromWords, fromWordTags); - // ok, now that we have our targetWordTags magically populated // let's do the grunt work of inserting the <w> and </w> tags - insertWordTags(newTargetModMarkup, bibMap, wTags, targetWordTags, wordTags, targetWordStarts, targetWordEnds); + insertWordTags((VerseKey *)targetMod.getKey(), newTargetModMarkup, bibMap, wTags, targetWordTags, wordTags, targetWordStarts, targetWordEnds); if (optionDebug) { - cout << "\nHere's how you mapped things..." << endl; + cout << "\nHere's how we mapped things..." << endl; cout << "---------------------" << endl; cout << "Total wordTags: " << wordTags.size() << endl; cout << "\nTargetMod Words: " << endl; @@ -251,7 +279,7 @@ if (optionDebug) { if (targetWordTags[i] == -1 && !strstr(ignoreSeries, targetWords[i])) { if (!warned) { cerr << "*** Error: didn't match all words: " << targetMod.getKeyText() << endl; - cerr << strongsSourceModuleName << ":"; + cerr << strongsSourceModuleName.c_str() << ":"; for (int j = 0; j < fromWords.size(); ++j) { cerr << " " << fromWords[j]; } @@ -268,7 +296,7 @@ if (optionDebug) { cerr << " " << i << ": " << targetWords[i] << " (" << matcher->sanitizeWord(targetWords[i]) << ")" << endl; } if (optionDebug) { - cout << targetWords[i] << " : " << targetWordTags[i] << " => " << (targetWordTags[i] != -1 ? wordTags[targetWordTags[i]] : "") << endl; + cout << targetWords[i] << " : " << targetWordTags[i] << " => " << (targetWordTags[i] > -1 ? wordTags[targetWordTags[i]] : "") << endl; } } if (warned) { @@ -276,15 +304,22 @@ if (optionDebug) { VerseKey *vk = (VerseKey *)targetMod.getKey(); for (int j = 0; j < targetWords.size(); ++j) { if (!strstr(ignoreSeries, targetWords[j])) { - cerr << targetWords[j] << "\t\t " << vk->getOSISRef() << "." << j << "=" << (targetWordTags[j] != -1 ? wordTags[targetWordTags[j]] : "") << endl; + cerr << targetWords[j] << "\t\t " << vk->getOSISRef() << "." << j << "=" << (targetWordTags[j] > -1 ? (const char *)wordTags[targetWordTags[j]] : (targetWordTags[j] == -2 ? "{Using Exception}" : "")) << endl; } } cerr << "---------------------" << endl; } + + if (optionFilterAccents) { + UTF8GreekAccents filter; + filter.setOptionValue("off"); + filter.processText(newTargetModMarkup); + } + if (optionDebug) { cout << "---------------------" << endl; - cout << "\nAND... Here's your final output" << endl; + cout << "\nAND... Here's our final output" << endl; cout << "---------------------" << endl; } cout << newTargetModMarkup << endl; @@ -292,6 +327,9 @@ if (optionDebug) { cout << endl; } } + + delete exceptionFile; + return 0; } @@ -305,6 +343,8 @@ SWBuf findCanonicalBibleText(SWBuf orig, BibMap &bibMap, BibMap &wTags) { int tagLevel = 0; int wTag = -1; int inTag = 0; + bool wTagsPresent = orig.indexOf("<w") > -1; + SWBuf lastElementText = ""; for (int i = 0; i < orig.length(); ++i) { if (orig[i] == '<') { inTag = true; @@ -312,30 +352,48 @@ SWBuf findCanonicalBibleText(SWBuf orig, BibMap &bibMap, BibMap &wTags) { else if (orig[i] == '>') { inTag = false; XMLTag t = tag.c_str(); + bool skipTag = false; if (!t.isEmpty()) { if (t.isEndTag()) { + // clear out empty w tags + if (t.getName() && !strcmp("w", t.getName())) { + if (!lastElementText.size()) { + out.setSize(wTag); + if (out.endsWith(' ')) { // && i < (orig.length() - 1) && orig[i+1] == ' ') { + out.setSize(out.size() - 1); + bibMap.pop_back(); + wTags.pop_back(); + } + skipTag = true; + } + } tagLevel--; wTag = -1; } else { + lastElementText = ""; tagLevel++; wTag = (t.getName() && !strcmp("w", t.getName())) ? out.size() : -1; } } - out += t; + if (!skipTag) out += t; tag = ""; } else if (inTag) { tag += orig[i]; } else { -// for texts without <w> tags -// if (!tagLevel || wTag != -1) { - if (wTag != -1 || orig[i] == ' ') { + if ( + // for texts without <w> tags + (!wTagsPresent && (!tagLevel || wTag != -1)) + // for texts with <w> tags + || ( wTagsPresent && (wTag != -1 || orig[i] == ' ')) + ) { bibMap.push_back(out.size()); wTags.push_back(wTag); } out += orig[i]; + lastElementText += orig[i]; } } return out; @@ -480,13 +538,32 @@ void pullFromModData(SWModule &fromMod, vector<XMLTag>&wordTags, vector<SWBuf> & } -void insertWordTags(SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, const vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds) { +void insertWordTags(VerseKey *vk, SWBuf &markupBuf, BibMap &bibMap, BibMap &wTags, vector<int> &targetWordTags, const vector<XMLTag> &wordTags, const vector<int> &targetWordStarts, const vector<int> &targetWordEnds) { // TODO: this method needs some work, // like putting multiple consecutive words // together in one tag + + ConfigEntMap exceptions; + + if (exceptionFile) { + exceptions = exceptionFile->getSection("exceptions"); + } + for (int i = 0; i < targetWordTags.size(); ++i) { + SWBuf wordTag = ""; if (targetWordTags[i] > -1) { - insert((const char *)wordTags[targetWordTags[i]], markupBuf, targetWordStarts[i], bibMap, wTags); + wordTag = wordTags[targetWordTags[i]]; + } + if (exceptionFile) { + SWBuf key; key.setFormatted("%s.%d", vk->getOSISRef(), i); + ConfigEntMap::const_iterator it = exceptions.find(key); + if (it != exceptions.end()) { + targetWordTags[i] = -2; // note that we are using an exception, not a mapping, not unset (-1) + wordTag = it->second; + } + } + if (wordTag.length()) { + insert((const char *)wordTag, markupBuf, targetWordStarts[i], bibMap, wTags); insert("</w>", markupBuf, targetWordEnds[i], bibMap, wTags, true); } } diff --git a/migratetags/tag-exceptions-na28-example.conf b/migratetags/tag-exceptions-na28-example.conf new file mode 100644 index 0000000..c9b6f9f --- /dev/null +++ b/migratetags/tag-exceptions-na28-example.conf @@ -0,0 +1,365 @@ +[exceptions] +Matt.0=<w lemma="strong:G2596" morph="robinson:PREP"> +Matt.1=<w lemma="strong:G3156" morph="robinson:N-ASM"> +Matt.6.24.3=<w lemma="strong:G1417" morph="robinson:A-DPF"> +Matt.9.4.9=<w lemma="strong:G2444" morph="robinson:CONJ"> +Matt.12.47.16=<w lemma="strong:G2980" morph="robinson:V-AAN strongsMorph:G5658"> +Matt.15.6.1=<w lemma="strong:G3756" morph="robinson:PRT-N"> +Matt.15.6.2=<w lemma="strong:G3361" morph="robinson:PRT-N"> +Matt.15.6.3=<w lemma="strong:G5091" morph="robinson:V-FAI-3S strongsMorph:G5692"> +Matt.15.6.5=<w lemma="strong:G3962" morph="robinson:N-ASM"> +Matt.15.6.6=<w lemma="strong:G846" morph="robinson:P-GSM"> +Matt.15.6.10=<w lemma="strong:G3588" morph="robinson:T-ASM"> +Matt.26.60.8=<w lemma="strong:G5305" morph="robinson:ADV"> +Matt.26.60.9=<w lemma="strong:G1161" morph="robinson:CONJ"> +Matt.26.60.10=<w lemma="strong:G4334" morph="robinson:V-2AAP-NPM strongsMorph:G5631"> +Matt.26.60.11=<w lemma="strong:G1417" morph="robinson:A-NUI"> +Matt.27.46.22=<w lemma="strong:G2444" morph="robinson:CONJ"> +Mark.0=<w lemma="strong:G2596" morph="robinson:PREP"> +Mark.1=<w lemma="strong:G3138" morph="robinson:N-ASM"> +Mark.3.20.1=<w lemma="strong:G2064" morph="robinson:V-PNI-3S strongsMorph:G5736"> +Mark.3.20.2=<w lemma="strong:G1519" morph="robinson:PREP"> +Mark.3.20.3=<w lemma="strong:G3624" morph="robinson:N-ASM"> +Mark.3.20.4=<w lemma="strong:G2532" morph="robinson:CONJ"> +Mark.6.27.11=<w lemma="strong:G2532" morph="robinson:CONJ"> +Mark.6.27.12=<w lemma="strong:G565" morph="robinson:V-2AAP-NSM strongsMorph:G5631"> +Mark.6.27.13=<w lemma="strong:G607" morph="robinson:V-AAI-3S strongsMorph:G5656"> +Mark.6.27.14=<w lemma="strong:G846" morph="robinson:P-ASM"> +Mark.6.27.15=<w lemma="strong:G1722" morph="robinson:PREP"> +Mark.6.27.16=<w lemma="strong:G3588" morph="robinson:T-DSF"> +Mark.6.27.17=<w lemma="strong:G5438" morph="robinson:N-DSF"> +Mark.12.14.37=<w lemma="strong:G1325" morph="robinson:V-2AAS-1P strongsMorph:G5632"> +Mark.12.14.38=<w lemma="strong:G2228" morph="robinson:PRT"> +Mark.12.14.39=<w lemma="strong:G3361" morph="robinson:PRT-N"> +Mark.12.14.40=<w lemma="strong:G1325" morph="robinson:V-2AAS-1P strongsMorph:G5632"> +Mark.13.30.10=<w lemma="strong:G3360" morph="robinson:ADV"> +Mark.16.8.20=<w lemma="strong:G3956" morph="robinson:A-APN"> +Mark.16.8.21=<w lemma="strong:G1161" morph="robinson:CONJ"> +Mark.16.8.22=<w lemma="strong:G3588" morph="robinson:T-APN"> +Mark.16.8.23=<w lemma="strong:G3853" morph="robinson:V-RPP-APN strongsMorph:G5772"> +Mark.16.8.24=<w lemma="strong:G3588" morph="robinson:T-DPM"> +Mark.16.8.25=<w lemma="strong:G4012" morph="robinson:PREP"> +Mark.16.8.26=<w lemma="strong:G3588" morph="robinson:T-ASM"> +Mark.16.8.27=<w lemma="strong:G4074" morph="robinson:N-ASM"> +Mark.16.8.28=<w lemma="strong:G4935" morph="robinson:ADV"> +Mark.16.8.29=<w lemma="strong:G1804" morph="robinson:V-AAI-3P strongsMorph:G5656"> +Mark.16.8.30=<w lemma="strong:G3326" morph="robinson:PREP"> +Mark.16.8.31=<w lemma="strong:G1161" morph="robinson:CONJ"> +Mark.16.8.32=<w lemma="strong:G3778" morph="robinson:D-APN"> +Mark.16.8.33=<w lemma="strong:G2532" morph="robinson:CONJ"> +Mark.16.8.34=<w lemma="strong:G846" morph="robinson:P-NSM"> +Mark.16.8.35=<w lemma="strong:G3588" morph="robinson:T-NSM"> +Mark.16.8.36=<w lemma="strong:G2424" morph="robinson:N-NSM"> +Mark.16.8.38=<w lemma="strong:G575" morph="robinson:PREP"> +Mark.16.8.39=<w lemma="strong:G395" morph="robinson:N-GSF"> +Mark.16.8.40=<w lemma="strong:G2532" morph="robinson:CONJ"> +Mark.16.8.41=<w lemma="strong:G891" morph="robinson:ADV"> +Mark.16.8.42=<w lemma="strong:G1424" morph="robinson:N-GSF"> +Mark.16.8.43=<w lemma="strong:G1821" morph="robinson:V-AAI-3S strongsMorph:G5656"> +Mark.16.8.44=<w lemma="strong:G1223" morph="robinson:PREP"> +Mark.16.8.46=<w lemma="strong:G846" morph="robinson:P-GPM"> +Mark.16.8.47=<w lemma="strong:G3588" morph="robinson:T-ASN"> +Mark.16.8.48=<w lemma="strong:G2411" morph="robinson:N-ASN"> +Mark.16.8.49=<w lemma="strong:G2532" morph="robinson:CONJ"> +Mark.16.8.50=<w lemma="strong:G862" morph="robinson:A-ASM"> +Mark.16.8.51=<w lemma="strong:G2782" morph="robinson:N-NSN"> +Mark.16.8.52=<w lemma="strong:G3588" morph="robinson:T-GSF"> +Mark.16.8.53=<w lemma="strong:G166" morph="robinson:A-GSF"> +Mark.16.8.54=<w lemma="strong:G4991" morph="robinson:N-GSF"> +Mark.16.8.55=<w lemma="strong:G281" morph="robinson:HEB"> +Luke.0=<w lemma="strong:G2596" morph="robinson:PREP"> +Luke.1=<w lemma="strong:G3065" morph="robinson:N-ASM"> +Luke.6.18.1=<w lemma="strong:G2064" morph="robinson:V-2AAI-3P strongsMorph:G5627"> +Luke.6.18.2=<w lemma="strong:G191" morph="robinson:V-AAN strongsMorph:G5658"> +Luke.6.18.3=<w lemma="strong:G846" morph="robinson:P-GSM"> +Luke.6.18.5=<w lemma="strong:G2390" morph="robinson:V-APN strongsMorph:G5683"> +Luke.6.18.7=<w lemma="strong:G3588" morph="robinson:T-GPF"> +Luke.6.18.8=<w lemma="strong:G3554" morph="robinson:N-GPF"> +Luke.6.18.9=<w lemma="strong:G846" morph="robinson:P-GPM"> +Luke.6.18.10=<w lemma="strong:G2532" morph="robinson:CONJ"> +Luke.6.18.11=<w lemma="strong:G3588" morph="robinson:T-NPM"> +Luke.6.18.13=<w lemma="strong:G575" morph="robinson:PREP"> +Luke.7.18.9=<w lemma="strong:G2532" morph="robinson:CONJ"> +Luke.7.18.10=<w lemma="strong:G4341" morph="robinson:V-ADP-NSM strongsMorph:G5666"> +Luke.7.18.11=<w lemma="strong:G1417" morph="robinson:A-NUI"> +Luke.7.18.12=<w lemma="strong:G5100" morph="robinson:X-APM"> +Luke.7.18.13=<w lemma="strong:G3588" morph="robinson:T-GPM"> +Luke.7.18.14=<w lemma="strong:G3101" morph="robinson:N-GPM"> +Luke.7.18.15=<w lemma="strong:G846" morph="robinson:P-GSM"> +Luke.7.18.16=<w lemma="strong:G3588" morph="robinson:T-NSM"> +Luke.7.18.17=<w lemma="strong:G2491" morph="robinson:N-NSM"> +Luke.13.7.25=<w lemma="strong:G2444" morph="robinson:CONJ"> +Luke.17.23.5=<w lemma="strong:G2228" morph="robinson:PRT"> +Luke.22.67.0=<w lemma="strong:G3004" morph="robinson:V-PAP-NPM strongsMorph:G5723"> +John.0=<w lemma="strong:G2596" morph="robinson:PREP"> +John.1=<w lemma="strong:G2491" morph="robinson:N-ASM"> +John.18.2.0=<w lemma="strong:G1492" morph="robinson:V-2LAI-3S strongsMorph:G5714"> +Acts.0=<w lemma="strong:G4234" morph="robinson:N-NPF"> +Acts.1=<w lemma="strong:G652" morph="robinson:N-GPM"> +Acts.2.11.0=<w lemma="strong:G2453" morph="robinson:A-NPM"> +Acts.2.11.1=<w lemma="strong:G5037" morph="robinson:PRT"> +Acts.2.11.3=<w lemma="strong:G4339" morph="robinson:N-NPM"> +Acts.2.11.5=<w lemma="strong:G2532" morph="robinson:CONJ"> +Acts.3.20.0=<w lemma="strong:G3704" morph="robinson:ADV"> +Acts.3.20.1=<w lemma="strong:G302" morph="robinson:PRT"> +Acts.3.20.2=<w lemma="strong:G2064" morph="robinson:V-2AAS-3P strongsMorph:G5632"> +Acts.3.20.3=<w lemma="strong:G2540" morph="robinson:N-NPM"> +Acts.3.20.4=<w lemma="strong:G403" morph="robinson:N-GSF"> +Acts.3.20.5=<w lemma="strong:G575" morph="robinson:PREP"> +Acts.3.20.6=<w lemma="strong:G4383" morph="robinson:N-GSN"> +Acts.3.20.7=<w lemma="strong:G3588" morph="robinson:T-GSM"> +Acts.3.20.8=<w lemma="strong:G2962" morph="robinson:N-GSM"> +Acts.4.25.12=<w lemma="strong:G2444" morph="robinson:CONJ"> +Acts.5.39.14=<w lemma="strong:G3982" morph="robinson:V-API-3P strongsMorph:G5681"> +Acts.5.39.15=<w lemma="strong:G1161" morph="robinson:CONJ"> +Acts.5.39.16=<w lemma="strong:G846" morph="robinson:P-DSM"> +Acts.7.26.17=<w lemma="strong:G2444" morph="robinson:CONJ"> +Acts.13.33.0=<w lemma="strong:G3754" morph="robinson:CONJ"> +Acts.13.33.1=<w lemma="strong:G3778" morph="robinson:D-ASF"> +Acts.13.33.2=<w lemma="strong:G3588" morph="robinson:T-NSM"> +Acts.13.33.3=<w lemma="strong:G2316" morph="robinson:N-NSM"> +Acts.13.33.4=<w lemma="strong:G1603" morph="robinson:V-RAI-3S strongsMorph:G5758"> +Acts.13.33.5=<w lemma="strong:G3588" morph="robinson:T-DPN"> +Acts.13.33.6=<w lemma="strong:G5043" morph="robinson:N-DPN"> +Acts.13.33.7=<w lemma="strong:G846" morph="robinson:P-GPM"> +Acts.13.33.8=<w lemma="strong:G1473" morph="robinson:P-1DP"> +Acts.13.33.9=<w lemma="strong:G450" morph="robinson:V-AAP-NSM strongsMorph:G5660"> +Acts.13.33.10=<w lemma="strong:G2424" morph="robinson:N-ASM"> +Acts.13.38.14=<w lemma="strong:G2532" morph="robinson:CONJ"> +Acts.13.38.15=<w lemma="strong:G575" morph="robinson:PREP"> +Acts.13.38.16=<w lemma="strong:G3956" morph="robinson:A-GPN"> +Acts.13.38.17=<w lemma="strong:G3739" morph="robinson:R-GPN"> +Acts.13.38.18=<w lemma="strong:G3756" morph="robinson:PRT-N"> +Acts.13.38.19=<w lemma="strong:G1410" morph="robinson:V-AOI-2P-ATT strongsMorph:G5675"> +Acts.13.38.20=<w lemma="strong:G1722" morph="robinson:PREP"> +Acts.13.38.21=<w lemma="strong:G3551" morph="robinson:N-DSM"> +Acts.13.38.22=<w lemma="strong:G3475" morph="robinson:N-GSM"> +Acts.13.38.23=<w lemma="strong:G1344" morph="robinson:V-APN strongsMorph:G5683"> +Acts.19.40.21=<w lemma="strong:G2532" morph="robinson:CONJ"> +Acts.19.40.22=<w lemma="strong:G3778" morph="robinson:D-APN"> +Acts.19.40.23=<w lemma="strong:G3004" morph="robinson:V-2AAP-NSM strongsMorph:G5631"> +Acts.19.40.24=<w lemma="strong:G630" morph="robinson:V-AAI-3S strongsMorph:G5656"> +Acts.19.40.25=<w lemma="strong:G3588" morph="robinson:T-ASF"> +Acts.19.40.26=<w lemma="strong:G1577" morph="robinson:N-ASF"> +Acts.24.19.0=<w lemma="strong:G5100" morph="robinson:X-NPM"> +Acts.24.19.1=<w lemma="strong:G1161" morph="robinson:CONJ"> +Acts.24.19.2=<w lemma="strong:G575" morph="robinson:PREP"> +Acts.24.19.3=<w lemma="strong:G3588" morph="robinson:T-GSF"> +Acts.24.19.4=<w lemma="strong:G773" morph="robinson:N-GSF"> +Acts.24.19.5=<w lemma="strong:G2453" morph="robinson:A-NPM"> +Rom.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Rom.1=<w lemma="strong:G4514" morph="robinson:A-APM"> +Rom.7.10.0=<w lemma="strong:G1473" morph="robinson:P-1NS"> +Rom.7.10.1=<w lemma="strong:G1161" morph="robinson:CONJ"> +Rom.7.10.2=<w lemma="strong:G599" morph="robinson:V-2AAI-3P strongsMorph:G5627"> +Rom.9.12.0=<w lemma="strong:G3756" morph="robinson:PRT-N"> +Rom.9.12.1=<w lemma="strong:G1537" morph="robinson:PREP"> +Rom.9.12.2=<w lemma="strong:G2041" morph="robinson:N-GPN"> +Rom.9.12.3=<w lemma="strong:G235" morph="robinson:CONJ"> +Rom.9.12.5=<w lemma="strong:G1537" morph="robinson:PREP"> +Rom.9.12.6=<w lemma="strong:G3588" morph="robinson:T-GSM"> +Rom.9.12.7=<w lemma="strong:G2564" morph="robinson:V-PAP-GSM strongsMorph:G5723"> +1Cor.0=<w lemma="strong:G4314" morph="robinson:PREP"> +1Cor.1=<w lemma="strong:G2881" morph="robinson:A-APM"> +1Cor.2= +1Cor.10.29.10=<w lemma="strong:G2444" morph="robinson:CONJ"> +2Cor.0=<w lemma="strong:G4314" morph="robinson:PREP"> +2Cor.1=<w lemma="strong:G2881" morph="robinson:A-APM"> +2Cor.2= +2Cor.1.7.1=<w lemma="strong:G3588" morph="robinson:T-NSF"> +2Cor.1.7.2=<w lemma="strong:G1680" morph="robinson:N-NSF"> +2Cor.1.7.3=<w lemma="strong:G1473" morph="robinson:P-1GP"> +2Cor.1.7.4=<w lemma="strong:G949" morph="robinson:A-NSF"> +2Cor.1.7.5=<w lemma="strong:G5228" morph="robinson:PREP"> +2Cor.1.7.6=<w lemma="strong:G1473" morph="robinson:P-1GP"> +2Cor.1.7.15=<w lemma="strong:G2532" morph="robinson:CONJ"> +2Cor.8.14.0=<w lemma="strong:G1722" morph="robinson:PREP"> +2Cor.8.14.1=<w lemma="strong:G3588" morph="robinson:T-DSM"> +2Cor.8.14.2=<w lemma="strong:G3568" morph="robinson:ADV"> +2Cor.8.14.3=<w lemma="strong:G2540" morph="robinson:N-DSM"> +2Cor.8.14.13=<w lemma="strong:G3588" morph="robinson:T-ASN"> +2Cor.8.14.14=<w lemma="strong:G1565" morph="robinson:D-GPM"> +2Cor.8.14.15=<w lemma="strong:G4051" morph="robinson:N-NSN"> +2Cor.8.14.17=<w lemma="strong:G1519" morph="robinson:PREP"> +2Cor.8.14.18=<w lemma="strong:G3588" morph="robinson:T-ASN"> +2Cor.8.14.19=<w lemma="strong:G4771" morph="robinson:P-2GP"> +2Cor.8.14.20=<w lemma="strong:G5303" morph="robinson:N-ASN"> +2Cor.10.4.15=<w lemma="strong:G3053" morph="robinson:N-APM"> +2Cor.10.4.16=<w lemma="strong:G2507" morph="robinson:V-PAP-NPM strongsMorph:G5723"> +2Cor.13.12.5=<w lemma="strong:G782" morph="robinson:V-PNI-3P strongsMorph:G5736"> +2Cor.13.12.6=<w lemma="strong:G4771" morph="robinson:P-2AP"> +2Cor.13.12.7=<w lemma="strong:G3588" morph="robinson:T-NPM"> +2Cor.13.12.8=<w lemma="strong:G40" morph="robinson:A-NPM"> +2Cor.13.12.9=<w lemma="strong:G3956" morph="robinson:A-NPM"> +2Cor.13.13.0=<w lemma="strong:G3588" morph="robinson:T-NSF"> +2Cor.13.13.1=<w lemma="strong:G5485" morph="robinson:N-NSF"> +2Cor.13.13.2=<w lemma="strong:G3588" morph="robinson:T-GSM"> +2Cor.13.13.3=<w lemma="strong:G2962" morph="robinson:N-GSM"> +2Cor.13.13.4=<w lemma="strong:G2424" morph="robinson:N-GSM"> +2Cor.13.13.5=<w lemma="strong:G5547" morph="robinson:N-GSM"> +2Cor.13.13.6=<w lemma="strong:G2532" morph="robinson:CONJ"> +2Cor.13.13.7=<w lemma="strong:G3588" morph="robinson:T-NSF"> +2Cor.13.13.8=<w lemma="strong:G26" morph="robinson:N-NSF"> +2Cor.13.13.9=<w lemma="strong:G3588" morph="robinson:T-GSM"> +2Cor.13.13.10=<w lemma="strong:G2316" morph="robinson:N-GSM"> +2Cor.13.13.11=<w lemma="strong:G2532" morph="robinson:CONJ"> +2Cor.13.13.12=<w lemma="strong:G3588" morph="robinson:T-NSF"> +2Cor.13.13.13=<w lemma="strong:G2842" morph="robinson:N-NSF"> +2Cor.13.13.14=<w lemma="strong:G3588" morph="robinson:T-GSN"> +2Cor.13.13.15=<w lemma="strong:G40" morph="robinson:A-GSN"> +2Cor.13.13.16=<w lemma="strong:G4151" morph="robinson:N-GSN"> +2Cor.13.13.17=<w lemma="strong:G3326" morph="robinson:PREP"> +2Cor.13.13.18=<w lemma="strong:G3956" morph="robinson:A-GPN"> +2Cor.13.13.19=<w lemma="strong:G4771" morph="robinson:P-2GP"> +Gal.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Gal.1=<w lemma="strong:G1052" morph="robinson:A-APM"> +Gal.2.19.9=<w lemma="strong:G5547" morph="robinson:N-DSM"> +Gal.2.19.10=<w lemma="strong:G4957" morph="robinson:V-RPI-1S strongsMorph:G5769"> +Gal.3.19.8=<w lemma="strong:G891" morph="robinson:ADV"> +Gal.4.19.5=<w lemma="strong:G3360" morph="robinson:ADV"> +Eph.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Eph.1=<w lemma="strong:G2180" morph="robinson:A-APM"> +Eph.1.10.21=<w lemma="strong:G1722" morph="robinson:PREP"> +Eph.1.10.22=<w lemma="strong:G846" morph="robinson:P-DSM"> +Eph.2.14.17=<w lemma="strong:G3588" morph="robinson:T-ASF"> +Eph.2.14.18=<w lemma="strong:G2189" morph="robinson:N-ASF"> +Eph.2.14.19=<w lemma="strong:G1722" morph="robinson:PREP"> +Eph.2.14.20=<w lemma="strong:G3588" morph="robinson:T-DSF"> +Eph.2.14.21=<w lemma="strong:G4561" morph="robinson:N-DSF"> +Eph.2.14.22=<w lemma="strong:G846" morph="robinson:P-GSM"> +Eph.3.17.10=<w lemma="strong:G1722" morph="robinson:PREP"> +Eph.3.17.11=<w lemma="strong:G26" morph="robinson:N-DSF"> +Eph.3.17.12=<w lemma="strong:G4492" morph="robinson:V-RPP-NPM strongsMorph:G5772"> +Eph.3.17.13=<w lemma="strong:G2532" morph="robinson:CONJ"> +Eph.3.17.14=<w lemma="strong:G2311" morph="robinson:V-RPP-NPM strongsMorph:G5772"> +Eph.5.14.0=<w lemma="strong:G3956" morph="robinson:A-NSN"> +Eph.5.14.1=<w lemma="strong:G1063" morph="robinson:CONJ"> +Eph.5.14.2=<w lemma="strong:G3588" morph="robinson:T-ASN"> +Eph.5.14.3=<w lemma="strong:G5319" morph="robinson:V-PPP-NSN strongsMorph:G5746"> +Eph.5.14.4=<w lemma="strong:G5457" morph="robinson:N-NSN"> +Eph.5.14.5=<w lemma="strong:G1510" morph="robinson:V-PAI-3S strongsMorph:G5719"> +Phil.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Phil.1=<w lemma="strong:G5374" morph="robinson:A-APM"> +Phil.3.7.0=<w lemma="strong:G235" morph="robinson:CONJ"> +Col.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Col.1=<w lemma="strong:G2857" morph="robinson:A-APM"> +Col.1.22.0=<w lemma="strong:G3570" morph="robinson:ADV"> +Col.1.22.1=<w lemma="strong:G1161" morph="robinson:CONJ"> +Col.1.22.2=<w lemma="strong:G604" morph="robinson:V-AAI-3S strongsMorph:G5656"> +1Thess.0=<w lemma="strong:G4314" morph="robinson:PREP"> +1Thess.1=<w lemma="strong:G2332" morph="robinson:A-APM"> +1Thess.2= +1Thess.1.2.14=<w lemma="strong:G89" morph="robinson:ADV"> +1Thess.2.7.0=<w lemma="strong:G1410" morph="robinson:V-PNP-NPM strongsMorph:G5740"> +1Thess.2.7.2=<w lemma="strong:G922" morph="robinson:N-DSN"> +1Thess.2.7.3=<w lemma="strong:G1510" morph="robinson:V-PAN strongsMorph:G5721"> +1Thess.2.7.5=<w lemma="strong:G5547" morph="robinson:N-GSM"> +1Thess.2.7.6=<w lemma="strong:G652" morph="robinson:N-NPM"> +1Thess.2.7.11=<w lemma="strong:G1722" morph="robinson:PREP"> +1Thess.2.7.14=<w lemma="strong:G5613" morph="robinson:ADV"> +1Thess.2.12.0=<w lemma="strong:G3870" morph="robinson:V-PAP-NPM strongsMorph:G5723"> +1Thess.2.12.3=<w lemma="strong:G3888" morph="robinson:V-PNP-NPM strongsMorph:G5740"> +1Thess.2.12.15=<w lemma="strong:G4771" morph="robinson:P-2AP"> +1Thess.2.12.20=<w lemma="strong:G2532" morph="robinson:CONJ"> +2Thess.0=<w lemma="strong:G4314" morph="robinson:PREP"> +2Thess.1=<w lemma="strong:G2332" morph="robinson:A-APM"> +2Thess.2= +1Tim.0=<w lemma="strong:G4314" morph="robinson:PREP"> +1Tim.1=<w lemma="strong:G5095" morph="robinson:N-ASM"> +1Tim.2= +2Tim.0=<w lemma="strong:G4314" morph="robinson:PREP"> +2Tim.1=<w lemma="strong:G5095" morph="robinson:N-ASM"> +2Tim.2= +Titus.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Titus.1=<w lemma="strong:G5103" morph="robinson:N-ASM"> +Phlm.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Phlm.1=<w lemma="strong:G5371" morph="robinson:N-ASM"> +Heb.0=<w lemma="strong:G4314" morph="robinson:PREP"> +Heb.1=<w lemma="strong:G1445" morph="robinson:A-APM"> +Heb.1.2.0=<w lemma="strong:G1909" morph="robinson:PREP"> +Heb.1.2.2=<w lemma="strong:G2078" morph="robinson:A-GSM-S"> +Heb.1.2.3=<w lemma="strong:G3588" morph="robinson:T-GPF"> +Heb.1.2.4=<w lemma="strong:G2250" morph="robinson:N-GPF"> +Heb.1.2.5=<w lemma="strong:G3778" morph="robinson:D-GPF"> +Heb.1.2.6=<w lemma="strong:G2980" morph="robinson:V-AAI-3S strongsMorph:G5656"> +Heb.1.2.7=<w lemma="strong:G1473" morph="robinson:P-1DP"> +Heb.1.2.8=<w lemma="strong:G1722" morph="robinson:PREP"> +Heb.1.2.9=<w lemma="strong:G5207" morph="robinson:N-DSM"> +Heb.3.10.0=<w lemma="strong:G5062" morph="robinson:A-NUI"> +Heb.3.10.1=<w lemma="strong:G2094" morph="robinson:N-APN"> +Heb.3.13.7=<w lemma="strong:G891" morph="robinson:ADV"> +Heb.12.4.2=<w lemma="strong:G3360" morph="robinson:ADV"> +Heb.12.22.13=<w lemma="strong:G3831" morph="robinson:N-DSF"> +Jas.0=<w lemma="strong:G2385" morph="robinson:N-GSM"> +Jas.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +Jas.1.20.5=<w lemma="strong:G3756" morph="robinson:PRT-N"> +Jas.1.20.6=<w lemma="strong:G2716" morph="robinson:V-PNI-3S strongsMorph:G5736"> +Jas.2.4.5=<w lemma="strong:G2532" morph="robinson:CONJ"> +Jas.2.15.9=<w lemma="strong:G5600" morph="robinson:V-PXS-3P"> +Jas.4.10.3=<w lemma="strong:G3588" morph="robinson:T-GSM"> +Jas.5.10.4=<w lemma="strong:G2“552 morph="robinson:N-GSF"> +1Pet.0=<w lemma="strong:G4074" morph="robinson:N-GSM"> +1Pet.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +1Pet.2=<w lemma="strong:G4413" morph="robinson:A-NSF-S"> +1Pet.1.6.8=<w lemma="strong:G3076" morph="robinson:V-PAP-APF"> +1Pet.3.16.0=<w lemma="strong:G235" morph="robinson:CONJ"> +1Pet.3.16.1=<w lemma="strong:G3326" morph="robinson:PREP"> +1Pet.3.16.2=<w lemma="strong:G4240" morph="robinson:N-GSF"> +1Pet.3.16.3=<w lemma="strong:G2532" morph="robinson:CONJ"> +1Pet.3.16.4=<w lemma="strong:G5401" morph="robinson:N-GSM"> +1Pet.4.16.12=<w lemma="strong:G3313" morph="robinson:N-DSN"> +1Pet.5.1.1=<w lemma="strong:G3588" morph="robinson:T-APM"> +2Pet.0=<w lemma="strong:G4074" morph="robinson:N-GSM"> +2Pet.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +2Pet.2=<w lemma="strong:G1208" morph="robinson:A-NSF"> +2Pet.2.6.10=<w lemma="strong:G764" morph="robinson:V-PAN"> +2Pet.2.11.13=<w lemma="strong:G2962" morph="robinson:N-DSM"> +2Pet.2.15.0=<w lemma="strong:G2641" morph="robinson:V-2AAP-NPM strongsMorph:G5631"> +2Pet.2.18.10=<w lemma="strong:G3689" morph="robinson:ADV"> +2Pet.3.6.2=<w lemma="strong:G3739" morph="robinson:R-ASM"> +2Pet.3.10.25=<w lemma="strong:G3756" morph="robinson:PRT-N"> +2Pet.3.16.4=<w lemma="strong:G3588" morph="robinson:T-DPF"> +2Pet.3.16.21=<w lemma="strong:G4761" morph="robinson:V-FIA-3P"> +1John.0=<w lemma="strong:G2491" morph="robinson:N-GSM"> +1John.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +1John.2=<w lemma="strong:G4413" morph="robinson:A-NSF-S"> +1John.2.14.2=<w lemma="strong:G3813" morph="robinson:N-NPN"> +1John.2.14.6=<w lemma="strong:G3962" morph="robinson:N-ASM"> +1John.2.14.11=<w lemma="strong:G1097" morph="robinson:V-RAI-2P strongsMorph:G5758"> +1John.2.14.16=<w lemma="strong:G1125" morph="robinson:V-AAI-1S strongsMorph:G5656"> +1John.2.14.19=<w lemma="strong:G3754" morph="robinson:CONJ"> +1John.2.14.28=<w lemma="strong:G4771" morph="robinson:P-2DP"> +1John.2.14.32=<w lemma="strong:G3588" morph="robinson:T-ASM"> +1John.3.7.0=<w lemma="strong:G3813" morph="robinson:N-NPN"> +1John.5.10.12=<w lemma="strong:G846" morph="robinson:P-DSM"> +1John.5.18.18=<w lemma="strong:G1438" morph="robinson:F-3ASM"> +2John.0=<w lemma="strong:G2491" morph="robinson:N-GSM"> +2John.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +2John.2=<w lemma="strong:G1208" morph="robinson:A-NSF"> +3John.0=<w lemma="strong:G2491" morph="robinson:N-GSM"> +3John.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +3John.2=<w lemma="strong:G5154" morph="robinson:A-NSF"> +Jude.0=<w lemma="strong:G2448" morph="robinson:N-GSM"> +Jude.1=<w lemma="strong:G1992" morph="robinson:N-NSF"> +Jude.1.5.10=<w lemma="strong:G2424" morph="robinson:N-NSM"> +Rev.0=<w lemma="strong:G602" morph="robinson:N-NSF"> +Rev.1=<w lemma="strong:G2491" morph="robinson:N-GSM"> +Rev.2.25.4=<w lemma="strong:G891" morph="robinson:ADV"> +Rev.2.28.0=<w lemma="strong:G5613" morph="robinson:ADV"> +Rev.2.28.1=<w lemma="strong:G2504" morph="robinson:P-1NS-K"> +Rev.2.28.2=<w lemma="strong:G2983" morph="robinson:V-2RAI-1S strongsMorph:G5719"> +Rev.2.28.3=<w lemma="strong:G3844" morph="robinson:PREP"> +Rev.2.28.4=<w lemma="strong:G3588" morph="robinson:T-GSN"> +Rev.2.28.5=<w lemma="strong:G3962" morph="robinson:N-GSM"> +Rev.2.28.6=<w lemma="strong:G1473" morph="robinson:P-1GS"> +Rev.12.17.28=<w lemma="strong:G2532" morph="robinson:CONJ"> +Rev.12.17.29=<w lemma="strong:G2476" morph="robinson:V-API-3S strongsMorph:G5681"> +Rev.12.17.30=<w lemma="strong:G1909" morph="robinson:PREP"> +Rev.12.17.31=<w lemma="strong:G3588" morph="robinson:T-ASF"> +Rev.12.17.32=<w lemma="strong:G285" morph="robinson:N-ASF"> +Rev.12.17.33=<w lemma="strong:G3588" morph="robinson:T-GSF"> +Rev.12.17.34=<w lemma="strong:G2281" morph="robinson:N-GSF"> +Rev.17.9.19=<w lemma="strong:G2532" morph="robinson:CONJ"> +Rev.17.9.20=<w lemma="strong:G935" morph="robinson:N-APM"> +Rev.17.9.21=<w lemma="strong:G2033" morph="robinson:A-NUI"> +Rev.17.9.22=<w lemma="strong:G1510" morph="robinson:V-PAI-3P strongsMorph:G5719"> |