initial commit

This commit is contained in:
2025-03-11 21:59:07 +01:00
commit aa02abf3d4
56 changed files with 387359 additions and 0 deletions

38
.gitignore vendored Normal file
View File

@@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

3
.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

7
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

14
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="21 (WSL)" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

23
.idea/remote-targets.xml generated Normal file
View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteTargetsManager">
<targets>
<target name="WSL" type="wsl" uuid="130456d2-e9b0-4207-bc51-630574dddffc">
<config>
<option name="distributionMsId" value="Ubuntu" />
</config>
<ContributedStateBase type="JavaLanguageRuntime">
<config>
<option name="homePath" value="/home/ivo/.jdks/openjdk-23.0.2" />
</config>
</ContributedStateBase>
<ContributedStateBase type="MavenRuntime">
<config>
<option name="homePath" value="/usr/share/maven" />
<option name="versionString" value="3.8.7" />
</config>
</ContributedStateBase>
</target>
</targets>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

19
.mvn/wrapper/maven-wrapper.properties vendored Normal file
View File

@@ -0,0 +1,19 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
wrapperVersion=3.3.2
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip

44572
dictionary/10.txt Normal file

File diff suppressed because it is too large Load Diff

42969
dictionary/11.txt Normal file

File diff suppressed because it is too large Load Diff

38210
dictionary/12.txt Normal file

File diff suppressed because it is too large Load Diff

31998
dictionary/13.txt Normal file

File diff suppressed because it is too large Load Diff

26253
dictionary/14.txt Normal file

File diff suppressed because it is too large Load Diff

21385
dictionary/15.txt Normal file

File diff suppressed because it is too large Load Diff

13049
dictionary/16.txt Normal file

File diff suppressed because it is too large Load Diff

9882
dictionary/17.txt Normal file

File diff suppressed because it is too large Load Diff

7340
dictionary/18.txt Normal file

File diff suppressed because it is too large Load Diff

5448
dictionary/19.txt Normal file

File diff suppressed because it is too large Load Diff

257
dictionary/2.txt Normal file
View File

@@ -0,0 +1,257 @@
aa
ab
ad
af
ah
ai
ak
al
am
an
ap
ar
as
at
au
ax
az
ba
be
bg
bh
bi
by
bo
bq
br
bs
bv
bw
cc
cd
cg
ci
cl
cm
co
cv
cx
db
dc
de
di
dy
dj
dl
dm
do
ds
dv
dx
eb
ed
ee
eg
eh
ei
ek
el
en
eo
eq
er
es
et
eu
ex
ez
fa
fe
fy
fm
fu
ga
gb
ge
gy
go
ha
hd
he
hg
hy
hl
hm
ho
hp
hu
hz
ia
ic
id
ie
ii
yk
yl
ys
ik
in
io
ip
iq
is
it
iv
ix
iz
ja
je
ji
jy
jo
ju
ka
kb
kg
ki
kj
kl
km
ko
ks
ku
kw
kz
la
le
lg
li
ly
lo
lp
lu
lv
lx
ly
ma
mb
mc
md
me
mg
mi
my
ml
mm
mo
mp
mr
ms
mu
mv
mw
mx
na
nb
ne
ng
nk
nm
no
nr
ns
nt
nu
nv
of
oh
oi
ok
om
on
op
or
os
ot
ov
pa
pc
pf
pg
ph
pi
py
pk
pm
po
pr
ps
pu
ra
re
ri
ry
sa
se
sf
si
sm
so
sp
ss
st
su
ta
tb
te
ti
ty
tl
to
ts
tu
tv
ty
ub
ud
uh
ui
uk
up
ut
uv
uw
va
vi
vj
vn
vo
vp
vr
vs
vu
vw
wa
wc
we
wi
wy
wk
wo
wu
ww
xc
xi
xl
xp
xu
xv
xx
ye
yi
yo
yu
ze
zi
zy
zo

3939
dictionary/20.txt Normal file

File diff suppressed because it is too large Load Diff

2627
dictionary/21.txt Normal file

File diff suppressed because it is too large Load Diff

1802
dictionary/22.txt Normal file

File diff suppressed because it is too large Load Diff

1226
dictionary/23.txt Normal file

File diff suppressed because it is too large Load Diff

775
dictionary/24.txt Normal file
View File

