gedcom-ts
Version:
TypeScript GEDCOM toolkit for browser apps: import .ged/.zip, edit typed genealogy data, and export GEDCOM or GEDZIP.
2 lines (1 loc) • 17.7 kB
JavaScript
var w=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var he=Object.getOwnPropertyNames;var fe=Object.prototype.hasOwnProperty;var D=(e,n)=>()=>(e&&(n=e(e=0)),n);var ke=(e,n)=>{for(var a in n)w(e,a,{get:n[a],enumerable:!0})},Be=(e,n,a,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let u of he(n))!fe.call(e,u)&&u!==a&&w(e,u,{get:()=>n[u],enumerable:!(o=pe(n,u))||o.enumerable});return e};var Le=e=>Be(w({},"__esModule",{value:!0}),e);var z=D(()=>{});function V(e){function n(L){let m=L.trim();return!m||m===e.unknownDate?!1:W.test(m)||Y.test(m)}function a(L){let m=L.trim();if(!m||m===e.unknownDate)return e.onUnknown;if(W.test(m))return e.inYear(m);let y=Y.exec(m);if(y){let C=y[1].toLowerCase(),$=y[2];switch(C){case"bef":return e.beforeYear($);case"aft":return e.afterYear($);case"vers":case"circa":case"environ":case"about":case"abt":case"est":case"cal":return e.aboutYear($);default:return e.inYear($)}}return e.onFullDate(m)}function o(L,m){let y=L.trim(),C=m.trim();return e.lifeRange(y,C,n(y))}function u(L){let m=L.trim();return W.test(m)?e.seesDayInYear(m):n(m)?e.seesDayOnPhrase(a(m)):e.seesDayOnFullDate(m)}return{BOOKLET_UNKNOWN_DATE:e.unknownDate,isYearOnlyDate:n,onDate:a,lifeDateRange:o,seesDayOn:u}}var W,Y,j=D(()=>{W=/^\d{3,4}$/,Y=/^(vers|circa|environ|about|ABT|BEF|AFT|EST|CAL|INT|FROM|TO)\s+(\d{3,4})$/i});function ye(e){return e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()}function $e(e){return be.has(ye(e))}function X(e,n){function a(k){let i=k.trim();if(!i)return null;let h=i.indexOf(", ");return h>=0?{city:i.slice(0,h).trim(),country:i.slice(h+2).trim(),raw:i}:$e(i)?{city:null,country:i,raw:i}:{city:i,country:null,raw:i}}function o(k){let i=a(k);return i?i.city&&i.country?`${i.city}, ${n.countryPhrase(i.country)}`:i.city?i.city:i.country?n.countryPhrase(i.country):i.raw:""}function u(k,i){let h=o(i);if(!h)return"";let B=n.locationPhrase(h);return e.isYearOnlyDate(k)?`,${B}`:B}function L(k){let i=o(k);return i?n.locationPhrase(i):""}function m(k,i,h,B){let P=i.trim(),N=B.trim();return P&&P===N?{birth:"",death:u(h,N)}:{birth:u(k,P),death:u(h,N)}}function y(k,i){let h=o(k),B=o(i);if(!h&&!B)return"";if(h&&B&&h===B)return n.lifeRangeSame(h);if(h&&B)return n.lifeRangeFromTo(h,B);let P=h||B;return n.lifeRangeSingle(P)}function C(k,i){let h=e.onDate(k),B=i.trim();return h===e.onDate("")&&!B?null:B?h===e.onDate("")?L(B).trim()||null:`${h}${u(k,B)}`:h}function $(k){let i=k?.trim();return!i||i===e.onDate("")?"":` ${i}`}return{parsePlaceLabel:a,placeCore:o,afterDateLocation:u,atLocation:L,birthDeathLocationPhrases:m,lifeRangeLocation:y,marriageWhenWhere:C,embedMarriageWhenWhere:$}}var be,J=D(()=>{be=new Set(["france","germany","deutschland","spain","espana","italy","italia","belgium","switzerland","united kingdom","uk","england","scotland","ireland","portugal","netherlands","holland","luxembourg","austria","poland","russia","canada","united states","usa","morocco","algeria","tunisia","allemagne","espagne","italie","belgique","suisse","royaume-uni","angleterre","\xE9cosse","irlande","pays-bas","pologne","russie","\xE9tats-unis","maroc","alg\xE9rie","tunisie","nederland","polska","\xF6sterreich","schweiz","\u0645\u0635\u0631","\u05D9\u05E9\u05E8\u05D0\u05DC"].map(e=>e.normalize("NFD").replace(/\p{M}/gu,"").toLowerCase()))});function De(e,n){let a=e.toLowerCase();return n.some(o=>a.startsWith(o.toLowerCase()))}function Z(e,n,a){return De(e,n)?` ${e}`:`${a}${e}`}var Q=D(()=>{});function Re(e){return e!=null&&Ee.includes(e)}function A(e){return Re(e)?e:"en"}var Ee,T=D(()=>{Ee=["en","fr","de","nl","es","zh","it","pt","pl","ar","he"]});function Ce(){let e=globalThis;return e[v]??(e[v]=new Map),e[v]}function S(e){let n=Ce().get(e);if(!n)throw new K(e);return n}var v,K,x=D(()=>{T();v="__GEDCOM_TS_BOOKLET_LOCALE_CACHE__";K=class extends Error{constructor(n){super(`Booklet locale "${n}" is not loaded. Call await ensureBookletLocale("${n}") before using sync booklet APIs.`),this.name="BookletLocaleNotLoadedError"}}});function Pe(e){return S(e).genderWords}function M(e,n){return Pe(A(n))[e]}function q(e,n){let a=A(n);if(a==="en")return"";if(a==="fr")return e>1?"s":"";let o=S(a).genderPhrases;return o&&!o.usesPluralS?"":e>1?"s":""}function I(e,n){if(e<=0)return"";let a=A(n),o=S(a).genderPhrases?.recensedChildren(e);return o||(a==="en"?e===1?"1 child listed":`${e} children listed`:e===1?"1 enfant recens\xE9":`${e} enfants recens\xE9s`)}function ee(e,n){if(e<=0)return"";let a=A(n),o=S(a).genderPhrases?.otherUnions(e);return o||(a==="en"?e===1?"1 other union cited in the tree":`${e} other unions cited in the tree`:e===1?"1 autre union cit\xE9e dans l'arbre":`${e} autres unions cit\xE9es dans l'arbre`)}var ne=D(()=>{T();x()});function te(e){let n=A(e);return S(n).messages}var re=D(()=>{T();x();x()});function F(e,n=6,a){let o=te(a);if(e.length===0)return o.childrenNone;let u=e.map(L=>L.name);return u.length<=n?u.join(", "):`${u.slice(0,n).join(", ")} ${o.childrenMore(u.length-n)}`}var oe=D(()=>{T();re()});function ae(e){return e.map(n=>n.trim()).filter(Boolean).map(n=>n.endsWith(".")?n:`${n}.`).join(" ")}function E(e){let n=e.map(o=>o.trim()).filter(Boolean);return n.length===0?"":`${n.map(o=>o.endsWith(".")?o.slice(0,-1):o).join(" ; ")}.`}function U(e){return e.trim().split(/\s+/)[0]??e}function p(e,n){return e[Math.abs(n)%e.length]}function H(e,n){switch(e.length){case 0:return"";case 1:return e[0];case 2:return`${e[0]} ${n} ${e[1]}`;default:return`${e.slice(0,-1).join(", ")} ${n} ${e.at(-1)}`}}function Me(e){let n=e.key.match(/^gen-(\d+)$/);return n?{genNum:Number(n[1]),letter:null}:{genNum:0,letter:e.key.match(/^letter-(.+)$/)?.[1]??null}}function Ne(e){return e.includes("\u2014")?e.split("\u2014").pop()?.trim()??"":""}function le(e,n,a){let o=a.dateModule,u=a.placeModule,L=a.unknownDates;function m(t){return t!==L&&t!=="Dates inconnues"}function y(t,s){if(t.parents.length===0)return null;let r=M(t.sex,e),l=t.parents.map(d=>d.name);return l.length===1?p(n.parentsSingle(l[0],r),s+3):p(n.parentsMultiple(H(l,n.listConjunction),r),s+3)}function C(t,s){if(s.marriageLabel)return s.marriageLabel;let r=t.events.find(l=>l.kind===String("MARR"));return r?u.marriageWhenWhere(r.date,r.place):null}function $(t,s,r){let l=M(t.sex,e),d=s.coParent.name,c=[],g=u.embedMarriageWhenWhere(C(t,s));if(g?c.push(p(n.unionWithMarriage(d,g),r+7)):c.push(p(n.unionWithoutMarriage(d,l),r+7)),s.children.length>0){let f=s.children.map(b=>U(b.name));f.length===1?c.push(p(n.unionOneChild(f[0],l),r+11)):c.push(p(n.unionManyChildren(H(f,n.listConjunction),l),r+11))}return E(c)}function k(t,s){let r=t.events.find(g=>g.kind===String("BIRT")),l=t.events.find(g=>g.kind===String("DEAT")),d=t.name,c=M(t.sex,e);if(r&&l){let g=o.onDate(r.date),f=o.onDate(l.date),b=u.birthDeathLocationPhrases(r.date,r.place,l.date,l.place),R=u.lifeRangeLocation(r.place,l.place),O=b.birth||u.afterDateLocation(r.date,r.place);return p(n.lifeBornAndDied(d,c,g,b.birth,f,b.death,o.lifeDateRange(r.date,l.date),R,o.seesDayOn(r.date),O),s)}if(r){let g=o.onDate(r.date),f=u.afterDateLocation(r.date,r.place);return p(n.lifeBirthOnly(d,c,g,f,o.seesDayOn(r.date)),s)}if(l){let g=o.onDate(l.date),f=u.afterDateLocation(l.date,l.place);return p(n.lifeDeathOnly(d,c,g,f),s+1)}return m(t.datesLabel)?p(n.lifeApproxDates(d,c,t.datesLabel),s+2):null}function i(t,s,r){let l=o.onDate(t.date),d=u.afterDateLocation(t.date,t.place),c=M(r,e);switch(t.kind){case"MARR":return p(n.eventMarriage(l,d),s);case"DIV":return n.eventDivorce(l,d);case"BAPM":case"CHR":return p(n.eventBaptism(l,d,c),s);case"BURI":return p(n.eventBurial(l,d),s);case"CREM":return n.eventCremation(l,d);case"OCCU":return n.eventOccupation(t.date,u.atLocation(t.place));default:return`${t.label.toLowerCase()} ${l}${d}`}}let h=new Set([String("BIRT"),String("DEAT"),String("MARR")]);function B(t,s){let r=[],l=0;for(let d of t.events){if(h.has(d.kind))continue;let c=i(d,s+l,t.sex);c&&r.push(c),l+=1}return r}function P(t){let s=t.entries.length,r=Ne(t.subtitle),{genNum:l,letter:d}=Me(t),c=q(s,e);if(l>0){let f=l===1?n.chapterGen1(s,c):n.chapterGenN(l,s,c,r);return p(f,l)}let g=d??t.title;return p(n.chapterLetter(t.title,s,c,g,r),s)}function N(t,s){let r=t.familyId,l=t.partners[0]?.name??n.defaultAncestor,d=t.partners[1]?.name,c=t.children,g;if(d){let f=p(n.familyCouple(U(l),U(d),l,d),r),b=u.embedMarriageWhenWhere(t.marriageLabel),R=p(b?n.familyUnionWithMarriage(b):n.familyUnionWithoutMarriage,r+1);if(c.length===0)g=E([`${f} ${R}`,n.familyNoDescendants]);else if(c.length===1)g=E([`${f} ${R}`,p(n.familyOneChild(c[0].name),r+2)]);else if(s==="summary")g=E([`${f} ${R}`,n.familyNChildren(c.length,F(c,5,e))]);else{let O=c.map(G=>{let ge=m(G.datesLabel)?` (${G.datesLabel})`:"";return`${G.name}${ge}`});g=E([`${f} ${R}`,n.familyDescendantsList(H(O,n.listConjunction))])}}else g=ae([p(n.familyLoneFigure(U(l),l),r),t.marriageLabel?p(n.familyMarriageNoted(u.embedMarriageWhenWhere(t.marriageLabel)),r+1):"",c.length>0?p([...n.familyDescendantsNoted(F(c,5,e)),n.familyDescendantsRecensed(I(c.length,e),F(c,5,e))],r+2):""]);return[g]}function de(t){let s=t.indi,r=[],l=k(t,s);if(l)r.push(l);else{let g=M(t.sex,e);r.push(p(n.personBranchPresent(t.name,g),s))}let d=y(t,s);d&&r.push(d),t.unions[0]&&(r.push($(t,t.unions[0],s)),t.unions.length>1&&r.push(ee(t.unions.length-1,e)));let c=B(t,s);return c.length>0&&r.push(E(c.slice(0,2))),t.sosa!=null&&r.length>0&&r.push(`SOSA ${t.sosa}`),r.length<=1&&t.events.length===0&&t.unions.length===0?ae([n.personFewRecords(t.name),n.personResearchHint]):E(r)}function me(t){let s=t.indi,r=[],l=[],d=k(t,s);d&&l.push(d);let c=y(t,s);c&&l.push(c);let g=B(t,s);if(g.length>0&&l.push(E(g)),l.length>0?r.push(E(l)):r.push(n.personPortraitIncomplete(t.name)),t.unions.length>0){let f=t.unions.map((b,R)=>$(t,b,s+20+R));r.push(p(n.personUnionSection(E(f)),s+5))}else{let f=t.events.filter(b=>b.kind===String("MARR"));if(f.length>0){let b=f.map((R,O)=>i(R,s+30+O,t.sex));r.push(E(b))}}return t.notesPreview&&r.push(p(n.personResearchNote(t.notesPreview),s+9)),r}return{buildChapterIntroNarrative:P,buildFamilyNarrative:N,buildPersonSummaryNarrative:de,buildPersonDetailedNarratives:me}}var se=D(()=>{z();ne();oe()});var we={};ke(we,{default:()=>Ge});module.exports=Le(we);var Oe,ue,Te,ve,ie,_,ce,xe,Fe,Ue,Ge,ze=D(()=>{z();j();J();Q();se();Oe={BIRT:"Geburt",DEAT:"Tod",MARR:"Heirat",DIV:"Scheidung",BAPM:"Taufe (BAPM)",CHR:"Taufe",BURI:"Beerdigung",CREM:"Ein\xE4scherung",EVEN:"Ereignis",OCCU:"Beruf"},ue={unknownDates:"Unbekannte Daten",unknownDate:"Unbekanntes Datum",chapterUnknownDates:"Unbekannte Daten",generation1Title:"Generation 1 \u2014 Referenzperson",generationTitle:e=>`Generation ${e}`,letterTitle:e=>`Buchstabe ${e}`,chapterSubtitle:(e,n)=>`${e} Person(en) \u2014 ${n}`,chapterDateAbout:"circa",childrenNone:"keine Kinder verzeichnet",childrenMore:e=>`(+ ${e} weitere)`,pagesEstimate:e=>`~${e} Seiten`,pagesEmpty:"\u2014",adviceDetailed120:"Bei mehr als 120 Personen erzeugt der Kurzmodus ein deutlich besser lesbares Dokument und wird schneller generiert.",adviceDetailed50:"Ab 50 Personen wird der Kurzmodus f\xFCr eine erste Lekt\xFCre weiterhin empfohlen.",adviceSummary25:"Wenige Personen: Der Detailmodus bietet eine sch\xF6ne Seite pro Person, ideal zum Ausdrucken.",actTypeLabels:Oe,spouseUnknown:"Ehepartner nicht erfasst",timelineTitle:e=>`Chronologische Zeitleiste \u2014 ${e}`,timelineUnknownDates:"unbekannte Daten",pdf:{coverSubtitle:"Familiengeschichte aus Ihrer GEDCOM-Datei",referencePerson:e=>`Referenzperson (SOSA 1): ${e}`,personCount:e=>`${e} Person(en) in diesem Heft`,localNote:"Dokument lokal in Ihrem Browser erstellt.",tocTitle:"Inhaltsverzeichnis",modeSummary:"Kurzmodus \u2013 kurze Erz\xE4hlungen",modeDetailed:"Detailmodus \u2013 ausf\xFChrliche Biografien",contentHeading:"Inhalt des Hefts",introSummary:"Dieses Heft erz\xE4hlt Ihren Stammbaum in Prosa: Geburten, Ehen, Nachkommenschaft und Todesf\xE4lle, rekonstruiert aus der GEDCOM-Datei. Jedes Kapitel beginnt mit einer Generation oder einem Buchstaben und entfaltet Lebensl\xE4ufe in kurzen Erz\xE4hlungen.",introDetailed:"Dieses Heft entwickelt jede Person als narrative Biografie, fortlaufend innerhalb jedes Kapitels. Jede neue Generation beginnt auf einer eigenen Seite.",introSosa:"SOSA-Nummern werden erw\xE4hnt, wenn die Nummerierung aktiv ist. Inhaltsverzeichnis am Ende des Dokuments.",familyHeading:e=>`Die Familie ${e}`,generationLabel:e=>`Generation ${e}`,pageFooter:e=>`Seite ${e}`},timeline:{legendBirth:"Geburt",legendDeath:"Tod",legendMarriage:"Heirat",overflow:e=>`+ ${e} weitere auf den folgenden Seiten`,continuation:"(Zeitleiste fortgesetzt)"}},Te={F:{born:"geboren",died:"verstorben",baptized:"getauft",present:"vertreten",linked:"verbunden",offspring:"Kind",descendant:"Nachfahrin",childOf:"Tochter",parentOf:"Mutter"},M:{born:"geboren",died:"verstorben",baptized:"getauft",present:"vertreten",linked:"verbunden",offspring:"Kind",descendant:"Nachkomme",childOf:"Sohn",parentOf:"Vater"},U:{born:"geboren",died:"verstorben",baptized:"getauft",present:"vertreten",linked:"verbunden",offspring:"Kind",descendant:"Nachkomme",childOf:"Kind",parentOf:"Elternteil"},X:{born:"geboren",died:"verstorben",baptized:"getauft",present:"vertreten",linked:"verbunden",offspring:"Kind",descendant:"Nachkomme",childOf:"Kind",parentOf:"Elternteil"}},ve={usesPluralS:!1,recensedChildren:e=>e===1?"1 Kind verzeichnet":`${e} Kinder verzeichnet`,otherUnions:e=>e===1?"1 weitere Verbindung im Stammbaum":`${e} weitere Verbindungen im Stammbaum`},ie=["in "],_=V({unknownDate:"Unbekanntes Datum",onUnknown:"an einem unbekannten Datum",inYear:e=>`im Jahr ${e}`,beforeYear:e=>`vor ${e}`,afterYear:e=>`nach ${e}`,aboutYear:e=>`um ${e}`,onFullDate:e=>`am ${e}`,lifeRange:(e,n)=>`Von ${e} bis ${n}`,seesDayInYear:e=>`wurde im Jahr ${e} geboren`,seesDayOnPhrase:e=>`wurde ${e} geboren`,seesDayOnFullDate:e=>`wurde am ${e} geboren`}),ce=X(_,{countryPrefixes:ie,countryPhrase:e=>`in ${e}`,locationPhrase:e=>Z(e,ie," in "),lifeRangeSame:e=>`, ${e}`,lifeRangeFromTo:(e,n)=>`, von ${e} bis ${n}`,lifeRangeSingle:e=>`, ${e}`}),xe={listConjunction:"und",defaultAncestor:"Ein Vorfahre",parentsSingle:(e,n)=>[`Kind von ${e}`,`${n.childOf} von ${e}`,`${n.descendant} von ${e}`],parentsMultiple:(e,n)=>[`${n.offspring} von ${e}`,`${n.descendant} von ${e}`,`Kind von ${e}`],unionWithMarriage:(e,n)=>[`heiratet ${e}${n}`,`vereint sich mit ${e}${n}`,`Ehe mit ${e}${n}`],unionWithoutMarriage:(e,n)=>[`${n.linked} mit ${e}`,`teilt das Leben mit ${e}`,`Union verzeichnet mit ${e}`],unionOneChild:(e,n)=>[`darunter ${e}`,`mit Kind ${e}`,`${n.parentOf} von ${e}`],unionManyChildren:(e,n)=>[`darunter die Kinder ${e}`,`mit Nachkommen ${e}`,`${n.parentOf} von ${e}`],lifeBornAndDied:(e,n,a,o,u,L,m,y,C,$)=>[`${e}, ${n.born} ${a}${o}, verstarb ${u}${L}`,`${m}${y}, ${e} pr\xE4gt diese Linie`,`${e} ${C}${$} und verstarb ${u}${L}`],lifeBirthOnly:(e,n,a,o,u)=>[`${e}, ${n.born} ${a}${o}`,`Geburt von ${e} ${a}${o}`,`${e} ${u}${o}`],lifeDeathOnly:(e,n,a,o)=>[`${e}, ${n.died} ${a}${o}`,`Tod von ${e} ${a}${o}`,`${e} verstarb ${a}${o}`],lifeApproxDates:(e,n,a)=>[`${e}, ${n.present} in den Registern um ${a}`,`${e} wird um ${a} eingeordnet`,`${e} (${a})`],eventMarriage:(e,n)=>[`Eheschlie\xDFung ${e}${n}`,`Union verzeichnet ${e}${n}`,`Hochzeit ${e}${n}`,`vereinigt${e}${n}`],eventDivorce:(e,n)=>`Scheidung verzeichnet ${e}${n}`,eventBaptism:(e,n,a)=>[`Taufe ${e}${n}`,`${a.baptized} ${e}${n}`,`Taufritus ${e}${n}`],eventBurial:(e,n)=>[`Beerdigung ${e}${n}`,`Bestattung ${e}${n}`,`Beisetzung ${e}${n}`],eventCremation:(e,n)=>`Ein\xE4scherung verzeichnet ${e}${n}`,eventOccupation:(e,n)=>`Beruf vermerkt (${e})${n}`,chapterGen1:(e,n)=>[`Ausgangspunkt der Erz\xE4hlung: ${e} Figur${n} an der Wurzel des Stammbaums.`,`Hier beginnt die Linie, mit ${e} Referenzperson${n}.`],chapterGenN:(e,n,a,o)=>[`In Generation ${e} treten ${n} Vorfahr${a} auf die B\xFChne.`,`Diese Generation umfasst ${n} Person${a}${o?` (${o})`:""}.`,`${n} Leben${a} kreuzen sich in dieser Generation${o?`, zwischen ${o}`:""}.`],chapterLetter:(e,n,a,o,u)=>[`${e}: ${n} Portr\xE4t${a} zu entdecken.`,`${n} Person${a} f\xFCr den Buchstaben ${o}${u?` (${u})`:""}.`],familyCouple:(e,n,a,o)=>[`${e} und ${n}`,`Das Paar ${e} \u2013 ${n}`,`${a} und ${o}`],familyUnionWithMarriage:e=>[`vereinigen sich${e}`,`heiraten${e}`,`feiern ihre Union${e}`],familyUnionWithoutMarriage:["bilden eine Union","sind in den Registern vereint","erscheinen als Ehepartner"],familyNoDescendants:"ohne Nachkommen in der Datei verzeichnet",familyOneChild:e=>[`mit Kind ${e}`,`geb\xE4ren ${e}`,`haben ein Kind, ${e}`],familyNChildren:(e,n)=>`${e} Kinder: ${n}`,familyDescendantsList:e=>`Nachkommen: ${e}`,familyLoneFigure:(e,n)=>[`${e} nimmt einen zentralen Platz in dieser Linie ein`,`${n}, eine Leitfigur in diesem Kapitel`],familyMarriageNoted:e=>[`Ehe verzeichnet${e}`,`Union vermerkt${e}`],familyDescendantsNoted:e=>[`Nachkommen: ${e}`],familyDescendantsRecensed:(e,n)=>`${e}: ${n}`,personBranchPresent:(e,n)=>[`${e}, ${n.present} in diesem Zweig`,`${e} erscheint in diesem Kapitel`],personFewRecords:e=>`${e}: bisher wenige Eintr\xE4ge`,personResearchHint:"weitere Recherchen k\xF6nnen dieses Portr\xE4t vervollst\xE4ndigen",personPortraitIncomplete:e=>`${e} \u2014 Portr\xE4t noch aus den Archiven zu vervollst\xE4ndigen.`,personUnionSection:e=>[e,`Familienseite: ${e}`,`Auf der ehelichen Seite: ${e}`],personResearchNote:e=>[`Recherchenotiz: ${e}`,`Die Archive vermerken: ${e}`,`Bemerkenswert: ${e}`]},Fe=le("de",xe,{dateModule:_,placeModule:ce,unknownDates:ue.unknownDates}),Ue={messages:ue,genderWords:Te,genderPhrases:ve,dateModule:_,placeModule:ce,narrativeModule:Fe},Ge=Ue});ze();