Grammalecte  Check-in [c784e6eb04]

Overview
Comment:[core][build][fr] merge rg: GC ENGINE REWRITTEN (tokenization and rules merged as graphs)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | core | build | new_feature | major_change
Files: files | file ages | folders
SHA3-256: c784e6eb04b3c1ce0c921dff4bb7ed16342b98c00d3327b7982b81f2eec7c183
User & Date: olr on 2018-09-19 18:36:33
Other Links: manifest | tags
Context
2018-09-19
18:42
[server] useless imports check-in: 7181f546b3 user: olr tags: trunk, server
18:36
[core][build][fr] merge rg: GC ENGINE REWRITTEN (tokenization and rules merged as graphs) check-in: c784e6eb04 user: olr tags: trunk, fr, core, build, new_feature, major_change
16:04
[fr][bug] lexicographe: détection de la fin d’un lemme Closed-Leaf check-in: e9f97a8a3d user: olr tags: fr, rg
2018-08-20
09:48
[fr] màj du dictionnaire Hunspell check-in: 9247b2625d user: olr tags: trunk, fr
Changes

Modified compile_rules.py from [e584887b25] to [1079fd02f6].




1
2
3
4
5
6

7
8
9
10
11
12
13
14
15
16
17
18
19
20













21

22
23
24
25
26
27
28
29
30
31
32
33


34
35

36
37
38
39
40
41
42
43







44
45
46
47
48
49
50




51
52
53
54
55
56
57
58
59
60
61
62
63
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49


50
51
52

53
54







55
56
57
58
59
60
61







62
63
64
65






66
67
68
69
70
71
72
+
+
+






+














+
+
+
+
+
+
+
+
+
+
+
+
+

+










-
-
+
+

-
+

-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-







"""
Grammalecte: compile rules
"""

import re
import traceback
import json

import compile_rules_js_convert as jsconv
import compile_rules_graph as crg


dDEF = {}
lFUNCTIONS = []

aRULESET = set()     # set of rule-ids to check if there is several rules with the same id
nRULEWITHOUTNAME = 0

dJSREGEXES = {}

sWORDLIMITLEFT  = r"(?<![\w.,–-])"   # r"(?<![-.,—])\b"  seems slower
sWORDLIMITRIGHT = r"(?![\w–-])"      # r"\b(?!-—)"       seems slower


def _rgb (r, g, b):
    return (r & 255) << 16 | (g & 255) << 8 | (b & 255)


def getRGB (sHex):
    if sHex:
        r = int(sHex[:2], 16)
        g = int(sHex[2:4], 16)
        b = int(sHex[4:], 16)
        return _rgb(r, g, b)
    return _rgb(0, 0, 0)


def prepareFunction (s):
    "convert simple rule syntax to a string of Python code"
    s = s.replace("__also__", "bCondMemo")
    s = s.replace("__else__", "not bCondMemo")
    s = re.sub(r"isStart *\(\)", 'before("^ *$|, *$")', s)
    s = re.sub(r"isRealStart *\(\)", 'before("^ *$")', s)
    s = re.sub(r"isStart0 *\(\)", 'before0("^ *$|, *$")', s)
    s = re.sub(r"isRealStart0 *\(\)", 'before0("^ *$")', s)
    s = re.sub(r"isEnd *\(\)", 'after("^ *$|^,")', s)
    s = re.sub(r"isRealEnd *\(\)", 'after("^ *$")', s)
    s = re.sub(r"isEnd0 *\(\)", 'after0("^ *$|^,")', s)
    s = re.sub(r"isRealEnd0 *\(\)", 'after0("^ *$")', s)
    s = re.sub(r"(select|exclude)[(][\\](\d+)", '\\1(dDA, m.start(\\2), m.group(\\2)', s)
    s = re.sub(r"define[(][\\](\d+)", 'define(dDA, m.start(\\1)', s)
    s = re.sub(r"(select|exclude)[(][\\](\d+)", '\\1(dTokenPos, m.start(\\2), m.group(\\2)', s)
    s = re.sub(r"define[(][\\](\d+)", 'define(dTokenPos, m.start(\\1)', s)
    s = re.sub(r"(morph|morphex|displayInfo)[(][\\](\d+)", '\\1((m.start(\\2), m.group(\\2))', s)
    s = re.sub(r"(morph|morphex|displayInfo)[(]", '\\1(dDA, ', s)
    s = re.sub(r"(morph|morphex|displayInfo)[(]", '\\1(dTokenPos, ', s)
    s = re.sub(r"(sugg\w+|switch\w+)\(@", '\\1(m.group(i[4])', s)
    s = re.sub(r"word\(\s*1\b", 'nextword1(s, m.end()', s)                                  # word(1)
    s = re.sub(r"word\(\s*-1\b", 'prevword1(s, m.start()', s)                               # word(-1)
    s = re.sub(r"word\(\s*(\d)", 'nextword(s, m.end(), \\1', s)                             # word(n)
    s = re.sub(r"word\(\s*-(\d)", 'prevword(s, m.start(), \\1', s)                          # word(-n)
    s = re.sub(r"before\(\s*", 'look(s[:m.start()], ', s)                                   # before(s)
    s = re.sub(r"after\(\s*", 'look(s[m.end():], ', s)                                      # after(s)
    s = re.sub(r"textarea\(\s*", 'look(s, ', s)                                             # textarea(s)
    s = re.sub(r"word\(\s*1\b", 'nextword1(sSentence, m.end()', s)                                  # word(1)
    s = re.sub(r"word\(\s*-1\b", 'prevword1(sSentence, m.start()', s)                               # word(-1)
    s = re.sub(r"word\(\s*(\d)", 'nextword(sSentence, m.end(), \\1', s)                             # word(n)
    s = re.sub(r"word\(\s*-(\d)", 'prevword(sSentence, m.start(), \\1', s)                          # word(-n)
    s = re.sub(r"before\(\s*", 'look(sSentence[:m.start()], ', s)                                   # before(sSentence)
    s = re.sub(r"after\(\s*", 'look(sSentence[m.end():], ', s)                                      # after(sSentence)
    s = re.sub(r"textarea\(\s*", 'look(sSentence, ', s)                                             # textarea(sSentence)
    s = re.sub(r"before_chk1\(\s*", 'look_chk1(dDA, s[:m.start()], 0, ', s)                 # before_chk1(s)
    s = re.sub(r"after_chk1\(\s*", 'look_chk1(dDA, s[m.end():], m.end(), ', s)              # after_chk1(s)
    s = re.sub(r"textarea_chk1\(\s*", 'look_chk1(dDA, s, 0, ', s)                           # textarea_chk1(s)
    s = re.sub(r"/0", 'sx[m.start():m.end()]', s)                                           # /0
    s = re.sub(r"before0\(\s*", 'look(sx[:m.start()], ', s)                                 # before0(s)
    s = re.sub(r"after0\(\s*", 'look(sx[m.end():], ', s)                                    # after0(s)
    s = re.sub(r"textarea0\(\s*", 'look(sx, ', s)                                           # textarea0(s)
    s = re.sub(r"/0", 'sSentence0[m.start():m.end()]', s)                                           # /0
    s = re.sub(r"before0\(\s*", 'look(sSentence0[:m.start()], ', s)                                 # before0(sSentence)
    s = re.sub(r"after0\(\s*", 'look(sSentence0[m.end():], ', s)                                    # after0(sSentence)
    s = re.sub(r"textarea0\(\s*", 'look(sSentence0, ', s)                                           # textarea0(sSentence)
    s = re.sub(r"before0_chk1\(\s*", 'look_chk1(dDA, sx[:m.start()], 0, ', s)               # before0_chk1(s)
    s = re.sub(r"after0_chk1\(\s*", 'look_chk1(dDA, sx[m.end():], m.end(), ', s)            # after0_chk1(s)
    s = re.sub(r"textarea0_chk1\(\s*", 'look_chk1(dDA, sx, 0, ', s)                         # textarea0_chk1(s)
    s = re.sub(r"isEndOfNG\(\s*\)", 'isEndOfNG(dDA, s[m.end():], m.end())', s)              # isEndOfNG(s)
    s = re.sub(r"isNextNotCOD\(\s*\)", 'isNextNotCOD(dDA, s[m.end():], m.end())', s)        # isNextNotCOD(s)
    s = re.sub(r"isNextVerb\(\s*\)", 'isNextVerb(dDA, s[m.end():], m.end())', s)            # isNextVerb(s)
    s = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', s)
    s = re.sub(r"[\\](\d+)", 'm.group(\\1)', s)
    return s


def uppercase (s, sLang):
    "(flag i is not enough): converts regex to uppercase regex: 'foo' becomes '[Ff][Oo][Oo]', but 'Bar' becomes 'B[Aa][Rr]'."
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117









118
119
120
121
122
123
124

125
126
127
128
129
130
131
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

142
143
144
145
146
147
148
149







+













-


+
+
+
+
+
+
+
+
+






-
+







            nState = 4
        elif nState == 4:
            nState = 0
    return sUp


def countGroupInRegex (sRegex):
    "returns the number of groups in <sRegex>"
    try:
        return re.compile(sRegex).groups
    except:
        traceback.print_exc()
        print(sRegex)
    return 0


def createRule (s, nIdLine, sLang, bParagraph, dOptPriority):
    "returns rule as list [option name, regex, bCaseInsensitive, identifier, list of actions]"
    global dJSREGEXES
    global nRULEWITHOUTNAME

    #### OPTIONS
    sLineId = str(nIdLine) + ("p" if bParagraph else "s")
    sRuleId = sLineId

    #### GRAPH CALL
    if s.startswith("@@@@"):
        if bParagraph:
            print("Error. Graph call can be made only after the first pass (sentence by sentence)")
            exit()
        return ["@@@@", s[4:], sLineId]

    #### OPTIONS
    sOption = False         # False or [a-z0-9]+ name
    nPriority = 4           # Default is 4, value must be between 0 and 9
    tGroups = None          # code for groups positioning (only useful for JavaScript)
    cCaseMode = 'i'         # i: case insensitive,  s: case sensitive,  u: uppercasing allowed
    cWordLimitLeft = '['    # [: word limit, <: no specific limit
    cWordLimitRight = ']'   # ]: word limit, >: no specific limit
    m = re.match("^__(?P<borders_and_case>[[<]\\w[]>])(?P<option>/[a-zA-Z0-9]+|)(?P<ruleid>\\(\\w+\\)|)(?P<priority>![0-9]|)__ *", s)
    m = re.match("^__(?P<borders_and_case>[\\[<]\\w[\\]>])(?P<option>/[a-zA-Z0-9]+|)(?P<ruleid>\\(\\w+\\)|)(?P<priority>![0-9]|)__ *", s)
    if m:
        cWordLimitLeft = m.group('borders_and_case')[0]
        cCaseMode = m.group('borders_and_case')[1]
        cWordLimitRight = m.group('borders_and_case')[2]
        sOption = m.group('option')[1:]  if m.group('option')  else False
        if m.group('ruleid'):
            sRuleId =  m.group('ruleid')[1:-1]
200
201
202
203
204
205
206
207

208
209
210
211
212
213
214

215
216
217
218
219
220
221
222
223
224
225
226
227
228
229















230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245


246
247
248
249
250

251
252
253
254
255
256
257
218
219
220
221
222
223
224

225
226
227
228
229
230
231

232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265


266
267
268
269
270
271
272
273
274


275
276


277
278

279
280
281
282
283
284
285
286







-
+






-
+















+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
-









-
-
+
+
-
-


-
+







        sRegex = sRegex.replace("(?i)", "")
        sRegex = uppercase(sRegex, sLang)
    else:
        print("# Unknown case mode [" + cCaseMode + "] at line " + sLineId)

    ## check regex
    try:
        z = re.compile(sRegex)
        re.compile(sRegex)
    except:
        print("# Regex error at line ", nIdLine)
        print(sRegex)
        traceback.print_exc()
        return None
    ## groups in non grouping parenthesis
    for x in re.finditer("\(\?:[^)]*\([[\w -]", sRegex):
    for x in re.finditer(r"\(\?:[^)]*\([\[\w -]", sRegex):
        print("# Warning: groups inside non grouping parenthesis in regex at line " + sLineId)

    #### PARSE ACTIONS
    lActions = []
    nAction = 1
    for sAction in s.split(" <<- "):
        t = createAction(sRuleId + "_" + str(nAction), sAction, nGroup)
        nAction += 1
        if t:
            lActions.append(t)
    if not lActions:
        return None

    return [sOption, sRegex, bCaseInsensitive, sLineId, sRuleId, nPriority, lActions, tGroups]


def checkReferenceNumbers (sText, sActionId, nToken):
    "check if token references in <sText> greater than <nToken> (debugging)"
    for x in re.finditer(r"\\(\d+)", sText):
        if int(x.group(1)) > nToken:
            print("# Error in token index at line " + sActionId + " ("+str(nToken)+" tokens only)")
            print(sText)


def checkIfThereIsCode (sText, sActionId):
    "check if there is code in <sText> (debugging)"
    if re.search("[.]\\w+[(]|sugg\\w+[(]|\\([0-9]|\\[[0-9]", sText):
        print("# Warning at line " + sActionId + ":  This message looks like code. Line should probably begin with =")
        print(sText)


def createAction (sIdAction, sAction, nGroup):
    "returns an action to perform as a tuple (condition, action type, action[, iGroup [, message, URL ]])"
    global lFUNCTIONS

    m = re.search(r"([-~=>])(\d*|)>>", sAction)
    if not m:
        print("# No action at line " + sIdAction)
        return None

    #### CONDITION
    sCondition = sAction[:m.start()].strip()
    if sCondition:
        sCondition = prepareFunction(sCondition)
        lFUNCTIONS.append(("c_"+sIdAction, sCondition))
        for x in re.finditer("[.](?:group|start|end)[(](\d+)[)]", sCondition):
        lFUNCTIONS.append(("_c_"+sIdAction, sCondition))
        checkReferenceNumbers(sCondition, sIdAction, nGroup)
            if int(x.group(1)) > nGroup:
                print("# Error in groups in condition at line " + sIdAction + " ("+str(nGroup)+" groups only)")
        if ".match" in sCondition:
            print("# Error. JS compatibility. Don't use .match() in condition, use .search()")
        sCondition = "c_"+sIdAction
        sCondition = "_c_"+sIdAction
    else:
        sCondition = None

    #### iGroup / positioning
    iGroup = int(m.group(2)) if m.group(2) else 0
    if iGroup > nGroup:
        print("# Selected group > group number in regex at line " + sIdAction)
270
271
272
273
274
275
276

277
278
279

280
281
282
283

284
285
286
287

288
289
290

291
292
293
294
295
296
297
298
299
300
301
302
303
304









305
306
307
308
309
310
311
312


313
314
315
316
317
318
319
320
321
322
323
324


325
326
327
328
329
330
331
332
333
334
335





336
337
338
339
340
341
342
343
344
345

346
347

348
349


350
351
352
353

354
355
356
357
358
359
360
299
300
301
302
303
304
305
306
307
308

309




310
311



312


313
314
315


316
317



318





319
320
321
322
323
324
325
326
327
328
329
330


331


332
333
334
335
336
337
338
339
340


341


342
343
344
345
346
347
348
349
350




351
352
353
354
355
356



357
358
359
360
361
362
363
364
365
366


367
368
369
370
371
372
373
374
375
376
377
378
379
380







+


-
+
-
-
-
-
+

-
-
-
+
-
-

+

-
-


-
-
-

-
-
-
-
-
+
+
+
+
+
+
+
+
+



-
-

-
-
+
+







-
-

-
-
+
+







-
-
-
-
+
+
+
+
+

-
-
-






+


+
-
-
+
+




+







            sMsg = sAction[iMsg+3:].strip()
            sAction = sAction[:iMsg].strip()
            sURL = ""
            mURL = re.search("[|] *(https?://.*)", sMsg)
            if mURL:
                sURL = mURL.group(1).strip()
                sMsg = sMsg[:mURL.start(0)].strip()
            checkReferenceNumbers(sMsg, sIdAction, nGroup)
            if sMsg[0:1] == "=":
                sMsg = prepareFunction(sMsg[1:])
                lFUNCTIONS.append(("m_"+sIdAction, sMsg))
                lFUNCTIONS.append(("_m_"+sIdAction, sMsg))
                for x in re.finditer("group[(](\d+)[)]", sMsg):
                    if int(x.group(1)) > nGroup:
                        print("# Error in groups in message at line " + sIdAction + " ("+str(nGroup)+" groups only)")
                sMsg = "=m_"+sIdAction
                sMsg = "=_m_"+sIdAction
            else:
                for x in re.finditer(r"\\(\d+)", sMsg):
                    if int(x.group(1)) > nGroup:
                        print("# Error in groups in message at line " + sIdAction + " ("+str(nGroup)+" groups only)")
                checkIfThereIsCode(sMsg, sIdAction)
                if re.search("[.]\\w+[(]", sMsg):
                    print("# Error in message at line " + sIdAction + ":  This message looks like code. Line should begin with =")

    checkReferenceNumbers(sAction, sIdAction, nGroup)
    if sAction[0:1] == "=" or cAction == "=":
        if "define" in sAction and not re.search(r"define\(\\\d+ *, *\[.*\] *\)", sAction):
            print("# Error in action at line " + sIdAction + ": second argument for define must be a list of strings")
        sAction = prepareFunction(sAction)
        sAction = sAction.replace("m.group(i[4])", "m.group("+str(iGroup)+")")
        for x in re.finditer("group[(](\d+)[)]", sAction):
            if int(x.group(1)) > nGroup:
                print("# Error in groups in replacement at line " + sIdAction + " ("+str(nGroup)+" groups only)")
    else:
        for x in re.finditer(r"\\(\d+)", sAction):
            if int(x.group(1)) > nGroup:
                print("# Error in groups in replacement at line " + sIdAction + " ("+str(nGroup)+" groups only)")
        if re.search("[.]\\w+[(]|sugg\\w+[(]", sAction):
            print("# Error in action at line " + sIdAction + ":  This action looks like code. Line should begin with =")
        checkIfThereIsCode(sAction, sIdAction)

    if cAction == ">":
        ## no action, break loop if condition is False
        return [sCondition, cAction, ""]

    if not sAction:
        print("# Error in action at line " + sIdAction + ":  This action is empty.")
        return None

    if cAction == "-":
        ## error detected --> suggestion
        if not sAction:
            print("# Error in action at line " + sIdAction + ":  This action is empty.")
        if sAction[0:1] == "=":
            lFUNCTIONS.append(("s_"+sIdAction, sAction[1:]))
            sAction = "=s_"+sIdAction
            lFUNCTIONS.append(("_s_"+sIdAction, sAction[1:]))
            sAction = "=_s_"+sIdAction
        elif sAction.startswith('"') and sAction.endswith('"'):
            sAction = sAction[1:-1]
        if not sMsg:
            print("# Error in action at line " + sIdAction + ":  the message is empty.")
        return [sCondition, cAction, sAction, iGroup, sMsg, sURL]
    elif cAction == "~":
        ## text processor
        if not sAction:
            print("# Error in action at line " + sIdAction + ":  This action is empty.")
        if sAction[0:1] == "=":
            lFUNCTIONS.append(("p_"+sIdAction, sAction[1:]))
            sAction = "=p_"+sIdAction
            lFUNCTIONS.append(("_p_"+sIdAction, sAction[1:]))
            sAction = "=_p_"+sIdAction
        elif sAction.startswith('"') and sAction.endswith('"'):
            sAction = sAction[1:-1]
        return [sCondition, cAction, sAction, iGroup]
    elif cAction == "=":
        ## disambiguator
        if sAction[0:1] == "=":
            sAction = sAction[1:]
        if not sAction:
            print("# Error in action at line " + sIdAction + ":  This action is empty.")
        lFUNCTIONS.append(("d_"+sIdAction, sAction))
        sAction = "d_"+sIdAction
        if "define" in sAction and not re.search(r"define\(dTokenPos, *m\.start.*, \[.*\] *\)", sAction):
            print("# Error in action at line " + sIdAction + ": second argument for define must be a list of strings")
            print(sAction)
        lFUNCTIONS.append(("_d_"+sIdAction, sAction))
        sAction = "_d_"+sIdAction
        return [sCondition, cAction, sAction]
    elif cAction == ">":
        ## no action, break loop if condition is False
        return [sCondition, cAction, ""]
    else:
        print("# Unknown action at line " + sIdAction)
        return None


def _calcRulesStats (lRules):
    "count rules and actions"
    d = {'=':0, '~': 0, '-': 0, '>': 0}
    for aRule in lRules:
        if aRule[0] != "@@@@":
        for aAction in aRule[6]:
            d[aAction[1]] = d[aAction[1]] + 1
            for aAction in aRule[6]:
                d[aAction[1]] = d[aAction[1]] + 1
    return (d, len(lRules))


def displayStats (lParagraphRules, lSentenceRules):
    "display rules numbers"
    print("  {:>18} {:>18} {:>18} {:>18}".format("DISAMBIGUATOR", "TEXT PROCESSOR", "GRAMMAR CHECKING", "REGEX"))
    d, nRule = _calcRulesStats(lParagraphRules)
    print("§ {:>10} actions {:>10} actions {:>10} actions  in {:>8} rules".format(d['='], d['~'], d['-'], nRule))
    d, nRule = _calcRulesStats(lSentenceRules)
    print("s {:>10} actions {:>10} actions {:>10} actions  in {:>8} rules".format(d['='], d['~'], d['-'], nRule))


389
390
391
392
393
394
395
396

397
398
399
400
401
402
403
409
410
411
412
413
414
415

416
417
418
419
420
421
422
423







-
+







            m = re.match("OPTGROUP/([a-z0-9]+):(.+)$", sLine)
            lStructOpt.append( (m.group(1), list(map(str.split, m.group(2).split(",")))) )
        elif sLine.startswith("OPTSOFTWARE:"):
            lOpt = [ [s, {}]  for s in sLine[12:].strip().split() ]  # don’t use tuples (s, {}), because unknown to JS
        elif sLine.startswith("OPT/"):
            m = re.match("OPT/([a-z0-9]+):(.+)$", sLine)
            for i, sOpt in enumerate(m.group(2).split()):
                lOpt[i][1][m.group(1)] =  eval(sOpt)
                lOpt[i][1][m.group(1)] = eval(sOpt)
        elif sLine.startswith("OPTPRIORITY/"):
            m = re.match("OPTPRIORITY/([a-z0-9]+): *([0-9])$", sLine)
            dOptPriority[m.group(1)] = int(m.group(2))
        elif sLine.startswith("OPTLANG/"):
            m = re.match("OPTLANG/([a-z][a-z](?:_[A-Z][A-Z]|)):(.+)$", sLine)
            sLang = m.group(1)[:2]
            dOptLabel[sLang] = { "__optiontitle__": m.group(2).strip() }
413
414
415
416
417
418
419

420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442


443
444
445

446
447
448

449
450

451
452

453
454
455
456
457
458
459
460
461
462

463
464

465
466

467
468
469
470
471


472
473
474






















475

476

477

478
479
480
481
482
483
484
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456


457
458
459


460
461
462
463
464
465
466
467
468
469
470

471


472



473
474
475
476
477
478
479
480
481
482
483
484
485
486
487


488

489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517

518
519
520
521
522
523
524
525
526
527







+
















-
-



-
-
+
+



+



+

-
+
-
-
+
-
-
-







+


+


+

-
-

-
+
+



+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
-
+

+







    print("  options defined for: " + ", ".join([ t[0] for t in lOpt ]))
    dOptions = { "lStructOpt": lStructOpt, "dOptLabel": dOptLabel, "sDefaultUILang": sDefaultUILang }
    dOptions.update({ "dOpt"+k: v  for k, v in lOpt })
    return dOptions, dOptPriority


def printBookmark (nLevel, sComment, nLine):
    "print bookmark within the rules file"
    print("  {:>6}:  {}".format(nLine, "  " * nLevel + sComment))


def make (spLang, sLang, bJavaScript):
    "compile rules, returns a dictionary of values"
    # for clarity purpose, don’t create any file here

    print("> read rules file...")
    try:
        lRules = open(spLang + "/rules.grx", 'r', encoding="utf-8").readlines()
    except:
        print("Error. Rules file in project [" + sLang + "] not found.")
        exit()

    # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines
    print("  parsing rules...")
    global dDEF
    lLine = []
    lRuleLine = []
    lTest = []
    lOpt = []
    zBookmark = re.compile("^!!+")
    zGraphLink = re.compile(r"^@@@@GRAPHLINK>(\w+)@@@@")
    bGraph = False
    lGraphRule = []

    for i, sLine in enumerate(lRules, 1):
        if sLine.startswith('#END'):
            # arbitrary end
            printBookmark(0, "BREAK BY #END", i)
            break
        elif sLine.startswith("#"):
            # comment
            pass
        elif sLine.startswith("@@@@"):
        elif sLine.startswith("DEF:"):
            m = re.match(r"^@@@@GRAPHLINK>(\w+)@@@@", sLine.strip())
            if m:
            # definition
                #lRuleLine.append(["@GRAPHLINK", m.group(1)])
                printBookmark(1, "@GRAPHLINK: " + m.group(1), i)
        elif sLine.startswith("DEF:"):
            m = re.match("DEF: +([a-zA-Z_][a-zA-Z_0-9]*) +(.+)$", sLine.strip())
            if m:
                dDEF["{"+m.group(1)+"}"] = m.group(2)
            else:
                print("Error in definition: ", end="")
                print(sLine.strip())
        elif sLine.startswith("TEST:"):
            # test
            lTest.append("{:<8}".format(i) + "  " + sLine[5:].strip())
        elif sLine.startswith("TODO:"):
            # todo
            pass
        elif sLine.startswith(("OPTGROUP/", "OPTSOFTWARE:", "OPT/", "OPTLANG/", "OPTDEFAULTUILANG:", "OPTLABEL/", "OPTPRIORITY/")):
            # options
            lOpt.append(sLine)
        elif re.match("[  \t]*$", sLine):
            pass
        elif sLine.startswith("!!"):
            m = zBookmark.search(sLine)
            # bookmark
            m = re.match("!!+", sLine)
            nExMk = len(m.group(0))
            if sLine[nExMk:].strip():
                printBookmark(nExMk-2, sLine[nExMk:-3].strip(), i)
        # Graph rules
        elif sLine.startswith("@@@@GRAPH:"):
            # rules graph call
            m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip())
            if m:
                printBookmark(0, "GRAPH: " + m.group(1), i)
                lRuleLine.append([i, "@@@@"+m.group(1)])
                bGraph = True
            lGraphRule.append([i, sLine])
            bGraph = True
        elif sLine.startswith("@@@@END_GRAPH"):
            #lGraphRule.append([i, sLine])
            printBookmark(0, "ENDGRAPH", i)
            bGraph = False
        elif re.match("@@@@ *$", sLine):
            pass
        elif bGraph:
            lGraphRule.append([i, sLine])
        # Regex rules
        elif re.match("[  \t]*$", sLine):
            # empty line
            pass
        elif sLine.startswith(("    ", "\t")):
            # rule (continuation)
            lRuleLine[len(lRuleLine)-1][1] += " " + sLine.strip()
            lRuleLine[-1][1] += " " + sLine.strip()
        else:
            # new rule
            lRuleLine.append([i, sLine.strip()])

    # generating options files
    print("  parsing options...")
    try:
        dOptions, dOptPriority = prepareOptions(lOpt)
    except:
509
510
511
512
513
514
515
516
517
518



519
520
521
522
523
524
525
526
527
528
529
530










531
532
533

534
535

536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553









554




555

552
553
554
555
556
557
558



559
560
561
562











563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582

583
584
585
586
587









588
589
590
591
592
593
594
595
596
597
598
599
600
601

602







-
-
-
+
+
+

-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+



+


+



-





-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+

+
+
+
+
-
+
                        lParagraphRules.append(aRule)
                        lParagraphRulesJS.append(jsconv.pyRuleToJS(aRule, dJSREGEXES, sWORDLIMITLEFT))
                    else:
                        lSentenceRules.append(aRule)
                        lSentenceRulesJS.append(jsconv.pyRuleToJS(aRule, dJSREGEXES, sWORDLIMITLEFT))

    # creating file with all functions callable by rules
    print("  creating callables...")
    sPyCallables = "# generated code, do not edit\n"
    sJSCallables = "// generated code, do not edit\nconst oEvalFunc = {\n"
    print("  creating callables for regex rules...")
    sPyCallables = ""
    sJSCallables = ""
    for sFuncName, sReturn in lFUNCTIONS:
        cType = sFuncName[0:1]
        if cType == "c": # condition
            sParams = "s, sx, m, dDA, sCountry, bCondMemo"
        elif cType == "m": # message
            sParams = "s, m"
        elif cType == "s": # suggestion
            sParams = "s, m"
        elif cType == "p": # preprocessor
            sParams = "s, m"
        elif cType == "d": # disambiguator
            sParams = "s, m, dDA"
        if sFuncName.startswith("_c_"): # condition
            sParams = "sSentence, sSentence0, m, dTokenPos, sCountry, bCondMemo"
        elif sFuncName.startswith("_m_"): # message
            sParams = "sSentence, m"
        elif sFuncName.startswith("_s_"): # suggestion
            sParams = "sSentence, m"
        elif sFuncName.startswith("_p_"): # preprocessor
            sParams = "sSentence, m"
        elif sFuncName.startswith("_d_"): # disambiguator
            sParams = "sSentence, m, dTokenPos"
        else:
            print("# Unknown function type in [" + sFuncName + "]")
            continue
        # Python
        sPyCallables += "def {} ({}):\n".format(sFuncName, sParams)
        sPyCallables += "    return " + sReturn + "\n"
        # JavaScript
        sJSCallables += "    {}: function ({})".format(sFuncName, sParams) + " {\n"
        sJSCallables += "        return " + jsconv.py2js(sReturn) + ";\n"
        sJSCallables += "    },\n"
    sJSCallables += "}\n"

    displayStats(lParagraphRules, lSentenceRules)

    print("Unnamed rules: " + str(nRULEWITHOUTNAME))

    d = { "callables": sPyCallables,
          "callablesJS": sJSCallables,
          "gctests": sGCTests,
          "gctestsJS": sGCTestsJS,
          "paragraph_rules": mergeRulesByOption(lParagraphRules),
          "sentence_rules": mergeRulesByOption(lSentenceRules),
          "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)),
          "sentence_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lSentenceRulesJS)) }
    d.update(dOptions)
    dVars = {   "callables": sPyCallables,
                "callablesJS": sJSCallables,
                "gctests": sGCTests,
                "gctestsJS": sGCTestsJS,
                "paragraph_rules": mergeRulesByOption(lParagraphRules),
                "sentence_rules": mergeRulesByOption(lSentenceRules),
                "paragraph_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lParagraphRulesJS)),
                "sentence_rules_JS": jsconv.writeRulesToJSArray(mergeRulesByOption(lSentenceRulesJS)) }
    dVars.update(dOptions)

    # compile graph rules
    dVars2 = crg.make(lGraphRule, dDEF, sLang, dOptPriority, bJavaScript)
    dVars.update(dVars2)

    return d
    return dVars

Added compile_rules_graph.py version [f9b11563d7].














































































































































































































































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
"""
Grammalecte: compile rules
Create a Direct Acyclic Rule Graphs (DARGs)
"""

import re
import traceback
import json

import darg
import compile_rules_js_convert as jsconv


dACTIONS = {}
dFUNCTIONS = {}
dFUNCNAME = {}


def createFunction (sType, sActionId, sCode, bStartWithEqual=False):
    "create a function (stored in <dFUNCTIONS>) and return function name"
    sCode = prepareFunction(sCode)
    if sType not in dFUNCNAME:
        dFUNCNAME[sType] = {}
    if sCode not in dFUNCNAME[sType]:
        dFUNCNAME[sType][sCode] = len(dFUNCNAME[sType])+1
    sFuncName = "_g_" + sType + "_" + str(dFUNCNAME[sType][sCode])
    dFUNCTIONS[sFuncName] = sCode
    return sFuncName  if not bStartWithEqual  else "="+sFuncName


def storeAction (sActionId, aAction):
    "store <aAction> in <dACTIONS> avoiding duplicates"
    nVar = 0
    while True:
        sActionName = sActionId + "_" + str(nVar)
        if sActionName not in dACTIONS:
            dACTIONS[sActionName] = aAction
            return sActionName
        elif aAction == dACTIONS[sActionName]:
            return sActionName
        nVar += 1


def prepareFunction (sCode):
    "convert simple rule syntax to a string of Python code"
    if sCode[0:1] == "=":
        sCode = sCode[1:]
    sCode = sCode.replace("__also__", "bCondMemo")
    sCode = sCode.replace("__else__", "not bCondMemo")
    sCode = sCode.replace("sContext", "_sAppContext")
    sCode = re.sub(r"(morph|morphVC|analyse|value|tag|displayInfo)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"(morph|morphVC|analyse|value|tag|displayInfo)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"(select|exclude|define|define_from)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"(select|exclude|define|define_from)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"(tag_before|tag_after)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode)
    sCode = re.sub(r"(tag_before|tag_after)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode)
    sCode = re.sub(r"space_after[(][\\](\d+)", 'g_space_between_tokens(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"space_after[(][\\]-(\d+)", 'g_space_between_tokens(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"analyse_with_next[(][\\](\d+)", 'g_merged_analyse(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"analyse_with_next[(][\\]-(\d+)", 'g_merged_analyse(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"(morph|analyse|tag|value)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode)                       # next token
    sCode = re.sub(r"(morph|analyse|tag|value)\(<1", 'g_\\1(lToken[nTokenOffset]', sCode)                       # previous token
    sCode = re.sub(r"(morph|analyse|tag|value)\(>(\d+)", 'g_\\1(g_token(lToken, nLastToken+\\2)', sCode)        # next token
    sCode = re.sub(r"(morph|analyse|tag|value)\(<(\d+)", 'g_\\1(g_token(lToken, nTokenOffset+1-\\2)', sCode)    # previous token
    sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode)
    sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode)          # before(sCode)
    sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                 # after(sCode)
    sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode)        # before0(sCode)
    sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                # after0(sCode)
    sCode = re.sub(r"analyseWord[(]", 'analyse(', sCode)
    sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    return sCode


def genTokenLines (sTokenLine, dDef):
    "tokenize a string and return a list of lines of tokens"
    lToken = sTokenLine.split()
    lTokenLines = None
    for sToken in lToken:
        # optional token?
        bNullPossible = sToken.startswith("?") and sToken.endswith("¿")
        if bNullPossible:
            sToken = sToken[1:-1]
        # token with definition?
        if sToken.startswith("({") and sToken.endswith("})") and sToken[1:-1] in dDef:
            sToken = "(" + dDef[sToken[1:-1]] + ")"
        elif sToken.startswith("{") and sToken.endswith("}") and sToken in dDef:
            sToken = dDef[sToken]
        if ( (sToken.startswith("[") and sToken.endswith("]")) or (sToken.startswith("([") and sToken.endswith("])")) ):
            # multiple token
            bSelectedGroup = sToken.startswith("(") and sToken.endswith(")")
            if bSelectedGroup:
                sToken = sToken[1:-1]
            lNewToken = sToken[1:-1].split("|")
            if not lTokenLines:
                lTokenLines = [ ["("+s+")"]  for s  in lNewToken ]  if bSelectedGroup  else [ [s]  for s  in lNewToken ]
                if bNullPossible:
                    lTokenLines.extend([ []  for i  in range(len(lNewToken)+1) ])
            else:
                lNewTemp = []
                if bNullPossible:
                    for aRule in lTokenLines:
                        for sElem in lNewToken:
                            aNewRule = list(aRule)
                            aNewRule.append(sElem)
                            lNewTemp.append(aNewRule)
                else:
                    sElem1 = lNewToken.pop(0)
                    for aRule in lTokenLines:
                        for sElem in lNewToken:
                            aNewRule = list(aRule)
                            aNewRule.append("(" + sElem + ")"  if bSelectedGroup  else sElem)
                            lNewTemp.append(aNewRule)
                        aRule.append("(" + sElem1 + ")"  if bSelectedGroup  else sElem1)
                lTokenLines.extend(lNewTemp)
        else:
            # simple token
            if not lTokenLines:
                lTokenLines = [[sToken], []]  if bNullPossible  else [[sToken]]
            else:
                if bNullPossible:
                    lNewTemp = []
                    for aRule in lTokenLines:
                        lNew = list(aRule)
                        lNew.append(sToken)
                        lNewTemp.append(lNew)
                    lTokenLines.extend(lNewTemp)
                else:
                    for aRule in lTokenLines:
                        aRule.append(sToken)
    for aRule in lTokenLines:
        yield aRule


def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef):
    "generator: create rule as list"
    # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority)
    for lToken in genTokenLines(sTokenLine, dDef):
        # Calculate positions
        dPos = {}   # key: iGroup, value: iToken
        iGroup = 0
        #if iLine == 3971: # debug
        #    print(" ".join(lToken))
        for i, sToken in enumerate(lToken):
            if sToken.startswith("(") and sToken.endswith(")"):
                lToken[i] = sToken[1:-1]
                iGroup += 1
                dPos[iGroup] = i + 1    # we add 1, for we count tokens from 1 to n (not from 0)

        # Parse actions
        for iAction, sAction in enumerate(sActions.split(" <<- ")):
            sAction = sAction.strip()
            if sAction:
                sActionId = sRuleName + "__b" + str(iActionBlock) + "_a" + str(iAction)
                aAction = createAction(sActionId, sAction, nPriority, dOptPriority, len(lToken), dPos)
                if aAction:
                    sActionName = storeAction(sActionId, aAction)
                    lResult = list(lToken)
                    lResult.extend(["##"+str(iLine), sActionName])
                    #if iLine == 13341:
                    #    print("  ".join(lToken))
                    #    print(sActionId, aAction)
                    yield lResult
                else:
                    print(" # Error on action at line:", iLine)
                    print(sTokenLine, "\n", sActions)


def changeReferenceToken (sText, dPos):
    "change group reference in <sText> with values in <dPos>"
    for i in range(len(dPos), 0, -1):
        sText = sText.replace("\\"+str(i), "\\"+str(dPos[i]))
    return sText


def checkTokenNumbers (sText, sActionId, nToken):
    "check if token references in <sText> greater than <nToken> (debugging)"
    for x in re.finditer(r"\\(\d+)", sText):
        if int(x.group(1)) > nToken:
            print("# Error in token index at line " + sActionId + " ("+str(nToken)+" tokens only)")
            print(sText)


def checkIfThereIsCode (sText, sActionId):
    "check if there is code in <sText> (debugging)"
    if re.search("[.]\\w+[(]|sugg\\w+[(]|\\([0-9]|\\[[0-9]", sText):
        print("# Warning at line " + sActionId + ":  This message looks like code. Line should probably begin with =")
        print(sText)


def createAction (sActionId, sAction, nPriority, dOptPriority, nToken, dPos):
    "create action rule as a list"
    # Option
    sOption = False
    m = re.match("/(\\w+)/", sAction)
    if m:
        sOption = m.group(1)
        sAction = sAction[m.end():].strip()
    if nPriority == -1:
        nPriority = dOptPriority.get(sOption, 4)

    # valid action?
    m = re.search(r"(?P<action>[-~=/%>])(?P<start>-?\d+\.?|)(?P<end>:\.?-?\d+|)(?P<casing>:|)>>", sAction)
    if not m:
        print(" # Error. No action found at: ", sActionId)
        return None

    # Condition
    sCondition = sAction[:m.start()].strip()
    if sCondition:
        sCondition = changeReferenceToken(sCondition, dPos)
        sCondition = createFunction("cond", sActionId, sCondition)
    else:
        sCondition = ""

    # Case sensitivity
    bCaseSensitivity = False if m.group("casing") == ":" else True

    # Action
    cAction = m.group("action")
    sAction = sAction[m.end():].strip()
    sAction = changeReferenceToken(sAction, dPos)
    # target
    cStartLimit = "<"
    cEndLimit = ">"
    if not m.group("start"):
        iStartAction = 1
        iEndAction = 0
    else:
        if cAction != "-" and (m.group("start").endswith(".") or m.group("end").startswith(":.")):
            print(" # Error. Wrong selection on tokens.", sActionId)
            return None
        if m.group("start").endswith("."):
            cStartLimit = ">"
        iStartAction = int(m.group("start").rstrip("."))
        if not m.group("end"):
            iEndAction = iStartAction
        else:
            if m.group("end").startswith(":."):
                cEndLimit = "<"
            iEndAction = int(m.group("end").lstrip(":."))
    if dPos and m.group("start"):
        try:
            iStartAction = dPos.get(iStartAction, iStartAction)
            if iEndAction:
                iEndAction = dPos.get(iEndAction, iEndAction)
        except:
            print("# Error. Wrong groups in: " + sActionId)
            print("  iStartAction:", iStartAction, "iEndAction:", iEndAction)
            print(" ", dPos)
    if iStartAction < 0:
        iStartAction += 1
    if iEndAction < 0:
        iEndAction += 1

    if cAction == "-":
        ## error
        iMsg = sAction.find(" # ")
        if iMsg == -1:
            sMsg = "# Error. Error message not found."
            sURL = ""
            print(sMsg + " Action id: " + sActionId)
        else:
            sMsg = sAction[iMsg+3:].strip()
            sAction = sAction[:iMsg].strip()
            sURL = ""
            mURL = re.search("[|] *(https?://.*)", sMsg)
            if mURL:
                sURL = mURL.group(1).strip()
                sMsg = sMsg[:mURL.start(0)].strip()
            checkTokenNumbers(sMsg, sActionId, nToken)
            if sMsg[0:1] == "=":
                sMsg = createFunction("msg", sActionId, sMsg, True)
            else:
                checkIfThereIsCode(sMsg, sActionId)

    # checking consistancy
    checkTokenNumbers(sAction, sActionId, nToken)

    if cAction == ">":
        ## no action, break loop if condition is False
        return [sOption, sCondition, cAction, ""]

    if not sAction and cAction != "%":
        print("# Error in action at line " + sActionId + ":  This action is empty.")

    if sAction[0:1] != "=" and cAction != "=":
        checkIfThereIsCode(sAction, sActionId)

    if cAction == "-":
        ## error detected --> suggestion
        if sAction[0:1] == "=":
            sAction = createFunction("sugg", sActionId, sAction, True)
        elif sAction.startswith('"') and sAction.endswith('"'):
            sAction = sAction[1:-1]
        if not sMsg:
            print("# Error in action at line " + sActionId + ":  The message is empty.")
        return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction, cStartLimit, cEndLimit, bCaseSensitivity, nPriority, sMsg, sURL]
    elif cAction == "~":
        ## text processor
        if sAction[0:1] == "=":
            sAction = createFunction("tp", sActionId, sAction, True)
        elif sAction.startswith('"') and sAction.endswith('"'):
            sAction = sAction[1:-1]
        return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction, bCaseSensitivity]
    elif cAction == "%" or cAction == "/":
        ## tags
        return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction]
    elif cAction == "=":
        ## disambiguator
        if "define(" in sAction and not re.search(r"define\(\\-?\d+ *, *\[.*\] *\)", sAction):
            print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings")
        sAction = createFunction("da", sActionId, sAction)
        return [sOption, sCondition, cAction, sAction]
    else:
        print(" # Unknown action.", sActionId)
        return None


def make (lRule, dDef, sLang, dOptPriority, bJavaScript):
    "compile rules, returns a dictionary of values"
    # for clarity purpose, don’t create any file here

    # removing comments, zeroing empty lines, creating definitions, storing tests, merging rule lines
    print("  parsing rules...")
    lTokenLine = []
    sActions = ""
    nPriority = -1
    dAllGraph = {}
    sGraphName = ""
    iActionBlock = 0
    aRuleName = set()

    for i, sLine in lRule:
        sLine = sLine.rstrip()
        if "\t" in sLine:
            # tabulation not allowed
            print("Error. Tabulation at line: ", i)
            exit()
        elif sLine.startswith("@@@@GRAPH: "):
            # rules graph call
            m = re.match(r"@@@@GRAPH: *(\w+)", sLine.strip())
            if m:
                sGraphName = m.group(1)
                if sGraphName in dAllGraph:
                    print("Error at line " + i + ". Graph name <" + sGraphName + "> already exists.")
                    exit()
                dAllGraph[sGraphName] = []
            else:
                print("Error. Graph name not found at line", i)
                exit()
        elif sLine.startswith("__") and sLine.endswith("__"):
            # new rule group
            m = re.match("__(\\w+)(!\\d|)__", sLine)
            if m:
                sRuleName = m.group(1)
                if sRuleName in aRuleName:
                    print("Error at line " + i + ". Rule name <" + sRuleName + "> already exists.")
                    exit()
                iActionBlock = 1
                nPriority = int(m.group(2)[1:]) if m.group(2)  else -1
            else:
                print("Syntax error in rule group: ", sLine, " -- line:", i)
                exit()
        elif re.search("^    +<<- ", sLine) or (sLine.startswith("        ") and not sLine.startswith("        ||")) \
                or re.search("^    +#", sLine) or re.search(r"[-~=>/%](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) :
            # actions
            sActions += " " + sLine.strip()
        elif re.match("[  ]*$", sLine):
            # empty line to end merging
            if not lTokenLine:
                continue
            if not sActions:
                print("Error. No action found at line:", i)
                exit()
            if not sGraphName:
                print("Error. All rules must belong to a named graph. Line: ", i)
                exit()
            for j, sTokenLine in lTokenLine:
                dAllGraph[sGraphName].append((j, sRuleName, sTokenLine, iActionBlock, sActions, nPriority))
            lTokenLine.clear()
            sActions = ""
            iActionBlock += 1
        elif sLine.startswith("    "):
            # tokens
            sLine = sLine.strip()
            if sLine.startswith("||"):
                iPrevLine, sPrevLine = lTokenLine[-1]
                lTokenLine[-1] = [iPrevLine, sPrevLine + " " + sLine[2:]]
            else:
                lTokenLine.append([i, sLine])
        else:
            print("Unknown line:")
            print(sLine)

    # processing rules
    print("  preparing rules...")
    for sGraphName, lRuleLine in dAllGraph.items():
        print("{:>8,} rules in {:<24} ".format(len(lRuleLine), "<"+sGraphName+">"), end="")
        lPreparedRule = []
        for i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority in lRuleLine:
            for lRule in createRule(i, sRuleGroup, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef):
                lPreparedRule.append(lRule)
        # Graph creation
        oDARG = darg.DARG(lPreparedRule, sLang)
        dAllGraph[sGraphName] = oDARG.createGraph()
        # Debugging
        if False:
            print("\nRULES:")
            for e in lPreparedRule:
                if e[-2] == "##2211":
                    print(e)
        if False:
            print("\nGRAPH:", sGraphName)
            for k, v in dAllGraph[sGraphName].items():
                print(k, "\t", v)

    # creating file with all functions callable by rules
    print("  creating callables for graph rules...")
    sPyCallables = ""
    sJSCallables = ""
    for sFuncName, sReturn in dFUNCTIONS.items():
        if sFuncName.startswith("_g_cond_"): # condition
            sParams = "lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, dTags, sSentence, sSentence0"
        elif sFuncName.startswith("g_msg_"): # message
            sParams = "lToken, nTokenOffset, nLastToken"
        elif sFuncName.startswith("_g_sugg_"): # suggestion
            sParams = "lToken, nTokenOffset, nLastToken"
        elif sFuncName.startswith("_g_tp_"): # text preprocessor
            sParams = "lToken, nTokenOffset, nLastToken"
        elif sFuncName.startswith("_g_da_"): # disambiguator
            sParams = "lToken, nTokenOffset, nLastToken"
        else:
            print("# Unknown function type in [" + sFuncName + "]")
            continue
        # Python
        sPyCallables += "def {} ({}):\n".format(sFuncName, sParams)
        sPyCallables += "    return " + sReturn + "\n"
        # JavaScript
        sJSCallables += "    {}: function ({})".format(sFuncName, sParams) + " {\n"
        sJSCallables += "        return " + jsconv.py2js(sReturn) + ";\n"
        sJSCallables += "    },\n"

    # Debugging
    if False:
        print("\nActions:")
        for sActionName, aAction in dACTIONS.items():
            print(sActionName, aAction)
        print("\nFunctions:")
        print(sPyCallables)

    # Result
    return {
        "graph_callables": sPyCallables,
        "graph_callablesJS": sJSCallables,
        "rules_graphs": dAllGraph,
        "rules_graphsJS": str(dAllGraph).replace("True", "true").replace("False", "false"),
        "rules_actions": dACTIONS,
        "rules_actionsJS": str(dACTIONS).replace("True", "true").replace("False", "false")
    }

Modified compile_rules_js_convert.py from [5ad87f3f46] to [3755ac925a].


1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22
23
24

25
26
27
28
29
30
31
1

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33
34
+
-
+
+



















-
+



+







"""
# Convert Python code to JavaScript code
Convert Python code and regexes to JavaScript code
"""

import copy
import re
import json


def py2js (sCode):
    "convert Python code to JavaScript code"
    # Python strings
    sCode = sCode.replace('(r"', '("')
    sCode = sCode.replace("(r'", "('")
    sCode = sCode.replace(' r"', ' "')
    sCode = sCode.replace(" r'", " '")
    sCode = sCode.replace(',r"', ',"')
    sCode = sCode.replace(",r'", ",'")
    # operators
    sCode = sCode.replace(" and ", " && ")
    sCode = sCode.replace(" or ", " || ")
    sCode = re.sub("\\bnot\\b", "!", sCode)
    sCode = re.sub("(.+) if (.+) else (.+)", "(\\2) ? \\1 : \\3", sCode)
    #sCode = re.sub("(.+) if (.+) else (.+)", "(\\2) ? \\1 : \\3", sCode)
    # boolean
    sCode = sCode.replace("False", "false")
    sCode = sCode.replace("True", "true")
    sCode = sCode.replace("None", "null")
    sCode = sCode.replace("bool", "Boolean")
    # methods
    sCode = sCode.replace(".__len__()", ".length")
    sCode = sCode.replace(".endswith", ".endsWith")
    sCode = sCode.replace(".find", ".indexOf")
    sCode = sCode.replace(".startswith", ".startsWith")
    sCode = sCode.replace(".lower", ".toLowerCase")
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73


74
75
76
77
78
79
80
42
43
44
45
46
47
48






49

50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68




69
70
71
72
73
74
75
76
77







-
-
-
-
-
-

-
+




+
+












-
-
-
-
+
+







    sCode = sCode.replace(".strip", ".gl_trim")
    sCode = sCode.replace(".lstrip", ".gl_trimLeft")
    sCode = sCode.replace(".rstrip", ".gl_trimRight")
    sCode = sCode.replace('.replace("."', r".replace(/\./g")
    sCode = sCode.replace('.replace("..."', r".replace(/\.\.\./g")
    sCode = re.sub(r'.replace\("([^"]+)" ?,', ".replace(/\\1/g,", sCode)
    # regex
    sCode = re.sub('re.search\\("([^"]+)", *(m.group\\(\\d\\))\\)', "(\\2.search(/\\1/) >= 0)", sCode)
    sCode = re.sub(".search\\(/\\(\\?i\\)([^/]+)/\\) >= 0\\)", ".search(/\\1/i) >= 0)", sCode)
    sCode = re.sub('(look\\(sx?[][.a-z:()]*), "\\(\\?i\\)([^"]+)"', "\\1, /\\2/i", sCode)
    sCode = re.sub('(look\\(sx?[][.a-z:()]*), "([^"]+)"', "\\1, /\\2/", sCode)
    sCode = re.sub('(look_chk1\\(dDA, sx?[][.a-z:()]*, [0-9a-z.()]+), "\\(\\?i\\)([^"]+)"', "\\1, /\\2/i", sCode)
    sCode = re.sub('(look_chk1\\(dDA, sx?[][.a-z:()]*, [0-9a-z.()]+), "([^"]+)"', "\\1, /\\2/i", sCode)
    sCode = re.sub('m\\.group\\((\\d+)\\) +in +(a[a-zA-Z]+)', "\\2.has(m[\\1])", sCode)
    sCode = sCode.replace("(?<!-)", "")  # todo
    sCode = re.sub('(lToken\\S+) +in +(a[a-zA-Z]+)', "\\2.has(\\1)", sCode)
    # slices
    sCode = sCode.replace("[:m.start()]", ".slice(0,m.index)")
    sCode = sCode.replace("[m.end():]", ".slice(m.end[0])")
    sCode = sCode.replace("[m.start():m.end()]", ".slice(m.index, m.end[0])")
    sCode = sCode.replace('[lToken[nLastToken]["nEnd"]:]', '.slice(lToken[nLastToken]["nEnd"])')
    sCode = sCode.replace('[:lToken[1+nTokenOffset]["nStart"]]', '.slice(0,lToken[1+nTokenOffset]["nStart"])')
    sCode = re.sub("\\[(-?\\d+):(-?\\d+)\\]", ".slice(\\1,\\2)", sCode)
    sCode = re.sub("\\[(-?\\d+):\\]", ".slice(\\1)", sCode)
    sCode = re.sub("\\[:(-?\\d+)\\]", ".slice(0,\\1)", sCode)
    # regex matches
    sCode = sCode.replace(".end()", ".end[0]")
    sCode = sCode.replace(".start()", ".index")
    sCode = sCode.replace("m.group()", "m[0]")
    sCode = re.sub("\\.start\\((\\d+)\\)", ".start[\\1]", sCode)
    sCode = re.sub("m\\.group\\((\\d+)\\)", "m[\\1]", sCode)
    # tuples -> lists
    sCode = re.sub("\\((m\\.start\\[\\d+\\], m\\[\\d+\\])\\)", "[\\1]", sCode)
    # regex
    sCode = sCode.replace(r"\w[\w-]+", "[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-st][a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-st-]+")
    sCode = sCode.replace(r"/\w/", "/[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-st]/")
    sCode = sCode.replace(r"[\w-]", "[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-st-]")
    sCode = sCode.replace(r"[\w,]", "[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-st,]")
    sCode = sCode.replace(r"[\\w", "[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ")
    sCode = sCode.replace(r"\\w", "[a-zA-Zà-öÀ-Ö0-9_ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ]")
    return sCode


def regex2js (sRegex, sWORDLIMITLEFT):
    "converts Python regex to JS regex and returns JS regex and list of negative lookbefore assertions"
    #   Latin letters: http://unicode-table.com/fr/
    #   0-9  and  _
114
115
116
117
118
119
120

121



122
123
124
125
126
127
128
129
130
131
132
133
134

135
136

137
138
139
140
141
142
143
144
145
146
147
















148
149
150
151
152

153
154
155
156
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139











140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165







+

+
+
+













+


+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+





+




        sRegex = sRegex + "i"
    if not lNegLookBeforeRegex:
        lNegLookBeforeRegex = None
    return (sRegex, lNegLookBeforeRegex)


def pyRuleToJS (lRule, dJSREGEXES, sWORDLIMITLEFT):
    "modify Python rules -> JS rules"
    lRuleJS = copy.deepcopy(lRule)
    # graph rules
    if lRuleJS[0] == "@@@@":
        return lRuleJS
    del lRule[-1] # tGroups positioning codes are useless for Python
    # error messages
    for aAction in lRuleJS[6]:
        if aAction[1] == "-":
            aAction[2] = aAction[2].replace(" ", " ") # nbsp --> nnbsp
            aAction[4] = aAction[4].replace("« ", "« ").replace(" »", " »").replace(" :", " :").replace(" :", " :")
    # js regexes
    lRuleJS[1], lNegLookBehindRegex = regex2js(dJSREGEXES.get(lRuleJS[3], lRuleJS[1]), sWORDLIMITLEFT)
    lRuleJS.append(lNegLookBehindRegex)
    return lRuleJS


def writeRulesToJSArray (lRules):
    "create rules as a string of arrays (to be bundled in a JSON string)"
    sArray = "[\n"
    for sOption, aRuleGroup in lRules:
        if sOption != "@@@@":
        sArray += '  ["' + sOption + '", [\n'  if sOption  else  "  [false, [\n"
        for sRegex, bCaseInsensitive, sLineId, sRuleId, nPriority, lActions, aGroups, aNegLookBehindRegex in aRuleGroup:
            sArray += '    [' + sRegex + ", "
            sArray += "true, " if bCaseInsensitive  else "false, "
            sArray += '"' + sLineId + '", '
            sArray += '"' + sRuleId + '", '
            sArray += str(nPriority) + ", "
            sArray += json.dumps(lActions, ensure_ascii=False) + ", "
            sArray += json.dumps(aGroups, ensure_ascii=False) + ", "
            sArray += json.dumps(aNegLookBehindRegex, ensure_ascii=False) + "],\n"
        sArray += "  ]],\n"
            sArray += '  ["' + sOption + '", [\n'  if sOption  else  "  [false, [\n"
            for sRegex, bCaseInsensitive, sLineId, sRuleId, nPriority, lActions, aGroups, aNegLookBehindRegex in aRuleGroup:
                sArray += '    [' + sRegex + ", "
                sArray += "true, " if bCaseInsensitive  else "false, "
                sArray += '"' + sLineId + '", '
                sArray += '"' + sRuleId + '", '
                sArray += str(nPriority) + ", "
                sArray += json.dumps(lActions, ensure_ascii=False) + ", "
                sArray += json.dumps(aGroups, ensure_ascii=False) + ", "
                sArray += json.dumps(aNegLookBehindRegex, ensure_ascii=False) + "],\n"
            sArray += "  ]],\n"
        else:
            sArray += '  ["' + sOption + '", [\n'
            for sGraphName, sLineId in aRuleGroup:
                sArray += '    ["' + sGraphName + '", "' + sLineId + '"],\n'
            sArray += "  ]],\n"
    sArray += "]"
    return sArray


def groupsPositioningCodeToList (sGroupsPositioningCode):
    "convert <sGroupsPositioningCode> to a list of codes (numbers or strings)"
    if not sGroupsPositioningCode:
        return None
    return [ int(sCode)  if sCode.isdigit() or (sCode[0:1] == "-" and sCode[1:].isdigit())  else sCode \
             for sCode in sGroupsPositioningCode.split(",") ]

Added darg.py version [0a2000eec8].






































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#!python3

"""
RULE GRAPH BUILDER
"""

# by Olivier R.
# License: MPL 2

import re
import traceback



class DARG:
    """DIRECT ACYCLIC RULE GRAPH"""
    # This code is inspired from Steve Hanov’s DAWG, 2011. (http://stevehanov.ca/blog/index.php?id=115)

    def __init__ (self, lRule, sLangCode):
        print(" > DARG", end="")

        # Preparing DARG
        self.sLangCode = sLangCode
        self.nRule = len(lRule)
        self.aPreviousRule = []
        Node.resetNextId()
        self.oRoot = Node()
        self.lUncheckedNodes = []  # list of nodes that have not been checked for duplication.
        self.lMinimizedNodes = {}  # list of unique nodes that have been checked for duplication.
        self.nNode = 0
        self.nArc = 0

        # build
        lRule.sort()
        for aRule in lRule:
            self.insert(aRule)
        self.finish()
        self.countNodes()
        self.countArcs()
        self.displayInfo()

    # BUILD DARG
    def insert (self, aRule):
        "insert a new rule (tokens must be inserted in order)"
        if aRule < self.aPreviousRule:
            exit("# Error: tokens must be inserted in order.")

        # find common prefix between word and previous word
        nCommonPrefix = 0
        for i in range(min(len(aRule), len(self.aPreviousRule))):
            if aRule[i] != self.aPreviousRule[i]:
                break
            nCommonPrefix += 1

        # Check the lUncheckedNodes for redundant nodes, proceeding from last
        # one down to the common prefix size. Then truncate the list at that point.
        self._minimize(nCommonPrefix)

        # add the suffix, starting from the correct node mid-way through the graph
        if len(self.lUncheckedNodes) == 0:
            oNode = self.oRoot
        else:
            oNode = self.lUncheckedNodes[-1][2]

        iToken = nCommonPrefix
        for sToken in aRule[nCommonPrefix:]:
            oNextNode = Node()
            oNode.dArcs[sToken] = oNextNode
            self.lUncheckedNodes.append((oNode, sToken, oNextNode))
            if iToken == (len(aRule) - 2):
                oNode.bFinal = True
            iToken += 1
            oNode = oNextNode
        oNode.bFinal = True
        self.aPreviousRule = aRule

    def finish (self):
        "minimize unchecked nodes"
        self._minimize(0)

    def _minimize (self, downTo):
        # proceed from the leaf up to a certain point
        for i in range( len(self.lUncheckedNodes)-1, downTo-1, -1 ):
            oNode, sToken, oChildNode = self.lUncheckedNodes[i]
            if oChildNode in self.lMinimizedNodes:
                # replace the child with the previously encountered one
                oNode.dArcs[sToken] = self.lMinimizedNodes[oChildNode]
            else:
                # add the state to the minimized nodes.
                self.lMinimizedNodes[oChildNode] = oChildNode
            self.lUncheckedNodes.pop()

    def countNodes (self):
        "count nodes within the whole graph"
        self.nNode = len(self.lMinimizedNodes)

    def countArcs (self):
        "count arcs within the whole graph"
        self.nArc = 0
        for oNode in self.lMinimizedNodes:
            self.nArc += len(oNode.dArcs)

    def displayInfo (self):
        "display informations about the rule graph"
        print(": {:>10,} rules,  {:>10,} nodes,  {:>10,} arcs".format(self.nRule, self.nNode, self.nArc))

    def createGraph (self):
        "create the graph as a dictionary"
        dGraph = { 0: self.oRoot.getNodeAsDict() }
        for oNode in self.lMinimizedNodes:
            sHashId = oNode.__hash__()
            if sHashId not in dGraph:
                dGraph[sHashId] = oNode.getNodeAsDict()
            else:
                print("Error. Double node… same id: ", sHashId)
                print(str(oNode.getNodeAsDict()))
        dGraph = self._rewriteKeysOfDARG(dGraph)
        self._sortActions(dGraph)
        self._checkRegexes(dGraph)
        return dGraph

    def _rewriteKeysOfDARG (self, dGraph):
        "keys of DARG are long numbers (hashes): this function replace these hashes with smaller numbers (to reduce storing size)"
        # create translation dictionary
        dKeyTrans = {}
        for i, nKey in enumerate(dGraph):
            dKeyTrans[nKey] = i
        # replace keys
        dNewGraph = {}
        for nKey, dVal in dGraph.items():
            dNewGraph[dKeyTrans[nKey]] = dVal
        for nKey, dVal in dGraph.items():
            for sArc, val in dVal.items():
                if type(val) is int:
                    dVal[sArc] = dKeyTrans[val]
                else:
                    for sArc, nKey in val.items():
                        val[sArc] = dKeyTrans[nKey]
        return dNewGraph

    def _sortActions (self, dGraph):
        "when a pattern is found, several actions may be launched, and it must be performed in a certain order"
        for nKey, dVal in dGraph.items():
            if "<rules>" in dVal:
                for sLineId, nKey in dVal["<rules>"].items():
                    # we change the dictionary of actions in a list of actions (values of dictionary all points to the final node)
                    if isinstance(dGraph[nKey], dict):
                        dGraph[nKey] = sorted(dGraph[nKey].keys())

    def _checkRegexes (self, dGraph):
        "check validity of regexes"
        aRegex = set()
        for nKey, dVal in dGraph.items():
            if "<re_value>" in dVal:
                for sRegex in dVal["<re_value>"]:
                    if sRegex not in aRegex:
                        self._checkRegex(sRegex)
                        aRegex.add(sRegex)
            if "<re_morph>" in dVal:
                for sRegex in dVal["<re_morph>"]:
                    if sRegex not in aRegex:
                        self._checkRegex(sRegex)
                        aRegex.add(sRegex)
        aRegex.clear()

    def _checkRegex (self, sRegex):
        #print(sRegex)
        if "¬" in sRegex:
            sPattern, sNegPattern = sRegex.split("¬")
            try:
                if not sNegPattern:
                    print("# Warning! Empty negpattern:", sRegex)
                re.compile(sPattern)
                if sNegPattern != "*":
                    re.compile(sNegPattern)
            except:
                print("# Error. Wrong regex:", sRegex)
                exit()
        else:
            try:
                if not sRegex:
                    print("# Warning! Empty pattern:", sRegex)
                re.compile(sRegex)
            except:
                print("# Error. Wrong regex:", sRegex)
                exit()


class Node:
    """Node of the rule graph"""

    NextId = 0

    def __init__ (self):
        self.i = Node.NextId
        Node.NextId += 1
        self.bFinal = False
        self.dArcs = {}          # key: arc value; value: a node

    @classmethod
    def resetNextId (cls):
        "reset to 0 the node counter"
        cls.NextId = 0

    def __str__ (self):
        # Caution! this function is used for hashing and comparison!
        cFinal = "1"  if self.bFinal  else "0"
        l = [cFinal]
        for (key, oNode) in self.dArcs.items():
            l.append(str(key))
            l.append(str(oNode.i))
        return "_".join(l)

    def __hash__ (self):
        # Used as a key in a python dictionary.
        return self.__str__().__hash__()

    def __eq__ (self, other):
        # Used as a key in a python dictionary.
        # Nodes are equivalent if they have identical arcs, and each identical arc leads to identical states.
        return self.__str__() == other.__str__()

    def getNodeAsDict (self):
        "returns the node as a dictionary structure"
        dNode = {}
        dReValue = {}
        dReMorph = {}
        dRule = {}
        dLemma = {}
        dMeta = {}
        dTag = {}
        for sArc, oNode in self.dArcs.items():
            if sArc.startswith("@") and len(sArc) > 1:
                dReMorph[sArc[1:]] = oNode.__hash__()
            elif sArc.startswith("~") and len(sArc) > 1:
                dReValue[sArc[1:]] = oNode.__hash__()
            elif sArc.startswith(">") and len(sArc) > 1:
                dLemma[sArc[1:]] = oNode.__hash__()
            elif sArc.startswith("*") and len(sArc) > 1:
                dMeta[sArc[1:]] = oNode.__hash__()
            elif sArc.startswith("/") and len(sArc) > 1:
                dTag[sArc[1:]] = oNode.__hash__()
            elif sArc.startswith("##"):
                dRule[sArc[1:]] = oNode.__hash__()
            else:
                dNode[sArc] = oNode.__hash__()
        if dReValue:
            dNode["<re_value>"] = dReValue
        if dReMorph:
            dNode["<re_morph>"] = dReMorph
        if dLemma:
            dNode["<lemmas>"] = dLemma
        if dTag:
            dNode["<tags>"] = dTag
        if dMeta:
            dNode["<meta>"] = dMeta
        if dRule:
            dNode["<rules>"] = dRule
        #if self.bFinal:
        #    dNode["<final>"] = 1
        return dNode

Modified gc_core/js/lang_core/gc_engine.js from [ab7d9a98c9] to [2a12fbd54b].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


34
35

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

51
52
53
54
55
56
57
58
59
60

61
62
63
64

65
66
67
68
69
70
71

72
73
74
75
76
77
78
79
80
81
82
83
84
85
86


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

102
103
104
105

106
107
108
109

110
111
112
113
114
115

116
117


118
119
120
121
122
123

124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

140
141

142
143
144
145
146
147

148
149
150
151
152
153
154
155
156

157
158
159
160
161
162
163
164

165
166
167
168
169
170
171
172
173

174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190

191
192
193
194
195
196
197
198
199
200
201
202

203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221

222
223
224
225
226
227
228
229
230

231
232
233
234
235
236
237

238
239
240
241
242

243
244

245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266

267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

287
288
289
290
291
292
293

294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
1
2
3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

37

38
39
40
41
42
43
44
45
46
47
48
49
50

51
52









53

54


55







56















57
58















59




60




61






62


63
64






65
















66


67






68









69








70









71

















72


73
74








75



















76









77







78





79


80






















81
82


83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

99
100
101
102
103
104
105

106
107
108
109
110
111
112
113
114
115
116
117
118





























119
120
121
122
123
124
125












-


+


















+
+

-
+
-













-
+

-
-
-
-
-
-
-
-
-
+
-

-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-


-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
+
-
-
-
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+

-
-
















-
+






-
+












-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







// Grammar checker engine
/*jslint esversion: 6*/
/*global console,require,exports*/

"use strict";

${string}
${regex}
${map}


if (typeof(require) !== 'undefined') {
    //var helpers = require("resource://grammalecte/graphspell/helpers.js");
    var gc_options = require("resource://grammalecte/${lang}/gc_options.js");
    var gc_rules = require("resource://grammalecte/${lang}/gc_rules.js");
    var gc_rules_graph = require("resource://grammalecte/${lang}/gc_rules_graph.js");
    var cregex = require("resource://grammalecte/${lang}/cregex.js");
    var text = require("resource://grammalecte/text.js");
}


function capitalizeArray (aArray) {
    // can’t map on user defined function??
    let aNew = [];
    for (let i = 0; i < aArray.length; i = i + 1) {
        aNew[i] = aArray[i].gl_toCapitalize();
    }
    return aNew;
}


// data
let _sAppContext = "";                                  // what software is running
let _dOptions = null;
let _oSpellChecker = null;
let _oTokenizer = null;
let _aIgnoredRules = new Set();
let _oSpellChecker = null;

let _dAnalyses = new Map();                             // cache for data from dictionary


var gc_engine = {

    //// Informations

    lang: "${lang}",
    locales: ${loc},
    pkg: "${implname}",
    name: "${name}",
    version: "${version}",
    author: "${author}",

    //// Parsing
    //// Initialization

    parse: function (sText, sCountry="${country_default}", bDebug=false, bContext=false) {
        // analyses the paragraph sText and returns list of errors
        let dErrors;
        let errs;
        let sAlt = sText;
        let dDA = new Map();        // Disamnbiguator
        let dPriority = new Map();  // Key = position; value = priority
        let sNew = "";

    load: function (sContext="JavaScript", sPath="") {
        // parse paragraph
        try {
            [sNew, dErrors] = this._proofread(sText, sAlt, 0, true, dDA, dPriority, sCountry, bDebug, bContext);
            if (sNew) {
            if (typeof(require) !== 'undefined') {
                sText = sNew;
            }
        }
        catch (e) {
            console.error(e);
        }

                var spellchecker = require("resource://grammalecte/graphspell/spellchecker.js");
        // cleanup
        if (sText.includes(" ")) {
            sText = sText.replace(/ /g, ' '); // nbsp
        }
        if (sText.includes(" ")) {
            sText = sText.replace(/ /g, ' '); // snbsp
        }
        if (sText.includes("'")) {
            sText = sText.replace(/'/g, "’");
        }
        if (sText.includes("‑")) {
            sText = sText.replace(/‑/g, "-"); // nobreakdash
        }

        // parse sentence
                _oSpellChecker = new spellchecker.SpellChecker("${lang}", "", "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}");
            } else {
        for (let [iStart, iEnd] of this._getSentenceBoundaries(sText)) {
            if (4 < (iEnd - iStart) < 2000) {
                dDA.clear();
                try {
                    [, errs] = this._proofread(sText.slice(iStart, iEnd), sAlt.slice(iStart, iEnd), iStart, false, dDA, dPriority, sCountry, bDebug, bContext);
                    dErrors.gl_update(errs);
                }
                catch (e) {
                    console.error(e);
                }
            }
        }
        return Array.from(dErrors.values());
    },

                _oSpellChecker = new SpellChecker("${lang}", sPath, "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}");
    _zEndOfSentence: new RegExp ('([.?!:;…][ .?!… »”")]*|.$)', "g"),
    _zBeginOfParagraph: new RegExp ("^[-  –—.,;?!…]*", "ig"),
    _zEndOfParagraph: new RegExp ("[-  .,;?!…–—]*$", "ig"),

            }
    _getSentenceBoundaries: function* (sText) {
        let mBeginOfSentence = this._zBeginOfParagraph.exec(sText);
        let iStart = this._zBeginOfParagraph.lastIndex;
        let m;
            _sAppContext = sContext;
        while ((m = this._zEndOfSentence.exec(sText)) !== null) {
            yield [iStart, this._zEndOfSentence.lastIndex];
            iStart = this._zEndOfSentence.lastIndex;
        }
    },

            _dOptions = gc_options.getOptions(sContext).gl_shallowCopy();     // duplication necessary, to be able to reset to default
    _proofread: function (s, sx, nOffset, bParagraph, dDA, dPriority, sCountry, bDebug, bContext) {
        let dErrs = new Map();
            _oTokenizer = _oSpellChecker.getTokenizer();
            _oSpellChecker.activateStorage();
        let bChange = false;
        let bIdRule = option('idrule');
        let m;
        let bCondMemo;
        let nErrorStart;

        }
        for (let [sOption, lRuleGroup] of this._getRules(bParagraph)) {
            if (!sOption || option(sOption)) {
                for (let [zRegex, bUppercase, sLineId, sRuleId, nPriority, lActions, lGroups, lNegLookBefore] of lRuleGroup) {
                    if (!_aIgnoredRules.has(sRuleId)) {
                        while ((m = zRegex.gl_exec2(s, lGroups, lNegLookBefore)) !== null) {
                            bCondMemo = null;
                            /*if (bDebug) {
                                console.log(">>>> Rule # " + sLineId + " - Text: " + s + " opt: "+ sOption);
                            }*/
                            for (let [sFuncCond, cActionType, sWhat, ...eAct] of lActions) {
                            // action in lActions: [ condition, action type, replacement/suggestion/action[, iGroup[, message, URL]] ]
                                try {
                                    //console.log(oEvalFunc[sFuncCond]);
                                    bCondMemo = (!sFuncCond || oEvalFunc[sFuncCond](s, sx, m, dDA, sCountry, bCondMemo));
                                    if (bCondMemo) {
                                        switch (cActionType) {
        catch (e) {
                                            case "-":
                                                // grammar error
            console.error(e);
                                                //console.log("-> error detected in " + sLineId + "\nzRegex: " + zRegex.source);
                                                nErrorStart = nOffset + m.start[eAct[0]];
                                                if (!dErrs.has(nErrorStart) || nPriority > dPriority.get(nErrorStart)) {
                                                    dErrs.set(nErrorStart, this._createError(s, sx, sWhat, nOffset, m, eAct[0], sLineId, sRuleId, bUppercase, eAct[1], eAct[2], bIdRule, sOption, bContext));
                                                    dPriority.set(nErrorStart, nPriority);
                                                }
        }
                                                break;
                                            case "~":
                                                // text processor
                                                //console.log("-> text processor by " + sLineId + "\nzRegex: " + zRegex.source);
                                                s = this._rewrite(s, sWhat, eAct[0], m, bUppercase);
                                                bChange = true;
                                                if (bDebug) {
                                                    console.log("~ " + s + "  -- " + m[eAct[0]] + "  # " + sLineId);
                                                }
    },
                                                break;
                                            case "=":
                                                // disambiguation
                                                //console.log("-> disambiguation by " + sLineId + "\nzRegex: " + zRegex.source);
                                                oEvalFunc[sWhat](s, m, dDA);
                                                if (bDebug) {
                                                    console.log("= " + m[0] + "  # " + sLineId + "\nDA: " + dDA.gl_toString());
                                                }

                                                break;
                                            case ">":
                                                // we do nothing, this test is just a condition to apply all following actions
                                                break;
                                            default:
                                                console.log("# error: unknown action at " + sLineId);
                                        }
                                    } else {
                                        if (cActionType == ">") {
    getSpellChecker: function () {
                                            break;
                                        }
                                    }
                                }
                                catch (e) {
                                    console.log(s);
                                    console.log("# line id: " + sLineId + "\n# rule id: " + sRuleId);
                                    console.error(e);
                                }
                            }
                        }
                    }
                }
            }
        }
        if (bChange) {
            return [s, dErrs];
        return _oSpellChecker;
        }
        return [false, dErrs];
    },

    _createError: function (s, sx, sRepl, nOffset, m, iGroup, sLineId, sRuleId, bUppercase, sMsg, sURL, bIdRule, sOption, bContext) {
        let oErr = {};
        oErr["nStart"] = nOffset + m.start[iGroup];
        oErr["nEnd"] = nOffset + m.end[iGroup];
        oErr["sLineId"] = sLineId;
        oErr["sRuleId"] = sRuleId;
        oErr["sType"] = (sOption) ? sOption : "notype";
        // suggestions
    //// Rules
        if (sRepl.slice(0,1) === "=") {
            let sugg = oEvalFunc[sRepl.slice(1)](s, m);
            if (sugg) {
                if (bUppercase && m[iGroup].slice(0,1).gl_isUpperCase()) {
                    oErr["aSuggestions"] = capitalizeArray(sugg.split("|"));
                } else {
                    oErr["aSuggestions"] = sugg.split("|");
                }
            } else {
                oErr["aSuggestions"] = [];
            }
        } else if (sRepl == "_") {
            oErr["aSuggestions"] = [];
        } else {
            if (bUppercase && m[iGroup].slice(0,1).gl_isUpperCase()) {
                oErr["aSuggestions"] = capitalizeArray(sRepl.gl_expand(m).split("|"));
            } else {
                oErr["aSuggestions"] = sRepl.gl_expand(m).split("|");
            }

        }
        // Message
        let sMessage = "";
        if (sMsg.slice(0,1) === "=") {
            sMessage = oEvalFunc[sMsg.slice(1)](s, m);
        } else {
            sMessage = sMsg.gl_expand(m);
        }
        if (bIdRule) {
    getRules: function (bParagraph) {
            sMessage += " ##" + sLineId + " #" + sRuleId;
        }
        oErr["sMessage"] = sMessage;
        // URL
        oErr["URL"] = sURL || "";
        // Context
        if (bContext) {
        if (!bParagraph) {
            oErr["sUnderlined"] = sx.slice(m.start[iGroup], m.end[iGroup]);
            oErr["sBefore"] = sx.slice(Math.max(0, m.start[iGroup]-80), m.start[iGroup]);
            oErr["sAfter"] = sx.slice(m.end[iGroup], m.end[iGroup]+80);
        }
        return oErr;
            return gc_rules.lSentenceRules;
    },

        }
    _rewrite: function (s, sRepl, iGroup, m, bUppercase) {
        // text processor: write sRepl in s at iGroup position"
        let ln = m.end[iGroup] - m.start[iGroup];
        let sNew = "";
        if (sRepl === "*") {
            sNew = " ".repeat(ln);
        } else if (sRepl === ">" || sRepl === "_" || sRepl === "~") {
            sNew = sRepl + " ".repeat(ln-1);
        } else if (sRepl === "@") {
            sNew = "@".repeat(ln);
        } else if (sRepl.slice(0,1) === "=") {
            sNew = oEvalFunc[sRepl.slice(1)](s, m);
            sNew = sNew + " ".repeat(ln-sNew.length);
            if (bUppercase && m[iGroup].slice(0,1).gl_isUpperCase()) {
                sNew = sNew.gl_toCapitalize();
            }
        } else {
            sNew = sRepl.gl_expand(m);
            sNew = sNew + " ".repeat(ln-sNew.length);
        }
        //console.log("\n"+s+"\nstart: "+m.start[iGroup]+" end:"+m.end[iGroup])
        return s.slice(0, m.start[iGroup]) + sNew + s.slice(m.end[iGroup]);
        return gc_rules.lParagraphRules;
    },

    // Actions on rules

    ignoreRule: function (sRuleId) {
        _aIgnoredRules.add(sRuleId);
    },

    resetIgnoreRules: function () {
        _aIgnoredRules.clear();
    },

    reactivateRule: function (sRuleId) {
        _aIgnoredRules.delete(sRuleId);
    },

    listRules: function* (sFilter=null) {
        // generator: returns tuple (sOption, sLineId, sRuleId)
        try {
            for (let [sOption, lRuleGroup] of this._getRules(true)) {
            for (let [sOption, lRuleGroup] of this.getRules(true)) {
                for (let [,, sLineId, sRuleId,,] of lRuleGroup) {
                    if (!sFilter || sRuleId.test(sFilter)) {
                        yield [sOption, sLineId, sRuleId];
                    }
                }
            }
            for (let [sOption, lRuleGroup] of this._getRules(false)) {
            for (let [sOption, lRuleGroup] of this.getRules(false)) {
                for (let [,, sLineId, sRuleId,,] of lRuleGroup) {
                    if (!sFilter || sRuleId.test(sFilter)) {
                        yield [sOption, sLineId, sRuleId];
                    }
                }
            }
        }
        catch (e) {
            console.error(e);
        }
    },

    _getRules: function (bParagraph) {
        if (!bParagraph) {
            return gc_rules.lSentenceRules;
        }
        return gc_rules.lParagraphRules;
    },

    //// Initialization

    load: function (sContext="JavaScript", sPath="") {
        try {
            if (typeof(require) !== 'undefined') {
                var spellchecker = require("resource://grammalecte/graphspell/spellchecker.js");
                _oSpellChecker = new spellchecker.SpellChecker("${lang}", "", "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}");
            } else {
                _oSpellChecker = new SpellChecker("${lang}", sPath, "${dic_main_filename_js}", "${dic_extended_filename_js}", "${dic_community_filename_js}", "${dic_personal_filename_js}");
            }
            _sAppContext = sContext;
            _dOptions = gc_options.getOptions(sContext).gl_shallowCopy();     // duplication necessary, to be able to reset to default
        }
        catch (e) {
            console.error(e);
        }
    },

    getSpellChecker: function () {
        return _oSpellChecker;
    },

    //// Options

    setOption: function (sOpt, bVal) {
        if (_dOptions.has(sOpt)) {
            _dOptions.set(sOpt, bVal);
        }
    },
350
351
352
353
354
355
356




























































































































































































































































































































































































































































































































































































































































































































































































































357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385


386
387
388
389
390
391

392
393
394
395
396
397
398
399
400
401


402
403
404
405
406


407
408
409
410

411
412
413
414
415
416
417
418
419
420
421
422
423

424
425
426
427
428
429
430
431
432
433
434
435
436
437

438
439
440
441
442
443
444
445
446
447
448

449
450
451
452

453
454
455
456
457
458
459
460
461

462
463
464
465
466


467
468
469
470
471
472
473
474

475
476
477
478
479
480

481
482
483
484
485
486
487
488
489
490

491
492
493
494
495
496
497
498
499
500

501
502
503
504
505
506
507
508

509
510
511
512
513
514
515
516
517
518
519
520


521
522

523
524
525

526
527
528
529
530
531
532
533
534
535
536




























537
538






539
540
541
542
543
544
545





























































































































































546





547
548


















549
550














551
552
553
554
555
556

557
558
559
560


561
562














563



564
565





566

567
568
569

570
571
572


573
574
575

576
577
578








579
580
581







582
583

584

585
586
587





588
589
590
591
592


593
594
595
596
597















598
599

600
601
602
603
604
605












606
607
608
609
610
611
612
613
614



615
616



617
618
619
620
621
622
623
624
625

626



627
628
629
630
631


632
633
634
635
636
637
638
639


640
641
642
643
644
645


646
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947


















948
949






950










951
952





953
954




955













956














957











958




959









960





961
962


963

964
965
966

967
968
969
970
971
972

973
974
975
976
977
978
979
980
981
982

983
984
985
986
987
988
989
990
991
992

993
994
995
996
997
998
999
1000

1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011


1012
1013
1014

1015
1016
1017

1018
1019
1020
1021
1022
1023
1024
1025




1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061







1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224


1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263

1264
1265
1266
1267

1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285

1286
1287
1288
1289
1290
1291
1292
1293
1294
1295

1296
1297
1298

1299
1300


1301
1302
1303
1304

1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317


1318
1319
1320
1321
1322
1323
1324
1325
1326
1327

1328



1329
1330
1331
1332
1333

1334



1335
1336





1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352

1353
1354
1355
1356
1357


1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396

1397
1398
1399
1400
1401
1402


1403
1404


1405
1406
1407
1408


1409
1410

1411
1412
1413
1414
1415
1416
1417
1418







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+











-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
-
-

-



-
+





-
+









-
+









-
+







-
+










-
-
+
+

-
+


-
+







-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


+
+
+
+
+
+
+
+
+
+
+
+
+
+





-
+



-
+
+


+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+


+
+
+
+
+
-
+


-
+

-
-
+
+


-
+



+
+
+
+
+
+
+
+

-
-
+
+
+
+
+
+
+


+
-
+
-
-
-
+
+
+
+
+
-

-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

-
+




-
-
+
+
+
+
+
+
+
+
+
+
+
+









+
+
+


+
+
+









+
-
+
+
+



-
-
+
+
-
-




-
-
+
+
-





+
+


    getDefaultOptions: function () {
        return gc_options.getOptions(_sAppContext).gl_shallowCopy();
    },

    resetOptions: function () {
        _dOptions = gc_options.getOptions(_sAppContext).gl_shallowCopy();
    },

    //// Parsing

    parse: function (sText, sCountry="${country_default}", bDebug=false, dOptions=null, bContext=false) {
        let oText = new TextParser(sText);
        return oText.parse(sCountry, bDebug, dOptions, bContext);
    },

    _zEndOfSentence: new RegExp ('([.?!:;…][ .?!… »”")]*|.$)', "g"),
    _zBeginOfParagraph: new RegExp ("^[-  –—.,;?!…]*", "ig"),
    _zEndOfParagraph: new RegExp ("[-  .,;?!…–—]*$", "ig"),

    getSentenceBoundaries: function* (sText) {
        let mBeginOfSentence = this._zBeginOfParagraph.exec(sText);
        let iStart = this._zBeginOfParagraph.lastIndex;
        let m;
        while ((m = this._zEndOfSentence.exec(sText)) !== null) {
            yield [iStart, this._zEndOfSentence.lastIndex];
            iStart = this._zEndOfSentence.lastIndex;
        }
    }
};


class TextParser {

    constructor (sText) {
        this.sText = sText;
        this.sText0 = sText;
        this.sSentence = "";
        this.sSentence0 = "";
        this.nOffsetWithinParagraph = 0;
        this.lToken = [];
        this.dTokenPos = new Map();
        this.dTags = new Map();
        this.dError = new Map();
        this.dErrorPriority = new Map();  // Key = position; value = priority
    }

    asString () {
        let s = "===== TEXT =====\n"
        s += "sentence: " + this.sSentence0 + "\n";
        s += "now:      " + this.sSentence  + "\n";
        for (let dToken of this.lToken) {
            s += `#${dToken["i"]}\t${dToken["nStart"]}:${dToken["nEnd"]}\t${dToken["sValue"]}\t${dToken["sType"]}`;
            if (dToken.hasOwnProperty("lMorph")) {
                s += "\t" + dToken["lMorph"].toString();
            }
            if (dToken.hasOwnProperty("aTags")) {
                s += "\t" + dToken["aTags"].toString();
            }
            s += "\n";
        }
        return s;
    }

    parse (sCountry="${country_default}", bDebug=false, dOptions=null, bContext=false) {
        // analyses the paragraph sText and returns list of errors
        let dOpt = dOptions || _dOptions;
        let bShowRuleId = option('idrule');
        // parse paragraph
        try {
            this.parseText(this.sText, this.sText0, true, 0, sCountry, dOpt, bShowRuleId, bDebug, bContext);
        }
        catch (e) {
            console.error(e);
        }

        // cleanup
        if (this.sText.includes(" ")) {
            this.sText = this.sText.replace(/ /g, ' '); // nbsp
        }
        if (this.sText.includes(" ")) {
            this.sText = this.sText.replace(/ /g, ' '); // snbsp
        }
        if (this.sText.includes("'")) {
            this.sText = this.sText.replace(/'/g, "’");
        }
        if (this.sText.includes("‑")) {
            this.sText = this.sText.replace(/‑/g, "-"); // nobreakdash
        }

        // parse sentence
        for (let [iStart, iEnd] of gc_engine.getSentenceBoundaries(this.sText)) {
            try {
                this.sSentence = this.sText.slice(iStart, iEnd);
                this.sSentence0 = this.sText0.slice(iStart, iEnd);
                this.nOffsetWithinParagraph = iStart;
                this.lToken = Array.from(_oTokenizer.genTokens(this.sSentence, true));
                this.dTokenPos.clear();
                for (let dToken of this.lToken) {
                    if (dToken["sType"] != "INFO") {
                        this.dTokenPos.set(dToken["nStart"], dToken);
                    }
                }
                this.parseText(this.sSentence, this.sSentence0, false, iStart, sCountry, dOpt, bShowRuleId, bDebug, bContext);
            }
            catch (e) {
                console.error(e);
            }
        }
        return Array.from(this.dError.values());
    }

    parseText (sText, sText0, bParagraph, nOffset, sCountry, dOptions, bShowRuleId, bDebug, bContext) {
        let bChange = false;
        let m;

        for (let [sOption, lRuleGroup] of gc_engine.getRules(bParagraph)) {
            if (sOption == "@@@@") {
                // graph rules
                if (!bParagraph && bChange) {
                    this.update(sText, bDebug);
                    bChange = false;
                }
                for (let [sGraphName, sLineId] of lRuleGroup) {
                    if (!dOptions.has(sGraphName) || dOptions.get(sGraphName)) {
                        if (bDebug) {
                            console.log(">>>> GRAPH: " + sGraphName + " " + sLineId);
                        }
                        sText = this.parseGraph(gc_rules_graph.dAllGraph[sGraphName], sCountry, dOptions, bShowRuleId, bDebug, bContext);
                    }
                }
            }
            else if (!sOption || option(sOption)) {
                for (let [zRegex, bUppercase, sLineId, sRuleId, nPriority, lActions, lGroups, lNegLookBefore] of lRuleGroup) {
                    if (!_aIgnoredRules.has(sRuleId)) {
                        while ((m = zRegex.gl_exec2(sText, lGroups, lNegLookBefore)) !== null) {
                            let bCondMemo = null;
                            for (let [sFuncCond, cActionType, sWhat, ...eAct] of lActions) {
                                // action in lActions: [ condition, action type, replacement/suggestion/action[, iGroup[, message, URL]] ]
                                try {
                                    bCondMemo = (!sFuncCond || oEvalFunc[sFuncCond](sText, sText0, m, this.dTokenPos, sCountry, bCondMemo));
                                    if (bCondMemo) {
                                        switch (cActionType) {
                                            case "-":
                                                // grammar error
                                                //console.log("-> error detected in " + sLineId + "\nzRegex: " + zRegex.source);
                                                let nErrorStart = nOffset + m.start[eAct[0]];
                                                if (!this.dError.has(nErrorStart) || nPriority > this.dErrorPriority.get(nErrorStart)) {
                                                    this.dError.set(nErrorStart, this._createErrorFromRegex(sText, sText0, sWhat, nOffset, m, eAct[0], sLineId, sRuleId, bUppercase, eAct[1], eAct[2], bShowRuleId, sOption, bContext));
                                                    this.dErrorPriority.set(nErrorStart, nPriority);
                                                }
                                                break;
                                            case "~":
                                                // text processor
                                                //console.log("-> text processor by " + sLineId + "\nzRegex: " + zRegex.source);
                                                sText = this.rewriteText(sText, sWhat, eAct[0], m, bUppercase);
                                                bChange = true;
                                                if (bDebug) {
                                                    console.log("~ " + sText + "  -- " + m[eAct[0]] + "  # " + sLineId);
                                                }
                                                break;
                                            case "=":
                                                // disambiguation
                                                //console.log("-> disambiguation by " + sLineId + "\nzRegex: " + zRegex.source);
                                                oEvalFunc[sWhat](sText, m, this.dTokenPos);
                                                if (bDebug) {
                                                    console.log("= " + m[0] + "  # " + sLineId, "\nDA:", this.dTokenPos);
                                                }
                                                break;
                                            case ">":
                                                // we do nothing, this test is just a condition to apply all following actions
                                                break;
                                            default:
                                                console.log("# error: unknown action at " + sLineId);
                                        }
                                    } else {
                                        if (cActionType == ">") {
                                            break;
                                        }
                                    }
                                }
                                catch (e) {
                                    console.log(sText);
                                    console.log("# line id: " + sLineId + "\n# rule id: " + sRuleId);
                                    console.error(e);
                                }
                            }
                        }
                    }
                }
            }
        }
        if (bChange) {
            if (bParagraph) {
                this.sText = sText;
            } else {
                this.sSentence = sText;
            }
        }
    }

    update (sSentence, bDebug=false) {
        // update <sSentence> and retokenize
        this.sSentence = sSentence;
        let lNewToken = Array.from(_oTokenizer.genTokens(sSentence, true));
        for (let dToken of lNewToken) {
            if (this.dTokenPos.gl_get(dToken["nStart"], {}).hasOwnProperty("lMorph")) {
                dToken["lMorph"] = this.dTokenPos.get(dToken["nStart"])["lMorph"];
            }
            if (this.dTokenPos.gl_get(dToken["nStart"], {}).hasOwnProperty("aTags")) {
                dToken["aTags"] = this.dTokenPos.get(dToken["nStart"])["aTags"];
            }
        }
        this.lToken = lNewToken;
        this.dTokenPos.clear();
        for (let dToken of this.lToken) {
            if (dToken["sType"] != "INFO") {
                this.dTokenPos.set(dToken["nStart"], dToken);
            }
        }
        if (bDebug) {
            console.log("UPDATE:");
            console.log(this.asString());
        }
    }

    * _getNextPointers (dToken, dGraph, dPointer, bDebug=false) {
        // generator: return nodes where <dToken> “values” match <dNode> arcs
        try {
            let dNode = dPointer["dNode"];
            let iNode1 = dPointer["iNode1"];
            let bTokenFound = false;
            // token value
            if (dNode.hasOwnProperty(dToken["sValue"])) {
                if (bDebug) {
                    console.log("  MATCH: " + dToken["sValue"]);
                }
                yield { "iNode1": iNode1, "dNode": dGraph[dNode[dToken["sValue"]]] };
                bTokenFound = true;
            }
            if (dToken["sValue"].slice(0,2).gl_isTitle()) { // we test only 2 first chars, to make valid words such as "Laissez-les", "Passe-partout".
                let sValue = dToken["sValue"].toLowerCase();
                if (dNode.hasOwnProperty(sValue)) {
                    if (bDebug) {
                        console.log("  MATCH: " + sValue);
                    }
                    yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] };
                    bTokenFound = true;
                }
            }
            else if (dToken["sValue"].gl_isUpperCase()) {
                let sValue = dToken["sValue"].toLowerCase();
                if (dNode.hasOwnProperty(sValue)) {
                    if (bDebug) {
                        console.log("  MATCH: " + sValue);
                    }
                    yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] };
                    bTokenFound = true;
                }
                sValue = dToken["sValue"].gl_toCapitalize();
                if (dNode.hasOwnProperty(sValue)) {
                    if (bDebug) {
                        console.log("  MATCH: " + sValue);
                    }
                    yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] };
                    bTokenFound = true;
                }
            }
            // regex value arcs
            if (dToken["sType"] != "INFO"  &&  dToken["sType"] != "PUNC"  &&  dToken["sType"] != "SIGN") {
                if (dNode.hasOwnProperty("<re_value>")) {
                    for (let sRegex in dNode["<re_value>"]) {
                        if (!sRegex.includes("¬")) {
                            // no anti-pattern
                            if (dToken["sValue"].search(sRegex) !== -1) {
                                if (bDebug) {
                                    console.log("  MATCH: ~" + sRegex);
                                }
                                yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_value>"][sRegex]] };
                                bTokenFound = true;
                            }
                        } else {
                            // there is an anti-pattern
                            let [sPattern, sNegPattern] = sRegex.split("¬", 2);
                            if (sNegPattern && dToken["sValue"].search(sNegPattern) !== -1) {
                                continue;
                            }
                            if (!sPattern || dToken["sValue"].search(sPattern) !== -1) {
                                if (bDebug) {
                                    console.log("  MATCH: ~" + sRegex);
                                }
                                yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_value>"][sRegex]] };
                                bTokenFound = true;
                            }
                        }
                    }
                }
            }
            // analysable tokens
            if (dToken["sType"].slice(0,4) == "WORD") {
                // token lemmas
                if (dNode.hasOwnProperty("<lemmas>")) {
                    for (let sLemma of _oSpellChecker.getLemma(dToken["sValue"])) {
                        if (dNode["<lemmas>"].hasOwnProperty(sLemma)) {
                            if (bDebug) {
                                console.log("  MATCH: >" + sLemma);
                            }
                            yield { "iNode1": iNode1, "dNode": dGraph[dNode["<lemmas>"][sLemma]] };
                            bTokenFound = true;
                        }
                    }
                }
                // regex morph arcs
                if (dNode.hasOwnProperty("<re_morph>")) {
                    let lMorph = (dToken.hasOwnProperty("lMorph")) ? dToken["lMorph"] : _oSpellChecker.getMorph(dToken["sValue"]);
                    for (let sRegex in dNode["<re_morph>"]) {
                        if (!sRegex.includes("¬")) {
                            // no anti-pattern
                            if (lMorph.some(sMorph  =>  (sMorph.search(sRegex) !== -1))) {
                                if (bDebug) {
                                    console.log("  MATCH: @" + sRegex);
                                }
                                yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] };
                                bTokenFound = true;
                            }
                        } else {
                            // there is an anti-pattern
                            let [sPattern, sNegPattern] = sRegex.split("¬", 2);
                            if (sNegPattern == "*") {
                                // all morphologies must match with <sPattern>
                                if (sPattern) {
                                    if (lMorph.length > 0  &&  lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1))) {
                                        if (bDebug) {
                                            console.log("  MATCH: @" + sRegex);
                                        }
                                        yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] };
                                        bTokenFound = true;
                                    }
                                }
                            } else {
                                if (sNegPattern  &&  lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                                    continue;
                                }
                                if (!sPattern  ||  lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1))) {
                                    if (bDebug) {
                                        console.log("  MATCH: @" + sRegex);
                                    }
                                    yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] };
                                    bTokenFound = true;
                                }
                            }
                        }
                    }
                }
            }
            // token tags
            if (dToken.hasOwnProperty("aTags") && dNode.hasOwnProperty("<tags>")) {
                for (let sTag of dToken["aTags"]) {
                    if (dNode["<tags>"].hasOwnProperty(sTag)) {
                        if (bDebug) {
                            console.log("  MATCH: /" + sTag);
                        }
                        yield { "iNode1": iNode1, "dNode": dGraph[dNode["<tags>"][sTag]] };
                        bTokenFound = true;
                    }
                }
            }
            // meta arc (for token type)
            if (dNode.hasOwnProperty("<meta>")) {
                for (let sMeta in dNode["<meta>"]) {
                    // no regex here, we just search if <dNode["sType"]> exists within <sMeta>
                    if (sMeta == "*" || dToken["sType"] == sMeta) {
                        if (bDebug) {
                            console.log("  MATCH: *" + sMeta);
                        }
                        yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] };
                        bTokenFound = true;
                    }
                    else if (sMeta.includes("¬")) {
                        if (!sMeta.includes(dToken["sType"])) {
                            if (bDebug) {
                                console.log("  MATCH: *" + sMeta);
                            }
                            yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] };
                            bTokenFound = true;
                        }
                    }
                }
            }
            if (!bTokenFound  &&  dPointer.hasOwnProperty("bKeep")) {
                yield dPointer;
            }
            // JUMP
            // Warning! Recurssion!
            if (dNode.hasOwnProperty("<>")) {
                let dPointer2 = { "iNode1": iNode1, "dNode": dGraph[dNode["<>"]], "bKeep": true };
                yield* this._getNextPointers(dToken, dGraph, dPointer2, bDebug);
            }
        }
        catch (e) {
            console.error(e);
        }
    }

    parseGraph (dGraph, sCountry="${country_default}", dOptions=null, bShowRuleId=false, bDebug=false, bContext=false) {
        // parse graph with tokens from the text and execute actions encountered
        let lPointer = [];
        let bTagAndRewrite = false;
        try {
            for (let [iToken, dToken] of this.lToken.entries()) {
                if (bDebug) {
                    console.log("TOKEN: " + dToken["sValue"]);
                }
                // check arcs for each existing pointer
                let lNextPointer = [];
                for (let dPointer of lPointer) {
                    lNextPointer.push(...this._getNextPointers(dToken, dGraph, dPointer, bDebug));
                }
                lPointer = lNextPointer;
                // check arcs of first nodes
                lPointer.push(...this._getNextPointers(dToken, dGraph, { "iNode1": iToken, "dNode": dGraph[0] }, bDebug));
                // check if there is rules to check for each pointer
                for (let dPointer of lPointer) {
                    if (dPointer["dNode"].hasOwnProperty("<rules>")) {
                        let bChange = this._executeActions(dGraph, dPointer["dNode"]["<rules>"], dPointer["iNode1"]-1, iToken, dOptions, sCountry, bShowRuleId, bDebug, bContext);
                        if (bChange) {
                            bTagAndRewrite = true;
                        }
                    }
                }
            }
        } catch (e) {
            console.error(e);
        }
        if (bTagAndRewrite) {
            this.rewriteFromTags(bDebug);
        }
        if (bDebug) {
            console.log(this.asString());
        }
        return this.sSentence;
    }

    _executeActions (dGraph, dNode, nTokenOffset, nLastToken, dOptions, sCountry, bShowRuleId, bDebug, bContext) {
        // execute actions found in the DARG
        let bChange = false;
        for (let [sLineId, nextNodeKey] of Object.entries(dNode)) {
            let bCondMemo = null;
            for (let sRuleId of dGraph[nextNodeKey]) {
                try {
                    if (bDebug) {
                        console.log("   >TRY: " + sRuleId + " " + sLineId);
                    }
                    let [sOption, sFuncCond, cActionType, sWhat, ...eAct] = gc_rules_graph.dRule[sRuleId];
                    // Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
                    // TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
                    // Disambiguator [ option, condition, "=", replacement/suggestion/action ]
                    // Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
                    // Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
                    // Test          [ option, condition, ">", "" ]
                    if (!sOption || dOptions.gl_get(sOption, false)) {
                        bCondMemo = !sFuncCond || oEvalFunc[sFuncCond](this.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, this.dTags, this.sSentence, this.sSentence0);
                        if (bCondMemo) {
                            if (cActionType == "-") {
                                // grammar error
                                let [iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL] = eAct;
                                let nTokenErrorStart = (iTokenStart > 0) ? nTokenOffset + iTokenStart : nLastToken + iTokenStart;
                                if (!this.lToken[nTokenErrorStart].hasOwnProperty("bImmune")) {
                                    let nTokenErrorEnd = (iTokenEnd > 0) ? nTokenOffset + iTokenEnd : nLastToken + iTokenEnd;
                                    let nErrorStart = this.nOffsetWithinParagraph + ((cStartLimit == "<") ? this.lToken[nTokenErrorStart]["nStart"] : this.lToken[nTokenErrorStart]["nEnd"]);
                                    let nErrorEnd = this.nOffsetWithinParagraph + ((cEndLimit == ">") ? this.lToken[nTokenErrorEnd]["nEnd"] : this.lToken[nTokenErrorEnd]["nStart"]);
                                    if (!this.dError.has(nErrorStart) || nPriority > this.dErrorPriority.gl_get(nErrorStart, -1)) {
                                        this.dError.set(nErrorStart, this._createErrorFromTokens(sWhat, nTokenOffset, nLastToken, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, bCaseSvty, sMessage, sURL, bShowRuleId, sOption, bContext));
                                        this.dErrorPriority.set(nErrorStart, nPriority);
                                        if (bDebug) {
                                            console.log("    NEW_ERROR: ",  this.dError.get(nErrorStart));
                                        }
                                    }
                                }
                            }
                            else if (cActionType == "~") {
                                // text processor
                                let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0];
                                let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1];
                                this._tagAndPrepareTokenForRewriting(sWhat, nTokenStart, nTokenEnd, nTokenOffset, nLastToken, eAct[2], bDebug);
                                bChange = true;
                                if (bDebug) {
                                    console.log(`    TEXT_PROCESSOR: [${this.lToken[nTokenStart]["sValue"]}:${this.lToken[nTokenEnd]["sValue"]}]  > ${sWhat}`);
                                }
                            }
                            else if (cActionType == "=") {
                                // disambiguation
                                oEvalFunc[sWhat](this.lToken, nTokenOffset, nLastToken);
                                if (bDebug) {
                                    console.log(`    DISAMBIGUATOR: (${sWhat})  [${this.lToken[nTokenOffset+1]["sValue"]}:${this.lToken[nLastToken]["sValue"]}]`);
                                }
                            }
                            else if (cActionType == ">") {
                                // we do nothing, this test is just a condition to apply all following actions
                                if (bDebug) {
                                    console.log("    COND_OK");
                                }
                            }
                            else if (cActionType == "/") {
                                // Tag
                                let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0];
                                let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1];
                                for (let i = nTokenStart; i <= nTokenEnd; i++) {
                                    if (this.lToken[i].hasOwnProperty("aTags")) {
                                        this.lToken[i]["aTags"].add(...sWhat.split("|"))
                                    } else {
                                        this.lToken[i]["aTags"] = new Set(sWhat.split("|"));
                                    }
                                }
                                if (bDebug) {
                                    console.log(`    TAG:  ${sWhat} > [${this.lToken[nTokenStart]["sValue"]}:${this.lToken[nTokenEnd]["sValue"]}]`);
                                }
                                if (!this.dTags.has(sWhat)) {
                                    this.dTags.set(sWhat, [nTokenStart, nTokenStart]);
                                } else {
                                    this.dTags.set(sWhat, [Math.min(nTokenStart, this.dTags.get(sWhat)[0]), Math.max(nTokenEnd, this.dTags.get(sWhat)[1])]);
                                }
                            }
                            else if (cActionType == "%") {
                                // immunity
                                if (bDebug) {
                                    console.log("    IMMUNITY: " + _rules_graph.dRule[sRuleId]);
                                }
                                let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0];
                                let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1];
                                if (nTokenEnd - nTokenStart == 0) {
                                    this.lToken[nTokenStart]["bImmune"] = true;
                                    let nErrorStart = this.nOffsetWithinParagraph + this.lToken[nTokenStart]["nStart"];
                                    if (this.dError.has(nErrorStart)) {
                                        this.dError.delete(nErrorStart);
                                    }
                                } else {
                                    for (let i = nTokenStart;  i <= nTokenEnd;  i++) {
                                        this.lToken[i]["bImmune"] = true;
                                        let nErrorStart = this.nOffsetWithinParagraph + this.lToken[i]["nStart"];
                                        if (this.dError.has(nErrorStart)) {
                                            this.dError.delete(nErrorStart);
                                        }
                                    }
                                }
                            } else {
                                console.log("# error: unknown action at " + sLineId);
                            }
                        }
                        else if (cActionType == ">") {
                            if (bDebug) {
                                console.log("    COND_BREAK");
                            }
                            break;
                        }
                    }
                }
                catch (e) {
                    console.log("Error: ", sLineId, sRuleId, this.sSentence);
                    console.error(e);
                }
            }
        }
        return bChange;
    }

    _createErrorFromRegex (sText, sText0, sSugg, nOffset, m, iGroup, sLineId, sRuleId, bUppercase, sMsg, sURL, bShowRuleId, sOption, bContext) {
        let nStart = nOffset + m.start[iGroup];
        let nEnd = nOffset + m.end[iGroup];
        // suggestions
        let lSugg = [];
        if (sSugg.startsWith("=")) {
            sSugg = oEvalFunc[sSugg.slice(1)](sText, m);
            lSugg = (sSugg) ? sSugg.split("|") : [];
        } else if (sSugg == "_") {
            lSugg = [];
        } else {
            lSugg = sSugg.gl_expand(m).split("|");
        }
        if (bUppercase && lSugg.length > 0 && m[iGroup].slice(0,1).gl_isUpperCase()) {
            lSugg = capitalizeArray(lSugg);
        }
        // Message
        let sMessage = (sMsg.startsWith("=")) ? oEvalFunc[sMsg.slice(1)](sText, m) : sMsg.gl_expand(m);
        if (bShowRuleId) {
            sMessage += "  ## " + sLineId + " # " + sRuleId;
        }
        //
        return this._createError(nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext);
    }

    _createErrorFromTokens (sSugg, nTokenOffset, nLastToken, iFirstToken, nStart, nEnd, sLineId, sRuleId, bCaseSvty, sMsg, sURL, bShowRuleId, sOption, bContext) {
        // suggestions
        let lSugg = [];
        if (sSugg.startsWith("=")) {
            sSugg = oEvalFunc[sSugg.slice(1)](this.lToken, nTokenOffset, nLastToken);
            lSugg = (sSugg) ? sSugg.split("|") : [];
        } else if (sSugg == "_") {
            lSugg = [];
        } else {
            lSugg = this._expand(sSugg, nTokenOffset, nLastToken).split("|");
        }
        if (bCaseSvty && lSugg.length > 0 && this.lToken[iFirstToken]["sValue"].slice(0,1).gl_isUpperCase()) {
            lSugg = capitalizeArray(lSugg);
        }
        // Message
        let sMessage = (sMsg.startsWith("=")) ? oEvalFunc[sMsg.slice(1)](this.lToken, nTokenOffset, nLastToken) : this._expand(sMsg, nTokenOffset, nLastToken);
        if (bShowRuleId) {
            sMessage += " ## " + sLineId + " # " + sRuleId;
        }
        //
        return this._createError(nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext);
    }

    _createError (nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext) {
        let oErr = {
            "nStart": nStart,
            "nEnd": nEnd,
            "sLineId": sLineId,
            "sRuleId": sRuleId,
            "sType": sOption || "notype",
            "sMessage": sMessage,
            "aSuggestions": lSugg,
            "URL": sURL
        }
        if (bContext) {
            oErr['sUnderlined'] = this.sText0.slice(nStart, nEnd);
            oErr['sBefore'] = this.sText0.slice(Math.max(0,nStart-80), nStart);
            oErr['sAfter'] = this.sText0.slice(nEnd, nEnd+80);
        }
        return oErr;
    }

    _expand (sText, nTokenOffset, nLastToken) {
        let m;
        while ((m = /\\(-?[0-9]+)/.exec(sText)) !== null) {
            if (m[1].slice(0,1) == "-") {
                sText = sText.replace(m[0], this.lToken[nLastToken+parseInt(m[1],10)+1]["sValue"]);
            } else {
                sText = sText.replace(m[0], this.lToken[nTokenOffset+parseInt(m[1],10)]["sValue"]);
            }
        }
        return sText;
    }

    rewriteText (sText, sRepl, iGroup, m, bUppercase) {
        // text processor: write sRepl in sText at iGroup position"
        let ln = m.end[iGroup] - m.start[iGroup];
        let sNew = "";
        if (sRepl === "*") {
            sNew = " ".repeat(ln);
        }
        else if (sRepl === ">" || sRepl === "_" || sRepl === "~") {
            sNew = sRepl + " ".repeat(ln-1);
        }
        else if (sRepl === "@") {
            sNew = "@".repeat(ln);
        }
        else if (sRepl.slice(0,1) === "=") {
            sNew = oEvalFunc[sRepl.slice(1)](sText, m);
            sNew = sNew + " ".repeat(ln-sNew.length);
            if (bUppercase && m[iGroup].slice(0,1).gl_isUpperCase()) {
                sNew = sNew.gl_toCapitalize();
            }
        } else {
            sNew = sRepl.gl_expand(m);
            sNew = sNew + " ".repeat(ln-sNew.length);
        }
        //console.log(sText+"\nstart: "+m.start[iGroup]+" end:"+m.end[iGroup]);
        return sText.slice(0, m.start[iGroup]) + sNew + sText.slice(m.end[iGroup]);
    }

    _tagAndPrepareTokenForRewriting (sWhat, nTokenRewriteStart, nTokenRewriteEnd, nTokenOffset, nLastToken, bCaseSvty, bDebug) {
        // text processor: rewrite tokens between <nTokenRewriteStart> and <nTokenRewriteEnd> position
        if (sWhat === "*") {
            // purge text
            if (nTokenRewriteEnd - nTokenRewriteStart == 0) {
                this.lToken[nTokenRewriteStart]["bToRemove"] = true;
            } else {
                for (let i = nTokenRewriteStart;  i <= nTokenRewriteEnd;  i++) {
                    this.lToken[i]["bToRemove"] = true;
                }
            }
        }
        else if (sWhat === "␣") {
            // merge tokens
            this.lToken[nTokenRewriteStart]["nMergeUntil"] = nTokenRewriteEnd;
        }
        else if (sWhat === "_") {
            // neutralized token
            if (nTokenRewriteEnd - nTokenRewriteStart == 0) {
                this.lToken[nTokenRewriteStart]["sNewValue"] = "_";
            } else {
                for (let i = nTokenRewriteStart;  i <= nTokenRewriteEnd;  i++) {
                    this.lToken[i]["sNewValue"] = "_";
                }
            }
        }
        else {
            if (sWhat.startsWith("=")) {
                sWhat = oEvalFunc[sWhat.slice(1)](this.lToken, nTokenOffset, nLastToken);
            } else {
                sWhat = this._expand(sWhat, nTokenOffset, nLastToken);
            }
            let bUppercase = bCaseSvty && this.lToken[nTokenRewriteStart]["sValue"].slice(0,1).gl_isUpperCase();
            if (nTokenRewriteEnd - nTokenRewriteStart == 0) {
                // one token
                if (bUppercase) {
                    sWhat = sWhat.gl_toCapitalize();
                }
                this.lToken[nTokenRewriteStart]["sNewValue"] = sWhat;
            }
            else {
                // several tokens
                let lTokenValue = sWhat.split("|");
                if (lTokenValue.length != (nTokenRewriteEnd - nTokenRewriteStart + 1)) {
                    console.log("Error. Text processor: number of replacements != number of tokens.");
                    return;
                }
                let j = 0;
                for (let i = nTokenRewriteStart;  i <= nTokenRewriteEnd;  i++) {
                    let sValue = lTokenValue[j];
                    if (!sValue || sValue === "*") {
                        this.lToken[i]["bToRemove"] = true;
                    } else {
                        if (bUppercase) {
                            sValue = sValue.gl_toCapitalize();
                        }
                        this.lToken[i]["sNewValue"] = sValue;
                    }
                    j++;
                }
            }
        }
    }

    rewriteFromTags (bDebug=false) {
        // rewrite the sentence, modify tokens, purge the token list
        if (bDebug) {
            console.log("REWRITE");
        }
        let lNewToken = [];
        let nMergeUntil = 0;
        let dTokenMerger = null;
        for (let [iToken, dToken] of this.lToken.entries()) {
            let bKeepToken = true;
            if (dToken["sType"] != "INFO") {
                if (nMergeUntil && iToken <= nMergeUntil) {
                    dTokenMerger["sValue"] += " ".repeat(dToken["nStart"] - dTokenMerger["nEnd"]) + dToken["sValue"];
                    dTokenMerger["nEnd"] = dToken["nEnd"];
                    if (bDebug) {
                        console.log("  MERGED TOKEN: " + dTokenMerger["sValue"]);
                    }
                    bKeepToken = false;
                }
                if (dToken.hasOwnProperty("nMergeUntil")) {
                    if (iToken > nMergeUntil) { // this token is not already merged with a previous token
                        dTokenMerger = dToken;
                    }
                    if (dToken["nMergeUntil"] > nMergeUntil) {
                        nMergeUntil = dToken["nMergeUntil"];
                    }
                    delete dToken["nMergeUntil"];
                }
                else if (dToken.hasOwnProperty("bToRemove")) {
                    if (bDebug) {
                        console.log("  REMOVED: " + dToken["sValue"]);
                    }
                    this.sSentence = this.sSentence.slice(0, dToken["nStart"]) + " ".repeat(dToken["nEnd"] - dToken["nStart"]) + this.sSentence.slice(dToken["nEnd"]);
                    bKeepToken = false;
                }
            }
            //
            if (bKeepToken) {
                lNewToken.push(dToken);
                if (dToken.hasOwnProperty("sNewValue")) {
                    // rewrite token and sentence
                    if (bDebug) {
                        console.log(dToken["sValue"] + " -> " + dToken["sNewValue"]);
                    }
                    dToken["sRealValue"] = dToken["sValue"];
                    dToken["sValue"] = dToken["sNewValue"];
                    let nDiffLen = dToken["sRealValue"].length - dToken["sNewValue"].length;
                    let sNewRepl = (nDiffLen >= 0) ? dToken["sNewValue"] + " ".repeat(nDiffLen) : dToken["sNewValue"].slice(0, dToken["sRealValue"].length);
                    this.sSentence = this.sSentence.slice(0,dToken["nStart"]) + sNewRepl + this.sSentence.slice(dToken["nEnd"]);
                    delete dToken["sNewValue"];
                }
            }
            else {
                try {
                    this.dTokenPos.delete(dToken["nStart"]);
                }
                catch (e) {
                    console.log(this.asString());
                    console.log(dToken);
                }
            }
        }
        if (bDebug) {
            console.log("  TEXT REWRITED: " + this.sSentence);
        }
        this.lToken.length = 0;
        this.lToken = lNewToken;
    }
};


//////// Common functions

function option (sOpt) {
    // return true if option sOpt is active
    return _dOptions.get(sOpt);
}

function displayInfo (dDA, aWord) {
    // for debugging: info of word
    if (!aWord) {
        console.log("> nothing to find");
        return true;
    }
    if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) {
        console.log("> not in FSA");
        return true;
    }
    if (dDA.has(aWord[0])) {
        console.log("DA: " + dDA.get(aWord[0]));
    }
    console.log("FSA: " + _dAnalyses.get(aWord[1]));
    return true;
}

function _storeMorphFromFSA (sWord) {
var re = {
    search: function (sRegex, sText) {
    // retrieves morphologies list from _oSpellChecker -> _dAnalyses
    //console.log("register: "+sWord + " " + _oSpellChecker.getMorph(sWord).toString())
    _dAnalyses.set(sWord, _oSpellChecker.getMorph(sWord));
    return !!_dAnalyses.get(sWord);
}

        if (sRegex.startsWith("(?i)")) {
function morph (dDA, aWord, sPattern, bStrict=true, bNoWord=false) {
    // analyse a tuple (position, word), return true if sPattern in morphologies (disambiguation on)
    if (!aWord) {
        //console.log("morph: noword, returns " + bNoWord);
        return bNoWord;
    }
    //console.log("aWord: "+aWord.toString());
    if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) {
        return false;
    }
            return sText.search(new RegExp(sRegex.slice(4), "i")) !== -1;
        } else {
    let lMorph = dDA.has(aWord[0]) ? dDA.get(aWord[0]) : _dAnalyses.get(aWord[1]);
    //console.log("lMorph: "+lMorph.toString());
    if (lMorph.length === 0) {
        return false;
    }
            return sText.search(sRegex) !== -1;
        }
    //console.log("***");
    if (bStrict) {
        return lMorph.every(s  =>  (s.search(sPattern) !== -1));
    }
    },
    return lMorph.some(s  =>  (s.search(sPattern) !== -1));
}

function morphex (dDA, aWord, sPattern, sNegPattern, bNoWord=false) {
    // analyse a tuple (position, word), returns true if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation on)
    if (!aWord) {
        //console.log("morph: noword, returns " + bNoWord);
        return bNoWord;
    }
    //console.log("aWord: "+aWord.toString());
    if (!_dAnalyses.has(aWord[1]) && !_storeMorphFromFSA(aWord[1])) {
        return false;
    }

    let lMorph = dDA.has(aWord[0]) ? dDA.get(aWord[0]) : _dAnalyses.get(aWord[1]);
    //console.log("lMorph: "+lMorph.toString());
    if (lMorph.length === 0) {
        return false;
    }
    //console.log("***");
    // check negative condition
    if (lMorph.some(s  =>  (s.search(sNegPattern) !== -1))) {
        return false;
    }
    // search sPattern
    return lMorph.some(s  =>  (s.search(sPattern) !== -1));
}

    createRegExp: function (sRegex) {
function analyse (sWord, sPattern, bStrict=true) {
    // analyse a word, return true if sPattern in morphologies (disambiguation off)
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {
        return false;
    }
    if (bStrict) {
        return _dAnalyses.get(sWord).every(s  =>  (s.search(sPattern) !== -1));
    }
    return _dAnalyses.get(sWord).some(s  =>  (s.search(sPattern) !== -1));
}

        if (sRegex.startsWith("(?i)")) {
function analysex (sWord, sPattern, sNegPattern) {
    // analyse a word, returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation off)
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {
        return false;
            return new RegExp(sRegex.slice(4), "i");
    }
    // check negative condition
    if (_dAnalyses.get(sWord).some(s  =>  (s.search(sNegPattern) !== -1))) {
        return false;
    }
    // search sPattern
    return _dAnalyses.get(sWord).some(s  =>  (s.search(sPattern) !== -1));
}

        } else {
function stem (sWord) {
    // returns a list of sWord's stems
    if (!sWord) {
        return [];
    }
            return new RegExp(sRegex);
        }
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {
        return [];
    }
    return _dAnalyses.get(sWord).map( s => s.slice(1, s.indexOf(" ")) );
}


//// functions to get text outside pattern scope
//////// functions to get text outside pattern scope

// warning: check compile_rules.py to understand how it works

function nextword (s, iStart, n) {
    // get the nth word of the input string or empty string
    let z = new RegExp("^(?: +[a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st%_-]+){" + (n-1).toString() + "} +([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st%_-]+)", "ig");
    let z = new RegExp("^(?: +[a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ%_-]+){" + (n-1).toString() + "} +([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ%_-]+)", "ig");
    let m = z.exec(s.slice(iStart));
    if (!m) {
        return null;
    }
    return [iStart + z.lastIndex - m[1].length, m[1]];
}

function prevword (s, iEnd, n) {
    // get the (-)nth word of the input string or empty string
    let z = new RegExp("([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st%_-]+) +(?:[a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st%_-]+ +){" + (n-1).toString() + "}$", "i");
    let z = new RegExp("([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ%_-]+) +(?:[a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ%_-]+ +){" + (n-1).toString() + "}$", "i");
    let m = z.exec(s.slice(0, iEnd));
    if (!m) {
        return null;
    }
    return [m.index, m[1]];
}

function nextword1 (s, iStart) {
    // get next word (optimization)
    let _zNextWord = new RegExp ("^ +([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st_][a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st_-]*)", "ig");
    let _zNextWord = new RegExp ("^ +([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ_][a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ_-]*)", "ig");
    let m = _zNextWord.exec(s.slice(iStart));
    if (!m) {
        return null;
    }
    return [iStart + _zNextWord.lastIndex - m[1].length, m[1]];
}

const _zPrevWord = new RegExp ("([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st_][a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-st_-]*) +$", "i");
const _zPrevWord = new RegExp ("([a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ_][a-zà-öA-Zø-ÿÀ-Ö0-9Ø-ßĀ-ʯfi-stᴀ-ᶿ_-]*) +$", "i");

function prevword1 (s, iEnd) {
    // get previous word (optimization)
    let m = _zPrevWord.exec(s.slice(0, iEnd));
    if (!m) {
        return null;
    }
    return [m.index, m[1]];
}

function look (s, zPattern, zNegPattern=null) {
    // seek zPattern in s (before/after/fulltext), if antipattern zNegPattern not in s
function look (s, sPattern, sNegPattern=null) {
    // seek sPattern in s (before/after/fulltext), if antipattern sNegPattern not in s
    try {
        if (zNegPattern && zNegPattern.test(s)) {
        if (sNegPattern && re.search(sNegPattern, s)) {
            return false;
        }
        return zPattern.test(s);
        return re.search(sPattern, s);
    }
    catch (e) {
        console.error(e);
    }
    return false;
}

function look_chk1 (dDA, s, nOffset, zPattern, sPatternGroup1, sNegPatternGroup1=null) {
    // returns True if s has pattern zPattern and m.group(1) has pattern sPatternGroup1
    let m = zPattern.gl_exec2(s, null);
    if (!m) {

//////// Analyse groups for regex rules

function displayInfo (dTokenPos, aWord) {
    // for debugging: info of word
    if (!aWord) {
        console.log("> nothing to find");
        return true;
    }
    let lMorph = _oSpellChecker.getMorph(aWord[1]);
    if (lMorph.length === 0) {
        console.log("> not in dictionary");
        return true;
    }
    if (dTokenPos.has(aWord[0])) {
        console.log("DA: " + dTokenPos.get(aWord[0]));
    }
    console.log("FSA: " + lMorph);
    return true;
}

function morph (dTokenPos, aWord, sPattern, sNegPattern, bNoWord=false) {
    // analyse a tuple (position, word), returns true if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation on)
    if (!aWord) {
        return bNoWord;
    }
    let lMorph = (dTokenPos.has(aWord[0])  &&  dTokenPos.get(aWord[0]))["lMorph"] ? dTokenPos.get(aWord[0])["lMorph"] : _oSpellChecker.getMorph(aWord[1]);
    if (lMorph.length === 0) {
        return false;
    }
    if (sNegPattern) {
        // check negative condition
        if (sNegPattern === "*") {
            // all morph must match sPattern
            return lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1));
        }
    try {
        let sWord = m[1];
        let nPos = m.start[1] + nOffset;
        if (sNegPatternGroup1) {
            return morphex(dDA, [nPos, sWord], sPatternGroup1, sNegPatternGroup1);
        }
        return morph(dDA, [nPos, sWord], sPatternGroup1, false);
        else {
            if (lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                return false;
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}

function analyse (sWord, sPattern, sNegPattern) {
    // analyse a word, returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation off)
    let lMorph = _oSpellChecker.getMorph(sWord);
    if (lMorph.length === 0) {
        return false;
    }
    if (sNegPattern) {
        // check negative condition
        if (sNegPattern === "*") {
            // all morph must match sPattern
            return lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1));
        }
        else {
            if (lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                return false;
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}


//// Analyse tokens for graph rules

function g_value (dToken, sValues, nLeft=null, nRight=null) {
    // test if <dToken['sValue']> is in sValues (each value should be separated with |)
    let sValue = (nLeft === null) ? "|"+dToken["sValue"]+"|" : "|"+dToken["sValue"].slice(nLeft, nRight)+"|";
    if (sValues.includes(sValue)) {
        return true;
    }
    if (dToken["sValue"].slice(0,2).gl_isTitle()) { // we test only 2 first chars, to make valid words such as "Laissez-les", "Passe-partout".
        if (sValues.includes(sValue.toLowerCase())) {
            return true;
        }
    }
    else if (dToken["sValue"].gl_isUpperCase()) {
        //if sValue.lower() in sValues:
        //    return true;
        sValue = "|"+sValue.slice(1).gl_toCapitalize();
        if (sValues.includes(sValue)) {
            return true;
        }
    }
    return false;
}

function g_morph (dToken, sPattern, sNegPattern="", nLeft=null, nRight=null, bMemorizeMorph=true) {
    // analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies
    let lMorph;
    if (dToken.hasOwnProperty("lMorph")) {
        lMorph = dToken["lMorph"];
    }
    else {
        if (nLeft !== null) {
            let sValue = (nRight !== null) ? dToken["sValue"].slice(nLeft, nRight) : dToken["sValue"].slice(nLeft);
            lMorph = _oSpellChecker.getMorph(sValue);
            if (bMemorizeMorph) {
                dToken["lMorph"] = lMorph;
            }
        } else {
            lMorph = _oSpellChecker.getMorph(dToken["sValue"]);
        }
    }
    if (lMorph.length == 0) {
        return false;
    }
    // check negative condition
    if (sNegPattern) {
        if (sNegPattern == "*") {
            // all morph must match sPattern
            return lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1));
        }
        else {
            if (lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                return false;
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}

function g_analyse (dToken, sPattern, sNegPattern="", nLeft=null, nRight=null, bMemorizeMorph=true) {
    // analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies
    let lMorph;
    if (nLeft !== null) {
        let sValue = (nRight !== null) ? dToken["sValue"].slice(nLeft, nRight) : dToken["sValue"].slice(nLeft);
        lMorph = _oSpellChecker.getMorph(sValue);
        if (bMemorizeMorph) {
            dToken["lMorph"] = lMorph;
        }
    } else {
        lMorph = _oSpellChecker.getMorph(dToken["sValue"]);
    }
    if (lMorph.length == 0) {
        return false;
    }
    // check negative condition
    if (sNegPattern) {
        if (sNegPattern == "*") {
            // all morph must match sPattern
            return lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1));
        }
        else {
            if (lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                return false;
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}

function g_merged_analyse (dToken1, dToken2, cMerger, sPattern, sNegPattern="", bSetMorph=true) {
    // merge two token values, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies (disambiguation off)
    let lMorph = _oSpellChecker.getMorph(dToken1["sValue"] + cMerger + dToken2["sValue"]);
    if (lMorph.length == 0) {
        return false;
    }
    // check negative condition
    if (sNegPattern) {
        if (sNegPattern == "*") {
            // all morph must match sPattern
            let bResult = lMorph.every(sMorph  =>  (sMorph.search(sPattern) !== -1));
            if (bResult && bSetMorph) {
                dToken1["lMorph"] = lMorph;
            }
            return bResult;
        }
        else {
            if (lMorph.some(sMorph  =>  (sMorph.search(sNegPattern) !== -1))) {
                return false;
            }
        }
    }
    // search sPattern
    let bResult = lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
    if (bResult && bSetMorph) {
        dToken1["lMorph"] = lMorph;
    }
    return bResult;
}

function g_tag_before (dToken, dTags, sTag) {
    if (!dTags.has(sTag)) {
        return false;
    }
    if (dToken["i"] > dTags.get(sTag)[0]) {
        return true;
    }
    return false;
}
    catch (e) {
        console.error(e);

function g_tag_after (dToken, dTags, sTag) {
    if (!dTags.has(sTag)) {
        return false;
    }
    if (dToken["i"] < dTags.get(sTag)[1]) {
        return true;
    }
    return false;
}

function g_tag (dToken, sTag) {
    return dToken.hasOwnProperty("aTags") && dToken["aTags"].has(sTag);
}

function g_space_between_tokens (dToken1, dToken2, nMin, nMax=null) {
    let nSpace = dToken2["nStart"] - dToken1["nEnd"]
    if (nSpace < nMin) {
        return false;
    }
    if (nMax !== null && nSpace > nMax) {
        return false;
    }
    return true;
}

function g_token (lToken, i) {
    if (i < 0) {
        return lToken[0];
    }
    if (i >= lToken.length) {
        return lToken[-1];
    }
    return lToken[i];
}


//////// Disambiguator

function select (dDA, nPos, sWord, sPattern, lDefault=null) {
function select (dTokenPos, nPos, sWord, sPattern, lDefault=null) {
    if (!sWord) {
        return true;
    }
    if (dDA.has(nPos)) {
    if (!dTokenPos.has(nPos)) {
        console.log("Error. There should be a token at this position: ", nPos);
        return true;
    }
    let lMorph = _oSpellChecker.getMorph(sWord);
    if (lMorph.length === 0  ||  lMorph.length === 1) {
        return true;
    }
    let lSelect = lMorph.filter( sMorph => sMorph.search(sPattern) !== -1 );
    if (lSelect.length > 0) {
        if (lSelect.length != lMorph.length) {
            dTokenPos.get(nPos)["lMorph"] = lSelect;
        }
    } else if (lDefault) {
        dTokenPos.get(nPos)["lMorph"] = lDefault;
    }
    return true;
}
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {

function exclude (dTokenPos, nPos, sWord, sPattern, lDefault=null) {
    if (!sWord) {
        return true;
    }
    if (!dTokenPos.has(nPos)) {
        console.log("Error. There should be a token at this position: ", nPos);
        return true;
    }
    let lMorph = _oSpellChecker.getMorph(sWord);
    if (_dAnalyses.get(sWord).length === 1) {
    if (lMorph.length === 0  ||  lMorph.length === 1) {
        return true;
    }
    let lSelect = _dAnalyses.get(sWord).filter( sMorph => sMorph.search(sPattern) !== -1 );
    let lSelect = lMorph.filter( sMorph => sMorph.search(sPattern) === -1 );
    if (lSelect.length > 0) {
        if (lSelect.length != _dAnalyses.get(sWord).length) {
            dDA.set(nPos, lSelect);
        if (lSelect.length != lMorph.length) {
            dTokenPos.get(nPos)["lMorph"] = lSelect;
        }
    } else if (lDefault) {
        dDA.set(nPos, lDefaul);
        dTokenPos.get(nPos)["lMorph"] = lDefault;
    }
    return true;
}

function define (dTokenPos, nPos, lMorph) {
    dTokenPos.get(nPos)["lMorph"] = lMorph;
    return true;
}


//// Disambiguation for graph rules

function exclude (dDA, nPos, sWord, sPattern, lDefault=null) {
    if (!sWord) {
function g_select (dToken, sPattern, lDefault=null) {
    // select morphologies for <dToken> according to <sPattern>, always return true
    let lMorph = (dToken.hasOwnProperty("lMorph")) ? dToken["lMorph"] : _oSpellChecker.getMorph(dToken["sValue"]);
    if (lMorph.length === 0  || lMorph.length === 1) {
        if (lDefault) {
            dToken["lMorph"] = lDefault;
        }
        return true;
    }
    let lSelect = lMorph.filter( sMorph => sMorph.search(sPattern) !== -1 );
    if (dDA.has(nPos)) {
    if (lSelect.length > 0) {
        return true;
    }
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {
        if (lSelect.length != lMorph.length) {
            dToken["lMorph"] = lSelect;
        }
    } else if (lDefault) {
        dToken["lMorph"] = lDefault;
        return true;
    }
    if (_dAnalyses.get(sWord).length === 1) {
        return true;
    }
    return true;
}
    let lSelect = _dAnalyses.get(sWord).filter( sMorph => sMorph.search(sPattern) === -1 );
    if (lSelect.length > 0) {
        if (lSelect.length != _dAnalyses.get(sWord).length) {
            dDA.set(nPos, lSelect);
        }

function g_exclude (dToken, sPattern, lDefault=null) {
    // select morphologies for <dToken> according to <sPattern>, always return true
    let lMorph = (dToken.hasOwnProperty("lMorph")) ? dToken["lMorph"] : _oSpellChecker.getMorph(dToken["sValue"]);
    if (lMorph.length === 0  || lMorph.length === 1) {
        if (lDefault) {
            dToken["lMorph"] = lDefault;
        }
        return true;
    }
    let lSelect = lMorph.filter( sMorph => sMorph.search(sPattern) === -1 );
    if (lSelect.length > 0) {
        if (lSelect.length != lMorph.length) {
            dToken["lMorph"] = lSelect;
        }
    } else if (lDefault) {
        dDA.set(nPos, lDefault);
        dToken["lMorph"] = lDefault;
    }
    return true;
}

function define (dDA, nPos, lMorph) {
    dDA.set(nPos, lMorph);
function g_define (dToken, lMorph) {
    // set morphologies of <dToken>, always return true
    dToken["lMorph"] = lMorph;
    return true;
}

function g_define_from (dToken, nLeft=null, nRight=null) {
    let sValue = dToken["sValue"];
    if (nLeft !== null) {
        sValue = (nRight !== null) ? sValue.slice(nLeft, nRight) : sValue.slice(nLeft);
    }
    dToken["lMorph"] = _oSpellChecker.getMorph(sValue);
    return true;
}


//////// GRAMMAR CHECKER PLUGINS

${pluginsJS}


// generated code, do not edit
const oEvalFunc = {
    // callables for regex rules
${callablesJS}

    // callables for graph rules
${graph_callablesJS}
}


if (typeof(exports) !== 'undefined') {
    exports.lang = gc_engine.lang;
    exports.locales = gc_engine.locales;
    exports.pkg = gc_engine.pkg;
    exports.name = gc_engine.name;
    exports.version = gc_engine.version;
    exports.author = gc_engine.author;
    // init
    exports.parse = gc_engine.parse;
    exports.load = gc_engine.load;
    exports.getSpellChecker = gc_engine.getSpellChecker;
    // sentence
    exports._zEndOfSentence = gc_engine._zEndOfSentence;
    exports._zBeginOfParagraph = gc_engine._zBeginOfParagraph;
    exports._zEndOfParagraph = gc_engine._zEndOfParagraph;
    exports._getSentenceBoundaries = gc_engine._getSentenceBoundaries;
    exports._proofread = gc_engine._proofread;
    exports.getSentenceBoundaries = gc_engine.getSentenceBoundaries;
    // rules
    exports._createError = gc_engine._createError;
    exports._rewrite = gc_engine._rewrite;
    exports.ignoreRule = gc_engine.ignoreRule;
    exports.resetIgnoreRules = gc_engine.resetIgnoreRules;
    exports.reactivateRule = gc_engine.reactivateRule;
    exports.listRules = gc_engine.listRules;
    exports._getRules = gc_engine._getRules;
    exports.load = gc_engine.load;
    exports.getRules = gc_engine.getRules;
    // options
    exports.getSpellChecker = gc_engine.getSpellChecker;
    exports.setOption = gc_engine.setOption;
    exports.setOptions = gc_engine.setOptions;
    exports.getOptions = gc_engine.getOptions;
    exports.getDefaultOptions = gc_engine.getDefaultOptions;
    exports.resetOptions = gc_engine.resetOptions;
    // other
    exports.TextParser = TextParser;
}

Modified gc_core/js/tests.js from [3d850428e6] to [1eda44faf6].

80
81
82
83
84
85
86
87
88


89
90
91
92
93
94
95
80
81
82
83
84
85
86


87
88
89
90
91
92
93
94
95







-
-
+
+







        catch (e) {
            console.error(e);
        }

        if (bShowUntested) {
            i = 0;
            for (let [sOpt, sLineId, sRuleId] of this.gce.listRules()) {
                if (!this._aRuleTested.has(sLineId) && !/^[0-9]+[sp]$|^[pd]_/.test(sRuleId)) {
                    sUntestedRules += sRuleId + ", ";
                if (sOpt !== "@@@@" && !this._aRuleTested.has(sLineId) && !/^[0-9]+[sp]$|^[pd]_/.test(sRuleId)) {
                    sUntestedRules += sLineId + "/" + sRuleId + ", ";
                    i += 1;
                }
            }
            if (i > 0) {
                yield sUntestedRules + "\n[" + i.toString() + " untested rules]";
            }
        }

Modified gc_core/py/__init__.py from [aeadedff14] to [49f46a05ff].




1
2
1
2
3
4
5
+
+
+


"""
Grammar checker
"""

from .grammar_checker import *

Modified gc_core/py/grammar_checker.py from [79ce1061e8] to [634e5c7c61].


1

2

3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27

28
29
30

31
32
33



34
35
36

37
38
39



40
41
42

43
44
45
46
47
48
49
50
51

52
53
54

55
56
57

58
59
60
61
62
63

64
65
66
67
68
69
70
71
72
73
1

2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35



36
37
38
39
40
41
42



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
+
-
+
-
+








+














+



+



+
-
-
-
+
+
+



+
-
-
-
+
+
+



+









+



+



+






+










"""
# Grammalecte
Grammalecte, grammar checker
# Main class: wrapper
"""

import importlib
import json

from . import text


class GrammarChecker:
    "GrammarChecker: Wrapper for the grammar checker engine"

    def __init__ (self, sLangCode, sContext="Python"):
        self.sLangCode = sLangCode
        # Grammar checker engine
        self.gce = importlib.import_module("."+sLangCode, "grammalecte")
        self.gce.load(sContext)
        # Spell checker
        self.oSpellChecker = self.gce.getSpellChecker()
        # Lexicographer
        self.oLexicographer = None
        # Text formatter
        self.oTextFormatter = None

    def getGCEngine (self):
        "return the grammar checker object"
        return self.gce

    def getSpellChecker (self):
        "return the spell checker object"
        return self.oSpellChecker

    def getTextFormatter (self):
        "load and return the text formatter"
        if self.oTextFormatter == None:
            self.tf = importlib.import_module("."+self.sLangCode+".textformatter", "grammalecte")
        self.oTextFormatter = self.tf.TextFormatter()
        if self.oTextFormatter is None:
            tf = importlib.import_module("."+self.sLangCode+".textformatter", "grammalecte")
            self.oTextFormatter = tf.TextFormatter()
        return self.oTextFormatter

    def getLexicographer (self):
        "load and return the lexicographer"
        if self.oLexicographer == None:
            self.lxg = importlib.import_module("."+self.sLangCode+".lexicographe", "grammalecte")
        self.oLexicographer = self.lxg.Lexicographe(self.oSpellChecker)
        if self.oLexicographer is None:
            lxg = importlib.import_module("."+self.sLangCode+".lexicographe", "grammalecte")
            self.oLexicographer = lxg.Lexicographe(self.oSpellChecker)
        return self.oLexicographer

    def displayGCOptions (self):
        "display the grammar checker options"
        self.gce.displayOptions()

    def getParagraphErrors (self, sText, dOptions=None, bContext=False, bSpellSugg=False, bDebug=False):
        "returns a tuple: (grammar errors, spelling errors)"
        aGrammErrs = self.gce.parse(sText, "FR", bDebug=bDebug, dOptions=dOptions, bContext=bContext)
        aSpellErrs = self.oSpellChecker.parseParagraph(sText, bSpellSugg)
        return aGrammErrs, aSpellErrs

    def generateText (self, sText, bEmptyIfNoErrors=False, bSpellSugg=False, nWidth=100, bDebug=False):
        "[todo]"
        pass

    def generateTextAsJSON (self, sText, bContext=False, bEmptyIfNoErrors=False, bSpellSugg=False, bReturnText=False, bDebug=False):
        "[todo]"
        pass

    def generateParagraph (self, sText, dOptions=None, bEmptyIfNoErrors=False, bSpellSugg=False, nWidth=100, bDebug=False):
        "parse text and return a readable text with underline errors"
        aGrammErrs, aSpellErrs = self.getParagraphErrors(sText, dOptions, False, bSpellSugg, bDebug)
        if bEmptyIfNoErrors and not aGrammErrs and not aSpellErrs:
            return ""
        return text.generateParagraph(sText, aGrammErrs, aSpellErrs, nWidth)

    def generateParagraphAsJSON (self, iIndex, sText, dOptions=None, bContext=False, bEmptyIfNoErrors=False, bSpellSugg=False, bReturnText=False, lLineSet=None, bDebug=False):
        "parse text and return errors as a JSON string"
        aGrammErrs, aSpellErrs = self.getParagraphErrors(sText, dOptions, bContext, bSpellSugg, bDebug)
        aGrammErrs = list(aGrammErrs)
        if bEmptyIfNoErrors and not aGrammErrs and not aSpellErrs:
            return ""
        if lLineSet:
            aGrammErrs, aSpellErrs = text.convertToXY(aGrammErrs, aSpellErrs, lLineSet)
            return json.dumps({ "lGrammarErrors": aGrammErrs, "lSpellingErrors": aSpellErrs }, ensure_ascii=False)
        if bReturnText:
            return json.dumps({ "iParagraph": iIndex, "sText": sText, "lGrammarErrors": aGrammErrs, "lSpellingErrors": aSpellErrs }, ensure_ascii=False)
        return json.dumps({ "iParagraph": iIndex, "lGrammarErrors": aGrammErrs, "lSpellingErrors": aSpellErrs }, ensure_ascii=False)

Modified gc_core/py/lang_core/gc_engine.py from [72ecd7c680] to [b63b69316e].


1
2



3
4
5
6
7
8
9
10
11

12
13
14










15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31

32
33

34
35
36
37
38
39
40
41
42
43
44
45
46
47

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277

278
279
280
281
282
283
284
285
286
287
288
289
290

291
292
293

294
295
296
297


298
299
300
301
302
303
304
305
306


307
308
309
310
311
312
313
314

315
316
317
318
319

320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353

354

355

356
357
358
359
360
361
362
363






















































































































































































































































































































































































364































































































































































365
366
367
368

































































































































































369
370
371
372
373
374
375
376
377
378
379
380
381
382

383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472

473
474
475



476
477
478
479
480
481
482
1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

48
49
50

51










52



















































53




































54












































55
56
































































































57











58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74





75
76








77
78
79



80



















81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101







102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635




636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800








801

802
803
804
805























































































806
807
808
809
810
811
812
813
814
815
816
817
818
819
+
-
-
+
+
+









+



+
+
+
+
+
+
+
+
+
+
















+

+

-
+


-

-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-


-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-


+



+




+
+




-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+


-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-















+

+

+

-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




-
-
-
-
-
-
-
-

-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+



+
+
+







"""
# Grammalecte
# Grammar checker engine
Grammalecte
Grammar checker engine
"""

import re
import sys
import os
import traceback
#import unicodedata
from itertools import chain

from ..graphspell.spellchecker import SpellChecker
from ..graphspell.tokenizer import Tokenizer
from ..graphspell.echo import echo
from . import gc_options

try:
    # LibreOffice / OpenOffice
    from com.sun.star.linguistic2 import SingleProofreadingError
    from com.sun.star.text.TextMarkupType import PROOFREADING
    from com.sun.star.beans import PropertyValue
    #import lightproof_handler_${implname} as opt
    _bWriterError = True
except ImportError:
    _bWriterError = False


__all__ = [ "lang", "locales", "pkg", "name", "version", "author", \
            "load", "parse", "getSpellChecker", \
            "setOption", "setOptions", "getOptions", "getDefaultOptions", "getOptionsLabels", "resetOptions", "displayOptions", \
            "ignoreRule", "resetIgnoreRules", "reactivateRule", "listRules", "displayRules" ]

__version__ = "${version}"


lang = "${lang}"
locales = ${loc}
pkg = "${implname}"
name = "${name}"
version = "${version}"
author = "${author}"

# Modules
_rules = None                               # module gc_rules
_rules_graph = None                         # module gc_rules_graph

# data
# Data
_sAppContext = ""                           # what software is running
_dOptions = None
_aIgnoredRules = set()
_oSpellChecker = None
_dAnalyses = {}                             # cache for data from dictionary



#### Parsing

def parse (sText, sCountry="${country_default}", bDebug=False, dOptions=None, bContext=False):
    "analyses the paragraph sText and returns list of errors"
    #sText = unicodedata.normalize("NFC", sText)
    aErrors = None
_oTokenizer = None
    sAlt = sText
    dDA = {}        # Disambiguisator. Key = position; value = list of morphologies
    dPriority = {}  # Key = position; value = priority
    dOpt = _dOptions  if not dOptions  else dOptions

    # parse paragraph
    try:
        sNew, aErrors = _proofread(sText, sAlt, 0, True, dDA, dPriority, sCountry, dOpt, bDebug, bContext)
        if sNew:
            sText = sNew
    except:
        raise

    # cleanup
    if " " in sText:
        sText = sText.replace(" ", ' ') # nbsp
    if " " in sText:
        sText = sText.replace(" ", ' ') # nnbsp
    if "'" in sText:
        sText = sText.replace("'", "’")
    if "‑" in sText:
        sText = sText.replace("‑", "-") # nobreakdash

    # parse sentences
    for iStart, iEnd in _getSentenceBoundaries(sText):
        if 4 < (iEnd - iStart) < 2000:
            dDA.clear()
            try:
                _, errs = _proofread(sText[iStart:iEnd], sAlt[iStart:iEnd], iStart, False, dDA, dPriority, sCountry, dOpt, bDebug, bContext)
                aErrors.update(errs)
            except:
                raise
    return aErrors.values() # this is a view (iterable)


def _getSentenceBoundaries (sText):
    iStart = _zBeginOfParagraph.match(sText).end()
    for m in _zEndOfSentence.finditer(sText):
        yield (iStart, m.end())
        iStart = m.end()


def _proofread (s, sx, nOffset, bParagraph, dDA, dPriority, sCountry, dOptions, bDebug, bContext):
    dErrs = {}
    bChange = False
    bIdRule = option('idrule')

    for sOption, lRuleGroup in _getRules(bParagraph):
        if not sOption or dOptions.get(sOption, False):
            for zRegex, bUppercase, sLineId, sRuleId, nPriority, lActions in lRuleGroup:
                if sRuleId not in _aIgnoredRules:
_aIgnoredRules = set()
                    for m in zRegex.finditer(s):
                        bCondMemo = None
                        for sFuncCond, cActionType, sWhat, *eAct in lActions:
                            # action in lActions: [ condition, action type, replacement/suggestion/action[, iGroup[, message, URL]] ]
                            try:
                                bCondMemo = not sFuncCond or globals()[sFuncCond](s, sx, m, dDA, sCountry, bCondMemo)
                                if bCondMemo:
                                    if cActionType == "-":
                                        # grammar error
                                        nErrorStart = nOffset + m.start(eAct[0])
                                        if nErrorStart not in dErrs or nPriority > dPriority[nErrorStart]:
                                            dErrs[nErrorStart] = _createError(s, sx, sWhat, nOffset, m, eAct[0], sLineId, sRuleId, bUppercase, eAct[1], eAct[2], bIdRule, sOption, bContext)
                                            dPriority[nErrorStart] = nPriority
                                    elif cActionType == "~":
                                        # text processor
                                        s = _rewrite(s, sWhat, eAct[0], m, bUppercase)
                                        bChange = True
                                        if bDebug:
                                            echo("~ " + s + "  -- " + m.group(eAct[0]) + "  # " + sLineId)
                                    elif cActionType == "=":
                                        # disambiguation
                                        globals()[sWhat](s, m, dDA)
                                        if bDebug:
                                            echo("= " + m.group(0) + "  # " + sLineId + "\nDA: " + str(dDA))
                                    elif cActionType == ">":
                                        # we do nothing, this test is just a condition to apply all following actions
                                        pass
                                    else:
                                        echo("# error: unknown action at " + sLineId)
                                elif cActionType == ">":
                                    break
                            except Exception as e:
                                raise Exception(str(e), "# " + sLineId + " # " + sRuleId)
    if bChange:
        return (s, dErrs)
    return (False, dErrs)


def _createWriterError (s, sx, sRepl, nOffset, m, iGroup, sLineId, sRuleId, bUppercase, sMsg, sURL, bIdRule, sOption, bContext):
    "error for Writer (LO/OO)"
    xErr = SingleProofreadingError()
    #xErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
    xErr.nErrorStart = nOffset + m.start(iGroup)
    xErr.nErrorLength = m.end(iGroup) - m.start(iGroup)
    xErr.nErrorType = PROOFREADING
    xErr.aRuleIdentifier = sRuleId
    # suggestions
    if sRepl[0:1] == "=":
        sugg = globals()[sRepl[1:]](s, m)
        if sugg:
            if bUppercase and m.group(iGroup)[0:1].isupper():
                xErr.aSuggestions = tuple(map(str.capitalize, sugg.split("|")))
            else:
                xErr.aSuggestions = tuple(sugg.split("|"))
        else:
            xErr.aSuggestions = ()
    elif sRepl == "_":
        xErr.aSuggestions = ()
    else:
        if bUppercase and m.group(iGroup)[0:1].isupper():
            xErr.aSuggestions = tuple(map(str.capitalize, m.expand(sRepl).split("|")))
        else:
            xErr.aSuggestions = tuple(m.expand(sRepl).split("|"))
    # Message
    if sMsg[0:1] == "=":
        sMessage = globals()[sMsg[1:]](s, m)
    else:
        sMessage = m.expand(sMsg)
    xErr.aShortComment = sMessage   # sMessage.split("|")[0]     # in context menu
    xErr.aFullComment = sMessage   # sMessage.split("|")[-1]    # in dialog
    if bIdRule:
        xErr.aShortComment += "  # " + sLineId + " # " + sRuleId
    # URL
    if sURL:
        p = PropertyValue()
        p.Name = "FullCommentURL"
        p.Value = sURL
        xErr.aProperties = (p,)
    else:
        xErr.aProperties = ()
    return xErr


def _createDictError (s, sx, sRepl, nOffset, m, iGroup, sLineId, sRuleId, bUppercase, sMsg, sURL, bIdRule, sOption, bContext):
    "error as a dictionary"
    dErr = {}
    dErr["nStart"] = nOffset + m.start(iGroup)
    dErr["nEnd"] = nOffset + m.end(iGroup)
    dErr["sLineId"] = sLineId
    dErr["sRuleId"] = sRuleId
    dErr["sType"] = sOption  if sOption  else "notype"
    # suggestions
    if sRepl[0:1] == "=":
        sugg = globals()[sRepl[1:]](s, m)
        if sugg:
            if bUppercase and m.group(iGroup)[0:1].isupper():
                dErr["aSuggestions"] = list(map(str.capitalize, sugg.split("|")))
            else:
                dErr["aSuggestions"] = sugg.split("|")
        else:
            dErr["aSuggestions"] = ()
    elif sRepl == "_":
        dErr["aSuggestions"] = ()
    else:
        if bUppercase and m.group(iGroup)[0:1].isupper():
            dErr["aSuggestions"] = list(map(str.capitalize, m.expand(sRepl).split("|")))
        else:
            dErr["aSuggestions"] = m.expand(sRepl).split("|")
    # Message
    if sMsg[0:1] == "=":
        sMessage = globals()[sMsg[1:]](s, m)
    else:
        sMessage = m.expand(sMsg)
    dErr["sMessage"] = sMessage
    if bIdRule:
        dErr["sMessage"] += "  # " + sLineId + " # " + sRuleId
    # URL
    dErr["URL"] = sURL  if sURL  else ""
    # Context
    if bContext:
        dErr['sUnderlined'] = sx[m.start(iGroup):m.end(iGroup)]
        dErr['sBefore'] = sx[max(0,m.start(iGroup)-80):m.start(iGroup)]
        dErr['sAfter'] = sx[m.end(iGroup):m.end(iGroup)+80]
    return dErr


def _rewrite (s, sRepl, iGroup, m, bUppercase):
    "text processor: write sRepl in s at iGroup position"
    nLen = m.end(iGroup) - m.start(iGroup)
    if sRepl == "*":
        sNew = " " * nLen
    elif sRepl == ">" or sRepl == "_" or sRepl == "~":
        sNew = sRepl + " " * (nLen-1)
    elif sRepl == "@":
        sNew = "@" * nLen
    elif sRepl[0:1] == "=":
        sNew = globals()[sRepl[1:]](s, m)
        sNew = sNew + " " * (nLen-len(sNew))
        if bUppercase and m.group(iGroup)[0:1].isupper():
            sNew = sNew.capitalize()
    else:
        sNew = m.expand(sRepl)
        sNew = sNew + " " * (nLen-len(sNew))
    return s[0:m.start(iGroup)] + sNew + s[m.end(iGroup):]


def ignoreRule (sRuleId):
    _aIgnoredRules.add(sRuleId)


def resetIgnoreRules ():
    _aIgnoredRules.clear()


def reactivateRule (sRuleId):
    _aIgnoredRules.discard(sRuleId)


def listRules (sFilter=None):
    "generator: returns typle (sOption, sLineId, sRuleId)"
    if sFilter:
        try:
            zFilter = re.compile(sFilter)
        except:
            echo("# Error. List rules: wrong regex.")
            sFilter = None
    for sOption, lRuleGroup in chain(_getRules(True), _getRules(False)):
        for _, _, sLineId, sRuleId, _, _ in lRuleGroup:
            if not sFilter or zFilter.search(sRuleId):
                yield (sOption, sLineId, sRuleId)


def displayRules (sFilter=None):
    echo("List of rules. Filter: << " + str(sFilter) + " >>")
    for sOption, sLineId, sRuleId in listRules(sFilter):
        echo("{:<10} {:<10} {}".format(sOption, sLineId, sRuleId))


#### init
#### Initialization

try:
    # LibreOffice / OpenOffice
    from com.sun.star.linguistic2 import SingleProofreadingError
    from com.sun.star.text.TextMarkupType import PROOFREADING
    from com.sun.star.beans import PropertyValue
    #import lightproof_handler_${implname} as opt
    _createError = _createWriterError
except ImportError:
    _createError = _createDictError


def load (sContext="Python"):
    "initialization of the grammar checker"
    global _oSpellChecker
    global _sAppContext
    global _dOptions
    global _oTokenizer
    try:
        _oSpellChecker = SpellChecker("${lang}", "${dic_main_filename_py}", "${dic_extended_filename_py}", "${dic_community_filename_py}", "${dic_personal_filename_py}")
        _sAppContext = sContext
        _dOptions = dict(gc_options.getOptions(sContext))   # duplication necessary, to be able to reset to default
        _oTokenizer = _oSpellChecker.getTokenizer()
        _oSpellChecker.activateStorage()
    except:
        traceback.print_exc()


def setOption (sOpt, bVal):
    if sOpt in _dOptions:
        _dOptions[sOpt] = bVal


def getSpellChecker ():
    "return the spellchecker object"
def setOptions (dOpt):
    for sKey, bVal in dOpt.items():
        if sKey in _dOptions:
            _dOptions[sKey] = bVal


def getOptions ():
    return _dOptions
    return _oSpellChecker


def getDefaultOptions ():
    return dict(gc_options.getOptions(_sAppContext))

#### Rules

def getOptionsLabels (sLang):
    return gc_options.getUI(sLang)


def displayOptions (sLang):
    echo("List of options")
    echo("\n".join( [ k+":\t"+str(v)+"\t"+gc_options.getUI(sLang).get(k, ("?", ""))[0]  for k, v  in sorted(_dOptions.items()) ] ))
    echo("")


def resetOptions ():
    global _dOptions
    _dOptions = dict(gc_options.getOptions(_sAppContext))


def getSpellChecker ():
    return _oSpellChecker


def _getRules (bParagraph):
    try:
        if not bParagraph:
            return _rules.lSentenceRules
        return _rules.lParagraphRules
    except:
        _loadRules()
    if not bParagraph:
        return _rules.lSentenceRules
    return _rules.lParagraphRules


def _loadRules ():
    from . import gc_rules
    from . import gc_rules_graph
    global _rules
    global _rules_graph
    _rules = gc_rules
    _rules_graph = gc_rules_graph
    # compile rules regex
    for lRuleGroup in chain(_rules.lParagraphRules, _rules.lSentenceRules):
        for rule in lRuleGroup[1]:
            try:
                rule[0] = re.compile(rule[0])
            except:
                echo("Bad regular expression in # " + str(rule[2]))
                rule[0] = "(?i)<Grammalecte>"
    for sOption, lRuleGroup in chain(_rules.lParagraphRules, _rules.lSentenceRules):
        if sOption != "@@@@":
            for aRule in lRuleGroup:
                try:
                    aRule[0] = re.compile(aRule[0])
                except:
                    echo("Bad regular expression in # " + str(aRule[2]))
                    aRule[0] = "(?i)<Grammalecte>"


def ignoreRule (sRuleId):
    "disable rule <sRuleId>"
    _aIgnoredRules.add(sRuleId)


def resetIgnoreRules ():
    "clear all ignored rules"
    _aIgnoredRules.clear()


def reactivateRule (sRuleId):
    "(re)activate rule <sRuleId>"
    _aIgnoredRules.discard(sRuleId)


def listRules (sFilter=None):
    "generator: returns typle (sOption, sLineId, sRuleId)"
    if sFilter:
        try:
            zFilter = re.compile(sFilter)
        except:
            echo("# Error. List rules: wrong regex.")
            sFilter = None
    for sOption, lRuleGroup in chain(_getRules(True), _getRules(False)):
        if sOption != "@@@@":
            for _, _, sLineId, sRuleId, _, _ in lRuleGroup:
                if not sFilter or zFilter.search(sRuleId):
                    yield (sOption, sLineId, sRuleId)


def displayRules (sFilter=None):
    "display the name of rules, with the filter <sFilter>"
    echo("List of rules. Filter: << " + str(sFilter) + " >>")
    for sOption, sLineId, sRuleId in listRegexRules(sFilter):
        echo("{:<10} {:<10} {}".format(sOption, sLineId, sRuleId))


#### Options

def setOption (sOpt, bVal):
    "set option <sOpt> with <bVal> if it exists"
    if sOpt in _dOptions:
        _dOptions[sOpt] = bVal


def setOptions (dOpt):
    "update the dictionary of options with <dOpt>"
    for sKey, bVal in dOpt.items():
        if sKey in _dOptions:
            _dOptions[sKey] = bVal


def getOptions ():
    "return the dictionary of current options"
    return _dOptions


def getDefaultOptions ():
    "return the dictionary of default options"
    return dict(gc_options.getOptions(_sAppContext))


def getOptionsLabels (sLang):
    "return options labels"
    return gc_options.getUI(sLang)


def displayOptions (sLang):
    "display the list of grammar checking options"
    echo("List of options")
    echo("\n".join( [ k+":\t"+str(v)+"\t"+gc_options.getUI(sLang).get(k, ("?", ""))[0]  for k, v  in sorted(_dOptions.items()) ] ))
    echo("")


def resetOptions ():
    "set options to default values"
    global _dOptions
    _dOptions = dict(gc_options.getOptions(_sAppContext))


#### Parsing

_zEndOfSentence = re.compile(r'([.?!:;…][ .?!… »”")]*|.$)')
_zBeginOfParagraph = re.compile(r"^\W*")
_zEndOfParagraph = re.compile(r"\W*$")

def _getSentenceBoundaries (sText):
    iStart = _zBeginOfParagraph.match(sText).end()
    for m in _zEndOfSentence.finditer(sText):
        yield (iStart, m.end())
        iStart = m.end()


def parse (sText, sCountry="${country_default}", bDebug=False, dOptions=None, bContext=False):
    "init point to analyze a text"
    oText = TextParser(sText)
    return oText.parse(sCountry, bDebug, dOptions, bContext)


#### TEXT PARSER

class TextParser:
    "Text parser"

    def __init__ (self, sText):
        self.sText = sText
        self.sText0 = sText
        self.sSentence = ""
        self.sSentence0 = ""
        self.nOffsetWithinParagraph = 0
        self.lToken = []
        self.dTokenPos = {}
        self.dTags = {}
        self.dError = {}
        self.dErrorPriority = {}  # Key = position; value = priority

    def __str__ (self):
        s = "===== TEXT =====\n"
        s += "sentence: " + self.sSentence0 + "\n"
        s += "now:      " + self.sSentence  + "\n"
        for dToken in self.lToken:
            s += '#{i}\t{nStart}:{nEnd}\t{sValue}\t{sType}'.format(**dToken)
            if "lMorph" in dToken:
                s += "\t" + str(dToken["lMorph"])
            if "aTags" in dToken:
                s += "\t" + str(dToken["aTags"])
            s += "\n"
        #for nPos, dToken in self.dTokenPos.items():
        #    s += "{}\t{}\n".format(nPos, dToken)
        return s

    def parse (self, sCountry="${country_default}", bDebug=False, dOptions=None, bContext=False):
        "analyses the paragraph sText and returns list of errors"
        #sText = unicodedata.normalize("NFC", sText)
        dOpt = dOptions or _dOptions
        bShowRuleId = option('idrule')

        # parse paragraph
        try:
            self.parseText(self.sText, self.sText0, True, 0, sCountry, dOpt, bShowRuleId, bDebug, bContext)
        except:
            raise

        # cleanup
        sText = self.sText
        if " " in sText:
            sText = sText.replace(" ", ' ') # nbsp
        if " " in sText:
            sText = sText.replace(" ", ' ') # nnbsp
        if "'" in sText:
            sText = sText.replace("'", "’")
        if "‑" in sText:
            sText = sText.replace("‑", "-") # nobreakdash

        # parse sentences
        for iStart, iEnd in _getSentenceBoundaries(sText):
            if 4 < (iEnd - iStart) < 2000:
                try:
                    self.sSentence = sText[iStart:iEnd]
                    self.sSentence0 = self.sText0[iStart:iEnd]
                    self.nOffsetWithinParagraph = iStart
                    self.lToken = list(_oTokenizer.genTokens(self.sSentence, True))
                    self.dTokenPos = { dToken["nStart"]: dToken  for dToken in self.lToken  if dToken["sType"] != "INFO" }
                    self.parseText(self.sSentence, self.sSentence0, False, iStart, sCountry, dOpt, bShowRuleId, bDebug, bContext)
                except:
                    raise
        return self.dError.values() # this is a view (iterable)

    def parseText (self, sText, sText0, bParagraph, nOffset, sCountry, dOptions, bShowRuleId, bDebug, bContext):
        bChange = False
        for sOption, lRuleGroup in _getRules(bParagraph):
            if sOption == "@@@@":
                # graph rules
                if not bParagraph and bChange:
                    self.update(sText, bDebug)
                    bChange = False
                for sGraphName, sLineId in lRuleGroup:
                    if sGraphName not in dOptions or dOptions[sGraphName]:
                        if bDebug:
                            echo("\n>>>> GRAPH: " + sGraphName + " " + sLineId)
                        sText = self.parseGraph(_rules_graph.dAllGraph[sGraphName], sCountry, dOptions, bShowRuleId, bDebug, bContext)
            elif not sOption or dOptions.get(sOption, False):
                # regex rules
                for zRegex, bUppercase, sLineId, sRuleId, nPriority, lActions in lRuleGroup:
                    if sRuleId not in _aIgnoredRules:
                        for m in zRegex.finditer(sText):
                            bCondMemo = None
                            for sFuncCond, cActionType, sWhat, *eAct in lActions:
                                # action in lActions: [ condition, action type, replacement/suggestion/action[, iGroup[, message, URL]] ]
                                try:
                                    bCondMemo = not sFuncCond or globals()[sFuncCond](sText, sText0, m, self.dTokenPos, sCountry, bCondMemo)
                                    if bCondMemo:
                                        if bDebug:
                                            echo("RULE: " + sLineId)
                                        if cActionType == "-":
                                            # grammar error
                                            nErrorStart = nOffset + m.start(eAct[0])
                                            if nErrorStart not in self.dError or nPriority > self.dErrorPriority.get(nErrorStart, -1):
                                                self.dError[nErrorStart] = self._createErrorFromRegex(sText, sText0, sWhat, nOffset, m, eAct[0], sLineId, sRuleId, bUppercase, eAct[1], eAct[2], bShowRuleId, sOption, bContext)
                                                self.dErrorPriority[nErrorStart] = nPriority
                                        elif cActionType == "~":
                                            # text processor
                                            sText = self.rewriteText(sText, sWhat, eAct[0], m, bUppercase)
                                            bChange = True
                                            if bDebug:
                                                echo("~ " + sText + "  -- " + m.group(eAct[0]) + "  # " + sLineId)
                                        elif cActionType == "=":
                                            # disambiguation
                                            if not bParagraph:
                                                globals()[sWhat](sText, m, self.dTokenPos)
                                                if bDebug:
                                                    echo("= " + m.group(0) + "  # " + sLineId)
                                        elif cActionType == ">":
                                            # we do nothing, this test is just a condition to apply all following actions
                                            pass
                                        else:
                                            echo("# error: unknown action at " + sLineId)
                                    elif cActionType == ">":
                                        break
                                except Exception as e:
                                    raise Exception(str(e), "# " + sLineId + " # " + sRuleId)
        if bChange:
            if bParagraph:
                self.sText = sText
            else:
                self.sSentence = sText

    def update (self, sSentence, bDebug=False):
        "update <sSentence> and retokenize"
        self.sSentence = sSentence
        lNewToken = list(_oTokenizer.genTokens(sSentence, True))
        for dToken in lNewToken:
            if "lMorph" in self.dTokenPos.get(dToken["nStart"], {}):
                dToken["lMorph"] = self.dTokenPos[dToken["nStart"]]["lMorph"]
            if "aTags" in self.dTokenPos.get(dToken["nStart"], {}):
                dToken["aTags"] = self.dTokenPos[dToken["nStart"]]["aTags"]
        self.lToken = lNewToken
        self.dTokenPos = { dToken["nStart"]: dToken  for dToken in self.lToken  if dToken["sType"] != "INFO" }
        if bDebug:
            echo("UPDATE:")
            echo(self)

    def _getNextPointers (self, dToken, dGraph, dPointer, bDebug=False):
        "generator: return nodes where <dToken> “values” match <dNode> arcs"
        dNode = dPointer["dNode"]
        iNode1 = dPointer["iNode1"]
        bTokenFound = False
        # token value
        if dToken["sValue"] in dNode:
            if bDebug:
                echo("  MATCH: " + dToken["sValue"])
            yield { "iNode1": iNode1, "dNode": dGraph[dNode[dToken["sValue"]]] }
            bTokenFound = True
        if dToken["sValue"][0:2].istitle(): # we test only 2 first chars, to make valid words such as "Laissez-les", "Passe-partout".
            sValue = dToken["sValue"].lower()
            if sValue in dNode:
                if bDebug:
                    echo("  MATCH: " + sValue)
                yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] }
                bTokenFound = True
        elif dToken["sValue"].isupper():
            sValue = dToken["sValue"].lower()
            if sValue in dNode:
                if bDebug:
                    echo("  MATCH: " + sValue)
                yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] }
                bTokenFound = True
            sValue = dToken["sValue"].capitalize()
            if sValue in dNode:
                if bDebug:
                    echo("  MATCH: " + sValue)
                yield { "iNode1": iNode1, "dNode": dGraph[dNode[sValue]] }
                bTokenFound = True
        # regex value arcs
        if dToken["sType"] not in frozenset(["INFO", "PUNC", "SIGN"]):
            if "<re_value>" in dNode:
                for sRegex in dNode["<re_value>"]:
                    if "¬" not in sRegex:
                        # no anti-pattern
                        if re.search(sRegex, dToken["sValue"]):
                            if bDebug:
                                echo("  MATCH: ~" + sRegex)
                            yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_value>"][sRegex]] }
                            bTokenFound = True
                    else:
                        # there is an anti-pattern
                        sPattern, sNegPattern = sRegex.split("¬", 1)
                        if sNegPattern and re.search(sNegPattern, dToken["sValue"]):
                            continue
                        if not sPattern or re.search(sPattern, dToken["sValue"]):
                            if bDebug:
                                echo("  MATCH: ~" + sRegex)
                            yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_value>"][sRegex]] }
                            bTokenFound = True
        # analysable tokens
        if dToken["sType"][0:4] == "WORD":
            # token lemmas
            if "<lemmas>" in dNode:
                for sLemma in _oSpellChecker.getLemma(dToken["sValue"]):
                    if sLemma in dNode["<lemmas>"]:
                        if bDebug:
                            echo("  MATCH: >" + sLemma)
                        yield { "iNode1": iNode1, "dNode": dGraph[dNode["<lemmas>"][sLemma]] }
                        bTokenFound = True
            # regex morph arcs
            if "<re_morph>" in dNode:
                lMorph = dToken.get("lMorph", _oSpellChecker.getMorph(dToken["sValue"]))
                for sRegex in dNode["<re_morph>"]:
                    if "¬" not in sRegex:
                        # no anti-pattern
                        if any(re.search(sRegex, sMorph)  for sMorph in lMorph):
                            if bDebug:
                                echo("  MATCH: @" + sRegex)
                            yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] }
                            bTokenFound = True
                    else:
                        # there is an anti-pattern
                        sPattern, sNegPattern = sRegex.split("¬", 1)
                        if sNegPattern == "*":
                            # all morphologies must match with <sPattern>
                            if sPattern:
                                if lMorph and all(re.search(sPattern, sMorph)  for sMorph in lMorph):
                                    if bDebug:
                                        echo("  MATCH: @" + sRegex)
                                    yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] }
                                    bTokenFound = True
                        else:
                            if sNegPattern and any(re.search(sNegPattern, sMorph)  for sMorph in lMorph):
                                continue
                            if not sPattern or any(re.search(sPattern, sMorph)  for sMorph in lMorph):
                                if bDebug:
                                    echo("  MATCH: @" + sRegex)
                                yield { "iNode1": iNode1, "dNode": dGraph[dNode["<re_morph>"][sRegex]] }
                                bTokenFound = True
        # token tags
        if "aTags" in dToken and "<tags>" in dNode:
            for sTag in dToken["aTags"]:
                if sTag in dNode["<tags>"]:
                    if bDebug:
                        echo("  MATCH: /" + sTag)
                    yield { "iNode1": iNode1, "dNode": dGraph[dNode["<tags>"][sTag]] }
                    bTokenFound = True
        # meta arc (for token type)
        if "<meta>" in dNode:
            for sMeta in dNode["<meta>"]:
                # no regex here, we just search if <dNode["sType"]> exists within <sMeta>
                if sMeta == "*" or dToken["sType"] == sMeta:
                    if bDebug:
                        echo("  MATCH: *" + sMeta)
                    yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] }
                    bTokenFound = True
                elif "¬" in sMeta:
                    if dToken["sType"] not in sMeta:
                        if bDebug:
                            echo("  MATCH: *" + sMeta)
                        yield { "iNode1": iNode1, "dNode": dGraph[dNode["<meta>"][sMeta]] }
                        bTokenFound = True
        if not bTokenFound and "bKeep" in dPointer:
            yield dPointer
        # JUMP
        # Warning! Recurssion!
        if "<>" in dNode:
            dPointer2 = { "iNode1": iNode1, "dNode": dGraph[dNode["<>"]], "bKeep": True }
            yield from self._getNextPointers(dToken, dGraph, dPointer2, bDebug)

    def parseGraph (self, dGraph, sCountry="${country_default}", dOptions=None, bShowRuleId=False, bDebug=False, bContext=False):
        "parse graph with tokens from the text and execute actions encountered"
        lPointer = []
        bTagAndRewrite = False
        for iToken, dToken in enumerate(self.lToken):
            if bDebug:
                echo("TOKEN: " + dToken["sValue"])
            # check arcs for each existing pointer
            lNextPointer = []
            for dPointer in lPointer:
                lNextPointer.extend(self._getNextPointers(dToken, dGraph, dPointer, bDebug))
            lPointer = lNextPointer
            # check arcs of first nodes
            lPointer.extend(self._getNextPointers(dToken, dGraph, { "iNode1": iToken, "dNode": dGraph[0] }, bDebug))
            # check if there is rules to check for each pointer
            for dPointer in lPointer:
                #if bDebug:
                #    echo("+", dPointer)
                if "<rules>" in dPointer["dNode"]:
                    bChange = self._executeActions(dGraph, dPointer["dNode"]["<rules>"], dPointer["iNode1"]-1, iToken, dOptions, sCountry, bShowRuleId, bDebug, bContext)
                    if bChange:
                        bTagAndRewrite = True
        if bTagAndRewrite:
            self.rewriteFromTags(bDebug)
        if bDebug:
            echo(self)
        return self.sSentence

    def _executeActions (self, dGraph, dNode, nTokenOffset, nLastToken, dOptions, sCountry, bShowRuleId, bDebug, bContext):
        "execute actions found in the DARG"
        bChange = False
        for sLineId, nextNodeKey in dNode.items():
            bCondMemo = None
            for sRuleId in dGraph[nextNodeKey]:
                try:
                    if bDebug:
                        echo("   >TRY: " + sRuleId + " " + sLineId)
                    sOption, sFuncCond, cActionType, sWhat, *eAct = _rules_graph.dRule[sRuleId]
                    # Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
                    # TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
                    # Disambiguator [ option, condition, "=", replacement/suggestion/action ]
                    # Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
                    # Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
                    # Test          [ option, condition, ">", "" ]
                    if not sOption or dOptions.get(sOption, False):
                        bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0)
                        if bCondMemo:
                            if cActionType == "-":
                                # grammar error
                                iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL = eAct
                                nTokenErrorStart = nTokenOffset + iTokenStart  if iTokenStart > 0  else nLastToken + iTokenStart
                                if "bImmune" not in self.lToken[nTokenErrorStart]:
                                    nTokenErrorEnd = nTokenOffset + iTokenEnd  if iTokenEnd > 0  else nLastToken + iTokenEnd
                                    nErrorStart = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorStart]["nStart"] if cStartLimit == "<"  else self.lToken[nTokenErrorStart]["nEnd"])
                                    nErrorEnd = self.nOffsetWithinParagraph + (self.lToken[nTokenErrorEnd]["nEnd"] if cEndLimit == ">"  else self.lToken[nTokenErrorEnd]["nStart"])
                                    if nErrorStart not in self.dError or nPriority > self.dErrorPriority.get(nErrorStart, -1):
                                        self.dError[nErrorStart] = self._createErrorFromTokens(sWhat, nTokenOffset, nLastToken, nTokenErrorStart, nErrorStart, nErrorEnd, sLineId, sRuleId, bCaseSvty, sMessage, sURL, bShowRuleId, sOption, bContext)
                                        self.dErrorPriority[nErrorStart] = nPriority
                                        if bDebug:
                                            echo("    NEW_ERROR: {}".format(self.dError[nErrorStart]))
                            elif cActionType == "~":
                                # text processor
                                nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
                                nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
                                self._tagAndPrepareTokenForRewriting(sWhat, nTokenStart, nTokenEnd, nTokenOffset, nLastToken, eAct[2], bDebug)
                                bChange = True
                                if bDebug:
                                    echo("    TEXT_PROCESSOR: [{}:{}]  > {}".format(self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"], sWhat))
                            elif cActionType == "=":
                                # disambiguation
                                globals()[sWhat](self.lToken, nTokenOffset, nLastToken)
                                if bDebug:
                                    echo("    DISAMBIGUATOR: ({})  [{}:{}]".format(sWhat, self.lToken[nTokenOffset+1]["sValue"], self.lToken[nLastToken]["sValue"]))
                            elif cActionType == ">":
                                # we do nothing, this test is just a condition to apply all following actions
                                if bDebug:
                                    echo("    COND_OK")
                                pass
                            elif cActionType == "/":
                                # Tag
                                nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
                                nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
                                for i in range(nTokenStart, nTokenEnd+1):
                                    if "aTags" in self.lToken[i]:
                                        self.lToken[i]["aTags"].update(sWhat.split("|"))
                                    else:
                                        self.lToken[i]["aTags"] = set(sWhat.split("|"))
                                if bDebug:
                                    echo("    TAG: {} >  [{}:{}]".format(sWhat, self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"]))
                                if sWhat not in self.dTags:
                                    self.dTags[sWhat] = [nTokenStart, nTokenStart]
                                else:
                                    self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0])
                                    self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1])
                            elif cActionType == "%":
                                # immunity
                                if bDebug:
                                    echo("    IMMUNITY: " + _rules_graph.dRule[sRuleId])
                                nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
                                nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
                                if nTokenEnd - nTokenStart == 0:
                                    self.lToken[nTokenStart]["bImmune"] = True
                                    nErrorStart = self.nOffsetWithinParagraph + self.lToken[nTokenStart]["nStart"]
                                    if nErrorStart in self.dError:
                                        del self.dError[nErrorStart]
                                else:
                                    for i in range(nTokenStart, nTokenEnd+1):
                                        self.lToken[i]["bImmune"] = True
                                        nErrorStart = self.nOffsetWithinParagraph + self.lToken[i]["nStart"]
                                        if nErrorStart in self.dError:
                                            del self.dError[nErrorStart]
                            else:
                                echo("# error: unknown action at " + sLineId)
                        elif cActionType == ">":
                            if bDebug:
                                echo("    COND_BREAK")
                            break
                except Exception as e:
                    raise Exception(str(e), sLineId, sRuleId, self.sSentence)
        return bChange

    def _createErrorFromRegex (self, sText, sText0, sRepl, nOffset, m, iGroup, sLineId, sRuleId, bUppercase, sMsg, sURL, bShowRuleId, sOption, bContext):
        nStart = nOffset + m.start(iGroup)
        nEnd = nOffset + m.end(iGroup)
        # suggestions
        if sRepl[0:1] == "=":
            sSugg = globals()[sRepl[1:]](sText, m)
            lSugg = sSugg.split("|")  if sSugg  else []
        elif sRepl == "_":
            lSugg = []
        else:
            lSugg = m.expand(sRepl).split("|")
        if bUppercase and lSugg and m.group(iGroup)[0:1].isupper():
            lSugg = list(map(str.capitalize, lSugg))
        # Message
        sMessage = globals()[sMsg[1:]](sText, m)  if sMsg[0:1] == "="  else  m.expand(sMsg)
        if bShowRuleId:
            sMessage += "  # " + sLineId + " # " + sRuleId
        #
        if _bWriterError:
            return self._createErrorForWriter(nStart, nEnd - nStart, sRuleId, sMessage, lSugg, sURL)
        else:
            return self._createErrorAsDict(nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext)

    def _createErrorFromTokens (self, sSugg, nTokenOffset, nLastToken, iFirstToken, nStart, nEnd, sLineId, sRuleId, bCaseSvty, sMsg, sURL, bShowRuleId, sOption, bContext):
        # suggestions
        if sSugg[0:1] == "=":
            sSugg = globals()[sSugg[1:]](self.lToken, nTokenOffset, nLastToken)
            lSugg = sSugg.split("|")  if sSugg  else []
        elif sSugg == "_":
            lSugg = []
        else:
            lSugg = self._expand(sSugg, nTokenOffset, nLastToken).split("|")
        if bCaseSvty and lSugg and self.lToken[iFirstToken]["sValue"][0:1].isupper():
            lSugg = list(map(lambda s: s[0:1].upper()+s[1:], lSugg))
        # Message
        sMessage = globals()[sMsg[1:]](self.lToken, nTokenOffset, nLastToken)  if sMsg[0:1] == "="  else self._expand(sMsg, nTokenOffset, nLastToken)
        if bShowRuleId:
            sMessage += "  " + sLineId + " # " + sRuleId

def _getPath ():
    return os.path.join(os.path.dirname(sys.modules[__name__].__file__), __name__ + ".py")

        #
        if _bWriterError:
            return self._createErrorForWriter(nStart, nEnd - nStart, sRuleId, sMessage, lSugg, sURL)
        else:
            return self._createErrorAsDict(nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext)

    def _createErrorForWriter (self, nStart, nLen, sRuleId, sMessage, lSugg, sURL):
        xErr = SingleProofreadingError()    # uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" )
        xErr.nErrorStart = nStart
        xErr.nErrorLength = nLen
        xErr.nErrorType = PROOFREADING
        xErr.aRuleIdentifier = sRuleId
        xErr.aShortComment = sMessage   # sMessage.split("|")[0]     # in context menu
        xErr.aFullComment = sMessage    # sMessage.split("|")[-1]    # in dialog
        xErr.aSuggestions = tuple(lSugg)
        #xPropertyLineType = PropertyValue(Name="LineType", Value=5) # DASH or WAVE
        #xPropertyLineColor = PropertyValue(Name="LineColor", Value=getRGB("FFAA00"))
        if sURL:
            xPropertyURL = PropertyValue(Name="FullCommentURL", Value=sURL)
            xErr.aProperties = (xPropertyURL,)
        else:
            xErr.aProperties = ()
        return xErr

    def _createErrorAsDict (self, nStart, nEnd, sLineId, sRuleId, sOption, sMessage, lSugg, sURL, bContext):
        dErr = {
            "nStart": nStart,
            "nEnd": nEnd,
            "sLineId": sLineId,
            "sRuleId": sRuleId,
            "sType": sOption  if sOption  else "notype",
            "sMessage": sMessage,
            "aSuggestions": lSugg,
            "URL": sURL
        }
        if bContext:
            dErr['sUnderlined'] = self.sText0[nStart:nEnd]
            dErr['sBefore'] = self.sText0[max(0,nStart-80):nStart]
            dErr['sAfter'] = self.sText0[nEnd:nEnd+80]
        return dErr

    def _expand (self, sText, nTokenOffset, nLastToken):
        for m in re.finditer(r"\\(-?[0-9]+)", sText):
            if m.group(1)[0:1] == "-":
                sText = sText.replace(m.group(0), self.lToken[nLastToken+int(m.group(1))+1]["sValue"])
            else:
                sText = sText.replace(m.group(0), self.lToken[nTokenOffset+int(m.group(1))]["sValue"])
        return sText

    def rewriteText (self, sText, sRepl, iGroup, m, bUppercase):
        "text processor: write <sRepl> in <sText> at <iGroup> position"
        nLen = m.end(iGroup) - m.start(iGroup)
        if sRepl == "*":
            sNew = " " * nLen
        elif sRepl == "_":
            sNew = sRepl + " " * (nLen-1)
        elif sRepl[0:1] == "=":
            sNew = globals()[sRepl[1:]](sText, m)
            sNew = sNew + " " * (nLen-len(sNew))
            if bUppercase and m.group(iGroup)[0:1].isupper():
                sNew = sNew.capitalize()
        else:
            sNew = m.expand(sRepl)
            sNew = sNew + " " * (nLen-len(sNew))
        return sText[0:m.start(iGroup)] + sNew + sText[m.end(iGroup):]

    def _tagAndPrepareTokenForRewriting (self, sWhat, nTokenRewriteStart, nTokenRewriteEnd, nTokenOffset, nLastToken, bCaseSvty, bDebug):
        "text processor: rewrite tokens between <nTokenRewriteStart> and <nTokenRewriteEnd> position"
        if sWhat == "*":
            # purge text
            if nTokenRewriteEnd - nTokenRewriteStart == 0:
                self.lToken[nTokenRewriteStart]["bToRemove"] = True
            else:
                for i in range(nTokenRewriteStart, nTokenRewriteEnd+1):
                    self.lToken[i]["bToRemove"] = True
        elif sWhat == "␣":
            # merge tokens
            self.lToken[nTokenRewriteStart]["nMergeUntil"] = nTokenRewriteEnd
        elif sWhat == "_":
            # neutralized token
            if nTokenRewriteEnd - nTokenRewriteStart == 0:
                self.lToken[nTokenRewriteStart]["sNewValue"] = "_"
            else:
                for i in range(nTokenRewriteStart, nTokenRewriteEnd+1):
                    self.lToken[i]["sNewValue"] = "_"
        else:
            if sWhat.startswith("="):
                sWhat = globals()[sWhat[1:]](self.lToken, nTokenOffset, nLastToken)
            else:
                sWhat = self._expand(sWhat, nTokenOffset, nLastToken)
            bUppercase = bCaseSvty and self.lToken[nTokenRewriteStart]["sValue"][0:1].isupper()
            if nTokenRewriteEnd - nTokenRewriteStart == 0:
                # one token
                if bUppercase:
                    sWhat = sWhat[0:1].upper() + sWhat[1:]
                self.lToken[nTokenRewriteStart]["sNewValue"] = sWhat
            else:
                # several tokens
                lTokenValue = sWhat.split("|")
                if len(lTokenValue) != (nTokenRewriteEnd - nTokenRewriteStart + 1):
                    echo("Error. Text processor: number of replacements != number of tokens.")
                    return
                for i, sValue in zip(range(nTokenRewriteStart, nTokenRewriteEnd+1), lTokenValue):
                    if not sValue or sValue == "*":
                        self.lToken[i]["bToRemove"] = True
                    else:
                        if bUppercase:
                            sValue = sValue[0:1].upper() + sValue[1:]
                        self.lToken[i]["sNewValue"] = sValue

    def rewriteFromTags (self, bDebug=False):
        "rewrite the sentence, modify tokens, purge the token list"
        if bDebug:
            echo("REWRITE")
        lNewToken = []
        nMergeUntil = 0
        dTokenMerger = None
        for iToken, dToken in enumerate(self.lToken):
            bKeepToken = True
            if dToken["sType"] != "INFO":
                if nMergeUntil and iToken <= nMergeUntil:
                    dTokenMerger["sValue"] += " " * (dToken["nStart"] - dTokenMerger["nEnd"]) + dToken["sValue"]
                    dTokenMerger["nEnd"] = dToken["nEnd"]
                    if bDebug:
                        echo("  MERGED TOKEN: " + dTokenMerger["sValue"])
                    bKeepToken = False
                if "nMergeUntil" in dToken:
                    if iToken > nMergeUntil: # this token is not already merged with a previous token
                        dTokenMerger = dToken
                    if dToken["nMergeUntil"] > nMergeUntil:
                        nMergeUntil = dToken["nMergeUntil"]
                    del dToken["nMergeUntil"]
                elif "bToRemove" in dToken:
                    if bDebug:
                        echo("  REMOVED: " + dToken["sValue"])
                    self.sSentence = self.sSentence[:dToken["nStart"]] + " " * (dToken["nEnd"] - dToken["nStart"]) + self.sSentence[dToken["nEnd"]:]
                    bKeepToken = False
            #
            if bKeepToken:
                lNewToken.append(dToken)
                if "sNewValue" in dToken:
                    # rewrite token and sentence
                    if bDebug:
                        echo(dToken["sValue"] + " -> " + dToken["sNewValue"])
                    dToken["sRealValue"] = dToken["sValue"]
                    dToken["sValue"] = dToken["sNewValue"]
                    nDiffLen = len(dToken["sRealValue"]) - len(dToken["sNewValue"])
                    sNewRepl = (dToken["sNewValue"] + " " * nDiffLen)  if nDiffLen >= 0  else dToken["sNewValue"][:len(dToken["sRealValue"])]
                    self.sSentence = self.sSentence[:dToken["nStart"]] + sNewRepl + self.sSentence[dToken["nEnd"]:]
                    del dToken["sNewValue"]
            else:
                try:
                    del self.dTokenPos[dToken["nStart"]]
                except:
                    echo(self)
                    echo(dToken)
                    exit()
        if bDebug:
            echo("  TEXT REWRITED: " + self.sSentence)
        self.lToken.clear()
        self.lToken = lNewToken


#### common functions

# common regexes
_zEndOfSentence = re.compile('([.?!:;…][ .?!… »”")]*|.$)')
_zBeginOfParagraph = re.compile("^\W*")
_zEndOfParagraph = re.compile("\W*$")
_zNextWord = re.compile(" +(\w[\w-]*)")
_zPrevWord = re.compile("(\w[\w-]*) +$")


def option (sOpt):
    "return True if option sOpt is active"
    "return True if option <sOpt> is active"
    return _dOptions.get(sOpt, False)


def displayInfo (dDA, tWord):
    "for debugging: retrieve info of word"
    if not tWord:
        echo("> nothing to find")
        return True
    if tWord[1] not in _dAnalyses and not _storeMorphFromFSA(tWord[1]):
        echo("> not in FSA")
        return True
    if tWord[0] in dDA:
        echo("DA: " + str(dDA[tWord[0]]))
    echo("FSA: " + str(_dAnalyses[tWord[1]]))
    return True


def _storeMorphFromFSA (sWord):
    "retrieves morphologies list from _oSpellChecker -> _dAnalyses"
    global _dAnalyses
    _dAnalyses[sWord] = _oSpellChecker.getMorph(sWord)
    return True  if _dAnalyses[sWord]  else False


def morph (dDA, tWord, sPattern, bStrict=True, bNoWord=False):
    "analyse a tuple (position, word), return True if sPattern in morphologies (disambiguation on)"
    if not tWord:
        return bNoWord
    if tWord[1] not in _dAnalyses and not _storeMorphFromFSA(tWord[1]):
        return False
    lMorph = dDA[tWord[0]]  if tWord[0] in dDA  else _dAnalyses[tWord[1]]
    if not lMorph:
        return False
    p = re.compile(sPattern)
    if bStrict:
        return all(p.search(s)  for s in lMorph)
    return any(p.search(s)  for s in lMorph)


def morphex (dDA, tWord, sPattern, sNegPattern, bNoWord=False):
    "analyse a tuple (position, word), returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation on)"
    if not tWord:
        return bNoWord
    if tWord[1] not in _dAnalyses and not _storeMorphFromFSA(tWord[1]):
        return False
    lMorph = dDA[tWord[0]]  if tWord[0] in dDA  else _dAnalyses[tWord[1]]
    # check negative condition
    np = re.compile(sNegPattern)
    if any(np.search(s)  for s in lMorph):
        return False
    # search sPattern
    p = re.compile(sPattern)
    return any(p.search(s)  for s in lMorph)


def analyse (sWord, sPattern, bStrict=True):
    "analyse a word, return True if sPattern in morphologies (disambiguation off)"
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):
        return False
    if not _dAnalyses[sWord]:
        return False
    p = re.compile(sPattern)
    if bStrict:
        return all(p.search(s)  for s in _dAnalyses[sWord])
    return any(p.search(s)  for s in _dAnalyses[sWord])


def analysex (sWord, sPattern, sNegPattern):
    "analyse a word, returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation off)"
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):
        return False
    # check negative condition
    np = re.compile(sNegPattern)
    if any(np.search(s)  for s in _dAnalyses[sWord]):
        return False
    # search sPattern
    p = re.compile(sPattern)
    return any(p.search(s)  for s in _dAnalyses[sWord])


def stem (sWord):
    "returns a list of sWord's stems"
    if not sWord:
        return []
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):
        return []
    return [ s[1:s.find(" ")]  for s in _dAnalyses[sWord] ]


## functions to get text outside pattern scope
#### Functions to get text outside pattern scope

# warning: check compile_rules.py to understand how it works

_zNextWord = re.compile(r" +(\w[\w-]*)")
_zPrevWord = re.compile(r"(\w[\w-]*) +$")

def nextword (s, iStart, n):
    "get the nth word of the input string or empty string"
    m = re.match("(?: +[\\w%-]+){" + str(n-1) + "} +([\\w%-]+)", s[iStart:])
    if not m:
        return None
    return (iStart+m.start(1), m.group(1))

510
511
512
513
514
515
516
517

518
519
520
521
522
523
524
525
526
527
528
529


530
531

532















533
534
535
















































536


537
538
539
540
541
542
543
544
545
546






































547
548
549
550
551

















































552
553
554
555
556
557




558

559






560

561
562
563





































564
565
566


567
568
569
570
571





















572
573
574
575
576



























































577

578
579
580
581
582
583
584


585





847
848
849
850
851
852
853

854
855
856
857
858
859
860
861
862
863



864
865
866
867
868

869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884


885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935










936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973





974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024




1025
1026
1027
1028
1029
1030

1031
1032
1033
1034
1035
1036
1037
1038



1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076


1077
1078

1079



1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102



1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178







-
+









-
-
-
+
+


+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


-
-
-
-
+
+
+
+

+
-
+
+
+
+
+
+

+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

-
-
+
+
-

-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+







+
+

+
+
+
+
+
    if sNegPattern and re.search(sNegPattern, s):
        return False
    if re.search(sPattern, s):
        return True
    return False


def look_chk1 (dDA, s, nOffset, sPattern, sPatternGroup1, sNegPatternGroup1=None):
def look_chk1 (dTokenPos, s, nOffset, sPattern, sPatternGroup1, sNegPatternGroup1=""):
    "returns True if s has pattern sPattern and m.group(1) has pattern sPatternGroup1"
    m = re.search(sPattern, s)
    if not m:
        return False
    try:
        sWord = m.group(1)
        nPos = m.start(1) + nOffset
    except:
        return False
    if sNegPatternGroup1:
        return morphex(dDA, (nPos, sWord), sPatternGroup1, sNegPatternGroup1)
    return morph(dDA, (nPos, sWord), sPatternGroup1, False)
    return morph(dTokenPos, (nPos, sWord), sPatternGroup1, sNegPatternGroup1)



#### Analyse groups for regex rules
#### Disambiguator

def displayInfo (dTokenPos, tWord):
    "for debugging: retrieve info of word"
    if not tWord:
        echo("> nothing to find")
        return True
    lMorph = _oSpellChecker.getMorph(tWord[1])
    if not lMorph:
        echo("> not in dictionary")
        return True
    echo("TOKENS:", dTokenPos)
    if tWord[0] in dTokenPos and "lMorph" in dTokenPos[tWord[0]]:
        echo("DA: " + str(dTokenPos[tWord[0]]["lMorph"]))
    echo("FSA: " + str(lMorph))
    return True

def select (dDA, nPos, sWord, sPattern, lDefault=None):
    if not sWord:

def morph (dTokenPos, tWord, sPattern, sNegPattern="", bNoWord=False):
    "analyse a tuple (position, word), returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation on)"
    if not tWord:
        return bNoWord
    lMorph = dTokenPos[tWord[0]]["lMorph"]  if tWord[0] in dTokenPos and "lMorph" in dTokenPos[tWord[0]]  else _oSpellChecker.getMorph(tWord[1])
    if not lMorph:
        return False
    # check negative condition
    if sNegPattern:
        if sNegPattern == "*":
            # all morph must match sPattern
            zPattern = re.compile(sPattern)
            return all(zPattern.search(sMorph)  for sMorph in lMorph)
        else:
            zNegPattern = re.compile(sNegPattern)
            if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
                return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


def analyse (sWord, sPattern, sNegPattern=""):
    "analyse a word, returns True if not sNegPattern in word morphologies and sPattern in word morphologies (disambiguation off)"
    lMorph = _oSpellChecker.getMorph(sWord)
    if not lMorph:
        return False
    # check negative condition
    if sNegPattern:
        if sNegPattern == "*":
            zPattern = re.compile(sPattern)
            return all(zPattern.search(sMorph)  for sMorph in lMorph)
        else:
            zNegPattern = re.compile(sNegPattern)
            if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
                return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


#### Analyse tokens for graph rules

def g_value (dToken, sValues, nLeft=None, nRight=None):
    "test if <dToken['sValue']> is in sValues (each value should be separated with |)"
    sValue = "|"+dToken["sValue"]+"|"  if nLeft is None  else "|"+dToken["sValue"][slice(nLeft, nRight)]+"|"
    if sValue in sValues:
        return True
    if dToken["sValue"][0:2].istitle(): # we test only 2 first chars, to make valid words such as "Laissez-les", "Passe-partout".
        if sValue.lower() in sValues:
    if nPos in dDA:
        return True
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):
        return True
    if len(_dAnalyses[sWord]) == 1:
        return True
    lSelect = [ sMorph  for sMorph in _dAnalyses[sWord]  if re.search(sPattern, sMorph) ]
    if lSelect:
        if len(lSelect) != len(_dAnalyses[sWord]):
            dDA[nPos] = lSelect
            return True
    elif dToken["sValue"].isupper():
        #if sValue.lower() in sValues:
        #    return True
        sValue = "|"+sValue[1:].capitalize()
        if sValue in sValues:
            return True
    return False


def g_morph (dToken, sPattern, sNegPattern="", nLeft=None, nRight=None, bMemorizeMorph=True):
    "analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies"
    if "lMorph" in dToken:
        lMorph = dToken["lMorph"]
    else:
        if nLeft is not None:
            lMorph = _oSpellChecker.getMorph(dToken["sValue"][slice(nLeft, nRight)])
            if bMemorizeMorph:
                dToken["lMorph"] = lMorph
        else:
            lMorph = _oSpellChecker.getMorph(dToken["sValue"])
    if not lMorph:
        return False
    # check negative condition
    if sNegPattern:
        if sNegPattern == "*":
            # all morph must match sPattern
            zPattern = re.compile(sPattern)
            return all(zPattern.search(sMorph)  for sMorph in lMorph)
        else:
            zNegPattern = re.compile(sNegPattern)
            if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
                return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


            #echo("= "+sWord+" "+str(dDA.get(nPos, "null")))
    elif lDefault:
        dDA[nPos] = lDefault
        #echo("= "+sWord+" "+str(dDA.get(nPos, "null")))
    return True
def g_analyse (dToken, sPattern, sNegPattern="", nLeft=None, nRight=None, bMemorizeMorph=True):
    "analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies (disambiguation off)"
    if nLeft is not None:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"][slice(nLeft, nRight)])
        if bMemorizeMorph:
            dToken["lMorph"] = lMorph
    else:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"])
    if not lMorph:
        return False
    # check negative condition
    if sNegPattern:
        if sNegPattern == "*":
            # all morph must match sPattern
            zPattern = re.compile(sPattern)
            return all(zPattern.search(sMorph)  for sMorph in lMorph)
        else:
            zNegPattern = re.compile(sNegPattern)
            if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
                return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


def g_merged_analyse (dToken1, dToken2, cMerger, sPattern, sNegPattern="", bSetMorph=True):
    "merge two token values, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies (disambiguation off)"
    lMorph = _oSpellChecker.getMorph(dToken1["sValue"] + cMerger + dToken2["sValue"])
    if not lMorph:
        return False
    # check negative condition
    if sNegPattern:
        if sNegPattern == "*":
            # all morph must match sPattern
            zPattern = re.compile(sPattern)
            bResult = all(zPattern.search(sMorph)  for sMorph in lMorph)
            if bResult and bSetMorph:
                dToken1["lMorph"] = lMorph
            return bResult
        else:
            zNegPattern = re.compile(sNegPattern)
            if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
                return False
    # search sPattern
    zPattern = re.compile(sPattern)
    bResult = any(zPattern.search(sMorph)  for sMorph in lMorph)
    if bResult and bSetMorph:
        dToken1["lMorph"] = lMorph
    return bResult


def exclude (dDA, nPos, sWord, sPattern, lDefault=None):
    if not sWord:
        return True
    if nPos in dDA:
def g_tag_before (dToken, dTags, sTag):
    if sTag not in dTags:
        return False
    if dToken["i"] > dTags[sTag][0]:
        return True
    return False
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):


def g_tag_after (dToken, dTags, sTag):
    if sTag not in dTags:
        return False
    if dToken["i"] < dTags[sTag][1]:
        return True
    return False
    if len(_dAnalyses[sWord]) == 1:
        return True
    lSelect = [ sMorph  for sMorph in _dAnalyses[sWord]  if not re.search(sPattern, sMorph) ]


def g_tag (dToken, sTag):
    return "aTags" in dToken and sTag in dToken["aTags"]


def g_space_between_tokens (dToken1, dToken2, nMin, nMax=None):
    nSpace = dToken2["nStart"] - dToken1["nEnd"]
    if nSpace < nMin:
        return False
    if nMax is not None and nSpace > nMax:
        return False
    return True


def g_token (lToken, i):
    if i < 0:
        return lToken[0]
    if i >= len(lToken):
        return lToken[-1]
    return lToken[i]



#### Disambiguator for regex rules

def select (dTokenPos, nPos, sWord, sPattern, lDefault=None):
    "Disambiguation: select morphologies of <sWord> matching <sPattern>"
    if not sWord:
        return True
    if nPos not in dTokenPos:
        echo("Error. There should be a token at this position: ", nPos)
        return True
    lMorph = _oSpellChecker.getMorph(sWord)
    if not lMorph or len(lMorph) == 1:
        return True
    lSelect = [ sMorph  for sMorph in lMorph  if re.search(sPattern, sMorph) ]
    if lSelect:
        if len(lSelect) != len(_dAnalyses[sWord]):
            dDA[nPos] = lSelect
        if len(lSelect) != len(lMorph):
            dTokenPos[nPos]["lMorph"] = lSelect
            #echo("= "+sWord+" "+str(dDA.get(nPos, "null")))
    elif lDefault:
        dDA[nPos] = lDefault
        #echo("= "+sWord+" "+str(dDA.get(nPos, "null")))
    return True
        dTokenPos[nPos]["lMorph"] = lDefault
    return True


def exclude (dTokenPos, nPos, sWord, sPattern, lDefault=None):
    "Disambiguation: exclude morphologies of <sWord> matching <sPattern>"
    if not sWord:
        return True
    if nPos not in dTokenPos:
        echo("Error. There should be a token at this position: ", nPos)
        return True
    lMorph = _oSpellChecker.getMorph(sWord)
    if not lMorph or len(lMorph) == 1:
        return True
    lSelect = [ sMorph  for sMorph in lMorph  if not re.search(sPattern, sMorph) ]
    if lSelect:
        if len(lSelect) != len(lMorph):
            dTokenPos[nPos]["lMorph"] = lSelect
    elif lDefault:
        dTokenPos[nPos]["lMorph"] = lDefault
    return True


def define (dDA, nPos, lMorph):
    dDA[nPos] = lMorph
    #echo("= "+str(nPos)+" "+str(dDA[nPos]))
def define (dTokenPos, nPos, lMorph):
    "Disambiguation: set morphologies of token at <nPos> with <lMorph>"
    if nPos not in dTokenPos:
        echo("Error. There should be a token at this position: ", nPos)
        return True
    dTokenPos[nPos]["lMorph"] = lMorph
    return True


#### Disambiguation for graph rules

def g_select (dToken, sPattern, lDefault=None):
    "select morphologies for <dToken> according to <sPattern>, always return True"
    lMorph = dToken["lMorph"]  if "lMorph" in dToken  else _oSpellChecker.getMorph(dToken["sValue"])
    if not lMorph or len(lMorph) == 1:
        if lDefault:
            dToken["lMorph"] = lDefault
            #echo("DA:", dToken["sValue"], dToken["lMorph"])
        return True
    lSelect = [ sMorph  for sMorph in lMorph  if re.search(sPattern, sMorph) ]
    if lSelect:
        if len(lSelect) != len(lMorph):
            dToken["lMorph"] = lSelect
    elif lDefault:
        dToken["lMorph"] = lDefault
    #echo("DA:", dToken["sValue"], dToken["lMorph"])
    return True


def g_exclude (dToken, sPattern, lDefault=None):
    "select morphologies for <dToken> according to <sPattern>, always return True"
    lMorph = dToken["lMorph"]  if "lMorph" in dToken  else _oSpellChecker.getMorph(dToken["sValue"])
    if not lMorph or len(lMorph) == 1:
        if lDefault:
            dToken["lMorph"] = lDefault
            #echo("DA:", dToken["sValue"], dToken["lMorph"])
        return True
    lSelect = [ sMorph  for sMorph in lMorph  if not re.search(sPattern, sMorph) ]
    if lSelect:
        if len(lSelect) != len(lMorph):
            dToken["lMorph"] = lSelect
    elif lDefault:
        dToken["lMorph"] = lDefault
    #echo("DA:", dToken["sValue"], dToken["lMorph"])
    return True


def g_define (dToken, lMorph):
    "set morphologies of <dToken>, always return True"
    dToken["lMorph"] = lMorph
    #echo("DA:", dToken["sValue"], lMorph)
    return True


def g_define_from (dToken, nLeft=None, nRight=None):
    if nLeft is not None:
        dToken["lMorph"] = _oSpellChecker.getMorph(dToken["sValue"][slice(nLeft, nRight)])
    else:
        dToken["lMorph"] = _oSpellChecker.getMorph(dToken["sValue"])
    return True



#### GRAMMAR CHECKER PLUGINS

${plugins}


#### CALLABLES FOR REGEX RULES (generated code)

${callables}


#### CALLABLES FOR GRAPH RULES (generated code)

${graph_callables}

Modified gc_core/py/lang_core/gc_options.py from [871c8d4b8f] to [c84731594a].





1
2
3

4
5
6
7
8
9

10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
+
+
+
+



+






+







"""
Grammar checker default options
"""

# generated code, do not edit

def getUI (sLang):
    "returns dictionary of UI labels"
    if sLang in _dOptLabel:
        return _dOptLabel[sLang]
    return _dOptLabel["fr"]


def getOptions (sContext="Python"):
    "returns dictionary of options"
    if sContext in dOpt:
        return dOpt[sContext]
    return dOpt["Python"]


lStructOpt = ${lStructOpt}

Modified gc_core/py/lang_core/gc_rules.py from [3cf95f4a21] to [2ef08593b5].





1
2
3
4
5
1
2
3
4
5
6
7
8
9
+
+
+
+





"""
Grammar checker regex rules
"""

# generated code, do not edit

lParagraphRules = ${paragraph_rules}

lSentenceRules = ${sentence_rules}

Added gc_core/py/lang_core/gc_rules_graph.py version [373592f3fb].










1
2
3
4
5
6
7
8
9
+
+
+
+
+
+
+
+
+
"""
Grammar checker graph rules
"""

# generated code, do not edit

dAllGraph = ${rules_graphs}

dRule = ${rules_actions}

Modified gc_core/py/text.py from [133d154e72] to [137c7cc30f].

1




2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
9
10
11
12

+
+
+
+







#!python3

"""
Text tools
"""

import textwrap
from itertools import chain


def getParagraph (sText):
    "generator: returns paragraphs of text"
39
40
41
42
43
44
45
46

47
48
49
50
51
52
53

54
55
56
57
58
59
60
61
62

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

79
80
81
82
83
84
85
43
44
45
46
47
48
49

50
51
52
53
54
55
56

57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

82
83
84
85
86
87
88
89







-
+






-
+








-
+















-
+







        return ""
    lGrammErrs = sorted(aGrammErrs, key=lambda d: d["nStart"])
    lSpellErrs = sorted(aSpellErrs, key=lambda d: d['nStart'])
    sText = ""
    nOffset = 0
    for sLine in wrap(sParagraph, nWidth): # textwrap.wrap(sParagraph, nWidth, drop_whitespace=False)
        sText += sLine + "\n"
        ln = len(sLine)
        nLineLen = len(sLine)
        sErrLine = ""
        nLenErrLine = 0
        nGrammErr = 0
        nSpellErr = 0
        for dErr in lGrammErrs:
            nStart = dErr["nStart"] - nOffset
            if nStart < ln:
            if nStart < nLineLen:
                nGrammErr += 1
                if nStart >= nLenErrLine:
                    sErrLine += " " * (nStart - nLenErrLine) + "^" * (dErr["nEnd"] - dErr["nStart"])
                    nLenErrLine = len(sErrLine)
            else:
                break
        for dErr in lSpellErrs:
            nStart = dErr['nStart'] - nOffset
            if nStart < ln:
            if nStart < nLineLen:
                nSpellErr += 1
                nEnd = dErr['nEnd'] - nOffset
                if nEnd > len(sErrLine):
                    sErrLine += " " * (nEnd - len(sErrLine))
                sErrLine = sErrLine[:nStart] + "°" * (nEnd - nStart) + sErrLine[nEnd:]
            else:
                break
        if sErrLine:
            sText += sErrLine + "\n"
        if nGrammErr:
            sText += getReadableErrors(lGrammErrs[:nGrammErr], nWidth)
            del lGrammErrs[0:nGrammErr]
        if nSpellErr:
            sText += getReadableErrors(lSpellErrs[:nSpellErr], nWidth, True)
            del lSpellErrs[0:nSpellErr]
        nOffset += ln
        nOffset += nLineLen
    return sText


def getReadableErrors (lErrs, nWidth, bSpell=False):
    "Returns lErrs errors as readable errors"
    sErrors = ""
    for dErr in lErrs:
93
94
95
96
97
98
99
100

101
102
103


104
105

106
107
108


109
110
111
112
113
114
115
97
98
99
100
101
102
103

104
105


106
107
108

109
110


111
112
113
114
115
116
117
118
119







-
+

-
-
+
+

-
+

-
-
+
+







    return sErrors


def getReadableError (dErr, bSpell=False):
    "Returns an error dErr as a readable error"
    try:
        if bSpell:
            s = u"* {nStart}:{nEnd}  # {sValue}:".format(**dErr)
            sText = u"* {nStart}:{nEnd}  # {sValue}:".format(**dErr)
        else:
            s = u"* {nStart}:{nEnd}  # {sLineId} / {sRuleId}:\n".format(**dErr)
            s += "  " + dErr.get("sMessage", "# error : message not found")
            sText = u"* {nStart}:{nEnd}  # {sLineId} / {sRuleId}:\n".format(**dErr)
            sText += "  " + dErr.get("sMessage", "# error : message not found")
        if dErr.get("aSuggestions", None):
            s += "\n  > Suggestions : " + " | ".join(dErr.get("aSuggestions", "# error : suggestions not found"))
            sText += "\n  > Suggestions : " + " | ".join(dErr.get("aSuggestions", "# error : suggestions not found"))
        if dErr.get("URL", None):
            s += "\n  > URL: " + dErr["URL"]
        return s
            sText += "\n  > URL: " + dErr["URL"]
        return sText
    except KeyError:
        return u"* Non-compliant error: {}".format(dErr)


def createParagraphWithLines (lLine):
    "Returns a text as merged lines and a set of data about lines (line_number_y, start_x, end_x)"
    sText = ""

Added gc_lang/fr/French_language.txt version [e372ce9fb7].































































































































































































































































































































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# NOTES SUR LA LANGUE FRANÇAISE

## CE QUI ENTOURE UN VERBE

    PRONOMS (avant)
        COD         COI
        le / l’
        la / l’
        les
        en
        me / m’     me / m’
        te / t’     te / t’
        se / s’     lui
        nous        nous
        vous        nous
        se / s’     leur
                    y

    SOMME
        [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]

    ADVERBE DE NÉGATION (avant)
        ne / n’

    COMBINAISONS VALIDES
        ?[ne|n’]¿   [me|te|se]      [le|la|l’|les]
        ?[ne|n’]¿   [m’|t’|s’]      [le|la|l’|les|en|y]
        ?[ne|n’]¿   [le|la]         [lui|leur]
        ?[ne|n’]¿   [l’|les]        [lui|leur|en|y]
        ?[ne|n’]¿   [lui|leur]      en
        ?[ne|n’]¿   [nous|vous]     [le|la|l’|les|en|y]
        ne          [le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur]
        n’          [en|y]

    RÉSUMÉ & SIMPLIFICATION
        [ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]
        ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]
        ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]
        ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]
        ?[ne|n’]¿   [lui|leur]                      en

    ADVERBE DE NÉGATION (après)
        guère
        jamais
        pas
        plus
        point
        que / qu’
        rien

    PRONOMS À L’IMPÉRATIF
        APRÈS
            -moi
            -toi
            -lui
            -leur
            -nous
            -vous
            -le
            -la
            -les
            -en
            -y

        AVANT
            Uniquement les combinaisons avec l’adverbe de négation [ne|n’]


## DÉTERMINANTS

    SINGULIER               PLURIEL
    le / la / l’            les
    ledit / ladite          lesdits / lesdites
    un / une                des
    du / de la              des
    dudit / de ladite       desdits / desdites
    de                      de
    ce / cet / cette        ces
    icelui / icelle         iceux / icelles
    mon / ma                mes
    ton / ta                tes
    son / sa                ses
    votre                   nos
    notre                   vos
    leur                    leurs
    quel / quelle           quels / quelles
    quelque                 quelques
    tout / toute            tous / toutes
    chaque
    aucun / aucune
    nul / nulle
                            plusieurs
                            certains / certaines
                            divers / diverses

    DÉTERMINANT & PRÉPOSITION
    au / à la               aux
    audit / à ladite        auxdits / auxdites


## CONJONCTIONS

    DE COORDINATION         DE SUBORDINATION
    c’est-à-dire            afin que            pendant que
    c.-à-d.                 après que           pour que
    car                     attendu que         pourvu que
    donc                    avant que           puisque
    et / &                  bien que            quand
    mais                    comme               que
    ni                      depuis que          quoique
    or                      dès que             sans que
    ou                      dès lors que        sauf que
    partant                 excepté que         selon que
    puis                    lorsque             si
    sinon                   lors que            tandis que
    soit                    malgré que          tant que
                            parce que


## PRÉPOSITIONS

    VERBALES UNIQUEMENT
        afin de

    NOMINALES ET VERBALES
        à
        entre
        excepté
        outre
        par
        pour
        sans
        sauf

    PRÉPOSITIONS ET DÉTERMINANTS
        au
        aux
        audit
        auxdits
        auxdites

    NOMINALES
        à l’instar de               devers                      par-dessus  (adv)
        à mi-distance de            dixit                       par-devant  (adv)
        après                       durant                      par-devers
        attendu                     dès                         parmi
        au-dedans   (adv)           en                          passé
        au-dehors   (adv)           endéans                     pendant
        au-delà     (adv)           envers                      pour
        au-dessous  (adv)           ès                          quant à/au/à la/aux
        au-dessus   (adv)           excepté                     revoici
        au-devant   (adv)           face à                      revoilà
        auprès de                   fors                        sauf
        autour de                   grâce à                     sans
        av                          hormis                      selon
        avant                       hors                        sous
        avec                        jusque                      suivant
        chez                        jusques                     sur
        concernant                  lez                         tandis      (adv)
        contre                      lors de                     vers
        courant (+mois)             lès                         versus
        dans                        malgré                      via
        depuis                      moins       (adv)           vis-à-vis
        derrière                    nonobstant  (adv)           voici
        dessous     (adv)           par-delà                    voilà
        dessus      (adv)           par-derrière  (adv)         vs
        devant      (adv)           par-dessous   (adv)         vu


## PRONOMS

    PRONOMS PERSONNELS SUJETS
        je                  moi-même                                mézigue
        tu                  toi-même                                tézigue
        il / elle           lui / lui-même / elle-même              césigue / sézigue
        on
        nous                nous-même / nous-mêmes                  noszigues
        vous                vous-même / vous-mêmes                  voszigues
        ils / elles         eux / eux-mêmes / elles-mêmes           leurszigues

    PRONOMS PERSONNELS OBJETS
        moi                 moi-même                                mézigue
        toi                 toi-même                                tézigue
        lui / elle          lui-même  / elle-même                   césigue / sézigue
        soi                 soi-même
        nous                nous-même / nous-mêmes                  noszigues
        vous                vous-même / vous-mêmes                  voszigues
        eux / elles         eux / eux-mêmes / elles-mêmes           leurszigues

    PRONOMS NÉGATIFS (SUJETS & OBJETS)
        aucun
        aucune
        dégun
        nul
        personne
        rien

    PRONOMS OBJETS PRÉVERBES
        la      COD
        le      COD
        les     COD
        l’      COD
        leur    COI
        lui     COI
        me      COD/COI
        te      COD/COI
        se      COD/COI
        nous    COD/COI
        vous    COD/COI
        y       COI (proadv)
        en      COD (proadv)

    PRONOMS DÉMONSTRATIFS (SUJETS ET OBJETS)
        çuilà           propersuj properobj 3pe mas sg
        ça              prodem mas sg
        ceci            prodem mas sg
        cela            prodem mas sg
        celle qui       prodem fem sg
        celles qui      prodem fem pl
        celle-ci        prodem fem sg
        celle-là        prodem fem sg
        celles-ci       prodem fem pl
        celles-là       prodem fem pl
        celui qui       prodem mas sg
        celui-ci        prodem mas sg
        celui-là        prodem mas sg
        ceux qui        prodem mas pl
        ceux-ci         prodem mas pl
        ceux-là         prodem mas pl

        icelle          detdem prodem fem sg
        icelles         detdem prodem fem pl
        icelui          detdem prodem mas sg
        iceux           detdem prodem mas pl

    PRONOMS DÉMONSTRATIFS (SUJETS)
        ce

    PRONOMS DÉMONSTRATIFS (OBJETS)
        ci              (adv)

    PRONOMS RELATIFS
        auquel          proint prorel mas sg
        auxquelles      proint prorel fem pl
        auxquels        proint prorel mas pl
        desquelles      proint prorel fem pl
        desquels        proint prorel mas pl
        dont            prorel
        duquel          proint prorel mas sg
        laquelle        proint prorel fem sg
        lequel          proint prorel mas sg
        lesquelles      proint prorel fem pl
        lesquels        proint prorel mas pl
        où              advint prorel
        qué             proint prorel
        qui             proint prorel
        que             proint prorel
        quid            proint
        quoi            proint prorel

        autre           proind
        autrui          proind
        quiconque       proind prorel
        certaine        detind proind
        chacun          proind mas sg
        chacune         proind fem sg
        d’aucuns        proind mas pl
        grand-chose     proind
        n’importe quoi  proind
        n’importe qui   proind
        plupart         proind epi pl
        quelques-unes   proind fem pl
        quelques-uns    proind mas pl
        quelqu’un       proind mas sg
        quelqu’une      proind fem sg
        telle           proind

## MOTS GRAMMATICAUX CONFUS

    a
    autour
    cela
    certain·e·s
    contre
    dans
    derrière
    durant
    entre
    excepté
    face
    la
    leur
    lui
    mais
    me
    or
    outre
    personne
    pendant
    plus
    point
    pourvu
    puis
    rien
    sauf
    soit
    son
    sous
    sur
    ton
    tout
    tu
    un
    une
    vers
    y

## VERBES À TRAITER EN PARTICULIER

    # auxiliaire
    être
    avoir
    aller

    # verbes modaux ou quasi-modaux
    adorer
    aimer
    croire
    devoir
    espérer
    faire
    falloir
    imaginer
    laisser
    partir
    penser
    pouvoir
    savoir
    venir
    vouloir

    # verbes d’état
    apparaître
    avoir l’air
    demeurer
    devenir
    paraître
    redevenir
    rester
    sembler

    # verbes d’action usuels
    commencer
    donner
    finir
    prendre
    trouver
    voir

    # dialogue
    - aboyer, accepter, acclamer, accorder, accuser, achever, acquiescer, adhérer, adjurer, admettre, admonester, affirmer, affranchir, ajouter, alléguer, anathématiser, annoncer, annoter, apostropher, appeler, applaudir, apprendre, approuver, approuver, arguer, argumenter, arrêter, articuler, assener, assurer, attester, avancer, avertir, aviser, avouer, ânonner
    - babiller, badiner, bafouer, bafouiller, balbutier, baragouiner, bavarder, beugler, blaguer, blâmer, bougonner, bourdonner, bourrasser, brailler, bramer, bredouiller, bégayer, bénir
    - cafouiller, capituler, certifier, chanter, chantonner, choisir, chuchoter, clamer, combattre, commander, commenter, compatir, compléter, composer, conclure, concéder, confesser, confier, confirmer, congratuler, considérer, conspuer, conter, contester, contredire, converser, couiner, couper, cracher, crachoter, crier, critiquer, croire, crépiter, céder
    - déclamer, demander, deviner, deviser, dialoguer, dire, discourir, discréditer, discuter, disserter, dissimuler, distinguer, divulguer, douter, débiter, décider, déclamer, déclarer, décrire, dédouaner, déduire, défendre, dégoiser, démentir, démontrer, dénoncer, déplorer, détailler, dévoiler
    - emporter, encenser, enchérir, encourager, enflammer, enguirlander, enquérir, entamer, entonner, ergoter, essayer, estimer, exagérer, examiner, exhorter, exiger, expliquer, exploser, exposer, exprimer, exulter, éclater, égosiller, égrener, éjaculer, éluder, émettre, énoncer, énumérer, épeler, établir, éternuer, étonner
    - faire fanfaronner, faire miroiter, faire remarquer, finir, flatter, formuler, fustiger, féliciter
    - garantir, geindre, glisser, glorifier, gloser, glousser, gouailler, grincer, grognasser, grogner, grommeler, gronder, gueuler, gémir
    - haleter, haranguer, hasarder, honnir, huer, hurler, héler, hésiter
    - imaginer, implorer, indiquer, infirmer, informer, injurier, innocenter, insinuer, insister, insister, insulter, intercéder, interdire, interroger, interrompre, intervenir, intimer, inventer, inventorier, invoquer, ironiser
    - jauger, jubiler, juger, jurer, justifier
    - lancer, lire, lister, louer, lâcher
    - marmonner, maugréer, menacer, mentir, mettre en garde, minauder, minimiser, monologuer, murmurer, médire, mépriser
    - narguer, narrer, nasiller, nier, négocier
    - objecter, objurguer, obliger, observer, obtempérer, opiner, ordonner, outrager
    - palabrer, papoter, parlementer, parler, penser, permettre, persifler, pester, philosopher, piaffer, pilorier, plaider, plaisanter, plastronner, pleurer, pleurnicher, polémiquer, pontifier, postillonner, pouffer, poursuivre, prier, proférer, prohiber, promettre, prophétiser, proposer, protester, prouver, préciser, préférer, présenter, prétendre, prôner, psalmodier, pérorer
    - questionner, quémander, quêter
    - rabâcher, raconter, radoter, railler, rajouter, rappeler, rapporter, rassurer, raviser, réciter, reconnaître, rectifier, redire, refuser, regretter, relater, remarquer, renauder, renchérir, renseigner, renâcler, repartir, reprendre, requérir, ressasser, revendiquer, ricaner, riposter, rire, risquer, ronchonner, ronronner, rouscailler, rouspéter, rugir, râler, réaliser, récapituler, réciter, réclamer, récuser, réfuter, répliquer, répliquer, répondre, répondre, réprimander, réprouver, répéter, résister, résumer, rétorquer, réviser, révéler
    - saluer, scruter, se gargariser, se moquer, se plaindre, se réjouir, se souvenir, seriner, sermonner, siffler, signaler, signifier, soliloquer, solliciter, sommer, souffler, souligner, soupçonner, sourire, souscrire, soutenir, stigmatiser, suggérer, supplier, supputer, susurrer, sélectionner, s’adresser, s’esclaffer, s’exclamer, s’excuser, s’impatienter, s’incliner, s’instruire, s’insurger, s’interloquer, s’intéresser, s’offusquer, s’émerveiller, s’étouffer, s’étrangler
    - taquiner, tempérer, tempêter, tenter, terminer, tonitruer, tonner, traduire
    - vanter, vanter, vilipender, vitupérer, vociférer, vomir, vérifier
    - zozoter, zézayer

Modified gc_lang/fr/config.ini from [2149787618] to [aee238173d].

1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16








-
+







[args]
lang = fr
lang_name = French
locales = fr_FR fr_BE fr_CA fr_CH fr_LU fr_BF fr_BJ fr_CD fr_CI fr_CM fr_MA fr_ML fr_MU fr_NE fr_RE fr_SN fr_TG
country_default = FR
name = Grammalecte
implname = grammalecte
# always use 3 numbers for version: x.y.z
version = 0.6.5
version = 1.0
author = Olivier R.
provider = Dicollecte
link = http://grammalecte.net
description = Correcteur grammatical pour le français.
extras = README_fr.txt
logo = logo.png

36
37
38
39
40
41
42
43

44
45
46
47
48
49
50
36
37
38
39
40
41
42

43
44
45
46
47
48
49
50







-
+







# Finite state automaton compression: 1, 2 (experimental) or 3 (experimental)
fsa_method = 1
# stemming method: S for suffixes only, A for prefixes and suffixes
stemming_method = S

# LibreOffice
unopkg = C:/Program Files/LibreOffice/program/unopkg.com
oxt_version = 6.3
oxt_version = 7.0
oxt_identifier = French.linguistic.resources.from.Dicollecte.by.OlivierR

# Firefox
fx_identifier = French-GC@grammalecte.net
fx_name = Grammalecte [fr]

win_fx_dev_path = C:\Program Files\Firefox Developer Edition\firefox.exe

Modified gc_lang/fr/data/dictConj.txt from [f974707fe8] to [bff027e827].

20671
20672
20673
20674
20675
20676
20677
20678

20679
20680
20681
20682
20683
20684
20685
20671
20672
20673
20674
20675
20676
20677

20678
20679
20680
20681
20682
20683
20684
20685







-
+







_	simp 2pl	appontassiez
_	simp 3pl	appontassent
_	impe 2sg	apponte
_	impe 1pl	appontons
_	impe 2pl	appontez
_	ppas epi inv	apponté
$
apporter	1_it____a
apporter	1_itn___a
_	infi	apporter
_	ppre	apportant
_	ipre 1sg	apporte
_	ipre 3sg	apporte
_	spre 1sg	apporte
_	spre 3sg	apporte
_	ipre 1isg	apportè
117064
117065
117066
117067
117068
117069
117070






















































117071
117072
117073
117074
117075
117076
117077
117064
117065
117066
117067
117068
117069
117070
117071
117072
117073
117074
117075
117076
117077
117078
117079
117080
117081
117082
117083
117084
117085
117086
117087
117088
117089
117090
117091
117092
117093
117094
117095
117096
117097
117098
117099
117100
117101
117102
117103
117104
117105
117106
117107
117108
117109
117110
117111
117112
117113
117114
117115
117116
117117
117118
117119
117120
117121
117122
117123
117124
117125
117126
117127
117128
117129
117130
117131







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	impe 1pl	dégénérons
_	impe 2pl	dégénérez
_	ppas mas sg	dégénéré
_	ppas mas pl	dégénérés
_	ppas fem sg	dégénérée
_	ppas fem pl	dégénérées
$
dégenrer	1__t_q__a
_	infi	dégenrer
_	ppre	dégenrant
_	ipre 1sg	dégenre
_	ipre 3sg	dégenre
_	spre 1sg	dégenre
_	spre 3sg	dégenre
_	ipre 1isg	dégenrè
_	ipre 2sg	dégenres
_	spre 2sg	dégenres
_	ipre 1pl	dégenrons
_	ipre 2pl	dégenrez
_	ipre 3pl	dégenrent
_	spre 3pl	dégenrent
_	iimp 1sg	dégenrais
_	iimp 2sg	dégenrais
_	iimp 3sg	dégenrait
_	iimp 1pl	dégenrions
_	spre 1pl	dégenrions
_	iimp 2pl	dégenriez
_	spre 2pl	dégenriez
_	iimp 3pl	dégenraient
_	ipsi 1sg	dégenrai
_	ipsi 2sg	dégenras
_	ipsi 3sg	dégenra
_	ipsi 1pl	dégenrâmes
_	ipsi 2pl	dégenrâtes
_	ipsi 3pl	dégenrèrent
_	ifut 1sg	dégenrerai
_	ifut 2sg	dégenreras
_	ifut 3sg	dégenrera
_	ifut 1pl	dégenrerons
_	ifut 2pl	dégenrerez
_	ifut 3pl	dégenreront
_	cond 1sg	dégenrerais
_	cond 2sg	dégenrerais
_	cond 3sg	dégenrerait
_	cond 1pl	dégenrerions
_	cond 2pl	dégenreriez
_	cond 3pl	dégenreraient
_	simp 1sg	dégenrasse
_	simp 2sg	dégenrasses
_	simp 3sg	dégenrât
_	simp 1pl	dégenrassions
_	simp 2pl	dégenrassiez
_	simp 3pl	dégenrassent
_	impe 2sg	dégenre
_	impe 1pl	dégenrons
_	impe 2pl	dégenrez
_	ppas mas sg	dégenré
_	ppas mas pl	dégenrés
_	ppas fem sg	dégenrée
_	ppas fem pl	dégenrées
$
dégermer	1__t___zz
_	infi	dégermer
_	ppre	dégermant
_	ipre 1sg	dégerme
_	ipre 3sg	dégerme
_	spre 1sg	dégerme
_	spre 3sg	dégerme
140959
140960
140961
140962
140963
140964
140965






















































140966
140967
140968
140969
140970
140971
140972
141013
141014
141015
141016
141017
141018
141019
141020
141021
141022
141023
141024
141025
141026
141027
141028
141029
141030
141031
141032
141033
141034
141035
141036
141037
141038
141039
141040
141041
141042
141043
141044
141045
141046
141047
141048
141049
141050
141051
141052
141053
141054
141055
141056
141057
141058
141059
141060
141061
141062
141063
141064
141065
141066
141067
141068
141069
141070
141071
141072
141073
141074
141075
141076
141077
141078
141079
141080







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	impe 1pl	désentravons
_	impe 2pl	désentravez
_	ppas mas sg	désentravé
_	ppas mas pl	désentravés
_	ppas fem sg	désentravée
_	ppas fem pl	désentravées
$
désentrelacer	1__t_q__a
_	infi	désentrelacer
_	ppre	désentrelaçant
_	ipre 1sg	désentrelace
_	ipre 3sg	désentrelace
_	spre 1sg	désentrelace
_	spre 3sg	désentrelace
_	ipre 1isg	désentrelacè
_	ipre 2sg	désentrelaces
_	spre 2sg	désentrelaces
_	ipre 1pl	désentrelaçons
_	ipre 2pl	désentrelacez
_	ipre 3pl	désentrelacent
_	spre 3pl	désentrelacent
_	iimp 1sg	désentrelaçais
_	iimp 2sg	désentrelaçais
_	iimp 3sg	désentrelaçait
_	iimp 1pl	désentrelacions
_	spre 1pl	désentrelacions
_	iimp 2pl	désentrelaciez
_	spre 2pl	désentrelaciez
_	iimp 3pl	désentrelaçaient
_	ipsi 1sg	désentrelaçai
_	ipsi 2sg	désentrelaças
_	ipsi 3sg	désentrelaça
_	ipsi 1pl	désentrelaçâmes
_	ipsi 2pl	désentrelaçâtes
_	ipsi 3pl	désentrelacèrent
_	ifut 1sg	désentrelacerai
_	ifut 2sg	désentrelaceras
_	ifut 3sg	désentrelacera
_	ifut 1pl	désentrelacerons
_	ifut 2pl	désentrelacerez
_	ifut 3pl	désentrelaceront
_	cond 1sg	désentrelacerais
_	cond 2sg	désentrelacerais
_	cond 3sg	désentrelacerait
_	cond 1pl	désentrelacerions
_	cond 2pl	désentrelaceriez
_	cond 3pl	désentrelaceraient
_	simp 1sg	désentrelaçasse
_	simp 2sg	désentrelaçasses
_	simp 3sg	désentrelaçât
_	simp 1pl	désentrelaçassions
_	simp 2pl	désentrelaçassiez
_	simp 3pl	désentrelaçassent
_	impe 2sg	désentrelace
_	impe 1pl	désentrelaçons
_	impe 2pl	désentrelacez
_	ppas mas sg	désentrelacé
_	ppas mas pl	désentrelacés
_	ppas fem sg	désentrelacée
_	ppas fem pl	désentrelacées
$
désenvaser	1__t___zz
_	infi	désenvaser
_	ppre	désenvasant
_	ipre 1sg	désenvase
_	ipre 3sg	désenvase
_	spre 1sg	désenvase
_	spre 3sg	désenvase
191222
191223
191224
191225
191226
191227
191228
191229
191230
191231
191232
191233
191234
191235
191236
191237
191238
191239
191240
191241
191242
191243
191244
191245
191246
191247
191248
191249
191250
191251
191252
191253
191254
191255
191256
191257
191258
191259
191260
191261
191262
191263
191264
191265
191266
191267
191268
191269
191270
191271
191272
191273
191330
191331
191332
191333
191334
191335
191336






































191337
191338
191339
191340
191341
191342
191343







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







_	impe 1pl	entraimons
_	impe 2pl	entraimez
_	ppas mas sg	entraimé
_	ppas mas pl	entraimés
_	ppas fem sg	entraimée
_	ppas fem pl	entraimées
$
entr'aimer	1____r_e_
_	infi	entr'aimer
_	ppre	entr'aimant
_	ipre 3sg	entr'aime
_	spre 3sg	entr'aime
_	ipre 1pl	entr'aimons
_	ipre 2pl	entr'aimez
_	ipre 3pl	entr'aiment
_	spre 3pl	entr'aiment
_	iimp 3sg	entr'aimait
_	iimp 1pl	entr'aimions
_	spre 1pl	entr'aimions
_	iimp 2pl	entr'aimiez
_	spre 2pl	entr'aimiez
_	iimp 3pl	entr'aimaient
_	ipsi 3sg	entr'aima
_	ipsi 1pl	entr'aimâmes
_	ipsi 2pl	entr'aimâtes
_	ipsi 3pl	entr'aimèrent
_	ifut 3sg	entr'aimera
_	ifut 1pl	entr'aimerons
_	ifut 2pl	entr'aimerez
_	ifut 3pl	entr'aimeront
_	cond 3sg	entr'aimerait
_	cond 1pl	entr'aimerions
_	cond 2pl	entr'aimeriez
_	cond 3pl	entr'aimeraient
_	simp 3sg	entr'aimât
_	simp 1pl	entr'aimassions
_	simp 2pl	entr'aimassiez
_	simp 3pl	entr'aimassent
_	impe 1pl	entr'aimons
_	impe 2pl	entr'aimez
_	ppas mas sg	entr'aimé
_	ppas mas pl	entr'aimés
_	ppas fem sg	entr'aimée
_	ppas fem pl	entr'aimées
$
entrainer	1__t_q__a
_	infi	entrainer
_	ppre	entrainant
_	ipre 1sg	entraine
_	ipre 3sg	entraine
_	spre 1sg	entraine
_	spre 3sg	entraine
191421
191422
191423
191424
191425
191426
191427
191428
191429
191430
191431
191432
191433
191434
191435
191436
191437
191438
191439
191440
191441
191442
191443
191444
191445
191446
191447
191448
191449
191450
191451
191452
191453
191454
191455
191456
191457
191458
191459
191460
191461
191462
191463
191464
191465
191466
191467
191468
191469
191470
191471
191472
191473
191474
191475
191476
191477
191478
191479
191480
191481
191482
191483
191484
191485
191486
191487
191491
191492
191493
191494
191495
191496
191497





















































191498
191499
191500
191501
191502
191503
191504







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







_	simp 1pl	entraperçussions
_	simp 2pl	entraperçussiez
_	simp 3pl	entraperçussent
_	impe 2sg	entraperçois
_	impe 1pl	entrapercevons
_	impe 2pl	entrapercevez
$
entr'apercevoir	3__t_q_zz
_	infi	entr'apercevoir
_	ppre	entr'apercevant
_	ppas mas sg	entr'aperçu
_	ppas mas pl	entr'aperçus
_	ppas fem sg	entr'aperçue
_	ppas fem pl	entr'aperçues
_	ipre 1sg	entr'aperçois
_	ipre 2sg	entr'aperçois
_	ipre 3sg	entr'aperçoit
_	ipre 1pl	entr'apercevons
_	ipre 2pl	entr'apercevez
_	ipre 3pl	entr'aperçoivent
_	spre 3pl	entr'aperçoivent
_	iimp 1sg	entr'apercevais
_	iimp 2sg	entr'apercevais
_	iimp 3sg	entr'apercevait
_	iimp 1pl	entr'apercevions
_	spre 1pl	entr'apercevions
_	iimp 2pl	entr'aperceviez
_	spre 2pl	entr'aperceviez
_	iimp 3pl	entr'apercevaient
_	ipsi 1sg	entr'aperçus
_	ipsi 2sg	entr'aperçus
_	ipsi 3sg	entr'aperçut
_	ipsi 1pl	entr'aperçûmes
_	ipsi 2pl	entr'aperçûtes
_	ipsi 3pl	entr'aperçurent
_	ifut 1sg	entr'apercevrai
_	ifut 2sg	entr'apercevras
_	ifut 3sg	entr'apercevra
_	ifut 1pl	entr'apercevrons
_	ifut 2pl	entr'apercevrez
_	ifut 3pl	entr'apercevront
_	cond 1sg	entr'apercevrais
_	cond 2sg	entr'apercevrais
_	cond 3sg	entr'apercevrait
_	cond 1pl	entr'apercevrions
_	cond 2pl	entr'apercevriez
_	cond 3pl	entr'apercevraient
_	spre 1sg	entr'aperçoive
_	spre 3sg	entr'aperçoive
_	spre 2sg	entr'aperçoives
_	simp 1sg	entr'aperçusse
_	simp 2sg	entr'aperçusses
_	simp 3sg	entr'aperçût
_	simp 1pl	entr'aperçussions
_	simp 2pl	entr'aperçussiez
_	simp 3pl	entr'aperçussent
_	impe 2sg	entr'aperçois
_	impe 1pl	entr'apercevons
_	impe 2pl	entr'apercevez
$
entraver	1__t___zz
_	infi	entraver
_	ppre	entravant
_	ipre 1sg	entrave
_	ipre 3sg	entrave
_	spre 1sg	entrave
_	spre 3sg	entrave
192156
192157
192158
192159
192160
192161
192162
192163
192164
192165
192166
192167
192168
192169
192170
192171
192172
192173
192174
192175
192176
192177
192178
192179
192180
192181
192182
192183
192184
192185
192186
192187
192188
192189
192190
192191
192192
192193
192194
192195
192196
192197
192198
192199
192200
192201
192202
192203
192204
192205
192206
192207
192173
192174
192175
192176
192177
192178
192179






































192180
192181
192182
192183
192184
192185
192186







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







_	impe 1pl	entrégorgeons
_	impe 2pl	entrégorgez
_	ppas mas sg	entrégorgé
_	ppas mas pl	entrégorgés
_	ppas fem sg	entrégorgée
_	ppas fem pl	entrégorgées
$
entr'égorger	1____r_e_
_	infi	entr'égorger
_	ppre	entr'égorgeant
_	ipre 3sg	entr'égorge
_	spre 3sg	entr'égorge
_	ipre 1pl	entr'égorgeons
_	ipre 2pl	entr'égorgez
_	ipre 3pl	entr'égorgent
_	spre 3pl	entr'égorgent
_	iimp 3sg	entr'égorgeait
_	iimp 1pl	entr'égorgions
_	spre 1pl	entr'égorgions
_	iimp 2pl	entr'égorgiez
_	spre 2pl	entr'égorgiez
_	iimp 3pl	entr'égorgeaient
_	ipsi 3sg	entr'égorgea
_	ipsi 1pl	entr'égorgeâmes
_	ipsi 2pl	entr'égorgeâtes
_	ipsi 3pl	entr'égorgèrent
_	ifut 3sg	entr'égorgera
_	ifut 1pl	entr'égorgerons
_	ifut 2pl	entr'égorgerez
_	ifut 3pl	entr'égorgeront
_	cond 3sg	entr'égorgerait
_	cond 1pl	entr'égorgerions
_	cond 2pl	entr'égorgeriez
_	cond 3pl	entr'égorgeraient
_	simp 3sg	entr'égorgeât
_	simp 1pl	entr'égorgeassions
_	simp 2pl	entr'égorgeassiez
_	simp 3pl	entr'égorgeassent
_	impe 1pl	entr'égorgeons
_	impe 2pl	entr'égorgez
_	ppas mas sg	entr'égorgé
_	ppas mas pl	entr'égorgés
_	ppas fem sg	entr'égorgée
_	ppas fem pl	entr'égorgées
$
entrehaïr	2____r_e_
_	infi	entrehaïr
_	ppre	entrehaïssant
_	ppas mas sg	entrehaï
_	ppas mas pl	entrehaïs
_	ppas fem sg	entrehaïe
_	ppas fem pl	entrehaïes
192346
192347
192348
192349
192350
192351
192352
192353

192354
192355
192356
192357
192358
192359
192360
192325
192326
192327
192328
192329
192330
192331

192332
192333
192334
192335
192336
192337
192338
192339







-
+







_	impe 1pl	entre-heurtons
_	impe 2pl	entre-heurtez
_	ppas mas sg	entre-heurté
_	ppas mas pl	entre-heurtés
_	ppas fem sg	entre-heurtée
_	ppas fem pl	entre-heurtées
$
entrelacer	1__t_q_zz
entrelacer	1__t_q__a
_	infi	entrelacer
_	ppre	entrelaçant
_	ipre 1sg	entrelace
_	ipre 3sg	entrelace
_	spre 1sg	entrelace
_	spre 3sg	entrelace
_	ipre 1isg	entrelacè
193520
193521
193522
193523
193524
193525
193526
193527
193528
193529
193530
193531
193532
193533
193534
193535
193536
193499
193500
193501
193502
193503
193504
193505



193506
193507
193508
193509
193510
193511
193512







-
-
-







_	impe 1pl	entrevoûtons
_	impe 2pl	entrevoûtez
_	ppas mas sg	entrevoûté
_	ppas mas pl	entrevoûtés
_	ppas fem sg	entrevoûtée
_	ppas fem pl	entrevoûtées
$
entr'hiverner	1__t___zz
_	infi	entr'hiverner
$
entrouvrir	3__t_q_zz
_	infi	entrouvrir
_	ppre	entrouvrant
_	ppas mas sg	entrouvert
_	ppas mas pl	entrouverts
_	ppas fem sg	entrouverte
_	ppas fem pl	entrouvertes
193575
193576
193577
193578
193579
193580
193581






































193582
193583
193584
193585
193586
193587
193588
193589








193590
193591
193592
193593
193594
193595
193596
193597
193598
193599
193600
193601
193602
193603
193604
193605
193606
193607
193608
193609
193610
193611
































































193612
193613
193614
193615
193616
193617
193618
193619
193620
193621
193622
193623
193624
193625
193626
193627
193628
193629
193630
193631
193632









































































193633
193634
193635
193636
193637
193638
193639
193551
193552
193553
193554
193555
193556
193557
193558
193559
193560
193561
193562
193563
193564
193565
193566
193567
193568
193569
193570
193571
193572
193573
193574
193575
193576
193577
193578
193579
193580
193581
193582
193583
193584
193585
193586
193587
193588
193589
193590
193591
193592
193593
193594
193595








193596
193597
193598
193599
193600
193601
193602
193603






















193604
193605
193606
193607
193608
193609
193610
193611
193612
193613
193614
193615
193616
193617
193618
193619
193620
193621
193622
193623
193624
193625
193626
193627
193628
193629
193630
193631
193632
193633
193634
193635
193636
193637
193638
193639
193640
193641
193642
193643
193644
193645
193646
193647
193648
193649
193650
193651
193652
193653
193654
193655
193656
193657
193658
193659
193660
193661
193662
193663
193664
193665
193666
193667





















193668
193669
193670
193671
193672
193673
193674
193675
193676
193677
193678
193679
193680
193681
193682
193683
193684
193685
193686
193687
193688
193689
193690
193691
193692
193693
193694
193695
193696
193697
193698
193699
193700
193701
193702
193703
193704
193705
193706
193707
193708
193709
193710
193711
193712
193713
193714
193715
193716
193717
193718
193719
193720
193721
193722
193723
193724
193725
193726
193727
193728
193729
193730
193731
193732
193733
193734
193735
193736
193737
193738
193739
193740
193741
193742
193743
193744
193745
193746
193747







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	simp 1pl	entrouvrissions
_	simp 2pl	entrouvrissiez
_	simp 3pl	entrouvrissent
_	impe 2sg	entrouvre
_	impe 1pl	entrouvrons
_	impe 2pl	entrouvrez
$
entr’aimer	1____r_e_
_	infi	entr’aimer
_	ppre	entr’aimant
_	ipre 3sg	entr’aime
_	spre 3sg	entr’aime
_	ipre 1pl	entr’aimons
_	ipre 2pl	entr’aimez
_	ipre 3pl	entr’aiment
_	spre 3pl	entr’aiment
_	iimp 3sg	entr’aimait
_	iimp 1pl	entr’aimions
_	spre 1pl	entr’aimions
_	iimp 2pl	entr’aimiez
_	spre 2pl	entr’aimiez
_	iimp 3pl	entr’aimaient
_	ipsi 3sg	entr’aima
_	ipsi 1pl	entr’aimâmes
_	ipsi 2pl	entr’aimâtes
_	ipsi 3pl	entr’aimèrent
_	ifut 3sg	entr’aimera
_	ifut 1pl	entr’aimerons
_	ifut 2pl	entr’aimerez
_	ifut 3pl	entr’aimeront
_	cond 3sg	entr’aimerait
_	cond 1pl	entr’aimerions
_	cond 2pl	entr’aimeriez
_	cond 3pl	entr’aimeraient
_	simp 3sg	entr’aimât
_	simp 1pl	entr’aimassions
_	simp 2pl	entr’aimassiez
_	simp 3pl	entr’aimassent
_	impe 1pl	entr’aimons
_	impe 2pl	entr’aimez
_	ppas mas sg	entr’aimé
_	ppas mas pl	entr’aimés
_	ppas fem sg	entr’aimée
_	ppas fem pl	entr’aimées
$
entr'ouvrir	3__t_q_zz
_	infi	entr'ouvrir
_	ppre	entr'ouvrant
_	ppas mas sg	entr'ouvert
_	ppas mas pl	entr'ouverts
_	ppas fem sg	entr'ouverte
_	ppas fem pl	entr'ouvertes
_	ipre 1sg	entr'ouvre
entr’apercevoir	3__t_q_zz
_	infi	entr’apercevoir
_	ppre	entr’apercevant
_	ppas mas sg	entr’aperçu
_	ppas mas pl	entr’aperçus
_	ppas fem sg	entr’aperçue
_	ppas fem pl	entr’aperçues
_	ipre 1sg	entr’aperçois
_	ipre 3sg	entr'ouvre
_	spre 1sg	entr'ouvre
_	spre 3sg	entr'ouvre
_	ipre 2sg	entr'ouvres
_	ipre 1pl	entr'ouvrons
_	ipre 2pl	entr'ouvrez
_	ipre 3pl	entr'ouvrent
_	spre 3pl	entr'ouvrent
_	iimp 1sg	entr'ouvrais
_	iimp 2sg	entr'ouvrais
_	iimp 3sg	entr'ouvrait
_	iimp 1pl	entr'ouvrions
_	spre 1pl	entr'ouvrions
_	iimp 2pl	entr'ouvriez
_	spre 2pl	entr'ouvriez
_	iimp 3pl	entr'ouvraient
_	ipsi 1sg	entr'ouvris
_	ipsi 2sg	entr'ouvris
_	ipsi 3sg	entr'ouvrit
_	ipsi 1pl	entr'ouvrîmes
_	ipsi 2pl	entr'ouvrîtes
_	ipsi 3pl	entr'ouvrirent
_	ipre 2sg	entr’aperçois
_	ipre 3sg	entr’aperçoit
_	ipre 1pl	entr’apercevons
_	ipre 2pl	entr’apercevez
_	ipre 3pl	entr’aperçoivent
_	spre 3pl	entr’aperçoivent
_	iimp 1sg	entr’apercevais
_	iimp 2sg	entr’apercevais
_	iimp 3sg	entr’apercevait
_	iimp 1pl	entr’apercevions
_	spre 1pl	entr’apercevions
_	iimp 2pl	entr’aperceviez
_	spre 2pl	entr’aperceviez
_	iimp 3pl	entr’apercevaient
_	ipsi 1sg	entr’aperçus
_	ipsi 2sg	entr’aperçus
_	ipsi 3sg	entr’aperçut
_	ipsi 1pl	entr’aperçûmes
_	ipsi 2pl	entr’aperçûtes
_	ipsi 3pl	entr’aperçurent
_	ifut 1sg	entr’apercevrai
_	ifut 2sg	entr’apercevras
_	ifut 3sg	entr’apercevra
_	ifut 1pl	entr’apercevrons
_	ifut 2pl	entr’apercevrez
_	ifut 3pl	entr’apercevront
_	cond 1sg	entr’apercevrais
_	cond 2sg	entr’apercevrais
_	cond 3sg	entr’apercevrait
_	cond 1pl	entr’apercevrions
_	cond 2pl	entr’apercevriez
_	cond 3pl	entr’apercevraient
_	spre 1sg	entr’aperçoive
_	spre 3sg	entr’aperçoive
_	spre 2sg	entr’aperçoives
_	simp 1sg	entr’aperçusse
_	simp 2sg	entr’aperçusses
_	simp 3sg	entr’aperçût
_	simp 1pl	entr’aperçussions
_	simp 2pl	entr’aperçussiez
_	simp 3pl	entr’aperçussent
_	impe 2sg	entr’aperçois
_	impe 1pl	entr’apercevons
_	impe 2pl	entr’apercevez
$
entr’égorger	1____r_e_
_	infi	entr’égorger
_	ppre	entr’égorgeant
_	ipre 3sg	entr’égorge
_	spre 3sg	entr’égorge
_	ipre 1pl	entr’égorgeons
_	ipre 2pl	entr’égorgez
_	ipre 3pl	entr’égorgent
_	spre 3pl	entr’égorgent
_	iimp 3sg	entr’égorgeait
_	iimp 1pl	entr’égorgions
_	spre 1pl	entr’égorgions
_	iimp 2pl	entr’égorgiez
_	spre 2pl	entr’égorgiez
_	iimp 3pl	entr’égorgeaient
_	ipsi 3sg	entr’égorgea
_	ipsi 1pl	entr’égorgeâmes
_	ipsi 2pl	entr’égorgeâtes
_	ipsi 3pl	entr’égorgèrent
_	ifut 1sg	entr'ouvrirai
_	ifut 2sg	entr'ouvriras
_	ifut 3sg	entr'ouvrira
_	ifut 1pl	entr'ouvrirons
_	ifut 2pl	entr'ouvrirez
_	ifut 3pl	entr'ouvriront
_	cond 1sg	entr'ouvrirais
_	cond 2sg	entr'ouvrirais
_	cond 3sg	entr'ouvrirait
_	cond 1pl	entr'ouvririons
_	cond 2pl	entr'ouvririez
_	cond 3pl	entr'ouvriraient
_	simp 1sg	entr'ouvrisse
_	simp 2sg	entr'ouvrisses
_	simp 3sg	entr'ouvrît
_	simp 1pl	entr'ouvrissions
_	simp 2pl	entr'ouvrissiez
_	simp 3pl	entr'ouvrissent
_	impe 2sg	entr'ouvre
_	impe 1pl	entr'ouvrons
_	impe 2pl	entr'ouvrez
_	ifut 3sg	entr’égorgera
_	ifut 1pl	entr’égorgerons
_	ifut 2pl	entr’égorgerez
_	ifut 3pl	entr’égorgeront
_	cond 3sg	entr’égorgerait
_	cond 1pl	entr’égorgerions
_	cond 2pl	entr’égorgeriez
_	cond 3pl	entr’égorgeraient
_	simp 3sg	entr’égorgeât
_	simp 1pl	entr’égorgeassions
_	simp 2pl	entr’égorgeassiez
_	simp 3pl	entr’égorgeassent
_	impe 1pl	entr’égorgeons
_	impe 2pl	entr’égorgez
_	ppas mas sg	entr’égorgé
_	ppas mas pl	entr’égorgés
_	ppas fem sg	entr’égorgée
_	ppas fem pl	entr’égorgées
$
entr’hiverner	1__t___zz
_	infi	entr’hiverner
$
entr’ouvrir	3__t_q_zz
_	infi	entr’ouvrir
_	ppre	entr’ouvrant
_	ppas mas sg	entr’ouvert
_	ppas mas pl	entr’ouverts
_	ppas fem sg	entr’ouverte
_	ppas fem pl	entr’ouvertes
_	ipre 1sg	entr’ouvre
_	ipre 3sg	entr’ouvre
_	spre 1sg	entr’ouvre
_	spre 3sg	entr’ouvre
_	ipre 2sg	entr’ouvres
_	ipre 1pl	entr’ouvrons
_	ipre 2pl	entr’ouvrez
_	ipre 3pl	entr’ouvrent
_	spre 3pl	entr’ouvrent
_	iimp 1sg	entr’ouvrais
_	iimp 2sg	entr’ouvrais
_	iimp 3sg	entr’ouvrait
_	iimp 1pl	entr’ouvrions
_	spre 1pl	entr’ouvrions
_	iimp 2pl	entr’ouvriez
_	spre 2pl	entr’ouvriez
_	iimp 3pl	entr’ouvraient
_	ipsi 1sg	entr’ouvris
_	ipsi 2sg	entr’ouvris
_	ipsi 3sg	entr’ouvrit
_	ipsi 1pl	entr’ouvrîmes
_	ipsi 2pl	entr’ouvrîtes
_	ipsi 3pl	entr’ouvrirent
_	ifut 1sg	entr’ouvrirai
_	ifut 2sg	entr’ouvriras
_	ifut 3sg	entr’ouvrira
_	ifut 1pl	entr’ouvrirons
_	ifut 2pl	entr’ouvrirez
_	ifut 3pl	entr’ouvriront
_	cond 1sg	entr’ouvrirais
_	cond 2sg	entr’ouvrirais
_	cond 3sg	entrouvrirait
_	cond 1pl	entrouvririons
_	cond 2pl	entrouvririez
_	cond 3pl	entrouvriraient
_	simp 1sg	entrouvrisse
_	simp 2sg	entrouvrisses
_	simp 3sg	entrouvrît
_	simp 1pl	entrouvrissions
_	simp 2pl	entrouvrissiez
_	simp 3pl	entrouvrissent
_	impe 2sg	entrouvre
_	impe 1pl	entrouvrons
_	impe 2pl	entrouvrez
$
entuber	1__t___zz
_	infi	entuber
_	ppre	entubant
_	ipre 1sg	entube
_	ipre 3sg	entube
_	spre 1sg	entube
370031
370032
370033
370034
370035
370036
370037






















































370038
370039
370040
370041
370042
370043
370044
370139
370140
370141
370142
370143
370144
370145
370146
370147
370148
370149
370150
370151
370152
370153
370154
370155
370156
370157
370158
370159
370160
370161
370162
370163
370164
370165
370166
370167
370168
370169
370170
370171
370172
370173
370174
370175
370176
370177
370178
370179
370180
370181
370182
370183
370184
370185
370186
370187
370188
370189
370190
370191
370192
370193
370194
370195
370196
370197
370198
370199
370200
370201
370202
370203
370204
370205
370206







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	impe 1pl	resocialisons
_	impe 2pl	resocialisez
_	ppas mas sg	resocialisé
_	ppas mas pl	resocialisés
_	ppas fem sg	resocialisée
_	ppas fem pl	resocialisées
$
resolidifier	1_it_q__a
_	infi	resolidifier
_	ppre	resolidifiant
_	ipre 1sg	resolidifie
_	ipre 3sg	resolidifie
_	spre 1sg	resolidifie
_	spre 3sg	resolidifie
_	ipre 1isg	resolidifiè
_	ipre 2sg	resolidifies
_	spre 2sg	resolidifies
_	ipre 1pl	resolidifions
_	ipre 2pl	resolidifiez
_	ipre 3pl	resolidifient
_	spre 3pl	resolidifient
_	iimp 1sg	resolidifiais
_	iimp 2sg	resolidifiais
_	iimp 3sg	resolidifiait
_	iimp 1pl	resolidifiions
_	spre 1pl	resolidifiions
_	iimp 2pl	resolidifiiez
_	spre 2pl	resolidifiiez
_	iimp 3pl	resolidifiaient
_	ipsi 1sg	resolidifiai
_	ipsi 2sg	resolidifias
_	ipsi 3sg	resolidifia
_	ipsi 1pl	resolidifiâmes
_	ipsi 2pl	resolidifiâtes
_	ipsi 3pl	resolidifièrent
_	ifut 1sg	resolidifierai
_	ifut 2sg	resolidifieras
_	ifut 3sg	resolidifiera
_	ifut 1pl	resolidifierons
_	ifut 2pl	resolidifierez
_	ifut 3pl	resolidifieront
_	cond 1sg	resolidifierais
_	cond 2sg	resolidifierais
_	cond 3sg	resolidifierait
_	cond 1pl	resolidifierions
_	cond 2pl	resolidifieriez
_	cond 3pl	resolidifieraient
_	simp 1sg	resolidifiasse
_	simp 2sg	resolidifiasses
_	simp 3sg	resolidifiât
_	simp 1pl	resolidifiassions
_	simp 2pl	resolidifiassiez
_	simp 3pl	resolidifiassent
_	impe 2sg	resolidifie
_	impe 1pl	resolidifions
_	impe 2pl	resolidifiez
_	ppas mas sg	resolidifié
_	ppas mas pl	resolidifiés
_	ppas fem sg	resolidifiée
_	ppas fem pl	resolidifiées
$
résonner	1_i____zz
_	infi	résonner
_	ppre	résonnant
_	ipre 1sg	résonne
_	ipre 3sg	résonne
_	spre 1sg	résonne
_	spre 3sg	résonne
382419
382420
382421
382422
382423
382424
382425
382426
382427
382428
382429
382430
382431
382432
382433
382434
382435
382581
382582
382583
382584
382585
382586
382587



382588
382589
382590
382591
382592
382593
382594







-
-
-







_	impe 1pl	rythmons
_	impe 2pl	rythmez
_	ppas mas sg	rythmé
_	ppas mas pl	rythmés
_	ppas fem sg	rythmée
_	ppas fem pl	rythmées
$
s'abader	1____p_e_
_	infi	s'abader
$
sabler	1_it___zz
_	infi	sabler
_	ppre	sablant
_	ipre 1sg	sable
_	ipre 3sg	sable
_	spre 1sg	sable
_	spre 3sg	sable
382746
382747
382748
382749
382750
382751
382752
382753
382754
382755
382756
382757
382758
382759
382760
382761
382762
382905
382906
382907
382908
382909
382910
382911



382912
382913
382914
382915
382916
382917
382918







-
-
-







_	impe 1pl	sabrons
_	impe 2pl	sabrez
_	ppas mas sg	sabré
_	ppas mas pl	sabrés
_	ppas fem sg	sabrée
_	ppas fem pl	sabrées
$
s'abriller	1____p_e_
_	infi	s'abriller
$
sacagner	1__t___zz
_	infi	sacagner
_	ppre	sacagnant
_	ipre 1sg	sacagne
_	ipre 3sg	sacagne
_	spre 1sg	sacagne
_	spre 3sg	sacagne
383289
383290
383291
383292
383293
383294
383295
383296
383297
383298
383299
383300
383301
383302
383303
383304
383305
383306
383307
383308
383309
383310
383311
383312
383445
383446
383447
383448
383449
383450
383451










383452
383453
383454
383455
383456
383457
383458







-
-
-
-
-
-
-
-
-
-







_	impe 1pl	safranons
_	impe 2pl	safranez
_	ppas mas sg	safrané
_	ppas mas pl	safranés
_	ppas fem sg	safranée
_	ppas fem pl	safranées
$
s'agir	2____p_e_
_	infi	s'agir
_	ppre	s'agissant
_	ipre 3sg	s'agit
_	iimp 3sg	s'agissait
_	ifut 3sg	s'agira
_	cond 3sg	s'agirait
_	spre 3sg	s'agisse
_	simp 3sg	s'agît
$
saietter	1__t___zz
_	infi	saietter
_	ppre	saiettant
_	ipre 1sg	saiette
_	ipre 3sg	saiette
_	spre 1sg	saiette
_	spre 3sg	saiette
392933
392934
392935
392936
392937
392938
392939
392940

392941
392942
392943
392944
392945
392946
392947
393079
393080
393081
393082
393083
393084
393085

393086
393087
393088
393089
393090
393091
393092
393093







-
+







_	impe 1pl	solidarisons
_	impe 2pl	solidarisez
_	ppas mas sg	solidarisé
_	ppas mas pl	solidarisés
_	ppas fem sg	solidarisée
_	ppas fem pl	solidarisées
$
solidifier	1__t_q_zz
solidifier	1_it_q__a
_	infi	solidifier
_	ppre	solidifiant
_	ipre 1sg	solidifie
_	ipre 3sg	solidifie
_	spre 1sg	solidifie
_	spre 3sg	solidifie
_	ipre 1isg	solidifiè
409407
409408
409409
409410
409411
409412
409413
















409414
409415
409416
409417
409418
409419
409420
409553
409554
409555
409556
409557
409558
409559
409560
409561
409562
409563
409564
409565
409566
409567
409568
409569
409570
409571
409572
409573
409574
409575
409576
409577
409578
409579
409580
409581
409582







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	impe 1pl	systématisons
_	impe 2pl	systématisez
_	ppas mas sg	systématisé
_	ppas mas pl	systématisés
_	ppas fem sg	systématisée
_	ppas fem pl	systématisées
$
s’abader	1____p_e_
_	infi	s’abader
$
s’abriller	1____p_e_
_	infi	s’abriller
$
s’agir	2____p_e_
_	infi	s’agir
_	ppre	s’agissant
_	ipre 3sg	s’agit
_	iimp 3sg	s’agissait
_	ifut 3sg	s’agira
_	cond 3sg	s’agirait
_	spre 3sg	s’agisse
_	simp 3sg	s’agît
$
tabasser	1__t_q_zz
_	infi	tabasser
_	ppre	tabassant
_	ipre 1sg	tabasse
_	ipre 3sg	tabasse
_	spre 1sg	tabasse
_	spre 3sg	tabasse
422133
422134
422135
422136
422137
422138
422139






















































422140
422141
422142
422143
422144
422145
422146
422295
422296
422297
422298
422299
422300
422301
422302
422303
422304
422305
422306
422307
422308
422309
422310
422311
422312
422313
422314
422315
422316
422317
422318
422319
422320
422321
422322
422323
422324
422325
422326
422327
422328
422329
422330
422331
422332
422333
422334
422335
422336
422337
422338
422339
422340
422341
422342
422343
422344
422345
422346
422347
422348
422349
422350
422351
422352
422353
422354
422355
422356
422357
422358
422359
422360
422361
422362







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	impe 1pl	transitons
_	impe 2pl	transitez
_	ppas mas sg	transité
_	ppas mas pl	transités
_	ppas fem sg	transitée
_	ppas fem pl	transitées
$
transitionner	1_i_____a
_	infi	transitionner
_	ppre	transitionnant
_	ipre 1sg	transitionne
_	ipre 3sg	transitionne
_	spre 1sg	transitionne
_	spre 3sg	transitionne
_	ipre 1isg	transitionnè
_	ipre 2sg	transitionnes
_	spre 2sg	transitionnes
_	ipre 1pl	transitionnons
_	ipre 2pl	transitionnez
_	ipre 3pl	transitionnent
_	spre 3pl	transitionnent
_	iimp 1sg	transitionnais
_	iimp 2sg	transitionnais
_	iimp 3sg	transitionnait
_	iimp 1pl	transitionnions
_	spre 1pl	transitionnions
_	iimp 2pl	transitionniez
_	spre 2pl	transitionniez
_	iimp 3pl	transitionnaient
_	ipsi 1sg	transitionnai
_	ipsi 2sg	transitionnas
_	ipsi 3sg	transitionna
_	ipsi 1pl	transitionnâmes
_	ipsi 2pl	transitionnâtes
_	ipsi 3pl	transitionnèrent
_	ifut 1sg	transitionnerai
_	ifut 2sg	transitionneras
_	ifut 3sg	transitionnera
_	ifut 1pl	transitionnerons
_	ifut 2pl	transitionnerez
_	ifut 3pl	transitionneront
_	cond 1sg	transitionnerais
_	cond 2sg	transitionnerais
_	cond 3sg	transitionnerait
_	cond 1pl	transitionnerions
_	cond 2pl	transitionneriez
_	cond 3pl	transitionneraient
_	simp 1sg	transitionnasse
_	simp 2sg	transitionnasses
_	simp 3sg	transitionnât
_	simp 1pl	transitionnassions
_	simp 2pl	transitionnassiez
_	simp 3pl	transitionnassent
_	impe 2sg	transitionne
_	impe 1pl	transitionnons
_	impe 2pl	transitionnez
_	ppas mas sg	transitionné
_	ppas mas pl	transitionnés
_	ppas fem sg	transitionnée
_	ppas fem pl	transitionnées
$
translater	1__t___zz
_	infi	translater
_	ppre	translatant
_	ipre 1sg	translate
_	ipre 3sg	translate
_	spre 1sg	translate
_	spre 3sg	translate

Modified gc_lang/fr/data/dictDecl.txt from [86b8209873] to [3a7a8fac4c].

20997
20998
20999
21000
21001
21002
21003




21004
21005
21006
21007
21008
21009
21010
20997
20998
20999
21000
21001
21002
21003
21004
21005
21006
21007
21008
21009
21010
21011
21012
21013
21014







+
+
+
+







_	adj mas sg	autocollant
_	adj mas pl	autocollants
$
autocommutateur	S*()
_	nom mas sg	autocommutateur
_	nom mas pl	autocommutateurs
$
autocomplétion	S*()
_	nom fem sg	autocomplétion
_	nom fem pl	autocomplétions
$
autoconcurrence	S*()
_	nom fem sg	autoconcurrence
_	nom fem pl	autoconcurrences
$
autoconditionnement	S*()
_	nom mas sg	autoconditionnement
_	nom mas pl	autoconditionnements
22538
22539
22540
22541
22542
22543
22544




22545
22546
22547
22548
22549
22550
22551
22542
22543
22544
22545
22546
22547
22548
22549
22550
22551
22552
22553
22554
22555
22556
22557
22558
22559







+
+
+
+







_	nom mas sg	aviron
_	nom mas pl	avirons
$
avirulence	S*()
_	nom fem sg	avirulence
_	nom fem pl	avirulences
$
aviseur	S*()
_	nom mas sg	aviseur
_	nom mas pl	aviseurs
$
aviso	S*()
_	nom mas sg	aviso
_	nom mas pl	avisos
$
avitaillement	S*()
_	nom mas sg	avitaillement
_	nom mas pl	avitaillements
23573
23574
23575
23576
23577
23578
23579
23580
23581
23582
23583
23584
23585
23586
23587
23588
23589
23590
23591
23592
23593
23594
23595
23596
23597
23598
23599
23600
23601
23602
23603
23604
23605










23606
23607
23608
23609
23610
23611
23612
23581
23582
23583
23584
23585
23586
23587






23588
23589
23590
23591
23592
23593




23594
23595
23596
23597
23598
23599
23600
23601
23602
23603
23604
23605
23606
23607
23608
23609
23610
23611
23612
23613
23614
23615
23616
23617
23618
23619
23620







-
-
-
-
-
-






-
-
-
-










+
+
+
+
+
+
+
+
+
+







_	nom mas sg	baguier
_	nom mas pl	baguiers
$
baguiste	S.()
_	nom epi sg	baguiste
_	nom epi pl	baguistes
$
baha'ie	F.()
_	nom adj fem sg	baha'ie
_	nom adj fem pl	baha'ies
_	nom adj mas sg	baha'i
_	nom adj mas pl	baha'is
$
bahaïe	F.()
_	nom adj fem sg	bahaïe
_	nom adj fem pl	bahaïes
_	nom adj mas sg	bahaï
_	nom adj mas pl	bahaïs
$
baha'isme	S.()
_	nom mas sg	baha'isme
_	nom mas pl	baha'ismes
$
bahaïsme	S.()
_	nom mas sg	bahaïsme
_	nom mas pl	bahaïsmes
$
bahamienne	F.()
_	nom adj fem sg	bahamienne
_	nom adj fem pl	bahamiennes
_	nom adj mas sg	bahamien
_	nom adj mas pl	bahamiens
$
baha’ie	F.()
_	nom adj fem sg	baha’ie
_	nom adj fem pl	baha’ies
_	nom adj mas sg	baha’i
_	nom adj mas pl	baha’is
$
baha’isme	S.()
_	nom mas sg	baha’isme
_	nom mas pl	baha’ismes
$
bahreïnie	F.()
_	nom adj fem sg	bahreïnie
_	nom adj fem pl	bahreïnies
_	nom adj mas sg	bahreïni
_	nom adj mas pl	bahreïnis
$
baht	S.()
32435
32436
32437
32438
32439
32440
32441




32442
32443
32444
32445
32446
32447
32448
32443
32444
32445
32446
32447
32448
32449
32450
32451
32452
32453
32454
32455
32456
32457
32458
32459
32460







+
+
+
+







_	nom fem sg	bouillasse
_	nom fem pl	bouillasses
$
bouille	S.()
_	nom fem sg	bouille
_	nom fem pl	bouilles
$
bouillette	S.()
_	nom fem sg	bouillette
_	nom fem pl	bouillettes
$
bouilleuse	F.()
_	nom fem sg	bouilleuse
_	nom fem pl	bouilleuses
_	nom mas sg	bouilleur
_	nom mas pl	bouilleurs
$
bouillie	S.()
47667
47668
47669
47670
47671
47672
47673
47674
47675
47676
47677
47678
47679
47680
47681
47682
47683
47684
47679
47680
47681
47682
47683
47684
47685




47686
47687
47688
47689
47690
47691
47692







-
-
-
-







_	nom adj epi sg	chti
_	nom adj epi pl	chtis
$
chtimi	S.()
_	nom adj epi sg	chtimi
_	nom adj epi pl	chtimis
$
ch'timi	S.()
_	nom adj epi sg	ch'timi
_	nom adj epi pl	ch'timis
$
chtonienne	F.()
_	adj fem sg	chtonienne
_	adj fem pl	chtoniennes
_	adj mas sg	chtonien
_	adj mas pl	chtoniens
$
chtouille	S.()
47761
47762
47763
47764
47765
47766
47767




47768
47769
47770
47771
47772
47773
47774
47769
47770
47771
47772
47773
47774
47775
47776
47777
47778
47779
47780
47781
47782
47783
47784
47785
47786







+
+
+
+







_	adj mas sg	chypré
_	adj mas pl	chyprés
$
chypriote	S.()
_	nom adj epi sg	chypriote
_	nom adj epi pl	chypriotes
$
ch’timi	S.()
_	nom adj epi sg	ch’timi
_	nom adj epi pl	ch’timis
$
ciabatta	S.()
_	nom fem sg	ciabatta
_	nom fem pl	ciabattas
$
cibiche	S.()
_	nom fem sg	cibiche
_	nom fem pl	cibiches
70454
70455
70456
70457
70458
70459
70460






70461
70462
70463
70464
70465
70466
70467
70466
70467
70468
70469
70470
70471
70472
70473
70474
70475
70476
70477
70478
70479
70480
70481
70482
70483
70484
70485







+
+
+
+
+
+







_	nom mas sg	dépolissage
_	nom mas pl	dépolissages
$
dépolitisation	S.()
_	nom fem sg	dépolitisation
_	nom fem pl	dépolitisations
$
dépolluante	F.()
_	adj fem sg	dépolluante
_	adj fem pl	dépolluantes
_	adj mas sg	dépolluant
_	adj mas pl	dépolluants
$
dépollution	S.()
_	nom fem sg	dépollution
_	nom fem pl	dépollutions
$
dépolymérisation	S.()
_	nom fem sg	dépolymérisation
_	nom fem pl	dépolymérisations
78418
78419
78420
78421
78422
78423
78424
78425
78426
78427



78428
78429
78430
78431



78432
78433
78434
78435
78436
78437
78438
78436
78437
78438
78439
78440
78441
78442



78443
78444
78445
78446



78447
78448
78449
78450
78451
78452
78453
78454
78455
78456







-
-
-
+
+
+

-
-
-
+
+
+







_	nom epi sg	droguiste
_	nom epi pl	droguistes
$
droïde	S.()
_	nom mas sg	droïde
_	nom mas pl	droïdes
$
droit-de-l'hommisme	S.()
_	nom mas sg	droit-de-l'hommisme
_	nom mas pl	droit-de-l'hommismes
droit-de-lhommisme	S.()
_	nom mas sg	droit-de-lhommisme
_	nom mas pl	droit-de-lhommismes
$
droit-de-l'hommiste	S.()
_	nom adj epi sg	droit-de-l'hommiste
_	nom adj epi pl	droit-de-l'hommistes
droit-de-lhommiste	S.()
_	nom adj epi sg	droit-de-lhommiste
_	nom adj epi pl	droit-de-lhommistes
$
droite	F.()
_	nom adj fem sg	droite
_	nom adj fem pl	droites
_	nom adj mas sg	droit
_	nom adj mas pl	droits
$
98456
98457
98458
98459
98460
98461
98462
98463
98464
98465
98466




98467
98468
98469
98470
98471
98472
98473
98474
98475
98476
98477
98478
98479
98480




98481
98482
98483
98484
98485
98486
98487
98488
98489
98490
98491







-
-
-
-
+
+
+
+







_	nom fem pl	finances
$
financement	S.()
_	nom mas sg	financement
_	nom mas pl	financements
$
financeuse	F.()
_	nom fem sg	financeuse
_	nom fem pl	financeuses
_	nom mas sg	financeur
_	nom mas pl	financeurs
_	nom adj fem sg	financeuse
_	nom adj fem pl	financeuses
_	nom adj mas sg	financeur
_	nom adj mas pl	financeurs
$
financiarisation	S.()
_	nom fem sg	financiarisation
_	nom fem pl	financiarisations
$
financiarisme	S.()
_	nom mas sg	financiarisme
120164
120165
120166
120167
120168
120169
120170




120171
120172
120173
120174
120175
120176
120177
120182
120183
120184
120185
120186
120187
120188
120189
120190
120191
120192
120193
120194
120195
120196
120197
120198
120199







+
+
+
+







_	adj epi sg	hyperchrome
_	adj epi pl	hyperchromes
$
hyperchromie	S*()
_	nom fem sg	hyperchromie
_	nom fem pl	hyperchromies
$
hypercoagulabilité	S*()
_	nom fem sg	hypercoagulabilité
_	nom fem pl	hypercoagulabilités
$
hypercomplexe	S*()
_	adj epi sg	hypercomplexe
_	adj epi pl	hypercomplexes
$
hyperconformisme	S*()
_	nom mas sg	hyperconformisme
_	nom mas pl	hyperconformismes
120471
120472
120473
120474
120475
120476
120477




120478
120479
120480
120481
120482
120483
120484
120493
120494
120495
120496
120497
120498
120499
120500
120501
120502
120503
120504
120505
120506
120507
120508
120509
120510







+
+
+
+







_	adj epi sg	hyperonymique
_	adj epi pl	hyperonymiques
$
hyperostose	S*()
_	nom fem sg	hyperostose
_	nom fem pl	hyperostoses
$
hyperoxie	S*()
_	nom fem sg	hyperoxie
_	nom fem pl	hyperoxies
$
hyperparasite	S*()
_	nom mas sg	hyperparasite
_	nom mas pl	hyperparasites
$
hyperparathyroïdie	S*()
_	nom fem sg	hyperparathyroïdie
_	nom fem pl	hyperparathyroïdies
125452
125453
125454
125455
125456
125457
125458






125459
125460
125461
125462
125463
125464
125465
125478
125479
125480
125481
125482
125483
125484
125485
125486
125487
125488
125489
125490
125491
125492
125493
125494
125495
125496
125497







+
+
+
+
+
+







_	adj epi sg	increvable
_	adj epi pl	increvables
$
incriminable	S*()
_	adj epi sg	incriminable
_	adj epi pl	incriminables
$
incriminante	F*()
_	adj fem sg	incriminante
_	adj fem pl	incriminantes
_	adj mas sg	incriminant
_	adj mas pl	incriminants
$
incrimination	S*()
_	nom fem sg	incrimination
_	nom fem pl	incriminations
$
incristallisable	S*()
_	adj epi sg	incristallisable
_	adj epi pl	incristallisables
134167
134168
134169
134170
134171
134172
134173
134174
134175
134176



134177
134178
134179
134180



134181
134182
134183
134184



134185
134186
134187
134188



134189
134190
134191
134192
134193
134194
134195
134199
134200
134201
134202
134203
134204
134205



134206
134207
134208
134209



134210
134211
134212
134213



134214
134215
134216
134217



134218
134219
134220
134221
134222
134223
134224
134225
134226
134227







-
-
-
+
+
+

-
-
-
+
+
+

-
-
-
+
+
+

-
-
-
+
+
+







_	nom mas sg	jéjuno-iléon
_	nom mas pl	jéjuno-iléons
$
jéjunum	S.()
_	nom mas sg	jéjunum
_	nom mas pl	jéjunums
$
je-m'en-fichisme	S.()
_	nom mas sg	je-m'en-fichisme
_	nom mas pl	je-m'en-fichismes
je-men-fichisme	S.()
_	nom mas sg	je-men-fichisme
_	nom mas pl	je-men-fichismes
$
je-m'en-fichiste	S.()
_	nom adj epi sg	je-m'en-fichiste
_	nom adj epi pl	je-m'en-fichistes
je-men-fichiste	S.()
_	nom adj epi sg	je-men-fichiste
_	nom adj epi pl	je-men-fichistes
$
je-m'en-foutisme	S.()
_	nom mas sg	je-m'en-foutisme
_	nom mas pl	je-m'en-foutismes
je-men-foutisme	S.()
_	nom mas sg	je-men-foutisme
_	nom mas pl	je-men-foutismes
$
je-m'en-foutiste	S.()
_	nom adj epi sg	je-m'en-foutiste
_	nom adj epi pl	je-m'en-foutistes
je-men-foutiste	S.()
_	nom adj epi sg	je-men-foutiste
_	nom adj epi pl	je-men-foutistes
$
jennérienne	F.()
_	adj fem sg	jennérienne
_	adj fem pl	jennériennes
_	adj mas sg	jennérien
_	adj mas pl	jennériens
$
135285
135286
135287
135288
135289
135290
135291
135292
135293
135294
135295
135296
135297
135298
135299
135300
135301
135302
135303








135304
135305
135306
135307
135308
135309
135310
135317
135318
135319
135320
135321
135322
135323








135324
135325
135326
135327
135328
135329
135330
135331
135332
135333
135334
135335
135336
135337
135338
135339
135340
135341
135342







-
-
-
-
-
-
-
-




+
+
+
+
+
+
+
+







_	nom mas sg	jusnaturalisme
_	nom mas pl	jusnaturalismes
$
jusnaturaliste	S.()
_	nom adj epi sg	jusnaturaliste
_	nom adj epi pl	jusnaturalistes
$
jusqu'au-boutisme	S.()
_	nom mas sg	jusqu'au-boutisme
_	nom mas pl	jusqu'au-boutismes
$
jusqu'au-boutiste	S.()
_	nom epi sg	jusqu'au-boutiste
_	nom epi pl	jusqu'au-boutistes
$
jusquiame	S.()
_	nom fem sg	jusquiame
_	nom fem pl	jusquiames
$
jusqu’au-boutisme	S.()
_	nom mas sg	jusqu’au-boutisme
_	nom mas pl	jusqu’au-boutismes
$
jusqu’au-boutiste	S.()
_	nom epi sg	jusqu’au-boutiste
_	nom epi pl	jusqu’au-boutistes
$
jussiée	S.()
_	nom fem sg	jussiée
_	nom fem pl	jussiées
$
jussion	S.()
_	nom fem sg	jussion
_	nom fem pl	jussions
146208
146209
146210
146211
146212
146213
146214
146215
146216
146217
146218
146219
146220
146221
146222




146223
146224
146225



146226
146227
146228
146229
146230
146231
146232
146240
146241
146242
146243
146244
146245
146246




146247
146248
146249
146250
146251
146252
146253
146254



146255
146256
146257
146258
146259
146260
146261
146262
146263
146264







-
-
-
-




+
+
+
+
-
-
-
+
+
+







_	nom mas sg	mammouth
_	nom mas pl	mammouths
$
mammy	S.()
_	nom fem sg	mammy
_	nom fem pl	mammys
$
mam'selle	S.()
_	nom fem sg	mam'selle
_	nom fem pl	mam'selles
$
mamy	S.()
_	nom fem sg	mamy
_	nom fem pl	mamys
$
mam’selle	S.()
_	nom fem sg	mam’selle
_	nom fem pl	mam’selles
$
mam'zelle	S.()
_	nom fem sg	mam'zelle
_	nom fem pl	mam'zelles
mamzelle	S.()
_	nom fem sg	mamzelle
_	nom fem pl	mamzelles
$
man	S.()
_	nom mas sg	man
_	nom mas pl	mans
$
mana	S.()
_	nom mas sg	mana
149186
149187
149188
149189
149190
149191
149192





149193
149194
149195
149196
149197
149198
149199
149218
149219
149220
149221
149222
149223
149224
149225
149226
149227
149228
149229
149230
149231
149232
149233
149234
149235
149236







+
+
+
+
+







_	nom mas sg	méaculpa
_	nom mas pl	méaculpas
$
méandre	S.()
_	nom mas sg	méandre
_	nom mas pl	méandres
$
méandreuse	W.()
_	adj fem sg	méandreuse
_	adj fem pl	méandreuses
_	adj mas inv	méandreux
$
méandriforme	S.()
_	adj epi sg	méandriforme
_	adj epi pl	méandriformes
$
méandrine	S.()
_	nom fem sg	méandrine
_	nom fem pl	méandrines
151471
151472
151473
151474
151475
151476
151477






151478
151479
151480
151481
151482
151483
151484
151508
151509
151510
151511
151512
151513
151514
151515
151516
151517
151518
151519
151520
151521
151522
151523
151524
151525
151526
151527







+
+
+
+
+
+







_	adj mas sg	mesmérien
_	adj mas pl	mesmériens
$
mesmérisme	S.()
_	nom mas sg	mesmérisme
_	nom mas pl	mesmérismes
$
mésoaméricaine	F.()
_	nom adj fem sg	mésoaméricaine
_	nom adj fem pl	mésoaméricaines
_	nom adj mas sg	mésoaméricain
_	nom adj mas pl	mésoaméricains
$
mésoblaste	S.()
_	nom mas sg	mésoblaste
_	nom mas pl	mésoblastes
$
mésoblastique	S.()
_	adj epi sg	mésoblastique
_	adj epi pl	mésoblastiques
163202
163203
163204
163205
163206
163207
163208








163209
163210
163211
163212
163213
163214
163215
163245
163246
163247
163248
163249
163250
163251
163252
163253
163254
163255
163256
163257
163258
163259
163260
163261
163262
163263
163264
163265
163266







+
+
+
+
+
+
+
+







_	nom epi sg	neuroanatomiste
_	nom epi pl	neuroanatomistes
$
neuro-anatomiste	S.()
_	nom epi sg	neuro-anatomiste
_	nom epi pl	neuro-anatomistes
$
neuroatypique	S.()
_	adj epi sg	neuroatypique
_	adj epi pl	neuroatypiques
$
neuro-atypique	S.()
_	adj epi sg	neuro-atypique
_	adj epi pl	neuro-atypiques
$
neurobiochimie	S.()
_	nom fem sg	neurobiochimie
_	nom fem pl	neurobiochimies
$
neurobiochimique	S.()
_	adj epi sg	neurobiochimique
_	adj epi pl	neurobiochimiques
169574
169575
169576
169577
169578
169579
169580




169581
169582
169583
169584
169585
169586
169587
169625
169626
169627
169628
169629
169630
169631
169632
169633
169634
169635
169636
169637
169638
169639
169640
169641
169642







+
+
+
+







_	nom fem sg	orchidacée
_	nom fem pl	orchidacées
$
orchidée	S*()
_	nom fem sg	orchidée
_	nom fem pl	orchidées
$
orchidologie	S*()
_	nom fem sg	orchidologie
_	nom fem pl	orchidologies
$
orchiépididymite	S*()
_	nom fem sg	orchiépididymite
_	nom fem pl	orchiépididymites
$
orchi-épididymite	S*()
_	nom fem sg	orchi-épididymite
_	nom fem pl	orchi-épididymites
183644
183645
183646
183647
183648
183649
183650




183651
183652
183653
183654
183655
183656
183657
183699
183700
183701
183702
183703
183704
183705
183706
183707
183708
183709
183710
183711
183712
183713
183714
183715
183716







+
+
+
+







_	nom mas pl	piémonts
$
piémontaise	F.()
_	nom adj fem sg	piémontaise
_	nom adj fem pl	piémontaises
_	nom adj mas inv	piémontais
$
pier	S.()
_	nom mas sg	pier
_	nom mas pl	piers
$
piercing	S.()
_	nom mas sg	piercing
_	nom mas pl	piercings
$
piéride	S.()
_	nom fem sg	piéride
_	nom fem pl	piérides
192667
192668
192669
192670
192671
192672
192673




192674
192675
192676
192677
192678
192679
192680
192726
192727
192728
192729
192730
192731
192732
192733
192734
192735
192736
192737
192738
192739
192740
192741
192742
192743







+
+
+
+







_	nom fem sg	présidentialisation
_	nom fem pl	présidentialisations
$
présidentialisme	S.()
_	nom mas sg	présidentialisme
_	nom mas pl	présidentialismes
$
présidentialiste	S.()
_	nom adj epi sg	présidentialiste
_	nom adj epi pl	présidentialistes
$
présidentielle	F.()
_	adj fem sg	présidentielle
_	adj fem pl	présidentielles
_	adj mas sg	présidentiel
_	adj mas pl	présidentiels
$
présidial	X.()
192718
192719
192720
192721
192722
192723
192724
192725
192726
192727



192728
192729
192730
192731



192732
192733
192734
192735
192736
192737
192738
192781
192782
192783
192784
192785
192786
192787



192788
192789
192790
192791



192792
192793
192794
192795
192796
192797
192798
192799
192800
192801







-
-
-
+
+
+

-
-
-
+
+
+







_	nom adj fem pl	présomptueuses
_	nom adj mas inv	présomptueux
$
présonorisation	S.()
_	nom fem sg	présonorisation
_	nom fem pl	présonorisations
$
presqu'ile	S.()
_	nom fem sg	presqu'ile
_	nom fem pl	presqu'iles
presquile	S.()
_	nom fem sg	presquile
_	nom fem pl	presquiles
$
presqu'île	S.()
_	nom fem sg	presqu'île
_	nom fem pl	presqu'îles
presquîle	S.()
_	nom fem sg	presquîle
_	nom fem pl	presquîles
$
pressabilité	S.()
_	nom fem sg	pressabilité
_	nom fem pl	pressabilités
$
pressage	S.()
_	nom mas sg	pressage
195896
195897
195898
195899
195900
195901
195902
195903
195904
195905
195906
195907
195908
195909
195910
195911
195912
195913
195914
195915
195916
195917
195918
195919
195920
195921
195922
195923
195924
195925
195926
195927
195928
195929
195930
195931
195932
195933
195934
195935
195936
195937
195938














195939
195940
195941
195942
195943
195944
195945
195959
195960
195961
195962
195963
195964
195965










195966
195967
195968
195969
195970
195971
195972
195973
195974
195975




195976
195977
195978
195979
195980
195981
195982
195983
195984
195985
195986
195987
195988
195989
195990
195991
195992
195993
195994
195995
195996
195997
195998
195999
196000
196001
196002
196003
196004
196005
196006
196007
196008







-
-
-
-
-
-
-
-
-
-










-
-
-
-












+
+
+
+
+
+
+
+
+
+
+
+
+
+







_	adj mas sg	prudentiel
_	adj mas pl	prudentiels
$
pruderie	S.()
_	nom fem sg	pruderie
_	nom fem pl	pruderies
$
prud'homale	W.()
_	adj fem sg	prud'homale
_	adj fem pl	prud'homales
_	adj mas sg	prud'homal
_	adj mas pl	prud'homaux
$
prud'homie	S.()
_	nom fem sg	prud'homie
_	nom fem pl	prud'homies
$
prudhommale	W.()
_	adj fem sg	prudhommale
_	adj fem pl	prudhommales
_	adj mas sg	prudhommal
_	adj mas pl	prudhommaux
$
prudhomme	S.()
_	nom mas sg	prudhomme
_	nom mas pl	prudhommes
$
prud'homme	S.()
_	nom mas sg	prud'homme
_	nom mas pl	prud'hommes
$
prudhommerie	S.()
_	nom fem sg	prudhommerie
_	nom fem pl	prudhommeries
$
prudhommesque	S.()
_	adj epi sg	prudhommesque
_	adj epi pl	prudhommesques
$
prudhommie	S.()
_	nom fem sg	prudhommie
_	nom fem pl	prudhommies
$
prud’homale	W.()
_	adj fem sg	prud’homale
_	adj fem pl	prud’homales
_	adj mas sg	prud’homal
_	adj mas pl	prud’homaux
$
prud’homie	S.()
_	nom fem sg	prud’homie
_	nom fem pl	prud’homies
$
prud’homme	S.()
_	nom mas sg	prud’homme
_	nom mas pl	prud’hommes
$
pruine	S.()
_	nom fem sg	pruine
_	nom fem pl	pruines
$
prune	S.()
_	nom epi sg	prune
_	nom epi pl	prunes
196839
196840
196841
196842
196843
196844
196845
196846
196847
196848
196849
196850
196851
196852
196853
196854
196855
196856
196857
196858
196902
196903
196904
196905
196906
196907
196908






196909
196910
196911
196912
196913
196914
196915







-
-
-
-
-
-







_	adj mas sg	ptérygoïdien
_	adj mas pl	ptérygoïdiens
$
ptérygote	S.()
_	nom mas sg	ptérygote
_	nom mas pl	ptérygotes
$
p'tite	F.()
_	nom adj fem sg	p'tite
_	nom adj fem pl	p'tites
_	nom adj mas sg	p'tit
_	nom adj mas pl	p'tits
$
ptolémaïque	S.()
_	adj epi sg	ptolémaïque
_	adj epi pl	ptolémaïques
$
ptoléméenne	F.()
_	adj fem sg	ptoléméenne
_	adj fem pl	ptoléméennes
197767
197768
197769
197770
197771
197772
197773




197774
197775
197776
197777
197778
197779
197780
197824
197825
197826
197827
197828
197829
197830
197831
197832
197833
197834
197835
197836
197837
197838
197839
197840
197841







+
+
+
+







_	nom fem sg	pyélonéphrite
_	nom fem pl	pyélonéphrites
$
pygargue	S.()
_	nom mas sg	pygargue
_	nom mas pl	pygargues
$
pygmalionisme	S.()
_	nom mas sg	pygmalionisme
_	nom mas pl	pygmalionismes
$
pygmée	S.()
_	nom adj epi sg	pygmée
_	nom adj epi pl	pygmées
$
pygméenne	F.()
_	adj fem sg	pygméenne
_	adj fem pl	pygméennes
198233
198234
198235
198236
198237
198238
198239






198240
198241
198242
198243
198244
198245
198246
198294
198295
198296
198297
198298
198299
198300
198301
198302
198303
198304
198305
198306
198307
198308
198309
198310
198311
198312
198313







+
+
+
+
+
+







_	nom fem sg	pyurie
_	nom fem pl	pyuries
$
pyxide	S.()
_	nom fem sg	pyxide
_	nom fem pl	pyxides
$
p’tite	F.()
_	nom adj fem sg	p’tite
_	nom adj fem pl	p’tites
_	nom adj mas sg	p’tit
_	nom adj mas pl	p’tits
$
qanat	S.()
_	nom mas sg	qanat
_	nom mas pl	qanats
$
qat	S.()
_	nom mas sg	qat
_	nom mas pl	qats
201963
201964
201965
201966
201967
201968
201969




201970
201971
201972
201973
201974
201975
201976
202030
202031
202032
202033
202034
202035
202036
202037
202038
202039
202040
202041
202042
202043
202044
202045
202046
202047







+
+
+
+







_	nom fem sg	ratification
_	nom fem pl	ratifications
$
ratinage	S.()
_	nom mas sg	ratinage
_	nom mas pl	ratinages
$
ratine	S.()
_	nom fem sg	ratine
_	nom fem pl	ratines
$
rating	S.()
_	nom mas sg	rating
_	nom mas pl	ratings
$
ratio	S.()
_	nom mas sg	ratio
_	nom mas pl	ratios
202808
202809
202810
202811
202812
202813
202814




202815
202816
202817
202818
202819
202820
202821
202879
202880
202881
202882
202883
202884
202885
202886
202887
202888
202889
202890
202891
202892
202893
202894
202895
202896







+
+
+
+







_	nom mas sg	recéleur
_	nom mas pl	recéleurs
$
récence	S.()
_	nom fem sg	récence
_	nom fem pl	récences
$
recensable	S.()
_	adj epi sg	recensable
_	adj epi pl	recensables
$
recensement	S.()
_	nom mas sg	recensement
_	nom mas pl	recensements
$
recenseuse	F.()
_	nom fem sg	recenseuse
_	nom fem pl	recenseuses
203854
203855
203856
203857
203858
203859
203860




203861
203862
203863
203864
203865
203866
203867
203929
203930
203931
203932
203933
203934
203935
203936
203937
203938
203939
203940
203941
203942
203943
203944
203945
203946







+
+
+
+







$
recycleuse	F.()
_	nom adj fem sg	recycleuse
_	nom adj fem pl	recycleuses
_	nom adj mas sg	recycleur
_	nom adj mas pl	recycleurs
$
rédac-chef	S.()
_	nom epi sg	rédac-chef
_	nom epi pl	rédac-chefs
$
rédaction	S.()
_	nom fem sg	rédaction
_	nom fem pl	rédactions
$
rédactionnel	S.()
_	nom mas sg	rédactionnel
_	nom mas pl	rédactionnels
230574
230575
230576
230577
230578
230579
230580




230581
230582
230583
230584
230585
230586
230587
230653
230654
230655
230656
230657
230658
230659
230660
230661
230662
230663
230664
230665
230666
230667
230668
230669
230670







+
+
+
+







_	adj mas sg	surhumain
_	adj mas pl	surhumains
$
surhumanité	S.()
_	nom fem sg	surhumanité
_	nom fem pl	surhumanités
$
surhydratation	S.()
_	nom fem sg	surhydratation
_	nom fem pl	surhydratations
$
suricate	S.()
_	nom mas sg	suricate
_	nom mas pl	suricates
$
surie	F.()
_	adj fem sg	surie
_	adj fem pl	suries
230923
230924
230925
230926
230927
230928
230929




230930
230931
230932
230933
230934
230935
230936
231006
231007
231008
231009
231010
231011
231012
231013
231014
231015
231016
231017
231018
231019
231020
231021
231022
231023







+
+
+
+







$
surprenante	F.()
_	adj fem sg	surprenante
_	adj fem pl	surprenantes
_	adj mas sg	surprenant
_	adj mas pl	surprenants
$
surprescription	S.()
_	nom fem sg	surprescription
_	nom fem pl	surprescriptions
$
surpresseur	S.()
_	nom mas sg	surpresseur
_	nom mas pl	surpresseurs
$
surpression	S.()
_	nom fem sg	surpression
_	nom fem pl	surpressions
244237
244238
244239
244240
244241
244242
244243




244244
244245
244246
244247
244248
244249
244250
244324
244325
244326
244327
244328
244329
244330
244331
244332
244333
244334
244335
244336
244337
244338
244339
244340
244341







+
+
+
+







_	nom mas sg	triton
_	nom mas pl	tritons
$
triturable	S.()
_	adj epi sg	triturable
_	adj epi pl	triturables
$
triturage	S.()
_	nom mas sg	triturage
_	nom mas pl	triturages
$
triturateur	S.()
_	nom mas sg	triturateur
_	nom mas pl	triturateurs
$
trituration	S.()
_	nom fem sg	trituration
_	nom fem pl	triturations
244431
244432
244433
244434
244435
244436
244437




244438
244439
244440
244441
244442
244443
244444
244522
244523
244524
244525
244526
244527
244528
244529
244530
244531
244532
244533
244534
244535
244536
244537
244538
244539







+
+
+
+







_	nom mas sg	troll
_	nom mas pl	trolls
$
trolle	S.()
_	nom fem sg	trolle
_	nom fem pl	trolles
$
trollesque	S.()
_	adj epi sg	trollesque
_	adj epi pl	trollesques
$
trolley	S.()
_	nom mas sg	trolley
_	nom mas pl	trolleys
$
trombe	S.()
_	nom fem sg	trombe
_	nom fem pl	trombes
251374
251375
251376
251377
251378
251379
251380




251381
251382
251383
251384
251385
251386
251387
251469
251470
251471
251472
251473
251474
251475
251476
251477
251478
251479
251480
251481
251482
251483
251484
251485
251486







+
+
+
+







_	nom fem sg	vidéoprojection
_	nom fem pl	vidéoprojections
$
vidéoprotection	S.()
_	nom fem sg	vidéoprotection
_	nom fem pl	vidéoprotections
$
vidéo-protection	S.()
_	nom fem sg	vidéo-protection
_	nom fem pl	vidéo-protections
$
vide-ordure	S.()
_	nom mas sg	vide-ordure
_	nom mas pl	vide-ordures
$
vidéosphère	S.()
_	nom fem sg	vidéosphère
_	nom fem pl	vidéosphères
251520
251521
251522
251523
251524
251525
251526




251527
251528
251529
251530
251531
251532
251533
251619
251620
251621
251622
251623
251624
251625
251626
251627
251628
251629
251630
251631
251632
251633
251634
251635
251636







+
+
+
+







_	adj epi sg	vierge
_	adj epi pl	vierges
$
vierge	S.()
_	nom fem sg	vierge
_	nom fem pl	vierges
$
viétique	S.()
_	adj epi sg	viétique
_	adj epi pl	viétiques
$
vietnamienne	F.()
_	nom adj fem sg	vietnamienne
_	nom adj fem pl	vietnamiennes
_	nom adj mas sg	vietnamien
_	nom adj mas pl	vietnamiens
$
vigésimale	W.()

Modified gc_lang/fr/dictionnaire/genfrdic.py from [4630ffd3ad] to [1dab8fa65c].

294
295
296
297
298
299
300
301

302
303
304
305
306
307


308
309
310
311
312
313
314
294
295
296
297
298
299
300

301
302
303
304
305


306
307
308
309
310
311
312
313
314







-
+




-
-
+
+







                hDst.write("  > {0[1]:>8} : {0[0]}\n".format(elem))

    def writeDictionary (self, spDst, dTplVars, nMode, bSimplified):
        "Écrire le fichier dictionnaire (.dic)"
        echo(' * Dictionnaire >> [ {}.dic ] ({})'.format(dTplVars['asciiName'], dTplVars['subDicts']))
        nEntry = 0
        for oEntry in self.lEntry:
            if oEntry.di in dTplVars['subDicts']:
            if oEntry.di in dTplVars['subDicts'] and " " not in oEntry.lemma:
                nEntry += 1
        with open(spDst+'/'+dTplVars['asciiName']+'.dic', 'w', encoding='utf-8', newline="\n") as hDst:
            hDst.write(str(nEntry)+"\n")
            for oEntry in self.lEntry:
                if oEntry.di in dTplVars['subDicts']:
                    hDst.write(oEntry.getEntryLine(self, nMode, bSimplified))
                if oEntry.di in dTplVars['subDicts'] and " " not in oEntry.lemma:
                    hDst.write(oEntry.getHunspellLine(self, nMode, bSimplified))

    def writeAffixes (self, spDst, dTplVars, nMode, bSimplified):
        "Écrire le fichier des affixes (.aff)"
        echo(' * Dictionnaire >> [ {}.aff ]'.format(dTplVars['asciiName']))
        info = "# This Source Code Form is subject to the terms of the Mozilla Public\n" + \
               "# License, v. 2.0. If a copy of the MPL was not distributed with this\n" + \
               "# file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n" + \
732
733
734
735
736
737
738
739

740
741
742
743
744
745
746
747
748
749
750
751

752
753
754
755
756
757
758
732
733
734
735
736
737
738

739
740
741
742
743
744
745
746
747
748
749
750

751
752
753
754
755
756
757
758







-
+











-
+







        self.iD = '0'

        # autres
        self.comment = ''
        self.err = ''
        self.nFlexions = 0
        self.lFlexions = []
        self.sRadical = ''
        self.sStem = ''
        self.nOccur = 0
        self.nAKO = -1   # Average known occurrences
        self.fFreq = 0
        self.oldFq = ''

        sLine = sLine.rstrip(" \n")
        # commentaire
        if '#' in sLine:
            sLine, comment = sLine.split('#', 1)
            self.comment = comment.strip()
        # éléments de la ligne
        elems = sLine.split()
        elems = sLine.split("\t")
        nElems = len(elems)
        # lemme et drapeaux
        firstElems = elems[0].split('/')
        self.lemma = firstElems[0]
        self.flags = firstElems[1]  if len(firstElems) > 1  else ''
        # morph
        for i in range(1, nElems):
814
815
816
817
818
819
820
821

822
823

824
825

826
827
828
829
830
831

832
833
834
835
836
837
838
814
815
816
817
818
819
820

821
822

823
824

825
826
827
828
829
830

831
832
833
834
835
836
837
838







-
+

-
+

-
+





-
+







        if re.search(r"\s$", self.lemma):
            sErr += 'espace en fin de lemme'
        if re.match(r"v[0123]", self.po) and not re.match(r"[eas_][ix_][tx_][nx_][pqreuvx_][mx_][ex_z][ax_z]\b", self.po[2:]):
            sErr += 'verbe inconnu: ' + self.po
        if (re.match(r"S[*.]", self.flags) and re.search("[sxz]$", self.lemma)) or (re.match(r"X[*.]", self.flags) and not re.search("[ul]$", self.lemma)):
            sErr += 'drapeau inutile'
        if self.iz == '' and re.match(r"[SXAI](?!=)", self.flags) and self.po:
            sErr += '[is]'
            sErr += '[is] vide'
        if re.match(r"pl|sg|inv", self.iz):
            sErr += '[is]'
            sErr += '[is] incomplet'
        if re.match(r"[FW]", self.flags) and re.search(r"epi|mas|fem|inv|sg|pl", self.iz):
            sErr += '[is]'
            sErr += '[is] incohérent'
        if re.match(r"[FW]", self.flags) and re.search(r"[^eë]$", self.lemma):
            sErr += "fin de lemme inapproprié"
        if re.match(r".\*", self.flags) and re.match(r"[bcdfgjklmnpqrstvwxz]", self.lemma):
            sErr += 'drapeau pour lemme commençant par une voyelle'
        if re.search(r"pl|sg|inv", self.iz) and re.match(r"[SXAIFW](?!=)", self.flags):
            sErr += '[is]'
            sErr += '[is] incohérent'
        if re.search(r"nom|adj", self.po) and re.match(r"(?i)[aâàäáeéèêëiîïíìoôöóòuûüúù]", self.lemma) and re.match("[SFWXAI][.]", self.flags) \
           and "pel" not in self.lx:
            sErr += 'le drapeau derait finir avec *'
        if not self.flags and self.iz.endswith(("mas", "fem", "epi")):
            sErr += '[is] incomplet'
        if self.flags.startswith(("a", "b", "c", "d")) and not self.lemma.endswith("er"):
            sErr += "drapeau pour verbe du 1ᵉʳ groupe sur un lemme non conforme"
863
864
865
866
867
868
869
870
871


872
873
874
875
876
877
878
863
864
865
866
867
868
869


870
871
872
873
874
875
876
877
878







-
-
+
+








    def keyTriNat (self):
        return (self.lemma.translate(CHARMAP), self.flags, self.po)

    def keyTriNum (self):
        return (self.lemma, self.flags, self.po)

    def getEntryLine (self, oDict, nMode, bSimplified=False):
        sLine = self.lemma
    def getHunspellLine (self, oDict, nMode, bSimplified=False):
        sLine = self.lemma.replace("’", "'")
        if self.flags:
            sLine += '/'
            sLine += self.flags  if not oDict.bShortenTags or bSimplified  else oDict.dAF[self.flags]
        if bSimplified:
            return sLine.replace("()", "") + "\n"
        if nMode > 0:
            sMorph = self.getMorph(nMode)
922
923
924
925
926
927
928



929
930
931
932
933
934
935
936








937
938
939
940
941
942
943
922
923
924
925
926
927
928
929
930
931








932
933
934
935
936
937
938
939
940
941
942
943
944
945
946







+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+







                if not sMorph.endswith((" mas", " fem", " epi")):
                    self.lFlexions.append( Flexion(self, sFlex, sMorph, sDic) )
                    self.nFlexions += 1
                else:
                    #echo(sFlex + " " + sMorph + ", ")
                    pass
        # Drapeaux dont le lemme féminin doit être remplacé par le masculin dans la gestion des formes fléchies
        if self.st:
            self.sStem = self.st
        else:
        if self.flags.startswith(("F.", "F*", "W.", "W*")):
            # recherche de la forme masculine
            for t in lTuples:
                sMorph = self.clean(t[1])
                if sMorph.endswith('mas') or sMorph.endswith('mas sg') or sMorph.endswith('mas inv'):
                    self.sRadical = t[0]
        else:
            self.sRadical = self.lemma
            if self.flags.startswith(("F.", "F*", "W.", "W*")):
                # recherche de la forme masculine
                for t in lTuples:
                    sMorph = self.clean(t[1])
                    if sMorph.endswith(('mas', 'mas sg', 'mas inv')):
                        self.sStem = t[0]
            else:
                self.sStem = self.lemma
        # Tag duplicates
        d = {}
        for oFlex in self.lFlexions:
            d[oFlex.sFlexion] = d.get(oFlex.sFlexion, 0) + 1
        for oFlex in self.lFlexions:
            oFlex.nDup = d[oFlex.sFlexion]

1188
1189
1190
1191
1192
1193
1194
1195

1196
1197
1198
1199
1200
1201
1202
1191
1192
1193
1194
1195
1196
1197

1198
1199
1200
1201
1202
1203
1204
1205







-
+







            sOccurs += t[1] + "\t"
        return "id\tFlexion\tLemme\tÉtiquettes\tMétagraphe (β)\tMetaphone2\tNotes\tSémantique\tÉtymologie\tSous-dictionnaire\t" + sOccurs + "Total occurrences\tDoublons\tMultiples\tFréquence\tIndice de fréquence\n"

    def __str__ (self, oStatsLex):
        sOccurs = ''
        for v in oStatsLex.dFlexions[self.sFlexion]:
            sOccurs += str(v) + "\t"
        return "{0.oEntry.iD}\t{0.sFlexion}\t{0.oEntry.sRadical}\t{0.sMorph}\t{0.metagfx}\t{0.metaph2}\t{0.oEntry.lx}\t{0.oEntry.se}\t{0.oEntry.et}\t{0.oEntry.di}{2}\t{1}{0.nOccur}\t{0.nDup}\t{0.nMulti}\t{0.fFreq:.15f}\t{0.cFq}\n".format(self, sOccurs, "/"+self.cDic if self.cDic != "*" else "")
        return "{0.oEntry.iD}\t{0.sFlexion}\t{0.oEntry.sStem}\t{0.sMorph}\t{0.metagfx}\t{0.metaph2}\t{0.oEntry.lx}\t{0.oEntry.se}\t{0.oEntry.et}\t{0.oEntry.di}{2}\t{1}{0.nOccur}\t{0.nDup}\t{0.nMulti}\t{0.fFreq:.15f}\t{0.cFq}\n".format(self, sOccurs, "/"+self.cDic if self.cDic != "*" else "")

    @classmethod
    def simpleHeader (cls):
        return "# :POS ;LEX ~SEM =FQ /DIC\n"

    def getGrammarCheckerRepr (self):
        return "{0.sFlexion}\t{0.oEntry.lemma}\t{1}\n".format(self, self._getSimpleTags())
1212
1213
1214
1215
1216
1217
1218
1219

1220
1221
1222
1223
1224
1225
1226
1215
1216
1217
1218
1219
1220
1221

1222
1223
1224
1225
1226
1227
1228
1229







-
+







        "ipre": ":Ip", "iimp": ":Iq", "ipsi": ":Is", "ifut": ":If",
        "spre": ":Sp", "simp": ":Sq", "cond": ":K", "impe": ":E",
        "1sg": ":1s", "1isg": ":1ś", "1jsg": ":1ŝ", "2sg": ":2s", "3sg": ":3s", "1pl": ":1p", "2pl": ":2p", "3pl": ":3p", "3pl!": ":3p!",
        "prepv": ":Rv", "prep": ":R", "loc.prep": ":Ŕ",
        "detpos": ":Dp", "detdem": ":Dd", "detind": ":Di", "detneg": ":Dn", "detex": ":De", "det": ":D",
        "advint": ":U",
        "prodem": ":Od", "proind": ":Oi", "proint": ":Ot", "proneg": ":On", "prorel": ":Or", "proadv": ":Ow",
        "properobj": ":Oo", "propersuj": ":Os", "1pe": ":O1", "2pe": ":O2", "3pe": ":O3",
        "properobj": ":Oo", "propersuj": ":Os", "1pe": ":O1", "2pe": ":O2", "3pe": ":O3", "preverb": ":Ov",
        "cjco": ":Cc", "cjsub": ":Cs", "cj": ":C", "loc.cj": ":Ĉ", "loc.cjsub": ":Ĉs",
        "prn": ":M1", "patr": ":M2", "loc.patr": ":Ḿ2", "npr": ":MP", "nompr": ":NM",
        "pfx": ":Zp", "sfx": ":Zs",
        "div": ":H",
        "err": ":#",
        # LEX
        "symb": ";S"
1254
1255
1256
1257
1258
1259
1260
1261

1262
1263
1264

1265
1266
1267
1268
1269
1270
1271
1257
1258
1259
1260
1261
1262
1263

1264
1265
1266

1267
1268
1269
1270
1271
1272
1273
1274







-
+


-
+







            s += "/" + self.oEntry.di
        return s

    def keyTriNat (self):
        return (self.sFlexion.translate(CHARMAP), self.sMorph)

    def keyFreq (self):
        return (100-self.fFreq, self.oEntry.sRadical, self.sFlexion)
        return (100-self.fFreq, self.oEntry.sStem, self.sFlexion)

    def keyOcc (self):
        return (self.nOccur, self.oEntry.sRadical, self.sFlexion)
        return (self.nOccur, self.oEntry.sStem, self.sFlexion)

    def keyIdx (self):
        return self.oEntry.iD

    def keyFlexion (self):
        return self.sFlexion

1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1500
1501
1502
1503
1504
1505
1506

1507
1508
1509
1510
1511
1512
1513







-







                hDst.write(str(t)+"\n")
            for e in self.dFlexions.items():
                hDst.write("{} - {}\n".format(e[0], e[1]))



def main ():

    xParser = argparse.ArgumentParser()
    xParser.add_argument("-v", "--verdic", help="set dictionary version, i.e. 5.4", type=str, default="X.Y.z")
    xParser.add_argument("-m", "--mode", help="0: no tags,  1: Hunspell tags (default),  2: All tags", type=int, choices=[0, 1, 2], default=1)
    xParser.add_argument("-u", "--uncompress", help="do not use Hunspell compression", action="store_true")
    xParser.add_argument("-s", "--simplify", help="no virtual lemmas", action="store_true")
    xParser.add_argument("-sv", "--spellvariants", help="generate spell variants", action="store_true")
    xParser.add_argument("-gl", "--grammalecte", help="copy generated files to Grammalecte folders", action="store_true")
1555
1556
1557
1558
1559
1560
1561
1562

1563
1564
1565
1566
1567
1568
1569
1557
1558
1559
1560
1561
1562
1563

1564
1565
1566
1567
1568
1569
1570
1571







-
+







    oFrenchDict.calculateStats(oStatsLex, spfStats)

    ### écriture des paquets
    echo("Création des paquets...")

    spLexiconDestGL = "../../../lexicons"  if xArgs.grammalecte  else ""
    spLibreOfficeExtDestGL = "../oxt/Dictionnaires/dictionaries"  if xArgs.grammalecte  else ""
    spMozillaExtDestGL = ""  # les dictionnaires pour Hunspell ne sont plus utilisés pour l’instant dans Firefox / Thunderbird
    spMozillaExtDestGL = ""  if xArgs.grammalecte  else "" # no more Hunspell dictionaries in Mozilla extensions for now
    spDataDestGL = "../data"  if xArgs.grammalecte  else ""

    if not xArgs.uncompress:
        oFrenchDict.defineAbreviatedTags(xArgs.mode, spfStats)
    oFrenchDict.createFiles(spBuild, [dMODERNE, dTOUTESVAR, dCLASSIQUE, dREFORME1990], xArgs.mode, xArgs.simplify)
    oFrenchDict.createLexiconPackages(spBuild, xArgs.verdic, oStatsLex, spLexiconDestGL)
    oFrenchDict.createFileIfqForDB(spBuild)

Modified gc_lang/fr/dictionnaire/lexique/french.tagset.txt from [b4e8126915] to [4a587bac86].

51
52
53
54
55
56
57
58
59
60
61
62
63






64
65

66
67
68
69
70
71
72
51
52
53
54
55
56
57






58
59
60
61
62
63
64

65
66
67
68
69
70
71
72







-
-
-
-
-
-
+
+
+
+
+
+

-
+







        avec verbe auxilaire être ?         _________________________/  |
        avec verbe auxilaire avoir ?        ____________________________/

    Infinitif                   :Y
    Participe présent           :P
    Participe passé             :Q

    Indicatif présent           :Ip         1re personne du singulier   :1s  (forme interrogative: 1ś ou 1ŝ)
    Indicatif imparfait         :Iq         2e personne du singulier    :2s
    Indicatif passé simple      :Is         3e personne du singulier    :3s
    Indicatif futur             :If         1re personne du pluriel     :1p
                                            2e personne du pluriel      :2p
    Subjonctif présent          :Sp         3e personne du pluriel      :3p
    Indicatif présent           :Ip         1ʳᵉ personne du singulier   :1s  (forme interrogative: 1ś ou 1ŝ)
    Indicatif imparfait         :Iq         2 personne du singulier    :2s
    Indicatif passé simple      :Is         3 personne du singulier    :3s
    Indicatif futur             :If         1ʳᵉ personne du pluriel     :1p
                                            2 personne du pluriel      :2p
    Subjonctif présent          :Sp         3 personne du pluriel      :3p
    Subjonctif imparfait        :Sq
    

    Conditionnel                :K
    Impératif                   :E


//  MOTS GRAMMATICAUX

    Mot grammatical                     :G
90
91
92
93
94
95
96

97
98
99
100
101
102
103
104
105
106

107
108
109
110
111
112
113
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

107
108
109
110
111
112
113
114







+









-
+







    pronom indéterminé                  :Oi
    pronom interrogatif                 :Oj
    pronom relatif                      :Or
    pronom de négation                  :On
    pronom adverbial                    :Ow
    pronom personnel sujet              :Os
    pronom personnel objet              :Oo
    préverbe (pron. p. obj. + ne)       :Ov  (l’étiquette pour “ne” est une inexactitude commode)


========== MÉMO ==========

:A  Adjectif
:B  Nombre cardinal
:C  Conjonction
:D  Déterminant
:E  Impératif (verbe)
:F  
:F
:G  Mot grammatical
:H  <Hors-norme>
:I  Indicatif (verbe)
:J  Interjection
:K  Conditionnel (verbe)
:L  Locution
:M  Nom propre (sans article)
121
122
123
124
125
126
127
128
129
130



131
132
133
134
135
136
137
122
123
124
125
126
127
128



129
130
131
132
133
134
135
136
137
138







-
-
-
+
+
+







:U  Adverbe interrogatif
:V  Verbe (quelle que soit la forme)
:W  Adverbe
:X  Adverbe de négation
:Y  Infinitif (verbe)
:Z  Préfixe ou suffixe

:1  1re personne (verbe)
:2  2e personne (verbe)
:3  3e personne (verbe)
:1  1ʳᵉ personne (verbe)
:2  2 personne (verbe)
:3  3 personne (verbe)

:e  épicène
:f  féminin
:i  invariable
:m  masculin
:p  pluriel
:s  singulier

Modified gc_lang/fr/dictionnaire/orthographe/FRANCAIS.dic from [c0e9108156] to [cdf07a1aa1].

more than 10,000 changes

Modified gc_lang/fr/modules-js/conj.js from [f544af05b0] to [8124143953].

83
84
85
86
87
88
89
90

91
92
93
94
95
96
97
83
84
85
86
87
88
89

90
91
92
93
94
95
96
97







-
+







        return this._lVtyp[this._dVerb[sVerb][0]];
    },

    getSimil: function (sWord, sMorph, bSubst=false) {
        if (!sMorph.includes(":V")) {
            return new Set();
        }
        let sInfi = sMorph.slice(1, sMorph.indexOf(" "));
        let sInfi = sMorph.slice(1, sMorph.indexOf("/"));
        let aSugg = new Set();
        let tTags = this._getTags(sInfi);
        if (tTags) {
            if (!bSubst) {
                // we suggest conjugated forms
                if (sMorph.includes(":V1")) {
                    aSugg.add(sInfi);

Modified gc_lang/fr/modules-js/gce_analyseur.js from [e2613ddcd2] to [427ee71140].

1
2








3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17


+
+
+
+
+
+
+
+







//// GRAMMAR CHECKING ENGINE PLUGIN: Parsing functions for French language
/*jslint esversion: 6*/

function g_morphVC (dToken, sPattern, sNegPattern="") {
    let nEnd = dToken["sValue"].lastIndexOf("-");
    if (dToken["sValue"].includes("-t-")) {
        nEnd = nEnd - 2;
    }
    return g_morph(dToken, sPattern, sNegPattern, 0, nEnd, false);
}

function rewriteSubject (s1, s2) {
    // s1 is supposed to be prn/patr/npr (M[12P])
    if (s2 == "lui") {
        return "ils";
    }
    if (s2 == "moi") {
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
34
35
36
37
38

39
40
41
42
43


44
45
46

47
48
49

50
51
52
53
54
55
56
57
58
59


60
61
62
63
64
65
66
67


68
69
70
71
72
73
74
75
76
77
78
79
80


81
82
83
84
85
86
87
88


89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108


109
110
111
112


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
26
27
28
29
30
31
32


33
34
35
36
37
38
39
40
41
42
43


44
45
46
47
48

49
50
51
52

53
54
55

56
57
58
59
60
61
62
63



64
65
66
67
68
69
70
71


72
73
74
75
76
77
78
79
80
81
82
83



84
85
86
87
88
89
90
91


92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110



111
112
113
114


115
116
117
118
119
120
121
122
123
124
125
126
127
128





















































129
130
131
132
133
134
135
136
137
138







-
-
+










-
-
+




-
+
+


-
+


-
+







-
-
-
+
+






-
-
+
+










-
-
-
+
+






-
-
+
+

















-
-
-
+
+


-
-
+
+












-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-










    if (s2 == "vous") {
        return "vous";
    }
    if (s2 == "eux") {
        return "ils";
    }
    if (s2 == "elle" || s2 == "elles") {
        // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
        if (cregex.mbNprMasNotFem(_dAnalyses.gl_get(s1, ""))) {
        if (cregex.mbNprMasNotFem(_oSpellChecker.getMorph(s1))) {
            return "ils";
        }
        // si épicène, indéterminable, mais OSEF, le féminin l’emporte
        return "elles";
    }
    return s1 + " et " + s2;
}

function apposition (sWord1, sWord2) {
    // returns true if nom + nom (no agreement required)
    // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    return cregex.mbNomNotAdj(_dAnalyses.gl_get(sWord2, "")) && cregex.mbPpasNomNotAdj(_dAnalyses.gl_get(sWord1, ""));
    return sWord2.length < 2 || (cregex.mbNomNotAdj(_oSpellChecker.getMorph(sWord2)) && cregex.mbPpasNomNotAdj(_oSpellChecker.getMorph(sWord1)));
}

function isAmbiguousNAV (sWord) {
    // words which are nom|adj and verb are ambiguous (except être and avoir)
    if (!_dAnalyses.has(sWord) && !_storeMorphFromFSA(sWord)) {
    let lMorph = _oSpellChecker.getMorph(sWord);
    if (lMorph.length === 0) {
        return false;
    }
    if (!cregex.mbNomAdj(_dAnalyses.gl_get(sWord, "")) || sWord == "est") {
    if (!cregex.mbNomAdj(lMorph) || sWord == "est") {
        return false;
    }
    if (cregex.mbVconj(_dAnalyses.gl_get(sWord, "")) && !cregex.mbMG(_dAnalyses.gl_get(sWord, ""))) {
    if (cregex.mbVconj(lMorph) && !cregex.mbMG(lMorph)) {
        return true;
    }
    return false;
}

function isAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj) {
    //// use it if sWord1 won’t be a verb; word2 is assumed to be true via isAmbiguousNAV
    // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let a2 = _dAnalyses.gl_get(sWord2, null);
    if (!a2 || a2.length === 0) {
    let a2 = _oSpellChecker.getMorph(sWord2);
    if (a2.length === 0) {
        return false;
    }
    if (cregex.checkConjVerb(a2, sReqMorphConj)) {
        // verb word2 is ok
        return false;
    }
    let a1 = _dAnalyses.gl_get(sWord1, null);
    if (!a1 || a1.length === 0) {
    let a1 = _oSpellChecker.getMorph(sWord1);
    if (a1.length === 0) {
        return false;
    }
    if (cregex.checkAgreement(a1, a2) && (cregex.mbAdj(a2) || cregex.mbAdj(a1))) {
        return false;
    }
    return true;
}

function isVeryAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj, bLastHopeCond) {
    //// use it if sWord1 can be also a verb; word2 is assumed to be true via isAmbiguousNAV
    // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let a2 = _dAnalyses.gl_get(sWord2, null);
    if (!a2 || a2.length === 0) {
    let a2 = _oSpellChecker.getMorph(sWord2);
    if (a2.length === 0) {
        return false;
    }
    if (cregex.checkConjVerb(a2, sReqMorphConj)) {
        // verb word2 is ok
        return false;
    }
    let a1 = _dAnalyses.gl_get(sWord1, null);
    if (!a1 || a1.length === 0) {
    let a1 = _oSpellChecker.getMorph(sWord1);
    if (a1.length === 0) {
        return false;
    }
    if (cregex.checkAgreement(a1, a2) && (cregex.mbAdj(a2) || cregex.mbAdjNb(a1))) {
        return false;
    }
    // now, we know there no agreement, and conjugation is also wrong
    if (cregex.isNomAdj(a1)) {
        return true;
    }
    //if cregex.isNomAdjVerb(a1): # considered true
    if (bLastHopeCond) {
        return true;
    }
    return false;
}

function checkAgreement (sWord1, sWord2) {
    // We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let a2 = _dAnalyses.gl_get(sWord2, null);
    if (!a2 || a2.length === 0) {
    let a2 = _oSpellChecker.getMorph(sWord2);
    if (a2.length === 0) {
        return true;
    }
    let a1 = _dAnalyses.gl_get(sWord1, null);
    if (!a1 || a1.length === 0) {
    let a1 = _oSpellChecker.getMorph(sWord1);
    if (a1.length === 0) {
        return true;
    }
    return cregex.checkAgreement(a1, a2);
}

function mbUnit (s) {
    if (/[µ\/⁰¹²³⁴⁵⁶⁷⁸⁹Ωℓ·]/.test(s)) {
        return true;
    }
    if (s.length > 1 && s.length < 16 && s.slice(0, 1).gl_isLowerCase() && (!s.slice(1).gl_isLowerCase() || /[0-9]/.test(s))) {
        return true;
    }
    return false;
}


//// Syntagmes

const _zEndOfNG1 = new RegExp ("^ *$|^ +(?:, +|)(?:n(?:’|e |o(?:u?s|tre) )|l(?:’|e(?:urs?|s|) |a )|j(?:’|e )|m(?:’|es? |a |on )|t(?:’|es? |a |u )|s(?:’|es? |a )|c(?:’|e(?:t|tte|s|) )|ç(?:a |’)|ils? |vo(?:u?s|tre) )");
const _zEndOfNG2 = new RegExp ("^ +([a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ][a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ-]+)");
const _zEndOfNG3 = new RegExp ("^ *, +([a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ][a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ-]+)");

function isEndOfNG (dDA, s, iOffset) {
    if (_zEndOfNG1.test(s)) {
        return true;
    }
    let m = _zEndOfNG2.gl_exec2(s, ["$"]);
    if (m && morphex(dDA, [iOffset+m.start[1], m[1]], ":[VR]", ":[NAQP]")) {
        return true;
    }
    m = _zEndOfNG3.gl_exec2(s, ["$"]);
    if (m && !morph(dDA, [iOffset+m.start[1], m[1]], ":[NA]", false)) {
        return true;
    }
    return false;
}


const _zNextIsNotCOD1 = new RegExp ("^ *,");
const _zNextIsNotCOD2 = new RegExp ("^ +(?:[mtsnj](e +|’)|[nv]ous |tu |ils? |elles? )");
const _zNextIsNotCOD3 = new RegExp ("^ +([a-zéèî][a-zà-öA-Zø-ÿÀ-ÖØ-ßĀ-ʯ-]+)");

function isNextNotCOD (dDA, s, iOffset) {
    if (_zNextIsNotCOD1.test(s) || _zNextIsNotCOD2.test(s)) {
        return true;
    }
    let m = _zNextIsNotCOD3.gl_exec2(s, ["$"]);
    if (m && morphex(dDA, [iOffset+m.start[1], m[1]], ":[123][sp]", ":[DM]")) {
        return true;
    }
    return false;
}


const _zNextIsVerb1 = new RegExp ("^ +[nmts](?:e |’)");
const _zNextIsVerb2 = new RegExp ("^ +([a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ][a-zà-öA-Zø-ÿÀ-Ö0-9_Ø-ßĀ-ʯ-]+)");

function isNextVerb (dDA, s, iOffset) {
    if (_zNextIsVerb1.test(s)) {
        return true;
    }
    let m = _zNextIsVerb2.gl_exec2(s, ["$"]);
    if (m && morph(dDA, [iOffset+m.start[1], m[1]], ":[123][sp]", false)) {
        return true;
    }
    return false;
}


//// Exceptions

const aREGULARPLURAL = new Set(["abricot", "amarante", "aubergine", "acajou", "anthracite", "brique", "caca", "café",
                                "carotte", "cerise", "chataigne", "corail", "citron", "crème", "grave", "groseille",
                                "jonquille", "marron", "olive", "pervenche", "prune", "sable"]);
const aSHOULDBEVERB = new Set(["aller", "manger"]);

Modified gc_lang/fr/modules-js/gce_suggestions.js from [5849d4fa9b] to [ae7eaca80b].

1
2
3
4
5
6
7
8
9
10
11
12
13













14

15




16
17

18
19
20
21
22

23
24

25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27

28
29
30
31
32

33
34
35
36
37

38
39

40
41
42
43
44
45
46
47













+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+

-
+




-
+

-
+







//// GRAMMAR CHECKING ENGINE PLUGIN: Suggestion mechanisms
/*jslint esversion: 6*/
/*global require*/

if (typeof(require) !== 'undefined') {
    var conj = require("resource://grammalecte/fr/conj.js");
    var mfsp = require("resource://grammalecte/fr/mfsp.js");
    var phonet = require("resource://grammalecte/fr/phonet.js");
}


//// verbs

function splitVerb (sVerb) {
    // renvoie le verbe et les pronoms séparément
    let iRight = sVerb.lastIndexOf("-");
    let sSuffix = sVerb.slice(iRight);
    sVerb = sVerb.slice(0, iRight);
    if (sVerb.endsWith("-t") || sVerb.endsWith("-le") || sVerb.endsWith("-la") || sVerb.endsWith("-les")) {
        iRight = sVerb.lastIndexOf("-");
        sSuffix = sVerb.slice(iRight) + sSuffix;
        sVerb = sVerb.slice(0, iRight);
    }
    return [sVerb, sSuffix];
}

function suggVerb (sFlex, sWho, funcSugg2=null) {
function suggVerb (sFlex, sWho, funcSugg2=null, bVC=false) {
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let sSfx;
    if (bVC) {
        [sFlex, sSfx] = splitVerb(sFlex);
    }
    let aSugg = new Set();
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        let tTags = conj._getTags(sStem);
        if (tTags) {
            // we get the tense
            let aTense = new Set();
            for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
            for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
                let m;
                let zVerb = new RegExp (">"+sStem+" .*?(:(?:Y|I[pqsf]|S[pq]|K))", "g");
                let zVerb = new RegExp (">"+sStem+"/.*?(:(?:Y|I[pqsf]|S[pq]|K))", "g");
                while ((m = zVerb.exec(sMorph)) !== null) {
                    // stem must be used in regex to prevent confusion between different verbs (e.g. sauras has 2 stems: savoir and saurer)
                    if (m) {
                        if (m[1] === ":Y") {
                            aTense.add(":Ip");
                            aTense.add(":Iq");
                            aTense.add(":Is");
50
51
52
53
54
55
56



57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

83
84
85
86
87
88
89
90







+
+
+







-
+







    if (funcSugg2) {
        let aSugg2 = funcSugg2(sFlex);
        if (aSugg2.size > 0) {
            aSugg.add(aSugg2);
        }
    }
    if (aSugg.size > 0) {
        if (bVC) {
            return Array.from(aSugg).map((sSugg) => { return sSugg + sSfx; }).join("|");
        }
        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggVerbPpas (sFlex, sWhat=null) {
    let aSugg = new Set();
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        let tTags = conj._getTags(sStem);
        if (tTags) {
            if (!sWhat) {
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"));
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q2"));
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q3"));
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q4"));
107
108
109
110
111
112
113
114

115
116
117
118
119
120
121
122
123
124
125





126
127

128
129
130
131
132
133
134
135
136
137
138
139
140
141



142
143
144
145
146
147
148

149
150
151
152
153
154
155
126
127
128
129
130
131
132

133
134
135
136
137
138
139
140
141
142
143

144
145
146
147
148
149

150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173

174
175
176
177
178
179
180
181







-
+










-
+
+
+
+
+

-
+














+
+
+






-
+







        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggVerbTense (sFlex, sTense, sWho) {
    let aSugg = new Set();
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        if (conj.hasConj(sStem, sTense, sWho)) {
            aSugg.add(conj.getConj(sStem, sTense, sWho));
        }
    }
    if (aSugg.size > 0) {
        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggVerbImpe (sFlex) {
function suggVerbImpe (sFlex, bVC=false) {
    let sSfx;
    if (bVC) {
        [sFlex, sSfx] = splitVerb(sFlex);
    }
    let aSugg = new Set();
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        let tTags = conj._getTags(sStem);
        if (tTags) {
            if (conj._hasConjWithTags(tTags, ":E", ":2s")) {
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2s"));
            }
            if (conj._hasConjWithTags(tTags, ":E", ":1p")) {
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":1p"));
            }
            if (conj._hasConjWithTags(tTags, ":E", ":2p")) {
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p"));
            }
        }
    }
    if (aSugg.size > 0) {
        if (bVC) {
            return Array.from(aSugg).map((sSugg) => { return sSugg + sSfx; }).join("|");
        }
        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggVerbInfi (sFlex) {
    return stem(sFlex).filter(sStem => conj.isVerb(sStem)).join("|");
    return _oSpellChecker.getLemma(sFlex).filter(sStem => conj.isVerb(sStem)).join("|");
}


const _dQuiEst = new Map ([
    ["je", ":1s"], ["j’", ":1s"], ["j’en", ":1s"], ["j’y", ":1s"],
    ["tu", ":2s"], ["il", ":3s"], ["on", ":3s"], ["elle", ":3s"],
    ["nous", ":1p"], ["vous", ":2p"], ["ils", ":3p"], ["elles", ":3p"]
172
173
174
175
176
177
178
179

180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200


201
202
203

204
205
206
207
208
209
210
198
199
200
201
202
203
204

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225

226
227
228
229

230
231
232
233
234
235
236
237







-
+




















-
+
+


-
+







    if (!sWho) {
        if (sSuj[0].gl_isLowerCase()) { // pas un pronom, ni un nom propre
            return "";
        }
        sWho = ":3s";
    }
    let aSugg = new Set();
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        let tTags = conj._getTags(sStem);
        if (tTags) {
            for (let sTense of lMode) {
                if (conj._hasConjWithTags(tTags, sTense, sWho)) {
                    aSugg.add(conj._getConjWithTags(sStem, tTags, sTense, sWho));
                }
            }
        }
    }
    if (aSugg.size > 0) {
        return Array.from(aSugg).join("|");
    }
    return "";
}

//// Nouns and adjectives

function suggPlur (sFlex, sWordToAgree=null) {
    // returns plural forms assuming sFlex is singular
    if (sWordToAgree) {
        if (!_dAnalyses.has(sWordToAgree) && !_storeMorphFromFSA(sWordToAgree)) {
        let lMorph = _oSpellChecker.getMorph(sWordToAgree);
        if (lMorph.length === 0) {
            return "";
        }
        let sGender = cregex.getGender(_dAnalyses.gl_get(sWordToAgree, []));
        let sGender = cregex.getGender(lMorph);
        if (sGender == ":m") {
            return suggMasPlur(sFlex);
        } else if (sGender == ":f") {
            return suggFemPlur(sFlex);
        }
    }
    let aSugg = new Set();
254
255
256
257
258
259
260
261
262
263

264
265
266
267
268
269
270
281
282
283
284
285
286
287

288

289
290
291
292
293
294
295
296







-

-
+







        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggMasSing (sFlex, bSuggSimil=false) {
    // returns masculine singular forms
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let aSugg = new Set();
    for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
    for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
        if (!sMorph.includes(":V")) {
            // not a verb
            if (sMorph.includes(":m") || sMorph.includes(":e")) {
                aSugg.add(suggSing(sFlex));
            } else {
                let sStem = cregex.getLemmaOfMorph(sMorph);
                if (mfsp.isFemForm(sStem)) {
290
291
292
293
294
295
296
297
298
299

300
301
302
303
304
305
306
316
317
318
319
320
321
322

323

324
325
326
327
328
329
330
331







-

-
+







        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggMasPlur (sFlex, bSuggSimil=false) {
    // returns masculine plural forms
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let aSugg = new Set();
    for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
    for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
        if (!sMorph.includes(":V")) {
            // not a verb
            if (sMorph.includes(":m") || sMorph.includes(":e")) {
                aSugg.add(suggPlur(sFlex));
            } else {
                let sStem = cregex.getLemmaOfMorph(sMorph);
                if (mfsp.isFemForm(sStem)) {
331
332
333
334
335
336
337
338
339
340

341
342
343
344
345
346
347
356
357
358
359
360
361
362

363

364
365
366
367
368
369
370
371







-

-
+







    }
    return "";
}


function suggFemSing (sFlex, bSuggSimil=false) {
    // returns feminine singular forms
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let aSugg = new Set();
    for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
    for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
        if (!sMorph.includes(":V")) {
            // not a verb
            if (sMorph.includes(":f") || sMorph.includes(":e")) {
                aSugg.add(suggSing(sFlex));
            } else {
                let sStem = cregex.getLemmaOfMorph(sMorph);
                if (mfsp.isFemForm(sStem)) {
365
366
367
368
369
370
371
372
373
374

375
376
377
378
379
380
381
389
390
391
392
393
394
395

396

397
398
399
400
401
402
403
404







-

-
+







        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggFemPlur (sFlex, bSuggSimil=false) {
    // returns feminine plural forms
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let aSugg = new Set();
    for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
    for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
        if (!sMorph.includes(":V")) {
            // not a verb
            if (sMorph.includes(":f") || sMorph.includes(":e")) {
                aSugg.add(suggPlur(sFlex));
            } else {
                let sStem = cregex.getLemmaOfMorph(sMorph);
                if (mfsp.isFemForm(sStem)) {
398
399
400
401
402
403
404
405

406
407
408
409
410
411
412
413
414
415
416
417

418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433

434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452

453
454
455
456
457
458
459
460

461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476

477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493

494




495
496

497
498
499
500
501



502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519

520
521
522
523
524
525
526
421
422
423
424
425
426
427

428
429
430
431
432
433
434
435
436
437
438
439

440
441
442
443
444
445
446
447
448
449
450
451
452

453
454

455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473

474
475
476
477
478
479
480
481

482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497

498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514

515
516
517
518
519
520
521

522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546


547
548
549
550
551
552
553
554







-
+











-
+












-


-
+


















-
+







-
+















-
+
















-
+

+
+
+
+

-
+





+
+
+
















-
-
+







    if (aSugg.size > 0) {
        return Array.from(aSugg).join("|");
    }
    return "";
}

function hasFemForm (sFlex) {
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        if (mfsp.isFemForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q3")) {
            return true;
        }
    }
    if (phonet.hasSimil(sFlex, ":f")) {
        return true;
    }
    return false;
}

function hasMasForm (sFlex) {
    for (let sStem of stem(sFlex)) {
    for (let sStem of _oSpellChecker.getLemma(sFlex)) {
        if (mfsp.isFemForm(sStem) || conj.hasConj(sStem, ":PQ", ":Q1")) {
            // what has a feminine form also has a masculine form
            return true;
        }
    }
    if (phonet.hasSimil(sFlex, ":m")) {
        return true;
    }
    return false;
}

function switchGender (sFlex, bPlur=null) {
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    let aSugg = new Set();
    if (bPlur === null) {
        for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
        for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
            if (sMorph.includes(":f")) {
                if (sMorph.includes(":s")) {
                    aSugg.add(suggMasSing(sFlex));
                } else if (sMorph.includes(":p")) {
                    aSugg.add(suggMasPlur(sFlex));
                }
            } else if (sMorph.includes(":m")) {
                if (sMorph.includes(":s")) {
                    aSugg.add(suggFemSing(sFlex));
                } else if (sMorph.includes(":p")) {
                    aSugg.add(suggFemPlur(sFlex));
                } else {
                    aSugg.add(suggFemSing(sFlex));
                    aSugg.add(suggFemPlur(sFlex));
                }
            }
        }
    } else if (bPlur) {
        for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
        for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
            if (sMorph.includes(":f")) {
                aSugg.add(suggMasPlur(sFlex));
            } else if (sMorph.includes(":m")) {
                aSugg.add(suggFemPlur(sFlex));
            }
        }
    } else {
        for (let sMorph of _dAnalyses.gl_get(sFlex, [])) {
        for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
            if (sMorph.includes(":f")) {
                aSugg.add(suggMasSing(sFlex));
            } else if (sMorph.includes(":m")) {
                aSugg.add(suggFemSing(sFlex));
            }
        }
    }
    if (aSugg.size > 0) {
        return Array.from(aSugg).join("|");
    }
    return "";
}

function switchPlural (sFlex) {
    let aSugg = new Set();
    for (let sMorph of _dAnalyses.gl_get(sFlex, [])) { // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    for (let sMorph of _oSpellChecker.getMorph(sFlex)) {
        if (sMorph.includes(":s")) {
            aSugg.add(suggPlur(sFlex));
        } else if (sMorph.includes(":p")) {
            aSugg.add(suggSing(sFlex));
        }
    }
    if (aSugg.size > 0) {
        return Array.from(aSugg).join("|");
    }
    return "";
}

function hasSimil (sWord, sPattern=null) {
    return phonet.hasSimil(sWord, sPattern);
}

function suggSimil (sWord, sPattern=null, bSubst=false) {
function suggSimil (sWord, sPattern=null, bSubst=false, bVC=false) {
    // return list of words phonetically similar to sWord and whom POS is matching sPattern
    let sSfx;
    if (bVC) {
        [sWord, sSfx] = splitVerb(sWord);
    }
    let aSugg = phonet.selectSimil(sWord, sPattern);
    for (let sMorph of _dAnalyses.gl_get(sWord, [])) {
    for (let sMorph of _oSpellChecker.getMorph(sWord)) {
        for (let e of conj.getSimil(sWord, sMorph, bSubst)) {
            aSugg.add(e);
        }
    }
    if (aSugg.size > 0) {
        if (bVC) {
            return Array.from(aSugg).map((sSugg) => { return sSugg + sSfx; }).join("|");
        }
        return Array.from(aSugg).join("|");
    }
    return "";
}

function suggCeOrCet (sWord) {
    if (/^[aeéèêiouyâîï]/i.test(sWord)) {
        return "cet";
    }
    if (sWord[0] == "h" || sWord[0] == "H") {
        return "ce|cet";
    }
    return "ce";
}

function suggLesLa (sWord) {
    // we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    if (_dAnalyses.gl_get(sWord, []).some(s  =>  s.includes(":p"))) {
    if (_oSpellChecker.getMorph(sWord).some(s  =>  s.includes(":p"))) {
        return "les|la";
    }
    return "la";
}

function formatNumber (s) {
    let nLen = s.length;

Modified gc_lang/fr/modules-js/lexicographe.js from [ce143d1120] to [3f0da2f1ff].

69
70
71
72
73
74
75

76
77
78
79
80
81
82
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83







+







    [':Dn', [" déterminant négatif,", "Déterminant négatif"]],
    [':Od', [" pronom démonstratif,", "Pronom démonstratif"]],
    [':Oi', [" pronom indéfini,", "Pronom indéfini"]],
    [':On', [" pronom indéfini négatif,", "Pronom indéfini négatif"]],
    [':Ot', [" pronom interrogatif,", "Pronom interrogatif"]],
    [':Or', [" pronom relatif,", "Pronom relatif"]],
    [':Ow', [" pronom adverbial,", "Pronom adverbial"]],
    [':Ov', ["", ""]],
    [':Os', [" pronom personnel sujet,", "Pronom personnel sujet"]],
    [':Oo', [" pronom personnel objet,", "Pronom personnel objet"]],
    [':O1', [" 1ʳᵉ pers.,", "Pronom : 1ʳᵉ personne"]],
    [':O2', [" 2ᵉ pers.,", "Pronom : 2ᵉ personne"]],
    [':O3', [" 3ᵉ pers.,", "Pronom : 3ᵉ personne"]],
    [':C', [" conjonction,", "Conjonction"]],
    [':Ĉ', [" conjonction (él.),", "Conjonction (élément)"]],
183
184
185
186
187
188
189
190

191
192
193
194
195
196
197
184
185
186
187
188
189
190

191
192
193
194
195
196
197
198







-
+








    ['en', " pronom adverbial"],
    ["m'en", " (me) pronom personnel objet + (en) pronom adverbial"],
    ["t'en", " (te) pronom personnel objet + (en) pronom adverbial"],
    ["s'en", " (se) pronom personnel objet + (en) pronom adverbial"]
]);

const _dSeparator = new Map([
const _dChar = new Map([
    ['.', "point"],
    ['·', "point médian"],
    ['…', "points de suspension"],
    [':', "deux-points"],
    [';', "point-virgule"],
    [',', "virgule"],
    ['?', "point d’interrogation"],
207
208
209
210
211
212
213

214
215
216
217
218
219




220
221
222
223
224
225
226
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232







+






+
+
+
+







    ['–', "tiret demi-cadratin"],
    ['«', "guillemet ouvrant (chevrons)"],
    ['»', "guillemet fermant (chevrons)"],
    ['“', "guillemet ouvrant double"],
    ['”', "guillemet fermant double"],
    ['‘', "guillemet ouvrant"],
    ['’', "guillemet fermant"],
    ['"', "guillemets droits (déconseillé en typographie)"],
    ['/', "signe de la division"],
    ['+', "signe de l’addition"],
    ['*', "signe de la multiplication"],
    ['=', "signe de l’égalité"],
    ['<', "inférieur à"],
    ['>', "supérieur à"],
    ['⩽', "inférieur ou égal à"],
    ['⩾', "supérieur ou égal à"],
    ['%', "signe de pourcentage"],
    ['‰', "signe pour mille"],
]);


class Lexicographe {

    constructor (oSpellChecker, oTokenizer, oLocGraph) {
        this.oSpellChecker = oSpellChecker;
237
238
239
240
241
242
243

244
245
246
247

248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264

265
266
267
268
269
270







271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

287
288
289
290
291
292
293
243
244
245
246
247
248
249
250
251
252
253

254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270

271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299

300
301
302
303
304
305
306
307







+



-
+
















-
+






+
+
+
+
+
+
+















-
+







    getInfoForToken (oToken) {
        // Token: .sType, .sValue, .nStart, .nEnd
        // return a object {sType, sValue, aLabel}
        let m = null;
        try {
            switch (oToken.sType) {
                case 'SEPARATOR':
                case 'SIGN':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue,
                        aLabel: [_dSeparator.gl_get(oToken.sValue, "caractère indéterminé")]
                        aLabel: [_dChar.gl_get(oToken.sValue, "caractère indéterminé")]
                    };
                    break;
                case 'NUM':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue,
                        aLabel: ["nombre"]
                    };
                    break;
                case 'LINK':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue.slice(0, 40) + "…",
                        aLabel: ["hyperlien"]
                    };
                    break;
                case 'ELPFX':
                case 'WORD_ELIDED':
                    let sTemp = oToken.sValue.replace("’", "").replace("'", "").replace("`", "").toLowerCase();
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue,
                        aLabel: [_dElidedPrefix.gl_get(sTemp, "préfixe élidé inconnu")]
                    };
                    break;
                case 'WORD_ORDINAL':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue,
                        aLabel: ["nombre ordinal"]
                    };
                    break;
                case 'FOLDERUNIX':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue.slice(0, 40) + "…",
                        aLabel: ["dossier UNIX (et dérivés)"]
                    };
                    break;
                case 'FOLDERWIN':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue.slice(0, 40) + "…",
                        aLabel: ["dossier Windows"]
                    };
                    break;
                case 'ACRONYM':
                case 'WORD_ACRONYM':
                    return {
                        sType: oToken.sType,
                        sValue: oToken.sValue,
                        aLabel: ["Sigle ou acronyme"]
                    };
                    break;
                case 'WORD':
373
374
375
376
377
378
379
380

381
382
383
384
385
386
387
387
388
389
390
391
392
393

394
395
396
397
398
399
400
401







-
+







        let sRes = "";
        sTags = sTags.replace(/V([0-3][ea]?)[itpqnmr_eaxz]+/, "V$1");
        let m;
        while ((m = this._zTag.exec(sTags)) !== null) {
            sRes += _dTag.get(m[0])[0];
        }
        if (sRes.startsWith(" verbe") && !sRes.includes("infinitif")) {
            sRes += " [" + sTags.slice(1, sTags.indexOf(" ")) + "]";
            sRes += " [" + sTags.slice(1, sTags.indexOf("/")) + "]";
        }
        if (!sRes) {
            return "#Erreur. Étiquette inconnue : [" + sTags + "]";
        }
        return sRes.gl_trimRight(",");
    }

448
449
450
451
452
453
454
455

456
457
458
459
460
461
462
462
463
464
465
466
467
468

469
470
471
472
473
474
475
476







-
+







        let aTokenList = this.getListOfTokens(sText.replace("'", "’").trim(), false);
        let iKey = 0;
        let aElem = [];
        do {
            let oToken = aTokenList[iKey];
            let sMorphLoc = '';
            let aTokenTempList = [oToken];
            if (oToken.sType == "WORD" || oToken.sType == "ELPFX"){
            if (oToken.sType == "WORD" || oToken.sType == "WORD_ELIDED"){
                let iKeyTree = iKey + 1;
                let oLocNode = this.oLocGraph[oToken.sValue.toLowerCase()];
                while (oLocNode) {
                    let oTokenNext = aTokenList[iKeyTree];
                    iKeyTree++;
                    if (oTokenNext) {
                        oLocNode = oLocNode[oTokenNext.sValue.toLowerCase()];

Modified gc_lang/fr/modules/conj.py from [c668aaf269] to [258383e97f].


1



2
3
4
5
6
7
8
1

2
3
4
5
6
7
8
9
10
11
+
-
+
+
+







"""
# Grammalecte - Conjugueur
Grammalecte - Conjugueur
"""

# License: GPL 3

import re
import traceback

from .conj_data import lVtyp as _lVtyp
from .conj_data import lTags as _lTags
25
26
27
28
29
30
31

32
33
34
35
36
37
38
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42







+







_dGroup = { "0": "auxiliaire", "1": "1ᵉʳ groupe", "2": "2ᵉ groupe", "3": "3ᵉ groupe" }

_dTenseIdx = { ":PQ": 0, ":Ip": 1, ":Iq": 2, ":Is": 3, ":If": 4, ":K": 5, ":Sp": 6, ":Sq": 7, ":E": 8 }



def isVerb (sVerb):
    "return True if it’s a existing verb"
    return sVerb in _dVerb


def getConj (sVerb, sTense, sWho):
    "returns conjugation (can be an empty string)"
    if sVerb not in _dVerb:
        return None
52
53
54
55
56
57
58

59
60
61

62
63
64
65
66
67
68
56
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
73







+


-
+







    "returns raw informations about sVerb"
    if sVerb not in _dVerb:
        return None
    return _lVtyp[_dVerb[sVerb][0]]


def getSimil (sWord, sMorph, bSubst=False):
    "returns a set of verbal forms similar to <sWord>, according to <sMorph>"
    if ":V" not in sMorph:
        return set()
    sInfi = sMorph[1:sMorph.find(" ")]
    sInfi = sMorph[1:sMorph.find("/")]
    aSugg = set()
    tTags = _getTags(sInfi)
    if tTags:
        if not bSubst:
            # we suggest conjugated forms
            if ":V1" in sMorph:
                aSugg.add(sInfi)
96
97
98
99
100
101
102

103
104
105
106
107
108
109
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115







+







            # if there is only one past participle (epi inv), unreliable.
            if len(aSugg) == 1:
                aSugg.clear()
    return aSugg


def getConjSimilInfiV1 (sInfi):
    "returns verbal forms phonetically similar to infinitive form (for verb in group 1)"
    if sInfi not in _dVerb:
        return set()
    aSugg = set()
    tTags = _getTags(sInfi)
    if tTags:
        aSugg.add(_getConjWithTags(sInfi, tTags, ":Iq", ":2s"))
        aSugg.add(_getConjWithTags(sInfi, tTags, ":Iq", ":3s"))
138
139
140
141
142
143
144
145

146
147

148
149
150


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

171
172
173
174
175
176
177
144
145
146
147
148
149
150

151
152

153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177

178
179
180
181
182
183
184
185







-
+

-
+



+
+



















-
+







    "returns sWord modified by sSfx"
    if not sSfx:
        return ""
    if sSfx == "0":
        return sWord
    try:
        return sWord[:-(ord(sSfx[0])-48)] + sSfx[1:]  if sSfx[0] != '0'  else  sWord + sSfx[1:]  # 48 is the ASCII code for "0"
    except:
    except (IndexError, TypeError):
        return "## erreur, code : " + str(sSfx) + " ##"
        



class Verb ():
    "Verb and its conjugation"

    def __init__ (self, sVerb, sVerbPattern=""):
        # conjugate a unknown verb with rules from sVerbPattern
        if not isinstance(sVerb, str):
            raise TypeError("sVerb should be a string")
        if not sVerb:
            raise ValueError("Empty string.")

        if sVerbPattern == "":
            sVerbPattern = sVerb

        self.sVerb = sVerb
        self.sVerbAux = ""
        self._sRawInfo = getVtyp(sVerbPattern)
        self.sInfo = self._readableInfo()
        self.bProWithEn = (self._sRawInfo[5] == "e")
        self._tTags = _getTags(sVerbPattern)
        if not self._tTags:
            raise ValueError("Unknown verb.")
        self._tTagsAux = _getTags(self.sVerbAux)
        self.cGroup = self._sRawInfo[0];
        self.cGroup = self._sRawInfo[0]
        self.dConj = {
            ":Y": {
                "label": "Infinitif",
                ":": sVerb,
            },
            ":P": {
                "label": "Participe présent",
287
288
289
290
291
292
293

294
295
296
297
298
299
300
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309







+







                sInfo = "# erreur - code : " + self._sRawInfo
            return sGroup + " · " + sInfo
        except:
            traceback.print_exc()
            return "# erreur"

    def infinitif (self, bPro, bNeg, bTpsCo, bInt, bFem):
        "returns string (conjugaison à l’infinitif)"
        try:
            if bTpsCo:
                sInfi = self.sVerbAux  if not bPro  else  "être"
            else:
                sInfi = self.sVerb
            if bPro:
                if self.bProWithEn:
309
310
311
312
313
314
315

316
317
318
319
320
321
322

323
324
325
326
327
328
329
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340







+







+







                sInfi += " … ?"
            return sInfi
        except:
            traceback.print_exc()
            return "# erreur"

    def participePasse (self, sWho):
        "returns past participle according to <sWho>"
        try:
            return self.dConj[":Q"][sWho]
        except:
            traceback.print_exc()
            return "# erreur"

    def participePresent (self, bPro, bNeg, bTpsCo, bInt, bFem):
        "returns string (conjugaison du participe présent)"
        try:
            if not self.dConj[":P"][":"]:
                return ""
            if bTpsCo:
                sPartPre = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":PQ", ":P")  if not bPro  else  getConj("être", ":PQ", ":P")
            else:
                sPartPre = self.dConj[":P"][":"]
346
347
348
349
350
351
352

353
354
355
356
357
358
359
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371







+







                sPartPre += " … ?"
            return sPartPre
        except:
            traceback.print_exc()
            return "# erreur"

    def conjugue (self, sTemps, sWho, bPro, bNeg, bTpsCo, bInt, bFem):
        "returns string (conjugue le verbe au temps <sTemps> pour <sWho>) "
        try:
            if not self.dConj[sTemps][sWho]:
                return ""
            if not bTpsCo and bInt and sWho == ":1s" and self.dConj[sTemps].get(":1ś", False):
                sWho = ":1ś"
            if bTpsCo:
                sConj = _getConjWithTags(self.sVerbAux, self._tTagsAux, sTemps, sWho)  if not bPro  else  getConj("être", sTemps, sWho)
368
369
370
371
372
373
374
375

376
377
378
379
380

381
382
383
384
385
386
387
388
389
390
391
392

393
394
395
396
397
398
399
400
401
402
403
404
405
406

407
408
409
410
411
412
413
380
381
382
383
384
385
386

387
388
389
390
391

392
393
394
395
396
397
398
399
400
401
402
403

404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426







-
+




-
+











-
+














+







                else:
                    sConj = _dProObjEl[sWho] + "en " + sConj
            if bNeg:
                sConj = "n’" + sConj  if bEli and not bPro  else  "ne " + sConj
            if bInt:
                if sWho == ":3s" and not _zNeedTeuph.search(sConj):
                    sConj += "-t"
                sConj += "-" + self._getPronom(sWho, bFem)
                sConj += "-" + self._getPronomSujet(sWho, bFem)
            else:
                if sWho == ":1s" and bEli and not bNeg and not bPro:
                    sConj = "j’" + sConj
                else:
                    sConj = self._getPronom(sWho, bFem) + " " + sConj
                    sConj = self._getPronomSujet(sWho, bFem) + " " + sConj
            if bNeg:
                sConj += " pas"
            if bTpsCo:
                sConj += " " + self._seekPpas(bPro, bFem, sWho.endswith("p") or self._sRawInfo[5] == "r")
            if bInt:
                sConj += " … ?"
            return sConj
        except:
            traceback.print_exc()
            return "# erreur"

    def _getPronom (self, sWho, bFem):
    def _getPronomSujet (self, sWho, bFem):
        try:
            if sWho == ":3s":
                if self._sRawInfo[5] == "r":
                    return "on"
                elif bFem:
                    return "elle"
            elif sWho == ":3p" and bFem:
                return "elles"
            return _dProSuj[sWho]
        except:
            traceback.print_exc()
            return "# erreur"

    def imperatif (self, sWho, bPro, bNeg, bTpsCo, bFem):
        "returns string (conjugaison à l’impératif)"
        try:
            if not self.dConj[":E"][sWho]:
                return ""
            if bTpsCo:
                sImpe = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":E", sWho)  if not bPro  else  getConj(u"être", ":E", sWho)
            else:
                sImpe = self.dConj[":E"][sWho]

Modified gc_lang/fr/modules/conj_generator.py from [2e696a65e3] to [ee0a228497].


1
2



3
4
5
6
7

8
9
10
11
12
13
14
15
16
17


18
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
+
-
-
+
+
+





+









-
+
+













+







"""
# Conjugation generator
# beta stage, unfinished, the root for a new way to generate flexions…
Conjugation generator
beta stage, unfinished, the root for a new way to generate flexions…
"""

import re


def conjugate (sVerb, sVerbTag="i_____a", bVarPpas=True):
    "conjugate <sVerb> and returns a list of tuples (conjugation form, tags)"
    lConj = []
    cGroup = getVerbGroupChar(sVerb)
    for nCut, sAdd, sFlexTags, sPattern in getConjRules(sVerb, bVarPpas):
        if not sPattern or re.search(sPattern, sVerb):
            sFlexion = sVerb[0:-nCut] + sAdd  if nCut  else sVerb + sAdd
            lConj.append((sFlexion, ":V" + cGroup + "_" + sVerbTag + sFlexTags))
    return lConj


def getVerbGroupChar (sVerb, ):
def getVerbGroupChar (sVerb):
    "returns the group number of <sVerb> guessing on its ending"
    sVerb = sVerb.lower()
    if sVerb.endswith("er"):
        return "1"
    if sVerb.endswith("ir"):
        return "2"
    if sVerb == "être" or sVerb == "avoir":
        return "0"
    if sVerb.endswith("re"):
        return "3"
    return "4"


def getConjRules (sVerb, bVarPpas=True, nGroup=2):
    "returns a list of lists to conjugate a verb, guessing on its ending"
    if sVerb.endswith("er"):
        # premier groupe, conjugaison en fonction de la terminaison du lemme
        # 5 lettres
        if sVerb[-5:] in oConj["V1"]:
            lConj = list(oConj["V1"][sVerb[-5:]])
        # 4 lettres
        elif sVerb[-4:] in oConj["V1"]:
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
118
119
120
121
122
123
124

125
126
127
128
129
130
131
132







-
+







        [2,     "isses",        ":Sp:Sq:2s/*",      False],
        [2,     "isse",         ":Sp:3s/*",         False],
        [2,     "ît",           ":Sq:3s/*",         False],
        [2,     "is",           ":E:2s/*",          False],
        [2,     "issons",       ":E:1p/*",          False],
        [2,     "issez",        ":E:2p/*",          False]
    ],
    

    # premier groupe (bien plus irrégulier que prétendu)
    "V1": {
        # a
        # verbes en -er, -ger, -yer, -cer
        "er": [
            [2,      "er",        ":Y/*",               False],
            [2,      "ant",       ":P/*",               False],

Modified gc_lang/fr/modules/cregex.py from [a0df0d1397] to [4b9e99ff72].


1


2
3
4
5
6

7
8
9
10
11
12
13
1

2
3
4
5
6
7

8
9
10
11
12
13
14
15
+
-
+
+




-
+







"""
# Grammalecte - Compiled regular expressions
Grammalecte - Compiled regular expressions
"""

import re

#### Lemme
Lemma = re.compile("^>(\w[\w-]*)")
Lemma = re.compile(r"^>(\w[\w-]*)")

#### Analyses
Gender = re.compile(":[mfe]")
Number = re.compile(":[spi]")

#### Nom et adjectif
NA = re.compile(":[NA]")
76
77
78
79
80
81
82

83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120

121
122
123
124
125
126
127
128
129
130
131
132
133

134
135
136

137
138
139

140
141
142

143
144
145

146
147
148

149
150
151

152
153
154

155
156
157

158
159
160

161
162
163

164
165
166
167
168
169

170
171
172

173
174
175

176
177
178

179
180
181

182

183
184
185
186
187
188


189
190

191
192
193

194
195
196

197
198
199

200
201
202

203
204
205

206
207
208

209
210
211

212
213
214

215
216
217

218
219
220

221
222
223

224
225
226
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202

203
204
205
206
207


208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259







+



+
















+


















-
+













+



+



+



+



+



+



+



+



+



+



+






+



+



+



+



+
-
+




-
-
+
+


+



+



+



+



+



+



+



+



+



+



+



+



NPf = re.compile(":(?:M[12P]|T):f")
NPe = re.compile(":(?:M[12P]|T):e")


#### FONCTIONS

def getLemmaOfMorph (s):
    "return lemma in morphology <s>"
    return Lemma.search(s).group(1)

def checkAgreement (l1, l2):
    "returns True if agreement in gender and number is possible between morphologies <l1> and <l2>"
    # check number agreement
    if not mbInv(l1) and not mbInv(l2):
        if mbSg(l1) and not mbSg(l2):
            return False
        if mbPl(l1) and not mbPl(l2):
            return False
    # check gender agreement
    if mbEpi(l1) or mbEpi(l2):
        return True
    if mbMas(l1) and not mbMas(l2):
        return False
    if mbFem(l1) and not mbFem(l2):
        return False
    return True

def checkConjVerb (lMorph, sReqConj):
    "returns True if <sReqConj> in <lMorph>"
    return any(sReqConj in s  for s in lMorph)

def getGender (lMorph):
    "returns gender of word (':m', ':f', ':e' or empty string)."
    sGender = ""
    for sMorph in lMorph:
        m = Gender.search(sMorph)
        if m:
            if not sGender:
                sGender = m.group(0)
            elif sGender != m.group(0):
                return ":e"
    return sGender

def getNumber (lMorph):
    "returns number of word (':s', ':p', ':i' or empty string)."
    sNumber = ""
    for sMorph in lMorph:
        m = Number.search(sWord)
        m = Number.search(sMorph)
        if m:
            if not sNumber:
                sNumber = m.group(0)
            elif sNumber != m.group(0):
                return ":i"
    return sNumber

# NOTE :  isWhat (lMorph)    returns True   if lMorph contains nothing else than What
#         mbWhat (lMorph)    returns True   if lMorph contains What at least once

## isXXX = it’s certain

def isNom (lMorph):
    "returns True if all morphologies are “nom”"
    return all(":N" in s  for s in lMorph)

def isNomNotAdj (lMorph):
    "returns True if all morphologies are “nom”, but not “adjectif”"
    return all(NnotA.search(s)  for s in lMorph)

def isAdj (lMorph):
    "returns True if all morphologies are “adjectif”"
    return all(":A" in s  for s in lMorph)

def isNomAdj (lMorph):
    "returns True if all morphologies are “nom” or “adjectif”"
    return all(NA.search(s)  for s in lMorph)

def isNomVconj (lMorph):
    "returns True if all morphologies are “nom” or “verbe conjugué”"
    return all(NVconj.search(s)  for s in lMorph)

def isInv (lMorph):
    "returns True if all morphologies are “invariable”"
    return all(":i" in s  for s in lMorph)

def isSg (lMorph):
    "returns True if all morphologies are “singulier”"
    return all(":s" in s  for s in lMorph)

def isPl (lMorph):
    "returns True if all morphologies are “pluriel”"
    return all(":p" in s  for s in lMorph)

def isEpi (lMorph):
    "returns True if all morphologies are “épicène”"
    return all(":e" in s  for s in lMorph)

def isMas (lMorph):
    "returns True if all morphologies are “masculin”"
    return all(":m" in s  for s in lMorph)

def isFem (lMorph):
    "returns True if all morphologies are “féminin”"
    return all(":f" in s  for s in lMorph)


## mbXXX = MAYBE XXX

def mbNom (lMorph):
    "returns True if one morphology is “nom”"
    return any(":N" in s  for s in lMorph)

def mbAdj (lMorph):
    "returns True if one morphology is “adjectif”"
    return any(":A" in s  for s in lMorph)

def mbAdjNb (lMorph):
    "returns True if one morphology is “adjectif” or “nombre”"
    return any(AD.search(s)  for s in lMorph)

def mbNomAdj (lMorph):
    "returns True if one morphology is “nom” or “adjectif”"
    return any(NA.search(s)  for s in lMorph)

def mbNomNotAdj (lMorph):
    "returns True if one morphology is “nom”, but not “adjectif”"
    b = False
    bResult = False
    for s in lMorph:
        if ":A" in s:
            return False
        if ":N" in s:
            b = True
    return b
            bResult = True
    return bResult

def mbPpasNomNotAdj (lMorph):
    "returns True if one morphology is “nom” or “participe passé”, but not “adjectif”"
    return any(PNnotA.search(s)  for s in lMorph)

def mbVconj (lMorph):
    "returns True if one morphology is “nom” or “verbe conjugué”"
    return any(Vconj.search(s)  for s in lMorph)

def mbVconj123 (lMorph):
    "returns True if one morphology is “nom” or “verbe conjugué” (but not “avoir” or “être”)"
    return any(Vconj123.search(s)  for s in lMorph)

def mbMG (lMorph):
    "returns True if one morphology is “mot grammatical”"
    return any(":G" in s  for s in lMorph)

def mbInv (lMorph):
    "returns True if one morphology is “invariable”"
    return any(":i" in s  for s in lMorph)

def mbSg (lMorph):
    "returns True if one morphology is “singulier”"
    return any(":s" in s  for s in lMorph)

def mbPl (lMorph):
    "returns True if one morphology is “pluriel”"
    return any(":p" in s  for s in lMorph)

def mbEpi (lMorph):
    "returns True if one morphology is “épicène”"
    return any(":e" in s  for s in lMorph)

def mbMas (lMorph):
    "returns True if one morphology is “masculin”"
    return any(":m" in s  for s in lMorph)

def mbFem (lMorph):
    "returns True if one morphology is “féminin”"
    return any(":f" in s  for s in lMorph)

def mbNpr (lMorph):
    "returns True if one morphology is “nom propre” or “titre de civilité”"
    return any(NP.search(s)  for s in lMorph)

def mbNprMasNotFem (lMorph):
    "returns True if one morphology is “nom propre masculin” but not “féminin”"
    if any(NPf.search(s)  for s in lMorph):
        return False
    return any(NPm.search(s)  for s in lMorph)

Modified gc_lang/fr/modules/gce_analyseur.py from [39975de0ac] to [252fe3713f].

1
2
3
4
5







6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32

33
34
35
36
37

38
39

40
41

42
43
44
45
46
47

48
49

50
51
52
53
54
55

56
57
58
59
60
61
62
63
64

65
66

67
68
69
70
71
72

73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88


89
90
91

92
93
94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25
26
27


28
29
30
31
32
33
34
35
36


37
38
39
40
41

42


43
44

45
46
47
48
49
50

51


52
53
54
55
56
57

58
59
60
61
62
63
64
65
66

67


68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88


89
90
91
92

93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109











































110
111
112
113
114
115

116





+
+
+
+
+
+
+

-
+













-
-
+








-
-
+




-
+
-
-
+

-
+





-
+
-
-
+





-
+








-
+
-
-
+





-
+














-
-
+
+


-
+









+






-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-






-
+
#### GRAMMAR CHECKING ENGINE PLUGIN: Parsing functions for French language

from . import cregex as cr


def g_morphVC (dToken, sPattern, sNegPattern=""):
    nEnd = dToken["sValue"].rfind("-")
    if "-t-" in dToken["sValue"]:
        nEnd = nEnd - 2
    return g_morph(dToken, sPattern, sNegPattern, 0, nEnd, False)


def rewriteSubject (s1, s2):
    # s1 is supposed to be prn/patr/npr (M[12P])
    "rewrite complex subject: <s1> a prn/patr/npr (M[12P]) followed by “et” and <s2>"
    if s2 == "lui":
        return "ils"
    if s2 == "moi":
        return "nous"
    if s2 == "toi":
        return "vous"
    if s2 == "nous":
        return "nous"
    if s2 == "vous":
        return "vous"
    if s2 == "eux":
        return "ils"
    if s2 == "elle" or s2 == "elles":
        # We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
        if cr.mbNprMasNotFem(_dAnalyses.get(s1, False)):
        if cr.mbNprMasNotFem(_oSpellChecker.getMorph(s1)):
            return "ils"
        # si épicène, indéterminable, mais OSEF, le féminin l’emporte
        return "elles"
    return s1 + " et " + s2


def apposition (sWord1, sWord2):
    "returns True if nom + nom (no agreement required)"
    # We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    return cr.mbNomNotAdj(_dAnalyses.get(sWord2, False)) and cr.mbPpasNomNotAdj(_dAnalyses.get(sWord1, False))
    return len(sWord2) < 2 or (cr.mbNomNotAdj(_oSpellChecker.getMorph(sWord2)) and cr.mbPpasNomNotAdj(_oSpellChecker.getMorph(sWord1)))


def isAmbiguousNAV (sWord):
    "words which are nom|adj and verb are ambiguous (except être and avoir)"
    if sWord not in _dAnalyses and not _storeMorphFromFSA(sWord):
    lMorph = _oSpellChecker.getMorph(sWord)
        return False
    if not cr.mbNomAdj(_dAnalyses[sWord]) or sWord == "est":
    if not cr.mbNomAdj(lMorph) or sWord == "est":
        return False
    if cr.mbVconj(_dAnalyses[sWord]) and not cr.mbMG(_dAnalyses[sWord]):
    if cr.mbVconj(lMorph) and not cr.mbMG(lMorph):
        return True
    return False


def isAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj):
    "use it if sWord1 won’t be a verb; word2 is assumed to be True via isAmbiguousNAV"
    "use it if <sWord1> won’t be a verb; <sWord2> is assumed to be True via isAmbiguousNAV"
    # We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    a2 = _dAnalyses.get(sWord2, None)
    a2 = _oSpellChecker.getMorph(sWord2)
    if not a2:
        return False
    if cr.checkConjVerb(a2, sReqMorphConj):
        # verb word2 is ok
        return False
    a1 = _dAnalyses.get(sWord1, None)
    a1 = _oSpellChecker.getMorph(sWord1)
    if not a1:
        return False
    if cr.checkAgreement(a1, a2) and (cr.mbAdj(a2) or cr.mbAdj(a1)):
        return False
    return True


def isVeryAmbiguousAndWrong (sWord1, sWord2, sReqMorphNA, sReqMorphConj, bLastHopeCond):
    "use it if sWord1 can be also a verb; word2 is assumed to be True via isAmbiguousNAV"
    "use it if <sWord1> can be also a verb; <sWord2> is assumed to be True via isAmbiguousNAV"
    # We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    a2 = _dAnalyses.get(sWord2, None)
    a2 = _oSpellChecker.getMorph(sWord2)
    if not a2:
        return False
    if cr.checkConjVerb(a2, sReqMorphConj):
        # verb word2 is ok
        return False
    a1 = _dAnalyses.get(sWord1, None)
    a1 = _oSpellChecker.getMorph(sWord1)
    if not a1:
        return False
    if cr.checkAgreement(a1, a2) and (cr.mbAdj(a2) or cr.mbAdjNb(a1)):
        return False
    # now, we know there no agreement, and conjugation is also wrong
    if cr.isNomAdj(a1):
        return True
    #if cr.isNomAdjVerb(a1): # considered True
    if bLastHopeCond:
        return True
    return False


def checkAgreement (sWord1, sWord2):
    # We don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    a2 = _dAnalyses.get(sWord2, None)
    "check agreement between <sWord1> and <sWord1>"
    a2 = _oSpellChecker.getMorph(sWord2)
    if not a2:
        return True
    a1 = _dAnalyses.get(sWord1, None)
    a1 = _oSpellChecker.getMorph(sWord1)
    if not a1:
        return True
    return cr.checkAgreement(a1, a2)


_zUnitSpecial = re.compile("[µ/⁰¹²³⁴⁵⁶⁷⁸⁹Ωℓ·]")
_zUnitNumbers = re.compile("[0-9]")

def mbUnit (s):
    "returns True it can be a measurement unit"
    if _zUnitSpecial.search(s):
        return True
    if 1 < len(s) < 16 and s[0:1].islower() and (not s[1:].islower() or _zUnitNumbers.search(s)):
        return True
    return False


#### Syntagmes

_zEndOfNG1 = re.compile(" *$| +(?:, +|)(?:n(?:’|e |o(?:u?s|tre) )|l(?:’|e(?:urs?|s|) |a )|j(?:’|e )|m(?:’|es? |a |on )|t(?:’|es? |a |u )|s(?:’|es? |a )|c(?:’|e(?:t|tte|s|) )|ç(?:a |’)|ils? |vo(?:u?s|tre) )")
_zEndOfNG2 = re.compile(r" +(\w[\w-]+)")
_zEndOfNG3 = re.compile(r" *, +(\w[\w-]+)")

def isEndOfNG (dDA, s, iOffset):
    if _zEndOfNG1.match(s):
        return True
    m = _zEndOfNG2.match(s)
    if m and morphex(dDA, (iOffset+m.start(1), m.group(1)), ":[VR]", ":[NAQP]"):
        return True
    m = _zEndOfNG3.match(s)
    if m and not morph(dDA, (iOffset+m.start(1), m.group(1)), ":[NA]", False):
        return True
    return False


_zNextIsNotCOD1 = re.compile(" *,")
_zNextIsNotCOD2 = re.compile(" +(?:[mtsnj](e +|’)|[nv]ous |tu |ils? |elles? )")
_zNextIsNotCOD3 = re.compile(r" +([a-zéèî][\w-]+)")

def isNextNotCOD (dDA, s, iOffset):
    if _zNextIsNotCOD1.match(s) or _zNextIsNotCOD2.match(s):
        return True
    m = _zNextIsNotCOD3.match(s)
    if m and morphex(dDA, (iOffset+m.start(1), m.group(1)), ":[123][sp]", ":[DM]"):
        return True
    return False


_zNextIsVerb1 = re.compile(" +[nmts](?:e |’)")
_zNextIsVerb2 = re.compile(r" +(\w[\w-]+)")

def isNextVerb (dDA, s, iOffset):
    if _zNextIsVerb1.match(s):
        return True
    m = _zNextIsVerb2.match(s)
    if m and morph(dDA, (iOffset+m.start(1), m.group(1)), ":[123][sp]", False):
        return True
    return False


#### Exceptions

aREGULARPLURAL = frozenset(["abricot", "amarante", "aubergine", "acajou", "anthracite", "brique", "caca", "café", \
                            "carotte", "cerise", "chataigne", "corail", "citron", "crème", "grave", "groseille", \
                            "jonquille", "marron", "olive", "pervenche", "prune", "sable"])
aSHOULDBEVERB = frozenset(["aller", "manger"]) 
aSHOULDBEVERB = frozenset(["aller", "manger"])

Modified gc_lang/fr/modules/gce_date_verif.py from [1265100649] to [c3f0a9eb2f].

1
2
3
4
5
6
7
8
9
10
11
12


13
14

15
16
17
18
19
20
21
22


23
24

25
26
27
28
29
30
31
32
33
34




35
36
37

38
39
40
41




42
43
44
45
46
47
48



49
50
51
52
53



1
2
3
4
5
6
7
8
9
10


11
12
13

14
15
16
17
18
19
20


21
22
23

24
25
26
27
28
29
30




31
32
33
34
35
36
37
38




39
40
41
42
43
44
45
46



47
48
49
50
51



52
53
54










-
-
+
+

-
+






-
-
+
+

-
+






-
-
-
-
+
+
+
+



+
-
-
-
-
+
+
+
+




-
-
-
+
+
+


-
-
-
+
+
+
#### GRAMMAR CHECKING ENGINE PLUGIN

#### Check date validity

_lDay = ["lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
_dMonth = { "janvier":1, "février":2, "mars":3, "avril":4, "mai":5, "juin":6, "juillet":7, "août":8, "aout":8, "septembre":9, "octobre":10, "novembre":11, "décembre":12 }

import datetime


def checkDate (day, month, year):
    "to use if month is a number"
def checkDate (sDay, sMonth, sYear):
    "to use if <sMonth> is a number"
    try:
        return datetime.date(int(year), int(month), int(day))
        return datetime.date(int(sYear), int(sMonth), int(sDay))
    except ValueError:
        return False
    except:
        return True


def checkDateWithString (day, month, year):
    "to use if month is a noun"
def checkDateWithString (sDay, sMonth, sYear):
    "to use if <sMonth> is a noun"
    try:
        return datetime.date(int(year), _dMonth.get(month.lower(), ""), int(day))
        return datetime.date(int(sYear), _dMonth.get(sMonth.lower(), ""), int(sDay))
    except ValueError:
        return False
    except:
        return True


def checkDay (weekday, day, month, year):
    "to use if month is a number"
    oDate = checkDate(day, month, year)
    if oDate and _lDay[oDate.weekday()] != weekday.lower():
def checkDay (sWeekday, sDay, sMonth, sYear):
    "to use if <sMonth> is a number"
    oDate = checkDate(sDay, sMonth, sYear)
    if oDate and _lDay[oDate.weekday()] != sWeekday.lower():
        return False
    return True


def checkDayWithString (weekday, day, month, year):
    "to use if month is a noun"
    oDate = checkDate(day, _dMonth.get(month, ""), year)
    if oDate and _lDay[oDate.weekday()] != weekday.lower():
def checkDayWithString (sWeekday, sDay, sMonth, sYear):
    "to use if <sMonth> is a noun"
    oDate = checkDate(sDay, _dMonth.get(sMonth, ""), sYear)
    if oDate and _lDay[oDate.weekday()] != sWeekday.lower():
        return False
    return True


def getDay (day, month, year):
    "to use if month is a number"
    return _lDay[datetime.date(int(year), int(month), int(day)).weekday()]
def getDay (sDay, sMonth, sYear):
    "to use if <sMonth> is a number"
    return _lDay[datetime.date(int(sYear), int(sMonth), int(sDay)).weekday()]


def getDayWithString (day, month, year):
    "to use if month is a noun"
    return _lDay[datetime.date(int(year), _dMonth.get(month.lower(), ""), int(day)).weekday()]
def getDayWithString (sDay, sMonth, sYear):
    "to use if <sMonth> is a noun"
    return _lDay[datetime.date(int(sYear), _dMonth.get(sMonth.lower(), ""), int(sDay)).weekday()]

Modified gc_lang/fr/modules/gce_suggestions.py from [79835965e4] to [00833488a6].

1
2
3
4
5
6
7
8
9












10




11
12

13
14
15
16
17
18


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38


39
40
41
42
43


44
45

46
47
48

49
50
51
52
53
54

55
56

57
58
59
60
61

62
63
64
65
66

67
68
69
70
71

72
73
74
75

76
77
78
79
80
81
82
83
84
85
86

87
88

89
90
91
92
93
94
95
96




97
98

99
100
101
102
103
104
105
106
107


108
109
110
111
112

113

114
115
116
117
118
119
120
121

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136

137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

152

153
154

155
156
157
158
159
160
161
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22
23
24
25
26

27
28
29
30
31


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

60
61
62

63
64
65

66
67
68
69
70
71

72
73

74
75
76
77
78

79
80
81
82
83

84
85
86
87
88

89
90
91
92

93
94
95
96
97
98
99
100
101
102
103
104
105
106

107
108
109
110
111
112
113
114

115
116
117
118
119

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161

162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178

179
180

181
182
183
184
185
186
187
188









+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+

-
+




-
-
+
+




















+
+




-
+
+

-
+


-
+





-
+

-
+




-
+




-
+




-
+



-
+











+

-
+







-
+
+
+
+

-
+









+
+





+
-
+








+














-
+















+
-
+

-
+







#### GRAMMAR CHECKING ENGINE PLUGIN: Suggestion mechanisms

from . import conj
from . import mfsp
from . import phonet


## Verbs

def splitVerb (sVerb):
    "renvoie le verbe et les pronoms séparément"
    iRight = sVerb.rfind("-")
    sSuffix = sVerb[iRight:]
    sVerb = sVerb[:iRight]
    if sVerb.endswith(("-t", "-le", "-la", "-les")):
        iRight = sVerb.rfind("-")
        sSuffix = sVerb[iRight:] + sSuffix
        sVerb = sVerb[:iRight]
    return sVerb, sSuffix


def suggVerb (sFlex, sWho, funcSugg2=None):
def suggVerb (sFlex, sWho, funcSugg2=None, bVC=False):
    "change <sFlex> conjugation according to <sWho>"
    if bVC:
        sFlex, sSfx = splitVerb(sFlex)
    aSugg = set()
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        tTags = conj._getTags(sStem)
        if tTags:
            # we get the tense
            aTense = set()
            for sMorph in _dAnalyses.get(sFlex, []): # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
                for m in re.finditer(">"+sStem+" .*?(:(?:Y|I[pqsf]|S[pq]|K|P))", sMorph):
            for sMorph in _oSpellChecker.getMorph(sFlex):
                for m in re.finditer(">"+sStem+"/.*?(:(?:Y|I[pqsf]|S[pq]|K|P))", sMorph):
                    # stem must be used in regex to prevent confusion between different verbs (e.g. sauras has 2 stems: savoir and saurer)
                    if m:
                        if m.group(1) == ":Y":
                            aTense.add(":Ip")
                            aTense.add(":Iq")
                            aTense.add(":Is")
                        elif m.group(1) == ":P":
                            aTense.add(":Ip")
                        else:
                            aTense.add(m.group(1))
            for sTense in aTense:
                if sWho == ":1ś" and not conj._hasConjWithTags(tTags, sTense, ":1ś"):
                    sWho = ":1s"
                if conj._hasConjWithTags(tTags, sTense, sWho):
                    aSugg.add(conj._getConjWithTags(sStem, tTags, sTense, sWho))
    if funcSugg2:
        aSugg2 = funcSugg2(sFlex)
        if aSugg2:
            aSugg.add(aSugg2)
    if aSugg:
        if bVC:
            aSugg = list(map(lambda sSug: sSug + sSfx, aSugg))
        return "|".join(aSugg)
    return ""


def suggVerbPpas (sFlex, sWhat=None):
def suggVerbPpas (sFlex, sPattern=None):
    "suggest past participles for <sFlex>"
    aSugg = set()
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        tTags = conj._getTags(sStem)
        if tTags:
            if not sWhat:
            if not sPattern:
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q2"))
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q3"))
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q4"))
                aSugg.discard("")
            elif sWhat == ":m:s":
            elif sPattern == ":m:s":
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
            elif sWhat == ":m:p":
            elif sPattern == ":m:p":
                if conj._hasConjWithTags(tTags, ":PQ", ":Q2"):
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q2"))
                else:
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
            elif sWhat == ":f:s":
            elif sPattern == ":f:s":
                if conj._hasConjWithTags(tTags, ":PQ", ":Q3"):
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q3"))
                else:
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
            elif sWhat == ":f:p":
            elif sPattern == ":f:p":
                if conj._hasConjWithTags(tTags, ":PQ", ":Q4"):
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q4"))
                else:
                    aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
            elif sWhat == ":s":
            elif sPattern == ":s":
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q3"))
                aSugg.discard("")
            elif sWhat == ":p":
            elif sPattern == ":p":
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q2"))
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q4"))
                aSugg.discard("")
            else:
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":PQ", ":Q1"))
    if aSugg:
        return "|".join(aSugg)
    return ""


def suggVerbTense (sFlex, sTense, sWho):
    "change <sFlex> to a verb according to <sTense> and <sWho>"
    aSugg = set()
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        if conj.hasConj(sStem, sTense, sWho):
            aSugg.add(conj.getConj(sStem, sTense, sWho))
    if aSugg:
        return "|".join(aSugg)
    return ""


def suggVerbImpe (sFlex):
def suggVerbImpe (sFlex, bVC=False):
    "change <sFlex> to a verb at imperative form"
    if bVC:
        sFlex, sSfx = splitVerb(sFlex)
    aSugg = set()
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        tTags = conj._getTags(sStem)
        if tTags:
            if conj._hasConjWithTags(tTags, ":E", ":2s"):
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2s"))
            if conj._hasConjWithTags(tTags, ":E", ":1p"):
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":1p"))
            if conj._hasConjWithTags(tTags, ":E", ":2p"):
                aSugg.add(conj._getConjWithTags(sStem, tTags, ":E", ":2p"))
    if aSugg:
        if bVC:
            aSugg = list(map(lambda sSug: sSug + sSfx, aSugg))
        return "|".join(aSugg)
    return ""


def suggVerbInfi (sFlex):
    "returns infinitive forms of <sFlex>"
    return "|".join([ sStem  for sStem in stem(sFlex)  if conj.isVerb(sStem) ])
    return "|".join([ sStem  for sStem in _oSpellChecker.getLemma(sFlex)  if conj.isVerb(sStem) ])


_dQuiEst = { "je": ":1s", "j’": ":1s", "j’en": ":1s", "j’y": ":1s", \
             "tu": ":2s", "il": ":3s", "on": ":3s", "elle": ":3s", "nous": ":1p", "vous": ":2p", "ils": ":3p", "elles": ":3p" }
_lIndicatif = [":Ip", ":Iq", ":Is", ":If"]
_lSubjonctif = [":Sp", ":Sq"]

def suggVerbMode (sFlex, cMode, sSuj):
    "returns other conjugations of <sFlex> acconding to <cMode> and <sSuj>"
    if cMode == ":I":
        lMode = _lIndicatif
    elif cMode == ":S":
        lMode = _lSubjonctif
    elif cMode.startswith((":I", ":S")):
        lMode = [cMode]
    else:
        return ""
    sWho = _dQuiEst.get(sSuj.lower(), None)
    if not sWho:
        if sSuj[0:1].islower(): # pas un pronom, ni un nom propre
            return ""
        sWho = ":3s"
    aSugg = set()
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        tTags = conj._getTags(sStem)
        if tTags:
            for sTense in lMode:
                if conj._hasConjWithTags(tTags, sTense, sWho):
                    aSugg.add(conj._getConjWithTags(sStem, tTags, sTense, sWho))
    if aSugg:
        return "|".join(aSugg)
    return ""


## Nouns and adjectives

def suggPlur (sFlex, sWordToAgree=None):
    "returns plural forms assuming sFlex is singular"
    if sWordToAgree:
        lMorph = _oSpellChecker.getMorph(sFlex)
        if sWordToAgree not in _dAnalyses and not _storeMorphFromFSA(sWordToAgree):
        if not lMorph:
            return ""
        sGender = cr.getGender(_dAnalyses.get(sWordToAgree, []))
        sGender = cr.getGender(lMorph)
        if sGender == ":m":
            return suggMasPlur(sFlex)
        elif sGender == ":f":
            return suggFemPlur(sFlex)
    aSugg = set()
    if "-" not in sFlex:
        if sFlex.endswith("l"):
189
190
191
192
193
194
195
196
197
198

199
200
201
202
203
204
205
216
217
218
219
220
221
222

223

224
225
226
227
228
229
230
231







-

-
+







    if aSugg:
        return "|".join(aSugg)
    return ""


def suggMasSing (sFlex, bSuggSimil=False):
    "returns masculine singular forms"
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    aSugg = set()
    for sMorph in _dAnalyses.get(sFlex, []):
    for sMorph in _oSpellChecker.getMorph(sFlex):
        if not ":V" in sMorph:
            # not a verb
            if ":m" in sMorph or ":e" in sMorph:
                aSugg.add(suggSing(sFlex))
            else:
                sStem = cr.getLemmaOfMorph(sMorph)
                if mfsp.isFemForm(sStem):
217
218
219
220
221
222
223
224
225
226

227
228
229
230
231
232
233
243
244
245
246
247
248
249

250

251
252
253
254
255
256
257
258







-

-
+







    if aSugg:
        return "|".join(aSugg)
    return ""


def suggMasPlur (sFlex, bSuggSimil=False):
    "returns masculine plural forms"
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    aSugg = set()
    for sMorph in _dAnalyses.get(sFlex, []):
    for sMorph in _oSpellChecker.getMorph(sFlex):
        if not ":V" in sMorph:
            # not a verb
            if ":m" in sMorph or ":e" in sMorph:
                aSugg.add(suggPlur(sFlex))
            else:
                sStem = cr.getLemmaOfMorph(sMorph)
                if mfsp.isFemForm(sStem):
248
249
250
251
252
253
254
255
256
257

258
259
260
261
262
263
264
273
274
275
276
277
278
279

280

281
282
283
284
285
286
287
288







-

-
+







    if aSugg:
        return "|".join(aSugg)
    return ""


def suggFemSing (sFlex, bSuggSimil=False):
    "returns feminine singular forms"
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    aSugg = set()
    for sMorph in _dAnalyses.get(sFlex, []):
    for sMorph in _oSpellChecker.getMorph(sFlex):
        if not ":V" in sMorph:
            # not a verb
            if ":f" in sMorph or ":e" in sMorph:
                aSugg.add(suggSing(sFlex))
            else:
                sStem = cr.getLemmaOfMorph(sMorph)
                if mfsp.isFemForm(sStem):
274
275
276
277
278
279
280
281
282
283

284
285
286
287
288
289
290
298
299
300
301
302
303
304

305

306
307
308
309
310
311
312
313







-

-
+







    if aSugg:
        return "|".join(aSugg)
    return ""


def suggFemPlur (sFlex, bSuggSimil=False):
    "returns feminine plural forms"
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    aSugg = set()
    for sMorph in _dAnalyses.get(sFlex, []):
    for sMorph in _oSpellChecker.getMorph(sFlex):
        if not ":V" in sMorph:
            # not a verb
            if ":f" in sMorph or ":e" in sMorph:
                aSugg.add(suggPlur(sFlex))
            else:
                sStem = cr.getLemmaOfMorph(sMorph)
                if mfsp.isFemForm(sStem):
299
300
301
302
303
304
305

306

307
308
309
310
311
312
313
314

315

316
317
318
319
320
321
322
323
324
325

326
327
328

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343

344
345
346
347
348
349

350
351
352
353
354
355
356
357
358
359
360

361
362

363
364
365
366
367
368
369
370
371
372

373
374
375
376

377
378


379
380

381
382
383


384
385
386
387
388

389
390
391
392
393
394
395
396
397
398


399
400
401
402
403
404
405

406
407
408
409
410
411
412
322
323
324
325
326
327
328
329

330
331
332
333
334
335
336
337
338
339

340
341
342
343
344
345
346
347
348
349

350
351
352

353
354
355
356
357
358
359
360
361
362
363
364
365
366
367

368
369
370
371
372
373

374
375
376
377
378
379
380
381
382
383
384

385
386

387
388
389
390
391
392
393
394
395
396
397
398
399
400
401

402
403

404
405
406

407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426


427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443







+
-
+








+
-
+









-
+


-
+














-
+





-
+










-
+

-
+










+



-
+

-
+
+

-
+



+
+





+








-
-
+
+







+







            aSugg.add(e)
    if aSugg:
        return "|".join(aSugg)
    return ""


def hasFemForm (sFlex):
    "return True if there is a feminine form of <sFlex>"
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        if mfsp.isFemForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q3"):
            return True
    if phonet.hasSimil(sFlex, ":f"):
        return True
    return False


def hasMasForm (sFlex):
    "return True if there is a masculine form of <sFlex>"
    for sStem in stem(sFlex):
    for sStem in _oSpellChecker.getLemma(sFlex):
        if mfsp.isFemForm(sStem) or conj.hasConj(sStem, ":PQ", ":Q1"):
            # what has a feminine form also has a masculine form
            return True
    if phonet.hasSimil(sFlex, ":m"):
        return True
    return False


def switchGender (sFlex, bPlur=None):
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    "return feminine or masculine form(s) of <sFlex>"
    aSugg = set()
    if bPlur == None:
        for sMorph in _dAnalyses.get(sFlex, []):
        for sMorph in _oSpellChecker.getMorph(sFlex):
            if ":f" in sMorph:
                if ":s" in sMorph:
                    aSugg.add(suggMasSing(sFlex))
                elif ":p" in sMorph:
                    aSugg.add(suggMasPlur(sFlex))
            elif ":m" in sMorph:
                if ":s" in sMorph:
                    aSugg.add(suggFemSing(sFlex))
                elif ":p" in sMorph:
                    aSugg.add(suggFemPlur(sFlex))
                else:
                    aSugg.add(suggFemSing(sFlex))
                    aSugg.add(suggFemPlur(sFlex))
    elif bPlur:
        for sMorph in _dAnalyses.get(sFlex, []):
        for sMorph in _oSpellChecker.getMorph(sFlex):
            if ":f" in sMorph:
                aSugg.add(suggMasPlur(sFlex))
            elif ":m" in sMorph:
                aSugg.add(suggFemPlur(sFlex))
    else:
        for sMorph in _dAnalyses.get(sFlex, []):
        for sMorph in _oSpellChecker.getMorph(sFlex):
            if ":f" in sMorph:
                aSugg.add(suggMasSing(sFlex))
            elif ":m" in sMorph:
                aSugg.add(suggFemSing(sFlex))
    if aSugg:
        return "|".join(aSugg)
    return ""


def switchPlural (sFlex):
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    "return plural or singular form(s) of <sFlex>"
    aSugg = set()
    for sMorph in _dAnalyses.get(sFlex, []):
    for sMorph in _oSpellChecker.getMorph(sFlex):
        if ":s" in sMorph:
            aSugg.add(suggPlur(sFlex))
        elif ":p" in sMorph:
            aSugg.add(suggSing(sFlex))
    if aSugg:
        return "|".join(aSugg)
    return ""


def hasSimil (sWord, sPattern=None):
    "return True if there is words phonetically similar to <sWord> (according to <sPattern> if required)"
    return phonet.hasSimil(sWord, sPattern)


def suggSimil (sWord, sPattern=None, bSubst=False):
def suggSimil (sWord, sPattern=None, bSubst=False, bVC=False):
    "return list of words phonetically similar to sWord and whom POS is matching sPattern"
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    if bVC:
        sWord, sSfx = splitVerb(sWord)
    aSugg = phonet.selectSimil(sWord, sPattern)
    for sMorph in _dAnalyses.get(sWord, []):
    for sMorph in _oSpellChecker.getMorph(sWord):
        aSugg.update(conj.getSimil(sWord, sMorph, bSubst))
        break
    if aSugg:
        if bVC:
            aSugg = list(map(lambda sSug: sSug + sSfx, aSugg))
        return "|".join(aSugg)
    return ""


def suggCeOrCet (sWord):
    "suggest “ce” or “cet” or both according to the first letter of <sWord>"
    if re.match("(?i)[aeéèêiouyâîï]", sWord):
        return "cet"
    if sWord[0:1] == "h" or sWord[0:1] == "H":
        return "ce|cet"
    return "ce"


def suggLesLa (sWord):
    # we don’t check if word exists in _dAnalyses, for it is assumed it has been done before
    if any( ":p" in sMorph  for sMorph in _dAnalyses.get(sWord, []) ):
    "suggest “les” or “la” according to <sWord>"
    if any( ":p" in sMorph  for sMorph in _oSpellChecker.getMorph(sWord) ):
        return "les|la"
    return "la"


_zBinary = re.compile("^[01]+$")

def formatNumber (s):
    "add spaces or hyphens to big numbers"
    nLen = len(s)
    if nLen < 4:
        return s
    sRes = ""
    # nombre ordinaire
    nEnd = nLen
    while nEnd > 0:
433
434
435
436
437
438
439

440
441
442
443
444
445
446
447
448
449
450

451
452
453
454
455
456
457
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490







+











+







    elif nLen == 9 and s.startswith("0"):
        sRes += "|" + s[0:3] + " " + s[3:5] + " " + s[5:7] + " " + s[7:9]                   # fixe belge 1
        sRes += "|" + s[0:2] + " " + s[2:5] + " " + s[5:7] + " " + s[7:9]                   # fixe belge 2
    return sRes


def formatNF (s):
    "typography: format NF reference (norme française)"
    try:
        m = re.match("NF[  -]?(C|E|P|Q|S|X|Z|EN(?:[  -]ISO|))[  -]?([0-9]+(?:[/‑-][0-9]+|))", s)
        if not m:
            return ""
        return "NF " + m.group(1).upper().replace(" ", " ").replace("-", " ") + " " + m.group(2).replace("/", "‑").replace("-", "‑")
    except:
        traceback.print_exc()
        return "# erreur #"


def undoLigature (c):
    "typography: split ligature character <c> in several chars"
    if c == "fi":
        return "fi"
    elif c == "fl":
        return "fl"
    elif c == "ff":
        return "ff"
    elif c == "ffi":
468
469
470
471
472
473
474
475

476
477
478

479
501
502
503
504
505
506
507

508
509
510
511
512
513







-
+



+



_xNormalizedCharsForInclusiveWriting = str.maketrans({
    '(': '_',  ')': '_',
    '.': '_',  '·': '_',
    '–': '_',  '—': '_',
    '/': '_'
 })
})


def normalizeInclusiveWriting (sToken):
    "typography: replace word separators used in inclusive writing by underscore (_)"
    return sToken.translate(_xNormalizedCharsForInclusiveWriting)

Modified gc_lang/fr/modules/lexicographe.py from [5e53113f51] to [175c38852d].


1



2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
1

2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19
+
-
+
+
+







-
+







"""
# Grammalecte - Lexicographe
Grammalecte - Lexicographe
"""

# License: MPL 2


import re
import traceback


_dTAGS = {  
_dTAGS = {
    ':N': (" nom,", "Nom"),
    ':A': (" adjectif,", "Adjectif"),
    ':M1': (" prénom,", "Prénom"),
    ':M2': (" patronyme,", "Patronyme, matronyme, nom de famille…"),
    ':MP': (" nom propre,", "Nom propre"),
    ':W': (" adverbe,", "Adverbe"),
    ':J': (" interjection,", "Interjection"),
76
77
78
79
80
81
82
83

84
85
86
87
88
89
90
79
80
81
82
83
84
85

86
87
88
89
90
91
92
93







-
+







    ':O2': (" 2ᵉ pers.,", "Pronom : 2ᵉ personne"),
    ':O3': (" 3ᵉ pers.,", "Pronom : 3ᵉ personne"),
    ':C': (" conjonction,", "Conjonction"),
    ':Ĉ': (" conjonction (él.),", "Conjonction (élément)"),
    ':Cc': (" conjonction de coordination,", "Conjonction de coordination"),
    ':Cs': (" conjonction de subordination,", "Conjonction de subordination"),
    ':Ĉs': (" conjonction de subordination (él.),", "Conjonction de subordination (élément)"),
    

    ':Ñ': (" locution nominale (él.),", "Locution nominale (élément)"),
    ':Â': (" locution adjectivale (él.),", "Locution adjectivale (élément)"),
    ':Ṽ': (" locution verbale (él.),", "Locution verbale (élément)"),
    ':Ŵ': (" locution adverbiale (él.),", "Locution adverbiale (élément)"),
    ':Ŕ': (" locution prépositive (él.),", "Locution prépositive (élément)"),
    ':Ĵ': (" locution interjective (él.),", "Locution interjective (élément)"),

123
124
125
126
127
128
129
130

131
132
133

134
135
136
137

138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165

166
167
168
169
170
171
172
126
127
128
129
130
131
132

133
134
135

136
137
138
139

140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177







-
+


-
+



-
+




















+








+







    'il': " pronom personnel sujet, 3ᵉ pers. masc. sing.",
    'on': " pronom personnel sujet, 3ᵉ pers. sing. ou plur.",
    'elle': " pronom personnel sujet, 3ᵉ pers. fém. sing.",
    'nous': " pronom personnel sujet/objet, 1ʳᵉ pers. plur.",
    'vous': " pronom personnel sujet/objet, 2ᵉ pers. plur.",
    'ils': " pronom personnel sujet, 3ᵉ pers. masc. plur.",
    'elles': " pronom personnel sujet, 3ᵉ pers. masc. plur.",
    

    "là": " particule démonstrative",
    "ci": " particule démonstrative",
    

    'le': " COD, masc. sing.",
    'la': " COD, fém. sing.",
    'les': " COD, plur.",
        

    'moi': " COI (à moi), sing.",
    'toi': " COI (à toi), sing.",
    'lui': " COI (à lui ou à elle), sing.",
    'nous2': " COI (à nous), plur.",
    'vous2': " COI (à vous), plur.",
    'leur': " COI (à eux ou à elles), plur.",

    'y': " pronom adverbial",
    "m'y": " (me) pronom personnel objet + (y) pronom adverbial",
    "t'y": " (te) pronom personnel objet + (y) pronom adverbial",
    "s'y": " (se) pronom personnel objet + (y) pronom adverbial",

    'en': " pronom adverbial",
    "m'en": " (me) pronom personnel objet + (en) pronom adverbial",
    "t'en": " (te) pronom personnel objet + (en) pronom adverbial",
    "s'en": " (se) pronom personnel objet + (en) pronom adverbial",
}


class Lexicographe:
    "Lexicographer - word analyzer"

    def __init__ (self, oSpellChecker):
        self.oSpellChecker = oSpellChecker
        self._zElidedPrefix = re.compile("(?i)^([dljmtsncç]|quoiqu|lorsqu|jusqu|puisqu|qu)['’](.+)")
        self._zCompoundWord = re.compile("(?i)(\\w+)-((?:les?|la)-(?:moi|toi|lui|[nv]ous|leur)|t-(?:il|elle|on)|y|en|[mts][’'](?:y|en)|les?|l[aà]|[mt]oi|leur|lui|je|tu|ils?|elles?|on|[nv]ous)$")
        self._zTag = re.compile("[:;/][\\w*][^:;/]*")

    def analyzeWord (self, sWord):
        "returns a tuple (a list of morphologies, a set of verb at infinitive form)"
        try:
            if not sWord:
                return (None, None)
            if sWord.count("-") > 4:
                return (["élément complexe indéterminé"], None)
            if sWord.isdigit():
                return (["nombre"], None)
190
191
192
193
194
195
196
197

198
199
200
201
202
203

204
205
206
207
208
209
210
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209
210
211
212
213
214
215
216







-
+






+







                aMorph.append( "{} : {}".format(sWord, self.formatTags(lMorph[0])) )
            else:
                aMorph.append( "{} :  inconnu du dictionnaire".format(sWord) )
            # suffixe d’un mot composé
            if m2:
                aMorph.append( "-{} : {}".format(m2.group(2), self._formatSuffix(m2.group(2).lower())) )
            # Verbes
            aVerb = set([ s[1:s.find(" ")]  for s in lMorph  if ":V" in s ])
            aVerb = set([ s[1:s.find("/")]  for s in lMorph  if ":V" in s ])
            return (aMorph, aVerb)
        except:
            traceback.print_exc()
            return (["#erreur"], None)

    def formatTags (self, sTags):
        "returns string: readable tags"
        sRes = ""
        sTags = re.sub("(?<=V[1-3])[itpqnmr_eaxz]+", "", sTags)
        sTags = re.sub("(?<=V0[ea])[itpqnmr_eaxz]+", "", sTags)
        for m in self._zTag.finditer(sTags):
            sRes += _dTAGS.get(m.group(0), " [{}]".format(m.group(0)))[0]
        if sRes.startswith(" verbe") and not sRes.endswith("infinitif"):
            sRes += " [{}]".format(sTags[1:sTags.find(" ")])

Modified gc_lang/fr/modules/mfsp.py from [3f4814b5d6] to [8b7759e076].


1


2
3
4
5
6
7
8
1

2
3
4
5
6
7
8
9
10
+
-
+
+







"""
# Masculins, féminins, singuliers et pluriels
Masculins, féminins, singuliers et pluriels
"""

from .mfsp_data import lTagMiscPlur as _lTagMiscPlur
from .mfsp_data import lTagMasForm as _lTagMasForm
from .mfsp_data import dMiscPlur as _dMiscPlur
from .mfsp_data import dMasForm as _dMasForm


Modified gc_lang/fr/modules/phonet.py from [cc107e0763] to [df9f884192].


1



2
3
4
5
6
7
8
1

2
3
4
5
6
7
8
9
10
11
+
-
+
+
+







"""
# Grammalecte - Suggestion phonétique
Grammalecte - Suggestion phonétique
"""

# License: GPL 3

import re

from .phonet_data import dWord as _dWord
from .phonet_data import lSet as _lSet
from .phonet_data import dMorph as _dMorph

Modified gc_lang/fr/modules/tests.py from [2e6f413e05] to [7a6a733de8].

1
2




3
4
5
6
7
8
9
1

2
3
4
5
6
7
8
9
10
11
12

-
+
+
+
+







#! python3
# coding: UTF-8

"""
Grammar checker tests for French language
"""

import unittest
import os
import re
import time


125
126
127
128
129
130
131

132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149

150
151
152
153
154
155
156
157

















158
159
160
161
162


163
164
165
166
167
168
169
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154








155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174


175
176
177
178
179
180
181
182
183







+


















+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



-
-
+
+







        cls._zError = re.compile(r"\{\{.*?\}\}")
        cls._aRuleTested = set()

    def test_parse (self):
        zOption = re.compile("^__([a-zA-Z0-9]+)__ ")
        spHere, spfThisFile = os.path.split(__file__)
        with open(os.path.join(spHere, "gc_test.txt"), "r", encoding="utf-8") as hSrc:
            nError = 0
            for sLine in ( s for s in hSrc if not s.startswith("#") and s.strip() ):
                sLineNum = sLine[:10].strip()
                sLine = sLine[10:].strip()
                sOption = None
                m = zOption.search(sLine)
                if m:
                    sLine = sLine[m.end():]
                    sOption = m.group(1)
                if "->>" in sLine:
                    sErrorText, sExceptedSuggs = self._splitTestLine(sLine)
                    if sExceptedSuggs.startswith('"') and sExceptedSuggs.endswith('"'):
                        sExceptedSuggs = sExceptedSuggs[1:-1]
                else:
                    sErrorText = sLine.strip()
                    sExceptedSuggs = ""
                sExpectedErrors = self._getExpectedErrors(sErrorText)
                sTextToCheck = sErrorText.replace("}}", "").replace("{{", "")
                sFoundErrors, sListErr, sFoundSuggs = self._getFoundErrors(sTextToCheck, sOption)
                # tests
                self.assertEqual(sExpectedErrors, sFoundErrors, \
                                 "\n# Line num: " + sLineNum + \
                                 "\n> to check: " + _fuckBackslashUTF8(sTextToCheck) + \
                                 "\n  expected: " + sExpectedErrors + \
                                 "\n  found:    " + sFoundErrors + \
                                 "\n  errors:   \n" + sListErr)
                if sExceptedSuggs:
                    self.assertEqual(sExceptedSuggs, sFoundSuggs, "\n# Line num: " + sLineNum + "\n> to check: " + _fuckBackslashUTF8(sTextToCheck) + "\n  errors:   \n" + sListErr)
                if sExpectedErrors != sFoundErrors:
                    print("\n# Line num: " + sLineNum + \
                          "\n> to check: " + _fuckBackslashUTF8(sTextToCheck) + \
                          "\n  expected: " + sExpectedErrors + \
                          "\n  found:    " + sFoundErrors + \
                          "\n  errors:   \n" + sListErr)
                    nError += 1
                elif sExceptedSuggs:
                    if sExceptedSuggs != sFoundSuggs:
                        print("\n# Line num: " + sLineNum + \
                              "\n> to check: " + _fuckBackslashUTF8(sTextToCheck) + \
                              "\n  expected: " + sExceptedSuggs + \
                              "\n  found:    " + sFoundSuggs + \
                              "\n  errors:   \n" + sListErr)
                        nError += 1
            if nError:
                print("Unexpected errors:", nError)
        # untested rules
        i = 0
        for sOpt, sLineId, sRuleId in gce.listRules():
            if sLineId not in self._aRuleTested and not re.search("^[0-9]+[sp]$|^[pd]_", sRuleId):
                echo(sRuleId, end= ", ")
            if sOpt != "@@@@" and sLineId not in self._aRuleTested and not re.search("^[0-9]+[sp]$|^[pd]_", sRuleId):
                echo(sLineId + "/" + sRuleId, end= ", ")
                i += 1
        if i:
            echo("\n[{} untested rules]".format(i))

    def _splitTestLine (self, sLine):
        sText, sSugg = sLine.split("->>")
        return (sText.strip(), sSugg.strip())

Modified gc_lang/fr/modules/textformatter.py from [8fb9ec33bf] to [219d3111da].

1




2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
9
10
11
12

+
+
+
+







#!python3

"""
Text formatter
"""

import re


dReplTable = {
    # surnumerary_spaces
    "start_of_paragraph":          [("^[  ]+", "")],
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
45
46
47
48
49
50
51

52
53
54
55
56
57
58
59







-
+







    # common
    "nbsp_titles":                 [("\\bM(mes?|ᵐᵉˢ?|grs?|ᵍʳˢ?|lles?|ˡˡᵉˢ?|rs?|ʳˢ?|M\\.) ", "M\\1 "),
                                    ("\\bP(re?s?|ʳᵉ?ˢ?) ", "P\\1 "),
                                    ("\\bD(re?s?|ʳᵉ?ˢ?) ", "D\\1 "),
                                    ("\\bV(ves?|ᵛᵉˢ?) ", "V\\1 ")],
    "nbsp_before_symbol":          [("(\\d) ?([%‰€$£¥˚Ω℃])", "\\1 \\2")],
    "nbsp_before_units":           [("(?<=[0-9⁰¹²³⁴⁵⁶⁷⁸⁹]) ?([kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰]|°C)\\b", " \\1")],
    "nbsp_repair":                 [("(?<=[[(])[   ]([!?:;])", "\\1"),
    "nbsp_repair":                 [("(?<=[\\[(])[   ]([!?:;])", "\\1"),
                                    ("(https?|ftp)[   ]:(?=//)", "\\1:"),
                                    ("&([a-z]+)[   ];", "&\\1;"),
                                    ("&#([0-9]+|x[0-9a-fA-F]+)[   ];", "&#\\1;")],
    ## missing spaces
    "add_space_after_punctuation": [("([;!…])(?=\\w)", "\\1 "),
                                    ("[?](?=[A-ZÉÈÊÂÀÎ])", "? "),
                                    ("\\.(?=[A-ZÉÈÎ][a-zA-ZàâÂéÉèÈêÊîÎïÏôÔöÖûÛüÜùÙ])", ". "),
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
78
79
80
81

82
83
84
85
86
87
88
89
90


91
92
93
94
95
96
97
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84

85
86
87
88
89
90
91
92


93
94
95
96
97
98
99
100
101







-
+










-
+







-
-
+
+







    "erase_non_breaking_hyphens":  [("­", "")],
    ## typographic signs
    "ts_apostrophe":          [ ("(?i)\\b([ldnjmtscç])['´‘′`](?=\\w)", "\\1’"),
                                ("(?i)(qu|jusqu|lorsqu|puisqu|quoiqu|quelqu|presqu|entr|aujourd|prud)['´‘′`]", "\\1’") ],
    "ts_ellipsis":            [ ("\\.\\.\\.", "…"),
                                ("(?<=…)[.][.]", "…"),
                                ("…[.](?![.])", "…") ],
    "ts_n_dash_middle":       [ (" [-—] ", " – "), 
    "ts_n_dash_middle":       [ (" [-—] ", " – "),
                                (" [-—],", " –,") ],
    "ts_m_dash_middle":       [ (" [-–] ", " — "),
                                (" [-–],", " —,") ],
    "ts_n_dash_start":        [ ("^[-—][  ]", "– "),
                                ("^– ", "– "),
                                ("^[-–—](?=[\\w.…])", "– ") ],
    "ts_m_dash_start":        [ ("^[-–][  ]", "— "),
                                ("^— ", "— "),
                                ("^«[  ][—–-][  ]", "« — "),
                                ("^[-–—](?=[\\w.…])", "— ") ],
    "ts_quotation_marks":     [ (u'"(\\w+)"', "“$1”"),
    "ts_quotation_marks":     [ ('"(\\w+)"', "“$1”"),
                                ("''(\\w+)''", "“$1”"),
                                ("'(\\w+)'", "“$1”"),
                                ("^(?:\"|'')(?=\\w)", "« "),
                                (" (?:\"|'')(?=\\w)", " « "),
                                ("\\((?:\"|'')(?=\\w)", "(« "),
                                ("(?<=\\w)(?:\"|'')$", " »"),
                                ("(?<=\\w)(?:\"|'')(?=[] ,.:;?!…)])", " »"),
                                (u'(?<=[.!?…])" ', " » "),
                                (u'(?<=[.!?…])"$', " »") ],
                                ('(?<=[.!?…])" ', " » "),
                                ('(?<=[.!?…])"$', " »") ],
    "ts_spell":               [ ("coeur", "cœur"), ("Coeur", "Cœur"),
                                ("coel(?=[aeio])", "cœl"), ("Coel(?=[aeio])", "Cœl"),
                                ("choeur", "chœur"), ("Choeur", "Chœur"),
                                ("foet", "fœt"), ("Foet", "Fœt"),
                                ("oeil", "œil"), ("Oeil", "Œil"),
                                ("oeno", "œno"), ("Oeno", "Œno"),
                                ("oesoph", "œsoph"), ("Oesoph", "Œsoph"),

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/README_dict_fr.txt from [3e9744d110] to [dee0f21f2d].

1
2
3
4

5
6
7
8
9
10
11
1
2
3

4
5
6
7
8
9
10
11



-
+







_______________________________________________________________________________

   DICTIONNAIRES ORTHOGRAPHIQUES FRANÇAIS
   version 6.3
   version 7.0

   Olivier R. - dicollecte<at>free<dot>fr
   Dicollecte : http://www.dicollecte.org/

   Licence :
     MPL : Mozilla Public License
     version 2.0  --  http://www.mozilla.org/MPL/2.0/

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.aff from [d72ddf000e] to [58e3622b9d].

1
2
3
4
5

6
7

8
9
10
11
12
13
14
1
2
3
4

5
6

7
8
9
10
11
12
13
14




-
+

-
+







# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “CLASSIQUE” v6.3
# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “CLASSIQUE” v7.0
# par Olivier R. -- licence MPL 2.0
# Généré le 01-07-2018 à 20:45
# Généré le 14-09-2018 à 10:59
# Pour améliorer le dictionnaire, allez sur http://www.dicollecte.org/



SET UTF-8

WORDCHARS -’'1234567890.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-classique.dic from [f3b0b4c428] to [262be5a673].

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







80822
80867
&
1er/--
1ers/--
1re/--
1res/--
1ʳᵉ/--
1ʳᵉˢ/--
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195



1196
1197
1198
1199
1200
1201
1202
1186
1187
1188
1189
1190
1191
1192



1193
1194
1195
1196
1197
1198
1199
1200
1201
1202







-
-
-
+
+
+







Bradley
Bradley
Brafman
Brahim
Brahma
Brahmapoutre
Brahms
Braine-l'Alleud
Braine-le-Château
Braine-le-Comte
Braine-le-Château
Braine-le-Comte
Braine-l'Alleud
Brakel
Brand
Brandon
Brasov
Brassac
Brasschaat
Brassica
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1498
1499
1500
1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511







-







Casanova
Casey
Casimir
Casimir-Perier
Caspienne
Cassandra
Cassandre
Casseurs_Flowters
Cassidy
Cassini
Cassiopée
Castafolte
Castanet-Tolosan
Castelnaudary
Castelnau-le-Lez
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642




1643
1644
1645
1646
1647
1648
1649
1631
1632
1633
1634
1635
1636
1637




1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648







-
-
-
-
+
+
+
+







Charybde
Chase
Chasles
Chastel-Arnaud
Château-Gontier
Château-Thierry
Châteaubriant
Château-d'Œx
Château-d'Olonne
Châteaudouble
Châteaudun
Châteaudouble
Châteaudun
Château-d'Œx
Château-d'Olonne
Châteauguay
Châteauneuf-du-Pape
Châteauneuf-les-Martigues
Châteaurenard
Châteauroux
Châtelain
Châtelet
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
1986
1987
1988
1989
1990
1991
1992

1993
1994
1995
1996
1997
1998
1999







-







DEUG
DFSG
DG
DGSE
DGSI
DHCP
DHEA
D'Holbach
DJ
DM
DNS
DOM
DOM-TOM
DPTH
DREES
2336
2337
2338
2339
2340
2341
2342

2343
2344
2345
2346
2347
2348
2349
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348







+







Dynkin
Dysnomie
Dʳ
Dʳˢ
Dʳᵉ
Dʳᵉˢ
Dᴏꜱꜱᴍᴀɴɴ
D'Holbach
ECS/L'D'Q'
EDF/L'D'Q'
EEPROM/L'D'Q'
EFREI/L'D'Q'
EFS/L'D'Q'
EIB/L'D'Q'
ENA/L'D'Q'
2395
2396
2397
2398
2399
2400
2401

2402
2403
2404
2405
2406
2407
2408
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408







+







Eeklo/L'D'Q'
Eeyou/L'
Effinergie
Égée/L'D'Q'
Éghezée/L'D'Q'
Églantine/L'D'Q'
Égypte/L'D'
Ehlers-Danlos
Ehrenpreis/L'D'Q'
Ehresmann/L'D'Q'
Eibit/||--
Eiffel/L'D'Q'
Eileen/L'D'Q'
Eilenberg/L'D'Q'
Eilleen/L'D'Q'
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3159
3160
3161
3162
3163
3164
3165

3166
3167
3168
3169
3170
3171
3172







-







Goebbels
Goëmar
Goethe
Gogh
Gogol
Golan
Goldbach
Golden_Show
Goldoni
Golgi
Golgotha
Goliath
Gomorrhe
Goncourt
Gondwana
3473
3474
3475
3476
3477
3478
3479

3480
3481
3482
3483
3484
3485
3486
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486







+







Helvétie/L'D'
Hem/L'D'Q'
Hemiksem/L'D'Q'
Hemingway/L'D'Q'
Henan
Hénault
Hendaye/L'D'Q'
Hendrik/L'D'Q'
Hénin-Beaumont/L'D'Q'
Hennebont/L'D'Q'
Hénoch/L'D'Q'
Henri/L'D'Q'
Henriette/L'D'Q'
Henrique/L'D'Q'
Henry
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3499
3500
3501
3502
3503
3504
3505

3506
3507
3508
3509
3510
3511
3512







-







Héricourt/L'D'Q'
Hermann/L'D'Q'
Hermès/L'D'Q'
Hermine/L'D'Q'
Hermione/L'D'Q'
Hermite/L'D'Q'
Hernando/L'D'Q'
Hero_Corp
Hérode/L'D'Q'
Hérodote/L'D'Q'
Hérouville-Saint-Clair/L'D'Q'
Herschel/L'D'Q'
Herselt/L'D'Q'
Herstal
Hertz
3969
3970
3971
3972
3973
3974
3975

3976
3977
3978
3979
3980
3981
3982
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982







+







Joanna
Joannie
Joaquim
Jocelyn
Jocelyne
Joconde
Jocrisse
Jodhpur
Jodie
Jodoigne
Jody
Joe
Joël
Joëlle
Joey
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4240
4241
4242
4243
4244
4245
4246

4247
4248
4249
4250
4251
4252
4253







-







Kjeldahl
Klaus
Klee
Klein
Klimt
Klitzing
Klondike
K'nex
Knokke-Heist
Knossos
Ko/||--
Kobe
Koch
Kodaira
Koekelberg
4312
4313
4314
4315
4316
4317
4318

4319
4320
4321
4322
4323
4324
4325
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325







+







Kuurne
Kyle
Kylian
Kylie
Kyllian
Kyoto
Kyushu
K'nex
L/U.||--
LCD
LED
LGBT
LGBTI
LGBTIQ
LGV
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4420
4421
4422
4423
4424
4425
4426

4427
4428
4429
4430
4431
4432
4433







-







Laval
Lavaur
Laveran
Lavoisier
Lawrence
Laxou
Lazare
Le_Bris
Léa
Leah
Léandre
Léane
Lebbeke
Lebesgue
Lebrun
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4480
4481
4482
4483
4484
4485
4486

4487
4488
4489
4490
4491
4492
4493







-







Léonore
Léontine
Léopold
Léopoldine
Leopoldt
Léopoldville
Leroy
Les_Vigneaux
Lesage
Lesbos
Lesieur
Lesley
Leslie
Lesneven
Lesotho
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4680
4681
4682
4683
4684
4685
4686

4687
4688
4689
4690
4691
4692
4693







-







Louvain-la-Neuve
Louvière
Louviers
Louvre
Love
Lovecraft
Lovelace
Lovely_Rita
Lovćen
Loyola
Loyre
Lozère
Luanda
Lubbeek
Lübeck
4891
4892
4893
4894
4895
4896
4897

4898
4899
4900
4901
4902
4903
4904
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902







+







Mammon
Manach
Managua
Manama
Manaus
Manche
Manchester
Mandalay
Mandchourie
Mandela
Mandelbrot
Mandelieu-la-Napoule
Mandor
Mandy
Manet
5065
5066
5067
5068
5069
5070
5071

5072
5073
5074
5075
5076
5077
5078
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077







+







Maslow
Mason
Massachusetts
Masséna
Massenet
Massimo
Massy
MasterCard
Masutti
Matchstick
Mateo
Mathéo
Matheron
Matheson
Mathias
5212
5213
5214
5215
5216
5217
5218

5219
5220
5221
5222
5223
5224
5225
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225







+







Mérimée
Merkel
Merleau-Ponty
Merlin
Méru
Meryl
Mésie
Mésoamérique
Mésopotamie
Messaline
Messer
Messine
Météo-France
Mettet
Metz
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5317
5318
5319
5320
5321
5322
5323

5324
5325
5326
5327
5328
5329
5330







-







Mithra
Mithridate
Mitnick
Mitry-Mory
Mitsubishi
Mittelhausbergen
Mitterrand
Mix_Bizarre
Miyabi
Mlle/S.
Mme/S.
Mnémosyne
Mo/||--
Moab
Möbius
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540

5541
5542
5543
5544
5545
5546
5547
5520
5521
5522
5523
5524
5525
5526

5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546







-












+







Mᵍʳˢ
Mᵐᵉ
Mᵐᵉˢ
N/U.||--
NASA
NDLR
NDT
N'Djamena
NEC
NF
NIRS
NSA
Nabil
Nabuchodonosor
Nacira
Nadège
Nadia
Nadim
Nadine
Nadir
Nadja
Nagasaki
Nagata
Nagoya
Nagy
Nahum
Naimark
Nairobi
5761
5762
5763
5764
5765
5766
5767

5768
5769
5770
5771
5772
5773
5774
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774







+







Nusselt
Nuuk
Nvidia
Nyarlathotep
Nyons
Nyquist
Nyx
N'Djamena
OCDE/L'D'Q'
OCaml/L'D'Q'
ODF/L'D'Q'
Œdipe/L'D'Q'
OFBiz/D'Q'
OFCE/L'D'Q'
OGM/L'D'Q'
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5822
5823
5824
5825
5826
5827
5828

5829
5830
5831
5832
5833
5834
5835







-







Oignies/L'D'Q'
Oisans/L'
Oise/L'
Oissel/L'D'Q'
Oklahoma/L'D'
Olaf/L'D'Q'
Oldham/L'D'Q'
Olea_Medical
Oleg/L'D'Q'
Olen/L'D'Q'
Oléron/L'D'Q'
Olga/L'D'Q'
Oliver/L'D'Q'
Olivet/L'D'Q'
Olivia/L'D'Q'
6349
6350
6351
6352
6353
6354
6355

6356
6357
6358
6359
6360
6361
6362
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362







+







Pullman
Pune
Purcell
Puteaux
Puurs
Puy-de-Dôme
Puy-en-Velay
Pygmalion
Pyongyang
Pyrénées
Pyrénées-Atlantiques
Pyrénées-Orientales
Pyrrha
Pyrrhus
Pythagore
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6583
6584
6585
6586
6587
6588
6589


6590
6591
6592
6593
6594
6595
6596







-
-







Rivery
Riviera
Rivière-Pilote
Rivière-Salée
Rixensart
Rixheim
Riyad
R'lyeh
R'n'B
Roanne
Rob
Robert
Roberta
Roberte
Roberto
Roberval
6725
6726
6727
6728
6729
6730
6731


6732
6733
6734
6735
6736
6737
6738
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738







+
+







Ruth
Rutherford
Rutishauser
Rwanda
Ryan
Ryanair
Ryxeo
R'lyeh
R'n'B
S/U.||--
SA
SADT
SAP
SARL
SCIC
SCOT
6859
6860
6861
6862
6863
6864
6865
6866
6867


6868
6869
6870
6871
6872
6873
6874
6859
6860
6861
6862
6863
6864
6865


6866
6867
6868
6869
6870
6871
6872
6873
6874







-
-
+
+







Saint-Louis
Saint-Malo
Saint-Mandé
Saint-Marin
Saint-Martin
Saint-Martin-Boulogne
Saint-Martin-Petit
Saint-Martin-d'Hères
Saint-Martin-de-Crau
Saint-Martin-de-Crau
Saint-Martin-d'Hères
Saint-Maur-des-Fossés
Saint-Maurice
Saint-Max
Saint-Maximin-la-Sainte-Baume
Saint-Médard-en-Jalles
Saint-Michel-de-Feins
Saint-Michel-sur-Orge
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7070
7071
7072
7073
7074
7075
7076

7077
7078
7079
7080
7081
7082
7083







-







Schwerin
Schwytz
Schwyz
Scipion
Scott
Scoville
Scrameustache/S.
Scred_TV
Scudéry
Scylla
SeaMonkey
Seagate
Seamus
Sean
Seat
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894


7895
7896
7897
7898
7899
7900
7901
7883
7884
7885
7886
7887
7888
7889


7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900







-
-


+
+







Vachez
Vadim
Vaduz
Vahan
Vaires-sur-Marne
Valais
Valbonne
Val-d'Oise
Val-d'Or
Val-de-Marne
Val-de-Reuil
Val-d'Oise
Val-d'Or
Valence
Valenciennes
Valentigney
Valentin
Valentina
Valentine
Valentinien
8222
8223
8224
8225
8226
8227
8228

8229
8230
8231
8232
8233
8234
8235
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235







+







Wilfred
Wilfrid
Wilfried
Wilhelm
Will
Willa
Willebroek
Willem
William
Williams
Willie
Willy
Wilma
Wilson
Windhoek
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396

8397
8398
8399
8400
8401
8402
8403
8387
8388
8389
8390
8391
8392
8393

8394
8395
8396
8397
8398
8399
8400
8401
8402
8403







-


+







Xavière
Xe/--
Xebia
Xenia
Xénophane
Xénophon
Xerxès
Xi'an
Xining
Xinjiang
Xi'an
Xᵉ/--
YHWH
Yacine
Yaël
Yaëlle
Yahvé
Yahweh
11797
11798
11799
11800
11801
11802
11803

11804
11805
11806
11807
11808
11809
11810
11797
11798
11799
11800
11801
11802
11803
11804
11805
11806
11807
11808
11809
11810
11811







+







annulable/S*
annulaire/S*
annulation/S*
annulative/F*
annulatrice/F*
annulement/S*
annuler/a4p+
annulingus/L'D'Q'
annuus
anoblir/f4p+
anoblissante/F*
anoblissement/S*
anode/S*
anodine/F*
anodique/S*
14297
14298
14299
14300
14301
14302
14303

14304
14305
14306
14307
14308
14309
14310
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312







+







autoclave/S*
autoclave/S*
autoclaviste/S*
autocollante/F*
autocommutateur/S*
autocompenser/a4p+
auto-compenser/a4p+
autocomplétion/S*
autoconcurrence/S*
autoconditionnement/S*
auto-conditionnement/S*
autoconduction/S*
autoconservation/S*
autoconsommation/S*
autoconstruction/S*
14716
14717
14718
14719
14720
14721
14722

14723
14724
14725
14726
14727
14728
14729
14718
14719
14720
14721
14722
14723
14724
14725
14726
14727
14728
14729
14730
14731
14732







+







avionneuse/F*
avions-cargos/D'Q'
avipelvien/S*
aviron/S*
avirulence/S*
avis/L'D'Q'
aviser/a4p+
aviseur/S*
aviso/S*
avitaillement/S*
avitailler/a4p+
avitailleuse/F*
avitaminose/S*
avivage/S*
avivement/S*
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020


15021
15022
15023
15024
15025
15026
15027
15012
15013
15014
15015
15016
15017
15018

15019

15020
15021
15022
15023
15024
15025
15026
15027
15028
15029
15030







-

-


+
+







baguenauder/a0p+
baguenaudier/S.
baguer/a0p+
baguette/S.
baguier/S.
baguiste/S.
bah
baha'ie/F.
bahaïe/F.
baha'isme/S.
bahaïsme/S.
bahamienne/F.
baha'ie/F.
baha'isme/S.
bahreïnie/F.
baht/S.
bahut/S.
bahutage/S.
baie/F.
baignade/S.
baigner/a0p+
16478
16479
16480
16481
16482
16483
16484
16485
16486

16487
16488
16489
16490
16491
16492
16493
16481
16482
16483
16484
16485
16486
16487

16488
16489
16490
16491
16492
16493
16494
16495
16496







-

+







binocle/S.
binoculaire/S.
binodale/S.
binôme/S.
binomiale/W.
binominale/W.
binouze/S.
bin's
bintje/S.
bin's
bio
bio/S.
bioabsorbable/S.
bioaccumulable/S.
bioaccumulation/S.
bioacoustique/S.
bioagresseur/S.
17464
17465
17466
17467
17468
17469
17470

17471
17472
17473
17474
17475
17476
17477
17467
17468
17469
17470
17471
17472
17473
17474
17475
17476
17477
17478
17479
17480
17481







+







boui-boui
bouif/S.
bouillabaisse/S.
bouillage/S.
bouillante/F.
bouillasse/S.
bouille/S.
bouillette/S.
bouilleuse/F.
bouillie/S.
bouillir/iQ
bouillissage/S.
bouilloire/S.
bouillon/S.
bouillonnante/F.
20143
20144
20145
20146
20147
20148
20149

20150
20151
20152
20153
20154
20155
20156
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161







+







caviarder/a0p+
cavicorne/S.
caviste/S.
cavitaire/S.
cavitation/S.
cavité/S.
cd/U.||--
ce
ce
céans
cébette/S.
cébiste/S.
ceci
cécidie/S.
cécidomyie/S.
20480
20481
20482
20483
20484
20485
20486
20487
20488
20489
20490
20491
20492
20493
20494
20485
20486
20487
20488
20489
20490
20491

20492
20493
20494
20495
20496
20497
20498







-







cesse
cesser/a0p+
cessez-le-feu
cessibilité/S.
cessible/S.
cession/S.
cessionnaire/S.
c'est-à-dire
ceste/S.
cestode/S.
césure/S.
cet
cétacé/S.
cétane/S.
céteau/X.
21687
21688
21689
21690
21691
21692
21693
21694
21695
21696
21697
21698
21699
21700
21701
21691
21692
21693
21694
21695
21696
21697

21698
21699
21700
21701
21702
21703
21704







-







chrysostome/S.
chrysothérapie/S.
chrysotile/S.
chtarbée/F.
chthonienne/F.
chti/S.
chtimi/S.
ch'timi/S.
chtouille/S.
chuchotage/S.
chuchotante/F.
chuchotement/S.
chuchoter/a0p+
chuchoterie/S.
chuchoteuse/F.
21712
21713
21714
21715
21716
21717
21718

21719
21720
21721
21722
21723
21724
21725
21715
21716
21717
21718
21719
21720
21721
21722
21723
21724
21725
21726
21727
21728
21729







+







chutney/S.
chyle/S.
chylifère/S.
chyme/S.
chymotrypsine/S.
chyprée/F.
chypriote/S.
ch'timi/S.
ci
ciabatta/S.
ciao
ci-après
ci-avant
cibiche/S.
cibiste/S.
26296
26297
26298
26299
26300
26301
26302


26303
26304
26305
26306
26307
26308
26309
26300
26301
26302
26303
26304
26305
26306
26307
26308
26309
26310
26311
26312
26313
26314
26315







+
+







cytosquelette/S.
cytostatique/S.
cytotoxicité/S.
cytotoxique/S.
czar/S.
czardas
czimbalum/S.
c'
c'est-à-dire
d
d/||--
dB/||--
daba/S.
dacite/S.
dacryoadénite/S.
dacryocystite/S.
26457
26458
26459
26460
26461
26462
26463
26464
26465
26466
26467
26468
26469
26470
26471

26472
26473
26474
26475
26476
26477
26478
26463
26464
26465
26466
26467
26468
26469

26470
26471
26472
26473
26474
26475
26476
26477
26478
26479
26480
26481
26482
26483
26484







-







+







datte/S.
dattier/S.
datura/S.
daube/S.
dauber/a0p+
daubeuse/F.
daubière/S.
d'aucuns
dauphine/F.
dauphinelle/S.
dauphinoise/F.
daurade/S.
davantage
davier/S.
dazibao/S.
de
de
dé/S.
déactiver/a0p+
deal/S.
dealer/S.
dealer/a0p+
déambulateur/S.
27450
27451
27452
27453
27454
27455
27456

27457
27458
27459
27460
27461
27462
27463
27456
27457
27458
27459
27460
27461
27462
27463
27464
27465
27466
27467
27468
27469
27470







+







dégeler/b0p+
dégénération/S.
dégénérative/F.
dégénérée/F.
dégénérer/c0p+
dégénérescence/S.
dégénérescente/F.
dégenrer/a0p+
dégerbage/S.
dégermage/S.
dégermer/a0p+
dégingander/a0p+
dégîter/a0p+
dégivrage/S.
dégivrante/F.
28334
28335
28336
28337
28338
28339
28340

28341
28342
28343
28344
28345
28346
28347
28341
28342
28343
28344
28345
28346
28347
28348
28349
28350
28351
28352
28353
28354
28355







+







dépoitrailler/a0p+
dépolarisation/S.
dépolariser/a0p+
dépolir/f0p+
dépolissage/S.
dépolitisation/S.
dépolitiser/a0p+
dépolluante/F.
dépolluer/a0p+
dépollution/S.
dépolymérisation/S.
dépolymériser/a0p+
déponente/F.
dépontiller/a0p.
dépopulation/S.
28804
28805
28806
28807
28808
28809
28810

28811
28812
28813
28814
28815
28816
28817
28812
28813
28814
28815
28816
28817
28818
28819
28820
28821
28822
28823
28824
28825
28826







+







désensibilisation/S.
désensibiliser/a0p+
désensorceler/d0p+
désentoilage/S.
désentoiler/a0p+
désentortiller/a0p+
désentraver/a0p+
désentrelacer/a4p+
désenvasement/S.
désenvaser/a0p+
désenvelopper/a0p+
désenvenimer/a0p+
désenverguer/a0p+
désenvoûtement/S.
désenvoûter/a0p+
31123
31124
31125
31126
31127
31128
31129



31130
31131
31132
31133
31134
31135
31136
31132
31133
31134
31135
31136
31137
31138
31139
31140
31141
31142
31143
31144
31145
31146
31147
31148







+
+
+







dystrophine/S.
dystrophique/S.
dystrophisation/S.
dysurie/S.
dysurique/S.
dytique/S.
dzêta
d'
d'
d'aucuns
e
eV/U.||--
eau/X*
eau-de-vie/L'D'Q'
eau-forte/L'D'Q'
eaux-de-vie/D'Q'
eaux-fortes/D'Q'
33479
33480
33481
33482
33483
33484
33485
33486
33487
33488
33489
33490
33491
33492
33493
33494
33495
33496
33497
33498
33499
33500
33501
33502
33503
33491
33492
33493
33494
33495
33496
33497

33498
33499
33500
33501
33502
33503
33504
33505
33506

33507
33508
33509
33510
33511
33512
33513







-









-







entraccorder/a6p+
entraccuser/a6p+
entracte/S*
entradmirer/a6p+
entraide/S*
entraider/a6p+
entrailles/D'Q'
entr'aimer/a6p+
entrain/S*
entraînable/S*
entraînante/F*
entraînement/S*
entraîner/a4p+
entraîneuse/F*
entrait/S*
entrante/F*
entrapercevoir/pK
entr'apercevoir/pK
entrave/S*
entraver/a2p+
entravon/S*
entraxe/S*
entre/D'Q'Qj
entre-axes/L'D'Q'
entrebâillement/S*
33527
33528
33529
33530
33531
33532
33533
33534
33535
33536
33537
33538
33539
33540
33541
33537
33538
33539
33540
33541
33542
33543

33544
33545
33546
33547
33548
33549
33550







-







entrées-sorties
entrefaite/S*
entrefaites
entrefer/S*
entrefilet/S*
entre-frapper/a6p+
entregent/S*
entr'égorger/a6p+
entre-haïr/fB
entre-heurter/a6p+
entrejambe/S*
entre-jambe/S*
entrelacement/S*
entrelacer/a4p+
entrelacs/L'D'Q'
33586
33587
33588
33589
33590
33591
33592
33593
33594
33595
33596
33597
33598
33599
33600
33601





33602
33603
33604
33605
33606
33607
33608
33595
33596
33597
33598
33599
33600
33601

33602
33603
33604
33605
33606
33607

33608
33609
33610
33611
33612
33613
33614
33615
33616
33617
33618
33619
33620







-






-

+
+
+
+
+







entre-tuer/a6p+
entrevoie/S*
entre-voie/S*
entrevoir/pF
entrevous/L'D'Q'
entrevoûter/a2p+
entrevue/S*
entr'hiverner
entrisme/S*
entropie/S*
entropion/S*
entropique/S*
entroque/S*
entrouvrir/iC
entr'ouvrir/iC
entrure/S*
entr'aimer/a6p+
entr'apercevoir/pK
entr'égorger/a6p+
entr'hiverner
entr'ouvrir/iC
entuber/a2p+
enturbanner/a4p+
enture/S*
énucléation/S*
énucléer/a2p+
énumérabilité/S*
énumérable/S*
36225
36226
36227
36228
36229
36230
36231
36232
36233
36234
36235

36236

36237
36238
36239
36240
36241
36242
36243
36237
36238
36239
36240
36241
36242
36243

36244
36245

36246
36247
36248
36249
36250
36251
36252
36253
36254
36255







-


-
+

+







fécule/S.
féculence/S.
féculent/S.
féculente/F.
féculer/a0p+
féculerie/S.
féculière/F.
feda'i
fedayin
fedayin/S.
fedda'i
feda'i
feddayin
fedda'i
fédérale/W.
fédéralisation/S.
fédéraliser/a0p+
fédéralisme/S.
fédéraliste/S.
fédération/S.
fédérative/F.
42717
42718
42719
42720
42721
42722
42723

42724
42725
42726
42727
42728
42729
42730
42729
42730
42731
42732
42733
42734
42735
42736
42737
42738
42739
42740
42741
42742
42743







+







hypercentre/S*
hyperchimie/S*
hyperchlorhydrie/S*
hypercholestérolémie/S*
hypercholestérolémique/S*
hyperchrome/S*
hyperchromie/S*
hypercoagulabilité/S*
hypercomplexe/S*
hyperconformisme/S*
hyperconnectée/F*
hypercontinentale/W*
hypercontrôle/S*
hypercorrecte/F*
hypercorrection/S*
42791
42792
42793
42794
42795
42796
42797

42798
42799
42800
42801
42802
42803
42804
42804
42805
42806
42807
42808
42809
42810
42811
42812
42813
42814
42815
42816
42817
42818







+







hypernova/L'D'Q'
hypernovæ/D'Q'
hypéron/S*
hyperonyme/S*
hyperonymie/S*
hyperonymique/S*
hyperostose/S*
hyperoxie/S*
hyperparasite/S*
hyperparathyroïdie/S*
hyperphagie/S*
hyperphagique/S*
hyperphalangie/S*
hyperplan/S*
hyperplasie/S*
44115
44116
44117
44118
44119
44120
44121

44122
44123
44124
44125
44126
44127
44128
44129
44130
44131
44132
44133
44134
44135
44136
44137
44138
44139
44140
44141
44142
44143







+







incrémentale/W*
incrémentalement/D'Q'
incrémentation/S*
incrémenter/a2p+
incrémentielle/F*
increvable/S*
incriminable/S*
incriminante/F*
incrimination/S*
incriminer/a4p+
incristallisable/S*
incritiquable/S*
incrochetable/S*
incroyable/S*
incroyablement/D'Q'
46757
46758
46759
46760
46761
46762
46763
46764
46765
46766
46767
46768
46769
46770



46771
46772
46773
46774
46775
46776
46777
46772
46773
46774
46775
46776
46777
46778



46779
46780
46781
46782
46783
46784
46785
46786
46787
46788
46789
46790
46791
46792







-
-
-




+
+
+







juron/S.
jury/S.
jus
jusant/S.
jusée/S.
jusnaturalisme/S.
jusnaturaliste/S.
jusqu/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jusque
jusque-là
jusques
jusquiame/S.
jusqu'/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jussiée/S.
jussion/S.
justaucorps
juste
juste/S.
juste-à-temps
justement
47156
47157
47158
47159
47160
47161
47162
47163
47164
47165
47166
47167
47168
47169
47170
47171
47172
47173
47174
47175
47176
47177

47178
47179
47180
47181
47182
47183
47184







-







kyrie
kyrielle/S.
kyriologique/S.
kyste/S.
kystique/S.
kyu/S.
kyudo/S.
l
l
l/U.||--
là
la
la
la
labadens
47994
47995
47996
47997
47998
47999
48000

48001
48002
48003
48004
48005
48006
48007
48008
48009
48010
48011
48012
48013
48014
48015
48016
48017
48018
48019
48020
48021
48022







+







leude/S.
leur
leur
leur/S.
leurre/S.
leurrer/a0p+
leurs
leurszigues
lev/S.
levage/S.
levageuse/F.
levain/S.
levalloisien/S.
levalloisienne/F.
lévamisole/S.
48815
48816
48817
48818
48819
48820
48821
48822
48823


48824
48825
48826
48827
48828
48829
48830
48830
48831
48832
48833
48834
48835
48836


48837
48838
48839
48840
48841
48842
48843
48844
48845







-
-
+
+







loricaire/S.
lorientaise/F.
loriot/S.
loriquet/S.
lorraine/F.
lorry/A.
lors
lorsqu/--
lorsque
lorsque
lorsqu'/--
losange/S.
losangée/F.
losangique/S.
loser/S.
lot/S.
loterie/S.
lotier/S.
49156
49157
49158
49159
49160
49161
49162


49163
49164
49165
49166
49167
49168
49169
49171
49172
49173
49174
49175
49176
49177
49178
49179
49180
49181
49182
49183
49184
49185
49186







+
+







lysogénie/S.
lysogénique/S.
lysosomale/W.
lysosome/S.
lysosomiale/W.
lysozyme/S.
lytique/S.
l'
l'
m
m/U.||--
mCE
mR/||--
ma
maar/S.
maboule/F.
49804
49805
49806
49807
49808
49809
49810
49811
49812

49813
49814
49815
49816
49817
49818
49819
49821
49822
49823
49824
49825
49826
49827

49828
49829
49830
49831
49832
49833
49834
49835
49836







-

+







mammite/S.
mammographe/S.
mammographie/S.
mammoplastie/S.
mammouth/S.
mammy/S.
mamours
mam'selle/S.
mamy/S.
mam'selle/S.
mam'zelle/S.
man/S.
mana/S.
manade/S.
manadière/F.
management/S.
manager/S.
50439
50440
50441
50442
50443
50444
50445
50446
50447
50448
50449
50450
50451
50452
50453
50456
50457
50458
50459
50460
50461
50462

50463
50464
50465
50466
50467
50468
50469







-







mastopathie/S.
mastose/S.
mastroquet/S.
masturbation/S.
masturbatoire/S.
masturbatrice/F.
masturber/a0p+
m'as-tu-vu
masure/S.
masurium/S.
mât/S.
matabiche/S.
matabicher/a0p+
matador/S.
mataf/S.
50631
50632
50633
50634
50635
50636
50637

50638
50639
50640
50641
50642
50643
50644
50647
50648
50649
50650
50651
50652
50653
50654
50655
50656
50657
50658
50659
50660
50661







+







mazouter/a0p+
mazurka/S.
mbalax
mbar/||--
me
mea-culpa
méandre/S.
méandreuse/W.
méandriforme/S.
méandrine/S.
méat/S.
méatoscopie/S.
mébibit/S.
mébioctet/S.
mec/S.
50984
50985
50986
50987
50988
50989
50990
50991
50992
50993
50994
50995
50996
50997
50998
51001
51002
51003
51004
51005
51006
51007

51008
51009
51010
51011
51012
51013
51014







-







mémoration/S.
mémorial/X.
mémorialiste/S.
mémorielle/F.
mémorisable/S.
mémorisation/S.
mémoriser/a0p+
m'en
menaçante/F.
menace/S.
menacer/a0p+
ménade/S.
ménage/S.
ménageable/S.
ménagement/S.
51230
51231
51232
51233
51234
51235
51236

51237
51238
51239
51240
51241
51242
51243
51246
51247
51248
51249
51250
51251
51252
51253
51254
51255
51256
51257
51258
51259
51260







+







mésestimer/a0p+
mésiale/W.
mésintelligence/S.
mésinterprétation/S.
mésique/S.
mesmérienne/F.
mesmérisme/S.
mésoaméricaine/F.
mésoblaste/S.
mésoblastique/S.
mésocarpe/S.
mésocentre/S.
mésocéphale/S.
mésocéphale/S.
mésocéphalique/S.
53747
53748
53749
53750
53751
53752
53753



53754
53755
53756
53757
53758
53759
53760
53764
53765
53766
53767
53768
53769
53770
53771
53772
53773
53774
53775
53776
53777
53778
53779
53780







+
+
+







myxœdème/S.
myxomatose/S.
myxome/S.
myxomycète/S.
myxovirus
m²
m³
m'
m'as-tu-vu
m'en
n
na
naan/S.
nabab/S.
nabatéenne/F.
nabi/S.
nabisme/S.
54393
54394
54395
54396
54397
54398
54399


54400
54401
54402
54403
54404
54405
54406
54413
54414
54415
54416
54417
54418
54419
54420
54421
54422
54423
54424
54425
54426
54427
54428







+
+







neurinome/S.
neuroanatomie/S.
neuro-anatomie/S.
neuroanatomique/S.
neuro-anatomique/S.
neuroanatomiste/S.
neuro-anatomiste/S.
neuroatypique/S.
neuro-atypique/S.
neurobiochimie/S.
neurobiochimique/S.
neurobiochimiste/S.
neurobiologie/S.
neurobiologique/S.
neurobiologiste/S.
neuroblaste/S.
54588
54589
54590
54591
54592
54593
54594
54595
54596
54597

54598
54599
54600
54601
54602
54603
54604
54605

54606
54607
54608
54609
54610
54611
54612
54610
54611
54612
54613
54614
54615
54616

54617
54618
54619
54620
54621
54622
54623
54624

54625
54626
54627
54628
54629
54630
54631
54632
54633
54634







-


+





-


+







nicotiniser/a0p+
nicotinisme/S.
nictation/S.
nictitante/F.
nictitation/S.
nid/S.
nidation/S.
nid-d'abeilles
nid-de-pie
nid-de-poule
nid-d'abeilles
nidicole/S.
nidification/S.
nidificatrice/F.
nidifier/a0p.
nidifuge/S.
nids-d'abeilles
nids-de-pie
nids-de-poule
nids-d'abeilles
nièce/S.
niellage/S.
nielle/S.
nieller/a0p+
nielleur/S.
niellure/S.
nier/a0p+
54636
54637
54638
54639
54640
54641
54642
54643
54644
54645
54646
54647
54648
54649
54650
54658
54659
54660
54661
54662
54663
54664

54665
54666
54667
54668
54669
54670
54671







-







nilvariété/S.
nimbe/S.
nimber/a0p+
nimbostratus
nimbo-stratus
nimbus
nîmoise/F.
n'importe
ninas
ninja/S.
ninjato/S.
niobate/S.
niobite/S.
niobium/S.
niôle/S.
54984
54985
54986
54987
54988
54989
54990

54991
54992
54993
54994
54995
54996
54997
55005
55006
55007
55008
55009
55010
55011
55012
55013
55014
55015
55016
55017
55018
55019







+







nosologie/S.
nosologique/S.
nosophobie/S.
nostalgie/S.
nostalgique/S.
nostalgiquement
nostoc/S.
noszigues
notabilité/S.
notable/S.
notable/S.
notablement
notaire/S.
notairesse/S.
notamment
55040
55041
55042
55043
55044
55045
55046

55047

55048
55049
55050
55051
55052
55053
55054
55062
55063
55064
55065
55066
55067
55068
55069

55070
55071
55072
55073
55074
55075
55076
55077







+
-
+







nourrissante/F.
nourrissement/S.
nourrisseur/S.
nourrisson/S.
nourriture/S.
nous
nous
nous-même
nous-même/S=
nous-mêmes
nouure/S.
nouveau-née/F.
nouveauté/S.
nouvel
nouvelle/W.
nouvellement
nouvelleté/S.
55232
55233
55234
55235
55236
55237
55238


55239
55240
55241
55242
55243
55244
55245
55255
55256
55257
55258
55259
55260
55261
55262
55263
55264
55265
55266
55267
55268
55269
55270







+
+







nymphette/S.
nympho/S.
nymphomane/S.
nymphomanie/S.
nymphoplastie/S.
nymphose/S.
nystagmus
n'
n'importe
ô
o
o/||--
oaï/S*
oaristys/L'D'Q'
oasienne/F*
oasis/L'D'Q'
56183
56184
56185
56186
56187
56188
56189

56190
56191
56192
56193
56194
56195
56196
56208
56209
56210
56211
56212
56213
56214
56215
56216
56217
56218
56219
56220
56221
56222







+







orchestration/S*
orchestratrice/F*
orchestre/S*
orchestrer/a2p+
orchidacée/S*
orchidacée/S*
orchidée/S*
orchidologie/S*
orchi-épididymite/S*
orchis/L'D'Q'
orchite/S*
ordalie/S*
ordalique/S*
ordi/S*
ordinaire/S*
57966
57967
57968
57969
57970
57971
57972
57973
57974
57975

57976
57977
57978
57979
57980
57981
57982
57992
57993
57994
57995
57996
57997
57998

57999
58000
58001
58002
58003
58004
58005
58006
58007
58008







-


+







pas-à-pas
pas-à-pas
pascal/Um
pascale/F.
pascalienne/F.
pascaline/S.
pascaux
pas-d'âne
pas-de-géant
pas-de-porte
pas-d'âne
paseo/S.
pashmina/S.
pasionaria/S.
paso-doble
pasquin/S.
pasquinade/S.
passable/S.
59272
59273
59274
59275
59276
59277
59278
59279
59280
59281



59282
59283
59284
59285
59286
59287
59288
59298
59299
59300
59301
59302
59303
59304



59305
59306
59307
59308
59309
59310
59311
59312
59313
59314







-
-
-
+
+
+







pétiole/S.
pétiolée/F.
petiote/F.
petit-beurre
petit-bois
petit-bourgeois
petit-boutiste/S.
petit-déj'
petit-déjeuner
petit-déjeuner/a0p.
petit-déjeuner
petit-déjeuner/a0p.
petit-déj'
petite/F.
petite-bourgeoise
petite-fille
petite-maîtresse
petitement
petite-nièce
petites-bourgeoises
60069
60070
60071
60072
60073
60074
60075
60076
60077
60078
60079
60080
60081
60082
60083
60084
60085



60086
60087
60088
60089
60090
60091
60092
60093
60094
60095
60096
60097
60098
60099
60100
60101

60102
60103


60104
60105
60106
60107
60108
60109
60110
60111
60112
60113
60114
60115
60116

60117
60118
60119
60120
60121
60122
60123
60095
60096
60097
60098
60099
60100
60101

60102
60103
60104
60105
60106
60107
60108


60109
60110
60111
60112
60113
60114
60115
60116
60117
60118
60119

60120
60121
60122
60123
60124
60125
60126
60127


60128
60129
60130
60131
60132
60133
60134
60135
60136
60137
60138
60139
60140
60141
60142
60143
60144
60145
60146
60147
60148
60149
60150







-







-
-
+
+
+








-







+
-
-
+
+













+







pie
pie/S.
pièce/S.
piécette/S.
pied/S.
pied-à-terre
pied-bot
pied-d'alouette
pied-de-biche
pied-de-cheval
pied-de-chèvre
pied-de-loup
pied-de-mouton
pied-de-poule
pied-de-veau
pied-d'oiseau
pied-droit
pied-droit
pied-d'alouette
pied-d'oiseau
piédestal/X.
pied-fort
piedmont/S.
pied-noir
piédouche/S.
pied-plat
piédroit/S.
pieds-bots
pieds-d'alouette
pieds-de-biche
pieds-de-cheval
pieds-de-chèvre
pieds-de-loup
pieds-de-mouton
pieds-de-poule
pieds-de-veau
pieds-droits
pieds-d'oiseau
pieds-droits
pieds-d'alouette
pieds-d'oiseau
pieds-forts
pieds-noirs
pieds-plats
piéfort/S.
piège/S.
piégeable/S.
piégeage/S.
piéger/c0p+
piégeuse/F.
piégeuse/W.
pie-grièche
piémont/S.
piémontaise/F.
pier/S.
piercing/S.
piéride/S.
pierrade/S.
pierrage/S.
pierraille/S.
pierre/S.
pierrer/a0p+
60292
60293
60294
60295
60296
60297
60298
60299
60300
60301
60302
60303
60304
60305
60306
60307

60308
60309
60310
60311
60312
60313
60314
60319
60320
60321
60322
60323
60324
60325

60326
60327
60328
60329
60330
60331
60332
60333
60334
60335
60336
60337
60338
60339
60340
60341







-








+







pinière/S.
pinne/S.
pinnipède/S.
pinnothère/S.
pinnule/S.
pinocytose/S.
pinot/S.
pin's
pinson/S.
pintade/S.
pintadeau/X.
pintadine/S.
pinte/S.
pinter/a0p+
pin-up
pinyin
pin's
piochage/S.
pioche/S.
piochement/S.
piocher/a0p+
piocheuse/F.
pioger/a0p.
piolet/S.
61513
61514
61515
61516
61517
61518
61519

61520
61521
61522
61523
61524
61525
61526
61540
61541
61542
61543
61544
61545
61546
61547
61548
61549
61550
61551
61552
61553
61554







+







pompeuse/F.
pompeuse/W.
pompeusement
pompière/F.
pompiérisme/S.
pompile/S.
pompiste/S.
pom-pom
pompon/S.
pomponner/a0p+
ponant/S.
ponantaise/F.
ponçage/S.
ponce/S.
ponce/S.
61568
61569
61570
61571
61572
61573
61574
61575
61576


61577
61578
61579
61580
61581
61582
61583
61596
61597
61598
61599
61600
61601
61602


61603
61604
61605
61606
61607
61608
61609
61610
61611







-
-
+
+







pontifiante/F.
pontificale/W.
pontificalement
pontificat/S.
pontifier/a0p.
pontil/S.
pontiller/a0p+
pont-l'évêque
pont-levis
pont-levis
pont-l'évêque
ponton/S.
pontonnier/S.
pont-promenade
ponts-levis
ponts-promenades
pontuseau/X.
pool/S.
62641
62642
62643
62644
62645
62646
62647

62648
62649
62650
62651
62652
62653
62654
62669
62670
62671
62672
62673
62674
62675
62676
62677
62678
62679
62680
62681
62682
62683







+







président-directeur
présidente/F.
présidente-directrice
présidentes-directrices
présidentiable/S.
présidentialisation/S.
présidentialisme/S.
présidentialiste/S.
présidentielle/F.
présidents-directeurs
présider/a0p+
présidial/X.
présidiale/W.
présidialité/S.
présidium/S.
62804
62805
62806
62807
62808
62809
62810
62811
62812
62813
62814
62815
62816
62817
62818
62833
62834
62835
62836
62837
62838
62839

62840
62841
62842
62843
62844
62845
62846







-







priapisme/S.
prie-Dieu
prier/a0p+
prière/S.
prieure/F.
prieuré/S.
prieuse/S.
prim'Holstein
prima-donna/I.
primage/S.
primaire/S.
primairement
primale/W.
primalité/S.
primarisation/S.
62850
62851
62852
62853
62854
62855
62856

62857
62858
62859
62860
62861
62862
62863
62878
62879
62880
62881
62882
62883
62884
62885
62886
62887
62888
62889
62890
62891
62892







+







primo-délinquante/F.
primogéniture/S.
primo-infection/S.
primordiale/W.
primordialement
primordialité/S.
primulacée/S.
prim'Holstein
prince-de-galles
prince-de-galles
princeps
princeps
princesse/F.
princière/F.
princièrement
63543
63544
63545
63546
63547
63548
63549
63550
63551
63552
63553
63554
63555
63556
63557



63558
63559
63560
63561
63562
63563
63564
63572
63573
63574
63575
63576
63577
63578


63579
63580

63581
63582
63583
63584
63585
63586
63587
63588
63589
63590
63591
63592
63593







-
-


-



+
+
+







pruche/S.
prude/S.
prudemment
prudence/S.
prudente/F.
prudentielle/F.
pruderie/S.
prud'homale/W.
prud'homie/S.
prudhommale/W.
prudhomme/S.
prud'homme/S.
prudhommerie/S.
prudhommesque/S.
prudhommie/S.
prud'homale/W.
prud'homie/S.
prud'homme/S.
pruine/S.
prune
prune/S.
pruneau/X.
prunelaie/S.
prunelée/S.
prunelle/S.
63780
63781
63782
63783
63784
63785
63786
63787
63788
63789
63790
63791
63792
63793
63794
63809
63810
63811
63812
63813
63814
63815

63816
63817
63818
63819
63820
63821
63822







-







ptérosaure/S.
ptérosaurien/S.
ptérygion/S.
ptérygoïde/S.
ptérygoïdienne/F.
ptérygote/S.
ptérygotus
p'tite/F.
ptolémaïque/S.
ptoléméenne/F.
ptomaïne/S.
ptôse/S.
ptosis
ptôsis
ptyaline/S.
63867
63868
63869
63870
63871
63872
63873
63874
63875


63876
63877
63878
63879
63880
63881
63882
63895
63896
63897
63898
63899
63900
63901


63902
63903
63904
63905
63906
63907
63908
63909
63910







-
-
+
+







puis
puisage/S.
puisard/S.
puisatier/S.
puisement/S.
puiser/a0p+
puisette/S.
puisqu/--
puisque
puisque
puisqu'/--
puissamment
puissance/S.
puissante/F.
puits
pulicaire/S.
pulicaire/S.
pull/S.
64024
64025
64026
64027
64028
64029
64030

64031
64032
64033
64034
64035
64036
64037
64052
64053
64054
64055
64056
64057
64058
64059
64060
64061
64062
64063
64064
64065
64066







+







pycnogonide/S.
pycnomètre/S.
pycnose/S.
pycnotique/S.
pyélite/S.
pyélonéphrite/S.
pygargue/S.
pygmalionisme/S.
pygmée/S.
pygméenne/F.
pyjama/S.
pylône/S.
pylore/S.
pylorique/S.
pyocyanique/S.
64141
64142
64143
64144
64145
64146
64147

64148
64149
64150
64151
64152
64153
64154
64155
64156
64157
64158
64159
64160
64161
64162
64163
64170
64171
64172
64173
64174
64175
64176
64177
64178
64179
64180
64181
64182
64183
64184
64185

64186
64187
64188
64189
64190
64191
64192







+








-







pythique/S.
pythique/S.
python/S.
pythonisse/S.
pyurie/S.
pyxide/S.
pz/||--
p'tite/F.
q
qPCR
qanat/S.
qat/S.
qatarie/F.
qatarienne/F.
qbit/S.
qi
qu/--
qua
quad/S.
quadra
quadra/S.
quadragénaire/S.
quadragésimale/W.
quadragésime/S.
64411
64412
64413
64414
64415
64416
64417
64418
64419
64420
64421
64422
64423
64424

64425
64426
64427
64428
64429
64430
64431
64432
64433
64434
64435
64436
64437
64440
64441
64442
64443
64444
64445
64446

64447
64448
64449
64450
64451
64452
64453
64454
64455
64456
64457
64458

64459
64460
64461
64462
64463
64464
64465







-






+





-







québécoise/F.
quebracho/S.
quechua/S.
queen/S.
queer/S.
quelconque/S.
quelle/F.
quelqu/--
quelque
quelque/S.
quelque/S.
quelquefois
quelques-unes
quelques-uns
quelqu'/--
quelqu'un
quelqu'une
quémande/S.
quémander/a0p+
quémandeuse/F.
qu'en-dira-t-on
quenelle/S.
quenotte/S.
quenouille/S.
quenouillée/S.
quenouillette/S.
quéquette/S.
quérable/S.
64459
64460
64461
64462
64463
64464
64465
64466
64467
64468
64469
64470
64471
64472
64473

64474
64475
64476
64477
64478
64479

64480
64481
64482
64483
64484
64485
64486
64487
64488
64489
64490
64491
64492
64493

64494
64495
64496
64497
64498
64499

64500
64501
64502
64503
64504
64505
64506
64507
64508
64509
64510
64511
64512
64513
64514







-






-
+






+







quêteuse/F.
quetsche/S.
quetschier/S.
quetter/a0p+
quetzal/S.
quetzales
queue/S.
queue-d'aronde
queue-de-cheval
queue-de-cochon
queue-de-morue
queue-de-pie
queue-de-rat
queue-de-renard
queues-d'aronde
queue-d'aronde
queues-de-cheval
queues-de-cochon
queues-de-morue
queues-de-pie
queues-de-rat
queues-de-renard
queues-d'aronde
queuillère/S.
queursage/S.
queusot/S.
queutarde/F.
queuter/a0p+
queux
qui
64573
64574
64575
64576
64577
64578
64579
64580
64581


64582
64583
64584
64585
64586
64587
64588
64589
64590
64591
64592


64593
64594
64595
64596
64597
64598
64599
64601
64602
64603
64604
64605
64606
64607


64608
64609
64610
64611
64612
64613
64614
64615
64616
64617
64618
64619
64620
64621
64622
64623
64624
64625
64626
64627
64628
64629







-
-
+
+











+
+







quiz
quizalofop/S.
quo
quoailler
quoc-ngu
quôc-ngu
quoi
quoiqu/--
quoique
quoique
quoiqu'/--
quolibet/S.
quorum/S.
quota/S.
quote-part
quotes-parts
quotidienne/F.
quotidiennement
quotidienneté/S.
quotient/S.
quotité/S.
quotter/a0p.
qu'/--
qu'en-dira-t-on
qwerty
r
ra
rab/S.
rabâchage/S.
rabâchement/S.
rabâcher/a0p+
65317
65318
65319
65320
65321
65322
65323

65324
65325
65326
65327
65328
65329
65330
65347
65348
65349
65350
65351
65352
65353
65354
65355
65356
65357
65358
65359
65360
65361







+







ratichon/S.
raticide/S.
raticide/S.
ratière/F.
ratification/S.
ratifier/a0p+
ratinage/S.
ratine/S.
ratiner/a0p+
rating/S.
ratio/S.
ratiocinante/F.
ratiocination/S.
ratiociner/a0p.
ratiocineuse/F.
65636
65637
65638
65639
65640
65641
65642

65643
65644
65645
65646
65647
65648
65649
65667
65668
65669
65670
65671
65672
65673
65674
65675
65676
65677
65678
65679
65680
65681







+







recéder/c0p+
recel/S.
recèlement/S.
receler/b0p+
receleuse/F.
récemment
récence/S.
recensable/S.
recensement/S.
recenser/a0p+
recenseuse/F.
recension/S.
récente/F.
recentrage/S.
recentrement/S.
65984
65985
65986
65987
65988
65989
65990

65991
65992
65993
65994
65995
65996
65997
66016
66017
66018
66019
66020
66021
66022
66023
66024
66025
66026
66027
66028
66029
66030







+







récuser/a0p+
recyclabilité/S.
recyclable/S.
recyclage/S.
recycler/a0p+
recyclerie/S.
recycleuse/F.
rédac-chef/S.
rédaction/S.
rédactionnel/S.
rédactionnelle/F.
rédactrice/F.
redan/S.
reddition/S.
redéclarer/a0p+
67291
67292
67293
67294
67295
67296
67297

67298
67299
67300
67301
67302
67303
67304
67324
67325
67326
67327
67328
67329
67330
67331
67332
67333
67334
67335
67336
67337
67338







+







résistible/S.
résistive/F.
résistivité/S.
résistor/S.
resituer/a0p+
resocialisation/S.
resocialiser/a0p+
resolidifier/a0p+
résolubilité/S.
résoluble/S.
résolument
résolution/S.
résolutive/F.
résolutoire/S.
résolvance/S.
68784
68785
68786
68787
68788
68789
68790
68791
68792
68793
68794
68795
68796
68797
68798
68818
68819
68820
68821
68822
68823
68824

68825
68826
68827
68828
68829
68830
68831







-







rythmicité/S.
rythmique/S.
rythmiquement
s
s/U.||--
sa
saanen/S.
s'abader
sabayon/S.
sabbat/S.
sabbathienne/F.
sabbatique/S.
sabéenne/F.
sabéisme/S.
sabelle/S.
68826
68827
68828
68829
68830
68831
68832
68833
68834
68835
68836
68837
68838
68839
68840
68859
68860
68861
68862
68863
68864
68865

68866
68867
68868
68869
68870
68871
68872







-







sabouler/a0p+
sabra/S.
sabrage/S.
sabre/S.
sabrer/a0p+
sabretache/S.
sabreuse/F.
s'abriller
saburrale/W.
saburre/S.
sac/S.
sacagner/a0p+
saccade/S.
saccader/a0p+
saccage/S.
68938
68939
68940
68941
68942
68943
68944
68945
68946
68947
68948
68949
68950
68951
68952
68970
68971
68972
68973
68974
68975
68976

68977
68978
68979
68980
68981
68982
68983







-







sagard/S.
sage/S.
sage-femme
sagement
sages-femmes
sagesse/S.
sagette/S.
s'agir/fZ
sagittaire/S.
sagittale/W.
sagittée/F.
sagou/S.
sagouin/S.
sagoutier/S.
sagum/S.
73717
73718
73719
73720
73721
73722
73723

73724
73725
73726
73727
73728
73729
73730
73748
73749
73750
73751
73752
73753
73754
73755
73756
73757
73758
73759
73760
73761
73762







+







surharmonique/S.
surhaussement/S.
surhausser/a0p+
surhomme/S.
surhumaine/F.
surhumainement
surhumanité/S.
surhydratation/S.
suricate/S.
surie/F.
surikate/S.
surimi/S.
surimposer/a0p+
surimposition/S.
surimpression/S.
73832
73833
73834
73835
73836
73837
73838

73839
73840
73841
73842
73843
73844
73845
73864
73865
73866
73867
73868
73869
73870
73871
73872
73873
73874
73875
73876
73877
73878







+







surplomber/a0p+
surplus
surpoids
surpopulation/S.
surprenamment
surprenante/F.
surprendre/tF
surprescription/S.
surpresseur/S.
surpression/S.
surprime/S.
surprise/S.
surprise-partie
surprises-parties
surproduction/S.
74236
74237
74238
74239
74240
74241
74242




74243
74244
74245
74246
74247
74248
74249
74269
74270
74271
74272
74273
74274
74275
74276
74277
74278
74279
74280
74281
74282
74283
74284
74285
74286







+
+
+
+







systémicienne/F.
systémique/S.
systole/S.
systolique/S.
systyle/S.
systyle/S.
syzygie/S.
s'
s'abader
s'abriller
s'agir/fZ
t
t/||--
ta
tabac
tabac/S.
tabacologie/S.
tabacologue/S.
75109
75110
75111
75112
75113
75114
75115
75116
75117
75118
75119
75120
75121
75122
75123
75146
75147
75148
75149
75150
75151
75152

75153
75154
75155
75156
75157
75158
75159







-







télex
télexer/a0p+
télexiste/S.
télicité/S.
tell/S.
telle/F.
telle/F.
t'elle/S=
tellement
tellière/S.
tellière/S.
telline/S.
tellurate/S.
tellure/S.
tellureuse/W.
75168
75169
75170
75171
75172
75173
75174
75175
75176
75177
75178
75179
75180
75181
75182
75204
75205
75206
75207
75208
75209
75210

75211
75212
75213
75214
75215
75216
75217







-







temporellement
temporisation/S.
temporisatrice/F.
temporiser/a0p+
temporo-pariétale/F.
temps
temps-réel
t'en
tenable/S.
tenace/S.
tenacement
ténacité/S.
tenaille/S.
tenaillement/S.
tenailler/a0p+
75953
75954
75955
75956
75957
75958
75959
75960
75961
75962
75963
75964
75965
75966
75967
75988
75989
75990
75991
75992
75993
75994

75995
75996
75997
75998
75999
76000
76001







-







tignasse/S.
tigrer/a0p+
tigresse/F.
tigridie/S.
tigron/S.
tiguidou/S.
tiki/S.
t'il/S=
tilapia/S.
tilbury/S.
tilde/S.
tiliacée/S.
tillac/S.
tillage/S.
tillandsie/S.
76237
76238
76239
76240
76241
76242
76243
76244
76245
76246
76247
76248
76249
76250
76251
76271
76272
76273
76274
76275
76276
76277

76278
76279
76280
76281
76282
76283
76284







-







tomodensitomètre/S.
tomodensitométrie/S.
tomodensitométrique/S.
tomographe/S.
tomographie/S.
tomographique/S.
tom-pouce
t'on
ton
ton/S.
tonale/F.
tonalité/S.
tondage/S.
tondaille/S.
tondaison/S.
76919
76920
76921
76922
76923
76924
76925

76926
76927
76928
76929
76930
76931
76932
76952
76953
76954
76955
76956
76957
76958
76959
76960
76961
76962
76963
76964
76965
76966







+







transistorisation/S.
transistoriser/a0p+
transit/S.
transitaire/S.
transiter/a0p+
transition/S.
transitionnelle/F.
transitionner/a0p+
transitive/F.
transitivement
transitivité/S.
transitoire/S.
transitoirement
translater/a0p+
translatif/S.
77564
77565
77566
77567
77568
77569
77570

77571
77572
77573
77574
77575
77576
77577
77598
77599
77600
77601
77602
77603
77604
77605
77606
77607
77608
77609
77610
77611
77612







+







triterpénique/S.
trithérapie/S.
triticale/S.
tritiée/F.
tritium/S.
triton/S.
triturable/S.
triturage/S.
triturateur/S.
trituration/S.
triturer/a0p+
triumvir/S.
triumvirale/W.
triumvirat/S.
trivalence/S.
77624
77625
77626
77627
77628
77629
77630

77631
77632
77633
77634
77635
77636
77637
77659
77660
77661
77662
77663
77664
77665
77666
77667
77668
77669
77670
77671
77672
77673







+







trois-quarts
trois-quatre
trois-six
trôler/a0p.
troll/S.
trolle/S.
troller/a0p.
trollesque/S.
trolley/S.
trolleybus
trombe/S.
trombidion/S.
trombidiose/S.
trombine/S.
trombinoscope/S.
77857
77858
77859
77860
77861
77862
77863
77864
77865


77866
77867
77868
77869
77870
77871
77872
77893
77894
77895
77896
77897
77898
77899


77900
77901
77902
77903
77904
77905
77906
77907
77908







-
-
+
+







tubuline/S.
tubulopathie/S.
tubulure/S.
tudesque/S.
tudieu
tue-chien
tue-diable
tue-l'amour
tue-loup
tue-loup
tue-l'amour
tue-mouche
tue-mouches
tuer/a0p+
tuerie/S.
tue-tête
tueuse/F.
tuf/S.
78112
78113
78114
78115
78116
78117
78118





78119
78120
78121
78122
78123
78124
78125
78148
78149
78150
78151
78152
78153
78154
78155
78156
78157
78158
78159
78160
78161
78162
78163
78164
78165
78166







+
+
+
+
+







tyrosinémie/S.
tyrothricine/S.
tyrrhénienne/F.
tzar/S.
tzarine/S.
tzatziki/S.
tzigane/S.
t'
t'elle/S=
t'en
t'il/S=
t'on
u
u/||--
ua/||--
ubac/S*
ubérale/S*
uberisation/S*
ubique/S*
79510
79511
79512
79513
79514
79515
79516

79517
79518
79519
79520
79521
79522
79523
79551
79552
79553
79554
79555
79556
79557
79558
79559
79560
79561
79562
79563
79564
79565







+







vidéographique/S.
vidéoludique/S.
vidéophone/S.
vidéophonie/S.
vidéoprojecteur/S.
vidéoprojection/S.
vidéoprotection/S.
vidéo-protection/S.
vide-ordures
vidéosphère/S.
vidéosurveillance/S.
vidéotex
vidéothécaire/S.
vidéothèque/S.
vidéotransmission/S.
79552
79553
79554
79555
79556
79557
79558

79559
79560
79561
79562
79563
79564
79565
79594
79595
79596
79597
79598
79599
79600
79601
79602
79603
79604
79605
79606
79607
79608







+







vielleur/S.
vielleuse/W.
vielliste/S.
viennoise/F.
viennoiserie/S.
vierge/S.
vierge/S.
viétique/S.
vietnamienne/F.
vieux-lille
vif-argent
vif-argent
vigésimale/W.
vigie/S.
vigilamment
80101
80102
80103
80104
80105
80106
80107

80108
80109
80110
80111
80112
80113
80114
80115
80116
80117
80118
80119
80120
80121
80122

80123

80124
80125
80126
80127
80128
80129
80130
80144
80145
80146
80147
80148
80149
80150
80151
80152
80153
80154
80155
80156
80157
80158
80159
80160
80161
80162
80163
80164
80165
80166
80167

80168
80169
80170
80171
80172
80173
80174
80175







+















+
-
+







vorace/S.
voracement
voracité/S.
vortex
vorticelle/S.
vos
vosgienne/F.
voszigues
votante/F.
votation/S.
vote/S.
voter/a0p+
voteuse/F.
votive/F.
votre
vôtre/S.
vouer/a0p+
vouge/S.
vouivre/S.
vouloir/S.
vouloir/pB
vous
vous
vous-même
vous-même/S=
vous-mêmes
vousseau/X.
voussoiement/S.
voussoir/S.
voussoyer/a0p+
voussure/S.
voûtain/S.
voûte/S.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-moderne.aff from [f4f2285dda] to [f70c9e0621].

1
2
3
4
5

6
7

8
9
10
11
12
13
14
1
2
3
4

5
6

7
8
9
10
11
12
13
14




-
+

-
+







# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “MODERNE” v6.3
# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “MODERNE” v7.0
# par Olivier R. -- licence MPL 2.0
# Généré le 01-07-2018 à 20:45
# Généré le 14-09-2018 à 10:59
# Pour améliorer le dictionnaire, allez sur http://www.dicollecte.org/



SET UTF-8

WORDCHARS -’'1234567890.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-moderne.dic from [28a2fdee50] to [60b64caffa].

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







79556
79600
&
1er/--
1ers/--
1re/--
1res/--
1ʳᵉ/--
1ʳᵉˢ/--
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195



1196
1197
1198
1199
1200
1201
1202
1186
1187
1188
1189
1190
1191
1192



1193
1194
1195
1196
1197
1198
1199
1200
1201
1202







-
-
-
+
+
+







Bradley
Bradley
Brafman
Brahim
Brahma
Brahmapoutre
Brahms
Braine-l'Alleud
Braine-le-Château
Braine-le-Comte
Braine-le-Château
Braine-le-Comte
Braine-l'Alleud
Brakel
Brand
Brandon
Brasov
Brassac
Brasschaat
Brassica
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1498
1499
1500
1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511







-







Casanova
Casey
Casimir
Casimir-Perier
Caspienne
Cassandra
Cassandre
Casseurs_Flowters
Cassidy
Cassini
Cassiopée
Castafolte
Castanet-Tolosan
Castelnaudary
Castelnau-le-Lez
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642




1643
1644
1645
1646
1647
1648
1649
1631
1632
1633
1634
1635
1636
1637




1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648







-
-
-
-
+
+
+
+







Charybde
Chase
Chasles
Chastel-Arnaud
Château-Gontier
Château-Thierry
Châteaubriant
Château-d'Œx
Château-d'Olonne
Châteaudouble
Châteaudun
Châteaudouble
Châteaudun
Château-d'Œx
Château-d'Olonne
Châteauguay
Châteauneuf-du-Pape
Châteauneuf-les-Martigues
Châteaurenard
Châteauroux
Châtelain
Châtelet
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
1986
1987
1988
1989
1990
1991
1992

1993
1994
1995
1996
1997
1998
1999







-







DEUG
DFSG
DG
DGSE
DGSI
DHCP
DHEA
D'Holbach
DJ
DM
DNS
DOM
DOM-TOM
DPTH
DREES
2336
2337
2338
2339
2340
2341
2342

2343
2344
2345
2346
2347
2348
2349
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348







+







Dynkin
Dysnomie
Dʳ
Dʳˢ
Dʳᵉ
Dʳᵉˢ
Dᴏꜱꜱᴍᴀɴɴ
D'Holbach
ECS/L'D'Q'
EDF/L'D'Q'
EEPROM/L'D'Q'
EFREI/L'D'Q'
EFS/L'D'Q'
EIB/L'D'Q'
ENA/L'D'Q'
2395
2396
2397
2398
2399
2400
2401

2402
2403
2404
2405
2406
2407
2408
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408







+







Eeklo/L'D'Q'
Eeyou/L'
Effinergie
Égée/L'D'Q'
Éghezée/L'D'Q'
Églantine/L'D'Q'
Égypte/L'D'
Ehlers-Danlos
Ehrenpreis/L'D'Q'
Ehresmann/L'D'Q'
Eibit/||--
Eiffel/L'D'Q'
Eileen/L'D'Q'
Eilenberg/L'D'Q'
Eilleen/L'D'Q'
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3159
3160
3161
3162
3163
3164
3165

3166
3167
3168
3169
3170
3171
3172







-







Goebbels
Goëmar
Goethe
Gogh
Gogol
Golan
Goldbach
Golden_Show
Goldoni
Golgi
Golgotha
Goliath
Gomorrhe
Goncourt
Gondwana
3472
3473
3474
3475
3476
3477
3478

3479
3480
3481
3482
3483
3484
3485
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485







+







Helvétie/L'D'
Hem/L'D'Q'
Hemiksem/L'D'Q'
Hemingway/L'D'Q'
Henan
Hénault
Hendaye/L'D'Q'
Hendrik/L'D'Q'
Hénin-Beaumont/L'D'Q'
Hennebont/L'D'Q'
Hénoch/L'D'Q'
Henri/L'D'Q'
Henriette/L'D'Q'
Henrique/L'D'Q'
Henry
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3498
3499
3500
3501
3502
3503
3504

3505
3506
3507
3508
3509
3510
3511







-







Héricourt/L'D'Q'
Hermann/L'D'Q'
Hermès/L'D'Q'
Hermine/L'D'Q'
Hermione/L'D'Q'
Hermite/L'D'Q'
Hernando/L'D'Q'
Hero_Corp
Hérode/L'D'Q'
Hérodote/L'D'Q'
Hérouville-Saint-Clair/L'D'Q'
Herschel/L'D'Q'
Herselt/L'D'Q'
Herstal
Hertz
3968
3969
3970
3971
3972
3973
3974

3975
3976
3977
3978
3979
3980
3981
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981







+







Joanna
Joannie
Joaquim
Jocelyn
Jocelyne
Joconde
Jocrisse
Jodhpur
Jodie
Jodoigne
Jody
Joe
Joël
Joëlle
Joey
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4239
4240
4241
4242
4243
4244
4245

4246
4247
4248
4249
4250
4251
4252







-







Kjeldahl
Klaus
Klee
Klein
Klimt
Klitzing
Klondike
K'nex
Knokke-Heist
Knossos
Ko/||--
Kobe
Koch
Kodaira
Koekelberg
4311
4312
4313
4314
4315
4316
4317

4318
4319
4320
4321
4322
4323
4324
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324







+







Kuurne
Kyle
Kylian
Kylie
Kyllian
Kyoto
Kyushu
K'nex
L/U.||--
LCD
LED
LGBT
LGBTI
LGBTIQ
LGV
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4419
4420
4421
4422
4423
4424
4425

4426
4427
4428
4429
4430
4431
4432







-







Laval
Lavaur
Laveran
Lavoisier
Lawrence
Laxou
Lazare
Le_Bris
Léa
Leah
Léandre
Léane
Lebbeke
Lebesgue
Lebrun
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4479
4480
4481
4482
4483
4484
4485

4486
4487
4488
4489
4490
4491
4492







-







Léonore
Léontine
Léopold
Léopoldine
Leopoldt
Léopoldville
Leroy
Les_Vigneaux
Lesage
Lesbos
Lesieur
Lesley
Leslie
Lesneven
Lesotho
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4679
4680
4681
4682
4683
4684
4685

4686
4687
4688
4689
4690
4691
4692







-







Louvain-la-Neuve
Louvière
Louviers
Louvre
Love
Lovecraft
Lovelace
Lovely_Rita
Lovćen
Loyola
Loyre
Lozère
Luanda
Lubbeek
Lübeck
4890
4891
4892
4893
4894
4895
4896

4897
4898
4899
4900
4901
4902
4903
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901







+







Mammon
Manach
Managua
Manama
Manaus
Manche
Manchester
Mandalay
Mandchourie
Mandela
Mandelbrot
Mandelieu-la-Napoule
Mandor
Mandy
Manet
5064
5065
5066
5067
5068
5069
5070

5071
5072
5073
5074
5075
5076
5077
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076







+







Maslow
Mason
Massachusetts
Masséna
Massenet
Massimo
Massy
MasterCard
Masutti
Matchstick
Mateo
Mathéo
Matheron
Matheson
Mathias
5211
5212
5213
5214
5215
5216
5217

5218
5219
5220
5221
5222
5223
5224
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224







+







Mérimée
Merkel
Merleau-Ponty
Merlin
Méru
Meryl
Mésie
Mésoamérique
Mésopotamie
Messaline
Messer
Messine
Météo-France
Mettet
Metz
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5316
5317
5318
5319
5320
5321
5322

5323
5324
5325
5326
5327
5328
5329







-







Mithra
Mithridate
Mitnick
Mitry-Mory
Mitsubishi
Mittelhausbergen
Mitterrand
Mix_Bizarre
Miyabi
Mlle/S.
Mme/S.
Mnémosyne
Mo/||--
Moab
Möbius
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539

5540
5541
5542
5543
5544
5545
5546
5519
5520
5521
5522
5523
5524
5525

5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545







-












+







Mᵍʳˢ
Mᵐᵉ
Mᵐᵉˢ
N/U.||--
NASA
NDLR
NDT
N'Djamena
NEC
NF
NIRS
NSA
Nabil
Nabuchodonosor
Nacira
Nadège
Nadia
Nadim
Nadine
Nadir
Nadja
Nagasaki
Nagata
Nagoya
Nagy
Nahum
Naimark
Nairobi
5760
5761
5762
5763
5764
5765
5766

5767
5768
5769
5770
5771
5772
5773
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773







+







Nusselt
Nuuk
Nvidia
Nyarlathotep
Nyons
Nyquist
Nyx
N'Djamena
OCDE/L'D'Q'
OCaml/L'D'Q'
ODF/L'D'Q'
Œdipe/L'D'Q'
OFBiz/D'Q'
OFCE/L'D'Q'
OGM/L'D'Q'
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5821
5822
5823
5824
5825
5826
5827

5828
5829
5830
5831
5832
5833
5834







-







Oignies/L'D'Q'
Oisans/L'
Oise/L'
Oissel/L'D'Q'
Oklahoma/L'D'
Olaf/L'D'Q'
Oldham/L'D'Q'
Olea_Medical
Oleg/L'D'Q'
Olen/L'D'Q'
Oléron/L'D'Q'
Olga/L'D'Q'
Oliver/L'D'Q'
Olivet/L'D'Q'
Olivia/L'D'Q'
6348
6349
6350
6351
6352
6353
6354

6355
6356
6357
6358
6359
6360
6361
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361







+







Pullman
Pune
Purcell
Puteaux
Puurs
Puy-de-Dôme
Puy-en-Velay
Pygmalion
Pyongyang
Pyrénées
Pyrénées-Atlantiques
Pyrénées-Orientales
Pyrrha
Pyrrhus
Pythagore
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6582
6583
6584
6585
6586
6587
6588


6589
6590
6591
6592
6593
6594
6595







-
-







Rivery
Riviera
Rivière-Pilote
Rivière-Salée
Rixensart
Rixheim
Riyad
R'lyeh
R'n'B
Roanne
Rob
Robert
Roberta
Roberte
Roberto
Roberval
6724
6725
6726
6727
6728
6729
6730


6731
6732
6733
6734
6735
6736
6737
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737







+
+







Ruth
Rutherford
Rutishauser
Rwanda
Ryan
Ryanair
Ryxeo
R'lyeh
R'n'B
S/U.||--
SA
SADT
SAP
SARL
SCIC
SCOT
6858
6859
6860
6861
6862
6863
6864
6865
6866


6867
6868
6869
6870
6871
6872
6873
6858
6859
6860
6861
6862
6863
6864


6865
6866
6867
6868
6869
6870
6871
6872
6873







-
-
+
+







Saint-Louis
Saint-Malo
Saint-Mandé
Saint-Marin
Saint-Martin
Saint-Martin-Boulogne
Saint-Martin-Petit
Saint-Martin-d'Hères
Saint-Martin-de-Crau
Saint-Martin-de-Crau
Saint-Martin-d'Hères
Saint-Maur-des-Fossés
Saint-Maurice
Saint-Max
Saint-Maximin-la-Sainte-Baume
Saint-Médard-en-Jalles
Saint-Michel-de-Feins
Saint-Michel-sur-Orge
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7069
7070
7071
7072
7073
7074
7075

7076
7077
7078
7079
7080
7081
7082







-







Schwerin
Schwytz
Schwyz
Scipion
Scott
Scoville
Scrameustache/S.
Scred_TV
Scudéry
Scylla
SeaMonkey
Seagate
Seamus
Sean
Seat
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893


7894
7895
7896
7897
7898
7899
7900
7882
7883
7884
7885
7886
7887
7888


7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899







-
-


+
+







Vachez
Vadim
Vaduz
Vahan
Vaires-sur-Marne
Valais
Valbonne
Val-d'Oise
Val-d'Or
Val-de-Marne
Val-de-Reuil
Val-d'Oise
Val-d'Or
Valence
Valenciennes
Valentigney
Valentin
Valentina
Valentine
Valentinien
8218
8219
8220
8221
8222
8223
8224

8225
8226
8227
8228
8229
8230
8231
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231







+







Wilfred
Wilfrid
Wilfried
Wilhelm
Will
Willa
Willebroek
Willem
William
Williams
Willie
Willy
Wilma
Wilson
Windhoek
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392

8393
8394
8395
8396
8397
8398
8399
8383
8384
8385
8386
8387
8388
8389

8390
8391
8392
8393
8394
8395
8396
8397
8398
8399







-


+







Xavière
Xe/--
Xebia
Xenia
Xénophane
Xénophon
Xerxès
Xi'an
Xining
Xinjiang
Xi'an
Xᵉ/--
YHWH
Yacine
Yaël
Yaëlle
Yahvé
Yahweh
11748
11749
11750
11751
11752
11753
11754

11755
11756
11757
11758
11759
11760
11761
11748
11749
11750
11751
11752
11753
11754
11755
11756
11757
11758
11759
11760
11761
11762







+







annulable/S*
annulaire/S*
annulation/S*
annulative/F*
annulatrice/F*
annulement/S*
annuler/a4p+
annulingus/L'D'Q'
annuus
anoblir/f4p+
anoblissante/F*
anoblissement/S*
anode/S*
anodine/F*
anodique/S*
14190
14191
14192
14193
14194
14195
14196

14197
14198
14199
14200
14201
14202
14203
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205







+







autoclave/S*
autoclave/S*
autoclaviste/S*
autocollante/F*
autocommutateur/S*
autocompenser/a4p+
auto-compenser/a4p+
autocomplétion/S*
autoconcurrence/S*
autoconditionnement/S*
auto-conditionnement/S*
autoconduction/S*
autoconservation/S*
autoconsommation/S*
autoconstruction/S*
14590
14591
14592
14593
14594
14595
14596

14597
14598
14599
14600
14601
14602
14603
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
14604
14605
14606







+







avionneuse/F*
avions-cargos/D'Q'
avipelvien/S*
aviron/S*
avirulence/S*
avis/L'D'Q'
aviser/a4p+
aviseur/S*
aviso/S*
avitaillement/S*
avitailler/a4p+
avitailleuse/F*
avitaminose/S*
avivage/S*
avivement/S*
16324
16325
16326
16327
16328
16329
16330
16331
16332

16333
16334
16335
16336
16337
16338
16339
16327
16328
16329
16330
16331
16332
16333

16334
16335
16336
16337
16338
16339
16340
16341
16342







-

+







binocle/S.
binoculaire/S.
binodale/S.
binôme/S.
binomiale/W.
binominale/W.
binouze/S.
bin's
bintje/S.
bin's
bio
bio/S.
bioabsorbable/S.
bioaccumulable/S.
bioaccumulation/S.
bioacoustique/S.
bioagresseur/S.
17290
17291
17292
17293
17294
17295
17296

17297
17298
17299
17300
17301
17302
17303
17293
17294
17295
17296
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307







+







boui-boui
bouif/S.
bouillabaisse/S.
bouillage/S.
bouillante/F.
bouillasse/S.
bouille/S.
bouillette/S.
bouilleuse/F.
bouillie/S.
bouillir/iQ
bouillissage/S.
bouilloire/S.
bouillon/S.
bouillonnante/F.
19935
19936
19937
19938
19939
19940
19941

19942
19943
19944
19945
19946
19947
19948
19939
19940
19941
19942
19943
19944
19945
19946
19947
19948
19949
19950
19951
19952
19953







+







caviarder/a0p+
cavicorne/S.
caviste/S.
cavitaire/S.
cavitation/S.
cavité/S.
cd/U.||--
ce
ce
céans
cébette/S.
cébiste/S.
ceci
cécidie/S.
cécidomyie/S.
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20280
20281
20282
20283
20284
20275
20276
20277
20278
20279
20280
20281

20282
20283
20284
20285
20286
20287
20288







-







cesse
cesser/a0p+
cessez-le-feu
cessibilité/S.
cessible/S.
cession/S.
cessionnaire/S.
c'est-à-dire
ceste/S.
cestode/S.
césure/S.
cet
cétacé/S.
cétane/S.
céteau/X.
25993
25994
25995
25996
25997
25998
25999


26000
26001
26002
26003
26004
26005
26006
25997
25998
25999
26000
26001
26002
26003
26004
26005
26006
26007
26008
26009
26010
26011
26012







+
+







cytosolique/S.
cytosquelette/S.
cytostatique/S.
cytotoxicité/S.
cytotoxique/S.
czardas
czimbalum/S.
c'
c'est-à-dire
d
d/||--
dB/||--
daba/S.
dacite/S.
dacryoadénite/S.
dacryocystite/S.
26153
26154
26155
26156
26157
26158
26159
26160
26161
26162
26163
26164
26165
26166
26167

26168
26169
26170
26171
26172
26173
26174
26159
26160
26161
26162
26163
26164
26165

26166
26167
26168
26169
26170
26171
26172
26173
26174
26175
26176
26177
26178
26179
26180







-







+







datte/S.
dattier/S.
datura/S.
daube/S.
dauber/a0p+
daubeuse/F.
daubière/S.
d'aucuns
dauphine/F.
dauphinelle/S.
dauphinoise/F.
daurade/S.
davantage
davier/S.
dazibao/S.
de
de
dé/S.
déactiver/a0p+
deal/S.
dealer/S.
dealer/a0p+
déambulateur/S.
27142
27143
27144
27145
27146
27147
27148

27149
27150
27151
27152
27153
27154
27155
27148
27149
27150
27151
27152
27153
27154
27155
27156
27157
27158
27159
27160
27161
27162







+







dégeler/b0p+
dégénération/S.
dégénérative/F.
dégénérée/F.
dégénérer/c0p+
dégénérescence/S.
dégénérescente/F.
dégenrer/a0p+
dégerbage/S.
dégermage/S.
dégermer/a0p+
dégingander/a0p+
dégîter/a0p+
dégivrage/S.
dégivrante/F.
28023
28024
28025
28026
28027
28028
28029

28030
28031
28032
28033
28034
28035
28036
28030
28031
28032
28033
28034
28035
28036
28037
28038
28039
28040
28041
28042
28043
28044







+







dépoitrailler/a0p+
dépolarisation/S.
dépolariser/a0p+
dépolir/f0p+
dépolissage/S.
dépolitisation/S.
dépolitiser/a0p+
dépolluante/F.
dépolluer/a0p+
dépollution/S.
dépolymérisation/S.
dépolymériser/a0p+
déponente/F.
dépontiller/a0p.
dépopulation/S.
28493
28494
28495
28496
28497
28498
28499

28500
28501
28502
28503
28504
28505
28506
28501
28502
28503
28504
28505
28506
28507
28508
28509
28510
28511
28512
28513
28514
28515







+







désensibilisation/S.
désensibiliser/a0p+
désensorceler/d0p+
désentoilage/S.
désentoiler/a0p+
désentortiller/a0p+
désentraver/a0p+
désentrelacer/a4p+
désenvasement/S.
désenvaser/a0p+
désenvelopper/a0p+
désenvenimer/a0p+
désenverguer/a0p+
désenvoûtement/S.
désenvoûter/a0p+
30797
30798
30799
30800
30801
30802
30803



30804
30805
30806
30807
30808
30809
30810
30806
30807
30808
30809
30810
30811
30812
30813
30814
30815
30816
30817
30818
30819
30820
30821
30822







+
+
+







dystrophine/S.
dystrophique/S.
dystrophisation/S.
dysurie/S.
dysurique/S.
dytique/S.
dzêta
d'
d'
d'aucuns
e
eV/U.||--
eau/X*
eau-de-vie/L'D'Q'
eau-forte/L'D'Q'
eaux-de-vie/D'Q'
eaux-fortes/D'Q'
33128
33129
33130
33131
33132
33133
33134
33135
33136
33137
33138
33139
33140
33141
33142
33140
33141
33142
33143
33144
33145
33146

33147
33148
33149
33150
33151
33152
33153







-







entraccorder/a6p+
entraccuser/a6p+
entracte/S*
entradmirer/a6p+
entraide/S*
entraider/a6p+
entrailles/D'Q'
entr'aimer/a6p+
entrain/S*
entraînable/S*
entraînante/F*
entraînement/S*
entraîner/a4p+
entraîneuse/F*
entrait/S*
33174
33175
33176
33177
33178
33179
33180
33181
33182
33183
33184
33185
33186
33187
33188
33185
33186
33187
33188
33189
33190
33191

33192
33193
33194
33195
33196
33197
33198







-







entrées-sorties
entrefaite/S*
entrefaites
entrefer/S*
entrefilet/S*
entre-frapper/a6p+
entregent/S*
entr'égorger/a6p+
entre-haïr/fB
entre-heurter/a6p+
entrejambe/S*
entrelacement/S*
entrelacer/a4p+
entrelacs/L'D'Q'
entrelarder/a2p+
33231
33232
33233
33234
33235
33236
33237
33238
33239
33240
33241
33242
33243
33244
33245



33246
33247
33248
33249
33250
33251
33252
33241
33242
33243
33244
33245
33246
33247

33248
33249
33250
33251
33252
33253
33254
33255
33256
33257
33258
33259
33260
33261
33262
33263
33264







-







+
+
+







entretoiser/a2p+
entre-tuer/a6p+
entrevoie/S*
entrevoir/pF
entrevous/L'D'Q'
entrevoûter/a2p+
entrevue/S*
entr'hiverner
entrisme/S*
entropie/S*
entropion/S*
entropique/S*
entroque/S*
entrouvrir/iC
entrure/S*
entr'aimer/a6p+
entr'égorger/a6p+
entr'hiverner
entuber/a2p+
enturbanner/a4p+
enture/S*
énucléation/S*
énucléer/a2p+
énumérabilité/S*
énumérable/S*
42224
42225
42226
42227
42228
42229
42230

42231
42232
42233
42234
42235
42236
42237
42236
42237
42238
42239
42240
42241
42242
42243
42244
42245
42246
42247
42248
42249
42250







+







hypercentre/S*
hyperchimie/S*
hyperchlorhydrie/S*
hypercholestérolémie/S*
hypercholestérolémique/S*
hyperchrome/S*
hyperchromie/S*
hypercoagulabilité/S*
hypercomplexe/S*
hyperconformisme/S*
hyperconnectée/F*
hypercontinentale/W*
hypercontrôle/S*
hypercorrecte/F*
hypercorrection/S*
42296
42297
42298
42299
42300
42301
42302

42303
42304
42305
42306
42307
42308
42309
42309
42310
42311
42312
42313
42314
42315
42316
42317
42318
42319
42320
42321
42322
42323







+







hypernova/L'D'Q'
hypernovæ/D'Q'
hypéron/S*
hyperonyme/S*
hyperonymie/S*
hyperonymique/S*
hyperostose/S*
hyperoxie/S*
hyperparasite/S*
hyperparathyroïdie/S*
hyperphagie/S*
hyperphagique/S*
hyperphalangie/S*
hyperplan/S*
hyperplasie/S*
43614
43615
43616
43617
43618
43619
43620

43621
43622
43623
43624
43625
43626
43627
43628
43629
43630
43631
43632
43633
43634
43635
43636
43637
43638
43639
43640
43641
43642







+







incrémentale/W*
incrémentalement/D'Q'
incrémentation/S*
incrémenter/a2p+
incrémentielle/F*
increvable/S*
incriminable/S*
incriminante/F*
incrimination/S*
incriminer/a4p+
incristallisable/S*
incritiquable/S*
incrochetable/S*
incroyable/S*
incroyablement/D'Q'
46229
46230
46231
46232
46233
46234
46235
46236
46237
46238
46239
46240
46241
46242



46243
46244
46245
46246
46247
46248
46249
46244
46245
46246
46247
46248
46249
46250



46251
46252
46253
46254
46255
46256
46257
46258
46259
46260
46261
46262
46263
46264







-
-
-




+
+
+







juron/S.
jury/S.
jus
jusant/S.
jusée/S.
jusnaturalisme/S.
jusnaturaliste/S.
jusqu/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jusque
jusque-là
jusques
jusquiame/S.
jusqu'/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jussiée/S.
jussion/S.
justaucorps
juste
juste/S.
juste-à-temps
justement
46594
46595
46596
46597
46598
46599
46600
46601
46602
46603
46604
46605
46606
46607
46608
46609
46610
46611
46612
46613
46614
46615

46616
46617
46618
46619
46620
46621
46622







-







kyrie
kyrielle/S.
kyriologique/S.
kyste/S.
kystique/S.
kyu/S.
kyudo/S.
l
l
l/U.||--
là
la
la
la
labadens
47419
47420
47421
47422
47423
47424
47425

47426
47427
47428
47429
47430
47431
47432
47433
47434
47435
47436
47437
47438
47439
47440
47441
47442
47443
47444
47445
47446
47447







+







leude/S.
leur
leur
leur/S.
leurre/S.
leurrer/a0p+
leurs
leurszigues
lev/S.
levage/S.
levageuse/F.
levain/S.
levalloisien/S.
levalloisienne/F.
lévamisole/S.
48229
48230
48231
48232
48233
48234
48235
48236
48237


48238
48239
48240
48241
48242
48243
48244
48244
48245
48246
48247
48248
48249
48250


48251
48252
48253
48254
48255
48256
48257
48258
48259







-
-
+
+







loricaire/S.
lorientaise/F.
loriot/S.
loriquet/S.
lorraine/F.
lorry/A.
lors
lorsqu/--
lorsque
lorsque
lorsqu'/--
losange/S.
losangée/F.
losangique/S.
loser/S.
lot/S.
loterie/S.
lotier/S.
48567
48568
48569
48570
48571
48572
48573


48574
48575
48576
48577
48578
48579
48580
48582
48583
48584
48585
48586
48587
48588
48589
48590
48591
48592
48593
48594
48595
48596
48597







+
+







lysogénie/S.
lysogénique/S.
lysosomale/W.
lysosome/S.
lysosomiale/W.
lysozyme/S.
lytique/S.
l'
l'
m
m/U.||--
mCE
mR/||--
ma
maar/S.
maboule/F.
49821
49822
49823
49824
49825
49826
49827
49828
49829
49830
49831
49832
49833
49834
49835
49838
49839
49840
49841
49842
49843
49844

49845
49846
49847
49848
49849
49850
49851







-







mastopathie/S.
mastose/S.
mastroquet/S.
masturbation/S.
masturbatoire/S.
masturbatrice/F.
masturber/a0p+
m'as-tu-vu
masure/S.
masurium/S.
mât/S.
matabiche/S.
matabicher/a0p+
matador/S.
mataf/S.
50013
50014
50015
50016
50017
50018
50019

50020
50021
50022
50023
50024
50025
50026
50029
50030
50031
50032
50033
50034
50035
50036
50037
50038
50039
50040
50041
50042
50043







+







mazouter/a0p+
mazurka/S.
mbalax
mbar/||--
me
mea-culpa
méandre/S.
méandreuse/W.
méandriforme/S.
méandrine/S.
méat/S.
méatoscopie/S.
mébibit/S.
mébioctet/S.
mec/S.
50353
50354
50355
50356
50357
50358
50359
50360
50361
50362
50363
50364
50365
50366
50367
50370
50371
50372
50373
50374
50375
50376

50377
50378
50379
50380
50381
50382
50383







-







mémoration/S.
mémorial/X.
mémorialiste/S.
mémorielle/F.
mémorisable/S.
mémorisation/S.
mémoriser/a0p+
m'en
menaçante/F.
menace/S.
menacer/a0p+
ménade/S.
ménage/S.
ménageable/S.
ménagement/S.
50597
50598
50599
50600
50601
50602
50603

50604
50605
50606
50607
50608
50609
50610
50613
50614
50615
50616
50617
50618
50619
50620
50621
50622
50623
50624
50625
50626
50627







+







mésestimer/a0p+
mésiale/W.
mésintelligence/S.
mésinterprétation/S.
mésique/S.
mesmérienne/F.
mesmérisme/S.
mésoaméricaine/F.
mésoblaste/S.
mésoblastique/S.
mésocarpe/S.
mésocentre/S.
mésocéphale/S.
mésocéphale/S.
mésocéphalique/S.
53077
53078
53079
53080
53081
53082
53083



53084
53085
53086
53087
53088
53089
53090
53094
53095
53096
53097
53098
53099
53100
53101
53102
53103
53104
53105
53106
53107
53108
53109
53110







+
+
+







myxœdème/S.
myxomatose/S.
myxome/S.
myxomycète/S.
myxovirus
m²
m³
m'
m'as-tu-vu
m'en
n
na
naan/S.
nabab/S.
nabatéenne/F.
nabi/S.
nabisme/S.
53664
53665
53666
53667
53668
53669
53670

53671
53672
53673
53674
53675
53676
53677
53684
53685
53686
53687
53688
53689
53690
53691
53692
53693
53694
53695
53696
53697
53698







+







neuraminique/S.
neurasthénie/S.
neurasthénique/S.
neurinome/S.
neuroanatomie/S.
neuroanatomique/S.
neuroanatomiste/S.
neuroatypique/S.
neurobiochimie/S.
neurobiochimique/S.
neurobiochimiste/S.
neurobiologie/S.
neurobiologique/S.
neurobiologiste/S.
neuroblaste/S.
53852
53853
53854
53855
53856
53857
53858
53859
53860
53861

53862
53863
53864
53865
53866
53867
53868
53869

53870
53871
53872
53873
53874
53875
53876
53873
53874
53875
53876
53877
53878
53879

53880
53881
53882
53883
53884
53885
53886
53887

53888
53889
53890
53891
53892
53893
53894
53895
53896
53897







-


+





-


+







nicotiniser/a0p+
nicotinisme/S.
nictation/S.
nictitante/F.
nictitation/S.
nid/S.
nidation/S.
nid-d'abeilles
nid-de-pie
nid-de-poule
nid-d'abeilles
nidicole/S.
nidification/S.
nidificatrice/F.
nidifier/a0p.
nidifuge/S.
nids-d'abeilles
nids-de-pie
nids-de-poule
nids-d'abeilles
nièce/S.
niellage/S.
nielle/S.
nieller/a0p+
nielleur/S.
niellure/S.
nier/a0p+
53899
53900
53901
53902
53903
53904
53905
53906
53907
53908
53909
53910
53911
53912
53913
53920
53921
53922
53923
53924
53925
53926

53927
53928
53929
53930
53931
53932
53933







-







nilpotente/F.
nilvariété/S.
nimbe/S.
nimber/a0p+
nimbostratus
nimbus
nîmoise/F.
n'importe
ninas
ninja/S.
ninjato/S.
niobate/S.
niobite/S.
niobium/S.
niôle/S.
54245
54246
54247
54248
54249
54250
54251

54252
54253
54254
54255
54256
54257
54258
54265
54266
54267
54268
54269
54270
54271
54272
54273
54274
54275
54276
54277
54278
54279







+







nosologie/S.
nosologique/S.
nosophobie/S.
nostalgie/S.
nostalgique/S.
nostalgiquement
nostoc/S.
noszigues
notabilité/S.
notable/S.
notable/S.
notablement
notaire/S.
notairesse/S.
notamment
54301
54302
54303
54304
54305
54306
54307

54308

54309
54310
54311
54312
54313
54314
54315
54322
54323
54324
54325
54326
54327
54328
54329

54330
54331
54332
54333
54334
54335
54336
54337







+
-
+







nourrissante/F.
nourrissement/S.
nourrisseur/S.
nourrisson/S.
nourriture/S.
nous
nous
nous-même
nous-même/S=
nous-mêmes
nouure/S.
nouveau-née/F.
nouveauté/S.
nouvel
nouvelle/W.
nouvellement
nouvelleté/S.
54492
54493
54494
54495
54496
54497
54498


54499
54500
54501
54502
54503
54504
54505
54514
54515
54516
54517
54518
54519
54520
54521
54522
54523
54524
54525
54526
54527
54528
54529







+
+







nymphette/S.
nympho/S.
nymphomane/S.
nymphomanie/S.
nymphoplastie/S.
nymphose/S.
nystagmus
n'
n'importe
ô
o
o/||--
oaï/S*
oaristys/L'D'Q'
oasienne/F*
oasis/L'D'Q'
55425
55426
55427
55428
55429
55430
55431

55432
55433
55434
55435
55436
55437
55438
55449
55450
55451
55452
55453
55454
55455
55456
55457
55458
55459
55460
55461
55462
55463







+







orchestration/S*
orchestratrice/F*
orchestre/S*
orchestrer/a2p+
orchidacée/S*
orchidacée/S*
orchidée/S*
orchidologie/S*
orchi-épididymite/S*
orchis/L'D'Q'
orchite/S*
ordalie/S*
ordalique/S*
ordi/S*
ordinaire/S*
57180
57181
57182
57183
57184
57185
57186
57187
57188
57189

57190
57191
57192
57193
57194
57195
57196
57205
57206
57207
57208
57209
57210
57211

57212
57213
57214
57215
57216
57217
57218
57219
57220
57221







-


+







pas-à-pas
pas-à-pas
pascal/Um
pascale/F.
pascalienne/F.
pascaline/S.
pascaux
pas-d'âne
pas-de-géant
pas-de-porte
pas-d'âne
paseo/S.
pashmina/S.
pasionaria/S.
paso-doble
pasquin/S.
pasquinade/S.
passable/S.
58452
58453
58454
58455
58456
58457
58458
58459
58460
58461



58462
58463
58464
58465
58466
58467
58468
58477
58478
58479
58480
58481
58482
58483



58484
58485
58486
58487
58488
58489
58490
58491
58492
58493







-
-
-
+
+
+







pétiole/S.
pétiolée/F.
petiote/F.
petit-beurre
petit-bois
petit-bourgeois
petit-boutiste/S.
petit-déj'
petit-déjeuner
petit-déjeuner/a0p.
petit-déjeuner
petit-déjeuner/a0p.
petit-déj'
petite/F.
petite-bourgeoise
petite-fille
petite-maîtresse
petitement
petite-nièce
petites-bourgeoises
59237
59238
59239
59240
59241
59242
59243
59244
59245
59246
59247
59248
59249
59250
59251

59252
59253
59254
59255
59256
59257
59258
59259
59260
59261
59262
59263
59264
59265
59266

59267
59268
59269
59270
59271
59272
59273
59274
59275
59276
59277
59278
59279

59280
59281
59282
59283
59284
59285
59286
59262
59263
59264
59265
59266
59267
59268

59269
59270
59271
59272
59273
59274
59275
59276
59277
59278
59279
59280
59281
59282
59283

59284
59285
59286
59287
59288
59289
59290
59291
59292
59293
59294
59295
59296
59297
59298
59299
59300
59301
59302
59303
59304
59305
59306
59307
59308
59309
59310
59311
59312







-







+







-







+













+







pie
pie/S.
pièce/S.
piécette/S.
pied/S.
pied-à-terre
pied-bot
pied-d'alouette
pied-de-biche
pied-de-cheval
pied-de-chèvre
pied-de-loup
pied-de-mouton
pied-de-poule
pied-de-veau
pied-d'alouette
pied-d'oiseau
piédestal/X.
pied-noir
piédouche/S.
pied-plat
piédroit/S.
pieds-bots
pieds-d'alouette
pieds-de-biche
pieds-de-cheval
pieds-de-chèvre
pieds-de-loup
pieds-de-mouton
pieds-de-poule
pieds-de-veau
pieds-d'alouette
pieds-d'oiseau
pieds-noirs
pieds-plats
piéfort/S.
piège/S.
piégeable/S.
piégeage/S.
piéger/c0p+
piégeuse/F.
piégeuse/W.
pie-grièche
piémont/S.
piémontaise/F.
pier/S.
piercing/S.
piéride/S.
pierrade/S.
pierrage/S.
pierraille/S.
pierre/S.
pierrer/a0p+
59449
59450
59451
59452
59453
59454
59455
59456
59457
59458
59459
59460
59461
59462
59463
59464

59465
59466
59467
59468
59469
59470
59471
59475
59476
59477
59478
59479
59480
59481

59482
59483
59484
59485
59486
59487
59488
59489
59490
59491
59492
59493
59494
59495
59496
59497







-








+







pinière/S.
pinne/S.
pinnipède/S.
pinnothère/S.
pinnule/S.
pinocytose/S.
pinot/S.
pin's
pinson/S.
pintade/S.
pintadeau/X.
pintadine/S.
pinte/S.
pinter/a0p+
pin-up
pinyin
pin's
piochage/S.
pioche/S.
piochement/S.
piocher/a0p+
piocheuse/F.
pioger/a0p.
piolet/S.
60651
60652
60653
60654
60655
60656
60657

60658
60659
60660
60661
60662
60663
60664
60677
60678
60679
60680
60681
60682
60683
60684
60685
60686
60687
60688
60689
60690
60691







+







pompeuse/F.
pompeuse/W.
pompeusement
pompière/F.
pompiérisme/S.
pompile/S.
pompiste/S.
pom-pom
pompon/S.
pomponner/a0p+
ponant/S.
ponantaise/F.
ponçage/S.
ponce/S.
ponce/S.
60706
60707
60708
60709
60710
60711
60712
60713
60714


60715
60716
60717
60718
60719
60720
60721
60733
60734
60735
60736
60737
60738
60739


60740
60741
60742
60743
60744
60745
60746
60747
60748







-
-
+
+







pontifiante/F.
pontificale/W.
pontificalement
pontificat/S.
pontifier/a0p.
pontil/S.
pontiller/a0p+
pont-l'évêque
pont-levis
pont-levis
pont-l'évêque
ponton/S.
pontonnier/S.
pont-promenade
ponts-levis
ponts-promenades
pontuseau/X.
pool/S.
61718
61719
61720
61721
61722
61723
61724

61725
61726
61727
61728
61729
61730
61731
61745
61746
61747
61748
61749
61750
61751
61752
61753
61754
61755
61756
61757
61758
61759







+







président-directeur
présidente/F.
présidente-directrice
présidentes-directrices
présidentiable/S.
présidentialisation/S.
présidentialisme/S.
présidentialiste/S.
présidentielle/F.
présidents-directeurs
présider/a0p+
présidial/X.
présidiale/W.
présidialité/S.
présidium/S.
61877
61878
61879
61880
61881
61882
61883
61884
61885
61886
61887
61888
61889
61890
61891
61905
61906
61907
61908
61909
61910
61911

61912
61913
61914
61915
61916
61917
61918







-







priapisme/S.
prie-Dieu
prier/a0p+
prière/S.
prieure/F.
prieuré/S.
prieuse/S.
prim'Holstein
prima-donna/I.
primage/S.
primaire/S.
primairement
primale/W.
primalité/S.
primarisation/S.
61923
61924
61925
61926
61927
61928
61929

61930
61931
61932
61933
61934
61935
61936
61950
61951
61952
61953
61954
61955
61956
61957
61958
61959
61960
61961
61962
61963
61964







+







primo-délinquante/F.
primogéniture/S.
primo-infection/S.
primordiale/W.
primordialement
primordialité/S.
primulacée/S.
prim'Holstein
prince-de-galles
prince-de-galles
princeps
princeps
princesse/F.
princière/F.
princièrement
62826
62827
62828
62829
62830
62831
62832
62833
62834
62835
62836
62837
62838
62839
62840
62854
62855
62856
62857
62858
62859
62860

62861
62862
62863
62864
62865
62866
62867







-







ptérosaure/S.
ptérosaurien/S.
ptérygion/S.
ptérygoïde/S.
ptérygoïdienne/F.
ptérygote/S.
ptérygotus
p'tite/F.
ptolémaïque/S.
ptoléméenne/F.
ptomaïne/S.
ptôse/S.
ptosis
ptôsis
ptyaline/S.
62913
62914
62915
62916
62917
62918
62919
62920
62921


62922
62923
62924
62925
62926
62927
62928
62940
62941
62942
62943
62944
62945
62946


62947
62948
62949
62950
62951
62952
62953
62954
62955







-
-
+
+







puis
puisage/S.
puisard/S.
puisatier/S.
puisement/S.
puiser/a0p+
puisette/S.
puisqu/--
puisque
puisque
puisqu'/--
puissamment
puissance/S.
puissante/F.
puits
pulicaire/S.
pulicaire/S.
pull/S.
63069
63070
63071
63072
63073
63074
63075

63076
63077
63078
63079
63080
63081
63082
63096
63097
63098
63099
63100
63101
63102
63103
63104
63105
63106
63107
63108
63109
63110







+







pycnogonide/S.
pycnomètre/S.
pycnose/S.
pycnotique/S.
pyélite/S.
pyélonéphrite/S.
pygargue/S.
pygmalionisme/S.
pygmée/S.
pygméenne/F.
pyjama/S.
pylône/S.
pylore/S.
pylorique/S.
pyocyanique/S.
63184
63185
63186
63187
63188
63189
63190

63191
63192
63193
63194
63195
63196
63197
63198
63199
63200
63201
63202
63203
63204
63205
63212
63213
63214
63215
63216
63217
63218
63219
63220
63221
63222
63223
63224
63225
63226

63227
63228
63229
63230
63231
63232
63233







+







-







pythique/S.
pythique/S.
python/S.
pythonisse/S.
pyurie/S.
pyxide/S.
pz/||--
p'tite/F.
q
qPCR
qanat/S.
qatarie/F.
qatarienne/F.
qbit/S.
qi
qu/--
qua
quad/S.
quadra
quadra/S.
quadragénaire/S.
quadragésimale/W.
quadragésime/S.
63452
63453
63454
63455
63456
63457
63458
63459
63460
63461
63462
63463
63464
63465

63466
63467
63468
63469
63470
63471
63472
63473
63474
63475
63476
63477
63478
63480
63481
63482
63483
63484
63485
63486

63487
63488
63489
63490
63491
63492
63493
63494
63495
63496
63497
63498

63499
63500
63501
63502
63503
63504
63505







-






+





-







québécoise/F.
quebracho/S.
quechua/S.
queen/S.
queer/S.
quelconque/S.
quelle/F.
quelqu/--
quelque
quelque/S.
quelque/S.
quelquefois
quelques-unes
quelques-uns
quelqu'/--
quelqu'un
quelqu'une
quémande/S.
quémander/a0p+
quémandeuse/F.
qu'en-dira-t-on
quenelle/S.
quenotte/S.
quenouille/S.
quenouillée/S.
quenouillette/S.
quéquette/S.
quérable/S.
63499
63500
63501
63502
63503
63504
63505
63506
63507
63508
63509
63510
63511
63512
63513

63514
63515
63516
63517
63518
63519

63520
63521
63522
63523
63524
63525
63526
63526
63527
63528
63529
63530
63531
63532

63533
63534
63535
63536
63537
63538

63539
63540
63541
63542
63543
63544
63545
63546
63547
63548
63549
63550
63551
63552
63553







-






-
+






+







quêteuse/F.
quetsche/S.
quetschier/S.
quetter/a0p+
quetzal/S.
quetzales
queue/S.
queue-d'aronde
queue-de-cheval
queue-de-cochon
queue-de-morue
queue-de-pie
queue-de-rat
queue-de-renard
queues-d'aronde
queue-d'aronde
queues-de-cheval
queues-de-cochon
queues-de-morue
queues-de-pie
queues-de-rat
queues-de-renard
queues-d'aronde
queuillère/S.
queursage/S.
queusot/S.
queutarde/F.
queuter/a0p+
queux
qui
63611
63612
63613
63614
63615
63616
63617
63618
63619


63620
63621
63622
63623
63624
63625
63626
63627
63628
63629
63630


63631
63632
63633
63634
63635
63636
63637
63638
63639
63640
63641
63642
63643
63644


63645
63646
63647
63648
63649
63650
63651
63652
63653
63654
63655
63656
63657
63658
63659
63660
63661
63662
63663
63664
63665
63666







-
-
+
+











+
+







qui-vive
quiz
quizalofop/S.
quo
quoailler
quoc-ngu
quoi
quoiqu/--
quoique
quoique
quoiqu'/--
quolibet/S.
quorum/S.
quota/S.
quote-part
quotes-parts
quotidienne/F.
quotidiennement
quotidienneté/S.
quotient/S.
quotité/S.
quotter/a0p.
qu'/--
qu'en-dira-t-on
qwerty
r
ra
rab/S.
rabâchage/S.
rabâchement/S.
rabâcher/a0p+
64340
64341
64342
64343
64344
64345
64346

64347
64348
64349
64350
64351
64352
64353
64369
64370
64371
64372
64373
64374
64375
64376
64377
64378
64379
64380
64381
64382
64383







+







ratichon/S.
raticide/S.
raticide/S.
ratière/F.
ratification/S.
ratifier/a0p+
ratinage/S.
ratine/S.
ratiner/a0p+
rating/S.
ratio/S.
ratiocinante/F.
ratiocination/S.
ratiociner/a0p.
ratiocineuse/F.
64656
64657
64658
64659
64660
64661
64662

64663
64664
64665
64666
64667
64668
64669
64686
64687
64688
64689
64690
64691
64692
64693
64694
64695
64696
64697
64698
64699
64700







+







recéder/c0p+
recel/S.
recèlement/S.
receler/b0p+
receleuse/F.
récemment
récence/S.
recensable/S.
recensement/S.
recenser/a0p+
recenseuse/F.
recension/S.
récente/F.
recentrage/S.
recentrement/S.
64997
64998
64999
65000
65001
65002
65003

65004
65005
65006
65007
65008
65009
65010
65028
65029
65030
65031
65032
65033
65034
65035
65036
65037
65038
65039
65040
65041
65042







+







récuser/a0p+
recyclabilité/S.
recyclable/S.
recyclage/S.
recycler/a0p+
recyclerie/S.
recycleuse/F.
rédac-chef/S.
rédaction/S.
rédactionnel/S.
rédactionnelle/F.
rédactrice/F.
redan/S.
reddition/S.
redéclarer/a0p+
66298
66299
66300
66301
66302
66303
66304

66305
66306
66307
66308
66309
66310
66311
66330
66331
66332
66333
66334
66335
66336
66337
66338
66339
66340
66341
66342
66343
66344







+







résistible/S.
résistive/F.
résistivité/S.
résistor/S.
resituer/a0p+
resocialisation/S.
resocialiser/a0p+
resolidifier/a0p+
résolubilité/S.
résoluble/S.
résolument
résolution/S.
résolutive/F.
résolutoire/S.
résolvance/S.
67764
67765
67766
67767
67768
67769
67770
67771
67772
67773
67774
67775
67776
67777
67778
67797
67798
67799
67800
67801
67802
67803

67804
67805
67806
67807
67808
67809
67810







-







rythmicité/S.
rythmique/S.
rythmiquement
s
s/U.||--
sa
saanen/S.
s'abader
sabayon/S.
sabbat/S.
sabbathienne/F.
sabbatique/S.
sabéenne/F.
sabéisme/S.
sabelle/S.
67806
67807
67808
67809
67810
67811
67812
67813
67814
67815
67816
67817
67818
67819
67820
67838
67839
67840
67841
67842
67843
67844

67845
67846
67847
67848
67849
67850
67851







-







sabouler/a0p+
sabra/S.
sabrage/S.
sabre/S.
sabrer/a0p+
sabretache/S.
sabreuse/F.
s'abriller
saburrale/W.
saburre/S.
sac/S.
sacagner/a0p+
saccade/S.
saccader/a0p+
saccage/S.
67916
67917
67918
67919
67920
67921
67922
67923
67924
67925
67926
67927
67928
67929
67930
67947
67948
67949
67950
67951
67952
67953

67954
67955
67956
67957
67958
67959
67960







-







sagard/S.
sage/S.
sage-femme
sagement
sages-femmes
sagesse/S.
sagette/S.
s'agir/fZ
sagittaire/S.
sagittale/W.
sagittée/F.
sagou/S.
sagouin/S.
sagoutier/S.
sagum/S.
72611
72612
72613
72614
72615
72616
72617

72618
72619
72620
72621
72622
72623
72624
72641
72642
72643
72644
72645
72646
72647
72648
72649
72650
72651
72652
72653
72654
72655







+







surharmonique/S.
surhaussement/S.
surhausser/a0p+
surhomme/S.
surhumaine/F.
surhumainement
surhumanité/S.
surhydratation/S.
suricate/S.
surie/F.
surimi/S.
surimposer/a0p+
surimposition/S.
surimpression/S.
surimpressionner/a0p+
72724
72725
72726
72727
72728
72729
72730

72731
72732
72733
72734
72735
72736
72737
72755
72756
72757
72758
72759
72760
72761
72762
72763
72764
72765
72766
72767
72768
72769







+







surplomber/a0p+
surplus
surpoids
surpopulation/S.
surprenamment
surprenante/F.
surprendre/tF
surprescription/S.
surpresseur/S.
surpression/S.
surprime/S.
surprise/S.
surprise-partie
surprises-parties
surproduction/S.
73124
73125
73126
73127
73128
73129
73130




73131
73132
73133
73134
73135
73136
73137
73156
73157
73158
73159
73160
73161
73162
73163
73164
73165
73166
73167
73168
73169
73170
73171
73172
73173







+
+
+
+







systémicienne/F.
systémique/S.
systole/S.
systolique/S.
systyle/S.
systyle/S.
syzygie/S.
s'
s'abader
s'abriller
s'agir/fZ
t
t/||--
ta
tabac
tabac/S.
tabacologie/S.
tabacologue/S.
73968
73969
73970
73971
73972
73973
73974
73975
73976
73977
73978
73979
73980
73981
73982
74004
74005
74006
74007
74008
74009
74010

74011
74012
74013
74014
74015
74016
74017







-







télex
télexer/a0p+
télexiste/S.
télicité/S.
tell/S.
telle/F.
telle/F.
t'elle/S=
tellement
tellière/S.
tellière/S.
telline/S.
tellurate/S.
tellure/S.
tellureuse/W.
74027
74028
74029
74030
74031
74032
74033
74034
74035
74036
74037
74038
74039
74040
74041
74062
74063
74064
74065
74066
74067
74068

74069
74070
74071
74072
74073
74074
74075







-







temporellement
temporisation/S.
temporisatrice/F.
temporiser/a0p+
temporo-pariétale/F.
temps
temps-réel
t'en
tenable/S.
tenace/S.
tenacement
ténacité/S.
tenaille/S.
tenaillement/S.
tenailler/a0p+
74796
74797
74798
74799
74800
74801
74802
74803
74804
74805
74806
74807
74808
74809
74810
74830
74831
74832
74833
74834
74835
74836

74837
74838
74839
74840
74841
74842
74843







-







tignasse/S.
tigrer/a0p+
tigresse/F.
tigridie/S.
tigron/S.
tiguidou/S.
tiki/S.
t'il/S=
tilapia/S.
tilbury/S.
tilde/S.
tiliacée/S.
tillac/S.
tillage/S.
tillandsie/S.
75058
75059
75060
75061
75062
75063
75064
75065
75066
75067
75068
75069
75070
75071
75072
75091
75092
75093
75094
75095
75096
75097

75098
75099
75100
75101
75102
75103
75104







-







tomodensitomètre/S.
tomodensitométrie/S.
tomodensitométrique/S.
tomographe/S.
tomographie/S.
tomographique/S.
tom-pouce
t'on
ton
ton/S.
tonale/F.
tonalité/S.
tondage/S.
tondaille/S.
tondaison/S.
75736
75737
75738
75739
75740
75741
75742

75743
75744
75745
75746
75747
75748
75749
75768
75769
75770
75771
75772
75773
75774
75775
75776
75777
75778
75779
75780
75781
75782







+







transistorisation/S.
transistoriser/a0p+
transit/S.
transitaire/S.
transiter/a0p+
transition/S.
transitionnelle/F.
transitionner/a0p+
transitive/F.
transitivement
transitivité/S.
transitoire/S.
transitoirement
translater/a0p+
translatif/S.
76372
76373
76374
76375
76376
76377
76378

76379
76380
76381
76382
76383
76384
76385
76405
76406
76407
76408
76409
76410
76411
76412
76413
76414
76415
76416
76417
76418
76419







+







triterpénique/S.
trithérapie/S.
triticale/S.
tritiée/F.
tritium/S.
triton/S.
triturable/S.
triturage/S.
triturateur/S.
trituration/S.
triturer/a0p+
triumvir/S.
triumvirale/W.
triumvirat/S.
trivalence/S.
76432
76433
76434
76435
76436
76437
76438

76439
76440
76441
76442
76443
76444
76445
76466
76467
76468
76469
76470
76471
76472
76473
76474
76475
76476
76477
76478
76479
76480







+







trois-quarts
trois-quatre
trois-six
trôler/a0p.
troll/S.
trolle/S.
troller/a0p.
trollesque/S.
trolley/S.
trolleybus
trombe/S.
trombidion/S.
trombidiose/S.
trombine/S.
trombinoscope/S.
76661
76662
76663
76664
76665
76666
76667
76668
76669


76670
76671
76672
76673
76674
76675
76676
76696
76697
76698
76699
76700
76701
76702


76703
76704
76705
76706
76707
76708
76709
76710
76711







-
-
+
+







tubuline/S.
tubulopathie/S.
tubulure/S.
tudesque/S.
tudieu
tue-chien
tue-diable
tue-l'amour
tue-loup
tue-loup
tue-l'amour
tue-mouche
tuer/a0p+
tuerie/S.
tue-tête
tueuse/F.
tuf/S.
tuffeau/X.
76907
76908
76909
76910
76911
76912
76913





76914
76915
76916
76917
76918
76919
76920
76942
76943
76944
76945
76946
76947
76948
76949
76950
76951
76952
76953
76954
76955
76956
76957
76958
76959
76960







+
+
+
+
+







tyrosinase/S.
tyrosine/S.
tyrosinémie/S.
tyrothricine/S.
tyrrhénienne/F.
tzatziki/S.
tzigane/S.
t'
t'elle/S=
t'en
t'il/S=
t'on
u
u/||--
ua/||--
ubac/S*
ubérale/S*
uberisation/S*
ubique/S*
78263
78264
78265
78266
78267
78268
78269

78270
78271
78272
78273
78274
78275
78276
78303
78304
78305
78306
78307
78308
78309
78310
78311
78312
78313
78314
78315
78316
78317







+







vidéographique/S.
vidéoludique/S.
vidéophone/S.
vidéophonie/S.
vidéoprojecteur/S.
vidéoprojection/S.
vidéoprotection/S.
vidéo-protection/S.
vide-ordures
vidéosphère/S.
vidéosurveillance/S.
vidéotex
vidéothécaire/S.
vidéothèque/S.
vidéotransmission/S.
78302
78303
78304
78305
78306
78307
78308

78309
78310
78311
78312
78313
78314
78315
78343
78344
78345
78346
78347
78348
78349
78350
78351
78352
78353
78354
78355
78356
78357







+







vielleur/S.
vielleuse/W.
vielliste/S.
viennoise/F.
viennoiserie/S.
vierge/S.
vierge/S.
viétique/S.
vietnamienne/F.
vieux-lille
vif-argent
vif-argent
vigésimale/W.
vigie/S.
vigilamment
78849
78850
78851
78852
78853
78854
78855

78856
78857
78858
78859
78860
78861
78862
78863
78864
78865
78866
78867
78868
78869
78870

78871

78872
78873
78874
78875
78876
78877
78878
78891
78892
78893
78894
78895
78896
78897
78898
78899
78900
78901
78902
78903
78904
78905
78906
78907
78908
78909
78910
78911
78912
78913
78914

78915
78916
78917
78918
78919
78920
78921
78922







+















+
-
+







vorace/S.
voracement
voracité/S.
vortex
vorticelle/S.
vos
vosgienne/F.
voszigues
votante/F.
votation/S.
vote/S.
voter/a0p+
voteuse/F.
votive/F.
votre
vôtre/S.
vouer/a0p+
vouge/S.
vouivre/S.
vouloir/S.
vouloir/pB
vous
vous
vous-même
vous-même/S=
vous-mêmes
vousseau/X.
voussoiement/S.
voussoir/S.
voussoyer/a0p+
voussure/S.
voûtain/S.
voûte/S.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.aff from [a428065a88] to [4fad3fe817].

1
2
3
4
5

6
7

8
9
10
11
12
13
14
1
2
3
4

5
6

7
8
9
10
11
12
13
14




-
+

-
+







# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “RÉFORME 1990” v6.3
# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “RÉFORME 1990” v7.0
# par Olivier R. -- licence MPL 2.0
# Généré le 01-07-2018 à 20:45
# Généré le 14-09-2018 à 10:59
# Pour améliorer le dictionnaire, allez sur http://www.dicollecte.org/



SET UTF-8

WORDCHARS -’'1234567890.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-reforme1990.dic from [bca8f49021] to [cf37c7947a].

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







79452
79496
&
1er/--
1ers/--
1re/--
1res/--
1ʳᵉ/--
1ʳᵉˢ/--
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195



1196
1197
1198
1199
1200
1201
1202
1186
1187
1188
1189
1190
1191
1192



1193
1194
1195
1196
1197
1198
1199
1200
1201
1202







-
-
-
+
+
+







Bradley
Bradley
Brafman
Brahim
Brahma
Brahmapoutre
Brahms
Braine-l'Alleud
Braine-le-Château
Braine-le-Comte
Braine-le-Château
Braine-le-Comte
Braine-l'Alleud
Brakel
Brand
Brandon
Brasov
Brassac
Brasschaat
Brassica
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1498
1499
1500
1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511







-







Casanova
Casey
Casimir
Casimir-Perier
Caspienne
Cassandra
Cassandre
Casseurs_Flowters
Cassidy
Cassini
Cassiopée
Castafolte
Castanet-Tolosan
Castelnaudary
Castelnau-le-Lez
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642




1643
1644
1645
1646
1647
1648
1649
1631
1632
1633
1634
1635
1636
1637




1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648







-
-
-
-
+
+
+
+







Charybde
Chase
Chasles
Chastel-Arnaud
Château-Gontier
Château-Thierry
Châteaubriant
Château-d'Œx
Château-d'Olonne
Châteaudouble
Châteaudun
Châteaudouble
Châteaudun
Château-d'Œx
Château-d'Olonne
Châteauguay
Châteauneuf-du-Pape
Châteauneuf-les-Martigues
Châteaurenard
Châteauroux
Châtelain
Châtelet
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
1986
1987
1988
1989
1990
1991
1992

1993
1994
1995
1996
1997
1998
1999







-







DEUG
DFSG
DG
DGSE
DGSI
DHCP
DHEA
D'Holbach
DJ
DM
DNS
DOM
DOM-TOM
DPTH
DREES
2336
2337
2338
2339
2340
2341
2342

2343
2344
2345
2346
2347
2348
2349
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348







+







Dynkin
Dysnomie
Dʳ
Dʳˢ
Dʳᵉ
Dʳᵉˢ
Dᴏꜱꜱᴍᴀɴɴ
D'Holbach
ECS/L'D'Q'
EDF/L'D'Q'
EEPROM/L'D'Q'
EFREI/L'D'Q'
EFS/L'D'Q'
EIB/L'D'Q'
ENA/L'D'Q'
2395
2396
2397
2398
2399
2400
2401

2402
2403
2404
2405
2406
2407
2408
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408







+







Eeklo/L'D'Q'
Eeyou/L'
Effinergie
Égée/L'D'Q'
Éghezée/L'D'Q'
Églantine/L'D'Q'
Égypte/L'D'
Ehlers-Danlos
Ehrenpreis/L'D'Q'
Ehresmann/L'D'Q'
Eibit/||--
Eiffel/L'D'Q'
Eileen/L'D'Q'
Eilenberg/L'D'Q'
Eilleen/L'D'Q'
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3159
3160
3161
3162
3163
3164
3165

3166
3167
3168
3169
3170
3171
3172







-







Goebbels
Goëmar
Goethe
Gogh
Gogol
Golan
Goldbach
Golden_Show
Goldoni
Golgi
Golgotha
Goliath
Gomorrhe
Goncourt
Gondwana
3472
3473
3474
3475
3476
3477
3478

3479
3480
3481
3482
3483
3484
3485
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485







+







Helvétie/L'D'
Hem/L'D'Q'
Hemiksem/L'D'Q'
Hemingway/L'D'Q'
Henan
Hénault
Hendaye/L'D'Q'
Hendrik/L'D'Q'
Hénin-Beaumont/L'D'Q'
Hennebont/L'D'Q'
Hénoch/L'D'Q'
Henri/L'D'Q'
Henriette/L'D'Q'
Henrique/L'D'Q'
Henry
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3498
3499
3500
3501
3502
3503
3504

3505
3506
3507
3508
3509
3510
3511







-







Héricourt/L'D'Q'
Hermann/L'D'Q'
Hermès/L'D'Q'
Hermine/L'D'Q'
Hermione/L'D'Q'
Hermite/L'D'Q'
Hernando/L'D'Q'
Hero_Corp
Hérode/L'D'Q'
Hérodote/L'D'Q'
Hérouville-Saint-Clair/L'D'Q'
Herschel/L'D'Q'
Herselt/L'D'Q'
Herstal
Hertz
3968
3969
3970
3971
3972
3973
3974

3975
3976
3977
3978
3979
3980
3981
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981







+







Joanna
Joannie
Joaquim
Jocelyn
Jocelyne
Joconde
Jocrisse
Jodhpur
Jodie
Jodoigne
Jody
Joe
Joël
Joëlle
Joey
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4237
4238
4239
4240
4241
4242
4243

4244
4245
4246
4247
4248
4249
4250







-







Kjeldahl
Klaus
Klee
Klein
Klimt
Klitzing
Klondike
K'nex
Knokke-Heist
Knossos
Ko/||--
Kobe
Koch
Kodaira
Koekelberg
4309
4310
4311
4312
4313
4314
4315

4316
4317
4318
4319
4320
4321
4322
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322







+







Kuurne
Kyle
Kylian
Kylie
Kyllian
Kyoto
Kyushu
K'nex
L/U.||--
LCD
LED
LGBT
LGBTI
LGBTIQ
LGV
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4417
4418
4419
4420
4421
4422
4423

4424
4425
4426
4427
4428
4429
4430







-







Laval
Lavaur
Laveran
Lavoisier
Lawrence
Laxou
Lazare
Le_Bris
Léa
Leah
Léandre
Léane
Lebbeke
Lebesgue
Lebrun
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4477
4478
4479
4480
4481
4482
4483

4484
4485
4486
4487
4488
4489
4490







-







Léonore
Léontine
Léopold
Léopoldine
Leopoldt
Léopoldville
Leroy
Les_Vigneaux
Lesage
Lesbos
Lesieur
Lesley
Leslie
Lesneven
Lesotho
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4677
4678
4679
4680
4681
4682
4683

4684
4685
4686
4687
4688
4689
4690







-







Louvain-la-Neuve
Louvière
Louviers
Louvre
Love
Lovecraft
Lovelace
Lovely_Rita
Lovćen
Loyola
Loyre
Lozère
Luanda
Lubbeek
Lübeck
4888
4889
4890
4891
4892
4893
4894

4895
4896
4897
4898
4899
4900
4901
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899







+







Mammon
Manach
Managua
Manama
Manaus
Manche
Manchester
Mandalay
Mandchourie
Mandela
Mandelbrot
Mandelieu-la-Napoule
Mandor
Mandy
Manet
5062
5063
5064
5065
5066
5067
5068

5069
5070
5071
5072
5073
5074
5075
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074







+







Maslow
Mason
Massachusetts
Masséna
Massenet
Massimo
Massy
MasterCard
Masutti
Matchstick
Mateo
Mathéo
Matheron
Matheson
Mathias
5209
5210
5211
5212
5213
5214
5215

5216
5217
5218
5219
5220
5221
5222
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222







+







Mérimée
Merkel
Merleau-Ponty
Merlin
Méru
Meryl
Mésie
Mésoamérique
Mésopotamie
Messaline
Messer
Messine
Météo-France
Mettet
Metz
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5314
5315
5316
5317
5318
5319
5320

5321
5322
5323
5324
5325
5326
5327







-







Mithra
Mithridate
Mitnick
Mitry-Mory
Mitsubishi
Mittelhausbergen
Mitterrand
Mix_Bizarre
Miyabi
Mlle/S.
Mme/S.
Mnémosyne
Mo/||--
Moab
Möbius
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537

5538
5539
5540
5541
5542
5543
5544
5517
5518
5519
5520
5521
5522
5523

5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543







-












+







Mᵍʳˢ
Mᵐᵉ
Mᵐᵉˢ
N/U.||--
NASA
NDLR
NDT
N'Djamena
NEC
NF
NIRS
NSA
Nabil
Nabuchodonosor
Nacira
Nadège
Nadia
Nadim
Nadine
Nadir
Nadja
Nagasaki
Nagata
Nagoya
Nagy
Nahum
Naimark
Nairobi
5758
5759
5760
5761
5762
5763
5764

5765
5766
5767
5768
5769
5770
5771
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771







+







Nusselt
Nuuk
Nvidia
Nyarlathotep
Nyons
Nyquist
Nyx
N'Djamena
OCDE/L'D'Q'
OCaml/L'D'Q'
ODF/L'D'Q'
Œdipe/L'D'Q'
OFBiz/D'Q'
OFCE/L'D'Q'
OGM/L'D'Q'
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5819
5820
5821
5822
5823
5824
5825

5826
5827
5828
5829
5830
5831
5832







-







Oignies/L'D'Q'
Oisans/L'
Oise/L'
Oissel/L'D'Q'
Oklahoma/L'D'
Olaf/L'D'Q'
Oldham/L'D'Q'
Olea_Medical
Oleg/L'D'Q'
Olen/L'D'Q'
Oléron/L'D'Q'
Olga/L'D'Q'
Oliver/L'D'Q'
Olivet/L'D'Q'
Olivia/L'D'Q'
6346
6347
6348
6349
6350
6351
6352

6353
6354
6355
6356
6357
6358
6359
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359







+







Pullman
Pune
Purcell
Puteaux
Puurs
Puy-de-Dôme
Puy-en-Velay
Pygmalion
Pyongyang
Pyrénées
Pyrénées-Atlantiques
Pyrénées-Orientales
Pyrrha
Pyrrhus
Pythagore
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6579
6580
6581
6582
6583
6584
6585


6586
6587
6588
6589
6590
6591
6592







-
-







Rivery
Riviera
Rivière-Pilote
Rivière-Salée
Rixensart
Rixheim
Riyad
R'lyeh
R'n'B
Roanne
Rob
Robert
Roberta
Roberte
Roberto
Roberval
6721
6722
6723
6724
6725
6726
6727


6728
6729
6730
6731
6732
6733
6734
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734







+
+







Ruth
Rutherford
Rutishauser
Rwanda
Ryan
Ryanair
Ryxeo
R'lyeh
R'n'B
S/U.||--
SA
SADT
SAP
SARL
SCIC
SCOT
6855
6856
6857
6858
6859
6860
6861
6862
6863


6864
6865
6866
6867
6868
6869
6870
6855
6856
6857
6858
6859
6860
6861


6862
6863
6864
6865
6866
6867
6868
6869
6870







-
-
+
+







Saint-Louis
Saint-Malo
Saint-Mandé
Saint-Marin
Saint-Martin
Saint-Martin-Boulogne
Saint-Martin-Petit
Saint-Martin-d'Hères
Saint-Martin-de-Crau
Saint-Martin-de-Crau
Saint-Martin-d'Hères
Saint-Maur-des-Fossés
Saint-Maurice
Saint-Max
Saint-Maximin-la-Sainte-Baume
Saint-Médard-en-Jalles
Saint-Michel-de-Feins
Saint-Michel-sur-Orge
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7066
7067
7068
7069
7070
7071
7072

7073
7074
7075
7076
7077
7078
7079







-







Schwerin
Schwytz
Schwyz
Scipion
Scott
Scoville
Scrameustache/S.
Scred_TV
Scudéry
Scylla
SeaMonkey
Seagate
Seamus
Sean
Seat
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890


7891
7892
7893
7894
7895
7896
7897
7879
7880
7881
7882
7883
7884
7885


7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896







-
-


+
+







Vachez
Vadim
Vaduz
Vahan
Vaires-sur-Marne
Valais
Valbonne
Val-d'Oise
Val-d'Or
Val-de-Marne
Val-de-Reuil
Val-d'Oise
Val-d'Or
Valence
Valenciennes
Valentigney
Valentin
Valentina
Valentine
Valentinien
8215
8216
8217
8218
8219
8220
8221

8222
8223
8224
8225
8226
8227
8228
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228







+







Wilfred
Wilfrid
Wilfried
Wilhelm
Will
Willa
Willebroek
Willem
William
Williams
Willie
Willy
Wilma
Wilson
Windhoek
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389

8390
8391
8392
8393
8394
8395
8396
8380
8381
8382
8383
8384
8385
8386

8387
8388
8389
8390
8391
8392
8393
8394
8395
8396







-


+







Xavière
Xe/--
Xebia
Xenia
Xénophane
Xénophon
Xerxès
Xi'an
Xining
Xinjiang
Xi'an
Xᵉ/--
YHWH
Yacine
Yaël
Yaëlle
Yahvé
Yahweh
11739
11740
11741
11742
11743
11744
11745

11746
11747
11748
11749
11750
11751
11752
11739
11740
11741
11742
11743
11744
11745
11746
11747
11748
11749
11750
11751
11752
11753







+







annulable/S*
annulaire/S*
annulation/S*
annulative/F*
annulatrice/F*
annulement/S*
annuler/a4p+
annulingus/L'D'Q'
annuus
anoblir/f4p+
anoblissante/F*
anoblissement/S*
anode/S*
anodine/F*
anodique/S*
14180
14181
14182
14183
14184
14185
14186

14187
14188
14189
14190
14191
14192
14193
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195







+







autoclave/S*
autoclave/S*
autoclaviste/S*
autocollante/F*
autocommutateur/S*
autocompenser/a4p+
auto-compenser/a4p+
autocomplétion/S*
autoconcurrence/S*
autoconditionnement/S*
auto-conditionnement/S*
autoconduction/S*
autoconservation/S*
autoconsommation/S*
autoconstruction/S*
14578
14579
14580
14581
14582
14583
14584

14585
14586
14587
14588
14589
14590
14591
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594







+







avionneuse/F*
avions-cargos/D'Q'
avipelvien/S*
aviron/S*
avirulence/S*
avis/L'D'Q'
aviser/a4p+
aviseur/S*
aviso/S*
avitaillement/S*
avitailler/a4p+
avitailleuse/F*
avitaminose/S*
avivage/S*
avivement/S*
16302
16303
16304
16305
16306
16307
16308
16309
16310

16311
16312
16313
16314
16315
16316
16317
16305
16306
16307
16308
16309
16310
16311

16312
16313
16314
16315
16316
16317
16318
16319
16320







-

+







binocle/S.
binoculaire/S.
binodale/S.
binôme/S.
binomiale/W.
binominale/W.
binouze/S.
bin's
bintje/S.
bin's
bio/S.
bio/S.
bioabsorbable/S.
bioaccumulable/S.
bioaccumulation/S.
bioacoustique/S.
bioagresseur/S.
17276
17277
17278
17279
17280
17281
17282

17283
17284
17285
17286
17287
17288
17289
17279
17280
17281
17282
17283
17284
17285
17286
17287
17288
17289
17290
17291
17292
17293







+







bouiboui/S.
bouif/S.
bouillabaisse/S.
bouillage/S.
bouillante/F.
bouillasse/S.
bouille/S.
bouillette/S.
bouilleuse/F.
bouillie/S.
bouillir/iQ
bouillissage/S.
bouilloire/S.
bouillon/S.
bouillonnante/F.
19925
19926
19927
19928
19929
19930
19931

19932
19933
19934
19935
19936
19937
19938
19929
19930
19931
19932
19933
19934
19935
19936
19937
19938
19939
19940
19941
19942
19943







+







caviarder/a0p+
cavicorne/S.
caviste/S.
cavitaire/S.
cavitation/S.
cavité/S.
cd/U.||--
ce
ce
céans
cébette/S.
cébiste/S.
ceci
cécidie/S.
cécidomyie/S.
20265
20266
20267
20268
20269
20270
20271
20272
20273
20274
20275
20276
20277
20278
20279
20270
20271
20272
20273
20274
20275
20276

20277
20278
20279
20280
20281
20282
20283







-







cesse
cesser/a0p+
cessez-le-feu
cessibilité/S.
cessible/S.
cession/S.
cessionnaire/S.
c'est-à-dire
ceste/S.
cestode/S.
césure/S.
cet
cétacé/S.
cétane/S.
céteau/X.
25983
25984
25985
25986
25987
25988
25989


25990
25991
25992
25993
25994
25995
25996
25987
25988
25989
25990
25991
25992
25993
25994
25995
25996
25997
25998
25999
26000
26001
26002







+
+







cytosolique/S.
cytosquelette/S.
cytostatique/S.
cytotoxicité/S.
cytotoxique/S.
czardas
czimbalum/S.
c'
c'est-à-dire
d
d/||--
dB/||--
daba/S.
dacite/S.
dacryoadénite/S.
dacryocystite/S.
26143
26144
26145
26146
26147
26148
26149
26150
26151
26152
26153
26154
26155
26156
26157

26158
26159
26160
26161
26162
26163
26164
26149
26150
26151
26152
26153
26154
26155

26156
26157
26158
26159
26160
26161
26162
26163
26164
26165
26166
26167
26168
26169
26170







-







+







datte/S.
dattier/S.
datura/S.
daube/S.
dauber/a0p+
daubeuse/F.
daubière/S.
d'aucuns
dauphine/F.
dauphinelle/S.
dauphinoise/F.
daurade/S.
davantage
davier/S.
dazibao/S.
de
de
dé/S.
déactiver/a0p+
deal/S.
dealer/a0p+
dealeuse/F.
déambulateur/S.
27133
27134
27135
27136
27137
27138
27139

27140
27141
27142
27143
27144
27145
27146
27139
27140
27141
27142
27143
27144
27145
27146
27147
27148
27149
27150
27151
27152
27153







+







dégeler/b0p+
dégénération/S.
dégénérative/F.
dégénérée/F.
dégénérer/c0p+
dégénérescence/S.
dégénérescente/F.
dégenrer/a0p+
dégerbage/S.
dégermage/S.
dégermer/a0p+
dégingander/a0p+
dégiter/a0p+
dégivrage/S.
dégivrante/F.
28012
28013
28014
28015
28016
28017
28018

28019
28020
28021
28022
28023
28024
28025
28019
28020
28021
28022
28023
28024
28025
28026
28027
28028
28029
28030
28031
28032
28033







+







dépoitrailler/a0p+
dépolarisation/S.
dépolariser/a0p+
dépolir/f0p+
dépolissage/S.
dépolitisation/S.
dépolitiser/a0p+
dépolluante/F.
dépolluer/a0p+
dépollution/S.
dépolymérisation/S.
dépolymériser/a0p+
déponente/F.
dépontiller/a0p.
dépopulation/S.
28482
28483
28484
28485
28486
28487
28488

28489
28490
28491
28492
28493
28494
28495
28490
28491
28492
28493
28494
28495
28496
28497
28498
28499
28500
28501
28502
28503
28504







+







désensibilisation/S.
désensibiliser/a0p+
désensorceler/d0p+
désentoilage/S.
désentoiler/a0p+
désentortiller/a0p+
désentraver/a0p+
désentrelacer/a4p+
désenvasement/S.
désenvaser/a0p+
désenvelopper/a0p+
désenvenimer/a0p+
désenverguer/a0p+
désenvoutement/S.
désenvouter/a0p+
30789
30790
30791
30792
30793
30794
30795



30796
30797
30798
30799
30800
30801
30802
30798
30799
30800
30801
30802
30803
30804
30805
30806
30807
30808
30809
30810
30811
30812
30813
30814







+
+
+







dystrophine/S.
dystrophique/S.
dystrophisation/S.
dysurie/S.
dysurique/S.
dytique/S.
dzêta/S.
d'
d'
d'aucuns
e
eV/U.||--
eau/X*
eau-de-vie/L'D'Q'
eau-forte/L'D'Q'
eaux-de-vie/D'Q'
eaux-fortes/D'Q'
33225
33226
33227
33228
33229
33230
33231
33232
33233
33234
33235
33236
33237
33238
33239

33240
33241
33242
33243
33244
33245
33246
33237
33238
33239
33240
33241
33242
33243

33244
33245
33246
33247
33248
33249
33250
33251
33252
33253
33254
33255
33256
33257
33258







-







+







entretoiser/a2p+
entretuer/a6p+
entrevoie/S*
entrevoir/pF
entrevous/L'D'Q'
entrevouter/a2p+
entrevue/S*
entr'hiverner
entrisme/S*
entropie/S*
entropion/S*
entropique/S*
entroque/S*
entrouvrir/iC
entrure/S*
entr'hiverner
entuber/a2p+
enturbanner/a4p+
enture/S*
énucléation/S*
énucléer/a2p+
énumérabilité/S*
énumérable/S*
42201
42202
42203
42204
42205
42206
42207

42208
42209
42210
42211
42212
42213
42214
42213
42214
42215
42216
42217
42218
42219
42220
42221
42222
42223
42224
42225
42226
42227







+







hypercentre/S*
hyperchimie/S*
hyperchlorhydrie/S*
hypercholestérolémie/S*
hypercholestérolémique/S*
hyperchrome/S*
hyperchromie/S*
hypercoagulabilité/S*
hypercomplexe/S*
hyperconformisme/S*
hyperconnectée/F*
hypercontinentale/W*
hypercontrôle/S*
hypercorrecte/F*
hypercorrection/S*
42272
42273
42274
42275
42276
42277
42278

42279
42280
42281
42282
42283
42284
42285
42285
42286
42287
42288
42289
42290
42291
42292
42293
42294
42295
42296
42297
42298
42299







+







hypernerveuse/W*
hypernova/S*
hypéron/S*
hyperonyme/S*
hyperonymie/S*
hyperonymique/S*
hyperostose/S*
hyperoxie/S*
hyperparasite/S*
hyperparathyroïdie/S*
hyperphagie/S*
hyperphagique/S*
hyperphalangie/S*
hyperplan/S*
hyperplasie/S*
43591
43592
43593
43594
43595
43596
43597

43598
43599
43600
43601
43602
43603
43604
43605
43606
43607
43608
43609
43610
43611
43612
43613
43614
43615
43616
43617
43618
43619







+







incrémentale/W*
incrémentalement/D'Q'
incrémentation/S*
incrémenter/a2p+
incrémentielle/F*
increvable/S*
incriminable/S*
incriminante/F*
incrimination/S*
incriminer/a4p+
incristallisable/S*
incritiquable/S*
incrochetable/S*
incroyable/S*
incroyablement/D'Q'
46212
46213
46214
46215
46216
46217
46218
46219
46220
46221
46222
46223
46224
46225



46226
46227
46228
46229
46230
46231
46232
46227
46228
46229
46230
46231
46232
46233



46234
46235
46236
46237
46238
46239
46240
46241
46242
46243
46244
46245
46246
46247







-
-
-




+
+
+







juron/S.
jury/S.
jus
jusant/S.
jusée/S.
jusnaturalisme/S.
jusnaturaliste/S.
jusqu/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jusque
jusque-là
jusques
jusquiame/S.
jusqu'/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jussiée/S.
jussion/S.
justaucorps
juste
juste/S.
juste-à-temps
justement
46554
46555
46556
46557
46558
46559
46560
46561
46562
46563
46564
46565
46566
46567
46568
46569
46570
46571
46572
46573
46574
46575

46576
46577
46578
46579
46580
46581
46582







-







kyrie
kyrielle/S.
kyriologique/S.
kyste/S.
kystique/S.
kyu/S.
kyudo/S.
l
l
l/U.||--
là
la
la
la
labadens
47376
47377
47378
47379
47380
47381
47382

47383
47384
47385
47386
47387
47388
47389
47390
47391
47392
47393
47394
47395
47396
47397
47398
47399
47400
47401
47402
47403
47404







+







leude/S.
leur
leur
leur/S.
leurre/S.
leurrer/a0p+
leurs
leurszigues
lev/S.
levage/S.
levageuse/F.
levain/S.
levalloisien/S.
levalloisienne/F.
lévamisole/S.
48185
48186
48187
48188
48189
48190
48191
48192
48193


48194
48195
48196
48197
48198
48199
48200
48200
48201
48202
48203
48204
48205
48206


48207
48208
48209
48210
48211
48212
48213
48214
48215







-
-
+
+







loricaire/S.
lorientaise/F.
loriot/S.
loriquet/S.
lorraine/F.
lorry/A.
lors
lorsqu/--
lorsque
lorsque
lorsqu'/--
losange/S.
losangée/F.
losangique/S.
loseuse/F.
lot/S.
lote/S.
loterie/S.
48521
48522
48523
48524
48525
48526
48527


48528
48529
48530
48531
48532
48533
48534
48536
48537
48538
48539
48540
48541
48542
48543
48544
48545
48546
48547
48548
48549
48550
48551







+
+







lysogénie/S.
lysogénique/S.
lysosomale/W.
lysosome/S.
lysosomiale/W.
lysozyme/S.
lytique/S.
l'
l'
m
m/U.||--
mCE
mR/||--
ma
maar/S.
maboule/F.
49775
49776
49777
49778
49779
49780
49781
49782
49783
49784
49785
49786
49787
49788
49789
49792
49793
49794
49795
49796
49797
49798

49799
49800
49801
49802
49803
49804
49805







-







mastopathie/S.
mastose/S.
mastroquet/S.
masturbation/S.
masturbatoire/S.
masturbatrice/F.
masturber/a0p+
m'as-tu-vu
masure/S.
masurium/S.
mât/S.
matabiche/S.
matabicher/a0p+
matador/S.
mataf/S.
49967
49968
49969
49970
49971
49972
49973

49974
49975
49976
49977
49978
49979
49980
49983
49984
49985
49986
49987
49988
49989
49990
49991
49992
49993
49994
49995
49996
49997







+







mazouter/a0p+
mazurka/S.
mbalax
mbar/||--
me
méaculpa/S.
méandre/S.
méandreuse/W.
méandriforme/S.
méandrine/S.
méat/S.
méatoscopie/S.
mébibit/S.
mébioctet/S.
mec/S.
50306
50307
50308
50309
50310
50311
50312
50313
50314
50315
50316
50317
50318
50319
50320
50323
50324
50325
50326
50327
50328
50329

50330
50331
50332
50333
50334
50335
50336







-







mémoration/S.
mémorial/X.
mémorialiste/S.
mémorielle/F.
mémorisable/S.
mémorisation/S.
mémoriser/a0p+
m'en
menaçante/F.
menace/S.
menacer/a0p+
ménade/S.
ménage/S.
ménageable/S.
ménagement/S.
50550
50551
50552
50553
50554
50555
50556

50557
50558
50559
50560
50561
50562
50563
50566
50567
50568
50569
50570
50571
50572
50573
50574
50575
50576
50577
50578
50579
50580







+







mésestimer/a0p+
mésiale/W.
mésintelligence/S.
mésinterprétation/S.
mésique/S.
mesmérienne/F.
mesmérisme/S.
mésoaméricaine/F.
mésoblaste/S.
mésoblastique/S.
mésocarpe/S.
mésocentre/S.
mésocéphale/S.
mésocéphale/S.
mésocéphalique/S.
53025
53026
53027
53028
53029
53030
53031



53032
53033
53034
53035
53036
53037
53038
53042
53043
53044
53045
53046
53047
53048
53049
53050
53051
53052
53053
53054
53055
53056
53057
53058







+
+
+







myxœdème/S.
myxomatose/S.
myxome/S.
myxomycète/S.
myxovirus
m²
m³
m'
m'as-tu-vu
m'en
n
na
naan/S.
nabab/S.
nabatéenne/F.
nabi/S.
nabisme/S.
53609
53610
53611
53612
53613
53614
53615

53616
53617
53618
53619
53620
53621
53622
53629
53630
53631
53632
53633
53634
53635
53636
53637
53638
53639
53640
53641
53642
53643







+







neuraminique/S.
neurasthénie/S.
neurasthénique/S.
neurinome/S.
neuroanatomie/S.
neuroanatomique/S.
neuroanatomiste/S.
neuroatypique/S.
neurobiochimie/S.
neurobiochimique/S.
neurobiochimiste/S.
neurobiologie/S.
neurobiologique/S.
neurobiologiste/S.
neuroblaste/S.
53799
53800
53801
53802
53803
53804
53805
53806
53807
53808

53809
53810
53811
53812
53813
53814
53815
53816

53817
53818
53819
53820
53821
53822
53823
53820
53821
53822
53823
53824
53825
53826

53827
53828
53829
53830
53831
53832
53833
53834

53835
53836
53837
53838
53839
53840
53841
53842
53843
53844







-


+





-


+







nicotiniser/a0p+
nicotinisme/S.
nictation/S.
nictitante/F.
nictitation/S.
nid/S.
nidation/S.
nid-d'abeilles
nid-de-pie
nid-de-poule
nid-d'abeilles
nidicole/S.
nidification/S.
nidificatrice/F.
nidifier/a0p.
nidifuge/S.
nids-d'abeilles
nids-de-pie
nids-de-poule
nids-d'abeilles
nièce/S.
niellage/S.
nielle/S.
nieller/a0p+
nielleur/S.
niellure/S.
nier/a0p+
53846
53847
53848
53849
53850
53851
53852
53853
53854
53855
53856
53857
53858
53859
53860
53867
53868
53869
53870
53871
53872
53873

53874
53875
53876
53877
53878
53879
53880







-







nilpotente/F.
nilvariété/S.
nimbe/S.
nimber/a0p+
nimbostratus
nimbus
nîmoise/F.
n'importe
ninas
ninja/S.
ninjato/S.
niobate/S.
niobite/S.
niobium/S.
niôle/S.
54192
54193
54194
54195
54196
54197
54198

54199
54200
54201
54202
54203
54204
54205
54212
54213
54214
54215
54216
54217
54218
54219
54220
54221
54222
54223
54224
54225
54226







+







nosologie/S.
nosologique/S.
nosophobie/S.
nostalgie/S.
nostalgique/S.
nostalgiquement
nostoc/S.
noszigues
notabilité/S.
notable/S.
notable/S.
notablement
notaire/S.
notairesse/S.
notamment
54248
54249
54250
54251
54252
54253
54254

54255

54256
54257
54258
54259
54260
54261
54262
54269
54270
54271
54272
54273
54274
54275
54276

54277
54278
54279
54280
54281
54282
54283
54284







+
-
+







nourrissante/F.
nourrissement/S.
nourrisseur/S.
nourrisson/S.
nourriture/S.
nous
nous
nous-même
nous-même/S=
nous-mêmes
nouure/S.
nouveau-née/F.
nouveauté/S.
nouvel
nouvelle/W.
nouvellement
nouvelleté/S.
54440
54441
54442
54443
54444
54445
54446


54447
54448
54449
54450
54451
54452
54453
54462
54463
54464
54465
54466
54467
54468
54469
54470
54471
54472
54473
54474
54475
54476
54477







+
+







nymphette/S.
nympho/S.
nymphomane/S.
nymphomanie/S.
nymphoplastie/S.
nymphose/S.
nystagmus
n'
n'importe
ô
o
o/||--
oaï/S*
oaristys/L'D'Q'
oasienne/F*
oasis/L'D'Q'
55364
55365
55366
55367
55368
55369
55370

55371
55372
55373
55374
55375
55376
55377
55388
55389
55390
55391
55392
55393
55394
55395
55396
55397
55398
55399
55400
55401
55402







+







orchestration/S*
orchestratrice/F*
orchestre/S*
orchestrer/a2p+
orchidacée/S*
orchidacée/S*
orchidée/S*
orchidologie/S*
orchiépididymite/S*
orchis/L'D'Q'
orchite/S*
ordalie/S*
ordalique/S*
ordi/S*
ordinaire/S*
57117
57118
57119
57120
57121
57122
57123
57124
57125
57126

57127
57128
57129
57130
57131
57132
57133
57142
57143
57144
57145
57146
57147
57148

57149
57150
57151
57152
57153
57154
57155
57156
57157
57158







-


+







pas-à-pas
pas-à-pas
pascal/Um
pascale/F.
pascalienne/F.
pascaline/S.
pascaux
pas-d'âne
pas-de-géant
pas-de-porte
pas-d'âne
paséo/S.
pashmina/S.
pasodoble/S.
pasquin/S.
pasquinade/S.
passable/S.
passablement
58389
58390
58391
58392
58393
58394
58395
58396
58397
58398



58399
58400
58401
58402
58403
58404
58405
58414
58415
58416
58417
58418
58419
58420



58421
58422
58423
58424
58425
58426
58427
58428
58429
58430







-
-
-
+
+
+







pétiole/S.
pétiolée/F.
petiote/F.
petit-beurre
petit-bois
petit-bourgeois
petit-boutiste/S.
petit-déj'
petit-déjeuner
petit-déjeuner/a0p.
petit-déjeuner
petit-déjeuner/a0p.
petit-déj'
petite/F.
petite-bourgeoise
petite-fille
petite-maitresse
petitement
petite-nièce
petites-bourgeoises
59165
59166
59167
59168
59169
59170
59171
59172
59173
59174
59175
59176
59177
59178
59179

59180
59181
59182
59183
59184
59185
59186
59187
59188
59189
59190
59191
59192
59193
59194

59195
59196
59197
59198
59199
59200
59201
59202
59203
59204
59205
59206
59207

59208
59209
59210
59211
59212
59213
59214
59190
59191
59192
59193
59194
59195
59196

59197
59198
59199
59200
59201
59202
59203
59204
59205
59206
59207
59208
59209
59210
59211

59212
59213
59214
59215
59216
59217
59218
59219
59220
59221
59222
59223
59224
59225
59226
59227
59228
59229
59230
59231
59232
59233
59234
59235
59236
59237
59238
59239
59240







-







+







-







+













+







pie
pie/S.
pièce/S.
piécette/S.
pied/S.
pied-à-terre
pied-bot
pied-d'alouette
pied-de-biche
pied-de-cheval
pied-de-chèvre
pied-de-loup
pied-de-mouton
pied-de-poule
pied-de-veau
pied-d'alouette
pied-d'oiseau
piédestal/X.
pied-noir
piédouche/S.
pied-plat
piédroit/S.
pieds-bots
pieds-d'alouette
pieds-de-biche
pieds-de-cheval
pieds-de-chèvre
pieds-de-loup
pieds-de-mouton
pieds-de-poule
pieds-de-veau
pieds-d'alouette
pieds-d'oiseau
pieds-noirs
pieds-plats
piéfort/S.
piège/S.
piégeable/S.
piégeage/S.
piéger/c0p+
piégeuse/F.
piégeuse/W.
pie-grièche
piémont/S.
piémontaise/F.
pier/S.
piercing/S.
piéride/S.
pierrade/S.
pierrage/S.
pierraille/S.
pierre/S.
pierrer/a0p+
59377
59378
59379
59380
59381
59382
59383
59384
59385
59386
59387
59388
59389
59390
59391
59392

59393
59394
59395
59396
59397
59398
59399
59403
59404
59405
59406
59407
59408
59409

59410
59411
59412
59413
59414
59415
59416
59417
59418
59419
59420
59421
59422
59423
59424
59425







-








+







pinière/S.
pinne/S.
pinnipède/S.
pinnothère/S.
pinnule/S.
pinocytose/S.
pinot/S.
pin's
pinson/S.
pintade/S.
pintadeau/X.
pintadine/S.
pinte/S.
pinter/a0p+
pinup/S.
pinyin
pin's
piochage/S.
pioche/S.
piochement/S.
piocher/a0p+
piocheuse/F.
pioger/a0p.
piolet/S.
60576
60577
60578
60579
60580
60581
60582

60583
60584
60585
60586
60587
60588
60589
60602
60603
60604
60605
60606
60607
60608
60609
60610
60611
60612
60613
60614
60615
60616







+







pompeuse/F.
pompeuse/W.
pompeusement
pompière/F.
pompiérisme/S.
pompile/S.
pompiste/S.
pom-pom
pompon/S.
pomponner/a0p+
ponant/S.
ponantaise/F.
ponçage/S.
ponce/S.
ponce/S.
60633
60634
60635
60636
60637
60638
60639
60640
60641


60642
60643
60644
60645
60646
60647
60648
60660
60661
60662
60663
60664
60665
60666


60667
60668
60669
60670
60671
60672
60673
60674
60675







-
-
+
+







pontifiante/F.
pontificale/W.
pontificalement
pontificat/S.
pontifier/a0p.
pontil/S.
pontiller/a0p+
pont-l'évêque
pont-levis
pont-levis
pont-l'évêque
ponton/S.
pontonnier/S.
pont-promenade
ponts-levis
ponts-promenades
pontuseau/X.
pool/S.
61641
61642
61643
61644
61645
61646
61647

61648
61649
61650
61651
61652
61653
61654
61668
61669
61670
61671
61672
61673
61674
61675
61676
61677
61678
61679
61680
61681
61682







+







président-directeur
présidente/F.
présidente-directrice
présidentes-directrices
présidentiable/S.
présidentialisation/S.
présidentialisme/S.
présidentialiste/S.
présidentielle/F.
présidents-directeurs
présider/a0p+
présidial/X.
présidiale/W.
présidialité/S.
présidium/S.
61800
61801
61802
61803
61804
61805
61806
61807
61808
61809
61810
61811
61812
61813
61814
61828
61829
61830
61831
61832
61833
61834

61835
61836
61837
61838
61839
61840
61841







-







priapisme/S.
prie-Dieu
prier/a0p+
prière/S.
prieure/F.
prieuré/S.
prieuse/S.
prim'Holstein
primadonna/S.
primage/S.
primaire/S.
primairement
primale/W.
primalité/S.
primarisation/S.
61846
61847
61848
61849
61850
61851
61852

61853
61854
61855
61856
61857
61858
61859
61873
61874
61875
61876
61877
61878
61879
61880
61881
61882
61883
61884
61885
61886
61887







+







primodélinquante/F.
primogéniture/S.
primo-infection/S.
primordiale/W.
primordialement
primordialité/S.
primulacée/S.
prim'Holstein
prince-de-galles
prince-de-galles
princeps
princeps
princesse/F.
princière/F.
princièrement
62748
62749
62750
62751
62752
62753
62754
62755
62756
62757
62758
62759
62760
62761
62762
62776
62777
62778
62779
62780
62781
62782

62783
62784
62785
62786
62787
62788
62789







-







ptérosaure/S.
ptérosaurien/S.
ptérygion/S.
ptérygoïde/S.
ptérygoïdienne/F.
ptérygote/S.
ptérygotus
p'tite/F.
ptolémaïque/S.
ptoléméenne/F.
ptomaïne/S.
ptôse/S.
ptosis
ptôsis
ptyaline/S.
62834
62835
62836
62837
62838
62839
62840
62841
62842


62843
62844
62845
62846
62847
62848
62849
62861
62862
62863
62864
62865
62866
62867


62868
62869
62870
62871
62872
62873
62874
62875
62876







-
-
+
+







puis
puisage/S.
puisard/S.
puisatier/S.
puisement/S.
puiser/a0p+
puisette/S.
puisqu/--
puisque
puisque
puisqu'/--
puissamment
puissance/S.
puissante/F.
puits
pulicaire/S.
pulicaire/S.
pull/S.
62989
62990
62991
62992
62993
62994
62995

62996
62997
62998
62999
63000
63001
63002
63016
63017
63018
63019
63020
63021
63022
63023
63024
63025
63026
63027
63028
63029
63030







+







pycnogonide/S.
pycnomètre/S.
pycnose/S.
pycnotique/S.
pyélite/S.
pyélonéphrite/S.
pygargue/S.
pygmalionisme/S.
pygmée/S.
pygméenne/F.
pyjama/S.
pylône/S.
pylore/S.
pylorique/S.
pyocyanique/S.
63104
63105
63106
63107
63108
63109
63110

63111
63112
63113
63114
63115
63116
63117
63118
63119
63120
63121
63122
63123
63124
63125
63132
63133
63134
63135
63136
63137
63138
63139
63140
63141
63142
63143
63144
63145
63146

63147
63148
63149
63150
63151
63152
63153







+







-







pythique/S.
pythique/S.
python/S.
pythonisse/S.
pyurie/S.
pyxide/S.
pz/||--
p'tite/F.
q
qPCR
qanat/S.
qatarie/F.
qatarienne/F.
qbit/S.
qi
qu/--
qua
quad/S.
quadra
quadra/S.
quadragénaire/S.
quadragésimale/W.
quadragésime/S.
63374
63375
63376
63377
63378
63379
63380
63381
63382
63383
63384
63385
63386
63387

63388
63389
63390
63391
63392
63393
63394
63395
63396
63397
63398
63399
63400
63402
63403
63404
63405
63406
63407
63408

63409
63410
63411
63412
63413
63414
63415
63416
63417
63418
63419
63420

63421
63422
63423
63424
63425
63426
63427







-






+





-







québécoise/F.
québracho/S.
quéchua/S.
queen/S.
queer/S.
quelconque/S.
quelle/F.
quelqu/--
quelque
quelque/S.
quelque/S.
quelquefois
quelques-unes
quelques-uns
quelqu'/--
quelqu'un
quelqu'une
quémande/S.
quémander/a0p+
quémandeuse/F.
qu'en-dira-t-on
quenelle/S.
quenotte/S.
quenouille/S.
quenouillée/S.
quenouillette/S.
quéquette/S.
quérable/S.
63420
63421
63422
63423
63424
63425
63426
63427
63428
63429
63430
63431
63432
63433
63434

63435
63436
63437
63438
63439
63440

63441
63442
63443
63444
63445
63446
63447
63447
63448
63449
63450
63451
63452
63453

63454
63455
63456
63457
63458
63459

63460
63461
63462
63463
63464
63465
63466
63467
63468
63469
63470
63471
63472
63473
63474







-






-
+






+







quêter/a0p+
quêteuse/F.
quetsche/S.
quetschier/S.
quetter/a0p+
quetzal/S.
queue/S.
queue-d'aronde
queue-de-cheval
queue-de-cochon
queue-de-morue
queue-de-pie
queue-de-rat
queue-de-renard
queues-d'aronde
queue-d'aronde
queues-de-cheval
queues-de-cochon
queues-de-morue
queues-de-pie
queues-de-rat
queues-de-renard
queues-d'aronde
queuillère/S.
queursage/S.
queusot/S.
queutarde/F.
queuter/a0p+
queux
qui
63530
63531
63532
63533
63534
63535
63536
63537
63538


63539
63540
63541
63542
63543
63544
63545
63546
63547
63548


63549
63550
63551
63552
63553
63554
63555
63557
63558
63559
63560
63561
63562
63563


63564
63565
63566
63567
63568
63569
63570
63571
63572
63573
63574
63575
63576
63577
63578
63579
63580
63581
63582
63583
63584







-
-
+
+










+
+







quitus
qui-vive
quiz
quizalofop/S.
quoailler
quocngu/S.
quoi
quoiqu/--
quoique
quoique
quoiqu'/--
quolibet/S.
quorum/S.
quota/S.
quotepart/S.
quotidienne/F.
quotidiennement
quotidienneté/S.
quotient/S.
quotité/S.
quotter/a0p.
qu'/--
qu'en-dira-t-on
qwerty
r
ra
rab/S.
rabâchage/S.
rabâchement/S.
rabâcher/a0p+
64261
64262
64263
64264
64265
64266
64267

64268
64269
64270
64271
64272
64273
64274
64290
64291
64292
64293
64294
64295
64296
64297
64298
64299
64300
64301
64302
64303
64304







+







ratichon/S.
raticide/S.
raticide/S.
ratière/F.
ratification/S.
ratifier/a0p+
ratinage/S.
ratine/S.
ratiner/a0p+
rating/S.
ratio/S.
ratiocinante/F.
ratiocination/S.
ratiociner/a0p.
ratiocineuse/F.
64577
64578
64579
64580
64581
64582
64583

64584
64585
64586
64587
64588
64589
64590
64607
64608
64609
64610
64611
64612
64613
64614
64615
64616
64617
64618
64619
64620
64621







+







recéder/c0p+
recel/S.
recèlement/S.
recéler/c0p+
recéleuse/F.
récemment
récence/S.
recensable/S.
recensement/S.
recenser/a0p+
recenseuse/F.
recension/S.
récente/F.
recentrage/S.
recentrement/S.
64918
64919
64920
64921
64922
64923
64924

64925
64926
64927
64928
64929
64930
64931
64949
64950
64951
64952
64953
64954
64955
64956
64957
64958
64959
64960
64961
64962
64963







+







récuser/a0p+
recyclabilité/S.
recyclable/S.
recyclage/S.
recycler/a0p+
recyclerie/S.
recycleuse/F.
rédac-chef/S.
rédaction/S.
rédactionnel/S.
rédactionnelle/F.
rédactrice/F.
redan/S.
reddition/S.
redéclarer/a0p+
66216
66217
66218
66219
66220
66221
66222

66223
66224
66225
66226
66227
66228
66229
66248
66249
66250
66251
66252
66253
66254
66255
66256
66257
66258
66259
66260
66261
66262







+







résistible/S.
résistive/F.
résistivité/S.
résistor/S.
resituer/a0p+
resocialisation/S.
resocialiser/a0p+
resolidifier/a0p+
résolubilité/S.
résoluble/S.
résolument
résolution/S.
résolutive/F.
résolutoire/S.
résolvance/S.
67676
67677
67678
67679
67680
67681
67682
67683
67684
67685
67686
67687
67688
67689
67690
67709
67710
67711
67712
67713
67714
67715

67716
67717
67718
67719
67720
67721
67722







-







rythmicité/S.
rythmique/S.
rythmiquement
s
s/U.||--
sa
saanen/S.
s'abader
sabayon/S.
sabbat/S.
sabbathienne/F.
sabbatique/S.
sabéenne/F.
sabéisme/S.
sabelle/S.
67718
67719
67720
67721
67722
67723
67724
67725
67726
67727
67728
67729
67730
67731
67732
67750
67751
67752
67753
67754
67755
67756

67757
67758
67759
67760
67761
67762
67763







-







sabouler/a0p+
sabra/S.
sabrage/S.
sabre/S.
sabrer/a0p+
sabretache/S.
sabreuse/F.
s'abriller
saburrale/W.
saburre/S.
sac/S.
sacagner/a0p+
saccade/S.
saccader/a0p+
saccage/S.
67827
67828
67829
67830
67831
67832
67833
67834
67835
67836
67837
67838
67839
67840
67841
67858
67859
67860
67861
67862
67863
67864

67865
67866
67867
67868
67869
67870
67871







-







sagaie/S.
sagard/S.
sage/S.
sagefemme/S.
sagement
sagesse/S.
sagette/S.
s'agir/fZ
sagittaire/S.
sagittale/W.
sagittée/F.
sagou/S.
sagouin/S.
sagoutier/S.
sagum/S.
72512
72513
72514
72515
72516
72517
72518

72519
72520
72521
72522
72523
72524
72525
72542
72543
72544
72545
72546
72547
72548
72549
72550
72551
72552
72553
72554
72555
72556







+







surharmonique/S.
surhaussement/S.
surhausser/a0p+
surhomme/S.
surhumaine/F.
surhumainement
surhumanité/S.
surhydratation/S.
suricate/S.
surie/F.
surimi/S.
surimposer/a0p+
surimposition/S.
surimpression/S.
surimpressionner/a0p+
72625
72626
72627
72628
72629
72630
72631

72632
72633
72634
72635
72636
72637
72638
72656
72657
72658
72659
72660
72661
72662
72663
72664
72665
72666
72667
72668
72669
72670







+







surplomber/a0p+
surplus
surpoids
surpopulation/S.
surprenamment
surprenante/F.
surprendre/tF
surprescription/S.
surpresseur/S.
surpression/S.
surprime/S.
surprise/S.
surprise-partie
surprises-parties
surproduction/S.
73025
73026
73027
73028
73029
73030
73031




73032
73033
73034
73035
73036
73037
73038
73057
73058
73059
73060
73061
73062
73063
73064
73065
73066
73067
73068
73069
73070
73071
73072
73073
73074







+
+
+
+







systémicienne/F.
systémique/S.
systole/S.
systolique/S.
systyle/S.
systyle/S.
syzygie/S.
s'
s'abader
s'abriller
s'agir/fZ
t
t/||--
ta
tabac
tabac/S.
tabacologie/S.
tabacologue/S.
73870
73871
73872
73873
73874
73875
73876
73877
73878
73879
73880
73881
73882
73883
73884
73906
73907
73908
73909
73910
73911
73912

73913
73914
73915
73916
73917
73918
73919







-







télex
télexer/a0p+
télexiste/S.
télicité/S.
tell/S.
telle/F.
telle/F.
t'elle/S=
tellement
tellière/S.
tellière/S.
telline/S.
tellurate/S.
tellure/S.
tellureuse/W.
73929
73930
73931
73932
73933
73934
73935
73936
73937
73938
73939
73940
73941
73942
73943
73964
73965
73966
73967
73968
73969
73970

73971
73972
73973
73974
73975
73976
73977







-







temporellement
temporisation/S.
temporisatrice/F.
temporiser/a0p+
temporo-pariétale/F.
temps
temps-réel
t'en
tenable/S.
tenace/S.
tenacement
ténacité/S.
tenaille/S.
tenaillement/S.
tenailler/a0p+
74696
74697
74698
74699
74700
74701
74702
74703
74704
74705
74706
74707
74708
74709
74710
74730
74731
74732
74733
74734
74735
74736

74737
74738
74739
74740
74741
74742
74743







-







tignasse/S.
tigrer/a0p+
tigresse/F.
tigridie/S.
tigron/S.
tiguidou/S.
tiki/S.
t'il/S=
tilapia/S.
tilbury/S.
tilde/S.
tiliacée/S.
tillac/S.
tillage/S.
tillandsie/S.
74959
74960
74961
74962
74963
74964
74965
74966
74967
74968
74969
74970
74971
74972
74973
74992
74993
74994
74995
74996
74997
74998

74999
75000
75001
75002
75003
75004
75005







-







tomodensitomètre/S.
tomodensitométrie/S.
tomodensitométrique/S.
tomographe/S.
tomographie/S.
tomographique/S.
tom-pouce
t'on
ton
ton/S.
tonale/F.
tonalité/S.
tondage/S.
tondaille/S.
tondaison/S.
75636
75637
75638
75639
75640
75641
75642

75643
75644
75645
75646
75647
75648
75649
75668
75669
75670
75671
75672
75673
75674
75675
75676
75677
75678
75679
75680
75681
75682







+







transistorisation/S.
transistoriser/a0p+
transit/S.
transitaire/S.
transiter/a0p+
transition/S.
transitionnelle/F.
transitionner/a0p+
transitive/F.
transitivement
transitivité/S.
transitoire/S.
transitoirement
translater/a0p+
translatif/S.
76273
76274
76275
76276
76277
76278
76279

76280
76281
76282
76283
76284
76285
76286
76306
76307
76308
76309
76310
76311
76312
76313
76314
76315
76316
76317
76318
76319
76320







+







triterpénique/S.
trithérapie/S.
triticale/S.
tritiée/F.
tritium/S.
triton/S.
triturable/S.
triturage/S.
triturateur/S.
trituration/S.
triturer/a0p+
triumvir/S.
triumvirale/W.
triumvirat/S.
trivalence/S.
76333
76334
76335
76336
76337
76338
76339

76340
76341
76342
76343
76344
76345
76346
76367
76368
76369
76370
76371
76372
76373
76374
76375
76376
76377
76378
76379
76380
76381







+







trois-quarts
trois-quatre
trois-six
trole/S.
trôler/a0p.
troll/S.
troller/a0p.
trollesque/S.
trolley/S.
trolleybus
trombe/S.
trombidion/S.
trombidiose/S.
trombine/S.
trombinoscope/S.
76563
76564
76565
76566
76567
76568
76569
76570
76571

76572
76573
76574
76575
76576
76577
76578
76598
76599
76600
76601
76602
76603
76604

76605
76606
76607
76608
76609
76610
76611
76612
76613







-

+







tubuline/S.
tubulopathie/S.
tubulure/S.
tudesque/S.
tudieu
tue-chien/S.
tue-diable/S.
tue-l'amour
tue-loup/S.
tue-l'amour
tue-mouche/S.
tuer/a0p+
tuerie/S.
tue-tête
tueuse/F.
tuf/S.
tufeau/X.
76808
76809
76810
76811
76812
76813
76814





76815
76816
76817
76818
76819
76820
76821
76843
76844
76845
76846
76847
76848
76849
76850
76851
76852
76853
76854
76855
76856
76857
76858
76859
76860
76861







+
+
+
+
+







tyrolienne/F.
tyrosinase/S.
tyrosine/S.
tyrosinémie/S.
tyrothricine/S.
tyrrhénienne/F.
tzatziki/S.
t'
t'elle/S=
t'en
t'il/S=
t'on
u
u/||--
ua/||--
ubac/S*
ubérale/S*
uberisation/S*
ubique/S*
78165
78166
78167
78168
78169
78170
78171

78172
78173
78174
78175
78176
78177
78178
78205
78206
78207
78208
78209
78210
78211
78212
78213
78214
78215
78216
78217
78218
78219







+







vidéographique/S.
vidéoludique/S.
vidéophone/S.
vidéophonie/S.
vidéoprojecteur/S.
vidéoprojection/S.
vidéoprotection/S.
vidéo-protection/S.
vide-ordure/S.
vidéosphère/S.
vidéosurveillance/S.
vidéotex
vidéothécaire/S.
vidéothèque/S.
vidéotransmission/S.
78204
78205
78206
78207
78208
78209
78210

78211
78212
78213
78214
78215
78216
78217
78245
78246
78247
78248
78249
78250
78251
78252
78253
78254
78255
78256
78257
78258
78259







+







vielleur/S.
vielleuse/W.
vielliste/S.
viennoise/F.
viennoiserie/S.
vierge/S.
vierge/S.
viétique/S.
vietnamienne/F.
vieux-lille
vif-argent
vif-argent
vigésimale/W.
vigie/S.
vigilamment
78754
78755
78756
78757
78758
78759
78760

78761
78762
78763
78764
78765
78766
78767
78768
78769
78770
78771
78772
78773
78774
78775

78776

78777
78778
78779
78780
78781
78782
78783
78796
78797
78798
78799
78800
78801
78802
78803
78804
78805
78806
78807
78808
78809
78810
78811
78812
78813
78814
78815
78816
78817
78818
78819

78820
78821
78822
78823
78824
78825
78826
78827







+















+
-
+







vorace/S.
voracement
voracité/S.
vortex
vorticelle/S.
vos
vosgienne/F.
voszigues
votante/F.
votation/S.
vote/S.
voter/a0p+
voteuse/F.
votive/F.
votre
vôtre/S.
vouer/a0p+
vouge/S.
vouivre/S.
vouloir/S.
vouloir/pB
vous
vous
vous-même
vous-même/S=
vous-mêmes
vousseau/X.
voussoiement/S.
voussoir/S.
voussoyer/a0p+
voussure/S.
voutain/S.
voute/S.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.aff from [f6ec1552b8] to [b8190e178d].

1
2
3
4
5

6
7

8
9
10
11
12
13
14
1
2
3
4

5
6

7
8
9
10
11
12
13
14




-
+

-
+







# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “TOUTES VARIANTES” v6.3
# AFFIXES DU DICTIONNAIRE ORTHOGRAPHIQUE FRANÇAIS “TOUTES VARIANTES” v7.0
# par Olivier R. -- licence MPL 2.0
# Généré le 01-07-2018 à 20:45
# Généré le 14-09-2018 à 10:59
# Pour améliorer le dictionnaire, allez sur http://www.dicollecte.org/



SET UTF-8

WORDCHARS -’'1234567890.

Modified gc_lang/fr/oxt/Dictionnaires/dictionaries/fr-toutesvariantes.dic from [d91ff51010] to [4c02fac808].

1

2
3
4
5
6
7
8

1
2
3
4
5
6
7
8
-
+







83147
83192
&
1er/--
1ers/--
1re/--
1res/--
1ʳᵉ/--
1ʳᵉˢ/--
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195



1196
1197
1198
1199
1200
1201
1202
1186
1187
1188
1189
1190
1191
1192



1193
1194
1195
1196
1197
1198
1199
1200
1201
1202







-
-
-
+
+
+







Bradley
Bradley
Brafman
Brahim
Brahma
Brahmapoutre
Brahms
Braine-l'Alleud
Braine-le-Château
Braine-le-Comte
Braine-le-Château
Braine-le-Comte
Braine-l'Alleud
Brakel
Brand
Brandon
Brasov
Brassac
Brasschaat
Brassica
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1498
1499
1500
1501
1502
1503
1504

1505
1506
1507
1508
1509
1510
1511







-







Casanova
Casey
Casimir
Casimir-Perier
Caspienne
Cassandra
Cassandre
Casseurs_Flowters
Cassidy
Cassini
Cassiopée
Castafolte
Castanet-Tolosan
Castelnaudary
Castelnau-le-Lez
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642




1643
1644
1645
1646
1647
1648
1649
1631
1632
1633
1634
1635
1636
1637




1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648







-
-
-
-
+
+
+
+







Charybde
Chase
Chasles
Chastel-Arnaud
Château-Gontier
Château-Thierry
Châteaubriant
Château-d'Œx
Château-d'Olonne
Châteaudouble
Châteaudun
Châteaudouble
Châteaudun
Château-d'Œx
Château-d'Olonne
Châteauguay
Châteauneuf-du-Pape
Châteauneuf-les-Martigues
Châteaurenard
Châteauroux
Châtelain
Châtelet
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
1986
1987
1988
1989
1990
1991
1992

1993
1994
1995
1996
1997
1998
1999







-







DEUG
DFSG
DG
DGSE
DGSI
DHCP
DHEA
D'Holbach
DJ
DM
DNS
DOM
DOM-TOM
DPTH
DREES
2337
2338
2339
2340
2341
2342
2343

2344
2345
2346
2347
2348
2349
2350
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349







+







Dynkin
Dysnomie
Dʳ
Dʳˢ
Dʳᵉ
Dʳᵉˢ
Dᴏꜱꜱᴍᴀɴɴ
D'Holbach
ECS/L'D'Q'
EDF/L'D'Q'
EEPROM/L'D'Q'
EFREI/L'D'Q'
EFS/L'D'Q'
EIB/L'D'Q'
ENA/L'D'Q'
2396
2397
2398
2399
2400
2401
2402

2403
2404
2405
2406
2407
2408
2409
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409







+







Eeklo/L'D'Q'
Eeyou/L'
Effinergie
Égée/L'D'Q'
Éghezée/L'D'Q'
Églantine/L'D'Q'
Égypte/L'D'
Ehlers-Danlos
Ehrenpreis/L'D'Q'
Ehresmann/L'D'Q'
Eibit/||--
Eiffel/L'D'Q'
Eileen/L'D'Q'
Eilenberg/L'D'Q'
Eilleen/L'D'Q'
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3160
3161
3162
3163
3164
3165
3166

3167
3168
3169
3170
3171
3172
3173







-







Goebbels
Goëmar
Goethe
Gogh
Gogol
Golan
Goldbach
Golden_Show
Goldoni
Golgi
Golgotha
Goliath
Gomorrhe
Goncourt
Gondwana
3476
3477
3478
3479
3480
3481
3482

3483
3484
3485
3486
3487
3488
3489
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489







+







Helvétie/L'D'
Hem/L'D'Q'
Hemiksem/L'D'Q'
Hemingway/L'D'Q'
Henan
Hénault
Hendaye/L'D'Q'
Hendrik/L'D'Q'
Hénin-Beaumont/L'D'Q'
Hennebont/L'D'Q'
Hénoch/L'D'Q'
Henri/L'D'Q'
Henriette/L'D'Q'
Henrique/L'D'Q'
Henry
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3502
3503
3504
3505
3506
3507
3508

3509
3510
3511
3512
3513
3514
3515







-







Héricourt/L'D'Q'
Hermann/L'D'Q'
Hermès/L'D'Q'
Hermine/L'D'Q'
Hermione/L'D'Q'
Hermite/L'D'Q'
Hernando/L'D'Q'
Hero_Corp
Hérode/L'D'Q'
Hérodote/L'D'Q'
Hérouville-Saint-Clair/L'D'Q'
Herschel/L'D'Q'
Herselt/L'D'Q'
Herstal
Hertz
3972
3973
3974
3975
3976
3977
3978

3979
3980
3981
3982
3983
3984
3985
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985







+







Joanna
Joannie
Joaquim
Jocelyn
Jocelyne
Joconde
Jocrisse
Jodhpur
Jodie
Jodoigne
Jody
Joe
Joël
Joëlle
Joey
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4243
4244
4245
4246
4247
4248
4249

4250
4251
4252
4253
4254
4255
4256







-







Kjeldahl
Klaus
Klee
Klein
Klimt
Klitzing
Klondike
K'nex
Knokke-Heist
Knossos
Ko/||--
Kobe
Koch
Kodaira
Koekelberg
4315
4316
4317
4318
4319
4320
4321

4322
4323
4324
4325
4326
4327
4328
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328







+







Kuurne
Kyle
Kylian
Kylie
Kyllian
Kyoto
Kyushu
K'nex
L/U.||--
LCD
LED
LGBT
LGBTI
LGBTIQ
LGV
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4423
4424
4425
4426
4427
4428
4429

4430
4431
4432
4433
4434
4435
4436







-







Laval
Lavaur
Laveran
Lavoisier
Lawrence
Laxou
Lazare
Le_Bris
Léa
Leah
Léandre
Léane
Lebbeke
Lebesgue
Lebrun
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4483
4484
4485
4486
4487
4488
4489

4490
4491
4492
4493
4494
4495
4496







-







Léonore
Léontine
Léopold
Léopoldine
Leopoldt
Léopoldville
Leroy
Les_Vigneaux
Lesage
Lesbos
Lesieur
Lesley
Leslie
Lesneven
Lesotho
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4683
4684
4685
4686
4687
4688
4689

4690
4691
4692
4693
4694
4695
4696







-







Louvain-la-Neuve
Louvière
Louviers
Louvre
Love
Lovecraft
Lovelace
Lovely_Rita
Lovćen
Loyola
Loyre
Lozère
Luanda
Lubbeek
Lübeck
4894
4895
4896
4897
4898
4899
4900

4901
4902
4903
4904
4905
4906
4907
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905







+







Mammon
Manach
Managua
Manama
Manaus
Manche
Manchester
Mandalay
Mandchourie
Mandela
Mandelbrot
Mandelieu-la-Napoule
Mandor
Mandy
Manet
5068
5069
5070
5071
5072
5073
5074

5075
5076
5077
5078
5079
5080
5081
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080







+







Maslow
Mason
Massachusetts
Masséna
Massenet
Massimo
Massy
MasterCard
Masutti
Matchstick
Mateo
Mathéo
Matheron
Matheson
Mathias
5215
5216
5217
5218
5219
5220
5221

5222
5223
5224
5225
5226
5227
5228
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228







+







Mérimée
Merkel
Merleau-Ponty
Merlin
Méru
Meryl
Mésie
Mésoamérique
Mésopotamie
Messaline
Messer
Messine
Météo-France
Mettet
Metz
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5320
5321
5322
5323
5324
5325
5326

5327
5328
5329
5330
5331
5332
5333







-







Mithra
Mithridate
Mitnick
Mitry-Mory
Mitsubishi
Mittelhausbergen
Mitterrand
Mix_Bizarre
Miyabi
Mlle/S.
Mme/S.
Mnémosyne
Mo/||--
Moab
Möbius
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543

5544
5545
5546
5547
5548
5549
5550
5523
5524
5525
5526
5527
5528
5529

5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549







-












+







Mᵍʳˢ
Mᵐᵉ
Mᵐᵉˢ
N/U.||--
NASA
NDLR
NDT
N'Djamena
NEC
NF
NIRS
NSA
Nabil
Nabuchodonosor
Nacira
Nadège
Nadia
Nadim
Nadine
Nadir
Nadja
Nagasaki
Nagata
Nagoya
Nagy
Nahum
Naimark
Nairobi
5764
5765
5766
5767
5768
5769
5770

5771
5772
5773
5774
5775
5776
5777
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777







+







Nusselt
Nuuk
Nvidia
Nyarlathotep
Nyons
Nyquist
Nyx
N'Djamena
OCDE/L'D'Q'
OCaml/L'D'Q'
ODF/L'D'Q'
Œdipe/L'D'Q'
OFBiz/D'Q'
OFCE/L'D'Q'
OGM/L'D'Q'
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5825
5826
5827
5828
5829
5830
5831

5832
5833
5834
5835
5836
5837
5838







-







Oignies/L'D'Q'
Oisans/L'
Oise/L'
Oissel/L'D'Q'
Oklahoma/L'D'
Olaf/L'D'Q'
Oldham/L'D'Q'
Olea_Medical
Oleg/L'D'Q'
Olen/L'D'Q'
Oléron/L'D'Q'
Olga/L'D'Q'
Oliver/L'D'Q'
Olivet/L'D'Q'
Olivia/L'D'Q'
6352
6353
6354
6355
6356
6357
6358

6359
6360
6361
6362
6363
6364
6365
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365







+







Pullman
Pune
Purcell
Puteaux
Puurs
Puy-de-Dôme
Puy-en-Velay
Pygmalion
Pyongyang
Pyrénées
Pyrénées-Atlantiques
Pyrénées-Orientales
Pyrrha
Pyrrhus
Pythagore
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6586
6587
6588
6589
6590
6591
6592


6593
6594
6595
6596
6597
6598
6599







-
-







Rivery
Riviera
Rivière-Pilote
Rivière-Salée
Rixensart
Rixheim
Riyad
R'lyeh
R'n'B
Roanne
Rob
Robert
Roberta
Roberte
Roberto
Roberval
6728
6729
6730
6731
6732
6733
6734


6735
6736
6737
6738
6739
6740
6741
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741







+
+







Ruth
Rutherford
Rutishauser
Rwanda
Ryan
Ryanair
Ryxeo
R'lyeh
R'n'B
S/U.||--
SA
SADT
SAP
SARL
SCIC
SCOT
6862
6863
6864
6865
6866
6867
6868
6869
6870


6871
6872
6873
6874
6875
6876
6877
6862
6863
6864
6865
6866
6867
6868


6869
6870
6871
6872
6873
6874
6875
6876
6877







-
-
+
+







Saint-Louis
Saint-Malo
Saint-Mandé
Saint-Marin
Saint-Martin
Saint-Martin-Boulogne
Saint-Martin-Petit
Saint-Martin-d'Hères
Saint-Martin-de-Crau
Saint-Martin-de-Crau
Saint-Martin-d'Hères
Saint-Maur-des-Fossés
Saint-Maurice
Saint-Max
Saint-Maximin-la-Sainte-Baume
Saint-Médard-en-Jalles
Saint-Michel-de-Feins
Saint-Michel-sur-Orge
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7074
7075
7076
7077
7078
7079
7080

7081
7082
7083
7084
7085
7086
7087







-







Schwerin
Schwytz
Schwyz
Scipion
Scott
Scoville
Scrameustache/S.
Scred_TV
Scudéry
Scylla
SeaMonkey
Seagate
Seamus
Sean
Seat
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898


7899
7900
7901
7902
7903
7904
7905
7887
7888
7889
7890
7891
7892
7893


7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904







-
-


+
+







Vachez
Vadim
Vaduz
Vahan
Vaires-sur-Marne
Valais
Valbonne
Val-d'Oise
Val-d'Or
Val-de-Marne
Val-de-Reuil
Val-d'Oise
Val-d'Or
Valence
Valenciennes
Valentigney
Valentin
Valentina
Valentine
Valentinien
8226
8227
8228
8229
8230
8231
8232

8233
8234
8235
8236
8237
8238
8239
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239







+







Wilfred
Wilfrid
Wilfried
Wilhelm
Will
Willa
Willebroek
Willem
William
Williams
Willie
Willy
Wilma
Wilson
Windhoek
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400

8401
8402
8403
8404
8405
8406
8407
8391
8392
8393
8394
8395
8396
8397

8398
8399
8400
8401
8402
8403
8404
8405
8406
8407







-


+







Xavière
Xe/--
Xebia
Xenia
Xénophane
Xénophon
Xerxès
Xi'an
Xining
Xinjiang
Xi'an
Xᵉ/--
YHWH
Yacine
Yaël
Yaëlle
Yahvé
Yahweh
11868
11869
11870
11871
11872
11873
11874

11875
11876
11877
11878
11879
11880
11881
11868
11869
11870
11871
11872
11873
11874
11875
11876
11877
11878
11879
11880
11881
11882







+







annulable/S*
annulaire/S*
annulation/S*
annulative/F*
annulatrice/F*
annulement/S*
annuler/a4p+
annulingus/L'D'Q'
annuus
anoblir/f4p+
anoblissante/F*
anoblissement/S*
anode/S*
anodine/F*
anodique/S*
14463
14464
14465
14466
14467
14468
14469

14470
14471
14472
14473
14474
14475
14476
14464
14465
14466
14467
14468
14469
14470
14471
14472
14473
14474
14475
14476
14477
14478







+







autoclave/S*
autoclave/S*
autoclaviste/S*
autocollante/F*
autocommutateur/S*
autocompenser/a4p+
auto-compenser/a4p+
autocomplétion/S*
autoconcurrence/S*
autoconditionnement/S*
auto-conditionnement/S*
autoconduction/S*
autoconservation/S*
autoconsommation/S*
autoconstruction/S*
14893
14894
14895
14896
14897
14898
14899

14900
14901
14902
14903
14904
14905
14906
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909







+







avionneuse/F*
avions-cargos/D'Q'
avipelvien/S*
aviron/S*
avirulence/S*
avis/L'D'Q'
aviser/a4p+
aviseur/S*
aviso/S*
avitaillement/S*
avitailler/a4p+
avitailleuse/F*
avitaminose/S*
avivage/S*
avivement/S*
15199
15200
15201
15202
15203
15204
15205
15206
15207
15208
15209
15210


15211
15212
15213
15214
15215
15216
15217
15202
15203
15204
15205
15206
15207
15208

15209

15210
15211
15212
15213
15214
15215
15216
15217
15218
15219
15220







-

-


+
+







baguenauder/a0p+
baguenaudier/S.
baguer/a0p+
baguette/S.
baguier/S.
baguiste/S.
bah
baha'ie/F.
bahaïe/F.
baha'isme/S.
bahaïsme/S.
bahamienne/F.
baha'ie/F.
baha'isme/S.
bahreïnie/F.
baht/S.
bahut/S.
bahutage/S.
baie/F.
baignade/S.
baigner/a0p+
16727
16728
16729
16730
16731
16732
16733
16734
16735

16736
16737
16738
16739
16740
16741
16742
16730
16731
16732
16733
16734
16735
16736

16737
16738
16739
16740
16741
16742
16743
16744
16745







-

+







binocle/S.
binoculaire/S.
binodale/S.
binôme/S.
binomiale/W.
binominale/W.
binouze/S.
bin's
bintje/S.
bin's
bio
bio/S.
bio/S.
bioabsorbable/S.
bioaccumulable/S.
bioaccumulation/S.
bioacoustique/S.
17746
17747
17748
17749
17750
17751
17752

17753
17754
17755
17756
17757
17758
17759
17749
17750
17751
17752
17753
17754
17755
17756
17757
17758
17759
17760
17761
17762
17763







+







bouiboui/S.
bouif/S.
bouillabaisse/S.
bouillage/S.
bouillante/F.
bouillasse/S.
bouille/S.
bouillette/S.
bouilleuse/F.
bouillie/S.
bouillir/iQ
bouillissage/S.
bouilloire/S.
bouillon/S.
bouillonnante/F.
20551
20552
20553
20554
20555
20556
20557

20558
20559
20560
20561
20562
20563
20564
20555
20556
20557
20558
20559
20560
20561
20562
20563
20564
20565
20566
20567
20568
20569







+







caviarder/a0p+
cavicorne/S.
caviste/S.
cavitaire/S.
cavitation/S.
cavité/S.
cd/U.||--
ce
ce
céans
cébette/S.
cébiste/S.
ceci
cécidie/S.
cécidomyie/S.
20903
20904
20905
20906
20907
20908
20909
20910
20911
20912
20913
20914
20915
20916
20917
20908
20909
20910
20911
20912
20913
20914

20915
20916
20917
20918
20919
20920
20921







-







cesse
cesser/a0p+
cessez-le-feu
cessibilité/S.
cessible/S.
cession/S.
cessionnaire/S.
c'est-à-dire
ceste/S.
cestode/S.
césure/S.
cet
cétacé/S.
cétane/S.
céteau/X.
22156
22157
22158
22159
22160
22161
22162
22163
22164
22165
22166
22167
22168
22169
22170
22160
22161
22162
22163
22164
22165
22166

22167
22168
22169
22170
22171
22172
22173







-







chrysostome/S.
chrysothérapie/S.
chrysotile/S.
chtarbée/F.
chthonienne/F.
chti/S.
chtimi/S.
ch'timi/S.
chtonienne/F.
chtouille/S.
chuchotage/S.
chuchotante/F.
chuchotement/S.
chuchoter/a0p+
chuchoterie/S.
22182
22183
22184
22185
22186
22187
22188

22189
22190
22191
22192
22193
22194
22195
22185
22186
22187
22188
22189
22190
22191
22192
22193
22194
22195
22196
22197
22198
22199







+







chutney/S.
chyle/S.
chylifère/S.
chyme/S.
chymotrypsine/S.
chyprée/F.
chypriote/S.
ch'timi/S.
ci
ciabatta/S.
ciao
ci-après
ci-avant
cibiche/S.
cibiste/S.
27033
27034
27035
27036
27037
27038
27039


27040
27041
27042
27043
27044
27045
27046
27037
27038
27039
27040
27041
27042
27043
27044
27045
27046
27047
27048
27049
27050
27051
27052







+
+







cytosquelette/S.
cytostatique/S.
cytotoxicité/S.
cytotoxique/S.
czar/S.
czardas
czimbalum/S.
c'
c'est-à-dire
d
d/||--
dB/||--
daba/S.
dacite/S.
dacryoadénite/S.
dacryocystite/S.
27197
27198
27199
27200
27201
27202
27203
27204
27205
27206
27207
27208
27209
27210
27211

27212
27213
27214
27215
27216
27217
27218
27203
27204
27205
27206
27207
27208
27209

27210
27211
27212
27213
27214
27215
27216
27217
27218
27219
27220
27221
27222
27223
27224







-







+







datte/S.
dattier/S.
datura/S.
daube/S.
dauber/a0p+
daubeuse/F.
daubière/S.
d'aucuns
dauphine/F.
dauphinelle/S.
dauphinoise/F.
daurade/S.
davantage
davier/S.
dazibao/S.
de
de
dé/S.
déactiver/a0p+
deal/S.
dealer/S.
dealer/a0p+
dealeuse/F.
28204
28205
28206
28207
28208
28209
28210

28211
28212
28213
28214
28215
28216
28217
28210
28211
28212
28213
28214
28215
28216
28217
28218
28219
28220
28221
28222
28223
28224







+







dégeler/b0p+
dégénération/S.
dégénérative/F.
dégénérée/F.
dégénérer/c0p+
dégénérescence/S.
dégénérescente/F.
dégenrer/a0p+
dégerbage/S.
dégermage/S.
dégermer/a0p+
dégingander/a0p+
dégiter/a0p+
dégîter/a0p+
dégivrage/S.
29100
29101
29102
29103
29104
29105
29106

29107
29108
29109
29110
29111
29112
29113
29107
29108
29109
29110
29111
29112
29113
29114
29115
29116
29117
29118
29119
29120
29121







+







dépoitrailler/a0p+
dépolarisation/S.
dépolariser/a0p+
dépolir/f0p+
dépolissage/S.
dépolitisation/S.
dépolitiser/a0p+
dépolluante/F.
dépolluer/a0p+
dépollution/S.
dépolymérisation/S.
dépolymériser/a0p+
déponente/F.
dépontiller/a0p.
dépopulation/S.
29578
29579
29580
29581
29582
29583
29584

29585
29586
29587
29588
29589
29590
29591
29586
29587
29588
29589
29590
29591
29592
29593
29594
29595
29596
29597
29598
29599
29600







+







désensibilisation/S.
désensibiliser/a0p+
désensorceler/d0p+
désentoilage/S.
désentoiler/a0p+
désentortiller/a0p+
désentraver/a0p+
désentrelacer/a4p+
désenvasement/S.
désenvaser/a0p+
désenvelopper/a0p+
désenvenimer/a0p+
désenverguer/a0p+
désenvoutement/S.
désenvoûtement/S.
31949
31950
31951
31952
31953
31954
31955



31956
31957
31958
31959
31960
31961
31962
31958
31959
31960
31961
31962
31963
31964
31965
31966
31967
31968
31969
31970
31971
31972
31973
31974







+
+
+







dystrophique/S.
dystrophisation/S.
dysurie/S.
dysurique/S.
dytique/S.
dzêta
dzêta/S.
d'
d'
d'aucuns
e
eV/U.||--
eau/X*
eau-de-vie/L'D'Q'
eau-forte/L'D'Q'
eaux-de-vie/D'Q'
eaux-fortes/D'Q'
34352
34353
34354
34355
34356
34357
34358
34359
34360
34361
34362
34363
34364
34365
34366
34367
34368
34369
34370
34371
34372
34373
34374
34375
34376
34377
34378
34379
34380
34381
34364
34365
34366
34367
34368
34369
34370

34371
34372
34373
34374
34375
34376
34377
34378
34379
34380
34381
34382
34383
34384

34385
34386
34387
34388
34389
34390
34391







-














-







entraccuser/a6p+
entracte/S*
entradmirer/a6p+
entraide/S*
entraider/a6p+
entrailles/D'Q'
entraimer/a6p+
entr'aimer/a6p+
entrain/S*
entrainable/S*
entraînable/S*
entrainante/F*
entraînante/F*
entrainement/S*
entraînement/S*
entrainer/a4p+
entraîner/a4p+
entraineuse/F*
entraîneuse/F*
entrait/S*
entrante/F*
entrapercevoir/pK
entr'apercevoir/pK
entrave/S*
entraver/a2p+
entravon/S*
entraxe/S*
entre/D'Q'Qj
entre-axes/L'D'Q'
entrebâillement/S*
34412
34413
34414
34415
34416
34417
34418
34419
34420
34421
34422
34423
34424
34425
34426
34422
34423
34424
34425
34426
34427
34428

34429
34430
34431
34432
34433
34434
34435







-







entrefaites
entrefer/S*
entrefilet/S*
entrefrapper/a6p+
entre-frapper/a6p+
entregent/S*
entrégorger/a6p+
entr'égorger/a6p+
entrehaïr/fB
entre-haïr/fB
entreheurter/a6p+
entre-heurter/a6p+
entrejambe/S*
entre-jambe/S*
entrelacement/S*
34485
34486
34487
34488
34489
34490
34491
34492
34493
34494
34495
34496
34497
34498
34499
34500





34501
34502
34503
34504
34505
34506
34507
34494
34495
34496
34497
34498
34499
34500

34501
34502
34503
34504
34505
34506

34507
34508
34509
34510
34511
34512
34513
34514
34515
34516
34517
34518
34519







-






-

+
+
+
+
+







entrevoie/S*
entre-voie/S*
entrevoir/pF
entrevous/L'D'Q'
entrevouter/a2p+
entrevoûter/a2p+
entrevue/S*
entr'hiverner
entrisme/S*
entropie/S*
entropion/S*
entropique/S*
entroque/S*
entrouvrir/iC
entr'ouvrir/iC
entrure/S*
entr'aimer/a6p+
entr'apercevoir/pK
entr'égorger/a6p+
entr'hiverner
entr'ouvrir/iC
entuber/a2p+
enturbanner/a4p+
enture/S*
énucléation/S*
énucléer/a2p+
énumérabilité/S*
énumérable/S*
37194
37195
37196
37197
37198
37199
37200
37201
37202
37203
37204
37205

37206

37207
37208
37209
37210
37211
37212
37213
37206
37207
37208
37209
37210
37211
37212

37213
37214
37215

37216
37217
37218
37219
37220
37221
37222
37223
37224
37225







-



-
+

+







fécule/S.
féculence/S.
féculent/S.
féculente/F.
féculer/a0p+
féculerie/S.
féculière/F.
feda'i
fedayin
fedayin/S.
fédayin/S.
fedda'i
feda'i
feddayin
fedda'i
fédérale/W.
fédéralisation/S.
fédéraliser/a0p+
fédéralisme/S.
fédéraliste/S.
fédération/S.
fédérative/F.
43917
43918
43919
43920
43921
43922
43923

43924
43925
43926
43927
43928
43929
43930
43929
43930
43931
43932
43933
43934
43935
43936
43937
43938
43939
43940
43941
43942
43943







+







hypercentre/S*
hyperchimie/S*
hyperchlorhydrie/S*
hypercholestérolémie/S*
hypercholestérolémique/S*
hyperchrome/S*
hyperchromie/S*
hypercoagulabilité/S*
hypercomplexe/S*
hyperconformisme/S*
hyperconnectée/F*
hypercontinentale/W*
hypercontrôle/S*
hypercorrecte/F*
hypercorrection/S*
43992
43993
43994
43995
43996
43997
43998

43999
44000
44001
44002
44003
44004
44005
44005
44006
44007
44008
44009
44010
44011
44012
44013
44014
44015
44016
44017
44018
44019







+







hypernova/S*
hypernovæ/D'Q'
hypéron/S*
hyperonyme/S*
hyperonymie/S*
hyperonymique/S*
hyperostose/S*
hyperoxie/S*
hyperparasite/S*
hyperparathyroïdie/S*
hyperphagie/S*
hyperphagique/S*
hyperphalangie/S*
hyperplan/S*
hyperplasie/S*
45344
45345
45346
45347
45348
45349
45350

45351
45352
45353
45354
45355
45356
45357
45358
45359
45360
45361
45362
45363
45364
45365
45366
45367
45368
45369
45370
45371
45372







+







incrémentale/W*
incrémentalement/D'Q'
incrémentation/S*
incrémenter/a2p+
incrémentielle/F*
increvable/S*
incriminable/S*
incriminante/F*
incrimination/S*
incriminer/a4p+
incristallisable/S*
incritiquable/S*
incrochetable/S*
incroyable/S*
incroyablement/D'Q'
48028
48029
48030
48031
48032
48033
48034
48035
48036
48037
48038
48039
48040
48041



48042
48043
48044
48045
48046
48047
48048
48043
48044
48045
48046
48047
48048
48049



48050
48051
48052
48053
48054
48055
48056
48057
48058
48059
48060
48061
48062
48063







-
-
-




+
+
+







juron/S.
jury/S.
jus
jusant/S.
jusée/S.
jusnaturalisme/S.
jusnaturaliste/S.
jusqu/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jusque
jusque-là
jusques
jusquiame/S.
jusqu'/--
jusqu'au-boutisme/S.
jusqu'au-boutiste/S.
jussiée/S.
jussion/S.
justaucorps
juste
juste/S.
juste-à-temps
justement
48452
48453
48454
48455
48456
48457
48458
48459
48460
48461
48462
48463
48464
48465
48466
48467
48468
48469
48470
48471
48472
48473

48474
48475
48476
48477
48478
48479
48480







-







kyrie
kyrielle/S.
kyriologique/S.
kyste/S.
kystique/S.
kyu/S.
kyudo/S.
l
l
l/U.||--
là
la
la
la
labadens
49325
49326
49327
49328
49329
49330
49331

49332
49333
49334
49335
49336
49337
49338
49339
49340
49341
49342
49343
49344
49345
49346
49347
49348
49349
49350
49351
49352
49353







+







leude/S.
leur
leur
leur/S.
leurre/S.
leurrer/a0p+
leurs
leurszigues
lev/S.
levage/S.
levageuse/F.
levain/S.
levalloisien/S.
levalloisienne/F.
lévamisole/S.
50163
50164
50165
50166
50167
50168
50169
50170
50171


50172
50173
50174
50175
50176
50177
50178
50178
50179
50180
50181
50182
50183
50184


50185
50186
50187
50188
50189
50190
50191
50192
50193







-
-
+
+







loricaire/S.
lorientaise/F.
loriot/S.
loriquet/S.
lorraine/F.
lorry/A.
lors
lorsqu/--
lorsque
lorsque
lorsqu'/--
losange/S.
losangée/F.
losangique/S.
loser/S.
loseuse/F.
lot/S.
lote/S.
50510
50511
50512
50513
50514
50515
50516


50517
50518
50519
50520
50521
50522
50523
50525
50526
50527
50528
50529
50530
50531
50532
50533
50534
50535
50536
50537
50538
50539
50540







+
+







lysogénie/S.
lysogénique/S.
lysosomale/W.
lysosome/S.
lysosomiale/W.
lysozyme/S.
lytique/S.
l'
l'
m
m/U.||--
mCE
mR/||--
ma
maar/S.
maboule/F.
51201
51202
51203
51204
51205
51206
51207
51208
51209

51210
51211
51212
51213
51214
51215
51216
51218
51219
51220
51221
51222
51223
51224

51225
51226
51227
51228
51229
51230
51231
51232
51233







-

+







mammite/S.
mammographe/S.
mammographie/S.
mammoplastie/S.
mammouth/S.
mammy/S.
mamours
mam'selle/S.
mamy/S.
mam'selle/S.
mam'zelle/S.
man/S.
mana/S.
manade/S.
manadière/F.
management/S.
manager/S.
51857
51858
51859
51860
51861
51862
51863
51864
51865
51866
51867
51868
51869
51870
51871
51874
51875
51876
51877
51878
51879
51880

51881
51882
51883
51884
51885
51886
51887







-







mastopathie/S.
mastose/S.
mastroquet/S.
masturbation/S.
masturbatoire/S.
masturbatrice/F.
masturber/a0p+
m'as-tu-vu
masure/S.
masurium/S.
mât/S.
matabiche/S.
matabicher/a0p+
matador/S.
mataf/S.
52053
52054
52055
52056
52057
52058
52059

52060
52061
52062
52063
52064
52065
52066
52069
52070
52071
52072
52073
52074
52075
52076
52077
52078
52079
52080
52081
52082
52083







+







mazurka/S.
mbalax
mbar/||--
me
mea-culpa
méaculpa/S.
méandre/S.
méandreuse/W.
méandriforme/S.
méandrine/S.
méat/S.
méatoscopie/S.
mébibit/S.
mébioctet/S.
mec/S.
52427
52428
52429
52430
52431
52432
52433
52434
52435
52436
52437
52438
52439
52440
52441
52444
52445
52446
52447
52448
52449
52450

52451
52452
52453
52454
52455
52456
52457







-







mémoration/S.
mémorial/X.
mémorialiste/S.
mémorielle/F.
mémorisable/S.
mémorisation/S.
mémoriser/a0p+
m'en
menaçante/F.
menace/S.
menacer/a0p+
ménade/S.
ménage/S.
ménageable/S.
ménagement/S.
52678
52679
52680
52681
52682
52683
52684

52685
52686
52687
52688
52689
52690
52691
52694
52695
52696
52697
52698
52699
52700
52701
52702
52703
52704
52705
52706
52707
52708







+







mésestimer/a0p+
mésiale/W.
mésintelligence/S.
mésinterprétation/S.
mésique/S.
mesmérienne/F.
mesmérisme/S.
mésoaméricaine/F.
mésoblaste/S.
mésoblastique/S.
mésocarpe/S.
mésocentre/S.
mésocéphale/S.
mésocéphale/S.
mésocéphalique/S.
55261
55262
55263
55264
55265
55266
55267



55268
55269
55270
55271
55272
55273
55274
55278
55279
55280
55281
55282
55283
55284
55285
55286
55287
55288
55289
55290
55291
55292
55293
55294







+
+
+







myxœdème/S.
myxomatose/S.
myxome/S.
myxomycète/S.
myxovirus
m²
m³
m'
m'as-tu-vu
m'en
n
na
naan/S.
nabab/S.
nabatéenne/F.
nabi/S.
nabisme/S.
55916
55917
55918
55919
55920
55921
55922


55923
55924
55925
55926
55927
55928
55929
55936
55937
55938
55939
55940
55941
55942
55943
55944
55945
55946
55947
55948
55949
55950
55951







+
+







neurinome/S.
neuroanatomie/S.
neuro-anatomie/S.
neuroanatomique/S.
neuro-anatomique/S.
neuroanatomiste/S.
neuro-anatomiste/S.
neuroatypique/S.
neuro-atypique/S.
neurobiochimie/S.
neurobiochimique/S.
neurobiochimiste/S.
neurobiologie/S.
neurobiologique/S.
neurobiologiste/S.
neuroblaste/S.
56115
56116
56117
56118
56119
56120
56121
56122
56123
56124

56125
56126
56127
56128
56129
56130
56131
56132

56133
56134
56135
56136
56137
56138
56139
56137
56138
56139
56140
56141
56142
56143

56144
56145
56146
56147
56148
56149
56150
56151

56152
56153
56154
56155
56156
56157
56158
56159
56160
56161







-


+





-


+







nicotiniser/a0p+
nicotinisme/S.
nictation/S.
nictitante/F.
nictitation/S.
nid/S.
nidation/S.
nid-d'abeilles
nid-de-pie
nid-de-poule
nid-d'abeilles
nidicole/S.
nidification/S.
nidificatrice/F.
nidifier/a0p.
nidifuge/S.
nids-d'abeilles
nids-de-pie
nids-de-poule
nids-d'abeilles
nièce/S.
niellage/S.
nielle/S.
nieller/a0p+
nielleur/S.
niellure/S.
n-ième/S.
56166
56167
56168
56169
56170
56171
56172
56173
56174
56175
56176
56177
56178
56179
56180
56188
56189
56190
56191
56192
56193
56194

56195
56196
56197
56198
56199
56200
56201







-







nilvariété/S.
nimbe/S.
nimber/a0p+
nimbostratus
nimbo-stratus
nimbus
nîmoise/F.
n'importe
ninas
ninja/S.
ninjato/S.
niobate/S.
niobite/S.
niobium/S.
niôle/S.
56520
56521
56522
56523
56524
56525
56526

56527
56528
56529
56530
56531
56532
56533
56541
56542
56543
56544
56545
56546
56547
56548
56549
56550
56551
56552
56553
56554
56555







+







nosologie/S.
nosologique/S.
nosophobie/S.
nostalgie/S.
nostalgique/S.
nostalgiquement
nostoc/S.
noszigues
notabilité/S.
notable/S.
notable/S.
notablement
notaire/S.
notairesse/S.
notamment
56576
56577
56578
56579
56580
56581
56582

56583

56584
56585
56586
56587
56588
56589
56590
56598
56599
56600
56601
56602
56603
56604
56605

56606
56607
56608
56609
56610
56611
56612
56613







+
-
+







nourrissante/F.
nourrissement/S.
nourrisseur/S.
nourrisson/S.
nourriture/S.
nous
nous
nous-même
nous-même/S=
nous-mêmes
nouure/S.
nouveau-née/F.
nouveauté/S.
nouvel
nouvelle/W.
nouvellement
nouvelleté/S.
56774
56775
56776
56777
56778
56779
56780


56781
56782
56783
56784
56785
56786
56787
56797
56798
56799
56800
56801
56802
56803
56804
56805
56806
56807
56808
56809
56810
56811
56812







+
+







nymphette/S.
nympho/S.
nymphomane/S.
nymphomanie/S.
nymphoplastie/S.
nymphose/S.
nystagmus
n'
n'importe
ô
o
o/||--
oaï/S*
oaristys/L'D'Q'
oasienne/F*
oasis/L'D'Q'
57737
57738
57739
57740
57741
57742
57743

57744
57745
57746
57747
57748
57749
57750
57762
57763
57764
57765
57766
57767
57768
57769
57770
57771
57772
57773
57774
57775
57776







+







orchestration/S*
orchestratrice/F*
orchestre/S*
orchestrer/a2p+
orchidacée/S*
orchidacée/S*
orchidée/S*
orchidologie/S*
orchiépididymite/S*
orchi-épididymite/S*
orchis/L'D'Q'
orchite/S*
ordalie/S*
ordalique/S*
ordi/S*
59569
59570
59571
59572
59573
59574
59575
59576
59577
59578

59579
59580
59581
59582
59583
59584
59585
59595
59596
59597
59598
59599
59600
59601

59602
59603
59604
59605
59606
59607
59608
59609
59610
59611







-


+







pas-à-pas
pas-à-pas
pascal/Um
pascale/F.
pascalienne/F.
pascaline/S.
pascaux
pas-d'âne
pas-de-géant
pas-de-porte
pas-d'âne
paseo/S.
paséo/S.
pashmina/S.
pasionaria/S.
paso-doble
pasodoble/S.
pasquin/S.
60922
60923
60924
60925
60926
60927
60928
60929
60930
60931



60932
60933
60934
60935
60936
60937
60938
60948
60949
60950
60951
60952
60953
60954



60955
60956
60957
60958
60959
60960
60961
60962
60963
60964







-
-
-
+
+
+







pétiole/S.
pétiolée/F.
petiote/F.
petit-beurre
petit-bois
petit-bourgeois
petit-boutiste/S.
petit-déj'
petit-déjeuner
petit-déjeuner/a0p.
petit-déjeuner
petit-déjeuner/a0p.
petit-déj'
petite/F.
petite-bourgeoise
petite-fille
petite-maitresse
petite-maîtresse
petitement
petite-nièce
61737
61738
61739
61740
61741
61742
61743
61744
61745
61746
61747
61748
61749
61750
61751
61752
61753



61754
61755
61756
61757
61758
61759
61760
61761
61762
61763
61764
61765
61766
61767
61768
61769

61770
61771


61772
61773
61774
61775
61776
61777
61778
61779
61780
61781
61782
61783
61784

61785
61786
61787
61788
61789
61790
61791
61763
61764
61765
61766
61767
61768
61769

61770
61771
61772
61773
61774
61775
61776


61777
61778
61779
61780
61781
61782
61783
61784
61785
61786
61787

61788
61789
61790
61791
61792
61793
61794
61795


61796
61797
61798
61799
61800
61801
61802
61803
61804
61805
61806
61807
61808
61809
61810
61811
61812
61813
61814
61815
61816
61817
61818







-







-
-
+
+
+








-







+
-
-
+
+













+







pie
pie/S.
pièce/S.
piécette/S.
pied/S.
pied-à-terre
pied-bot
pied-d'alouette
pied-de-biche
pied-de-cheval
pied-de-chèvre
pied-de-loup
pied-de-mouton
pied-de-poule
pied-de-veau
pied-d'oiseau
pied-droit
pied-droit
pied-d'alouette
pied-d'oiseau
piédestal/X.
pied-fort
piedmont/S.
pied-noir
piédouche/S.
pied-plat
piédroit/S.
pieds-bots
pieds-d'alouette
pieds-de-biche
pieds-de-cheval
pieds-de-chèvre
pieds-de-loup
pieds-de-mouton
pieds-de-poule
pieds-de-veau
pieds-droits
pieds-d'oiseau
pieds-droits
pieds-d'alouette
pieds-d'oiseau
pieds-forts
pieds-noirs
pieds-plats
piéfort/S.
piège/S.
piégeable/S.
piégeage/S.
piéger/c0p+
piégeuse/F.
piégeuse/W.
pie-grièche
piémont/S.
piémontaise/F.
pier/S.
piercing/S.
piéride/S.
pierrade/S.
pierrage/S.
pierraille/S.
pierre/S.
pierrer/a0p+
61967
61968
61969
61970
61971
61972
61973
61974
61975
61976
61977
61978
61979
61980
61981
61982
61983

61984
61985
61986
61987
61988
61989
61990
61994
61995
61996
61997
61998
61999
62000

62001
62002
62003
62004
62005
62006
62007
62008
62009
62010
62011
62012
62013
62014
62015
62016
62017







-









+







pinière/S.
pinne/S.
pinnipède/S.
pinnothère/S.
pinnule/S.
pinocytose/S.
pinot/S.
pin's
pinson/S.
pintade/S.
pintadeau/X.
pintadine/S.
pinte/S.
pinter/a0p+
pin-up
pinup/S.
pinyin
pin's
piochage/S.
pioche/S.
piochement/S.
piocher/a0p+
piocheuse/F.
pioger/a0p.
piolet/S.
63213
63214
63215
63216
63217
63218
63219

63220
63221
63222
63223
63224
63225
63226
63240
63241
63242
63243
63244
63245
63246
63247
63248
63249
63250
63251
63252
63253
63254







+







pompeuse/F.
pompeuse/W.
pompeusement
pompière/F.
pompiérisme/S.
pompile/S.
pompiste/S.
pom-pom
pompon/S.
pomponner/a0p+
ponant/S.
ponantaise/F.
ponçage/S.
ponce/S.
ponce/S.
63270
63271
63272
63273
63274
63275
63276
63277
63278


63279
63280
63281
63282
63283
63284
63285
63298
63299
63300
63301
63302
63303
63304


63305
63306
63307
63308
63309
63310
63311
63312
63313







-
-
+
+







pontifiante/F.
pontificale/W.
pontificalement
pontificat/S.
pontifier/a0p.
pontil/S.
pontiller/a0p+
pont-l'évêque
pont-levis
pont-levis
pont-l'évêque
ponton/S.
pontonnier/S.
pont-promenade
ponts-levis
ponts-promenades
pontuseau/X.
pool/S.
64402
64403
64404
64405
64406
64407
64408

64409
64410
64411
64412
64413
64414
64415
64430
64431
64432
64433
64434
64435
64436
64437
64438
64439
64440
64441
64442
64443
64444







+







président-directeur
présidente/F.
présidente-directrice
présidentes-directrices
présidentiable/S.
présidentialisation/S.
présidentialisme/S.
présidentialiste/S.
présidentielle/F.
présidents-directeurs
présider/a0p+
présidial/X.
présidiale/W.
présidialité/S.
présidium/S.
64574
64575
64576
64577
64578
64579
64580
64581
64582
64583
64584
64585
64586
64587
64588
64603
64604
64605
64606
64607
64608
64609

64610
64611
64612
64613
64614
64615
64616







-







priapisme/S.
prie-Dieu
prier/a0p+
prière/S.
prieure/F.
prieuré/S.
prieuse/S.
prim'Holstein
prima-donna/I.
primadonna/S.
primage/S.
primaire/S.
primairement
primale/W.
primalité/S.
64624
64625
64626
64627
64628
64629
64630

64631
64632
64633
64634
64635
64636
64637
64652
64653
64654
64655
64656
64657
64658
64659
64660
64661
64662
64663
64664
64665
64666







+







primo-délinquante/F.
primogéniture/S.
primo-infection/S.
primordiale/W.
primordialement
primordialité/S.
primulacée/S.
prim'Holstein
prince-de-galles
prince-de-galles
princeps
princeps
princesse/F.
princière/F.
princièrement
65324
65325
65326
65327
65328
65329
65330
65331
65332
65333
65334
65335
65336
65337
65338



65339
65340
65341
65342
65343
65344
65345
65353
65354
65355
65356
65357
65358
65359


65360
65361

65362
65363
65364
65365
65366
65367
65368
65369
65370
65371
65372
65373
65374







-
-


-



+
+
+







pruche/S.
prude/S.
prudemment
prudence/S.
prudente/F.
prudentielle/F.
pruderie/S.
prud'homale/W.
prud'homie/S.
prudhommale/W.
prudhomme/S.
prud'homme/S.
prudhommerie/S.
prudhommesque/S.
prudhommie/S.
prud'homale/W.
prud'homie/S.
prud'homme/S.
pruine/S.
prune
prune/S.
pruneau/X.
prunelaie/S.
prunelée/S.
prunelier/S.
65564
65565
65566
65567
65568
65569
65570
65571
65572
65573
65574
65575
65576
65577
65578
65593
65594
65595
65596
65597
65598
65599

65600
65601
65602
65603
65604
65605
65606







-







ptérosaure/S.
ptérosaurien/S.
ptérygion/S.
ptérygoïde/S.
ptérygoïdienne/F.
ptérygote/S.
ptérygotus
p'tite/F.
ptolémaïque/S.
ptoléméenne/F.
ptomaïne/S.
ptôse/S.
ptosis
ptôsis
ptyaline/S.
65654
65655
65656
65657
65658
65659
65660
65661
65662


65663
65664
65665
65666
65667
65668
65669
65682
65683
65684
65685
65686
65687
65688


65689
65690
65691
65692
65693
65694
65695
65696
65697







-
-
+
+







puis
puisage/S.
puisard/S.
puisatier/S.
puisement/S.
puiser/a0p+
puisette/S.
puisqu/--
puisque
puisque
puisqu'/--
puissamment
puissance/S.
puissante/F.
puits
pulicaire/S.
pulicaire/S.
pull/S.
65815
65816
65817
65818
65819
65820
65821

65822
65823
65824
65825
65826
65827
65828
65843
65844
65845
65846
65847
65848
65849
65850
65851
65852
65853
65854
65855
65856
65857







+







pycnogonide/S.
pycnomètre/S.
pycnose/S.
pycnotique/S.
pyélite/S.
pyélonéphrite/S.
pygargue/S.
pygmalionisme/S.
pygmée/S.
pygméenne/F.
pyjama/S.
pylône/S.
pylore/S.
pylorique/S.
pyocyanique/S.
65934
65935
65936
65937
65938
65939
65940

65941
65942
65943
65944
65945
65946
65947
65948
65949
65950
65951
65952
65953
65954
65955
65956
65963
65964
65965
65966
65967
65968
65969
65970
65971
65972
65973
65974
65975
65976
65977
65978

65979
65980
65981
65982
65983
65984
65985







+








-







pythique/S.
pythique/S.
python/S.
pythonisse/S.
pyurie/S.
pyxide/S.
pz/||--
p'tite/F.
q
qPCR
qanat/S.
qat/S.
qatarie/F.
qatarienne/F.
qbit/S.
qi
qu/--
qua
quad/S.
quadra
quadra/S.
quadragénaire/S.
quadragésimale/W.
quadragésime/S.
66210
66211
66212
66213
66214
66215
66216
66217
66218
66219
66220
66221
66222
66223

66224
66225
66226
66227
66228
66229
66230
66231
66232
66233
66234
66235
66236
66239
66240
66241
66242
66243
66244
66245

66246
66247
66248
66249
66250
66251
66252
66253
66254
66255
66256
66257

66258
66259
66260
66261
66262
66263
66264







-






+





-







québracho/S.
quechua/S.
quéchua/S.
queen/S.
queer/S.
quelconque/S.
quelle/F.
quelqu/--
quelque
quelque/S.
quelque/S.
quelquefois
quelques-unes
quelques-uns
quelqu'/--
quelqu'un
quelqu'une
quémande/S.
quémander/a0p+
quémandeuse/F.
qu'en-dira-t-on
quenelle/S.
quenotte/S.
quenouille/S.
quenouillée/S.
quenouillette/S.
quéquette/S.
quérable/S.
66258
66259
66260
66261
66262
66263
66264
66265
66266
66267
66268
66269
66270
66271
66272

66273
66274
66275
66276
66277
66278

66279
66280
66281
66282
66283
66284
66285
66286
66287
66288
66289
66290
66291
66292

66293
66294
66295
66296
66297
66298

66299
66300
66301
66302
66303
66304
66305
66306
66307
66308
66309
66310
66311
66312
66313







-






-
+






+







quêteuse/F.
quetsche/S.
quetschier/S.
quetter/a0p+
quetzal/S.
quetzales
queue/S.
queue-d'aronde
queue-de-cheval
queue-de-cochon
queue-de-morue
queue-de-pie
queue-de-rat
queue-de-renard
queues-d'aronde
queue-d'aronde
queues-de-cheval
queues-de-cochon
queues-de-morue
queues-de-pie
queues-de-rat
queues-de-renard
queues-d'aronde
queuillère/S.
queursage/S.
queusot/S.
queutarde/F.
queuter/a0p+
queux
qui
66376
66377
66378
66379
66380
66381
66382
66383
66384


66385
66386
66387
66388
66389
66390
66391
66392
66393
66394
66395
66396


66397
66398
66399
66400
66401
66402
66403
66404
66405
66406
66407
66408
66409
66410


66411
66412
66413
66414
66415
66416
66417
66418
66419
66420
66421
66422
66423
66424
66425
66426
66427
66428
66429
66430
66431
66432
66433







-
-
+
+












+
+







quizalofop/S.
quo
quoailler
quoc-ngu
quôc-ngu
quocngu/S.
quoi
quoiqu/--
quoique
quoique
quoiqu'/--
quolibet/S.
quorum/S.
quota/S.
quote-part
quotepart/S.
quotes-parts
quotidienne/F.
quotidiennement
quotidienneté/S.
quotient/S.
quotité/S.
quotter/a0p.
qu'/--
qu'en-dira-t-on
qwerty
r
ra
rab/S.
rabâchage/S.
rabâchement/S.
rabâcher/a0p+
67155
67156
67157
67158
67159
67160
67161

67162
67163
67164
67165
67166
67167
67168
67185
67186
67187
67188
67189
67190
67191
67192
67193
67194
67195
67196
67197
67198
67199







+







ratichon/S.
raticide/S.
raticide/S.
ratière/F.
ratification/S.
ratifier/a0p+
ratinage/S.
ratine/S.
ratiner/a0p+
rating/S.
ratio/S.
ratiocinante/F.
ratiocination/S.
ratiociner/a0p.
ratiocineuse/F.
67483
67484
67485
67486
67487
67488
67489

67490
67491
67492
67493
67494
67495
67496
67514
67515
67516
67517
67518
67519
67520
67521
67522
67523
67524
67525
67526
67527
67528







+







recèlement/S.
receler/b0p+
recéler/c0p+
receleuse/F.
recéleuse/F.
récemment
récence/S.
recensable/S.
recensement/S.
recenser/a0p+
recenseuse/F.
recension/S.
récente/F.
recentrage/S.
recentrement/S.
67835
67836
67837
67838
67839
67840
67841

67842
67843
67844
67845
67846
67847
67848
67867
67868
67869
67870
67871
67872
67873
67874
67875
67876
67877
67878
67879
67880
67881







+







récuser/a0p+
recyclabilité/S.
recyclable/S.
recyclage/S.
recycler/a0p+
recyclerie/S.
recycleuse/F.
rédac-chef/S.
rédaction/S.
rédactionnel/S.
rédactionnelle/F.
rédactrice/F.
redan/S.
reddition/S.
redéclarer/a0p+
69172
69173
69174
69175
69176
69177
69178

69179
69180
69181
69182
69183
69184
69185
69205
69206
69207
69208
69209
69210
69211
69212
69213
69214
69215
69216
69217
69218
69219







+







résistible/S.
résistive/F.
résistivité/S.
résistor/S.
resituer/a0p+
resocialisation/S.
resocialiser/a0p+
resolidifier/a0p+
résolubilité/S.
résoluble/S.
résolument
résolution/S.
résolutive/F.
résolutoire/S.
résolvance/S.
70702
70703
70704
70705
70706
70707
70708
70709
70710
70711
70712
70713
70714
70715
70716
70736
70737
70738
70739
70740
70741
70742

70743
70744
70745
70746
70747
70748
70749







-







rythmicité/S.
rythmique/S.
rythmiquement
s
s/U.||--
sa
saanen/S.
s'abader
sabayon/S.
sabbat/S.
sabbathienne/F.
sabbatique/S.
sabéenne/F.
sabéisme/S.
sabelle/S.
70744
70745
70746
70747
70748
70749
70750
70751
70752
70753
70754
70755
70756
70757
70758
70777
70778
70779
70780
70781
70782
70783

70784
70785
70786
70787
70788
70789
70790







-







sabouler/a0p+
sabra/S.
sabrage/S.
sabre/S.
sabrer/a0p+
sabretache/S.
sabreuse/F.
s'abriller
saburrale/W.
saburre/S.
sac/S.
sacagner/a0p+
saccade/S.
saccader/a0p+
saccage/S.
70879
70880
70881
70882
70883
70884
70885
70886
70887
70888
70889
70890
70891
70892
70893
70911
70912
70913
70914
70915
70916
70917

70918
70919
70920
70921
70922
70923
70924







-







sage/S.
sage-femme
sagefemme/S.
sagement
sages-femmes
sagesse/S.
sagette/S.
s'agir/fZ
sagittaire/S.
sagittale/W.
sagittée/F.
sagou/S.
sagouin/S.
sagoutier/S.
sagum/S.
75832
75833
75834
75835
75836
75837
75838

75839
75840
75841
75842
75843
75844
75845
75863
75864
75865
75866
75867
75868
75869
75870
75871
75872
75873
75874
75875
75876
75877







+







surharmonique/S.
surhaussement/S.
surhausser/a0p+
surhomme/S.
surhumaine/F.
surhumainement
surhumanité/S.
surhydratation/S.
suricate/S.
surie/F.
surikate/S.
surimi/S.
surimposer/a0p+
surimposition/S.
surimpression/S.
75950
75951
75952
75953
75954
75955
75956

75957
75958
75959
75960
75961
75962
75963
75982
75983
75984
75985
75986
75987
75988
75989
75990
75991
75992
75993
75994
75995
75996







+







surplomber/a0p+
surplus
surpoids
surpopulation/S.
surprenamment
surprenante/F.
surprendre/tF
surprescription/S.
surpresseur/S.
surpression/S.
surprime/S.
surprise/S.
surprise-partie
surprises-parties
surproduction/S.
76360
76361
76362
76363
76364
76365
76366




76367
76368
76369
76370
76371
76372
76373
76393
76394
76395
76396
76397
76398
76399
76400
76401
76402
76403
76404
76405
76406
76407
76408
76409
76410







+
+
+
+







systémicienne/F.
systémique/S.
systole/S.
systolique/S.
systyle/S.
systyle/S.
syzygie/S.
s'
s'abader
s'abriller
s'agir/fZ
t
t/||--
ta
tabac
tabac/S.
tabacologie/S.
tabacologue/S.
77269
77270
77271
77272
77273
77274
77275
77276
77277
77278
77279
77280
77281
77282
77283
77306
77307
77308
77309
77310
77311
77312

77313
77314
77315
77316
77317
77318
77319







-







télex
télexer/a0p+
télexiste/S.
télicité/S.
tell/S.
telle/F.
telle/F.
t'elle/S=
tellement
tellière/S.
tellière/S.
telline/S.
tellurate/S.
tellure/S.
tellureuse/W.
77330
77331
77332
77333
77334
77335
77336
77337
77338
77339
77340
77341
77342
77343
77344
77366
77367
77368
77369
77370
77371
77372

77373
77374
77375
77376
77377
77378
77379







-







temporellement
temporisation/S.
temporisatrice/F.
temporiser/a0p+
temporo-pariétale/F.
temps
temps-réel
t'en
tenable/S.
tenace/S.
tenacement
ténacité/S.
tenaille/S.
tenaillement/S.
tenailler/a0p+
78130
78131
78132
78133
78134
78135
78136
78137
78138
78139
78140
78141
78142
78143
78144
78165
78166
78167
78168
78169
78170
78171

78172
78173
78174
78175
78176
78177
78178







-







tignasse/S.
tigrer/a0p+
tigresse/F.
tigridie/S.
tigron/S.
tiguidou/S.
tiki/S.
t'il/S=
tilapia/S.
tilbury/S.
tilde/S.
tiliacée/S.
tillac/S.
tillage/S.
tillandsie/S.
78432
78433
78434
78435
78436
78437
78438
78439
78440
78441
78442
78443
78444
78445
78446
78466
78467
78468
78469
78470
78471
78472

78473
78474
78475
78476
78477
78478
78479







-







tomodensitomètre/S.
tomodensitométrie/S.
tomodensitométrique/S.
tomographe/S.
tomographie/S.
tomographique/S.
tom-pouce
t'on
ton
ton/S.
tonale/F.
tonalité/S.
tondage/S.
tondaille/S.
tondaison/S.
79155
79156
79157
79158
79159
79160
79161

79162
79163
79164
79165
79166
79167
79168
79188
79189
79190
79191
79192
79193
79194
79195
79196
79197
79198
79199
79200
79201
79202







+







transistorisation/S.
transistoriser/a0p+
transit/S.
transitaire/S.
transiter/a0p+
transition/S.
transitionnelle/F.
transitionner/a0p+
transitive/F.
transitivement
transitivité/S.
transitoire/S.
transitoirement
translater/a0p+
translatif/S.
79809
79810
79811
79812
79813
79814
79815

79816
79817
79818
79819
79820
79821
79822
79843
79844
79845
79846
79847
79848
79849
79850
79851
79852
79853
79854
79855
79856
79857







+







triterpénique/S.
trithérapie/S.
triticale/S.
tritiée/F.
tritium/S.
triton/S.
triturable/S.
triturage/S.
triturateur/S.
trituration/S.
triturer/a0p+
triumvir/S.
triumvirale/W.
triumvirat/S.
trivalence/S.
79870
79871
79872
79873
79874
79875
79876

79877
79878
79879
79880
79881
79882
79883
79905
79906
79907
79908
79909
79910
79911
79912
79913
79914
79915
79916
79917
79918
79919







+







trois-quatre
trois-six
trole/S.
trôler/a0p.
troll/S.
trolle/S.
troller/a0p.
trollesque/S.
trolley/S.
trolleybus
trombe/S.
trombidion/S.
trombidiose/S.
trombine/S.
trombinoscope/S.
80116
80117
80118
80119
80120
80121
80122
80123
80124
80125

80126
80127
80128
80129
80130
80131
80132
80152
80153
80154
80155
80156
80157
80158

80159
80160
80161
80162
80163
80164
80165
80166
80167
80168







-


+







tubulure/S.
tudesque/S.
tudieu
tue-chien
tue-chien/S.
tue-diable
tue-diable/S.
tue-l'amour
tue-loup
tue-loup/S.
tue-l'amour
tue-mouche
tue-mouche/S.
tue-mouches
tuer/a0p+
tuerie/S.
tue-tête
tueuse/F.
80377
80378
80379
80380
80381
80382
80383





80384
80385
80386
80387
80388
80389
80390
80413
80414
80415
80416
80417
80418
80419
80420
80421
80422
80423
80424
80425
80426
80427
80428
80429
80430
80431







+
+
+
+
+







tyrosinémie/S.
tyrothricine/S.
tyrrhénienne/F.
tzar/S.
tzarine/S.
tzatziki/S.
tzigane/S.
t'
t'elle/S=
t'en
t'il/S=
t'on
u
u/||--
ua/||--
ubac/S*
ubérale/S*
uberisation/S*
ubique/S*
81795
81796
81797
81798
81799
81800
81801

81802
81803
81804
81805
81806
81807
81808
81836
81837
81838
81839
81840
81841
81842
81843
81844
81845
81846
81847
81848
81849
81850







+







vidéographique/S.
vidéoludique/S.
vidéophone/S.
vidéophonie/S.
vidéoprojecteur/S.
vidéoprojection/S.
vidéoprotection/S.
vidéo-protection/S.
vide-ordure/S.
vide-ordures
vidéosphère/S.
vidéosurveillance/S.
vidéotex
vidéothécaire/S.
vidéothèque/S.
81839
81840
81841
81842
81843
81844
81845

81846
81847
81848
81849
81850
81851
81852
81881
81882
81883
81884
81885
81886
81887
81888
81889
81890
81891
81892
81893
81894
81895







+







vielleur/S.
vielleuse/W.
vielliste/S.
viennoise/F.
viennoiserie/S.
vierge/S.
vierge/S.
viétique/S.
vietnamienne/F.
vieux-lille
vif-argent
vif-argent
vigésimale/W.
vigie/S.
vigilamment
82399
82400
82401
82402
82403
82404
82405

82406
82407
82408
82409
82410
82411
82412
82413
82414
82415
82416
82417
82418
82419
82420

82421

82422
82423
82424
82425
82426
82427
82428
82442
82443
82444
82445
82446
82447
82448
82449
82450
82451
82452
82453
82454
82455
82456
82457
82458
82459
82460
82461
82462
82463
82464
82465

82466
82467
82468
82469
82470
82471
82472
82473







+















+
-
+







vorace/S.
voracement
voracité/S.
vortex
vorticelle/S.
vos
vosgienne/F.
voszigues
votante/F.
votation/S.
vote/S.
voter/a0p+
voteuse/F.
votive/F.
votre
vôtre/S.
vouer/a0p+
vouge/S.
vouivre/S.
vouloir/S.
vouloir/pB
vous
vous
vous-même
vous-même/S=
vous-mêmes
vousoiement/S.
vousoyer/a0p+
vousseau/X.
voussoiement/S.
voussoir/S.
voussoyer/a0p+
voussure/S.

Modified gc_lang/fr/perf_memo.txt from [b880c3770c] to [222706a885].

1
2
3
4
5
6
7
8
9
10


11
12
13
14
15
16




17
18
19
20



21
22
23
24
25




26

1
2
3
4
5
6
7
8


9
10
11
12




13
14
15
16
17



18
19
20
21




22
23
24
25
26
27








-
-
+
+


-
-
-
-
+
+
+
+

-
-
-
+
+
+

-
-
-
-
+
+
+
+

+
# MEMO OF PERFORMANCES
# Shorter is better

                                1.          2.          3.          4.          5.          6.          7.          8.          9.          10.
0.4.10.2                        4.7797      1.1617      0.8074      0.2343      0.2647      0.2749      0.6367      0.3463
0.5.0a      2015.08.28          4.6203      1.0860      0.7567      0.2213      0.2518      0.2635      0.6089      0.3315
0.5.0b      2015.09.21          4.2869      1.0140      0.6941      0.2061      0.2312      0.2471      0.5667      0.3124
0.5.0b      2015.09.21 17:42    4.307       1.016       0.6984      0.2066      0.2353      0.2479      0.5715      0.3157      0.05686     0.007637
0.5.0b      2015.09.23 22:54    4.47859     1.05899     0.732804    0.214195    0.243011    0.259232    0.598795    0.329411    0.0574977   0.00810443  
0.5.0b3     2015.10.11 09:23    4.56807     1.07108     0.745156    0.21713     0.246066    0.263882    0.605003    0.331472    0.0585957   0.00798071  
0.5.0b      2015.09.23 22:54    4.47859     1.05899     0.732804    0.214195    0.243011    0.259232    0.598795    0.329411    0.0574977   0.00810443
0.5.0b3     2015.10.11 09:23    4.56807     1.07108     0.745156    0.21713     0.246066    0.263882    0.605003    0.331472    0.0585957   0.00798071
0.5.0b4     2015.10.25 10:36    4.68602     1.1036      0.816759    0.236306    0.263662    0.277191    0.632331    0.355515    0.059987    0.00801248  (py3.4)
0.5.0b4     2015.10.25 10:57    4.21442     0.991038    0.739702    0.212349    0.239072    0.251278    0.575609    0.318801    0.0531821   0.00738796  (py3.5)
0.5.0b6     2016.02.25 22:01    4.67677     1.09785     0.794943    0.225662    0.261311    0.274515    0.633468    0.347967    0.0592074   0.00853299  
0.5.0b6     2016.03.03 11:22    4.60471     1.06554     0.774112    0.218736    0.252905    0.263989    0.610623    0.334882    0.0567706   0.00786996  
0.5.0b8     2016.04.28 16:46    4.46168     1.07131     0.766851    0.215897    0.24811     0.252945    0.586484    0.318905    0.0538788   0.00748515  
0.5.5       2016.05.19 17:57    4.48851     1.06935     0.766362    0.218503    0.250422    0.260964    0.604672    0.333179    0.0563006   0.00855781  
0.5.0b6     2016.02.25 22:01    4.67677     1.09785     0.794943    0.225662    0.261311    0.274515    0.633468    0.347967    0.0592074   0.00853299
0.5.0b6     2016.03.03 11:22    4.60471     1.06554     0.774112    0.218736    0.252905    0.263989    0.610623    0.334882    0.0567706   0.00786996
0.5.0b8     2016.04.28 16:46    4.46168     1.07131     0.766851    0.215897    0.24811     0.252945    0.586484    0.318905    0.0538788   0.00748515
0.5.5       2016.05.19 17:57    4.48851     1.06935     0.766362    0.218503    0.250422    0.260964    0.604672    0.333179    0.0563006   0.00855781
0.5.7       2016.06.01 18:08    4.3773      1.04008     0.749191    0.2141      0.236444    0.245076    0.564722    0.307174    0.0540038   0.00705854  (option groups)
0.5.11      2016.10.09 16:14    4.53121     1.08698     0.760695    0.220858    0.242361    0.255862    0.606328    0.334436    0.0573431   0.00760688  
0.5.12      2016.10.14 18:58    4.51895     1.0843      0.772805    0.22387     0.249411    0.261593    0.628802    0.339303    0.0570326   0.00805416  
0.5.15      2017.01.22 11:44    4.85204     1.16134     0.770762    0.227874    0.244574    0.253305    0.58831     0.319987    0.0603996   0.00694786  
0.5.11      2016.10.09 16:14    4.53121     1.08698     0.760695    0.220858    0.242361    0.255862    0.606328    0.334436    0.0573431   0.00760688
0.5.12      2016.10.14 18:58    4.51895     1.0843      0.772805    0.22387     0.249411    0.261593    0.628802    0.339303    0.0570326   0.00805416
0.5.15      2017.01.22 11:44    4.85204     1.16134     0.770762    0.227874    0.244574    0.253305    0.58831     0.319987    0.0603996   0.00694786
0.5.15      2017.01.22 11:47    4.85593     1.15248     0.762924    0.22744     0.243461    0.254609    0.586741    0.317503    0.0588827   0.00701016  (unicode normalisation NFC)
0.5.15      2017.01.31 12:06    4.88227     1.18008     0.782217    0.232617    0.247672    0.257628    0.596903    0.32169     0.0603505   0.00695196  
0.5.15      2017.02.05 10:10    4.90222     1.18444     0.786696    0.233413    0.25071     0.260214    0.602112    0.325235    0.0609932   0.00706897  
0.5.16      2017.05.12 07:41    4.92201     1.19269     0.80639     0.239147    0.257518    0.266523    0.62111     0.33359     0.0634668   0.00757178  
0.6.1       2018.02.12 09:58    5.25924     1.2649      0.878442    0.257465    0.280558    0.293903    0.686887    0.391275    0.0672474   0.00824723  
0.5.15      2017.01.31 12:06    4.88227     1.18008     0.782217    0.232617    0.247672    0.257628    0.596903    0.32169     0.0603505   0.00695196
0.5.15      2017.02.05 10:10    4.90222     1.18444     0.786696    0.233413    0.25071     0.260214    0.602112    0.325235    0.0609932   0.00706897
0.5.16      2017.05.12 07:41    4.92201     1.19269     0.80639     0.239147    0.257518    0.266523    0.62111     0.33359     0.0634668   0.00757178
0.6.1       2018.02.12 09:58    5.25924     1.2649      0.878442    0.257465    0.280558    0.293903    0.686887    0.391275    0.0672474   0.00824723
0.6.2       2018.02.19 19:06    5.51302     1.29359     0.874157    0.260415    0.271596    0.290641    0.684754    0.376905    0.0815201   0.00919633  (spelling normalization)
1.0         2018.09.19 16:34    2.53823     0.609186    0.407324    0.121067    0.124931    0.13113     0.300685    0.170306    0.0357451   0.00357943

Modified gc_lang/fr/rules.grx from [9c46a8e036] to [6e7bf6ea60].

more than 10,000 changes

Modified gc_lang/fr/webext/content_scripts/panel_lxg.css from [60aef30035] to [83fe0f37d1].

86
87
88
89
90
91
92
93

94
95
96
97
98
99
100
86
87
88
89
90
91
92

93
94
95
96
97
98
99
100







-
+







}
div.grammalecte_lxg_token_LOC {
    background-color: hsla(150, 50%, 30%, 1);
}
div.grammalecte_lxg_token_WORD {
    background-color: hsla(150, 50%, 50%, 1);
}
div.grammalecte_lxg_token_ELPFX {
div.grammalecte_lxg_token_WORD_ELIDED {
    background-color: hsla(150, 30%, 50%, 1);
}
div.grammalecte_lxg_token_UNKNOWN {
    background-color: hsla(0, 50%, 50%, 1);
}
div.grammalecte_lxg_token_NUM {
    background-color: hsla(180, 50%, 50%, 1);

Modified gc_lang/fr/webext/gce_worker.js from [221a92cd88] to [49bb10d99d].

41
42
43
44
45
46
47

48
49
50
51
52
53
54
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55







+







importScripts("grammalecte/graphspell/tokenizer.js");
importScripts("grammalecte/fr/conj.js");
importScripts("grammalecte/fr/mfsp.js");
importScripts("grammalecte/fr/phonet.js");
importScripts("grammalecte/fr/cregex.js");
importScripts("grammalecte/fr/gc_options.js");
importScripts("grammalecte/fr/gc_rules.js");
importScripts("grammalecte/fr/gc_rules_graph.js");
importScripts("grammalecte/fr/gc_engine.js");
importScripts("grammalecte/fr/lexicographe.js");
importScripts("grammalecte/tests.js");
/*
    Warning.
    Initialization can’t be completed at startup of the worker,
    for we need the path of the extension to load data stored in JSON files.

Modified gc_lang/fr/webext/manifest.json from [6d6f814be6] to [ae48c2c0d8].

1
2
3
4
5

6
7
8
9
10
11
12
1
2
3
4

5
6
7
8
9
10
11
12




-
+







{
  "manifest_version": 2,
  "name": "Grammalecte [fr]",
  "short_name": "Grammalecte [fr]",
  "version": "0.6.5.1",
  "version": "0.7",

  "applications": {
    "gecko": {
      "id": "French-GC@grammalecte.net",
      "strict_min_version": "56.0"
    }
  },

Modified grammalecte-cli.py from [4a1caa6a4c] to [16fbb68f36].

1




2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
9
10
11
12

+
+
+
+







#!/usr/bin/env python3

"""
Grammalecte CLI (command line interface)
"""

import sys
import os.path
import argparse
import json

import grammalecte
69
70
71
72
73
74
75

76
77
78
79
80
81
82
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87







+







            iParagraph += 1
        if lLine:
            sText, lLineSet = txt.createParagraphWithLines(lLine)
            yield iParagraph, sText, lLineSet


def output (sText, hDst=None):
    "write in the console or in a file if <hDst> not null"
    if not hDst:
        echo(sText, end="")
    else:
        hDst.write(sText)


def loadDictionary (spf):
90
91
92
93
94
95
96

97
98
99
100
101
102
103
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109







+







        return oJSON
    else:
        print("# Error: file <" + spf + "> not found.")
        return None


def main ():
    "launch the CLI (command line interface)"
    xParser = argparse.ArgumentParser()
    xParser.add_argument("-f", "--file", help="parse file (UTF-8 required!) [on Windows, -f is similar to -ff]", type=str)
    xParser.add_argument("-ff", "--file_to_file", help="parse file (UTF-8 required!) and create a result file (*.res.txt)", type=str)
    xParser.add_argument("-owe", "--only_when_errors", help="display results only when there are errors", action="store_true")
    xParser.add_argument("-j", "--json", help="generate list of errors in JSON (only with option --file or --file_to_file)", action="store_true")
    xParser.add_argument("-cl", "--concat_lines", help="concatenate lines not separated by an empty paragraph (only with option --file or --file_to_file)", action="store_true")
    xParser.add_argument("-tf", "--textformatter", help="auto-format text according to typographical rules (not with option --concat_lines)", action="store_true")
230
231
232
233
234
235
236
237

238
239
240

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259


260
261
262
263
264
265
266
267
268
236
237
238
239
240
241
242

243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263


264
265
266
267
268
269
270
271
272
273
274







-
+


-
+

















-
-
+
+









                    oGrammarChecker.gce.ignoreRule(sRule)
                echo("done")
            elif sText.startswith("/++ "):
                for sRule in sText[3:].strip().split():
                    oGrammarChecker.gce.reactivateRule(sRule)
                echo("done")
            elif sText == "/debug" or sText == "/d":
                xArgs.debug = not(xArgs.debug)
                xArgs.debug = not xArgs.debug
                echo("debug mode on"  if xArgs.debug  else "debug mode off")
            elif sText == "/textformatter" or sText == "/tf":
                xArgs.textformatter = not(xArgs.textformatter)
                xArgs.textformatter = not xArgs.textformatter
                echo("textformatter on"  if xArgs.debug  else "textformatter off")
            elif sText == "/help" or sText == "/h":
                echo(_HELP)
            elif sText == "/lopt" or sText == "/lo":
                oGrammarChecker.gce.displayOptions("fr")
            elif sText.startswith("/lr"):
                sText = sText.strip()
                sFilter = sText[sText.find(" "):].strip()  if sText != "/lr" and sText != "/rules"  else None
                oGrammarChecker.gce.displayRules(sFilter)
            elif sText == "/quit" or sText == "/q":
                break
            elif sText.startswith("/rl"):
                # reload (todo)
                pass
            else:
                for sParagraph in txt.getParagraph(sText):
                    if xArgs.textformatter:
                        sText = oTextFormatter.formatText(sText)
                    sRes = oGrammarChecker.generateParagraph(sText, bEmptyIfNoErrors=xArgs.only_when_errors, nWidth=xArgs.width, bDebug=xArgs.debug)
                        sText = oTextFormatter.formatText(sParagraph)
                    sRes = oGrammarChecker.generateParagraph(sParagraph, bEmptyIfNoErrors=xArgs.only_when_errors, nWidth=xArgs.width, bDebug=xArgs.debug)
                    if sRes:
                        echo("\n" + sRes)
                    else:
                        echo("\nNo error found.")
            sText = _getText(sInputText)


if __name__ == '__main__':
    main()

Modified graphspell-js/ibdawg.js from [624ac3b2e2] to [b8f88a2609].

238
239
240
241
242
243
244
245
246


247
248
249
250
251
252
253
238
239
240
241
242
243
244


245
246
247
248
249
250
251
252
253







-
-
+
+







    }

    isValid (sWord) {
        // checks if sWord is valid (different casing tested if the first letter is a capital)
        if (!sWord) {
            return null;
        }
        if (sWord.includes("")) { // ugly hack
            sWord = sWord.replace("", "'");
        if (sWord.includes("'")) { // ugly hack
            sWord = sWord.replace("'", "");
        }
        if (this.lookup(sWord)) {
            return true;
        }
        if (sWord.charAt(0).gl_isUpperCase()) {
            if (sWord.length > 1) {
                if (sWord.gl_isTitle()) {
513
514
515
516
517
518
519
520

521
522
523
524
525
526
527
513
514
515
516
517
518
519

520
521
522
523
524
525
526
527







-
+







                    let sStem = ">" + this.funcStemming(sWord, this.lArcVal[nArc]);
                    // Now , we go to the next node and retrieve all following arcs values, all of them are tags
                    let iAddr2 = this._convBytesToInteger(this.byDic.slice(iEndArcAddr, iEndArcAddr+this.nBytesNodeAddress));
                    let nRawArc2 = 0;
                    while (!(nRawArc2 & this._lastArcMask)) {
                        let iEndArcAddr2 = iAddr2 + this.nBytesArc;
                        nRawArc2 = this._convBytesToInteger(this.byDic.slice(iAddr2, iEndArcAddr2));
                        l.push(sStem + " " + this.lArcVal[nRawArc2 & this._arcMask]);
                        l.push(sStem + "/" + this.lArcVal[nRawArc2 & this._arcMask]);
                        iAddr2 = iEndArcAddr2+this.nBytesNodeAddress;
                    }
                }
                iAddr = iEndArcAddr + this.nBytesNodeAddress;
            }
            return l;
        }

Modified graphspell-js/spellchecker.js from [ddeed35767] to [b26374afa0].

39
40
41
42
43
44
45




46
47
48
49
50
51
52
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56







+
+
+
+







        this.oExtendedDic = this._loadDictionary(extentedDic, sPath);
        this.oCommunityDic = this._loadDictionary(communityDic, sPath);
        this.oPersonalDic = this._loadDictionary(personalDic, sPath);
        this.bExtendedDic = Boolean(this.oExtendedDic);
        this.bCommunityDic = Boolean(this.oCommunityDic);
        this.bPersonalDic = Boolean(this.oPersonalDic);
        this.oTokenizer = null;
        // storage
        this.bStorage = false;
        this._dMorphologies = new Map();            // key: flexion, value: list of morphologies
        this._dLemmas = new Map();                  // key: flexion, value: list of lemmas
    }

    _loadDictionary (dictionary, sPath="", bNecessary=false) {
        // returns an IBDAWG object
        if (!dictionary) {
            return null;
        }
130
131
132
133
134
135
136
















137
138
139
140
141
142
143
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







        this.bCommunityDic = false;
    }

    deactivatePersonalDictionary () {
        this.bPersonalDic = false;
    }


    // Storage

    activateStorage () {
        this.bStorage = true;
    }

    deactivateStorage () {
        this.bStorage = false;
    }

    clearStorage () {
        this._dLemmas.clear();
        this._dMorphologies.clear();
    }


    // parse text functions

    parseParagraph (sText) {
        if (!this.oTokenizer) {
            this.loadTokenizer();
        }
201
202
203
204
205
206
207



208

209
210

211
212
213

214
215
216

217





218












219
220
221
222
223
224
225
221
222
223
224
225
226
227
228
229
230

231
232

233
234
235

236
237
238

239
240
241
242
243
244
245

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264







+
+
+
-
+

-
+


-
+


-
+

+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+







            return true;
        }
        return false;
    }

    getMorph (sWord) {
        // retrieves morphologies list, different casing allowed
        if (this.bStorage && this._dMorphologies.has(sWord)) {
            return this._dMorphologies.get(sWord);
        }
        let lResult = this.oMainDic.getMorph(sWord);
        let lMorph = this.oMainDic.getMorph(sWord);
        if (this.bExtendedDic) {
            lResult.push(...this.oExtendedDic.getMorph(sWord));
            lMorph.push(...this.oExtendedDic.getMorph(sWord));
        }
        if (this.bCommunityDic) {
            lResult.push(...this.oCommunityDic.getMorph(sWord));
            lMorph.push(...this.oCommunityDic.getMorph(sWord));
        }
        if (this.bPersonalDic) {
            lResult.push(...this.oPersonalDic.getMorph(sWord));
            lMorph.push(...this.oPersonalDic.getMorph(sWord));
        }
        if (this.bStorage) {
            this._dMorphologies.set(sWord, lMorph);
            this._dLemmas.set(sWord, Array.from(new Set(this.getMorph(sWord).map((sMorph) => { return sMorph.slice(1, sMorph.indexOf("/")); }))));
            //console.log(sWord, this._dLemmas.get(sWord));
        }
        return lResult;
        return lMorph;
    }

    getLemma (sWord) {
        // retrieves lemmas
        if (this.bStorage) {
            if (!this._dLemmas.has(sWord)) {
                this.getMorph(sWord);
            }
            return this._dLemmas.get(sWord);
        }
        return Array.from(new Set(this.getMorph(sWord).map((sMorph) => { return sMorph.slice(1, sMorph.indexOf("/")); })));
    }

    * suggest (sWord, nSuggLimit=10) {
        // generator: returns 1, 2 or 3 lists of suggestions
        yield this.oMainDic.suggest(sWord, nSuggLimit);
        if (this.bExtendedDic) {
            yield this.oExtendedDic.suggest(sWord, nSuggLimit);

Modified graphspell-js/tokenizer.js from [04c83f2aa3] to [88bacac87d].

9
10
11
12
13
14
15
16
17


18
19
20
21
22
23
24
25



26
27
28
29
30
31
32
33


34
35
36
37
38
39

40
41
42
43




44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

59
60






61
62

63

64
65
66



67
68
69
70
71

72
73
74
75
76
77
78
79
80
81
82














83
84
85
86
87
88
89
90
9
10
11
12
13
14
15


16
17
18
19
20
21
22
23


24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39

40
41



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

60
61

62
63
64
65
66
67
68

69
70
71



72
73
74





75











76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97







-
-
+
+






-
-
+
+
+






-
-
+
+





-
+

-
-
-
+
+
+
+














-
+

-
+
+
+
+
+
+

-
+

+
-
-
-
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+








const aTkzPatterns = {
    // All regexps must start with ^.
    "default":
        [
            [/^[   \t]+/, 'SPACE'],
            [/^\/(?:~|bin|boot|dev|etc|home|lib|mnt|opt|root|sbin|tmp|usr|var|Bureau|Documents|Images|Musique|Public|Téléchargements|Vidéos)(?:\/[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.()-]+)*/, 'FOLDERUNIX'],
            [/^[a-zA-Z]:\\(?:Program Files(?: \(x86\)|)|[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st.()]+)(?:\\[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.()-]+)*/, 'FOLDERWIN'],
            [/^[,.;:!?…«»“”‘’"(){}\[\]/·–—]+/, 'SEPARATOR'],
            [/^[A-Z][.][A-Z][.](?:[A-Z][.])*/, 'ACRONYM'],
            [/^[,.;:!?…«»“”‘’"(){}\[\]·–—]/, 'SEPARATOR'],
            [/^[A-Z][.][A-Z][.](?:[A-Z][.])*/, 'WORD_ACRONYM'],
            [/^(?:https?:\/\/|www[.]|[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]+[@.][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]{2,}[@.])[a-zA-Z0-9][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.\/?&!%=+*"'@$#-]+/, 'LINK'],
            [/^[#@][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]+/, 'TAG'],
            [/^<[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+.*?>|<\/[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+ *>/, 'HTML'],
            [/^\[\/?[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+\]/, 'PSEUDOHTML'],
            [/^&\w+;(?:\w+;|)/, 'HTMLENTITY'],
            [/^\d\d?h\d\d\b/, 'HOUR'],
            [/^-?\d+(?:[.,]\d+|)/, 'NUM'],
            [/^[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+(?:[’'`-][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+)*/, 'WORD']
            [/^\d+(?:[.,]\d+|)/, 'NUM'],
            [/^[%‰+=*/<>⩾⩽-]/, 'SIGN'],
            [/^[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ_]+(?:[’'`-][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ_]+)*/, 'WORD']
        ],
    "fr":
        [
            [/^[   \t]+/, 'SPACE'],
            [/^\/(?:~|bin|boot|dev|etc|home|lib|mnt|opt|root|sbin|tmp|usr|var|Bureau|Documents|Images|Musique|Public|Téléchargements|Vidéos)(?:\/[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.()-]+)*/, 'FOLDERUNIX'],
            [/^[a-zA-Z]:\\(?:Program Files(?: \(x86\)|)|[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st.()]+)(?:\\[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.()-]+)*/, 'FOLDERWIN'],
            [/^[,.;:!?…«»“”‘’"(){}\[\]/·–—]+/, 'SEPARATOR'],
            [/^[A-Z][.][A-Z][.](?:[A-Z][.])*/, 'ACRONYM'],
            [/^[,.;:!?…«»“”‘’"(){}\[\]·–—]/, 'SEPARATOR'],
            [/^[A-Z][.][A-Z][.](?:[A-Z][.])*/, 'WORD_ACRONYM'],
            [/^(?:https?:\/\/|www[.]|[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]+[@.][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]{2,}[@.])[a-zA-Z0-9][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_.\/?&!%=+*"'@$#-]+/, 'LINK'],
            [/^[#@][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st_-]+/, 'TAG'],
            [/^<[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+.*?>|<\/[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+ *>/, 'HTML'],
            [/^\[\/?[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+\]/, 'PSEUDOHTML'],
            [/^&\w+;(?:\w+;|)/, 'HTMLENTITY'],
            [/^(?:l|d|n|m|t|s|j|c|ç|lorsqu|puisqu|jusqu|quoiqu|qu)['’`]/i, 'ELPFX'],
            [/^(?:l|d|n|m|t|s|j|c|ç|lorsqu|puisqu|jusqu|quoiqu|qu)['’`]/i, 'WORD_ELIDED'],
            [/^\d\d?[hm]\d\d\b/, 'HOUR'],
            [/^\d+(?:er|nd|e|de|ième|ème|eme)s?\b/, 'ORDINAL'],
            [/^-?\d+(?:[.,]\d+|)/, 'NUM'],
            [/^[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+(?:[’'`-][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-st]+)*/, 'WORD']
            [/^\d+(?:ers?\b|nds?\b|es?\b|des?\b|ièmes?\b|èmes?\b|emes?\b|ᵉʳˢ?|ⁿᵈˢ?|ᵉˢ?|ᵈᵉˢ?)/, 'WORD_ORDINAL'],
            [/^\d+(?:[.,]\d+|)/, 'NUM'],
            [/^[%‰+=*/<>⩾⩽-]/, 'SIGN'],
            [/^[a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ_]+(?:[’'`-][a-zA-Zà-öÀ-Ö0-9ø-ÿØ-ßĀ-ʯfi-stᴀ-ᶿ_]+)*/, 'WORD']
        ]
};


class Tokenizer {

    constructor (sLang) {
        this.sLang = sLang;
        if (!aTkzPatterns.hasOwnProperty(sLang)) {
            this.sLang = "default";
        }
        this.aRules = aTkzPatterns[this.sLang];
    }

    * genTokens (sText) {
    * genTokens (sText, bStartEndToken=false, bWithSpaces=false) {
        let m;
        let i = 0;
        let iToken = 0;
        let iNext = 0;
        let iEnd = sText.length;
        if (bStartEndToken) {
            yield { "i": 0, "sType": "INFO", "sValue": "<start>", "nStart": 0, "nEnd": 0, "lMorph": ["<start>"] };
        }
        while (sText) {
            let nCut = 1;
            let iCut = 1;
            for (let [zRegex, sType] of this.aRules) {
                if (sType !== "SPACE"  ||  bWithSpaces) {
                try {
                    if ((m = zRegex.exec(sText)) !== null) {
                        if (sType == 'SEPARATOR') {
                    try {
                        if ((m = zRegex.exec(sText)) !== null) {
                            iToken += 1;
                            for (let c of m[0]) {
                                yield { "sType": sType, "sValue": c, "nStart": i, "nEnd": i + m[0].length }
                            }
                        } else {
                            yield { "sType": sType, "sValue": m[0], "nStart": i, "nEnd": i + m[0].length }
                            yield { "i": iToken, "sType": sType, "sValue": m[0], "nStart": iNext, "nEnd": iNext + m[0].length }
                        }
                        nCut = m[0].length;
                        break;
                    }
                }
                catch (e) {
                    console.error(e);
                }
            }
            i += nCut;
            sText = sText.slice(nCut);
                            iCut = m[0].length;
                            break;
                        }
                    }
                    catch (e) {
                        console.error(e);
                    }
                }
            }
            iNext += iCut;
            sText = sText.slice(iCut);
        }
        if (bStartEndToken) {
            yield { "i": iToken+1, "sType": "INFO", "sValue": "<end>", "nStart": iEnd, "nEnd": iEnd, "lMorph": ["<end>"] };
        }
    }
}


if (typeof(exports) !== 'undefined') {
    exports.Tokenizer = Tokenizer;
}

Modified graphspell/__init__.py from [a53bdfb757] to [7e05700bdd].










1
2
1
2
3
4
5
6
7
8
9
10
11
+
+
+
+
+
+
+
+
+



"""
SPELLCHECKER
using a Direct Acyclic Word Graph
with a transducer to retrieve
- lemma of words
- morphologies
with a spell suggestion mechanism
"""

from .spellchecker import *

Modified graphspell/char_player.py from [0a316c953c] to [8c9fd715c3].


1
2



3
4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
1


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

27
28
29
30
31
32
33
34
+
-
-
+
+
+










+











-
+







"""
# list of similar chars
# useful for suggestion mechanism
List of similar chars
useful for suggestion mechanism
"""

import re
import unicodedata


_xTransCharsForSpelling = str.maketrans({
    'ſ': 's',  'ffi': 'ffi',  'ffl': 'ffl',  'ff': 'ff',  'ſt': 'ft',  'fi': 'fi',  'fl': 'fl',  'st': 'st'
})

def spellingNormalization (sWord):
    "nomalization NFC and removing ligatures"
    return unicodedata.normalize("NFC", sWord.translate(_xTransCharsForSpelling))


_xTransCharsForSimplification = str.maketrans({
    'à': 'a',  'é': 'e',  'î': 'i',  'ô': 'o',  'û': 'u',  'ÿ': 'i',  "y": "i",
    'â': 'a',  'è': 'e',  'ï': 'i',  'ö': 'o',  'ù': 'u',  'ŷ': 'i',
    'ä': 'a',  'ê': 'e',  'í': 'i',  'ó': 'o',  'ü': 'u',  'ý': 'i',
    'á': 'a',  'ë': 'e',  'ì': 'i',  'ò': 'o',  'ú': 'u',  'ỳ': 'i',
    'ā': 'a',  'ē': 'e',  'ī': 'i',  'ō': 'o',  'ū': 'u',  'ȳ': 'i',
    'ç': 'c',  'ñ': 'n',  'k': 'q',  'w': 'v',
    'œ': 'oe',  'æ': 'ae',
    'ſ': 's',  'ffi': 'ffi',  'ffl': 'ffl',  'ff': 'ff',  'ſt': 'ft',  'fi': 'fi',  'fl': 'fl',  'st': 'st', 
    'ſ': 's',  'ffi': 'ffi',  'ffl': 'ffl',  'ff': 'ff',  'ſt': 'ft',  'fi': 'fi',  'fl': 'fl',  'st': 'st',
})

def simplifyWord (sWord):
    "word simplication before calculating distance between words"
    sWord = sWord.lower().translate(_xTransCharsForSimplification)
    sNewWord = ""
    for i, c in enumerate(sWord, 1):
90
91
92
93
94
95
96
97

98
99
100
101
102
103
104
93
94
95
96
97
98
99

100
101
102
103
104
105
106
107







-
+







    "Ë": "EeÉéÈèÊêËëĒēŒœ",

    "f": "fF",
    "F": "Ff",

    "g": "gGjJĵĴ",
    "G": "GgJjĴĵ",
    

    "h": "hH",
    "H": "Hh",

    "i": "iIîÎïÏyYíÍìÌīĪÿŸ",
    "I": "IiÎîÏïYyÍíÌìĪīŸÿ",
    "î": "iIîÎïÏyYíÍìÌīĪÿŸ",
    "Î": "IiÎîÏïYyÍíÌìĪīŸÿ",
235
236
237
238
239
240
241

242
243
244
245
246
247
248
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252







+







    "X": ("CC", "CT", "XX"),
    "z": ("ss", "zh"),
    "Z": ("SS", "ZH"),
}


def get1toXReplacement (cPrev, cCur, cNext):
    "return tuple of replacements for <cCur>"
    if cCur in aConsonant  and  (cPrev in aConsonant  or  cNext in aConsonant):
        return ()
    return d1toX.get(cCur, ())


d2toX = {
    "am": ("an", "en", "em"),

Modified graphspell/dawg.py from [8afc042909] to [257e064164].

1
2

3
4
5
6
7
8
9
10








11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
1
2
3








4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34


+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+















+







#!python3

"""
# FSA DICTIONARY BUILDER
#
# by Olivier R.
# License: MPL 2
#
# This tool encodes lexicon into an indexable binary dictionary 
# Input files MUST be encoded in UTF-8.

FSA DICTIONARY BUILDER

by Olivier R.
License: MPL 2

This tool encodes lexicon into an indexable binary dictionary
Input files MUST be encoded in UTF-8.
"""

import sys
import os
import collections
import json
import time
import re
import traceback

from . import str_transform as st
from .progressbar import ProgressBar



def readFile (spf):
    "generator: read file <spf> and return for each line a list of elements separated by a tabulation."
    print(" < Read lexicon: " + spf)
    if os.path.isfile(spf):
        with open(spf, "r", encoding="utf-8") as hSrc:
            for sLine in hSrc:
                sLine = sLine.strip()
                if sLine and not sLine.startswith("#"):
                    yield sLine.split("\t")
95
96
97
98
99
100
101
102

103
104
105
106
107
108
109

110
111
112
113
114

115
116
117
118
119
120
121
97
98
99
100
101
102
103

104
105
106
107
108
109
110

111
112
113
114
115

116
117
118
119
120
121
122
123







-
+






-
+




-
+







                    dTag[sTag] = nTag
                    lTag.append(sTag)
                    nTag += 1
                dTagOccur[sTag] = dTagOccur.get(sTag, 0) + 1
                aEntry.add((sFlex, dAff[sAff], dTag[sTag]))
        if not aEntry:
            raise ValueError("# Error. Empty lexicon")
        

        # Preparing DAWG
        print(" > Preparing list of words")
        print(" Filter: " + (sSelectFilterRegex or "[None]"))
        lVal = lChar + lAff + lTag
        lWord = [ [dChar[c] for c in sFlex] + [iAff+nChar] + [iTag+nChar+nAff]  for sFlex, iAff, iTag in aEntry ]
        aEntry = None
        

        # Dictionary of arc values occurrency, to sort arcs of each node
        dValOccur = dict( [ (dChar[c], dCharOccur[c])  for c in dChar ] \
                        + [ (dAff[aff]+nChar, dAffOccur[aff]) for aff in dAff ] \
                        + [ (dTag[tag]+nChar+nAff, dTagOccur[tag]) for tag in dTag ] )
        

        self.sFileName = src  if type(src) is str  else "[None]"
        self.sLangCode = sLangCode
        self.sLangName = sLangName
        self.sDicName = sDicName
        self.nEntry = len(lWord)
        self.aPreviousEntry = []
        DawgNode.resetNextId()
130
131
132
133
134
135
136
137

138
139
140
141

142
143
144
145
146
147
148
149
150
151
152

153
154
155
156
157
158

159
160
161

162
163
164
165
166
167
168
132
133
134
135
136
137
138

139
140
141
142

143
144
145
146
147
148
149
150
151
152
153

154
155
156
157
158
159
160
161
162
163

164
165
166
167
168
169
170
171







-
+



-
+










-
+






+


-
+







        self.nAff = nAff
        self.lArcVal = lVal
        self.nArcVal = len(lVal)
        self.nTag = self.nArcVal - self.nChar - nAff
        self.cStemming = cStemming
        if cStemming == "A":
            self.funcStemming = st.changeWordWithAffixCode
        elif cStemming == "S":    
        elif cStemming == "S":
            self.funcStemming = st.changeWordWithSuffixCode
        else:
            self.funcStemming = st.noStemming
        

        # build
        lWord.sort()
        oProgBar = ProgressBar(0, len(lWord))
        for aEntry in lWord:
            self.insert(aEntry)
            oProgBar.increment(1)
        oProgBar.done()
        self.finish()
        self.countNodes()
        self.countArcs()
        self.sortNodes()         # version 2 and 3 
        self.sortNodes()         # version 2 and 3
        self.sortNodeArcs(dValOccur)
        #self.sortNodeArcs2 (self.oRoot, "")
        self.displayInfo()

    # BUILD DAWG
    def insert (self, aEntry):
        "insert a new entry (insertion must be made in alphabetical order)."
        if aEntry < self.aPreviousEntry:
            sys.exit("# Error: Words must be inserted in alphabetical order.")
        

        # find common prefix between word and previous word
        nCommonPrefix = 0
        for i in range(min(len(aEntry), len(self.aPreviousEntry))):
            if aEntry[i] != self.aPreviousEntry[i]:
                break
            nCommonPrefix += 1

177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
180
181
182
183
184
185
186

187
188
189
190
191
192
193
194







-
+







            oNode = self.lUncheckedNodes[-1][2]

        iChar = nCommonPrefix
        for c in aEntry[nCommonPrefix:]:
            oNextNode = DawgNode()
            oNode.arcs[c] = oNextNode
            self.lUncheckedNodes.append((oNode, c, oNextNode))
            if iChar == (len(aEntry) - 2): 
            if iChar == (len(aEntry) - 2):
                oNode.final = True
            iChar += 1
            oNode = oNextNode
        oNode.final = True
        self.aPreviousEntry = aEntry

    def finish (self):
201
202
203
204
205
206
207

208
209
210

211
212
213
214

215

216
217
218
219
220

221

222
223
224
225
226
227
228
229

230
231
232
233

234
235
236
237
238
239
240
241
242


243

244
245
246
247
248
249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269

270
271
272
273
274
275
276
277
278
279

280
281
282
283
284
285
286
287
288
289

290
291
292
293
294
295
296
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218

219
220
221
222
223
224
225

226
227
228
229
230
231
232
233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
248


249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309







+



+



-
+

+




-
+

+








+



-
+







-
-
+
+

+








+


















+










+










+







                oNode.arcs[char] = self.lMinimizedNodes[oChildNode]
            else:
                # add the state to the minimized nodes.
                self.lMinimizedNodes[oChildNode] = oChildNode
            self.lUncheckedNodes.pop()

    def countNodes (self):
        "count the number of nodes of the whole word graph"
        self.nNode = len(self.lMinimizedNodes)

    def countArcs (self):
        "count the number of arcs in the whole word graph"
        self.nArc = 0
        for oNode in self.lMinimizedNodes:
            self.nArc += len(oNode.arcs)
    

    def sortNodeArcs (self, dValOccur):
        "sort arcs of each node according to <dValOccur>"
        print(" > Sort node arcs")
        self.oRoot.sortArcs(dValOccur)
        for oNode in self.lMinimizedNodes:
            oNode.sortArcs(dValOccur)
    

    def sortNodeArcs2 (self, oNode, cPrevious=""):
        "sort arcs of each node depending on the previous char"
        # recursive function
        dCharOccur = getCharOrderAfterChar(cPrevious)
        if dCharOccur:
            oNode.sortArcs2(dCharOccur, self.lArcVal)
        for nArcVal, oNextNode in oNode.arcs.items():
            self.sortNodeArcs2(oNextNode, self.lArcVal[nArcVal])

    def sortNodes (self):
        "sort nodes"
        print(" > Sort nodes")
        for oNode in self.oRoot.arcs.values():
            self._parseNodes(oNode)
    

    def _parseNodes (self, oNode):
        # Warning: recursive method
        if oNode.pos > 0:
            return
        oNode.setPos()
        self.lSortedNodes.append(oNode)
        for oNextNode in oNode.arcs.values():
             self._parseNodes(oNextNode)
        
            self._parseNodes(oNextNode)

    def lookup (self, sWord):
        "return True if <sWord> is within the word graph (debugging)"
        oNode = self.oRoot
        for c in sWord:
            if self.dChar.get(c, '') not in oNode.arcs:
                return False
            oNode = oNode.arcs[self.dChar[c]]
        return oNode.final

    def morph (self, sWord):
        "return a string of the morphologies of <sWord> (debugging)"
        oNode = self.oRoot
        for c in sWord:
            if self.dChar.get(c, '') not in oNode.arcs:
                return ''
            oNode = oNode.arcs[self.dChar[c]]
        if oNode.final:
            s = "* "
            for arc in oNode.arcs:
                if arc >= self.nChar:
                    s += " [" + self.funcStemming(sWord, self.lArcVal[arc])
                    oNode2 = oNode.arcs[arc]
                    for arc2 in oNode2.arcs:
                        s += " / " + self.lArcVal[arc2]
                    s += "]"
            return s
        return ''

    def displayInfo (self):
        "display informations about the word graph"
        print(" * {:<12} {:>16,}".format("Entries:", self.nEntry))
        print(" * {:<12} {:>16,}".format("Characters:", self.nChar))
        print(" * {:<12} {:>16,}".format("Affixes:", self.nAff))
        print(" * {:<12} {:>16,}".format("Tags:", self.nTag))
        print(" * {:<12} {:>16,}".format("Arc values:", self.nArcVal))
        print(" * {:<12} {:>16,}".format("Nodes:", self.nNode))
        print(" * {:<12} {:>16,}".format("Arcs:", self.nArc))
        print(" * {:<12} {:>16}".format("Stemming:", self.cStemming + "FX"))

    def getArcStats (self):
        "return a string with statistics about nodes and arcs"
        d = {}
        for oNode in self.lMinimizedNodes:
            n = len(oNode.arcs)
            d[n] = d.get(n, 0) + 1
        s = " * Nodes:\n"
        for n in d:
            s = s + " {:>9} nodes have {:>3} arcs\n".format(d[n], n)
        return s

    def writeInfo (self, sPathFile):
        "write informations in file <sPathFile>"
        print(" > Write informations")
        with open(sPathFile, 'w', encoding='utf-8', newline="\n") as hDst:
            hDst.write(self.getArcStats())
            hDst.write("\n * Values:\n")
            for i, s in enumerate(self.lArcVal):
                hDst.write(" {:>6}. {}\n".format(i, s))
            hDst.close()
392
393
394
395
396
397
398

399
400
401
402
403
404
405
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419







+







                    if 1 < (oNextNode.addr - self.lSortedNodes[i].addr) < self.nMaxOffset:
                        nSize -= nDiff
                if self.lSortedNodes[i].size != nSize:
                    self.lSortedNodes[i].size = nSize
                    bEnd = False

    def getBinaryAsJSON (self, nCompressionMethod=1, bBinaryDictAsHexString=True):
        "return a JSON string containing all necessary data of the dictionary (compressed as a binary string)"
        self._calculateBinary(nCompressionMethod)
        byDic = b""
        if nCompressionMethod == 1:
            byDic = self.oRoot.convToBytes1(self.nBytesArc, self.nBytesNodeAddress)
            for oNode in self.lMinimizedNodes:
                byDic += oNode.convToBytes1(self.nBytesArc, self.nBytesNodeAddress)
        elif nCompressionMethod == 2:
434
435
436
437
438
439
440

441
442
443
444
445
446
447
448
449
450
451


452
453
454

455
456
457
458

459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477

478
479
480

481
482
483
484
485
486
487
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470

471
472
473
474

475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493

494
495
496

497
498
499
500
501
502
503
504







+











+
+


-
+



-
+


















-
+


-
+







            # Mozilla’s JS parser don’t like file bigger than 4 Mb!
            # So, if necessary, we use an hexadecimal string, that we will convert later in Firefox’s extension.
            # https://github.com/mozilla/addons-linter/issues/1361
            "sByDic": byDic.hex()  if bBinaryDictAsHexString  else [ e  for e in byDic ]
        }

    def writeAsJSObject (self, spfDst, nCompressionMethod, bInJSModule=False, bBinaryDictAsHexString=True):
        "write a file (JSON or JS module) with all the necessary data"
        if not spfDst.endswith(".json"):
            spfDst += "."+str(nCompressionMethod)+".json"
        with open(spfDst, "w", encoding="utf-8", newline="\n") as hDst:
            if bInJSModule:
                hDst.write('// JavaScript\n// Generated data (do not edit)\n\n"use strict";\n\nconst dictionary = ')
            hDst.write( json.dumps(self.getBinaryAsJSON(nCompressionMethod, bBinaryDictAsHexString), ensure_ascii=False) )
            if bInJSModule:
                hDst.write(";\n\nexports.dictionary = dictionary;\n")

    def writeBinary (self, sPathFile, nCompressionMethod, bDebug=False):
        """
        Save as a binary file.

        Format of the binary indexable dictionary:
        Each section is separated with 4 bytes of \0
        

        - Section Header:
            /grammalecte-fsa/[compression method]
                * compression method is an ASCII string
        

        - Section Informations:
            /[lang code]
            /[lang name]
            /[dictionary name]
            /[date creation]
            /[number of chars]
            /[number of bytes for each arc]
            /[number of bytes for each address node]
            /[number of entries]
            /[number of nodes]
            /[number of arcs]
            /[number of affixes]
                * each field is a ASCII string
            /[stemming code]
                * "S" means stems are generated by /suffix_code/,
                  "A" means they are generated by /affix_code/
                  See defineSuffixCode() and defineAffixCode() for details.
                  "N" means no stemming
        

        - Section Values:
                * a list of strings encoded in binary from utf-8, each value separated with a tabulation
        

        - Section Word Graph (nodes / arcs)
                * A list of nodes which are a list of arcs with an address of the next node.
                  See DawgNode.convToBytes() for details.
        """
        self._calculateBinary(nCompressionMethod)
        if not sPathFile.endswith(".bdic"):
            sPathFile += "."+str(nCompressionMethod)+".bdic"
518
519
520
521
522
523
524
525

526
527
528

529
530

531
532

533
534

535
536
537

538
539
540
541


542
543
544

545
546
547
548
549
550
551
552
553
554
555

556
557
558

559
560
561
562
563
564

565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580

581
582
583

584
585
586
587
588


589
590
591
592

593
594
595
596
597



598
599
600
601



602
603
604
605
606




607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627



628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646


647
648
649
650

651
652
653
654
655



656
657
658
659



660
661
662
663
664




665
666
667
668
669
670
671
535
536
537
538
539
540
541

542
543
544

545
546

547
548

549
550

551
552
553

554
555
556
557
558
559
560
561
562

563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584

585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616

617
618
619



620
621
622
623



624
625
626
627




628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650


651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677

678
679
680



681
682
683
684



685
686
687
688




689
690
691
692
693
694
695
696
697
698
699







-
+


-
+

-
+

-
+

-
+


-
+




+
+


-
+











+



+





-
+
















+



+





+
+



-
+


-
-
-
+
+
+

-
-
-
+
+
+

-
-
-
-
+
+
+
+



















-
-
+
+
+



















+
+



-
+


-
-
-
+
+
+

-
-
-
+
+
+

-
-
-
-
+
+
+
+







        return time.strftime("%Y.%m.%d, %H:%M")

    def _writeNodes (self, sPathFile, nCompressionMethod):
        "for debugging only"
        print(" > Write nodes")
        with open(sPathFile+".nodes."+str(nCompressionMethod)+".txt", 'w', encoding='utf-8', newline="\n") as hDst:
            if nCompressionMethod == 1:
                hDst.write(self.oRoot.getTxtRepr1(self.nBytesArc, self.nBytesNodeAddress, self.lArcVal)+"\n")
                hDst.write(self.oRoot.getTxtRepr1(self.nBytesArc, self.lArcVal)+"\n")
                #hDst.write( ''.join( [ "%02X " %  z  for z in self.oRoot.convToBytes1(self.nBytesArc, self.nBytesNodeAddress) ] ).strip() )
                for oNode in self.lMinimizedNodes:
                    hDst.write(oNode.getTxtRepr1(self.nBytesArc, self.nBytesNodeAddress, self.lArcVal)+"\n")
                    hDst.write(oNode.getTxtRepr1(self.nBytesArc, self.lArcVal)+"\n")
            if nCompressionMethod == 2:
                hDst.write(self.oRoot.getTxtRepr2(self.nBytesArc, self.nBytesNodeAddress, self.lArcVal)+"\n")
                hDst.write(self.oRoot.getTxtRepr2(self.nBytesArc, self.lArcVal)+"\n")
                for oNode in self.lSortedNodes:
                    hDst.write(oNode.getTxtRepr2(self.nBytesArc, self.nBytesNodeAddress, self.lArcVal)+"\n")
                    hDst.write(oNode.getTxtRepr2(self.nBytesArc, self.lArcVal)+"\n")
            if nCompressionMethod == 3:
                hDst.write(self.oRoot.getTxtRepr3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset, self.lArcVal)+"\n")
                hDst.write(self.oRoot.getTxtRepr3(self.nBytesArc, self.nBytesOffset, self.lArcVal)+"\n")
                #hDst.write( ''.join( [ "%02X " %  z  for z in self.oRoot.convToBytes3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset) ] ).strip() )
                for oNode in self.lSortedNodes:
                    hDst.write(oNode.getTxtRepr3(self.nBytesArc, self.nBytesNodeAddress, self.nBytesOffset, self.lArcVal)+"\n")
                    hDst.write(oNode.getTxtRepr3(self.nBytesArc, self.nBytesOffset, self.lArcVal)+"\n")



class DawgNode:
    """Node of the word graph"""

    NextId = 0
    NextPos = 1 # (version 2)
    

    def __init__ (self):
        self.i = DawgNode.NextId
        DawgNode.NextId += 1
        self.final = False
        self.arcs = {}          # key: arc value; value: a node
        self.addr = 0           # address in the binary dictionary
        self.pos = 0            # position in the binary dictionary (version 2)
        self.size = 0           # size of node in bytes (version 3)

    @classmethod
    def resetNextId (cls):
        "set NextId to 0 "
        cls.NextId = 0

    def setPos (self): # version 2
        "define a position for node (version 2)"
        self.pos = DawgNode.NextPos
        DawgNode.NextPos += 1

    def __str__ (self):
        # Caution! this function is used for hashing and comparison!
        sFinalChar = "1"  if self.final  else "0";
        sFinalChar = "1"  if self.final  else "0"
        l = [sFinalChar]
        for (key, node) in self.arcs.items():
            l.append(str(key))
            l.append(str(node.i))
        return "_".join(l)

    def __hash__ (self):
        # Used as a key in a python dictionary.
        return self.__str__().__hash__()

    def __eq__ (self, other):
        # Used as a key in a python dictionary.
        # Nodes are equivalent if they have identical arcs, and each identical arc leads to identical states.
        return self.__str__() == other.__str__()

    def sortArcs (self, dValOccur):
        "sort arcs of node according to <dValOccur>"
        self.arcs = collections.OrderedDict(sorted(self.arcs.items(), key=lambda t: dValOccur.get(t[0], 0), reverse=True))

    def sortArcs2 (self, dValOccur, lArcVal):
        "sort arcs of each node depending on the previous char"
        self.arcs = collections.OrderedDict(sorted(self.arcs.items(), key=lambda t: dValOccur.get(lArcVal[t[0]], 0), reverse=True))

    # VERSION 1 =====================================================================================================
    def convToBytes1 (self, nBytesArc, nBytesNodeAddress):
        """
        Convert to bytes (method 1).

        Node scheme:
        - Arc length is defined by nBytesArc
        - Address length is defined by nBytesNodeAddress
                                       

        |                Arc                |                         Address of next node                          |
        |                                   |                                                                       |
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
               ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
         [...]
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
               ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
          ^ ^
          | |
          | |
          |  \___ if 1, last arc of this node
           \_____ if 1, this node is final (only on the first arc)
          ┃ ┃
          ┃ ┃
           ┗━━━ if 1, last arc of this node
          ┗━━━━━ if 1, this node is final (only on the first arc)
        """
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        if len(self.arcs) == 0:
            val = nFinalNodeMask | nFinalArcMask
            by = val.to_bytes(nBytesArc, byteorder='big')
            by += (0).to_bytes(nBytesNodeAddress, byteorder='big')
            return by
        by = b""
        for i, arc in enumerate(self.arcs, 1):
            val = arc
            if i == 1 and self.final:
                val = val | nFinalNodeMask
            if i == nArc:
                val = val | nFinalArcMask
            by += val.to_bytes(nBytesArc, byteorder='big')
            by += self.arcs[arc].addr.to_bytes(nBytesNodeAddress, byteorder='big')
        return by
        
    def getTxtRepr1 (self, nBytesArc, nBytesNodeAddress, lVal):

    def getTxtRepr1 (self, nBytesArc, lVal):
        "return representation as string of node (method 1)"
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        s = "i{:_>10} -- #{:_>10}\n".format(self.i, self.addr)
        if len(self.arcs) == 0:
            s += "  {:<20}  {:0>16}  i{:_>10}   #{:_>10}\n".format("", bin(nFinalNodeMask | nFinalArcMask)[2:], "0", "0")
            return s
        for i, arc in enumerate(self.arcs, 1):
            val = arc
            if i == 1 and self.final:
                val = val | nFinalNodeMask
            if i == nArc:
                val = val | nFinalArcMask
            s += "  {:<20}  {:0>16}  i{:_>10}   #{:_>10}\n".format(lVal[arc], bin(val)[2:], self.arcs[arc].i, self.arcs[arc].addr)
        return s

    # VERSION 2 =====================================================================================================
    def convToBytes2 (self, nBytesArc, nBytesNodeAddress):
        """
        Convert to bytes (method 2).

        Node scheme:
        - Arc length is defined by nBytesArc
        - Address length is defined by nBytesNodeAddress
                                       

        |                Arc                |                         Address of next node                          |
        |                                   |                                                                       |
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
               ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
         [...]
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
               ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
          ^ ^ ^
          | | |
          | |  \_ if 1, caution, no address: next node is the following node
          |  \___ if 1, last arc of this node
           \_____ if 1, this node is final (only on the first arc)
          ┃ ┃ ┃
           ┃ ┗━━ if 1, caution, no address: next node is the following node
           ┗━━━━ if 1, last arc of this node
          ┗━━━━━━ if 1, this node is final (only on the first arc)
        """
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        nNextNodeMask = 1 << ((nBytesArc*8)-3)
        if len(self.arcs) == 0:
            val = nFinalNodeMask | nFinalArcMask
682
683
684
685
686
687
688
689
690



691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707

708
709
710
711
712
713
714


715
716
717
718
719

720
721
722
723
724



725
726
727
728
729
730
731






732
733
734
735
736
737




738
739
740
741
742
743
744
710
711
712
713
714
715
716


717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735

736
737
738
739
740
741
742
743
744
745
746
747
748
749

750
751
752



753
754
755
756






757
758
759
760
761
762
763
764




765
766
767
768
769
770
771
772
773
774
775







-
-
+
+
+
















-
+







+
+




-
+


-
-
-
+
+
+

-
-
-
-
-
-
+
+
+
+
+
+


-
-
-
-
+
+
+
+







            if (self.pos + 1) == self.arcs[arc].pos and self.i != 0:
                val = val | nNextNodeMask
                by += val.to_bytes(nBytesArc, byteorder='big')
            else:
                by += val.to_bytes(nBytesArc, byteorder='big')
                by += self.arcs[arc].addr.to_bytes(nBytesNodeAddress, byteorder='big')
        return by
        
    def getTxtRepr2 (self, nBytesArc, nBytesNodeAddress, lVal):

    def getTxtRepr2 (self, nBytesArc, lVal):
        "return representation as string of node (method 2)"
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        nNextNodeMask = 1 << ((nBytesArc*8)-3)
        s = "i{:_>10} -- #{:_>10}\n".format(self.i, self.addr)
        if nArc == 0:
            s += "  {:<20}  {:0>16}  i{:_>10}   #{:_>10}\n".format("", bin(nFinalNodeMask | nFinalArcMask)[2:], "0", "0")
            return s
        for i, arc in enumerate(self.arcs, 1):
            val = arc
            if i == 1 and self.final:
                val = val | nFinalNodeMask
            if i == nArc:
                val = val | nFinalArcMask
            if (self.pos + 1) == self.arcs[arc].pos  and self.i != 0:
                val = val | nNextNodeMask
                s += "  {:<20}  {:0>16}\n".format(lVal[arc], bin(val)[2:], "")
                s += "  {:<20}  {:0>16}\n".format(lVal[arc], bin(val)[2:])
            else:
                s += "  {:<20}  {:0>16}  i{:_>10}   #{:_>10}\n".format(lVal[arc], bin(val)[2:], self.arcs[arc].i, self.arcs[arc].addr)
        return s

    # VERSION 3 =====================================================================================================
    def convToBytes3 (self, nBytesArc, nBytesNodeAddress, nBytesOffset):
        """
        Convert to bytes (method 3).

        Node scheme:
        - Arc length is defined by nBytesArc
        - Address length is defined by nBytesNodeAddress
        - Offset length is defined by nBytesOffset
                                       

        |                Arc                |            Address of next node  or  offset to next node              |
        |                                   |                                                                       |
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         |1|0|0| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
         100   ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
         [...]
         /---------------\ /---------------\ /---------------\
         |0|0|1| | | | | | | | | | | | | | | | | | | | | | | |     Offsets are shorter than addresses
         \---------------/ \---------------/ \---------------/ 
         /---------------\ /---------------\ /---------------\ /---------------\ /---------------\ /---------------\
         |0|1|0| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
         \---------------/ \---------------/ \---------------/ \---------------/ \---------------/ \---------------/
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
         001   ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃     Offsets are shorter than addresses
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛
         ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━━━┓
         010   ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
         ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━┛

          ^ ^ ^
          | | |
          | |  \_ if 1, offset instead of address of next node
          |  \___ if 1, last arc of this node
           \_____ if 1, this node is final (only on the first arc)
          ┃ ┃ ┃
           ┃ ┗━━ if 1, offset instead of address of next node
           ┗━━━━ if 1, last arc of this node
          ┗━━━━━━ if 1, this node is final (only on the first arc)
        """
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        nNextNodeMask = 1 << ((nBytesArc*8)-3)
        nMaxOffset = (2 ** (nBytesOffset * 8)) - 1
        if nArc == 0:
757
758
759
760
761
762
763
764
765



766
767
768
769
770
771
772
788
789
790
791
792
793
794


795
796
797
798
799
800
801
802
803
804







-
-
+
+
+







                val = val | nNextNodeMask
                by += val.to_bytes(nBytesArc, byteorder='big')
                by += (self.arcs[arc].addr-self.addr).to_bytes(nBytesOffset, byteorder='big')
            else:
                by += val.to_bytes(nBytesArc, byteorder='big')
                by += self.arcs[arc].addr.to_bytes(nBytesNodeAddress, byteorder='big')
        return by
        
    def getTxtRepr3 (self, nBytesArc, nBytesNodeAddress, nBytesOffset, lVal):

    def getTxtRepr3 (self, nBytesArc, nBytesOffset, lVal):
        "return representation as string of node (method 3)"
        nArc = len(self.arcs)
        nFinalNodeMask = 1 << ((nBytesArc*8)-1)
        nFinalArcMask = 1 << ((nBytesArc*8)-2)
        nNextNodeMask = 1 << ((nBytesArc*8)-3)
        nMaxOffset = (2 ** (nBytesOffset * 8)) - 1
        s = "i{:_>10} -- #{:_>10}  ({})\n".format(self.i, self.addr, self.size)
        if nArc == 0:
792
793
794
795
796
797
798

799
800
801
802
803
804
805
806
807

808
809
810
811

812
813
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848







+









+




+


_dCharOrder = {
    # key: previous char, value: dictionary of chars {c: nValue}
    "": {}
}


def addWordToCharDict (sWord):
    "for each character of <sWord>, count how many times it appears after the previous character, and store result in a <_dCharOrder>"
    cPrevious = ""
    for cChar in sWord:
        if cPrevious not in _dCharOrder:
            _dCharOrder[cPrevious] = {}
        _dCharOrder[cPrevious][cChar] = _dCharOrder[cPrevious].get(cChar, 0) + 1
        cPrevious = cChar


def getCharOrderAfterChar (cChar):
    "return a dictionary of chars with number of times it appears after character <cChar>"
    return _dCharOrder.get(cChar, None)


def displayCharOrder ():
    "display how many times each character appear after another one"
    for key, value in _dCharOrder.items():
        print("[" + key + "]: ", ", ".join([ c+":"+str(n)  for c, n  in  sorted(value.items(), key=lambda t: t[1], reverse=True) ]))

Modified graphspell/echo.py from [6d11a5dda8] to [12e48b665e].

1
2

3


4


5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

28
29
1
2
3

4
5
6
7
8
9
10
11
12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

31
32
33


+
-
+
+

+
+




-
+

















-
+


#!python3

"""
# The most boring yet indispensable function: print!
The most boring yet indispensable function: print!
Because you can print on Windows console without being sure the script won’t crash…

Windows console don’t accept many characters.
"""

import sys


_CHARMAP = str.maketrans({  'œ': 'ö',  'Œ': 'Ö',  'ʳ': "r",  'ᵉ': "e",  '…': "_",  \
_CHARMAP = str.maketrans({  'œ': 'ö',  'Œ': 'Ö',  'ʳ': "r",  'ᵉ': "e",  'ˢ': "s",  'ᵈ': "d", '…': "_",  \
                            '“': '"',  '”': '"',  '„': '"',  '‘': "'",  '’': "'",  \
                            'ā': 'â',  'Ā': 'Â',  'ē': 'ê',  'Ē': 'Ê',  'ī': 'î',  'Ī': 'Î',  \
                            'ō': 'ô',  'Ō': 'Ô',  'ū': 'û',  'Ū': 'Û',  'Ÿ': 'Y',  \
                            'ś': 's',  'ŝ': 's',  \
                            '—': '-',  '–': '-'
                         })


def echo (obj, sep=' ', end='\n', file=sys.stdout, flush=False):
    """ Print for Windows to avoid Python crashes.
        Encoding depends on Windows locale. No useful standard.
        Always returns True (useful for debugging)."""
    if sys.platform != "win32":
        print(obj, sep=sep, end=end, file=file, flush=flush)
        return True
    try:
        print(str(obj).translate(_CHARMAP), sep=sep, end=end, file=file, flush=flush)
    except:
    except Exception:
        print(str(obj).encode('ascii', 'replace').decode('ascii', 'replace'), sep=sep, end=end, file=file, flush=flush)
    return True

Added graphspell/fr.py version [963bf7ea5b].















































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
"""
Default suggestion for French language
"""

dSugg = {
    "bcp": "beaucoup",
    "ca": "ça",
    "cad": "c’est-à-dire",
    "cb": "combien|CB",
    "cdlt": "cordialement",
    "construirent": "construire|construisirent|construisent|construiront",
    "càd": "c’est-à-dire",
    "dc": "de|donc",
    "email": "courriel|e-mail|émail",
    "emails": "courriels|e-mails",
    "Etes-vous": "Êtes-vous",
    "Etiez-vous": "Étiez-vous",
    "Etions-nous": "Étions-nous",
    "parce-que": "parce que",
    "pcq": "parce que",
    "pd": "pendant",
    "pdq": "pendant que",
    "pdt": "pendant",
    "pdtq": "pendant que",
    "pk": "pourquoi",
    "pq": "pourquoi|PQ",
    "prq": "presque",
    "prsq": "presque",
    "qcq": "quiconque",
    "qq": "quelque",
    "qqch": "quelque chose",
    "qqn": "quelqu’un",
    "qqne": "quelqu’une",
    "qqs": "quelques",
    "qqunes": "quelques-unes",
    "qquns": "quelques-uns",
    "tdq": "tandis que",
    "tj": "toujours",
    "tjs": "toujours",
    "tq": "tant que|tandis que",
    "ts": "tous",
    "tt": "tant|tout",
    "tte": "toute",
    "ttes": "toutes",
    "y’a": "y a"
}

Modified graphspell/ibdawg.py from [98abc07d28] to [fc0e14c33c].

1
2





3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

24
25
26
27
28
29
30
1
2
3
4
5
6
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


+
+
+
+
+
-
+




















+







#!python3

"""
INDEXABLE BINARY DIRECT ACYCLIC WORD GRAPH
Implementation of a spellchecker as a transducer (storing transformation code to get lemma and morphologies)
and a spell suggestion mechanim
"""
import os

import traceback
import pkgutil
import re
from functools import wraps
import time
import json
import binascii

#import logging
#logging.basicConfig(filename="suggestions.log", level=logging.DEBUG)

from . import str_transform as st
from . import char_player as cp
from .echo import echo


def timethis (func):
    "decorator for the execution time"
    @wraps(func)
    def wrapper (*args, **kwargs):
        "something to prevent pylint whining"
        fStart = time.time()
        result = func(*args, **kwargs)
        fEnd = time.time()
        print(func.__name__, fEnd - fStart)
        return result
    return wrapper

54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

80
81
82
83
84
85
86
60
61
62
63
64
65
66

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93







-
+


















+







                    self.dSugg[nDist] = []
                self.dSugg[nDist].append(sSugg)
                self.aSugg.add(sSugg)
                if nDist < self.nMinDist:
                    self.nMinDist = nDist
                self.nDistLimit = min(self.nDistLimit, self.nMinDist+2)

    def getSuggestions (self, nSuggLimit=10, nDistLimit=-1):
    def getSuggestions (self, nSuggLimit=10):
        "return a list of suggestions"
        if self.dSugg[0]:
            # we sort the better results with the original word
            self.dSugg[0].sort(key=lambda sSugg: st.distanceDamerauLevenshtein(self.sWord, sSugg))
        lRes = self.dSugg.pop(0)
        for nDist, lSugg in self.dSugg.items():
            if nDist <= self.nDistLimit:
                lRes.extend(lSugg)
                if len(lRes) > nSuggLimit:
                    break
        lRes = list(cp.filterSugg(lRes))
        if self.sWord.isupper():
            lRes = list(map(lambda sSugg: sSugg.upper(), lRes))
        elif self.sWord[0:1].isupper():
            lRes = list(map(lambda sSugg: sSugg[0:1].upper()+sSugg[1:], lRes))  # dont’ use <.istitle>
        return lRes[:nSuggLimit]

    def reset (self):
        "clear data"
        self.aSugg.clear()
        self.dSugg.clear()


class IBDAWG:
    """INDEXABLE BINARY DIRECT ACYCLIC WORD GRAPH"""

180
181
182
183
184
185
186

187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223

























224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245


246
247
248
249
250
251
252
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

























207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251


252
253
254
255
256
257
258
259
260







+












-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




















-
-
+
+







    def _initJSON (self, oJSON):
        "initialize with a JSON text file"
        self.__dict__.update(oJSON)
        self.byDic = binascii.unhexlify(self.sByDic)
        self.dCharVal = { v: k  for k, v in self.dChar.items() }

    def getInfo (self):
        "return string about the IBDAWG"
        return  "  Language: {0.sLangName}   Lang code: {0.sLangCode}   Dictionary name: {0.sDicName}" \
                "  Compression method: {0.nCompressionMethod:>2}   Date: {0.sDate}   Stemming: {0.cStemming}FX\n" \
                "  Arcs values:  {0.nArcVal:>10,} = {0.nChar:>5,} characters,  {0.nAff:>6,} affixes,  {0.nTag:>6,} tags\n" \
                "  Dictionary: {0.nEntry:>12,} entries,    {0.nNode:>11,} nodes,   {0.nArc:>11,} arcs\n" \
                "  Address size: {0.nBytesNodeAddress:>1} bytes,  Arc size: {0.nBytesArc:>1} bytes\n".format(self)

    def writeAsJSObject (self, spfDest, bInJSModule=False, bBinaryDictAsHexString=False):
        "write IBDAWG as a JavaScript object in a JavaScript module"
        with open(spfDest, "w", encoding="utf-8", newline="\n") as hDst:
            if bInJSModule:
                hDst.write('// JavaScript\n// Generated data (do not edit)\n\n"use strict";\n\nconst dictionary = ')
            hDst.write(json.dumps({
                            "sHeader": "/grammalecte-fsa/",
                            "sLangCode": self.sLangCode,
                            "sLangName": self.sLangName,
                            "sDicName": self.sDicName,
                            "sFileName": self.sFileName,
                            "sDate": self.sDate,
                            "nEntry": self.nEntry,
                            "nChar": self.nChar,
                            "nAff": self.nAff,
                            "nTag": self.nTag,
                            "cStemming": self.cStemming,
                            "dChar": self.dChar,
                            "nNode": self.nNode,
                            "nArc": self.nArc,
                            "nArcVal": self.nArcVal,
                            "lArcVal": self.lArcVal,
                            "nCompressionMethod": self.nCompressionMethod,
                            "nBytesArc": self.nBytesArc,
                            "nBytesNodeAddress": self.nBytesNodeAddress,
                            "nBytesOffset": self.nBytesOffset,
                            # JavaScript is a pile of shit, so Mozilla’s JS parser don’t like file bigger than 4 Mb!
                            # So, if necessary, we use an hexadecimal string, that we will convert later in Firefox’s extension.
                            # https://github.com/mozilla/addons-linter/issues/1361
                            "sByDic": self.byDic.hex()  if bBinaryDictAsHexString  else [ e  for e in self.byDic ]
                        }, ensure_ascii=False))
                "sHeader": "/grammalecte-fsa/",
                "sLangCode": self.sLangCode,
                "sLangName": self.sLangName,
                "sDicName": self.sDicName,
                "sFileName": self.sFileName,
                "sDate": self.sDate,
                "nEntry": self.nEntry,
                "nChar": self.nChar,
                "nAff": self.nAff,
                "nTag": self.nTag,
                "cStemming": self.cStemming,
                "dChar": self.dChar,
                "nNode": self.nNode,
                "nArc": self.nArc,
                "nArcVal": self.nArcVal,
                "lArcVal": self.lArcVal,
                "nCompressionMethod": self.nCompressionMethod,
                "nBytesArc": self.nBytesArc,
                "nBytesNodeAddress": self.nBytesNodeAddress,
                "nBytesOffset": self.nBytesOffset,
                # JavaScript is a pile of shit, so Mozilla’s JS parser don’t like file bigger than 4 Mb!
                # So, if necessary, we use an hexadecimal string, that we will convert later in Firefox’s extension.
                # https://github.com/mozilla/addons-linter/issues/1361
                "sByDic": self.byDic.hex()  if bBinaryDictAsHexString  else [ e  for e in self.byDic ]
            }, ensure_ascii=False))
            if bInJSModule:
                hDst.write(";\n\nexports.dictionary = dictionary;\n")

    def isValidToken (self, sToken):
        "checks if <sToken> is valid (if there is hyphens in <sToken>, <sToken> is split, each part is checked)"
        sToken = cp.spellingNormalization(sToken)
        if self.isValid(sToken):
            return True
        if "-" in sToken:
            if sToken.count("-") > 4:
                return True
            return all(self.isValid(sWord)  for sWord in sToken.split("-"))
        if "." in sToken or "·" in sToken:
            return True
        return False

    def isValid (self, sWord):
        "checks if <sWord> is valid (different casing tested if the first letter is a capital)"
        if not sWord:
            return None
        if "" in sWord: # ugly hack
            sWord = sWord.replace("", "'")
        if "'" in sWord: # ugly hack
            sWord = sWord.replace("'", "")
        if self.lookup(sWord):
            return True
        if sWord[0:1].isupper():
            if len(sWord) > 1:
                if sWord.istitle():
                    return self.lookup(sWord.lower())
                if sWord.isupper():
263
264
265
266
267
268
269
270

271
272
273
274
275
276
277
271
272
273
274
275
276
277

278
279
280
281
282
283
284
285







-
+







    def lookup (self, sWord):
        "returns True if <sWord> in dictionary (strict verification)"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return False
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return False
        return bool(int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask)

    def getMorph (self, sWord):
        "retrieves morphologies list, different casing allowed"
        sWord = cp.spellingNormalization(sWord)
        l = self.morph(sWord)
342
343
344
345
346
347
348
349

350
351
352
353
354
355

356
357
358
359
360
361
362
350
351
352
353
354
355
356

357
358
359
360
361
362

363
364
365
366
367
368
369
370







-
+





-
+







                    self._suggest(oSuggResult, sRepl, nMaxSwitch, nMaxDel, nMaxHardRepl, nMaxJump, nDist, nDeep+1, iAddr, sNewWord, True)
            elif len(sRemain) == 1:
                self._suggest(oSuggResult, "", nMaxSwitch, nMaxDel, nMaxHardRepl, nMaxJump, nDist, nDeep+1, iAddr, sNewWord, True) # remove last char and go on
                for sRepl in cp.dFinal1.get(sRemain, ()):
                    self._suggest(oSuggResult, sRepl, nMaxSwitch, nMaxDel, nMaxHardRepl, nMaxJump, nDist, nDeep+1, iAddr, sNewWord, True)

    #@timethis
    def suggest2 (self, sWord, nMaxSugg=10):
    def suggest2 (self, sWord, nSuggLimit=10):
        "returns a set of suggestions for <sWord>"
        sWord = cp.spellingNormalization(sWord)
        sPfx, sWord, sSfx = cp.cut(sWord)
        oSuggResult = SuggResult(sWord)
        self._suggest2(oSuggResult)
        aSugg = oSuggResult.getSuggestions()
        aSugg = oSuggResult.getSuggestions(nSuggLimit)
        if sSfx or sPfx:
            # we add what we removed
            return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg))
        return aSugg

    def _suggest2 (self, oSuggResult, nDeep=0, iAddr=0, sNewWord=""):
        # recursive function
405
406
407
408
409
410
411
412

413
414

415
416
417
418
419
420
421
422

423
424
425
426
427
428
429
413
414
415
416
417
418
419

420
421

422
423
424
425
426
427
428
429

430
431
432
433
434
435
436
437







-
+

-
+







-
+








    def drawPath (self, sWord, iAddr=0):
        "show the path taken by <sWord> in the graph"
        sWord = cp.spellingNormalization(sWord)
        c1 = sWord[0:1]  if sWord  else " "
        iPos = -1
        n = 0
        print(c1 + ": ", end="")
        echo(c1 + ": ", end="")
        for c2, jAddr in self._getCharArcs(iAddr):
            print(c2, end="")
            echo(c2, end="")
            if c2 == sWord[0:1]:
                iNextNodeAddr = jAddr
                iPos = n
            n += 1
        if not sWord:
            return
        if iPos >= 0:
            print("\n   "+ " " * iPos + "|")
            echo("\n   " + " " * iPos + "|")
            self.drawPath(sWord[1:], iNextNodeAddr)

    def getSimilarEntries (self, sWord, nSuggLimit=10):
        "return a list of tuples (similar word, stem, morphology)"
        if not sWord:
            return []
        lResult = []
467
468
469
470
471
472
473
474

475
476

477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492

493
494
495
496
497
498
499
500
501
502
503
504
505

506
507

508
509
510
511
512
513
514
475
476
477
478
479
480
481

482
483

484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499

500
501
502
503
504
505
506
507
508
509
510
511
512

513
514

515
516
517
518
519
520
521
522







-
+

-
+















-
+












-
+

-
+







    def _morph1 (self, sWord):
        "returns morphologies of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
                    # This value is not a char, this is a stemming code
                    sStem = ">" + self.funcStemming(sWord, self.lArcVal[nArc])
                    # Now , we go to the next node and retrieve all following arcs values, all of them are tags
                    iAddr2 = int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
                    nRawArc2 = 0
                    while not (nRawArc2 & self._lastArcMask):
                        iEndArcAddr2 = iAddr2 + self.nBytesArc
                        nRawArc2 = int.from_bytes(self.byDic[iAddr2:iEndArcAddr2], byteorder='big')
                        l.append(sStem + " " + self.lArcVal[nRawArc2 & self._arcMask])
                        l.append(sStem + "/" + self.lArcVal[nRawArc2 & self._arcMask])
                        iAddr2 = iEndArcAddr2+self.nBytesNodeAddress
                iAddr = iEndArcAddr+self.nBytesNodeAddress
            return l
        return []

    def _stem1 (self, sWord):
        "returns stems list of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
525
526
527
528
529
530
531
532

533
534
535
536
537
538
539
540
541
542


543
544
545
546
547
548
549

550
551
552
553
554
555
556
533
534
535
536
537
538
539

540
541
542
543
544
545
546
547
548


549
550
551
552
553
554
555
556

557
558
559
560
561
562
563
564







-
+








-
-
+
+






-
+







            nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
            if nVal == (nRawArc & self._arcMask):
                # the value we are looking for
                # we return the address of the next node
                return int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
            else:
                # value not found
                if (nRawArc & self._lastArcMask):
                if nRawArc & self._lastArcMask:
                    return None
                iAddr = iEndArcAddr+self.nBytesNodeAddress

    def _getArcs1 (self, iAddr):
        "generator: return all arcs at <iAddr> as tuples of (nVal, iAddr)"
        while True:
            iEndArcAddr = iAddr+self.nBytesArc
            nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
            yield (nRawArc & self._arcMask, int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big'))
            if (nRawArc & self._lastArcMask):
            yield nRawArc & self._arcMask, int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
            if nRawArc & self._lastArcMask:
                break
            iAddr = iEndArcAddr+self.nBytesNodeAddress

    def _writeNodes1 (self, spfDest):
        "for debugging only"
        print(" > Write binary nodes")
        with codecs.open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
        with open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
            iAddr = 0
            hDst.write("i{:_>10} -- #{:_>10}\n".format("0", iAddr))
            while iAddr < len(self.byDic):
                iEndArcAddr = iAddr+self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                hDst.write("  {:<20}  {:0>16}  i{:>10}   #{:_>10}\n".format(self.lArcVal[nArc], bin(nRawArc)[2:], "?", \
565
566
567
568
569
570
571
572

573
574

575
576
577
578
579
580
581
573
574
575
576
577
578
579

580
581

582
583
584
585
586
587
588
589







-
+

-
+







    def _morph2 (self, sWord):
        "returns morphologies of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
590
591
592
593
594
595
596
597

598
599
600
601
602
603
604
605
606
607
608
609
610

611
612

613
614
615
616
617
618
619
598
599
600
601
602
603
604

605
606
607
608
609
610
611
612
613
614
615
616
617

618
619

620
621
622
623
624
625
626
627







-
+












-
+

-
+







                        while not (nRawArc & self._lastArcMask):
                            nRawArc = int.from_bytes(self.byDic[iAddr2:iAddr2+self.nBytesArc], byteorder='big')
                            iAddr2 += self.nBytesArc + self.nBytesNodeAddress
                    nRawArc2 = 0
                    while not (nRawArc2 & self._lastArcMask):
                        iEndArcAddr2 = iAddr2 + self.nBytesArc
                        nRawArc2 = int.from_bytes(self.byDic[iAddr2:iEndArcAddr2], byteorder='big')
                        l.append(sStem + " " + self.lArcVal[nRawArc2 & self._arcMask])
                        l.append(sStem + "/" + self.lArcVal[nRawArc2 & self._arcMask])
                        iAddr2 = iEndArcAddr2+self.nBytesNodeAddress  if not (nRawArc2 & self._addrBitMask) else iEndArcAddr2
                iAddr = iEndArcAddr+self.nBytesNodeAddress  if not (nRawArc & self._addrBitMask)  else iEndArcAddr
            return l
        return []

    def _stem2 (self, sWord):
        "returns stems list of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
647
648
649
650
651
652
653
654

655
656
657
658
659
660
661

662
663
664
665
666
667
668
669
670
671
672
673
674
675

676
677
678
679
680
681
682
683
684
685
686
687

688
689

690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709

710
711
712
713
714
715
716
717
718
719
720
721
722

723
724

725
726
727

728
729
730
731
732
733
734
655
656
657
658
659
660
661

662
663
664
665
666
667
668

669
670
671
672
673
674
675
676
677
678
679
680
681
682

683
684
685
686
687
688
689
690
691
692
693
694

695
696

697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716

717
718
719
720
721
722
723
724
725
726
727
728
729

730
731

732
733
734

735
736
737
738
739
740
741
742







-
+






-
+













-
+











-
+

-
+



















-
+












-
+

-
+


-
+







                    iAddr = iEndArcAddr
                    while not (nRawArc & self._lastArcMask):
                        nRawArc = int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big')
                        iAddr += self.nBytesArc + self.nBytesNodeAddress  if not (nRawArc & self._addrBitMask)  else self.nBytesArc
                    return iAddr
            else:
                # value not found
                if (nRawArc & self._lastArcMask):
                if nRawArc & self._lastArcMask:
                    return None
                iAddr = iEndArcAddr+self.nBytesNodeAddress  if not (nRawArc & self._addrBitMask)  else iEndArcAddr

    def _writeNodes2 (self, spfDest):
        "for debugging only"
        print(" > Write binary nodes")
        with codecs.open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
        with open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
            iAddr = 0
            hDst.write("i{:_>10} -- #{:_>10}\n".format("0", iAddr))
            while iAddr < len(self.byDic):
                iEndArcAddr = iAddr+self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if not (nRawArc & self._addrBitMask):
                    iNextNodeAddr = int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
                    hDst.write("  {:<20}  {:0>16}  i{:>10}   #{:_>10}\n".format(self.lArcVal[nArc], bin(nRawArc)[2:], "?", iNextNodeAddr))
                    iAddr = iEndArcAddr+self.nBytesNodeAddress
                else:
                    hDst.write("  {:<20}  {:0>16}\n".format(self.lArcVal[nArc], bin(nRawArc)[2:]))
                    iAddr = iEndArcAddr
                if (nRawArc & self._lastArcMask):
                if nRawArc & self._lastArcMask:
                    hDst.write("\ni{:_>10} -- #{:_>10}\n".format("?", iAddr))
            hDst.close()

    # VERSION 3
    def _morph3 (self, sWord):
        "returns morphologies of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            iAddrNode = iAddr
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
                    # This value is not a char, this is a stemming code
                    sStem = ">" + self.funcStemming(sWord, self.lArcVal[nArc])
                    # Now , we go to the next node and retrieve all following arcs values, all of them are tags
                    if not (nRawArc & self._addrBitMask):
                        iAddr2 = int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
                    else:
                        iAddr2 = iAddrNode + int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesOffset], byteorder='big')
                    nRawArc2 = 0
                    while not (nRawArc2 & self._lastArcMask):
                        iEndArcAddr2 = iAddr2 + self.nBytesArc
                        nRawArc2 = int.from_bytes(self.byDic[iAddr2:iEndArcAddr2], byteorder='big')
                        l.append(sStem + " " + self.lArcVal[nRawArc2 & self._arcMask])
                        l.append(sStem + "/" + self.lArcVal[nRawArc2 & self._arcMask])
                        iAddr2 = iEndArcAddr2+self.nBytesNodeAddress  if not (nRawArc2 & self._addrBitMask) else iEndArcAddr2+self.nBytesOffset
                iAddr = iEndArcAddr+self.nBytesNodeAddress  if not (nRawArc & self._addrBitMask)  else iEndArcAddr+self.nBytesOffset
            return l
        return []

    def _stem3 (self, sWord):
        "returns stems list of <sWord>"
        iAddr = 0
        for c in sWord:
            if c not in self.dChar:
                return []
            iAddr = self._lookupArcNode(self.dChar[c], iAddr)
            if iAddr == None:
            if iAddr is None:
                return []
        if (int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask):
        if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
            l = []
            nRawArc = 0
            iAddrNode = iAddr
            #iAddrNode = iAddr
            while not (nRawArc & self._lastArcMask):
                iEndArcAddr = iAddr + self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if nArc > self.nChar:
                    # This value is not a char, this is a stemming code
                    l.append(self.funcStemming(sWord, self.lArcVal[nArc]))
746
747
748
749
750
751
752
753

754
755
756
757
758
759
760

761
762
763
764
765
766
767
768
769
770
771
772
773
774
775

776
777
754
755
756
757
758
759
760

761
762
763
764
765
766
767

768
769
770
771
772
773
774
775
776
777
778
779
780
781
782

783
784
785







-
+






-
+














-
+


                # the value we are looking for
                if not (nRawArc & self._addrBitMask):
                    return int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
                else:
                    return iAddrNode + int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesOffset], byteorder='big')
            else:
                # value not found
                if (nRawArc & self._lastArcMask):
                if nRawArc & self._lastArcMask:
                    return None
                iAddr = iEndArcAddr+self.nBytesNodeAddress  if not (nRawArc & self._addrBitMask)  else iEndArcAddr+self.nBytesOffset

    def _writeNodes3 (self, spfDest):
        "for debugging only"
        print(" > Write binary nodes")
        with codecs.open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
        with open(spfDest, 'w', 'utf-8', newline="\n") as hDst:
            iAddr = 0
            hDst.write("i{:_>10} -- #{:_>10}\n".format("0", iAddr))
            while iAddr < len(self.byDic):
                iEndArcAddr = iAddr+self.nBytesArc
                nRawArc = int.from_bytes(self.byDic[iAddr:iEndArcAddr], byteorder='big')
                nArc = nRawArc & self._arcMask
                if not (nRawArc & self._addrBitMask):
                    iNextNodeAddr = int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesNodeAddress], byteorder='big')
                    hDst.write("  {:<20}  {:0>16}  i{:>10}   #{:_>10}\n".format(self.lArcVal[nArc], bin(nRawArc)[2:], "?", iNextNodeAddr))
                    iAddr = iEndArcAddr+self.nBytesNodeAddress
                else:
                    iNextNodeAddr = int.from_bytes(self.byDic[iEndArcAddr:iEndArcAddr+self.nBytesOffset], byteorder='big')
                    hDst.write("  {:<20}  {:0>16}  i{:>10}   +{:_>10}\n".format(self.lArcVal[nArc], bin(nRawArc)[2:], "?", iNextNodeAddr))
                    iAddr = iEndArcAddr+self.nBytesOffset
                if (nRawArc & self._lastArcMask):
                if nRawArc & self._lastArcMask:
                    hDst.write("\ni{:_>10} -- #{:_>10}\n".format("?", iAddr))
            hDst.close()

Modified graphspell/keyboard_chars_proximity.py from [8f397a7bbf] to [f71f3b18e4].



1


2
3
4

5
6
7
8

9
10
11
12
13
14
15
1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
+
+
-
+
+



+




+








"""
# Keyboard chars proximity
Keyboard chars proximity
"""


def getKeyboardMap (sKeyboard):
    "return keyboard map as a dictionary of chars"
    return _dKeyboardMap.get(sKeyboard.lower(), {})


def getKeyboardList ():
    "return list of keyboards available"
    return _dKeyboardMap.keys()


_dKeyboardMap = {
    # keyboards by alphabetical order
    # bépo, colemak and dvorak users are assumed to do less typing errors.
    "azerty": {

Modified graphspell/progressbar.py from [5def72a6ce] to [b21d9bfaa8].


1



2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21
22

23
24

25
26
27
28
29
30
31
32

33
34
35
1

2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
19
20
21
22
23
24

25
26

27
28
29
30
31
32
33
34

35
36
37
38
+
-
+
+
+







-
+












-
+

-
+







-
+



"""
# Textual progressbar
Textual progressbar
"""

# by Olivier R.
# License: MPL 2

import time

class ProgressBar:
    "Textual progressbar"
    

    def __init__ (self, nMin=0, nMax=100, nWidth=78):
        "initiate with minimum nMin to maximum nMax"
        self.nMin = nMin
        self.nMax = nMax
        self.nSpan = nMax - nMin
        self.nWidth = nWidth-9
        self.nAdvance = -1
        self.nCurVal = nMin
        self.startTime = time.time()
        self._update()

    def _update (self):
        fDone = ((self.nCurVal - self.nMin) / self.nSpan)
        fDone = (self.nCurVal - self.nMin) / self.nSpan
        nAdvance = int(fDone * self.nWidth)
        if (nAdvance > self.nAdvance):
        if nAdvance > self.nAdvance:
            self.nAdvance = nAdvance
            print("\r[ {}{}  {}% ] ".format('>'*nAdvance, ' '*(self.nWidth-nAdvance), round(fDone*100)), end="")

    def increment (self, n=1):
        "increment value by n (1 by default)"
        self.nCurVal += n
        self._update()
    

    def done (self):
        "to call when it’s finished"
        print("\r[ task done in {:.1f} s ] ".format(time.time() - self.startTime))

Modified graphspell/spellchecker.py from [cbd22d2c4d] to [85bf9023fe].


1

2
3

4
5
6
7
8
9
10






11

12
13
14
15
16
17
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
34
35
36
37
38







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

54
55
56

57
58

59
60
61
62
63
64
65

66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

85
86
87

88
89
90

91
92
93

94
95
96

97
98
99

100
101




























102
103
104
105

106
107

108
109
110
111
112
113
114
115
116
117
118


119
120

121
122
123
124
125
126
127
1

2


3
4






5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

62
63
64
65
66
67

68
69
70
71
72
73
74

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
+
-
+
-
-
+

-
-
-
-
-
-
+
+
+
+
+
+

+













+














+
+
+
+
+
+
+














-
+



+

-
+






-
+



















+



+



+



+



+



+


+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




+

-
+











+
+

-
+







"""
# Spellchecker
Spellchecker.
# Wrapper for the IBDAWG class.
# Useful to check several dictionaries at once.
Useful to check several dictionaries at once.

# To avoid iterating over a pile of dictionaries, it is assumed that 3 are enough:
# - the main dictionary, bundled with the package
# - the extended dictionary
# - the community dictionary, added by an organization
# - the personal dictionary, created by the user for its own convenience

To avoid iterating over a pile of dictionaries, it is assumed that 3 are enough:
- the main dictionary, bundled with the package
- the extended dictionary
- the community dictionary, added by an organization
- the personal dictionary, created by the user for its own convenience
"""

import importlib
import traceback

from . import ibdawg
from . import tokenizer


dDefaultDictionaries = {
    "fr": "fr-allvars.bdic",
    "en": "en.bdic"
}


class SpellChecker ():
    "SpellChecker: wrapper for the IBDAWG class"

    def __init__ (self, sLangCode, sfMainDic="", sfExtendedDic="", sfCommunityDic="", sfPersonalDic=""):
        "returns True if the main dictionary is loaded"
        self.sLangCode = sLangCode
        if not sfMainDic:
            sfMainDic = dDefaultDictionaries.get(sLangCode, "")
        self.oMainDic = self._loadDictionary(sfMainDic, True)
        self.oExtendedDic = self._loadDictionary(sfExtendedDic)
        self.oCommunityDic = self._loadDictionary(sfCommunityDic)
        self.oPersonalDic = self._loadDictionary(sfPersonalDic)
        self.bExtendedDic = bool(self.oExtendedDic)
        self.bCommunityDic = bool(self.oCommunityDic)
        self.bPersonalDic = bool(self.oPersonalDic)
        self.oTokenizer = None
        # Default suggestions
        self.dDefaultSugg = None
        self.loadSuggestions(sLangCode)
        # storage
        self.bStorage = False
        self._dMorphologies = {}        # key: flexion, value: list of morphologies
        self._dLemmas = {}              # key: flexion, value: list of lemmas

    def _loadDictionary (self, source, bNecessary=False):
        "returns an IBDAWG object"
        if not source:
            return None
        try:
            return ibdawg.IBDAWG(source)
        except Exception as e:
            if bNecessary:
                raise Exception(str(e), "Error: <" + str(source) + "> not loaded.")
            print("Error: <" + str(source) + "> not loaded.")
            traceback.print_exc()
            return None

    def loadTokenizer (self):
    def _loadTokenizer (self):
        self.oTokenizer = tokenizer.Tokenizer(self.sLangCode)

    def getTokenizer (self):
        "load and return the tokenizer object"
        if not self.oTokenizer:
            self.loadTokenizer()
            self._loadTokenizer()
        return self.oTokenizer

    def setMainDictionary (self, source):
        "returns True if the dictionary is loaded"
        self.oMainDic = self._loadDictionary(source, True)
        return bool(self.oMainDic)
            

    def setExtendedDictionary (self, source, bActivate=True):
        "returns True if the dictionary is loaded"
        self.oExtendedDic = self._loadDictionary(source)
        self.bExtendedDic = False  if not bActivate  else bool(self.oExtendedDic)
        return bool(self.oExtendedDic)

    def setCommunityDictionary (self, source, bActivate=True):
        "returns True if the dictionary is loaded"
        self.oCommunityDic = self._loadDictionary(source)
        self.bCommunityDic = False  if not bActivate  else bool(self.oCommunityDic)
        return bool(self.oCommunityDic)

    def setPersonalDictionary (self, source, bActivate=True):
        "returns True if the dictionary is loaded"
        self.oPersonalDic = self._loadDictionary(source)
        self.bPersonalDic = False  if not bActivate  else bool(self.oPersonalDic)
        return bool(self.oPersonalDic)

    def activateExtendedDictionary (self):
        "activate extended dictionary (if available)"
        self.bExtendedDic = bool(self.oExtendedDic)

    def activateCommunityDictionary (self):
        "activate community dictionary (if available)"
        self.bCommunityDic = bool(self.oCommunityDic)

    def activatePersonalDictionary (self):
        "activate personal dictionary (if available)"
        self.bPersonalDic = bool(self.oPersonalDic)

    def deactivateExtendedDictionary (self):
        "deactivate extended dictionary"
        self.bExtendedDic = False

    def deactivateCommunityDictionary (self):
        "deactivate community dictionary"
        self.bCommunityDic = False

    def deactivatePersonalDictionary (self):
        "deactivate personal dictionary"
        self.bPersonalDic = False


    # Default suggestions

    def loadSuggestions (self, sLangCode):
        "load default suggestion module for <sLangCode>"
        try:
            suggest = importlib.import_module("."+sLangCode, "graphspell")
        except ImportError:
            print("No suggestion module for language <"+sLangCode+">")
            return
        self.dDefaultSugg = suggest.dSugg


    # Storage

    def activateStorage (self):
        "store all lemmas and morphologies retrieved from the word graph"
        self.bStorage = True

    def deactivateStorage (self):
        "stop storing all lemmas and morphologies retrieved from the word graph"
        self.bStorage = False

    def clearStorage (self):
        "clear all stored data"
        self._dLemmas.clear()
        self._dMorphologies.clear()


    # parse text functions

    def parseParagraph (self, sText, bSpellSugg=False):
        "return a list of tokens where token value doesn’t exist in the word graph"
        if not self.oTokenizer:
            self.loadTokenizer()
            self._loadTokenizer()
        aSpellErrs = []
        for dToken in self.oTokenizer.genTokens(sText):
            if dToken['sType'] == "WORD" and not self.isValidToken(dToken['sValue']):
                if bSpellSugg:
                    dToken['aSuggestions'] = []
                    for lSugg in self.suggest(dToken['sValue']):
                        dToken['aSuggestions'].extend(lSugg)
                aSpellErrs.append(dToken)
        return aSpellErrs

    def countWordsOccurrences (self, sText, bByLemma=False, bOnlyUnknownWords=False, dWord={}):
        """count word occurrences.
           <dWord> can be used to cumulate count from several texts."""
        if not self.oTokenizer:
            self.loadTokenizer()
            self._loadTokenizer()
        for dToken in self.oTokenizer.genTokens(sText):
            if dToken['sType'] == "WORD":
                if bOnlyUnknownWords:
                    if not self.isValidToken(dToken['sValue']):
                        dWord[dToken['sValue']] = dWord.get(dToken['sValue'], 0) + 1
                else:
                    if not bByLemma:
147
148
149
150
151
152
153
154

155
156
157
158
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173


174

175
176

177
178

179
180
181





182
183





184

185
186
187







188



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206

207
208
209
210
211
212
213
194
195
196
197
198
199
200

201
202
203
204
205
206
207
208
209
210
211
212

213
214
215
216
217
218
219
220
221
222

223
224

225
226

227
228


229
230
231
232
233
234
235
236
237
238
239
240

241
242
243
244
245
246
247
248
249
250
251

252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280







-
+











-
+







+
+
-
+

-
+

-
+

-
-
+
+
+
+
+


+
+
+
+
+
-
+



+
+
+
+
+
+
+
-
+
+
+


















+








    def isValid (self, sWord):
        "checks if sWord is valid (different casing tested if the first letter is a capital)"
        if self.oMainDic.isValid(sWord):
            return True
        if self.bExtendedDic and self.oExtendedDic.isValid(sWord):
            return True
        if self.bCommunityDic and self.oCommunityDic.isValid(sToken):
        if self.bCommunityDic and self.oCommunityDic.isValid(sWord):
            return True
        if self.bPersonalDic and self.oPersonalDic.isValid(sWord):
            return True
        return False

    def lookup (self, sWord):
        "checks if sWord is in dictionary as is (strict verification)"
        if self.oMainDic.lookup(sWord):
            return True
        if self.bExtendedDic and self.oExtendedDic.lookup(sWord):
            return True
        if self.bCommunityDic and self.oCommunityDic.lookup(sToken):
        if self.bCommunityDic and self.oCommunityDic.lookup(sWord):
            return True
        if self.bPersonalDic and self.oPersonalDic.lookup(sWord):
            return True
        return False

    def getMorph (self, sWord):
        "retrieves morphologies list, different casing allowed"
        if self.bStorage and sWord in self._dMorphologies:
            return self._dMorphologies[sWord]
        lResult = self.oMainDic.getMorph(sWord)
        lMorph = self.oMainDic.getMorph(sWord)
        if self.bExtendedDic:
            lResult.extend(self.oExtendedDic.getMorph(sWord))
            lMorph.extend(self.oExtendedDic.getMorph(sWord))
        if self.bCommunityDic:
            lResult.extend(self.oCommunityDic.getMorph(sWord))
            lMorph.extend(self.oCommunityDic.getMorph(sWord))
        if self.bPersonalDic:
            lResult.extend(self.oPersonalDic.getMorph(sWord))
        return lResult
            lMorph.extend(self.oPersonalDic.getMorph(sWord))
        if self.bStorage:
            self._dMorphologies[sWord] = lMorph
            self._dLemmas[sWord] = set([ s[1:s.find("/")]  for s in lMorph ])
        return lMorph

    def getLemma (self, sWord):
        "retrieves lemmas"
        if self.bStorage:
            if sWord not in self._dLemmas:
                self.getMorph(sWord)
            return self._dLemmas[sWord]
        return set([ s[1:s.find(" ")]  for s in self.getMorph(sWord) ])
        return set([ s[1:s.find("/")]  for s in self.getMorph(sWord) ])

    def suggest (self, sWord, nSuggLimit=10):
        "generator: returns 1, 2 or 3 lists of suggestions"
        if self.dDefaultSugg:
            if sWord in self.dDefaultSugg:
                yield self.dDefaultSugg[sWord].split("|")
            elif sWord.istitle() and sWord.lower() in self.dDefaultSugg:
                lRes = self.dDefaultSugg[sWord.lower()].split("|")
                yield list(map(lambda sSugg: sSugg[0:1].upper()+sSugg[1:], lRes))
            else:
        yield self.oMainDic.suggest(sWord, nSuggLimit)
                yield self.oMainDic.suggest(sWord, nSuggLimit)
        else:
            yield self.oMainDic.suggest(sWord, nSuggLimit)
        if self.bExtendedDic:
            yield self.oExtendedDic.suggest(sWord, nSuggLimit)
        if self.bCommunityDic:
            yield self.oCommunityDic.suggest(sWord, nSuggLimit)
        if self.bPersonalDic:
            yield self.oPersonalDic.suggest(sWord, nSuggLimit)

    def select (self, sFlexPattern="", sTagsPattern=""):
        "generator: returns all entries which flexion fits <sFlexPattern> and morphology fits <sTagsPattern>"
        yield from self.oMainDic.select(sFlexPattern, sTagsPattern)
        if self.bExtendedDic:
            yield from self.oExtendedDic.select(sFlexPattern, sTagsPattern)
        if self.bCommunityDic:
            yield from self.oCommunityDic.select(sFlexPattern, sTagsPattern)
        if self.bPersonalDic:
            yield from self.oPersonalDic.select(sFlexPattern, sTagsPattern)

    def drawPath (self, sWord):
        "draw the path taken by <sWord> within the word graph: display matching nodes and their arcs"
        self.oMainDic.drawPath(sWord)
        if self.bExtendedDic:
            print("-----")
            self.oExtendedDic.drawPath(sWord)
        if self.bCommunityDic:
            print("-----")
            self.oCommunityDic.drawPath(sWord)

Modified graphspell/str_transform.py from [9961c8cbc8] to [c5501f9a5a].

1
2






3
4
5
6

7
8
9
10


11
12
13
14
15
16
17




18
19
20


21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


16
17
18
19
20




21
22
23
24
25


26
27
28
29
30
31
32
33
34


+
+
+
+
+
+




+


-
-
+
+



-
-
-
-
+
+
+
+

-
-
+
+







#!python3

"""
Operations on strings:
- calculate distance between two strings
- transform strings with transformation codes
"""


#### DISTANCE CALCULATIONS

def longestCommonSubstring (s1, s2):
    "longest common substring"
    # http://en.wikipedia.org/wiki/Longest_common_substring_problem
    # http://en.wikibooks.org/wiki/Algorithm_implementation/Strings/Longest_common_substring
    M = [ [0]*(1+len(s2)) for i in range(1+len(s1)) ]
    longest, x_longest = 0, 0
    lMatrix = [ [0]*(1+len(s2)) for i in range(1+len(s1)) ]
    nLongest, nLongestX = 0, 0
    for x in range(1, 1+len(s1)):
        for y in range(1, 1+len(s2)):
            if s1[x-1] == s2[y-1]:
                M[x][y] = M[x-1][y-1] + 1
                if M[x][y] > longest:
                    longest = M[x][y]
                    x_longest = x
                lMatrix[x][y] = lMatrix[x-1][y-1] + 1
                if lMatrix[x][y] > nLongest:
                    nLongest = lMatrix[x][y]
                    nLongestX = x
            else:
                M[x][y] = 0
    return s1[x_longest-longest : x_longest]
                lMatrix[x][y] = 0
    return s1[nLongestX-nLongest : nLongestX]


def distanceDamerauLevenshtein (s1, s2):
    "distance of Damerau-Levenshtein between <s1> and <s2>"
    # https://fr.wikipedia.org/wiki/Distance_de_Damerau-Levenshtein
    d = {}
    nLen1 = len(s1)
52
53
54
55
56
57
58
59

60
61
62
63
64
65
66
59
60
61
62
63
64
65

66
67
68
69
70
71
72
73







-
+







        return len(s1)
    nLen1, nLen2 = len(s1), len(s2)
    i1, i2 = 0, 0   # Cursors for each string
    nLargestCS = 0  # Largest common substring
    nLocalCS = 0    # Local common substring
    nTrans = 0      # Number of transpositions ('ab' vs 'ba')
    lOffset = []    # Offset pair array, for computing the transpositions
 

    while i1 < nLen1 and i2 < nLen2:
        if s1[i1] == s2[i2]:
            nLocalCS += 1
            # Check if current match is a transposition
            bTrans = False
            i = 0
            while i < len(lOffset):
101
102
103
104
105
106
107

108
109
110
111
112
113
114
115
116
117
118

119
120
121
122





123
124
125
126
127
128
129






130
131

132
133
134
135
136
137
138
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129


130
131
132
133
134
135






136
137
138
139
140
141
142

143
144
145
146
147
148
149
150







+











+


-
-
+
+
+
+
+

-
-
-
-
-
-
+
+
+
+
+
+

-
+







            nLocalCS = 0
            i1 = i2 = min(i1, i2)
    nLargestCS += nLocalCS
    return round(max(nLen1, nLen2) - nLargestCS + nTrans)


def showDistance (s1, s2):
    "display Damerau-Levenshtein distance and Sift4 distance between <s1> and <s2>"
    print("Damerau-Levenshtein: " + s1 + "/" + s2 + " = " + distanceDamerauLevenshtein(s1, s2))
    print("Sift4:" + s1 + "/" + s2 + " = " + distanceSift4(s1, s2))




#### STEMMING OPERATIONS

## No stemming

def noStemming (sFlex, sStem):
    "return <sStem>"
    return sStem

def rebuildWord (sFlex, cmd1, cmd2):
    if cmd1 == "_":
def rebuildWord (sFlex, sCode1, sCode2):
    """ Change <sFlex> with codes (each inserts a char at a defined possition).
        <I forgot what purpose it has…>
    """
    if sCode1 == "_":
        return sFlex
    n, c = cmd1.split(":")
    s = s[:n] + c + s[n:]
    if cmd2 == "_":
        return s
    n, c = cmd2.split(":")
    return s[:n] + c + s[n:]
    n, c = sCode1.split(":")
    sFlex = sFlex[:n] + c + sFlex[n:]
    if sCode2 == "_":
        return sFlex
    n, c = sCode2.split(":")
    return sFlex[:n] + c + sFlex[n:]

    

## Define affixes for stemming

# Note: 48 is the ASCII code for "0"


# Suffix only
def defineSuffixCode (sFlex, sStem):
148
149
150
151
152
153
154
155

156
157
158

159
160
161
162
163
164
165
166
167
168
169
170
171
172

173
174
175
176
177
178
179
160
161
162
163
164
165
166

167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192







-
+



+













-
+







    if sFlex == sStem:
        return "0"
    jSfx = 0
    for i in range(min(len(sFlex), len(sStem))):
        if sFlex[i] != sStem[i]:
            break
        jSfx += 1
    return chr(len(sFlex)-jSfx+48) + sStem[jSfx:]  
    return chr(len(sFlex)-jSfx+48) + sStem[jSfx:]


def changeWordWithSuffixCode (sWord, sSfxCode):
    "apply transformation code <sSfxCode> on <sWord> and return the result string"
    if sSfxCode == "0":
        return sWord
    return sWord[:-(ord(sSfxCode[0])-48)] + sSfxCode[1:]  if sSfxCode[0] != '0'  else sWord + sSfxCode[1:]


# Prefix and suffix

def defineAffixCode (sFlex, sStem):
    """ Returns a string defining how to get stem from flexion. Examples:
            "0" if stem = flexion
            "stem" if no common substring
            "n(pfx)/m(sfx)"
        with n and m: chars with numeric meaning, "0" = 0, "1" = 1, ... ":" = 10, etc. (See ASCII table.) Says how many letters to strip from flexion.
            pfx [optional]: string to add before the flexion 
            pfx [optional]: string to add before the flexion
            sfx [optional]: string to add after the flexion
    """
    if sFlex == sStem:
        return "0"
    # is stem a substring of flexion?
    n = sFlex.find(sStem)
    if n >= 0:
187
188
189
190
191
192
193

194
195
196
197
198
199

200
201
200
201
202
203
204
205
206
207
208
209
210
211
212

213
214








+





-
+

-
        n = sFlex.find(sSubs)
        m = len(sFlex) - (len(sSubs)+n)
        return chr(n+48) + sPfx + "/" + chr(m+48) + sSfx
    return sStem


def changeWordWithAffixCode (sWord, sAffCode):
    "apply transformation code <sAffCode> on <sWord> and return the result string"
    if sAffCode == "0":
        return sWord
    if '/' not in sAffCode:
        return sAffCode
    sPfxCode, sSfxCode = sAffCode.split('/')
    sWord = sPfxCode[1:] + sWord[(ord(sPfxCode[0])-48):] 
    sWord = sPfxCode[1:] + sWord[(ord(sPfxCode[0])-48):]
    return sWord[:-(ord(sSfxCode[0])-48)] + sSfxCode[1:]  if sSfxCode[0] != '0'  else sWord + sSfxCode[1:]

Modified graphspell/tokenizer.py from [17f452887e] to [daca54adb9].


1



2
3
4
5
6
7
8
9
10
11


12
13
14
15
16
17


18
19
20
21
22
23
24
25


26
27
28
29
30
31


32
33


34
35
36
37
38
39

40
41
42
43
44
45
46
47
48
49










1

2
3
4
5
6
7
8
9
10
11
12


13
14
15
16
17
18
19

20
21
22
23
24
25
26
27


28
29
30
31
32
33


34
35
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52



53
54
55
56
57
58
59
60
61
62
+
-
+
+
+








-
-
+
+





-
+
+






-
-
+
+




-
-
+
+

-
+
+






+







-
-
-
+
+
+
+
+
+
+
+
+
+
"""
# Very simple tokenizer
Very simple tokenizer
using regular expressions
"""

import re

_PATTERNS = {
    "default":
        (
            r'(?P<FOLDERUNIX>/(?:bin|boot|dev|etc|home|lib|mnt|opt|root|sbin|tmp|usr|var|Bureau|Documents|Images|Musique|Public|Téléchargements|Vidéos)(?:/[\w.()-]+)*)',
            r'(?P<FOLDERWIN>[a-zA-Z]:\\(?:Program Files(?: [(]x86[)]|)|[\w.()]+)(?:\\[\w.()-]+)*)',
            r'(?P<PUNC>[.,?!:;…«»“”"()/·]+)',
            r'(?P<ACRONYM>[A-Z][.][A-Z][.](?:[A-Z][.])*)',
            r'(?P<PUNC>[][,.;:!?…«»“”‘’"(){}·–—])',
            r'(?P<WORD_ACRONYM>[A-Z][.][A-Z][.](?:[A-Z][.])*)',
            r'(?P<LINK>(?:https?://|www[.]|\w+[@.]\w\w+[@.])\w[\w./?&!%=+*"\'@$#-]+)',
            r'(?P<HASHTAG>[#@][\w-]+)',
            r'(?P<HTML><\w+.*?>|</\w+ *>)',
            r'(?P<PSEUDOHTML>\[/?\w+\])',
            r'(?P<HOUR>\d\d?h\d\d\b)',
            r'(?P<NUM>-?\d+(?:[.,]\d+))',
            r'(?P<NUM>\d+(?:[.,]\d+))',
            r'(?P<SIGN>[%‰+=*/<>⩾⩽-])',
            r"(?P<WORD>\w+(?:[’'`-]\w+)*)"
        ),
    "fr":
        (
            r'(?P<FOLDERUNIX>/(?:bin|boot|dev|etc|home|lib|mnt|opt|root|sbin|tmp|usr|var|Bureau|Documents|Images|Musique|Public|Téléchargements|Vidéos)(?:/[\w.()-]+)*)',
            r'(?P<FOLDERWIN>[a-zA-Z]:\\(?:Program Files(?: [(]x86[)]|)|[\w.()]+)(?:\\[\w.()-]+)*)',
            r'(?P<PUNC>[.,?!:;…«»“”"()/·]+)',
            r'(?P<ACRONYM>[A-Z][.][A-Z][.](?:[A-Z][.])*)',
            r'(?P<PUNC>[][,.;:!?…«»“”‘’"(){}·–—])',
            r'(?P<WORD_ACRONYM>[A-Z][.][A-Z][.](?:[A-Z][.])*)',
            r'(?P<LINK>(?:https?://|www[.]|\w+[@.]\w\w+[@.])\w[\w./?&!%=+*"\'@$#-]+)',
            r'(?P<HASHTAG>[#@][\w-]+)',
            r'(?P<HTML><\w+.*?>|</\w+ *>)',
            r'(?P<PSEUDOHTML>\[/?\w+\])',
            r"(?P<ELPFX>(?:l|d|n|m|t|s|j|c|ç|lorsqu|puisqu|jusqu|quoiqu|qu)['’`])",
            r'(?P<ORDINAL>\d+(?:er|nd|e|de|ième|ème|eme)\b)',
            r"(?P<WORD_ELIDED>(?:l|d|n|m|t|s|j|c|ç|lorsqu|puisqu|jusqu|quoiqu|qu)['’`])",
            r'(?P<WORD_ORDINAL>\d+(?:ers?|nds?|es?|des?|ièmes?|èmes?|emes?|ᵉʳˢ?|ⁿᵈˢ?|ᵉˢ?|ᵈᵉˢ?)\b)',
            r'(?P<HOUR>\d\d?h\d\d\b)',
            r'(?P<NUM>-?\d+(?:[.,]\d+|))',
            r'(?P<NUM>\d+(?:[.,]\d+|))',
            r'(?P<SIGN>[%‰+=*/<>⩾⩽-])',
            r"(?P<WORD>\w+(?:[’'`-]\w+)*)"
        )
}


class Tokenizer:
    "Tokenizer: transforms a text in a list of tokens"

    def __init__ (self, sLang):
        self.sLang = sLang
        if sLang not in _PATTERNS:
            self.sLang = "default"
        self.zToken = re.compile( "(?i)" + '|'.join(sRegex for sRegex in _PATTERNS[sLang]) )

    def genTokens (self, sText):
        for m in self.zToken.finditer(sText):
            yield { "sType": m.lastgroup, "sValue": m.group(), "nStart": m.start(), "nEnd": m.end() }
    def genTokens (self, sText, bStartEndToken=False):
        "generator: tokenize <sText>"
        i = 0
        if bStartEndToken:
            yield { "i": 0, "sType": "INFO", "sValue": "<start>", "nStart": 0, "nEnd": 0, "lMorph": ["<start>"] }
        for i, m in enumerate(self.zToken.finditer(sText), 1):
            yield { "i": i, "sType": m.lastgroup, "sValue": m.group(), "nStart": m.start(), "nEnd": m.end() }
        if bStartEndToken:
            iEnd = len(sText)
            yield { "i": i+1, "sType": "INFO", "sValue": "<end>", "nStart": iEnd, "nEnd": iEnd, "lMorph": ["<end>"] }

Modified lexicons/French.lex from [4c7bea9dc4] to [e7c7aaf021].

1
2
3
4
5

6
7
8
9

10
11
12
13
14
15
16

17
18
19
20

21
22

23
24
25
26
27
28
29
30
31

32
33
34


35
36
37
38
39
40
41
42
43

44
45
46
47
48
49
50
51


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

71
72
73
74
75
76
77
78
79
80

81
82
83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

103
104
105
106
107
108

109
110
111
112
113
114
115
1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20

21
22

23
24
25
26
27
28
29
30
31

32
33


34
35
36

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72

73
74


75
76
77
78
79
80

81
82
83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

103
104
105
106
107
108

109
110
111
112
113
114
115
116




-
+




+






-
+



-
+

-
+








-
+

-
-
+
+

-







+








+
+


















-
+

-
-






-
+




-
+
















-
+





-
+







# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Lexique simplifié pour Grammalecte - Dicollecte v6.3
# Lexique simplifié pour Grammalecte - Dicollecte v7.0
# Licence : MPL v2.0

# :POS ;LEX ~SEM =FQ /DIC
de	de	:G:D:e:i/*
de	de	:G:R:Rv/*
et	et	:G:Cc/*
à	à	:G:R:Rv/*
des	des	:G:D:e:p/*
du	du	:G:D:m:s/*
que	que	:G:Cs/*
la	la	:G:D:f:s/*
la	la	:G:Oo:f:s/*
la	la	:G:Oo:Ov:f:s/*
la	la	:N:m:i/*
un	un	:G:D:m:s/*
le	le	:G:D:m:s/*
le	le	:G:Oo:m:s/*
le	le	:G:Oo:Ov:m:s/*
les	les	:G:D:e:p/*
les	les	:G:Oo:e:p/*
les	les	:G:Oo:Ov:e:p/*
une	une	:G:D:f:s/*
est	est	:N:m:s/*
dans	dans	:G:R/*
qui	qui	:G:Ot:Or/*
il	il	:G:Os:O3:m:s/*
par	par	:G:R:Rv:Ŕ/*
pour	pour	:G:R:Rv/*
en	en	:G:R/*
en	en	:G:Ow/*
en	en	:G:Oo:Ov:Ow/*
au	au	:G:R:D:m:s/*
ne	ne	:G:X/*
se	se	:G:Oo:O3:e:s:p/*
ne	ne	:G:X:Ov/*
se	se	:G:Oo:Ov:O3:e:s:p/*
sur	sur	:G:R/*
ce	ce	:G:Dd:Od:m:s/*
on	on	:G:Os:O3:e:s/*
ou	ou	:G:Cc/*
avec	avec	:G:R/*
son	son	:G:Dp:e:s/*
sont	être	:V0ei_____a:Ip:3p!/*
a	a	:N:m:i/*
a	a	:N:m:i;S/*
l	l	:N:m:i/*
aux	aux	:G:R:D:m:p/*
cette	cette	:G:Dd:f:s/*
plus	plus	:G:W:X/*
plus	plus	:N:m:i/*
comme	comme	:G:Cs:W/*
elle	elle	:G:Os:Oo:O3:f:s/*
pas	pas	:G:X/*
pas	pas	:N:m:i/*
ce	ce	:G:Dd:m:s/*
ce	ce	:G:Od:m:s/*
même	même	:G:W/*
être	être	:V0ei_____a:Y/*
ces	ces	:G:Dd:e:p/*
ses	ses	:G:Dp:e:p/*
sa	sa	:G:Dp:f:s/*
ont	avoir	:V0ait____a:Ip:3p!/*
été	être	:V0ei_____a:Q:e:i/*
M	M	:T:m:s/*
était	être	:V0ei_____a:Iq:3s/*
deux	deux	:B:e:p/*
ils	ils	:G:Os:O3:m:p/*
fait	fait	:N:m:s/*
peut	pouvoir	:V3_it_xx_a:Ip:3s/*
je	je	:G:Os:O1:e:s/*
dont	dont	:G:Or/*
sans	sans	:G:R:Rv:Ĉ:W/*
avait	avoir	:V0ait____a:Iq:3s/*
où	où	:G:U:Or/*
nous	nous	:G:Oo:O1:e:p/*
nous	nous	:G:Oo:Ov:O1:e:p/*
nous	nous	:G:Os:O1:e:p/*
l	l	:G:D:e:s/*
l	l	:N:m:i/*
entre	entre	:G:R:Rv/*
faire	faire	:V3_it_q__a:Y/*
autres	autre	:N:A:e:p/*
aussi	aussi	:G:W/*
tous	tous	:G:Di:m:p/*
y	y	:N:m:i/*
y	y	:G:Oo:Ow/*
y	y	:G:Oo:Ov:Ow/*
encore	encore	:W/*
A	A	:N:m:i;S/*
sous	sous	:G:R/*
très	très	:G:W/*
lui	lui	:G:Oo:O3:e:s/*
lui	lui	:G:Oo:Ov:O3:e:s/*
lui	lui	:G:Os:O3:m:s/*
après	après	:G:R/*
p	p	:N:m:i/*
mais	mais	:W/*
mais	mais	:G:Cc/*
d	d	:N:m:i/*
d	d	:N:m:i;S/*
temps	temps	:N:m:i/*
peu	peu	:G:W/*
tout	tout	:W/*
tout	tout	:G:Di:m:s/*
ainsi	ainsi	:W/*
avoir	avoir	:V0ait____a:Y/*
toutes	toutes	:G:Di:f:p/*
France	France	:N:f:i/*
donc	donc	:G:Cc/*
me	me	:G:Oo:O1:e:s/*
me	me	:G:Oo:Ov:O1:e:s/*
toute	toute	:G:Di:f:s/*
elles	elles	:G:Os:Oo:O3:f:p/*
bien	bien	:A:e:i/*
bien	bien	:G:Ĉ:W/*
leur	leur	:G:Dp:e:s/*
leur	leur	:G:Oo:O3:e:p/*
leur	leur	:G:Oo:Ov:O3:e:p/*
leur	leur	:N:e:s/*
cas	cas	:N:m:i/*
celle	celle	:G:Od:f:s/*
dire	dire	:V3__tnq__a:Y/*
Paris	Paris	:MP:e:i/*
celui	celui	:G:Od:m:s/*
pays	pays	:N:m:i/*
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
276
277
278
279
280
281
282

283
284
285
286
287
288
289







-







dernier	dernière	:N:A:m:s/*
aucune	aucune	:G:On:f:s/*
valeur	valeur	:N:f:s/*
sujet	sujette	:N:A:m:s/*
possible	possible	:A:e:s/*
aucun	aucun	:G:On:m:s/*
mieux	mieux	:G:W:N/*
aujourd'hui	aujourd'hui	:W/*
presque	presque	:G:W/*
œuvre	œuvre	:N:e:s/*
auteur	auteure	:N:m:s/*
cependant	cependant	:W/*
prendre	prendre	:V3_it_q__a:Y/*
titre	titre	:N:m:s/*
objet	objet	:N:m:s/*
815
816
817
818
819
820
821
822

823
824
825
826
827
828
829
815
816
817
818
819
820
821

822
823
824
825
826
827
828
829







-
+







traitement	traitement	:N:m:s/*
seraient	être	:V0ei_____a:K:3p/*
tel	telle	:A:m:s/*
tel	telle	:G:Oi:m:s/*
conséquence	conséquence	:N:f:s/*
généralement	généralement	:W/*
comprendre	comprendre	:V3_it_q__a:Y/*
te	te	:G:Oo:O2:e:s/*
te	te	:G:Oo:Ov:O2:e:s/*
difficultés	difficulté	:N:f:p/*
appel	appel	:N:m:s/*
champ	champ	:N:m:s/*
auquel	auquel	:G:Ot:Or:m:s/*
sol	sol	:N:m:i/*
die	die	:Ŵ/*
humaine	humaine	:N:A:f:s/*
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1792
1793
1794
1795
1796
1797
1798

1799
1800
1801
1802
1803
1804
1805







-







prise	prise	:N:f:s/*
égalité	égalité	:N:f:s/*
soutenir	soutenir	:V3_itnq__a:Y/*
explication	explication	:N:f:s/*
camp	camp	:N:m:s/*
cercle	cercle	:N:m:s/*
étais	être	:V0ei_____a:Iq:1s:2s/*
qu	qu	:G:Cs/*
froid	froide	:N:A:m:s/*
extension	extension	:N:f:s/*
domaines	domaine	:N:m:p/*
dépend	dépendre	:V3_itn___a:Ip:3s/*
plantes	planter	:V1__t_q_zz:Ip:Sp:2s/*
b	b	:N:m:i/*
b	b	:N:m:i;S/*
2090
2091
2092
2093
2094
2095
2096
2097

2098
2099
2100
2101
2102
2103
2104
2089
2090
2091
2092
2093
2094
2095

2096
2097
2098
2099
2100
2101
2102
2103







-
+







ouvrir	ouvrir	:V3_itnq__a:Y/*
Martin	Martin	:M1:m:i/*
suprême	suprême	:A:e:s/*
considérables	considérable	:A:e:p/*
dépôt	dépôt	:N:m:s/*
collection	collection	:N:f:s/*
totalité	totalité	:N:f:s/*
apporter	apporter	:V1_it____a:Y/*
apporter	apporter	:V1_itn___a:Y/*
étudiants	étudiante	:N:A:m:p/*
amitié	amitié	:N:f:s/*
pense	penser	:V1_itn___a:Ip:Sp:1s:3s/*
pense	penser	:V1_itn___a:E:2s/*
résoudre	résoudre	:V3__t_q__a:Y/*
vaut	valoir	:V3_it_x__a:Ip:3s/*
judiciaire	judiciaire	:A:e:s/*
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2417
2418
2419
2420
2421
2422
2423

2424
2425
2426
2427
2428
2429
2430







-







totalement	totalement	:W/*
dette	dette	:N:f:s/*
dépense	dépense	:N:f:s/*
importe	importer	:V1_itn__zz:Ip:Sp:1s:3s/*
importe	importer	:V1_itn__zz:E:2s/*
campagnes	campagne	:N:f:p/*
témoins	témoin	:N:m:p/*
quelqu'un	quelqu'un	:G:Oi:m:s/*
exigences	exigence	:N:f:p/*
laissant	laisser	:V1__t_q_zz:P/*
quart	quarte	:N:A:m:s/*
programmes	programme	:N:m:p/*
épreuve	épreuve	:N:f:s/*
hier	hier	:W/*
britannique	britannique	:N:A:e:s/*
3756
3757
3758
3759
3760
3761
3762
3763

3764
3765
3766
3767
3768
3769
3770
3754
3755
3756
3757
3758
3759
3760

3761
3762
3763
3764
3765
3766
3767
3768







-
+







debout	debout	:W/*
antiquité	antiquité	:N:f:s/*
produite	produire	:V3_it_q__a:Q:A:f:s/*
adultes	adulte	:N:A:e:p/*
croyance	croyance	:N:f:s/*
internes	interne	:N:A:e:p/*
manuscrit	manuscrit	:N:m:s/*
apporté	apporter	:V1_it____a:Q:A:1ŝ:m:s/*
apporté	apporter	:V1_itn___a:Q:A:1ŝ:m:s/*
exclusion	exclusion	:N:f:s/*
voile	voile	:N:e:s/*
liées	lier	:V1__tnq__a:Q:A:f:p/*
morts	mort	:N:f:p/*
morts	morte	:N:m:p/*
successives	successive	:A:f:p/*
négociation	négociation	:N:f:s/*
5335
5336
5337
5338
5339
5340
5341
5342
5343


5344
5345
5346
5347
5348
5349
5350
5333
5334
5335
5336
5337
5338
5339


5340
5341
5342
5343
5344
5345
5346
5347
5348







-
-
+
+







histoires	histoire	:N:f:p/*
proviennent	provenir	:V3_i____e_:Ip:Sp:3p/*
intérieures	intérieure	:A:f:p/*
comparée	comparer	:V1__t_q_zz:Q:A:f:s/*
correction	correction	:N:f:s/*
soutenue	soutenir	:V3_itnq__a:Q:A:f:s/*
commentaires	commentaire	:N:m:p/*
apporte	apporter	:V1_it____a:Ip:Sp:1s:3s/*
apporte	apporter	:V1_it____a:E:2s/*
apporte	apporter	:V1_itn___a:Ip:Sp:1s:3s/*
apporte	apporter	:V1_itn___a:E:2s/*
Marne	Marne	:N:f:i/*
jouit	jouir	:V2_i_n___a:Ip:Is:3s/*
insectes	insecte	:N:m:p/*
reprise	reprise	:N:f:s/*
fol	folle	:N:A:m:s/*
développés	développée	:N:m:p/*
exigence	exigence	:N:f:s/*
6336
6337
6338
6339
6340
6341
6342
6343

6344
6345
6346
6347
6348
6349
6350
6334
6335
6336
6337
6338
6339
6340

6341
6342
6343
6344
6345
6346
6347
6348







-
+







voulez	vouloir	:V3_itnq__a:E:2p/*
caution	caution	:N:f:s/*
jusques	jusques	:G:R/*
réservoir	réservoir	:N:m:s/*
quo	quo	:N:m:i/M
dégradation	dégradation	:N:f:s/*
tensions	tension	:N:f:p/*
apportent	apporter	:V1_it____a:Ip:Sp:3p/*
apportent	apporter	:V1_itn___a:Ip:Sp:3p/*
habiles	habile	:A:e:p/*
veine	veine	:N:f:s/*
deuil	deuil	:N:m:s/*
manifestement	manifestement	:W/*
élevait	élever	:V1__tnq__a:Iq:3s/*
doucement	doucement	:W/*
conservent	conserver	:V1__t_q_zz:Ip:Sp:3p/*
6776
6777
6778
6779
6780
6781
6782
6783

6784
6785
6786
6787
6788
6789
6790
6774
6775
6776
6777
6778
6779
6780

6781
6782
6783
6784
6785
6786
6787
6788







-
+







argumentation	argumentation	:N:f:s/*
goûts	goût	:N:m:p/M
comparé	comparer	:V1__t_q_zz:Q:A:1ŝ:m:s/*
conservée	conserver	:V1__t_q_zz:Q:A:f:s/*
recevait	recevoir	:V3_it_q__a:Iq:3s/*
cordes	corde	:N:f:p/*
autorisée	autoriser	:V1__tnq__a:Q:A:f:s/*
apportées	apporter	:V1_it____a:Q:A:f:p/*
apportées	apporter	:V1_itn___a:Q:A:f:p/*
commander	commander	:V1_itnq_zz:Y/*
XX	XX	:B:e:p/*
expose	exposer	:V1__tnq__a:Ip:Sp:1s:3s/*
expose	exposer	:V1__tnq__a:E:2s/*
éther	éther	:N:m:s/*
vaincu	vaincue	:N:m:s/*
assis	asseoir	:V3__t_q__a:Q:A:m:i/M
7876
7877
7878
7879
7880
7881
7882
7883

7884
7885
7886
7887
7888
7889
7890
7874
7875
7876
7877
7878
7879
7880

7881
7882
7883
7884
7885
7886
7887
7888







-
+







perdit	perdre	:V3_it_q__a:Is:3s/*
expérimentation	expérimentation	:N:f:s/*
prépare	préparer	:V1__tnq__a:Ip:Sp:1s:3s/*
prépare	préparer	:V1__tnq__a:E:2s/*
partagent	partager	:V1_itnq__a:Ip:Sp:3p/*
saillie	saillie	:N:f:s/*
périphérie	périphérie	:N:f:s/*
apportée	apporter	:V1_it____a:Q:A:f:s/*
apportée	apporter	:V1_itn___a:Q:A:f:s/*
douces	douce	:N:A:f:p/*
expresse	expresse	:A:f:s/*
odieux	odieuse	:A:m:i/*
débarquement	débarquement	:N:m:s/*
dénoncer	dénoncer	:V1_it_q__a:Y/*
utilisent	utiliser	:V1__t____a:Ip:Sp:3p/*
entourée	entourer	:V1__t_q_zz:Q:A:f:s/*
9206
9207
9208
9209
9210
9211
9212
9213

9214
9215
9216
9217
9218
9219
9220
9204
9205
9206
9207
9208
9209
9210

9211
9212
9213
9214
9215
9216
9217
9218







-
+







conduisit	conduire	:V3_it_q__a:Is:3s/*
bulle	bulle	:N:f:s/*
comporter	comporter	:V1__t_q_zz:Y/*
sévèrement	sévèrement	:W/*
profité	profiter	:V1___n__zz:Q:1ŝ:e:i/*
dépêches	dépêche	:N:f:p/*
expropriation	expropriation	:N:f:s/*
apportés	apporter	:V1_it____a:Q:A:m:p/*
apportés	apporter	:V1_itn___a:Q:A:m:p/*
thermomètre	thermomètre	:N:m:s/*
semis	semis	:N:m:i/*
constatations	constatation	:N:f:p/*
poignée	poignée	:N:f:s/*
évocation	évocation	:N:f:s/*
continuant	continuer	:V1_itn___a:P/*
évaporation	évaporation	:N:f:s/*
9948
9949
9950
9951
9952
9953
9954
9955

9956
9957
9958
9959
9960
9961
9962
9946
9947
9948
9949
9950
9951
9952

9953
9954
9955
9956
9957
9958
9959
9960







-
+







sommaire	sommaire	:A:e:s/*
sommaire	sommaire	:N:m:s/*
gothique	gothique	:N:A:e:s/*
réunissant	réunir	:V2_it_q__a:P/*
proportionnel	proportionnelle	:A:m:s/*
avoine	avoine	:N:f:s/*
dramatiques	dramatique	:N:A:e:p/*
apportait	apporter	:V1_it____a:Iq:3s/*
apportait	apporter	:V1_itn___a:Iq:3s/*
transitoire	transitoire	:A:e:s/*
franche	franche	:A:f:s/*
brebis	brebis	:N:f:i/*
appartements	appartement	:N:m:p/*
Arras	Arras	:MP:e:i/*
partenaire	partenaire	:N:e:s/*
reprenant	reprendre	:V3_it_q__a:P/*
11142
11143
11144
11145
11146
11147
11148
11149

11150
11151
11152
11153
11154
11155
11156
11140
11141
11142
11143
11144
11145
11146

11147
11148
11149
11150
11151
11152
11153
11154







-
+







Anna	Anna	:M1:f:i/*
métamorphose	métamorphose	:N:f:s/*
IVe	IVe	:A:e:s/*
réclamait	réclamer	:V1_it_q_zz:Iq:3s/*
ml	l	:N:m:i;S/*
chrétienté	chrétienté	:N:f:s/*
instauration	instauration	:N:f:s/*
apporta	apporter	:V1_it____a:Is:3s/*
apporta	apporter	:V1_itn___a:Is:3s/*
féodale	féodale	:N:A:f:s/*
guéri	guérir	:V2_it_q_zz:Q:A:m:s/*
Hall	Hall	:M2:e:i/*
tombait	tomber	:V1_it___e_:Iq:3s/*
Sébastien	Sébastien	:M1:m:i/*
rocher	rocher	:V1_i____zz:Y/*
rocher	rocher	:N:m:s/*
11343
11344
11345
11346
11347
11348
11349
11350

11351
11352
11353
11354
11355
11356
11357
11341
11342
11343
11344
11345
11346
11347

11348
11349
11350
11351
11352
11353
11354
11355







-
+







évacuer	évacuer	:V1__t_q_zz:Y/*
fonciers	foncière	:A:m:p/*
entraînés	entraîner	:V1__t_q__a:Q:A:m:p/M
Sibérie	Sibérie	:N:f:i/*
caste	caste	:N:f:s/*
réputé	réputer	:V1__t___zz:Q:A:1ŝ:m:s/*
obligent	obliger	:V1__tnq__a:Ip:Sp:3p/*
apportant	apporter	:V1_it____a:P/*
apportant	apporter	:V1_itn___a:P/*
spécialisée	spécialiser	:V1__t_q_zz:Q:A:f:s/*
douzième	douzième	:N:A:e:s/*
Var	Var	:N:m:i/*
linéaire	linéaire	:A:e:s/*
linéaire	linéaire	:N:m:s/*
judaïsme	judaïsme	:N:m:s/*
vigoureusement	vigoureusement	:W/*
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14100
14101
14102
14103
14104
14105
14106

14107
14108
14109
14110
14111
14112
14113







-







réparti	répartir	:V2__t_q_zz:Q:A:m:s/*
gagna	gagner	:V1_it_q_zz:Is:3s/*
prééminence	prééminence	:N:f:s/*
toxique	toxique	:A:e:s/*
cruels	cruelle	:A:m:p/*
hétérogénéité	hétérogénéité	:N:f:s/*
opiniâtre	opiniâtre	:A:e:s/*
presqu'île	presqu'île	:N:f:s/M
accusait	accuser	:V1_it_q__a:Iq:3s/*
dimanche	dimanche	:N:m:s/*
dimanches	dimanche	:N:m:p/*
évangile	évangile	:N:m:s/*
morbides	morbide	:N:A:e:p/*
plaira	plaire	:V3_i_nq__a:If:3s/*
pressent	presser	:V1_it_q_zz:Ip:Sp:3p/*
16863
16864
16865
16866
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16860
16861
16862
16863
16864
16865
16866

16867
16868
16869
16870
16871
16872
16873







-







introduisent	introduire	:V3__t_q__a:Ip:Sp:3p/*
réquisitoire	réquisitoire	:N:m:s/*
multiplie	multiplier	:V1_it_q_zz:Ip:Sp:1s:3s/*
multiplie	multiplier	:V1_it_q_zz:E:2s/*
ambigu	ambiguë	:A:m:s/M
aumônes	aumône	:N:f:p/*
mouchoir	mouchoir	:N:m:s/*
jusqu	jusqu	:G:R/*
pH	H	:N:m:i;S/*
pH	pH	:N:m:i/*
Legrand	Legrand	:MP:e:i/X
magnésium	magnésium	:N:m:s/*
cannes	canne	:N:f:p/*
gîte	gîte	:N:e:s/M
alléger	alléger	:V1__t_q_zz:Y/*
17455
17456
17457
17458
17459
17460
17461
17462
17463
17464
17465
17466
17467
17468
17469
17451
17452
17453
17454
17455
17456
17457

17458
17459
17460
17461
17462
17463
17464







-







paroissiens	paroissienne	:N:A:m:p/*
adéquation	adéquation	:N:f:s/*
volailles	volaille	:N:f:p/*
protesté	protester	:V1_itn__zz:Q:A:1ŝ:m:s/*
pressant	presser	:V1_it_q_zz:P/*
prolongées	prolonger	:V1__t_q_zz:Q:A:f:p/*
vivace	vivace	:A:e:s/*
prud'hommes	prud'homme	:N:m:p/C
partageant	partager	:V1_itnq__a:P/*
inaccessibles	inaccessible	:A:e:p/*
nécessitant	nécessiter	:V1__t____a:P/*
acharnée	acharnée	:N:f:s/*
contrôleurs	contrôleuse	:N:m:p/*
donneraient	donner	:V1_itnq__a:K:3p/*
terra	terrer	:V1_it_q_zz:Is:3s/*
17533
17534
17535
17536
17537
17538
17539
17540

17541
17542
17543
17544
17545
17546
17547
17528
17529
17530
17531
17532
17533
17534

17535
17536
17537
17538
17539
17540
17541
17542







-
+







té	té	:N:m:s/*
range	ranger	:V1__t_q_zz:Ip:Sp:1s:3s/*
range	ranger	:V1__t_q_zz:E:2s/*
trèfle	trèfle	:N:m:s/*
charmantes	charmante	:A:f:p/*
volée	volée	:N:f:s/*
dépositions	déposition	:N:f:p/*
apportaient	apporter	:V1_it____a:Iq:3p/*
apportaient	apporter	:V1_itn___a:Iq:3p/*
cimes	cime	:N:f:p/*
centré	centrer	:V1_it___zz:Q:A:1ŝ:m:s/*
dixièmes	dixième	:N:A:e:p/*
bureaucratique	bureaucratique	:A:e:s/*
pâtes	pâte	:N:f:p/*
acres	acre	:N:f:p/*
carrosse	carrosse	:N:m:s/*
18654
18655
18656
18657
18658
18659
18660
18661

18662
18663
18664
18665
18666
18667
18668
18649
18650
18651
18652
18653
18654
18655

18656
18657
18658
18659
18660
18661
18662
18663







-
+







dynasties	dynastie	:N:f:p/*
tourbillons	tourbillon	:N:m:p/*
inexécution	inexécution	:N:f:s/*
homologue	homologue	:N:A:e:s/*
olivier	olivier	:N:m:s/*
continuels	continuelle	:A:m:p/*
marginaux	marginale	:N:A:m:p/*
apportera	apporter	:V1_it____a:If:3s/*
apportera	apporter	:V1_itn___a:If:3s/*
témoignait	témoigner	:V1__tn__zz:Iq:3s/*
illumination	illumination	:N:f:s/*
envoyé	envoyer	:V1__t_q__a:Q:A:m:s/*
envoyée	envoyer	:V1__t_q__a:Q:A:f:s/*
envoyées	envoyer	:V1__t_q__a:Q:A:f:p/*
envoyés	envoyer	:V1__t_q__a:Q:A:m:p/*
sucs	suc	:N:m:p/*
22819
22820
22821
22822
22823
22824
22825
22826
22827
22828
22829
22830
22831
22832
22833
22814
22815
22816
22817
22818
22819
22820

22821
22822
22823
22824
22825
22826
22827







-







authentiquement	authentiquement	:W/*
délaissé	délaisser	:V1__t___zz:Q:A:1ŝ:m:s/*
divertissements	divertissement	:N:m:p/*
insensibilité	insensibilité	:N:f:s/*
moururent	mourir	:V3_i__q_e_:Is:3p!/*
rustiques	rustique	:A:e:p/*
Titus	Titus	:M1:m:i/*
quelqu'une	quelqu'une	:G:Oi:f:s/*
seigneuriale	seigneuriale	:A:f:s/*
dosages	dosage	:N:m:p/*
flétrir	flétrir	:V2__t_q_zz:Y/*
Rico	Rico	:MP:e:i/*
scolastiques	scolastique	:N:A:e:p/*
Iéna	Iéna	:MP:e:i/*
clocher	clocher	:N:m:s/*
22884
22885
22886
22887
22888
22889
22890
22891

22892
22893
22894
22895
22896
22897
22898
22878
22879
22880
22881
22882
22883
22884

22885
22886
22887
22888
22889
22890
22891
22892







-
+







médité	méditer	:V1_it___zz:Q:A:1ŝ:m:s/*
reproducteurs	reproductrice	:N:A:m:p/*
toucha	toucher	:V1_itnq__a:Is:3s/*
prêché	prêcher	:V1_it___zz:Q:A:1ŝ:m:s/*
annuaire	annuaire	:N:m:s/*
consciencieusement	consciencieusement	:W/*
taudis	taudis	:N:m:i/*
apportèrent	apporter	:V1_it____a:Is:3p!/*
apportèrent	apporter	:V1_itn___a:Is:3p!/*
fiduciaire	fiduciaire	:N:A:e:s/*
vomissement	vomissement	:N:m:s/*
aspirant	aspirer	:V1__tn__zz:P/*
diffamation	diffamation	:N:f:s/*
résolurent	résoudre	:V3__t_q__a:Is:3p!/*
organisait	organiser	:V1__t_q_zz:Iq:3s/*
ardeurs	ardeur	:N:f:p/*
25441
25442
25443
25444
25445
25446
25447
25448

25449
25450
25451
25452
25453
25454
25455
25435
25436
25437
25438
25439
25440
25441

25442
25443
25444
25445
25446
25447
25448
25449







-
+







remboursables	remboursable	:A:e:p/*
brisa	briser	:V1_it_q_zz:Is:3s/*
avoisinent	avoisiner	:V1__t_q_zz:Ip:Sp:3p/*
préféraient	préférer	:V1_it_q_zz:Iq:3p/*
modus	modus	:N:m:i/*
douaire	douaire	:N:m:s/*
blouse	blouse	:N:f:s/*
apporterait	apporter	:V1_it____a:K:3s/*
apporterait	apporter	:V1_itn___a:K:3s/*
Lituanie	Lituanie	:N:f:i/*
signalerons	signaler	:V1__tnq__a:If:1p/*
provençale	provençale	:N:A:f:s/*
ajournée	ajourner	:V1_it____a:Q:A:f:s/*
certification	certification	:N:f:s/*
desséchée	dessécher	:V1__t_q_zz:Q:A:f:s/*
dédale	dédale	:N:m:s/*
25774
25775
25776
25777
25778
25779
25780
25781
25782


25783
25784
25785
25786
25787
25788
25789
25768
25769
25770
25771
25772
25773
25774


25775
25776
25777
25778
25779
25780
25781
25782
25783







-
-
+
+







adoptèrent	adopter	:V1__t____a:Is:3p!/*
Périclès	Périclès	:M1:m:i/*
retrouverait	retrouver	:V1__t_q__a:K:3s/*
apparait	apparaitre	:V3_i_n__e_:Ip:3s/R
Ronald	Ronald	:M1:m:i/*
noué	nouer	:V1_it_q_zz:Q:A:1ŝ:m:s/*
syncope	syncope	:N:f:s/*
Mathilde	Mathilde	:M1:f:i/*
Mathilde	Mathilde	:M1:f:i/X
Mathilde	Mathilde	:M1:f:i/X
Mathilde	Mathilde	:M1:f:i/*
viril	virile	:A:m:s/*
paillettes	paillette	:N:f:p/*
paléontologie	paléontologie	:N:f:s/*
moyennement	moyennement	:W/*
Potsdam	Potsdam	:MP:e:i/*
échauffement	échauffement	:N:m:s/*
appartenances	appartenance	:N:f:p/*
28424
28425
28426
28427
28428
28429
28430
28431
28432
28433
28434
28435
28436
28437
28438
28418
28419
28420
28421
28422
28423
28424

28425
28426
28427
28428
28429
28430
28431







-







copistes	copiste	:N:A:e:p/*
fédéralistes	fédéraliste	:N:A:e:p/*
contiguïté	contiguïté	:N:f:s/M
enfermées	enfermer	:V1__t_q_zz:Q:A:f:p/*
Formose	Formose	:MP:e:i/*
postuler	postuler	:V1_it___zz:Y/*
refuges	refuge	:N:m:p/*
lorsqu	lorsqu	:G:Cs/*
songe	songer	:V1_i_n__zz:Ip:Sp:1s:3s/*
songe	songer	:V1_i_n__zz:E:2s/*
songes	songer	:V1_i_n__zz:Ip:Sp:2s/*
impressionnant	impressionner	:V1__t___zz:P/*
insipide	insipide	:N:A:e:s/*
somnolence	somnolence	:N:f:s/*
gaillard	gaillarde	:N:A:m:s/*
30129
30130
30131
30132
30133
30134
30135
30136

30137
30138
30139
30140
30141
30142
30143
30122
30123
30124
30125
30126
30127
30128

30129
30130
30131
30132
30133
30134
30135
30136







-
+







norvégienne	norvégienne	:N:A:f:s/*
entreprirent	entreprendre	:V3_it____a:Is:3p!/*
déformés	déformer	:V1__t_q_zz:Q:A:m:p/*
imposteur	imposteur	:N:m:s/*
relégués	reléguer	:V1__t___zz:Q:A:m:p/*
lamentables	lamentable	:A:e:p/*
limitrophe	limitrophe	:A:e:s/*
apporteront	apporter	:V1_it____a:If:3p!/*
apporteront	apporter	:V1_itn___a:If:3p!/*
dômes	dôme	:N:m:p/*
rougeâtres	rougeâtre	:A:e:p/*
désordonné	désordonner	:V1__t___zz:Q:A:1ŝ:m:s/*
bouffées	bouffée	:N:f:p/*
distillerie	distillerie	:N:f:s/*
concluants	concluante	:A:m:p/*
classiquement	classiquement	:W/*
33240
33241
33242
33243
33244
33245
33246
33247
33248


33249
33250
33251
33252
33253
33254
33255
33233
33234
33235
33236
33237
33238
33239


33240
33241
33242
33243
33244
33245
33246
33247
33248







-
-
+
+







conquit	conquérir	:V3_it_q__a:Is:3s/*
débet	débet	:N:m:s/*
esquiver	esquiver	:V1__t_q_zz:Y/*
vulgariser	vulgariser	:V1__t___zz:Y/*
informelles	informelle	:A:f:p/*
éprise	éprendre	:V3____p_e_:Q:A:f:s/*
Mercedes	Mercedes	:M1:MP:e:i/*
Derrida	Derrida	:M2:e:i/*
Derrida	Derrida	:M2:e:i/X
Derrida	Derrida	:M2:e:i/X
Derrida	Derrida	:M2:e:i/*
toponymie	toponymie	:N:f:s/*
sodique	sodique	:A:e:s/*
réitérer	réitérer	:V1_it___zz:Y/*
craquer	craquer	:V1_it___zz:Y/*
endommagés	endommager	:V1__t___zz:Q:A:m:p/*
tendraient	tendre	:V3__tnq__a:K:3p/*
monceau	monceau	:N:m:s/*
35840
35841
35842
35843
35844
35845
35846

35847
35848
35849
35850
35851
35852
35853
35833
35834
35835
35836
35837
35838
35839
35840
35841
35842
35843
35844
35845
35846
35847







+







Ahmad	Ahmad	:M1:m:i/*
bananier	bananier	:N:m:s/*
déportations	déportation	:N:f:p/*
pressentait	pressentir	:V3__t____a:Iq:3s/*
jettera	jeter	:V1_itnq__a:If:3s/*
sauvant	sauver	:V1_it_q_zz:P/*
Benedetto	Benedetto	:M1:m:i/*
Willem	Willem	:M1:m:i/*
syllogismes	syllogisme	:N:m:p/*
persévérants	persévérante	:N:A:m:p/*
veilleuse	veilleuse	:N:f:s/*
maléfique	maléfique	:A:e:s/*
Orénoque	Orénoque	:N:m:i/*
cholériques	cholérique	:A:e:p/*
désirées	désirer	:V1_it____a:Q:A:f:p/*
36891
36892
36893
36894
36895
36896
36897
36898
36899
36900
36901
36902
36903
36904
36905
36885
36886
36887
36888
36889
36890
36891

36892
36893
36894
36895
36896
36897
36898







-







écureuil	écureuil	:N:m:s/*
guéries	guérir	:V2_it_q_zz:Q:A:f:p/*
Odon	Odon	:M1:m:i/*
PH	H	:N:m:i;S/*
trouveras	trouver	:V1_it_q__a:If:2s/*
racontées	raconter	:V1__t_q_zz:Q:A:f:p/*
flétrie	flétrir	:V2__t_q_zz:Q:A:f:s/*
quelqu	quelqu	:G:Oi/*
épithètes	épithète	:A:e:p/*
épithètes	épithète	:N:f:p/*
exposaient	exposer	:V1__tnq__a:Iq:3p/*
tartare	tartare	:N:A:e:s/*
pendage	pendage	:N:m:s/*
lignites	lignite	:N:m:p/*
soulevaient	soulever	:V1__t_q_zz:Iq:3p/*
37858
37859
37860
37861
37862
37863
37864
37865
37866
37867
37868
37869
37870
37871
37872
37851
37852
37853
37854
37855
37856
37857

37858
37859
37860
37861
37862
37863
37864







-







tissulaire	tissulaire	:A:e:s/*
ergot	ergot	:N:m:s/*
éveillant	éveiller	:V1__t_q_zz:P/*
réorganisée	réorganiser	:V1__t_q_zz:Q:A:f:s/*
aciérie	aciérie	:N:f:s/*
inachèvement	inachèvement	:N:m:s/*
jailli	jaillir	:V2_i_____a:Q:A:m:s/*
puisqu	puisqu	:G:Cs/*
insouciant	insouciante	:A:m:s/*
réformatrice	réformatrice	:N:A:f:s/*
pastilles	pastille	:N:f:p/*
ring	ring	:N:m:s/*
chirurgicaux	chirurgicale	:A:m:p/*
explorés	explorer	:V1__t___zz:Q:A:m:p/*
volatile	volatile	:A:f:s/*
39795
39796
39797
39798
39799
39800
39801
39802

39803
39804
39805
39806
39807
39808
39809
39787
39788
39789
39790
39791
39792
39793

39794
39795
39796
39797
39798
39799
39800
39801







-
+







débutant	débutante	:N:A:m:s/*
perverses	perverse	:N:A:f:p/*
fatuité	fatuité	:N:f:s/*
toxicomanes	toxicomane	:N:A:e:p/*
pourvoira	pourvoir	:V3__tnq_zz:If:3s/*
paranoïaque	paranoïaque	:N:A:e:s/*
tories	tory	:N:m:p/C
entrelacés	entrelacer	:V1__t_q_zz:Q:A:m:p/*
entrelacés	entrelacer	:V1__t_q__a:Q:A:m:p/*
bénédictine	bénédictine	:N:A:f:s/*
hippopotame	hippopotame	:N:m:s/*
fouillés	fouiller	:V1_it_q_zz:Q:A:m:p/*
Dassault	Dassault	:MP:e:i/*
criticisme	criticisme	:N:m:s/*
craintive	craintive	:N:A:f:s/*
abstraitement	abstraitement	:W/*
41204
41205
41206
41207
41208
41209
41210
41211

41212
41213
41214
41215
41216
41217
41218
41196
41197
41198
41199
41200
41201
41202

41203
41204
41205
41206
41207
41208
41209
41210







-
+







Christie	Christie	:M2:e:i/*
fracturé	fracturer	:V1__t_q_zz:Q:A:1ŝ:m:s/*
enveloppement	enveloppement	:N:m:s/*
exaucé	exaucer	:V1__t_q_zz:Q:A:1ŝ:m:s/*
attendrie	attendrir	:V2__t_q__a:Q:A:f:s/*
fixeront	fixer	:V1_it_q__a:If:3p!/*
suspendait	suspendre	:V3_it_q__a:Iq:3s/*
entrelacées	entrelacer	:V1__t_q_zz:Q:A:f:p/*
entrelacées	entrelacer	:V1__t_q__a:Q:A:f:p/*
rieuse	rieuse	:N:A:f:s/*
altercation	altercation	:N:f:s/*
décroissent	décroître	:V3_i_____a:Ip:Sp:3p/M
jurandes	jurande	:N:f:p/*
Tamerlan	Tamerlan	:M1:m:i/*
apanages	apanage	:N:m:p/*
métaphoriques	métaphorique	:A:e:p/*
43467
43468
43469
43470
43471
43472
43473

43474
43475
43476
43477
43478
43479
43480
43459
43460
43461
43462
43463
43464
43465
43466
43467
43468
43469
43470
43471
43472
43473







+







déposera	déposer	:V1_it_q_zz:If:3s/*
déchiraient	déchirer	:V1__t_q_zz:Iq:3p/*
encombrant	encombrante	:A:m:s/*
entendrons	entendre	:V3_itnq__a:If:1p/*
finaux	finaux	:A:m:p/*
tatouages	tatouage	:N:m:p/*
salaisons	salaison	:N:f:p/*
Pygmalion	Pygmalion	:M1:m:i/*
signera	signer	:V1_it_q__a:If:3s/*
criblée	cribler	:V1__t___zz:Q:A:f:s/*
fibrillaire	fibrillaire	:A:e:s/*
tales	taler	:V1__t___zz:Ip:Sp:2s/*
conciliaire	conciliaire	:A:e:s/*
élagage	élagage	:N:m:s/*
pourvoyeurs	pourvoyeuse	:N:m:p/*
43789
43790
43791
43792
43793
43794
43795
43796
43797
43798
43799
43800
43801
43802
43803
43782
43783
43784
43785
43786
43787
43788

43789
43790
43791
43792
43793
43794
43795







-







écoulaient	écouler	:V1__t_q_zz:Iq:3p/*
tenable	tenable	:A:e:s/*
tétraèdre	tétraèdre	:N:m:s/*
Lindsay	Lindsay	:M1:f:i/*
jugeai	juger	:V1_itn___a:Is:1s/*
moulés	mouler	:V1_it___zz:Q:A:m:p/*
empierrement	empierrement	:N:m:s/*
entr'ouverte	entr'ouvrir	:V3__t_q_zz:Q:A:f:s/C
percussions	percussion	:N:f:p/*
palmeraies	palmeraie	:N:f:p/*
aboutissants	aboutissant	:N:m:p/*
relieur	relieuse	:N:m:s/*
calculait	calculer	:V1_it___zz:Iq:3s/*
randonnées	randonnée	:N:f:p/*
pian	pian	:N:m:s/*
44291
44292
44293
44294
44295
44296
44297
44298

44299
44300
44301
44302
44303
44304
44305
44283
44284
44285
44286
44287
44288
44289

44290
44291
44292
44293
44294
44295
44296
44297







-
+







cubiques	cubique	:A:e:p/*
cubiques	cubique	:N:f:p/*
soustrayant	soustraire	:V3_it_q__a:P/*
transi	transir	:V2_it___zz:Q:A:m:s/*
scripturale	scripturale	:A:f:s/*
supermarchés	supermarché	:N:m:p/*
navigué	naviguer	:V1_i____zz:Q:1ŝ:e:i/*
apporteraient	apporter	:V1_it____a:K:3p/*
apporteraient	apporter	:V1_itn___a:K:3p/*
pensionné	pensionnée	:N:m:s/*
bousculé	bousculer	:V1__t_q_zz:Q:A:1ŝ:m:s/*
praticables	praticable	:A:e:p/*
praticables	praticable	:N:m:p/*
écrasa	écraser	:V1_it_q_zz:Is:3s/*
simonie	simonie	:N:f:s/*
conjurations	conjuration	:N:f:p/*
45318
45319
45320
45321
45322
45323
45324
45325
45326

45327
45328
45329
45330
45331
45332
45333
45310
45311
45312
45313
45314
45315
45316

45317
45318
45319
45320
45321
45322
45323
45324
45325







-

+







tâchera	tâcher	:V1__tn__zz:If:3s/*
contrasté	contraster	:V1_it___zz:Q:A:1ŝ:m:s/*
capitulé	capituler	:V1_i____zz:Q:1ŝ:e:i/*
négociable	négociable	:A:e:s/*
disjointes	disjoindre	:V3__t_q_zz:Q:A:f:p/*
Huguette	Huguette	:M1:f:i/*
sises	seoir	:V3_i____zz:Q:A:f:p/*
vaux	vau	:N:m:p/*
vaux	vaux	:N:m:p/*
vaux	vau	:N:m:p/*
couronnait	couronner	:V1__t_q_zz:Iq:3s/*
reproduise	reproduire	:V3_it_q__a:Sp:1s:3s/*
sortiraient	sortir	:V3_it_q__a:K:3p/*
magyare	magyare	:N:A:f:s/*
prédite	prédire	:V3__t_q_zz:Q:A:f:s/*
agréger	agréger	:V1__t_q_zz:Y/*
trophique	trophique	:A:e:s/*
50398
50399
50400
50401
50402
50403
50404
50405

50406
50407
50408
50409
50410
50411
50412
50390
50391
50392
50393
50394
50395
50396

50397
50398
50399
50400
50401
50402
50403
50404







-
+







GS	S	:N:m:i;S/*
brisera	briser	:V1_it_q_zz:If:3s/*
entreprenante	entreprenante	:A:f:s/*
bastide	bastide	:N:f:s/*
initiatrice	initiatrice	:N:A:f:s/*
prophétiser	prophétiser	:V1_it___zz:Y/*
démesurés	démesurée	:A:m:p/*
apportât	apporter	:V1_it____a:Sq:3s/*
apportât	apporter	:V1_itn___a:Sq:3s/*
ignominieuse	ignominieuse	:A:f:s/*
ternit	ternir	:V2_it_q_zz:Ip:Is:3s/*
évoluera	évoluer	:V1_i____zz:If:3s/*
Salim	Salim	:M1:m:i/*
ontogenèse	ontogenèse	:N:f:s/*
ramollir	ramollir	:V2__t_q_zz:Y/*
raidit	raidir	:V2__t_q_zz:Ip:Is:3s/*
51056
51057
51058
51059
51060
51061
51062
51063

51064
51065
51066
51067
51068
51069
51070
51048
51049
51050
51051
51052
51053
51054

51055
51056
51057
51058
51059
51060
51061
51062







-
+







téléviseur	téléviseur	:N:m:s/*
discordant	discordante	:A:m:s/*
neigeuses	neigeuse	:A:f:p/*
calculera	calculer	:V1_it___zz:If:3s/*
échapperaient	échapper	:V1_itnq_zz:K:3p/*
enquit	enquérir	:V3____p_e_:Is:3s/*
truelle	truelle	:N:f:s/*
entrelacent	entrelacer	:V1__t_q_zz:Ip:Sp:3p/*
entrelacent	entrelacer	:V1__t_q__a:Ip:Sp:3p/*
enfle	enfler	:V1_it_q_zz:Ip:Sp:1s:3s/*
enfle	enfler	:V1_it_q_zz:E:2s/*
déversés	déverser	:V1__t_q_zz:Q:A:m:p/*
trépassés	trépassée	:N:A:m:p/*
abstiendra	abstenir	:V3____p_e_:If:3s/*
munit	munir	:V2__t_q_zz:Ip:Is:3s/*
élancements	élancement	:N:m:p/*
51902
51903
51904
51905
51906
51907
51908
51909
51910


51911
51912
51913
51914
51915
51916
51917
51894
51895
51896
51897
51898
51899
51900


51901
51902
51903
51904
51905
51906
51907
51908
51909







-
-
+
+







rumination	rumination	:N:f:s/*
standardisé	standardiser	:V1__t___zz:Q:A:1ŝ:m:s/*
Bénarès	Bénarès	:MP:e:i/*
furet	furette	:N:m:s/*
dévonien	dévonien	:N:m:s/*
panthères	panthère	:N:f:p/*
désavouée	désavouer	:V1__t___zz:Q:A:f:s/*
apportons	apporter	:V1_it____a:Ip:1p/*
apportons	apporter	:V1_it____a:E:1p/*
apportons	apporter	:V1_itn___a:Ip:1p/*
apportons	apporter	:V1_itn___a:E:1p/*
insouciants	insouciante	:A:m:p/*
Lotharingie	Lotharingie	:N:f:i/*
abime	abime	:N:m:s/R
contredisant	contredire	:V3_it_q__a:P/*
Philémon	Philémon	:M1:m:i/*
morveux	morveuse	:N:A:m:i/*
turpitude	turpitude	:N:f:s/*
53825
53826
53827
53828
53829
53830
53831
53832

53833
53834
53835
53836
53837
53838
53839
53817
53818
53819
53820
53821
53822
53823

53824
53825
53826
53827
53828
53829
53830
53831







-
+







bantoue	bantoue	:N:A:f:s/*
flagrants	flagrante	:A:m:p/*
démystification	démystification	:N:f:s/*
retentissant	retentir	:V2_i_____a:P/*
interlocutrice	interlocutrice	:N:f:s/*
fumaient	fumer	:V1_it___zz:Iq:3p/*
effrayées	effrayer	:V1__t_q_zz:Q:A:f:p/*
solidifier	solidifier	:V1__t_q_zz:Y/*
solidifier	solidifier	:V1_it_q__a:Y/*
poursuivants	poursuivante	:N:m:p/*
ionisé	ioniser	:V1__t___zz:Q:A:1ŝ:m:s/*
grandira	grandir	:V2_it_q__a:If:3s/*
incantatoire	incantatoire	:A:e:s/*
ciliés	ciliée	:A:m:p/*
imprécation	imprécation	:N:f:s/*
touffues	touffue	:A:f:p/*
54083
54084
54085
54086
54087
54088
54089
54090
54091
54092
54093
54094
54095
54096
54097
54075
54076
54077
54078
54079
54080
54081

54082
54083
54084
54085
54086
54087
54088







-







enliser	enliser	:V1__t_q_zz:Y/*
intouchables	intouchable	:N:A:e:p/*
atoll	atoll	:N:m:s/*
gouvernorat	gouvernorat	:N:m:s/*
affabulation	affabulation	:N:f:s/*
participes	participe	:N:m:p/*
participes	participer	:V1___n__zz:Ip:Sp:2s/*
N'Djamena	N'Djamena	:MP:e:i/*
achèveront	achever	:V1_it_q__a:If:3p!/*
expirent	expirer	:V1_it____a:Ip:Sp:3p/*
resituer	resituer	:V1__t_q_zz:Y/*
annonceur	annonceuse	:N:m:s/*
parlerais	parler	:V1_itnq__a:K:1s:2s/*
aïeules	aïeule	:N:f:p/*
réconcilie	réconcilier	:V1__t_q_zz:Ip:Sp:1s:3s/*
54454
54455
54456
54457
54458
54459
54460
54461
54462


54463
54464
54465
54466
54467
54468
54469
54445
54446
54447
54448
54449
54450
54451


54452
54453
54454
54455
54456
54457
54458
54459
54460







-
-
+
+







hellène	hellène	:N:A:e:s/*
vivats	vivat	:N:m:p/*
asservis	asservir	:V2__t_q_zz:Ip:Is:1s:2s/*
asservis	asservir	:V2__t_q_zz:E:2s/*
asservis	asservir	:V2__t_q_zz:Q:A:m:p/*
Aménophis	Aménophis	:M1:m:i/*
galvanoplastie	galvanoplastie	:N:f:s/*
apportez	apporter	:V1_it____a:Ip:2p/*
apportez	apporter	:V1_it____a:E:2p/*
apportez	apporter	:V1_itn___a:Ip:2p/*
apportez	apporter	:V1_itn___a:E:2p/*
consigne	consigner	:V1__t___zz:Ip:Sp:1s:3s/*
consigne	consigner	:V1__t___zz:E:2s/*
consignes	consigner	:V1__t___zz:Ip:Sp:2s/*
naïvetés	naïveté	:N:f:p/*
rutile	rutile	:N:m:s/*
germinales	germinale	:A:f:p/*
calmées	calmer	:V1__t_q_zz:Q:A:f:p/*
54637
54638
54639
54640
54641
54642
54643
54644
54645
54646
54647
54648
54649
54650
54651
54628
54629
54630
54631
54632
54633
54634

54635
54636
54637
54638
54639
54640
54641







-







sièges	siéger	:V1_i____zz:Ip:Sp:2s/*
duale	duale	:A:f:s/*
ignées	ignée	:A:f:p/*
Herstal	Herstal	:MP:e:i/*
véreux	véreuse	:A:m:i/*
relèverons	relever	:V1_itnq__a:If:1p/*
témoignera	témoigner	:V1__tn__zz:If:3s/*
quoiqu	quoiqu	:G:Cs/*
dénaturées	dénaturer	:V1__t_q_zz:Q:A:f:p/*
réfrigérateurs	réfrigérateur	:N:m:p/*
potences	potence	:N:f:p/*
Carpates	Carpates	:N:f:p/*
fourberies	fourberie	:N:f:p/*
souffriraient	souffrir	:V3_it_q_zz:K:3p/*
substituerait	substituer	:V1__t_q_zz:K:3s/*
55516
55517
55518
55519
55520
55521
55522
55523

55524
55525
55526
55527
55528
55529
55530
55506
55507
55508
55509
55510
55511
55512

55513
55514
55515
55516
55517
55518
55519
55520







-
+







dogon	dogonne	:N:A:m:s/*
Haïfa	Haïfa	:MP:e:i/*
virils	virile	:A:m:p/*
louchant	loucher	:V1_i____zz:P/*
accourant	accourir	:V3_i_____a:P/*
mélangeur	mélangeuse	:N:m:s/*
malintentionnés	malintentionnée	:N:A:m:p/*
solidifiée	solidifier	:V1__t_q_zz:Q:A:f:s/*
solidifiée	solidifier	:V1_it_q__a:Q:A:f:s/*
abolitionnistes	abolitionniste	:N:A:e:p/*
trachytes	trachyte	:N:m:p/*
achèverait	achever	:V1_it_q__a:K:3s/*
décidons	décider	:V1__tnq_zz:Ip:1p/*
décidons	décider	:V1__tnq_zz:E:1p/*
saignent	saigner	:V1_it_q_zz:Ip:Sp:3p/*
préposée	préposée	:N:A:f:s/*
56297
56298
56299
56300
56301
56302
56303

56304
56305
56306
56307
56308
56309
56310
56287
56288
56289
56290
56291
56292
56293
56294
56295
56296
56297
56298
56299
56300
56301







+







consultez	consulter	:V1_it_q_zz:Ip:2p/*
consultez	consulter	:V1_it_q_zz:E:2p/*
dénis	déni	:N:m:p/*
génotypes	génotype	:N:m:p/*
ondulante	ondulante	:A:f:s/*
universalistes	universaliste	:N:A:e:p/*
Dalila	Dalila	:M1:f:i/*
Nadja	Nadja	:M1:f:i/*
boxes	boxe	:N:f:p/*
parvenais	parvenir	:V3_i_n__e_:Iq:1s:2s/*
cloisonnée	cloisonner	:V1__t___zz:Q:A:f:s/*
hélicoïdal	hélicoïdale	:A:m:s/*
townships	township	:N:e:p/*
affairés	affairer	:V1____p_e_:Q:A:m:p/*
saisirait	saisir	:V2__t_q__a:K:3s/*
56568
56569
56570
56571
56572
56573
56574
56575

56576
56577
56578
56579
56580
56581
56582
56559
56560
56561
56562
56563
56564
56565

56566
56567
56568
56569
56570
56571
56572
56573







-
+







aimerez	aimer	:V1_it_q__a:If:2p/*
martiniquaise	martiniquaise	:N:A:f:s/*
réfractés	réfracter	:V1__t___zz:Q:A:m:p/*
affaiblirait	affaiblir	:V2__t_q__a:K:3s/*
interentreprises	interentreprises	:A:e:i/*
entredeux	entredeux	:N:m:i/R
insistant	insistante	:A:m:s/*
solidifié	solidifier	:V1__t_q_zz:Q:A:1ŝ:m:s/*
solidifié	solidifier	:V1_it_q__a:Q:A:1ŝ:m:s/*
concourront	concourir	:V3_i_nx__a:If:3p!/*
contrariant	contrarier	:V1__t_q_zz:P/*
rehaussés	rehausser	:V1__t_q_zz:Q:A:m:p/*
Hun	Hun	:N:m:s/*
pétrifications	pétrification	:N:f:p/*
semblez	sembler	:V1_i_____a:Ip:2p/*
semblez	sembler	:V1_i_____a:E:2p/*
57592
57593
57594
57595
57596
57597
57598

57599
57600
57601
57602
57603
57604
57605
57583
57584
57585
57586
57587
57588
57589
57590
57591
57592
57593
57594
57595
57596
57597







+







crapule	crapule	:N:f:s/*
citez	citer	:V1__t___zz:Ip:2p/*
citez	citer	:V1__t___zz:E:2p/*
loquet	loquet	:N:m:s/*
myrtes	myrte	:N:m:p/*
primait	primer	:V1_it___zz:Iq:3s/*
objectent	objecter	:V1__t___zz:Ip:Sp:3p/*
Hendrik	Hendrik	:M1:m:i/*
endémies	endémie	:N:f:p/*
amortis	amorti	:N:m:p/*
cardiopathies	cardiopathie	:N:f:p/*
chahut	chahut	:N:m:s/*
circulant	circulante	:A:m:s/*
refont	refaire	:V3__t_q__a:Ip:3p!/*
tryptophane	tryptophane	:N:m:s/*
57920
57921
57922
57923
57924
57925
57926
57927
57928
57929
57930
57931
57932
57933
57934
57912
57913
57914
57915
57916
57917
57918

57919
57920
57921
57922
57923
57924
57925







-







psalmiste	psalmiste	:N:m:s/*
alluviaux	alluviale	:A:m:p/*
brownien	brownienne	:A:m:s/*
triées	trier	:V1__t___zz:Q:A:f:p/*
abordages	abordage	:N:m:p/*
solipsisme	solipsisme	:N:m:s/*
tumultueusement	tumultueusement	:W/*
entr'ouvert	entr'ouvrir	:V3__t_q_zz:Q:A:m:s/C
makhzen	makhzen	:N:m:s/*
souffrirai	souffrir	:V3_it_q_zz:If:1s/*
décibels	décibel	:N:m:p/*
indiscrètement	indiscrètement	:W/*
ordonnez	ordonner	:V1_it_q_zz:Ip:2p/*
ordonnez	ordonner	:V1_it_q_zz:E:2p/*
pragmatiste	pragmatiste	:N:e:s/*
58935
58936
58937
58938
58939
58940
58941
58942
58943
58944
58945
58946
58947
58948
58949
58926
58927
58928
58929
58930
58931
58932

58933
58934
58935
58936
58937
58938
58939







-







Édith	Édith	:M1:f:i/*
hypocondriaque	hypocondriaque	:N:A:e:s/*
sélectivement	sélectivement	:W/*
doriques	dorique	:A:e:p/*
fréquente	fréquenter	:V1_it_q_zz:Ip:Sp:1s:3s/*
fréquente	fréquenter	:V1_it_q_zz:E:2s/*
prendras	prendre	:V3_it_q__a:If:2s/*
p'tit	p'tite	:N:A:m:s/*
inconditionnée	inconditionnée	:A:f:s/*
4es	4es	:A:e:p/*
doucereux	doucereuse	:A:m:i/*
polariser	polariser	:V1__t_q_zz:Y/*
corinthiens	corinthienne	:N:A:m:p/*
réfuta	réfuter	:V1__t___zz:Is:3s/*
balzacienne	balzacienne	:N:A:f:s/*
60669
60670
60671
60672
60673
60674
60675
60676

60677
60678
60679
60680
60681
60682
60683
60659
60660
60661
60662
60663
60664
60665

60666
60667
60668
60669
60670
60671
60672
60673







-
+







ruisselle	ruisseler	:V1_i____zz:E:2s/M
rabaissé	rabaisser	:V1__t_q_zz:Q:A:1ŝ:m:s/*
récompensera	récompenser	:V1__t_q_zz:If:3s/*
débat	débattre	:V3__tnq__a:Ip:3s/*
débats	débattre	:V3__tnq__a:Ip:1s:2s/*
débats	débattre	:V3__tnq__a:E:2s/*
anesthésié	anesthésiée	:N:m:s/*
apporterai	apporter	:V1_it____a:If:1s/*
apporterai	apporter	:V1_itn___a:If:1s/*
déterminai	déterminer	:V1__t_q_zz:Is:1s/*
ténèbre	ténèbre	:N:f:s/*
latiniste	latiniste	:N:e:s/*
vends	vendre	:V3_itnq__a:Ip:1s:2s/*
vends	vendre	:V3_itnq__a:E:2s/*
emballées	emballer	:V1__t_q_zz:Q:A:f:p/*
bactéridies	bactéridie	:N:f:p/*
63594
63595
63596
63597
63598
63599
63600
63601
63602
63603
63604
63605
63606
63607
63608
63584
63585
63586
63587
63588
63589
63590

63591
63592
63593
63594
63595
63596
63597







-







privilégié	privilégier	:V1__t____a:Q:A:1ŝ:m:s/*
privilégiée	privilégier	:V1__t____a:Q:A:f:s/*
privilégiées	privilégier	:V1__t____a:Q:A:f:p/*
privilégiés	privilégier	:V1__t____a:Q:A:m:p/*
tutorat	tutorat	:N:m:s/*
caniche	caniche	:N:m:s/*
désobligeant	désobligeante	:N:A:m:s/*
entr'ouvrir	entr'ouvrir	:V3__t_q_zz:Y/C
théorisé	théoriser	:V1_it___zz:Q:A:1ŝ:m:s/*
laïcat	laïcat	:N:m:s/*
tarissait	tarir	:V2_it_q_zz:Iq:3s/*
partitif	partitive	:A:m:s/*
contenteraient	contenter	:V1__t_q_zz:K:3p/*
gouvernèrent	gouverner	:V1_it_q_zz:Is:3p!/*
rococo	rococo	:A:e:s/*
64699
64700
64701
64702
64703
64704
64705
64706

64707
64708
64709
64710
64711
64712
64713
64688
64689
64690
64691
64692
64693
64694

64695
64696
64697
64698
64699
64700
64701
64702







-
+







quartzeuse	quartzeuse	:A:f:s/*
guinéennes	guinéenne	:N:A:f:p/*
omniprésents	omniprésente	:A:m:p/*
révoquées	révoquée	:N:f:p/*
bengali	bengalie	:N:A:m:s/*
décennaux	décennale	:A:m:p/*
rodé	roder	:V1__t___zz:Q:A:1ŝ:m:s/*
apportais	apporter	:V1_it____a:Iq:1s:2s/*
apportais	apporter	:V1_itn___a:Iq:1s:2s/*
transvasement	transvasement	:N:m:s/*
éconduit	éconduire	:V3_it____a:Q:A:m:s/*
éconduit	éconduire	:V3_it____a:Ip:3s/*
dimensionnel	dimensionnelle	:A:m:s/*
manquerais	manquer	:V1_itnq_zz:K:1s:2s/*
réveillai	réveiller	:V1__t_q_zz:Is:1s/*
brisement	brisement	:N:m:s/*
65407
65408
65409
65410
65411
65412
65413
65414
65415
65416
65417
65418
65419
65420
65421
65396
65397
65398
65399
65400
65401
65402

65403
65404
65405
65406
65407
65408
65409







-







magdalénien	magdalénienne	:N:A:m:s/*
emploieraient	employer	:V1__tnq__a:K:3p/*
pointillées	pointiller	:V1_it___zz:Q:A:f:p/*
chiffrement	chiffrement	:N:m:s/*
glaçons	glacer	:V1_it_q_zz:Ip:1p/*
glaçons	glacer	:V1_it_q_zz:E:1p/*
débitrices	débitrice	:N:A:f:p/*
prud'homme	prud'homme	:N:m:s/C
révère	révérer	:V1__t___zz:Ip:Sp:1s:3s/*
révère	révérer	:V1__t___zz:E:2s/*
dépaysés	dépayser	:V1__t___zz:Q:A:m:p/*
inhospitalier	inhospitalière	:A:m:s/*
spinelle	spinelle	:N:m:s/*
vaccinées	vaccinée	:N:f:p/*
néolibérale	néolibérale	:N:A:f:s/*
65632
65633
65634
65635
65636
65637
65638

65639
65640
65641
65642
65643
65644
65645
65620
65621
65622
65623
65624
65625
65626
65627
65628
65629
65630
65631
65632
65633
65634







+







méristèmes	méristème	:N:m:p/*
pampas	pampa	:N:f:p/*
patrouilleurs	patrouilleuse	:N:m:p/*
agissez	agir	:V2_i_____a:Ip:2p/*
agissez	agir	:V2_i_____a:E:2p/*
exciser	exciser	:V1__t___zz:Y/*
gargouillement	gargouillement	:N:m:s/*
pier	pier	:N:m:s/*
camérier	camérière	:N:m:s/*
shériff	shériff	:N:m:s/C
Paige	Paige	:M1:f:i/*
slavon	slavonne	:N:A:m:s/*
neuroleptiques	neuroleptique	:A:e:p/*
neuroleptiques	neuroleptique	:N:m:p/*
comminatoires	comminatoire	:A:e:p/*
65869
65870
65871
65872
65873
65874
65875
65876
65877


65878
65879
65880
65881
65882
65883
65884
65858
65859
65860
65861
65862
65863
65864


65865
65866
65867
65868
65869
65870
65871
65872
65873







-
-
+
+







dormis	dormir	:V3_i_____a:Is:1s:2s/*
détectives	détective	:N:e:p/*
sloop	sloop	:N:m:s/*
nodaux	nodale	:A:m:p/*
fronce	fronce	:N:f:s/*
réactivé	réactiver	:V1__t___zz:Q:A:1ŝ:m:s/*
badigeonnages	badigeonnage	:N:m:p/*
solidifie	solidifier	:V1__t_q_zz:Ip:Sp:1s:3s/*
solidifie	solidifier	:V1__t_q_zz:E:2s/*
solidifie	solidifier	:V1_it_q__a:Ip:Sp:1s:3s/*
solidifie	solidifier	:V1_it_q__a:E:2s/*
Wegener	Wegener	:M2:e:i/*
arbalètes	arbalète	:N:f:p/*
sépareront	séparer	:V1_it_q__a:If:3p!/*
surreprésentation	surreprésentation	:N:f:s/*
proliférations	prolifération	:N:f:p/*
détraqué	détraquée	:N:m:s/*
argumenta	argumenter	:V1_i____zz:Is:3s/*
66636
66637
66638
66639
66640
66641
66642
66643
66644
66645
66646
66647
66648
66649
66650
66625
66626
66627
66628
66629
66630
66631

66632
66633
66634
66635
66636
66637
66638







-







organigrammes	organigramme	:N:m:p/*
sclérosé	scléroser	:V1__t_q_zz:Q:A:1ŝ:m:s/*
délictueuse	délictueuse	:A:f:s/*
traie	traire	:V3__t___zz:Sp:1s:3s/*
inviterait	inviter	:V1__t_q_zz:K:3s/*
piquées	piquée	:N:f:p/*
onirisme	onirisme	:N:m:s/*
presqu'îles	presqu'île	:N:f:p/M
trament	tramer	:V1__t_q_zz:Ip:Sp:3p/*
idiosyncrasies	idiosyncrasie	:N:f:p/*
maçonnés	maçonner	:V1__t___zz:Q:A:m:p/*
étrangetés	étrangeté	:N:f:p/*
liasiques	liasique	:A:e:p/*
relativise	relativiser	:V1__t___zz:Ip:Sp:1s:3s/*
relativise	relativiser	:V1__t___zz:E:2s/*
67617
67618
67619
67620
67621
67622
67623
67624
67625
67626
67627
67628
67629
67630
67631
67605
67606
67607
67608
67609
67610
67611

67612
67613
67614
67615
67616
67617
67618







-







letton	lettonne	:N:A:m:s/C
noyautage	noyautage	:N:m:s/*
germinatives	germinative	:A:f:p/*
bacchantes	bacchante	:N:f:p/*
contrariaient	contrarier	:V1__t_q_zz:Iq:3p/*
humilia	humilier	:V1__t_q_zz:Is:3s/*
anthracène	anthracène	:N:m:s/*
prud'homale	prud'homale	:A:f:s/C
validant	valider	:V1__t___zz:P/*
valuation	valuation	:N:f:s/*
jouisseur	jouisseuse	:N:A:m:s/*
possèdes	posséder	:V1__t_q__a:Ip:Sp:2s/*
goûtaient	goûter	:V1_itn__zz:Iq:3p/M
recélé	recéler	:V1_it___zz:Q:A:1ŝ:m:s/R
faucheurs	faucheuse	:N:m:p/*
69701
69702
69703
69704
69705
69706
69707
69708
69709
69710
69711
69712
69713
69714
69715
69688
69689
69690
69691
69692
69693
69694

69695
69696
69697
69698
69699
69700
69701







-







éparpille	éparpiller	:V1__t_q_zz:Ip:Sp:1s:3s/*
éparpille	éparpiller	:V1__t_q_zz:E:2s/*
rebuta	rebuter	:V1_it_q_zz:Is:3s/*
Perséphone	Perséphone	:M1:f:i/*
beiges	beige	:N:A:e:p/*
cueillait	cueillir	:V3_it____a:Iq:3s/*
doreur	doreuse	:N:m:s/*
Côte-d'Or	Côte-d'Or	:N:f:i/*
tahitienne	tahitienne	:N:A:f:s/*
hydrographes	hydrographe	:N:e:p/*
ravive	raviver	:V1__t_q_zz:Ip:Sp:1s:3s/*
ravive	raviver	:V1__t_q_zz:E:2s/*
Valeria	Valeria	:M1:f:i/*
acquerraient	acquérir	:V3__t_q__a:K:3p/*
appauvrissant	appauvrir	:V2_it_q__a:P/*
69991
69992
69993
69994
69995
69996
69997
69998

69999
70000
70001
70002
70003
70004
70005
69977
69978
69979
69980
69981
69982
69983

69984
69985
69986
69987
69988
69989
69990
69991







-
+







enchaîné	enchaîner	:V1_it_q_zz:Q:A:1ŝ:m:s/M
enchaînée	enchaîner	:V1_it_q_zz:Q:A:f:s/M
enchaînées	enchaîner	:V1_it_q_zz:Q:A:f:p/M
enchaînés	enchaîner	:V1_it_q_zz:Q:A:m:p/M
fongueux	fongueuse	:A:m:i/*
mangerait	manger	:V1__t_q__a:K:3s/*
mécaniser	mécaniser	:V1__t___zz:Y/*
apporterons	apporter	:V1_it____a:If:1p/*
apporterons	apporter	:V1_itn___a:If:1p/*
éditent	éditer	:V1__t___zz:Ip:Sp:3p/*
pompon	pompon	:N:m:s/*
positionne	positionner	:V1__t_q_zz:Ip:Sp:1s:3s/*
positionne	positionner	:V1__t_q_zz:E:2s/*
bibliophilie	bibliophilie	:N:f:s/*
stationnements	stationnement	:N:m:p/*
Monsanto	Monsanto	:MP:m:i/*
70497
70498
70499
70500
70501
70502
70503
70504
70505
70506
70507
70508
70509
70510
70511
70483
70484
70485
70486
70487
70488
70489

70490
70491
70492
70493
70494
70495
70496







-







méconnaîtrait	méconnaître	:V3__t_q__a:K:3s/M
empoisonna	empoisonner	:V1__t_q_zz:Is:3s/*
Arsinoé	Arsinoé	:M1:f:i/*
accédèrent	accéder	:V1___n___a:Is:3p!/*
infertiles	infertile	:N:A:e:p/*
édentés	édentée	:N:m:p/*
factieuses	factieuse	:N:A:f:p/*
entr'ouvertes	entr'ouvrir	:V3__t_q_zz:Q:A:f:p/C
licenciées	licenciée	:N:f:p/*
suggérèrent	suggérer	:V1_it___zz:Is:3p!/*
modificative	modificative	:A:f:s/*
englobant	englobante	:A:m:s/*
zibeline	zibeline	:N:f:s/*
gavage	gavage	:N:m:s/*
péristaltique	péristaltique	:A:e:s/*
71548
71549
71550
71551
71552
71553
71554
71555

71556
71557
71558
71559
71560
71561
71562
71533
71534
71535
71536
71537
71538
71539

71540
71541
71542
71543
71544
71545
71546
71547







-
+







prédisposant	prédisposer	:V1_it___zz:P/*
casqués	casquer	:V1_it___zz:Q:A:m:p/*
victorien	victorienne	:N:A:m:s/*
adultérine	adultérine	:N:A:f:s/*
Ciney	Ciney	:MP:e:i/*
anagrammes	anagramme	:N:f:p/*
Hopper	Hopper	:M2:e:i/*
apportes	apporter	:V1_it____a:Ip:Sp:2s/*
apportes	apporter	:V1_itn___a:Ip:Sp:2s/*
fermentait	fermenter	:V1_i____zz:Iq:3s/*
alterna	alterner	:V1_it___zz:Is:3s/*
ecclésiologique	ecclésiologique	:A:e:s/*
natatoires	natatoire	:A:e:p/*
poupon	poupon	:N:m:s/*
centralement	centralement	:W/*
frotteurs	frotteuse	:N:A:m:p/*
73128
73129
73130
73131
73132
73133
73134
73135
73136
73137
73138
73139
73140
73141
73142
73143
73113
73114
73115
73116
73117
73118
73119


73120
73121
73122
73123
73124
73125
73126







-
-







pèseraient	peser	:V1_it_q_zz:K:3p/*
Wilbur	Wilbur	:M1:m:i/*
glycérides	glycéride	:N:m:p/*
interventriculaire	interventriculaire	:A:e:s/*
blasphémé	blasphémer	:V1_it___zz:Q:A:1ŝ:m:s/*
comtoises	comtoise	:N:A:f:p/*
cotisés	cotiser	:V1_i__q_zz:Q:A:m:p/*
entr'ouvre	entr'ouvrir	:V3__t_q_zz:Ip:Sp:1s:3s/C
entr'ouvre	entr'ouvrir	:V3__t_q_zz:E:2s/C
impresario	impresario	:N:e:s/C
voilaient	voiler	:V1_it_q_zz:Iq:3p/*
brave	braver	:V1__t___zz:Ip:Sp:1s:3s/*
brave	braver	:V1__t___zz:E:2s/*
braves	braver	:V1__t___zz:Ip:Sp:2s/*
contrister	contrister	:V1__t___zz:Y/*
lipoïdes	lipoïde	:A:e:p/*
73555
73556
73557
73558
73559
73560
73561
73562
73563


73564
73565
73566
73567
73568
73569
73570
73538
73539
73540
73541
73542
73543
73544


73545
73546
73547
73548
73549
73550
73551
73552
73553







-
-
+
+







émergés	émergée	:A:m:p/*
Carvin	Carvin	:MP:e:i/*
finissais	finir	:V2_it____a:Iq:1s:2s/*
aryanisation	aryanisation	:N:f:s/*
hyoïdienne	hyoïdienne	:A:f:s/*
intracrânienne	intracrânienne	:A:f:s/*
déshonorait	déshonorer	:V1__t_q_zz:Iq:3s/*
Karine	Karine	:M1:f:i/*
Karine	Karine	:M1:f:i/X
Karine	Karine	:M1:f:i/X
Karine	Karine	:M1:f:i/*
palatale	palatale	:N:A:f:s/*
dissonant	dissonante	:N:A:m:s/*
indurées	indurer	:V1__t___zz:Q:A:f:p/*
reclassés	reclasser	:V1__t___zz:Q:A:m:p/*
hébergeant	héberger	:V1__t___zz:P/*
auteures	auteure	:N:f:p/*
conversent	converser	:V1_i____zz:Ip:Sp:3p/*
75399
75400
75401
75402
75403
75404
75405
75406

75407
75408
75409
75410
75411
75412
75413
75414
75415

75416
75417
75418
75419
75420
75421
75422
75382
75383
75384
75385
75386
75387
75388

75389
75390
75391
75392
75393
75394
75395
75396
75397

75398
75399
75400
75401
75402
75403
75404
75405







-
+








-
+







incivilité	incivilité	:N:f:s/*
moquez	moquer	:V1__t_q_zz:Ip:2p/*
moquez	moquer	:V1__t_q_zz:E:2p/*
remarquions	remarquer	:V1__t_x__a:Iq:Sp:1p/*
césars	césar	:N:m:p/*
ingratitudes	ingratitude	:N:f:p/*
Dominic	Dominic	:M1:m:i/*
apportions	apporter	:V1_it____a:Iq:Sp:1p/*
apportions	apporter	:V1_itn___a:Iq:Sp:1p/*
cyberespace	cyberespace	:N:m:s/*
mouvementés	mouvementer	:V1__t___zz:Q:A:m:p/*
narcisse	narcisse	:N:m:s/*
formulons	formuler	:V1__t_q_zz:Ip:1p/*
formulons	formuler	:V1__t_q_zz:E:1p/*
hâbleur	hâbleuse	:N:A:m:s/*
alcalose	alcalose	:N:f:s/*
pâlissant	pâlir	:V2_it___zz:P/*
apporterez	apporter	:V1_it____a:If:2p/*
apporterez	apporter	:V1_itn___a:If:2p/*
bousculades	bousculade	:N:f:p/*
métallisation	métallisation	:N:f:s/*
colportées	colporter	:V1__t___zz:Q:A:f:p/*
pleurera	pleurer	:V1_it___zz:If:3s/*
affinant	affiner	:V1__t_q_zz:P/*
pedum	pedum	:N:m:s/M
pincements	pincement	:N:m:p/*
75786
75787
75788
75789
75790
75791
75792
75793

75794
75795
75796
75797
75798
75799
75800
75769
75770
75771
75772
75773
75774
75775

75776
75777
75778
75779
75780
75781
75782
75783







-
+







boutonnée	boutonner	:V1__t_q_zz:Q:A:f:s/*
exaspéraient	exaspérer	:V1__t_q_zz:Iq:3p/*
indélicat	indélicate	:N:A:m:s/*
penserons	penser	:V1_itn___a:If:1p/*
pouilleux	pouilleuse	:A:m:i/*
branchées	brancher	:V1_it_q_zz:Q:A:f:p/*
malandrins	malandrin	:N:m:p/*
financeurs	financeuse	:N:m:p/*
financeurs	financeuse	:N:A:m:p/*
panais	panais	:N:m:i/*
pratiquante	pratiquante	:N:A:f:s/*
choyée	choyée	:N:f:s/*
ralentira	ralentir	:V2_it_q_zz:If:3s/*
milliaire	milliaire	:A:e:s/*
milliaire	milliaire	:N:m:s/*
attireraient	attirer	:V1__t_q_zz:K:3p/*
77333
77334
77335
77336
77337
77338
77339
77340
77341
77342
77343
77344
77345
77346
77347
77316
77317
77318
77319
77320
77321
77322

77323
77324
77325
77326
77327
77328
77329







-







paramétrage	paramétrage	:N:m:s/*
Pirelli	Pirelli	:MP:e:i/*
falsificateurs	falsificatrice	:N:m:p/*
convoyés	convoyer	:V1__t___zz:Q:A:m:p/*
impavide	impavide	:A:e:s/*
frappât	frapper	:V1_it_q_zz:Sq:3s/*
illusoirement	illusoirement	:W/*
Val-d'Oise	Val-d'Oise	:N:m:i/*
campings	camping	:N:m:p/*
canalisés	canaliser	:V1__t___zz:Q:A:m:p/*
désinsertion	désinsertion	:N:f:s/*
post	post	:N:m:s/*
posts	post	:N:m:p/*
courette	courette	:N:f:s/*
préjugent	préjuger	:V1__tn__zz:Ip:Sp:3p/*
77584
77585
77586
77587
77588
77589
77590

77591
77592
77593
77594
77595
77596
77597
77566
77567
77568
77569
77570
77571
77572
77573
77574
77575
77576
77577
77578
77579
77580







+







antipersonnel	antipersonnel	:A:e:i/M
estampillage	estampillage	:N:m:s/*
solipsiste	solipsiste	:N:A:e:s/*
dureraient	durer	:V1_i_____a:K:3p/*
GWh	Wh	:N:m:i;S/*
hypostyle	hypostyle	:A:e:s/*
pariait	parier	:V1_it___zz:Iq:3s/*
Mandalay	Mandalay	:MP:e:i/*
débloqués	débloquer	:V1_it___zz:Q:A:m:p/*
ossifié	ossifier	:V1__t_q_zz:Q:A:1ŝ:m:s/*
baskets	basket	:N:e:p/*
suait	suer	:V1_it___zz:Iq:3s/*
fauconnier	fauconnier	:N:m:s/*
happe	happe	:N:f:s/*
involutions	involution	:N:f:p/*
78771
78772
78773
78774
78775
78776
78777
78778

78779
78780
78781
78782
78783
78784
78785
78754
78755
78756
78757
78758
78759
78760

78761
78762
78763
78764
78765
78766
78767
78768







-
+







lignification	lignification	:N:f:s/*
sépale	sépale	:N:m:s/*
anémiée	anémier	:V1__t___zz:Q:A:f:s/*
artificieusement	artificieusement	:W/*
détrompés	détromper	:V1__t_q_zz:Q:A:m:p/*
affirmez	affirmer	:V1_itnq__a:Ip:2p/*
affirmez	affirmer	:V1_itnq__a:E:2p/*
vous-même	vous-même	:G:Os:Oo:O2:e:p/*
vous-même	vous-même	:G:Os:Oo:O2:e:s/*
émerveillent	émerveiller	:V1__t_q_zz:Ip:Sp:3p/*
subjuguent	subjuguer	:V1__t___zz:Ip:Sp:3p/*
décaper	décaper	:V1__t___zz:Y/*
existentiellement	existentiellement	:W/*
jugeriez	juger	:V1_itn___a:K:2p/*
mouillâmes	mouiller	:V1_it___zz:Is:1p/*
putrescibles	putrescible	:A:e:p/*
79433
79434
79435
79436
79437
79438
79439
79440
79441
79442
79443
79444
79445
79446
79447
79416
79417
79418
79419
79420
79421
79422

79423
79424
79425
79426
79427
79428
79429







-







orchestra	orchestrer	:V1__t___zz:Is:3s/*
paraguayen	paraguayenne	:N:A:m:s/*
techniciste	techniciste	:A:e:s/*
enlisent	enliser	:V1__t_q_zz:Ip:Sp:3p/*
pacifiées	pacifier	:V1__t___zz:Q:A:f:p/*
serveuses	serveuse	:N:f:p/*
scooter	scooter	:N:m:s/M
Cantons-de-l'Est	Cantons-de-l'Est	:N:m:p/*
exhibitionniste	exhibitionniste	:N:e:s/*
compensa	compenser	:V1_it_q__a:Is:3s/*
dramatisée	dramatiser	:V1_it___zz:Q:A:f:s/*
muséale	muséale	:A:f:s/*
profitez	profiter	:V1___n__zz:Ip:2p/*
profitez	profiter	:V1___n__zz:E:2p/*
brunir	brunir	:V2_it_q_zz:Y/*
79572
79573
79574
79575
79576
79577
79578
79579
79580
79581
79582
79583
79584
79585
79586
79554
79555
79556
79557
79558
79559
79560

79561
79562
79563
79564
79565
79566
79567







-







éludait	éluder	:V1__t___zz:Iq:3s/*
carnés	carnée	:A:m:p/*
trembles	tremble	:N:m:p/*
trembles	trembler	:V1_i____zz:Ip:Sp:2s/*
enfouissent	enfouir	:V2__t_q_zz:Ip:Sp:Sq:3p/*
excisée	exciser	:V1__t___zz:Q:A:f:s/*
épicycloïde	épicycloïde	:N:f:s/*
entr'ouvrit	entr'ouvrir	:V3__t_q_zz:Is:3s/C
empareront	emparer	:V1____p_e_:If:3p!/*
protéases	protéase	:N:f:p/*
grégoriennes	grégorienne	:A:f:p/*
revendaient	revendre	:V3__t_q_zz:Iq:3p/*
œils	œil	:N:m:p/*
écorçage	écorçage	:N:m:s/*
AVC	AVC	:N:m:i/*
79895
79896
79897
79898
79899
79900
79901
79902

79903
79904
79905
79906
79907
79908
79909
79876
79877
79878
79879
79880
79881
79882

79883
79884
79885
79886
79887
79888
79889
79890







-
+







graduels	graduelle	:A:m:p/*
serpolet	serpolet	:N:m:s/*
emmagasinent	emmagasiner	:V1__t___zz:Ip:Sp:3p/*
babillage	babillage	:N:m:s/*
approprièrent	approprier	:V1__t_q_zz:Is:3p!/*
métalangue	métalangue	:N:f:s/*
bourbonnais	bourbonnaise	:N:A:m:i/*
entrelacer	entrelacer	:V1__t_q_zz:Y/*
entrelacer	entrelacer	:V1__t_q__a:Y/*
soutirages	soutirage	:N:m:p/*
disposes	disposer	:V1__tnq_zz:Ip:Sp:2s/*
haussée	hausser	:V1__t_q_zz:Q:A:f:s/*
mésencéphale	mésencéphale	:N:m:s/*
bouillis	bouillir	:V3_it____a:Q:A:m:p/*
bouillis	bouillir	:V3_it____a:Is:1s:2s/*
contributif	contributive	:A:m:s/*
80584
80585
80586
80587
80588
80589
80590
80591

80592
80593
80594
80595
80596
80597
80598
80565
80566
80567
80568
80569
80570
80571

80572
80573
80574
80575
80576
80577
80578
80579







-
+







carbonisées	carboniser	:V1__t___zz:Q:A:f:p/*
mandrins	mandrin	:N:m:p/*
gazés	gazée	:N:m:p/*
Candace	Candace	:M1:f:i/*
swaps	swap	:N:m:p/*
mussolinienne	mussolinienne	:A:f:s/*
pauvresse	pauvresse	:N:f:s/*
entrelacé	entrelacer	:V1__t_q_zz:Q:A:1ŝ:m:s/*
entrelacé	entrelacer	:V1__t_q__a:Q:A:1ŝ:m:s/*
passeras	passer	:V1_it_q_zz:If:2s/*
proximaux	proximale	:A:m:p/*
dévonienne	dévonienne	:A:f:s/*
corrodée	corroder	:V1__t___zz:Q:A:f:s/*
irascibilité	irascibilité	:N:f:s/*
persienne	persienne	:N:f:s/*
compotes	compote	:N:f:p/*
80842
80843
80844
80845
80846
80847
80848
80849

80850
80851
80852
80853
80854
80855
80856
80823
80824
80825
80826
80827
80828
80829

80830
80831
80832
80833
80834
80835
80836
80837







-
+







challenger	challenger	:N:e:s/M
crépue	crépue	:A:f:s/*
microgrammes	gramme	:N:m:p/*
disruptive	disruptive	:A:f:s/*
tritiée	tritiée	:A:f:s/*
biffée	biffer	:V1__t___zz:Q:A:f:s/*
cousait	coudre	:V3__t___zz:Iq:3s/*
solidifiées	solidifier	:V1__t_q_zz:Q:A:f:p/*
solidifiées	solidifier	:V1_it_q__a:Q:A:f:p/*
ébouriffés	ébouriffer	:V1__t___zz:Q:A:m:p/*
contondant	contondante	:A:m:s/*
enneigées	enneiger	:V1__t___zz:Q:A:f:p/*
pagaies	pagaie	:N:f:p/*
couvés	couver	:V1_it___zz:Q:A:m:p/*
déterminité	déterminité	:N:f:s/*
parataxe	parataxe	:N:f:s/*
80881
80882
80883
80884
80885
80886
80887
80888

80889
80890
80891
80892
80893
80894
80895
80862
80863
80864
80865
80866
80867
80868

80869
80870
80871
80872
80873
80874
80875
80876







-
+







occasionneraient	occasionner	:V1__t___zz:K:3p/*
sociolinguistiques	sociolinguistique	:A:e:p/*
sociolinguistiques	sociolinguistique	:N:f:p/*
Duriez	Duriez	:M2:e:i/X
dardait	darder	:V1_it_q_zz:Iq:3s/*
antéposé	antéposer	:V1__t___zz:Q:A:1ŝ:m:s/*
nécromancie	nécromancie	:N:f:s/*
solidifiant	solidifier	:V1__t_q_zz:P/*
solidifiant	solidifier	:V1_it_q__a:P/*
tinettes	tinette	:N:f:p/*
urineux	urineuse	:A:m:i/*
troublât	troubler	:V1__t_q_zz:Sq:3s/*
transportes	transporter	:V1__t_q_zz:Ip:Sp:2s/*
intervertébral	intervertébrale	:A:m:s/*
battons	battre	:V3_itnq__a:Ip:1p/*
battons	battre	:V3_itnq__a:E:1p/*
81550
81551
81552
81553
81554
81555
81556
81557
81558
81559
81560
81561
81562
81563
81564
81531
81532
81533
81534
81535
81536
81537

81538
81539
81540
81541
81542
81543
81544







-







biotine	biotine	:N:f:s/*
marginalisme	marginalisme	:N:m:s/*
musicologique	musicologique	:A:e:s/*
quasars	quasar	:N:m:p/*
sentencieuse	sentencieuse	:A:f:s/*
enchantaient	enchanter	:V1__t_q_zz:Iq:3p/*
laryngienne	laryngienne	:A:f:s/*
prud'homales	prud'homale	:A:f:p/C
substituât	substituer	:V1__t_q_zz:Sq:3s/*
notifiait	notifier	:V1__t___zz:Iq:3s/*
pointaient	pointer	:V1_it_q_zz:Iq:3p/*
prostituent	prostituer	:V1__t_q_zz:Ip:Sp:3p/*
démolissait	démolir	:V2__t___zz:Iq:3s/*
businessmen	businessman	:N:m:p/C
Fergus	Fergus	:M1:m:i/*
82197
82198
82199
82200
82201
82202
82203

82204
82205
82206
82207
82208
82209
82210
82177
82178
82179
82180
82181
82182
82183
82184
82185
82186
82187
82188
82189
82190
82191







+







dénationaliser	dénationaliser	:V1__t___zz:Y/*
déformables	déformable	:A:e:p/*
simoniaques	simoniaque	:A:e:p/*
comparerai	comparer	:V1__t_q_zz:If:1s/*
gommage	gommage	:N:m:s/*
Severi	Severi	:M2:e:i/*
pacifiés	pacifier	:V1__t___zz:Q:A:m:p/*
piers	pier	:N:m:p/*
démène	démener	:V1____p_e_:Ip:Sp:1s:3s/*
démène	démener	:V1____p_e_:E:2s/*
gagées	gager	:V1__t___zz:Q:A:f:p/*
pronateur	pronatrice	:A:m:s/*
Peshawar	Peshawar	:MP:e:i/*
estampé	estamper	:V1__t___zz:Q:A:1ŝ:m:s/*
bananeraie	bananeraie	:N:f:s/*
83238
83239
83240
83241
83242
83243
83244
83245
83246
83247
83248
83249
83250
83251
83252
83219
83220
83221
83222
83223
83224
83225

83226
83227
83228
83229
83230
83231
83232







-







canette	canette	:N:f:s/*
pellagreux	pellagreuse	:N:A:m:i/*
abâtardi	abâtardir	:V2__t_q_zz:Q:A:m:s/*
unguéale	unguéale	:A:f:s/*
bouscula	bousculer	:V1__t_q_zz:Is:3s/*
trama	tramer	:V1__t_q_zz:Is:3s/*
fustes	fuste	:N:f:p/*
entr'ouverts	entr'ouvrir	:V3__t_q_zz:Q:A:m:p/C
certifions	certifier	:V1__t___zz:Ip:1p/*
certifions	certifier	:V1__t___zz:E:1p/*
scarificateur	scarificateur	:N:m:s/*
protrusion	protrusion	:N:f:s/*
broutilles	broutille	:N:f:p/*
water-polo	water-polo	:N:m:s/M
Schottky	Schottky	:M2:e:i/*
84705
84706
84707
84708
84709
84710
84711
84712

84713
84714
84715
84716
84717
84718
84719
84685
84686
84687
84688
84689
84690
84691

84692
84693
84694
84695
84696
84697
84698
84699







-
+







retournes	retourner	:V1_it_q_zz:Ip:Sp:2s/*
accouder	accouder	:V1____p_e_:Y/*
hertz	hertz	:N:m:i/*
tartes	tarte	:A:e:p/*
tartes	tarte	:N:f:p/*
marmonna	marmonner	:V1__t___zz:Is:3s/*
Comps	Comps	:MP:e:i/X
apportai	apporter	:V1_it____a:Is:1s/*
apportai	apporter	:V1_itn___a:Is:1s/*
podestats	podestat	:N:m:p/*
sassanides	sassanide	:A:e:p/*
physionomiques	physionomique	:A:e:p/*
retrouveras	retrouver	:V1__t_q__a:If:2s/*
délégué	déléguer	:V1__t___zz:Q:A:1ŝ:m:s/*
déléguée	déléguer	:V1__t___zz:Q:A:f:s/*
déléguées	déléguer	:V1__t___zz:Q:A:f:p/*
84832
84833
84834
84835
84836
84837
84838
84839
84840
84841
84842
84843
84844
84845
84846
84812
84813
84814
84815
84816
84817
84818

84819
84820
84821
84822
84823
84824
84825







-







immiscé	immiscer	:V1____p_e_:Q:A:1ŝ:m:s/*
lamento	lamento	:N:m:s/*
fantasmer	fantasmer	:V1_it___zz:Y/*
messires	messire	:N:T:m:p/*
protégeât	protéger	:V1__t_q_zz:Sq:3s/*
Tessa	Tessa	:M1:f:i/*
Writer	Writer	:MP:m:i/X
entr'ouvrent	entr'ouvrir	:V3__t_q_zz:Ip:Sp:3p/C
dispersive	dispersive	:A:f:s/*
fourbure	fourbure	:N:f:s/*
cramponnés	cramponner	:V1__t_q_zz:Q:A:m:p/*
libéraient	libérer	:V1__t_q_zz:Iq:3p/*
offreur	offreuse	:N:m:s/*
grouillaient	grouiller	:V1_i__q_zz:Iq:3p/*
cabanons	cabanon	:N:m:p/*
85081
85082
85083
85084
85085
85086
85087
85088

85089
85090
85091
85092
85093
85094
85095
85060
85061
85062
85063
85064
85065
85066

85067
85068
85069
85070
85071
85072
85073
85074







-
+







exponentiellement	exponentiellement	:W/*
scintillements	scintillement	:N:m:p/*
immigrante	immigrante	:N:A:f:s/*
tressaillent	tressaillir	:V3_i_____a:Ip:Sp:3p/*
valérianique	valérianique	:A:e:s/*
brancardier	brancardière	:N:m:s/*
dédifférenciation	dédifférenciation	:N:f:s/*
solidifient	solidifier	:V1__t_q_zz:Ip:Sp:3p/*
solidifient	solidifier	:V1_it_q__a:Ip:Sp:3p/*
confucéens	confucéenne	:N:A:m:p/*
opérativité	opérativité	:N:f:s/*
jugerions	juger	:V1_itn___a:K:1p/*
percutanée	percutanée	:A:f:s/*
commissoire	commissoire	:A:e:s/*
hématiques	hématique	:A:e:p/*
jacket	jacket	:N:e:s/*
85959
85960
85961
85962
85963
85964
85965
85966

85967
85968
85969
85970
85971
85972
85973
85938
85939
85940
85941
85942
85943
85944

85945
85946
85947
85948
85949
85950
85951
85952







-
+







entreprenantes	entreprenante	:A:f:p/*
programmateur	programmatrice	:N:m:s/*
ampute	amputer	:V1__t_q_zz:Ip:Sp:1s:3s/*
ampute	amputer	:V1__t_q_zz:E:2s/*
sanscrits	sanscrit	:N:m:p/R
sanscrits	sanscrite	:A:m:p/R
améthystes	améthyste	:N:f:p/*
nous-mêmes	nous-même	:G:Os:Oo:O1:e:p/*
nous-mêmes	nous-mêmes	:G:Os:Oo:O1:e:p/*
pénitentiel	pénitentielle	:A:m:s/*
toucherons	toucher	:V1_itnq__a:If:1p/*
squameuses	squameuse	:A:f:p/*
Philippa	Philippa	:M1:f:i/*
gaillardes	gaillarde	:N:A:f:p/*
revendiquons	revendiquer	:V1_it_q_zz:Ip:1p/*
revendiquons	revendiquer	:V1_it_q_zz:E:1p/*
86506
86507
86508
86509
86510
86511
86512
86513

86514
86515
86516
86517
86518
86519
86520
86485
86486
86487
86488
86489
86490
86491

86492
86493
86494
86495
86496
86497
86498
86499







-
+







faînes	faîne	:N:f:p/C
isochrone	isochrone	:A:e:s/*
isochrone	isochrone	:N:f:s/*
enfilait	enfiler	:V1__t_q_zz:Iq:3s/*
qualifies	qualifier	:V1__t_q_zz:Ip:Sp:2s/*
gober	gober	:V1__t___zz:Y/*
saladier	saladier	:N:m:s/*
solidifiés	solidifier	:V1__t_q_zz:Q:A:m:p/*
solidifiés	solidifier	:V1_it_q__a:Q:A:m:p/*
millimétrique	millimétrique	:A:e:s/*
transactionnelles	transactionnelle	:A:f:p/*
autorisons	autoriser	:V1__tnq__a:Ip:1p/*
autorisons	autoriser	:V1__tnq__a:E:1p/*
cafre	cafre	:N:e:s/*
croisons	croiser	:V1_it_q_zz:Ip:1p/*
croisons	croiser	:V1_it_q_zz:E:1p/*
86919
86920
86921
86922
86923
86924
86925
86926

86927
86928
86929
86930
86931
86932
86933
86898
86899
86900
86901
86902
86903
86904

86905
86906
86907
86908
86909
86910
86911
86912







-
+







décroîtra	décroître	:V3_i_____a:If:3s/M
écervelés	écervelée	:A:m:p/*
démonstrateurs	démonstratrice	:N:m:p/*
régleraient	régler	:V1_it_q__a:K:3p/M
cachons	cacher	:V1__t_q_zz:Ip:1p/*
cachons	cacher	:V1__t_q_zz:E:1p/*
peinant	peiner	:V1_it_x__a:P/*
apportiez	apporter	:V1_it____a:Iq:Sp:2p/*
apportiez	apporter	:V1_itn___a:Iq:Sp:2p/*
suavement	suavement	:W/*
vassalique	vassalique	:A:e:s/*
accouchait	accoucher	:V1_itn__zz:Iq:3s/*
rémunératoire	rémunératoire	:A:e:s/*
verruqueux	verruqueuse	:A:m:i/*
Wuppertal	Wuppertal	:MP:e:i/*
entrechoquer	entrechoquer	:V1__t_q_zz:Y/*
87600
87601
87602
87603
87604
87605
87606
87607
87608
87609
87610
87611
87612
87613
87614
87579
87580
87581
87582
87583
87584
87585

87586
87587
87588
87589
87590
87591
87592







-







mystifiée	mystifier	:V1__t___zz:Q:A:f:s/*
dénivelé	dénivelé	:N:m:s/*
mourions	mourir	:V3_i__q_e_:Iq:Sp:1p/*
rouleur	rouleuse	:N:A:m:s/*
rouée	rouée	:N:A:f:s/*
serrements	serrement	:N:m:p/*
comminutive	comminutive	:A:f:s/*
incriminant	incriminer	:V1__t_q_zz:P/*
sortantes	sortante	:N:A:f:p/*
anesthésiée	anesthésiée	:N:f:s/*
frissonnant	frissonnante	:A:m:s/*
cloque	cloque	:N:f:s/*
consacreraient	consacrer	:V1__t_q__a:K:3p/*
estimerons	estimer	:V1__t_q_zz:If:1p/*
lançons	lancer	:V1__t_q_zz:Ip:1p/*
87702
87703
87704
87705
87706
87707
87708

87709
87710
87711
87712
87713
87714
87715
87680
87681
87682
87683
87684
87685
87686
87687
87688
87689
87690
87691
87692
87693
87694







+







ostéophytes	ostéophyte	:N:m:p/*
enjambent	enjamber	:V1_it___zz:Ip:Sp:3p/*
installons	installer	:V1__t_q_zz:Ip:1p/*
installons	installer	:V1__t_q_zz:E:1p/*
surprendront	surprendre	:V3_it_q__a:If:3p!/*
coccidies	coccidie	:N:f:p/*
isoles	isoler	:V1__t_q_zz:Ip:Sp:2s/*
présidentialiste	présidentialiste	:N:A:e:s/*
recommandez	recommander	:V1__t_q_zz:Ip:2p/*
recommandez	recommander	:V1__t_q_zz:E:2p/*
signeraient	signer	:V1_it_q__a:K:3p/*
décocha	décocher	:V1__t___zz:Is:3s/*
réutilisée	réutiliser	:V1__t___zz:Q:A:f:s/*
spectrographique	spectrographique	:A:e:s/*
argots	argot	:N:m:p/*
88350
88351
88352
88353
88354
88355
88356
88357

88358
88359
88360
88361
88362
88363
88364
88329
88330
88331
88332
88333
88334
88335

88336
88337
88338
88339
88340
88341
88342
88343







-
+







rez-de-chaussée	rez-de-chaussée	:N:m:i/*
cartier	cartier	:N:m:s/*
cadastrées	cadastrer	:V1__t___zz:Q:A:f:p/*
crottés	crotter	:V1_it_q_zz:Q:A:m:p/*
torturées	torturée	:N:f:p/*
communicateurs	communicatrice	:N:m:p/*
mués	muer	:V1_it_q_zz:Q:A:m:p/*
apportassent	apporter	:V1_it____a:Sq:3p/*
apportassent	apporter	:V1_itn___a:Sq:3p/*
chassieux	chassieuse	:A:m:i/*
vina	viner	:V1__t___zz:Is:3s/*
automutilation	automutilation	:N:f:s/*
libelliste	libelliste	:N:e:s/*
exhibées	exhiber	:V1__t_q_zz:Q:A:f:p/*
uvée	uvée	:N:f:s/*
bobards	bobard	:N:m:p/*
88714
88715
88716
88717
88718
88719
88720
88721

88722
88723
88724
88725
88726
88727
88728
88693
88694
88695
88696
88697
88698
88699

88700
88701
88702
88703
88704
88705
88706
88707







-
+







tranquillise	tranquilliser	:V1__t_q_zz:E:2s/*
cadencées	cadencer	:V1__t___zz:Q:A:f:p/*
psychosociologues	psychosociologue	:N:e:p/*
satisfît	satisfaire	:V3__tnq_zz:Sq:3s/*
dantonistes	dantoniste	:N:A:e:p/*
transsexuels	transsexuelle	:N:A:m:p/*
conferve	conferve	:N:f:s/*
entrelaçant	entrelacer	:V1__t_q_zz:P/*
entrelaçant	entrelacer	:V1__t_q__a:P/*
intégrationniste	intégrationniste	:N:A:e:s/*
civilisationnel	civilisationnelle	:A:m:s/*
outrageait	outrager	:V1__t___zz:Iq:3s/*
herba	herber	:V1__t___zz:Is:3s/*
rhumatologie	rhumatologie	:N:f:s/*
rossé	rosser	:V1__t___zz:Q:A:1ŝ:m:s/*
incruste	incruster	:V1__t_q_zz:Ip:Sp:1s:3s/*
88931
88932
88933
88934
88935
88936
88937
88938

88939
88940
88941
88942
88943
88944
88945
88910
88911
88912
88913
88914
88915
88916

88917
88918
88919
88920
88921
88922
88923
88924







-
+







véroles	vérole	:N:f:p/*
cursives	cursive	:A:f:p/*
interindividuels	interindividuelle	:A:m:p/*
polyesters	polyester	:N:m:p/*
réjection	réjection	:N:f:s/*
allaitait	allaiter	:V1_it___zz:Iq:3s/*
rattacheront	rattacher	:V1__t_q_zz:If:3p!/*
FFF	FFF	:N:m:i/X
FFF	FFF	:N:f:i/X
chronométrie	chronométrie	:N:f:s/*
alligator	alligator	:N:m:s/*
transsexualisme	transsexualisme	:N:m:s/*
méprisons	mépriser	:V1__t_q_zz:Ip:1p/*
méprisons	mépriser	:V1__t_q_zz:E:1p/*
réaffirma	réaffirmer	:V1__t___zz:Is:3s/*
myosite	myosite	:N:f:s/*
89005
89006
89007
89008
89009
89010
89011

89012
89013
89014
89015
89016
89017
89018
88984
88985
88986
88987
88988
88989
88990
88991
88992
88993
88994
88995
88996
88997
88998







+







bondissante	bondissante	:A:f:s/*
iconologie	iconologie	:N:f:s/*
poissonnier	poissonnière	:N:A:m:s/*
ressaisissant	ressaisir	:V2__t_q_zz:P/*
établîmes	établir	:V2__t_q__a:Is:1p/*
contres	contre	:N:m:p/*
contres	contrer	:V1_it___zz:Ip:Sp:2s/*
incriminant	incriminer	:V1__t_q_zz:P/*
monoclonaux	monoclonale	:A:m:p/*
trépasser	trépasser	:V1_i____zz:Y/*
clonale	clonale	:A:f:s/*
informulé	informulée	:A:m:s/*
merlans	merlan	:N:m:p/*
propyle	propyle	:N:m:s/*
animes	animer	:V1__t_q_zz:Ip:Sp:2s/*
89151
89152
89153
89154
89155
89156
89157
89158

89159
89160
89161
89162
89163
89164
89165
89131
89132
89133
89134
89135
89136
89137

89138
89139
89140
89141
89142
89143
89144
89145







-
+







moustériennes	moustérienne	:N:A:f:p/*
qualifièrent	qualifier	:V1__t_q_zz:Is:3p!/*
reconnaissiez	reconnaître	:V3__t_q__a:Iq:Sp:2p/M
réquisits	réquisit	:N:m:p/*
érigne	érigne	:N:f:s/*
McKinley	McKinley	:M2:e:i/*
diligentes	diligente	:A:f:p/*
entrelacée	entrelacer	:V1__t_q_zz:Q:A:f:s/*
entrelacée	entrelacer	:V1__t_q__a:Q:A:f:s/*
Camon	Camon	:MP:e:i/X
constrictions	constriction	:N:f:p/*
sublimées	sublimer	:V1_it___zz:Q:A:f:p/*
agrippent	agripper	:V1__t_q_zz:Ip:Sp:3p/*
asphodèles	asphodèle	:N:m:p/*
invoqueront	invoquer	:V1__t___zz:If:3p!/*
nestorienne	nestorienne	:N:A:f:s/*
90150
90151
90152
90153
90154
90155
90156
90157
90158
90159
90160
90161
90162
90163
90164
90130
90131
90132
90133
90134
90135
90136

90137
90138
90139
90140
90141
90142
90143







-







cédez	céder	:V1_itn___a:Ip:2p/*
cédez	céder	:V1_itn___a:E:2p/*
hésitions	hésiter	:V1_i_____a:Iq:Sp:1p/*
misait	miser	:V1_it___zz:Iq:3s/*
ressentez	ressentir	:V3_it_x__a:Ip:2p/*
ressentez	ressentir	:V3_it_x__a:E:2p/*
acétonique	acétonique	:A:e:s/*
chef-d'œuvre	chef-d'œuvre	:N:m:s/*
félibrige	félibrige	:N:m:s/*
symptomatologique	symptomatologique	:A:e:s/*
Ctrl	Ctrl	:MP:f:i/*
Jared	Jared	:M1:m:i/*
antiparasitaires	antiparasitaire	:A:e:p/*
antiparasitaires	antiparasitaire	:N:m:p/*
confetti	confetti	:N:m:s/*
90927
90928
90929
90930
90931
90932
90933
90934
90935


90936
90937
90938
90939
90940
90941
90942
90906
90907
90908
90909
90910
90911
90912


90913
90914
90915
90916
90917
90918
90919
90920
90921







-
-
+
+







décortiquée	décortiquer	:V1__t___zz:Q:A:f:s/*
discutez	discuter	:V1_it_q_zz:Ip:2p/*
discutez	discuter	:V1_it_q_zz:E:2p/*
préformée	préformer	:V1__t___zz:Q:A:f:s/*
attraire	attraire	:V3__t___zz:Y/*
paletots	paletot	:N:m:p/*
praxéologie	praxéologie	:N:f:s/*
GPL	GPL	:N:m:i/*
GPL	GPL	:N:f:i/X
GPL	GPL	:N:f:i/X
GPL	GPL	:N:m:i/*
décongestion	décongestion	:N:f:s/*
ignoreront	ignorer	:V1__t_q_zz:If:3p!/*
écarterai	écarter	:V1_it_q_zz:If:1s/*
anesthésiologie	anesthésiologie	:N:f:s/*
hamsters	hamster	:N:m:p/*
happenings	happening	:N:m:p/*
graissée	graisser	:V1_it___zz:Q:A:f:s/*
91837
91838
91839
91840
91841
91842
91843

91844
91845
91846
91847
91848
91849
91850
91816
91817
91818
91819
91820
91821
91822
91823
91824
91825
91826
91827
91828
91829
91830







+







capuche	capuche	:N:f:s/*
métamères	métamère	:N:m:p/*
paralittérature	paralittérature	:N:f:s/*
prognathe	prognathe	:A:e:s/*
afrikaans	afrikaans	:A:e:i/M
afrikaans	afrikaans	:N:m:i/M
déshonorants	déshonorante	:A:m:p/*
ratine	ratine	:N:f:s/*
variétal	variétale	:A:m:s/*
jugeras	juger	:V1_itn___a:If:2s/*
madrasa	madrasa	:N:f:s/C
pirouetter	pirouetter	:V1_i____zz:Y/*
tunes	tune	:N:f:p/*
versoirs	versoir	:N:m:p/*
clunisiens	clunisienne	:A:m:p/*
92162
92163
92164
92165
92166
92167
92168
92169
92170
92171
92172
92173
92174
92175
92176
92142
92143
92144
92145
92146
92147
92148

92149
92150
92151
92152
92153
92154
92155







-







bombarde	bombarder	:V1__t___zz:E:2s/*
bombardes	bombarder	:V1__t___zz:Ip:Sp:2s/*
nazir	nazir	:N:m:s/*
sabrés	sabrer	:V1_it___zz:Q:A:m:p/*
sourie	sourire	:V3_i_nq__a:Sp:1s:3s/*
champagnes	champagne	:N:e:p/*
entraveraient	entraver	:V1__t___zz:K:3p/*
p'tits	p'tite	:N:A:m:p/*
cathétomètre	cathétomètre	:N:m:s/*
extériorisant	extérioriser	:V1__t_q_zz:P/*
climatisées	climatiser	:V1__t___zz:Q:A:f:p/*
longeâmes	longer	:V1__t___zz:Is:1p/*
tutu	tutu	:N:m:s/*
aubergine	aubergine	:A:e:i/*
aubergine	aubergine	:N:f:s/*
92367
92368
92369
92370
92371
92372
92373
92374
92375
92376
92377
92378
92379
92380
92381
92346
92347
92348
92349
92350
92351
92352

92353
92354
92355
92356
92357
92358
92359







-







basides	baside	:N:f:p/*
retirions	retirer	:V1__t_q__a:Iq:Sp:1p/*
implantait	implanter	:V1__t_q_zz:Iq:3s/*
inserts	insert	:N:m:p/*
émergèrent	émerger	:V1_i_____a:Is:3p!/*
initiaient	initier	:V1__t_q_zz:Iq:3p/*
contentements	contentement	:N:m:p/*
entr'ouvrant	entr'ouvrir	:V3__t_q_zz:P/C
inconditionnelles	inconditionnelle	:N:A:f:p/*
rallument	rallumer	:V1_it_q_zz:Ip:Sp:3p/*
savonniers	savonnière	:N:A:m:p/*
copula	copuler	:V1_i____zz:Is:3s/*
décodé	décoder	:V1__t___zz:Q:A:1ŝ:m:s/*
grièche	grièche	:A:e:s/*
nubien	nubienne	:N:A:m:s/*
94850
94851
94852
94853
94854
94855
94856
94857
94858
94859
94860
94861
94862
94863
94864
94828
94829
94830
94831
94832
94833
94834

94835
94836
94837
94838
94839
94840
94841







-







toqué	toquer	:V1_i__q_zz:Q:A:1ŝ:m:s/*
caboche	caboche	:N:f:s/*
catcheur	catcheuse	:N:m:s/*
insurgeaient	insurger	:V1____p_e_:Iq:3p/*
Rhénanie-du-Nord-Westphalie	Rhénanie-du-Nord-Westphalie	:N:f:i/*
repolarisation	repolarisation	:N:f:s/*
cuissage	cuissage	:N:m:s/*
entr'ouvrait	entr'ouvrir	:V3__t_q_zz:Iq:3s/C
nestorianisme	nestorianisme	:N:m:s/*
tournassent	tourner	:V1_it_q__a:Sq:3p/*
protestées	protester	:V1_itn__zz:Q:A:f:p/*
chambré	chambrer	:V1__t___zz:Q:A:1ŝ:m:s/*
effiloche	effiloche	:N:f:s/*
langoureuses	langoureuse	:A:f:p/*
neuromusculaires	neuromusculaire	:A:e:p/*
95506
95507
95508
95509
95510
95511
95512
95513
95514
95515
95516
95517
95518
95519
95520
95483
95484
95485
95486
95487
95488
95489

95490
95491
95492
95493
95494
95495
95496







-







drêche	drêche	:N:f:s/*
liseurs	liseuse	:N:m:p/*
prévînt	prévenir	:V3_it____a:Sq:3s/*
rigolant	rigoler	:V1_i____zz:P/*
vouvoiement	vouvoiement	:N:m:s/*
débarbouiller	débarbouiller	:V1__t_q_zz:Y/*
jugères	jugère	:N:m:p/*
p'tite	p'tite	:N:A:f:s/*
conduirons	conduire	:V3_it_q__a:If:1p/*
partita	partita	:N:f:s/*
joufflus	joufflue	:A:m:p/*
ecclésiaux	ecclésiale	:A:m:p/*
œnologue	œnologue	:N:e:s/*
acheminai	acheminer	:V1__t_q__a:Is:1s/*
paléosols	paléosol	:N:m:p/*
96154
96155
96156
96157
96158
96159
96160
96161
96162
96163
96164
96165
96166
96167
96168
96130
96131
96132
96133
96134
96135
96136

96137
96138
96139
96140
96141
96142
96143







-







daignèrent	daigner	:V1__t___zz:Is:3p!/*
diaconesse	diaconesse	:N:f:s/*
inanalysable	inanalysable	:A:e:s/*
migre	migrer	:V1_i____zz:Ip:Sp:1s:3s/*
migre	migrer	:V1_i____zz:E:2s/*
narcissiquement	narcissiquement	:W/*
productivistes	productiviste	:A:e:p/*
prud'homie	prud'homie	:N:f:s/C
réapparaissant	réapparaître	:V3_i____e_:P/M
réinterprétés	réinterpréter	:V1__t___zz:Q:A:m:p/*
lesbianisme	lesbianisme	:N:m:s/*
analysants	analysante	:N:A:m:p/*
cueillaient	cueillir	:V3_it____a:Iq:3p/*
déterrées	déterrer	:V1__t___zz:Q:A:f:p/*
hamburger	hamburger	:N:m:s/*
96301
96302
96303
96304
96305
96306
96307

96308
96309
96310
96311
96312
96313
96314
96276
96277
96278
96279
96280
96281
96282
96283
96284
96285
96286
96287
96288
96289
96290







+







artérites	artérite	:N:f:p/*
devinèrent	deviner	:V1__t_q_zz:Is:3p!/*
entérina	entériner	:V1__t___zz:Is:3s/*
fontainiers	fontainière	:N:m:p/*
homologations	homologation	:N:f:p/*
convolé	convoler	:V1_i____zz:Q:1ŝ:e:i/*
mégalomanes	mégalomane	:N:A:e:p/*
Mésoamérique	Mésoamérique	:N:f:i/*
cgr	cgr	:N:m:i;S/*
Morangis	Morangis	:MP:e:i/*
aéroporté	aéroportée	:A:m:s/*
rencontriez	rencontrer	:V1__t_q__a:Iq:Sp:2p/*
exterminatrice	exterminatrice	:N:A:f:s/*
électrisant	électriser	:V1__t___zz:P/*
avéreraient	avérer	:V1__t_q_zz:K:3p/M
96347
96348
96349
96350
96351
96352
96353
96354
96355


96356
96357
96358
96359
96360
96361
96362
96323
96324
96325
96326
96327
96328
96329


96330
96331
96332
96333
96334
96335
96336
96337
96338







-
-
+
+







dédicatoires	dédicatoire	:A:e:p/*
pneumoconioses	pneumoconiose	:N:f:p/*
secouai	secouer	:V1__t_q_zz:Is:1s/*
circiné	circinée	:A:m:s/*
tricycliques	tricyclique	:A:e:p/*
contesteront	contester	:V1_it___zz:If:3p!/*
suffusion	suffusion	:N:f:s/*
entrelace	entrelacer	:V1__t_q_zz:Ip:Sp:1s:3s/*
entrelace	entrelacer	:V1__t_q_zz:E:2s/*
entrelace	entrelacer	:V1__t_q__a:Ip:Sp:1s:3s/*
entrelace	entrelacer	:V1__t_q__a:E:2s/*
holomorphes	holomorphe	:A:e:p/*
putschiste	putschiste	:N:A:e:s/*
transgressifs	transgressive	:A:m:p/*
nymphée	nymphée	:N:m:s/*
électrocoagulation	électrocoagulation	:N:f:s/*
décrépites	décrépite	:A:f:p/*
écumeuses	écumeuse	:N:A:f:p/*
96506
96507
96508
96509
96510
96511
96512
96513
96514
96515
96516
96517
96518
96519
96520
96482
96483
96484
96485
96486
96487
96488

96489
96490
96491
96492
96493
96494
96495







-







hués	huer	:V1_it___zz:Q:A:m:p/*
souriez	sourire	:V3_i_nq__a:Ip:2p/*
souriez	sourire	:V3_i_nq__a:E:2p/*
soustraira	soustraire	:V3_it_q__a:If:3s/*
coutres	coutre	:N:m:p/*
serviras	servir	:V3_itnq__a:If:2s/*
brossa	brosser	:V1_it_q_zz:Is:3s/*
entr'égorger	entr'égorger	:V1____r_e_:Y/M
hexaèdres	hexaèdre	:N:m:p/*
panislamique	panislamique	:A:e:s/*
gravimètre	gravimètre	:N:m:s/*
triplées	tripler	:V1_it___zz:Q:A:f:p/*
opinaient	opiner	:V1_i____zz:Iq:3p/*
commettez	commettre	:V3__t_q__a:Ip:2p/*
commettez	commettre	:V3__t_q__a:E:2p/*
97544
97545
97546
97547
97548
97549
97550
97551
97552
97553
97554
97555
97556
97557
97558
97519
97520
97521
97522
97523
97524
97525

97526
97527
97528
97529
97530
97531
97532







-







Octeville	Octeville	:MP:e:i/*
déphasé	déphaser	:V1__t___zz:Q:A:1ŝ:m:s/*
déprimants	déprimante	:A:m:p/*
géostratégie	géostratégie	:N:f:s/*
ornera	orner	:V1__t_q_zz:If:3s/*
radiolarites	radiolarite	:N:f:p/*
calvados	calvados	:N:m:i/*
chefs-d'œuvre	chefs-d'œuvre	:N:m:p/*
déresponsabilisation	déresponsabilisation	:N:f:s/*
désirai	désirer	:V1_it____a:Is:1s/*
astrophysicien	astrophysicienne	:N:m:s/*
concurrence	concurrencer	:V1__t____a:Ip:Sp:1s:3s/*
concurrence	concurrencer	:V1__t____a:E:2s/*
concurrences	concurrencer	:V1__t____a:Ip:Sp:2s/*
samaritains	samaritaine	:N:A:m:p/*
102051
102052
102053
102054
102055
102056
102057
102058
102059
102060
102061
102062
102063
102064
102065
102025
102026
102027
102028
102029
102030
102031

102032
102033
102034
102035
102036
102037
102038







-







détrompée	détromper	:V1__t_q_zz:Q:A:f:s/*
homo	homo	:N:A:e:s/*
homos	homo	:N:A:e:p/*
liposomes	liposome	:N:m:p/*
supplierai	supplier	:V1__t___zz:If:1s/*
labourages	labourage	:N:m:p/*
miséricordieusement	miséricordieusement	:W/*
presqu'ile	presqu'ile	:N:f:s/R
bigue	bigue	:N:f:s/*
pékin	pékin	:N:m:s/*
ARIA	ARIA	:N:e:i/X
dépistée	dépister	:V1__t___zz:Q:A:f:s/*
réinterprétées	réinterpréter	:V1__t___zz:Q:A:f:p/*
arrimées	arrimer	:V1__t___zz:Q:A:f:p/*
comparante	comparante	:N:A:f:s/*
102408
102409
102410
102411
102412
102413
102414
102415

102416
102417
102418
102419
102420
102421
102422
102381
102382
102383
102384
102385
102386
102387

102388
102389
102390
102391
102392
102393
102394
102395







-
+







pilonner	pilonner	:V1__t___zz:Y/*
virés	virer	:V1_itn__zz:Q:A:m:p/*
Frenchman	Frenchman	:M2:e:i/X
jarretelles	jarretelle	:N:f:p/*
mariste	mariste	:N:e:s/*
sanctionnèrent	sanctionner	:V1__t___zz:Is:3p!/*
excoriée	excorier	:V1__t___zz:Q:A:f:s/*
financeur	financeuse	:N:m:s/*
financeur	financeuse	:N:A:m:s/*
hydrogramme	hydrogramme	:N:m:s/*
kényan	kényane	:N:A:m:s/*
narrent	narrer	:V1__t___zz:Ip:Sp:3p/*
soussignée	soussignée	:A:f:s/*
épidurale	épidurale	:A:f:s/*
aussière	aussière	:N:f:s/*
germanisés	germaniser	:V1_it_q_zz:Q:A:m:p/*
105678
105679
105680
105681
105682
105683
105684
105685
105686
105687
105688
105689
105690
105691
105692
105651
105652
105653
105654
105655
105656
105657

105658
105659
105660
105661
105662
105663
105664







-







engouffrèrent	engouffrer	:V1__t_q_zz:Is:3p!/*
rehaussa	rehausser	:V1__t_q_zz:Is:3s/*
accréditaient	accréditer	:V1__t_q_zz:Iq:3p/*
congéables	congéable	:A:e:p/*
magnétostriction	magnétostriction	:N:f:s/*
planistes	planiste	:N:A:e:p/*
cuilleron	cuilleron	:N:m:s/*
prud'homal	prud'homale	:A:m:s/C
préjudiciels	préjudicielle	:A:m:p/*
recentrement	recentrement	:N:m:s/*
soupières	soupière	:N:f:p/*
subjacent	subjacente	:A:m:s/*
agrémentant	agrémenter	:V1__t___zz:P/*
monopolisait	monopoliser	:V1__t___zz:Iq:3s/*
damassées	damasser	:V1__t___zz:Q:A:f:p/*
109462
109463
109464
109465
109466
109467
109468
109469

109470
109471
109472
109473
109474
109475
109476
109434
109435
109436
109437
109438
109439
109440

109441
109442
109443
109444
109445
109446
109447
109448







-
+







satura	saturer	:V1_it___zz:Is:3s/*
inoculait	inoculer	:V1__t_q_zz:Iq:3s/*
pétersbourgeois	pétersbourgeoise	:N:A:m:i/*
posséderez	posséder	:V1__t_q__a:If:2p/M
repassées	repasser	:V1_it_q_zz:Q:A:f:p/*
stakhanoviste	stakhanoviste	:N:e:s/*
bannirent	bannir	:V2__t_q__a:Is:3p!/*
entrelaçaient	entrelacer	:V1__t_q_zz:Iq:3p/*
entrelaçaient	entrelacer	:V1__t_q__a:Iq:3p/*
ovipositeur	ovipositeur	:N:m:s/*
stencils	stencil	:N:m:p/*
topologiquement	topologiquement	:W/*
filtrable	filtrable	:A:e:s/*
ressurgi	ressurgir	:V2_i____zz:Q:e:i/C
corroi	corroi	:N:m:s/*
rectaux	rectale	:A:m:p/*
110889
110890
110891
110892
110893
110894
110895
110896
110897


110898
110899
110900
110901
110902
110903
110904
110861
110862
110863
110864
110865
110866
110867


110868
110869
110870
110871
110872
110873
110874
110875
110876







-
-
+
+







chaussées	chausser	:V1_it_q_zz:Q:A:f:p/*
mutinent	mutiner	:V1____p_e_:Ip:Sp:3p/*
reversi	reversi	:N:m:s/*
bouturer	bouturer	:V1__t___zz:Y/*
chemisettes	chemisette	:N:f:p/*
réemplois	réemploi	:N:m:p/*
globalisme	globalisme	:N:m:s/*
ombrien	ombrienne	:N:A:m:s/*
ombrien	ombrienne	:N:A:m:s/X
ombrien	ombrienne	:N:A:m:s/X
ombrien	ombrienne	:N:A:m:s/*
polycyclique	polycyclique	:A:e:s/*
réprimèrent	réprimer	:V1__t___zz:Is:3p!/*
angliciste	angliciste	:N:e:s/*
dégroupage	dégroupage	:N:m:s/*
subsidia	subsidier	:V1__t___zz:Is:3s/*
afrikaners	afrikaner	:N:A:e:p/*
vinylique	vinylique	:A:e:s/*
111163
111164
111165
111166
111167
111168
111169
111170
111171
111172
111173
111174
111175
111176
111177
111135
111136
111137
111138
111139
111140
111141

111142
111143
111144
111145
111146
111147
111148







-







signaleraient	signaler	:V1__tnq__a:K:3p/*
féliciterait	féliciter	:V1__t_q_zz:K:3s/*
sayon	sayon	:N:m:s/*
asyndète	asyndète	:N:f:s/*
buffleteries	buffleterie	:N:f:p/M
glumelle	glumelle	:N:f:s/*
occultait	occulter	:V1__t___zz:Iq:3s/*
ratines	ratiner	:V1__t___zz:Ip:Sp:2s/*
chalcographie	chalcographie	:N:f:s/*
clouage	clouage	:N:m:s/*
microzoaires	microzoaire	:N:m:p/*
accaparèrent	accaparer	:V1__t___zz:Is:3p!/*
chatoyer	chatoyer	:V1_i____zz:Y/*
déduirai	déduire	:V3_it_q__a:If:1s/*
goret	goret	:N:m:s/*
111245
111246
111247
111248
111249
111250
111251

111252
111253
111254
111255
111256
111257
111258
111216
111217
111218
111219
111220
111221
111222
111223
111224
111225
111226
111227
111228
111229
111230







+







emboîtait	emboîter	:V1__t_q_zz:Iq:3s/M
facilitas	faciliter	:V1__t_q_zz:Is:2s/*
protonique	protonique	:A:e:s/*
périptère	périptère	:A:e:s/*
émoussait	émousser	:V1__t_q_zz:Iq:3s/*
fenugrec	fenugrec	:N:m:s/*
lazzarone	lazzarone	:N:m:s/*
ratines	ratine	:N:f:p/*
assainissent	assainir	:V2__t___zz:Ip:Sp:Sq:3p/*
duetto	duetto	:N:m:i/C
encaissera	encaisser	:V1__t___zz:If:3s/*
judicatures	judicature	:N:f:p/*
rétenteur	rétentrice	:N:A:m:s/*
torréfier	torréfier	:V1__t___zz:Y/*
biosécurité	biosécurité	:N:f:s/*
112965
112966
112967
112968
112969
112970
112971
112972
112973


112974
112975
112976
112977
112978
112979
112980
112937
112938
112939
112940
112941
112942
112943


112944
112945
112946
112947
112948
112949
112950
112951
112952







-
-
+
+







thébaines	thébaine	:N:A:f:p/*
émettrons	émettre	:V3_it____a:If:1p/*
cabrés	cabrer	:V1__t_q_zz:Q:A:m:p/*
compactés	compacter	:V1__t___zz:Q:A:m:p/*
décemvirat	décemvirat	:N:m:s/*
démobilisateur	démobilisatrice	:A:m:s/*
fiions	fier	:V1____p_e_:Iq:Sp:1p/*
ombrienne	ombrienne	:N:A:f:s/*
ombrienne	ombrienne	:N:A:f:s/X
ombrienne	ombrienne	:N:A:f:s/X
ombrienne	ombrienne	:N:A:f:s/*
radicalisés	radicaliser	:V1__t_q_zz:Q:A:m:p/*
subdéléguer	subdéléguer	:V1__t___zz:Y/*
Gstaad	Gstaad	:MP:e:i/*
handisport	handisport	:N:m:s/*
homogénéisant	homogénéiser	:V1__t___zz:P/*
lorettes	lorette	:N:f:p/*
marnières	marnière	:N:f:p/*
113441
113442
113443
113444
113445
113446
113447
113448
113449
113450
113451
113452
113453
113454
113455
113413
113414
113415
113416
113417
113418
113419

113420
113421
113422
113423
113424
113425
113426







-







déconsidère	déconsidérer	:V1__t_q_zz:E:2s/*
isiaque	isiaque	:A:e:s/*
ligérienne	ligérienne	:N:A:f:s/*
privilégierait	privilégier	:V1__t____a:K:3s/*
pyromane	pyromane	:N:e:s/*
tsunamis	tsunami	:N:m:p/*
christianismes	christianisme	:N:m:p/*
rock'n'roll	rock'n'roll	:N:m:i/*
contrastants	contrastante	:A:m:p/*
diligentées	diligenter	:V1__t___zz:Q:A:f:p/*
décrépitation	décrépitation	:N:f:s/*
minerve	minerve	:N:f:s/*
bolchévisation	bolchévisation	:N:f:s/R
lignifié	lignifier	:V1____p_e_:Q:A:1ŝ:m:s/*
phylloxériques	phylloxérique	:A:e:p/*
114205
114206
114207
114208
114209
114210
114211
114212
114213
114214
114215
114216
114217
114218
114219
114220
114176
114177
114178
114179
114180
114181
114182


114183
114184
114185
114186
114187
114188
114189







-
-







objective	objectiver	:V1__t_q_zz:E:2s/*
objectives	objectiver	:V1__t_q_zz:Ip:Sp:2s/*
pedigrees	pedigree	:N:m:p/M
téléphonez	téléphoner	:V1_itnq_zz:Ip:2p/*
téléphonez	téléphoner	:V1_itnq_zz:E:2p/*
copiera	copier	:V1_it___zz:If:3s/*
décolorations	décoloration	:N:f:p/*
ratine	ratiner	:V1__t___zz:Ip:Sp:1s:3s/*
ratine	ratiner	:V1__t___zz:E:2s/*
semeuse	semeuse	:N:f:s/*
léchées	lécher	:V1__t_q_zz:Q:A:f:p/*
protestez	protester	:V1_itn__zz:Ip:2p/*
protestez	protester	:V1_itn__zz:E:2p/*
raccordera	raccorder	:V1__t_q_zz:If:3s/*
raffermies	raffermir	:V2__t_q_zz:Q:A:f:p/*
broutille	broutille	:N:f:s/*
114906
114907
114908
114909
114910
114911
114912
114913
114914
114915
114916
114917
114918
114919
114920
114875
114876
114877
114878
114879
114880
114881

114882
114883
114884
114885
114886
114887
114888







-







licenciait	licencier	:V1__t___zz:Iq:3s/*
modélise	modéliser	:V1__t___zz:Ip:Sp:1s:3s/*
modélise	modéliser	:V1__t___zz:E:2s/*
regels	regel	:N:m:p/*
regrettablement	regrettablement	:W/*
survolté	survolter	:V1__t___zz:Q:A:1ŝ:m:s/*
antiépileptiques	antiépileptique	:N:A:e:p/*
entr'aperçu	entr'apercevoir	:V3__t_q_zz:Q:A:m:s/C
généraient	générer	:V1__t___zz:Iq:3p/*
hubs	hub	:N:m:p/*
dépèce	dépecer	:V1__t___zz:Ip:Sp:1s:3s/*
dépèce	dépecer	:V1__t___zz:E:2s/*
exécuterons	exécuter	:V1_it_q__a:If:1p/*
histiocytaires	histiocytaire	:A:e:p/*
élyséens	élyséenne	:A:m:p/*
116471
116472
116473
116474
116475
116476
116477
116478
116479


116480
116481
116482
116483
116484
116485
116486
116439
116440
116441
116442
116443
116444
116445


116446
116447
116448
116449
116450
116451
116452
116453
116454







-
-
+
+







trapéziste	trapéziste	:N:e:s/*
amollissant	amollir	:V2__t_q_zz:P/*
coordonnerait	coordonner	:V1_it_q__a:K:3s/*
déconstruite	déconstruire	:V3__t_q_zz:Q:A:f:s/*
vouions	vouer	:V1__t_q_zz:Iq:Sp:1p/*
déterminerez	déterminer	:V1__t_q_zz:If:2p/*
oreillon	oreillon	:N:m:s/*
phytotoxicité	phytotoxicité	:N:f:s/*
phytotoxicité	phytotoxicité	:N:f:s/X
phytotoxicité	phytotoxicité	:N:f:s/X
phytotoxicité	phytotoxicité	:N:f:s/*
piquai	piquer	:V1_it_q_zz:Is:1s/*
visât	viser	:V1_itn__zz:Sq:3s/*
archées	archée	:N:e:p/*
croulerait	crouler	:V1_i____zz:K:3s/*
divalents	divalente	:A:m:p/*
foulez	fouler	:V1__t_q_zz:Ip:2p/*
foulez	fouler	:V1__t_q_zz:E:2p/*
116608
116609
116610
116611
116612
116613
116614
116615
116616
116617
116618
116619
116620
116621
116622
116576
116577
116578
116579
116580
116581
116582

116583
116584
116585
116586
116587
116588
116589







-







arythmiques	arythmique	:A:e:p/*
broutée	brouter	:V1_it___zz:Q:A:f:s/*
cataphorèse	cataphorèse	:N:f:s/*
cotisées	cotiser	:V1_i__q_zz:Q:A:f:p/*
cotuteur	cotutrice	:N:m:s/*
décernerait	décerner	:V1__t___zz:K:3s/*
iroko	iroko	:N:m:s/*
main-d'œuvre	main-d'œuvre	:N:f:s/*
maïeurs	maïeure	:N:m:p/*
mygale	mygale	:N:f:s/*
taquiné	taquiner	:V1__t_q_zz:Q:A:1ŝ:m:s/*
haptène	haptène	:N:m:s/*
linéiques	linéique	:A:e:p/*
reversai	reverser	:V1__t___zz:Is:1s/*
vulgarisatrice	vulgarisatrice	:N:A:f:s/*
117072
117073
117074
117075
117076
117077
117078
117079

117080
117081
117082
117083
117084
117085
117086
117039
117040
117041
117042
117043
117044
117045

117046
117047
117048
117049
117050
117051
117052
117053







-
+







autosuffisants	autosuffisante	:A:m:p/*
couriez	courir	:V3_it____a:Iq:Sp:2p/*
sphex	sphex	:N:m:i/*
enceindre	enceindre	:V3__t____a:Y/*
parafés	parafer	:V1__t___zz:Q:A:m:p/R
portasse	porter	:V1_itnq_zz:Sq:1s/*
épididymites	épididymite	:N:f:p/*
apporterais	apporter	:V1_it____a:K:1s:2s/*
apporterais	apporter	:V1_itn___a:K:1s:2s/*
bride	brider	:V1__t___zz:Ip:Sp:1s:3s/*
bride	brider	:V1__t___zz:E:2s/*
brides	brider	:V1__t___zz:Ip:Sp:2s/*
caisserie	caisserie	:N:f:s/*
halde	halde	:N:f:s/*
haïks	haïk	:N:m:p/*
pacifiant	pacifier	:V1__t___zz:P/*
117583
117584
117585
117586
117587
117588
117589
117590
117591
117592
117593
117594
117595
117596
117597
117550
117551
117552
117553
117554
117555
117556

117557
117558
117559
117560
117561
117562
117563







-







désolidarisant	désolidariser	:V1__t_q_zz:P/*
fourvoiement	fourvoiement	:N:m:s/*
microgravité	microgravité	:N:f:s/*
papillonne	papillonner	:V1_i____zz:Ip:Sp:1s:3s/*
papillonne	papillonner	:V1_i____zz:E:2s/*
scintilla	scintiller	:V1_i____zz:Is:3s/*
sédimentée	sédimenter	:V1__t___zz:Q:A:f:s/*
Xi'an	Xi'an	:MP:e:i/*
assurantielle	assurantielle	:A:f:s/*
balanceraient	balancer	:V1_it_q_zz:K:3p/*
bricolent	bricoler	:V1_it___zz:Ip:Sp:3p/*
bruine	bruine	:N:f:s/*
bruines	bruine	:N:f:p/*
compatissent	compatir	:V2___n___a:Ip:Sp:Sq:3p/*
entortille	entortiller	:V1__t_q_zz:Ip:Sp:1s:3s/*
119624
119625
119626
119627
119628
119629
119630
119631

119632
119633
119634
119635
119636
119637
119638
119590
119591
119592
119593
119594
119595
119596

119597
119598
119599
119600
119601
119602
119603
119604







-
+







azotures	azoture	:N:m:p/*
covalent	covalente	:A:m:s/*
diffusive	diffusive	:A:f:s/*
inaccentuées	inaccentuée	:A:f:p/*
inviterais	inviter	:V1__t_q_zz:K:1s:2s/*
piloris	pilori	:N:m:p/*
pleurodynie	pleurodynie	:N:f:s/*
apporteras	apporter	:V1_it____a:If:2s/*
apporteras	apporter	:V1_itn___a:If:2s/*
avoisiné	avoisiner	:V1__t_q_zz:Q:A:1ŝ:m:s/*
baptisme	baptisme	:N:m:s/*
escamotables	escamotable	:A:e:p/*
germinaux	germinale	:A:m:p/*
parotidiennes	parotidienne	:A:f:p/*
quantifie	quantifier	:V1__t___zz:Ip:Sp:1s:3s/*
quantifie	quantifier	:V1__t___zz:E:2s/*
120564
120565
120566
120567
120568
120569
120570

120571
120572
120573
120574
120575
120576
120577
120530
120531
120532
120533
120534
120535
120536
120537
120538
120539
120540
120541
120542
120543
120544







+







destinai	destiner	:V1__tnq__a:Is:1s/*
digitiformes	digitiforme	:A:e:p/*
dogmatisé	dogmatiser	:V1_it___zz:Q:A:1ŝ:m:s/*
fracturant	fracturer	:V1__t_q_zz:P/*
inexhaustible	inexhaustible	:A:e:s/*
opterait	opter	:V1_i____zz:K:3s/*
émaillait	émailler	:V1__t___zz:Iq:3s/*
MasterCard	MasterCard	:MP:e:i/*
ajournaient	ajourner	:V1_it____a:Iq:3p/*
anticoncurrentiel	anticoncurrentielle	:A:m:s/*
colmatant	colmater	:V1__t___zz:P/*
compressives	compressive	:A:f:p/*
jersiais	jersiaise	:N:A:m:i/*
mazdéens	mazdéenne	:N:A:m:p/*
râlent	râler	:V1_i____zz:Ip:Sp:3p/*
122693
122694
122695
122696
122697
122698
122699

122700
122701
122702
122703
122704
122705
122706
122660
122661
122662
122663
122664
122665
122666
122667
122668
122669
122670
122671
122672
122673
122674







+







hypercentre	hypercentre	:N:m:s/*
quarteronne	quarteronne	:N:f:s/*
rapidités	rapidité	:N:f:p/*
sorbe	sorbe	:N:f:s/*
Rumelange	Rumelange	:MP:e:i/*
roidissant	roidir	:V2__t_q_zz:P/*
égratignent	égratigner	:V1__t_q_zz:Ip:Sp:3p/*
aviseur	aviseur	:N:m:s/*
gallo-romain	gallo-romaine	:N:A:m:s/*
galopant	galoper	:V1_it___zz:P/*
hoyaux	hoyau	:N:m:p/*
interjetèrent	interjeter	:V1__t___zz:Is:3p!/*
marathi	marathi	:N:m:s/*
morions	morion	:N:m:p/*
métacarpiennes	métacarpienne	:A:f:p/*
125930
125931
125932
125933
125934
125935
125936
125937
125938
125939
125940
125941
125942
125943
125944
125898
125899
125900
125901
125902
125903
125904

125905
125906
125907
125908
125909
125910
125911







-







cholagogues	cholagogue	:N:e:p/*
consentîmes	consentir	:V3_itn___a:Is:1p/*
envisagiez	envisager	:V1__t___zz:Iq:Sp:2p/*
inapprochable	inapprochable	:A:e:s/*
nécrophile	nécrophile	:N:A:e:s/*
observationnels	observationnelle	:A:m:p/*
pissette	pissette	:N:f:s/*
Villeneuve-d'Ascq	Villeneuve-d'Ascq	:MP:e:i/*
cisaillée	cisailler	:V1__t___zz:Q:A:f:s/*
contristée	contrister	:V1__t___zz:Q:A:f:s/*
distribuais	distribuer	:V1__t_q_zz:Iq:1s:2s/*
multiculturalité	multiculturalité	:N:f:s/*
panthéonisation	panthéonisation	:N:f:s/*
pella	peller	:V1__t___zz:Is:3s/*
tremolo	tremolo	:N:m:s/C
126652
126653
126654
126655
126656
126657
126658

126659
126660
126661
126662
126663
126664
126665
126619
126620
126621
126622
126623
126624
126625
126626
126627
126628
126629
126630
126631
126632
126633







+







implicature	implicature	:N:f:s/*
robiniers	robinier	:N:m:p/*
rouleraient	rouler	:V1_it_q_zz:K:3p/*
signassent	signer	:V1_it_q__a:Sq:3p/*
sylves	sylve	:N:f:p/*
écologue	écologue	:N:e:s/*
dégonflent	dégonfler	:V1_it_q_zz:Ip:Sp:3p/*
hypercoagulabilité	hypercoagulabilité	:N:f:s/*
plébiscitent	plébisciter	:V1__t___zz:Ip:Sp:3p/*
répondus	répondre	:V3_ixn___a:Q:A:m:p/*
antiscientifiques	antiscientifique	:A:e:p/*
cyberculture	cyberculture	:N:f:s/*
modifs	modif	:N:f:p/*
Houthulst	Houthulst	:MP:e:i/*
ambulancière	ambulancière	:N:f:s/*
128452
128453
128454
128455
128456
128457
128458
128459

128460
128461
128462
128463
128464
128465
128466
128420
128421
128422
128423
128424
128425
128426

128427
128428
128429
128430
128431
128432
128433
128434







-
+







ranimation	ranimation	:N:f:s/*
trouvas	trouver	:V1_it_q__a:Is:2s/*
amortissaient	amortir	:V2__t_q_zz:Iq:3p/*
parastatal	parastatale	:A:m:s/*
pérennisant	pérenniser	:V1__t___zz:P/*
rafraichir	rafraichir	:V3_it_q_zz:Y/R
réembauchés	réembaucher	:V1__t___zz:Q:A:m:p/*
vous-mêmes	vous-même	:G:Os:Oo:O2:e:p/*
vous-mêmes	vous-mêmes	:G:Os:Oo:O2:e:p/*
affaiblît	affaiblir	:V2__t_q__a:Sq:3s/*
incrédulités	incrédulité	:N:f:p/*
obsédées	obséder	:V1__t___zz:Q:A:f:p/*
obsédées	obsédée	:N:f:p/*
quadridimensionnel	quadridimensionnelle	:A:m:s/*
regardeurs	regardeuse	:N:m:p/*
rescindant	rescinder	:V1__t___zz:P/*
128558
128559
128560
128561
128562
128563
128564
128565
128566
128567
128568
128569
128570
128571
128572
128526
128527
128528
128529
128530
128531
128532

128533
128534
128535
128536
128537
128538
128539







-







sustentatrices	sustentatrice	:A:f:p/*
titularisée	titularisée	:N:f:s/*
alcalimétriques	alcalimétrique	:A:e:p/*
bourboniennes	bourbonienne	:N:A:f:p/*
carignan	carignan	:N:m:s/*
catéchétiques	catéchétique	:A:e:p/*
catéchétiques	catéchétique	:N:f:p/*
entr'ouvraient	entr'ouvrir	:V3__t_q_zz:Iq:3p/C
rembarque	rembarquer	:V1_it_q_zz:Ip:Sp:1s:3s/*
rembarque	rembarquer	:V1_it_q_zz:E:2s/*
terpine	terpine	:N:f:s/*
yA	A	:N:m:i;S/*
domptage	domptage	:N:m:s/*
refondateurs	refondatrice	:N:A:m:p/*
remercierait	remercier	:V1__t___zz:K:3s/*
130117
130118
130119
130120
130121
130122
130123
130124

130125
130126
130127
130128
130129
130130
130131
130084
130085
130086
130087
130088
130089
130090

130091
130092
130093
130094
130095
130096
130097
130098







-
+







dichlorure	dichlorure	:N:m:s/*
gardénia	gardénia	:N:m:s/*
glanée	glaner	:V1_it___zz:Q:A:f:s/*
lieutenante	lieutenante	:N:f:s/*
navels	navel	:N:f:p/*
oyait	ouïr	:V3__t___zz:Iq:3s/*
remarcher	remarcher	:V1_i____zz:Y/*
solidifiait	solidifier	:V1__t_q_zz:Iq:3s/*
solidifiait	solidifier	:V1_it_q__a:Iq:3s/*
abstiendrais	abstenir	:V3____p_e_:K:1s:2s/*
attrapai	attraper	:V1__t_q_zz:Is:1s/*
barns	barn	:N:m:p/*
bluté	bluter	:V1__t___zz:Q:A:1ŝ:m:s/*
dessaisira	dessaisir	:V2__t_q_zz:If:3s/*
retomberons	retomber	:V1_i____e_:If:1p/*
affolé	affoler	:V1__t_q_zz:Q:A:1ŝ:m:s/*
133169
133170
133171
133172
133173
133174
133175
133176

133177
133178
133179
133180
133181
133182
133183
133136
133137
133138
133139
133140
133141
133142

133143
133144
133145
133146
133147
133148
133149
133150







-
+







exécutâmes	exécuter	:V1_it_q__a:Is:1p/*
frémisse	frémir	:V2_i_____a:Sp:Sq:1s/*
frémisse	frémir	:V2_i_____a:Sp:3s/*
gestapistes	gestapiste	:N:A:e:p/*
guanosine	guanosine	:N:f:s/*
mendia	mendier	:V1_it___zz:Is:3s/*
évangélisaient	évangéliser	:V1_it____a:Iq:3p/*
apporterions	apporter	:V1_it____a:K:1p/*
apporterions	apporter	:V1_itn___a:K:1p/*
avancerais	avancer	:V1_itnq__a:K:1s:2s/*
dosse	dosse	:N:f:s/*
déclassant	déclasser	:V1__t___zz:P/*
fleurer	fleurer	:V1_it___zz:Y/*
niellant	nieller	:V1__t___zz:P/*
salirait	salir	:V2_it_q__a:K:3s/*
cuadrilla	cuadrilla	:N:f:s/*
134151
134152
134153
134154
134155
134156
134157
134158
134159
134160
134161
134162
134163
134164
134165
134118
134119
134120
134121
134122
134123
134124

134125
134126
134127
134128
134129
134130
134131







-







moscoutaires	moscoutaire	:N:A:e:p/*
paneuropéennes	paneuropéenne	:A:f:p/*
photodissociation	photodissociation	:N:f:s/*
rebellèrent	rebeller	:V1____p_e_:Is:3p!/*
contrebalançaient	contrebalancer	:V1__t_q_zz:Iq:3p/*
déshéritant	déshériter	:V1__t___zz:P/*
encercla	encercler	:V1__t___zz:Is:3s/*
entr'aimer	entr'aimer	:V1____r_e_:Y/M
inexperts	inexperte	:A:m:p/*
potentialisent	potentialiser	:V1__t___zz:Ip:Sp:3p/*
recentrent	recentrer	:V1__t___zz:Ip:Sp:3p/*
asilaires	asilaire	:A:e:p/*
emmerdent	emmerder	:V1__t_q_zz:Ip:Sp:3p/*
laizes	laize	:N:f:p/*
muscinale	muscinale	:A:f:s/*
134231
134232
134233
134234
134235
134236
134237
134238
134239
134240
134241
134242
134243
134244
134245
134197
134198
134199
134200
134201
134202
134203

134204
134205
134206
134207
134208
134209
134210







-







grainages	grainage	:N:m:p/*
homéomorphes	homéomorphe	:A:e:p/*
refondateur	refondatrice	:N:A:m:s/*
dansai	danser	:V1_it___zz:Is:1s/*
italophone	italophone	:N:A:e:s/*
lipophiles	lipophile	:A:e:p/*
pilonnées	pilonner	:V1__t___zz:Q:A:f:p/*
prud'homaux	prud'homale	:A:m:p/C
pétitionnent	pétitionner	:V1_i____zz:Ip:Sp:3p/*
stellage	stellage	:N:m:s/*
éclaboussaient	éclabousser	:V1__t_q_zz:Iq:3p/*
adagio	adagio	:N:m:s/*
adagios	adagio	:N:m:p/*
beurrer	beurrer	:V1__t_q_zz:Y/*
clivables	clivable	:A:e:p/*
134535
134536
134537
134538
134539
134540
134541

134542
134543
134544
134545
134546
134547
134548
134500
134501
134502
134503
134504
134505
134506
134507
134508
134509
134510
134511
134512
134513
134514







+







demi-fond	demi-fond	:N:m:i/*
décomplexée	décomplexer	:V1__t___zz:Q:A:f:s/*
gouvernementalisme	gouvernementalisme	:N:m:s/*
reprocheriez	reprocher	:V1__t_q_zz:K:2p/*
résisterais	résister	:V1_i_n___a:K:1s:2s/*
salueraient	saluer	:V1__t_q_zz:K:3p/*
allouèrent	allouer	:V1__t_q_zz:Is:3p!/*
aviseurs	aviseur	:N:m:p/*
bornâmes	borner	:V1__t_q_zz:Is:1p/*
géotextile	géotextile	:N:m:s/*
interclasses	interclasse	:N:e:p/*
lampyre	lampyre	:N:m:s/*
orillon	orillon	:N:m:s/*
phonolitiques	phonolitique	:A:e:p/*
staphylococcie	staphylococcie	:N:f:s/*
134602
134603
134604
134605
134606
134607
134608
134609
134610
134611
134612
134613
134614
134615
134616
134568
134569
134570
134571
134572
134573
134574

134575
134576
134577
134578
134579
134580
134581







-







transfusionnelles	transfusionnelle	:A:f:p/*
anatomiser	anatomiser	:V1__t___zz:Y/*
beauf	beauf	:N:m:s/*
colonisaient	coloniser	:V1__t___zz:Iq:3p/*
damascène	damascène	:N:A:e:s/*
eskimos	eskimo	:N:A:e:p/*
logerai	loger	:V1_it_q_zz:If:1s/*
m'en	m'en	:#/*
retirage	retirage	:N:m:s/*
stigmatisera	stigmatiser	:V1__t___zz:If:3s/*
surdose	surdose	:N:f:s/*
victuaille	victuaille	:N:f:s/*
cigarières	cigarière	:N:f:p/*
contrordres	contrordre	:N:m:p/*
néoconservatisme	néoconservatisme	:N:m:s/*
134646
134647
134648
134649
134650
134651
134652
134653
134654


134655
134656
134657
134658
134659
134660
134661
134611
134612
134613
134614
134615
134616
134617


134618
134619
134620
134621
134622
134623
134624
134625
134626







-
-
+
+







prédicable	prédicable	:N:m:s/*
aulnaies	aulnaie	:N:f:p/*
dépravant	dépraver	:V1__t___zz:P/*
inonderont	inonder	:V1__t_q_zz:If:3p!/*
longévités	longévité	:N:f:p/*
mangeries	mangerie	:N:f:p/*
mercures	mercure	:N:m:p/*
méthacrylate	méthacrylate	:N:m:s/*
méthacrylate	méthacrylate	:N:m:s/X
méthacrylate	méthacrylate	:N:m:s/X
méthacrylate	méthacrylate	:N:m:s/*
pyridoxal	pyridoxal	:N:m:s/*
collectas	collecter	:V1__t_q_zz:Is:2s/*
déhiscences	déhiscence	:N:f:p/*
dépenaillée	dépenaillée	:A:f:s/*
fonces	foncer	:V1_it____a:Ip:Sp:2s/*
obscurcisse	obscurcir	:V2__t_q_zz:Sp:Sq:1s/*
obscurcisse	obscurcir	:V2__t_q_zz:Sp:3s/*
135147
135148
135149
135150
135151
135152
135153
135154
135155
135156
135157
135158
135159
135160
135161
135162
135163
135164
135165
135166
135167
135168
135169
135170
135171
135172

135173
135174
135175
135176
135177
135178
135179
135112
135113
135114
135115
135116
135117
135118

135119
135120
135121
135122
135123
135124
135125
135126
135127
135128
135129
135130
135131
135132
135133
135134
135135
135136
135137
135138
135139
135140
135141
135142
135143
135144







-


















+







phytocénoses	phytocénose	:N:f:p/*
répartirons	répartir	:V2__t_q_zz:If:1p/*
surprendrez	surprendre	:V3_it_q__a:If:2p/*
voûtait	voûter	:V1__t_q_zz:Iq:3s/M
capité	capitée	:A:m:s/*
déduisez	déduire	:V3_it_q__a:Ip:2p/*
déduisez	déduire	:V3_it_q__a:E:2p/*
entr'aperçue	entr'apercevoir	:V3__t_q_zz:Q:A:f:s/C
hébraïsant	hébraïsante	:A:m:s/*
immisçaient	immiscer	:V1____p_e_:Iq:3p/*
augmenterai	augmenter	:V1_it_q__a:If:1s/*
essayerez	essayer	:V1_it_q__a:If:2p/*
habituerai	habituer	:V1__t_q_zz:If:1s/*
illuviation	illuviation	:N:f:s/*
opprimez	opprimer	:V1__t___zz:Ip:2p/*
opprimez	opprimer	:V1__t___zz:E:2p/*
précomptée	précompter	:V1__t___zz:Q:A:f:s/*
ressouvienne	ressouvenir	:V3____p_e_:Sp:1s:3s/*
tintèrent	tinter	:V1_itn__zz:Is:3p!/*
utilisiez	utiliser	:V1__t____a:Iq:Sp:2p/*
administratrices	administratrice	:N:A:f:p/*
camer	camer	:V1____p_e_:Y/*
contribuai	contribuer	:V1_i_n___a:Is:1s/*
crotter	crotter	:V1_it_q_zz:Y/*
désapprobations	désapprobation	:N:f:p/*
fervemment	fervemment	:W/*
mésoaméricaine	mésoaméricaine	:N:A:f:s/*
similor	similor	:N:m:s/*
supprimions	supprimer	:V1__t_q_zz:Iq:Sp:1p/*
surabondait	surabonder	:V1_i____zz:Iq:3s/*
sursitaire	sursitaire	:N:e:s/*
agnelet	agnelet	:N:m:s/*
alandier	alandier	:N:m:s/*
effaçons	effacer	:V1_it_q_zz:Ip:1p/*
135239
135240
135241
135242
135243
135244
135245
135246
135247
135248
135249
135250
135251
135252
135253
135254
135255
135256
135257
135204
135205
135206
135207
135208
135209
135210

135211
135212
135213

135214
135215
135216
135217
135218
135219
135220







-



-







bradycardies	bradycardie	:N:f:p/*
braquaient	braquer	:V1_it_q_zz:Iq:3p/*
charmeuses	charmeuse	:N:A:f:p/*
compétait	compéter	:V1_i____zz:Iq:3s/*
déglutie	déglutir	:V2_it___zz:Q:A:f:s/*
démocratisent	démocratiser	:V1__t_q_zz:Ip:Sp:3p/*
dépointage	dépointage	:N:m:s/*
entr'ouvrirent	entr'ouvrir	:V3__t_q_zz:Is:3p!/C
feutrine	feutrine	:N:f:s/*
harassants	harassante	:A:m:p/*
mictionnelle	mictionnelle	:A:f:s/*
Sables-d'Olonne	Sables-d'Olonne	:MP:e:i/*
détecta	détecter	:V1__t___zz:Is:3s/*
inotropes	inotrope	:A:e:p/*
mortadelle	mortadelle	:N:f:s/*
métalogique	métalogique	:A:e:s/*
métalogique	métalogique	:N:f:s/*
navigantes	navigante	:A:f:p/*
persévérations	persévération	:N:f:p/*
135996
135997
135998
135999
136000
136001
136002
136003
136004
136005
136006
136007
136008
136009
136010
135959
135960
135961
135962
135963
135964
135965

135966
135967
135968
135969
135970
135971
135972







-







nagera	nager	:V1_it___zz:If:3s/*
nivelage	nivelage	:N:m:s/*
reploie	reployer	:V1__t___zz:Ip:Sp:1s:3s/*
reploie	reployer	:V1__t___zz:E:2s/*
cascadeurs	cascadeuse	:N:A:m:p/*
chariotage	chariotage	:N:m:s/M
emboitant	emboiter	:V1__t_q_zz:P/R
entr'apercevoir	entr'apercevoir	:V3__t_q_zz:Y/C
hydromécanique	hydromécanique	:A:e:s/*
racailles	racaille	:N:f:p/*
sarclant	sarcler	:V1__t___zz:P/*
tilapias	tilapia	:N:m:p/*
descension	descension	:N:f:s/*
remorquaient	remorquer	:V1__t___zz:Iq:3p/*
traversant	traversante	:A:m:s/*
137385
137386
137387
137388
137389
137390
137391
137392
137393
137394
137395
137396
137397
137398
137399
137347
137348
137349
137350
137351
137352
137353

137354
137355
137356
137357
137358
137359
137360







-







taquina	taquiner	:V1__t_q_zz:Is:3s/*
tenantes	tenante	:N:A:f:p/*
Marie-France	Marie-France	:M1:f:i/*
croquemitaines	croquemitaine	:N:m:p/*
descellées	desceller	:V1__t_q_zz:Q:A:f:p/*
expérimentais	expérimenter	:V1_it___zz:Iq:1s:2s/*
ficaire	ficaire	:N:f:s/*
mam'zelle	mam'zelle	:N:f:s/*
pageant	pager	:V1_i__q_zz:P/*
pyrogènes	pyrogène	:A:e:p/*
pyrogènes	pyrogène	:N:m:p/*
rainées	rainer	:V1__t___zz:Q:A:f:p/*
socialisatrice	socialisatrice	:A:f:s/*
émergeraient	émerger	:V1_i_____a:K:3p/*
allergénique	allergénique	:A:e:s/*
138952
138953
138954
138955
138956
138957
138958
138959
138960


138961
138962
138963
138964
138965
138966
138967
138913
138914
138915
138916
138917
138918
138919


138920
138921
138922
138923
138924
138925
138926
138927
138928







-
-
+
+







croupions	croupion	:N:m:p/*
enroulera	enrouler	:V1__t_q_zz:If:3s/*
eschatologies	eschatologie	:N:f:p/*
fluates	fluate	:N:m:p/*
garançage	garançage	:N:m:s/*
pronostiquaient	pronostiquer	:V1__t___zz:Iq:3p/*
psalmodiées	psalmodier	:V1_it___zz:Q:A:f:p/*
biphasique	biphasique	:A:e:s/*
biphasique	biphasique	:A:e:s/X
biphasique	biphasique	:A:e:s/X
biphasique	biphasique	:A:e:s/*
criions	crier	:V1_it___zz:Iq:Sp:1p/*
humours	humour	:N:m:p/*
rayera	rayer	:V1__t_q_zz:If:3s/*
regagneraient	regagner	:V1__t___zz:K:3p/*
sédentarisent	sédentariser	:V1__t_q_zz:Ip:Sp:3p/*
vexaient	vexer	:V1__t_q_zz:Iq:3p/*
éprenne	éprendre	:V3____p_e_:Sp:1s:3s/*
139303
139304
139305
139306
139307
139308
139309
139310
139311
139312
139313
139314
139315
139316
139317
139264
139265
139266
139267
139268
139269
139270

139271
139272
139273
139274
139275
139276
139277







-







sociogrammes	sociogramme	:N:m:p/*
stylisticiens	stylisticienne	:N:m:p/*
vermillons	vermillon	:N:m:p/*
agrobusiness	agrobusiness	:N:m:i/*
bêchent	bêcher	:V1_it___zz:Ip:Sp:3p/*
cafetans	cafetan	:N:m:p/*
conservationnistes	conservationniste	:N:A:e:p/*
p'tites	p'tite	:N:A:f:p/*
panseur	panseuse	:N:m:s/*
percevrions	percevoir	:V3__t_q__a:K:1p/*
propulsait	propulser	:V1__t_q_zz:Iq:3s/*
sonoriser	sonoriser	:V1__t___zz:Y/*
emboitement	emboitement	:N:m:s/R
emmènerais	emmener	:V1__t____a:K:1s:2s/*
implorai	implorer	:V1__t___zz:Is:1s/*
141964
141965
141966
141967
141968
141969
141970

141971
141972
141973
141974
141975
141976
141977
141924
141925
141926
141927
141928
141929
141930
141931
141932
141933
141934
141935
141936
141937
141938







+







arrogeât	arroger	:V1____p_e_:Sq:3s/*
bannissons	bannir	:V2__t_q__a:Ip:1p/*
bannissons	bannir	:V2__t_q__a:E:1p/*
célestin	célestin	:N:m:s/*
démordent	démordre	:V3___n__zz:Ip:Sp:3p/*
impatroniser	impatroniser	:V1__t_q_zz:Y/*
ismaélien	ismaélienne	:N:A:m:s/*
présidentialistes	présidentialiste	:N:A:e:p/*
sabotaient	saboter	:V1_it___zz:Iq:3p/*
scratch	scratch	:A:e:i/M
scratch	scratch	:N:m:s/*
scratch	scratch	:A:e:s/R
soulèves	soulever	:V1__t_q_zz:Ip:Sp:2s/*
vérifierez	vérifier	:V1__t_q_zz:If:2p/*
apepsie	apepsie	:N:f:s/*
142051
142052
142053
142054
142055
142056
142057

142058
142059
142060
142061
142062
142063
142064
142012
142013
142014
142015
142016
142017
142018
142019
142020
142021
142022
142023
142024
142025
142026







+







sapinette	sapinette	:N:f:s/*
sayons	sayon	:N:m:p/*
tachèrent	tacher	:V1_it_q_zz:Is:3p!/*
tiquent	tiquer	:V1_i____zz:Ip:Sp:3p/*
andouillette	andouillette	:N:f:s/*
asthmatiforme	asthmatiforme	:A:e:s/*
commutant	commuter	:V1_it___zz:P/*
hyperoxie	hyperoxie	:N:f:s/*
inobservé	inobservée	:A:m:s/*
lendits	lendit	:N:m:p/*
lignifier	lignifier	:V1____p_e_:Y/*
liquidas	liquider	:V1__t___zz:Is:2s/*
missionnés	missionner	:V1_it___zz:Q:A:m:p/*
poncelets	poncelet	:N:m:p/*
résolubilité	résolubilité	:N:f:s/*
142090
142091
142092
142093
142094
142095
142096
142097
142098


142099
142100
142101
142102
142103
142104
142105
142052
142053
142054
142055
142056
142057
142058


142059
142060
142061
142062
142063
142064
142065
142066
142067







-
-
+
+







uranoplastie	uranoplastie	:N:f:s/*
acquittassent	acquitter	:V1__t_q_zz:Sq:3p/*
affriolant	affriolante	:A:m:s/*
anecdotiquement	anecdotiquement	:W/*
censuelles	censuelle	:A:f:p/*
gava	gaver	:V1__t_q_zz:Is:3s/*
méthylée	méthyler	:V1_it_q__a:Q:A:f:s/*
phytohormones	phytohormone	:N:f:p/*
phytohormones	phytohormone	:N:f:p/X
phytohormones	phytohormone	:N:f:p/X
phytohormones	phytohormone	:N:f:p/*
revivifient	revivifier	:V1__t___zz:Ip:Sp:3p/*
ultralibéraux	ultralibérale	:N:A:m:p/*
épinglent	épingler	:V1__t___zz:Ip:Sp:3p/*
Saint-Leu	Saint-Leu	:MP:e:i/*
archivai	archiver	:V1_it____a:Is:1s/*
dételées	dételer	:V1_it___zz:Q:A:f:p/*
encastrait	encastrer	:V1__t_q_zz:Iq:3s/*
142296
142297
142298
142299
142300
142301
142302

142303
142304
142305
142306
142307
142308
142309
142258
142259
142260
142261
142262
142263
142264
142265
142266
142267
142268
142269
142270
142271
142272







+







gratifiera	gratifier	:V1__t___zz:If:3s/*
noradrénergique	noradrénergique	:A:e:s/*
pissa	pisser	:V1_it___zz:Is:3s/*
prévenions	prévenir	:V3_it____a:Iq:Sp:1p/*
égouttoirs	égouttoir	:N:m:p/*
étalez	étaler	:V1_it_q_zz:Ip:2p/*
étalez	étaler	:V1_it_q_zz:E:2p/*
Jodhpur	Jodhpur	:MP:e:i/*
concilierons	concilier	:V1__t_q_zz:If:1p/*
hypersoniques	hypersonique	:A:e:p/*
joncteurs	joncteur	:N:m:p/*
loqueteau	loqueteau	:N:m:s/*
national-socialiste	national-socialiste	:N:e:s/*
parastatales	parastatale	:A:f:p/*
résidassent	résider	:V1_i____zz:Sq:3p/*
144058
144059
144060
144061
144062
144063
144064
144065

144066
144067
144068
144069
144070
144071
144072
144021
144022
144023
144024
144025
144026
144027

144028
144029
144030
144031
144032
144033
144034
144035







-
+







palanque	palanque	:N:f:s/*
planchent	plancher	:V1_i____zz:Ip:Sp:3p/*
redénomination	redénomination	:N:f:s/*
suturales	suturale	:A:f:p/*
thésaurises	thésauriser	:V1_it___zz:Ip:Sp:2s/*
tripotent	tripoter	:V1_it___zz:Ip:Sp:3p/*
vétilleuses	vétilleuse	:A:f:p/*
apportâmes	apporter	:V1_it____a:Is:1p/*
apportâmes	apporter	:V1_itn___a:Is:1p/*
extatiquement	extatiquement	:W/*
groupies	groupie	:N:e:p/*
muralisme	muralisme	:N:m:s/*
métamorphismes	métamorphisme	:N:m:p/*
Ushuaïa	Ushuaïa	:MP:e:i/*
asservissantes	asservissante	:A:f:p/*
endommages	endommager	:V1__t___zz:Ip:Sp:2s/*
145873
145874
145875
145876
145877
145878
145879

145880
145881
145882
145883
145884
145885
145886
145836
145837
145838
145839
145840
145841
145842
145843
145844
145845
145846
145847
145848
145849
145850







+







calorifugé	calorifuger	:V1__t___zz:Q:A:1ŝ:m:s/*
cendrillon	cendrillon	:N:f:s/*
crachés	cracher	:V1_it___zz:Q:A:m:p/*
déhanchant	déhancher	:V1__t_q_zz:P/*
enture	enture	:N:f:s/*
incarneraient	incarner	:V1__t_q_zz:K:3p/*
méfièrent	méfier	:V1____p_e_:Is:3p!/*
mésoaméricaines	mésoaméricaine	:N:A:f:p/*
polémiquait	polémiquer	:V1_i____zz:Iq:3s/*
rataient	rater	:V1_it_q_zz:Iq:3p/*
redécoupages	redécoupage	:N:m:p/*
repoussâmes	repousser	:V1_it_q_zz:Is:1p/*
saisissements	saisissement	:N:m:p/*
transgressera	transgresser	:V1__t___zz:If:3s/*
tritié	tritiée	:A:m:s/*
146509
146510
146511
146512
146513
146514
146515
146516

146517
146518
146519
146520
146521
146522
146523
146473
146474
146475
146476
146477
146478
146479

146480
146481
146482
146483
146484
146485
146486
146487







-
+







minons	miner	:V1__t___zz:E:1p/*
polymérise	polymériser	:V1_it___zz:Ip:Sp:1s:3s/*
polymérise	polymériser	:V1_it___zz:E:2s/*
pyrope	pyrope	:N:m:s/*
réajustent	réajuster	:V1__t_q_zz:Ip:Sp:3p/*
sensibleries	sensiblerie	:N:f:p/*
soumettrions	soumettre	:V3__tnq__a:K:1p/*
apporteriez	apporter	:V1_it____a:K:2p/*
apporteriez	apporter	:V1_itn___a:K:2p/*
déréglant	dérégler	:V1__t_q_zz:P/*
empaillage	empaillage	:N:m:s/*
examinatrice	examinatrice	:N:f:s/*
orbita	orbiter	:V1_i____zz:Is:3s/*
paralique	paralique	:A:e:s/*
phtalates	phtalate	:N:m:p/*
popup	popup	:N:m:s/*
146720
146721
146722
146723
146724
146725
146726
146727
146728
146729
146730
146731
146732
146733
146734
146684
146685
146686
146687
146688
146689
146690

146691
146692
146693
146694
146695
146696
146697







-







coatis	coati	:N:m:p/*
désaisonnalisés	désaisonnaliser	:V1__t___zz:Q:A:m:p/*
envoûteurs	envoûteuse	:N:m:p/M
outragerait	outrager	:V1__t___zz:K:3s/*
savonnés	savonner	:V1__t_q_zz:Q:A:m:p/*
soudèrent	souder	:V1__t_q_zz:Is:3p!/*
transformais	transformer	:V1__t_q_zz:Iq:1s:2s/*
R'n'B	R'n'B	:N:m:i/*
améliorai	améliorer	:V1__t_q__a:Is:1s/*
bolognais	bolognaise	:N:A:m:i/*
brocanter	brocanter	:V1_it___zz:Y/*
désexualisé	désexualiser	:V1__t___zz:Q:A:1ŝ:m:s/*
gargantuesques	gargantuesque	:A:e:p/*
machaon	machaon	:N:m:s/*
signiez	signer	:V1_it_q__a:Iq:Sp:2p/*
147155
147156
147157
147158
147159
147160
147161
147162
147163
147164
147165
147166
147167
147168
147169
147118
147119
147120
147121
147122
147123
147124

147125
147126
147127
147128
147129
147130
147131







-







symboliseraient	symboliser	:V1__t___zz:K:3p/*
trombinoscope	trombinoscope	:N:m:s/*
zinciques	zincique	:A:e:p/*
assujettissant	assujettissante	:A:m:s/*
bobineurs	bobineuse	:N:m:p/*
coupoir	coupoir	:N:m:s/*
décoreront	décorer	:V1_it___zz:If:3p!/*
entr'égorgent	entr'égorger	:V1____r_e_:Ip:Sp:3p/M
myélopathie	myélopathie	:N:f:s/*
rafiots	rafiot	:N:m:p/*
sclérales	sclérale	:A:f:p/*
slavisant	slavisante	:N:A:m:s/*
soulè	souler	:V1__t_q_zz:Ip:1ś/R
soutiraient	soutirer	:V1__t___zz:Iq:3p/*
subiras	subir	:V2_it____a:If:2s/*
147760
147761
147762
147763
147764
147765
147766

147767
147768
147769
147770
147771
147772
147773
147722
147723
147724
147725
147726
147727
147728
147729
147730
147731
147732
147733
147734
147735
147736







+







alvéolites	alvéolite	:N:f:p/*
bridaient	brider	:V1__t___zz:Iq:3p/*
dilatant	dilatante	:A:m:s/*
désengrener	désengrener	:V1__t___zz:Y/*
engloberaient	englober	:V1__t___zz:K:3p/*
fatiguais	fatiguer	:V1_it_q_zz:Iq:1s:2s/*
irriguaient	irriguer	:V1__t___zz:Iq:3p/*
mésoaméricain	mésoaméricaine	:N:A:m:s/*
paradisiers	paradisier	:N:m:p/*
présidai	présider	:V1_itn___a:Is:1s/*
pénètrera	pénétrer	:V1_it_q_zz:If:3s/R
ruolz	ruolz	:N:m:i/*
visitassent	visiter	:V1__t___zz:Sq:3p/*
attabla	attabler	:V1__t_q_zz:Is:3s/*
gémirez	gémir	:V2_it____a:If:2p/*
148216
148217
148218
148219
148220
148221
148222
148223
148224


148225
148226
148227
148228
148229
148230
148231
148179
148180
148181
148182
148183
148184
148185


148186
148187
148188
148189
148190
148191
148192
148193
148194







-
-
+
+







fiduciant	fiduciant	:N:m:s/*
housard	housard	:N:m:s/*
introjectés	introjecter	:V1__t____a:Q:A:m:p/*
occurrents	occurrente	:A:m:p/*
perceraient	percer	:V1_it___zz:K:3p/*
perfectionnons	perfectionner	:V1__t_q_zz:Ip:1p/*
perfectionnons	perfectionner	:V1__t_q_zz:E:1p/*
phytotoxique	phytotoxique	:A:e:s/*
phytotoxique	phytotoxique	:A:e:s/X
phytotoxique	phytotoxique	:A:e:s/X
phytotoxique	phytotoxique	:A:e:s/*
raccrochée	raccrocher	:V1_it_q_zz:Q:A:f:s/*
survivais	survivre	:V3_i_nq__a:Iq:1s:2s/*
égrégore	égrégore	:N:m:s/*
chérissions	chérir	:V2__t____a:Iq:Sp:Sq:1p/*
démontera	démonter	:V1__t_q_zz:If:3s/*
irisant	iriser	:V1__t_q_zz:P/*
kleiniennes	kleinienne	:A:f:p/*
149424
149425
149426
149427
149428
149429
149430
149431
149432
149433
149434
149435
149436
149437
149438
149387
149388
149389
149390
149391
149392
149393

149394
149395
149396
149397
149398
149399
149400







-







darnes	darne	:A:e:p/*
darnes	darne	:N:f:p/*
emballaient	emballer	:V1__t_q_zz:Iq:3p/*
hypercomplexes	hypercomplexe	:A:e:p/*
montas	monter	:V1_it_q_ea:Is:2s/*
nostoc	nostoc	:N:m:s/*
ozonisée	ozoniser	:V1__t____a:Q:A:f:s/*
prud'homies	prud'homie	:N:f:p/C
stupres	stupre	:N:m:p/*
addisonien	addisonienne	:N:A:m:s/*
cogitant	cogiter	:V1_it___zz:P/*
dextrochère	dextrochère	:N:m:s/*
enlèverais	enlever	:V1__t_q_zz:K:1s:2s/*
ensorcellent	ensorceler	:V1__t___zz:Ip:Sp:3p/M
intégrai	intégrer	:V1_itnq_zz:Is:1s/*
149948
149949
149950
149951
149952
149953
149954
149955

149956
149957
149958
149959
149960
149961
149962
149910
149911
149912
149913
149914
149915
149916

149917
149918
149919
149920
149921
149922
149923
149924







-
+







salpêtrée	salpêtrer	:V1__t___zz:Q:A:f:s/*
taulard	taularde	:N:m:s/*
Omeyyade	Omeyyade	:N:e:s/*
capverdiens	capverdienne	:N:A:m:p/R
deleatur	deleatur	:N:m:i/M
débarrassions	débarrasser	:V1_it_q_zz:Iq:Sp:1p/*
défluent	défluent	:N:m:s/*
entrelaçait	entrelacer	:V1__t_q_zz:Iq:3s/*
entrelaçait	entrelacer	:V1__t_q__a:Iq:3s/*
erreront	errer	:V1_i____zz:If:3p!/*
excitiez	exciter	:V1__t_q_zz:Iq:Sp:2p/*
exulcérée	exulcérer	:V1__t___zz:Q:A:f:s/*
mycorhize	mycorhize	:N:f:s/*
persillées	persiller	:V1__t___zz:Q:A:f:p/*
tutsies	tutsie	:N:A:f:p/*
épointé	épointer	:V1__t___zz:Q:A:1ŝ:m:s/*
150195
150196
150197
150198
150199
150200
150201
150202
150203


150204
150205
150206
150207
150208
150209
150210
150157
150158
150159
150160
150161
150162
150163


150164
150165
150166
150167
150168
150169
150170
150171
150172







-
-
+
+







autosuggestions	autosuggestion	:N:f:p/*
carieux	carieuse	:A:m:i/*
conscientisé	conscientiser	:V1__t___zz:Q:A:1ŝ:m:s/*
dispersions	disperser	:V1__t_q_zz:Iq:Sp:1p/*
impartissant	impartir	:V2__t___zz:P/*
impubliables	impubliable	:A:e:p/*
lolos	lolo	:N:m:p/*
ombriens	ombrienne	:N:A:m:p/*
ombriens	ombrienne	:N:A:m:p/X
ombriens	ombrienne	:N:A:m:p/X
ombriens	ombrienne	:N:A:m:p/*
retroussaient	retrousser	:V1__t_q_zz:Iq:3p/*
visionne	visionner	:V1__t___zz:Ip:Sp:1s:3s/*
visionne	visionner	:V1__t___zz:E:2s/*
Ismérie	Ismérie	:M1:f:i/*
cN	N	:N:m:i;S/*
affrétant	affréter	:V1__t___zz:P/*
caribe	caribe	:A:e:s/*
150764
150765
150766
150767
150768
150769
150770
150771

150772
150773
150774
150775
150776
150777
150778
150726
150727
150728
150729
150730
150731
150732

150733
150734
150735
150736
150737
150738
150739
150740







-
+







menaçons	menacer	:V1_it___zz:Ip:1p/*
menaçons	menacer	:V1_it___zz:E:1p/*
messianiste	messianiste	:N:A:e:s/*
péquenots	péquenotte	:N:A:m:p/M
recouchai	recoucher	:V1__t_q_zz:Is:1s/*
remblaie	remblayer	:V1__t___zz:Ip:Sp:1s:3s/*
remblaie	remblayer	:V1__t___zz:E:2s/*
solidifia	solidifier	:V1__t_q_zz:Is:3s/*
solidifia	solidifier	:V1_it_q__a:Is:3s/*
universalisent	universaliser	:V1__t_q_zz:Ip:Sp:3p/*
vélums	vélum	:N:m:p/*
ôtassent	ôter	:V1__t_q_zz:Sq:3p/*
apprêtera	apprêter	:V1__t_q_zz:If:3s/*
assécha	assécher	:V1_it_q_zz:Is:3s/*
cheminai	cheminer	:V1_i____zz:Is:1s/*
est-allemand	est-allemande	:N:A:m:s/*
152948
152949
152950
152951
152952
152953
152954
152955

152956
152957
152958
152959
152960
152961
152962
152910
152911
152912
152913
152914
152915
152916

152917
152918
152919
152920
152921
152922
152923
152924







-
+







chinchillas	chinchilla	:N:m:p/*
ergologie	ergologie	:N:f:s/*
esquissions	esquisser	:V1__t_q_zz:Iq:Sp:1p/*
higoumènes	higoumène	:N:m:p/*
iridescence	iridescence	:N:f:s/*
lucane	lucane	:N:m:s/*
minâtes	miner	:V1__t___zz:Is:2p/*
nous-même	nous-même	:G:Os:Oo:O1:e:p/*
nous-même	nous-même	:G:Os:Oo:O1:e:s/*
ténacités	ténacité	:N:f:p/*
vaccinait	vacciner	:V1_it_q__a:Iq:3s/*
argumentai	argumenter	:V1_i____zz:Is:1s/*
burinant	buriner	:V1__t___zz:P/*
cardamine	cardamine	:N:f:s/*
chenillé	chenillée	:A:m:s/*
chiromancienne	chiromancienne	:N:f:s/*
154916
154917
154918
154919
154920
154921
154922
154923
154924


154925
154926
154927
154928
154929
154930
154931
154878
154879
154880
154881
154882
154883
154884


154885
154886
154887
154888
154889
154890
154891
154892
154893







-
-
+
+







emmenthal	emmenthal	:N:m:s/C
emplissez	emplir	:V2_it_q_zz:Ip:2p/*
emplissez	emplir	:V2_it_q_zz:E:2p/*
héronnière	héronnière	:N:f:s/*
illiquide	illiquide	:A:e:s/*
miaula	miauler	:V1_i____zz:Is:3s/*
obérait	obérer	:V1__t_q_zz:Iq:3s/*
ombriennes	ombrienne	:N:A:f:p/*
ombriennes	ombrienne	:N:A:f:p/X
ombriennes	ombrienne	:N:A:f:p/X
ombriennes	ombrienne	:N:A:f:p/*
percolations	percolation	:N:f:p/*
précognition	précognition	:N:f:s/*
riemanniennes	riemannienne	:N:A:f:p/*
triose	triose	:N:m:s/*
accroitra	accroitre	:V3__tnq__a:If:3s/R
aconage	aconage	:N:m:s/*
antipaludéen	antipaludéenne	:A:m:s/*
157779
157780
157781
157782
157783
157784
157785
157786
157787
157788
157789
157790
157791
157792
157793
157741
157742
157743
157744
157745
157746
157747

157748
157749
157750
157751
157752
157753
157754







-







détachions	détacher	:V1__t_q_zz:Iq:Sp:1p/*
effluences	effluence	:N:f:p/*
empale	empaler	:V1__t_q_zz:Ip:Sp:1s:3s/*
empale	empaler	:V1__t_q_zz:E:2s/*
expliciterait	expliciter	:V1__t___zz:K:3s/*
heurtes	heurter	:V1_it_q_zz:Ip:Sp:2s/*
intériorisations	intériorisation	:N:f:p/*
mam'selle	mam'selle	:N:f:s/*
pharyngal	pharyngale	:A:m:s/*
rasez	raser	:V1__t_q_zz:Ip:2p/*
rasez	raser	:V1__t_q_zz:E:2p/*
respirant	respirante	:A:m:s/*
sarraus	sarrau	:N:m:p/*
sulfitée	sulfiter	:V1__t___zz:Q:A:f:s/*
affermissez	affermir	:V2__t_q_zz:Ip:2p/*
159878
159879
159880
159881
159882
159883
159884
159885
159886
159887
159888
159889
159890
159891
159892
159839
159840
159841
159842
159843
159844
159845

159846
159847
159848
159849
159850
159851
159852







-







traceuse	traceuse	:N:A:f:s/*
électrophile	électrophile	:A:e:s/*
électrophile	électrophile	:N:m:s/*
agenouillais	agenouiller	:V1____p_e_:Iq:1s:2s/*
contraltos	contralto	:N:e:p/*
distendit	distendre	:V3__t_q_zz:Is:3s/*
distordent	distordre	:V3__t_q_zz:Ip:Sp:3p/*
entr'aiment	entr'aimer	:V1____r_e_:Ip:Sp:3p/M
entreposant	entreposer	:V1__t___zz:P/*
in-folio	in-folio	:A:e:i/M
in-folio	in-folio	:N:m:i/M
microanalyses	microanalyse	:N:f:p/*
municipalistes	municipaliste	:N:A:e:p/*
poignent	poindre	:V3_it____a:Ip:Sp:3p/*
puiserions	puiser	:V1_it___zz:K:1p/*
160857
160858
160859
160860
160861
160862
160863

160864
160865
160866
160867
160868
160869
160870
160817
160818
160819
160820
160821
160822
160823
160824
160825
160826
160827
160828
160829
160830
160831







+







manifolds	manifold	:N:m:p/*
milouin	milouin	:N:m:s/*
miteuses	miteuse	:N:A:f:p/*
reconduisais	reconduire	:V3__t____a:Iq:1s:2s/*
rimailler	rimailler	:V1_i____zz:Y/*
surcompenser	surcompenser	:V1_it___zz:Y/*
verseuse	verseuse	:N:f:s/*
viétique	viétique	:A:e:s/*
échappiez	échapper	:V1_itnq_zz:Iq:Sp:2p/*
élisons	élire	:V3__t____a:Ip:1p/*
élisons	élire	:V3__t____a:E:1p/*
contraindrez	contraindre	:V3__t_q__a:If:2p/*
débouquements	débouquement	:N:m:p/*
dépita	dépiter	:V1__t_q_zz:Is:3s/*
enferrée	enferrer	:V1__t_q_zz:Q:A:f:s/*
162361
162362
162363
162364
162365
162366
162367
162368
162369


162370
162371
162372
162373
162374
162375
162376
162322
162323
162324
162325
162326
162327
162328


162329
162330
162331
162332
162333
162334
162335
162336
162337







-
-
+
+







emmiellée	emmieller	:V1__t___zz:Q:A:f:s/*
entêtera	entêter	:V1__t_q_zz:If:3s/*
graverai	graver	:V1_it_q_zz:If:1s/*
matelassage	matelassage	:N:m:s/*
mécatronique	mécatronique	:N:f:s/*
nettoieront	nettoyer	:V1__t___zz:If:3p!/*
par-dessous	par-dessous	:G:R:W/*
phytotoxiques	phytotoxique	:A:e:p/*
phytotoxiques	phytotoxique	:A:e:p/X
phytotoxiques	phytotoxique	:A:e:p/X
phytotoxiques	phytotoxique	:A:e:p/*
pincez	pincer	:V1_it_q_zz:Ip:2p/*
pincez	pincer	:V1_it_q_zz:E:2p/*
rebrodé	rebroder	:V1__t___zz:Q:A:1ŝ:m:s/*
récusez	récuser	:V1__t_q_zz:Ip:2p/*
récusez	récuser	:V1__t_q_zz:E:2p/*
révoltassent	révolter	:V1__t_q_zz:Sq:3p/*
univalentes	univalente	:A:f:p/*
163666
163667
163668
163669
163670
163671
163672
163673
163674
163675
163676
163677
163678
163679
163680
163627
163628
163629
163630
163631
163632
163633

163634
163635
163636
163637
163638
163639
163640







-







pulsante	pulsante	:A:f:s/*
rajeunirent	rajeunir	:V2_it_q_zz:Is:3p!/*
recroisés	recroiser	:V1__t___zz:Q:A:m:p/*
récidivité	récidivité	:N:f:s/*
résinière	résinière	:N:A:f:s/*
secrétai	secréter	:V1__t___zz:Is:1s/*
sucera	sucer	:V1_it_q_zz:If:3s/*
trompe-l'œil	trompe-l'œil	:N:m:s/*
vielleuse	vielleuse	:N:f:s/*
éclipsât	éclipser	:V1__t_q_zz:Sq:3s/*
Asnières-sur-Seine	Asnières-sur-Seine	:MP:e:i/*
Yanis	Yanis	:M1:m:i/*
abrégez	abréger	:V1__t_q_zz:Ip:2p/*
abrégez	abréger	:V1__t_q_zz:E:2p/*
allouât	allouer	:V1__t_q_zz:Sq:3s/*
164859
164860
164861
164862
164863
164864
164865
164866
164867
164868
164869
164870
164871
164872
164873
164819
164820
164821
164822
164823
164824
164825

164826
164827
164828
164829
164830
164831
164832







-







caryologie	caryologie	:N:f:s/*
darbouka	darbouka	:N:f:s/*
domptable	domptable	:A:e:s/*
décreuser	décreuser	:V1__t___zz:Y/*
définissant	définissante	:A:m:s/*
démunit	démunir	:V2__t_q_zz:Ip:Is:3s/*
désobéiront	désobéir	:V2_i_n___a:If:3p!/*
entr'aperçues	entr'apercevoir	:V3__t_q_zz:Q:A:f:p/C
entraperçue	entrapercevoir	:V3__t_q_zz:Q:A:f:s/*
flageoler	flageoler	:V1_i____zz:Y/*
jalousées	jalouser	:V1__t_q_zz:Q:A:f:p/*
lamaïste	lamaïste	:N:A:e:s/*
néoromantique	néoromantique	:N:A:e:s/*
oxysulfures	oxysulfure	:N:m:p/*
polluaient	polluer	:V1_it___zz:Iq:3p/*
166875
166876
166877
166878
166879
166880
166881
166882

166883
166884
166885
166886
166887
166888
166889
166834
166835
166836
166837
166838
166839
166840

166841
166842
166843
166844
166845
166846
166847
166848







-
+







prépalatale	prépalatale	:A:f:s/*
pultacés	pultacée	:A:m:p/*
rajeuniront	rajeunir	:V2_it_q_zz:If:3p!/*
rectites	rectite	:N:f:p/*
renforçantes	renforçante	:A:f:p/*
roquille	roquille	:N:f:s/*
socialisateurs	socialisatrice	:A:m:p/*
solidifiera	solidifier	:V1__t_q_zz:If:3s/*
solidifiera	solidifier	:V1_it_q__a:If:3s/*
spéculatrices	spéculatrice	:N:f:p/*
violas	violer	:V1__t___zz:Is:2s/*
vireton	vireton	:N:m:s/*
webers	weber	:N:m:p/M
œnophile	œnophile	:N:A:e:s/*
ζ	ζ	:N:m:i/*
amadoue	amadouer	:V1__t___zz:Ip:Sp:1s:3s/*
168777
168778
168779
168780
168781
168782
168783
168784

168785
168786
168787
168788
168789
168790
168791
168736
168737
168738
168739
168740
168741
168742

168743
168744
168745
168746
168747
168748
168749
168750







-
+







recrachait	recracher	:V1_it___zz:Iq:3s/*
rentoilé	rentoiler	:V1__t___zz:Q:A:1ŝ:m:s/*
retrempèrent	retremper	:V1__t_q_zz:Is:3p!/*
tavillons	tavillon	:N:m:p/*
truquent	truquer	:V1_it___zz:Ip:Sp:3p/*
vaticinent	vaticiner	:V1_i____zz:Ip:Sp:3p/*
Neuilly-sur-Marne	Neuilly-sur-Marne	:MP:e:i/*
apportasse	apporter	:V1_it____a:Sq:1s/*
apportasse	apporter	:V1_itn___a:Sq:1s/*
braverais	braver	:V1__t___zz:K:1s:2s/*
craqueur	craqueuse	:N:m:s/*
cérébrospinaux	cérébrospinale	:A:m:p/R
dissociabilité	dissociabilité	:N:f:s/*
déchirerez	déchirer	:V1__t_q_zz:If:2p/*
défigurera	défigurer	:V1__t_q_zz:If:3s/*
déshuilés	déshuiler	:V1__t___zz:Q:A:m:p/*
168808
168809
168810
168811
168812
168813
168814
168815

168816
168817
168818
168819
168820
168821
168822
168767
168768
168769
168770
168771
168772
168773

168774
168775
168776
168777
168778
168779
168780
168781







-
+







Blanc-Mesnil	Blanc-Mesnil	:N:m:i/*
abasourdies	abasourdir	:V2__t___zz:Q:A:f:p/*
avalisa	avaliser	:V1__t___zz:Is:3s/*
cataphores	cataphore	:N:f:p/*
comptabilisera	comptabiliser	:V1__t___zz:If:3s/*
creuserai	creuser	:V1_it_q_zz:If:1s/*
enrôleur	enrôleur	:N:m:s/*
entrelacèrent	entrelacer	:V1__t_q_zz:Is:3p!/*
entrelacèrent	entrelacer	:V1__t_q__a:Is:3p!/*
grugée	gruger	:V1__t___zz:Q:A:f:s/*
nomothétiques	nomothétique	:A:e:p/*
nomothétiques	nomothétique	:N:f:p/*
oncologues	oncologue	:N:e:p/*
prélevez	prélever	:V1__t___zz:Ip:2p/*
prélevez	prélever	:V1__t___zz:E:2p/*
radiculalgies	radiculalgie	:N:f:p/*
169448
169449
169450
169451
169452
169453
169454

169455
169456
169457
169458
169459
169460
169461
169407
169408
169409
169410
169411
169412
169413
169414
169415
169416
169417
169418
169419
169420
169421







+







débridai	débrider	:V1_it___zz:Is:1s/*
désacralisent	désacraliser	:V1__t___zz:Ip:Sp:3p/*
fondiez	fonder	:V1_it_q_zz:Iq:Sp:2p/*
horeca	horeca	:N:m:s/*
kaputt	kaputt	:A:e:i/*
kriegspiel	kriegspiel	:N:m:s/*
luronnes	luronne	:N:f:p/*
méandreux	méandreuse	:A:m:i/*
noves	nover	:V1_it___zz:Ip:Sp:2s/*
palindromique	palindromique	:A:e:s/*
piaffant	piaffante	:A:m:s/*
recompta	recompter	:V1__t___zz:Is:3s/*
rémunérerait	rémunérer	:V1__t___zz:K:3s/M
stoppaient	stopper	:V1_it___zz:Iq:3p/*
temporisés	temporiser	:V1_it___zz:Q:A:m:p/*
169675
169676
169677
169678
169679
169680
169681

169682
169683
169684
169685
169686
169687
169688
169635
169636
169637
169638
169639
169640
169641
169642
169643
169644
169645
169646
169647
169648
169649







+







divulguât	divulguer	:V1__t_q_zz:Sq:3s/*
droguant	droguer	:V1_it_q_zz:P/*
défléchi	défléchir	:V2_it___zz:Q:A:m:s/*
galetage	galetage	:N:m:s/*
lutécium	lutécium	:N:m:s/*
margouillis	margouillis	:N:m:i/*
matriarches	matriarche	:N:f:p/*
mésoaméricains	mésoaméricaine	:N:A:m:p/*
nappés	napper	:V1__t___zz:Q:A:m:p/*
obéirions	obéir	:V2_i_n___a:K:1p/*
pennys	penny	:N:m:p/*
potabilisation	potabilisation	:N:f:s/*
proclamerais	proclamer	:V1__t_q_zz:K:1s:2s/*
purgeai	purger	:V1__t_q_zz:Is:1s/*
quadragésimal	quadragésimale	:A:m:s/*
170747
170748
170749
170750
170751
170752
170753
170754
170755
170756
170757
170758
170759
170760
170761
170708
170709
170710
170711
170712
170713
170714

170715
170716
170717
170718
170719
170720
170721







-







contaminables	contaminable	:A:e:p/*
corsant	corser	:V1__t_q_zz:P/*
distractifs	distractive	:A:m:p/*
décrocherait	décrocher	:V1_it_q_zz:K:3s/*
endurcissez	endurcir	:V2__t_q__a:Ip:2p/*
endurcissez	endurcir	:V2__t_q__a:E:2p/*
engrenaient	engrener	:V1__t_q_zz:Iq:3p/*
entr'égorgeaient	entr'égorger	:V1____r_e_:Iq:3p/M
escarmoucha	escarmoucher	:V1_i____zz:Is:3s/*
estrapades	estrapade	:N:f:p/*
hétérocerques	hétérocerque	:A:e:p/*
inclinomètres	inclinomètre	:N:m:p/*
percluses	percluse	:A:f:p/*
philosophal	philosophale	:A:m:s/*
pitbull	pitbull	:N:m:s/*
173069
173070
173071
173072
173073
173074
173075
173076

173077
173078
173079
173080
173081
173082
173083
173029
173030
173031
173032
173033
173034
173035

173036
173037
173038
173039
173040
173041
173042
173043







-
+







rhizopode	rhizopode	:N:m:s/*
roidissaient	roidir	:V2__t_q_zz:Iq:3p/*
réaccoutumer	réaccoutumer	:V1__t_q_zz:Y/*
résonnât	résonner	:V1_i____zz:Sq:3s/*
salive	saliver	:V1_i____zz:Ip:Sp:1s:3s/*
salive	saliver	:V1_i____zz:E:2s/*
salives	saliver	:V1_i____zz:Ip:Sp:2s/*
solidifiaient	solidifier	:V1__t_q_zz:Iq:3p/*
solidifiaient	solidifier	:V1_it_q__a:Iq:3p/*
suractivé	suractivée	:A:m:s/*
tintinnabula	tintinnabuler	:V1_i____zz:Is:3s/*
trustes	truster	:V1__t___zz:Ip:Sp:2s/*
tuméfiaient	tuméfier	:V1__t_q_zz:Iq:3p/*
épiphylle	épiphylle	:A:e:s/*
adextré	adextrée	:A:m:s/*
ajustons	ajuster	:V1__t_q_zz:Ip:1p/*
173171
173172
173173
173174
173175
173176
173177

173178
173179
173180
173181
173182
173183
173184
173131
173132
173133
173134
173135
173136
173137
173138
173139
173140
173141
173142
173143
173144
173145







+







phytopathogène	phytopathogène	:A:e:s/*
recolonisé	recoloniser	:V1__t___zz:Q:A:1ŝ:m:s/*
rediviser	rediviser	:V1__t_q__a:Y/*
remercieraient	remercier	:V1__t___zz:K:3p/*
sédentarisant	sédentariser	:V1__t_q_zz:P/*
taboulé	taboulé	:N:m:s/*
transverbération	transverbération	:N:f:s/*
triturage	triturage	:N:m:s/*
trémulante	trémulante	:N:A:f:s/*
typas	typer	:V1__t___zz:Is:2s/*
épiscopaliennes	épiscopalienne	:N:A:f:p/*
avilissez	avilir	:V2__t_q__a:Ip:2p/*
avilissez	avilir	:V2__t_q__a:E:2p/*
baragouins	baragouin	:N:m:p/*
cavalcadant	cavalcader	:V1_i____zz:P/*
173940
173941
173942
173943
173944
173945
173946
173947

173948
173949
173950
173951
173952
173953
173954
173901
173902
173903
173904
173905
173906
173907

173908
173909
173910
173911
173912
173913
173914
173915







-
+







résignataires	résignataire	:N:e:p/*
sarclaient	sarcler	:V1__t___zz:Iq:3p/*
soudainetés	soudaineté	:N:f:p/*
teintera	teinter	:V1__t_q_zz:If:3s/*
tuners	tuner	:N:m:p/*
daS	S	:N:m:i;S/*
accora	accorer	:V1__t___zz:Is:3s/*
apportas	apporter	:V1_it____a:Is:2s/*
apportas	apporter	:V1_itn___a:Is:2s/*
arréragés	arrérager	:V1_i__q_zz:Q:A:m:p/*
avalasses	avaler	:V1__t___zz:Sq:2s/*
capsuler	capsuler	:V1__t___zz:Y/*
chiropractie	chiropractie	:N:f:s/*
cholédoques	cholédoque	:A:e:p/*
colletait	colleter	:V1__t_q_zz:Iq:3s/*
confinât	confiner	:V1___nq_zz:Sq:3s/*
174926
174927
174928
174929
174930
174931
174932
174933
174934
174935
174936
174937
174938
174939
174940
174887
174888
174889
174890
174891
174892
174893

174894
174895
174896
174897
174898
174899
174900







-







navigues	naviguer	:V1_i____zz:Ip:Sp:2s/*
nébulisations	nébulisation	:N:f:p/*
remplissements	remplissement	:N:m:p/*
vinas	viner	:V1__t___zz:Is:2s/*
élutriation	élutriation	:N:f:s/*
Hanoukka	Hanoukka	:N:f:s/C
Machhad	Machhad	:MP:e:i/*
Val-d'Or	Val-d'Or	:MP:e:i/*
Yousuf	Yousuf	:M1:m:i/*
alkékenge	alkékenge	:N:m:s/*
biguanide	biguanide	:N:m:s/*
bufflonnes	bufflonne	:N:f:p/*
devançais	devancer	:V1__t___zz:Iq:1s:2s/*
différenciât	différencier	:V1__t_q_zz:Sq:3s/*
décalcifiant	décalcifiante	:A:m:s/*
177611
177612
177613
177614
177615
177616
177617
177618
177619
177620
177621
177622
177623
177624
177625
177571
177572
177573
177574
177575
177576
177577

177578
177579
177580
177581
177582
177583
177584







-







calons	caler	:V1_it_q_zz:E:1p/*
catcheuse	catcheuse	:N:f:s/*
chicanés	chicaner	:V1_itnq_zz:Q:A:m:p/*
conjureront	conjurer	:V1__t_q_zz:If:3p!/*
cérémonialisme	cérémonialisme	:N:m:s/*
demi-lune	demi-lune	:N:f:s/*
décidus	décidue	:A:m:p/*
entr'aperçoit	entr'apercevoir	:V3__t_q_zz:Ip:3s/C
hélicase	hélicase	:N:f:s/*
idéologisées	idéologiser	:V1__t___zz:Q:A:f:p/*
intimât	intimer	:V1__t___zz:Sq:3s/*
isolatrices	isolatrice	:N:A:f:p/*
jaboter	jaboter	:V1_it___zz:Y/*
mollissaient	mollir	:V2_it___zz:Iq:3p/*
ombrines	ombrine	:N:f:p/*
179463
179464
179465
179466
179467
179468
179469
179470
179471
179472
179473
179474
179475
179476
179477
179422
179423
179424
179425
179426
179427
179428

179429
179430
179431
179432
179433
179434
179435







-







trifoliolée	trifoliolée	:A:f:s/*
turbopompes	turbopompe	:N:f:p/*
vitruviennes	vitruvienne	:A:f:p/*
zèbre	zébrer	:V1__t___zz:Ip:Sp:1s:3s/*
zèbre	zébrer	:V1__t___zz:E:2s/*
zèbres	zébrer	:V1__t___zz:Ip:Sp:2s/*
échinide	échinide	:N:m:s/*
Saint-Ouen-l'Aumône	Saint-Ouen-l'Aumône	:MP:e:i/*
agrobiologistes	agrobiologiste	:N:e:p/*
amassais	amasser	:V1_it_q_zz:Iq:1s:2s/*
amodia	amodier	:V1__t___zz:Is:3s/*
antidétonante	antidétonante	:A:f:s/*
assertés	asserter	:V1__t____a:Q:A:m:p/*
autographie	autographier	:V1__t___zz:Ip:Sp:1s:3s/*
autographie	autographier	:V1__t___zz:E:2s/*
180869
180870
180871
180872
180873
180874
180875
180876
180877
180878
180879
180880
180881
180882
180883
180827
180828
180829
180830
180831
180832
180833

180834
180835
180836
180837
180838
180839
180840







-







ratiocinent	ratiociner	:V1_i____zz:Ip:Sp:3p/*
rogneuse	rogneuse	:N:f:s/*
téléspectatrice	téléspectatrice	:N:f:s/*
ébranles	ébranler	:V1__t_q_zz:Ip:Sp:2s/*
épiphénoméniste	épiphénoméniste	:N:e:s/*
évaluions	évaluer	:V1__t_q_zz:Iq:Sp:1p/*
hH	H	:N:m:i;S/*
Ville-d'Avray	Ville-d'Avray	:MP:e:i/*
algonkin	algonkine	:N:A:m:s/C
attouche	attoucher	:V1__tnq_zz:Ip:Sp:1s:3s/*
attouche	attoucher	:V1__tnq_zz:E:2s/*
chermès	chermès	:N:m:i/*
clavicordes	clavicorde	:N:m:p/*
concluiez	conclure	:V3_itn___a:Iq:Sp:2p/*
cymbalier	cymbalière	:N:m:s/*
182641
182642
182643
182644
182645
182646
182647
182648

182649
182650
182651
182652
182653
182654
182655
182656
182657
182658
182659
182660
182661
182662
182663
182664
182665
182666
182667

182668
182669
182670
182671
182672
182673
182674
182598
182599
182600
182601
182602
182603
182604

182605
182606
182607
182608
182609
182610
182611
182612
182613
182614
182615
182616
182617
182618
182619
182620
182621
182622
182623

182624
182625
182626
182627
182628
182629
182630
182631







-
+


















-
+







daredare	daredare	:Ŵ/R
dentirostres	dentirostre	:N:m:p/*
destructurations	destructuration	:N:f:p/*
découplent	découpler	:V1__t___zz:Ip:Sp:3p/*
dégageâmes	dégager	:V1_it_q_zz:Is:1p/*
désenchantant	désenchanter	:V1__t___zz:P/*
enroulai	enrouler	:V1__t_q_zz:Is:1s/*
entrelaça	entrelacer	:V1__t_q_zz:Is:3s/*
entrelaça	entrelacer	:V1__t_q__a:Is:3s/*
excepterais	excepter	:V1__t___zz:K:1s:2s/*
fixatif	fixative	:A:m:s/*
flanchet	flanchet	:N:m:s/*
fondrez	fondre	:V3_it_q__a:If:2p/*
isogame	isogame	:A:e:s/*
moirent	moirer	:V1__t___zz:Ip:Sp:3p/*
ornemente	ornementer	:V1__t___zz:Ip:Sp:1s:3s/*
ornemente	ornementer	:V1__t___zz:E:2s/*
palmeras	palmer	:V1__t___zz:If:2s/*
papivore	papivore	:N:A:e:s/*
piquetant	piqueter	:V1__t___zz:P/*
provoquerions	provoquer	:V1__t_q_zz:K:1p/*
présidialité	présidialité	:N:f:s/*
quinquas	quinqua	:N:e:p/*
rabattages	rabattage	:N:m:p/*
réchauffons	réchauffer	:V1__t_q_zz:Ip:1p/*
réchauffons	réchauffer	:V1__t_q_zz:E:1p/*
sacrifiable	sacrifiable	:A:e:s/*
solidifierait	solidifier	:V1__t_q_zz:K:3s/*
solidifierait	solidifier	:V1_it_q__a:K:3s/*
sulfonitriques	sulfonitrique	:A:e:p/X
trombine	trombine	:N:f:s/*
violerais	violer	:V1__t___zz:K:1s:2s/*
accusas	accuser	:V1_it_q__a:Is:2s/*
brachiation	brachiation	:N:f:s/*
carambola	caramboler	:V1_it_q_zz:Is:3s/*
charruage	charruage	:N:m:s/*
183036
183037
183038
183039
183040
183041
183042

183043
183044
183045
183046
183047
183048
183049
182993
182994
182995
182996
182997
182998
182999
183000
183001
183002
183003
183004
183005
183006
183007







+







enserrerait	enserrer	:V1__t___zz:K:3s/*
fouaillée	fouailler	:V1__t___zz:Q:A:f:s/*
fumigées	fumiger	:V1__t___zz:Q:A:f:p/*
habituions	habituer	:V1__t_q_zz:Iq:Sp:1p/*
intellectualités	intellectualité	:N:f:p/*
lutz	lutz	:N:m:i/*
mohairs	mohair	:N:m:p/*
recensables	recensable	:A:e:p/*
redonnes	redonner	:V1_it_q_zz:Ip:Sp:2s/*
réinvestissaient	réinvestir	:V2_it____a:Iq:3p/*
réveilleurs	réveilleuse	:N:m:p/*
taylorisés	tayloriser	:V1__t___zz:Q:A:m:p/*
théodosiens	théodosienne	:A:m:p/*
translatai	translater	:V1__t___zz:Is:1s/*
téléconsultation	téléconsultation	:N:f:s/*
183105
183106
183107
183108
183109
183110
183111
183112
183113
183114
183115
183116
183117
183118
183119
183063
183064
183065
183066
183067
183068
183069

183070
183071
183072
183073
183074
183075
183076







-







radicants	radicante	:A:m:p/*
rageaient	rager	:V1_i____zz:Iq:3p/*
soupirantes	soupirante	:N:A:f:p/*
start-up	start-up	:N:f:s/C
toarcienne	toarcienne	:A:f:s/*
tubulines	tubuline	:N:f:p/*
antiméridien	antiméridien	:N:m:s/*
baha'ie	baha'ie	:N:A:f:s/C
botuliques	botulique	:A:e:p/*
burne	burne	:N:f:s/*
cocaïer	cocaïer	:N:m:s/*
colmata	colmater	:V1__t___zz:Is:3s/*
cordonnés	cordonner	:V1__t___zz:Q:A:m:p/*
curera	curer	:V1__t_q_zz:If:3s/*
dinèrent	diner	:V1_i____zz:Is:3p!/R
184110
184111
184112
184113
184114
184115
184116

184117
184118
184119
184120
184121
184122
184123
184067
184068
184069
184070
184071
184072
184073
184074
184075
184076
184077
184078
184079
184080
184081







+







effilocha	effilocher	:V1__t_q_zz:Is:3s/*
espaceront	espacer	:V1__t_q_zz:If:3p!/*
expurgations	expurgation	:N:f:p/*
façadisme	façadisme	:N:m:s/*
grises	griser	:V1__t_q_zz:Ip:Sp:2s/*
homéopathiquement	homéopathiquement	:W/*
hongrer	hongrer	:V1__t___zz:Y/*
incriminante	incriminante	:A:f:s/*
infusèrent	infuser	:V1_it___zz:Is:3p!/*
invocatoires	invocatoire	:A:e:p/*
ivoirines	ivoirine	:A:f:p/*
joutons	jouter	:V1_i____zz:Ip:1p/*
joutons	jouter	:V1_i____zz:E:1p/*
moquerons	moquer	:V1__t_q_zz:If:1p/*
mortifiera	mortifier	:V1__t_q_zz:If:3s/*
185818
185819
185820
185821
185822
185823
185824
185825
185826
185827
185828
185829
185830
185831
185832
185833
185776
185777
185778
185779
185780
185781
185782


185783
185784
185785
185786
185787
185788
185789







-
-







aseptisant	aseptiser	:V1__t___zz:P/*
azines	azine	:N:f:p/*
bouffir	bouffir	:V2_it___zz:Y/*
cliquables	cliquable	:A:e:p/*
conquérais	conquérir	:V3_it_q__a:Iq:1s:2s/*
débiné	débiner	:V1__t_q_zz:Q:A:1ŝ:m:s/*
déshabilles	déshabiller	:V1__t_q_zz:Ip:Sp:2s/*
entr'aperçus	entr'apercevoir	:V3__t_q_zz:Q:A:m:p/C
entr'aperçus	entr'apercevoir	:V3__t_q_zz:Is:1s:2s/C
hépatocellulaires	hépatocellulaire	:A:e:p/*
littorine	littorine	:N:f:s/*
lompe	lompe	:N:m:s/*
microzoaire	microzoaire	:N:m:s/*
neuroanatomique	neuroanatomique	:A:e:s/*
obvions	obvier	:V1___n__zz:Ip:1p/*
obvions	obvier	:V1___n__zz:E:1p/*
186205
186206
186207
186208
186209
186210
186211
186212
186213
186214
186215
186216
186217
186218
186219
186161
186162
186163
186164
186165
186166
186167

186168
186169
186170
186171
186172
186173
186174







-







tarissements	tarissement	:N:m:p/*
thoracentèses	thoracentèse	:N:f:p/*
vidamie	vidamie	:N:f:s/*
affrétaient	affréter	:V1__t___zz:Iq:3p/*
agnate	agnate	:N:f:s/*
apurera	apurer	:V1__t___zz:If:3s/*
archiconfréries	archiconfrérie	:N:f:p/*
baha'is	baha'ie	:N:A:m:p/C
bichonnée	bichonner	:V1__t_q_zz:Q:A:f:s/*
brouillai	brouiller	:V1__t_q_zz:Is:1s/*
brulis	brulis	:N:m:i/R
bûchage	bûchage	:N:m:s/*
capteraient	capter	:V1__t___zz:K:3p/*
cautérisant	cautérisante	:A:m:s/*
conclussent	conclure	:V3_itn___a:Sq:3p/*
186525
186526
186527
186528
186529
186530
186531
186532
186533
186534
186535
186536
186537
186538
186539
186480
186481
186482
186483
186484
186485
186486

186487
186488
186489
186490
186491
186492
186493







-







aérera	aérer	:V1__t_q_zz:If:3s/M
baladés	balader	:V1__t_q_zz:Q:A:m:p/*
battriez	battre	:V3_itnq__a:K:2p/*
bâche	bâcher	:V1__t___zz:Ip:Sp:1s:3s/*
bâche	bâcher	:V1__t___zz:E:2s/*
bâches	bâcher	:V1__t___zz:Ip:Sp:2s/*
croisassent	croiser	:V1_it_q_zz:Sq:3p/*
entr'égorgèrent	entr'égorger	:V1____r_e_:Is:3p!/M
eucologes	eucologe	:N:m:p/*
extrafine	extrafine	:A:f:s/*
extroverti	extrovertie	:N:A:m:s/*
fragilisaient	fragiliser	:V1__t___zz:Iq:3p/*
grenatite	grenatite	:N:f:s/*
herviens	hervienne	:N:A:m:p/*
imagineras	imaginer	:V1__t_q_zz:If:2s/*
187790
187791
187792
187793
187794
187795
187796
187797
187798
187799
187800
187801
187802
187803
187804
187744
187745
187746
187747
187748
187749
187750

187751
187752
187753
187754
187755
187756
187757







-







romanichelle	romanichelle	:N:f:s/*
rétribues	rétribuer	:V1__t___zz:Ip:Sp:2s/*
squattée	squatter	:V1__t___zz:Q:A:f:s/*
tachetures	tacheture	:N:f:p/*
verglacés	verglacée	:A:m:p/*
égosilla	égosiller	:V1____p_e_:Is:3s/*
éthéromane	éthéromane	:N:e:s/*
Condé-sur-l'Escaut	Condé-sur-l'Escaut	:MP:e:i/*
cGy	Gy	:N:m:i;S/*
ambitionnerais	ambitionner	:V1__t___zz:K:1s:2s/*
cabina	cabiner	:V1_i____zz:Is:3s/*
calotter	calotter	:V1__t___zz:Y/*
circalittorale	circalittorale	:A:f:s/*
contrecourbe	contrecourbe	:N:f:s/R
convulsant	convulser	:V1__t_q_zz:P/*
188073
188074
188075
188076
188077
188078
188079
188080
188081
188082
188083
188084
188085
188086
188087
188026
188027
188028
188029
188030
188031
188032

188033
188034
188035
188036
188037
188038
188039







-







djembés	djembé	:N:m:p/*
doserait	doser	:V1__t___zz:K:3s/*
durasse	durer	:V1_i_____a:Sq:1s/*
démordront	démordre	:V3___n__zz:If:3p!/*
expérimenterons	expérimenter	:V1_it___zz:If:1p/*
fèverole	fèverole	:N:f:s/R
gangrenaient	gangrener	:V1__t_q_zz:Iq:3p/M
hors-d'œuvre	hors-d'œuvre	:N:m:i/*
lamentai	lamenter	:V1_it_q_zz:Is:1s/*
manipulez	manipuler	:V1__t___zz:Ip:2p/*
manipulez	manipuler	:V1__t___zz:E:2p/*
néozoïque	néozoïque	:A:e:s/*
phosphorylant	phosphoryler	:V1__t___zz:P/*
phéniques	phénique	:A:e:p/*
pissais	pisser	:V1_it___zz:Iq:1s:2s/*
188991
188992
188993
188994
188995
188996
188997
188998
188999


189000
189001
189002
189003
189004
189005
189006
188943
188944
188945
188946
188947
188948
188949


188950
188951
188952
188953
188954
188955
188956
188957
188958







-
-
+
+







JSON	JSON	:N:m:i/*
abaissable	abaissable	:A:e:s/*
administrerai	administrer	:V1__t_q_zz:If:1s/*
agrémenteront	agrémenter	:V1__t___zz:If:3p!/*
améliorions	améliorer	:V1__t_q__a:Iq:Sp:1p/*
autofécondée	autoféconder	:V1____p_e_:Q:A:f:s/X
automobilisable	automobilisable	:A:e:s/*
biphasiques	biphasique	:A:e:p/*
biphasiques	biphasique	:A:e:p/X
biphasiques	biphasique	:A:e:p/X
biphasiques	biphasique	:A:e:p/*
burelles	burelle	:N:f:p/*
chimes	chimer	:V1__t___zz:Ip:Sp:2s/*
complétiez	compléter	:V1__t_q_zz:Iq:Sp:2p/*
coprins	coprin	:N:m:p/*
coprésent	coprésente	:A:m:s/*
cratoniques	cratonique	:A:e:p/*
cryptologues	cryptologue	:N:e:p/*
189619
189620
189621
189622
189623
189624
189625
189626
189627
189628
189629
189630
189631
189632
189633
189571
189572
189573
189574
189575
189576
189577

189578
189579
189580
189581
189582
189583
189584







-







suiciderais	suicider	:V1____p_e_:K:1s:2s/*
trigonocéphales	trigonocéphale	:A:e:p/*
trigonocéphales	trigonocéphale	:N:m:p/*
vanadiques	vanadique	:A:e:p/*
web-série	web-série	:N:f:s/C
électrifiant	électrifier	:V1__t___zz:P/*
émacier	émacier	:V1__t_q_zz:Y/*
Saint-Martin-d'Hères	Saint-Martin-d'Hères	:MP:e:i/*
adapterez	adapter	:V1__tnq__a:If:2p/*
alpaguer	alpaguer	:V1__t___zz:Y/*
antiplaquettaire	antiplaquettaire	:A:e:s/*
bidonnage	bidonnage	:N:m:s/*
casson	casson	:N:m:s/*
cohomologique	cohomologique	:A:e:s/*
compilera	compiler	:V1__t___zz:If:3s/*
190939
190940
190941
190942
190943
190944
190945
190946
190947
190948
190949
190950
190951
190952
190953
190890
190891
190892
190893
190894
190895
190896

190897
190898
190899
190900
190901
190902
190903







-







régalades	régalade	:N:f:p/*
sertisseuses	sertisseuse	:N:f:p/*
sommatoires	sommatoire	:A:e:p/*
suroffre	suroffre	:N:f:s/*
thixotropes	thixotrope	:A:e:p/X
vaudoues	vaudoue	:A:f:p/*
éthéromanie	éthéromanie	:N:f:s/*
Braine-l'Alleud	Braine-l'Alleud	:MP:e:i/*
acul	acul	:N:m:s/*
allélopathie	allélopathie	:N:f:s/*
bariole	barioler	:V1__t___zz:Ip:Sp:1s:3s/*
bariole	barioler	:V1__t___zz:E:2s/*
basculons	basculer	:V1_it___zz:Ip:1p/*
basculons	basculer	:V1_it___zz:E:1p/*
carillonna	carillonner	:V1_it___zz:Is:3s/*
191637
191638
191639
191640
191641
191642
191643
191644
191645
191646
191647
191648
191649
191650
191651
191587
191588
191589
191590
191591
191592
191593

191594
191595
191596
191597
191598
191599
191600







-







crédibilisent	crédibiliser	:V1__t___zz:Ip:Sp:3p/*
crépidule	crépidule	:N:f:s/*
décolonise	décoloniser	:V1__t___zz:Ip:Sp:1s:3s/*
décolonise	décoloniser	:V1__t___zz:E:2s/*
dépiqués	dépiquer	:V1__t___zz:Q:A:m:p/*
détesterez	détester	:V1_it_q__a:If:2p/*
effleurerons	effleurer	:V1__t___zz:If:1p/*
entr'ouvris	entr'ouvrir	:V3__t_q_zz:Is:1s:2s/C
extasions	extasier	:V1____p_e_:Ip:1p/*
extasions	extasier	:V1____p_e_:E:1p/*
faiblirai	faiblir	:V2_i_____a:If:1s/*
garantirions	garantir	:V2__t____a:K:1p/*
gratterait	gratter	:V1_it_q_zz:K:3s/*
hiatal	hiatale	:A:m:s/*
liarder	liarder	:V1_i____zz:Y/*
192425
192426
192427
192428
192429
192430
192431
192432
192433
192434
192435
192436
192437
192438
192439
192440
192441
192442

192443
192444
192445
192446
192447
192448
192449
192374
192375
192376
192377
192378
192379
192380

192381
192382
192383
192384
192385
192386
192387
192388
192389
192390
192391
192392
192393
192394
192395
192396
192397
192398







-










+







colombidés	colombidé	:N:m:p/*
coqueté	coqueter	:V1__t___zz:Q:A:1ŝ:m:s/*
corbs	corb	:N:m:p/*
décrètera	décréter	:V1__t___zz:If:3s/R
démembrât	démembrer	:V1__t___zz:Sq:3s/*
dévolutive	dévolutive	:A:f:s/*
embarra	embarrer	:V1_it_q_zz:Is:3s/*
entr'égorgeant	entr'égorger	:V1____r_e_:P/M
exarchats	exarchat	:N:m:p/*
extravéhiculaire	extravéhiculaire	:A:e:s/*
fruitage	fruitage	:N:m:s/*
fécondât	féconder	:V1_it_q__a:Sq:3s/*
graphène	graphène	:N:m:s/*
gratterons	gratter	:V1_it_q_zz:If:1p/*
gueuseries	gueuserie	:N:f:p/*
immunodéficitaire	immunodéficitaire	:A:e:s/*
kanji	kanji	:N:m:s/*
kanjis	kanji	:N:m:p/*
méandreuse	méandreuse	:A:f:s/*
ményanthe	ményanthe	:N:m:s/*
nuez	nuer	:V1__t___zz:Ip:2p/*
nuez	nuer	:V1__t___zz:E:2p/*
néologistes	néologiste	:N:e:p/*
objectivas	objectiver	:V1__t_q_zz:Is:2s/*
obstinerons	obstiner	:V1____p_e_:If:1p/*
orfévrées	orfévrée	:A:f:p/*
193034
193035
193036
193037
193038
193039
193040
193041
193042
193043
193044
193045
193046
193047
193048
192983
192984
192985
192986
192987
192988
192989

192990
192991
192992
192993
192994
192995
192996







-







parapsychique	parapsychique	:A:e:s/*
principautaire	principautaire	:A:e:s/*
racolées	racoler	:V1__t___zz:Q:A:f:p/*
tuage	tuage	:N:m:s/*
warranta	warranter	:V1__t___zz:Is:3s/*
zonier	zonière	:N:m:s/*
émotter	émotter	:V1__t___zz:Y/*
Saint-Cyr-l'École	Saint-Cyr-l'École	:MP:e:i/*
accaparât	accaparer	:V1__t___zz:Sq:3s/*
amassai	amasser	:V1_it_q_zz:Is:1s/*
autobloquant	autobloquante	:A:m:s/*
autocopiants	autocopiant	:A:m:p/*
barotropes	barotrope	:A:e:p/*
bituminé	bituminer	:V1__t___zz:Q:A:1ŝ:m:s/*
chevrotins	chevrotin	:N:m:p/*
193791
193792
193793
193794
193795
193796
193797

193798
193799
193800
193801
193802
193803
193804
193739
193740
193741
193742
193743
193744
193745
193746
193747
193748
193749
193750
193751
193752
193753







+







spermatophytes	spermatophyte	:N:m:p/*
squalides	squalide	:A:e:p/*
thermorégulatrice	thermorégulatrice	:N:A:f:s/*
tombâtes	tomber	:V1_it___e_:Is:2p/*
tralala	tralala	:N:m:s/*
tralalas	tralala	:N:m:p/*
vitalisés	vitaliser	:V1__t___zz:Q:A:m:p/*
viétiques	viétique	:A:e:p/*
ahurissements	ahurissement	:N:m:p/*
arrangeant	arrangeante	:A:m:s/*
boulè	bouler	:V1_it___zz:Ip:1ś/R
bronzant	bronzer	:V1_it_q_zz:P/*
bêcha	bêcher	:V1_it___zz:Is:3s/*
cataphracte	cataphracte	:N:A:e:s/*
chatoyant	chatoyer	:V1_i____zz:P/*
193933
193934
193935
193936
193937
193938
193939

193940
193941
193942
193943
193944
193945
193946
193882
193883
193884
193885
193886
193887
193888
193889
193890
193891
193892
193893
193894
193895
193896







+







décompta	décompter	:V1_it___zz:Is:3s/*
découronnait	découronner	:V1__t___zz:Iq:3s/*
désintoxications	désintoxication	:N:f:p/*
empoussiérer	empoussiérer	:V1__t_q_zz:Y/*
enquiquineuse	enquiquineuse	:N:A:f:s/*
examineriez	examiner	:V1_it_q__a:K:2p/*
fabulait	fabuler	:V1_i____zz:Iq:3s/*
incriminant	incriminante	:A:m:s/*
louchais	loucher	:V1_i____zz:Iq:1s:2s/*
mirasse	mirer	:V1__t_q_zz:Sq:1s/*
monteriez	monter	:V1_it_q_ea:K:2p/*
moulut	moudre	:V3_it____a:Is:3s/*
métamorphe	métamorphe	:N:A:e:s/*
peignier	peignier	:N:m:s/*
procuraties	procuratie	:N:f:p/*
194359
194360
194361
194362
194363
194364
194365
194366
194367
194368
194369
194370
194371
194372
194373
194309
194310
194311
194312
194313
194314
194315

194316
194317
194318
194319
194320
194321
194322







-







acétonémique	acétonémique	:A:e:s/*
assimilerai	assimiler	:V1__t_q_zz:If:1s/*
assomptive	assomptive	:A:f:s/*
autonettoyant	autonettoyante	:A:m:s/*
brulot	brulot	:N:m:s/R
bénévolences	bénévolence	:N:f:p/*
censoriaux	censoriale	:A:m:p/*
ch'timi	ch'timi	:N:A:e:s/C
chamaillèrent	chamailler	:V1____p_e_:Is:3p!/*
cirripède	cirripède	:N:m:s/*
compléterions	compléter	:V1__t_q_zz:K:1p/M
concassait	concasser	:V1__t___zz:Iq:3s/*
concélébré	concélébrer	:V1__t___zz:Q:A:1ŝ:m:s/*
constellait	consteller	:V1__t___zz:Iq:3s/*
contusionna	contusionner	:V1__t___zz:Is:3s/*
195220
195221
195222
195223
195224
195225
195226
195227
195228
195229
195230
195231
195232
195233
195234
195169
195170
195171
195172
195173
195174
195175

195176
195177
195178
195179
195180
195181
195182







-







dactylographiait	dactylographier	:V1__t___zz:Iq:3s/*
dessouchés	dessoucher	:V1__t___zz:Q:A:m:p/*
dictassent	dicter	:V1__t___zz:Sq:3p/*
démotivées	démotiver	:V1__t_q_zz:Q:A:f:p/*
dépossédez	déposséder	:V1__t___zz:Ip:2p/*
dépossédez	déposséder	:V1__t___zz:E:2p/*
enfreignirent	enfreindre	:V3__t____a:Is:3p!/*
entr'ouvrira	entr'ouvrir	:V3__t_q_zz:If:3s/C
essentialisées	essentialiser	:V1_it_q__a:Q:A:f:p/*
exhibons	exhiber	:V1__t_q_zz:Ip:1p/*
exhibons	exhiber	:V1__t_q_zz:E:1p/*
fraternisera	fraterniser	:V1_i____zz:If:3s/*
frisottante	frisottante	:A:f:s/M
galopâmes	galoper	:V1_it___zz:Is:1p/*
hivernerait	hiverner	:V1_it___zz:K:3s/*
197994
197995
197996
197997
197998
197999
198000

198001
198002
198003
198004
198005
198006
198007
197942
197943
197944
197945
197946
197947
197948
197949
197950
197951
197952
197953
197954
197955
197956







+







elliptocytose	elliptocytose	:N:f:s/*
estimeras	estimer	:V1__t_q_zz:If:2s/*
extrairez	extraire	:V3_itnq__a:If:2p/*
picofarads	farad	:N:m:p/*
floriculteur	floricultrice	:N:m:s/*
gastronomies	gastronomie	:N:f:p/*
gérions	gérer	:V1__t___zz:Iq:Sp:1p/*
incriminantes	incriminante	:A:f:p/*
lambics	lambic	:N:m:p/*
lampassées	lampassée	:A:f:p/*
minicar	minicar	:N:m:s/*
mordançant	mordancer	:V1__t___zz:P/*
muselets	muselet	:N:m:p/*
mutilatrices	mutilatrice	:N:A:f:p/*
polypropylènes	polypropylène	:N:m:p/*
198292
198293
198294
198295
198296
198297
198298
198299

198300
198301
198302
198303
198304
198305
198306
198241
198242
198243
198244
198245
198246
198247

198248
198249
198250
198251
198252
198253
198254
198255







-
+







déclassera	déclasser	:V1__t___zz:If:3s/*
découperai	découper	:V1__t_q_zz:If:1s/*
dédites	dédire	:V3__t_q_zz:Q:A:f:p/*
désengrène	désengrener	:V1__t___zz:Ip:Sp:1s:3s/*
désengrène	désengrener	:V1__t___zz:E:2s/*
détromperont	détromper	:V1__t_q_zz:If:3p!/*
enduirait	enduire	:V3_it_q_zz:K:3s/*
entrelacera	entrelacer	:V1__t_q_zz:If:3s/*
entrelacera	entrelacer	:V1__t_q__a:If:3s/*
esgourdes	esgourde	:N:f:p/*
exfiltrés	exfiltrer	:V1__t___zz:Q:A:m:p/*
flageole	flageoler	:V1_i____zz:Ip:Sp:1s:3s/*
flageole	flageoler	:V1_i____zz:E:2s/*
flanchera	flancher	:V1_it___zz:If:3s/*
flèchent	flécher	:V1__t___zz:Ip:Sp:3p/*
gendarmés	gendarmer	:V1____p_e_:Q:A:m:p/*
199187
199188
199189
199190
199191
199192
199193
199194
199195
199196
199197
199198
199199
199200
199201
199136
199137
199138
199139
199140
199141
199142

199143
199144
199145
199146
199147
199148
199149







-







valoche	valoche	:N:f:s/*
économétriciens	économétricienne	:N:m:p/*
épargnâmes	épargner	:V1_it_q_zz:Is:1p/*
DRRT	DRRT	:N:e:i/X
Yinchuan	Yinchuan	:MP:e:i/*
abrutira	abrutir	:V2_it_q__a:If:3s/*
aspermie	aspermie	:N:f:s/*
baha'i	baha'ie	:N:A:m:s/C
berimbau	berimbau	:N:m:s/*
biler	biler	:V1____p_e_:Y/*
bouiboui	bouiboui	:N:m:s/R
bâtonnent	bâtonner	:V1__t___zz:Ip:Sp:3p/*
chaloupées	chaloupée	:A:f:p/*
débaptisent	débaptiser	:V1__t___zz:Ip:Sp:3p/*
défibrés	défibrer	:V1__t___zz:Q:A:m:p/*
200767
200768
200769
200770
200771
200772
200773
200774
200775
200776
200777
200778
200779
200780
200781
200715
200716
200717
200718
200719
200720
200721

200722
200723
200724
200725
200726
200727
200728







-







rollmops	rollmops	:N:m:i/*
romanisent	romaniser	:V1_it_q_zz:Ip:Sp:3p/*
saupoudrai	saupoudrer	:V1__t___zz:Is:1s/*
solvabilités	solvabilité	:N:f:p/*
sorbetières	sorbetière	:N:f:p/*
sourîmes	sourire	:V3_i_nq__a:Is:1p/*
ségalas	ségala	:N:m:p/*
t'en	t'en	:#/*
thermorésistant	thermorésistante	:A:m:s/*
tourneries	tournerie	:N:f:p/*
épierreurs	épierreuse	:N:m:p/*
acériculture	acériculture	:N:f:s/*
afféagé	afféager	:V1__t___zz:Q:A:1ŝ:m:s/*
aménageraient	aménager	:V1__t_q_zz:K:3p/*
bailleresses	bailleresse	:N:f:p/*
202305
202306
202307
202308
202309
202310
202311

202312
202313
202314
202315
202316
202317
202318
202252
202253
202254
202255
202256
202257
202258
202259
202260
202261
202262
202263
202264
202265
202266







+







essentialisante	essentialisante	:A:f:s/*
flexographie	flexographie	:N:f:s/*
gaulées	gauler	:V1__t___zz:Q:A:f:p/*
havent	haver	:V1_it___zz:Ip:Sp:3p/*
hydropolitique	hydropolitique	:A:e:s/*
hydropolitique	hydropolitique	:N:f:s/*
iconoclasmes	iconoclasme	:N:m:p/*
incriminants	incriminante	:A:m:p/*
jouxtes	jouxter	:V1__t___zz:Ip:Sp:2s/*
kumquat	kumquat	:N:m:s/*
laminaient	laminer	:V1__t___zz:Iq:3p/*
lutteras	lutter	:V1_i_n___a:If:2s/*
lépiote	lépiote	:N:f:s/*
matriochka	matriochka	:N:f:s/*
outilles	outiller	:V1__t_q_zz:Ip:Sp:2s/*
202703
202704
202705
202706
202707
202708
202709
202710
202711
202712
202713
202714
202715
202716
202717
202651
202652
202653
202654
202655
202656
202657

202658
202659
202660
202661
202662
202663
202664







-







souillard	souillarde	:N:m:s/*
supprimeras	supprimer	:V1__t_q_zz:If:2s/*
surpassions	surpasser	:V1__t_q_zz:Iq:Sp:1p/*
thermoplongeurs	thermoplongeur	:N:m:p/*
tocades	tocade	:N:f:p/R
tripotés	tripoter	:V1_it___zz:Q:A:m:p/*
égorgerez	égorger	:V1__t_q_zz:If:2p/*
Bois-d'Arcy	Bois-d'Arcy	:MP:e:i/*
yF	F	:N:m:i;S/*
daG	G	:N:m:i;S/*
amérindianismes	amérindianisme	:N:m:p/*
apyres	apyre	:A:e:p/*
astiqua	astiquer	:V1__t___zz:Is:3s/*
blaster	blaster	:V1_it____a:Y/X
blessâmes	blesser	:V1__t_q_zz:Is:1p/*
202824
202825
202826
202827
202828
202829
202830
202831
202832


202833
202834
202835
202836
202837
202838
202839
202771
202772
202773
202774
202775
202776
202777


202778
202779
202780
202781
202782
202783
202784
202785
202786







-
-
+
+







repoussements	repoussement	:N:m:p/*
responsoriaux	responsoriale	:A:m:p/*
retrempât	retremper	:V1__t_q_zz:Sq:3s/*
rééditerons	rééditer	:V1__t___zz:If:1p/*
stagnance	stagnance	:N:f:s/*
super-embranchement	super-embranchement	:N:m:s/*
surprotégées	surprotéger	:V1__t___zz:Q:A:f:p/*
sétaire	sétaire	:N:f:s/*
sétaire	sétaire	:N:f:s/X
sétaire	sétaire	:N:f:s/X
sétaire	sétaire	:N:f:s/*
tubulopathies	tubulopathie	:N:f:p/*
uniformisera	uniformiser	:V1__t___zz:If:3s/*
vasards	vasarde	:A:m:p/*
viveuse	viveuse	:N:f:s/*
voltigeront	voltiger	:V1_i____zz:If:3p!/*
échiquéens	échiquéenne	:A:m:p/*
égaliseraient	égaliser	:V1_it___zz:K:3p/*
203465
203466
203467
203468
203469
203470
203471
203472

203473
203474
203475
203476
203477
203478
203479
203412
203413
203414
203415
203416
203417
203418

203419
203420
203421
203422
203423
203424
203425
203426







-
+







encalminée	encalminée	:A:f:s/*
encorne	encorner	:V1__t___zz:Ip:Sp:1s:3s/*
encorne	encorner	:V1__t___zz:E:2s/*
engouffrais	engouffrer	:V1__t_q_zz:Iq:1s:2s/*
enroba	enrober	:V1__t_q_zz:Is:3s/*
ensabotés	ensaboter	:V1__t___zz:Q:A:m:p/*
enseignant-chercheur	enseignant-chercheur	:N:m:s/*
entrelaces	entrelacer	:V1__t_q_zz:Ip:Sp:2s/*
entrelaces	entrelacer	:V1__t_q__a:Ip:Sp:2s/*
estérifier	estérifier	:V1__t___zz:Y/*
faisande	faisander	:V1__t_q_zz:Ip:Sp:1s:3s/*
faisande	faisander	:V1__t_q_zz:E:2s/*
fraisils	fraisil	:N:m:p/*
galoisiennes	galoisienne	:A:f:p/*
gansée	ganser	:V1__t___zz:Q:A:f:s/*
grévaient	gréver	:V1_i____zz:Iq:3p/*
203510
203511
203512
203513
203514
203515
203516
203517

203518
203519
203520
203521
203522
203523
203524
203457
203458
203459
203460
203461
203462
203463

203464
203465
203466
203467
203468
203469
203470
203471







-
+







Kusumi	Kusumi	:M2:e:i/X
abondâmes	abonder	:V1_i____zz:Is:1p/*
affriqué	affriquée	:A:m:s/*
aillais	ailler	:V1__t___zz:Iq:1s:2s/*
anéantiriez	anéantir	:V2_it_q__a:K:2p/*
apeure	apeurer	:V1__t___zz:Ip:Sp:1s:3s/*
apeure	apeurer	:V1__t___zz:E:2s/*
apportâtes	apporter	:V1_it____a:Is:2p/*
apportâtes	apporter	:V1_itn___a:Is:2p/*
batucada	batucada	:N:f:s/*
caillions	cailler	:V1_it_q_zz:Iq:Sp:1p/*
callunes	callune	:N:f:p/*
camoufleurs	camoufleur	:N:m:p/*
cancane	cancaner	:V1_i____zz:Ip:Sp:1s:3s/*
cancane	cancaner	:V1_i____zz:E:2s/*
capites	capite	:N:f:p/*
203703
203704
203705
203706
203707
203708
203709
203710
203711
203712
203713
203714
203715
203716
203717
203650
203651
203652
203653
203654
203655
203656

203657
203658
203659
203660
203661
203662
203663







-







dépècera	dépecer	:V1__t___zz:If:3s/*
déshabillons	déshabiller	:V1__t_q_zz:Ip:1p/*
déshabillons	déshabiller	:V1__t_q_zz:E:1p/*
détartrants	détartrante	:A:m:p/*
dévorerez	dévorer	:V1_it_q_zz:If:2p/*
emmagasineront	emmagasiner	:V1__t___zz:If:3p!/*
empaqueteuse	empaqueteuse	:N:f:s/*
entr'égorgés	entr'égorger	:V1____r_e_:Q:A:m:p/M
exulcérés	exulcérer	:V1__t___zz:Q:A:m:p/*
fibrocyte	fibrocyte	:N:m:s/*
frustrèrent	frustrer	:V1__t___zz:Is:3p!/*
garnît	garnir	:V2__t_q_zz:Sq:3s/*
gonalgie	gonalgie	:N:f:s/*
grenelle	greneler	:V1__t___zz:Ip:Sp:1s:3s/M
grenelle	greneler	:V1__t___zz:E:2s/M
205328
205329
205330
205331
205332
205333
205334
205335
205336
205337
205338
205339
205340
205341
205342
205274
205275
205276
205277
205278
205279
205280

205281
205282
205283
205284
205285
205286
205287







-







téléosaures	téléosaure	:N:m:p/*
urticacées	urticacée	:N:f:p/*
vacillât	vaciller	:V1_i____zz:Sq:3s/*
vélivoles	vélivole	:A:e:p/*
éclabousserait	éclabousser	:V1__t_q_zz:K:3s/*
élaguons	élaguer	:V1__t___zz:Ip:1p/*
élaguons	élaguer	:V1__t___zz:E:1p/*
Tain-l'Hermitage	Tain-l'Hermitage	:MP:e:i/X
accélérerez	accélérer	:V1_it_q_zz:If:2p/M
ajusterons	ajuster	:V1__t_q_zz:If:1p/*
altéras	altérer	:V1__t_q_zz:Is:2s/*
annexeraient	annexer	:V1__t_q_zz:K:3p/*
antienzymes	antienzyme	:N:f:p/*
arbovirose	arbovirose	:N:f:s/*
autocopiant	autocopiant	:A:m:s/*
206378
206379
206380
206381
206382
206383
206384
206385

206386
206387
206388
206389
206390
206391
206392
206323
206324
206325
206326
206327
206328
206329

206330
206331
206332
206333
206334
206335
206336
206337







-
+







rentabilisera	rentabiliser	:V1__t___zz:If:3s/*
revotait	revoter	:V1_it___zz:Iq:3s/*
revoté	revoter	:V1_it___zz:Q:A:1ŝ:m:s/*
riflards	riflard	:N:m:p/*
rosissante	rosissante	:A:f:s/*
rétrogradai	rétrograder	:V1_it___zz:Is:1s/*
saïmiris	saïmiri	:N:m:p/*
solidifièrent	solidifier	:V1__t_q_zz:Is:3p!/*
solidifièrent	solidifier	:V1_it_q__a:Is:3p!/*
suffoquera	suffoquer	:V1_it___zz:If:3s/*
surestimèrent	surestimer	:V1__t_q_zz:Is:3p!/*
tacheture	tacheture	:N:f:s/*
taraudera	tarauder	:V1__t___zz:If:3s/*
topicaliser	topicaliser	:V1__t___zz:Y/*
totipotents	totipotente	:A:m:p/*
tranchiez	trancher	:V1_it___zz:Iq:Sp:2p/*
206565
206566
206567
206568
206569
206570
206571

206572
206573
206574
206575
206576
206577
206578
206510
206511
206512
206513
206514
206515
206516
206517
206518
206519
206520
206521
206522
206523
206524







+







hypothéqueraient	hypothéquer	:V1__t_q_zz:K:3p/M
inhalothérapeutes	inhalothérapeute	:N:e:p/*
jalonnerait	jalonner	:V1_it___zz:K:3s/*
maltraitiez	maltraiter	:V1__t___zz:Iq:Sp:2p/*
pincerai	pincer	:V1_it_q_zz:If:1s/*
pléiotropes	pléiotrope	:A:e:p/*
poinçonnements	poinçonnement	:N:m:p/*
pom-pom	pom-pom	:A:e:i/*
prosociale	prosociale	:A:f:s/*
protéinées	protéinée	:A:f:p/*
pâlichonne	pâlichonne	:A:f:s/*
rhinopharyngés	rhinopharyngée	:A:m:p/*
rocamboles	rocambole	:N:f:p/*
résiliaient	résilier	:V1__t___zz:Iq:3p/*
traines	traine	:N:f:p/R
206732
206733
206734
206735
206736
206737
206738
206739
206740
206741
206742
206743
206744
206745
206746
206678
206679
206680
206681
206682
206683
206684

206685
206686
206687
206688
206689
206690
206691







-







zoologies	zoologie	:N:f:p/*
échaudant	échauder	:V1__t_q_zz:P/*
écorçait	écorcer	:V1__t___zz:Iq:3s/*
éventreront	éventrer	:V1__t_q_zz:If:3p!/*
évènementiel	évènementiel	:N:m:s/*
évènementiel	évènementielle	:A:m:s/*
Motte-Servolex	Motte-Servolex	:MP:e:i/*
Villenave-d'Ornon	Villenave-d'Ornon	:MP:e:i/*
abâtardissements	abâtardissement	:N:m:p/*
accélérographes	accélérographe	:N:m:p/*
agonisèrent	agoniser	:V1_i____zz:Is:3p!/*
anoblirent	anoblir	:V2_it_q__a:Is:3p!/*
assommeront	assommer	:V1__t_q_zz:If:3p!/*
besogneront	besogner	:V1_i____zz:If:3p!/*
bétels	bétel	:N:m:p/*
207867
207868
207869
207870
207871
207872
207873
207874
207875
207876
207877
207878
207879
207880
207881
207812
207813
207814
207815
207816
207817
207818

207819
207820
207821
207822
207823
207824
207825







-







tillés	tiller	:V1__t___zz:Q:A:m:p/*
trichions	tricher	:V1_i____zz:Iq:Sp:1p/*
triompherions	triompher	:V1_i_n__zz:K:1p/*
tréfile	tréfiler	:V1__t___zz:Ip:Sp:1s:3s/*
tréfile	tréfiler	:V1__t___zz:E:2s/*
vaquez	vaquer	:V1_i_n__zz:Ip:2p/*
vaquez	vaquer	:V1_i_n__zz:E:2p/*
Isle-d'Abeau	Isle-d'Abeau	:MP:e:i/*
hN	N	:N:m:i;S/*
anthropozoonose	anthropozoonose	:N:f:s/*
celez	celer	:V1_it_q__a:Ip:2p/*
celez	celer	:V1_it_q__a:E:2p/*
cheffesses	cheffesse	:N:f:p/*
demi-quart	demi-quart	:N:m:s/*
décédassent	décéder	:V1_i____e_:Sq:3p/*
209026
209027
209028
209029
209030
209031
209032
209033
209034


209035
209036
209037
209038
209039
209040
209041
208970
208971
208972
208973
208974
208975
208976


208977
208978
208979
208980
208981
208982
208983
208984
208985







-
-
+
+







laryngale	laryngale	:A:f:s/*
laryngales	laryngale	:A:f:p/*
maniaqueries	maniaquerie	:N:f:p/*
nagées	nager	:V1_it___zz:Q:A:f:p/*
nagées	nagée	:N:f:p/*
palataliser	palataliser	:V1__t___zz:Y/*
phalaropes	phalarope	:N:m:p/*
phytohormone	phytohormone	:N:f:s/*
phytohormone	phytohormone	:N:f:s/X
phytohormone	phytohormone	:N:f:s/X
phytohormone	phytohormone	:N:f:s/*
pollicitations	pollicitation	:N:f:p/*
pollicitations	pollicitation	:N:f:p/*
porte-manteau	porte-manteau	:N:m:s/C
pourrirez	pourrir	:V2_it_q_zz:If:2p/*
présentiels	présentielle	:N:A:m:p/*
raffermît	raffermir	:V2__t_q_zz:Sq:3s/*
refrappée	refrapper	:V1_it_q_zz:Q:A:f:s/*
209088
209089
209090
209091
209092
209093
209094
209095

209096
209097
209098
209099
209100
209101
209102
209032
209033
209034
209035
209036
209037
209038

209039
209040
209041
209042
209043
209044
209045
209046







-
+







disculpât	disculper	:V1__t_q_zz:Sq:3s/*
déposséderont	déposséder	:V1__t___zz:If:3p!/M
dépraverait	dépraver	:V1__t___zz:K:3s/*
déterrons	déterrer	:V1__t___zz:Ip:1p/*
déterrons	déterrer	:V1__t___zz:E:1p/*
dévoilassent	dévoiler	:V1__t_q_zz:Sq:3p/*
enrouillé	enrouiller	:V1_i__q_zz:Q:A:1ŝ:m:s/*
entrelaceront	entrelacer	:V1__t_q_zz:If:3p!/*
entrelaceront	entrelacer	:V1__t_q__a:If:3p!/*
enzymopathies	enzymopathie	:N:f:p/*
ferrociment	ferrociment	:N:m:s/*
glénoïdal	glénoïdale	:A:m:s/*
grandisses	grandir	:V2_it_q__a:Sp:Sq:2s/*
groisils	groisil	:N:m:p/*
gutta-percha	gutta-percha	:N:f:s/M
inversez	inverser	:V1__t_q_zz:Ip:2p/*
209248
209249
209250
209251
209252
209253
209254

209255
209256
209257
209258
209259
209260
209261
209192
209193
209194
209195
209196
209197
209198
209199
209200
209201
209202
209203
209204
209205
209206







+







oxyacétyléniques	oxyacétylénique	:A:e:p/*
paganisés	paganiser	:V1_it___zz:Q:A:m:p/*
paillardé	paillarder	:V1_i__q_zz:Q:A:1ŝ:m:s/*
panserai	panser	:V1__t_q_zz:If:1s/*
positionnèrent	positionner	:V1__t_q_zz:Is:3p!/*
prédisposeront	prédisposer	:V1_it___zz:If:3p!/*
rabouillères	rabouillère	:N:f:p/*
recensable	recensable	:A:e:s/*
remodelèrent	remodeler	:V1__t___zz:Is:3p!/*
réimpose	réimposer	:V1__t___zz:Ip:Sp:1s:3s/*
réimpose	réimposer	:V1__t___zz:E:2s/*
rénovât	rénover	:V1__t___zz:Sq:3s/*
salariât	salarier	:V1__t___zz:Sq:3s/*
scotomisent	scotomiser	:V1__t___zz:Ip:Sp:3p/*
shootait	shooter	:V1_it_q_zz:Iq:3s/*
209411
209412
209413
209414
209415
209416
209417

209418
209419
209420
209421
209422
209423
209424
209425
209426
209427
209428
209429
209430
209431
209356
209357
209358
209359
209360
209361
209362
209363
209364
209365
209366
209367
209368
209369

209370
209371
209372
209373
209374
209375
209376







+






-







réputerons	réputer	:V1__t___zz:If:1p/*
révèlerai	révéler	:V1__tnq__a:If:1s/R
réétudiant	réétudier	:V1__t___zz:P/*
simouns	simoun	:N:m:p/*
structurologie	structurologie	:N:f:s/*
subsumes	subsumer	:V1__t___zz:Ip:Sp:2s/*
surdosé	surdoser	:V1__t____a:Q:A:1ŝ:m:s/*
surprescription	surprescription	:N:f:s/*
terminasse	terminer	:V1__t_q_zz:Sq:1s/*
transandines	transandine	:A:f:p/*
xylologie	xylologie	:N:f:s/*
écorchais	écorcher	:V1__t_q_zz:Iq:1s:2s/*
éthylotest	éthylotest	:N:m:s/*
Advanta	Advanta	:MP:m:i/X
Cournon-d'Auvergne	Cournon-d'Auvergne	:MP:e:i/*
Nyarlathotep	Nyarlathotep	:M1:m:i/X
accordoir	accordoir	:N:m:s/*
aimantable	aimantable	:A:e:s/*
amnistiables	amnistiable	:A:e:p/*
aniser	aniser	:V1__t___zz:Y/*
aérotransportés	aérotransportée	:A:m:p/*
backdoor	backdoor	:N:f:s/*
210347
210348
210349
210350
210351
210352
210353
210354
210355


210356
210357
210358
210359
210360
210361
210362
210292
210293
210294
210295
210296
210297
210298


210299
210300
210301
210302
210303
210304
210305
210306
210307







-
-
+
+







laudatrice	laudatrice	:N:A:f:s/*
luminiques	luminique	:A:e:p/*
meringué	meringuer	:V1__t___zz:Q:A:1ŝ:m:s/*
micromutations	micromutation	:N:f:p/*
moisée	moiser	:V1__t___zz:Q:A:f:s/*
monopolisantes	monopolisante	:A:f:p/*
moraille	moraille	:N:f:s/*
méthacrylates	méthacrylate	:N:m:p/*
méthacrylates	méthacrylate	:N:m:p/X
méthacrylates	méthacrylate	:N:m:p/X
méthacrylates	méthacrylate	:N:m:p/*
naviguerez	naviguer	:V1_i____zz:If:2p/*
partageâtes	partager	:V1_itnq__a:Is:2p/*
physostigma	physostigma	:N:m:s/*
pouillent	pouiller	:V1__t___zz:Ip:Sp:3p/*
profanerais	profaner	:V1__t___zz:K:1s:2s/*
provisionne	provisionner	:V1__t___zz:Ip:Sp:1s:3s/*
provisionne	provisionner	:V1__t___zz:E:2s/*
210824
210825
210826
210827
210828
210829
210830
210831

210832
210833
210834
210835
210836
210837
210838
210839
210840
210841
210842
210843
210844
210845
210846
210769
210770
210771
210772
210773
210774
210775

210776
210777
210778
210779
210780
210781
210782
210783

210784
210785
210786
210787
210788
210789
210790







-
+







-







regimberait	regimber	:V1_i__q_zz:K:3s/*
renonciateurs	renonciatrice	:N:m:p/*
repartissaient	repartir	:V2__t_q_zz:Iq:3p/M
repiquaient	repiquer	:V1_it___zz:Iq:3p/*
rééditeront	rééditer	:V1__t___zz:If:3p!/*
sanguisorbe	sanguisorbe	:N:f:s/*
snobinard	snobinarde	:N:A:m:s/*
solidifieront	solidifier	:V1__t_q_zz:If:3p!/*
solidifieront	solidifier	:V1_it_q__a:If:3p!/*
spagyrie	spagyrie	:N:f:s/*
surexpose	surexposer	:V1__t___zz:Ip:Sp:1s:3s/*
surexpose	surexposer	:V1__t___zz:E:2s/*
ségrégeant	ségréger	:V1__t____a:P/*
teneur	teneuse	:N:m:s/*
teneurs	teneuse	:N:m:p/*
teneuses	teneuse	:N:f:p/*
tire-d'aile	tire-d'aile	:Ŵ/*
tricotets	tricotets	:N:m:p/*
turbeh	turbeh	:N:m:s/*
victimisante	victimisante	:A:f:s/*
volapük	volapük	:N:m:s/M
échaudages	échaudage	:N:m:p/*
écopaysager	écopaysagère	:A:m:s/*
étudieriez	étudier	:V1_it_q__a:K:2p/*
211493
211494
211495
211496
211497
211498
211499

211500
211501
211502
211503
211504
211505
211506
211437
211438
211439
211440
211441
211442
211443
211444
211445
211446
211447
211448
211449
211450
211451







+







parousies	parousie	:N:f:p/*
pervertissez	pervertir	:V2_it_q__a:Ip:2p/*
pervertissez	pervertir	:V2_it_q__a:E:2p/*
pèserais	peser	:V1_it_q_zz:K:1s:2s/*
porte-hélicoptères	porte-hélicoptères	:N:m:i/M
positionnellement	positionnellement	:W/*
postulasse	postuler	:V1_it___zz:Sq:1s/*
pygmalionisme	pygmalionisme	:N:m:s/*
périœsophagiennes	périœsophagienne	:A:f:p/*
radiocommandé	radiocommandée	:A:m:s/*
rappent	rapper	:V1_it____a:Ip:Sp:3p/*
ravisaient	raviser	:V1____p_e_:Iq:3p/*
replierai	replier	:V1__t_q_zz:If:1s/*
retissée	retisser	:V1__t___zz:Q:A:f:s/*
retraversaient	retraverser	:V1__t___zz:Iq:3p/*
211631
211632
211633
211634
211635
211636
211637
211638
211639
211640
211641
211642
211643
211644
211645
211576
211577
211578
211579
211580
211581
211582

211583
211584
211585
211586
211587
211588
211589







-







défaiseurs	défaiseur	:N:m:p/*
déferriser	déferriser	:V1__t___zz:Y/*
démocratiserait	démocratiser	:V1__t_q_zz:K:3s/*
désoufré	désoufrer	:V1_it____a:Q:A:1ŝ:m:s/*
ecclésiastes	ecclésiaste	:N:e:p/*
encrait	encrer	:V1_it___zz:Iq:3s/*
engreneurs	engreneuse	:N:m:p/*
entr'ouvrît	entr'ouvrir	:V3__t_q_zz:Sq:3s/C
envenimez	envenimer	:V1__t_q_zz:Ip:2p/*
envenimez	envenimer	:V1__t_q_zz:E:2p/*
estouffade	estouffade	:N:f:s/*
exothermie	exothermie	:N:f:s/*
frisottis	frisottis	:N:m:i/M
gangrenèrent	gangrener	:V1__t_q_zz:Is:3p!/M
hydrolipidique	hydrolipidique	:A:e:s/*
211921
211922
211923
211924
211925
211926
211927
211928

211929
211930
211931
211932
211933
211934
211935
211865
211866
211867
211868
211869
211870
211871

211872
211873
211874
211875
211876
211877
211878
211879







-
+







tremblote	trembloter	:V1_i____zz:Ip:Sp:1s:3s/*
tremblote	trembloter	:V1_i____zz:E:2s/*
volatiliseront	volatiliser	:V1__t_q_zz:If:3p!/*
xylocopes	xylocope	:N:m:p/*
élaborerez	élaborer	:V1__t_q_zz:If:2p/*
ambrettes	ambrette	:N:f:p/*
analemmatique	analemmatique	:A:e:s/*
apportassions	apporter	:V1_it____a:Sq:1p/*
apportassions	apporter	:V1_itn___a:Sq:1p/*
asséchements	asséchement	:N:m:p/C
balletomane	balletomane	:N:A:e:s/*
bento	bento	:N:m:s/*
cagouille	cagouille	:N:f:s/*
calligraphient	calligraphier	:V1__t___zz:Ip:Sp:3p/*
coccolites	coccolite	:N:f:p/*
complétement	complétement	:N:m:s/A
214340
214341
214342
214343
214344
214345
214346

214347
214348
214349
214350
214351
214352
214353
214284
214285
214286
214287
214288
214289
214290
214291
214292
214293
214294
214295
214296
214297
214298







+







rissolait	rissoler	:V1_it___zz:Iq:3s/*
scellerons	sceller	:V1__t___zz:If:1p/*
simplifierez	simplifier	:V1_it_q_zz:If:2p/*
sino-soviétique	sino-soviétique	:A:e:s/*
sociologismes	sociologisme	:N:m:p/*
stérilisons	stériliser	:V1__t___zz:Ip:1p/*
stérilisons	stériliser	:V1__t___zz:E:1p/*
surhydratation	surhydratation	:N:f:s/*
tiédissaient	tiédir	:V2_it____a:Iq:3p/*
tuteuré	tuteurer	:V1__t___zz:Q:A:1ŝ:m:s/*
vaquai	vaquer	:V1_i_n__zz:Is:1s/*
veinotoniques	veinotonique	:A:e:p/*
veinotoniques	veinotonique	:N:m:p/*
vice-recteur	vice-rectrice	:N:m:s/*
vitriolerie	vitriolerie	:N:f:s/*
214606
214607
214608
214609
214610
214611
214612
214613
214614
214615
214616
214617
214618
214619
214620
214551
214552
214553
214554
214555
214556
214557

214558
214559
214560
214561
214562
214563
214564







-







orofaciale	orofaciale	:A:f:s/*
ozonosphère	ozonosphère	:N:f:s/*
papillotages	papillotage	:N:m:p/*
piaillards	piaillarde	:N:A:m:p/*
piquerie	piquerie	:N:f:s/*
plaquons	plaquer	:V1__t_q_zz:Ip:1p/*
plaquons	plaquer	:V1__t_q_zz:E:1p/*
presqu'iles	presqu'ile	:N:f:p/R
prestances	prestance	:N:f:p/*
professionnalisations	professionnalisation	:N:f:p/*
présumerez	présumer	:V1__tn__zz:If:2p/*
randomiser	randomiser	:V1__t___zz:Y/*
rapsodiste	rapsodiste	:N:e:s/R
recalent	recaler	:V1__t___zz:Ip:Sp:3p/*
rechanté	rechanter	:V1__t___zz:Q:A:1ŝ:m:s/*
217110
217111
217112
217113
217114
217115
217116

217117
217118
217119
217120
217121
217122
217123
217054
217055
217056
217057
217058
217059
217060
217061
217062
217063
217064
217065
217066
217067
217068







+







ismaïlien	ismaïlienne	:N:A:m:s/A
kalmias	kalmia	:N:m:p/*
laissè	laisser	:V1__t_q_zz:Ip:1ś/R
loricaires	loricaire	:N:m:p/*
massacrantes	massacrante	:A:f:p/*
membranophone	membranophone	:N:m:s/*
multinomiales	multinomiale	:A:f:p/*
méandreuses	méandreuse	:A:f:p/*
oppressas	oppresser	:V1__t___zz:Is:2s/*
parapharmacies	parapharmacie	:N:f:p/*
patinèrent	patiner	:V1_it_q_zz:Is:3p!/*
peaufinera	peaufiner	:V1__t___zz:If:3s/*
pervertît	pervertir	:V2_it_q__a:Sq:3s/*
pollueraient	polluer	:V1_it___zz:K:3p/*
préemptions	préempter	:V1__t___zz:Iq:Sp:1p/*
218351
218352
218353
218354
218355
218356
218357
218358
218359
218360
218361
218362
218363
218364
218365
218296
218297
218298
218299
218300
218301
218302

218303
218304
218305
218306
218307
218308
218309







-







dédaignables	dédaignable	:A:e:p/*
dégénérons	dégénérer	:V1_i__q_zz:Ip:1p/*
dégénérons	dégénérer	:V1_i__q_zz:E:1p/*
délogeai	déloger	:V1_it___zz:Is:1s/*
démangea	démanger	:V1_it___zz:Is:3s/*
démonétiserait	démonétiser	:V1__t___zz:K:3s/*
dépassionnant	dépassionner	:V1__t___zz:P/*
dépolluant	dépolluer	:V1__t___zz:P/*
déradé	dérader	:V1_i____zz:Q:1ŝ:e:i/*
désavantagea	désavantager	:V1__t___zz:Is:3s/*
embouchera	emboucher	:V1__t___zz:If:3s/*
encroutés	encrouter	:V1__t_q_zz:Q:A:m:p/R
ensemenceras	ensemencer	:V1__t___zz:If:2s/*
entérorénal	entérorénale	:A:m:s/R
fendrais	fendre	:V3__t_q_zz:K:1s:2s/*
218521
218522
218523
218524
218525
218526
218527
218528
218529
218530
218531
218532
218533
218534
218535
218465
218466
218467
218468
218469
218470
218471

218472
218473
218474
218475
218476
218477
218478







-







agglutinais	agglutiner	:V1__t_q_zz:Iq:1s:2s/*
alitions	aliter	:V1__t_q_zz:Iq:Sp:1p/*
alluré	allurée	:A:m:s/*
antirationnelles	antirationnelle	:A:f:p/*
anéantissiez	anéantir	:V2_it_q__a:Iq:Sp:Sq:2p/*
astralement	astralement	:W/*
audimats	audimat	:N:m:p/*
baha'isme	baha'isme	:N:m:s/C
banquette	banqueter	:V1_i____zz:Ip:Sp:1s:3s/M
banquette	banqueter	:V1_i____zz:E:2s/M
banquettes	banqueter	:V1_i____zz:Ip:Sp:2s/M
chemisa	chemiser	:V1__t___zz:Is:3s/*
coadaptations	coadaptation	:N:f:p/*
crêpière	crêpière	:N:f:s/*
denturologistes	denturologiste	:N:e:p/*
219270
219271
219272
219273
219274
219275
219276
219277
219278


219279
219280
219281
219282
219283
219284
219285
219213
219214
219215
219216
219217
219218
219219


219220
219221
219222
219223
219224
219225
219226
219227
219228







-
-
+
+







sauri	saurir	:V2__t___zz:Q:A:m:s/*
scellâmes	sceller	:V1__t___zz:Is:1p/*
soudants	soudante	:A:m:p/*
subviens	subvenir	:V3___n___a:Ip:1s:2s/*
subviens	subvenir	:V3___n___a:E:2s/*
surajoutèrent	surajouter	:V1__t_q_zz:Is:3p!/*
surdosés	surdoser	:V1__t____a:Q:A:m:p/*
sétaires	sétaire	:N:f:p/*
sétaires	sétaire	:N:f:p/X
sétaires	sétaire	:N:f:p/X
sétaires	sétaire	:N:f:p/*
tertiarisés	tertiariser	:V1_it___zz:Q:A:m:p/*
tournailles	tournailler	:V1_i____zz:Ip:Sp:2s/*
tritures	triturer	:V1__t___zz:Ip:Sp:2s/*
typisés	typiser	:V1__t___zz:Q:A:m:p/*
vachards	vacharde	:N:A:m:p/*
vaudouisme	vaudouisme	:N:m:s/*
wayangs	wayang	:N:m:p/*
219521
219522
219523
219524
219525
219526
219527
219528
219529

219530
219531
219532
219533
219534
219535
219536
219464
219465
219466
219467
219468
219469
219470

219471
219472
219473
219474
219475
219476
219477
219478
219479







-

+







violeuse	violeuse	:N:f:s/*
éduquerons	éduquer	:V1_it_q__a:If:1p/*
éveilleuses	éveilleuse	:N:f:p/*
absoudrons	absoudre	:V3_it_q__a:If:1p/*
amurée	amurer	:V1__t___zz:Q:A:f:s/*
appartinsse	appartenir	:V3___nq__a:Sq:1s/*
apuraient	apurer	:V1__t___zz:Iq:3p/*
archivait	archiver	:V1_it____a:Iq:3s/*
arcs-en-ciel	arcs-en-ciel	:N:m:p/*
archivait	archiver	:V1_it____a:Iq:3s/*
attestiez	attester	:V1__t____a:Iq:Sp:2p/*
attrapage	attrapage	:N:m:s/*
baratte	baratter	:V1__t___zz:Ip:Sp:1s:3s/*
baratte	baratter	:V1__t___zz:E:2s/*
barattes	baratter	:V1__t___zz:Ip:Sp:2s/*
bienpensantes	bienpensante	:N:A:f:p/R
biologisée	biologiser	:V1__t___zz:Q:A:f:s/*
220113
220114
220115
220116
220117
220118
220119
220120
220121
220122
220123
220124
220125
220126
220127
220056
220057
220058
220059
220060
220061
220062

220063
220064
220065
220066
220067
220068
220069







-







vert-de-gris	vert-de-gris	:N:m:i/*
vibrionner	vibrionner	:V1_i____zz:Y/*
vieillirions	vieillir	:V2_it_q__a:K:1p/*
vènerie	vènerie	:N:f:s/R
vétivers	vétiver	:N:m:p/*
yersiniose	yersiniose	:N:f:s/*
Lovćen	Lovćen	:N:m:i/X
Morne-à-l'Eau	Morne-à-l'Eau	:MP:e:i/*
agioteuses	agioteuse	:N:f:p/*
améliorative	améliorative	:A:f:s/*
anatomisée	anatomiser	:V1__t___zz:Q:A:f:s/*
attristai	attrister	:V1__t_q_zz:Is:1s/*
auréolera	auréoler	:V1__t_q_zz:If:3s/*
bicarrées	bicarrée	:A:f:p/*
bobinettes	bobinette	:N:f:p/*
220745
220746
220747
220748
220749
220750
220751
220752
220753
220754
220755
220756
220757
220758
220759
220687
220688
220689
220690
220691
220692
220693

220694
220695
220696
220697
220698
220699
220700







-







ansés	ansée	:A:m:p/*
antiabolitionniste	antiabolitionniste	:N:A:e:s/*
assignas	assigner	:V1__t___zz:Is:2s/*
astreignissent	astreindre	:V3_it_q__a:Sq:3p/*
audioorale	audioorale	:A:f:s/R
bonimenter	bonimenter	:V1_i____zz:Y/*
brunissures	brunissure	:N:f:p/*
c'est-à-dire	c'est-à-dire	:G:Cc/*
café-théâtre	café-théâtre	:N:m:s/*
camperions	camper	:V1_i__q_zz:K:1p/*
canonnerait	canonner	:V1__t___zz:K:3s/*
chloraloses	chloralose	:N:f:p/*
clairsemait	clairsemer	:V1__t_q_zz:Iq:3s/*
comptâtes	compter	:V1_it_q_zz:Is:2p/*
condamnasse	condamner	:V1_it_q__a:Sq:1s/*
220858
220859
220860
220861
220862
220863
220864
220865
220866
220867
220868
220869
220870
220871
220872
220799
220800
220801
220802
220803
220804
220805

220806
220807
220808
220809
220810
220811
220812







-







détoxiqués	détoxiquer	:V1__t___zz:Q:A:m:p/*
effrayerais	effrayer	:V1__t_q_zz:K:1s:2s/*
engrainées	engrainer	:V1__t_q_zz:Q:A:f:p/*
enharnachées	enharnacher	:V1__t___zz:Q:A:f:p/*
ensemenceraient	ensemencer	:V1__t___zz:K:3p/*
enserreraient	enserrer	:V1__t___zz:K:3p/*
entartrée	entartrer	:V1__t_q_zz:Q:A:f:s/*
entr'aimaient	entr'aimer	:V1____r_e_:Iq:3p/M
envolassent	envoler	:V1____p_e_:Sq:3p/*
espionnez	espionner	:V1__t___zz:Ip:2p/*
espionnez	espionner	:V1__t___zz:E:2p/*
fonctionnâmes	fonctionner	:V1_i____zz:Is:1p/*
forçâtes	forcer	:V1_it_q_zz:Is:2p/*
fraisent	fraiser	:V1__t___zz:Ip:Sp:3p/*
frisais	friser	:V1_it_q_zz:Iq:1s:2s/*
220923
220924
220925
220926
220927
220928
220929
220930
220931
220932
220933
220934
220935
220936
220937
220863
220864
220865
220866
220867
220868
220869

220870
220871
220872
220873
220874
220875
220876







-







tussions	taire	:V3__t_q__a:Sq:1p/*
tilter	tilter	:V1_it___zz:Y/*
toluols	toluol	:N:m:p/*
tondraient	tondre	:V3_it____a:K:3p/*
électrophotographique	électrophotographique	:A:e:s/*
émondaient	émonder	:V1__t___zz:Iq:3p/*
étoffas	étoffer	:V1__t_q_zz:Is:2s/*
Berre-l'Étang	Berre-l'Étang	:MP:e:i/*
Lys-lez-Lannoy	Lys-lez-Lannoy	:MP:e:i/*
accommodâmes	accommoder	:V1__t_q_zz:Is:1p/*
activiez	activer	:V1_it_q_zz:Iq:Sp:2p/*
angioscopie	angioscopie	:N:f:s/*
ascensionne	ascensionner	:V1__t___zz:Ip:Sp:1s:3s/*
ascensionne	ascensionner	:V1__t___zz:E:2s/*
assîtes	asseoir	:V3__t_q__a:Is:2p/M
221853
221854
221855
221856
221857
221858
221859
221860
221861
221862
221863
221864
221865
221866
221867
221792
221793
221794
221795
221796
221797
221798

221799
221800
221801
221802
221803
221804
221805







-







dégringolâmes	dégringoler	:V1_it___zz:Is:1p/*
dépiquant	dépiquer	:V1__t___zz:P/*
détecteraient	détecter	:V1__t___zz:K:3p/*
détricote	détricoter	:V1__t___zz:Ip:Sp:1s:3s/*
détricote	détricoter	:V1__t___zz:E:2s/*
enchainaient	enchainer	:V1_it_q_zz:Iq:3p/R
enchevêtreraient	enchevêtrer	:V1__t_q_zz:K:3p/*
entr'ouvrirait	entr'ouvrir	:V3__t_q_zz:K:3s/C
entrelarde	entrelarder	:V1__t___zz:Ip:Sp:1s:3s/*
entrelarde	entrelarder	:V1__t___zz:E:2s/*
estropiât	estropier	:V1__t_q_zz:Sq:3s/*
eutocie	eutocie	:N:f:s/*
extrapolaient	extrapoler	:V1_it___zz:Iq:3p/*
fanfaronna	fanfaronner	:V1_i____zz:Is:3s/*
façadier	façadière	:N:A:m:s/*
221902
221903
221904
221905
221906
221907
221908
221909

221910
221911
221912
221913
221914
221915
221916
221840
221841
221842
221843
221844
221845
221846

221847
221848
221849
221850
221851
221852
221853
221854







-
+







retravaillerai	retravailler	:V1_itn__zz:If:1s/*
réacheminés	réacheminer	:V1__t_q__a:Q:A:m:p/*
rééliront	réélire	:V3__t____a:If:3p!/*
salivantes	salivante	:A:f:p/*
saltarelles	saltarelle	:N:f:p/*
schizogamie	schizogamie	:N:f:s/*
smasher	smasher	:V1_it___zz:Y/*
solidifies	solidifier	:V1__t_q_zz:Ip:Sp:2s/*
solidifies	solidifier	:V1_it_q__a:Ip:Sp:2s/*
soufflètent	souffleter	:V1__t___zz:Ip:Sp:3p/R
sublimeront	sublimer	:V1_it___zz:If:3p!/*
thermophobie	thermophobie	:N:f:s/*
tomette	tomette	:N:f:s/*
tracasseront	tracasser	:V1__t_q_zz:If:3p!/*
trialcool	trialcool	:N:m:s/*
tripatouille	tripatouiller	:V1__t___zz:Ip:Sp:1s:3s/*
222347
222348
222349
222350
222351
222352
222353
222354

222355
222356
222357
222358
222359
222360
222361
222285
222286
222287
222288
222289
222290
222291

222292
222293
222294
222295
222296
222297
222298
222299







-
+







dyssynchronie	dyssynchronie	:N:f:s/*
décampions	décamper	:V1_i____zz:Iq:Sp:1p/*
délivreriez	délivrer	:V1__t_q_zz:K:2p/*
démocratisèrent	démocratiser	:V1__t_q_zz:Is:3p!/*
embabouiné	embabouiner	:V1__t___zz:Q:A:1ŝ:m:s/*
empreindra	empreindre	:V3__t_q_zz:If:3s/*
enchevêtres	enchevêtrer	:V1__t_q_zz:Ip:Sp:2s/*
entrelaceraient	entrelacer	:V1__t_q_zz:K:3p/*
entrelaceraient	entrelacer	:V1__t_q__a:K:3p/*
esquisseraient	esquisser	:V1__t_q_zz:K:3p/*
extraderont	extrader	:V1__t___zz:If:3p!/*
extraies	extraire	:V3_itnq__a:Sp:2s/*
fissurèrent	fissurer	:V1__t_q_zz:Is:3p!/*
fouaillées	fouailler	:V1__t___zz:Q:A:f:p/*
franco-canadienne	franco-canadienne	:N:A:f:s/*
gauchira	gauchir	:V2_it_q_zz:If:3s/*
222767
222768
222769
222770
222771
222772
222773

222774
222775
222776
222777
222778
222779
222780
222705
222706
222707
222708
222709
222710
222711
222712
222713
222714
222715
222716
222717
222718
222719







+







surimposa	surimposer	:V1__t_q_zz:Is:3s/*
tacticité	tacticité	:N:f:s/*
tartine	tartiner	:V1_it___zz:Ip:Sp:1s:3s/*
tartine	tartiner	:V1_it___zz:E:2s/*
tartines	tartiner	:V1_it___zz:Ip:Sp:2s/*
thermoplongeur	thermoplongeur	:N:m:s/*
transvasions	transvaser	:V1__t___zz:Iq:Sp:1p/*
trollesque	trollesque	:A:e:s/*
trouble-fête	trouble-fête	:N:e:i/C
télégraphies	télégraphie	:N:f:p/*
télégraphies	télégraphier	:V1_it___zz:Ip:Sp:2s/*
verticillium	verticillium	:N:m:s/X
zwiebacks	zwieback	:N:m:p/*
ébaubies	ébaubir	:V2____p_e_:Q:A:f:p/*
énolates	énolate	:N:m:p/*
225174
225175
225176
225177
225178
225179
225180
225181
225182
225183
225184
225185
225186
225187
225188
225113
225114
225115
225116
225117
225118
225119

225120
225121
225122
225123
225124
225125
225126







-







dévisageâmes	dévisager	:V1__t___zz:Is:1p/*
effeuillements	effeuillement	:N:m:p/*
embouteillait	embouteiller	:V1__t___zz:Iq:3s/*
embues	embue	:A:f:p/*
embues	embuer	:V1__t_q_zz:Ip:Sp:2s/*
emparasse	emparer	:V1____p_e_:Sq:1s/*
enregistriez	enregistrer	:V1__t_q_zz:Iq:Sp:2p/*
entr'ouvrais	entr'ouvrir	:V3__t_q_zz:Iq:1s:2s/C
euphorisé	euphoriser	:V1_it___zz:Q:A:1ŝ:m:s/*
fermentables	fermentable	:A:e:p/*
fredonnerait	fredonner	:V1_it___zz:K:3s/*
féringienne	féringienne	:N:A:f:s/*
gourmandera	gourmander	:V1__t___zz:If:3s/*
gracierait	gracier	:V1__t___zz:K:3s/*
grammatologiques	grammatologique	:A:e:p/*
226108
226109
226110
226111
226112
226113
226114
226115
226116


226117
226118
226119
226120
226121
226122
226123
226046
226047
226048
226049
226050
226051
226052


226053
226054
226055
226056
226057
226058
226059
226060
226061







-
-
+
+







désopilé	désopiler	:V1__t_q_zz:Q:A:1ŝ:m:s/*
effrayerez	effrayer	:V1__t_q_zz:If:2p/*
endettez	endetter	:V1__t_q_zz:Ip:2p/*
endettez	endetter	:V1__t_q_zz:E:2p/*
enguiché	enguichée	:A:m:s/*
entomophilie	entomophilie	:N:f:s/*
entrainable	entrainable	:A:e:s/R
entrelacez	entrelacer	:V1__t_q_zz:Ip:2p/*
entrelacez	entrelacer	:V1__t_q_zz:E:2p/*
entrelacez	entrelacer	:V1__t_q__a:Ip:2p/*
entrelacez	entrelacer	:V1__t_q__a:E:2p/*
exclamez	exclamer	:V1____p_e_:Ip:2p/*
exclamez	exclamer	:V1____p_e_:E:2p/*
feuillète	feuilleter	:V1__t___zz:Ip:Sp:1s:3s/R
feuillète	feuilleter	:V1__t___zz:E:2s/R
frotterais	frotter	:V1_it_q_zz:K:1s:2s/*
furetai	fureter	:V1_i____zz:Is:1s/*
féminisera	féminiser	:V1__t_q_zz:If:3s/*
227742
227743
227744
227745
227746
227747
227748
227749
227750
227751
227752
227753
227754
227755
227756
227680
227681
227682
227683
227684
227685
227686

227687
227688
227689
227690
227691
227692
227693







-







trésaille	trésaille	:N:f:s/*
tympanales	tympanale	:A:f:p/*
tâchassiez	tâcher	:V1__tn__zz:Sq:2p/*
vermille	vermille	:N:f:s/*
vitrifia	vitrifier	:V1__t___zz:Is:3s/*
zippa	zipper	:V1__t___zz:Is:3s/*
écussonnant	écussonner	:V1__t___zz:P/*
Fontaine-l'Évêque	Fontaine-l'Évêque	:MP:e:i/*
affalais	affaler	:V1__t_q_zz:Iq:1s:2s/*
archivera	archiver	:V1_it____a:If:3s/*
astreignions	astreindre	:V3_it_q__a:Iq:Sp:1p/*
barbantes	barbante	:A:f:p/*
basculions	basculer	:V1_it___zz:Iq:Sp:1p/*
bataillez	batailler	:V1_i__q_zz:Ip:2p/*
bataillez	batailler	:V1_i__q_zz:E:2p/*
228133
228134
228135
228136
228137
228138
228139
228140
228141
228142
228143
228144
228145
228146
228147
228070
228071
228072
228073
228074
228075
228076

228077
228078
228079
228080
228081
228082
228083







-







délaves	délaver	:V1__t___zz:Ip:Sp:2s/*
dévernissages	dévernissage	:N:m:p/*
ectodermes	ectoderme	:N:m:p/*
enchâssures	enchâssure	:N:f:p/*
enfournez	enfourner	:V1__t_q_zz:Ip:2p/*
enfournez	enfourner	:V1__t_q_zz:E:2p/*
enquiquiné	enquiquiner	:V1__t_q_zz:Q:A:1ŝ:m:s/*
entr'égorge	entr'égorger	:V1____r_e_:Ip:Sp:3s/M
escrimions	escrimer	:V1____p_e_:Iq:Sp:1p/*
exemptassent	exempter	:V1__t_q_zz:Sq:3p/*
exploiteras	exploiter	:V1_it___zz:If:2s/*
flabellé	flabellée	:A:m:s/*
flingués	flinguer	:V1_it_q_zz:Q:A:m:p/*
frimai	frimer	:V1_it___zz:Is:1s/*
gusse	gusse	:N:m:s/*
228491
228492
228493
228494
228495
228496
228497
228498
228499
228500
228501
228502
228503
228504
228505
228506
228427
228428
228429
228430
228431
228432
228433


228434
228435
228436
228437
228438
228439
228440







-
-







désaxait	désaxer	:V1__t___zz:Iq:3s/*
désoufrer	désoufrer	:V1_it____a:Y/*
dévoltage	dévoltage	:N:m:s/*
dévêtira	dévêtir	:V3__t_q__a:If:3s/*
encageant	encager	:V1__t___zz:P/*
enclouaient	enclouer	:V1__t___zz:Iq:3p/*
encolérée	encolérer	:V1__t_q_zz:Q:A:f:s/*
entr'ouvrez	entr'ouvrir	:V3__t_q_zz:Ip:2p/C
entr'ouvrez	entr'ouvrir	:V3__t_q_zz:E:2p/C
entretiendriez	entretenir	:V3_it_q__a:K:2p/*
est-allemandes	est-allemande	:N:A:f:p/*
extravagues	extravaguer	:V1_i____zz:Ip:Sp:2s/*
exécrez	exécrer	:V1__t___zz:Ip:2p/*
exécrez	exécrer	:V1__t___zz:E:2p/*
fetas	feta	:N:f:p/*
focaliseraient	focaliser	:V1__t_q_zz:K:3p/*
229163
229164
229165
229166
229167
229168
229169
229170

229171
229172
229173
229174
229175
229176
229177
229097
229098
229099
229100
229101
229102
229103

229104
229105
229106
229107
229108
229109
229110
229111







-
+







rewrites	rewriter	:V1__t___zz:Ip:Sp:2s/*
ridages	ridage	:N:m:p/*
récrieriez	récrier	:V1____p_e_:K:2p/*
réguleront	réguler	:V1_it_q__a:If:3p!/*
réintégrâmes	réintégrer	:V1__t___zz:Is:1p/*
rétinoïde	rétinoïde	:N:m:s/*
scandalisiez	scandaliser	:V1_it_q_zz:Iq:Sp:2p/*
solidifieraient	solidifier	:V1__t_q_zz:K:3p/*
solidifieraient	solidifier	:V1_it_q__a:K:3p/*
stylomines	stylomine	:N:m:p/*
subjuguerez	subjuguer	:V1__t___zz:If:2p/*
surbrodés	surbroder	:V1__t___zz:Q:A:m:p/*
surimpressionné	surimpressionner	:V1__tnq__a:Q:A:1ŝ:m:s/*
surprotège	surprotéger	:V1__t___zz:Ip:Sp:1s:3s/*
surprotège	surprotéger	:V1__t___zz:E:2s/*
surtitrée	surtitrer	:V1__t___zz:Q:A:f:s/*
229665
229666
229667
229668
229669
229670
229671
229672
229673


229674
229675
229676
229677
229678
229679
229680
229599
229600
229601
229602
229603
229604
229605


229606
229607
229608
229609
229610
229611
229612
229613
229614







-
-
+
+







bémolise	bémoliser	:V1__t___zz:Ip:Sp:1s:3s/*
bémolise	bémoliser	:V1__t___zz:E:2s/*
caouanes	caouane	:N:f:p/*
caramboliers	carambolier	:N:m:p/*
cavaient	caver	:V1_it_q_zz:Iq:3p/*
chimè	chimer	:V1__t___zz:Ip:1ś/R
clitocybes	clitocybe	:N:m:p/*
coextrusion	coextrusion	:N:f:s/*
coextrusion	coextrusion	:N:f:s/X
coextrusion	coextrusion	:N:f:s/X
coextrusion	coextrusion	:N:f:s/*
communiquâtes	communiquer	:V1_it_q_zz:Is:2p/*
complimenteront	complimenter	:V1__t___zz:If:3p!/*
convoquerions	convoquer	:V1__t____a:K:1p/*
croîtras	croître	:V3_i_____a:If:2s/M
crucifions	crucifier	:V1__t___zz:Ip:1p/*
crucifions	crucifier	:V1__t___zz:E:1p/*
deutérées	deutérée	:A:f:p/*
230016
230017
230018
230019
230020
230021
230022
230023
230024
230025
230026
230027
230028
230029
230030
229950
229951
229952
229953
229954
229955
229956

229957
229958
229959
229960
229961
229962
229963







-







singeais	singer	:V1__t___zz:Iq:1s:2s/*
solfatariennes	solfatarienne	:A:f:p/*
souquait	souquer	:V1_it___zz:Iq:3s/*
surajouteront	surajouter	:V1__t_q_zz:If:3p!/*
tablars	tablar	:N:m:p/*
transmissibilités	transmissibilité	:N:f:p/*
téléacteur	téléactrice	:N:m:s/*
vau-l'eau	vau-l'eau	:Ŵ/*
vitupérera	vitupérer	:V1_it___zz:If:3s/M
voutons	vouter	:V1__t_q_zz:Ip:1p/R
voutons	vouter	:V1__t_q_zz:E:1p/R
élanciez	élancer	:V1_it_q_zz:Iq:Sp:2p/*
éliminerais	éliminer	:V1_it_q_zz:K:1s:2s/*
équivalussent	équivaloir	:V3___nx__a:Sq:3p/*
évertues	évertuer	:V1____p_e_:Ip:Sp:2s/*
231176
231177
231178
231179
231180
231181
231182
231183
231184
231185
231186
231187
231188
231189
231190
231109
231110
231111
231112
231113
231114
231115

231116
231117
231118
231119
231120
231121
231122







-







trameur	trameuse	:N:m:s/*
têteaux	têteau	:N:m:p/*
vautreront	vautrer	:V1____p_e_:If:3p!/*
verrouilleur	verrouilleur	:N:m:s/*
ébavurer	ébavurer	:V1__t___zz:Y/*
échaufferez	échauffer	:V1__t_q_zz:If:2p/*
éventât	éventer	:V1__t_q_zz:Sq:3s/*
Saint-Denis-d'Anjou	Saint-Denis-d'Anjou	:MP:e:i/X
abreuvages	abreuvage	:N:m:p/*
aiglette	aiglette	:N:f:s/*
anatomisées	anatomiser	:V1__t___zz:Q:A:f:p/*
ariosi	arioso	:N:m:p/C
autopollinisations	autopollinisation	:N:f:p/*
bafoues	bafouer	:V1__t___zz:Ip:Sp:2s/*
baillâmes	bailler	:V1__t___zz:Is:1p/*
231595
231596
231597
231598
231599
231600
231601
231602
231603
231604
231605
231606
231607
231608
231609
231527
231528
231529
231530
231531
231532
231533

231534
231535
231536
231537
231538
231539
231540







-







déméritèrent	démériter	:V1_i____zz:Is:3p!/*
démêleraient	démêler	:V1__t_q_zz:K:3p/*
dénasalisé	dénasaliser	:V1__t___zz:Q:A:1ŝ:m:s/*
désassemblant	désassembler	:V1__t___zz:P/*
emboués	embouer	:V1_it___zz:Q:A:m:p/*
empaquetai	empaqueter	:V1__t___zz:Is:1s/*
ensablera	ensabler	:V1__t_q_zz:If:3s/*
entr'égorgeront	entr'égorger	:V1____r_e_:If:3p!/M
escrimeuses	escrimeuse	:N:f:p/*
exorcisations	exorcisation	:N:f:p/*
exprimâtes	exprimer	:V1__t_q_zz:Is:2p/*
faignants	faignante	:N:A:m:p/*
façonnas	façonner	:V1__t___zz:Is:2s/*
ferrotypie	ferrotypie	:N:f:s/*
flosculeuse	flosculeuse	:A:f:s/*
232079
232080
232081
232082
232083
232084
232085

232086
232087
232088
232089
232090
232091
232092
232010
232011
232012
232013
232014
232015
232016
232017
232018
232019
232020
232021
232022
232023
232024







+







dépeigne	dépeigner	:V1__t___zz:E:2s/*
dépeignent	dépeigner	:V1__t___zz:Ip:Sp:3p/*
dépeignez	dépeigner	:V1__t___zz:Ip:2p/*
dépeignez	dépeigner	:V1__t___zz:E:2p/*
dépeignons	dépeigner	:V1__t___zz:Ip:1p/*
dépeignons	dépeigner	:V1__t___zz:E:1p/*
dépeindrais	dépeindre	:V3__t_q__a:K:1s:2s/*
dépolluantes	dépolluante	:A:f:p/*
déprendrait	déprendre	:V3____p_e_:K:3s/*
dérouillés	dérouiller	:V1_it_q_zz:Q:A:m:p/*
désambiguïse	désambiguïser	:V1__t___zz:Ip:Sp:1s:3s/M
désambiguïse	désambiguïser	:V1__t___zz:E:2s/M
désintéresserai	désintéresser	:V1__t_q_zz:If:1s/*
effilocheur	effilocheuse	:N:m:s/*
emmétrer	emmétrer	:V1__t___zz:Y/*
233122
233123
233124
233125
233126
233127
233128
233129
233130
233131
233132
233133
233134
233135
233136
233054
233055
233056
233057
233058
233059
233060

233061
233062
233063
233064
233065
233066
233067







-







égailles	égailler	:V1____p_e_:Ip:Sp:2s/*
élucubrée	élucubrer	:V1__t___zz:Q:A:f:s/*
épidermophytie	épidermophytie	:N:f:s/*
éthographie	éthographie	:N:f:s/*
étisies	étisie	:N:f:p/*
étrillerai	étriller	:V1__t___zz:If:1s/*
Ambarès-et-Lagrave	Ambarès-et-Lagrave	:MP:e:i/*
Château-d'Œx	Château-d'Œx	:MP:e:i/X
Ham-sur-Heure-Nalinnes	Ham-sur-Heure-Nalinnes	:MP:e:i/*
abîmerai	abîmer	:V1__t_q_zz:If:1s/M
accointés	accointer	:V1____p_e_:Q:A:m:p/*
actons	acter	:V1__t____a:Ip:1p/*
actons	acter	:V1__t____a:E:1p/*
adjudicatif	adjudicative	:A:m:s/*
allégueriez	alléguer	:V1__t___zz:K:2p/M
234249
234250
234251
234252
234253
234254
234255
234256
234257
234258
234259
234260
234261
234262
234263
234180
234181
234182
234183
234184
234185
234186

234187
234188
234189
234190
234191
234192
234193







-







outillèrent	outiller	:V1__t_q_zz:Is:3p!/*
palperont	palper	:V1__t___zz:If:3p!/*
parapentistes	parapentiste	:N:e:p/*
pathologisé	pathologiser	:V1_it____a:Q:A:1ŝ:m:s/*
patientât	patienter	:V1_i____zz:Sq:3s/*
pesteront	pester	:V1_i____zz:If:3p!/*
photocopia	photocopier	:V1__t___zz:Is:3s/*
pin's	pin's	:N:m:i/*
possèderez	posséder	:V1__t_q__a:If:2p/R
potassées	potasser	:V1_it___zz:Q:A:f:p/*
potentialiste	potentialiste	:A:e:s/*
quêtez	quêter	:V1_it___zz:Ip:2p/*
quêtez	quêter	:V1_it___zz:E:2p/*
rafistola	rafistoler	:V1__t___zz:Is:3s/*
ramescences	ramescence	:N:f:p/*
234293
234294
234295
234296
234297
234298
234299
234300

234301
234302
234303
234304
234305
234306
234307
234223
234224
234225
234226
234227
234228
234229

234230
234231
234232
234233
234234
234235
234236
234237







-
+







violacent	violacer	:V1__t_q_zz:Ip:Sp:3p/*
volubilités	volubilité	:N:f:p/*
écrabouillage	écrabouillage	:N:m:s/*
daL	L	:N:m:i;S/*
acétylations	acétylation	:N:f:p/*
affouagé	affouager	:V1__t___zz:Q:A:1ŝ:m:s/*
antigravitationnel	antigravitationnelle	:A:m:s/*
apportassiez	apporter	:V1_it____a:Sq:2p/*
apportassiez	apporter	:V1_itn___a:Sq:2p/*
arboriez	arborer	:V1__t___zz:Iq:Sp:2p/*
armurières	armurière	:N:A:f:p/*
arpentâmes	arpenter	:V1__t___zz:Is:1p/*
arrêtables	arrêtable	:A:e:p/*
autoexcitatrice	autoexcitatrice	:A:f:s/*
bassinai	bassiner	:V1__t___zz:Is:1s/*
beugles	beugler	:V1_it___zz:Ip:Sp:2s/*
235118
235119
235120
235121
235122
235123
235124

235125
235126
235127
235128
235129
235130
235131
235048
235049
235050
235051
235052
235053
235054
235055
235056
235057
235058
235059
235060
235061
235062







+







zénitude	zénitude	:N:f:s/*
émergez	émerger	:V1_i_____a:Ip:2p/*
émergez	émerger	:V1_i_____a:E:2p/*
épaulas	épauler	:V1__t_q_zz:Is:2s/*
éructions	éructer	:V1_it___zz:Iq:Sp:1p/*
étouffade	étouffade	:N:f:s/*
étreignît	étreindre	:V3__t_q_zz:Sq:3s/*
Ehlers-Danlos	Ehlers-Danlos	:M2:e:i/*
abolisseur	abolisseur	:N:m:s/*
abonnit	abonnir	:V2__t_q_zz:Ip:Is:3s/*
agréages	agréage	:N:m:p/*
alcées	alcée	:N:f:p/*
amenderez	amender	:V1__t_q_zz:If:2p/*
andrologue	andrologue	:N:e:s/*
anti-inflammatoires	anti-inflammatoire	:A:e:p/M
235789
235790
235791
235792
235793
235794
235795

235796
235797
235798
235799
235800
235801
235802
235720
235721
235722
235723
235724
235725
235726
235727
235728
235729
235730
235731
235732
235733
235734







+







déconsidérez	déconsidérer	:V1__t_q_zz:E:2p/*
déculture	déculturer	:V1__t_q_zz:Ip:Sp:1s:3s/*
déculture	déculturer	:V1__t_q_zz:E:2s/*
déferions	défaire	:V3__t_q__a:K:1p/*
démixtions	démixtion	:N:f:p/*
démâtent	démâter	:V1_it___zz:Ip:Sp:3p/*
déménagiez	déménager	:V1_it___zz:Iq:Sp:2p/*
dépolluant	dépolluante	:A:m:s/*
déportons	déporter	:V1__t_q__a:Ip:1p/*
déportons	déporter	:V1__t_q__a:E:1p/*
désenlacent	désenlacer	:V1__t___zz:Ip:Sp:3p/*
désincorporé	désincorporer	:V1__t___zz:Q:A:1ŝ:m:s/*
désélectionné	désélectionner	:V1__t___zz:Q:A:1ŝ:m:s/*
détissent	détisser	:V1__t___zz:Ip:Sp:3p/*
déviions	dévier	:V1_it___zz:Iq:Sp:1p/*
235879
235880
235881
235882
235883
235884
235885
235886
235887
235888
235889
235890
235891
235892
235893
235811
235812
235813
235814
235815
235816
235817

235818
235819
235820
235821
235822
235823
235824







-







zingue	zingue	:N:m:s/*
ébauchez	ébaucher	:V1__t_q_zz:Ip:2p/*
ébauchez	ébaucher	:V1__t_q_zz:E:2p/*
élargissiez	élargir	:V2_it_q__a:Iq:Sp:Sq:2p/*
énumèrerait	énumérer	:V1__t___zz:K:3s/R
épelai	épeler	:V1_it_q_zz:Is:1s/*
éveilleriez	éveiller	:V1__t_q_zz:K:2p/*
Bruay-sur-l'Escaut	Bruay-sur-l'Escaut	:MP:e:i/*
absolutives	absolutive	:A:f:p/*
accostez	accoster	:V1__t_q_zz:Ip:2p/*
accostez	accoster	:V1__t_q_zz:E:2p/*
achalé	achaler	:V1__t___zz:Q:A:1ŝ:m:s/*
aiguillas	aiguiller	:V1__t____a:Is:2s/*
amalgameraient	amalgamer	:V1__t_q_zz:K:3p/*
annulateurs	annulatrice	:N:A:m:p/*
236493
236494
236495
236496
236497
236498
236499
236500
236501
236502
236503
236504
236505
236506
236507
236508
236424
236425
236426
236427
236428
236429
236430


236431
236432
236433
236434
236435
236436
236437







-
-







décommuniser	décommuniser	:V1__t___zz:Y/*
démobiliseront	démobiliser	:V1_it_q_zz:If:3p!/*
dépotait	dépoter	:V1__t___zz:Iq:3s/*
désapprouveras	désapprouver	:V1_it___zz:If:2s/*
désencombrait	désencombrer	:V1__t_q_zz:Iq:3s/*
empareriez	emparer	:V1____p_e_:K:2p/*
enjôlant	enjôler	:V1__t___zz:P/*
entr'aimeront	entr'aimer	:V1____r_e_:If:3p!/M
entr'égorgeraient	entr'égorger	:V1____r_e_:K:3p/M
entretisser	entretisser	:V1__t_q_zz:Y/R
envergués	enverguer	:V1__t___zz:Q:A:m:p/*
esbroufeurs	esbroufeuse	:N:A:m:p/*
extasieraient	extasier	:V1____p_e_:K:3p/*
extériorisèrent	extérioriser	:V1__t_q_zz:Is:3p!/*
falsifions	falsifier	:V1__t___zz:Ip:1p/*
falsifions	falsifier	:V1__t___zz:E:1p/*
236541
236542
236543
236544
236545
236546
236547
236548
236549


236550
236551
236552
236553
236554
236555
236556
236470
236471
236472
236473
236474
236475
236476


236477
236478
236479
236480
236481
236482
236483
236484
236485







-
-
+
+







momifies	momifier	:V1__t_q_zz:Ip:Sp:2s/*
mornifles	mornifle	:N:f:p/*
médicamenta	médicamenter	:V1__t___zz:Is:3s/*
ménageasse	ménager	:V1__t_q_zz:Sq:1s/*
paillardent	paillarder	:V1_i__q_zz:Ip:Sp:3p/*
parachevions	parachever	:V1__t___zz:Iq:Sp:1p/*
pharmacothérapies	pharmacothérapie	:N:f:p/*
phytotoxicités	phytotoxicité	:N:f:p/*
phytotoxicités	phytotoxicité	:N:f:p/X
phytotoxicités	phytotoxicité	:N:f:p/X
phytotoxicités	phytotoxicité	:N:f:p/*
pinçures	pinçure	:N:f:p/*
plaisantées	plaisanter	:V1_it___zz:Q:A:f:p/*
pommait	pommer	:V1_i____zz:Iq:3s/*
pop-corn	pop-corn	:N:m:i/M
préjugiez	préjuger	:V1__tn__zz:Iq:Sp:2p/*
rafraichisseur	rafraichisseur	:N:m:s/R
remboursas	rembourser	:V1_it_q__a:Is:2s/*
236820
236821
236822
236823
236824
236825
236826
236827
236828
236829
236830
236831
236832
236833
236834
236749
236750
236751
236752
236753
236754
236755

236756
236757
236758
236759
236760
236761
236762







-







déséquipé	déséquiper	:V1__t_q_zz:Q:A:1ŝ:m:s/*
détractant	détracter	:V1__t___zz:P/*
développè	développer	:V1__t_q_zz:Ip:1ś/R
embardant	embarder	:V1__t_q_zz:P/*
emmagasinât	emmagasiner	:V1__t___zz:Sq:3s/*
endolorissait	endolorir	:V2__t___zz:Iq:3s/*
ennuager	ennuager	:V1__t_q_zz:Y/*
entr'aperçut	entr'apercevoir	:V3__t_q_zz:Is:3s/C
entrelardait	entrelarder	:V1__t___zz:Iq:3s/*
essoufflons	essouffler	:V1__t_q_zz:Ip:1p/*
essoufflons	essouffler	:V1__t_q_zz:E:1p/*
eudémonismes	eudémonisme	:N:m:p/*
eugénismes	eugénisme	:N:m:p/*
expropriatrices	expropriatrice	:N:A:f:p/*
extra-parlementaire	extra-parlementaire	:A:e:s/C
237414
237415
237416
237417
237418
237419
237420
237421
237422
237423
237424
237425
237426
237427
237428
237342
237343
237344
237345
237346
237347
237348

237349
237350
237351
237352
237353
237354
237355







-







mort-née	mort-née	:N:A:f:s/*
moufler	moufler	:V1__t___zz:Y/*
moyé	moyée	:A:m:s/*
multirésistances	multirésistance	:N:f:p/*
méfieras	méfier	:V1____p_e_:If:2s/*
mégi	mégir	:V2__t___zz:Q:A:m:s/*
métafictions	métafiction	:N:f:p/*
n'importe	n'importe	:G:Oi/*
narratologies	narratologie	:N:f:p/*
narrerons	narrer	:V1__t___zz:If:1p/*
ordonnancerait	ordonnancer	:V1__t___zz:K:3s/*
ouvragent	ouvrager	:V1__t___zz:Ip:Sp:3p/*
ovationnées	ovationner	:V1__t___zz:Q:A:f:p/*
ovulai	ovuler	:V1_i____zz:Is:1s/*
paillions	pailler	:V1__t___zz:Iq:Sp:1p/*
238868
238869
238870
238871
238872
238873
238874

238875
238876
238877
238878
238879
238880
238881
238795
238796
238797
238798
238799
238800
238801
238802
238803
238804
238805
238806
238807
238808
238809







+







décryptons	décrypter	:V1__t___zz:Ip:1p/*
décryptons	décrypter	:V1__t___zz:E:1p/*
défoulèrent	défouler	:V1__t_q_zz:Is:3p!/*
défripe	défriper	:V1__t___zz:Ip:Sp:1s:3s/*
défripe	défriper	:V1__t___zz:E:2s/*
démîtes	démettre	:V3__t_q__a:Is:2p/*
dénaturalisent	dénaturaliser	:V1__t___zz:Ip:Sp:3p/*
dépolluants	dépolluante	:A:m:p/*
désocialisent	désocialiser	:V1__t___zz:Ip:Sp:3p/*
désorganisons	désorganiser	:V1__t_q_zz:Ip:1p/*
désorganisons	désorganiser	:V1__t_q_zz:E:1p/*
encaque	encaquer	:V1__t___zz:Ip:Sp:1s:3s/*
encaque	encaquer	:V1__t___zz:E:2s/*
engouffrions	engouffrer	:V1__t_q_zz:Iq:Sp:1p/*
entraimer	entraimer	:V1____r_e_:Y/R
240029
240030
240031
240032
240033
240034
240035
240036
240037
240038
240039
240040
240041
240042
240043
239957
239958
239959
239960
239961
239962
239963

239964
239965
239966
239967
239968
239969
239970







-







désapprends	désapprendre	:V3__t___zz:Ip:1s:2s/*
désapprends	désapprendre	:V3__t___zz:E:2s/*
désemparât	désemparer	:V1_it___zz:Sq:3s/*
désentortiller	désentortiller	:V1__t___zz:Y/*
désherbes	désherber	:V1__t___zz:Ip:Sp:2s/*
enflammions	enflammer	:V1__t_q_zz:Iq:Sp:1p/*
ennuagent	ennuager	:V1__t_q_zz:Ip:Sp:3p/*
entr'égorgeait	entr'égorger	:V1____r_e_:Iq:3s/M
exonères	exonérer	:V1__t_q_zz:Ip:Sp:2s/*
fainéantent	fainéanter	:V1_i____zz:Ip:Sp:3p/*
fossilisa	fossiliser	:V1__t_q_zz:Is:3s/*
fourrageais	fourrager	:V1_it___zz:Iq:1s:2s/*
fracasses	fracasser	:V1__t_q_zz:Ip:Sp:2s/*
fumariacées	fumariacée	:A:e:p/*
fumariacées	fumariacée	:N:f:p/*
240101
240102
240103
240104
240105
240106
240107
240108

240109
240110
240111
240112
240113
240114
240115
240028
240029
240030
240031
240032
240033
240034

240035
240036
240037
240038
240039
240040
240041
240042







-
+







roucoulèrent	roucouler	:V1_it___zz:Is:3p!/*
réenregistre	réenregistrer	:V1__t_q_zz:Ip:Sp:1s:3s/*
réenregistre	réenregistrer	:V1__t_q_zz:E:2s/*
réinvite	réinviter	:V1__t___zz:Ip:Sp:1s:3s/*
réinvite	réinviter	:V1__t___zz:E:2s/*
sablera	sabler	:V1_it___zz:If:3s/*
smaragdines	smaragdine	:A:f:p/*
solidifiât	solidifier	:V1__t_q_zz:Sq:3s/*
solidifiât	solidifier	:V1_it_q__a:Sq:3s/*
soupirassent	soupirer	:V1_it___zz:Sq:3p/*
staffe	staffer	:V1__t___zz:Ip:Sp:1s:3s/*
staffe	staffer	:V1__t___zz:E:2s/*
surexposent	surexposer	:V1__t___zz:Ip:Sp:3p/*
surseoirai	surseoir	:V3__tn__zz:If:1s/M
toile	toiler	:V1__t___zz:Ip:Sp:1s:3s/*
toile	toiler	:V1__t___zz:E:2s/*
240169
240170
240171
240172
240173
240174
240175

240176
240177
240178
240179
240180
240181
240182
240096
240097
240098
240099
240100
240101
240102
240103
240104
240105
240106
240107
240108
240109
240110







+







dure-mère	dure-mère	:N:f:s/*
décentralisaient	décentraliser	:V1__t_q_zz:Iq:3p/*
décomplexion	décomplexion	:N:f:s/*
découvreuses	découvreuse	:N:f:p/*
défrisages	défrisage	:N:m:p/*
délaierait	délayer	:V1__t___zz:K:3s/*
déplairons	déplaire	:V3_i_nq__a:If:1p/*
dépolluante	dépolluante	:A:f:s/*
désaccouplée	désaccoupler	:V1__t___zz:Q:A:f:s/*
désenlacés	désenlacer	:V1__t___zz:Q:A:m:p/*
désensable	désensabler	:V1__t___zz:Ip:Sp:1s:3s/*
désensable	désensabler	:V1__t___zz:E:2s/*
désintrications	désintrication	:N:f:p/*
détiendrions	détenir	:V3__t____a:K:1p/*
détracté	détracter	:V1__t___zz:Q:A:1ŝ:m:s/*
240269
240270
240271
240272
240273
240274
240275
240276
240277
240278
240279
240280
240281
240282
240283
240197
240198
240199
240200
240201
240202
240203

240204
240205
240206
240207
240208
240209
240210







-







voguerions	voguer	:V1_i____zz:K:1p/*
zézaya	zézayer	:V1_i____zz:Is:3s/*
égermés	égermer	:V1__t___zz:Q:A:m:p/*
établés	établer	:V1__t___zz:Q:A:m:p/*
éternuera	éternuer	:V1_i____zz:If:3s/*
étrillèrent	étriller	:V1__t___zz:Is:3p!/*
évaserait	évaser	:V1__t_q_zz:K:3s/*
Château-d'Olonne	Château-d'Olonne	:MP:e:i/*
abréagit	abréagir	:V2_i____zz:Ip:Is:3s/*
achetâtes	acheter	:V1_it_q_zz:Is:2p/*
affinoir	affinoir	:N:m:s/*
aidassions	aider	:V1_itnq__a:Sq:1p/*
ajoutassions	ajouter	:V1_itnq__a:Sq:1p/*
anthropobiologiste	anthropobiologiste	:N:e:s/*
antipelliculaires	antipelliculaire	:N:e:p/*
241965
241966
241967
241968
241969
241970
241971
241972
241973


241974
241975
241976
241977
241978
241979
241980
241892
241893
241894
241895
241896
241897
241898


241899
241900
241901
241902
241903
241904
241905
241906
241907







-
-
+
+







détrônez	détrôner	:V1__t___zz:Ip:2p/*
détrônez	détrôner	:V1__t___zz:E:2p/*
dévalueront	dévaluer	:V1__t_q_zz:If:3p!/*
dévernis	dévernir	:V2__t___zz:Ip:Is:1s:2s/*
dévernis	dévernir	:V2__t___zz:E:2s/*
dévernis	dévernir	:V2__t___zz:Q:A:m:p/*
empaumés	empaumer	:V1__t___zz:Q:A:m:p/*
endothermicité	endothermicité	:N:f:s/*
endothermicité	endothermicité	:N:f:s/X
endothermicité	endothermicité	:N:f:s/X
endothermicité	endothermicité	:N:f:s/*
enfarge	enfarger	:V1__t_q_zz:Ip:Sp:1s:3s/*
enfarge	enfarger	:V1__t_q_zz:E:2s/*
environnions	environner	:V1__t_q_zz:Iq:Sp:1p/*
excommunieraient	excommunier	:V1__t___zz:K:3p/*
extrairions	extraire	:V3_itnq__a:K:1p/*
extuber	extuber	:V1_it____a:Y/*
factages	factage	:N:m:p/*
242392
242393
242394
242395
242396
242397
242398
242399
242400


242401
242402
242403
242404
242405
242406
242407
242319
242320
242321
242322
242323
242324
242325


242326
242327
242328
242329
242330
242331
242332
242333
242334







-
-
+
+







rouillât	rouiller	:V1_it_q_zz:Sq:3s/*
réchampie	réchampir	:V2__t___zz:Q:A:f:s/*
réchauffâmes	réchauffer	:V1__t_q_zz:Is:1p/*
répondisses	répondre	:V3_ixn___a:Sq:2s/*
répèterais	répéter	:V1_it_q_zz:K:1s:2s/R
résilieraient	résilier	:V1__t___zz:K:3p/*
scieraient	scier	:V1_it___zz:K:3p/*
solidifions	solidifier	:V1__t_q_zz:Ip:1p/*
solidifions	solidifier	:V1__t_q_zz:E:1p/*
solidifions	solidifier	:V1_it_q__a:Ip:1p/*
solidifions	solidifier	:V1_it_q__a:E:1p/*
spéculassent	spéculer	:V1_i____zz:Sq:3p/*
subrogeât	subroger	:V1__t___zz:Sq:3s/*
surchargerons	surcharger	:V1__t___zz:If:1p/*
surdimensionne	surdimensionner	:V1__t___zz:Ip:Sp:1s:3s/*
surdimensionne	surdimensionner	:V1__t___zz:E:2s/*
surgirez	surgir	:V2_i_____a:If:2p/*
surimposèrent	surimposer	:V1__t_q_zz:Is:3p!/*
242485
242486
242487
242488
242489
242490
242491
242492
242493
242494
242495
242496
242497
242498
242499
242412
242413
242414
242415
242416
242417
242418

242419
242420
242421
242422
242423
242424
242425







-







déniaisons	déniaiser	:V1__t_q_zz:Ip:1p/*
déniaisons	déniaiser	:V1__t_q_zz:E:1p/*
dérapais	déraper	:V1_i____zz:Iq:1s:2s/*
désaccoutumant	désaccoutumer	:V1__t_q_zz:P/*
désarmerions	désarmer	:V1_it_q_zz:K:1p/*
désulfura	désulfurer	:V1__t___zz:Is:3s/*
engouffres	engouffrer	:V1__t_q_zz:Ip:Sp:2s/*
entr'aime	entr'aimer	:V1____r_e_:Ip:Sp:3s/M
entremêlai	entremêler	:V1__t_q_zz:Is:1s/*
escaroles	escarole	:N:f:p/*
euromissile	euromissile	:N:m:s/*
exhiberai	exhiber	:V1__t_q_zz:If:1s/*
explorerais	explorer	:V1__t___zz:K:1s:2s/*
finno-ougrienne	finno-ougrienne	:A:f:s/*
gabionnée	gabionner	:V1__t___zz:Q:A:f:s/*
242654
242655
242656
242657
242658
242659
242660
242661
242662
242663
242664
242665
242666
242667
242668
242669
242580
242581
242582
242583
242584
242585
242586


242587
242588
242589
242590
242591
242592
242593







-
-







désajustés	désajuster	:V1__t___zz:Q:A:m:p/*
déshydraterait	déshydrater	:V1__t_q_zz:K:3s/*
déviassent	dévier	:V1_it___zz:Sq:3p/*
dévoiera	dévoyer	:V1____p_e_:If:3s/*
effilements	effilement	:N:m:p/*
empierrait	empierrer	:V1__t___zz:Iq:3s/*
endoctrines	endoctriner	:V1__t___zz:Ip:Sp:2s/*
entr'ouvrons	entr'ouvrir	:V3__t_q_zz:Ip:1p/C
entr'ouvrons	entr'ouvrir	:V3__t_q_zz:E:1p/C
expiras	expirer	:V1_it____a:Is:2s/*
fantasmera	fantasmer	:V1_it___zz:If:3s/*
farinai	fariner	:V1_it___zz:Is:1s/*
flancherai	flancher	:V1_it___zz:If:1s/*
flânerai	flâner	:V1_i____zz:If:1s/*
fourchets	fourchet	:N:m:p/*
fourguée	fourguer	:V1__t___zz:Q:A:f:s/*
243548
243549
243550
243551
243552
243553
243554
243555
243556
243557
243558
243559
243560
243561
243562
243472
243473
243474
243475
243476
243477
243478

243479
243480
243481
243482
243483
243484
243485







-







chambardées	chambarder	:V1__t___zz:Q:A:f:p/*
chapitraient	chapitrer	:V1__t___zz:Iq:3p/*
chênes-lièges	chênes-lièges	:N:m:p/*
coassants	coassante	:A:m:p/*
compostages	compostage	:N:m:p/*
connectais	connecter	:V1__t___zz:Iq:1s:2s/*
conquerrions	conquérir	:V3_it_q__a:K:1p/*
coq-à-l'âne	coq-à-l'âne	:N:m:i/*
coude-à-coude	coude-à-coude	:N:m:i/*
coéditent	coéditer	:V1__t___zz:Ip:Sp:3p/*
cryolithes	cryolithe	:N:f:p/M
cyberdélinquance	cyberdélinquance	:N:f:s/*
discutaillé	discutailler	:V1_it___zz:Q:A:1ŝ:m:s/*
dogmatisez	dogmatiser	:V1_it___zz:Ip:2p/*
dogmatisez	dogmatiser	:V1_it___zz:E:2p/*
244291
244292
244293
244294
244295
244296
244297
244298
244299
244300
244301
244302
244303
244304
244305
244214
244215
244216
244217
244218
244219
244220

244221
244222
244223
244224
244225
244226
244227







-







broutons	brouter	:V1_it___zz:Ip:1p/*
broutons	brouter	:V1_it___zz:E:1p/*
bâtonnera	bâtonner	:V1__t___zz:If:3s/*
cacaotée	cacaotée	:A:f:s/*
cacou	cacou	:N:e:s/*
cacou	cacou	:N:m:s/*
cannant	canner	:V1_it___zz:P/*
ch'timis	ch'timi	:N:A:e:p/C
chancelions	chanceler	:V1_i____zz:Iq:Sp:1p/*
chavirai	chavirer	:V1_it___zz:Is:1s/*
cofondés	cofonder	:V1__t___zz:Q:A:m:p/*
compassait	compasser	:V1__t___zz:Iq:3s/*
congratulera	congratuler	:V1__t_q_zz:If:3s/*
contrastas	contraster	:V1_it___zz:Is:2s/*
contrefaisions	contrefaire	:V3__t___zz:Iq:1p/*
246012
246013
246014
246015
246016
246017
246018

246019
246020
246021
246022
246023
246024
246025
245934
245935
245936
245937
245938
245939
245940
245941
245942
245943
245944
245945
245946
245947
245948







+







dégonflais	dégonfler	:V1_it_q_zz:Iq:1s:2s/*
dégrène	dégréner	:V1_it___zz:Ip:Sp:1s:3s/*
dégrène	dégréner	:V1_it___zz:E:2s/*
délavaient	délaver	:V1__t___zz:Iq:3p/*
démultiplexer	démultiplexer	:V1__t___zz:Y/*
démurées	démurer	:V1__t___zz:Q:A:f:p/*
dénitrifiée	dénitrifier	:V1__t___zz:Q:A:f:s/*
dépolluant	dépolluer	:V1__t___zz:P/*
désenfiler	désenfiler	:V1__t___zz:Y/*
désolassent	désoler	:V1__t_q_zz:Sq:3p/*
désopilait	désopiler	:V1__t_q_zz:Iq:3s/*
dévisagez	dévisager	:V1__t___zz:Ip:2p/*
dévisagez	dévisager	:V1__t___zz:E:2p/*
empalme	empalmer	:V1__t___zz:Ip:Sp:1s:3s/*
empalme	empalmer	:V1__t___zz:E:2s/*
246516
246517
246518
246519
246520
246521
246522
246523
246524
246525
246526
246527
246528
246529
246530
246439
246440
246441
246442
246443
246444
246445

246446
246447
246448
246449
246450
246451
246452







-







émanasse	émaner	:V1_i____zz:Sq:1s/*
épilateurs	épilatrice	:N:m:p/*
épiphanes	épiphane	:A:e:p/*
équipementières	équipementière	:N:f:p/*
éreinterait	éreinter	:V1__t_q_zz:K:3s/*
érugineuses	érugineuse	:A:f:p/*
Basse-Côte-Nord	Basse-Côte-Nord	:N:f:i/*
New_York	New_York	:MP:e:i/P
aboliriez	abolir	:V2_it____a:K:2p/*
absenterais	absenter	:V1__t_q_zz:K:1s:2s/*
aiguillonnez	aiguillonner	:V1__t___zz:Ip:2p/*
aiguillonnez	aiguillonner	:V1__t___zz:E:2p/*
amidonnait	amidonner	:V1__t___zz:Iq:3s/*
apostropherai	apostropher	:V1__t_q_zz:If:1s/*
aromatisaient	aromatiser	:V1__t___zz:Iq:3p/*
247549
247550
247551
247552
247553
247554
247555
247556
247557
247558
247559
247560
247561
247562
247563
247471
247472
247473
247474
247475
247476
247477

247478
247479
247480
247481
247482
247483
247484







-







détraqueront	détraquer	:V1__t_q_zz:If:3p!/*
détricotés	détricoter	:V1__t___zz:Q:A:m:p/*
embastionnée	embastionner	:V1__t___zz:Q:A:f:s/*
empoissonnent	empoissonner	:V1__t___zz:Ip:Sp:3p/*
enchaperonné	enchaperonner	:V1__t___zz:Q:A:1ŝ:m:s/*
enrouillés	enrouiller	:V1_i__q_zz:Q:A:m:p/*
entasseriez	entasser	:V1__t_q_zz:K:2p/*
entr'ouvriront	entr'ouvrir	:V3__t_q_zz:If:3p!/C
entraidé	entraider	:V1____r_e_:Q:A:1ŝ:m:s/*
ethnogenèses	ethnogenèse	:N:f:p/*
excommunierons	excommunier	:V1__t___zz:If:1p/*
exhéréda	exhéréder	:V1__t___zz:Is:3s/*
exterminâmes	exterminer	:V1__t___zz:Is:1p/*
facetter	facetter	:V1__t___zz:Y/*
faitier	faitière	:N:m:s/R
248402
248403
248404
248405
248406
248407
248408

248409
248410
248411
248412
248413
248414
248415
248323
248324
248325
248326
248327
248328
248329
248330
248331
248332
248333
248334
248335
248336
248337







+







terre-pleins	terre-plein	:N:m:p/M
titubèrent	tituber	:V1_i____zz:Is:3p!/*
tournassée	tournasser	:V1__t___zz:Q:A:f:s/*
transfigurons	transfigurer	:V1__t_q_zz:Ip:1p/*
transfigurons	transfigurer	:V1__t_q_zz:E:1p/*
transigerions	transiger	:V1_i____zz:K:1p/*
treuillé	treuiller	:V1__t___zz:Q:A:1ŝ:m:s/*
triturages	triturage	:N:m:p/*
télomérisation	télomérisation	:N:f:s/*
vallonnent	vallonner	:V1____p_e_:Ip:Sp:3p/*
vaporisons	vaporiser	:V1__t___zz:Ip:1p/*
vaporisons	vaporiser	:V1__t___zz:E:1p/*
vibrionnait	vibrionner	:V1_i____zz:Iq:3s/*
échaudait	échauder	:V1__t_q_zz:Iq:3s/*
éclipsâmes	éclipser	:V1__t_q_zz:Is:1p/*
250186
250187
250188
250189
250190
250191
250192
250193
250194
250195
250196
250197
250198
250199
250200
250108
250109
250110
250111
250112
250113
250114

250115
250116
250117
250118
250119
250120
250121







-







embraserez	embraser	:V1__t_q_zz:If:2p/*
empaleurs	empaleuse	:N:m:p/*
empirassent	empirer	:V1_it_q_zz:Sq:3p/*
emportassions	emporter	:V1__t_q_zz:Sq:1p/*
encabanés	encabaner	:V1__t___zz:Q:A:m:p/*
enfilerai	enfiler	:V1__t_q_zz:If:1s/*
enrouant	enrouer	:V1__t_q_zz:P/*
entr'aimiez	entr'aimer	:V1____r_e_:Iq:Sp:2p/M
envasera	envaser	:V1__t_q_zz:If:3s/*
excentres	excentrer	:V1__t___zz:Ip:Sp:2s/*
exfiltrée	exfiltrer	:V1__t___zz:Q:A:f:s/*
expulsassent	expulser	:V1__t_q_zz:Sq:3p/*
feintés	feinter	:V1_it___zz:Q:A:m:p/*
fendillèrent	fendiller	:V1__t_q_zz:Is:3p!/*
fientait	fienter	:V1_i____zz:Iq:3s/*
250511
250512
250513
250514
250515
250516
250517
250518
250519
250520
250521
250522
250523
250524
250525
250432
250433
250434
250435
250436
250437
250438

250439
250440
250441
250442
250443
250444
250445







-







stridulement	stridulement	:N:m:s/*
supervisez	superviser	:V1__t___zz:Ip:2p/*
supervisez	superviser	:V1__t___zz:E:2p/*
symbolisions	symboliser	:V1__t___zz:Iq:Sp:1p/*
syndicalisant	syndicaliser	:V1__t___zz:P/*
tacla	tacler	:V1__t___zz:Is:3s/*
tincal	tincal	:N:m:s/*
tout-à-l'égout	tout-à-l'égout	:N:m:i/*
transuranienne	transuranienne	:A:f:s/*
tuméfiera	tuméfier	:V1__t_q_zz:If:3s/*
tuniquée	tuniquée	:A:f:s/*
tâtonnerai	tâtonner	:V1_i____zz:If:1s/*
ululé	ululer	:V1_i____zz:Q:1ŝ:e:i/R
veinardes	veinarde	:N:A:f:p/*
vexerai	vexer	:V1__t_q_zz:If:1s/*
252017
252018
252019
252020
252021
252022
252023
252024
252025
252026
252027
252028
252029
252030
252031
251937
251938
251939
251940
251941
251942
251943

251944
251945
251946
251947
251948
251949
251950







-







daltonismes	daltonisme	:N:m:p/*
delphinidé	delphinidé	:N:m:s/*
diapside	diapside	:N:m:s/*
discordons	discorder	:V1_i____zz:Ip:1p/*
discordons	discorder	:V1_i____zz:E:1p/*
dissolviez	dissoudre	:V3__t_q__a:Iq:Sp:2p/*
distillatrices	distillatrice	:N:f:p/*
dos-d'âne	dos-d'âne	:N:m:i/*
défoulées	défouler	:V1__t_q_zz:Q:A:f:p/*
dégoulinera	dégouliner	:V1_i____zz:If:3s/*
déliiez	délier	:V1__t_q_zz:Iq:Sp:2p/*
démâtages	démâtage	:N:m:p/*
dénaturâmes	dénaturer	:V1__t_q_zz:Is:1p/*
dénitrés	dénitrer	:V1__t___zz:Q:A:m:p/*
dépossédions	déposséder	:V1__t___zz:Iq:Sp:1p/*
252120
252121
252122
252123
252124
252125
252126

252127
252128
252129
252130
252131
252132
252133
252039
252040
252041
252042
252043
252044
252045
252046
252047
252048
252049
252050
252051
252052
252053







+







ranimions	ranimer	:V1__t_q_zz:Iq:Sp:1p/*
rebuterais	rebuter	:V1_it_q_zz:K:1s:2s/*
rechassent	rechasser	:V1_it___zz:Ip:Sp:3p/*
recombinera	recombiner	:V1__t___zz:If:3s/*
redondait	redonder	:V1_i____zz:Iq:3s/*
regarnirent	regarnir	:V2__t___zz:Is:3p!/*
regelait	regeler	:V1_it__mzz:Iq:3s/*
resolidifier	resolidifier	:V1_it_q__a:Y/*
retonde	retondre	:V3__t___zz:Sp:1s:3s/*
retordoirs	retordoir	:N:m:p/*
retravaillons	retravailler	:V1_itn__zz:Ip:1p/*
retravaillons	retravailler	:V1_itn__zz:E:1p/*
rongeure	rongeure	:N:f:s/M
roustissure	roustissure	:N:f:s/*
royalismes	royalisme	:N:m:p/*
252241
252242
252243
252244
252245
252246
252247
252248
252249
252250
252251
252252
252253
252254
252255
252161
252162
252163
252164
252165
252166
252167

252168
252169
252170
252171
252172
252173
252174







-







déstructuraient	déstructurer	:V1__t_q_zz:Iq:3p/*
déteindraient	déteindre	:V3_it___zz:K:3p/*
embouteilla	embouteiller	:V1__t___zz:Is:3s/*
empattée	empatter	:V1__t___zz:Q:A:f:s/*
enfonças	enfoncer	:V1_it_q_zz:Is:2s/*
enrouillées	enrouiller	:V1_i__q_zz:Q:A:f:p/*
ensachaient	ensacher	:V1__t___zz:Iq:3p/*
entr'apercevait	entr'apercevoir	:V3__t_q_zz:Iq:3s/C
exemplifierait	exemplifier	:V1__t___zz:K:3s/*
faisandages	faisandage	:N:m:p/*
flanquions	flanquer	:V1__t_q_zz:Iq:Sp:1p/*
fossiliserait	fossiliser	:V1__t_q_zz:K:3s/*
fronto-temporale	fronto-temporale	:A:f:s/M
fédérons	fédérer	:V1__t_q_zz:Ip:1p/*
fédérons	fédérer	:V1__t_q_zz:E:1p/*
253485
253486
253487
253488
253489
253490
253491
253492
253493
253494
253495
253496
253497
253498
253499
253404
253405
253406
253407
253408
253409
253410

253411
253412
253413
253414
253415
253416
253417







-







empiégée	empiéger	:V1__t___zz:Q:A:f:s/*
emplume	emplumer	:V1__t___zz:Ip:Sp:1s:3s/*
emplume	emplumer	:V1__t___zz:E:2s/*
empoignâtes	empoigner	:V1__t_q_zz:Is:2p/*
empoussiérant	empoussiérer	:V1__t_q_zz:P/*
enfournes	enfourner	:V1__t_q_zz:Ip:Sp:2s/*
enliserions	enliser	:V1__t_q_zz:K:1p/*
entr'aperçoivent	entr'apercevoir	:V3__t_q_zz:Ip:Sp:3p/C
esclafferont	esclaffer	:V1____p_e_:If:3p!/*
estroprogestatif	estroprogestative	:A:m:s/*
exclamatoires	exclamatoire	:A:e:p/*
expatrierai	expatrier	:V1__t_q_zz:If:1s/*
factureraient	facturer	:V1__t___zz:K:3p/*
fanerions	faner	:V1__t_q_zz:K:1p/*
fomenterez	fomenter	:V1__t___zz:If:2p/*
254476
254477
254478
254479
254480
254481
254482
254483
254484
254485
254486
254487
254488
254489
254490
254394
254395
254396
254397
254398
254399
254400

254401
254402
254403
254404
254405
254406
254407







-







artémia	artémia	:N:f:s/*
astiquais	astiquer	:V1__t___zz:Iq:1s:2s/*
athéroscléroses	athérosclérose	:N:f:p/*
attellerais	atteler	:V1_it_q_zz:K:1s:2s/M
authentifieraient	authentifier	:V1__t_q_zz:K:3p/*
autonomiserait	autonomiser	:V1__t_q_zz:K:3s/*
avalises	avaliser	:V1__t___zz:Ip:Sp:2s/*
baha'ies	baha'ie	:N:A:f:p/C
balaierez	balayer	:V1_it____a:If:2p/*
bancher	bancher	:V1__t____a:Y/*
bavassant	bavasser	:V1_i____zz:P/*
belgo-luxembourgeoise	belgo-luxembourgeoise	:N:A:f:s/*
binez	biner	:V1_it___zz:Ip:2p/*
binez	biner	:V1_it___zz:E:2p/*
bissez	bisser	:V1__t___zz:Ip:2p/*
254849
254850
254851
254852
254853
254854
254855


254856
254857
254858
254859
254860
254861
254862
254766
254767
254768
254769
254770
254771
254772
254773
254774
254775
254776
254777
254778
254779
254780
254781







+
+







reliâmes	relier	:V1__t___zz:Is:1p/*
rembarquerions	rembarquer	:V1_it_q_zz:K:1p/*
remémorerez	remémorer	:V1__t_q_zz:If:2p/*
repesais	repeser	:V1_it_q_zz:Iq:1s:2s/*
repériez	repérer	:V1__t_q_zz:Iq:Sp:2p/*
requestionnant	requestionner	:V1__t_q_zz:P/*
resaluent	resaluer	:V1__t___zz:Ip:Sp:3p/*
resolidifié	resolidifier	:V1_it_q__a:Q:A:1ŝ:m:s/*
resolidifiée	resolidifier	:V1_it_q__a:Q:A:f:s/*
rogniez	rogner	:V1_it___zz:Iq:Sp:2p/*
romantisées	romantiser	:V1_it___zz:Q:A:f:p/*
roucoulée	roucouler	:V1_it___zz:Q:A:f:s/*
rouspétez	rouspéter	:V1_i____zz:Ip:2p/*
rouspétez	rouspéter	:V1_i____zz:E:2p/*
rubiettes	rubiette	:N:f:p/*
rugissons	rugir	:V2_it____a:Ip:1p/*
255941
255942
255943
255944
255945
255946
255947
255948
255949
255950
255951
255952
255953
255954
255955
255860
255861
255862
255863
255864
255865
255866

255867
255868
255869
255870
255871
255872
255873







-







soudas	souder	:V1__t_q_zz:Is:2s/*
soupirerions	soupirer	:V1_it___zz:K:1p/*
suppléeras	suppléer	:V1__tn__zz:If:2s/*
surmènerait	surmener	:V1__t_q_zz:K:3s/*
séjourneras	séjourner	:V1_i____zz:If:2s/*
talonnages	talonnage	:N:m:p/*
tamiseuses	tamiseuse	:N:A:f:p/*
tape-à-l'œil	tape-à-l'œil	:A:e:i/*
taponnage	taponnage	:N:m:s/*
technocratise	technocratiser	:V1__t_q_zz:Ip:Sp:1s:3s/*
technocratise	technocratiser	:V1__t_q_zz:E:2s/*
tergiverses	tergiverser	:V1_i____zz:Ip:Sp:2s/*
titrè	titrer	:V1__t____a:Ip:1ś/R
trainements	trainement	:N:m:p/R
tresserais	tresser	:V1__t___zz:K:1s:2s/*
256438
256439
256440
256441
256442
256443
256444
256445
256446
256447
256448
256449
256450
256451
256452
256356
256357
256358
256359
256360
256361
256362

256363
256364
256365
256366
256367
256368
256369







-







déraisonnerons	déraisonner	:V1_i____zz:If:1p/*
déramant	déramer	:V1_it___zz:P/*
désaccouplant	désaccoupler	:V1__t___zz:P/*
désenivrait	désenivrer	:V1_it___zz:Iq:3s/*
détachasse	détacher	:V1__t_q_zz:Sq:1s/*
dételais	dételer	:V1_it___zz:Iq:1s:2s/*
dévêtiront	dévêtir	:V3__t_q__a:If:3p!/*
entr'aimions	entr'aimer	:V1____r_e_:Iq:Sp:1p/M
espaceraient	espacer	:V1__t_q_zz:K:3p/*
exsudâtes	exsuder	:V1_it___zz:Is:2p/*
filoutaient	filouter	:V1_it___zz:Iq:3p/*
fissureront	fissurer	:V1__t_q_zz:If:3p!/*
fleurissions	fleurir	:V2_it_q_zz:Iq:Sp:Sq:1p/*
floquer	floquer	:V1__t___zz:Y/*
fléchiriez	fléchir	:V2_it_q_zz:K:2p/*
256565
256566
256567
256568
256569
256570
256571
256572

256573
256574
256575
256576
256577
256578
256579
256482
256483
256484
256485
256486
256487
256488

256489
256490
256491
256492
256493
256494
256495
256496







-
+







trémoussai	trémousser	:V1____p_e_:Is:1s/*
vagabondons	vagabonder	:V1_i_____a:Ip:1p/*
vagabondons	vagabonder	:V1_i_____a:E:1p/*
viciez	vicier	:V1_it___zz:Ip:2p/*
viciez	vicier	:V1_it___zz:E:2p/*
visionnai	visionner	:V1__t___zz:Is:1s/*
zigzaguions	zigzaguer	:V1_i____zz:Iq:Sp:1p/*
çuilà	çuilà	:G:Os:Oo:O3:m:s/*
çuilà	çuilà	:G:Od:m:s/*
ébarbent	ébarber	:V1__t___zz:Ip:Sp:3p/*
ébattrait	ébattre	:V3____p_e_:K:3s/*
écorchiez	écorcher	:V1__t_q_zz:Iq:Sp:2p/*
écrémerait	écrémer	:V1__t___zz:K:3s/M
électromyographies	électromyographie	:N:f:p/*
émoussements	émoussement	:N:m:p/*
émoussons	émousser	:V1__t_q_zz:Ip:1p/*
259057
259058
259059
259060
259061
259062
259063
259064
259065
259066
259067
259068
259069
259070
259071
258974
258975
258976
258977
258978
258979
258980

258981
258982
258983
258984
258985
258986
258987







-







écourterons	écourter	:V1__t___zz:If:1p/*
écumons	écumer	:V1_it___zz:Ip:1p/*
écumons	écumer	:V1_it___zz:E:1p/*
édicterez	édicter	:V1__t___zz:If:2p/*
électriserons	électriser	:V1__t___zz:If:1p/*
étanchéifiées	étanchéifier	:V1__t___zz:Q:A:f:p/*
Dollard-des-Ormeaux	Dollard-des-Ormeaux	:MP:e:i/*
R'lyeh	R'lyeh	:MP:e:i/X
ablate	ablater	:V1__t_q_zz:Ip:Sp:1s:3s/*
ablate	ablater	:V1__t_q_zz:E:2s/*
accrobranche	accrobranche	:N:m:s/*
adonnâmes	adonner	:V1_i__q_zz:Is:1p/*
agiterais	agiter	:V1__t_q_zz:K:1s:2s/*
aguerrirait	aguerrir	:V2__t_q_zz:K:3s/*
alarmerions	alarmer	:V1__t_q__a:K:1p/*
259183
259184
259185
259186
259187
259188
259189


259190
259191
259192
259193
259194
259195
259196
259099
259100
259101
259102
259103
259104
259105
259106
259107
259108
259109
259110
259111
259112
259113
259114







+
+







rafistolera	rafistoler	:V1__t___zz:If:3s/*
reclasserait	reclasser	:V1__t___zz:K:3s/*
recomposerai	recomposer	:V1__t_q_zz:If:1s/*
reconnectez	reconnecter	:V1__t_q_zz:Ip:2p/*
reconnectez	reconnecter	:V1__t_q_zz:E:2p/*
redécollera	redécoller	:V1_it_q_zz:If:3s/*
repêches	repêcher	:V1__t___zz:Ip:Sp:2s/*
resolidifie	resolidifier	:V1_it_q__a:Ip:Sp:1s:3s/*
resolidifie	resolidifier	:V1_it_q__a:E:2s/*
retraduirait	retraduire	:V3__t___zz:K:3s/*
retraverserait	retraverser	:V1__t___zz:K:3s/*
retraverserons	retraverser	:V1__t___zz:If:1p/*
rythmicienne	rythmicienne	:N:f:s/*
réamorcerait	réamorcer	:V1__t___zz:K:3s/*
réimprimerais	réimprimer	:V1__t___zz:K:1s:2s/*
répercutais	répercuter	:V1__t_q_zz:Iq:1s:2s/*
259672
259673
259674
259675
259676
259677
259678
259679
259680
259681
259682
259683
259684
259685
259686
259590
259591
259592
259593
259594
259595
259596

259597
259598
259599
259600
259601
259602
259603







-







déspiritualisés	déspiritualiser	:V1__t_q_zz:Q:A:m:p/*
détaillas	détailler	:V1__t___zz:Is:2s/*
dévouâmes	dévouer	:V1__t_q_zz:Is:1p/*
emberlificotent	emberlificoter	:V1__t_q_zz:Ip:Sp:3p/*
enfumons	enfumer	:V1__t_q_zz:Ip:1p/*
enfumons	enfumer	:V1__t_q_zz:E:1p/*
engloutirions	engloutir	:V2__t_q_zz:K:1p/*
entr'égorgées	entr'égorger	:V1____r_e_:Q:A:f:p/M
entredéchiré	entredéchirer	:V1____r_e_:Q:A:1ŝ:m:s/R
esbaudissaient	esbaudir	:V2____p_e_:Iq:3p/*
esquisserions	esquisser	:V1__t_q_zz:K:1p/*
exonèrerait	exonérer	:V1__t_q_zz:K:3s/R
farinacé	farinacée	:A:m:s/*
faïencières	faïencière	:N:f:p/*
feutrière	feutrière	:N:A:f:s/*
260310
260311
260312
260313
260314
260315
260316

260317
260318
260319
260320
260321
260322
260323
260227
260228
260229
260230
260231
260232
260233
260234
260235
260236
260237
260238
260239
260240
260241







+







touillons	touiller	:V1__t___zz:Ip:1p/*
touillons	touiller	:V1__t___zz:E:1p/*
tourbillonnez	tourbillonner	:V1_i____zz:Ip:2p/*
tourbillonnez	tourbillonner	:V1_i____zz:E:2p/*
transperciez	transpercer	:V1__t___zz:Iq:Sp:2p/*
traînaillaient	traînailler	:V1_i____zz:Iq:3p/M
trochure	trochure	:N:f:s/*
trollesques	trollesque	:A:e:p/*
tunings	tuning	:N:m:p/*
vice-première	vice-première	:A:f:s/*
vidéographies	vidéographie	:N:f:p/*
vociférez	vociférer	:V1_it___zz:Ip:2p/*
vociférez	vociférer	:V1_it___zz:E:2p/*
vérifieuse	vérifieuse	:N:f:s/*
zappez	zapper	:V1_it___zz:Ip:2p/*
260338
260339
260340
260341
260342
260343
260344
260345

260346
260347
260348
260349
260350
260351
260352
260256
260257
260258
260259
260260
260261
260262

260263
260264
260265
260266
260267
260268
260269
260270







-
+







affute	affuter	:V1__t___zz:E:2s/R
alevines	aleviner	:V1__t___zz:Ip:Sp:2s/*
alizéennes	alizéenne	:A:f:p/*
allouassent	allouer	:V1__t_q_zz:Sq:3p/*
amadouement	amadouement	:N:m:s/*
amérindianiste	amérindianiste	:N:e:s/*
antihoraires	antihoraire	:A:e:p/*
apportè	apporter	:V1_it____a:Ip:1ś/R
apportè	apporter	:V1_itn___a:Ip:1ś/R
assourdissez	assourdir	:V2_it_q_zz:Ip:2p/*
assourdissez	assourdir	:V2_it_q_zz:E:2p/*
atomisaient	atomiser	:V1__t_q_zz:Iq:3p/*
audio-visuel	audio-visuelle	:A:m:s/C
auto-assemblage	auto-assemblage	:N:m:s/C
bavions	baver	:V1_i____zz:Iq:Sp:1p/*
bernais	berner	:V1__t___zz:Iq:1s:2s/*
260407
260408
260409
260410
260411
260412
260413
260414
260415
260416
260417
260418
260419
260420
260421
260422
260325
260326
260327
260328
260329
260330
260331


260332
260333
260334
260335
260336
260337
260338







-
-







empiéteriez	empiéter	:V1_i____zz:K:2p/M
enchatonne	enchatonner	:V1__t___zz:Ip:Sp:1s:3s/*
enchatonne	enchatonner	:V1__t___zz:E:2s/*
enchaînâmes	enchaîner	:V1_it_q_zz:Is:1p/M
enquille	enquiller	:V1_i____zz:Ip:Sp:1s:3s/*
enquille	enquiller	:V1_i____zz:E:2s/*
enthousiasmions	enthousiasmer	:V1__t_q_zz:Iq:Sp:1p/*
entr'apercevons	entr'apercevoir	:V3__t_q_zz:Ip:1p/C
entr'apercevons	entr'apercevoir	:V3__t_q_zz:E:1p/C
entraideraient	entraider	:V1____r_e_:K:3p/*
entêterais	entêter	:V1__t_q_zz:K:1s:2s/*
estimatrice	estimatrice	:N:f:s/*
exauçons	exaucer	:V1__t_q_zz:Ip:1p/*
exauçons	exaucer	:V1__t_q_zz:E:1p/*
exhaussez	exhausser	:V1__t___zz:Ip:2p/*
exhaussez	exhausser	:V1__t___zz:E:2p/*
260548
260549
260550
260551
260552
260553
260554
260555
260556
260557
260558
260559
260560
260561
260562
260464
260465
260466
260467
260468
260469
260470

260471
260472
260473
260474
260475
260476
260477







-







zézayent	zézayer	:V1_i____zz:Ip:Sp:3p/*
ébranchoirs	ébranchoir	:N:m:p/*
ébrouera	ébrouer	:V1____p_e_:If:3s/*
échèle	écheler	:V1__t_q_zz:Ip:Sp:1s:3s/R
échèle	écheler	:V1__t_q_zz:E:2s/R
éjarrée	éjarrer	:V1__t___zz:Q:A:f:s/*
émergerez	émerger	:V1_i_____a:If:2p/*
Cléon-d'Andran	Cléon-d'Andran	:MP:e:i/X
acido-basiques	acido-basique	:A:e:p/M
aidè	aider	:V1_itnq__a:Ip:1ś/R
amentacée	amentacée	:N:f:s/*
angliches	angliche	:N:A:e:p/*
arachnophobie	arachnophobie	:N:f:s/*
argilo-siliceux	argilo-siliceuse	:A:m:i/M
ascensoriste	ascensoriste	:N:e:s/*
261174
261175
261176
261177
261178
261179
261180

261181
261182
261183
261184
261185
261186
261187
261089
261090
261091
261092
261093
261094
261095
261096
261097
261098
261099
261100
261101
261102
261103







+







remballez	remballer	:V1__t___zz:Ip:2p/*
remballez	remballer	:V1__t___zz:E:2p/*
rembourres	rembourrer	:V1__t___zz:Ip:Sp:2s/*
remportassiez	remporter	:V1__t___zz:Sq:2p/*
renationalise	renationaliser	:V1_it____a:Ip:Sp:1s:3s/*
renationalise	renationaliser	:V1_it____a:E:2s/*
repesai	repeser	:V1_it_q_zz:Is:1s/*
resolidifient	resolidifier	:V1_it_q__a:Ip:Sp:3p/*
retîntes	retenir	:V3_it_q__a:Is:2p/*
ripaille	ripailler	:V1_i____zz:Ip:Sp:1s:3s/*
ripaille	ripailler	:V1_i____zz:E:2s/*
ripailles	ripailler	:V1_i____zz:Ip:Sp:2s/*
rocking-chair	rocking-chair	:N:m:s/M
réviseuse	réviseuse	:N:f:s/*
salasse	saler	:V1__t___zz:Sq:1s/*
261706
261707
261708
261709
261710
261711
261712
261713
261714


261715
261716
261717
261718
261719
261720
261721
261622
261623
261624
261625
261626
261627
261628


261629
261630
261631
261632
261633
261634
261635
261636
261637







-
-
+
+







déclassifie	déclassifier	:V1__t_q_zz:Ip:Sp:1s:3s/*
déclassifie	déclassifier	:V1__t_q_zz:E:2s/*
démystifions	démystifier	:V1__t___zz:Ip:1p/*
démystifions	démystifier	:V1__t___zz:E:1p/*
désincorporés	désincorporer	:V1__t___zz:Q:A:m:p/*
désoxyriboses	désoxyribose	:N:m:p/*
enrageât	enrager	:V1_i____zz:Sq:3s/*
entrelaçons	entrelacer	:V1__t_q_zz:Ip:1p/*
entrelaçons	entrelacer	:V1__t_q_zz:E:1p/*
entrelaçons	entrelacer	:V1__t_q__a:Ip:1p/*
entrelaçons	entrelacer	:V1__t_q__a:E:1p/*
enveloppeuse	enveloppeuse	:N:f:s/*
essouchée	essoucher	:V1__t___zz:Q:A:f:s/*
essuie-tout	essuie-tout	:N:m:i/M
excursionnèrent	excursionner	:V1_i____zz:Is:3p!/*
flambai	flamber	:V1_it___zz:Is:1s/*
flambeuses	flambeuse	:N:f:p/*
forniquèrent	forniquer	:V1_i____zz:Is:3p!/*
263196
263197
263198
263199
263200
263201
263202
263203
263204
263205
263206
263207
263208
263209
263210
263211
263212
263213
263112
263113
263114
263115
263116
263117
263118




263119
263120
263121
263122
263123
263124
263125







-
-
-
-







désobstruez	désobstruer	:V1__t___zz:E:2p/*
désétatise	désétatiser	:V1__t___zz:Ip:Sp:1s:3s/*
désétatise	désétatiser	:V1__t___zz:E:2s/*
emplirais	emplir	:V2_it_q_zz:K:1s:2s/*
encourageras	encourager	:V1__t_q_zz:If:2s/*
enfuîtes	enfuir	:V3____p_e_:Is:2p/*
engranges	engranger	:V1__t___zz:Ip:Sp:2s/*
entr'aimant	entr'aimer	:V1____r_e_:P/M
entr'aperçois	entr'apercevoir	:V3__t_q_zz:Ip:1s:2s/C
entr'aperçois	entr'apercevoir	:V3__t_q_zz:E:2s/C
entr'égorgeassent	entr'égorger	:V1____r_e_:Sq:3p/M
entre-déchirent	entre-déchirer	:V1____r_e_:Ip:Sp:3p/M
envenimes	envenimer	:V1__t_q_zz:Ip:Sp:2s/*
environniez	environner	:V1__t_q_zz:Iq:Sp:2p/*
euro-obligations	euro-obligation	:N:f:p/M
euroobligataires	euroobligataire	:A:e:p/R
exhumâmes	exhumer	:V1__t___zz:Is:1p/*
expectorât	expectorer	:V1_it___zz:Sq:3s/*
263475
263476
263477
263478
263479
263480
263481
263482
263483
263484
263485
263486
263487
263488
263489
263387
263388
263389
263390
263391
263392
263393

263394
263395
263396
263397
263398
263399
263400







-







mâchure	mâchurer	:V1__t___zz:E:2s/*
mâchures	mâchurer	:V1__t___zz:Ip:Sp:2s/*
médicalisantes	médicalisante	:A:f:p/*
nilo-saharien	nilo-saharienne	:A:m:s/*
octonion	octonion	:N:m:s/*
ostéo-articulaires	ostéo-articulaire	:A:e:p/C
oto-rhino-laryngologiste	oto-rhino-laryngologiste	:N:e:s/M
pas-d'âne	pas-d'âne	:N:m:i/*
philosopheras	philosopher	:V1_i____zz:If:2s/*
pistonnait	pistonner	:V1__t___zz:Iq:3s/*
piégeraient	piéger	:V1__t___zz:K:3p/M
plagias	plagier	:V1_it___zz:Is:2s/*
plurithématiques	plurithématique	:A:e:p/*
pondîmes	pondre	:V3_it____a:Is:1p/*
postsériel	postsérielle	:A:m:s/*
266406
266407
266408
266409
266410
266411
266412
266413

266414
266415
266416
266417
266418
266419
266420
266317
266318
266319
266320
266321
266322
266323

266324
266325
266326
266327
266328
266329
266330
266331







-
+







enclouez	enclouer	:V1__t___zz:Ip:2p/*
enclouez	enclouer	:V1__t___zz:E:2p/*
enfûter	enfûter	:V1__t___zz:Y/M
enrôlas	enrôler	:V1__t_q_zz:Is:2s/*
ensaboter	ensaboter	:V1__t___zz:Y/*
enserrions	enserrer	:V1__t___zz:Iq:Sp:1p/*
entonnassent	entonner	:V1__t___zz:Sq:3p/*
entrelaçai	entrelacer	:V1__t_q_zz:Is:1s/*
entrelaçai	entrelacer	:V1__t_q__a:Is:1s/*
esclaffez	esclaffer	:V1____p_e_:Ip:2p/*
esclaffez	esclaffer	:V1____p_e_:E:2p/*
fartera	farter	:V1__t___zz:If:3s/*
fayotent	fayoter	:V1_i____zz:Ip:Sp:3p/*
fendrions	fendre	:V3__t_q_zz:K:1p/*
fenestrer	fenestrer	:V1__t___zz:Y/*
fluxas	fluxer	:V1__t___zz:Is:2s/*
269024
269025
269026
269027
269028
269029
269030
269031
269032
269033
269034
269035
269036
269037
269038
268935
268936
268937
268938
268939
268940
268941

268942
268943
268944
268945
268946
268947
268948







-







assenons	assener	:V1__t___zz:E:1p/C
assénât	asséner	:V1__t___zz:Sq:3s/*
attiserai	attiser	:V1__t___zz:If:1s/*
augurerions	augurer	:V1_it___zz:K:1p/*
azimutés	azimuter	:V1__t___zz:Q:A:m:p/*
badigeonnes	badigeonner	:V1__tnq_zz:Ip:Sp:2s/*
berçassent	bercer	:V1__t_q_zz:Sq:3p/*
bernard-l'ermite	bernard-l'ermite	:N:m:i/R
bestialisées	bestialiser	:V1__t_q__a:Q:A:f:p/*
biché	bicher	:V1_i____zz:Q:1ŝ:e:i/*
bissexuelles	bissexuelle	:N:A:f:p/C
blasèrent	blaser	:V1__t_q_zz:Is:3p!/*
boitillantes	boitillante	:A:f:p/*
bottèrent	botter	:V1_it_q_zz:Is:3p!/*
boulangées	boulanger	:V1_it___zz:Q:A:f:p/*
269241
269242
269243
269244
269245
269246
269247
269248
269249
269250
269251
269252
269253
269254
269255
269151
269152
269153
269154
269155
269156
269157

269158
269159
269160
269161
269162
269163
269164







-







pigeonnés	pigeonner	:V1__t___zz:Q:A:m:p/*
pissiez	pisser	:V1_it___zz:Iq:Sp:2p/*
pistera	pister	:V1__t___zz:If:3s/*
pitera	piter	:V1_i____zz:If:3s/*
planifiions	planifier	:V1__t___zz:Iq:Sp:1p/*
plumetée	plumetée	:A:f:s/*
pondérerons	pondérer	:V1__t___zz:If:1p/M
pont-l'évêque	pont-l'évêque	:N:m:i/*
priserons	priser	:V1_it___zz:If:1p/*
préexistais	préexister	:V1_i____zz:Iq:1s:2s/*
péteraient	péter	:V1_it_q_zz:K:3p/M
quillées	quiller	:V1__t___zz:Q:A:f:p/*
rabougrirent	rabougrir	:V2_it_q_zz:Is:3p!/*
raccommodables	raccommodable	:A:e:p/*
raccoutumée	raccoutumer	:V1__t_q_zz:Q:A:f:s/*
270653
270654
270655
270656
270657
270658
270659
270660
270661
270662
270663
270664
270665
270666
270667
270562
270563
270564
270565
270566
270567
270568

270569
270570
270571
270572
270573
270574
270575







-







enlaidiront	enlaidir	:V2_it_q_zz:If:3p!/*
enquêtai	enquêter	:V1_i_____a:Is:1s/*
enroberont	enrober	:V1__t_q_zz:If:3p!/*
enrouillent	enrouiller	:V1_i__q_zz:Ip:Sp:3p/*
ensacha	ensacher	:V1__t___zz:Is:3s/*
entortillais	entortiller	:V1__t_q_zz:Iq:1s:2s/*
entourâtes	entourer	:V1__t_q_zz:Is:2p/*
entr'ouvrirons	entr'ouvrir	:V3__t_q_zz:If:1p/C
envaseraient	envaser	:V1__t_q_zz:K:3p/*
escarrifiés	escarrifier	:V1__t___zz:Q:A:m:p/*
escort-girl	escort-girl	:N:f:s/*
esquintez	esquinter	:V1__t_q_zz:Ip:2p/*
esquintez	esquinter	:V1__t_q_zz:E:2p/*
estrapadé	estrapader	:V1__t___zz:Q:A:1ŝ:m:s/*
eszett	eszett	:N:m:s/*
270876
270877
270878
270879
270880
270881
270882

270883
270884
270885
270886
270887
270888
270889
270784
270785
270786
270787
270788
270789
270790
270791
270792
270793
270794
270795
270796
270797
270798







+







amplifierez	amplifier	:V1__t_q_zz:If:2p/*
amuse-gueules	amuse-gueule	:N:m:p/*
aplanissions	aplanir	:V2__t_q_zz:Iq:Sp:Sq:1p/*
arc-boutées	arc-bouter	:V1__t_q_zz:Q:A:f:p/M
arriérant	arriérer	:V1__t___zz:P/*
asservisses	asservir	:V2__t_q_zz:Sp:Sq:2s/*
auto-immun	auto-immune	:A:m:s/*
autocomplétion	autocomplétion	:N:f:s/*
baraquait	baraquer	:V1_it___zz:Iq:3s/*
bazardaient	bazarder	:V1__t___zz:Iq:3p/*
belle-de-nuit	belle-de-nuit	:N:f:s/*
belles-de-nuit	belles-de-nuit	:N:f:p/*
blêmissements	blêmissement	:N:m:p/*
botanisait	botaniser	:V1_i____zz:Iq:3s/*
bougonnèrent	bougonner	:V1_it___zz:Is:3p!/*
271427
271428
271429
271430
271431
271432
271433
271434
271435
271436
271437
271438
271439
271440
271441
271336
271337
271338
271339
271340
271341
271342

271343
271344
271345
271346
271347
271348
271349







-







émulsionnez	émulsionner	:V1__t___zz:E:2p/*
éprenions	éprendre	:V3____p_e_:Iq:Sp:1p/*
éthyne	éthyne	:N:m:s/*
étirât	étirer	:V1__t_q_zz:Sq:3s/*
étudiassions	étudier	:V1_it_q__a:Sq:1p/*
éviderait	évider	:V1__t___zz:K:3s/*
CC-BY-ND	CC-BY-ND	:MP:e:i/X
Los_Angeles	Los_Angeles	:MP:f:i/P
abdiquasse	abdiquer	:V1_it___zz:Sq:1s/*
abonnerions	abonner	:V1__t_q_zz:K:1p/*
adjudantes	adjudante	:N:f:p/*
alambiquera	alambiquer	:V1__t___zz:If:3s/*
anatomo-pathologiques	anatomo-pathologique	:A:e:p/C
anglo-néerlandais	anglo-néerlandaise	:N:A:m:i/*
anglo-russes	anglo-russe	:N:A:e:p/*
271540
271541
271542
271543
271544
271545
271546
271547
271548
271549
271550
271551
271552
271553
271554
271448
271449
271450
271451
271452
271453
271454

271455
271456
271457
271458
271459
271460
271461







-







désarticuleront	désarticuler	:V1__t_q_zz:If:3p!/*
détapisser	détapisser	:V1__t___zz:Y/*
détîntes	détenir	:V3__t____a:Is:2p/*
effileront	effiler	:V1__t_q_zz:If:3p!/*
emblavera	emblaver	:V1__t___zz:If:3s/*
encolla	encoller	:V1__t___zz:Is:3s/*
enterais	enter	:V1__t___zz:K:1s:2s/*
entr'aimèrent	entr'aimer	:V1____r_e_:Is:3p!/M
entre-nœud	entre-nœud	:N:m:s/M
entre-regardaient	entre-regarder	:V1____r_e_:Iq:3p/M
entrebattirent	entrebattre	:V3____p_e_:Is:3p!/*
exfoliai	exfolier	:V1__t_q_zz:Is:1s/*
extorquassent	extorquer	:V1__t___zz:Sq:3p/*
farcirait	farcir	:V2__t_q_zz:K:3s/*
feintions	feinter	:V1_it___zz:Iq:Sp:1p/*
271969
271970
271971
271972
271973
271974
271975
271976
271977

271978
271979
271980
271981
271982
271983
271984
271876
271877
271878
271879
271880
271881
271882

271883
271884
271885
271886
271887
271888
271889
271890
271891







-

+







arquebusez	arquebuser	:V1__t___zz:Ip:2p/*
arquebusez	arquebuser	:V1__t___zz:E:2p/*
assurance-accidents	assurance-accidents	:N:f:s/*
attige	attiger	:V1_it___zz:Ip:Sp:1s:3s/*
attige	attiger	:V1_it___zz:E:2s/*
auto-immunitaire	auto-immunitaire	:A:e:s/*
balle-molle	balle-molle	:N:f:s/*
bateau-pompe	bateau-pompe	:N:m:s/*
bateaux-lavoirs	bateaux-lavoirs	:N:m:p/*
bateau-pompe	bateau-pompe	:N:m:s/*
bouchonnez	bouchonner	:V1_it_q_zz:Ip:2p/*
bouchonnez	bouchonner	:V1_it_q_zz:E:2p/*
bouine	bouiner	:V1_i_____a:Ip:Sp:1s:3s/X
bouine	bouiner	:V1_i_____a:E:2s/X
bucco-dentaires	bucco-dentaire	:A:e:p/M
buzzes	buzzer	:V1_i____zz:Ip:Sp:2s/*
cendrez	cendrer	:V1__t___zz:Ip:2p/*
272350
272351
272352
272353
272354
272355
272356
272357
272358
272359
272360
272361
272362
272363
272364
272365
272366
272367
272257
272258
272259
272260
272261
272262
272263

272264
272265

272266
272267
272268
272269
272270
272271
272272







-


-







auto-tamponneuse	auto-tamponneuse	:N:f:s/M
banquète	banqueter	:V1_i____zz:Ip:Sp:1s:3s/R
banquète	banqueter	:V1_i____zz:E:2s/R
bavoche	bavocher	:V1_i____zz:Ip:Sp:1s:3s/*
bavoche	bavocher	:V1_i____zz:E:2s/*
becquetèrent	becqueter	:V1__t___zz:Is:3p!/R
becquetèrent	becqueter	:V1__t___zz:Is:3p!/M
bin's	bin's	:N:m:i/*
botnets	botnet	:N:m:p/*
bouche-trous	bouche-trou	:N:m:p/*
bouton-d'or	bouton-d'or	:N:m:s/*
branlions	branler	:V1_it_q_zz:Iq:Sp:1p/*
brouillasse	brouillasser	:V1_i___mzz:Ip:Sp:3s/*
chow-chow	chow-chow	:N:m:s/M
circoncisons	circoncire	:V3__t___zz:Ip:1p/*
circoncisons	circoncire	:V3__t___zz:E:1p/*
climato-sceptiques	climato-sceptique	:N:e:p/M
contre-ion	contre-ion	:N:m:s/*
272696
272697
272698
272699
272700
272701
272702
272703
272704
272705
272706
272707
272708
272709
272710
272601
272602
272603
272604
272605
272606
272607

272608
272609
272610
272611
272612
272613
272614







-







élongeons	élonger	:V1__t___zz:E:1p/*
étrennez	étrenner	:V1_it___zz:Ip:2p/*
étrennez	étrenner	:V1_it___zz:E:2p/*
œil-de-chat	œil-de-chat	:N:m:s/*
FSFE	FSFE	:N:f:i/X
Grötzsch	Grötzsch	:M2:e:i/*
Konqi	Konqi	:M1:m:i/X
La_Rochelle	La_Rochelle	:MP:e:i/P
SpagoBI	SpagoBI	:MP:m:i/X
Zawinski	Zawinski	:M2:e:i/X
abat-jour	abat-jour	:N:m:s/R
abat-jours	abat-jour	:N:m:p/R
acrosport	acrosport	:N:m:s/*
ajourons	ajourer	:V1__t___zz:Ip:1p/*
ajourons	ajourer	:V1__t___zz:E:1p/*
272857
272858
272859
272860
272861
272862
272863
272864
272865
272866
272867
272868
272869
272870
272871
272761
272762
272763
272764
272765
272766
272767

272768
272769
272770
272771
272772
272773
272774







-







verger	verger	:V1_i____zz:Y/*
vignetage	vignetage	:N:m:s/*
éboulez	ébouler	:V1_it_q_zz:Ip:2p/*
éboulez	ébouler	:V1_it_q_zz:E:2p/*
éjaculez	éjaculer	:V1__t___zz:Ip:2p/*
éjaculez	éjaculer	:V1__t___zz:E:2p/*
Friendica	Friendica	:MP:m:i/X
K'nex	K'nex	:MP:m:i/X
SonarQube	SonarQube	:MP:m:i/X
agaricales	agaricale	:N:f:p/*
ampère-heure	ampère-heure	:N:m:s/M
anastomosons	anastomoser	:V1_i__q_zz:Ip:1p/*
anastomosons	anastomoser	:V1_i__q_zz:E:1p/*
anglo-espagnoles	anglo-espagnole	:N:A:f:p/*
arc-boutée	arc-bouter	:V1__t_q_zz:Q:A:f:s/M
273115
273116
273117
273118
273119
273120
273121
273122
273123
273124
273125
273126
273127
273128
273129
273018
273019
273020
273021
273022
273023
273024

273025
273026
273027
273028
273029
273030
273031







-







patche	patcher	:V1_it____a:Ip:Sp:1s:3s/*
patche	patcher	:V1_it____a:E:2s/*
patché	patcher	:V1_it____a:Q:A:1ŝ:m:s/*
plâtrons	plâtrer	:V1__t___zz:Ip:1p/*
plâtrons	plâtrer	:V1__t___zz:E:1p/*
porte-aigle	porte-aigle	:N:m:i/C
post-natal	post-natale	:A:m:s/C
prim'Holstein	prim'Holstein	:N:A:e:i/*
périmons	périmer	:V1____p_e_:Ip:1p/*
périmons	périmer	:V1____p_e_:E:1p/*
radiez	radier	:V1__t___zz:Ip:2p/*
radiez	radier	:V1__t___zz:E:2p/*
radiocommandées	radiocommandée	:A:f:p/*
recuisons	recuire	:V3_it____a:Ip:1p/*
recuisons	recuire	:V3_it____a:E:1p/*
273189
273190
273191
273192
273193
273194
273195
273196
273197
273198
273199
273200
273201
273202
273203
273091
273092
273093
273094
273095
273096
273097

273098
273099
273100
273101
273102
273103
273104







-







attrape-tout	attrape-tout	:A:e:i/M
austro-française	austro-française	:N:A:f:s/*
avions-cargos	avions-cargos	:N:m:p/*
baltons	balter	:V1__t___zz:Ip:1p/*
baltons	balter	:V1__t___zz:E:1p/*
bardât	barder	:V1__t___zz:Sq:3s/*
bardât	barder	:V1_i___mzz:Sq:3s/*
bernard-l'hermite	bernard-l'hermite	:N:m:i/M
bi-dimensionnel	bi-dimensionnelle	:A:m:s/C
blackboule	blackbouler	:V1__t___zz:Ip:Sp:1s:3s/*
blackboule	blackbouler	:V1__t___zz:E:2s/*
blêmisse	blêmir	:V2_i_____a:Sp:Sq:1s/*
blêmisse	blêmir	:V2_i_____a:Sp:3s/*
bourdonnons	bourdonner	:V1_i____zz:Ip:1p/*
bourdonnons	bourdonner	:V1_i____zz:E:1p/*
273324
273325
273326
273327
273328
273329
273330
273331
273332
273333
273334
273335
273336
273337
273338
273225
273226
273227
273228
273229
273230
273231

273232
273233
273234
273235
273236
273237
273238







-







réélisez	réélire	:V3__t____a:Ip:2p/*
réélisez	réélire	:V3__t____a:E:2p/*
sampleurs	sampleur	:N:m:p/R
semi-auxiliaire	semi-auxiliaire	:A:e:s/*
semi-auxiliaire	semi-auxiliaire	:N:m:s/*
nanosievert	sievert	:N:m:s/*
socio-techniques	socio-technique	:A:e:p/C
sot-l'y-laisse	sot-l'y-laisse	:N:m:i/*
soulons	souler	:V1__t_q_zz:Ip:1p/R
soulons	souler	:V1__t_q_zz:E:1p/R
sous-consommation	sous-consommation	:N:f:s/*
sous-loue	sous-louer	:V1__t___zz:Ip:Sp:1s:3s/*
sous-loue	sous-louer	:V1__t___zz:E:2s/*
sous-payé	sous-payer	:V1__t___zz:Q:A:1ŝ:m:s/*
sous-production	sous-production	:N:f:s/*
273954
273955
273956
273957
273958
273959
273960
273961
273962
273963
273964
273965
273966
273967
273968
273854
273855
273856
273857
273858
273859
273860

273861
273862
273863
273864
273865
273866
273867







-







égaillez	égailler	:V1____p_e_:E:2p/*
étripons	étriper	:V1__t_q_zz:Ip:1p/*
étripons	étriper	:V1__t_q_zz:E:1p/*
Choisy-le-Roi	Choisy-le-Roi	:MP:e:i/*
Iᵉʳ	Iᵉʳ	:A:m:s/*
Nogent-le-Rotrou	Nogent-le-Rotrou	:MP:e:i/*
Primel-Trégastel	Primel-Trégastel	:MP:e:i/X
San_Francisco	San_Francisco	:MP:e:i/P
achirale	achirale	:A:f:s/*
affilions	affiler	:V1__t___zz:Iq:Sp:1p/*
affleurons	affleurer	:V1_it___zz:Ip:1p/*
affleurons	affleurer	:V1_it___zz:E:1p/*
agro-industries	agro-industrie	:N:f:p/*
américano-australien	américano-australienne	:N:A:m:s/*
arrimez	arrimer	:V1__t___zz:Ip:2p/*
274065
274066
274067
274068
274069
274070
274071
274072
274073
274074
274075
274076
274077
274078
274079
273964
273965
273966
273967
273968
273969
273970

273971
273972
273973
273974
273975
273976
273977







-







golfe	golfer	:V1_i_____a:Ip:Sp:1s:3s/*
golfe	golfer	:V1_i_____a:E:2s/*
golfes	golfer	:V1_i_____a:Ip:Sp:2s/*
haut-le-cœur	haut-le-cœur	:N:m:i/*
hydro-électrolytiques	hydro-électrolytique	:A:e:p/C
irradiez	irradier	:V1_it_q_zz:Ip:2p/*
irradiez	irradier	:V1_it_q_zz:E:2p/*
je-m'en-foutiste	je-m'en-foutiste	:N:A:e:s/*
térajoules	joule	:N:m:p/*
jouxtons	jouxter	:V1__t___zz:Ip:1p/*
jouxtons	jouxter	:V1__t___zz:E:1p/*
jupe-culotte	jupe-culotte	:N:f:s/*
kouign-amann	kouign-amann	:N:m:s/M
libéralisons	libéraliser	:V1__t_q_zz:Ip:1p/*
libéralisons	libéraliser	:V1__t_q_zz:E:1p/*
274152
274153
274154
274155
274156
274157
274158
274159
274160


274161
274162
274163
274164
274165
274166
274167
274050
274051
274052
274053
274054
274055
274056


274057
274058
274059
274060
274061
274062
274063
274064
274065







-
-
+
+







romançons	romancer	:V1__t___zz:Ip:1p/*
romançons	romancer	:V1__t___zz:E:1p/*
rétrocommission	rétrocommission	:N:f:s/*
rétrofuturisme	rétrofuturisme	:N:m:s/*
sauts-de-loup	sauts-de-loup	:N:m:p/*
semi-perméables	semi-perméable	:A:e:p/*
sino-russes	sino-russe	:A:e:p/*
solidifiez	solidifier	:V1__t_q_zz:Ip:2p/*
solidifiez	solidifier	:V1__t_q_zz:E:2p/*
solidifiez	solidifier	:V1_it_q__a:Ip:2p/*
solidifiez	solidifier	:V1_it_q__a:E:2p/*
soudoyons	soudoyer	:V1__t___zz:Ip:1p/*
soudoyons	soudoyer	:V1__t___zz:E:1p/*
sous-employé	sous-employer	:V1__t___zz:Q:A:1ŝ:m:s/*
sous-solage	sous-solage	:N:m:s/*
sous-épidermique	sous-épidermique	:A:e:s/*
spammant	spammer	:V1_it___zz:P/*
spiritualisez	spiritualiser	:V1__t___zz:Ip:2p/*
274201
274202
274203
274204
274205
274206
274207
274208
274209
274210
274211
274212
274213
274214
274215
274099
274100
274101
274102
274103
274104
274105

274106
274107
274108
274109
274110
274111
274112







-







ébourgeonnez	ébourgeonner	:V1__t___zz:E:2p/*
écornons	écorner	:V1__t___zz:Ip:1p/*
écornons	écorner	:V1__t___zz:E:1p/*
Esitpa	Esitpa	:MP:f:i/X
Grammalecte	Grammalecte	:MP:m:i/*
Logrus	Logrus	:MP:m:i/X
Netbeans	Netbeans	:MP:m:i/X
Rhode_Island	Rhode_Island	:N:m:i/P
acidulons	aciduler	:V1__t___zz:Ip:1p/*
acidulons	aciduler	:V1__t___zz:E:1p/*
adustible	adustible	:A:e:s/*
allosaures	allosaure	:N:m:p/*
alphasyllabaires	alphasyllabaire	:N:m:p/*
anti-androgènes	anti-androgène	:A:e:p/C
anémions	anémier	:V1__t___zz:Ip:1p/*
274338
274339
274340
274341
274342
274343
274344
274345
274346
274347
274348
274349
274350
274351
274352
274235
274236
274237
274238
274239
274240
274241

274242
274243
274244
274245
274246
274247
274248







-







obérons	obérer	:V1__t_q_zz:Ip:1p/*
obérons	obérer	:V1__t_q_zz:E:1p/*
occultè	occulter	:V1__t___zz:Ip:1ś/R
paravolcanique	paravolcanique	:A:e:s/*
paremente	parementer	:V1__t___zz:Ip:Sp:1s:3s/*
paremente	parementer	:V1__t___zz:E:2s/*
passe-rose	passe-rose	:N:f:i/C
patte-d'oie	patte-d'oie	:N:f:s/*
peignions	peigner	:V1__t_q_zz:Iq:Sp:1p/*
pentacrinite	pentacrinite	:N:m:s/*
pied-de-mouton	pied-de-mouton	:N:m:s/*
pimentez	pimenter	:V1__t___zz:Ip:2p/*
pimentez	pimenter	:V1__t___zz:E:2p/*
plutinos	plutino	:N:m:p/*
poinçonnez	poinçonner	:V1__t___zz:Ip:2p/*
274366
274367
274368
274369
274370
274371
274372
274373
274374
274375
274376
274377
274378
274379
274380
274262
274263
274264
274265
274266
274267
274268

274269
274270
274271
274272
274273
274274
274275







-







reconnaisses	reconnaitre	:V3__t_q__a:Sp:2s/R
redécollons	redécoller	:V1_it_q_zz:Ip:1p/*
redécollons	redécoller	:V1_it_q_zz:E:1p/*
retentent	retenter	:V1__t___zz:Ip:Sp:3p/*
russo-allemande	russo-allemande	:N:A:f:s/*
réajustez	réajuster	:V1__t_q_zz:Ip:2p/*
réajustez	réajuster	:V1__t_q_zz:E:2p/*
s'agit	s'agir	:V2____p_e_:Ip:3s/*
sans-emploi	sans-emploi	:N:e:s/R
sans-emplois	sans-emploi	:N:e:p/R
scriptes	scripter	:V1_it_q_zz:Ip:Sp:2s/*
scriptés	scripter	:V1_it_q_zz:Q:A:m:p/*
sous-expressions	sous-expression	:N:f:p/*
sous-équipé	sous-équipée	:A:m:s/*
suraigüe	suraigüe	:A:f:s/R
274713
274714
274715
274716
274717
274718
274719



274720
274721
274722
274723
274724
274725
274726
274608
274609
274610
274611
274612
274613
274614
274615
274616
274617
274618
274619
274620
274621
274622
274623
274624







+
+
+







quadricœur	quadricœur	:A:e:s/*
quadricœur	quadricœur	:N:m:s/*
radicande	radicande	:N:m:s/*
radio-immunologie	radio-immunologie	:N:f:s/*
ralingue	ralinguer	:V1_it___zz:Ip:Sp:1s:3s/*
ralingue	ralinguer	:V1_it___zz:E:2s/*
ralingues	ralinguer	:V1_it___zz:Ip:Sp:2s/*
ratine	ratiner	:V1__t___zz:Ip:Sp:1s:3s/*
ratine	ratiner	:V1__t___zz:E:2s/*
ratines	ratiner	:V1__t___zz:Ip:Sp:2s/*
raturons	raturer	:V1__t___zz:Ip:1p/*
raturons	raturer	:V1__t___zz:E:1p/*
refondez	refonder	:V1__t___zz:Ip:2p/*
refondez	refonder	:V1__t___zz:E:2p/*
renaissons	renaitre	:V3_i_n__e_:Ip:1p/R
renaissons	renaitre	:V3_i_n__e_:E:1p/R
ressourcerie	ressourcerie	:N:f:s/*
274842
274843
274844
274845
274846
274847
274848
274849
274850
274851
274852
274853
274854
274855
274856
274740
274741
274742
274743
274744
274745
274746

274747
274748
274749
274750
274751
274752
274753







-







graillons	grailler	:V1_it___zz:Ip:1p/*
graillons	grailler	:V1_it___zz:E:1p/*
hydrolienne	hydrolienne	:A:f:s/*
hydroliennes	hydrolienne	:A:f:p/*
in-plano	in-plano	:A:e:i/M
in-plano	in-plano	:N:m:i/M
intra-articulaires	intra-articulaire	:A:e:p/M
je-m'en-foutisme	je-m'en-foutisme	:N:m:s/*
lasure	lasurer	:V1__t___zz:Ip:Sp:1s:3s/*
lasure	lasurer	:V1__t___zz:E:2s/*
lasures	lasurer	:V1__t___zz:Ip:Sp:2s/*
lombo-sacrée	lombo-sacrée	:A:f:s/M
macro-commandes	macro-commande	:N:f:p/C
meitnérium	meitnérium	:N:m:s/*
micro-économiques	micro-économique	:A:e:p/C
275194
275195
275196
275197
275198
275199
275200

275201
275202
275203
275204
275205
275206
275207
275091
275092
275093
275094
275095
275096
275097
275098
275099
275100
275101
275102
275103
275104
275105







+







trop-perçu	trop-perçu	:N:m:s/*
trop-pleins	trop-plein	:N:m:p/*
télé-réalités	télé-réalité	:N:f:p/M
télécommandez	télécommander	:V1__t___zz:Ip:2p/*
télécommandez	télécommander	:V1__t___zz:E:2p/*
ultra-libérales	ultra-libérale	:N:A:f:p/C
uro-génitale	uro-génitale	:A:f:s/*
vidéo-protection	vidéo-protection	:N:f:s/*
virophages	virophage	:N:m:p/*
vétéro-testamentaire	vétéro-testamentaire	:A:e:s/C
wagons-trémies	wagons-trémies	:N:m:p/*
ægipans	ægipan	:N:m:p/*
étable	établer	:V1__t___zz:Ip:Sp:1s:3s/*
étable	établer	:V1__t___zz:E:2s/*
étables	établer	:V1__t___zz:Ip:Sp:2s/*
275290
275291
275292
275293
275294
275295
275296
275297
275298
275299
275300
275301
275302
275303
275304
275188
275189
275190
275191
275192
275193
275194

275195
275196
275197
275198
275199
275200
275201







-







moissonneuses-lieuses	moissonneuses-lieuses	:N:f:p/*
navire-atelier	navire-atelier	:N:m:s/*
néo-grecques	néo-grecque	:A:f:p/C
offusquerai	offusquer	:V1__t_q_zz:If:1s/*
papier-filtre	papier-filtre	:N:m:s/*
pas-de-porte	pas-de-porte	:N:m:i/*
piccalilli	piccalilli	:N:m:s/*
pied-d'alouette	pied-d'alouette	:N:m:s/*
plaider-coupable	plaider-coupable	:N:m:i/*
plains-chants	plains-chants	:N:m:p/*
podiatrique	podiatrique	:A:e:s/*
poloïstes	poloïste	:N:e:p/*
porte-fanion	porte-fanion	:N:m:i/C
post-modernistes	post-moderniste	:N:A:e:p/C
pou-de-soie	pou-de-soie	:N:m:s/*
275332
275333
275334
275335
275336
275337
275338
275339
275340
275341
275342
275343
275344
275345
275346
275229
275230
275231
275232
275233
275234
275235

275236
275237
275238
275239
275240
275241
275242







-







supra-humaine	supra-humaine	:A:f:s/C
surferont	surfer	:V1_i____zz:If:3p!/*
surirradiés	surirradiée	:A:m:p/*
sursoie	sursoir	:V3__tn__zz:Sp:1s:3s/R
taupes-grillons	taupes-grillons	:N:m:p/*
tchin-tchin	tchin-tchin	:J/M
transvections	transvection	:N:f:p/*
traveller's	traveller's	:A:e:i/M
trousse-galant	trousse-galant	:N:m:i/M
verbiage	verbiager	:V1_i____zz:Ip:Sp:1s:3s/*
verbiage	verbiager	:V1_i____zz:E:2s/*
verbiages	verbiager	:V1_i____zz:Ip:Sp:2s/*
vers-libristes	vers-libriste	:N:A:e:p/*
vulcanoïdes	vulcanoïde	:N:m:p/*
vélo-taxi	vélo-taxi	:N:m:s/M
275520
275521
275522
275523
275524
275525
275526
275527
275528
275529
275530
275531
275532
275533
275534
275416
275417
275418
275419
275420
275421
275422

275423
275424
275425
275426
275427
275428
275429







-







weyr	weyr	:N:m:s/X
wiccanes	wiccane	:N:A:f:p/*
écoresponsable	écoresponsable	:A:e:s/*
égayerai	égayer	:V1__t_q_zz:If:1s/*
équerre	équerrer	:V1__t___zz:Ip:Sp:1s:3s/*
équerre	équerrer	:V1__t___zz:E:2s/*
équerres	équerrer	:V1__t___zz:Ip:Sp:2s/*
Buenos_Aires	Buenos_Aires	:MP:e:i/P
DeviceNet	DeviceNet	:A:e:i/X
Dʳ	Dʳ	:T:m:s/*
Malteurop	Malteurop	:MP:m:i/X
accréter	accréter	:V1_it_q__a:Y/*
altéragène	altéragène	:A:e:s/*
ambiancé	ambiancer	:V1_i____zz:Q:1ŝ:e:i/*
anabatiques	anabatique	:A:e:p/*
275639
275640
275641
275642
275643
275644
275645
275646
275647
275648
275649
275650
275651
275652
275653
275654
275655
275656
275657
275658
275659
275660
275661
275662
275663
275664
275665
275666
275667
275668
275669
275670
275671
275672
275534
275535
275536
275537
275538
275539
275540

275541
275542
275543
275544
275545
275546
275547
275548
275549
275550
275551
275552
275553
275554
275555
275556
275557
275558

275559
275560
275561
275562
275563
275564
275565







-


















-







isoédrique	isoédrique	:A:e:s/*
jet-skis	jet-ski	:N:m:p/M
pétajoules	joule	:N:m:p/*
lampe-tempête	lampe-tempête	:N:f:s/*
lance-engins	lance-engins	:N:m:i/M
living-room	living-room	:N:m:s/*
logico-mathématiques	logico-mathématique	:A:e:p/M
mains-d'œuvre	mains-d'œuvre	:N:f:p/*
maniaco-dépressives	maniaco-dépressive	:N:A:f:p/M
mi-bas	mi-bas	:N:m:i/*
micrologiciels	micrologiciel	:N:m:p/*
minarchistes	minarchiste	:N:A:e:p/*
misandres	misandre	:N:A:e:p/*
mixera	mixer	:V1__t___zz:If:3s/*
monométhylmercure	monométhylmercure	:N:m:s/*
moscovium	moscovium	:A:m:s/*
méconnussent	méconnaitre	:V3__t_q__a:Sq:3p/R
mécoptère	mécoptère	:N:m:s/*
neurochirurgienne	neurochirurgienne	:N:f:s/*
non-viabilité	non-viabilité	:N:f:s/*
offusquerais	offusquer	:V1__t_q_zz:K:1s:2s/*
palma-christi	palma-christi	:N:m:i/*
panettones	panettone	:N:m:p/*
papy-boom	papy-boom	:N:m:s/*
paso-doble	paso-doble	:N:m:i/M
permaculturelle	permaculturelle	:A:f:s/*
petit-déj'	petit-déj'	:N:m:s/*
petites-bourgeoises	petites-bourgeoises	:N:A:f:p/*
photocoupleur	photocoupleur	:N:m:s/*
phéons	phéon	:N:m:p/*
pieds-de-biche	pieds-de-biche	:N:m:p/*
pili-pili	pili-pili	:N:m:i/C
pipette	pipeter	:V1_it____a:Ip:Sp:1s:3s/M
pipette	pipeter	:V1_it____a:E:2s/M
275715
275716
275717
275718
275719
275720
275721
275722
275723
275724
275725
275726
275727
275728
275729
275608
275609
275610
275611
275612
275613
275614

275615
275616
275617
275618
275619
275620
275621







-







spergulaire	spergulaire	:N:f:s/*
suractives	suractiver	:V1_it_q__a:Ip:Sp:2s/*
technico-commerciaux	technico-commerciale	:N:A:m:p/M
torball	torball	:N:m:s/*
trachéophytes	trachéophyte	:N:f:p/*
trade-unionistes	trade-unioniste	:N:A:e:p/*
tranquillou	tranquillou	:W/*
traveler's	traveler's	:A:e:i/R
triakitétraèdre	triakitétraèdre	:N:m:s/*
trollait	troller	:V1_i____zz:Iq:3s/*
troussai	trousser	:V1__t_q_zz:Is:1s/*
turlute	turluter	:V1_it___zz:Ip:Sp:1s:3s/*
turlute	turluter	:V1_it___zz:E:2s/*
turlutes	turluter	:V1_it___zz:Ip:Sp:2s/*
téléportées	téléporter	:V1__t_q_zz:Q:A:f:p/*
275766
275767
275768
275769
275770
275771
275772
275773
275774
275775
275776
275777
275778
275779
275780
275658
275659
275660
275661
275662
275663
275664

275665
275666
275667
275668
275669
275670
275671







-







bauge	bauger	:V1____p_e_:E:2s/*
bauges	bauger	:V1____p_e_:Ip:Sp:2s/*
blazars	blazar	:N:m:p/*
bordure	bordurer	:V1__t___zz:Ip:Sp:1s:3s/*
bordure	bordurer	:V1__t___zz:E:2s/*
bordures	bordurer	:V1__t___zz:Ip:Sp:2s/*
bouche-à-oreilles	bouche-à-oreille	:N:m:i/*
boutons-d'or	boutons-d'or	:N:m:p/*
boutons-pression	boutons-pression	:N:m:p/*
brillantine	brillantiner	:V1__t___zz:Ip:Sp:1s:3s/*
brillantine	brillantiner	:V1__t___zz:E:2s/*
brillantines	brillantiner	:V1__t___zz:Ip:Sp:2s/*
brunéiens	brunéienne	:N:A:m:p/*
burelés	burelée	:A:m:p/*
buzze	buzzer	:V1_i____zz:Ip:Sp:1s:3s/*
275956
275957
275958
275959
275960
275961
275962
275963
275964
275965
275966
275967
275968
275969
275970
275971
275972
275973
275974
275975
275976
275977
275978
275979
275980
275981
275982
275983
275984
275985
275986
275987
275847
275848
275849
275850
275851
275852
275853

275854
275855
275856
275857
275858
275859
275860
275861
275862
275863
275864
275865
275866
275867
275868
275869

275870
275871
275872
275873
275874
275875
275876







-
















-







tire-pied	tire-pied	:N:m:s/C
tire-pied	tire-pied	:N:m:s/*
transcriptomes	transcriptome	:N:m:p/X
transidentités	transidentité	:N:f:p/*
traîne-misère	traîne-misère	:N:e:i/M
trollons	troller	:V1_i____zz:Ip:1p/*
trollons	troller	:V1_i____zz:E:1p/*
tue-l'amour	tue-l'amour	:N:m:i/*
turbocompressées	turbocompressée	:A:f:p/*
téléversez	téléverser	:V1__t___zz:Ip:2p/*
téléversez	téléverser	:V1__t___zz:E:2p/*
ultra-portable	ultra-portable	:A:e:s/C
umlauts	umlaut	:N:m:p/*
varlope	varloper	:V1__t___zz:Ip:Sp:1s:3s/*
varlope	varloper	:V1__t___zz:E:2s/*
varlopes	varloper	:V1__t___zz:Ip:Sp:2s/*
vert-de-grisée	vert-de-grisée	:A:f:s/*
vesses-de-loup	vesses-de-loup	:N:f:p/*
vice-légation	vice-légation	:N:f:s/*
vingt-quatrièmes	vingt-quatrième	:N:A:e:p/*
vulcanoïde	vulcanoïde	:N:m:s/*
woofer	woofer	:N:m:s/*
würmiens	würmienne	:A:m:p/*
xénarthre	xénarthre	:N:m:s/*
Creative_Commons	Creative_Commons	:MP:e:i/P
Inovia	Inovia	:MP:m:i/X
Kyllian	Kyllian	:M1:m:i/*
abaisse-langue	abaisse-langue	:N:m:i/M
accourcirez	accourcir	:V2_it___zz:If:2p/*
adextrées	adextrée	:A:f:p/*
agro-ressources	agro-ressource	:N:f:p/X
aiguillonnais	aiguillonner	:V1__t___zz:Iq:1s:2s/*
276182
276183
276184
276185
276186
276187
276188
276189
276190
276191
276192
276193
276194
276195
276196
276071
276072
276073
276074
276075
276076
276077

276078
276079
276080
276081
276082
276083
276084







-







électroportatifs	électroportative	:A:m:p/*
DFSG	DFSG	:N:e:i/X
FFDN	FFDN	:N:f:i/X
Florimel	Florimel	:M1:f:i/X
Fontenay-le-Comte	Fontenay-le-Comte	:MP:e:i/*
Géofoncier	Géofoncier	:N:m:s/X
LQDN	LQDN	:MP:f:i/X
Las_Vegas	Las_Vegas	:MP:e:i/P
MODBUS	MODBUS	:N:e:i/X
PPMS	PPMS	:N:m:i/X
Tsathoggua	Tsathoggua	:M1:m:i/X
abarticulation	abarticulation	:N:f:s/*
abonnissent	abonnir	:V2__t_q_zz:Ip:Sp:Sq:3p/*
afro-beat	afro-beat	:N:m:s/C
anti-microbiens	anti-microbienne	:A:m:p/C
276259
276260
276261
276262
276263
276264
276265
276266
276267
276268
276269
276270
276271
276272
276273
276147
276148
276149
276150
276151
276152
276153

276154
276155
276156
276157
276158
276159
276160







-







cyclosilicates	cyclosilicate	:N:m:p/*
cæcale	cæcale	:A:f:s/*
cæcums	cæcum	:N:m:p/*
cérébro-spinales	cérébro-spinale	:A:f:p/M
demi-reliefs	demi-relief	:N:m:p/*
doublonnait	doublonner	:V1_i____zz:Iq:3s/*
douze-huit	douze-huit	:N:m:i/*
droit-de-l'hommisme	droit-de-l'hommisme	:N:m:s/*
duffel-coat	duffel-coat	:N:m:s/C
décisions-cadres	décisions-cadres	:N:f:p/*
déjections	déjecter	:V1_it___zz:Iq:Sp:1p/*
démonte-pneu	démonte-pneu	:N:m:s/*
dépucelleras	dépuceler	:V1__t___zz:If:2s/M
déséquipée	déséquiper	:V1__t_q_zz:Q:A:f:s/*
embarrasses	embarrer	:V1_it_q_zz:Sq:2s/*
276376
276377
276378
276379
276380
276381
276382
276383
276384
276385
276386
276387
276388
276389
276390
276263
276264
276265
276266
276267
276268
276269

276270
276271
276272
276273
276274
276275
276276







-







pédocriminel	pédocriminelle	:N:m:s/*
pédocriminels	pédocriminelle	:N:m:p/*
pénéiculture	pénéiculture	:N:f:s/*
péréquations	péréquater	:V1__t___zz:Iq:Sp:1p/*
péteuses	péteuse	:N:f:p/*
quadribande	quadribande	:A:e:s/*
quadribande	quadribande	:N:m:s/*
queue-d'aronde	queue-d'aronde	:N:f:s/*
rais-de-cœur	rais-de-cœur	:N:m:p/*
reconnûtes	reconnaitre	:V3__t_q__a:Is:2p/R
redirigeront	rediriger	:V1__t___zz:If:3p!/*
renommais	renommer	:V1__t___zz:Iq:1s:2s/*
reportrice	reportrice	:N:f:s/*
retweeté	retweeter	:V1_itn___a:Q:A:1ŝ:m:s/*
russo-italien	russo-italienne	:N:A:m:s/*
276529
276530
276531
276532
276533
276534
276535
276536
276537
276538
276539
276540
276541
276542
276543
276415
276416
276417
276418
276419
276420
276421

276422
276423
276424
276425
276426
276427
276428







-







dogue	doguer	:V1_it___zz:Ip:Sp:1s:3s/*
dogue	doguer	:V1_it___zz:E:2s/*
dogues	doguer	:V1_it___zz:Ip:Sp:2s/*
drave	draver	:V1_it___zz:Ip:Sp:1s:3s/*
drave	draver	:V1_it___zz:E:2s/*
draves	draver	:V1_it___zz:Ip:Sp:2s/*
dressing-room	dressing-room	:N:m:s/*
duc-d'Albe	duc-d'Albe	:N:m:s/*
décommissionnée	décommissionner	:V1_it_q__a:Q:A:f:s/*
déconnectes	déconnecter	:V1__t___zz:Ip:Sp:2s/*
décérébré	décérébrer	:V1__t___zz:Q:A:1ŝ:m:s/*
décérébrée	décérébrer	:V1__t___zz:Q:A:f:s/*
décérébrées	décérébrer	:V1__t___zz:Q:A:f:p/*
décérébrés	décérébrer	:V1__t___zz:Q:A:m:p/*
déprogramment	déprogrammer	:V1__t___zz:Ip:Sp:3p/*
276688
276689
276690
276691
276692
276693
276694

276695
276696
276697
276698
276699
276700
276701
276573
276574
276575
276576
276577
276578
276579
276580
276581
276582
276583
276584
276585
276586
276587







+







retweets	retweet	:N:m:p/*
rocquer	rocquer	:V1_i____zz:Y/*
rotamères	rotamère	:N:m:p/*
rudbeckie	rudbeckie	:N:f:s/*
ruiles	ruiler	:V1__t___zz:Ip:Sp:2s/*
réalésée	réaléser	:V1__t___zz:Q:A:f:s/*
réarmables	réarmable	:A:e:p/*
rédac-chef	rédac-chef	:N:e:s/*
réessayerai	réessayer	:V1__t___zz:If:1s/*
réincrudation	réincrudation	:N:f:s/*
salinisé	saliniser	:V1_it_x__a:Q:A:1ŝ:m:s/*
scratché	scratcher	:V1_it___zz:Q:A:1ŝ:m:s/*
scénarisera	scénariser	:V1__t___zz:If:3s/*
septante-neuf	septante-neuf	:B:e:p/*
sergents-chefs	sergents-chefs	:N:m:p/*
277012
277013
277014
277015
277016
277017
277018
277019
277020
277021
277022
277023
277024
277025
277026
276898
276899
276900
276901
276902
276903
276904

276905
276906
276907
276908
276909
276910
276911







-







passe-roses	passe-roses	:N:f:i/C
passing-shots	passing-shot	:N:m:p/*
patchés	patcher	:V1_it____a:Q:A:m:p/*
phallotoxines	phallotoxine	:N:f:p/*
phaléristiques	phaléristique	:N:f:p/*
photosculptures	photosculpture	:N:f:p/*
pied-de-chèvre	pied-de-chèvre	:N:m:s/*
pieds-d'alouette	pieds-d'alouette	:N:m:p/*
pince-mailles	pince-maille	:N:m:p/*
pisse-copie	pisse-copie	:N:e:s/*
piézo-électricité	piézo-électricité	:N:f:s/C
plan-concave	plan-concave	:N:m:s/*
pochtron	pochtronne	:N:m:s/*
politico-sociaux	politico-sociale	:A:m:p/*
porte-balais	porte-balais	:N:m:i/M
277289
277290
277291
277292
277293
277294
277295
277296

277297
277298
277299
277300
277301
277302
277303
277174
277175
277176
277177
277178
277179
277180

277181
277182
277183
277184
277185
277186
277187
277188







-
+







enculeront	enculer	:V1__t___zz:If:3p!/*
enduros	enduro	:N:e:p/*
engraisseras	engraisser	:V1_it_q_zz:If:2s/*
entoproctes	entoprocte	:N:m:p/*
entre-déchirant	entre-déchirer	:V1____r_e_:P/M
entre-déchirèrent	entre-déchirer	:V1____r_e_:Is:3p!/M
entre-regardâmes	entre-regarder	:V1____r_e_:Is:1p/M
entrelacerai	entrelacer	:V1__t_q_zz:If:1s/*
entrelacerai	entrelacer	:V1__t_q__a:If:1s/*
envoutée	envoutée	:N:f:s/R
esquiverais	esquiver	:V1__t_q_zz:K:1s:2s/*
essorants	essorante	:A:m:p/*
euroises	euroise	:N:A:f:p/*
excito-motrice	excito-motrice	:A:f:s/C
exfiltrent	exfiltrer	:V1__t___zz:Ip:Sp:3p/*
exfiltrées	exfiltrer	:V1__t___zz:Q:A:f:p/*
277508
277509
277510
277511
277512
277513
277514

277515
277516
277517
277518
277519
277520
277521
277393
277394
277395
277396
277397
277398
277399
277400
277401
277402
277403
277404
277405
277406
277407







+







teuf-teuf	teuf-teuf	:N:e:i/M
thermo-ionique	thermo-ionique	:A:e:s/C
tire-bouchonnés	tire-bouchonner	:V1_it_q_zz:Q:A:m:p/M
tournoyâmes	tournoyer	:V1_i____zz:Is:1p/*
toutes-boîtes	toutes-boîtes	:N:m:i/M
trade-union	trade-union	:N:f:s/*
trade-unioniste	trade-unioniste	:N:A:e:s/*
transitionner	transitionner	:V1_i_____a:Y/*
translittérait	translittérer	:V1__t___zz:Iq:3s/*
transperças	transpercer	:V1__t___zz:Is:2s/*
triquets	triquet	:N:m:p/*
tronche	troncher	:V1__t___zz:Ip:Sp:1s:3s/*
tronche	troncher	:V1__t___zz:E:2s/*
tronches	troncher	:V1__t___zz:Ip:Sp:2s/*
tue-chien	tue-chien	:N:m:i/M
277633
277634
277635
277636
277637
277638
277639


277640
277641
277642
277643
277644
277645
277646
277519
277520
277521
277522
277523
277524
277525
277526
277527
277528
277529
277530
277531
277532
277533
277534







+
+







blacklistées	blacklister	:V1__t___zz:Q:A:f:p/*
blancs-mangers	blancs-mangers	:N:m:p/*
bluffantes	bluffante	:A:f:p/*
boette	boetter	:V1__t___zz:Ip:Sp:1s:3s/*
boette	boetter	:V1__t___zz:E:2s/*
boettes	boetter	:V1__t___zz:Ip:Sp:2s/*
boostera	booster	:V1__t___zz:If:3s/*
bouillette	bouillette	:N:f:s/*
bouillettes	bouillette	:N:f:p/*
bouines	bouiner	:V1_i_____a:Ip:Sp:2s/X
bourre-pif	bourre-pif	:N:m:s/*
bourre-pifs	bourre-pif	:N:m:p/*
brachiosaures	brachiosaure	:N:m:p/*
broncho-pneumopathies	broncho-pneumopathie	:N:f:p/C
buguent	buguer	:V1_i_____a:Ip:Sp:3p/*
byebye	byebye	:J/R
277714
277715
277716
277717
277718
277719
277720
277721
277722
277723
277724
277725
277726
277727
277728
277729
277730
277731
277732

277733
277734
277735
277736
277737
277738
277739
277602
277603
277604
277605
277606
277607
277608

277609
277610
277611
277612
277613
277614
277615
277616
277617
277618
277619
277620
277621
277622
277623
277624
277625
277626
277627







-











+







demi-mondes	demi-monde	:N:m:p/*
demi-tiges	demi-tige	:N:f:p/*
disconnecteurs	disconnecteur	:N:m:p/*
dominotés	dominotée	:A:m:p/*
double-clique	double-cliquer	:V1_i____zz:Ip:Sp:1s:3s/*
double-clique	double-cliquer	:V1_i____zz:E:2s/*
drava	draver	:V1_it___zz:Is:3s/*
ducs-d'Albe	ducs-d'Albe	:N:m:p/*
débrocha	débrocher	:V1__t___zz:Is:3s/*
débâcle	débâcler	:V1_it___zz:Ip:Sp:1s:3s/*
débâcle	débâcler	:V1_it___zz:E:2s/*
débâcles	débâcler	:V1_it___zz:Ip:Sp:2s/*
décuisant	décuire	:V3__t___zz:P/*
décyclage	décyclage	:N:f:s/*
déglaçant	déglacer	:V1__t___zz:P/*
dégueux	dégueu	:A:e:p/*
démanchèrent	démancher	:V1__t_q_zz:Is:3p!/*
départiras	départir	:V3__t_q__a:If:2s/*
dépucelles	dépuceler	:V1__t___zz:Ip:Sp:2s/M
désentrelacé	désentrelacer	:V1__t_q__a:Q:A:1ŝ:m:s/*
déshuntage	déshuntage	:N:m:s/*
désinsectiseur	désinsectiseuse	:N:m:s/*
désinstallées	désinstaller	:V1__t___zz:Q:A:f:p/*
déverrouillera	déverrouiller	:V1__t___zz:If:3s/*
efflanque	efflanquer	:V1__t_q_zz:Ip:Sp:1s:3s/*
efflanque	efflanquer	:V1__t_q_zz:E:2s/*
effluvions	effluver	:V1_i____zz:Iq:Sp:1p/*
278022
278023
278024
278025
278026
278027
278028
278029
278030
278031
278032
278033
278034
278035
278036
277910
277911
277912
277913
277914
277915
277916

277917
277918
277919
277920
277921
277922
277923







-







sèche-mains	sèche-mains	:N:m:i/M
taekwondoïstes	taekwondoïste	:N:e:p/*
taï-chi	taï-chi	:N:m:i/C
tchatter	tchatter	:V1_i_____a:Y/*
terrasseras	terrasser	:V1_it___zz:If:2s/*
tibio-tarsienne	tibio-tarsienne	:A:f:s/*
tibio-tarsienne	tibio-tarsienne	:A:f:s/C
tire-l'œil	tire-l'œil	:N:m:i/*
tokenisation	tokenisation	:N:f:s/*
touillette	touillette	:N:f:s/*
transmissiomètre	transmissiomètre	:N:m:s/*
transvaseront	transvaser	:V1__t___zz:If:3p!/*
tremblas	trembler	:V1_i____zz:Is:2s/*
trifouillée	trifouiller	:V1_it___zz:Q:A:f:s/*
trop-perçus	trop-perçu	:N:m:p/*
278086
278087
278088
278089
278090
278091
278092
278093
278094
278095
278096
278097
278098
278099
278100
277973
277974
277975
277976
277977
277978
277979

277980
277981
277982
277983
277984
277985
277986







-







nGy	Gy	:N:m:i;S/*
Haÿ-les-Roses	Haÿ-les-Roses	:MP:e:i/*
Issy-les-Moulineaux	Issy-les-Moulineaux	:MP:e:i/*
µJ	J	:N:m:i;S/*
Kibit	Kibit	:N:m:i;S/*
Mibit	Mibit	:N:m:i;S/*
Shaarli	Shaarli	:MP:m:i/X
Texas_Instruments	Texas_Instruments	:MP:e:i/P
Ver-sur-mer	Ver-sur-mer	:MP:e:i/X
aboulera	abouler	:V1_it_q_zz:If:3s/*
abyssopélagique	abyssopélagique	:A:e:s/*
abéquer	abéquer	:V1__t___zz:Y/R
acalorique	acalorique	:A:e:s/*
accessoirisés	accessoiriser	:V1__t___zz:Q:A:m:p/*
accipitridés	accipitridé	:N:m:p/*
278300
278301
278302
278303
278304
278305
278306
278307
278308
278309
278310
278311
278312
278313
278314
278186
278187
278188
278189
278190
278191
278192

278193
278194
278195
278196
278197
278198
278199







-







disamares	disamare	:N:f:p/*
disilane	disilane	:N:m:s/*
dix-milliardième	dix-milliardième	:N:A:e:s/*
dix-millionièmes	dix-millionième	:N:A:e:p/*
double-crème	double-crème	:N:m:s/*
dribbla	dribbler	:V1_it___zz:Is:3s/M
dribleur	dribleuse	:N:m:s/R
droit-de-l'hommiste	droit-de-l'hommiste	:N:A:e:s/*
durions	durion	:N:m:p/*
déactiver	déactiver	:V1__t___zz:Y/*
débarbouilles	débarbouiller	:V1__t_q_zz:Ip:Sp:2s/*
débinât	débiner	:V1__t_q_zz:Sq:3s/*
débourba	débourber	:V1__t___zz:Is:3s/*
débrancherait	débrancher	:V1__t_q_zz:K:3s/*
décampiez	décamper	:V1_i____zz:Iq:Sp:2p/*
278346
278347
278348
278349
278350
278351
278352
278353
278354
278355
278356
278357
278358
278359
278360
278231
278232
278233
278234
278235
278236
278237

278238
278239
278240
278241
278242
278243
278244







-







emplisses	emplir	:V2_it_q_zz:Sp:Sq:2s/*
empocherai	empocher	:V1__t___zz:If:1s/*
empoignerons	empoigner	:V1__t_q_zz:If:1p/*
enchilada	enchilada	:N:f:s/*
encroutant	encroutante	:A:m:s/R
ensanglanterai	ensanglanter	:V1__t___zz:If:1s/*
ensauvait	ensauver	:V1____p_e_:Iq:3s/*
entr'ouvriraient	entr'ouvrir	:V3__t_q_zz:K:3p/C
entre-déchirées	entre-déchirer	:V1____r_e_:Q:A:f:p/M
entre-haïssent	entre-haïr	:V2____r_e_:Ip:Sp:Sq:3p/M
entre-lignes	entre-ligne	:N:m:p/M
entre-nerf	entre-nerf	:N:m:s/M
entre-regardés	entre-regarder	:V1____r_e_:Q:A:m:p/M
entre-tueront	entre-tuer	:V1____r_e_:If:3p!/M
entre-voie	entre-voie	:N:f:s/C
278542
278543
278544
278545
278546
278547
278548
278549
278550
278551
278552
278553
278554
278555
278556
278426
278427
278428
278429
278430
278431
278432

278433
278434
278435
278436
278437
278438
278439







-







passe-pierre	passe-pierre	:N:f:i/C
passe-pierre	passe-pierre	:N:f:s/*
passe-volant	passe-volant	:N:m:i/C
passe-volant	passe-volant	:N:m:s/*
patarasses	patarasse	:N:f:p/*
pateliné	pateliner	:V1_it___zz:Q:A:1ŝ:m:s/*
patouilla	patouiller	:V1_it___zz:Is:3s/*
pattes-d'oie	pattes-d'oie	:N:f:p/*
permaculteur	permacultrice	:N:m:s/*
pet-de-nonne	pet-de-nonne	:N:m:s/*
petit-boutiste	petit-boutiste	:A:e:s/*
petit-pois	petit-pois	:N:m:s/*
petits-beurre	petits-beurre	:N:m:p/*
petits-suisses	petits-suisses	:N:m:p/*
phytopathologies	phytopathologie	:N:f:p/*
278745
278746
278747
278748
278749
278750
278751


278752
278753
278754
278755
278756
278757
278758
278628
278629
278630
278631
278632
278633
278634
278635
278636
278637
278638
278639
278640
278641
278642
278643







+
+







tire-fesses	tire-fesse	:N:m:p/R
titularisera	titulariser	:V1__t___zz:If:3s/*
tortorer	tortorer	:V1__t___zz:Y/*
tournoieras	tournoyer	:V1_i____zz:If:2s/*
tourtelette	tourtelette	:N:f:s/*
tracassai	tracasser	:V1__t_q_zz:Is:1s/*
transfèrerai	transférer	:V1__t___zz:If:1s/R
transitionnent	transitionner	:V1_i_____a:Ip:Sp:3p/*
transitionné	transitionner	:V1_i_____a:Q:A:1ŝ:m:s/*
translittérant	translittérer	:V1__t___zz:P/*
transparurent	transparaitre	:V3_i____zz:Is:3p!/R
traîne-malheur	traîne-malheur	:N:e:i/M
tresseras	tresser	:V1__t___zz:If:2s/*
trompetaient	trompeter	:V1_it___zz:Iq:3p/M
télé-assistance	télé-assistance	:N:f:s/C
téléportait	téléporter	:V1__t_q_zz:Iq:3s/*
278805
278806
278807
278808
278809
278810
278811
278812
278813
278814
278815
278816
278817
278818
278819
278820
278690
278691
278692
278693
278694
278695
278696


278697
278698
278699
278700
278701
278702
278703







-
-







étouffe-chrétien	étouffe-chrétien	:N:m:i/M
étouffasse	étouffer	:V1_it_q_zz:Sq:1s/*
étrillais	étriller	:V1__t___zz:Iq:1s:2s/*
évoquasse	évoquer	:V1__t___zz:Sq:1s/*
ôtâtes	ôter	:V1__t_q_zz:Is:2p/*
dℓ	ℓ	:N:m:i;S/*
3ᵉ	3ᵉ	:A:e:s/*
Central_Park	Central_Park	:MP:m:i/P
Free_Software_Foundation	Free_Software_Foundation	:MP:f:s/P
GAFAM	GAFAM	:N:e:i/X
Grayswandir	Grayswandir	:MP:m:i/X
Guerzit	Guerzit	:MP:e:i/X
Halloweens	Halloween	:N:f:p/*
YHz	Hz	:N:m:i;S/*
Loréna	Loréna	:M1:f:i/X
Maïwen	Maïwen	:M1:f:i/*
279043
279044
279045
279046
279047
279048
279049
279050
279051
279052
279053
279054
279055
279056
279057
278926
278927
278928
278929
278930
278931
278932

278933
278934
278935
278936
278937
278938
278939







-







cryptanalyses	cryptanalyse	:N:f:p/*
cryptozoologistes	cryptozoologiste	:N:e:p/*
cuti-réaction	cuti-réaction	:N:f:s/M
cyan	cyan	:N:m:s/*
cyans	cyan	:N:m:p/*
cyclène	cyclène	:N:m:s/*
céleris-raves	céleris-raves	:N:m:p/M
d'aucuns	d'aucuns	:G:Oi:m:p/*
dandinettes	dandinette	:N:f:p/*
dealeurs	dealeuse	:N:m:p/R
demi-longueurs	demi-longueur	:N:f:p/*
demi-tarifs	demi-tarif	:N:m:p/*
descendeuses	descendeuse	:N:f:p/*
desserrerai	desserrer	:V1__t_q_zz:If:1s/*
dessolant	dessoler	:V1__t___zz:P/*
279750
279751
279752
279753
279754
279755
279756
279757
279758
279759
279760
279761
279762
279763
279764
279765
279766
279767
279768
279769
279770
279771
279772
279773
279774
279775
279776
279777
279778
279779
279780
279781
279632
279633
279634
279635
279636
279637
279638

279639
279640

279641
279642
279643
279644
279645
279646
279647
279648
279649

279650
279651
279652

279653
279654
279655
279656
279657
279658
279659







-


-









-



-







étourdîtes	étourdir	:V2__t_q_zz:Is:2p/*
étriperais	étriper	:V1__t_q_zz:K:1s:2s/*
étronçonner	étronçonner	:V1__t___zz:Y/*
µΩ	Ω	:N:m:i;S/*
Aix-les-Bains	Aix-les-Bains	:MP:e:i/*
Brelière	Brelière	:M2:e:i/X
Combs-la-Ville	Combs-la-Ville	:MP:e:i/*
D'Holbach	D'Holbach	:M2:e:i/*
Duky	Duky	:M1:m:i/X
Garvalf	Garvalf	:M1:m:i/X
Hero_Corp	Hero_Corp	:MP:e:i/X
Jasra	Jasra	:M1:f:i/X
µK	K	:N:m:i;S/*
Maarch	Maarch	:MP:f:i/X
Minakshisundaram	Minakshisundaram	:M2:e:i/*
Montceau-les-Mines	Montceau-les-Mines	:MP:e:i/*
Patonnier	Patonnier	:M2:e:i/X
Phocean	Phocean	:M1:m:i/X
Rhanda	Rhanda	:M1:f:i/X
Schtroumpfettes	Schtroumpfette	:N:f:p/X
Silicon_Valley	Silicon_Valley	:N:f:i/P
kSv	Sv	:N:m:i;S/*
Valorex	Valorex	:MP:m:i/X
Villiers-le-Bel	Villiers-le-Bel	:MP:e:i/*
Wall_Street	Wall_Street	:MP:e:i/P
XIXᵉ	XIXᵉ	:A:e:s/*
abat-poussière	abat-poussière	:N:m:s/*
abdomino-génital	abdomino-génitale	:A:m:s/*
abiétacées	abiétacée	:N:f:p/*
ablaté	ablater	:V1__t_q_zz:Q:A:1ŝ:m:s/*
abloquiez	abloquer	:V1__t___zz:Iq:Sp:2p/*
abomines	abominer	:V1__t___zz:Ip:Sp:2s/*
280685
280686
280687
280688
280689
280690
280691
280692
280693
280694
280695
280696
280697
280698
280699
280563
280564
280565
280566
280567
280568
280569

280570
280571
280572
280573
280574
280575
280576







-







nanite	nanite	:N:m:s/*
nano-machine	nano-machine	:N:f:s/C
nanocristallin	nanocristalline	:A:m:s/*
naucore	naucore	:N:f:s/*
negro-spirituals	negro-spiritual	:N:m:p/M
centinewton	newton	:N:m:s/*
nictation	nictation	:N:f:s/*
nid-d'abeilles	nid-d'abeilles	:N:m:s/*
nippo-coréenne	nippo-coréenne	:A:f:s/*
nippo-coréens	nippo-coréenne	:A:m:p/*
nolisâmes	noliser	:V1__t___zz:Is:1p/*
non-animé	non-animé	:N:m:s/*
non-résidente	non-résidente	:N:A:f:s/*
non-résidentes	non-résidente	:N:A:f:p/*
nonuples	nonupler	:V1_it____a:Ip:Sp:2s/*
280763
280764
280765
280766
280767
280768
280769
280770
280771
280772
280773
280774
280775
280776
280777
280640
280641
280642
280643
280644
280645
280646

280647
280648
280649
280650
280651
280652
280653







-







permaculturel	permaculturelle	:A:m:s/*
permaculturels	permaculturelle	:A:m:p/*
persillait	persiller	:V1__t___zz:Iq:3s/*
pervertiras	pervertir	:V2_it_q__a:If:2s/*
petit-beurre	petit-beurre	:N:m:s/*
pfaffienne	pfaffienne	:A:f:s/*
phospho-potassique	phospho-potassique	:A:e:s/X
pied-d'oiseau	pied-d'oiseau	:N:m:s/*
pieuté	pieuter	:V1____p_e_:Q:A:1ŝ:m:s/*
pignoler	pignoler	:V1____q_e_:Y/*
pilo-sébacés	pilo-sébacée	:A:m:p/M
pimant	pimer	:V1__t___zz:P/*
pince-fesses	pince-fesse	:N:m:p/R
pince-fesses	pince-fesses	:N:m:i/M
pipâtes	piper	:V1_it___zz:Is:2p/*
280998
280999
281000
281001
281002
281003
281004
281005
281006
281007
281008
281009
281010
281011
281012
280874
280875
280876
280877
280878
280879
280880

280881
280882
280883
280884
280885
280886
280887







-







révoqueras	révoquer	:V1__t___zz:If:2s/*
révéreras	révérer	:V1__t___zz:If:2s/M
réédifierai	réédifier	:V1__t___zz:If:1s/*
réépousa	réépouser	:V1_it____a:Is:3s/*
rêvè	rêver	:V1_itn__zz:Ip:1ś/R
rôtirions	rôtir	:V2_it_q_zz:K:1p/*
röntgens	röntgen	:N:m:p/C
s'agissant	s'agir	:V2____p_e_:P/*
sabreuses	sabreuse	:N:f:p/*
saint-cyriennes	saint-cyrienne	:N:A:f:p/*
saisonnal	saisonnale	:A:m:s/*
saladerie	saladerie	:N:f:s/*
salisson	salisson	:N:m:s/*
salmoniformes	salmoniforme	:N:m:p/*
salticidés	salticidé	:N:m:p/*
281306
281307
281308
281309
281310
281311
281312
281313
281314
281315
281316
281317
281318
281319
281320
281321
281322
281323
281324
281325
281326
281181
281182
281183
281184
281185
281186
281187

281188
281189
281190
281191
281192

281193
281194
281195
281196
281197
281198
281199







-





-







étrésillonnait	étrésillonner	:V1__t___zz:Iq:3s/*
éveillasse	éveiller	:V1__t_q_zz:Sq:1s/*
éveillâtes	éveiller	:V1__t_q_zz:Is:2p/*
éventrerais	éventrer	:V1__t_q_zz:K:1s:2s/*
êta	êta	:N:m:s/R
êtas	êta	:N:m:p/R
APBTeam	APBTeam	:MP:m:i/X
Apache_Software_Foundation	Apache_Software_Foundation	:MP:f:s/P
Benestan	Benestan	:M2:e:i/X
aHz	Hz	:N:m:i;S/*
fHz	Hz	:N:m:i;S/*
pHz	Hz	:N:m:i;S/*
Kolvir	Kolvir	:MP:m:i/X
Les_Vigneaux	Les_Vigneaux	:MP:e:i/X
Llewella	Llewella	:M1:f:i/X
Marly-le-Roi	Marly-le-Roi	:MP:e:i/*
Pbit	Pbit	:N:m:i;S/*
Pibit	Pibit	:N:m:i;S/*
cSv	Sv	:N:m:i;S/*
Sysdream	Sysdream	:MP:e:i/X
Tchebotarev	Tchebotarev	:M2:e:i/*
282198
282199
282200
282201
282202
282203
282204

282205
282206
282207
282208
282209
282210
282211
282071
282072
282073
282074
282075
282076
282077
282078
282079
282080
282081
282082
282083
282084
282085







+







désemplît	désemplir	:V2_it_q_zz:Sq:3s/*
désenchantât	désenchanter	:V1__t___zz:Sq:3s/*
désencré	désencrer	:V1__t___zz:Q:A:1ŝ:m:s/*
désenflez	désenfler	:V1_it_q_zz:Ip:2p/*
désenflez	désenfler	:V1_it_q_zz:E:2p/*
désenlaçant	désenlacer	:V1__t___zz:P/*
désennuies	désennuyer	:V1_it_q_zz:Ip:Sp:2s/*
désentrelacer	désentrelacer	:V1__t_q__a:Y/*
désertifièrent	désertifier	:V1__t_q_zz:Is:3p!/*
désespérasse	désespérer	:V1_it_q_zz:Sq:1s/*
déshabillerions	déshabiller	:V1__t_q_zz:K:1p/*
déshonoras	déshonorer	:V1__t_q_zz:Is:2s/*
désinscrits	désinscrire	:V3__t_q_zz:Q:A:m:p/*
désinscrits	désinscrite	:A:m:p/*
désinsectiseurs	désinsectiseuse	:N:m:p/*
282365
282366
282367
282368
282369
282370
282371
282372
282373
282374
282375
282376
282377
282378
282379
282380
282381
282382
282383
282384
282385
282386
282387
282388
282389

282390
282391
282392
282393
282394
282395
282396
282239
282240
282241
282242
282243
282244
282245


282246
282247
282248
282249
282250
282251
282252
282253
282254
282255
282256
282257
282258
282259
282260

282261
282262
282263
282264
282265
282266
282267
282268







-
-















-
+







entartés	entarter	:V1__t___zz:Q:A:m:p/*
enterrassiez	enterrer	:V1__t_q_zz:Sq:2p/*
enterrâtes	enterrer	:V1__t_q_zz:Is:2p/*
entifler	entifler	:V1__t_q_zz:Y/*
entiflerai	entifler	:V1__t_q_zz:If:1s/*
entortillerai	entortiller	:V1__t_q_zz:If:1s/*
entortilleront	entortiller	:V1__t_q_zz:If:3p!/*
entr'aimons	entr'aimer	:V1____r_e_:Ip:1p/M
entr'aimons	entr'aimer	:V1____r_e_:E:1p/M
entrapercevait	entrapercevoir	:V3__t_q_zz:Iq:3s/*
entre-détruit	entre-détruire	:V3____r_e_:Q:A:m:s/M
entre-détruit	entre-détruire	:V3____r_e_:Ip:3s/M
entre-détruites	entre-détruire	:V3____r_e_:Q:A:f:p/M
entre-dévorait	entre-dévorer	:V1____r_e_:Iq:3s/M
entre-frappées	entre-frapper	:V1____r_e_:Q:A:f:p/M
entre-heurtait	entre-heurter	:V1____r_e_:Iq:3s/M
entre-heurtées	entre-heurter	:V1____r_e_:Q:A:f:p/M
entre-ligne	entre-ligne	:N:m:s/M
entre-regarde	entre-regarder	:V1____r_e_:Ip:Sp:3s/M
entre-tua	entre-tuer	:V1____r_e_:Is:3s/M
entre-tuait	entre-tuer	:V1____r_e_:Iq:3s/M
entrebâillât	entrebâiller	:V1__t_q_zz:Sq:3s/*
entrecoupions	entrecouper	:V1__t_q_zz:Iq:Sp:1p/*
entredétruisit	entredétruire	:V3____r_e_:Is:3s/R
entrelaçais	entrelacer	:V1__t_q_zz:Iq:1s:2s/*
entrelaçais	entrelacer	:V1__t_q__a:Iq:1s:2s/*
entreprenaute	entreprenaute	:N:e:s/*
entreregarde	entreregarder	:V1____r_e_:Ip:Sp:3s/R
entretaille	entretailler	:V1____p_e_:Ip:Sp:1s:3s/*
entretaille	entretailler	:V1____p_e_:E:2s/*
entretailles	entretailler	:V1____p_e_:Ip:Sp:2s/*
entretîntes	entretenir	:V3_it_q__a:Is:2p/*
entubent	entuber	:V1__t___zz:Ip:Sp:3p/*
283931
283932
283933
283934
283935
283936
283937
283938
283939
283940
283941
283942
283943
283944
283945
283803
283804
283805
283806
283807
283808
283809

283810
283811
283812
283813
283814
283815
283816







-







évanouirez	évanouir	:V2____p_e_:If:2p/*
évanouissiez	évanouir	:V2____p_e_:Iq:Sp:Sq:2p/*
éventerez	éventer	:V1__t_q_zz:If:2p/*
ôtasses	ôter	:V1__t_q_zz:Sq:2s/*
Aïd-el-Kébir	Aïd-el-Kébir	:N:f:i/*
Bas-Jura	Bas-Jura	:N:m:i/X
Batibus	Batibus	:MP:e:i/X
Deutsche_Bank	Deutsche_Bank	:N:f:i/P
Digne-les-Bains	Digne-les-Bains	:MP:e:i/*
Eibit	Eibit	:N:m:i;S/*
FairPhone	FairPhone	:MP:e:i/X
Gibit	Gibit	:N:m:i;S/*
Lojasiewicz	Lojasiewicz	:M2:e:i/*
MADOI	MADOI	:N:m:i/X
OLLN	OLLN	:MP:e:i/X
284380
284381
284382
284383
284384
284385
284386

284387
284388
284389
284390
284391
284392
284393
284251
284252
284253
284254
284255
284256
284257
284258
284259
284260
284261
284262
284263
284264
284265







+







auto-adhésive	auto-adhésive	:A:f:s/C
auto-adhésives	auto-adhésive	:A:f:p/C
auto-assemblages	auto-assemblage	:N:m:p/C
auto-excitateur	auto-excitatrice	:A:m:s/C
auto-inscription	auto-inscription	:N:f:s/*
autoadjointes	autoadjointe	:A:f:p/*
autobronzantes	autobronzante	:A:f:p/*
autocomplétions	autocomplétion	:N:f:p/*
autofinancèrent	autofinancer	:V1__t_q_zz:Is:3p!/*
autolissantes	autolissante	:A:f:p/*
automaticienne	automaticienne	:N:f:s/*
autonymies	autonymie	:N:f:p/*
autoproclameront	autoproclamer	:V1____p_e_:If:3p!/*
autopsiera	autopsier	:V1__t___zz:If:3s/*
autopsièrent	autopsier	:V1__t___zz:Is:3p!/*
286264
286265
286266
286267
286268
286269
286270
286271
286272
286273



286274
286275
286276
286277
286278
286279
286280
286136
286137
286138
286139
286140
286141
286142



286143
286144
286145
286146
286147
286148
286149
286150
286151
286152







-
-
-
+
+
+







entrebande	entrebande	:N:f:s/R
entrecoupais	entrecouper	:V1__t_q_zz:Iq:1s:2s/*
entrecouperons	entrecouper	:V1__t_q_zz:If:1p/*
entrecoupâmes	entrecouper	:V1__t_q_zz:Is:1p/*
entredéchira	entredéchirer	:V1____r_e_:Is:3s/R
entredévorait	entredévorer	:V1____r_e_:Iq:3s/R
entreheurtèrent	entreheurter	:V1____r_e_:Is:3p!/R
entrelaceras	entrelacer	:V1__t_q_zz:If:2s/*
entrelacerons	entrelacer	:V1__t_q_zz:If:1p/*
entrelaçâmes	entrelacer	:V1__t_q_zz:Is:1p/*
entrelaceras	entrelacer	:V1__t_q__a:If:2s/*
entrelacerons	entrelacer	:V1__t_q__a:If:1p/*
entrelaçâmes	entrelacer	:V1__t_q__a:Is:1p/*
entremangèrent	entremanger	:V1____r_e_:Is:3p!/R
entremêlerais	entremêler	:V1__t_q_zz:K:1s:2s/*
entretaillent	entretailler	:V1____p_e_:Ip:Sp:3p/*
entretailleraient	entretailler	:V1____p_e_:K:3p/*
entretaillées	entretailler	:V1____p_e_:Q:A:f:p/*
entreteneuses	entreteneuse	:N:f:p/*
entretuerez	entretuer	:V1____r_e_:If:2p/R
287164
287165
287166
287167
287168
287169
287170

287171
287172
287173
287174
287175
287176
287177
287178
287179
287180
287181
287036
287037
287038
287039
287040
287041
287042
287043
287044
287045
287046

287047
287048
287049
287050
287051
287052
287053







+



-







lacérons	lacérer	:V1__t___zz:Ip:1p/*
lacérons	lacérer	:V1__t___zz:E:1p/*
lagothrix	lagothrix	:N:m:i/*
lainais	lainer	:V1__t___zz:Iq:1s:2s/*
lainasse	lainer	:V1__t___zz:Sq:1s/*
lambinèrent	lambiner	:V1_i____zz:Is:3p!/*
laminerai	laminer	:V1__t___zz:If:1s/*
lampes-tempête	lampes-tempête	:N:f:p/*
lampai	lamper	:V1__t___zz:Is:1s/*
lampez	lamper	:V1__t___zz:Ip:2p/*
lampez	lamper	:V1__t___zz:E:2p/*
lampes-tempête	lampes-tempête	:N:f:p/*
lancequiner	lancequiner	:V1_i____zz:Y/*
lancinèrent	lanciner	:V1_it___zz:Is:3p!/*
langage-machine	langage-machine	:N:m:s/*
langueyé	langueyer	:V1__t___zz:Q:A:1ŝ:m:s/*
languîmes	languir	:V2_i__q_zz:Is:1p/*
lansquine	lansquiner	:V1_i____zz:Ip:Sp:1s:3s/*
lansquine	lansquiner	:V1_i____zz:E:2s/*
287276
287277
287278
287279
287280
287281
287282
287283
287284

287285
287286
287287
287288
287289
287290
287291
287148
287149
287150
287151
287152
287153
287154

287155
287156
287157
287158
287159
287160
287161
287162
287163







-

+







machmètres	machmètre	:N:m:p/*
macro-organisme	macro-organisme	:N:m:s/M
macérèrent	macérer	:V1_it___zz:Is:3p!/*
magouilleuses	magouilleuse	:N:A:f:p/*
maharashtri	maharashtri	:N:m:s/*
maigrissiez	maigrir	:V2_it____a:Iq:Sp:Sq:2p/*
maitre-esclave	maitre-esclave	:A:e:i/R
maitres-chiens	maitres-chiens	:N:e:p/R
maitres-mots	maitres-mots	:N:m:p/R
maitres-chiens	maitres-chiens	:N:e:p/R
maitriseraient	maitriser	:V1__t_q_zz:K:3p/R
maitriseras	maitriser	:V1__t_q_zz:If:2s/R
makach	makach	:X/*
mal-logé	mal-logée	:N:m:s/*
malossols	malossol	:N:m:p/*
maltages	maltage	:N:m:p/*
maltraitas	maltraiter	:V1__t___zz:Is:2s/*
287631
287632
287633
287634
287635
287636
287637

287638
287639
287640
287641
287642
287643
287644
287503
287504
287505
287506
287507
287508
287509
287510
287511
287512
287513
287514
287515
287516
287517







+







opalisaient	opaliser	:V1__t___zz:Iq:3p/*
opineras	opiner	:V1_i____zz:If:2s/*
opprimais	opprimer	:V1__t___zz:Iq:1s:2s/*
optimisions	optimiser	:V1__t___zz:Iq:Sp:1p/*
opérè	opérer	:V1_it_q_zz:Ip:1ś/R
orangeas	oranger	:V1__t___zz:Is:2s/*
orbiteraient	orbiter	:V1_i____zz:K:3p/*
orchidologie	orchidologie	:N:f:s/*
ordolibéral	ordolibérale	:N:A:m:s/*
ordonnasses	ordonner	:V1_it_q_zz:Sq:2s/*
organisasse	organiser	:V1__t_q_zz:Sq:1s/*
orientalisaient	orientaliser	:V1__t_q_zz:Iq:3p/*
orienteras	orienter	:V1__t_q_zz:If:2s/*
ornementeras	ornementer	:V1__t___zz:If:2s/*
ornementions	ornementer	:V1__t___zz:Iq:Sp:1p/*
289864
289865
289866
289867
289868
289869
289870
289871
289872
289873
289874
289875
289876
289877
289878
289737
289738
289739
289740
289741
289742
289743

289744
289745
289746
289747
289748
289749
289750







-







éventrassent	éventrer	:V1__t_q_zz:Sq:3p/*
ôtassiez	ôter	:V1__t_q_zz:Sq:2p/*
Agroqualita	Agroqualita	:MP:f:i/X
Biopi	Biopi	:MP:m:i/X
pBq	Bq	:N:m:i;S/*
Braine-le-Comte	Braine-le-Comte	:MP:e:i/*
Bîne	Bîne	:N:f:i/X
Casseurs_Flowters	Casseurs_Flowters	:M2:e:i/X
Chalabaev	Chalabaev	:M2:e:i/X
Charenton-le-Pont	Charenton-le-Pont	:MP:e:i/*
DUER	DUER	:N:m:i/X
TDa	Da	:N:m:i;S/*
YDa	Da	:N:m:i;S/*
cDa	Da	:N:m:i;S/*
FLOSH	FLOSH	:N:m:i/X
289888
289889
289890
289891
289892
289893
289894
289895
289896
289897
289898
289899
289900
289901
289902
289903
289904
289905
289906
289907
289908
289909
289910
289911
289912
289913
289914
289915
289760
289761
289762
289763
289764
289765
289766

289767
289768
289769
289770
289771
289772
289773
289774
289775
289776

289777

289778
289779
289780
289781
289782
289783
289784







-










-

-







dHz	Hz	:N:m:i;S/*
daHz	Hz	:N:m:i;S/*
hHz	Hz	:N:m:i;S/*
yHz	Hz	:N:m:i;S/*
zHz	Hz	:N:m:i;S/*
LibX	LibX	:MP:m:i/X
Ligniroux	Ligniroux	:MP:e:i/X
Lovely_Rita	Lovely_Rita	:MP:m:i/X
Mantes-la-Jolie	Mantes-la-Jolie	:MP:e:i/*
Mantes-la-Ville	Mantes-la-Ville	:MP:e:i/*
Mavoungo	Mavoungo	:M2:e:i/X
Noisy-le-Grand	Noisy-le-Grand	:MP:e:i/*
dPa	Pa	:N:m:i;S/*
Pacy-sur-eure	Pacy-sur-eure	:MP:e:i/X
RNA-seq	RNA-seq	:N:f:i/X
Rouceau	Rouceau	:M2:e:i/X
Rowina	Rowina	:M1:f:i/X
Ryxeo	Ryxeo	:M2:e:i/X
Standard_de_Liège	Standard_de_Liège	:MP:m:i/P
Suhuy	Suhuy	:M1:m:i/X
The_Document_Foundation	The_Document_Foundation	:MP:f:s/P
Ténakourou	Ténakourou	:N:m:i/*
mVA	VA	:N:m:i;S/*
Verrières-le-Buisson	Verrières-le-Buisson	:MP:e:i/*
EWh	Wh	:N:m:i;S/*
ZWh	Wh	:N:m:i;S/*
nWh	Wh	:N:m:i;S/*
Xebia	Xebia	:MP:f:i/X
290598
290599
290600
290601
290602
290603
290604

290605
290606
290607
290608
290609
290610
290611
290467
290468
290469
290470
290471
290472
290473
290474
290475
290476
290477
290478
290479
290480
290481







+







arabo-palestinienne	arabo-palestinienne	:A:f:s/*
arabo-palestiniennes	arabo-palestinienne	:A:f:p/*
arabo-sunnite	arabo-sunnite	:A:e:s/*
arasons	araser	:V1__t___zz:Ip:1p/*
arasons	araser	:V1__t___zz:E:1p/*
arasât	araser	:V1__t___zz:Sq:3s/*
arboriseront	arboriser	:V1_i____zz:If:3p!/*
arcs-boutements	arcs-boutements	:N:m:p/*
arc-boutera	arc-bouter	:V1__t_q_zz:If:3s/M
arc-bouterai	arc-bouter	:V1__t_q_zz:If:1s/M
arc-bouterais	arc-bouter	:V1__t_q_zz:K:1s:2s/M
arc-bouterait	arc-bouter	:V1__t_q_zz:K:3s/M
arc-bouterez	arc-bouter	:V1__t_q_zz:If:2p/M
arc-bouteront	arc-bouter	:V1__t_q_zz:If:3p!/M
arc-boutez	arc-bouter	:V1__t_q_zz:Ip:2p/M
290621
290622
290623
290624
290625
290626
290627
290628
290629
290630
290631
290632
290633
290634
290635
290491
290492
290493
290494
290495
290496
290497

290498
290499
290500
290501
290502
290503
290504







-







arcdoubleaux	arcdoubleau	:N:m:p/R
archelles	archelle	:N:f:p/*
archeries	archerie	:N:f:p/*
archi-fausses	archi-fausse	:A:f:p/*
archidiocésains	archidiocésaine	:A:m:p/*
archiprêtresse	archiprêtresse	:N:f:s/*
archiviez	archiver	:V1_it____a:Iq:Sp:2p/*
arcs-boutements	arcs-boutements	:N:m:p/*
arctanh	arctanh	:N:m:i/*
arderait	arder	:V1_i____zz:K:3s/*
ardât	arder	:V1_i____zz:Sq:3s/*
ardâtes	arder	:V1_i____zz:Is:2p/*
argenterai	argenter	:V1__t_q_zz:If:1s/*
argentions	argenter	:V1__t_q_zz:Iq:Sp:1p/*
argentât	argenter	:V1__t_q_zz:Sq:3s/*
294049
294050
294051
294052
294053
294054
294055

294056
294057
294058
294059
294060
294061
294062
293918
293919
293920
293921
293922
293923
293924
293925
293926
293927
293928
293929
293930
293931
293932







+







dégauchirent	dégauchir	:V2__t___zz:Is:3p!/*
dégauchisse	dégauchir	:V2__t___zz:Sp:Sq:1s/*
dégauchisse	dégauchir	:V2__t___zz:Sp:3s/*
dégazements	dégazement	:N:m:p/*
dégazeront	dégazer	:V1_it___zz:If:3p!/*
dégazoliner	dégazoliner	:V1__t___zz:Y/*
dégelais	dégeler	:V1_it_q_zz:Iq:1s:2s/*
dégenrée	dégenrer	:V1__t_q__a:Q:A:f:s/*
déginganda	dégingander	:V1__t_q_zz:Is:3s/*
dégingandent	dégingander	:V1__t_q_zz:Ip:Sp:3p/*
dégivrait	dégivrer	:V1__t___zz:Iq:3s/*
dégivrera	dégivrer	:V1__t___zz:If:3s/*
déglinguaient	déglinguer	:V1__t_q_zz:Iq:3p/*
déglinguera	déglinguer	:V1__t_q_zz:If:3s/*
déglua	dégluer	:V1__t___zz:Is:3s/*
294597
294598
294599
294600
294601
294602
294603



294604
294605
294606
294607
294608
294609
294610
294467
294468
294469
294470
294471
294472
294473
294474
294475
294476
294477
294478
294479
294480
294481
294482
294483







+
+
+







désenrouer	désenrouer	:V1__t___zz:Y/*
désenrouèrent	désenrouer	:V1__t___zz:Is:3p!/*
désensablait	désensabler	:V1__t___zz:Iq:3s/*
désensorcellent	désensorceler	:V1__t___zz:Ip:Sp:3p/M
désentoilage	désentoilage	:N:m:s/*
désentoilé	désentoiler	:V1__t___zz:Q:A:1ŝ:m:s/*
désentoilée	désentoiler	:V1__t___zz:Q:A:f:s/*
désentrelace	désentrelacer	:V1__t_q__a:Ip:Sp:1s:3s/*
désentrelace	désentrelacer	:V1__t_q__a:E:2s/*
désentrelacées	désentrelacer	:V1__t_q__a:Q:A:f:p/*
désenvasé	désenvaser	:V1__t___zz:Q:A:1ŝ:m:s/*
désenvenime	désenvenimer	:V1__t___zz:Ip:Sp:1s:3s/*
désenvenime	désenvenimer	:V1__t___zz:E:2s/*
désenvergua	désenverguer	:V1__t___zz:Is:3s/*
désenvergué	désenverguer	:V1__t___zz:Q:A:1ŝ:m:s/*
désenvoutée	désenvouter	:V1__t___zz:Q:A:f:s/R
désertâtes	déserter	:V1_it_q_zz:Is:2p/*
295499
295500
295501
295502
295503
295504
295505
295506
295507


295508
295509
295510
295511
295512
295513
295514
295372
295373
295374
295375
295376
295377
295378


295379
295380
295381
295382
295383
295384
295385
295386
295387







-
-
+
+







entrefrapper	entrefrapper	:V1____r_e_:Y/R
entrefrappées	entrefrapper	:V1____r_e_:Q:A:f:p/R
entrefrappés	entrefrapper	:V1____r_e_:Q:A:m:p/R
entreheurtait	entreheurter	:V1____r_e_:Iq:3s/R
entreheurtez	entreheurter	:V1____r_e_:Ip:2p/R
entreheurtez	entreheurter	:V1____r_e_:E:2p/R
entreheurtées	entreheurter	:V1____r_e_:Q:A:f:p/R
entrelacerais	entrelacer	:V1__t_q_zz:K:1s:2s/*
entrelaçât	entrelacer	:V1__t_q_zz:Sq:3s/*
entrelacerais	entrelacer	:V1__t_q__a:K:1s:2s/*
entrelaçât	entrelacer	:V1__t_q__a:Sq:3s/*
entrelarda	entrelarder	:V1__t___zz:Is:3s/*
entrelardaient	entrelarder	:V1__t___zz:Iq:3p/*
entrelarderait	entrelarder	:V1__t___zz:K:3s/*
entrelarderez	entrelarder	:V1__t___zz:If:2p/*
entremange	entremanger	:V1____r_e_:Ip:Sp:3s/R
entremangeant	entremanger	:V1____r_e_:P/R
entremangez	entremanger	:V1____r_e_:Ip:2p/R
296940
296941
296942
296943
296944
296945
296946

296947
296948
296949
296950
296951
296952
296953
296813
296814
296815
296816
296817
296818
296819
296820
296821
296822
296823
296824
296825
296826
296827







+







hydronymies	hydronymie	:N:f:p/*
hydrosphères	hydrosphère	:N:f:p/*
hygroréglables	hygroréglable	:A:e:p/*
hylobatidé	hylobatidé	:N:m:s/*
hymnologies	hymnologie	:N:f:p/*
hyperconnecté	hyperconnectée	:A:m:s/*
hypernerveuses	hypernerveuse	:A:f:p/*
hyperoxies	hyperoxie	:N:f:p/*
hypersialie	hypersialie	:N:f:s/*
hyperventilent	hyperventiler	:V1_i_____a:Ip:Sp:3p/*
hyperventilons	hyperventiler	:V1_i_____a:Ip:1p/*
hyperventilons	hyperventiler	:V1_i_____a:E:1p/*
hypnothérapeutique	hypnothérapeutique	:A:e:s/*
hypnothérapeutiques	hypnothérapeutique	:A:e:p/*
hypnotiserai	hypnotiser	:V1__t_q_zz:If:1s/*
297570
297571
297572
297573
297574
297575
297576

297577
297578
297579
297580
297581
297582
297583
297444
297445
297446
297447
297448
297449
297450
297451
297452
297453
297454
297455
297456
297457
297458







+







lemmatiques	lemmatique	:A:e:p/*
leptines	leptine	:N:f:p/*
lessivèrent	lessiver	:V1__t___zz:Is:3p!/*
lessivielle	lessivielle	:A:f:s/*
lettreuses	lettreuse	:N:f:p/*
leucotrichie	leucotrichie	:N:f:s/*
leurrerons	leurrer	:V1__t_q_zz:If:1p/*
leurszigues	leurszigues	:G:Os:Oo:O3:e:p/*
levasses	lever	:V1_it_q_zz:Sq:2s/*
levrette	levretter	:V1_i____zz:Ip:Sp:1s:3s/*
levrette	levretter	:V1_i____zz:E:2s/*
levrettes	levretter	:V1_i____zz:Ip:Sp:2s/*
liardons	liarder	:V1_i____zz:Ip:1p/*
liardons	liarder	:V1_i____zz:E:1p/*
libanisons	libaniser	:V1____p_e_:Ip:1p/*
297933
297934
297935
297936
297937
297938
297939
297940
297941
297942
297943


297944
297945
297946
297947
297948
297949
297950
297808
297809
297810
297811
297812
297813
297814


297815
297816
297817
297818
297819
297820
297821
297822
297823
297824
297825







-
-


+
+







maximisez	maximiser	:V1__t___zz:Ip:2p/*
maximisez	maximiser	:V1__t___zz:E:2p/*
mazamas	mazama	:N:m:p/*
mazoutant	mazouter	:V1_it___zz:P/*
mazoutes	mazouter	:V1_it___zz:Ip:Sp:2s/*
maçonneraient	maçonner	:V1__t___zz:K:3p/*
maçonneras	maçonner	:V1__t___zz:If:2s/*
maître-penseur	maître-penseur	:N:m:s/M
maître-à-danser	maître-à-danser	:N:m:s/M
maîtres-coqs	maîtres-coqs	:N:m:p/M
maîtres-couples	maîtres-couples	:N:m:p/M
maître-penseur	maître-penseur	:N:m:s/M
maître-à-danser	maître-à-danser	:N:m:s/M
maîtrisasse	maîtriser	:V1__t_q_zz:Sq:1s/M
maïoral	maïorale	:A:m:s/*
maïorales	maïorale	:A:f:p/*
maïorats	maïorat	:N:m:p/*
melchiors	melchior	:N:m:p/*
melonné	melonnée	:A:m:s/*
mendieriez	mendier	:V1_it___zz:K:2p/*
298427
298428
298429
298430
298431
298432
298433

298434
298435
298436
298437
298438
298439
298440
298302
298303
298304
298305
298306
298307
298308
298309
298310
298311
298312
298313
298314
298315
298316







+







neuraminiques	neuraminique	:A:e:p/*
neuro-anatomistes	neuro-anatomiste	:N:e:p/C
neuro-endocrinienne	neuro-endocrinienne	:A:f:s/C
neuro-endocriniennes	neuro-endocrinienne	:A:f:p/C
neuro-endocrinologie	neuro-endocrinologie	:N:f:s/C
neuro-histologie	neuro-histologie	:N:f:s/C
neuro-hypophyse	neuro-hypophyse	:N:f:s/C
neuroatypiques	neuroatypique	:A:e:p/*
neurochirurgiennes	neurochirurgienne	:N:f:p/*
neurodiversités	neurodiversité	:N:f:p/*
neuropaludismes	neuropaludisme	:N:m:p/*
exanewton	newton	:N:m:s/*
giganewton	newton	:N:m:s/*
nanonewton	newton	:N:m:s/*
nanonewtons	newton	:N:m:p/*
300746
300747
300748
300749
300750
300751
300752

300753
300754
300755
300756
300757
300758
300759
300622
300623
300624
300625
300626
300627
300628
300629
300630
300631
300632
300633
300634
300635
300636







+







resemez	resemer	:V1__t_q_zz:Ip:2p/*
resemez	resemer	:V1__t_q_zz:E:2p/*
resemons	resemer	:V1__t_q_zz:Ip:1p/*
resemons	resemer	:V1__t_q_zz:E:1p/*
resèmeras	resemer	:V1__t_q_zz:If:2s/*
resituèrent	resituer	:V1__t_q_zz:Is:3p!/*
resocialisait	resocialiser	:V1_it_q__a:Iq:3s/*
resolidifiant	resolidifier	:V1_it_q__a:P/*
respectabilisé	respectabiliser	:V1__t___zz:Q:A:1ŝ:m:s/*
respectassiez	respecter	:V1__t_q_zz:Sq:2p/*
respirassiez	respirer	:V1_it___zz:Sq:2p/*
resplendissions	resplendir	:V2_i_____a:Iq:Sp:Sq:1p/*
ressaigna	ressaigner	:V1_it___zz:Is:3s/*
ressaignait	ressaigner	:V1_it___zz:Iq:3s/*
ressaisiras	ressaisir	:V2__t_q_zz:If:2s/*
301675
301676
301677
301678
301679
301680
301681
301682

301683
301684
301685
301686
301687
301688
301689
301552
301553
301554
301555
301556
301557
301558

301559
301560
301561
301562
301563
301564
301565
301566







-
+







solennisiez	solenniser	:V1__t___zz:Iq:Sp:2p/*
solfiera	solfier	:V1__t___zz:If:3s/*
solfierait	solfier	:V1__t___zz:K:3s/*
solfiez	solfier	:V1__t___zz:Ip:2p/*
solfiez	solfier	:V1__t___zz:E:2p/*
solfions	solfier	:V1__t___zz:Ip:1p/*
solfions	solfier	:V1__t___zz:E:1p/*
solidifierai	solidifier	:V1__t_q_zz:If:1s/*
solidifierai	solidifier	:V1_it_q__a:If:1s/*
solier-moquettiste	solier-moquettiste	:N:m:s/*
soliloquai	soliloquer	:V1_i____zz:Is:1s/*
soliloquez	soliloquer	:V1_i____zz:Ip:2p/*
soliloquez	soliloquer	:V1_i____zz:E:2p/*
solmisations	solmisation	:N:f:p/*
solutionnerai	solutionner	:V1__t___zz:If:1s/*
solvolyses	solvolyse	:N:f:p/*
302057
302058
302059
302060
302061
302062
302063

302064
302065
302066
302067
302068
302069
302070
301934
301935
301936
301937
301938
301939
301940
301941
301942
301943
301944
301945
301946
301947
301948







+







surpassâtes	surpasser	:V1__t_q_zz:Is:2p/*
surpayons	surpayer	:V1__t___zz:Ip:1p/*
surpayons	surpayer	:V1__t___zz:E:1p/*
surpiquer	surpiquer	:V1__t___zz:Y/*
surplombât	surplomber	:V1_it___zz:Sq:3s/*
surprisses	surprendre	:V3_it_q__a:Sq:2s/*
surprissions	surprendre	:V3_it_q__a:Sq:1p/*
surprescriptions	surprescription	:N:f:p/*
surproduisait	surproduire	:V3__t___zz:Iq:3s/*
surproduise	surproduire	:V3__t___zz:Sp:1s:3s/*
surproduisit	surproduire	:V3__t___zz:Is:3s/*
surréagis	surréagir	:V2_i_n___a:Ip:Is:1s:2s/*
surréagis	surréagir	:V2_i_n___a:E:2s/*
surréservé	surréservée	:A:m:s/*
sursaturantes	sursaturante	:A:f:p/*
302526
302527
302528
302529
302530
302531
302532





302533
302534
302535
302536
302537
302538
302539
302404
302405
302406
302407
302408
302409
302410
302411
302412
302413
302414
302415
302416
302417
302418
302419
302420
302421
302422







+
+
+
+
+







transgresserais	transgresser	:V1__t___zz:K:1s:2s/*
transhumanismes	transhumanisme	:N:m:p/*
transhumés	transhumer	:V1_it___zz:Q:A:m:p/*
transigeasse	transiger	:V1_i____zz:Sq:1s/*
transiraient	transir	:V2_it___zz:K:3p/*
transirais	transir	:V2_it___zz:K:1s:2s/*
transissaient	transir	:V2_it___zz:Iq:3p/*
transitionne	transitionner	:V1_i_____a:Ip:Sp:1s:3s/*
transitionne	transitionner	:V1_i_____a:E:2s/*
transitionneront	transitionner	:V1_i_____a:If:3p!/*
transitionnée	transitionner	:V1_i_____a:Q:A:f:s/*
transitionnées	transitionner	:V1_i_____a:Q:A:f:p/*
translataient	translater	:V1__t___zz:Iq:3p/*
translittères	translittérer	:V1__t___zz:Ip:Sp:2s/*
translittéra	translittérer	:V1__t___zz:Is:3s/*
translittérons	translittérer	:V1__t___zz:Ip:1p/*
translittérons	translittérer	:V1__t___zz:E:1p/*
transmigrassent	transmigrer	:V1_i____zz:Sq:3p/*
transmigrerait	transmigrer	:V1_i____zz:K:3s/*
303202
303203
303204
303205
303206
303207
303208
303209
303210
303211
303212
303213
303214
303215
303216
303085
303086
303087
303088
303089
303090
303091

303092
303093
303094
303095
303096
303097
303098







-







zéphyriens	zéphyrienne	:A:m:p/*
zérotage	zérotage	:N:m:s/*
zététicienne	zététicienne	:N:A:f:s/*
zététiciennes	zététicienne	:N:A:f:p/*
zézayais	zézayer	:V1_i____zz:Iq:1s:2s/*
zézayez	zézayer	:V1_i____zz:Ip:2p/*
zézayez	zézayer	:V1_i____zz:E:2p/*
Énergie_Partagée	Énergie_Partagée	:MP:f:i/P
ânonnera	ânonner	:V1_it___zz:If:3s/*
ânonnerait	ânonner	:V1_it___zz:K:3s/*
ébarberont	ébarber	:V1__t___zz:If:3p!/*
ébattissent	ébattre	:V3____p_e_:Sq:3p/*
ébattrai	ébattre	:V3____p_e_:If:1s/*
ébattras	ébattre	:V3____p_e_:If:2s/*
ébattrons	ébattre	:V3____p_e_:If:1p/*
303832
303833
303834
303835
303836
303837
303838

303839
303840
303841
303842
303843
303844
303845
303846


303847
303848
303849
303850
303851
303852
303853
303854
303855
303856
303857
303858
303859

303860


303861
303862

303863

303864

303865
303866
303867


303868
303869
303870
303871
303872
303873
303874
303875




303876
303877
303878

303879
303880
303881
303882
303883
303884
303885
303886
303887
303888
303889
303890
303891
303892

303893
303894
303895
303896
303897
303898

303899
303900
303901
303902
303903
303904
303905
303906

303907

303908
303909
303910
303911
303912

303913
303914
303915
303916
303917
303918
303919
303920
303921
303922
303923
303924
303925
303926
303927
303928

303929
303930
303931
303932

303933
303934
303935
303936
303937
303938
303939
303940



303941
303942


303943
303944

303945

303946
303947
303948
303949
303950
303951
303952

303953
303954
303955

303956
303957
303958
303959
303960
303961
303962
303963
303964
303965
303966

303967
303968

303969

303970
303971
303972
303973
303974
303975
303976
303714
303715
303716
303717
303718
303719
303720
303721
303722
303723
303724
303725
303726
303727
303728
303729
303730
303731
303732
303733
303734
303735
303736
303737
303738
303739
303740
303741
303742
303743
303744
303745
303746
303747
303748
303749
303750
303751
303752
303753
303754
303755
303756
303757
303758
303759
303760
303761
303762
303763
303764
303765
303766
303767
303768
303769
303770
303771
303772
303773
303774
303775
303776
303777
303778
303779
303780
303781
303782
303783
303784
303785
303786
303787
303788
303789
303790
303791
303792
303793
303794
303795
303796
303797
303798
303799
303800
303801
303802
303803
303804
303805
303806
303807
303808
303809
303810
303811
303812
303813

303814
303815
303816
303817
303818
303819
303820
303821
303822
303823
303824
303825
303826
303827
303828
303829
303830
303831
303832
303833
303834
303835
303836
303837
303838
303839
303840
303841
303842
303843
303844
303845
303846
303847
303848

303849
303850
303851
303852
303853
303854
303855
303856
303857
303858
303859
303860
303861

303862
303863
303864
303865
303866
303867
303868
303869
303870
303871
303872
303873
303874
303875
303876
303877
303878
303879
303880
303881

303882
303883
303884
303885
303886
303887
303888
303889







+








+
+













+

+
+


+

+

+



+
+








+
+
+
+



+














+






+








+

+




-
+
















+




+








+
+
+

-
+
+


+

+






-
+



+











+


+
-
+







9ᵉ	9ᵉ	:A:e:s/*
9ᵉˢ	9ᵉˢ	:A:e:p/*
ActivityPub	ActivityPub	:MP:m:i/X
ActivityStreams	ActivityStreams	:MP:m:i/X
Akispace	Akispace	:MP:e:i/X
Alba-la-Romaine	Alba-la-Romaine	:MP:e:i/X
Altinier	Altinier	:M2:e:i/X
Apache Software Foundation	Apache Software Foundation	:MP:f:s/P
Apache-OFBiz	Apache-OFBiz	:MP:m:i/X
Apexagri	Apexagri	:MP:e:i/X
Artémisions	Artémision	:N:m:p/*
Aïd-el-Adha	Aïd-el-Adha	:N:f:i/*
BAPBAP	BAPBAP	:MP:f:i/X
Benozillo	Benozillo	:M2:e:i/X
Benpro	Benpro	:M1:m:i/X
Bentama	Bentama	:M2:e:i/X
Berre-l’Étang	Berre-l’Étang	:MP:e:i/*
Bois-d’Arcy	Bois-d’Arcy	:MP:e:i/*
YBq	Bq	:N:m:i;S/*
ZBq	Bq	:N:m:i;S/*
aBq	Bq	:N:m:i;S/*
cBq	Bq	:N:m:i;S/*
dBq	Bq	:N:m:i;S/*
daBq	Bq	:N:m:i;S/*
fBq	Bq	:N:m:i;S/*
hBq	Bq	:N:m:i;S/*
nBq	Bq	:N:m:i;S/*
yBq	Bq	:N:m:i;S/*
zBq	Bq	:N:m:i;S/*
µBq	Bq	:N:m:i;S/*
Braine-le-Château	Braine-le-Château	:MP:e:i/*
Braine-l’Alleud	Braine-l’Alleud	:MP:e:i/*
Bruay-la-Buissière	Bruay-la-Buissière	:MP:e:i/*
Bruay-sur-l’Escaut	Bruay-sur-l’Escaut	:MP:e:i/*
Buenos Aires	Buenos Aires	:MP:e:i/P
Bully-les-Mines	Bully-les-Mines	:MP:e:i/*
COPAGEX	COPAGEX	:MP:e:i/X
Cantons-de-l’Est	Cantons-de-l’Est	:N:m:p/*
Capotier	Capotier	:MP:m:i/X
Casseurs Flowters	Casseurs Flowters	:M2:e:i/X
Castelnau-le-Lez	Castelnau-le-Lez	:MP:e:i/*
Central Park	Central Park	:MP:m:i/P
Chantris	Chantris	:M1:e:i/X
Choffardet	Choffardet	:M2:e:i/X
Chorem	Chorem	:MP:m:i/X
Château-d’Olonne	Château-d’Olonne	:MP:e:i/*
Château-d’Œx	Château-d’Œx	:MP:e:i/X
Châteauneuf-les-Martigues	Châteauneuf-les-Martigues	:MP:e:i/*
GCi	Ci	:N:m:i;S/*
YCi	Ci	:N:m:i;S/*
ZCi	Ci	:N:m:i;S/*
daCi	Ci	:N:m:i;S/*
hCi	Ci	:N:m:i;S/*
zCi	Ci	:N:m:i;S/*
µCi	Ci	:N:m:i;S/*
Cléon-d’Andran	Cléon-d’Andran	:MP:e:i/X
Condé-sur-l’Escaut	Condé-sur-l’Escaut	:MP:e:i/*
Cournon-d’Auvergne	Cournon-d’Auvergne	:MP:e:i/*
Creative Commons	Creative Commons	:MP:e:i/P
Crécy-la-Chapelle	Crécy-la-Chapelle	:MP:e:i/X
CyberSDF	CyberSDF	:M1:m:i/X
Cymnéa	Cymnéa	:M1:f:i/X
Côte-d’Or	Côte-d’Or	:N:f:i/*
DPTH	DPTH	:N:m:i/X
PDa	Da	:N:m:i;S/*
ZDa	Da	:N:m:i;S/*
dDa	Da	:N:m:i;S/*
fDa	Da	:N:m:i;S/*
hDa	Da	:N:m:i;S/*
mDa	Da	:N:m:i;S/*
nDa	Da	:N:m:i;S/*
pDa	Da	:N:m:i;S/*
yDa	Da	:N:m:i;S/*
zDa	Da	:N:m:i;S/*
µDa	Da	:N:m:i;S/*
Dammarie-les-Lys	Dammarie-les-Lys	:MP:e:i/*
Deuil-la-Barre	Deuil-la-Barre	:MP:e:i/*
Deutsche Bank	Deutsche Bank	:N:f:i/P
Douchy-les-Mines	Douchy-les-Mines	:MP:e:i/*
Dybèle	Dybèle	:M1:f:i/X
Dʳˢ	Dʳˢ	:T:m:p/*
Dʳᵉ	Dʳᵉ	:T:f:s/*
Dʳᵉˢ	Dʳᵉˢ	:T:f:p/*
Dᴏꜱꜱᴍᴀɴɴ	Dᴏꜱꜱᴍᴀɴɴ	:M2:e:i/X
D’Holbach	D’Holbach	:M2:e:i/*
Elliut	Elliut	:M1:f:i/X
Enghien-les-Bains	Enghien-les-Bains	:MP:e:i/*
Ergodis	Ergodis	:N:e:i/X
Eyleen	Eyleen	:M1:f:i/X
daF	F	:N:m:i;S/*
Fediverse	Fediverse	:MP:m:i/X
Feldane	Feldane	:M1:e:i/X
Fleury-les-Aubrais	Fleury-les-Aubrais	:MP:e:i/*
Fontaine-l’Évêque	Fontaine-l’Évêque	:MP:e:i/*
Fontenay-le-Fleury	Fontenay-le-Fleury	:MP:e:i/*
Free Software Foundation	Free Software Foundation	:MP:f:s/P
µG	G	:N:m:i;S/*
Gaspésie–Îles-de-la-Madeleine	Gaspésie–Îles-de-la-Madeleine	:N:f:i/*
Ghatanothoa	Ghatanothoa	:M1:m:i/X
GnuSocial	GnuSocial	:MP:m:i/X
Golden_Show	Golden_Show	:N:m:i/X
Golden Show	Golden Show	:N:m:i/X
EGy	Gy	:N:m:i;S/*
PGy	Gy	:N:m:i;S/*
TGy	Gy	:N:m:i;S/*
YGy	Gy	:N:m:i;S/*
ZGy	Gy	:N:m:i;S/*
aGy	Gy	:N:m:i;S/*
dGy	Gy	:N:m:i;S/*
daGy	Gy	:N:m:i;S/*
fGy	Gy	:N:m:i;S/*
hGy	Gy	:N:m:i;S/*
yGy	Gy	:N:m:i;S/*
Géofonciers	Géofoncier	:N:m:p/X
Hack-in-Paris	Hack-in-Paris	:MP:e:i/X
Hanouccas	Hanoucca	:N:f:p/*
Hanoukkas	Hanoukka	:N:f:p/C
Herck-la-Ville	Herck-la-Ville	:MP:e:i/*
Hero Corp	Hero Corp	:MP:e:i/X
IIIᵉ	IIIᵉ	:A:e:s/*
IIᵉ	IIᵉ	:A:e:s/*
IVᵉ	IVᵉ	:A:e:s/*
IXᵉ	IXᵉ	:A:e:s/*
Isle-d’Abeau	Isle-d’Abeau	:MP:e:i/*
Isle-sur-la-Sorgue	Isle-sur-la-Sorgue	:MP:e:i/*
Iʳᵉ	Iʳᵉ	:A:f:s/*
Jacolot-Benestan	Jacolot-Benestan	:M2:e:i/X
Joumond	Joumond	:M2:e:i/X
Kadígia	Kadígia	:M1:f:i/X
Kashfa	Kashfa	:MP:m:i/X
Kermorphezen	Kermorphezen	:MP:e:i/X
Kertahiti	Kertahiti	:MP:e:i/X
K’nex	K’nex	:MP:m:i/X
La Rochelle	La Rochelle	:MP:e:i/P
Las Vegas	Las Vegas	:MP:e:i/P
Lassay-les-Châteaux	Lassay-les-Châteaux	:MP:e:i/*
Le_Bris	Le_Bris	:M2:e:i/X
Le Bris	Le Bris	:M2:e:i/X
Les Vigneaux	Les Vigneaux	:MP:e:i/X
Limesurvey	Limesurvey	:MP:m:i/X
Lioploum	Lioploum	:M1:m:i/X
Los Angeles	Los Angeles	:MP:f:i/P
Lougalane	Lougalane	:M1:f:i/X
Lovely Rita	Lovely Rita	:MP:m:i/X
MIPAW	MIPAW	:N:m:i/X
Mailclark	Mailclark	:MP:m:i/X
Mandelieu-la-Napoule	Mandelieu-la-Napoule	:MP:e:i/*
Meakyl	Meakyl	:M2:e:i/X
Micropub	Micropub	:MP:m:i/X
Miniploum	Miniploum	:M1:m:i/X
Mix_Bizarre	Mix_Bizarre	:MP:m:i/X
Mix Bizarre	Mix Bizarre	:MP:m:i/X
Montigny-le-Bretonneux	Montigny-le-Bretonneux	:MP:e:i/*
Montigny-le-Tilleul	Montigny-le-Tilleul	:MP:e:i/*
Montébran	Montébran	:M2:e:i/X
Morne-à-l’Eau	Morne-à-l’Eau	:MP:e:i/*
Mʳ	Mʳ	:T:m:s/*
Mʳˢ	Mʳˢ	:T:m:p/*
Mˡˡᵉ	Mˡˡᵉ	:T:f:s/*
Mˡˡᵉˢ	Mˡˡᵉˢ	:T:f:p/*
Mᵉ	Mᵉ	:T:m:s/*
Mᵉˢ	Mᵉˢ	:T:m:p/*
Mᵍʳ	Mᵍʳ	:T:m:s/*
Mᵍʳˢ	Mᵍʳˢ	:T:m:p/*
Mᵐᵉ	Mᵐᵉ	:T:f:s/*
Mᵐᵉˢ	Mᵐᵉˢ	:T:f:p/*
µN	N	:N:m:i;S/*
New York	New York	:MP:e:i/P
NextCloud	NextCloud	:MP:e:i/X
Nœux-les-Mines	Nœux-les-Mines	:MP:e:i/*
N’Djamena	N’Djamena	:MP:e:i/*
Olea_Medical	Olea_Medical	:MP:f:i/X
Olea Medical	Olea Medical	:MP:f:i/X
Orekit	Orekit	:MP:m:i/X
Oryanne	Oryanne	:M1:f:i/X
Ottignies-Louvain-la-Neuve	Ottignies-Louvain-la-Neuve	:MP:e:i/*
Ozoir-la-Ferrière	Ozoir-la-Ferrière	:MP:e:i/*
YPa	Pa	:N:m:i;S/*
ZPa	Pa	:N:m:i;S/*
fPa	Pa	:N:m:i;S/*
303986
303987
303988
303989
303990
303991
303992

303993
303994
303995



303996
303997
303998


303999
304000

304001
304002

304003

304004
304005
304006

304007
304008

304009
304010
304011
304012

304013
304014
304015
304016
304017
304018
304019
304020
304021
304022
304023
304024
304025
304026
304027
304028

304029
304030
304031


304032
304033
304034
304035
304036
304037
304038
304039
304040
304041
304042
304043
304044
304045
304046


304047



304048
304049
304050
304051
304052
304053

304054
304055
304056
304057
304058
304059
304060
303899
303900
303901
303902
303903
303904
303905
303906
303907
303908
303909
303910
303911
303912
303913
303914
303915
303916
303917
303918
303919
303920
303921
303922
303923
303924
303925
303926
303927

303928
303929
303930
303931
303932
303933
303934
303935
303936
303937
303938
303939
303940
303941
303942
303943
303944
303945
303946
303947
303948
303949
303950
303951
303952
303953
303954
303955
303956
303957
303958
303959
303960
303961
303962
303963
303964
303965
303966
303967
303968
303969
303970
303971
303972
303973
303974
303975
303976
303977
303978
303979
303980
303981
303982
303983
303984
303985
303986
303987
303988
303989
303990
303991
303992
303993







+



+
+
+



+
+


+


+

+


-
+


+




+
















+



+
+















+
+

+
+
+






+







Pristy	Pristy	:M1:f:i/X
Proxilio	Proxilio	:MP:m:i/X
Pʳ	Pʳ	:T:m:s/*
Pʳˢ	Pʳˢ	:T:m:p/*
Pʳᵉ	Pʳᵉ	:T:f:s/*
Pʳᵉˢ	Pʳᵉˢ	:T:f:p/*
RODP	RODP	:N:f:i/X
Rhode Island	Rhode Island	:N:m:i/P
Rilga	Rilga	:M1:f:i/X
Rillieux-la-Pape	Rillieux-la-Pape	:MP:e:i/*
Roselyse	Roselyse	:M1:f:i/*
R’lyeh	R’lyeh	:MP:e:i/X
R’n’B	R’n’B	:N:m:i/*
Sables-d’Olonne	Sables-d’Olonne	:MP:e:i/*
Saguenay–Lac-Saint-Jean	Saguenay–Lac-Saint-Jean	:N:m:i/*
Saint-Amand-les-Eaux	Saint-Amand-les-Eaux	:MP:e:i/*
Saint-André-les-Vergers	Saint-André-les-Vergers	:MP:e:i/*
Saint-Cyr-l’École	Saint-Cyr-l’École	:MP:e:i/*
Saint-Denis-d’Anjou	Saint-Denis-d’Anjou	:MP:e:i/X
Saint-Jean-de-la-Ruelle	Saint-Jean-de-la-Ruelle	:MP:e:i/*
Saint-Leu-la-Forêt	Saint-Leu-la-Forêt	:MP:e:i/*
Saint-Martin-d’Hères	Saint-Martin-d’Hères	:MP:e:i/*
Saint-Maximin-la-Sainte-Baume	Saint-Maximin-la-Sainte-Baume	:MP:e:i/*
Saint-Nazaire-le-Désert	Saint-Nazaire-le-Désert	:MP:e:i/X
Saint-Ouen-l’Aumône	Saint-Ouen-l’Aumône	:MP:e:i/*
Saint-Vincent-et-les-Grenadines	Saint-Vincent-et-les-Grenadines	:N:m:i/*
San Francisco	San Francisco	:MP:e:i/P
Savigny-le-Temple	Savigny-le-Temple	:MP:e:i/*
Scrameustaches	Scrameustache	:N:m:p/X
Scred_TV	Scred_TV	:MP:f:i/X
Scred TV	Scred TV	:MP:f:i/X
Septèmes-les-Vallons	Septèmes-les-Vallons	:MP:e:i/*
Siguéploum	Siguéploum	:MP:e:i/X
Silicon Valley	Silicon Valley	:N:f:i/P
Sin-le-Noble	Sin-le-Noble	:MP:e:i/*
Six-Fours-les-Plages	Six-Fours-les-Plages	:MP:e:i/*
Sotteville-les-rouen	Sotteville-les-rouen	:MP:e:i/X
Spaceroots	Spaceroots	:MP:m:i/X
Standard de Liège	Standard de Liège	:MP:m:i/X
Stoke-on-Trent	Stoke-on-Trent	:MP:e:i/*
ESv	Sv	:N:m:i;S/*
GSv	Sv	:N:m:i;S/*
PSv	Sv	:N:m:i;S/*
TSv	Sv	:N:m:i;S/*
YSv	Sv	:N:m:i;S/*
ZSv	Sv	:N:m:i;S/*
aSv	Sv	:N:m:i;S/*
dSv	Sv	:N:m:i;S/*
daSv	Sv	:N:m:i;S/*
fSv	Sv	:N:m:i;S/*
hSv	Sv	:N:m:i;S/*
pSv	Sv	:N:m:i;S/*
ySv	Sv	:N:m:i;S/*
zSv	Sv	:N:m:i;S/*
Swayvill	Swayvill	:M1:m:i/X
Tain-l’Hermitage	Tain-l’Hermitage	:MP:e:i/X
Tassin-la-Demi-Lune	Tassin-la-Demi-Lune	:MP:e:i/*
Tedrick	Tedrick	:M1:m:i/X
Terhemis	Terhemis	:M1:e:i/X
Texas Instruments	Texas Instruments	:MP:e:i/P
The Document Foundation	The Document Foundation	:MP:f:s/P
Thonon-les-Bains	Thonon-les-Bains	:MP:e:i/*
ToPIA	ToPIA	:MP:m:i/X
Trifouillis-les-Oies	Trifouillis-les-Oies	:MP:e:i/*
Tronel-Peyroz	Tronel-Peyroz	:M2:e:i/X
daVA	VA	:N:m:i;S/*
fVA	VA	:N:m:i;S/*
hVA	VA	:N:m:i;S/*
nVA	VA	:N:m:i;S/*
pVA	VA	:N:m:i;S/*
yVA	VA	:N:m:i;S/*
zVA	VA	:N:m:i;S/*
µVA	VA	:N:m:i;S/*
VIIIᵉ	VIIIᵉ	:A:e:s/*
VIIᵉ	VIIᵉ	:A:e:s/*
VIᵉ	VIᵉ	:A:e:s/*
Val-d’Oise	Val-d’Oise	:N:m:i/*
Val-d’Or	Val-d’Or	:MP:e:i/*
Vaux-le-Pénil	Vaux-le-Pénil	:MP:e:i/*
Ville-d’Avray	Ville-d’Avray	:MP:e:i/*
Villenave-d’Ornon	Villenave-d’Ornon	:MP:e:i/*
Villeneuve-d’Ascq	Villeneuve-d’Ascq	:MP:e:i/*
Villeneuve-la-Garenne	Villeneuve-la-Garenne	:MP:e:i/*
Villers-la-Ville	Villers-la-Ville	:MP:e:i/*
Voisins-le-Bretonneux	Voisins-le-Bretonneux	:MP:e:i/*
Vᵉ	Vᵉ	:A:e:s/*
Vᵛᵉ	Vᵛᵉ	:T:f:s/*
Vᵛᵉˢ	Vᵛᵉˢ	:T:f:p/*
Wall Street	Wall Street	:MP:e:i/P
EWb	Wb	:N:m:i;S/*
GWb	Wb	:N:m:i;S/*
MWb	Wb	:N:m:i;S/*
PWb	Wb	:N:m:i;S/*
TWb	Wb	:N:m:i;S/*
YWb	Wb	:N:m:i;S/*
ZWb	Wb	:N:m:i;S/*
304114
304115
304116
304117
304118
304119
304120

304121
304122
304123
304124
304125
304126
304127
304047
304048
304049
304050
304051
304052
304053
304054
304055
304056
304057
304058
304059
304060
304061







+







XXXIᵉ	XXXIᵉ	:A:e:s/*
XXXVIIIᵉ	XXXVIIIᵉ	:A:e:s/*
XXXVIIᵉ	XXXVIIᵉ	:A:e:s/*
XXXVIᵉ	XXXVIᵉ	:A:e:s/*
XXXVᵉ	XXXVᵉ	:A:e:s/*
XXXᵉ	XXXᵉ	:A:e:s/*
XXᵉ	XXᵉ	:A:e:s/*
Xi’an	Xi’an	:MP:e:i/*
Xᵉ	Xᵉ	:A:e:s/*
Yorinne	Yorinne	:M1:f:i/X
Yverdon-les-Bains	Yverdon-les-Bains	:MP:e:i/*
ZeaInvent	ZeaInvent	:MP:e:i/X
_	_	:H/*
abacule	abacule	:N:m:s/*
abaisse-langue	abaisse-langue	:N:m:s/R
311977
311978
311979
311980
311981
311982
311983
311984

311985
311986
311987
311988
311989
311990
311991
311911
311912
311913
311914
311915
311916
311917

311918
311919
311920
311921
311922
311923
311924
311925







-
+







appontons	apponter	:V1_i____zz:E:1p/*
appontâmes	apponter	:V1_i____zz:Is:1p/*
appontât	apponter	:V1_i____zz:Sq:3s/*
appontâtes	apponter	:V1_i____zz:Is:2p/*
appontè	apponter	:V1_i____zz:Ip:1ś/R
apponteurs	apponteur	:N:m:p/*
appontée	appontée	:A:f:s/*
apportasses	apporter	:V1_it____a:Sq:2s/*
apportasses	apporter	:V1_itn___a:Sq:2s/*
apposasse	apposer	:V1__t___zz:Sq:1s/*
apposasses	apposer	:V1__t___zz:Sq:2s/*
apposassiez	apposer	:V1__t___zz:Sq:2p/*
apposassions	apposer	:V1__t___zz:Sq:1p/*
apposeras	apposer	:V1__t___zz:If:2s/*
apposeriez	apposer	:V1__t___zz:K:2p/*
apposerions	apposer	:V1__t___zz:K:1p/*
314712
314713
314714
314715
314716
314717
314718

314719
314720
314721
314722
314723
314724
314725
314646
314647
314648
314649
314650
314651
314652
314653
314654
314655
314656
314657
314658
314659
314660







+







augurasse	augurer	:V1_it___zz:Sq:1s/*
augurasses	augurer	:V1_it___zz:Sq:2s/*
augurassiez	augurer	:V1_it___zz:Sq:2p/*
augurassions	augurer	:V1_it___zz:Sq:1p/*
augureras	augurer	:V1_it___zz:If:2s/*
augurerons	augurer	:V1_it___zz:If:1p/*
augurè	augurer	:V1_it___zz:Ip:1ś/R
aujourd’hui	aujourd’hui	:W/*
aulofées	aulofée	:N:f:p/*
aunasse	auner	:V1__t___zz:Sq:1s/*
aunassent	auner	:V1__t___zz:Sq:3p/*
aunasses	auner	:V1__t___zz:Sq:2s/*
aunassiez	auner	:V1__t___zz:Sq:2p/*
aunassions	auner	:V1__t___zz:Sq:1p/*
aunerais	auner	:V1__t___zz:K:1s:2s/*
316627
316628
316629
316630
316631
316632
316633
316634
316635






316636
316637
316638
316639
316640
316641
316642
316562
316563
316564
316565
316566
316567
316568

316569
316570
316571
316572
316573
316574
316575
316576
316577
316578
316579
316580
316581
316582







-

+
+
+
+
+
+







baguâmes	baguer	:V1__t___zz:Is:1p/*
baguât	baguer	:V1__t___zz:Sq:3s/*
baguâtes	baguer	:V1__t___zz:Is:2p/*
baguè	baguer	:V1__t___zz:Ip:1ś/R
baguèrent	baguer	:V1__t___zz:Is:3p!/*
baguiste	baguiste	:N:e:s/*
baguistes	baguiste	:N:e:p/*
baha'ismes	baha'isme	:N:m:p/C
bahaïsmes	bahaïsme	:N:m:p/*
baha’i	baha’ie	:N:A:m:s/C
baha’ie	baha’ie	:N:A:f:s/C
baha’ies	baha’ie	:N:A:f:p/C
baha’is	baha’ie	:N:A:m:p/C
baha’isme	baha’isme	:N:m:s/C
baha’ismes	baha’isme	:N:m:p/C
baignasse	baigner	:V1_it_q_zz:Sq:1s/*
baignasses	baigner	:V1_it_q_zz:Sq:2s/*
baignassiez	baigner	:V1_it_q_zz:Sq:2p/*
baignassions	baigner	:V1_it_q_zz:Sq:1p/*
baigneriez	baigner	:V1_it_q_zz:K:2p/*
baignè	baigner	:V1_it_q_zz:Ip:1ś/R
baillasses	bailler	:V1__t___zz:Sq:2s/*
317988
317989
317990
317991
317992
317993
317994

317995
317996
317997
317998
317999
318000
318001
318002
318003
318004
318005
318006
318007
318008
318009
318010
318011
318012
318013
318014
318015
318016
318017
317928
317929
317930
317931
317932
317933
317934
317935
317936
317937
317938
317939
317940
317941
317942
317943
317944
317945
317946
317947
317948
317949
317950

317951
317952
317953
317954
317955
317956
317957







+















-







basassiez	baser	:V1__t_q__a:Sq:2p/*
basassions	baser	:V1__t_q__a:Sq:1p/*
baseras	baser	:V1__t_q__a:If:2s/*
basâmes	baser	:V1__t_q__a:Is:1p/*
basket-balls	basket-ball	:N:m:p/C
basmatis	basmati	:N:m:p/*
basophilies	basophilie	:N:f:p/*
basses-contre	basses-contre	:N:f:p/M
basse-courier	basse-courière	:N:m:s/M
basse-courières	basse-courière	:N:f:p/M
basse-danse	basse-danse	:N:f:s/M
basse-lissier	basse-lissière	:N:m:s/M
basse-lissière	basse-lissière	:N:f:s/M
basse-lissières	basse-lissière	:N:f:p/M
bassecontres	bassecontre	:N:f:p/R
bassecouriers	bassecourière	:N:m:p/R
bassecourière	bassecourière	:N:f:s/R
bassecourières	bassecourière	:N:f:p/R
bassedanses	bassedanse	:N:f:p/R
bassefosses	bassefosse	:N:f:p/R
basselisses	basselisse	:N:f:p/R
basselissière	basselissière	:N:f:s/R
basselissières	basselissière	:N:f:p/R
basses-contre	basses-contre	:N:f:p/M
basses-danses	basses-danses	:N:f:p/M
bassetailles	bassetaille	:N:e:p/R
bassevilles	basseville	:N:f:p/R
bassinantes	bassinante	:A:f:p/*
bassinas	bassiner	:V1__t___zz:Is:2s/*
bassinasse	bassiner	:V1__t___zz:Sq:1s/*
bassinassent	bassiner	:V1__t___zz:Sq:3p/*
318777
318778
318779
318780
318781
318782
318783


318784
318785
318786
318787
318788
318789
318790
318717
318718
318719
318720
318721
318722
318723
318724
318725
318726
318727
318728
318729
318730
318731
318732







+
+







berlurâtes	berlurer	:V1_i__q_zz:Is:2p/*
berlurè	berlurer	:V1_i__q_zz:Ip:1ś/R
berlurèrent	berlurer	:V1_i__q_zz:Is:3p!/*
berluré	berlurer	:V1_i__q_zz:Q:A:1ŝ:m:s/*
berlurée	berlurer	:V1_i__q_zz:Q:A:f:s/*
berlurées	berlurer	:V1_i__q_zz:Q:A:f:p/*
berlurés	berlurer	:V1_i__q_zz:Q:A:m:p/*
bernard-l’ermite	bernard-l’ermite	:N:m:i/R
bernard-l’hermite	bernard-l’hermite	:N:m:i/M
bernasse	berner	:V1__t___zz:Sq:1s/*
bernasses	berner	:V1__t___zz:Sq:2s/*
bernassiez	berner	:V1__t___zz:Sq:2p/*
bernassions	berner	:V1__t___zz:Sq:1p/*
berneraient	berner	:V1__t___zz:K:3p/*
bernerais	berner	:V1__t___zz:K:1s:2s/*
berneras	berner	:V1__t___zz:If:2s/*
319780
319781
319782
319783
319784
319785
319786

319787
319788
319789
319790
319791
319792
319793
319722
319723
319724
319725
319726
319727
319728
319729
319730
319731
319732
319733
319734
319735
319736







+







binerons	biner	:V1_it___zz:If:1p/*
bineront	biner	:V1_it___zz:If:3p!/*
biniez	biner	:V1_it___zz:Iq:Sp:2p/*
binâtes	biner	:V1_it___zz:Is:2p/*
binè	biner	:V1_it___zz:Ip:1ś/R
binèrent	biner	:V1_it___zz:Is:3p!/*
binoclardes	binoclarde	:N:f:p/*
bin’s	bin’s	:N:m:i/*
bio-feed-back	bio-feed-back	:N:m:i/M
bio-industriel	bio-industrielle	:A:m:s/*
bio-industrielle	bio-industrielle	:A:f:s/*
bio-ingénieure	bio-ingénieure	:N:f:s/*
bio-ingénieures	bio-ingénieure	:N:f:p/*
bioamplifications	bioamplification	:N:f:p/*
bioastronomies	bioastronomie	:N:f:p/*
323338
323339
323340
323341
323342
323343
323344

323345


323346
323347
323348
323349
323350
323351
323352
323353
323354
323355
323356
323357
323358
323359
323360
323361

323362
323363
323364
323365
323366
323367
323368
323281
323282
323283
323284
323285
323286
323287
323288

323289
323290
323291
323292
323293
323294
323295
323296
323297
323298
323299
323300
323301
323302
323303
323304
323305

323306
323307
323308
323309
323310
323311
323312
323313







+
-
+
+















-
+







boutassiez	bouter	:V1__t___zz:Sq:2p/*
boutassions	bouter	:V1__t___zz:Sq:1p/*
boutâmes	bouter	:V1__t___zz:Is:1p/*
boutâtes	bouter	:V1__t___zz:Is:2p/*
boutè	bouter	:V1__t___zz:Ip:1ś/R
bouteselles	bouteselle	:N:m:p/R
boutismes	boutisme	:N:m:p/*
boutons-d’or	boutons-d’or	:N:m:p/*
bouton-d'argent	bouton-d'argent	:N:m:s/*
bouton-dargent	bouton-dargent	:N:m:s/*
bouton-d’or	bouton-d’or	:N:m:s/*
boutonnas	boutonner	:V1__t_q_zz:Is:2s/*
boutonnasse	boutonner	:V1__t_q_zz:Sq:1s/*
boutonnassent	boutonner	:V1__t_q_zz:Sq:3p/*
boutonnasses	boutonner	:V1__t_q_zz:Sq:2s/*
boutonnassiez	boutonner	:V1__t_q_zz:Sq:2p/*
boutonnassions	boutonner	:V1__t_q_zz:Sq:1p/*
boutonneraient	boutonner	:V1__t_q_zz:K:3p/*
boutonnerais	boutonner	:V1__t_q_zz:K:1s:2s/*
boutonneras	boutonner	:V1__t_q_zz:If:2s/*
boutonneriez	boutonner	:V1__t_q_zz:K:2p/*
boutonnerons	boutonner	:V1__t_q_zz:If:1p/*
boutonneront	boutonner	:V1__t_q_zz:If:3p!/*
boutonnâmes	boutonner	:V1__t_q_zz:Is:1p/*
boutonnâtes	boutonner	:V1__t_q_zz:Is:2p/*
boutonnè	boutonner	:V1__t_q_zz:Ip:1ś/R
boutons-d'argent	boutons-d'argent	:N:m:p/*
boutons-dargent	boutons-dargent	:N:m:p/*
bouturai	bouturer	:V1__t___zz:Is:1s/*
bouturais	bouturer	:V1__t___zz:Iq:1s:2s/*
bouturasse	bouturer	:V1__t___zz:Sq:1s/*
bouturassent	bouturer	:V1__t___zz:Sq:3p/*
bouturasses	bouturer	:V1__t___zz:Sq:2s/*
bouturassiez	bouturer	:V1__t___zz:Sq:2p/*
bouturassions	bouturer	:V1__t___zz:Sq:1p/*
329245
329246
329247
329248
329249
329250
329251

329252
329253
329254
329255
329256
329257
329258
329259
329260
329261
329262
329263
329264
329265
329266
329267
329268
329269
329270
329271
329272
329273
329274
329190
329191
329192
329193
329194
329195
329196
329197
329198
329199
329200
329201
329202
329203
329204
329205
329206
329207
329208
329209
329210
329211
329212

329213
329214
329215
329216
329217
329218
329219







+















-







capillotractons	capillotracter	:V1_it____a:E:1p/*
capillotractâmes	capillotracter	:V1_it____a:Is:1p/*
capillotractât	capillotracter	:V1_it____a:Sq:3s/*
capillotractâtes	capillotracter	:V1_it____a:Is:2p/*
capillotractè	capillotracter	:V1_it____a:Ip:1ś/R
capillotractèrent	capillotracter	:V1_it____a:Is:3p!/*
capistons	capiston	:N:m:p/*
capitaux-risques	capitaux-risques	:N:m:p/*
capitalisantes	capitalisante	:A:f:p/*
capitalisants	capitalisante	:A:m:p/*
capitalisais	capitaliser	:V1_it___zz:Iq:1s:2s/*
capitalisasse	capitaliser	:V1_it___zz:Sq:1s/*
capitalisasses	capitaliser	:V1_it___zz:Sq:2s/*
capitalisassiez	capitaliser	:V1_it___zz:Sq:2p/*
capitalisassions	capitaliser	:V1_it___zz:Sq:1p/*
capitaliserais	capitaliser	:V1_it___zz:K:1s:2s/*
capitaliseras	capitaliser	:V1_it___zz:If:2s/*
capitaliserez	capitaliser	:V1_it___zz:If:2p/*
capitaliseriez	capitaliser	:V1_it___zz:K:2p/*
capitaliserons	capitaliser	:V1_it___zz:If:1p/*
capitalisiez	capitaliser	:V1_it___zz:Iq:Sp:2p/*
capitalisâmes	capitaliser	:V1_it___zz:Is:1p/*
capitalisè	capitaliser	:V1_it___zz:Ip:1ś/R
capitaux-risques	capitaux-risques	:N:m:p/*
capitonnai	capitonner	:V1__t_q_zz:Is:1s/*
capitonnais	capitonner	:V1__t_q_zz:Iq:1s:2s/*
capitonnas	capitonner	:V1__t_q_zz:Is:2s/*
capitonnasse	capitonner	:V1__t_q_zz:Sq:1s/*
capitonnassent	capitonner	:V1__t_q_zz:Sq:3p/*
capitonnasses	capitonner	:V1__t_q_zz:Sq:2s/*
capitonnassiez	capitonner	:V1__t_q_zz:Sq:2p/*
331321
331322
331323
331324
331325
331326
331327

331328
331329
331330
331331
331332
331333
331334
331266
331267
331268
331269
331270
331271
331272
331273
331274
331275
331276
331277
331278
331279
331280







+







caïmantè	caïmanter	:V1__t___zz:Ip:1ś/R
caïmantèrent	caïmanter	:V1__t___zz:Is:3p!/*
caïmanté	caïmanter	:V1__t___zz:Q:A:1ŝ:m:s/*
caïmantée	caïmanter	:V1__t___zz:Q:A:f:s/*
caïmantées	caïmanter	:V1__t___zz:Q:A:f:p/*
caïmantés	caïmanter	:V1__t___zz:Q:A:m:p/*
µcd	cd	:N:f:i;S/*
c’	c’	:G:Od:m:s/*
cedrelas	cedrela	:N:m:p/M
ceignions	ceindre	:V3__t_q_zz:Iq:Sp:1p/*
ceignisse	ceindre	:V3__t_q_zz:Sq:1s/*
ceignisses	ceindre	:V3__t_q_zz:Sq:2s/*
ceignissiez	ceindre	:V3__t_q_zz:Sq:2p/*
ceignissions	ceindre	:V3__t_q_zz:Sq:1p/*
ceinturai	ceinturer	:V1__t___zz:Is:1s/*
333173
333174
333175
333176
333177
333178
333179


333180
333181
333182
333183
333184
333185
333186
333119
333120
333121
333122
333123
333124
333125
333126
333127
333128
333129
333130
333131
333132
333133
333134







+
+







chaînè	chaîner	:V1__t___zz:Ip:1ś/M
chaînetière	chaînetière	:N:f:s/M
chaînetières	chaînetière	:N:f:p/M
chaîneuse	chaîneuse	:N:f:s/M
chaîneuses	chaîneuse	:N:f:p/M
chaînière	chaînière	:N:f:s/M
chaînières	chaînière	:N:f:p/M
chef-d’œuvre	chef-d’œuvre	:N:m:s/*
chefs-d’œuvre	chefs-d’œuvre	:N:m:p/*
cheloue	cheloue	:A:f:s/*
cheminasse	cheminer	:V1_i____zz:Sq:1s/*
cheminasses	cheminer	:V1_i____zz:Sq:2s/*
cheminassiez	cheminer	:V1_i____zz:Sq:2p/*
cheminassions	cheminer	:V1_i____zz:Sq:1p/*
chemineriez	cheminer	:V1_i____zz:K:2p/*
cheminâtes	cheminer	:V1_i____zz:Is:2p/*
335006
335007
335008
335009
335010
335011
335012


335013
335014
335015
335016
335017
335018
335019
334954
334955
334956
334957
334958
334959
334960
334961
334962
334963
334964
334965
334966
334967
334968
334969







+
+







chômasses	chômer	:V1_it___zz:Sq:2s/*
chômassiez	chômer	:V1_it___zz:Sq:2p/*
chômassions	chômer	:V1_it___zz:Sq:1p/*
chômeriez	chômer	:V1_it___zz:K:2p/*
chômerions	chômer	:V1_it___zz:K:1p/*
chômâtes	chômer	:V1_it___zz:Is:2p/*
chômè	chômer	:V1_it___zz:Ip:1ś/R
ch’timi	ch’timi	:N:A:e:s/C
ch’timis	ch’timi	:N:A:e:p/C
ciabattas	ciabatta	:N:f:p/*
ciblasse	cibler	:V1__t___zz:Sq:1s/*
ciblassent	cibler	:V1__t___zz:Sq:3p/*
ciblasses	cibler	:V1__t___zz:Sq:2s/*
ciblassiez	cibler	:V1__t___zz:Sq:2p/*
ciblassions	cibler	:V1__t___zz:Sq:1p/*
cibleras	cibler	:V1__t___zz:If:2s/*
337588
337589
337590
337591
337592
337593
337594
337595
337596


337597
337598
337599
337600
337601
337602
337603
337538
337539
337540
337541
337542
337543
337544


337545
337546
337547
337548
337549
337550
337551
337552
337553







-
-
+
+







coextrudons	coextruder	:V1_it____a:E:1p/X
coextrudâmes	coextruder	:V1_it____a:Is:1p/X
coextrudât	coextruder	:V1_it____a:Sq:3s/X
coextrudâtes	coextruder	:V1_it____a:Is:2p/X
coextrudè	coextruder	:V1_it____a:Ip:1ś/X
coextrudèrent	coextruder	:V1_it____a:Is:3p!/X
coextrudées	coextruder	:V1_it____a:Q:A:f:p/X
coextrusions	coextrusion	:N:f:p/*
coextrusions	coextrusion	:N:f:p/X
coextrusions	coextrusion	:N:f:p/X
coextrusions	coextrusion	:N:f:p/*
coffrai	coffrer	:V1__t___zz:Is:1s/*
coffrasse	coffrer	:V1__t___zz:Sq:1s/*
coffrassent	coffrer	:V1__t___zz:Sq:3p/*
coffrasses	coffrer	:V1__t___zz:Sq:2s/*
coffrassiez	coffrer	:V1__t___zz:Sq:2p/*
coffrassions	coffrer	:V1__t___zz:Sq:1p/*
coffrerai	coffrer	:V1__t___zz:If:1s/*
343113
343114
343115
343116
343117
343118
343119

343120
343121
343122
343123
343124
343125
343126
343063
343064
343065
343066
343067
343068
343069
343070
343071
343072
343073
343074
343075
343076
343077







+







copulions	copuler	:V1_i____zz:Iq:Sp:1p/*
copulons	copuler	:V1_i____zz:Ip:1p/*
copulons	copuler	:V1_i____zz:E:1p/*
copulâmes	copuler	:V1_i____zz:Is:1p/*
copulât	copuler	:V1_i____zz:Sq:3s/*
copulâtes	copuler	:V1_i____zz:Is:2p/*
copulè	copuler	:V1_i____zz:Ip:1ś/R
coq-à-l’âne	coq-à-l’âne	:N:m:i/*
coquebines	coquebine	:N:A:f:p/*
coqueleuse	coqueleuse	:N:f:s/*
coqueleuses	coqueleuse	:N:f:p/*
coquai	coquer	:V1__t___zz:Is:1s/*
coquaient	coquer	:V1__t___zz:Iq:3p/*
coquais	coquer	:V1__t___zz:Iq:1s:2s/*
coquait	coquer	:V1__t___zz:Iq:3s/*
344351
344352
344353
344354
344355
344356
344357

344358
344359
344360
344361
344362
344363
344364
344302
344303
344304
344305
344306
344307
344308
344309
344310
344311
344312
344313
344314
344315
344316







+







courseront	courser	:V1__t___zz:If:3p!/*
coursiez	courser	:V1__t___zz:Iq:Sp:2p/*
coursions	courser	:V1__t___zz:Iq:Sp:1p/*
coursâmes	courser	:V1__t___zz:Is:1p/*
coursâtes	courser	:V1__t___zz:Is:2p/*
coursè	courser	:V1__t___zz:Ip:1ś/R
coursèrent	courser	:V1__t___zz:Is:3p!/*
courts-circuitages	courts-circuitages	:N:m:p/*
court-circuitai	court-circuiter	:V1__t___zz:Is:1s/*
court-circuitais	court-circuiter	:V1__t___zz:Iq:1s:2s/*
court-circuitas	court-circuiter	:V1__t___zz:Is:2s/*
court-circuitasse	court-circuiter	:V1__t___zz:Sq:1s/*
court-circuitassent	court-circuiter	:V1__t___zz:Sq:3p/*
court-circuitasses	court-circuiter	:V1__t___zz:Sq:2s/*
court-circuitassiez	court-circuiter	:V1__t___zz:Sq:2p/*
344425
344426
344427
344428
344429
344430
344431
344432
344433
344434
344435
344436
344437
344438
344439
344377
344378
344379
344380
344381
344382
344383

344384
344385
344386
344387
344388
344389
344390







-







courtisassiez	courtiser	:V1__t___zz:Sq:2p/*
courtisassions	courtiser	:V1__t___zz:Sq:1p/*
courtiseriez	courtiser	:V1__t___zz:K:2p/*
courtiserions	courtiser	:V1__t___zz:K:1p/*
courtiserons	courtiser	:V1__t___zz:If:1p/*
courtisâtes	courtiser	:V1__t___zz:Is:2p/*
courtisè	courtiser	:V1__t___zz:Ip:1ś/R
courts-circuitages	courts-circuitages	:N:m:p/*
cousinai	cousiner	:V1_i____zz:Is:1s/*
cousinais	cousiner	:V1_i____zz:Iq:1s:2s/*
cousinas	cousiner	:V1_i____zz:Is:2s/*
cousinasse	cousiner	:V1_i____zz:Sq:1s/*
cousinassent	cousiner	:V1_i____zz:Sq:3p/*
cousinasses	cousiner	:V1_i____zz:Sq:2s/*
cousinassiez	cousiner	:V1_i____zz:Sq:2p/*
347970
347971
347972
347973
347974
347975
347976

347977
347978
347979
347980
347981
347982
347983
347921
347922
347923
347924
347925
347926
347927
347928
347929
347930
347931
347932
347933
347934
347935







+







cœlioscopes	cœlioscope	:N:m:p/M
cœnuroses	cœnurose	:N:f:p/C
cœur-de-pigeon	cœur-de-pigeon	:N:m:s/*
cœurs-de-pigeon	cœurs-de-pigeon	:N:m:p/*
cœursage	cœursage	:N:m:s/*
cœursages	cœursage	:N:m:p/*
cœurses	cœurse	:N:f:p/*
c’est-à-dire	c’est-à-dire	:G:Cc/*
dacryoadénites	dacryoadénite	:N:f:p/*
dactylographias	dactylographier	:V1__t___zz:Is:2s/*
dactylographiasse	dactylographier	:V1__t___zz:Sq:1s/*
dactylographiassent	dactylographier	:V1__t___zz:Sq:3p/*
dactylographiasses	dactylographier	:V1__t___zz:Sq:2s/*
dactylographiassiez	dactylographier	:V1__t___zz:Sq:2p/*
dactylographiassions	dactylographier	:V1__t___zz:Sq:1p/*
348335
348336
348337
348338
348339
348340
348341


348342
348343
348344
348345
348346
348347
348348
348287
348288
348289
348290
348291
348292
348293
348294
348295
348296
348297
348298
348299
348300
348301
348302







+
+







daubiez	dauber	:V1_it___zz:Iq:Sp:2p/*
daubions	dauber	:V1_it___zz:Iq:Sp:1p/*
daubât	dauber	:V1_it___zz:Sq:3s/*
daubâtes	dauber	:V1_it___zz:Is:2p/*
daubè	dauber	:V1_it___zz:Ip:1ś/R
daubeuse	daubeuse	:N:f:s/*
daubeuses	daubeuse	:N:f:p/*
d’	d’	:G:D:e:i/*
d’	d’	:G:R:Rv/*
dealai	dealer	:V1_it___zz:Is:1s/*
dealais	dealer	:V1_it___zz:Iq:1s:2s/*
dealas	dealer	:V1_it___zz:Is:2s/*
dealasse	dealer	:V1_it___zz:Sq:1s/*
dealassent	dealer	:V1_it___zz:Sq:3p/*
dealasses	dealer	:V1_it___zz:Sq:2s/*
dealassiez	dealer	:V1_it___zz:Sq:2p/*
351331
351332
351333
351334
351335
351336
351337

351338
351339
351340
351341
351342
351343
351344
351345
351346
351347
351348
351349
351350
351351
351352
351353
351354
351355
351356
351357

351358
351359
351360
351361
351362
351363
351364
351285
351286
351287
351288
351289
351290
351291
351292
351293
351294
351295
351296
351297
351298
351299
351300
351301
351302
351303
351304
351305
351306
351307
351308
351309
351310
351311
351312
351313
351314
351315
351316
351317
351318
351319
351320







+




















+







dorloteront	dorloter	:V1__t_q_zz:If:3p!/*
dorlotions	dorloter	:V1__t_q_zz:Iq:Sp:1p/*
dorlotâmes	dorloter	:V1__t_q_zz:Is:1p/*
dorlotâtes	dorloter	:V1__t_q_zz:Is:2p/*
dorlotè	dorloter	:V1__t_q_zz:Ip:1ś/R
dormissiez	dormir	:V3_i_____a:Sq:2p/*
dormitions	dormition	:N:f:p/*
dos-d’âne	dos-d’âne	:N:m:i/*
dos-nus	dos-nu	:N:m:p/*
dosasse	doser	:V1__t___zz:Sq:1s/*
dosassent	doser	:V1__t___zz:Sq:3p/*
dosasses	doser	:V1__t___zz:Sq:2s/*
dosassiez	doser	:V1__t___zz:Sq:2p/*
dosassions	doser	:V1__t___zz:Sq:1p/*
doserais	doser	:V1__t___zz:K:1s:2s/*
doseras	doser	:V1__t___zz:If:2s/*
doserez	doser	:V1__t___zz:If:2p/*
doseriez	doser	:V1__t___zz:K:2p/*
doserions	doser	:V1__t___zz:K:1p/*
dosiez	doser	:V1__t___zz:Iq:Sp:2p/*
dosâtes	doser	:V1__t___zz:Is:2p/*
dosè	doser	:V1__t___zz:Ip:1ś/R
dotalités	dotalité	:N:f:p/*
dotasses	doter	:V1__t_q_zz:Sq:2s/*
dotassiez	doter	:V1__t_q_zz:Sq:2p/*
dotassions	doter	:V1__t_q_zz:Sq:1p/*
dotâtes	doter	:V1__t_q_zz:Is:2p/*
douances	douance	:N:f:p/*
doubles-clics	doubles-clics	:N:m:p/*
double-cliqua	double-cliquer	:V1_i____zz:Is:3s/*
double-cliquai	double-cliquer	:V1_i____zz:Is:1s/*
double-cliquaient	double-cliquer	:V1_i____zz:Iq:3p/*
double-cliquais	double-cliquer	:V1_i____zz:Iq:1s:2s/*
double-cliquait	double-cliquer	:V1_i____zz:Iq:3s/*
double-cliquas	double-cliquer	:V1_i____zz:Is:2s/*
double-cliquasse	double-cliquer	:V1_i____zz:Sq:1s/*
351386
351387
351388
351389
351390
351391
351392
351393
351394
351395
351396
351397
351398
351399
351400
351342
351343
351344
351345
351346
351347
351348

351349
351350
351351
351352
351353
351354
351355







-







double-cliquât	double-cliquer	:V1_i____zz:Sq:3s/*
double-cliquâtes	double-cliquer	:V1_i____zz:Is:2p/*
double-cliquè	double-cliquer	:V1_i____zz:Ip:1ś/R
double-cliquèrent	double-cliquer	:V1_i____zz:Is:3p!/*
doublasses	doubler	:V1_it_q_zz:Sq:2s/*
doublassiez	doubler	:V1_it_q_zz:Sq:2p/*
doublassions	doubler	:V1_it_q_zz:Sq:1p/*
doubles-clics	doubles-clics	:N:m:p/*
doubles-crèmes	doubles-crèmes	:N:m:p/*
doublonna	doublonner	:V1_i____zz:Is:3s/*
doublonnai	doublonner	:V1_i____zz:Is:1s/*
doublonnais	doublonner	:V1_i____zz:Iq:1s:2s/*
doublonnas	doublonner	:V1_i____zz:Is:2s/*
doublonnasse	doublonner	:V1_i____zz:Sq:1s/*
doublonnassent	doublonner	:V1_i____zz:Sq:3p/*
351975
351976
351977
351978
351979
351980
351981

351982
351983



351984
351985
351986
351987
351988
351989
351990
351930
351931
351932
351933
351934
351935
351936
351937


351938
351939
351940
351941
351942
351943
351944
351945
351946
351947







+
-
-
+
+
+







droguerons	droguer	:V1_it_q_zz:If:1p/*
drogueront	droguer	:V1_it_q_zz:If:3p!/*
droguiez	droguer	:V1_it_q_zz:Iq:Sp:2p/*
droguions	droguer	:V1_it_q_zz:Iq:Sp:1p/*
droguât	droguer	:V1_it_q_zz:Sq:3s/*
droguâtes	droguer	:V1_it_q_zz:Is:2p/*
droguè	droguer	:V1_it_q_zz:Ip:1ś/R
droit-de-l’hommisme	droit-de-l’hommisme	:N:m:s/*
droit-de-l'hommismes	droit-de-l'hommisme	:N:m:p/*
droit-de-l'hommistes	droit-de-l'hommiste	:N:A:e:p/*
droit-de-lhommismes	droit-de-lhommisme	:N:m:p/*
droit-de-l’hommiste	droit-de-l’hommiste	:N:A:e:s/*
droit-de-lhommistes	droit-de-lhommiste	:N:A:e:p/*
droitisations	droitisation	:N:f:p/*
droitisa	droitiser	:V1__t_q__a:Is:3s/*
droitisai	droitiser	:V1__t_q__a:Is:1s/*
droitisaient	droitiser	:V1__t_q__a:Iq:3p/*
droitisais	droitiser	:V1__t_q__a:Iq:1s:2s/*
droitisait	droitiser	:V1__t_q__a:Iq:3s/*
droitisas	droitiser	:V1__t_q__a:Is:2s/*
352085
352086
352087
352088
352089
352090
352091


352092
352093
352094
352095
352096
352097
352098
352042
352043
352044
352045
352046
352047
352048
352049
352050
352051
352052
352053
352054
352055
352056
352057







+
+







drossè	drosser	:V1__t___zz:Ip:1ś/R
druidismes	druidisme	:N:m:p/*
drummeuse	drummeuse	:N:f:s/R
drummeuses	drummeuse	:N:f:p/R
dry-farmings	dry-farming	:N:m:p/M
dryfarmings	dryfarming	:N:m:p/R
dubniums	dubnium	:N:m:p/*
duc-d’Albe	duc-d’Albe	:N:m:s/*
ducs-d’Albe	ducs-d’Albe	:N:m:p/*
duffel-coats	duffel-coat	:N:m:p/C
duffelcoat	duffelcoat	:N:m:s/R
duffelcoats	duffelcoat	:N:m:p/R
dulcifications	dulcification	:N:f:p/*
dulcifia	dulcifier	:V1__t___zz:Is:3s/*
dulcifiai	dulcifier	:V1__t___zz:Is:1s/*
dulcifiaient	dulcifier	:V1__t___zz:Iq:3p/*
361466
361467
361468
361469
361470
361471
361472










































361473
361474
361475
361476
361477
361478
361479
361425
361426
361427
361428
361429
361430
361431
361432
361433
361434
361435
361436
361437
361438
361439
361440
361441
361442
361443
361444
361445
361446
361447
361448
361449
361450
361451
361452
361453
361454
361455
361456
361457
361458
361459
361460
361461
361462
361463
361464
361465
361466
361467
361468
361469
361470
361471
361472
361473
361474
361475
361476
361477
361478
361479
361480







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







dégèlerais	dégeler	:V1_it_q_zz:K:1s:2s/*
dégèleras	dégeler	:V1_it_q_zz:If:2s/*
dégèlerez	dégeler	:V1_it_q_zz:If:2p/*
dégèleriez	dégeler	:V1_it_q_zz:K:2p/*
dégèlerions	dégeler	:V1_it_q_zz:K:1p/*
dégèlerons	dégeler	:V1_it_q_zz:If:1p/*
dégèles	dégeler	:V1_it_q_zz:Ip:Sp:2s/*
dégenra	dégenrer	:V1__t_q__a:Is:3s/*
dégenrai	dégenrer	:V1__t_q__a:Is:1s/*
dégenraient	dégenrer	:V1__t_q__a:Iq:3p/*
dégenrais	dégenrer	:V1__t_q__a:Iq:1s:2s/*
dégenrait	dégenrer	:V1__t_q__a:Iq:3s/*
dégenrant	dégenrer	:V1__t_q__a:P/*
dégenras	dégenrer	:V1__t_q__a:Is:2s/*
dégenrasse	dégenrer	:V1__t_q__a:Sq:1s/*
dégenrassent	dégenrer	:V1__t_q__a:Sq:3p/*
dégenrasses	dégenrer	:V1__t_q__a:Sq:2s/*
dégenrassiez	dégenrer	:V1__t_q__a:Sq:2p/*
dégenrassions	dégenrer	:V1__t_q__a:Sq:1p/*
dégenre	dégenrer	:V1__t_q__a:Ip:Sp:1s:3s/*
dégenre	dégenrer	:V1__t_q__a:E:2s/*
dégenrent	dégenrer	:V1__t_q__a:Ip:Sp:3p/*
dégenrer	dégenrer	:V1__t_q__a:Y/*
dégenrera	dégenrer	:V1__t_q__a:If:3s/*
dégenrerai	dégenrer	:V1__t_q__a:If:1s/*
dégenreraient	dégenrer	:V1__t_q__a:K:3p/*
dégenrerais	dégenrer	:V1__t_q__a:K:1s:2s/*
dégenrerait	dégenrer	:V1__t_q__a:K:3s/*
dégenreras	dégenrer	:V1__t_q__a:If:2s/*
dégenrerez	dégenrer	:V1__t_q__a:If:2p/*
dégenreriez	dégenrer	:V1__t_q__a:K:2p/*
dégenrerions	dégenrer	:V1__t_q__a:K:1p/*
dégenrerons	dégenrer	:V1__t_q__a:If:1p/*
dégenreront	dégenrer	:V1__t_q__a:If:3p!/*
dégenres	dégenrer	:V1__t_q__a:Ip:Sp:2s/*
dégenrez	dégenrer	:V1__t_q__a:Ip:2p/*
dégenrez	dégenrer	:V1__t_q__a:E:2p/*
dégenriez	dégenrer	:V1__t_q__a:Iq:Sp:2p/*
dégenrions	dégenrer	:V1__t_q__a:Iq:Sp:1p/*
dégenrons	dégenrer	:V1__t_q__a:Ip:1p/*
dégenrons	dégenrer	:V1__t_q__a:E:1p/*
dégenrâmes	dégenrer	:V1__t_q__a:Is:1p/*
dégenrât	dégenrer	:V1__t_q__a:Sq:3s/*
dégenrâtes	dégenrer	:V1__t_q__a:Is:2p/*
dégenrè	dégenrer	:V1__t_q__a:Ip:1ś/R
dégenrèrent	dégenrer	:V1__t_q__a:Is:3p!/*
dégenré	dégenrer	:V1__t_q__a:Q:A:1ŝ:m:s/*
dégenrées	dégenrer	:V1__t_q__a:Q:A:f:p/*
dégenrés	dégenrer	:V1__t_q__a:Q:A:m:p/*
dégerbages	dégerbage	:N:m:p/*
dégermages	dégermage	:N:m:p/*
dégerma	dégermer	:V1__t___zz:Is:3s/*
dégermai	dégermer	:V1__t___zz:Is:1s/*
dégermaient	dégermer	:V1__t___zz:Iq:3p/*
dégermais	dégermer	:V1__t___zz:Iq:1s:2s/*
dégermait	dégermer	:V1__t___zz:Iq:3s/*
373803
373804
373805
373806
373807
373808
373809






































373810
373811
373812
373813
373814
373815
373816
373804
373805
373806
373807
373808
373809
373810
373811
373812
373813
373814
373815
373816
373817
373818
373819
373820
373821
373822
373823
373824
373825
373826
373827
373828
373829
373830
373831
373832
373833
373834
373835
373836
373837
373838
373839
373840
373841
373842
373843
373844
373845
373846
373847
373848
373849
373850
373851
373852
373853
373854
373855







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







désentravons	désentraver	:V1__t___zz:Ip:1p/*
désentravons	désentraver	:V1__t___zz:E:1p/*
désentravâmes	désentraver	:V1__t___zz:Is:1p/*
désentravât	désentraver	:V1__t___zz:Sq:3s/*
désentravâtes	désentraver	:V1__t___zz:Is:2p/*
désentravè	désentraver	:V1__t___zz:Ip:1ś/R
désentravèrent	désentraver	:V1__t___zz:Is:3p!/*
désentrelacent	désentrelacer	:V1__t_q__a:Ip:Sp:3p/*
désentrelacera	désentrelacer	:V1__t_q__a:If:3s/*
désentrelacerai	désentrelacer	:V1__t_q__a:If:1s/*
désentrelaceraient	désentrelacer	:V1__t_q__a:K:3p/*
désentrelacerais	désentrelacer	:V1__t_q__a:K:1s:2s/*
désentrelacerait	désentrelacer	:V1__t_q__a:K:3s/*
désentrelaceras	désentrelacer	:V1__t_q__a:If:2s/*
désentrelacerez	désentrelacer	:V1__t_q__a:If:2p/*
désentrelaceriez	désentrelacer	:V1__t_q__a:K:2p/*
désentrelacerions	désentrelacer	:V1__t_q__a:K:1p/*
désentrelacerons	désentrelacer	:V1__t_q__a:If:1p/*
désentrelaceront	désentrelacer	:V1__t_q__a:If:3p!/*
désentrelaces	désentrelacer	:V1__t_q__a:Ip:Sp:2s/*
désentrelacez	désentrelacer	:V1__t_q__a:Ip:2p/*
désentrelacez	désentrelacer	:V1__t_q__a:E:2p/*
désentrelaciez	désentrelacer	:V1__t_q__a:Iq:Sp:2p/*
désentrelacions	désentrelacer	:V1__t_q__a:Iq:Sp:1p/*
désentrelacè	désentrelacer	:V1__t_q__a:Ip:1ś/R
désentrelacèrent	désentrelacer	:V1__t_q__a:Is:3p!/*
désentrelacée	désentrelacer	:V1__t_q__a:Q:A:f:s/*
désentrelacés	désentrelacer	:V1__t_q__a:Q:A:m:p/*
désentrelaça	désentrelacer	:V1__t_q__a:Is:3s/*
désentrelaçai	désentrelacer	:V1__t_q__a:Is:1s/*
désentrelaçaient	désentrelacer	:V1__t_q__a:Iq:3p/*
désentrelaçais	désentrelacer	:V1__t_q__a:Iq:1s:2s/*
désentrelaçait	désentrelacer	:V1__t_q__a:Iq:3s/*
désentrelaçant	désentrelacer	:V1__t_q__a:P/*
désentrelaças	désentrelacer	:V1__t_q__a:Is:2s/*
désentrelaçasse	désentrelacer	:V1__t_q__a:Sq:1s/*
désentrelaçassent	désentrelacer	:V1__t_q__a:Sq:3p/*
désentrelaçasses	désentrelacer	:V1__t_q__a:Sq:2s/*
désentrelaçassiez	désentrelacer	:V1__t_q__a:Sq:2p/*
désentrelaçassions	désentrelacer	:V1__t_q__a:Sq:1p/*
désentrelaçons	désentrelacer	:V1__t_q__a:Ip:1p/*
désentrelaçons	désentrelacer	:V1__t_q__a:E:1p/*
désentrelaçâmes	désentrelacer	:V1__t_q__a:Is:1p/*
désentrelaçât	désentrelacer	:V1__t_q__a:Sq:3s/*
désentrelaçâtes	désentrelacer	:V1__t_q__a:Is:2p/*
désenvasements	désenvasement	:N:m:p/*
désenvasa	désenvaser	:V1__t___zz:Is:3s/*
désenvasai	désenvaser	:V1__t___zz:Is:1s/*
désenvasaient	désenvaser	:V1__t___zz:Iq:3p/*
désenvasais	désenvaser	:V1__t___zz:Iq:1s:2s/*
désenvasait	désenvaser	:V1__t___zz:Iq:3s/*
désenvasant	désenvaser	:V1__t___zz:P/*
378433
378434
378435
378436
378437
378438
378439

378440
378441
378442
378443
378444
378445
378446
378472
378473
378474
378475
378476
378477
378478
378479
378480
378481
378482
378483
378484
378485
378486







+







dézoomées	dézoomer	:V1_it____a:Q:A:f:p/*
dézoomés	dézoomer	:V1_it____a:Q:A:m:p/*
dînasses	dîner	:V1_i____zz:Sq:2s/M
dînassiez	dîner	:V1_i____zz:Sq:2p/M
dînâtes	dîner	:V1_i____zz:Is:2p/M
dînè	dîner	:V1_i____zz:Ip:1ś/M
dürüms	dürüm	:N:m:p/*
d’aucuns	d’aucuns	:G:Oi:m:p/*
aeV	eV	:N:m:i;S/*
daeV	eV	:N:m:i;S/*
yeV	eV	:N:m:i;S/*
zeV	eV	:N:m:i;S/*
ecballiums	ecballium	:N:m:p/*
ecstasys	ecstasy	:N:f:p/*
ectogenèses	ectogenèse	:N:f:p/*
384347
384348
384349
384350
384351
384352
384353
384354
384355


384356
384357
384358
384359
384360
384361
384362
384387
384388
384389
384390
384391
384392
384393


384394
384395
384396
384397
384398
384399
384400
384401
384402







-
-
+
+







endossassent	endosser	:V1__t___zz:Sq:3p/*
endossasses	endosser	:V1__t___zz:Sq:2s/*
endossassiez	endosser	:V1__t___zz:Sq:2p/*
endossassions	endosser	:V1__t___zz:Sq:1p/*
endosserions	endosser	:V1__t___zz:K:1p/*
endossâtes	endosser	:V1__t___zz:Is:2p/*
endossè	endosser	:V1__t___zz:Ip:1ś/R
endothermicités	endothermicité	:N:f:p/*
endothermicités	endothermicité	:N:f:p/X
endothermicités	endothermicité	:N:f:p/X
endothermicités	endothermicité	:N:f:p/*
enducteur	enductrice	:N:A:m:s/*
enductrice	enductrice	:N:A:f:s/*
enductrices	enductrice	:N:A:f:p/*
enduirai	enduire	:V3_it_q_zz:If:1s/*
enduiriez	enduire	:V3_it_q_zz:K:2p/*
enduirions	enduire	:V3_it_q_zz:K:1p/*
enduirons	enduire	:V3_it_q_zz:If:1p/*
387919
387920
387921
387922
387923
387924
387925
387926
387927
387928
387929
387930
387931
387932
387933
387934
387935
387936
387937
387938
387939
387940
387941
387942
387943
387944
387945
387946
387947
387948
387949
387950
387951
387952
387953
387954
387955
387956
387957
387958
387959
387960
387961
387962
387963
387964
387965
387966
387967
387968
387969
387970
387971
387972
387973
387974
387975
387976
387977
387978
387979
387980
387981
387982
387983
387984
387985
387986
387987
387988
387989
387990
387991
387992
387993
387994
387995
387996
387997
387998
387999
388000
388001
388002
388003
388004
388005
388006
388007
388008
388009
388010
388011
388012
388013
388014
388015
388016
388017
388018
388019
387959
387960
387961
387962
387963
387964
387965























































































387966
387967
387968
387969
387970
387971
387972







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







entourloupât	entourlouper	:V1__t___zz:Sq:3s/*
entourloupâtes	entourlouper	:V1__t___zz:Is:2p/*
entourloupè	entourlouper	:V1__t___zz:Ip:1ś/R
entourloupèrent	entourlouper	:V1__t___zz:Is:3p!/*
entourloupé	entourlouper	:V1__t___zz:Q:A:1ŝ:m:s/*
entourloupée	entourlouper	:V1__t___zz:Q:A:f:s/*
entourloupées	entourlouper	:V1__t___zz:Q:A:f:p/*
entr'aima	entr'aimer	:V1____r_e_:Is:3s/M
entr'aimait	entr'aimer	:V1____r_e_:Iq:3s/M
entr'aimassent	entr'aimer	:V1____r_e_:Sq:3p/M
entr'aimassiez	entr'aimer	:V1____r_e_:Sq:2p/M
entr'aimassions	entr'aimer	:V1____r_e_:Sq:1p/M
entr'aimera	entr'aimer	:V1____r_e_:If:3s/M
entr'aimeraient	entr'aimer	:V1____r_e_:K:3p/M
entr'aimerait	entr'aimer	:V1____r_e_:K:3s/M
entr'aimerez	entr'aimer	:V1____r_e_:If:2p/M
entr'aimeriez	entr'aimer	:V1____r_e_:K:2p/M
entr'aimerions	entr'aimer	:V1____r_e_:K:1p/M
entr'aimerons	entr'aimer	:V1____r_e_:If:1p/M
entr'aimez	entr'aimer	:V1____r_e_:Ip:2p/M
entr'aimez	entr'aimer	:V1____r_e_:E:2p/M
entr'aimâmes	entr'aimer	:V1____r_e_:Is:1p/M
entr'aimât	entr'aimer	:V1____r_e_:Sq:3s/M
entr'aimâtes	entr'aimer	:V1____r_e_:Is:2p/M
entr'aimé	entr'aimer	:V1____r_e_:Q:A:1ŝ:m:s/M
entr'aimée	entr'aimer	:V1____r_e_:Q:A:f:s/M
entr'aimées	entr'aimer	:V1____r_e_:Q:A:f:p/M
entr'aimés	entr'aimer	:V1____r_e_:Q:A:m:p/M
entr'apercevaient	entr'apercevoir	:V3__t_q_zz:Iq:3p/C
entr'apercevais	entr'apercevoir	:V3__t_q_zz:Iq:1s:2s/C
entr'apercevant	entr'apercevoir	:V3__t_q_zz:P/C
entr'apercevez	entr'apercevoir	:V3__t_q_zz:Ip:2p/C
entr'apercevez	entr'apercevoir	:V3__t_q_zz:E:2p/C
entr'aperceviez	entr'apercevoir	:V3__t_q_zz:Iq:Sp:2p/C
entr'apercevions	entr'apercevoir	:V3__t_q_zz:Iq:Sp:1p/C
entr'apercevra	entr'apercevoir	:V3__t_q_zz:If:3s/C
entr'apercevrai	entr'apercevoir	:V3__t_q_zz:If:1s/C
entr'apercevraient	entr'apercevoir	:V3__t_q_zz:K:3p/C
entr'apercevrais	entr'apercevoir	:V3__t_q_zz:K:1s:2s/C
entr'apercevrait	entr'apercevoir	:V3__t_q_zz:K:3s/C
entr'apercevras	entr'apercevoir	:V3__t_q_zz:If:2s/C
entr'apercevrez	entr'apercevoir	:V3__t_q_zz:If:2p/C
entr'apercevriez	entr'apercevoir	:V3__t_q_zz:K:2p/C
entr'apercevrions	entr'apercevoir	:V3__t_q_zz:K:1p/C
entr'apercevrons	entr'apercevoir	:V3__t_q_zz:If:1p/C
entr'apercevront	entr'apercevoir	:V3__t_q_zz:If:3p!/C
entr'aperçoive	entr'apercevoir	:V3__t_q_zz:Sp:1s:3s/C
entr'aperçoives	entr'apercevoir	:V3__t_q_zz:Sp:2s/C
entr'aperçurent	entr'apercevoir	:V3__t_q_zz:Is:3p!/C
entr'aperçusse	entr'apercevoir	:V3__t_q_zz:Sq:1s/C
entr'aperçussent	entr'apercevoir	:V3__t_q_zz:Sq:3p/C
entr'aperçusses	entr'apercevoir	:V3__t_q_zz:Sq:2s/C
entr'aperçussiez	entr'apercevoir	:V3__t_q_zz:Sq:2p/C
entr'aperçussions	entr'apercevoir	:V3__t_q_zz:Sq:1p/C
entr'aperçûmes	entr'apercevoir	:V3__t_q_zz:Is:1p/C
entr'aperçût	entr'apercevoir	:V3__t_q_zz:Sq:3s/C
entr'aperçûtes	entr'apercevoir	:V3__t_q_zz:Is:2p/C
entr'hiverner	entr'hiverner	:V1__t___zz:Y/*
entr'ouvres	entr'ouvrir	:V3__t_q_zz:Ip:2s/C
entr'ouvriez	entr'ouvrir	:V3__t_q_zz:Iq:Sp:2p/C
entr'ouvrions	entr'ouvrir	:V3__t_q_zz:Iq:Sp:1p/C
entr'ouvrirai	entr'ouvrir	:V3__t_q_zz:If:1s/C
entr'ouvrirais	entr'ouvrir	:V3__t_q_zz:K:1s:2s/C
entr'ouvriras	entr'ouvrir	:V3__t_q_zz:If:2s/C
entr'ouvrirez	entr'ouvrir	:V3__t_q_zz:If:2p/C
entr'ouvririez	entr'ouvrir	:V3__t_q_zz:K:2p/C
entr'ouvririons	entr'ouvrir	:V3__t_q_zz:K:1p/C
entr'ouvrisse	entr'ouvrir	:V3__t_q_zz:Sq:1s/C
entr'ouvrissent	entr'ouvrir	:V3__t_q_zz:Sq:3p/C
entr'ouvrisses	entr'ouvrir	:V3__t_q_zz:Sq:2s/C
entr'ouvrissiez	entr'ouvrir	:V3__t_q_zz:Sq:2p/C
entr'ouvrissions	entr'ouvrir	:V3__t_q_zz:Sq:1p/C
entr'ouvrîmes	entr'ouvrir	:V3__t_q_zz:Is:1p/C
entr'ouvrîtes	entr'ouvrir	:V3__t_q_zz:Is:2p/C
entr'égorgea	entr'égorger	:V1____r_e_:Is:3s/M
entr'égorgeassiez	entr'égorger	:V1____r_e_:Sq:2p/M
entr'égorgeassions	entr'égorger	:V1____r_e_:Sq:1p/M
entr'égorgeons	entr'égorger	:V1____r_e_:Ip:1p/M
entr'égorgeons	entr'égorger	:V1____r_e_:E:1p/M
entr'égorgera	entr'égorger	:V1____r_e_:If:3s/M
entr'égorgerait	entr'égorger	:V1____r_e_:K:3s/M
entr'égorgerez	entr'égorger	:V1____r_e_:If:2p/M
entr'égorgeriez	entr'égorger	:V1____r_e_:K:2p/M
entr'égorgerions	entr'égorger	:V1____r_e_:K:1p/M
entr'égorgerons	entr'égorger	:V1____r_e_:If:1p/M
entr'égorgez	entr'égorger	:V1____r_e_:Ip:2p/M
entr'égorgez	entr'égorger	:V1____r_e_:E:2p/M
entr'égorgeâmes	entr'égorger	:V1____r_e_:Is:1p/M
entr'égorgeât	entr'égorger	:V1____r_e_:Sq:3s/M
entr'égorgeâtes	entr'égorger	:V1____r_e_:Is:2p/M
entr'égorgiez	entr'égorger	:V1____r_e_:Iq:Sp:2p/M
entr'égorgions	entr'égorger	:V1____r_e_:Iq:Sp:1p/M
entr'égorgé	entr'égorger	:V1____r_e_:Q:A:1ŝ:m:s/M
entr'égorgée	entr'égorger	:V1____r_e_:Q:A:f:s/M
entraccorda	entraccorder	:V1____r_e_:Is:3s/*
entraccordaient	entraccorder	:V1____r_e_:Iq:3p/*
entraccordait	entraccorder	:V1____r_e_:Iq:3s/*
entraccordant	entraccorder	:V1____r_e_:P/*
entraccordassent	entraccorder	:V1____r_e_:Sq:3p/*
entraccordassiez	entraccorder	:V1____r_e_:Sq:2p/*
entraccordassions	entraccorder	:V1____r_e_:Sq:1p/*
388759
388760
388761
388762
388763
388764
388765
388766
388767
388768
388769
388770
388771
388772
388773
388774
388775
388776
388777
388778
388779














388780
388781
388782
388783
388784
388785
388786
388712
388713
388714
388715
388716
388717
388718














388719
388720
388721
388722
388723
388724
388725
388726
388727
388728
388729
388730
388731
388732
388733
388734
388735
388736
388737
388738
388739







-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+







entreheurtons	entreheurter	:V1____r_e_:Ip:1p/R
entreheurtons	entreheurter	:V1____r_e_:E:1p/R
entreheurtâmes	entreheurter	:V1____r_e_:Is:1p/R
entreheurtât	entreheurter	:V1____r_e_:Sq:3s/R
entreheurtâtes	entreheurter	:V1____r_e_:Is:2p/R
entreheurté	entreheurter	:V1____r_e_:Q:A:1ŝ:m:s/R
entreheurtée	entreheurter	:V1____r_e_:Q:A:f:s/R
entrelacerait	entrelacer	:V1__t_q_zz:K:3s/*
entrelacerez	entrelacer	:V1__t_q_zz:If:2p/*
entrelaceriez	entrelacer	:V1__t_q_zz:K:2p/*
entrelacerions	entrelacer	:V1__t_q_zz:K:1p/*
entrelaciez	entrelacer	:V1__t_q_zz:Iq:Sp:2p/*
entrelacions	entrelacer	:V1__t_q_zz:Iq:Sp:1p/*
entrelacè	entrelacer	:V1__t_q_zz:Ip:1ś/R
entrelaças	entrelacer	:V1__t_q_zz:Is:2s/*
entrelaçasse	entrelacer	:V1__t_q_zz:Sq:1s/*
entrelaçassent	entrelacer	:V1__t_q_zz:Sq:3p/*
entrelaçasses	entrelacer	:V1__t_q_zz:Sq:2s/*
entrelaçassiez	entrelacer	:V1__t_q_zz:Sq:2p/*
entrelaçassions	entrelacer	:V1__t_q_zz:Sq:1p/*
entrelaçâtes	entrelacer	:V1__t_q_zz:Is:2p/*
entrelacerait	entrelacer	:V1__t_q__a:K:3s/*
entrelacerez	entrelacer	:V1__t_q__a:If:2p/*
entrelaceriez	entrelacer	:V1__t_q__a:K:2p/*
entrelacerions	entrelacer	:V1__t_q__a:K:1p/*
entrelaciez	entrelacer	:V1__t_q__a:Iq:Sp:2p/*
entrelacions	entrelacer	:V1__t_q__a:Iq:Sp:1p/*
entrelacè	entrelacer	:V1__t_q__a:Ip:1ś/R
entrelaças	entrelacer	:V1__t_q__a:Is:2s/*
entrelaçasse	entrelacer	:V1__t_q__a:Sq:1s/*
entrelaçassent	entrelacer	:V1__t_q__a:Sq:3p/*
entrelaçasses	entrelacer	:V1__t_q__a:Sq:2s/*
entrelaçassiez	entrelacer	:V1__t_q__a:Sq:2p/*
entrelaçassions	entrelacer	:V1__t_q__a:Sq:1p/*
entrelaçâtes	entrelacer	:V1__t_q__a:Is:2p/*
entrelardai	entrelarder	:V1__t___zz:Is:1s/*
entrelardais	entrelarder	:V1__t___zz:Iq:1s:2s/*
entrelardas	entrelarder	:V1__t___zz:Is:2s/*
entrelardasse	entrelarder	:V1__t___zz:Sq:1s/*
entrelardassent	entrelarder	:V1__t___zz:Sq:3p/*
entrelardasses	entrelarder	:V1__t___zz:Sq:2s/*
entrelardassiez	entrelarder	:V1__t___zz:Sq:2p/*
389192
389193
389194
389195
389196
389197
389198





















































































































































389199
389200
389201
389202
389203
389204
389205
389145
389146
389147
389148
389149
389150
389151
389152
389153
389154
389155
389156
389157
389158
389159
389160
389161
389162
389163
389164
389165
389166
389167
389168
389169
389170
389171
389172
389173
389174
389175
389176
389177
389178
389179
389180
389181
389182
389183
389184
389185
389186
389187
389188
389189
389190
389191
389192
389193
389194
389195
389196
389197
389198
389199
389200
389201
389202
389203
389204
389205
389206
389207
389208
389209
389210
389211
389212
389213
389214
389215
389216
389217
389218
389219
389220
389221
389222
389223
389224
389225
389226
389227
389228
389229
389230
389231
389232
389233
389234
389235
389236
389237
389238
389239
389240
389241
389242
389243
389244
389245
389246
389247
389248
389249
389250
389251
389252
389253
389254
389255
389256
389257
389258
389259
389260
389261
389262
389263
389264
389265
389266
389267
389268
389269
389270
389271
389272
389273
389274
389275
389276
389277
389278
389279
389280
389281
389282
389283
389284
389285
389286
389287
389288
389289
389290
389291
389292
389293
389294
389295
389296
389297
389298
389299
389300
389301
389302
389303
389304
389305
389306
389307







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







entrégorgiez	entrégorger	:V1____r_e_:Iq:Sp:2p/R
entrégorgions	entrégorger	:V1____r_e_:Iq:Sp:1p/R
entrégorgèrent	entrégorger	:V1____r_e_:Is:3p!/R
entrégorgé	entrégorger	:V1____r_e_:Q:A:1ŝ:m:s/R
entrégorgée	entrégorger	:V1____r_e_:Q:A:f:s/R
entrégorgées	entrégorger	:V1____r_e_:Q:A:f:p/R
entrégorgés	entrégorger	:V1____r_e_:Q:A:m:p/R
entr’aima	entr’aimer	:V1____r_e_:Is:3s/M
entr’aimaient	entr’aimer	:V1____r_e_:Iq:3p/M
entr’aimait	entr’aimer	:V1____r_e_:Iq:3s/M
entr’aimant	entr’aimer	:V1____r_e_:P/M
entr’aimassent	entr’aimer	:V1____r_e_:Sq:3p/M
entr’aimassiez	entr’aimer	:V1____r_e_:Sq:2p/M
entr’aimassions	entr’aimer	:V1____r_e_:Sq:1p/M
entr’aime	entr’aimer	:V1____r_e_:Ip:Sp:3s/M
entr’aiment	entr’aimer	:V1____r_e_:Ip:Sp:3p/M
entr’aimer	entr’aimer	:V1____r_e_:Y/M
entr’aimera	entr’aimer	:V1____r_e_:If:3s/M
entr’aimeraient	entr’aimer	:V1____r_e_:K:3p/M
entr’aimerait	entr’aimer	:V1____r_e_:K:3s/M
entr’aimerez	entr’aimer	:V1____r_e_:If:2p/M
entr’aimeriez	entr’aimer	:V1____r_e_:K:2p/M
entr’aimerions	entr’aimer	:V1____r_e_:K:1p/M
entr’aimerons	entr’aimer	:V1____r_e_:If:1p/M
entr’aimeront	entr’aimer	:V1____r_e_:If:3p!/M
entr’aimez	entr’aimer	:V1____r_e_:Ip:2p/M
entr’aimez	entr’aimer	:V1____r_e_:E:2p/M
entr’aimiez	entr’aimer	:V1____r_e_:Iq:Sp:2p/M
entr’aimions	entr’aimer	:V1____r_e_:Iq:Sp:1p/M
entr’aimons	entr’aimer	:V1____r_e_:Ip:1p/M
entr’aimons	entr’aimer	:V1____r_e_:E:1p/M
entr’aimâmes	entr’aimer	:V1____r_e_:Is:1p/M
entr’aimât	entr’aimer	:V1____r_e_:Sq:3s/M
entr’aimâtes	entr’aimer	:V1____r_e_:Is:2p/M
entr’aimèrent	entr’aimer	:V1____r_e_:Is:3p!/M
entr’aimé	entr’aimer	:V1____r_e_:Q:A:1ŝ:m:s/M
entr’aimée	entr’aimer	:V1____r_e_:Q:A:f:s/M
entr’aimées	entr’aimer	:V1____r_e_:Q:A:f:p/M
entr’aimés	entr’aimer	:V1____r_e_:Q:A:m:p/M
entr’apercevaient	entr’apercevoir	:V3__t_q_zz:Iq:3p/C
entr’apercevais	entr’apercevoir	:V3__t_q_zz:Iq:1s:2s/C
entr’apercevait	entr’apercevoir	:V3__t_q_zz:Iq:3s/C
entr’apercevant	entr’apercevoir	:V3__t_q_zz:P/C
entr’apercevez	entr’apercevoir	:V3__t_q_zz:Ip:2p/C
entr’apercevez	entr’apercevoir	:V3__t_q_zz:E:2p/C
entr’aperceviez	entr’apercevoir	:V3__t_q_zz:Iq:Sp:2p/C
entr’apercevions	entr’apercevoir	:V3__t_q_zz:Iq:Sp:1p/C
entr’apercevoir	entr’apercevoir	:V3__t_q_zz:Y/C
entr’apercevons	entr’apercevoir	:V3__t_q_zz:Ip:1p/C
entr’apercevons	entr’apercevoir	:V3__t_q_zz:E:1p/C
entr’apercevra	entr’apercevoir	:V3__t_q_zz:If:3s/C
entr’apercevrai	entr’apercevoir	:V3__t_q_zz:If:1s/C
entr’apercevraient	entr’apercevoir	:V3__t_q_zz:K:3p/C
entr’apercevrais	entr’apercevoir	:V3__t_q_zz:K:1s:2s/C
entr’apercevrait	entr’apercevoir	:V3__t_q_zz:K:3s/C
entr’apercevras	entr’apercevoir	:V3__t_q_zz:If:2s/C
entr’apercevrez	entr’apercevoir	:V3__t_q_zz:If:2p/C
entr’apercevriez	entr’apercevoir	:V3__t_q_zz:K:2p/C
entr’apercevrions	entr’apercevoir	:V3__t_q_zz:K:1p/C
entr’apercevrons	entr’apercevoir	:V3__t_q_zz:If:1p/C
entr’apercevront	entr’apercevoir	:V3__t_q_zz:If:3p!/C
entr’aperçois	entr’apercevoir	:V3__t_q_zz:Ip:1s:2s/C
entr’aperçois	entr’apercevoir	:V3__t_q_zz:E:2s/C
entr’aperçoit	entr’apercevoir	:V3__t_q_zz:Ip:3s/C
entr’aperçoive	entr’apercevoir	:V3__t_q_zz:Sp:1s:3s/C
entr’aperçoivent	entr’apercevoir	:V3__t_q_zz:Ip:Sp:3p/C
entr’aperçoives	entr’apercevoir	:V3__t_q_zz:Sp:2s/C
entr’aperçu	entr’apercevoir	:V3__t_q_zz:Q:A:m:s/C
entr’aperçue	entr’apercevoir	:V3__t_q_zz:Q:A:f:s/C
entr’aperçues	entr’apercevoir	:V3__t_q_zz:Q:A:f:p/C
entr’aperçurent	entr’apercevoir	:V3__t_q_zz:Is:3p!/C
entr’aperçus	entr’apercevoir	:V3__t_q_zz:Q:A:m:p/C
entr’aperçus	entr’apercevoir	:V3__t_q_zz:Is:1s:2s/C
entr’aperçusse	entr’apercevoir	:V3__t_q_zz:Sq:1s/C
entr’aperçussent	entr’apercevoir	:V3__t_q_zz:Sq:3p/C
entr’aperçusses	entr’apercevoir	:V3__t_q_zz:Sq:2s/C
entr’aperçussiez	entr’apercevoir	:V3__t_q_zz:Sq:2p/C
entr’aperçussions	entr’apercevoir	:V3__t_q_zz:Sq:1p/C
entr’aperçut	entr’apercevoir	:V3__t_q_zz:Is:3s/C
entr’aperçûmes	entr’apercevoir	:V3__t_q_zz:Is:1p/C
entr’aperçût	entr’apercevoir	:V3__t_q_zz:Sq:3s/C
entr’aperçûtes	entr’apercevoir	:V3__t_q_zz:Is:2p/C
entr’hiverner	entr’hiverner	:V1__t___zz:Y/*
entr’ouvert	entr’ouvrir	:V3__t_q_zz:Q:A:m:s/C
entr’ouverte	entr’ouvrir	:V3__t_q_zz:Q:A:f:s/C
entr’ouvertes	entr’ouvrir	:V3__t_q_zz:Q:A:f:p/C
entr’ouverts	entr’ouvrir	:V3__t_q_zz:Q:A:m:p/C
entr’ouvraient	entr’ouvrir	:V3__t_q_zz:Iq:3p/C
entr’ouvrais	entr’ouvrir	:V3__t_q_zz:Iq:1s:2s/C
entr’ouvrait	entr’ouvrir	:V3__t_q_zz:Iq:3s/C
entr’ouvrant	entr’ouvrir	:V3__t_q_zz:P/C
entr’ouvre	entr’ouvrir	:V3__t_q_zz:Ip:Sp:1s:3s/C
entr’ouvre	entr’ouvrir	:V3__t_q_zz:E:2s/C
entr’ouvrent	entr’ouvrir	:V3__t_q_zz:Ip:Sp:3p/C
entr’ouvres	entr’ouvrir	:V3__t_q_zz:Ip:2s/C
entr’ouvrez	entr’ouvrir	:V3__t_q_zz:Ip:2p/C
entr’ouvrez	entr’ouvrir	:V3__t_q_zz:E:2p/C
entr’ouvriez	entr’ouvrir	:V3__t_q_zz:Iq:Sp:2p/C
entr’ouvrions	entr’ouvrir	:V3__t_q_zz:Iq:Sp:1p/C
entr’ouvrir	entr’ouvrir	:V3__t_q_zz:Y/C
entr’ouvrira	entr’ouvrir	:V3__t_q_zz:If:3s/C
entr’ouvrirai	entr’ouvrir	:V3__t_q_zz:If:1s/C
entr’ouvriraient	entr’ouvrir	:V3__t_q_zz:K:3p/C
entr’ouvrirais	entr’ouvrir	:V3__t_q_zz:K:1s:2s/C
entr’ouvrirait	entr’ouvrir	:V3__t_q_zz:K:3s/C
entr’ouvriras	entr’ouvrir	:V3__t_q_zz:If:2s/C
entr’ouvrirent	entr’ouvrir	:V3__t_q_zz:Is:3p!/C
entr’ouvrirez	entr’ouvrir	:V3__t_q_zz:If:2p/C
entr’ouvririez	entr’ouvrir	:V3__t_q_zz:K:2p/C
entr’ouvririons	entr’ouvrir	:V3__t_q_zz:K:1p/C
entr’ouvrirons	entr’ouvrir	:V3__t_q_zz:If:1p/C
entr’ouvriront	entr’ouvrir	:V3__t_q_zz:If:3p!/C
entr’ouvris	entr’ouvrir	:V3__t_q_zz:Is:1s:2s/C
entr’ouvrisse	entr’ouvrir	:V3__t_q_zz:Sq:1s/C
entr’ouvrissent	entr’ouvrir	:V3__t_q_zz:Sq:3p/C
entr’ouvrisses	entr’ouvrir	:V3__t_q_zz:Sq:2s/C
entr’ouvrissiez	entr’ouvrir	:V3__t_q_zz:Sq:2p/C
entr’ouvrissions	entr’ouvrir	:V3__t_q_zz:Sq:1p/C
entr’ouvrit	entr’ouvrir	:V3__t_q_zz:Is:3s/C
entr’ouvrons	entr’ouvrir	:V3__t_q_zz:Ip:1p/C
entr’ouvrons	entr’ouvrir	:V3__t_q_zz:E:1p/C
entr’ouvrîmes	entr’ouvrir	:V3__t_q_zz:Is:1p/C
entr’ouvrît	entr’ouvrir	:V3__t_q_zz:Sq:3s/C
entr’ouvrîtes	entr’ouvrir	:V3__t_q_zz:Is:2p/C
entr’égorge	entr’égorger	:V1____r_e_:Ip:Sp:3s/M
entr’égorgea	entr’égorger	:V1____r_e_:Is:3s/M
entr’égorgeaient	entr’égorger	:V1____r_e_:Iq:3p/M
entr’égorgeait	entr’égorger	:V1____r_e_:Iq:3s/M
entr’égorgeant	entr’égorger	:V1____r_e_:P/M
entr’égorgeassent	entr’égorger	:V1____r_e_:Sq:3p/M
entr’égorgeassiez	entr’égorger	:V1____r_e_:Sq:2p/M
entr’égorgeassions	entr’égorger	:V1____r_e_:Sq:1p/M
entr’égorgent	entr’égorger	:V1____r_e_:Ip:Sp:3p/M
entr’égorgeons	entr’égorger	:V1____r_e_:Ip:1p/M
entr’égorgeons	entr’égorger	:V1____r_e_:E:1p/M
entr’égorger	entr’égorger	:V1____r_e_:Y/M
entr’égorgera	entr’égorger	:V1____r_e_:If:3s/M
entr’égorgeraient	entr’égorger	:V1____r_e_:K:3p/M
entr’égorgerait	entr’égorger	:V1____r_e_:K:3s/M
entr’égorgerez	entr’égorger	:V1____r_e_:If:2p/M
entr’égorgeriez	entr’égorger	:V1____r_e_:K:2p/M
entr’égorgerions	entr’égorger	:V1____r_e_:K:1p/M
entr’égorgerons	entr’égorger	:V1____r_e_:If:1p/M
entr’égorgeront	entr’égorger	:V1____r_e_:If:3p!/M
entr’égorgez	entr’égorger	:V1____r_e_:Ip:2p/M
entr’égorgez	entr’égorger	:V1____r_e_:E:2p/M
entr’égorgeâmes	entr’égorger	:V1____r_e_:Is:1p/M
entr’égorgeât	entr’égorger	:V1____r_e_:Sq:3s/M
entr’égorgeâtes	entr’égorger	:V1____r_e_:Is:2p/M
entr’égorgiez	entr’égorger	:V1____r_e_:Iq:Sp:2p/M
entr’égorgions	entr’égorger	:V1____r_e_:Iq:Sp:1p/M
entr’égorgèrent	entr’égorger	:V1____r_e_:Is:3p!/M
entr’égorgé	entr’égorger	:V1____r_e_:Q:A:1ŝ:m:s/M
entr’égorgée	entr’égorger	:V1____r_e_:Q:A:f:s/M
entr’égorgées	entr’égorger	:V1____r_e_:Q:A:f:p/M
entr’égorgés	entr’égorger	:V1____r_e_:Q:A:m:p/M
entuba	entuber	:V1__t___zz:Is:3s/*
entubai	entuber	:V1__t___zz:Is:1s/*
entubaient	entuber	:V1__t___zz:Iq:3p/*
entubais	entuber	:V1__t___zz:Iq:1s:2s/*
entubait	entuber	:V1__t___zz:Iq:3s/*
entubant	entuber	:V1__t___zz:P/*
entubas	entuber	:V1__t___zz:Is:2s/*
393891
393892
393893
393894
393895
393896
393897
393898
393899


393900
393901
393902
393903
393904
393905
393906
393993
393994
393995
393996
393997
393998
393999


394000
394001
394002
394003
394004
394005
394006
394007
394008







-
-
+
+







façonnasses	façonner	:V1__t___zz:Sq:2s/*
façonnassiez	façonner	:V1__t___zz:Sq:2p/*
façonnassions	façonner	:V1__t___zz:Sq:1p/*
façonneriez	façonner	:V1__t___zz:K:2p/*
façonnerions	façonner	:V1__t___zz:K:1p/*
façonnâtes	façonner	:V1__t___zz:Is:2p/*
façonnè	façonner	:V1__t___zz:Ip:1ś/R
feda'i	feda'i	:N:m:s/C
fedda'i	fedda'i	:N:m:s/C
fedai	fedai	:N:m:s/C
feddai	feddai	:N:m:s/C
feedeur	feedeur	:N:m:s/R
feedeurs	feedeur	:N:m:p/R
feignanta	feignanter	:V1_i____zz:Is:3s/*
feignantai	feignanter	:V1_i____zz:Is:1s/*
feignantaient	feignanter	:V1_i____zz:Iq:3p/*
feignantais	feignanter	:V1_i____zz:Iq:1s:2s/*
feignantait	feignanter	:V1_i____zz:Iq:3s/*
394849
394850
394851
394852
394853
394854
394855
394856
394857


394858
394859
394860
394861
394862
394863
394864
394951
394952
394953
394954
394955
394956
394957


394958
394959
394960
394961
394962
394963
394964
394965
394966







-
-
+
+







finançasse	financer	:V1_it___zz:Sq:1s/*
finançassent	financer	:V1_it___zz:Sq:3p/*
finançasses	financer	:V1_it___zz:Sq:2s/*
finançassiez	financer	:V1_it___zz:Sq:2p/*
finançassions	financer	:V1_it___zz:Sq:1p/*
finançâmes	financer	:V1_it___zz:Is:1p/*
finançâtes	financer	:V1_it___zz:Is:2p/*
financeuse	financeuse	:N:f:s/*
financeuses	financeuse	:N:f:p/*
financeuse	financeuse	:N:A:f:s/*
financeuses	financeuse	:N:A:f:p/*
financiarisations	financiarisation	:N:f:p/*
financiarisa	financiariser	:V1__t___zz:Is:3s/*
financiarisai	financiariser	:V1__t___zz:Is:1s/*
financiarisaient	financiariser	:V1__t___zz:Iq:3p/*
financiarisais	financiariser	:V1__t___zz:Iq:1s:2s/*
financiarisait	financiariser	:V1__t___zz:Iq:3s/*
financiarisant	financiariser	:V1__t___zz:P/*
397506
397507
397508
397509
397510
397511
397512

397513
397514
397515
397516
397517
397518
397519
397608
397609
397610
397611
397612
397613
397614
397615
397616
397617
397618
397619
397620
397621
397622







+







framboisons	framboiser	:V1__t___zz:E:1p/*
framboisâmes	framboiser	:V1__t___zz:Is:1p/*
framboisât	framboiser	:V1__t___zz:Sq:3s/*
framboisâtes	framboiser	:V1__t___zz:Is:2p/*
framboisè	framboiser	:V1__t___zz:Ip:1ś/R
framboisèrent	framboiser	:V1__t___zz:Is:3p!/*
franc-tireuse	franc-tireuse	:N:f:s/*
francs-tireuses	francs-tireuses	:N:f:p/*
franchisages	franchisage	:N:m:p/*
franchisai	franchiser	:V1_it____a:Is:1s/*
franchisais	franchiser	:V1_it____a:Iq:1s:2s/*
franchisasse	franchiser	:V1_it____a:Sq:1s/*
franchisassent	franchiser	:V1_it____a:Sq:3p/*
franchisasses	franchiser	:V1_it____a:Sq:2s/*
franchisassiez	franchiser	:V1_it____a:Sq:2p/*
397632
397633
397634
397635
397636
397637
397638
397639
397640
397641
397642
397643
397644
397645
397646
397735
397736
397737
397738
397739
397740
397741

397742
397743
397744
397745
397746
397747
397748







-







francophonisât	francophoniser	:V1__t___zz:Sq:3s/*
francophonisâtes	francophoniser	:V1__t___zz:Is:2p/*
francophonisè	francophoniser	:V1__t___zz:Ip:1ś/R
francophonisèrent	francophoniser	:V1__t___zz:Is:3p!/*
francophonisée	francophoniser	:V1__t___zz:Q:A:f:s/*
francs-jeux	francs-jeux	:N:m:p/*
francs-parlers	francs-parlers	:N:m:p/*
francs-tireuses	francs-tireuses	:N:f:p/*
frangeai	franger	:V1__t___zz:Is:1s/*
frangeasse	franger	:V1__t___zz:Sq:1s/*
frangeassent	franger	:V1__t___zz:Sq:3p/*
frangeasses	franger	:V1__t___zz:Sq:2s/*
frangeassiez	franger	:V1__t___zz:Sq:2p/*
frangeassions	franger	:V1__t___zz:Sq:1p/*
frangerai	franger	:V1__t___zz:If:1s/*
407112
407113
407114
407115
407116
407117
407118

407119
407120
407121
407122
407123
407124
407125
407214
407215
407216
407217
407218
407219
407220
407221
407222
407223
407224
407225
407226
407227
407228







+







horripilât	horripiler	:V1__t___zz:Sq:3s/*
horripilâtes	horripiler	:V1__t___zz:Is:2p/*
horripilè	horripiler	:V1__t___zz:Ip:1ś/R
hors-bilan	hors-bilan	:N:m:s/R
hors-bilans	hors-bilan	:N:m:p/R
hors-cotes	hors-cote	:A:e:p/R
hors-cotes	hors-cote	:N:m:p/R
hors-d’œuvre	hors-d’œuvre	:N:m:i/*
hors-statut	hors-statut	:N:m:s/R
hors-statuts	hors-statut	:N:m:p/R
horsaines	horsaine	:N:A:f:p/*
horse-balls	horse-ball	:N:m:p/C
horseballs	horseball	:N:m:p/*
hospitalisais	hospitaliser	:V1__t___zz:Iq:1s:2s/*
hospitalisasse	hospitaliser	:V1__t___zz:Sq:1s/*
407836
407837
407838
407839
407840
407841
407842

407843
407844
407845
407846
407847
407848
407849
407939
407940
407941
407942
407943
407944
407945
407946
407947
407948
407949
407950
407951
407952
407953







+







hyperbolisâmes	hyperboliser	:V1_it____a:Is:1p/*
hyperbolisât	hyperboliser	:V1_it____a:Sq:3s/*
hyperbolisâtes	hyperboliser	:V1_it____a:Is:2p/*
hyperbolisè	hyperboliser	:V1_it____a:Ip:1ś/R
hyperbolisèrent	hyperboliser	:V1_it____a:Is:3p!/*
hyperbolisées	hyperboliser	:V1_it____a:Q:A:f:p/*
hyperchimies	hyperchimie	:N:f:p/*
hypercoagulabilités	hypercoagulabilité	:N:f:p/*
hyperconformismes	hyperconformisme	:N:m:p/*
hyperconnectées	hyperconnectée	:A:f:p/*
hypercontinentale	hypercontinentale	:A:f:s/*
hypercontinentales	hypercontinentale	:A:f:p/*
hypercontinentaux	hypercontinentale	:A:m:p/*
hypercontrôles	hypercontrôle	:N:m:p/*
hyperdulies	hyperdulie	:N:f:p/*
413389
413390
413391
413392
413393
413394
413395
413396
413397
413398
413399
413400
413401








413402
413403
413404
413405
413406
413407
413408
413493
413494
413495
413496
413497
413498
413499






413500
413501
413502
413503
413504
413505
413506
413507
413508
413509
413510
413511
413512
413513
413514







-
-
-
-
-
-
+
+
+
+
+
+
+
+







javâtes	javer	:V1__t___zz:Is:2p/*
javè	javer	:V1__t___zz:Ip:1ś/R
javèrent	javer	:V1__t___zz:Is:3p!/*
javée	javer	:V1__t___zz:Q:A:f:s/*
javées	javer	:V1__t___zz:Q:A:f:p/*
javés	javer	:V1__t___zz:Q:A:m:p/*
jazz-rocks	jazz-rock	:N:m:p/*
je-m'en-fichisme	je-m'en-fichisme	:N:m:s/*
je-m'en-fichismes	je-m'en-fichisme	:N:m:p/*
je-m'en-fichiste	je-m'en-fichiste	:N:A:e:s/*
je-m'en-fichistes	je-m'en-fichiste	:N:A:e:p/*
je-m'en-foutismes	je-m'en-foutisme	:N:m:p/*
je-m'en-foutistes	je-m'en-foutiste	:N:A:e:p/*
je-men-fichisme	je-men-fichisme	:N:m:s/*
je-men-fichismes	je-men-fichisme	:N:m:p/*
je-men-fichiste	je-men-fichiste	:N:A:e:s/*
je-men-fichistes	je-men-fichiste	:N:A:e:p/*
je-men-foutisme	je-men-foutisme	:N:m:s/*
je-m’en-foutismes	je-m’en-foutisme	:N:m:p/*
je-men-foutiste	je-men-foutiste	:N:A:e:s/*
je-m’en-foutistes	je-m’en-foutiste	:N:A:e:p/*
jean-le-blanc	jean-le-blanc	:N:m:i/*
jectisse	jectisse	:A:f:s/*
jet-sets	jet-set	:N:e:p/M
jet-setteuses	jet-setteuse	:N:f:p/M
jet-societies	jet-society	:N:f:p/C
jet-societys	jet-society	:N:f:p/*
jetsets	jetset	:N:e:p/R
414022
414023
414024
414025
414026
414027
414028

414029
414030
414031
414032




414033
414034
414035
414036
414037
414038
414039
414128
414129
414130
414131
414132
414133
414134
414135




414136
414137
414138
414139
414140
414141
414142
414143
414144
414145
414146







+
-
-
-
-
+
+
+
+







juponnât	juponner	:V1_it___zz:Sq:3s/*
juponnâtes	juponner	:V1_it___zz:Is:2p/*
juponnè	juponner	:V1_it___zz:Ip:1ś/R
juponnèrent	juponner	:V1_it___zz:Is:3p!/*
jurasses	jurer	:V1_it_q_zz:Sq:2s/*
juridicisations	juridicisation	:N:f:p/*
juridicités	juridicité	:N:f:p/*
jusqu’	jusqu’	:G:R/*
jusqu'au-boutisme	jusqu'au-boutisme	:N:m:s/*
jusqu'au-boutismes	jusqu'au-boutisme	:N:m:p/*
jusqu'au-boutiste	jusqu'au-boutiste	:N:e:s/*
jusqu'au-boutistes	jusqu'au-boutiste	:N:e:p/*
jusquau-boutisme	jusquau-boutisme	:N:m:s/*
jusquau-boutismes	jusquau-boutisme	:N:m:p/*
jusquau-boutiste	jusquau-boutiste	:N:e:s/*
jusquau-boutistes	jusquau-boutiste	:N:e:p/*
jussiées	jussiée	:N:f:p/*
juste-milieux	juste-milieu	:N:m:p/*
justiciabilités	justiciabilité	:N:f:p/*
justifiassiez	justifier	:V1__tnq_zz:Sq:2p/*
justifiassions	justifier	:V1__tnq_zz:Sq:1p/*
justifiâtes	justifier	:V1__tnq_zz:Is:2p/*
jutages	jutage	:N:m:p/*
416817
416818
416819
416820
416821
416822
416823

416824
416825
416826
416827
416828
416829
416830
416924
416925
416926
416927
416928
416929
416930
416931
416932
416933
416934
416935
416936
416937
416938







+







lorgniez	lorgner	:V1__t___zz:Iq:Sp:2p/*
lorgnâmes	lorgner	:V1__t___zz:Is:1p/*
lorgnât	lorgner	:V1__t___zz:Sq:3s/*
lorgnâtes	lorgner	:V1__t___zz:Is:2p/*
lorgnè	lorgner	:V1__t___zz:Ip:1ś/R
lorgneuse	lorgneuse	:N:f:s/*
lorgneuses	lorgneuse	:N:f:p/*
lorsqu’	lorsqu’	:G:Cs/*
loseur	loseuse	:N:m:s/R
loseurs	loseuse	:N:m:p/R
loseuse	loseuse	:N:f:s/R
loseuses	loseuse	:N:f:p/R
lotionnai	lotionner	:V1__t___zz:Is:1s/*
lotionnaient	lotionner	:V1__t___zz:Iq:3p/*
lotionnais	lotionner	:V1__t___zz:Iq:1s:2s/*
417857
417858
417859
417860
417861
417862
417863
417864


417865
417866
417867
417868
417869
417870
417871
417965
417966
417967
417968
417969
417970
417971

417972
417973
417974
417975
417976
417977
417978
417979
417980







-
+
+







lézardiez	lézarder	:V1_it_q_zz:Iq:Sp:2p/*
lézardions	lézarder	:V1_it_q_zz:Iq:Sp:1p/*
lézardons	lézarder	:V1_it_q_zz:Ip:1p/*
lézardons	lézarder	:V1_it_q_zz:E:1p/*
lézardâmes	lézarder	:V1_it_q_zz:Is:1p/*
lézardâtes	lézarder	:V1_it_q_zz:Is:2p/*
lézardè	lézarder	:V1_it_q_zz:Ip:1ś/R
m'as-tu-vu	m'as-tu-vu	:N:e:i/*
l’	l’	:G:D:e:s/*
l’	l’	:G:Oo:Ov:e:s/*
ma-jongs	ma-jong	:N:m:p/C
macadamisages	macadamisage	:N:m:p/*
macadamisa	macadamiser	:V1__t___zz:Is:3s/*
macadamisai	macadamiser	:V1__t___zz:Is:1s/*
macadamisaient	macadamiser	:V1__t___zz:Iq:3p/*
macadamisais	macadamiser	:V1__t___zz:Iq:1s:2s/*
macadamisas	macadamiser	:V1__t___zz:Is:2s/*
418473
418474
418475
418476
418477
418478
418479

418480
418481
418482
418483
418484
418485
418486
418582
418583
418584
418585
418586
418587
418588
418589
418590
418591
418592
418593
418594
418595
418596







+







maillerions	mailler	:V1_it___zz:K:1p/*
maillerons	mailler	:V1_it___zz:If:1p/*
mailleront	mailler	:V1_it___zz:If:3p!/*
maillâmes	mailler	:V1_it___zz:Is:1p/*
maillâtes	mailler	:V1_it___zz:Is:2p/*
maillè	mailler	:V1_it___zz:Ip:1ś/R
maillèrent	mailler	:V1_it___zz:Is:3p!/*
main-d’œuvre	main-d’œuvre	:N:f:s/*
mainfortes	mainforte	:N:f:p/R
mainmet	mainmettre	:V3__t___zz:Ip:3s/*
mainmets	mainmettre	:V3__t___zz:Ip:1s:2s/*
mainmets	mainmettre	:V3__t___zz:E:2s/*
mainmettaient	mainmettre	:V3__t___zz:Iq:3p/*
mainmettais	mainmettre	:V3__t___zz:Iq:1s:2s/*
mainmettait	mainmettre	:V3__t___zz:Iq:3s/*
418513
418514
418515
418516
418517
418518
418519

418520
418521
418522
418523
418524
418525
418526
418527

418528
418529
418530
418531
418532
418533
418534
418535
418536
418537
418538
418539
418623
418624
418625
418626
418627
418628
418629
418630
418631
418632
418633
418634
418635
418636
418637
418638
418639
418640
418641
418642
418643

418644
418645
418646
418647
418648
418649
418650







+








+




-







mainmisses	mainmettre	:V3__t___zz:Sq:2s/*
mainmissiez	mainmettre	:V3__t___zz:Sq:2p/*
mainmissions	mainmettre	:V3__t___zz:Sq:1p/*
mainmit	mainmettre	:V3__t___zz:Is:3s/*
mainmîmes	mainmettre	:V3__t___zz:Is:1p/*
mainmît	mainmettre	:V3__t___zz:Sq:3s/*
mainmîtes	mainmettre	:V3__t___zz:Is:2p/*
mains-d’œuvre	mains-d’œuvre	:N:f:p/*
maintenabilités	maintenabilité	:N:f:p/*
maintenicienne	maintenicienne	:N:f:s/*
mainteniciennes	maintenicienne	:N:f:p/*
maintinsses	maintenir	:V3_it_q__a:Sq:2s/*
maintinssiez	maintenir	:V3_it_q__a:Sq:2p/*
maintinssions	maintenir	:V3_it_q__a:Sq:1p/*
maisonneries	maisonnerie	:N:f:p/*
maitre-coq	maitre-coq	:N:m:s/R
maitres-coqs	maitres-coqs	:N:m:p/R
maitre-penseur	maitre-penseur	:N:m:s/R
maitre-à-danser	maitre-à-danser	:N:m:s/R
maitres-assistantes	maitres-assistantes	:N:f:p/R
maitres-autels	maitres-autels	:N:m:p/R
maitres-coqs	maitres-coqs	:N:m:p/R
maitres-penseurs	maitres-penseurs	:N:m:p/R
maitres-à-danser	maitres-à-danser	:N:m:p/R
maitrisas	maitriser	:V1__t_q_zz:Is:2s/R
maitrisasse	maitriser	:V1__t_q_zz:Sq:1s/R
maitrisassent	maitriser	:V1__t_q_zz:Sq:3p/R
maitrisasses	maitriser	:V1__t_q_zz:Sq:2s/R
maitrisassiez	maitriser	:V1__t_q_zz:Sq:2p/R
418793
418794
418795
418796
418797
418798
418799
418800
418801
418802
418803
418804
418805
418806
418807
418808
418904
418905
418906
418907
418908
418909
418910


418911
418912
418913
418914
418915
418916
418917







-
-







malékismes	malékisme	:N:m:p/*
malévolences	malévolence	:N:f:p/*
malévolent	malévolente	:N:A:m:s/*
malévolente	malévolente	:N:A:f:s/*
malévolentes	malévolente	:N:A:f:p/*
malévolents	malévolente	:N:A:m:p/*
malêtres	malêtre	:N:m:p/R
mam'selles	mam'selle	:N:f:p/*
mam'zelles	mam'zelle	:N:f:p/*
mamelonna	mamelonner	:V1__t___zz:Is:3s/*
mamelonnai	mamelonner	:V1__t___zz:Is:1s/*
mamelonnais	mamelonner	:V1__t___zz:Iq:1s:2s/*
mamelonnas	mamelonner	:V1__t___zz:Is:2s/*
mamelonnasse	mamelonner	:V1__t___zz:Sq:1s/*
mamelonnassent	mamelonner	:V1__t___zz:Sq:3p/*
mamelonnasses	mamelonner	:V1__t___zz:Sq:2s/*
418830
418831
418832
418833
418834
418835
418836




418837
418838
418839
418840
418841
418842
418843
418939
418940
418941
418942
418943
418944
418945
418946
418947
418948
418949
418950
418951
418952
418953
418954
418955
418956







+
+
+
+







mamelonnât	mamelonner	:V1__t___zz:Sq:3s/*
mamelonnâtes	mamelonner	:V1__t___zz:Is:2p/*
mamelonnè	mamelonner	:V1__t___zz:Ip:1ś/R
mamelonnèrent	mamelonner	:V1__t___zz:Is:3p!/*
mammalogies	mammalogie	:N:f:p/*
mammoplasties	mammoplastie	:N:f:p/*
mammys	mammy	:N:f:p/C
mam’selle	mam’selle	:N:f:s/*
mam’selles	mam’selle	:N:f:p/*
mam’zelle	mam’zelle	:N:f:s/*
mam’zelles	mam’zelle	:N:f:p/*
manadières	manadière	:N:f:p/*
manageai	manager	:V1__t___zz:Is:1s/*
manageais	manager	:V1__t___zz:Iq:1s:2s/*
manageas	manager	:V1__t___zz:Is:2s/*
manageasse	manager	:V1__t___zz:Sq:1s/*
manageassent	manager	:V1__t___zz:Sq:3p/*
manageasses	manager	:V1__t___zz:Sq:2s/*
421201
421202
421203
421204
421205
421206
421207

421208
421209
421210
421211
421212
421213
421214
421314
421315
421316
421317
421318
421319
421320
421321
421322
421323
421324
421325
421326
421327
421328







+







maïeures	maïeure	:N:f:p/*
maïeuticiennes	maïeuticienne	:N:f:p/*
maïoraux	maïorale	:A:m:p/*
maïsicultrice	maïsicultrice	:N:f:s/*
maïsicultrices	maïsicultrice	:N:f:p/*
maïsicultures	maïsiculture	:N:f:p/*
maïzenas	maïzena	:N:f:p/*
m’	m’	:G:Oo:Ov:O1:e:s/*
medecine-ball	medecine-ball	:N:m:s/M
medecine-balls	medecine-ball	:N:m:p/M
mefenoxam	mefenoxam	:N:m:s/X
mefenoxams	mefenoxam	:N:m:p/X
meitnériums	meitnérium	:N:m:p/*
melbas	melba	:A:e:p/R
melbas	melba	:N:f:p/R
426610
426611
426612
426613
426614
426615
426616


426617
426618
426619
426620
426621
426622
426623
426724
426725
426726
426727
426728
426729
426730
426731
426732
426733
426734
426735
426736
426737
426738
426739







+
+







mûriras	mûrir	:V1_it___zz:If:2s/M
mûririez	mûrir	:V1_it___zz:K:2p/M
mûririons	mûrir	:V1_it___zz:K:1p/M
mûrisses	mûrir	:V1_it___zz:Sp:Sq:2s/M
mûrîmes	mûrir	:V1_it___zz:Is:1p/M
mûrîtes	mûrir	:V1_it___zz:Is:2p/M
mûrissages	mûrissage	:N:m:p/M
m’as-tu-vu	m’as-tu-vu	:N:e:i/*
m’en	m’en	:#/*
n-linéaires	n-linéaire	:A:e:p/*
nabismes	nabisme	:N:m:p/*
nablas	nabla	:N:m:p/*
nacrai	nacrer	:V1__t_q_zz:Is:1s/*
nacrais	nacrer	:V1__t_q_zz:Iq:1s:2s/*
nacras	nacrer	:V1__t_q_zz:Is:2s/*
nacrasse	nacrer	:V1__t_q_zz:Sq:1s/*
427030
427031
427032
427033
427034
427035
427036

427037
427038
427039
427040
427041
427042
427043
427146
427147
427148
427149
427150
427151
427152
427153
427154
427155
427156
427157
427158
427159
427160







+







nazillonne	nazillonne	:N:A:f:s/*
nazillonnes	nazillonne	:N:A:f:p/*
naziréats	naziréat	:N:m:p/*
naquissiez	naître	:V3_i_n__e_:Sq:2p/M
naquissions	naître	:V3_i_n__e_:Sq:1p/M
naïadacée	naïadacée	:N:f:s/*
naïadacées	naïadacée	:N:f:p/*
n’	n’	:G:X:Ov/*
nectons	necton	:N:m:p/*
neigeota	neigeoter	:V1_i___mzz:Is:3s/*
neigeotant	neigeoter	:V1_i___mzz:P/*
neigeotera	neigeoter	:V1_i___mzz:If:3s/*
neigeoterait	neigeoter	:V1_i___mzz:K:3s/*
neigeotât	neigeoter	:V1_i___mzz:Sq:3s/*
neigeoté	neigeoter	:V1_i___mzz:Q:1ŝ:e:i/*
427115
427116
427117
427118
427119
427120
427121


427122
427123
427124
427125
427126
427127

427128
427129
427130
427131
427132
427133
427134
427232
427233
427234
427235
427236
427237
427238
427239
427240
427241
427242
427243
427244
427245
427246
427247
427248
427249
427250
427251
427252
427253
427254







+
+






+







nettoyasses	nettoyer	:V1__t___zz:Sq:2s/*
nettoyassiez	nettoyer	:V1__t___zz:Sq:2p/*
nettoyassions	nettoyer	:V1__t___zz:Sq:1p/*
nettoyâtes	nettoyer	:V1__t___zz:Is:2p/*
nettoyè	nettoyer	:V1__t___zz:Ip:1ś/R
neufchâtels	neufchâtel	:N:m:p/*
neuro-anatomies	neuro-anatomie	:N:f:p/C
neuro-atypique	neuro-atypique	:A:e:s/C
neuro-atypiques	neuro-atypique	:A:e:p/C
neuro-endocriniens	neuro-endocrinienne	:A:m:p/C
neuro-endocrinologies	neuro-endocrinologie	:N:f:p/C
neuro-histologies	neuro-histologie	:N:f:p/C
neuro-hypophyses	neuro-hypophyse	:N:f:p/C
neuro-imageries	neuro-imagerie	:N:f:p/*
neuroanatomies	neuroanatomie	:N:f:p/*
neuroatypique	neuroatypique	:A:e:s/*
neurobiochimies	neurobiochimie	:N:f:p/*
neurobiochimiste	neurobiochimiste	:N:e:s/*
neurobiochimistes	neurobiochimiste	:N:e:p/*
neurobiologies	neurobiologie	:N:f:p/*
neurochimies	neurochimie	:N:f:p/*
neurochirurgies	neurochirurgie	:N:f:p/*
neurodépresseur	neurodépresseur	:N:m:s/*
427327
427328
427329
427330
427331
427332
427333

427334
427335
427336
427337
427338
427339
427340
427447
427448
427449
427450
427451
427452
427453
427454
427455
427456
427457
427458
427459
427460
427461







+







nicotinisè	nicotiniser	:V1__t___zz:Ip:1ś/R
nicotinisèrent	nicotiniser	:V1__t___zz:Is:3p!/*
nicotinismes	nicotinisme	:N:m:p/*
nictations	nictation	:N:f:p/*
nictitant	nictitante	:A:m:s/*
nictitants	nictitante	:A:m:p/*
nictitations	nictitation	:N:f:p/*
nid-d’abeilles	nid-d’abeilles	:N:m:s/*
nidifia	nidifier	:V1_i____zz:Is:3s/*
nidifiai	nidifier	:V1_i____zz:Is:1s/*
nidifiais	nidifier	:V1_i____zz:Iq:1s:2s/*
nidifias	nidifier	:V1_i____zz:Is:2s/*
nidifiasse	nidifier	:V1_i____zz:Sq:1s/*
nidifiassent	nidifier	:V1_i____zz:Sq:3p/*
nidifiasses	nidifier	:V1_i____zz:Sq:2s/*
427358
427359
427360
427361
427362
427363
427364
427365

427366
427367
427368
427369
427370
427371
427372
427479
427480
427481
427482
427483
427484
427485

427486
427487
427488
427489
427490
427491
427492
427493







-
+







nidifiions	nidifier	:V1_i____zz:Iq:Sp:1p/*
nidifions	nidifier	:V1_i____zz:Ip:1p/*
nidifions	nidifier	:V1_i____zz:E:1p/*
nidifiâmes	nidifier	:V1_i____zz:Is:1p/*
nidifiât	nidifier	:V1_i____zz:Sq:3s/*
nidifiâtes	nidifier	:V1_i____zz:Is:2p/*
nidifiè	nidifier	:V1_i____zz:Ip:1ś/R
nids-d'abeilles	nids-d'abeilles	:N:m:p/*
nids-dabeilles	nids-dabeilles	:N:m:p/*
niellages	niellage	:N:m:p/*
niellasse	nieller	:V1__t___zz:Sq:1s/*
niellassent	nieller	:V1__t___zz:Sq:3p/*
niellasses	nieller	:V1__t___zz:Sq:2s/*
niellassiez	nieller	:V1__t___zz:Sq:2p/*
niellassions	nieller	:V1__t___zz:Sq:1p/*
niellera	nieller	:V1__t___zz:If:3s/*
428123
428124
428125
428126
428127
428128
428129
428130


428131
428132
428133
428134
428135
428136
428137
428244
428245
428246
428247
428248
428249
428250

428251
428252
428253
428254
428255
428256
428257
428258
428259







-
+
+







normons	normer	:V1_it____a:Ip:1p/*
normons	normer	:V1_it____a:E:1p/*
normâmes	normer	:V1_it____a:Is:1p/*
normât	normer	:V1_it____a:Sq:3s/*
normâtes	normer	:V1_it____a:Is:2p/*
normè	normer	:V1_it____a:Ip:1ś/R
normèrent	normer	:V1_it____a:Is:3p!/*
northern_blot	northern_blot	:N:m:i/P
northern blot	northern blot	:N:m:i/P
noszigues	noszigues	:G:Os:Oo:O1:e:p/*
noséanes	noséane	:N:f:p/*
notatrices	notatrice	:N:f:p/*
notasses	noter	:V1_it____a:Sq:2s/*
notassiez	noter	:V1_it____a:Sq:2p/*
notassions	noter	:V1_it____a:Sq:1p/*
notificatifs	notificative	:A:m:p/*
notifiasse	notifier	:V1__t___zz:Sq:1s/*
428661
428662
428663
428664
428665
428666
428667

428668
428669
428670
428671
428672
428673
428674
428783
428784
428785
428786
428787
428788
428789
428790
428791
428792
428793
428794
428795
428796
428797







+







népète	népète	:N:f:s/*
népètes	népète	:N:f:p/*
nérolis	néroli	:N:m:p/*
nétiquettes	nétiquette	:N:f:p/*
névocarcinome	névocarcinome	:N:m:s/R
névocarcinomes	névocarcinome	:N:m:p/R
névrologies	névrologie	:N:f:p/*
n’importe	n’importe	:G:Oi/*
o-toit	o-toit	:MP:e:i/X
oaïs	oaï	:N:m:p/X
objectasse	objecter	:V1__t___zz:Sq:1s/*
objectassent	objecter	:V1__t___zz:Sq:3p/*
objectasses	objecter	:V1__t___zz:Sq:2s/*
objectassiez	objecter	:V1__t___zz:Sq:2p/*
objectassions	objecter	:V1__t___zz:Sq:1p/*
429962
429963
429964
429965
429966
429967
429968

429969
429970
429971
429972
429973
429974
429975
430085
430086
430087
430088
430089
430090
430091
430092
430093
430094
430095
430096
430097
430098
430099







+







orchestrerons	orchestrer	:V1__t___zz:If:1p/*
orchestriez	orchestrer	:V1__t___zz:Iq:Sp:2p/*
orchestrâmes	orchestrer	:V1__t___zz:Is:1p/*
orchestrât	orchestrer	:V1__t___zz:Sq:3s/*
orchestrâtes	orchestrer	:V1__t___zz:Is:2p/*
orchestrè	orchestrer	:V1__t___zz:Ip:1ś/R
orchi-épididymites	orchi-épididymite	:N:f:p/M
orchidologies	orchidologie	:N:f:p/*
ordo-libéralismes	ordo-libéralisme	:N:m:p/C
ordolibérals	ordolibérale	:N:A:m:p/*
ordolibéralismes	ordolibéralisme	:N:m:p/*
ordonnancerais	ordonnancer	:V1__t___zz:K:1s:2s/*
ordonnanceras	ordonnancer	:V1__t___zz:If:2s/*
ordonnancerez	ordonnancer	:V1__t___zz:If:2p/*
ordonnanceriez	ordonnancer	:V1__t___zz:K:2p/*
432127
432128
432129
432130
432131
432132
432133

432134
432135
432136
432137
432138
432139
432140
432251
432252
432253
432254
432255
432256
432257
432258
432259
432260
432261
432262
432263
432264
432265







+







paléohistologies	paléohistologie	:N:f:p/*
paléomagnétismes	paléomagnétisme	:N:m:p/*
paléoocéanographies	paléoocéanographie	:N:f:p/*
paléopalynologies	paléopalynologie	:N:f:p/*
paléozoologies	paléozoologie	:N:f:p/*
paléoécologies	paléoécologie	:N:f:p/*
pampéros	pampéro	:N:m:p/*
pans-bagnats	pans-bagnats	:N:m:p/*
panachai	panacher	:V1_it_q_zz:Is:1s/*
panachais	panacher	:V1_it_q_zz:Iq:1s:2s/*
panachas	panacher	:V1_it_q_zz:Is:2s/*
panachasse	panacher	:V1_it_q_zz:Sq:1s/*
panachassent	panacher	:V1_it_q_zz:Sq:3p/*
panachasses	panacher	:V1_it_q_zz:Sq:2s/*
panachassiez	panacher	:V1_it_q_zz:Sq:2p/*
432362
432363
432364
432365
432366
432367
432368
432369
432370
432371
432372
432373
432374
432375
432376
432487
432488
432489
432490
432491
432492
432493

432494
432495
432496
432497
432498
432499
432500







-







panoramiquâmes	panoramiquer	:V1_i____zz:Is:1p/*
panoramiquât	panoramiquer	:V1_i____zz:Sq:3s/*
panoramiquâtes	panoramiquer	:V1_i____zz:Is:2p/*
panoramiquè	panoramiquer	:V1_i____zz:Ip:1ś/R
panoramiquèrent	panoramiquer	:V1_i____zz:Is:3p!/*
panoramiqué	panoramiquer	:V1_i____zz:Q:1ŝ:e:i/*
panpsychismes	panpsychisme	:N:m:p/*
pans-bagnats	pans-bagnats	:N:m:p/*
pansasse	panser	:V1__t_q_zz:Sq:1s/*
pansasses	panser	:V1__t_q_zz:Sq:2s/*
pansassiez	panser	:V1__t_q_zz:Sq:2p/*
panseriez	panser	:V1__t_q_zz:K:2p/*
panserions	panser	:V1__t_q_zz:K:1p/*
pansâtes	panser	:V1__t_q_zz:Is:2p/*
pansè	panser	:V1__t_q_zz:Ip:1ś/R
433672
433673
433674
433675
433676
433677
433678

433679
433680
433681
433682
433683
433684
433685
433796
433797
433798
433799
433800
433801
433802
433803
433804
433805
433806
433807
433808
433809
433810







+







partouzé	partouzer	:V1_i____zz:Q:1ŝ:e:i/*
partouzeuses	partouzeuse	:N:A:f:p/*
parurerie	parurerie	:N:f:s/*
parureries	parurerie	:N:f:p/*
parurière	parurière	:N:f:s/*
parurières	parurière	:N:f:p/*
parémiologies	parémiologie	:N:f:p/*
pas-d’âne	pas-d’âne	:N:m:i/*
attopascal	pascal	:N:m:s/*
attopascals	pascal	:N:m:p/*
centipascal	pascal	:N:m:s/*
centipascals	pascal	:N:m:p/*
décapascal	pascal	:N:m:s/*
décapascals	pascal	:N:m:p/*
décipascal	pascal	:N:m:s/*
434278
434279
434280
434281
434282
434283
434284

434285
434286
434287
434288
434289
434290
434291
434403
434404
434405
434406
434407
434408
434409
434410
434411
434412
434413
434414
434415
434416
434417







+







patrouilleriez	patrouiller	:V1_i____zz:K:2p/*
patrouillerions	patrouiller	:V1_i____zz:K:1p/*
patrouillerons	patrouiller	:V1_i____zz:If:1p/*
patrouilliez	patrouiller	:V1_i____zz:Iq:Sp:2p/*
patrouillâmes	patrouiller	:V1_i____zz:Is:1p/*
patrouillâtes	patrouiller	:V1_i____zz:Is:2p/*
patrouillè	patrouiller	:V1_i____zz:Ip:1ś/R
patte-d’oie	patte-d’oie	:N:f:s/*
pattemouilles	pattemouille	:N:f:p/*
pattai	patter	:V1__t___zz:Is:1s/*
pattaient	patter	:V1__t___zz:Iq:3p/*
pattais	patter	:V1__t___zz:Iq:1s:2s/*
pattait	patter	:V1__t___zz:Iq:3s/*
pattasse	patter	:V1__t___zz:Sq:1s/*
pattassent	patter	:V1__t___zz:Sq:3p/*
434304
434305
434306
434307
434308
434309
434310

434311
434312
434313
434314
434315
434316
434317
434430
434431
434432
434433
434434
434435
434436
434437
434438
434439
434440
434441
434442
434443
434444







+







pattiez	patter	:V1__t___zz:Iq:Sp:2p/*
pattions	patter	:V1__t___zz:Iq:Sp:1p/*
pattâmes	patter	:V1__t___zz:Is:1p/*
pattât	patter	:V1__t___zz:Sq:3s/*
pattâtes	patter	:V1__t___zz:Is:2p/*
pattè	patter	:V1__t___zz:Ip:1ś/R
pattèrent	patter	:V1__t___zz:Is:3p!/*
pattes-d’oie	pattes-d’oie	:N:f:p/*
pattinsonages	pattinsonage	:N:m:p/*
pauchouses	pauchouse	:N:f:p/*
paulinismes	paulinisme	:N:m:p/*
paumai	paumer	:V1__t_q_zz:Is:1s/*
paumaient	paumer	:V1__t_q_zz:Iq:3p/*
paumais	paumer	:V1__t_q_zz:Iq:1s:2s/*
paumas	paumer	:V1__t_q_zz:Is:2s/*
435675
435676
435677
435678
435679
435680
435681

435682
435683
435684
435685
435686
435687
435688
435802
435803
435804
435805
435806
435807
435808
435809
435810
435811
435812
435813
435814
435815
435816







+







petit-déjeunions	petit-déjeuner	:V1_i____zz:Iq:Sp:1p/*
petit-déjeunons	petit-déjeuner	:V1_i____zz:Ip:1p/*
petit-déjeunons	petit-déjeuner	:V1_i____zz:E:1p/*
petit-déjeunâmes	petit-déjeuner	:V1_i____zz:Is:1p/*
petit-déjeunât	petit-déjeuner	:V1_i____zz:Sq:3s/*
petit-déjeunâtes	petit-déjeuner	:V1_i____zz:Is:2p/*
petit-déjeunè	petit-déjeuner	:V1_i____zz:Ip:1ś/R
petit-déj’	petit-déj’	:N:m:s/*
petites-maitresses	petites-maitresses	:N:f:p/R
peucédans	peucédan	:N:m:p/*
peuplasses	peupler	:V1__t_q_zz:Sq:2s/*
peuplassiez	peupler	:V1__t_q_zz:Sq:2p/*
peuplassions	peupler	:V1__t_q_zz:Sq:1p/*
peupleriez	peupler	:V1__t_q_zz:K:2p/*
peuplâtes	peupler	:V1__t_q_zz:Is:2p/*
436290
436291
436292
436293
436294
436295
436296

436297

436298
436299
436300
436301


436302
436303
436304
436305
436306
436307
436308
436418
436419
436420
436421
436422
436423
436424
436425

436426
436427
436428
436429
436430
436431
436432
436433
436434
436435
436436
436437
436438
436439







+
-
+




+
+







pictions	picter	:V1_it___zz:Iq:Sp:1p/*
pictâmes	picter	:V1_it___zz:Is:1p/*
pictât	picter	:V1_it___zz:Sq:3s/*
pictâtes	picter	:V1_it___zz:Is:2p/*
pictèrent	picter	:V1_it___zz:Is:3p!/*
pictées	picter	:V1_it___zz:Q:A:f:p/*
pictorialismes	pictorialisme	:N:m:p/*
pied-d’alouette	pied-d’alouette	:N:m:s/*
pieds-d'oiseau	pieds-d'oiseau	:N:m:p/*
pied-d’oiseau	pied-d’oiseau	:N:m:s/*
pieds-de-cheval	pieds-de-cheval	:N:m:p/*
pieds-de-chèvre	pieds-de-chèvre	:N:m:p/*
pieds-de-loup	pieds-de-loup	:N:m:p/*
pieds-de-poule	pieds-de-poule	:N:m:p/*
pieds-d’alouette	pieds-d’alouette	:N:m:p/*
pieds-d’oiseau	pieds-d’oiseau	:N:m:p/*
pierrades	pierrade	:N:f:p/*
pierrages	pierrage	:N:m:p/*
pierrai	pierrer	:V1__t___zz:Is:1s/*
pierraient	pierrer	:V1__t___zz:Iq:3p/*
pierrait	pierrer	:V1__t___zz:Iq:3s/*
pierrant	pierrer	:V1__t___zz:P/*
pierrasse	pierrer	:V1__t___zz:Sq:1s/*
436915
436916
436917
436918
436919
436920
436921

436922
436923
436924
436925
436926
436927
436928
437046
437047
437048
437049
437050
437051
437052
437053
437054
437055
437056
437057
437058
437059
437060







+







pintions	pinter	:V1_i__q_zz:Iq:Sp:1p/*
pintâtes	pinter	:V1_i__q_zz:Is:2p/*
pintè	pinter	:V1_i__q_zz:Ip:1ś/R
pintèrent	pinter	:V1_i__q_zz:Is:3p!/*
pintée	pinter	:V1_i__q_zz:Q:A:f:s/*
pinçarde	pinçarde	:A:f:s/*
pinçardes	pinçarde	:A:f:p/*
pin’s	pin’s	:N:m:i/*
piochements	piochement	:N:m:p/*
piochas	piocher	:V1_it___zz:Is:2s/*
piochasse	piocher	:V1_it___zz:Sq:1s/*
piochassent	piocher	:V1_it___zz:Sq:3p/*
piochasses	piocher	:V1_it___zz:Sq:2s/*
piochassiez	piocher	:V1_it___zz:Sq:2p/*
piochassions	piocher	:V1_it___zz:Sq:1p/*
439666
439667
439668
439669
439670
439671
439672

439673
439674
439675
439676
439677
439678
439679
439798
439799
439800
439801
439802
439803
439804
439805
439806
439807
439808
439809
439810
439811
439812







+







pondérez	pondérer	:V1__t___zz:E:2p/*
pondériez	pondérer	:V1__t___zz:Iq:Sp:2p/*
pondérions	pondérer	:V1__t___zz:Iq:Sp:1p/*
pondérâmes	pondérer	:V1__t___zz:Is:1p/*
pondérâtes	pondérer	:V1__t___zz:Is:2p/*
pondérè	pondérer	:V1__t___zz:Ip:1ś/R
pondérèrent	pondérer	:V1__t___zz:Is:3p!/*
pont-l’évêque	pont-l’évêque	:N:m:i/*
pontasse	ponter	:V1_it___zz:Sq:1s/*
pontassent	ponter	:V1_it___zz:Sq:3p/*
pontasses	ponter	:V1_it___zz:Sq:2s/*
pontassiez	ponter	:V1_it___zz:Sq:2p/*
pontassions	ponter	:V1_it___zz:Sq:1p/*
ponterai	ponter	:V1_it___zz:If:1s/*
ponteraient	ponter	:V1_it___zz:K:3p/*
440166
440167
440168
440169
440170
440171
440172

440173
440174
440175
440176
440177
440178
440179
440299
440300
440301
440302
440303
440304
440305
440306
440307
440308
440309
440310
440311
440312
440313







+







postulassiez	postuler	:V1_it___zz:Sq:2p/*
postulassions	postuler	:V1_it___zz:Sq:1p/*
postuleras	postuler	:V1_it___zz:If:2s/*
postulerez	postuler	:V1_it___zz:If:2p/*
postuleriez	postuler	:V1_it___zz:K:2p/*
postulâmes	postuler	:V1_it___zz:Is:1p/*
postulè	postuler	:V1_it___zz:Ip:1ś/R
pots-bouilles	pots-bouilles	:N:f:p/*
potabilisations	potabilisation	:N:f:p/*
potabilités	potabilité	:N:f:p/*
potamodromes	potamodrome	:A:e:p/*
potamologies	potamologie	:N:f:p/*
potassai	potasser	:V1_it___zz:Is:1s/*
potassasse	potasser	:V1_it___zz:Sq:1s/*
potassassent	potasser	:V1_it___zz:Sq:3p/*
440271
440272
440273
440274
440275
440276
440277
440278
440279
440280
440281
440282
440283
440284
440285
440405
440406
440407
440408
440409
440410
440411

440412
440413
440414
440415
440416
440417
440418







-







potinâmes	potiner	:V1_i____zz:Is:1p/*
potinât	potiner	:V1_i____zz:Sq:3s/*
potinâtes	potiner	:V1_i____zz:Is:2p/*
potinè	potiner	:V1_i____zz:Ip:1ś/R
potinèrent	potiner	:V1_i____zz:Is:3p!/*
potomanies	potomanie	:N:f:p/*
potomètres	potomètre	:N:m:p/*
pots-bouilles	pots-bouilles	:N:f:p/*
poudrassent	poudrer	:V1__t_q_zz:Sq:3p/*
poudrasses	poudrer	:V1__t_q_zz:Sq:2s/*
poudrassiez	poudrer	:V1__t_q_zz:Sq:2p/*
poudrassions	poudrer	:V1__t_q_zz:Sq:1p/*
poudreraient	poudrer	:V1__t_q_zz:K:3p/*
poudreras	poudrer	:V1__t_q_zz:If:2s/*
poudreriez	poudrer	:V1__t_q_zz:K:2p/*
440695
440696
440697
440698
440699
440700
440701




440702
440703
440704
440705
440706
440707
440708
440828
440829
440830
440831
440832
440833
440834
440835
440836
440837
440838
440839
440840
440841
440842
440843
440844
440845







+
+
+
+







presbyacousies	presbyacousie	:N:f:p/*
presbyopies	presbyopie	:N:f:p/*
presbytismes	presbytisme	:N:m:p/*
presbytérianismes	presbytérianisme	:N:m:p/*
prescrivisses	prescrire	:V3_it_q_zz:Sq:2s/*
prescrivissiez	prescrire	:V3_it_q_zz:Sq:2p/*
prescrivissions	prescrire	:V3_it_q_zz:Sq:1p/*
presqu’ile	presqu’ile	:N:f:s/R
presqu’iles	presqu’ile	:N:f:p/R
presqu’île	presqu’île	:N:f:s/M
presqu’îles	presqu’île	:N:f:p/M
pressabilités	pressabilité	:N:f:p/X
presse-fruit	presse-fruit	:N:m:s/R
presse-fruits	presse-fruit	:N:m:p/R
presse-purée	presse-purée	:N:m:s/R
presse-purées	presse-purée	:N:m:p/R
presse-raquette	presse-raquette	:N:m:s/*
presse-raquettes	presse-raquette	:N:m:p/*
440835
440836
440837
440838
440839
440840
440841

440842
440843
440844
440845
440846
440847
440848
440972
440973
440974
440975
440976
440977
440978
440979
440980
440981
440982
440983
440984
440985
440986







+







primoaccédante	primoaccédante	:N:f:s/R
primoaccédantes	primoaccédante	:N:f:p/R
primodélinquance	primodélinquance	:N:f:s/R
primodélinquances	primodélinquance	:N:f:p/R
primodélinquant	primodélinquante	:N:m:s/R
primodélinquante	primodélinquante	:N:f:s/R
primodélinquantes	primodélinquante	:N:f:p/R
prim’Holstein	prim’Holstein	:N:A:e:i/*
printanisations	printanisation	:N:f:p/*
priorisai	prioriser	:V1__t___zz:Is:1s/*
priorisais	prioriser	:V1__t___zz:Iq:1s:2s/*
priorisas	prioriser	:V1__t___zz:Is:2s/*
priorisasse	prioriser	:V1__t___zz:Sq:1s/*
priorisassent	prioriser	:V1__t___zz:Sq:3p/*
priorisasses	prioriser	:V1__t___zz:Sq:2s/*
441697
441698
441699
441700
441701
441702
441703








441704
441705
441706
441707
441708
441709
441710
441835
441836
441837
441838
441839
441840
441841
441842
441843
441844
441845
441846
441847
441848
441849
441850
441851
441852
441853
441854
441855
441856







+
+
+
+
+
+
+
+







provisionnâmes	provisionner	:V1__t___zz:Is:1p/*
provisionnât	provisionner	:V1__t___zz:Sq:3s/*
provisionnâtes	provisionner	:V1__t___zz:Is:2p/*
provisionnè	provisionner	:V1__t___zz:Ip:1ś/R
provisionnèrent	provisionner	:V1__t___zz:Is:3p!/*
provoquasses	provoquer	:V1__t_q_zz:Sq:2s/*
provoquassions	provoquer	:V1__t_q_zz:Sq:1p/*
prud’homal	prud’homale	:A:m:s/C
prud’homale	prud’homale	:A:f:s/C
prud’homales	prud’homale	:A:f:p/C
prud’homaux	prud’homale	:A:m:p/C
prud’homie	prud’homie	:N:f:s/C
prud’homies	prud’homie	:N:f:p/C
prud’homme	prud’homme	:N:m:s/C
prud’hommes	prud’homme	:N:m:p/C
prunellidé	prunellidé	:N:m:s/*
prunellidés	prunellidé	:N:m:p/*
prunelée	prunelée	:N:f:s/*
prunelées	prunelée	:N:f:p/*
præsidiums	præsidium	:N:m:p/C
pré-adolescences	pré-adolescence	:N:f:p/C
pré-dimensionnements	pré-dimensionnement	:N:m:p/C
443281
443282
443283
443284
443285
443286
443287
443288
443289

443290
443291
443292
443293
443294
443295
443296
443427
443428
443429
443430
443431
443432
443433

443434
443435
443436
443437
443438
443439
443440
443441
443442







-

+







préétablissons	préétablir	:V2__t___zz:E:1p/*
préétablîmes	préétablir	:V2__t___zz:Is:1p/*
préétablît	préétablir	:V2__t___zz:Sq:3s/*
préétablîtes	préétablir	:V2__t___zz:Is:2p/*
prêchasses	prêcher	:V1_it___zz:Sq:2s/*
prêchassiez	prêcher	:V1_it___zz:Sq:2p/*
prêchiprêchas	prêchiprêcha	:N:m:p/R
prêtrailles	prêtraille	:N:f:p/*
prêts-relais	prêts-relais	:N:m:p/*
prêtrailles	prêtraille	:N:f:p/*
prônasse	prôner	:V1_it___zz:Sq:1s/*
prônassent	prôner	:V1_it___zz:Sq:3p/*
prônasses	prôner	:V1_it___zz:Sq:2s/*
prônassiez	prôner	:V1_it___zz:Sq:2p/*
prônassions	prôner	:V1_it___zz:Sq:1p/*
prônerez	prôner	:V1_it___zz:If:2p/*
prôneriez	prôner	:V1_it___zz:K:2p/*
443633
443634
443635
443636
443637
443638
443639

443640
443641
443642
443643
443644
443645
443646
443779
443780
443781
443782
443783
443784
443785
443786
443787
443788
443789
443790
443791
443792
443793







+







puées	puer	:V1_it___zz:Q:A:f:p/*
puerpéralités	puerpéralité	:N:f:p/*
pugnacités	pugnacité	:N:f:p/*
puisasses	puiser	:V1_it___zz:Sq:2s/*
puisassiez	puiser	:V1_it___zz:Sq:2p/*
puisassions	puiser	:V1_it___zz:Sq:1p/*
puisè	puiser	:V1_it___zz:Ip:1ś/R
puisqu’	puisqu’	:G:Cs/*
pulloroses	pullorose	:N:f:p/*
pullulais	pulluler	:V1_i____zz:Iq:1s:2s/*
pullulas	pulluler	:V1_i____zz:Is:2s/*
pullulasses	pulluler	:V1_i____zz:Sq:2s/*
pullulassiez	pulluler	:V1_i____zz:Sq:2p/*
pullulassions	pulluler	:V1_i____zz:Sq:1p/*
pullulerai	pulluler	:V1_i____zz:If:1s/*
443838
443839
443840
443841
443842
443843
443844

443845
443846
443847
443848
443849
443850
443851
443985
443986
443987
443988
443989
443990
443991
443992
443993
443994
443995
443996
443997
443998
443999







+







puttèrent	putter	:V1_i____zz:Is:3p!/*
putté	putter	:V1_i____zz:Q:1ŝ:e:i/*
puttings	putting	:N:m:p/*
puttos	putto	:N:m:p/*
puvathérapies	puvathérapie	:N:f:p/*
puçages	puçage	:N:m:p/*
puérilismes	puérilisme	:N:m:p/*
pygmalionismes	pygmalionisme	:N:m:p/*
pyracanthe	pyracanthe	:N:f:s/*
pyracanthes	pyracanthe	:N:f:p/*
pyramidai	pyramider	:V1_i____zz:Is:1s/*
pyramidais	pyramider	:V1_i____zz:Iq:1s:2s/*
pyramidasse	pyramider	:V1_i____zz:Sq:1s/*
pyramidassent	pyramider	:V1_i____zz:Sq:3p/*
pyramidasses	pyramider	:V1_i____zz:Sq:2s/*
444637
444638
444639
444640
444641
444642
444643




444644
444645
444646
444647
444648
444649
444650
444651
444652
444785
444786
444787
444788
444789
444790
444791
444792
444793
444794
444795
444796

444797
444798
444799
444800
444801
444802
444803







+
+
+
+

-







pœciles	pœcile	:N:m:p/M
pœcilogynie	pœcilogynie	:N:f:s/*
pœcilogynies	pœcilogynie	:N:f:p/*
pœcilotherme	pœcilotherme	:A:e:s/*
pœcilotherme	pœcilotherme	:N:m:s/*
pœcilothermie	pœcilothermie	:N:f:s/*
pœcilothermies	pœcilothermie	:N:f:p/*
p’tit	p’tite	:N:A:m:s/*
p’tite	p’tite	:N:A:f:s/*
p’tites	p’tite	:N:A:f:p/*
p’tits	p’tite	:N:A:m:p/*
qats	qat	:N:m:p/C
qu'en-dira-t-on	qu'en-dira-t-on	:N:m:i/*
quadragésimes	quadragésime	:N:f:p/*
quadribandes	quadribande	:A:e:p/*
quadribandes	quadribande	:N:m:p/*
quadricentenaires	quadricentenaire	:A:e:p/*
quadricentenaires	quadricentenaire	:N:m:p/*
quadrilinguismes	quadrilinguisme	:N:m:p/*
quadrillai	quadriller	:V1__t___zz:Is:1s/*
444875
444876
444877
444878
444879
444880
444881




444882
444883
444884
444885
444886
444887
444888
445026
445027
445028
445029
445030
445031
445032
445033
445034
445035
445036
445037
445038
445039
445040
445041
445042
445043







+
+
+
+







quatre-vingt-quatorzièmes	quatre-vingt-quatorzième	:N:A:e:p/*
quatre-vingt-quinzièmes	quatre-vingt-quinzième	:N:A:e:p/*
quatre-vingt-septièmes	quatre-vingt-septième	:N:A:e:p/*
quatre-vingt-sixièmes	quatre-vingt-sixième	:N:A:e:p/*
quatre-vingt-treizièmes	quatre-vingt-treizième	:N:A:e:p/*
quatre-vingt-troisièmes	quatre-vingt-troisième	:N:A:e:p/*
quatre-vingt-unièmes	quatre-vingt-unième	:N:A:e:p/*
qu’	qu’	:G:Cs/*
quelqu’	quelqu’	:G:Oi/*
quelqu’un	quelqu’un	:G:Oi:m:s/*
quelqu’une	quelqu’une	:G:Oi:f:s/*
quercitrines	quercitrine	:N:f:p/*
quercitrins	quercitrine	:N:m:p/*
querellasse	quereller	:V1__t_q_zz:Sq:1s/*
querellasses	quereller	:V1__t_q_zz:Sq:2s/*
querellassiez	quereller	:V1__t_q_zz:Sq:2p/*
querellassions	quereller	:V1__t_q_zz:Sq:1p/*
querelleriez	quereller	:V1__t_q_zz:K:2p/*
444926
444927
444928
444929
444930
444931
444932
444933

444934
444935
444936

444937
444938
444939
444940
444941
444942
444943
445081
445082
445083
445084
445085
445086
445087

445088
445089
445090
445091
445092
445093
445094
445095
445096
445097
445098
445099







-
+



+







quettât	quetter	:V1__t___zz:Sq:3s/*
quettâtes	quetter	:V1__t___zz:Is:2p/*
quettè	quetter	:V1__t___zz:Ip:1ś/R
quettèrent	quetter	:V1__t___zz:Is:3p!/*
quettée	quetter	:V1__t___zz:Q:A:f:s/*
quettées	quetter	:V1__t___zz:Q:A:f:p/*
quettés	quetter	:V1__t___zz:Q:A:m:p/*
queues-d'aronde	queues-d'aronde	:N:f:s/*
queue-d’aronde	queue-d’aronde	:N:f:s/*
queues-de-cochon	queues-de-cochon	:N:f:p/*
queues-de-morue	queues-de-morue	:N:f:p/*
queues-de-pie	queues-de-pie	:N:f:p/*
queues-d’aronde	queues-d’aronde	:N:f:s/*
queuillères	queuillère	:N:f:p/X
queursage	queursage	:N:m:s/*
queursages	queursage	:N:m:p/*
queutarde	queutarde	:N:f:s/*
queutardes	queutarde	:N:f:p/*
queutai	queuter	:V1_it___zz:Is:1s/*
queutaient	queuter	:V1_it___zz:Iq:3p/*
445126
445127
445128
445129
445130
445131
445132

445133
445134
445135
445136
445137
445138
445139
445282
445283
445284
445285
445286
445287
445288
445289
445290
445291
445292
445293
445294
445295
445296







+







quittançâmes	quittancer	:V1__t___zz:Is:1p/*
quittançât	quittancer	:V1__t___zz:Sq:3s/*
quittançâtes	quittancer	:V1__t___zz:Is:2p/*
quizalofops	quizalofop	:N:m:p/X
quiétismes	quiétisme	:N:m:p/*
quoc-ngu	quoc-ngu	:N:m:i/M
quocngus	quocngu	:N:m:p/R
quoiqu’	quoiqu’	:G:Cs/*
quotta	quotter	:V1_i____zz:Is:3s/*
quottai	quotter	:V1_i____zz:Is:1s/*
quottaient	quotter	:V1_i____zz:Iq:3p/*
quottais	quotter	:V1_i____zz:Iq:1s:2s/*
quottait	quotter	:V1_i____zz:Iq:3s/*
quottant	quotter	:V1_i____zz:P/*
quottas	quotter	:V1_i____zz:Is:2s/*
445237
445238
445239
445240
445241
445242
445243

445244
445245
445246
445247
445248
445249
445250
445394
445395
445396
445397
445398
445399
445400
445401
445402
445403
445404
445405
445406
445407
445408







+







quêterez	quêter	:V1_it___zz:If:2p/*
quêteriez	quêter	:V1_it___zz:K:2p/*
quêterions	quêter	:V1_it___zz:K:1p/*
quêtiez	quêter	:V1_it___zz:Iq:Sp:2p/*
quêtâmes	quêter	:V1_it___zz:Is:1p/*
quêtâtes	quêter	:V1_it___zz:Is:2p/*
quêtè	quêter	:V1_it___zz:Ip:1ś/R
qu’en-dira-t-on	qu’en-dira-t-on	:N:m:i/*
rabaissasse	rabaisser	:V1__t_q_zz:Sq:1s/*
rabaissassent	rabaisser	:V1__t_q_zz:Sq:3p/*
rabaissasses	rabaisser	:V1__t_q_zz:Sq:2s/*
rabaissassiez	rabaisser	:V1__t_q_zz:Sq:2p/*
rabaissassions	rabaisser	:V1__t_q_zz:Sq:1p/*
rabaissâmes	rabaisser	:V1__t_q_zz:Is:1p/*
rabaissâtes	rabaisser	:V1__t_q_zz:Is:2p/*
459163
459164
459165
459166
459167
459168
459169




































459170
459171
459172
459173
459174
459175
459176
459321
459322
459323
459324
459325
459326
459327
459328
459329
459330
459331
459332
459333
459334
459335
459336
459337
459338
459339
459340
459341
459342
459343
459344
459345
459346
459347
459348
459349
459350
459351
459352
459353
459354
459355
459356
459357
459358
459359
459360
459361
459362
459363
459364
459365
459366
459367
459368
459369
459370







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







resocialisons	resocialiser	:V1_it_q__a:E:1p/*
resocialisâmes	resocialiser	:V1_it_q__a:Is:1p/*
resocialisât	resocialiser	:V1_it_q__a:Sq:3s/*
resocialisâtes	resocialiser	:V1_it_q__a:Is:2p/*
resocialisè	resocialiser	:V1_it_q__a:Ip:1ś/R
resocialisèrent	resocialiser	:V1_it_q__a:Is:3p!/*
resocialisées	resocialiser	:V1_it_q__a:Q:A:f:p/*
resolidifia	resolidifier	:V1_it_q__a:Is:3s/*
resolidifiai	resolidifier	:V1_it_q__a:Is:1s/*
resolidifiaient	resolidifier	:V1_it_q__a:Iq:3p/*
resolidifiais	resolidifier	:V1_it_q__a:Iq:1s:2s/*
resolidifiait	resolidifier	:V1_it_q__a:Iq:3s/*
resolidifias	resolidifier	:V1_it_q__a:Is:2s/*
resolidifiasse	resolidifier	:V1_it_q__a:Sq:1s/*
resolidifiassent	resolidifier	:V1_it_q__a:Sq:3p/*
resolidifiasses	resolidifier	:V1_it_q__a:Sq:2s/*
resolidifiassiez	resolidifier	:V1_it_q__a:Sq:2p/*
resolidifiassions	resolidifier	:V1_it_q__a:Sq:1p/*
resolidifiera	resolidifier	:V1_it_q__a:If:3s/*
resolidifierai	resolidifier	:V1_it_q__a:If:1s/*
resolidifieraient	resolidifier	:V1_it_q__a:K:3p/*
resolidifierais	resolidifier	:V1_it_q__a:K:1s:2s/*
resolidifierait	resolidifier	:V1_it_q__a:K:3s/*
resolidifieras	resolidifier	:V1_it_q__a:If:2s/*
resolidifierez	resolidifier	:V1_it_q__a:If:2p/*
resolidifieriez	resolidifier	:V1_it_q__a:K:2p/*
resolidifierions	resolidifier	:V1_it_q__a:K:1p/*
resolidifierons	resolidifier	:V1_it_q__a:If:1p/*
resolidifieront	resolidifier	:V1_it_q__a:If:3p!/*
resolidifies	resolidifier	:V1_it_q__a:Ip:Sp:2s/*
resolidifiez	resolidifier	:V1_it_q__a:Ip:2p/*
resolidifiez	resolidifier	:V1_it_q__a:E:2p/*
resolidifiiez	resolidifier	:V1_it_q__a:Iq:Sp:2p/*
resolidifiions	resolidifier	:V1_it_q__a:Iq:Sp:1p/*
resolidifions	resolidifier	:V1_it_q__a:Ip:1p/*
resolidifions	resolidifier	:V1_it_q__a:E:1p/*
resolidifiâmes	resolidifier	:V1_it_q__a:Is:1p/*
resolidifiât	resolidifier	:V1_it_q__a:Sq:3s/*
resolidifiâtes	resolidifier	:V1_it_q__a:Is:2p/*
resolidifiè	resolidifier	:V1_it_q__a:Ip:1ś/R
resolidifièrent	resolidifier	:V1_it_q__a:Is:3p!/*
resolidifiées	resolidifier	:V1_it_q__a:Q:A:f:p/*
resolidifiés	resolidifier	:V1_it_q__a:Q:A:m:p/*
respectabilisa	respectabiliser	:V1__t___zz:Is:3s/*
respectabilisai	respectabiliser	:V1__t___zz:Is:1s/*
respectabilisaient	respectabiliser	:V1__t___zz:Iq:3p/*
respectabilisais	respectabiliser	:V1__t___zz:Iq:1s:2s/*
respectabilisait	respectabiliser	:V1__t___zz:Iq:3s/*
respectabilisant	respectabiliser	:V1__t___zz:P/*
respectabilisas	respectabiliser	:V1__t___zz:Is:2s/*
462022
462023
462024
462025
462026
462027
462028

462029
462030
462031
462032
462033
462034
462035
462216
462217
462218
462219
462220
462221
462222
462223
462224
462225
462226
462227
462228
462229
462230







+







robotisè	robotiser	:V1__t___zz:Ip:1ś/R
robotisèrent	robotiser	:V1__t___zz:Is:3p!/*
roburites	roburite	:N:f:p/*
rocelles	rocelle	:N:f:p/*
rochages	rochage	:N:m:p/*
rochassières	rochassière	:N:f:p/*
rockabillys	rockabilly	:N:m:p/*
rock’n’roll	rock’n’roll	:N:m:i/*
rocqua	rocquer	:V1_i____zz:Is:3s/*
rocquai	rocquer	:V1_i____zz:Is:1s/*
rocquaient	rocquer	:V1_i____zz:Iq:3p/*
rocquais	rocquer	:V1_i____zz:Iq:1s:2s/*
rocquait	rocquer	:V1_i____zz:Iq:3s/*
rocquas	rocquer	:V1_i____zz:Is:2s/*
rocquasse	rocquer	:V1_i____zz:Sq:1s/*
465188
465189
465190
465191
465192
465193
465194

465195
465196
465197
465198
465199
465200
465201
465383
465384
465385
465386
465387
465388
465389
465390
465391
465392
465393
465394
465395
465396
465397







+







récurèrent	récurer	:V1__t___zz:Is:3p!/*
récusas	récuser	:V1__t_q_zz:Is:2s/*
récusasses	récuser	:V1__t_q_zz:Sq:2s/*
récusassiez	récuser	:V1__t_q_zz:Sq:2p/*
récusassions	récuser	:V1__t_q_zz:Sq:1p/*
récusâmes	récuser	:V1__t_q_zz:Is:1p/*
récusâtes	récuser	:V1__t_q_zz:Is:2p/*
rédac-chefs	rédac-chef	:N:e:p/*
rédigeas	rédiger	:V1_it___zz:Is:2s/*
rédigeassiez	rédiger	:V1_it___zz:Sq:2p/*
rédigeassions	rédiger	:V1_it___zz:Sq:1p/*
rédigè	rédiger	:V1_it___zz:Ip:1ś/R
rédimai	rédimer	:V1__t_q_zz:Is:1s/*
rédimais	rédimer	:V1__t_q_zz:Iq:1s:2s/*
rédimas	rédimer	:V1__t_q_zz:Is:2s/*
468733
468734
468735
468736
468737
468738
468739
468740
468741
468742
468743
468744
468745
468746
468747
468748
468749
468750
468751
468752
468753
468754
468929
468930
468931
468932
468933
468934
468935








468936
468937
468938
468939
468940
468941
468942







-
-
-
-
-
-
-
-







rûtons	rûter	:V1_i____zz:Ip:1p/M
rûtons	rûter	:V1_i____zz:E:1p/M
rûtâmes	rûter	:V1_i____zz:Is:1p/M
rûtât	rûter	:V1_i____zz:Sq:3s/M
rûtâtes	rûter	:V1_i____zz:Is:2p/M
rûtè	rûter	:V1_i____zz:Ip:1ś/M
rûtèrent	rûter	:V1_i____zz:Is:3p!/M
s'abader	s'abader	:V1____p_e_:Y/*
s'abriller	s'abriller	:V1____p_e_:Y/*
s'agir	s'agir	:V2____p_e_:Y/*
s'agira	s'agir	:V2____p_e_:If:3s/*
s'agirait	s'agir	:V2____p_e_:K:3s/*
s'agissait	s'agir	:V2____p_e_:Iq:3s/*
s'agisse	s'agir	:V2____p_e_:Sp:3s/*
s'agît	s'agir	:V2____p_e_:Sq:3s/*
sabbathiens	sabbathienne	:A:m:p/*
sabellianismes	sabellianisme	:N:m:p/*
sablasse	sabler	:V1_it___zz:Sq:1s/*
sablassent	sabler	:V1_it___zz:Sq:3p/*
sablasses	sabler	:V1_it___zz:Sq:2s/*
sablassiez	sabler	:V1_it___zz:Sq:2p/*
sablassions	sabler	:V1_it___zz:Sq:1p/*
469246
469247
469248
469249
469250
469251
469252
469253
469254

469255
469256
469257
469258
469259
469260
469261
469434
469435
469436
469437
469438
469439
469440

469441
469442
469443
469444
469445
469446
469447
469448
469449







-

+







saillirez	saillir	:V3_i____zz:If:2p/*
saillirions	saillir	:V3_i____zz:K:1p/*
saillirons	saillir	:V3_i____zz:If:1p/*
saillisses	saillir	:V3_i____zz:Sq:2s/*
saillissiez	saillir	:V3_i____zz:Sq:2p/*
saillissions	saillir	:V3_i____zz:Sq:1p/*
saillîtes	saillir	:V3_i____zz:Is:2p/*
saisies-brandons	saisies-brandons	:N:f:p/*
saisies-gageries	saisies-gageries	:N:f:p/*
saisies-brandons	saisies-brandons	:N:f:p/*
saisonnaux	saisonnale	:A:m:p/*
saisonna	saisonner	:V1_i____zz:Is:3s/*
saisonnai	saisonner	:V1_i____zz:Is:1s/*
saisonnaient	saisonner	:V1_i____zz:Iq:3p/*
saisonnais	saisonner	:V1_i____zz:Iq:1s:2s/*
saisonnant	saisonner	:V1_i____zz:P/*
saisonnas	saisonner	:V1_i____zz:Is:2s/*
471258
471259
471260
471261
471262
471263
471264

471265
471266
471267
471268
471269
471270
471271
471446
471447
471448
471449
471450
471451
471452
471453
471454
471455
471456
471457
471458
471459
471460







+







scénarisons	scénariser	:V1__t___zz:E:1p/*
scénarisâmes	scénariser	:V1__t___zz:Is:1p/*
scénarisât	scénariser	:V1__t___zz:Sq:3s/*
scénarisâtes	scénariser	:V1__t___zz:Is:2p/*
scénarisè	scénariser	:V1__t___zz:Ip:1ś/R
scénologies	scénologie	:N:f:p/*
sdcards	sdcard	:N:f:p/X
s’	s’	:G:Oo:Ov:O3:e:s:p/*
seaborgiums	seaborgium	:N:m:p/*
secams	secam	:N:m:p/M
secondarités	secondarité	:N:f:p/*
décasecondes	seconde	:N:f:p/*
hectosecondes	seconde	:N:f:p/*
pétasecondes	seconde	:N:f:p/*
térasecondes	seconde	:N:f:p/*
473103
473104
473105
473106
473107
473108
473109
473110
473111
473112
473113
473114
473115
473116
473117
473118
473119
473120
473121
473122
473123
473124
473125
473126
473127
473128



















473129
473130
473131
473132
473133
473134
473135
473292
473293
473294
473295
473296
473297
473298



















473299
473300
473301
473302
473303
473304
473305
473306
473307
473308
473309
473310
473311
473312
473313
473314
473315
473316
473317
473318
473319
473320
473321
473322
473323
473324







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







solidariserez	solidariser	:V1__t_q_zz:If:2p/*
solidariseriez	solidariser	:V1__t_q_zz:K:2p/*
solidariserions	solidariser	:V1__t_q_zz:K:1p/*
solidarisiez	solidariser	:V1__t_q_zz:Iq:Sp:2p/*
solidarisâmes	solidariser	:V1__t_q_zz:Is:1p/*
solidarisâtes	solidariser	:V1__t_q_zz:Is:2p/*
solidarisè	solidariser	:V1__t_q_zz:Ip:1ś/R
solidifiai	solidifier	:V1__t_q_zz:Is:1s/*
solidifiais	solidifier	:V1__t_q_zz:Iq:1s:2s/*
solidifias	solidifier	:V1__t_q_zz:Is:2s/*
solidifiasse	solidifier	:V1__t_q_zz:Sq:1s/*
solidifiassent	solidifier	:V1__t_q_zz:Sq:3p/*
solidifiasses	solidifier	:V1__t_q_zz:Sq:2s/*
solidifiassiez	solidifier	:V1__t_q_zz:Sq:2p/*
solidifiassions	solidifier	:V1__t_q_zz:Sq:1p/*
solidifierais	solidifier	:V1__t_q_zz:K:1s:2s/*
solidifieras	solidifier	:V1__t_q_zz:If:2s/*
solidifierez	solidifier	:V1__t_q_zz:If:2p/*
solidifieriez	solidifier	:V1__t_q_zz:K:2p/*
solidifierions	solidifier	:V1__t_q_zz:K:1p/*
solidifierons	solidifier	:V1__t_q_zz:If:1p/*
solidifiiez	solidifier	:V1__t_q_zz:Iq:Sp:2p/*
solidifiions	solidifier	:V1__t_q_zz:Iq:Sp:1p/*
solidifiâmes	solidifier	:V1__t_q_zz:Is:1p/*
solidifiâtes	solidifier	:V1__t_q_zz:Is:2p/*
solidifiè	solidifier	:V1__t_q_zz:Ip:1ś/R
solidifiai	solidifier	:V1_it_q__a:Is:1s/*
solidifiais	solidifier	:V1_it_q__a:Iq:1s:2s/*
solidifias	solidifier	:V1_it_q__a:Is:2s/*
solidifiasse	solidifier	:V1_it_q__a:Sq:1s/*
solidifiassent	solidifier	:V1_it_q__a:Sq:3p/*
solidifiasses	solidifier	:V1_it_q__a:Sq:2s/*
solidifiassiez	solidifier	:V1_it_q__a:Sq:2p/*
solidifiassions	solidifier	:V1_it_q__a:Sq:1p/*
solidifierais	solidifier	:V1_it_q__a:K:1s:2s/*
solidifieras	solidifier	:V1_it_q__a:If:2s/*
solidifierez	solidifier	:V1_it_q__a:If:2p/*
solidifieriez	solidifier	:V1_it_q__a:K:2p/*
solidifierions	solidifier	:V1_it_q__a:K:1p/*
solidifierons	solidifier	:V1_it_q__a:If:1p/*
solidifiiez	solidifier	:V1_it_q__a:Iq:Sp:2p/*
solidifiions	solidifier	:V1_it_q__a:Iq:Sp:1p/*
solidifiâmes	solidifier	:V1_it_q__a:Is:1p/*
solidifiâtes	solidifier	:V1_it_q__a:Is:2p/*
solidifiè	solidifier	:V1_it_q__a:Ip:1ś/R
solière	solière	:N:f:s/*
soliers-moquettistes	soliers-moquettistes	:N:m:p/*
soliflua	solifluer	:V1_i____zz:Is:3s/*
solifluai	solifluer	:V1_i____zz:Is:1s/*
solifluaient	solifluer	:V1_i____zz:Iq:3p/*
solifluais	solifluer	:V1_i____zz:Iq:1s:2s/*
solifluait	solifluer	:V1_i____zz:Iq:3s/*
473585
473586
473587
473588
473589
473590
473591

473592
473593
473594
473595
473596
473597
473598
473774
473775
473776
473777
473778
473779
473780
473781
473782
473783
473784
473785
473786
473787
473788







+







sorbitols	sorbitol	:N:m:p/*
sorgos	sorgo	:N:m:p/R
sororats	sororat	:N:m:p/*
sorteuses	sorteuse	:N:A:f:p/*
sortie-de-bain	sortie-de-bain	:N:f:s/*
sorties-de-bain	sorties-de-bain	:N:f:p/*
sosténuto	sosténuto	:W/R
sot-l’y-laisse	sot-l’y-laisse	:N:m:i/*
souahélie	souahélie	:N:A:f:s/*
soubattaient	soubattre	:V3__t___zz:Iq:3p/*
soubattais	soubattre	:V3__t___zz:Iq:1s:2s/*
soubattait	soubattre	:V3__t___zz:Iq:3s/*
soubattant	soubattre	:V3__t___zz:P/*
soubatte	soubattre	:V3__t___zz:Sp:1s:3s/*
soubattent	soubattre	:V3__t___zz:Ip:Sp:3p/*
474664
474665
474666
474667
474668
474669
474670
474671

474672
474673
474674
474675
474676
474677
474678
474854
474855
474856
474857
474858
474859
474860

474861
474862
474863
474864
474865
474866
474867
474868







-
+







soutachè	soutacher	:V1__t___zz:Ip:1ś/R
soutachèrent	soutacher	:V1__t___zz:Is:3p!/*
soutasse	soutasse	:N:f:s/R
soutasses	soutasse	:N:f:p/R
soutenabilités	soutenabilité	:N:f:p/*
soutinsses	soutenir	:V3_itnq__a:Sq:2s/*
soutinssiez	soutenir	:V3_itnq__a:Sq:2p/*
southern_blot	southern_blot	:N:m:i/P
southern blot	southern blot	:N:m:i/P
soutirasse	soutirer	:V1__t___zz:Sq:1s/*
soutirassent	soutirer	:V1__t___zz:Sq:3p/*
soutirasses	soutirer	:V1__t___zz:Sq:2s/*
soutirassiez	soutirer	:V1__t___zz:Sq:2p/*
soutirassions	soutirer	:V1__t___zz:Sq:1p/*
soutireras	soutirer	:V1__t___zz:If:2s/*
soutireriez	soutirer	:V1__t___zz:K:2p/*
478780
478781
478782
478783
478784
478785
478786

478787
478788
478789
478790
478791
478792
478793
478970
478971
478972
478973
478974
478975
478976
478977
478978
478979
478980
478981
478982
478983
478984







+







surhaussons	surhausser	:V1__t___zz:E:1p/*
surhaussâmes	surhausser	:V1__t___zz:Is:1p/*
surhaussât	surhausser	:V1__t___zz:Sq:3s/*
surhaussâtes	surhausser	:V1__t___zz:Is:2p/*
surhaussè	surhausser	:V1__t___zz:Ip:1ś/R
surhaussèrent	surhausser	:V1__t___zz:Is:3p!/*
surhumanités	surhumanité	:N:f:p/*
surhydratations	surhydratation	:N:f:p/*
surikates	surikate	:N:m:p/C
surimposai	surimposer	:V1__t_q_zz:Is:1s/*
surimposais	surimposer	:V1__t_q_zz:Iq:1s:2s/*
surimposas	surimposer	:V1__t_q_zz:Is:2s/*
surimposasse	surimposer	:V1__t_q_zz:Sq:1s/*
surimposassent	surimposer	:V1__t_q_zz:Sq:3p/*
surimposasses	surimposer	:V1__t_q_zz:Sq:2s/*
481408
481409
481410
481411
481412
481413
481414
481415
481416
481417
481418
481419










481420
481421
481422
481423
481424
481425
481426
481599
481600
481601
481602
481603
481604
481605





481606
481607
481608
481609
481610
481611
481612
481613
481614
481615
481616
481617
481618
481619
481620
481621
481622







-
-
-
-
-
+
+
+
+
+
+
+
+
+
+







séronégativités	séronégativité	:N:f:p/*
séroprophylaxies	séroprophylaxie	:N:f:p/*
séroprotections	séroprotection	:N:f:p/*
sérovaccinations	sérovaccination	:N:f:p/*
séviras	sévir	:V2_it____a:If:2s/*
sévirions	sévir	:V2_it____a:K:1p/*
sévîmes	sévir	:V2_it____a:Is:1p/*
t'elle	t'elle	:#/*
t'elles	t'elle	:#/*
t'il	t'il	:#/*
t'ils	t'il	:#/*
t'on	t'on	:#/*
s’abader	s’abader	:V1____p_e_:Y/*
s’abriller	s’abriller	:V1____p_e_:Y/*
s’agir	s’agir	:V2____p_e_:Y/*
s’agira	s’agir	:V2____p_e_:If:3s/*
s’agirait	s’agir	:V2____p_e_:K:3s/*
s’agissait	s’agir	:V2____p_e_:Iq:3s/*
s’agissant	s’agir	:V2____p_e_:P/*
s’agisse	s’agir	:V2____p_e_:Sp:3s/*
s’agit	s’agir	:V2____p_e_:Ip:3s/*
s’agît	s’agir	:V2____p_e_:Sq:3s/*
tabacologies	tabacologie	:N:f:p/*
tabacomanies	tabacomanie	:N:f:p/*
tabacultrice	tabacultrice	:N:f:s/*
tabacultrices	tabacultrice	:N:f:p/*
tabagismes	tabagisme	:N:m:p/*
tabassai	tabasser	:V1__t_q_zz:Is:1s/*
tabassais	tabasser	:V1__t_q_zz:Iq:1s:2s/*
482064
482065
482066
482067
482068
482069
482070

482071
482072
482073
482074
482075
482076
482077
482260
482261
482262
482263
482264
482265
482266
482267
482268
482269
482270
482271
482272
482273
482274







+







tapageât	tapager	:V1_i____zz:Sq:3s/*
tapageâtes	tapager	:V1_i____zz:Is:2p/*
tapagiez	tapager	:V1_i____zz:Iq:Sp:2p/*
tapagions	tapager	:V1_i____zz:Iq:Sp:1p/*
tapagè	tapager	:V1_i____zz:Ip:1ś/R
tapagèrent	tapager	:V1_i____zz:Is:3p!/*
tapants	tapante	:A:m:p/*
tape-à-l’œil	tape-à-l’œil	:A:e:i/*
tapasse	taper	:V1_it_q_zz:Sq:1s/*
tapasses	taper	:V1_it_q_zz:Sq:2s/*
tapassiez	taper	:V1_it_q_zz:Sq:2p/*
tapassions	taper	:V1_it_q_zz:Sq:1p/*
taperions	taper	:V1_it_q_zz:K:1p/*
tapè	taper	:V1_it_q_zz:Ip:1ś/R
taphophilies	taphophilie	:N:f:p/*
482793
482794
482795
482796
482797
482798
482799

482800
482801
482802
482803
482804
482805
482806
482990
482991
482992
482993
482994
482995
482996
482997
482998
482999
483000
483001
483002
483003
483004







+







tchipâtes	tchiper	:V1_it____a:Is:2p/*
tchipè	tchiper	:V1_it____a:Ip:1ś/R
tchipèrent	tchiper	:V1_it____a:Is:3p!/*
tchipé	tchiper	:V1_it____a:Q:A:1ŝ:m:s/*
tchipées	tchiper	:V1_it____a:Q:A:f:p/*
tchipés	tchiper	:V1_it____a:Q:A:m:p/*
tchitolas	tchitola	:N:m:p/*
t’	t’	:G:Oo:Ov:O2:e:s/*
teaseurs	teaseur	:N:m:p/R
teasings	teasing	:N:m:p/*
technicisations	technicisation	:N:f:p/*
technicisa	techniciser	:V1__t___zz:Is:3s/*
technicisai	techniciser	:V1__t___zz:Is:1s/*
technicisaient	techniciser	:V1__t___zz:Iq:3p/*
technicisais	techniciser	:V1__t___zz:Iq:1s:2s/*
484247
484248
484249
484250
484251
484252
484253

484254
484255
484256
484257
484258

484259
484260
484261
484262
484263
484264
484265
484445
484446
484447
484448
484449
484450
484451
484452
484453
484454
484455
484456
484457
484458
484459
484460
484461
484462
484463
484464
484465







+





+







tire-bouchonnâtes	tire-bouchonner	:V1_it_q_zz:Is:2p/M
tire-bouchonnè	tire-bouchonner	:V1_it_q_zz:Ip:1ś/M
tire-bouchonnèrent	tire-bouchonner	:V1_it_q_zz:Is:3p!/M
tire-braise	tire-braise	:N:m:s/R
tire-braises	tire-braise	:N:m:p/R
tire-crins	tire-crin	:N:m:p/R
tire-crins	tire-crins	:N:m:i/M
tire-d’aile	tire-d’aile	:Ŵ/*
tire-feu	tire-feu	:N:m:s/R
tire-feux	tire-feu	:N:m:p/R
tire-lisse	tire-lisse	:N:f:i/M
tire-lisse	tire-lisse	:N:f:s/R
tire-lisses	tire-lisse	:N:f:p/R
tire-l’œil	tire-l’œil	:N:m:i/*
tire-terre	tire-terre	:N:m:s/R
tire-terres	tire-terre	:N:m:p/R
tire-veine	tire-veine	:N:m:i/C
tire-veine	tire-veine	:N:m:s/*
tire-veines	tire-veine	:N:m:p/*
tirebouchonna	tirebouchonner	:V1_it_q_zz:Is:3s/R
tirebouchonnai	tirebouchonner	:V1_it_q_zz:Is:1s/R
485827
485828
485829
485830
485831
485832
485833

485834
485835
485836
485837
485838
485839
485840
486027
486028
486029
486030
486031
486032
486033
486034
486035
486036
486037
486038
486039
486040
486041







+







toussotâmes	toussoter	:V1_i____zz:Is:1p/*
toussotât	toussoter	:V1_i____zz:Sq:3s/*
toussotâtes	toussoter	:V1_i____zz:Is:2p/*
toussotè	toussoter	:V1_i____zz:Ip:1ś/R
toussoteuse	toussoteuse	:A:f:s/*
toussoteuses	toussoteuse	:A:f:p/*
tout-fous	tout-fou	:N:A:m:p/*
tout-à-l’égout	tout-à-l’égout	:N:m:i/*
toutes-boites	toutes-boites	:N:m:i/R
toutes-bonnes	toutes-bonnes	:N:f:p/*
toutes-épices	toutes-épices	:N:f:p/*
toxicodépendante	toxicodépendante	:N:A:f:s/*
toxocaroses	toxocarose	:N:f:p/*
toyotismes	toyotisme	:N:m:p/*
traboula	trabouler	:V1_i____zz:Is:3s/*
486541
486542
486543
486544
486545
486546
486547



































486548
486549
486550
486551
486552
486553
486554
486742
486743
486744
486745
486746
486747
486748
486749
486750
486751
486752
486753
486754
486755
486756
486757
486758
486759
486760
486761
486762
486763
486764
486765
486766
486767
486768
486769
486770
486771
486772
486773
486774
486775
486776
486777
486778
486779
486780
486781
486782
486783
486784
486785
486786
486787
486788
486789
486790







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







transiterons	transiter	:V1_it___zz:If:1p/*
transitez	transiter	:V1_it___zz:Ip:2p/*
transitez	transiter	:V1_it___zz:E:2p/*
transitiez	transiter	:V1_it___zz:Iq:Sp:2p/*
transitâmes	transiter	:V1_it___zz:Is:1p/*
transitâtes	transiter	:V1_it___zz:Is:2p/*
transitè	transiter	:V1_it___zz:Ip:1ś/R
transitionna	transitionner	:V1_i_____a:Is:3s/*
transitionnai	transitionner	:V1_i_____a:Is:1s/*
transitionnaient	transitionner	:V1_i_____a:Iq:3p/*
transitionnais	transitionner	:V1_i_____a:Iq:1s:2s/*
transitionnait	transitionner	:V1_i_____a:Iq:3s/*
transitionnant	transitionner	:V1_i_____a:P/*
transitionnas	transitionner	:V1_i_____a:Is:2s/*
transitionnasse	transitionner	:V1_i_____a:Sq:1s/*
transitionnassent	transitionner	:V1_i_____a:Sq:3p/*
transitionnasses	transitionner	:V1_i_____a:Sq:2s/*
transitionnassiez	transitionner	:V1_i_____a:Sq:2p/*
transitionnassions	transitionner	:V1_i_____a:Sq:1p/*
transitionnera	transitionner	:V1_i_____a:If:3s/*
transitionnerai	transitionner	:V1_i_____a:If:1s/*
transitionneraient	transitionner	:V1_i_____a:K:3p/*
transitionnerais	transitionner	:V1_i_____a:K:1s:2s/*
transitionnerait	transitionner	:V1_i_____a:K:3s/*
transitionneras	transitionner	:V1_i_____a:If:2s/*
transitionnerez	transitionner	:V1_i_____a:If:2p/*
transitionneriez	transitionner	:V1_i_____a:K:2p/*
transitionnerions	transitionner	:V1_i_____a:K:1p/*
transitionnerons	transitionner	:V1_i_____a:If:1p/*
transitionnes	transitionner	:V1_i_____a:Ip:Sp:2s/*
transitionnez	transitionner	:V1_i_____a:Ip:2p/*
transitionnez	transitionner	:V1_i_____a:E:2p/*
transitionniez	transitionner	:V1_i_____a:Iq:Sp:2p/*
transitionnions	transitionner	:V1_i_____a:Iq:Sp:1p/*
transitionnons	transitionner	:V1_i_____a:Ip:1p/*
transitionnons	transitionner	:V1_i_____a:E:1p/*
transitionnâmes	transitionner	:V1_i_____a:Is:1p/*
transitionnât	transitionner	:V1_i_____a:Sq:3s/*
transitionnâtes	transitionner	:V1_i_____a:Is:2p/*
transitionnè	transitionner	:V1_i_____a:Ip:1ś/R
transitionnèrent	transitionner	:V1_i_____a:Is:3p!/*
transitionnés	transitionner	:V1_i_____a:Q:A:m:p/*
translatais	translater	:V1__t___zz:Iq:1s:2s/*
translatasse	translater	:V1__t___zz:Sq:1s/*
translatassent	translater	:V1__t___zz:Sq:3p/*
translatasses	translater	:V1__t___zz:Sq:2s/*
translatassiez	translater	:V1__t___zz:Sq:2p/*
translatassions	translater	:V1__t___zz:Sq:1p/*
translaterai	translater	:V1__t___zz:If:1s/*
487017
487018
487019
487020
487021
487022
487023


487024
487025
487026
487027
487028
487029
487030
487253
487254
487255
487256
487257
487258
487259
487260
487261
487262
487263
487264
487265
487266
487267
487268







+
+







travaillotons	travailloter	:V1_i____zz:E:1p/*
travaillotâmes	travailloter	:V1_i____zz:Is:1p/*
travaillotât	travailloter	:V1_i____zz:Sq:3s/*
travaillotâtes	travailloter	:V1_i____zz:Is:2p/*
travaillotè	travailloter	:V1_i____zz:Ip:1ś/R
travaillotèrent	travailloter	:V1_i____zz:Is:3p!/*
travelages	travelage	:N:m:p/*
traveler’s	traveler’s	:A:e:i/R
traveller’s	traveller’s	:A:e:i/M
traversasses	traverser	:V1_it____a:Sq:2s/*
traversassions	traverser	:V1_it____a:Sq:1p/*
travestiras	travestir	:V2__t_q_zz:If:2s/*
travestirez	travestir	:V2__t_q_zz:If:2p/*
travestiriez	travestir	:V2__t_q_zz:K:2p/*
travestirions	travestir	:V2__t_q_zz:K:1p/*
travestirons	travestir	:V2__t_q_zz:If:1p/*
487885
487886
487887
487888
487889
487890
487891

487892
487893
487894
487895
487896
487897
487898
488123
488124
488125
488126
488127
488128
488129
488130
488131
488132
488133
488134
488135
488136
488137







+







trolliez	troller	:V1_i____zz:Iq:Sp:2p/*
trollâmes	troller	:V1_i____zz:Is:1p/*
trollât	troller	:V1_i____zz:Sq:3s/*
trollâtes	troller	:V1_i____zz:Is:2p/*
trollèrent	troller	:V1_i____zz:Is:3p!/*
trombidioses	trombidiose	:N:f:p/*
trompables	trompable	:A:e:p/*
trompe-l’œil	trompe-l’œil	:N:m:s/*
trompasses	tromper	:V1_it_q__a:Sq:2s/*
trompetai	trompeter	:V1_it___zz:Is:1s/M
trompetasse	trompeter	:V1_it___zz:Sq:1s/M
trompetassent	trompeter	:V1_it___zz:Sq:3p/M
trompetasses	trompeter	:V1_it___zz:Sq:2s/M
trompetassiez	trompeter	:V1_it___zz:Sq:2p/M
trompetassions	trompeter	:V1_it___zz:Sq:1p/M
488882
488883
488884
488885
488886
488887
488888

488889
488890
488891
488892
488893
488894
488895
489121
489122
489123
489124
489125
489126
489127
489128
489129
489130
489131
489132
489133
489134
489135







+







tuberculisè	tuberculiser	:V1__t___zz:Ip:1ś/R
tubuliflore	tubuliflore	:A:e:s/*
tubuliflore	tubuliflore	:N:f:s/*
tubéracé	tubéracée	:N:A:m:s/*
tubéracés	tubéracée	:N:A:m:p/*
tue-diable	tue-diable	:N:m:s/R
tue-diables	tue-diable	:N:m:p/R
tue-l’amour	tue-l’amour	:N:m:i/*
tuassiez	tuer	:V1_it_q_zz:Sq:2p/*
tuassions	tuer	:V1_it_q_zz:Sq:1p/*
tufier	tufière	:A:m:s/*
tuilai	tuiler	:V1__t___zz:Is:1s/*
tuilais	tuiler	:V1__t___zz:Iq:1s:2s/*
tuilait	tuiler	:V1__t___zz:Iq:3s/*
tuilas	tuiler	:V1__t___zz:Is:2s/*
490298
490299
490300
490301
490302
490303
490304






490305
490306
490307
490308
490309
490310
490311
490538
490539
490540
490541
490542
490543
490544
490545
490546
490547
490548
490549
490550
490551
490552
490553
490554
490555
490556
490557







+
+
+
+
+
+







tûtâtes	tûter	:V1_it___zz:Is:2p/*
tûtè	tûter	:V1_it___zz:Ip:1ś/R
tûtèrent	tûter	:V1_it___zz:Is:3p!/*
tûté	tûter	:V1_it___zz:Q:A:1ŝ:m:s/*
tûtée	tûter	:V1_it___zz:Q:A:f:s/*
tûtées	tûter	:V1_it___zz:Q:A:f:p/*
tûtés	tûter	:V1_it___zz:Q:A:m:p/*
t’elle	t’elle	:#/*
t’elles	t’elle	:#/*
t’en	t’en	:#/*
t’il	t’il	:#/*
t’ils	t’il	:#/*
t’on	t’on	:#/*
uberisations	uberisation	:N:f:p/*
ubiquismes	ubiquisme	:N:m:p/*
ufologies	ufologie	:N:f:p/*
ulcèrera	ulcérer	:V1__t_q_zz:If:3s/R
ulcèrerai	ulcérer	:V1__t_q_zz:If:1s/R
ulcèreraient	ulcérer	:V1__t_q_zz:K:3p/R
ulcèrerais	ulcérer	:V1__t_q_zz:K:1s:2s/R
491487
491488
491489
491490
491491
491492
491493

491494
491495
491496
491497
491498
491499
491500
491733
491734
491735
491736
491737
491738
491739
491740
491741
491742
491743
491744
491745
491746
491747







+







vaticinions	vaticiner	:V1_i____zz:Iq:Sp:1p/*
vaticinâmes	vaticiner	:V1_i____zz:Is:1p/*
vaticinât	vaticiner	:V1_i____zz:Sq:3s/*
vaticinâtes	vaticiner	:V1_i____zz:Is:2p/*
vaticinè	vaticiner	:V1_i____zz:Ip:1ś/R
vaticinèrent	vaticiner	:V1_i____zz:Is:3p!/*
vatouts	vatout	:N:m:p/R
vau-l’eau	vau-l’eau	:Ŵ/*
vaudouismes	vaudouisme	:N:m:p/*
vautras	vautrer	:V1____p_e_:Is:2s/*
vautrasse	vautrer	:V1____p_e_:Sq:1s/*
vautrassent	vautrer	:V1____p_e_:Sq:3p/*
vautrasses	vautrer	:V1____p_e_:Sq:2s/*
vautrassiez	vautrer	:V1____p_e_:Sq:2p/*
vautrassions	vautrer	:V1____p_e_:Sq:1p/*
492495
492496
492497
492498
492499
492500
492501

492502
492503
492504
492505
492506
492507
492508
492742
492743
492744
492745
492746
492747
492748
492749
492750
492751
492752
492753
492754
492755
492756







+







vidimons	vidimer	:V1__t___zz:Ip:1p/*
vidimons	vidimer	:V1__t___zz:E:1p/*
vidimâmes	vidimer	:V1__t___zz:Is:1p/*
vidimât	vidimer	:V1__t___zz:Sq:3s/*
vidimâtes	vidimer	:V1__t___zz:Is:2p/*
vidimè	vidimer	:V1__t___zz:Ip:1ś/R
vidimèrent	vidimer	:V1__t___zz:Is:3p!/*
vidéo-protections	vidéo-protection	:N:f:p/*
vidéoagressions	vidéoagression	:N:f:p/*
vidéodescriptions	vidéodescription	:N:f:p/*
vidéofréquences	vidéofréquence	:N:f:p/*
vidéophonies	vidéophonie	:N:f:p/*
vidéoprotections	vidéoprotection	:N:f:p/*
vieillîmes	vieillir	:V2_it_q__a:Is:1p/*
vieillîtes	vieillir	:V2_it_q__a:Is:2p/*
493633
493634
493635
493636
493637
493638
493639

493640
493641
493642
493643
493644
493645
493646
493881
493882
493883
493884
493885
493886
493887
493888
493889
493890
493891
493892
493893
493894
493895







+







volumatrice	volumatrice	:A:f:s/*
volumatrices	volumatrice	:A:f:p/*
volvations	volvation	:N:f:p/*
volémies	volémie	:N:f:p/*
vomiquiers	vomiquier	:N:m:p/*
vomîmes	vomir	:V2_it____a:Is:1p/*
vomito-négro	vomito-négro	:N:m:s/R
voszigues	voszigues	:G:Os:Oo:O2:e:p/*
votasses	voter	:V1_it___zz:Sq:2s/*
votassiez	voter	:V1_it___zz:Sq:2p/*
votassions	voter	:V1_it___zz:Sq:1p/*
voteuse	voteuse	:N:A:f:s/*
vouasses	vouer	:V1__t_q_zz:Sq:2s/*
vouassiez	vouer	:V1__t_q_zz:Sq:2p/*
vouâtes	vouer	:V1__t_q_zz:Is:2p/*
495620
495621
495622
495623
495624
495625
495626

495627
495628
495629
495630
495631
495632
495633
495869
495870
495871
495872
495873
495874
495875
495876
495877
495878
495879
495880
495881
495882
495883







+







zûnât	zûner	:V1_i____zz:Sq:3s/*
zûnâtes	zûner	:V1_i____zz:Is:2p/*
zûnè	zûner	:V1_i____zz:Ip:1ś/R
zûnèrent	zûner	:V1_i____zz:Is:3p!/*
zûné	zûner	:V1_i____zz:Q:1ŝ:e:i/*
µR	µR	:N:m:i;S/*
Élyott	Élyott	:M1:m:i/X
Énergie Partagée	Énergie Partagée	:MP:f:i/X
Évaine	Évaine	:M1:f:i/X
Îles-de-la-Madeleine	Îles-de-la-Madeleine	:N:f:p/*
à-plat-ventrisme	à-plat-ventrisme	:N:m:s/M
à-plat-ventrismes	à-plat-ventrisme	:N:m:p/M
ásatrú	ásatrú	:N:m:s/*
ásatrús	ásatrú	:N:m:p/*
âgismes	âgisme	:N:m:p/*

Modified lexicons/French.tagset.txt from [b4e8126915] to [4a587bac86].

51
52
53
54
55
56
57
58
59
60
61
62
63






64
65

66
67
68
69
70
71
72
51
52
53
54
55
56
57






58
59
60
61
62
63
64

65
66
67
68
69
70
71
72







-
-
-
-
-
-
+
+
+
+
+
+

-
+







        avec verbe auxilaire être ?         _________________________/  |
        avec verbe auxilaire avoir ?        ____________________________/

    Infinitif                   :Y
    Participe présent           :P
    Participe passé             :Q

    Indicatif présent           :Ip         1re personne du singulier   :1s  (forme interrogative: 1ś ou 1ŝ)
    Indicatif imparfait         :Iq         2e personne du singulier    :2s
    Indicatif passé simple      :Is         3e personne du singulier    :3s
    Indicatif futur             :If         1re personne du pluriel     :1p
                                            2e personne du pluriel      :2p
    Subjonctif présent          :Sp         3e personne du pluriel      :3p
    Indicatif présent           :Ip         1ʳᵉ personne du singulier   :1s  (forme interrogative: 1ś ou 1ŝ)
    Indicatif imparfait         :Iq         2 personne du singulier    :2s
    Indicatif passé simple      :Is         3 personne du singulier    :3s
    Indicatif futur             :If         1ʳᵉ personne du pluriel     :1p
                                            2 personne du pluriel      :2p
    Subjonctif présent          :Sp         3 personne du pluriel      :3p
    Subjonctif imparfait        :Sq
    

    Conditionnel                :K
    Impératif                   :E


//  MOTS GRAMMATICAUX

    Mot grammatical                     :G
90
91
92
93
94
95
96

97
98
99
100
101
102
103
104
105
106

107
108
109
110
111
112
113
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

107
108
109
110
111
112
113
114







+









-
+







    pronom indéterminé                  :Oi
    pronom interrogatif                 :Oj
    pronom relatif                      :Or
    pronom de négation                  :On
    pronom adverbial                    :Ow
    pronom personnel sujet              :Os
    pronom personnel objet              :Oo
    préverbe (pron. p. obj. + ne)       :Ov  (l’étiquette pour “ne” est une inexactitude commode)


========== MÉMO ==========

:A  Adjectif
:B  Nombre cardinal
:C  Conjonction
:D  Déterminant
:E  Impératif (verbe)
:F  
:F
:G  Mot grammatical
:H  <Hors-norme>
:I  Indicatif (verbe)
:J  Interjection
:K  Conditionnel (verbe)
:L  Locution
:M  Nom propre (sans article)
121
122
123
124
125
126
127
128
129
130



131
132
133
134
135
136
137
122
123
124
125
126
127
128



129
130
131
132
133
134
135
136
137
138







-
-
-
+
+
+







:U  Adverbe interrogatif
:V  Verbe (quelle que soit la forme)
:W  Adverbe
:X  Adverbe de négation
:Y  Infinitif (verbe)
:Z  Préfixe ou suffixe

:1  1re personne (verbe)
:2  2e personne (verbe)
:3  3e personne (verbe)
:1  1ʳᵉ personne (verbe)
:2  2 personne (verbe)
:3  3 personne (verbe)

:e  épicène
:f  féminin
:i  invariable
:m  masculin
:p  pluriel
:s  singulier

Modified make.py from [66526210fb] to [b3fb947153].

1
2




3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

21
22
23
24
25
26
27
28
29

30

31
32
33
34


35
36
37
38
39
40

41
42
43
44
45
46
47
48
49

50
51
52
53
54
55
56
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33

34
35
36


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62


+
+
+
+



-













-
+









+
-
+


-
-
+
+






+









+







 #!/usr/bin/env python3
# coding: UTF-8

"""
Grammalecte builder
"""

import sys
import os
import subprocess
import re
import zipfile
import traceback
import configparser
import datetime
import argparse
import importlib
import unittest
import json
import platform

from distutils import dir_util, file_util

import dialog_bundled
#import dialog_bundled
import compile_rules
import helpers
import lex_build


sWarningMessage = "The content of this folder is generated by code and replaced at each build.\n"


def getConfig (sLang):
    "load config.ini in <sLang> at gc_lang/<sLang>, returns xConfigParser object"
    xConfig = configparser.SafeConfigParser()
    xConfig = configparser.ConfigParser()
    xConfig.optionxform = str
    try:
        xConfig.read("gc_lang/" + sLang + "/config.ini", encoding="utf-8")
    except:
        xConfig.read_file(open("gc_lang/" + sLang + "/config.ini", "r", encoding="utf-8"))
    except FileNotFoundError:
        print("# Error. Can’t read config file [" + sLang + "]")
        exit()
    return xConfig


def createOptionsLabelProperties (dOptLbl):
    "create content for .properties files (LibreOffice)"
    sContent = ""
    for sOpt, tLabel in dOptLbl.items():
        sContent += sOpt + "=" + tLabel[0] + "\n"
        if tLabel[1]:
            sContent += "hlp_" + sOpt + "=" + tLabel[1] + "\n"
    return sContent


def createDialogOptionsXDL (dVars):
    "create bundled dialog options file .xdl (LibreOffice)"
    sFixedline = '<dlg:fixedline dlg:id="{0}" dlg:tab-index="{1}" dlg:top="{2}" dlg:left="5" dlg:width="{3}" dlg:height="10" dlg:value="&amp;{0}" />\n'
    sCheckbox = '<dlg:checkbox dlg:id="{0}" dlg:tab-index="{1}" dlg:top="{2}" dlg:left="{3}" dlg:width="{4}" dlg:height="10" dlg:value="&amp;{0}" dlg:checked="{5}" {6} />\n'
    iTabIndex = 1
    nPosY = 5
    nWidth = 240
    sContent = ""
    dOpt = dVars["dOptPython"]
131
132
133
134
135
136
137
138
139
140
141
142













143
144
145
146
147
148
149
150
151
152
153
154
155

156
157
158
159
160
161
162
163
164
165
166
167
168
169
170

171
172
173
174
175
176
177
137
138
139
140
141
142
143

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197







-




+
+
+
+
+
+
+
+
+
+
+
+
+













+















+








    # Installation in Writer profile
    if bInstall:
        print("> installation in Writer")
        if dVars.get('unopkg', False):
            cmd = '"'+os.path.abspath(dVars.get('unopkg')+'" add -f '+spfZip)
            print(cmd)
            #subprocess.run(cmd)
            os.system(cmd)
        else:
            print("# Error: path and filename of unopkg not set in config.ini")


def createServerOptions (sLang, dOptData):
    "create file options for Grammalecte server"
    with open("grammalecte-server-options."+sLang+".ini", "w", encoding="utf-8", newline="\n") as hDst:
        hDst.write("# Server options. Lang: " + sLang + "\n\n[gc_options]\n")
        for sSection, lOpt in dOptData["lStructOpt"]:
            hDst.write("\n########## " + dOptData["dOptLabel"][sLang].get(sSection, sSection + "[no label found]")[0] + " ##########\n")
            for lLineOpt in lOpt:
                for sOpt in lLineOpt:
                    hDst.write("# " + dOptData["dOptLabel"][sLang].get(sOpt, "[no label found]")[0] + "\n")
                    hDst.write(sOpt + " = " + ("1" if dOptData["dOptServer"].get(sOpt, None) else "0") + "\n")
        hDst.write("html = 1\n")


def createPackageZip (sLang, dVars, spLangPack):
    "create server zip"
    spfZip = "_build/" + dVars['name'] + "-"+ dVars['lang'] +"-v" + dVars['version'] + '.zip'
    hZip = zipfile.ZipFile(spfZip, mode='w', compression=zipfile.ZIP_DEFLATED)
    copyGrammalectePyPackageInZipFile(hZip, spLangPack)
    for spf in ["grammalecte-cli.py", "grammalecte-server.py", \
                "README.txt", "LICENSE.txt", "LICENSE.fr.txt"]:
        hZip.write(spf)
    hZip.writestr("setup.py", helpers.fileFile("gc_lang/fr/setup.py", dVars))


def copyGrammalectePyPackageInZipFile (hZip, spLangPack, sAddPath=""):
    "copy Grammalecte Python package in zip file"
    for sf in os.listdir("grammalecte"):
        if not os.path.isdir("grammalecte/"+sf):
            hZip.write("grammalecte/"+sf, sAddPath+"grammalecte/"+sf)
    for sf in os.listdir("grammalecte/graphspell"):
        if not os.path.isdir("grammalecte/graphspell/"+sf):
            hZip.write("grammalecte/graphspell/"+sf, sAddPath+"grammalecte/graphspell/"+sf)
    for sf in os.listdir("grammalecte/graphspell/_dictionaries"):
        if not os.path.isdir("grammalecte/graphspell/_dictionaries/"+sf):
            hZip.write("grammalecte/graphspell/_dictionaries/"+sf, sAddPath+"grammalecte/graphspell/_dictionaries/"+sf)
    for sf in os.listdir(spLangPack):
        if not os.path.isdir(spLangPack+"/"+sf):
            hZip.write(spLangPack+"/"+sf, sAddPath+spLangPack+"/"+sf)


def create (sLang, xConfig, bInstallOXT, bJavaScript):
    "make Grammalecte for project <sLang>"
    oNow = datetime.datetime.now()
    print("============== MAKE GRAMMALECTE [{0}] at {1.hour:>2} h {1.minute:>2} min {1.second:>2} s ==============".format(sLang, oNow))

    #### READ CONFIGURATION
    print("> read configuration...")
    spLang = "gc_lang/" + sLang

214
215
216
217
218
219
220

221
222
223
224
225
226
227
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248







+







            print(sf, end=", ")
    print()

    # TEST FILES
    with open("grammalecte/"+sLang+"/gc_test.txt", "w", encoding="utf-8", newline="\n") as hDstPy:
        hDstPy.write("# TESTS FOR LANG [" + sLang + "]\n\n")
        hDstPy.write(dVars['gctests'])
        hDstPy.write("\n")

    createOXT(spLang, dVars, xConfig._sections['oxt'], spLangPack, bInstallOXT)

    createPackageZip(sLang, dVars, spLangPack)

    #### JAVASCRIPT
    if bJavaScript:
258
259
260
261
262
263
264
265

266
267
268
269

270
271
272
273
274

275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292

293
294
295
296
297
298
299
279
280
281
282
283
284
285

286
287
288
289

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322







-
+



-
+





+


















+







        for sf in os.listdir(spLang+"/modules-js"):
            if not sf.startswith("gce_"):
                helpers.copyAndFileTemplate(spLang+"/modules-js/"+sf, spLangPack+"/"+sf, dVars)
                print(sf, end=", ")
        print()

        try:
            build_module = importlib.import_module("gc_lang."+sLang+".build")
            buildjs = importlib.import_module("gc_lang."+sLang+".build")
        except ImportError:
            print("# No complementary builder <build.py> in folder gc_lang/"+sLang)
        else:
            build_module.build(sLang, dVars, spLangPack)
            buildjs.build(sLang, dVars, spLangPack)

    return dVars['version']


def copyGraphspellCore (bJavaScript=False):
    "copy Graphspell package in Grammalecte package"
    helpers.createCleanFolder("grammalecte/graphspell")
    dir_util.mkpath("grammalecte/graphspell/_dictionaries")
    for sf in os.listdir("graphspell"):
        if not os.path.isdir("graphspell/"+sf):
            file_util.copy_file("graphspell/"+sf, "grammalecte/graphspell")
    if bJavaScript:
        helpers.createCleanFolder("grammalecte-js/graphspell")
        dir_util.mkpath("grammalecte-js/graphspell/_dictionaries")
        dVars = {}
        for sf in os.listdir("js_extension"):
            dVars[sf[:-3]] = open("js_extension/"+sf, "r", encoding="utf-8").read()
        for sf in os.listdir("graphspell-js"):
            if not os.path.isdir("graphspell-js/"+sf):
                file_util.copy_file("graphspell-js/"+sf, "grammalecte-js/graphspell")
                helpers.copyAndFileTemplate("graphspell-js/"+sf, "grammalecte-js/graphspell/"+sf, dVars)


def copyGraphspellDictionaries (dVars, bJavaScript=False, bExtendedDict=False, bCommunityDict=False, bPersonalDict=False):
    "copy requested Graphspell dictionaries in Grammalecte package"
    dVars["dic_main_filename_py"] = ""
    dVars["dic_main_filename_js"] = ""
    dVars["dic_extended_filename_py"] = ""
    dVars["dic_extended_filename_js"] = ""
    dVars["dic_community_filename_py"] = ""
    dVars["dic_community_filename_js"] = ""
    dVars["dic_personal_filename_py"] = ""
318
319
320
321
322
323
324

325
326
327
328
329
330




331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349

350
351
352
353
354
355
356
341
342
343
344
345
346
347
348
349
350




351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381







+


-
-
-
-
+
+
+
+



















+







            file_util.copy_file(spfJSDic, "grammalecte-js/graphspell/_dictionaries")
            dVars['dic_'+sType+'_filename_js'] = sFileName + '.json'
    dVars['dic_main_filename_py'] = dVars['dic_default_filename_py'] + ".bdic"
    dVars['dic_main_filename_js'] = dVars['dic_default_filename_js'] + ".json"


def buildDictionary (dVars, sType, bJavaScript=False):
    "build binary dictionary for Graphspell from lexicons"
    if sType == "main":
        spfLexSrc = dVars['lexicon_src']
        l_sfDictDst = dVars['dic_filenames'].split(",")
        l_sDicName = dVars['dic_name'].split(",")
        l_sFilter = dVars['dic_filter'].split(",")
        for sfDictDst, sDicName, sFilter in zip(l_sfDictDst, l_sDicName, l_sFilter):
        lSfDictDst = dVars['dic_filenames'].split(",")
        lDicName = dVars['dic_name'].split(",")
        lFilter = dVars['dic_filter'].split(",")
        for sfDictDst, sDicName, sFilter in zip(lSfDictDst, lDicName, lFilter):
            lex_build.build(spfLexSrc, dVars['lang'], dVars['lang_name'], sfDictDst, bJavaScript, sDicName, sFilter, dVars['stemming_method'], int(dVars['fsa_method']))
    else:
        if sType == "extended":
            spfLexSrc = dVars['lexicon_extended_src']
            sfDictDst = dVars['dic_extended_filename']
            sDicName = dVars['dic_extended_name']
        elif sType == "community":
            spfLexSrc = dVars['lexicon_community_src']
            sfDictDst = dVars['dic_community_filename']
            sDicName = dVars['dic_community_name']
        elif sType == "personal":
            spfLexSrc = dVars['lexicon_personal_src']
            sfDictDst = dVars['dic_personal_filename']
            sDicName = dVars['dic_personal_name']
        lex_build.build(spfLexSrc, dVars['lang'], dVars['lang_name'], sfDictDst, bJavaScript, sDicName, "", dVars['stemming_method'], int(dVars['fsa_method']))



def main ():
    "build Grammalecte with requested options"
    print("Python: " + sys.version)
    xParser = argparse.ArgumentParser()
    xParser.add_argument("lang", type=str, nargs='+', help="lang project to generate (name of folder in /lang)")
    xParser.add_argument("-b", "--build_data", help="launch build_data.py (part 1 and 2)", action="store_true")
    xParser.add_argument("-bb", "--build_data_before", help="launch build_data.py (only part 1: before dictionary building)", action="store_true")
    xParser.add_argument("-ba", "--build_data_after", help="launch build_data.py (only part 2: before dictionary building)", action="store_true")
    xParser.add_argument("-d", "--dict", help="generate FSA dictionary", action="store_true")
389
390
391
392
393
394
395
396

397
398
399
400

401
402
403
404


405
406
407
408
409
410
411
412
413
414


415
416
417
418
419
420
421
414
415
416
417
418
419
420

421
422
423
424

425
426
427


428
429
430
431
432
433
434
435
436
437


438
439
440
441
442
443
444
445
446







-
+



-
+


-
-
+
+








-
-
+
+







                xArgs.add_extended_dictionary = False
            if not dVars["lexicon_community_src"]:
                xArgs.add_community_dictionary = False
            if not dVars["lexicon_personal_src"]:
                xArgs.add_personal_dictionary = False

            # build data
            build_data_module = None
            databuild = None
            if xArgs.build_data_before or xArgs.build_data_after:
                # lang data
                try:
                    build_data_module = importlib.import_module("gc_lang."+sLang+".build_data")
                    databuild = importlib.import_module("gc_lang."+sLang+".build_data")
                except ImportError:
                    print("# Error. Couldn’t import file build_data.py in folder gc_lang/"+sLang)
            if build_data_module and xArgs.build_data_before:
                build_data_module.before('gc_lang/'+sLang, dVars, xArgs.javascript)
            if databuild and xArgs.build_data_before:
                databuild.before('gc_lang/'+sLang, dVars, xArgs.javascript)
            if xArgs.dict:
                buildDictionary(dVars, "main", xArgs.javascript)
                if xArgs.add_extended_dictionary:
                    buildDictionary(dVars, "extended", xArgs.javascript)
                if xArgs.add_community_dictionary:
                    buildDictionary(dVars, "community", xArgs.javascript)
                if xArgs.add_personal_dictionary:
                    buildDictionary(dVars, "personal", xArgs.javascript)
            if build_data_module and xArgs.build_data_after:
                build_data_module.after('gc_lang/'+sLang, dVars, xArgs.javascript)
            if databuild and xArgs.build_data_after:
                databuild.after('gc_lang/'+sLang, dVars, xArgs.javascript)

            # copy dictionaries from Graphspell
            copyGraphspellDictionaries(dVars, xArgs.javascript, xArgs.add_extended_dictionary, xArgs.add_community_dictionary, xArgs.add_personal_dictionary)

            # make
            sVersion = create(sLang, xConfig, xArgs.install, xArgs.javascript, )

432
433
434
435
436
437
438
439
440


441
442
443
444



445
446
447
448
449
450
451
457
458
459
460
461
462
463


464
465




466
467
468
469
470
471
472
473
474
475







-
-
+
+
-
-
-
-
+
+
+







                    if xArgs.tests:
                        xTestSuite = unittest.TestLoader().loadTestsFromModule(tests)
                        unittest.TextTestRunner().run(xTestSuite)
                    if xArgs.perf or xArgs.perf_memo:
                        hDst = open("./gc_lang/"+sLang+"/perf_memo.txt", "a", encoding="utf-8", newline="\n")  if xArgs.perf_memo  else None
                        tests.perf(sVersion, hDst)

            # Firefox
            if False:
            # Firefox (obsolete)
            #if False:
                # obsolete
                with helpers.cd("_build/xpi/"+sLang):
                    spfFirefox = dVars['win_fx_dev_path']  if platform.system() == "Windows"  else dVars['linux_fx_dev_path']
                    os.system('jpm run -b "' + spfFirefox + '"')
            #    with helpers.cd("_build/xpi/"+sLang):
            #        spfFirefox = dVars['win_fx_dev_path']  if platform.system() == "Windows"  else dVars['linux_fx_dev_path']
            #        os.system('jpm run -b "' + spfFirefox + '"')

            if xArgs.web_ext or xArgs.firefox:
                with helpers.cd("_build/webext/"+sLang):
                    if xArgs.lint_web_ext:
                        os.system(r'web-ext lint -o text')
                    if xArgs.firefox:
                        # Firefox Developper edition

Modified misc/grammalecte.sublime-syntax from [f7dfed6343] to [751faa3559].

22
23
24
25
26
27
28













29
30
31
32
33
34
35
36
37
38
39
40


41
42
43
44
45
46
47
48
49
50
51
52

53
54
55
56
57
58
59
60












61
62
63
64
65
66
67
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51


52
53
54
55
56
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92







+
+
+
+
+
+
+
+
+
+
+
+
+










-
-
+
+











-
+








+
+
+
+
+
+
+
+
+
+
+
+







    - match: '\b(-)?[0-9.]+\b'
      scope: constant.numeric

    # Bookmarks
    - match: '^!!.*|^\[\+\+\].*'
      scope: bookmark

    # Bookmarks
    - match: '^GRAPH_NAME:.*'
      scope: bookmark

    # Graph
    - match: '^@@@@GRAPH: *(\w+) .*$'
      scope: graphline
      captures:
        1: string.graphname

    - match: '^@@@@(?:END_GRAPH .*$| *)'
      scope: graphline

    # Keywords are if, else.
    # Note that blackslashes don't need to be escaped within single quoted
    # strings in YAML. When using single quoted strings, only single quotes
    # need to be escaped: this is done by using two single quotes next to each
    # other.
    - match: '\b(?:if|else|and|or|not|in)\b'
      scope: keyword.python

    - match: '\b(?:True|False|None)\b'
      scope: constant.language
    
    - match: '\b(?:spell|morph|morphex|stem|textarea0?\w*|before0?\w*|after0?\w*|word|option|define|select|exclude|analysex?|apposition|is[A-Z]\w+|rewriteSubject|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b'

    - match: '\b(?:spell|morph|morphex|morphVC|stem|value|space_after|textarea0?\w*|before0?\w*|after0?\w*|word|option|define|define_from|select|exclude|analyse\w+|tag_\w+|apposition|is[A-Z]\w+|rewriteSubject|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b'
      scope: entity.name.function

    - match: '\b(?:replace|endswith|startswith|search|upper|lower|capitalize|strip|rstrip|is(?:upper|lower|digit|title))\b'
      scope: support.function

    - match: '\becho\b'
      scope: support.function.debug

    - match: '\bre\b'
      scope: support.class

    # Rule options
    # Regex rule option
    - match: '^__[\[<]([isu])[\]>](/\w+|)(\(\w+\)|)(![0-9]|)__|</?js>'
      scope: rule.options
      captures:
        1: rule.casing
        2: rule.optionname
        3: rule.rulename
        4: rule.priority

    # Graph rules option
    - match: '^__(\w+)(![0-9]|)__'
      scope: rule.options
      captures:
        1: rule.rulename2
        2: rule.priority

    - match: '/(\w+)/'
      scope: rule.actionoption
      captures:
        1: rule.optionname

    # Definitions and options
    - match: '^OPT(?:GROUP|LANG|PRIORITY)/|^OPTSOFTWARE:'
      scope: options.command

    - match: '^OPT(?:LABEL|)/'
      scope: options.parameter

82
83
84
85
86
87
88
89

90
91
92
93

94
95
96
97
98
















































99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

114
115
116
117
118
119
120
107
108
109
110
111
112
113

114
115
116
117

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

186
187
188
189
190
191
192
193







-
+



-
+





+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+














-
+







    # rule delimiters
    - match: '<<-|>>>'
      scope: keyword.action
    - match: '__also__'
      scope: keyword.condition.green
    - match: '__else__'
      scope: keyword.condition.red
    - match: '-(\d*)>>'
    - match: '-(\d*\.?(?::\.?\d+|))>>'
      scope: keyword.error
      captures:
        1: keyword.error.group
    - match: '~(\d*)>>'
    - match: '~(\d*(?::\d+|))>>'
      scope: keyword.textprocessor
      captures:
        1: keyword.textprocessor.group
    - match: '=>>'
      scope: keyword.disambiguator
    - match: '/(\d*(?::\d+|))>>'
      scope: keyword.tag
      captures:
        1: keyword.tag.group
    - match: '%(\d*)>>'
      scope: keyword.tag
      captures:
        1: keyword.tag.group

    # Tokens
    - match: '(>)\w+'
      scope: string.lemma
      captures:
        1: keyword.valid

    - match: '(~)(?!(?:\d+(?::\d+|)|)>>)[^\s¬]*'
      scope: string.regex
      captures:
        1: keyword.valid

    - match: '(@)([^@\s¬]*)'
      scope: string.morph
      captures:
        1: keyword.valid
        2: string.morph.pattern

    - match: '(/)[\w-]+'
      scope: string.tag
      captures:
        1: keyword.valid

    - match: '(?<=[\[ |])([*])([^\s¬]+)'
      scope: string.morph
      captures:
        1: keyword.valid
        2: string.meta

    - match: '(¬)(\S+)'
      scope: string.morph
      captures:
        1: keyword.invalid
        2: string.morph.antipattern

    - match: '<(?:start|end)>'
      scope: string.token

    - match: '<>'
      scope: string.jumptoken

    # Escaped chars
    - match: '\\(?:\d+|w|d|b|n|s|t)'
      scope: constant.character.escape

    # URL
    - match: '\| ?https?://[\w./%?&=#+-]+'
      scope: string.other

    # Example errors
    - match: '{{.+?}}'
      scope: message.error

    # special chars
    - match: '[@=*^?!:+<>]'
    - match: '[@=*^?¿!:+<>~]'
      scope: keyword.other

    - match: '\(\?(?:[:=!]|<!)|[(|)]'
      scope: keyword.parenthesis

    - match: '\[|[]{}]'
      scope: keyword.brackets

Modified misc/grammalecte.tmTheme from [7305de87f8] to [a95cdb7606].

64
65
66
67
68
69
70















71
72
73
74
75
76
77
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







			<dict>
				<key>foreground</key>
				<string>#A0F0FF</string>
				<key>background</key>
				<string>#0050A0</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Graphline</string>
			<key>scope</key>
			<string>graphline</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(0, 100%, 80%)</string>
				<key>background</key>
				<string>hsl(0, 100%, 20%</string>
				<key>fontStyle</key>
				<string>bold</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String</string>
			<key>scope</key>
			<string>string</string>
			<key>settings</key>
			<dict>
231
232
233
234
235
236
237






























238
239
240
241
242
243
244
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







				<string>#F0F060</string>
				<key>background</key>
				<string>#602020</string>
				<key>fontStyle</key>
				<string>bold</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Keyword tag</string>
			<key>scope</key>
			<string>keyword.tag</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>#FF70FF</string>
				<key>background</key>
				<string>#602060</string>
				<key>fontStyle</key>
				<string>bold</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Keyword tag group</string>
			<key>scope</key>
			<string>keyword.tag.group</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>#F0B0F0</string>
				<key>background</key>
				<string>#602060</string>
				<key>fontStyle</key>
				<string>bold</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Keyword textprocessor</string>
			<key>scope</key>
			<string>keyword.textprocessor</string>
			<key>settings</key>
			<dict>
289
290
291
292
293
294
295































296
297
298
299
300
301
302
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>#A0A0A0</string>
			</dict>
		</dict>

		<dict>
			<key>name</key>
			<string>Keyword Valid</string>
			<key>scope</key>
			<string>keyword.valid</string>
			<key>settings</key>
			<dict>
				<key>fontStyle</key>
				<string>bold</string>
				<key>foreground</key>
				<string>hsl(150, 100%, 80%)</string>
				<key>background</key>
				<string>hsl(150, 100%, 20%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Keyword Invalid</string>
			<key>scope</key>
			<string>keyword.invalid</string>
			<key>settings</key>
			<dict>
				<key>fontStyle</key>
				<string>bold</string>
				<key>foreground</key>
				<string>hsl(0, 100%, 80%)</string>
				<key>background</key>
				<string>hsl(0, 100%, 20%)</string>
			</dict>
		</dict>

		<dict>
			<key>name</key>
			<string>Rule options</string>
			<key>scope</key>
			<string>rule.options</string>
			<key>settings</key>
			<dict>
316
317
318
319
320
321
322















323
324
325
326
327
328
329
330
331
332
333



334
335
336
337
338
339
340
341
342
343
344
345
346
347
348











349
350
351
352
353
354
355
356
357
358
359
360










































































































361
362
363
364
365
366
367
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423

424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463

464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+










-
+
+
+















+
+
+
+
+
+
+
+
+
+
+











-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







			<dict>
				<key>fontStyle</key>
				<string>bold</string>
				<key>foreground</key>
				<string>#30C0F0</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Rule action option</string>
			<key>scope</key>
			<string>rule.actionoption</string>
			<key>settings</key>
			<dict>
				<key>fontStyle</key>
				<string>bold</string>
				<key>foreground</key>
				<string>hsl(0, 50%, 50%)</string>
				<key>background</key>
				<string>hsl(330, 50%, 20%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Rule option name</string>
			<key>scope</key>
			<string>rule.optionname</string>
			<key>settings</key>
			<dict>
				<key>fontStyle</key>
				<string>bold</string>
				<key>foreground</key>
				<string>#90E010</string>
				<string>hsl(330, 80%, 80%)</string>
				<key>background</key>
				<string>hsl(330, 60%, 20%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Rule name</string>
			<key>scope</key>
			<string>rule.rulename</string>
			<key>settings</key>
			<dict>
				<key>fontStyle</key>
				<string>italic</string>
				<key>foreground</key>
				<string>#A0A0A0</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Rule name</string>
			<key>scope</key>
			<string>rule.rulename2</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>#F0D080</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>Rule priority</string>
			<key>scope</key>
			<string>rule.priority</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>#F06060</string>
			</dict>
		</dict>
		

		<dict>
			<key>name</key>
			<string>String meta</string>
			<key>scope</key>
			<string>string.meta</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(270, 100%, 90%)</string>
				<key>background</key>
				<string>hsl(270, 100%, 40%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String token</string>
			<key>scope</key>
			<string>string.token</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(240, 50%, 90%)</string>
				<key>background</key>
				<string>hsl(240, 50%, 40%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String Jumptoken</string>
			<key>scope</key>
			<string>string.jumptoken</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(0, 50%, 90%)</string>
				<key>background</key>
				<string>hsl(10, 50%, 40%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String lemma</string>
			<key>scope</key>
			<string>string.lemma</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(210, 100%, 80%)</string>
				<key>background</key>
				<string>hsl(210, 100%, 15%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String tag</string>
			<key>scope</key>
			<string>string.tag</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(30, 100%, 90%)</string>
				<key>background</key>
				<string>hsl(30, 100%, 20%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String regex</string>
			<key>scope</key>
			<string>string.regex</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(60, 100%, 80%)</string>
				<key>background</key>
				<string>hsl(60, 100%, 10%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String morph pattern</string>
			<key>scope</key>
			<string>string.morph.pattern</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(150, 80%, 90%)</string>
				<key>background</key>
				<string>hsl(150, 80%, 10%)</string>
			</dict>
		</dict>
		<dict>
			<key>name</key>
			<string>String morph antipattern</string>
			<key>scope</key>
			<string>string.morph.antipattern</string>
			<key>settings</key>
			<dict>
				<key>foreground</key>
				<string>hsl(0, 80%, 90%)</string>
				<key>background</key>
				<string>hsl(0, 80%, 10%)</string>
			</dict>
		</dict>


		<dict>
			<key>name</key>
			<string>JavaScript Dollar</string>
			<key>scope</key>
			<string>variable.other.dollar.only.js</string>
			<key>settings</key>