@@ -0,0 +1,775 @@
aanbestedingsvoorwaarden
aandeelhouderscommissies
aandeelhoudersvereniging
aanmerkelykbelanghouders
aanpassingswerkzaamheden
aansprakelykheidsschaden
aansprakelykheidsschades
aansprakelykheidstelling
abstinentieverschynselen
accountantsmaatschappyen
accountantswerkzaamheden
achtergrondconcentraties
achtervolgingswedstryden
activiteitenbegeleidster
administratiefrechtelyke
aflossingsverplichtingen
afvalverwerkingsbedryven
alfabetiseringscursussen
alfabetiseringsprojecten
allroundkampioenschappen
alvleesklierontstekingen
ambulanceverpleegkundige
annuleringsverzekeringen
antiapartheidsbewegingen
antidiscriminatiebureaus
antiregeringsdemonstrant
antistollingsbehandeling
arbeidsgezondheidskundig
arbeidsmarktcommunicatie
arbeidsmarkthervormingen
arbeidsmarktparticipatie
arbeidsmarktproblematiek
arbeidsomstandighedenwet
arbeidsparticipatiegraad
arbeidsplaatsvoorziening
arbeidsvoorwaardenbeleid
arbeidsvoorwaardenpakket
architectuurgeschiedenis
architectuurtydschriften
arrondissementsparketten
arrondissementsrechtbank
artilleriebombardementen
asielzoekersproblematiek
assertiviteitstrainingen
associatieovereenkomsten
assurantietussenpersonen
atletiekkampioenschappen
auteursrechtaanduidingen
automatiseringscursussen
automatiseringsoplossing
automatiseringspersoneel
automatiseringsproblemen
automatiseringsprocessen
automatiseringsprojecten
automobilistenvereniging
autoverhuurmaatschappyen
autoverzekeringstarieven
baarmoedertransplantatie
balansventilatiesystemen
beachvolleybaltoernooien
bedryfsgezondheidsdienst
bedryfsinformatiesysteem
bedryfsschadeverzekering
bedryfstelefooncentrales
bedryfsvoeringsbudgetten
bedryfsvoeringsonderzoek
bedryfsvoeringsparagraaf
bedryfsvoeringsproblemen
bedryfsvoeringsprocessen
bedryfsvoeringsvraagstuk
beeldbewerkingsprogramma
beeldententoonstellingen
begeleidingsactiviteiten
begeleidingsinstrumenten
begrypelykheidsonderzoek
begrotingsdoelstellingen
begrotingsonderhandeling
behandelingsmogelykheden
behandelingsovereenkomst
belangenverstrengelingen
belastingaangelegenheden
belastingfunctionarissen
belastingvereenvoudiging
beleidsverantwoordelyken
beleidsvormingsprocessen
bemiddelingsactiviteiten
bemiddelingsorganisaties
benoembaarheidsvereisten
beoordelingsmethodologie
bereikbaarheidsoffensief
bereikbaarheidsproblemen
bereikbaarheidsprofielen
beroepskeuzevoorlichting
beschermingsconstructies
beschermingsinrichtingen
beschikbaarheidsbeginsel
beslissingsondersteunend
besluitvormingsprocedure
besluitvormingsprocessen
besluitvormingsstructuur
besluitvormingstrajecten
bestemmingsplanprocedure
bestratingswerkzaamheden
besturingssysteemversies
bestuurswetenschappelyke
betalingsbalansproblemen
betrouwbaarheidsinterval
beveiligingsbevorderende
beveiligingsinstallaties
beveiligingsonderzoekers
beveiligingsorganisaties
beveiligingsspecialisten
bevoegdheidsbetwistingen
bevoegdheidsoverdrachten
bevolkingsadministraties
bevolkingsontwikkelingen
bevriezingsverschynselen
bewaarschoolonderwyzeres
bewilligingsverklaringen
bezuinigingsmogelykheden
bezuinigingsoverwegingen
bezuinigingsproblematiek
bezuinigingstaakstelling
bezwaarschriftprocedures
bibliotheekvoorzieningen
bibliotheekwetenschappen
binnentredingsbepalingen
boekhandelaarsvereniging
bombardementsvliegtuigen
bouwsteencorrespondentie
brandbeveiligingsconcept
brandstofinjectiesysteem
brandwaarborgmaatschappy
buitendienstfunctionaris
buitenvervolgingstelling
burgemeestersbenoemingen
burgerrechtenorganisatie
buurtinformatienetwerken
capaciteitsuitbreidingen
certificatenverplichting
certificeringsinstanties
chemischewapensprogramma
chloorfluorkoolwaterstof
christenfundamentalisten
coalitieonderhandelingen
communicatieadviesbureau
communicatieboodschappen
communicatiemogelykheden
communicatieprofessional
communicatiespecialisten
communicatieverbindingen
compatibiliteitsprobleem
componentensamenstelling
concentratiekampsyndroom
conceptbeginselprogramma
concurrentieautoriteiten
concurrentiebevorderende
concurrentiemogelykheden
concurrentieoverwegingen
concurrentieverhoudingen
concurrentieverstoringen
concurrentievervalsingen
conformiteitsbeoordeling
conjunctuurschommelingen
conjunctuurverschynselen
constructiewerkzaamheden
contentmanagementsysteem
contractonderhandelingen
corruptiebeschuldigingen
creativiteitsbevorderend
criminaliteitsbeheersing
criminaliteitsbestryding
criminaliteitsstatistiek
crisisinterventiefunctie
curiositeitenverzameling
democratiseringsbeweging
departementsoverstygende
depersonalisatiesyndroom
depositogarantieregeling
depositogarantiestelsels
derdegeneratieallochtoon
derdegraadsverbrandingen
derdelynsgezondheidszorg
derdemachtsvergelykingen
desintegratieverschynsel
desinvesteringsprogramma
detacheringsovereenkomst
detailhandelsonderneming
diabetesverpleegkundigen
dienstverleningsbedryven
dienstverleningscontract
dienstverleningsdocument
dierenrechtenorganisatie
differentiaalbeveiliging
differentiaalvergelyking
differentievergelykingen
digitaliseringsprojecten
doctoraatsverhandelingen
doorbloedingsstoornissen
doorstralingsinstallatie
draagkrachtverminderende
dubbelbelastingverdragen
echtscheidingsprocedures
eenmanstentoonstellingen
eenrichtingscommunicatie
eindverantwoordelykheden
elektriciteitsleveringen
elektriciteitsrekeningen
emissiebeperkingssysteem
energiebesparingsplannen
energiedistributiebedryf
evenredigheidsconstanten
exclusiviteitscontracten
exploitatiemaatschappyen
exportkredietverzekering
faillissementsprocedures
filosofiegeschiedenissen
financieringsarrangement
financieringsconstructie
financieringsmaatschappy
financieringsmechanismen
financieringsmogelykheid
financieringssystematiek
financieringsvoorwaarden
flexibiliteitsinstrument
fotoverkenningsvliegtuig
fourierreeksontwikkeling
fractievertegenwoordiger
frequentiekarakteristiek
functioneringsgesprekken
gebruikersgemeenschappen
gebruikersvriendelykheid
gehandicaptenhuisvesting
gehandicaptenorganisatie
gehandicaptenverzorgster
geheimhoudingsverklaring
gehoorzaamheidscursussen
gelegenheidsaanbiedingen
gemakkelykheidsoplossing
gemeenteraadsvergadering
gemeentereinigingsdienst
geneesmiddelenautoriteit
gewestvertegenwoordigers
gezondheidsdeterminanten
gezondheidsvoorzieningen
gezondheidswetenschappen
groenestroomcertificaten
grondstoffenleveranciers
grondverzetwerkzaamheden
grootboekrekeningnummers
groothandelsactiviteiten
haalbaarheidsonderzoeken
handelsvertegenwoordiger
handhavingswerkzaamheden
handschriftenverzameling
helderheidsveranderingen
herdenkingsplechtigheden
herontwikkelingsgebieden
herontwikkelingslocaties
herstructureringsopgaven
herstructureringsplannen
herstructureringsproject
honderdvyfentwintigjarig
hoofdverantwoordelykheid
hoofdverdragsgerechtigde
hoogwaardigheidsbekleder
hoornvliestransplantatie
huidverzorgingsproducten
huisvestingsmogelykheden
huisvestingsproblematiek
hulpverleningsinstanties
hulpverleningsinstelling
hulpverleningsprocedures
hulpverleningstechnieken
hulpverleningsvoertuigen
humanresourcesafdelingen
humanresourcesmanagement
huwelyksvermogensstelsel
hypotheekrentepercentage
immuungecompromitteerden
inburgeringsverplichting
individualiseringsproces
industrialisatiepolitiek
industrialiseringsproces
infectieziektebestryding
infiltratievoorzieningen
informatietechnologische
informatieverplichtingen
informatieverstrekkingen
infrastructuurbeheerders
infrastructuurcapaciteit
inkomstenbelastingtarief
inlichtingenorganisaties
inrichtingswerkzaamheden
inschryvingsverplichting
installatiehandleidingen
installatiewerkzaamheden
integratietegemoetkoming
internationaalrechtelyke
interpretatieverschillen
interpretatievoorschrift
invaliditeitsuitkeringen
invaliditeitsverzekering
investeringsactiviteiten
investeringsbeslissingen
investeringsfaciliteiten
investeringsmogelykheden
investeringsportefeuille
jongerenwerkorganisaties
jonggehandicaptenkorting
journalistenverenigingen
kandidaatstellingstermyn
kantongerechtsprocedures
kantoorinrichtingsbedryf
kennismakingsadvertentie
kentekenplaatfabrikanten
ketenverantwoordelykheid
kettingbreukontwikkeling
keuringskarakteristieken
kinderbyslaggerechtigden
kinderbyslaginstellingen
kinderboekenweekgeschenk
kinderopvangorganisaties
kinderrechtencommissaris
kinderrechtenorganisatie
klantenservicemedewerker
klassenvertegenwoordiger
kleinschaligheidstoeslag
klokkenluidersregelingen
kolenvergassingscentrale
koolmonoxidevergiftiging
koopkrachtondersteunende
koopkrachtontwikkelingen
kostbaarhedenverzekering
kredietbeperkingstoeslag
kruiskopschroevendraaier
kwaliteitsborgingsysteem
laagspanningsinstallatie
laboratoriumexperimenten
laboratoriumfaciliteiten
landinrichtingscommissie
landinrichtingsprojecten
langeafstandstransporten
langetermyninvesteringen
langetermynperspectieven
legervoorlichtingsdienst
leiderschapscapaciteiten
levensmiddelentechnoloog
levensverzekeringsbedryf
leveringsbetrouwbaarheid
liberaliseringsmaatregel
liberaliseringsprogramma
liefdadigheidsbyeenkomst
liefdadigheidsinstelling
liquiditeitsmoeilykheden
literatuurwetenschappers
loodgieterswerkzaamheden
loonaanvullingsuitkering
loonstrookjesverstrekker
luchthaveninfrastructuur
luchttransportcapaciteit
luchtverdedigingssysteem
luchtverkeersbegeleiding
luchtverkeersbeveiliging
luchtverkenningssystemen
luchtverversingssystemen
maatschappyontwrichtende
maatschappyveranderingen
maatschappywetenschappen
maatschapsovereenkomsten
managementondersteunende
marktverdelingsafspraken
massavernietigingswapens
medebeslissingsprocedure
mededingingsautoriteiten
medefinancieringsstelsel
medeverantwoordelykheden
medezeggenschapsregeling
meerderheidsbeslissingen
meerderheidsparticipatie
meerderjarigverklaringen
mensenrechtenambassadeur
mensenrechtenbeschermers
mensenrechtenconferentie
mensenrechtenorganisatie
mensenrechtenschendingen
mensenrechtenverdedigers
mentaliteitsgeschiedenis
middelbareschoolleerling
middellangeafstandsraket
middenstandsorganisaties
migrantendetentiecentrum
mynenbestrydingsvaartuig
milieueffectenrapportage
milieuvergunningaanvraag
millenniumdoelstellingen
minderheidsaandeelhouder
minderheidsparticipaties
minderwaardigheidsgevoel
ministerraadsvergadering
modificatiewerkzaamheden
monitoringswerkzaamheden
moslimfundamentalistisch
motorrytuigenverzekering
multiplatformbeveiliging
museumvertegenwoordigers
nablussingswerkzaamheden
nationaliteitsverklaring
natuurbeschermingsgebied
natuurbeschermingswetten
onafhankelykheidsfeesten
onafhankelykheidsstreven
onafhankelykheidsstryder
onafhankelykheidsverdrag
oncologieverpleegkundige
onderbrekingsuitkeringen
onderdrukkingsinstrument
onderdrukkingsmechanisme
onderhandelaarsresultaat
onderhandelingsdelegatie
onderhandelingsprocedure
onderhandelingsprocessen
onderhandelingsresultaat
onderhandelingssituaties
onderhandelingsstrategie
onderhandelingstactieken
onderhoudsverplichtingen
ondernemerschapsonderwys
ondernemingsactiviteiten
ondernemingsbeslissingen
ondernemingsorganisaties
ondernemingsovereenkomst
ondernemingsverenigingen
ondersteluchtweginfectie
ondersteunerscompensatie
ondersteuningsbehoevende
ondersteuningsstructuren
ondersteuningsverklaring
onderwysleeractiviteiten
onderzoeksjournalistieke
onderzoeksmethodologisch
onkruidbestrydingsmiddel
onkruidverdelgingsmiddel
onregelmatigheidstoeslag
onroerendgoedbelastingen
onroerendgoedbeleggingen
onroerendgoedmaatschappy
onroerendgoedonderneming
onroerendgoedtransacties
ontbindingsverschynselen
ontbrandingstemperaturen
onthoudingsverschynselen
ontplooiingsmogelykheden
ontruimingsplattegronden
ontsnappingsmogelykheden
ontspanningsactiviteiten
ontstekingsverschynselen
ontvochtigingscapaciteit
ontwapeningsbesprekingen
ontwapeningsconferenties
ontwenningsverschynselen
ontwikkelingsachterstand
ontwikkelingsbevorderend
ontwikkelingsgeneeskunde
ontwikkelingsmaatschappy
ontwikkelingsmogelykheid
ontwikkelingsorganisatie
ontwikkelingsperspectief
ontwikkelingspsychologen
ontwikkelingspsychologie
ontwikkelingssamenwerker
ontwikkelingsstimulerend
ontwikkelingsstimulering
ontwikkelingsstoornissen
ontzwavelingsinstallatie
oorlogsgravenstichtingen
openluchtrecreatiebeleid
openluchttentoonstelling
opleidingsovereenkomsten
opleidingsverplichtingen
oppervlaktebehandelingen
opportuniteitsoverweging
oprichtingsvergaderingen
opschoningswerkzaamheden
optimaliseringsproblemen
optimaliseringsstrategie
opvoedingsondersteunende
organisatieadviesbureaus
organisatiecriminaliteit
organisatieveranderingen
organochloorverbindingen
ouderschapsverlofkorting
overbedelingsvorderingen
overgevoeligheidsreactie
overheidscorrespondentie
overheidsdienstverlening
overheidsfunctionarissen
overnachtingsmogelykheid
overnameonderhandelingen
overspanningsbeveiliging
oververtegenwoordigingen
participatiebevorderende
partybestuursvergadering
partnerschapovereenkomst
partnerschapsregistratie
pensioenspaarverzekering
perfluoroctaansulfonzuur
personeelsinventarisatie
persoonlykheidskenmerken
persoonlykheidsonderzoek
persoonlykheidsprofielen
persoonlykheidsprojectie
persoonlykheidsstructuur
plaatsingsovereenkomsten
poppenkastvoorstellingen
populairwetenschappelyke
proceskostenveroordeling
procesvertegenwoordigend
procesvertegenwoordiging
productiviteitsstygingen
productiviteitsverhogend
productiviteitsverhoging
productiviteitsverliezen
professionaliseringsslag
programmeringsdocumenten
projectverantwoordelyken
radicaalnationalistische
radicaliseringsprocessen
radicaliseringstendenzen
raketverdedigingssysteem
rampbestrydingsprocessen
rampenbestrydingsplannen
rapportageverplichtingen
reageerbuisbevruchtingen
rechtbankverslaggeefster
rechtmatigheidsonderzoek
rechtsbystandverzekeraar
rechtsbystandverzekering
rechtsplegingsvergoeding
rechtszekerheidsbeginsel
rechtvaardigheidsgronden
referentieaandeelhouders
regelmatigheidscriterium
regeringsfunctionarissen
regeringsonderhandelaars
registratiewerkzaamheden
reorganisatievoorziening
restauratiewerkzaamheden
resultaatverantwoordelyk
revalidatiebehandelingen
ryksinkomstenbelastingen
rykslandbouwproefstation
rykslandbouwwinterschool
ryksopvoedingsgestichten
ryvaardigheidstrainingen
robotiseringspercentages
rookgasontzwavelingsgips
samenlevingsovereenkomst
samenwerkingsorganisatie
samenwerkingsvoorwaarden
satellietnavigatiebedryf
schadeverzekeringsbedryf
scheepvaartmaatschappyen
scheepvaartondernemingen
scheidsrechterscommissie
schilderyenverzamelingen
schoolbegeleidingsdienst
schoonheidsbehandelingen
schriftelykheidsvereiste
secondopiniononderzoeken
seksualiteitsdispositief
semioverheidsorganisatie
sensibiliseringscampagne
sigarenmakersmuziekkorps
slakkenbestrydingsmiddel
sleufkopschroevendraaier
socialezekerheidsstelsel
softwareontwikkelproject
solidariteitsmechanismen
specialistenverenigingen
specialiteitenrestaurant
spieruithoudingsvermogen
stadsvernieuwingsproject
standaardfunctionaliteit
stormwaarschuwingsdienst
strafuitsluitingsgronden
structuurplanningsproces
structuurvennootschappen
studiefinancieringsregel
studiefinancieringsschyf
studiekostenvergoedingen
studieloopbaanbegeleider
studierichtingscommissie
studievoortgangscontrole
substitutiebehandelingen
tekstverwerkingsfuncties
telecommunicatiebedryven
telecommunicatiebehoefte
telecommunicatiecentrale
telecommunicatiediensten
telecommunicatiemiddelen
telecommunicatiesystemen
telecommunicatietechniek
telefoonantwoordapparaat
telefoonkostenvergoeding
televisiepersoonlykheden
temperatuurschommelingen
temperatuurveranderingen
tentoonstellingsbezoeker
tentoonstellingscatalogi
tentoonstellingsgebouwen
terbeschikkingstellingen
terugbetalingsregelingen
tevredenheidsonderzoeken
tewerkstellingsprojecten
textielveredelingsbedryf
tydschriftenportefeuille
toepasbaarheidsonderzoek
toepassingsprogrammatuur
toeritdoseerinstallaties
torxschroevendraaiertjes
transitieverpleegkundige
transplantatiedoeleinden
transportverzekeringswet
uitbetalingsinstellingen
uitbreidingsmogelykheden
uitdrogingsverschynselen
uitdrukkingsmogelykheden
uitdrukkingsvaardigheden
uitkeringsafhankelykheid
uitputtingsverschynselen
uitvoeringsverordeningen
uitvoeringswerkzaamheden
uitzonderingsmaatregelen
uitzonderingsmogelykheid
universiteitsbestuurders
universiteitsbibliotheek
universiteitsmedewerkers
universiteitsprofessoren
uraniumverrykingsfabriek
urineweginfectiebacterie
veiligheidsbeheersysteem
veiligheidscertificering
veiligheidsvoorschriften
veiligheidsvoorzieningen
vennootschapsbelastingen
veranderingsmogelykheden
verblyfskostenvergoeding
verbouwingswerkzaamheden
verbrandingsinstallaties
verdrinkingsgeschiedenis
vereenvoudigingsvoorstel
verenigingsadministratie
verenigingsondersteuners
vergiftigingsverschynsel
vergrendelingsmechanisme
vergunningsvoorschriften
verificatievergaderingen
verificatiewerkzaamheden
verkavelingsvergunningen
verkeersinformatiedienst
verkeersregelinstallatie
verkeersveiligheidsactie
verkeersveiligheidsfonds
verkiezingsoverwinningen
verkiezingsredevoeringen
verlammingsverschynselen
verlichtingsinstallaties
verloederingsverschynsel
vermakelykheidsbelasting
vermenigvuldigingsfactor
vermoeidheidsverschynsel
vermogensaanwasbelasting
verontreinigingsprobleem
verplaatsingsmogelykheid
verslavingsverschynselen
vervangingsinvesteringen
vervangingskatalysatoren
vervangingswerkzaamheden
vervoersbeperkingsgebied
vervoerskostenvergoeding
verwarmingsinstallateurs
verwerkersovereenkomsten
verwerkingsspecificaties
verwerkingsvoorschriften
verwervingsvoorbereiding
verwytbaarheidscriterium
verzekeringsactiviteiten
verzekeringsgeneeskundig
verzekeringsinstellingen
verzekeringsovereenkomst
verzekeringsportefeuille
verzelfstandigingsproces
verzoekschriftprocedures
verzorgingsappartementen
verzorgingsvoorzieningen
vicepresidentskandidaten
vierentwintiguursservice
vliegveiligheidsincident
vluchtelingenorganisatie
voedingsmiddelenbedryven
voedseldistributiecentra
voedselveiligheidsbeleid
volksgezondheidsprobleem
volksvertegenwoordigende
volksvertegenwoordigster
voorbereidingsgesprekken
voorbereidingsprocedures
voorlichtingsorganisatie
voortbewegingsmechanisme
voortplantingsmechanisme
voortplantingstechnieken
voortstuwingsinstallatie
vreemdelingenbegeleiders
vreemdelingenheerschappy
vryhandelsovereenkomsten
vrystellingsmogelykheden
vrywilligersorganisaties
vrywilligersproblematiek
vrywilligersverenigingen
vrywilligersvergoedingen
vruchtbaarheidsklinieken
vruchtbaarheidsonderzoek
vruchtbaarheidsproblemen
wapenstilstandsverdragen
warmtegeleidingsvermogen
waterhuishoudingsplannen
waterkwaliteitsbeheerder
watertechnologiebedryven
waterzuiveringstabletten
wederopbouwwerkzaamheden
wereldhandelsconferentie
wereldhandelsorganisatie
wereldkampioenskandidaat
wereldklimaatconferentie
wereldvoedselorganisatie
wereldvoedselvoorziening
wereldvrouwenconferentie
werkgelegenheidsafspraak
werkgelegenheidsaspecten
werkgelegenheidseffecten
werkgelegenheidsgarantie
werkgelegenheidspolitiek
werkgelegenheidsprobleem
werkgelegenheidssituatie
werkgelegenheidssubsidie
werkloosheidspercentages
werkloosheidsuitkeringen
werkloosheidsverzekering
werkloosheidsvoorziening
werkverschaffingsproject
wetenschapsjournalistiek
wisselkoersschommelingen
woningwaarderingsstelsel
woordenschatontwikkeling
zeggenschapsverhoudingen
zelfbedieningsapparatuur
zelfbedieningsrestaurant
zelfbedieningswinkeltjes
zelfbeschermingsmiddelen
zelfreguleringsinstantie
zelfstandigenorganisatie
zelfstandigheidspolitiek
ziektekostenverzekeraars
ziekteverzuimbegeleiding
ziekteverzuimpercentages
ziekteverzuimverzekering
zoekmachineoptimalisatie
zondagochtendnieuwsbrief
zorgvuldigheidscriterium
zorgvuldigheidsvereisten
zwakzinnigeninrichtingen
zwangerschapsafbrekingen
zwangerschapsbegeleiding
zwangerschapscomplicatie

533
dictionary/25.txt Normal file
View File

@@ -0,0 +1,533 @@
aandeelhouderskapitalisme
aandeelhoudersvergadering
aanhankelykheidsbetuiging
aanlegvergunningenstelsel
aansprakelykheidsbedingen
aansprakelykheidspolissen
aansprakelykheidsregeling
aansprakelykheidsstelling
abonnementenadministratie
abonnementsvoorstellingen
activiteitenbegeleidsters
administratievelastendruk
afhankelykheidsverhouding
ambulanceverpleegkundigen
antiapartheidsorganisatie
antidiscriminatiebepaling
antidiscriminatieregeling
arbeidsmarktperspectieven
arbeidsongeschiktheidswet
arbeidsvoorwaardenbesluit
arbeidsvoorwaardengesprek
arbeidsvoorwaardenoverleg
arbeidsvoorwaardenvorming
arbeidsvoorzieningsbeleid
architectuurbeschryvingen
asfalteringswerkzaamheden
auteursrechtenorganisatie
auteursrechtenschendingen
automatiseringsafdelingen
automatiseringsdeskundige
automatiseringstechnieken
banktransactiebevestiging
bedryfshulpverleningstaak
bedryfsinformatiesystemen
bedryfsleidersverzekering
bedryfstakpensioenfondsen
bedryfsvoeringsinformatie
bedryfsvoeringsparagrafen
beetwortelsuikerfabrieken
begeleidingsverschynselen
begeleidingswerkzaamheden
begrotingsoverschrydingen
behandelingsperspectieven
belangenvertegenwoordiger
belanghebbendenvergunning
belastingdienstmedewerker
beleidsveronderstellingen
bemiddelingswerkzaamheden
benoemingsadviescommissie
beoordelingswerkzaamheden
beroepskostenvergoedingen
beroepspensioenregelingen
beschermingsvoorzieningen
beschikkingsonbevoegdheid
beslissingsondersteunende
besluitvormingsprocedures
besluitvormingsstructuren
bestemmingsplanprocedures
bestemmingsplanwyzigingen
beveiligingswerkzaamheden
bewustwordingsmogelykheid
bezwaarschriftencommissie
bezwaarschriftenprocedure
bezwaarverzekeringsartsen
biovergistingsinstallatie
bolbloemententoonstelling
brandbestrydingsmateriaal
budgethoudersverenigingen
burgemeestersverkiezingen
burgerrechtenorganisaties
capaciteitsverminderingen
chineesrestaurantsyndroom
collegegelddifferentiatie
communicatieprofessionals
communicatiewetenschappen
communicatiewetenschapper
compatibiliteitsproblemen
concentratiekampsyndromen
conformiteitsverklaringen
consumentensoevereiniteit
contactlenzenspecialisten
contentmanagementsystemen
contingenteringsmaatregel
contributieverplichtingen
corporategovernancebeleid
creativiteitsbevorderende
crisisbeheersingsoperatie
deeltydbehandelingsplaats
dekolonisatiegeschiedenis
democratiseringsprocessen
democratiseringsprogramma
democratiseringstendensen
departementsoverschrydend
derdegeneratieallochtonen
deskundigheidsbevorderend
deskundigheidsbevordering
detailhandelsactiviteiten
dienstverleningsconcepten
dienstverleningskwaliteit
dienstverleningsprocessen
dierenrechtenorganisaties
disacharidetolerantietest
doelmatigheidskengetallen
doelmatigheidsonderzoeken
doorstralingsinstallaties
drinkwaterleidingbedryven
echtscheidingsbemiddeling
echtscheidingsbeschikking
eerstegeneratieallochtoon
eerstelynsgezondheidszorg
effectenkredietinstelling
eigenvermogensbestanddeel
eindeloopbaanproblematiek
elektriciteitsaansluiting
elektriciteitsdistributie
elektriciteitsinstallatie
elektriciteitsleverancier
elektriciteitsmaatschappy
elektriciteitsproducenten
elektriciteitsproducerend
elektriciteitsvoorziening
elementairedeeltjesfysica
evangelisatieverenigingen
exploitatieovereenkomsten
faillissementsbescherming
faillissementsrechtbanken
fietsknooppuntennetwerken
financieringsconstructies
financieringsfaciliteiten
financieringsinstellingen
financieringsinstrumenten
financieringsmogelykheden
financieringsovereenkomst
financieringsproblematiek
fotografietentoonstelling
fractievertegenwoordigers
fractievoorzittersgesprek
functiewaarderingsstelsel
functiewaarderingssysteem
gasselterboerveenschemond
gebruikelykheidscriterium
gehandicaptenorganisaties
gehandicaptenparkeerkaart
gemeenschapsvoorzieningen
gemeenteraadsverkiezingen
geneesmiddelenbeoordeling
geneesmiddelendistributie
geneesmiddelenfabrikanten
geneesmiddelenonderzoeken
geneesmiddelenproducenten
geneesmiddelenvoorziening
gepensioneerdenvereniging
geslachtsziektebestryding
gewasbeschermingsmiddelen
gezantschapssecretarissen
gezelligheidsverenigingen
gezondheidswaarschuwingen
gezondheidszorginstelling
grondafhandelingsdiensten
grondontsmettingsmiddelen
grondwaterverontreiniging
grootwaardigheidsbekleder
handelsvertegenwoordigers
handelsvertegenwoordiging
havenontvangstinstallatie
hemelwaterafvoerleidingen
hengstenkeuringscommissie
herinschakelingsuitkering
herontwikkelingsprojecten
heroverwegingsvoorstellen
herstellingswerkzaamheden
herstructureringsoperatie
herverzekeringscontracten
herverzekeringsfaciliteit
hogeremachtsvergelykingen
hogeronderwysinstellingen
hogesnelheidsverbindingen
honderdvyfentwintigjarige
honderdvyfenzeventigjarig
hoogspanningsnetbeheerder
hoogspanningsverbindingen
hoogwaardigheidsbekleders
hoornvliestransplantaties
hospitalisatieverzekering
huisvestingsmaatschappyen
hulpverleningsmethodieken
hulpverleningsmogelykheid
hulpverleningsorganisatie
hulpverleningsvoorstellen
hulpverleningsvoorziening
huursubsidiebeschikkingen
identificatiemogelykheden
implementatieproblematiek
inbeschuldigingstellingen
inburgeringsvoorzieningen
informatiedienstverlening
ingezondenbrievenschryver
initiatiefwetsvoorstellen
inkomensreferentieperiode
inkomstenbelastingstarief
inspanningsverplichtingen
instandhoudingsverklaring
interpretatiemogelykheden
investeringsalternatieven
investeringsmaatschappyen
investeringsopportuniteit
investeringsportefeuilles
inwerkingtredingsbepaling
jeugdtheatergezelschappen
jubileumtentoonstellingen
kabeltelevisiemaatschappy
kandidaatsstellingstermyn
kapitaalgoederenindustrie
kennismakingsadvertenties
kennismakingsbyeenkomsten
kinderbeveiligingssysteem
kinderrechtenorganisaties
klassenvertegenwoordigers
klimaatbeheersingssysteem
kostenbesparingsprogramma
krachtuithoudingsvermogen
kruiskopschroevendraaiers
kwaliteitsborgingsstelsel
kwaliteitsborgingssysteem
kwaliteitscertificeringen
kwaliteitsfunctionarissen
laagspanningsinstallaties
laboratoriumwerkzaamheden
landbouwbestrydingsmiddel
landbouwtentoonstellingen
landinrichtingscommissies
langeafstandsverbindingen
langetermyndoelstellingen
leesbevorderingsprojecten
levensmiddelenfabrikanten
levensmiddelengroothandel
levensmiddelenproducenten
levensmiddelentechnologen
levensmiddelentechnologie
levensmiddelenvoorziening
levensverzekeringsproduct
licentiaatsverhandelingen
liefdadigheidsorganisatie
literatuurgeschiedenissen
literatuurwetenschappelyk
luchtbeschermingsoefening
luchtverdedigingsraketten
luchtverdedigingssystemen
marketingverantwoordelyke
marktontwikkelingsplannen
massacommunicatiemiddelen
materiaaltechnologiegroep
medezeggenschapscommissie
medezeggenschapsstructuur
medezeggenschapswetgeving
meerderheidsaandeelhouder
meerderwaardigheidsgevoel
meettechnologiespecialist
mensenrechtengroeperingen
mensenrechtenorganisaties
mensensmokkelorganisaties
mentaliteitsveranderingen
milieubeleidsovereenkomst
milieueffectbeoordelingen
milieueffectenbeoordeling
milieuopsporingsambtenaar
milieurisicobeoordelingen
milieuverantwoordelykheid
milieuvergunningsaanvraag
minderheidsaandeelhouders
minderwaardigheidscomplex
mishandelingsproblematiek
moslimfundamentalistische
nabestaandenverzekeringen
nabestaandenvoorzieningen
nadeelcompensatieregeling
natuurontwikkelingsgebied
nederzettingsgeschiedenis
neutraliteitsverklaringen
normalisatiewerkzaamheden
onafhankelykheidsbeginsel
onafhankelykheidsbeweging
onafhankelykheidsoorlogen
onafhankelykheidsstryders
onbetrouwbaarheidsdrempel
oncologieverpleegkundigen
onderbedelingsvorderingen
onderdrukkingsmechanismen
onderhandelingsdelegaties
onderhandelingsgesprekken
onderhandelingsprocedures
onderhandelingsresultaten
onderhandelingstechnieken
ondernemingspensioenfonds
ondervertegenwoordigingen
onderzoeksmethodologische
onderzoeksverpleegkundige
onderzoeksvraagstellingen
onroerendezaakbelastingen
ontgrondingswerkzaamheden
ontoerekeningsvatbaarheid
ontsmettingswerkzaamheden
ontsnipperingsmaatregelen
ontwerpbestemmingsplannen
ontwikkelingsactiviteiten
ontwikkelingsbevorderende
ontwikkelingsfinanciering
ontwikkelingsgeneeskundig
ontwikkelingsgeschiedenis
ontwikkelingsinspanningen
ontwikkelingsmogelykheden
ontwikkelingsorganisaties
ontwikkelingsovereenkomst
ontwikkelingspartnerschap
ontwikkelingsproblematiek
ontwikkelingssamenwerkers
ontwikkelingssamenwerking
ontwikkelingsvraagstukken
ontzwavelingsinstallaties
oppervlaktewaterkwaliteit
optischevezelactiviteiten
organisatieontwikkelingen
ouderdomsslechthorendheid
ouderschapsverlofregeling
overbrengingsverhoudingen
overbruggingsfinanciering
overgevoeligheidsreacties
overheidsaansprakelykheid
overnachtingsmogelykheden
overschryvingsformulieren
overstromingsslachtoffers
overzichtstentoonstelling
pantsergevechtsvoertuigen
pantserinfanteriebataljon
participatiemaatschappyen
partnerschapsovereenkomst
partnerschapsregistraties
persfusiecontroleregeling
personalisatiemogelykheid
personeelsaangelegenheden
personeelsfunctionarissen
persoonlykheidspathologie
persoonlykheidsstructuren
plattelandsgemeenschappen
portefeuillesamenstelling
prikkeldraadversperringen
probleemcumulatiegebieden
procesvertegenwoordigende
productiviteitsverhogende
publicrelationsmedewerker
raadscommissievergadering
rechtsbystandsverzekering
rechtsbystandverzekeraars
rechtvaardigheidsbeginsel
rechtvaardigheidsprincipe
regeringsonderhandelingen
registratieverplichtingen
rehabilitatieactiviteiten
relatiebemiddelingsbureau
reserveringsbevestigingen
resultaatverantwoordelyke
rykslandbouwproefstations
ruggengraatsverkrommingen
ruimtelykeordeningsbeleid
salarisgarantieregelingen
samenwerkingsmogelykheden
samenwerkingsorganisaties
samenwerkingsovereenkomst
satellietnavigatiesysteem
schaalvergrotingsoperatie
schadevergoedingsplichten
schadevergoedingsregeling
scheenbeenvliesontsteking
scheepsveiligheidsplannen
scheidsrechtersvereniging
schuldsaneringsregelingen
schulduitsluitingsgronden
semioverheidsinstellingen
semioverheidsorganisaties
sensibiliseringscampagnes
slavernytentoonstellingen
sleufkopschroevendraaiers
socialeverzekeringspremie
socialezekerheidsbydragen
socialezekerheidsregeling
soevereiniteitsoverdracht
soevereiniteitsverklaring
softwareontwikkelingstool
solidariteitsverklaringen
solvabiliteitsverzekering
solvabiliteitsvoorschrift
specialiteitenrestaurants
spellingcontrolebestanden
spellingcontroleprogramma
spysverteringsstoornissen
spraakherkenningspatenten
spraakherkenningssoftware
staatsspoorwegmaatschappy
stadsguerrillaorganisatie
stadsvernieuwingsgebieden
stadsverwarmingsprojecten
standaardisatieactiviteit
standenvertegenwoordiging
stofwisselingsstoornissen
straalverkeersvliegtuigen
straatvechtersmentaliteit
strafuitvoeringsrechtbank
studiefinancieringsregels
studieloopbaanbegeleiders
studieloopbaanbegeleiding
subsidieafbraakpercentage
taalontwikkelingsstoornis
tabaksontmoedigingsbeleid
teambuildingsactiviteiten
technologieontwikkelingen
tekeningententoonstelling
tekstverwerkingscursussen
tekstverwerkingshandeling
tekstverwerkingsprogramma
telecommunicatienetwerken
telefoonantwoordapparaten
telemarketingactiviteiten
temperatuursveranderingen
tentoonstellingsbezoekers
tentoonstellingscatalogus
tentoonstellingsinstituut
tentoonstellingspaviljoen
tentoonstellingsprogramma
tentoonstellingsprojecten
tentoonstellingsterreinen
territorialiteitsbeginsel
territorialiteitsprincipe
terugbetalingsvoorwaarden
terugkoppelingsmechanisme
terugmeldingsverplichting
tewaterlatingsvoorziening
tewerkstellingsvergunning
transitieverpleegkundigen
transplantatiegeneeskunde
tweedegeneratieallochtoon
tweedegraadsvergelykingen
tweerichtingscommunicatie
tweewegluidsprekersysteem
typegoedkeuringsinstantie
uitbreidingsinvesteringen
uitbreidingswerkzaamheden
universiteitsbibliotheken
universiteitslaboratorium
universiteitsmedewerkster
universiteitsziekenhuizen
vakbondsvertegenwoordiger
vastgoedbeleggingsfondsen
vaststellingsovereenkomst
veiligheidsinformatieblad
veiligheidsrisicogebieden
veiligheidstekortkomingen
verantwoordelykheidsbesef
verantwoordelykheidsvraag
verantwoordingsinformatie
verbeteringswerkzaamheden
vergeldingsbombardementen
vergrendelingsmechanismen
verkeersregelinstallaties
verkeersveiligheidsbeleid
vernieuwingswerkzaamheden
verontreinigingsproblemen
verouderingsverschynselen
verstikkingsverschynselen
verwantschapsbetrekkingen
verwyderingswerkzaamheden
verzadigingsverschynselen
verzekeringsgeneeskundige
verzekeringsmaatschappyen
verzekeringsondernemingen
verzekeringsportefeuilles
verzekeringstussenpersoon
vierentwintiguurseconomie
vluchtelingenorganisaties
vluchtelingenproblematiek
vluchtelingenvraagstukken
voedingsmiddelenindustrie
voedingsmiddelenproducent
voedseldistributiecentrum
volatiliteitsaanpassingen
volksgezondheidsproblemen
volksvertegenwoordigingen
voorbereidingshandelingen
voorbereidingsmaatregelen
voorfinancieringsbetaling
voorfinancieringsregeling
voorhoofdsholteontsteking
voorlichtingsactiviteiten
voorlichtingsbyeenkomsten
voorlichtingsorganisaties
voorlichtingspresentaties
voortplantingsgeneeskunde
voortstuwingsinstallaties
voorzichtigheidsmaatregel
vrystellingsverordeningen
vrywilligerswerkzaamheden
waarnemingsomstandigheden
waarschynlykheidsrekening
wapenbeheersingsverdragen
waterkwaliteitsbeheerders
waterleidingmaatschappyen
watertransportmaatschappy
wereldhandelsbesprekingen
wereldkampioenschapsmatch
werkeloosheidsuitkeringen
werkeloosheidsverzekering
werkgelegenheidsafspraken
werkgelegenheidsgaranties
werkgelegenheidsmaatregel
werkgelegenheidsproblemen
werkgelegenheidsprogramma
werkgelegenheidsprojecten
werkgelegenheidsstrategie
werkgelegenheidssubsidies
werkloosheidsproblematiek
werkloosheidsvergoedingen
witteboordencriminaliteit
wortelkanaalbehandelingen
zelfbedieningsgroothandel
zelfbedieningsrestaurants
zelfreguleringsinitiatief
zelfreguleringsinstanties
zelfverdedigingscursussen
ziektekostenverzekeringen
ziektekostenvoorzieningen
zwangerschapscomplicaties
zwangerschapsmisselykheid
zwangerschapsonderbreking
zwangerschapsvergiftiging

252
dictionary/26.txt Normal file
View File

@@ -0,0 +1,252 @@
aandeelhoudersovereenkomst
aandeelhoudersverenigingen
aansprakelykheidsbeperkend
aansprakelykheidsbeperking
aansprakelykheidstellingen
afdelingsvertegenwoordiger
airconditioninginstallatie
anderhalvemetersamenleving
antiglobaliseringsbeweging
antiregeringsdemonstranten
arbeidsovereenkomstenrecht
arbeidsvoorwaardencontract
arrondissementscommissaris
arrondissementsrechtbanken
auteursrechtenorganisaties
automatiseringsbegeleiding
automatiseringsdeskundigen
automatiseringsoplossingen
bedryfscontactfunctionaris
bedryfshulpverleningstaken
bedryfsvoeringsonderzoeken
begrotingsonderhandelingen
belangenvertegenwoordigers
belastingaangifteformulier
belastingdienstmedewerkers
beleidsverantwoordelykheid
benoemingsadviescommissies
bestandsorganisatiemethode
bestrydingsmiddelengebruik
betrouwbaarheidsverklaring
bezwaarschriftencommissies
bezwaarschriftenprocedures
biovergistingsinstallaties
bornagainchristianbeweging
bouwwerkinformatiemodellen
brandwaarborgmaatschappyen
buitengewonelastenregeling
cardiaccareverpleegkundige
compartimenteringsregeling
conserveringswerkzaamheden
criminaliteitsbeeldanalyse
criminaliteitsstatistieken
crisisbeheersingsoperaties
democratiseringsbewegingen
departementsoverschrydende
deradicaliseringsprogramma
desintegratieverschynselen
desktoppublishingprogramma
deskundigheidsbevorderende
detacheringsovereenkomsten
dienstverleningscontracten
differentiaalbeveiligingen
differentiaalvergelykingen
eerstegeneratieallochtonen
eersteministerportefeuille
eigenvermogensbestanddelen
elektriciteitsbevoorrading
elektriciteitsdistributeur
elektriciteitsinstallaties
elektriciteitsleveranciers
elektriciteitsnetbeheerder
elektriciteitsproducerende
energiedistributiebedryven
exportkredietverzekeringen
financieringsarrangementen
financieringsmaatschappyen
financieringswerkzaamheden
fotoverkenningsvliegtuigen
frequentiekarakteristieken
functiewaarderingssystemen
functioneringsproblematiek
gebiedscommissievoorzitter
gehandicaptenvoorzieningen
geheelonthoudersvereniging
geheimhoudingsverklaringen
geloofwaardigheidsprobleem
geluidsbelastingsindicator
gemeenschapsaangelegenheid
gemeenteraadsvergaderingen
gemeentereinigingsdiensten
geneesmiddelenautoriteiten
gezichtsherkenningsoftware
gezondheidswetenschappelyk
gillesdelatourettesyndroom
grootwaardigheidsbekleders
handschriftenverzamelingen
havenontvangstinstallaties
herbetredingswerkzaamheden
herdenkingstentoonstelling
herintegratieondersteuning
herstructureringsmaatregel
herstructureringsoperaties
herstructureringsprocessen
herstructureringsprogramma
herstructureringsprojecten
herverzekeringsmaatschappy
herverzekeringsonderneming
hoogspanningsnetbeheerders
hulpverleningsinstellingen
hulpverleningsmogelykheden
hulpverleningsorganisaties
implementatiewerkzaamheden
inburgeringsverplichtingen
infanteriegevechtsvoertuig
ingezondenbrievenschryvers
inkomstenbelastingtarieven
inschryvingsverplichtingen
investeringspremieregeling
klassenvertegenwoordigster
kwaliteitsborgingsstelsels
kwaliteitsborgingssystemen
laboratoriumomstandigheden
leerstofjaarklassensysteem
levensverzekeringscontract
levensverzekeringspolissen
levensverzekeringswiskunde
leveranciersafhankelykheid
liberaliseringsmaatregelen
liefdadigheidsinstellingen
liefdadigheidsorganisaties
literatuurwetenschappelyke
luchtverdedigingsfregatten
luchtverkeersbeheernetwerk
maatschappywetenschappelyk
medefinancieringsprogramma
medezeggenschapscommissies
medezeggenschapsregelingen
meerderheidsaandeelhouders
meerderheidsbesluitvorming
meestbegunstigingsclausule
meeverbrandingsinstallatie
middelbareschoolleerlingen
mynenbestrydingsvaartuigen
milieuvergunningsaanvragen
minderwaardigheidsgevoelen
mobiliteitspartnerschappen
motorrytuigenverzekeringen
natuurbeschermingsgebieden
natuurontwikkelingsplannen
natuurontwikkelingsproject
onbetrouwbaarheidsdrempels
onderhandelingshuishouding
onderkoelingsverschynselen
ondernemingsdoelstellingen
ondersteuningsverklaringen
onderwysachterstandsbeleid
onderwysbegeleidingsdienst
onderzoeksverpleegkundigen
onkruidbestrydingsmiddelen
onkruidverdelgingsmiddelen
onregelmatigheidstoeslagen
ontwapeningsonderhandeling
ontwerpwetgevingsresolutie
ontwikkelingsachterstanden
ontwikkelingsmaatschappyen
ontwikkelingsperspectieven
ontwikkelingspsychologisch
ontwikkelingswerkzaamheden
openbaarvervoermaatschappy
opportuniteitsoverwegingen
overheidsvertegenwoordiger
partnerschapovereenkomsten
personalisatiemogelykheden
persoonlykheidsonderzoeken
persoonlykheidspsychologie
persoonlykheidsstoornissen
pleziervaartuigenbelasting
portefeuillehoudersoverleg
productiviteitsverbetering
productiviteitsverhogingen
productontwikkelingsproces
proportionaliteitsbeginsel
publicrelationsmedewerkers
rampbestrydingsorganisatie
rasterelektronenmicroscoop
rechtvaardigheidsgevoelens
rechtvaardigheidsprincipes
reclasseringswerkzaamheden
reconstructiewerkzaamheden
regeringsvertegenwoordiger
relatiebemiddelingsbureaus
reorganisatievoorzieningen
rioolzuiveringsinstallatie
risicokapitaalverschaffers
satellietnavigatiesystemen
schadevergoedingsmaatregel
schadevergoedingsprocedure
scheepswerktuigbouwkundige
schilderyententoonstelling
schildklierfunctiestoornis
schoolbegeleidingsdiensten
secretariaatsondersteuning
secretariaatswerkzaamheden
slakkenbestrydingsmiddelen
socialeverzekeringspremies
socialezekerheidsuitkering
softwareontwikkelingstools
softwareontwikkelprojecten
staatselektriciteitsbedryf
stadsvernieuwingsprojecten
standaardfunctionaliteiten
standaardisatieorganisatie
studentenvertegenwoordiger
studiefinancieringsstelsel
tegelzettersgereedschappen
tekstverwerkingsfaciliteit
telecommunicatieapparatuur
telecommunicatietoepassing
televisieomroeporganisatie
terugkoppelingsmechanismen
terugvorderingsbeschikking
tewerkstellingsbevorderend
toetredingspartnerschappen
transportmiddelenindustrie
tweedegeneratieallochtonen
uitbreidingsonderhandeling
uraniumverrykingsprogramma
vakbondsvertegenwoordigers
veiligheidsaangelegenheden
veiligheidsfunctionarissen
verantwoordelykheidsgebied
verantwoordelykheidsgevoel
verblyfskostenvergoedingen
vergiftigingsverschynselen
verkiezingsfunctionarissen
verlichtingsfundamentalist
verloederingsverschynselen
vermenigvuldigingsfactoren
vermoeidheidsverschynselen
vermogensrendementsheffing
verslechteringsvoorstellen
vervoersbeperkingsgebieden
verzekeringsgeneeskundigen
verzekeringsovereenkomsten
verzekeringstegemoetkoming
verzekeringstussenpersonen
vliegveiligheidsincidenten
voedingsmiddelentechnoloog
voetgangersoversteekplaats
voorontwerpbestemmingsplan
vreemdelingencriminaliteit
vruchtbaarheidsbehandeling
vruchtbaarheidsbevorderend
vruchtbaarheidsonderzoeken
waardeverminderingsverlies
waarschynlykheidsverdeling
wapenbeheersingsbespreking
waterzuiveringsinstallatie
werkloosheidsvoorzieningen
werkverschaffingsprojecten
zeeverzekeringsmaatschappy
zwangerschapsdiscriminatie

175
dictionary/27.txt Normal file
View File

@@ -0,0 +1,175 @@
aandeelhoudersvergaderingen
aanhankelykheidsbetuigingen
aansprakelykheidsbeperkende
aansprakelykheidsstellingen
afdelingsvertegenwoordigers
afvalverbrandingscapaciteit
afvalverwerkingsinstallatie
airconditioninginstallaties
arbeidsomstandighedenbeleid
arbeidsongeschiktheidsfonds
arbeidsplaatsenovereenkomst
autoverzekeringsmaatschappy
banktransactiebevestigingen
bedryfsvoeringsvraagstukken
begrotingscontrolecommissie
belanghebbendenvergunningen
beleidsverantwoordelykheden
besluitvormingsproblematiek
bestandsorganisatiemethoden
bestuurdersaansprakelykheid
bestuursverantwoordelykheid
betrouwbaarheidsintervallen
bewaarschoolonderwyzeressen
brandveiligheidsvoorschrift
buitendienstfunctionarissen
chloorfluorkoolwaterstoffen
conceptverkiezingsprogramma
consumptiegoederenindustrie
contentmanagementsysteempje
contingenteringsmaatregelen
deeltydbehandelingsplaatsen
drugsbestrydingsorganisatie
elektriciteitsaansluitingen
elektriciteitsdistributeurs
elektriciteitsmaatschappyen
elektriciteitsnetbeheerders
elektriciteitsvoorzieningen
explosievenopruimingsdienst
financieringsovereenkomsten
geloofwaardigheidsproblemen
gemeenschapsaangelegenheden
gepensioneerdenverenigingen
gezondheidszorginstellingen
grondwaterverontreinigingen
herbestratingswerkzaamheden
herinrichtingswerkzaamheden
herontwikkelingsmogelykheid
herverzekeringsfaciliteiten
hospitalisatieverzekeringen
hulpverleningsvoorzieningen
hulpverleningswerkzaamheden
huwelyksgoederengemeenschap
informatietechnologiesector
infrastructuurwerkzaamheden
ingebrekestellingsprocedure
inkomstenbelastingstarieven
instandhoudingsdoelstelling
instandhoudingsverklaringen
interculturaliseringsproces
investeringsopportuniteiten
inwerkingtredingsbepalingen
kandidaatstellingscommissie
kandidaatstellingsformulier
kandidaatstellingsprocedure
kandidaatstellingsreglement
kinderbeschermingsmaatregel
klanttevredenheidsonderzoek
kostentoedelingsverordening
kredietwaardigheidscontrole
kruiskopschroevendraaiertje
kwaliteitsmanagementsysteem
landbouwbestrydingsmiddelen
landbouwontwikkelingsgebied
levensverzekeringsproducten
luchtbeschermingsoefeningen
luchtverdedigingscapaciteit
luistervaardigheidstraining
maatschappywetenschappelyke
managementinformatiesysteem
medezeggenschapsbevoegdheid
meerderjarigheidsverklaring
meestbegunstigingsclausules
meeverbrandingsinstallaties
middellangeafstandsraketten
minderwaardigheidscomplexen
minderwaardigheidsgevoelens
natuurontwikkelingsgebieden
netneutraliteitsverordening
noodverlichtingsinstallatie
onafhankelykheidsbewegingen
onafhankelykheidsreferendum
onafhankelykheidsverklaring
onbewoonbaarheidsverklaring
onderhandelingsdoelstelling
ondernemerschapsvaardigheid
ondernemingspensioenfondsen
ondernemingsraadvergadering
onderwysachterstandenbeleid
onderzoeksjournalistiekprys
ongediertebestrydingsbedryf
ongediertebestrydingsmiddel
ontwerpverkiezingsprogramma
ontwikkelingspsychologische
oppervlaktetraagheidsmoment
overeenstemmingsbeoordeling
overheidsvertegenwoordigers
overlydensrisicoverzekering
overzichtstentoonstellingen
partnerschapsovereenkomsten
personeelsvertegenwoordiger
personenmeerderheidsstelsel
persoonlykheidsontwikkeling
persoonlykheidsproblematiek
productiviteitsontwikkeling
professionaliseringstraject
rampbestrydingsorganisaties
rechtsbystandsverzekeringen
rechtshandhavingsautoriteit
rechtvaardigheidsbeginselen
rechtvaardigheidsoverweging
regeringsvertegenwoordigers
rioolzuiveringsinstallaties
samenwerkingsovereenkomsten
schadevergoedingsprocedures
sleufkopschroevendraaiertje
socialezekerheidsinstelling
solvabiliteitsverzekeringen
solvabiliteitsvoorschriften
staatsluchtvaartmaatschappy
standaardisatieactiviteiten
standaardisatieorganisaties
strafuitvoeringsrechtbanken
studentenvertegenwoordigers
studentenvertegenwoordiging
studiebegeleidingsinstituut
tekstverwerkingshandelingen
telecommunicatiemaatschappy
telecommunicatiemogelykheid
telecommunicatieorganisatie
telecommunicatievoorziening
tewaterlatingsvoorzieningen
tewerkstellingsbevorderende
tewerkstellingsvergunningen
toetredingsonderhandelingen
transmissiesysteembeheerder
veiligheidsinformatiebladen
verantwoordelykheidsrapport
vereenvoudigingsvoorstellen
verkeersbegeleidingssysteem
verlichtingsfundamentalisme
verzelfstandigingsprocessen
voedingsmiddelenproducenten
voedingsmiddelentechnologen
voedingsmiddelentechnologie
voedselverwerkingsindustrie
voorbehandelingsinstallatie
voorbereidingswerkzaamheden
voorfinancieringsbetalingen
voorzichtigheidsmaatregelen
vruchtbaarheidsbevorderende
vuilverbrandingsinstallatie
waarschynlykheidsberekening
wapenstilstandsovereenkomst
wateronthardingsinstallatie
waterzuiveringsinstallaties
werkeloosheidsverzekeringen
werkgelegenheidsbevorderend
werkgelegenheidsmaatregelen
werkgeversvertegenwoordiger
werkloosheidsreglementering
werknemersvertegenwoordiger
zelfreguleringsinitiatieven
zwangerschapsonderbrekingen
zwangerschapsvergiftigingen
zwemwaterkwaliteitsgegevens

102
dictionary/28.txt Normal file
View File

@@ -0,0 +1,102 @@
aansprakelykheidsbeperkingen
aansprakelykheidsuitsluiting
aansprakelykheidsverzekeraar
aansprakelykheidsverzekering
afdelingsbestuursvergadering
afvalverbrandingsinstallatie
afvalverwerkingsinstallaties
algemeenverbindendverklaring
arbeidsbeschermingswetgeving
arbeidsongeschiktheidsklasse
arbeidsongeschiktheidsrisico
arbeidsongeschiktheidswetten
arbeidsongevallenverzekering
assurantiebemiddelingsbedryf
behandelingsvoorgeschiedenis
belastingaangifteformulieren
bestaanszekerheidsvergoeding
betrouwbaarheidsverklaringen
brandverzekeringsmaatschappy
buitengewonelastenregelingen
communicatieverantwoordelyke
contentmanagementsysteempjes
dienstverleningsovereenkomst
drugsbestrydingsorganisaties
energievoorzieningszekerheid
geheelonthoudersverenigingen
geluidsbelastingsindicatoren
grondwaterbeschermingsgebied
herontwikkelingsmogelykheden
herstructureringsmaatregelen
herverzekeringsmaatschappyen
herverzekeringsondernemingen
hogesnelheidsspoorwegsysteem
informatieverwerkingscentrum
ingebrekestellingsprocedures
instandhoudingswerkzaamheden
intensivecareverpleegkundige
interoperabiliteitsonderdeel
kandidaatsstellingscommissie
kandidaatsstellingsformulier
kandidaatsstellingsprocedure
kandidaatsstellingsreglement
kandidaatstellingscommissies
kandidaatstellingsprocedures
koplampreinigingsinstallatie
kruiskopschroevendraaiertjes
kwaliteitsbeheersingssysteem
kwaliteitsmanagementsystemen
levensverzekeringmaatschappy
levensverzekeringscontracten
leveranciersonafhankelykheid
luchtbehandelingsinstallatie
luchtverkeersleidingseenheid
managementinformatiesystemen
medefinancieringsorganisatie
meerderwaardigheidsgevoelens
nabestaandenpensioenregeling
natuurontwikkelingsprojecten
ondernemerschapsvaardigheden
ondernemingsraadsvergadering
ontwapeningsonderhandelingen
ontwikkelingspartnerschappen
overheidsverantwoordelykheid
personeelsvertegenwoordigers
personeelsvertegenwoordiging
productiviteitsverbeteringen
programmaverantwoordelykheid
rampenbestrydingsorganisatie
regeringsverantwoordelykheid
regeringsvoorlichtingsdienst
rimpelbuisobstakelbeveiliger
ruimtelykeordeningsprocedure
schilderyententoonstellingen
sleufkopschroevendraaiertjes
socialezekerheidsuitkeringen
studiebegeleidingsinstituten
taalontwikkelingsstoornissen
tekstverwerkingsfaciliteiten
telecommunicatiefaciliteiten
telecommunicatiemogelykheden
telecommunicatieorganisaties
tentoonstellingscatalogussen
terugvorderingsbeschikkingen
transmissiesysteembeheerders
uitbreidingsonderhandelingen
verantwoordelykheidsgebieden
verkeersbegeleidingssystemen
verkeersveiligheidsonderzoek
verlichtingsfundamentalisten
voetgangersoversteekplaatsen
voorbehandelingsinstallaties
vruchtbaarheidsbehandelingen
vuilverbrandingsinstallaties
waardeverminderingsverliezen
wapenbeheersingsbesprekingen
wereldgezondheidsorganisatie
werkgelegenheidsbevorderende
werkgelegenheidsontwikkeling
werkgeversvertegenwoordigers
werknemersvertegenwoordigers
werknemersvertegenwoordiging
zeeverzekeringsmaatschappyen

56
dictionary/29.txt Normal file
View File

@@ -0,0 +1,56 @@
aansprakelykheidsverzekeraars
afvalverbrandingsinstallaties
arbeidsongeschiktheidsklassen
arbeidsongeschiktheidsperiode
arbeidsplaatsenovereenkomsten
arrondissementscommissarissen
arrondissementsschoolopziener
autoverzekeringsmaatschappyen
bedryfscontactfunctionarissen
brandveiligheidsvoorschriften
chloorfluorkoolstofverbinding
dierenbeschermingsorganisatie
instandhoudingsdoelstellingen
intensivecareverpleegkundigen
interoperabiliteitsonderdelen
investeringsgoederenindustrie
jeugdhulpverleningsinstelling
kandidaatsstellingscommissies
kandidaatsstellingsprocedures
klanttevredenheidsonderzoeken
landbouwontwikkelingsgebieden
levensverzekeringsmaatschappy
loondoorbetalingsverplichting
luchtbehandelingsinstallaties
luchtverdedigingscapaciteiten
luistervaardigheidstrainingen
medefinancieringsorganisaties
meerderjarigheidsverklaringen
meestbegunstigingsbehandeling
natuurbeschermingsorganisatie
onafhankelykheidsverklaringen
onbewoonbaarheidsverklaringen
onderhandelingsdoelstellingen
onderhoudsbaggerwerkzaamheden
ondernemingsraadvergaderingen
ongediertebestrydingsmiddelen
ontwikkelingspsychopathologie
opvoedingsverantwoordelykheid
overlydensrisicoverzekeringen
professionaliseringstrajecten
rampenbestrydingsorganisaties
rechtshandhavingsautoriteiten
rechtvaardigheidsoverwegingen
rimpelbuisobstakelbeveiligers
ruimtelykeordeningsprocedures
schildklierfunctiestoornissen
socialezekerheidsinstellingen
staatsinvesteringsmaatschappy
telecommunicatievoorzieningen
televisieproductiemaatschappy
vastgoedbeleggingsmaatschappy
verantwoordelykheidsstructuur
verantwoordelykheidsverdeling
verplichtstellingsbeschikking
verwervingsvoorbereidingsfase
waarschynlykheidsberekeningen

1742
dictionary/3.txt Normal file

File diff suppressed because it is too large Load Diff

30
dictionary/30.txt Normal file
View File

@@ -0,0 +1,30 @@
aansprakelykheidsverzekeringen
afdelingsbestuursvergaderingen
arbeidsongeschiktheidspensioen
arbeidsongeschiktheidsperiodes
arbeidsongeschiktheidsregeling
arbeidsvoorwaardenontwikkeling
arbeidsvoorzieningsorganisatie
armoedeprobleemcumulatiegebied
arrondissementsschoolopzieners
asbestverwyderingswerkzaamheid
bandenspanningscontrolesysteem
brandverzekeringsmaatschappyen
centraleverwarmingsinstallatie
corporategovernanceopvattingen
dichloordifenyltrichloorethaan
dierenbeschermingsorganisaties
grondwaterbeschermingsgebieden
huwelyksgoederengemeenschappen
kinderbeschermingsfunctionaris
kredietverzekeringsmaatschappy
leerlingtevredenheidsonderzoek
levensverzekeringmaatschappyen
medezeggenschapsaangelegenheid
natuurbeschermingsorganisaties
ondernemingsraadsvergaderingen
producentenverantwoordelykheid
verantwoordelykheidsstructuren
vertegenwoordigingsbevoegdheid
werkgelegenheidsontwikkelingen
werknemersvertegenwoordigingen

23
dictionary/31.txt Normal file
View File

@@ -0,0 +1,23 @@
afvalwaterzuiveringsinstallatie
arbeidsongeschiktheidscriterium
arbeidsongeschiktheidsuitkering
asbestverwyderingswerkzaamheden
bandenspanningscontrolesystemen
basisherfinancieringstransactie
belangenbehartigingsorganisatie
centraleverwarmingsinstallaties
chloorfluorkoolstofverbindingen
chronischevermoeidheidssyndroom
gegevensbeschermingsvoorschrift
geschillenbeslechtingsprocedure
havenfaciliteitsveiligheidsplan
hogesnelheidsinternetverbinding
hogesnelheidspassagiersvaartuig
jeugdhulpverleningsinstellingen
levensverzekeringsmaatschappyen
onderwysontwikkelingsactiviteit
projectontwikkelingsmaatschappy
rioolwaterzuiveringsinstallatie
rookgasontzwavelingsinstallatie
uitlaatgasnabehandelingssysteem
verantwoordelykheidsverdelingen

15
dictionary/32.txt Normal file
View File

@@ -0,0 +1,15 @@
afvalwaterzuiveringsinstallaties
arbeidsongeschiktheidspensioenen
arbeidsongeschiktheidspercentage
arbeidsongeschiktheidsregelingen
armoedeprobleemcumulatiegebieden
basisherfinancieringstransacties
geneesmiddelenvergoedingssysteem
havenfaciliteitenveiligheidsplan
miniatuurlandbouwwerktuigenbeurs
multipelepersoonlykheidsstoornis
ontwikkelingssamenwerkingsbeleid
pensioenverzekeringsovereenkomst
rioolwaterzuiveringsinstallaties
softwareontwikkelingsgereedschap
studentengezelligheidsvereniging

9
dictionary/33.txt Normal file
View File

@@ -0,0 +1,9 @@
arbeidsongeschiktheidsbeoordeling
arbeidsongeschiktheidspercentages
arbeidsongeschiktheidsuitkeringen
arbeidsongeschiktheidsverzekering
arbeidsongeschiktheidsvoorziening
gegevensbeschermingsvoorschriften
hogesnelheidspassagiersvaartuigen
nabestaandenoverbruggingspensioen
onderwysontwikkelingsactiviteiten

1
dictionary/34.txt Normal file
View File

@@ -0,0 +1 @@
milieuaansprakelykheidsverzekering

5
dictionary/35.txt Normal file
View File

@@ -0,0 +1,5 @@
arbeidsongeschiktheidsverzekeringen
beroepsaansprakelykheidsverzekering
havenfaciliteitenveiligheidsplannen
kleinschaligheidsinvesteringsaftrek
softwareontwikkelingsgereedschappen

2
dictionary/37.txt Normal file
View File

@@ -0,0 +1,2 @@
elektriciteitsdistributienetbeheerder
ontwikkelingssamenwerkingsorganisatie

3
dictionary/38.txt Normal file
View File

@@ -0,0 +1,3 @@
elektriciteitsdistributienetbeheerders
ontwikkelingssamenwerkingsorganisaties
rioolwaterzuiveringsinstallatielocatie

1
dictionary/39.txt Normal file
View File

@@ -0,0 +1 @@
rioolwaterzuiveringsinstallatielocaties

4968
dictionary/4.txt Normal file

File diff suppressed because it is too large Load Diff

2
dictionary/40.txt Normal file
View File

@@ -0,0 +1,2 @@
aansprakelykheidsverzekeringsmaatschappy
producentenaansprakelykheidsverplichting

2
dictionary/42.txt Normal file
View File

@@ -0,0 +1,2 @@
commissarissenaansprakelykheidsverzekering
producentenaansprakelykheidsverplichtingen

1
dictionary/45.txt Normal file
View File

@@ -0,0 +1 @@
arbeidsongeschiktheidsverzekeringsmaatschappy

1
dictionary/47.txt Normal file
View File

@@ -0,0 +1 @@
aansprakelykheidswaardevaststellingsverandering

1
dictionary/49.txt Normal file
View File

@@ -0,0 +1 @@
aansprakelykheidswaardevaststellingsveranderingen

9947
dictionary/5.txt Normal file

File diff suppressed because it is too large Load Diff

17768
dictionary/6.txt Normal file

File diff suppressed because it is too large Load Diff

25857
dictionary/7.txt Normal file

File diff suppressed because it is too large Load Diff

33115
dictionary/8.txt Normal file

File diff suppressed because it is too large Load Diff

40190
dictionary/9.txt Normal file

File diff suppressed because it is too large Load Diff

259
mvnw vendored Executable file
View File

@@ -0,0 +1,259 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.3.2
#
# Optional ENV vars
# -----------------
# JAVA_HOME - location of a JDK home dir, required when download maven via java source
# MVNW_REPOURL - repo url base for downloading maven distribution
# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
# ----------------------------------------------------------------------------
set -euf
[ "${MVNW_VERBOSE-}" != debug ] || set -x
# OS specific support.
native_path() { printf %s\\n "$1"; }
case "$(uname)" in
CYGWIN* | MINGW*)
[ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
native_path() { cygpath --path --windows "$1"; }
;;
esac
# set JAVACMD and JAVACCMD
set_java_home() {
# For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
if [ -n "${JAVA_HOME-}" ]; then
if [ -x "$JAVA_HOME/jre/sh/java" ]; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACCMD="$JAVA_HOME/jre/sh/javac"
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACCMD="$JAVA_HOME/bin/javac"
if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
return 1
fi
fi
else
JAVACMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v java
)" || :
JAVACCMD="$(
'set' +e
'unset' -f command 2>/dev/null
'command' -v javac
)" || :
if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
return 1
fi
fi
}
# hash string like Java String::hashCode
hash_string() {
str="${1:-}" h=0
while [ -n "$str" ]; do
char="${str%"${str#?}"}"
h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
str="${str#?}"
done
printf %x\\n $h
}
verbose() { :; }
[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
die() {
printf %s\\n "$1" >&2
exit 1
}
trim() {
# MWRAPPER-139:
# Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
# Needed for removing poorly interpreted newline sequences when running in more
# exotic environments such as mingw bash on Windows.
printf "%s" "${1}" | tr -d '[:space:]'
}
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
while IFS="=" read -r key value; do
case "${key-}" in
distributionUrl) distributionUrl=$(trim "${value-}") ;;
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
esac
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
case "${distributionUrl##*/}" in
maven-mvnd-*bin.*)
MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
*AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
:Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
:Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
:Linux*x86_64*) distributionPlatform=linux-amd64 ;;
*)
echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
distributionPlatform=linux-amd64
;;
esac
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
;;
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
esac
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
distributionUrlName="${distributionUrl##*/}"
distributionUrlNameMain="${distributionUrlName%.*}"
distributionUrlNameMain="${distributionUrlNameMain%-bin}"
MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
exec_maven() {
unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
}
if [ -d "$MAVEN_HOME" ]; then
verbose "found existing MAVEN_HOME at $MAVEN_HOME"
exec_maven "$@"
fi
case "${distributionUrl-}" in
*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
esac
# prepare tmp dir
if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
trap clean HUP INT TERM EXIT
else
die "cannot create temp dir"
fi
mkdir -p -- "${MAVEN_HOME%/*}"
# Download and Install Apache Maven
verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
verbose "Downloading from: $distributionUrl"
verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
# select .zip or .tar.gz
if ! command -v unzip >/dev/null; then
distributionUrl="${distributionUrl%.zip}.tar.gz"
distributionUrlName="${distributionUrl##*/}"
fi
# verbose opt
__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
# normalize http auth
case "${MVNW_PASSWORD:+has-password}" in
'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
esac
if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
verbose "Found wget ... using wget"
wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
verbose "Found curl ... using curl"
curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
elif set_java_home; then
verbose "Falling back to use Java to download"
javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
cat >"$javaSource" <<-END
public class Downloader extends java.net.Authenticator
{
protected java.net.PasswordAuthentication getPasswordAuthentication()
{
return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
}
public static void main( String[] args ) throws Exception
{
setDefault( new Downloader() );
java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
}
}
END
# For Cygwin/MinGW, switch paths to Windows format before running javac and java
verbose " - Compiling Downloader.java ..."
"$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
verbose " - Running Downloader.java ..."
"$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
fi
# If specified, validate the SHA-256 sum of the Maven distribution zip file
if [ -n "${distributionSha256Sum-}" ]; then
distributionSha256Result=false
if [ "$MVN_CMD" = mvnd.sh ]; then
echo "Checksum validation is not supported for maven-mvnd." >&2
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
elif command -v sha256sum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
elif command -v shasum >/dev/null; then
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
distributionSha256Result=true
fi
else
echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
exit 1
fi
if [ $distributionSha256Result = false ]; then
echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
exit 1
fi
fi
# unzip and move
if command -v unzip >/dev/null; then
unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
else
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
fi
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
clean || :
exec_maven "$@"

149
mvnw.cmd vendored Normal file
View File

@@ -0,0 +1,149 @@
<# : batch portion
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.3.2
@REM
@REM Optional ENV vars
@REM MVNW_REPOURL - repo url base for downloading maven distribution
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
@REM ----------------------------------------------------------------------------
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
@SET __MVNW_CMD__=
@SET __MVNW_ERROR__=
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
@SET PSModulePath=
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
)
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
@SET __MVNW_PSMODULEP_SAVE=
@SET __MVNW_ARG0_NAME__=
@SET MVNW_USERNAME=
@SET MVNW_PASSWORD=
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
@echo Cannot start maven from wrapper >&2 && exit /b 1
@GOTO :EOF
: end batch / begin powershell #>
$ErrorActionPreference = "Stop"
if ($env:MVNW_VERBOSE -eq "true") {
$VerbosePreference = "Continue"
}
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
if (!$distributionUrl) {
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
}
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
"maven-mvnd-*" {
$USE_MVND = $true
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
$MVN_CMD = "mvnd.cmd"
break
}
default {
$USE_MVND = $false
$MVN_CMD = $script -replace '^mvnw','mvn'
break
}
}
# apply MVNW_REPOURL and calculate MAVEN_HOME
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
if ($env:MVNW_REPOURL) {
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
}
$distributionUrlName = $distributionUrl -replace '^.*/',''
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
if ($env:MAVEN_USER_HOME) {
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
}
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
exit $?
}
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
}
# prepare tmp dir
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
trap {
if ($TMP_DOWNLOAD_DIR.Exists) {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
}
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
# Download and Install Apache Maven
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
Write-Verbose "Downloading from: $distributionUrl"
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
$webclient = New-Object System.Net.WebClient
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
# If specified, validate the SHA-256 sum of the Maven distribution zip file
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
if ($distributionSha256Sum) {
if ($USE_MVND) {
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
}
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
}
}
# unzip and move
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
try {
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
} catch {
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
Write-Error "fail to move MAVEN_HOME"
}
} finally {
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
}
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"

26
pom.xml Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>nl.spijkerman.com</groupId>
<artifactId>crossword</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

7
run.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/usr/bin/env sh
set -x
set -e
./mvnw clean package
java -cp target/crossword-1.0-SNAPSHOT.jar com.spijkerman.ivo.crossword.App ./dictionary

View File

@@ -0,0 +1,24 @@
package com.spijkerman.ivo.crossword;
import java.time.Duration;
public class App {
public static void main(String[] args) {
if (args.length == 0) {
throw new IllegalArgumentException("Pass path of dictionary as argument");
}
var dictionary = new Dictionary(args[0]);
var start = System.nanoTime();
for (int l = 2; l < 49; l++) {
for (int i = 0; i < 26; i++) {
char c = (char) (i + 'a');
var pattern = ("_".repeat(l) + c);
System.out.printf("%s: %s%n", pattern, dictionary.findRandomWord(pattern).orElse("-"));
}
}
var end = System.nanoTime();
System.out.println("Took: " + Duration.ofNanos(end - start));
}
}

View File

@@ -0,0 +1,54 @@
package com.spijkerman.ivo.crossword;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
public class Dictionary {
private final ConcurrentHashMap<Integer, WordTree> words;
public Dictionary(String root) {
try {
var words = new ConcurrentHashMap<Integer, WordTree>();
// List all resources in /resrouces/dictionary
Path dictionaryPath = Paths.get(root);
try (var files = Files.walk(dictionaryPath)) {
files.filter(Files::isRegularFile)
.forEach(file -> {
System.out.println("Handling " + file);
var tree = new WordTree();
try (var wordStream = unchecked(() -> Files.lines(file))) {
wordStream.forEach(tree::addWord);
}
tree.trim();
words.put(Integer.parseInt(file.toFile().getName().replace(".txt", "")), tree);
});
}
this.words = words;
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public Optional<String> findRandomWord(String pattern) {
return Optional.ofNullable(words.get(pattern.length()))
.flatMap(wt -> wt.findRandomWord(pattern.toCharArray()));
}
private static <T> T unchecked(Callable<T> callable) {
try {
return callable.call();
} catch (IOException e) {
throw new UncheckedIOException(e);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
}

View File

@@ -0,0 +1,197 @@
package com.spijkerman.ivo.crossword;
import lombok.RequiredArgsConstructor;
import java.util.*;
import java.util.stream.IntStream;
/**
* A class representing a word tree (or prefix tree) where words are added and stored in a trie-like structure.
* The tree supports adding words, finding random words from the tree, and trimming memory usage for child lists.
*
* <p>In this implementation, the tree structure is optimized for fast random lookups and efficient memory usage by:
* <ul>
* <li>Using pre-constructed nodes for internal lookups for each letter (i.e., 'a' to 'z') to avoid the repeated creation of nodes.</li>
* <li>Allowing random selection of child nodes for traversing the tree.</li>
* <li>Optionally trimming the internal lists to release unused memory.</li>
* </ul>
* The primary use case is for applications where random word lookups are frequent, such as autocomplete or word games.
*/
public class WordTree {
private static final Random random = new Random();
private static final Node[] needles = IntStream.rangeClosed('a', 'z').mapToObj(c -> new Node((char) c)).toArray(Node[]::new);
private final Node root = new Node('_');
/**
* Adds a word to the word tree. Each character of the word is added sequentially to the tree.
* If the character already exists in the tree, traversal continues down that branch; if not,
* a new node is created for the character.
*
* <p>This method has a time complexity of O(n log n) for each insertion, where n is the length of the word,
* due to the use of binary search on the `children` list for each node.
*
* @param word the word to be added to the tree
* @throws NullPointerException if the word is null
*/
public void addWord(String word) {
var chars = word.toCharArray();
var curr = root;
for (char c : chars) {
if (curr.children == null) {
curr.children = new ArrayList<>(26);
}
var needle = needles[c - 'a'];
var ix = Collections.binarySearch(curr.children, needle);
if (ix >= 0) {
curr = curr.children.get(ix);
} else {
ix = -(ix + 1);
var next = new Node(c);
curr.children.add(ix, next);
curr = next;
}
curr.count++;
}
}
/**
* Trims the memory usage of the tree by reducing the capacity of all child lists to the current size.
* This operation is performed recursively for all nodes in the tree.
*
* <p>The `trim()` method reduces the capacity of the `children` list for each node to the size of the list.
* This can help reclaim memory used by unused space in the list, especially if many insertions and deletions
* have occurred.
*
* <p>Note: This operation can have some performance overhead, as `trimToSize()` will be called on all
* child lists recursively. It is most useful to call this method once after the tree has been fully populated,
* rather than during every insertion.
*/
public void trim() {
root.children.trimToSize();
root.children.parallelStream().forEach(this::trim);
}
private void trim(Node node) {
if (node.children == null) {
return;
}
node.children.trimToSize();
node.children.forEach(this::trim);
}
/**
* @see #findRandomWord(char[])
*/
public Optional<String> findRandomWord(String pattern) {
return findRandomWord(pattern.toCharArray());
}
/**
* Finds a random word in the tree by traversing down random child nodes while matching a given pattern.
* This method chooses a random child node at each level until it reaches a leaf node or exhausts the pattern,
* constructing a word from the traversed characters. The pattern may contain specific characters or wildcards ('_').
* For wildcards, a random child node is chosen at that level to continue the search.
*
* <p>This method is designed to quickly generate a random word that matches the provided pattern from the tree.
* The random selection of children is uniform across all available children at each level. If a specific character
* is present in the pattern, the method will use binary search to find the corresponding child node.
* If the pattern contains a wildcard ('_'), a random child node is selected at that level.
*
* <p>The method will recursively search the tree for a valid word that matches the entire pattern. If no valid
* match is found, it returns an empty {@link Optional}.
*
* @param pattern The pattern to match, which can contain specific characters or wildcards ('_').
* A wildcard will match any child node at that position.
* @return an {@link Optional} containing a randomly generated word from the tree that matches the pattern,
* or an empty {@link Optional} if no valid match is found.
* @throws NoSuchElementException if the tree is empty (i.e., contains no words).
*/
public Optional<String> findRandomWord(char[] pattern) {
if (root.children == null) {
throw new IllegalStateException("No words added");
}
return findRandomWord(root, pattern, 0, new StringBuilder(pattern.length));
}
private Optional<String> findRandomWord(Node node, char[] pattern, int index, StringBuilder result) {
if (index == pattern.length) {
// Base Case
return Optional.of(result.toString());
}
var character = pattern[index];
return character == '_'
? handleWildCard(node, pattern, index, result)
: handleCharacter(character, node, pattern, index, result);
}
private Optional<String> handleWildCard(Node node, char[] pattern, int index, StringBuilder result) {
var size = node.children.size();
var offset = random.nextInt(size);
for (var i = 0; i < size; i++) {
var ix = (i + offset) % size;
var child = node.children.get(ix);
var match = findRandomWord(child, pattern, index + 1, result.append(child.character));
if (match.isPresent()) {
return match;
}
result.deleteCharAt(result.length() - 1);
}
return Optional.empty();
}
private Optional<String> handleCharacter(char character, Node node, char[] pattern, int index, StringBuilder result) {
var ix = Collections.binarySearch(node.children, needles[character - 'a']);
return ix < 0
? Optional.empty()
: findRandomWord(node.children.get(ix), pattern, index + 1, result.append(character));
}
/**
* A private inner class representing a node in the tree. Each node holds a character and a list of child nodes.
* A node will only contain a non-null `children` list if there are further nodes branching from it.
*/
@RequiredArgsConstructor
private static class Node implements Comparable<Node> {
final char character;
ArrayList<Node> children;
int count = 0;
@Override
public int compareTo(Node node) {
return this.character - node.character;
}
@Override
public String toString() {
var childrenStr = children == null ? "" : children.toString().replace(" ", "");
return "%s:%d%s".formatted(character, count, childrenStr);
}
}
@Override
public String toString() {
var whole = root.toString();
return whole.substring(whole.indexOf('['));
}
public static void main(String[] args) {
final var tree = new WordTree();
tree.addWord("henk");
tree.addWord("piet");
tree.addWord("pint");
tree.addWord("pies");
tree.addWord("hema");
tree.trim();
System.out.println(tree);
System.out.println(tree.findRandomWord("____".toCharArray()));
System.out.println(tree.findRandomWord("h___".toCharArray()));
System.out.println(tree.findRandomWord("h__a".toCharArray()));
System.out.println(tree.findRandomWord("p___".toCharArray()));
System.out.println(tree.findRandomWord("x___".toCharArray()));
}
}