@tricoteuses/tisseuse 0.20.0 → 0.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +113 -0
  2. package/dist/{html-C07GdZ0O.js → html-tp0cMUmA.js} +4170 -3730
  3. package/dist/index.js +136 -135
  4. package/dist/{resolver-4v_fWVor.js → resolver-CzmDH4S3.js} +138 -130
  5. package/dist/server-f-legi.js +73 -92
  6. package/dist/server.js +831 -793
  7. package/dist/src/lib/extractors/action_directives_cpu.test.d.ts +1 -0
  8. package/dist/src/lib/extractors/links.citation_scope.test.d.ts +1 -0
  9. package/dist/src/lib/extractors/links.d.ts +3 -1
  10. package/dist/src/lib/extractors/portion_references_cpu.test.d.ts +1 -0
  11. package/dist/src/lib/extractors/references.d.ts +12 -8
  12. package/dist/src/lib/f_legi/resolver.d.ts +0 -2
  13. package/dist/src/lib/index.d.ts +2 -1
  14. package/dist/src/lib/legi/canutes_article_preload.test.d.ts +1 -0
  15. package/dist/src/lib/legi/canutes_candidates.test.d.ts +1 -0
  16. package/dist/src/lib/legi/canutes_resolver.d.ts +5 -4
  17. package/dist/src/lib/legi/canutes_resolver_cache.test.d.ts +1 -0
  18. package/dist/src/lib/legi/canutes_root_cid_index.integration.test.d.ts +1 -0
  19. package/dist/src/lib/legi/canutes_section_roots.test.d.ts +1 -0
  20. package/dist/src/lib/legi/canutes_sql.d.ts +4 -0
  21. package/dist/src/lib/legi/canutes_text_titles_cache.d.ts +24 -0
  22. package/dist/src/lib/legi/canutes_text_titles_cache.integration.test.d.ts +1 -0
  23. package/dist/src/lib/legi/canutes_titles_metrics.d.ts +13 -0
  24. package/dist/src/lib/legi/text_titles_infos.d.ts +1 -0
  25. package/dist/src/lib/linkers/html.d.ts +6 -4
  26. package/dist/src/lib/linkers/markdown.d.ts +5 -3
  27. package/dist/src/lib/linkers/reference-mode.test.d.ts +1 -0
  28. package/dist/src/lib/server/akn_rendering.test.d.ts +1 -0
  29. package/dist/src/lib/server/bill_action_resolver_invariance.test.d.ts +1 -0
  30. package/dist/src/lib/server/bill_action_target_fixtures.d.ts +7 -0
  31. package/dist/src/lib/server/bill_citation_anaphora.test.d.ts +1 -0
  32. package/dist/src/lib/server/bill_comparison.d.ts +42 -0
  33. package/dist/src/lib/server/bill_comparison.test.d.ts +1 -0
  34. package/dist/src/lib/server/bill_target_scope.test.d.ts +1 -0
  35. package/dist/src/lib/server/canutes_legacy_candidates.d.ts +19 -0
  36. package/dist/src/lib/server/canutes_only_compatibility.test.d.ts +1 -0
  37. package/dist/src/lib/server/databases/canutes_root_cid_index.d.ts +11 -0
  38. package/dist/src/lib/server/databases/canutes_text_titles_cache.d.ts +8 -0
  39. package/dist/src/lib/server/flegi_profiling.d.ts +14 -0
  40. package/dist/src/lib/server/flegi_profiling.test.d.ts +1 -0
  41. package/dist/src/lib/server/masquage-typesense.test.d.ts +1 -0
  42. package/dist/src/lib/server/masquage_typesense.d.ts +36 -0
  43. package/dist/src/lib/server/sql_profiling.d.ts +30 -0
  44. package/dist/src/lib/server/sql_profiling.test.d.ts +1 -0
  45. package/dist/src/lib/text_parsers/action_words.d.ts +2 -0
  46. package/dist/src/lib/text_parsers/action_words.test.d.ts +1 -0
  47. package/dist/src/lib/text_parsers/texts.d.ts +1 -0
  48. package/dist/src/scripts/compare_legi_bills.d.ts +1 -0
  49. package/dist/src/scripts/configure_postgres_legi_resolver.d.ts +1 -0
  50. package/dist/src/scripts/configure_postgres_root_cid_index.d.ts +1 -0
  51. package/dist/src/scripts/profile_canutes_bill.d.ts +1 -0
  52. package/dist/src/scripts/test_canutes_titles_cache.d.ts +1 -0
  53. package/dist/src/scripts/warm_canutes_text_titles_cache.d.ts +1 -0
  54. package/package.json +9 -1
package/dist/server.js CHANGED
@@ -1,11 +1,11 @@
1
- import { At as e, C as t, D as n, E as r, Ft as i, Ht as a, K as o, L as s, M as c, Mt as l, N as u, O as d, Q as f, S as p, Tt as m, U as h, Ut as g, W as _, b as v, c as y, ft as b, g as x, h as ee, j as S, jt as C, k as te, kt as ne, m as re, n as ie, nt as ae, ot as oe, p as se, s as ce, t as le, tt as ue, u as de, ut as fe, v as pe, w as me, x as he } from "./html-C07GdZ0O.js";
2
- import { A as ge, At as w, It as T, L as _e, Ot as E, P as ve, Pt as D, R as ye, dt as be, k as xe, kt as O, n as Se, o as Ce, r as we, rt as Te, t as Ee, vt as De, xt as k } from "./resolver-4v_fWVor.js";
3
- import * as Oe from "node:crypto";
4
- import { createHash as ke } from "node:crypto";
5
- import A from "fs-extra";
6
- import Ae from "node:path";
1
+ import { $ as e, At as t, C as n, D as r, E as i, Et as a, G as o, It as s, L as c, M as l, Mt as u, N as d, Nt as f, O as p, S as m, Ut as h, W as g, Wt as _, b as v, c as y, dt as b, g as x, h as ee, j as S, jt as te, k as ne, m as re, n as ie, nt as ae, p as C, pt as w, q as oe, rt as se, s as ce, st as le, t as ue, u as de, v as fe, w as pe, x as me } from "./html-tp0cMUmA.js";
2
+ import { A as he, At as T, F as ge, Ft as E, Lt as D, R as _e, St as O, d as ve, ft as ye, it as be, j as xe, jt as k, kt as A, n as Se, r as Ce, t as we, yt as Te, z as Ee } from "./resolver-CzmDH4S3.js";
3
+ import * as De from "node:crypto";
4
+ import { createHash as Oe } from "node:crypto";
5
+ import j from "fs-extra";
6
+ import ke from "node:path";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function je(e, t) {
8
+ function Ae(e, t) {
9
9
  let n = e;
10
10
  for (let e of t) {
11
11
  if (typeof n != "object" || !n) return null;
@@ -13,34 +13,34 @@ function je(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function Me(e) {
16
+ function je(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function Ne(e) {
20
- return Me(b(e).text());
19
+ function Me(e) {
20
+ return je(w(e).text());
21
21
  }
22
- function Pe(e) {
23
- let t = Me([
24
- je(e, [
22
+ function Ne(e) {
23
+ let t = je([
24
+ Ae(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- je(e, [
29
+ Ae(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- je(e, [
34
+ Ae(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => Ne(e)).join("\n")), n = je(e, [
39
+ ].filter((e) => e !== null).map((e) => Me(e)).join("\n")), n = Ae(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : Ne(n);
43
+ ]), r = n === null ? "" : Me(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function Pe(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Fe(e, t) {
55
- return ke("sha256").update(JSON.stringify({
54
+ function Pe(e, t) {
55
+ return Oe("sha256").update(JSON.stringify({
56
56
  item: e,
57
57
  metadata: t
58
58
  })).digest("hex");
59
59
  }
60
60
  //#endregion
61
61
  //#region src/lib/extractors/article_action_targets.ts
62
- function j(e) {
62
+ function M(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return j(e.reference);
65
- case "enumeration": return [...j(e.left), ...j(e.right)];
64
+ case "reference_et_action": return M(e.reference);
65
+ case "enumeration": return [...M(e.left), ...M(e.right)];
66
66
  case "parent-enfant": {
67
- let t = [...a(e.parent)].filter((e) => e.type === "article");
67
+ let t = [...h(e.parent)].filter((e) => e.type === "article");
68
68
  return t.length === 1 ? [{
69
69
  article: t[0],
70
70
  reference: e
71
- }] : t.length > 1 ? [] : j(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : M(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -89,11 +89,11 @@ function j(e) {
89
89
  }
90
90
  //#endregion
91
91
  //#region src/lib/extractors/article_action_effects.ts
92
- function Ie(e, t) {
92
+ function Fe(e, t) {
93
93
  if (t < 2) return null;
94
- let n = ge(e), r = x(e);
94
+ let n = xe(e), r = x(e);
95
95
  if (r.length !== t) return null;
96
- let i = s(new E(n.output)), a = (e) => ye(n, [e])[0].position;
96
+ let i = c(new A(n.output)), a = (e) => Ee(n, [e])[0].position;
97
97
  return r.map((t, n) => ({
98
98
  sourceText: e,
99
99
  referencePosition: a({
@@ -103,20 +103,20 @@ function Ie(e, t) {
103
103
  actionPosition: a(t.position)
104
104
  }));
105
105
  }
106
- function Le(e, t, n) {
106
+ function Ie(e, t, n) {
107
107
  if (t.length < 2) return null;
108
- let r = ge(e), i = r.output, a = (e) => ye(r, [e])[0].position, o = s(new E(i)), c = o.flatMap(j);
109
- if (c.length !== t.length || c.length < 2) return null;
110
- let l = he(i);
111
- if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
112
- let n = c[t];
113
- return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !oe(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
- }) ? null : c.map((r, i) => ({
108
+ let r = xe(e), i = r.output, a = (e) => Ee(r, [e])[0].position, o = c(new A(i)), s = o.flatMap(M);
109
+ if (s.length !== t.length || s.length < 2) return null;
110
+ let l = me(i);
111
+ if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== s.length || l.some((e, t) => {
112
+ let n = s[t];
113
+ return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !le(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
114
+ }) ? null : s.map((r, i) => ({
115
115
  targetId: t[i],
116
116
  directive: {
117
117
  ...n,
118
118
  reference: r.reference,
119
- portionSelectors: oe(r.reference),
119
+ portionSelectors: le(r.reference),
120
120
  tableTarget: {
121
121
  type: "table",
122
122
  rowIndex: l[i].rowIndex,
@@ -132,12 +132,12 @@ function Le(e, t, n) {
132
132
  }
133
133
  }
134
134
  }));
135
- let u = c.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
136
- if (u.length > 0 && u.length < c.length) {
137
- let n = c.filter((e) => !u.includes(e));
135
+ let u = s.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
136
+ if (u.length > 0 && u.length < s.length) {
137
+ let n = s.filter((e) => !u.includes(e));
138
138
  if (n.length !== 1) return null;
139
- let r = n[0], o = t[c.indexOf(r)], s = v(i);
140
- return !o || s.length !== 1 || s[0].kind === "compound" ? null : [{
139
+ let r = n[0], o = t[s.indexOf(r)], c = v(i);
140
+ return !o || c.length !== 1 || c[0].kind === "compound" ? null : [{
141
141
  targetId: o,
142
142
  sourceAnnotation: {
143
143
  sourceText: e,
@@ -148,7 +148,7 @@ function Le(e, t, n) {
148
148
  }
149
149
  },
150
150
  directive: {
151
- ...s[0],
151
+ ...c[0],
152
152
  reference: r.reference,
153
153
  sourcePosition: {
154
154
  start: 0,
@@ -161,12 +161,12 @@ function Le(e, t, n) {
161
161
  let d = [], f = 0;
162
162
  for (let e = 1; e < o.length; e += 1) {
163
163
  let t = o[e];
164
- t.type !== "reference_et_action" || j(t).length === 0 || o.slice(f, e).flatMap(j).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
164
+ t.type !== "reference_et_action" || M(t).length === 0 || o.slice(f, e).flatMap(M).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
165
165
  }
166
166
  d.push(o.length - 1);
167
167
  let p = [], m = 0, h = 0;
168
168
  for (let n of d) {
169
- let r = o.slice(m, n + 1).flatMap(j);
169
+ let r = o.slice(m, n + 1).flatMap(M);
170
170
  if (r.length === 0) {
171
171
  m = n + 1;
172
172
  continue;
@@ -195,7 +195,7 @@ function Le(e, t, n) {
195
195
  stop: i.length
196
196
  },
197
197
  reference: n.reference,
198
- portionSelectors: oe(n.reference)
198
+ portionSelectors: le(n.reference)
199
199
  }
200
200
  });
201
201
  }
@@ -205,29 +205,29 @@ function Le(e, t, n) {
205
205
  }
206
206
  //#endregion
207
207
  //#region src/lib/server/parsed_bills.ts
208
- var Re = /^expos[ée]\s+des\s+motifs\b/iu;
209
- function M(e) {
208
+ var Le = /^expos[ée]\s+des\s+motifs\b/iu;
209
+ function N(e) {
210
210
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
211
211
  }
212
- function N(e) {
213
- return M(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
212
+ function P(e) {
213
+ return N(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
214
214
  }
215
- function ze(e) {
216
- return ne(M(e));
215
+ function Re(e) {
216
+ return t(N(e));
217
217
  }
218
- function P(e) {
219
- return `_TocArt${ze(e).replace(/\s+/gu, "")}`;
218
+ function F(e) {
219
+ return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
220
220
  }
221
- function Be(e, t) {
221
+ function ze(e, t) {
222
222
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
223
223
  }
224
- function F(e) {
225
- return N(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
224
+ function I(e) {
225
+ return P(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
226
226
  }
227
- function Ve(e) {
228
- return F(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
227
+ function Be(e) {
228
+ return I(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
229
229
  }
230
- function He(e) {
230
+ function Ve(e) {
231
231
  switch (e.kind) {
232
232
  case "insert_after":
233
233
  case "insert_before": return e.insertText;
@@ -245,12 +245,12 @@ function He(e) {
245
245
  default: return;
246
246
  }
247
247
  }
248
- function Ue(t) {
249
- let n = M(t.sourceText), r = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(n);
250
- if (r?.[1] !== void 0) return e(r[1]);
248
+ function He(e) {
249
+ let t = N(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
250
+ if (n?.[1] !== void 0) return te(n[1]);
251
251
  }
252
- function We(e) {
253
- let t = He(e), n = m(t ?? "");
252
+ function Ue(e) {
253
+ let t = Ve(e), n = a(t ?? "");
254
254
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
255
255
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
256
256
  return {
@@ -258,64 +258,64 @@ function We(e) {
258
258
  text: o
259
259
  };
260
260
  });
261
- let r = Ue(e);
261
+ let r = He(e);
262
262
  return r === void 0 ? [] : [{
263
263
  num: r,
264
264
  text: t ?? e.sourceText
265
265
  }];
266
266
  }
267
- function Ge(e, t = /* @__PURE__ */ new Set()) {
267
+ function We(e, t = /* @__PURE__ */ new Set()) {
268
268
  if (e == null) return t;
269
269
  if (Array.isArray(e)) {
270
- for (let n of e) Ge(n, t);
270
+ for (let n of e) We(n, t);
271
271
  return t;
272
272
  }
273
273
  if (typeof e != "object") return t;
274
274
  let n = e;
275
275
  n.type === "article" && typeof n.num == "string" && t.add(n.num);
276
- for (let e of Object.values(n)) Ge(e, t);
276
+ for (let e of Object.values(n)) We(e, t);
277
277
  return t;
278
278
  }
279
- function Ke(e) {
279
+ function Ge(e) {
280
280
  if (typeof e != "object" || !e) return !1;
281
- if (Array.isArray(e)) return e.some(Ke);
281
+ if (Array.isArray(e)) return e.some(Ge);
282
282
  let t = e;
283
- return t.type === "bounded-interval" || Object.values(t).some(Ke);
283
+ return t.type === "bounded-interval" || Object.values(t).some(Ge);
284
284
  }
285
- function qe(e) {
286
- let t = N(e.sourceText);
285
+ function Ke(e) {
286
+ let t = P(e.sourceText);
287
287
  return /\b(?:cree|cree[e]?s?|resultant|issu|prevu|mentionne)\b[\s\S]{0,80}\b(?:present|presente|pjl|projet\s+de\s+loi)\b/u.test(t);
288
288
  }
289
- function Je(e) {
290
- return M(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
289
+ function qe(e) {
290
+ return N(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
291
291
  }
292
- function Ye(e, t) {
293
- let n = new E(e, t), r = Te(n);
292
+ function Je(e, t) {
293
+ let n = new A(e, t), r = be(n);
294
294
  return typeof r != "string" || n.offset <= t ? null : {
295
295
  date: r,
296
296
  start: t,
297
297
  stop: n.offset
298
298
  };
299
299
  }
300
- function Xe(e, t) {
300
+ function Ye(e, t) {
301
301
  let n = /\d/u.exec(e.slice(t));
302
302
  if (!n) return null;
303
303
  let r = t + n.index;
304
- return e.slice(t, r).trim().length > 0 ? null : Ye(e, r);
304
+ return e.slice(t, r).trim().length > 0 ? null : Je(e, r);
305
305
  }
306
- function Ze(e) {
306
+ function Xe(e) {
307
307
  let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
308
308
  for (; o !== -1;) {
309
309
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
310
310
  if (l) {
311
- let e = Xe(c, l[0].length);
311
+ let e = Ye(c, l[0].length);
312
312
  e && i.push(e.date);
313
313
  }
314
314
  let u = n.exec(c);
315
315
  if (u) {
316
316
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
317
317
  for (r.lastIndex = 0; r.exec(t) !== null;) {
318
- let e = Xe(t, r.lastIndex);
318
+ let e = Ye(t, r.lastIndex);
319
319
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
320
320
  }
321
321
  }
@@ -323,20 +323,20 @@ function Ze(e) {
323
323
  }
324
324
  return i;
325
325
  }
326
- function Qe(e) {
327
- let t = Ze(Je(e).toLowerCase()), n = Array.from(new Set(t));
326
+ function Ze(e) {
327
+ let t = Xe(qe(e).toLowerCase()), n = Array.from(new Set(t));
328
328
  return n.length === 1 ? n[0] : void 0;
329
329
  }
330
- function $e(e) {
331
- return N(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
330
+ function Qe(e) {
331
+ return P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
332
332
  }
333
- function I(e) {
333
+ function L(e) {
334
334
  return e?.type === "tag";
335
335
  }
336
- function et(e, t) {
336
+ function $e(e, t) {
337
337
  return e.html(t) ?? "";
338
338
  }
339
- function tt(e, t) {
339
+ function et(e, t) {
340
340
  let n = [], r = /* @__PURE__ */ new Set();
341
341
  for (let i of e(t).find("a").get()) {
342
342
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -344,49 +344,49 @@ function tt(e, t) {
344
344
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
345
345
  if (r.has(l)) continue;
346
346
  r.add(l);
347
- let u = M(e(i).text());
347
+ let u = N(e(i).text());
348
348
  n.push({
349
349
  id: c,
350
- ...nt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
350
+ ...tt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
351
351
  ...u ? { text: u } : {},
352
352
  type: s
353
353
  });
354
354
  }
355
355
  return n;
356
356
  }
357
- function nt(e, t, n) {
358
- let r = rt(e, t, n);
357
+ function tt(e, t, n) {
358
+ let r = nt(e, t, n);
359
359
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
360
360
  }
361
- function rt(e, t, n) {
361
+ function nt(e, t, n) {
362
362
  if (t === n) return "";
363
363
  if (t.type === "text") return t.data ?? "";
364
- if (!I(t)) return "";
364
+ if (!L(t)) return "";
365
365
  let r = "";
366
366
  for (let i of e(t).contents().get()) {
367
367
  if (i === n) return r;
368
- if (I(i) && e.contains(i, n)) return r + rt(e, i, n);
368
+ if (L(i) && e.contains(i, n)) return r + nt(e, i, n);
369
369
  r += e(i).text();
370
370
  }
371
371
  return r;
372
372
  }
373
- function it(e, t) {
374
- return t.map((t) => M(e(t).text())).filter(Boolean).join("\n");
373
+ function rt(e, t) {
374
+ return t.map((t) => N(e(t).text())).filter(Boolean).join("\n");
375
375
  }
376
- function at(e) {
377
- let t = N(e);
378
- return !t || Re.test(t) ? "noise" : d.test(e) ? "directive_candidate" : "context";
376
+ function it(e) {
377
+ let t = P(e);
378
+ return !t || Le.test(t) ? "noise" : p.test(e) ? "directive_candidate" : "context";
379
379
  }
380
- function ot(e, t) {
381
- return t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(M(e(t).text()));
380
+ function at(e, t) {
381
+ return t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(N(e(t).text()));
382
382
  }
383
- function st(e) {
384
- let t = b(e, { xml: {
383
+ function ot(e) {
384
+ let t = w(e, { xml: {
385
385
  xmlMode: !1,
386
386
  withStartIndices: !0,
387
387
  withEndIndices: !0
388
388
  } });
389
- return t("p").get().filter((e) => ot(t, e)).map((e) => {
389
+ return t("p").get().filter((e) => at(t, e)).map((e) => {
390
390
  if (e.startIndex === null || e.endIndex === null) throw Error("Missing source positions for an Assembly pastille");
391
391
  return {
392
392
  start: e.startIndex,
@@ -394,10 +394,10 @@ function st(e) {
394
394
  };
395
395
  });
396
396
  }
397
- async function ct(e, t, n, r) {
397
+ async function st(e, t, n, r) {
398
398
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
399
399
  if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
400
- let i = t.legiResolver ?? new se(t.canutesDb), { output: a } = await ie({
400
+ let i = t.legiResolver ?? new C(t.canutesDb), { output: a } = await ie({
401
401
  date: n,
402
402
  excludedHtmlRanges: r,
403
403
  html: e,
@@ -411,16 +411,16 @@ async function ct(e, t, n, r) {
411
411
  });
412
412
  return a ?? e;
413
413
  }
414
- function lt(e, t) {
414
+ function ct(e, t) {
415
415
  let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
416
- return I(r) && I(n) && e(n).parents("table").get(0) === r ? r : I(n) ? n : t;
416
+ return L(r) && L(n) && e(n).parents("table").get(0) === r ? r : L(n) ? n : t;
417
417
  }
418
- function ut(e, t, n, r, i) {
418
+ function lt(e, t, n, r, i) {
419
419
  if (n.has(i.container)) return;
420
- let a = i.id ?? P(i.num ?? i.label);
420
+ let a = i.id ?? F(i.num ?? i.label);
421
421
  if (r.has(a)) return;
422
422
  r.add(a), n.add(i.container);
423
- let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = I(o) ? dt(e, o) : null, c = s ? e(o).text() : "", l = I(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => N(e) === N(c)) ? {
423
+ let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = L(o) ? dt(e, o) : null, c = s ? e(o).text() : "", l = L(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => P(e) === P(c)) ? {
424
424
  element: o,
425
425
  text: `${s.label}\n${s.title}`
426
426
  } : void 0;
@@ -434,7 +434,7 @@ function ut(e, t, n, r, i) {
434
434
  splitAtBreak: l
435
435
  });
436
436
  }
437
- function L(e) {
437
+ function ut(e) {
438
438
  let t = /* @__PURE__ */ new Map();
439
439
  return e("body *").each((e, n) => {
440
440
  t.set(n, e);
@@ -447,11 +447,11 @@ function dt(e, t) {
447
447
  if (!e(t).hasClass("assnat9ArticleNum") && !pt(e, t) || e(t).find("br").length !== 1) return null;
448
448
  let n = "", r = "", i = !1, a = (e) => {
449
449
  if (e.type === "text") i ? r += e.data : n += e.data;
450
- else if (I(e)) if (e.tagName.toLowerCase() === "br") i = !0;
450
+ else if (L(e)) if (e.tagName.toLowerCase() === "br") i = !0;
451
451
  else for (let t of e.children) a(t);
452
452
  };
453
453
  a(t);
454
- let o = C(M(n)), s = M(r);
454
+ let o = u(N(n)), s = N(r);
455
455
  return o && !o.title && s ? {
456
456
  ...o,
457
457
  title: s
@@ -460,30 +460,30 @@ function dt(e, t) {
460
460
  function ft(e) {
461
461
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
462
462
  e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
463
- if (Be(e, a)) return;
464
- let o = M(e(a).text()), s = e(a).attr("id");
463
+ if (ze(e, a)) return;
464
+ let o = N(e(a).text()), s = e(a).attr("id");
465
465
  if (!s || r.has(s)) return;
466
- let c = lt(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = C(o) ?? (I(l) && (a === l || e(a).find("br").length === 1) ? dt(e, l) : null);
467
- u && ut(e, t, n, r, {
466
+ let c = ct(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), d = u(o) ?? (L(l) && (a === l || e(a).find("br").length === 1) ? dt(e, l) : null);
467
+ d && lt(e, t, n, r, {
468
468
  id: s,
469
- ...u,
469
+ ...d,
470
470
  element: a,
471
471
  container: c
472
472
  });
473
473
  }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
474
474
  if (n.has(a)) return;
475
- let o = C(M(e(a).text())) ?? dt(e, a);
476
- o && ut(e, t, n, r, {
475
+ let o = u(N(e(a).text())) ?? dt(e, a);
476
+ o && lt(e, t, n, r, {
477
477
  ...o,
478
478
  element: a,
479
479
  container: a
480
480
  });
481
481
  });
482
- let i = L(e);
482
+ let i = ut(e);
483
483
  return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
484
484
  }
485
485
  function pt(e, t) {
486
- if (Be(e, t)) return !1;
486
+ if (ze(e, t)) return !1;
487
487
  let n = t.tagName?.toLowerCase();
488
488
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
489
489
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
@@ -492,9 +492,9 @@ function pt(e, t) {
492
492
  function mt(e) {
493
493
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
494
494
  return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
495
- if (Be(e, a) || !e(a).hasClass("assnat9ArticleNum") && !pt(e, a)) return;
496
- let o = C(e(a).text()) ?? dt(e, a);
497
- o && ut(e, t, n, r, {
495
+ if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !pt(e, a)) return;
496
+ let o = u(e(a).text()) ?? dt(e, a);
497
+ o && lt(e, t, n, r, {
498
498
  ...o,
499
499
  element: a,
500
500
  container: a
@@ -502,7 +502,7 @@ function mt(e) {
502
502
  }), t;
503
503
  }
504
504
  function ht(e) {
505
- let t = ze(e ?? "").replace(/[()]/gu, "").trim();
505
+ let t = Re(e ?? "").replace(/[()]/gu, "").trim();
506
506
  if (!t || t.toLowerCase() === "liminaire") return;
507
507
  if (t.toLowerCase() === "unique") return {
508
508
  base: 1,
@@ -529,7 +529,7 @@ function gt(e, t) {
529
529
  return 0;
530
530
  }
531
531
  function _t(e) {
532
- let t = new E(e), n = be(t);
532
+ let t = new A(e), n = ye(t);
533
533
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
534
534
  }
535
535
  function vt(e) {
@@ -580,10 +580,10 @@ function yt(e) {
580
580
  function bt(e, { warn: t = !0 } = {}) {
581
581
  let n = ft(e), r = mt(e);
582
582
  if (n.length === 0) return t && yt(r), r;
583
- let i = L(e), a = (e, t) => {
584
- let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => P(e.num ?? e.label)));
583
+ let i = ut(e), a = (e, t) => {
584
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => F(e.num ?? e.label)));
585
585
  for (let i of t) {
586
- let t = P(i.num ?? i.label);
586
+ let t = F(i.num ?? i.label);
587
587
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
588
588
  }
589
589
  return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
@@ -593,7 +593,7 @@ function bt(e, { warn: t = !0 } = {}) {
593
593
  function xt(e) {
594
594
  let t = e.next;
595
595
  for (; t !== null;) {
596
- if (I(t)) return t;
596
+ if (L(t)) return t;
597
597
  t = t.next;
598
598
  }
599
599
  return null;
@@ -604,17 +604,17 @@ function St(e, t, n) {
604
604
  let i = r.parent(), a = i.parent();
605
605
  if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
606
606
  let o = a.children().get();
607
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || M(e(o[1]).text()) !== "") return;
607
+ if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || N(e(o[1]).text()) !== "") return;
608
608
  let s = o.length === 4 ? o[2] : void 0;
609
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(M(e(s).text())))) return;
609
+ if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(N(e(s).text())))) return;
610
610
  let c = o.at(-1);
611
- if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => C(e(t).text()) !== null))) return [
611
+ if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => u(e(t).text()) !== null))) return [
612
612
  t.container,
613
613
  ...s === void 0 ? [] : [s],
614
614
  c
615
615
  ];
616
616
  }
617
- function Ct(e, t, n, r = L(e)) {
617
+ function Ct(e, t, n, r = ut(e)) {
618
618
  let i = [t.container], a = n?.container;
619
619
  for (let e = xt(t.container); e !== null && e !== a; e = xt(e)) i.push(e);
620
620
  if (i.length > 1) return i;
@@ -630,24 +630,24 @@ function wt(e, t) {
630
630
  let n = [], r = /* @__PURE__ */ new Set();
631
631
  for (let i of t) {
632
632
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
633
- for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || ot(e, t) || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
633
+ for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || at(e, t) || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
634
634
  }
635
635
  return n;
636
636
  }
637
637
  function Tt(e, t, n, r) {
638
638
  let i = [], a = !1;
639
639
  for (let o of wt(e, n)) {
640
- let n = e(o).is("table.akn-quoted-table") ? _n(e, o) : M(e(o).text());
640
+ let n = e(o).is("table.akn-quoted-table") ? bn(e, o) : N(e(o).text());
641
641
  if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
642
- Re.test(n) && (a = !0);
643
- let s = a ? "noise" : at(n), c = `${t}-b${i.length + 1}`;
642
+ Le.test(n) && (a = !0);
643
+ let s = a ? "noise" : it(n), c = `${t}-b${i.length + 1}`;
644
644
  e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
645
645
  id: c,
646
646
  articleId: t,
647
647
  kind: s,
648
- links: tt(e, o),
648
+ links: et(e, o),
649
649
  text: n,
650
- html: et(e, o)
650
+ html: $e(e, o)
651
651
  });
652
652
  }
653
653
  return i;
@@ -658,34 +658,34 @@ function Et(e, t) {
658
658
  return e.includes("class=\"assnatSection3\"") ? e.replace(/(<div class="assnatSection3">)/u, `${n}$1`) : e.includes("id=\"formCorrection:panel:1:table\"") ? e.replace(/(<div id="formCorrection:panel:1:table">)/u, `${n}$1`) : `${n}\n${e}`;
659
659
  }
660
660
  function Dt(e) {
661
- let t = b(e), n = Ot(t);
661
+ let t = w(e), n = Ot(t);
662
662
  for (let e of bt(t, { warn: !1 })) {
663
- let r = P(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
663
+ let r = F(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
664
664
  if (a !== r) {
665
- if (a?.startsWith("_Toc") && !At(n, a, e.element)) {
665
+ if (a?.startsWith("_Toc") && !jt(n, a, e.element)) {
666
666
  let e = t("<span></span>").attr("id", a);
667
667
  i.before(e);
668
668
  let r = e.get(0);
669
- I(r) && z(n, a, r);
669
+ L(r) && kt(n, a, r);
670
670
  }
671
- a && kt(n, a, e.element), i.attr("id", r), z(n, r, e.element);
671
+ a && At(n, a, e.element), i.attr("id", r), kt(n, r, e.element);
672
672
  }
673
673
  }
674
- let r = bt(t), i = L(t);
674
+ let r = bt(t), i = ut(t);
675
675
  for (let [e, a] of r.entries()) {
676
676
  let o = Ct(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
677
677
  for (let e of o) {
678
678
  let r = t(e).attr("data-alinea")?.trim();
679
679
  if (!r) continue;
680
680
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
681
- if (At(n, i, e)) continue;
681
+ if (jt(n, i, e)) continue;
682
682
  let o = t(e).attr("id");
683
683
  if (o && o !== i) {
684
684
  let r = t("<span></span>").attr("id", i);
685
685
  t(e).before(r);
686
686
  let a = r.get(0);
687
- I(a) && z(n, i, a);
688
- } else o && kt(n, o, e), t(e).attr("id", i), z(n, i, e);
687
+ L(a) && kt(n, i, a);
688
+ } else o && At(n, o, e), t(e).attr("id", i), kt(n, i, e);
689
689
  }
690
690
  }
691
691
  return t.html();
@@ -694,37 +694,75 @@ function Ot(e) {
694
694
  let t = /* @__PURE__ */ new Map();
695
695
  for (let n of e("[id]").get()) {
696
696
  let r = e(n).attr("id");
697
- r && z(t, r, n);
697
+ r && kt(t, r, n);
698
698
  }
699
699
  return t;
700
700
  }
701
- function z(e, t, n) {
701
+ function kt(e, t, n) {
702
702
  let r = e.get(t);
703
703
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
704
704
  }
705
- function kt(e, t, n) {
705
+ function At(e, t, n) {
706
706
  let r = e.get(t);
707
707
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
708
708
  }
709
- function At(e, t, n) {
709
+ function jt(e, t, n) {
710
710
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
711
711
  return !1;
712
712
  }
713
- function jt(e, t) {
714
- let n = $e("sourceText" in t ? t.sourceText : "");
713
+ function Mt(e, t) {
714
+ let n = Qe("sourceText" in t ? t.sourceText : "");
715
715
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
716
- let t = $e(e.text);
716
+ let t = Qe(e.text);
717
717
  return t.length > 0 && (n.includes(t) || t.includes(n));
718
718
  });
719
719
  }
720
- function Mt(e, t) {
720
+ function Nt(e, t) {
721
721
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
722
722
  }
723
- function Nt(e) {
723
+ function Pt(e) {
724
724
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
725
725
  }
726
- function Pt(e) {
727
- let t = h(e.text);
726
+ function Ft(e) {
727
+ if (e.kind === "noise") return !1;
728
+ let t = P(e.text.split("«", 1)[0]).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), n = /^(?:(?:\d+°|[ivxlcdm]+[.)]|[a-z][.)])\s*)?(?:est|sont)\s+(?:ainsi\s+)?(?:abroge|modifie|complete|supprime|remplace|retabli)\w*\b/u.test(t) ? t : t.split(/\b(?:est|sont|il|elle|ils|elles)\b/iu, 1)[0];
729
+ return /(?:\b(?:articles?|livres?|titres?|sous[- ]?titres?|chapitres?|sections?|sous[- ]?sections?|parties?|paragraphes?|sous[- ]?paragraphes?|annexes?|etats?)\s+(?:[lrda]\s*\.?\s*-?\s*\d|\d|[ivxlcdm]+(?:er|re)?(?=\s|$|[.,;:])|(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\b)|\b(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\s+(?:article|livre|titre|chapitre|section|sous[- ]?section|partie|paragraphe)\b|\b(?:annexes?|etats?)\s+[a-z](?:\s|$))/iu.test(n);
730
+ }
731
+ function It(e, t) {
732
+ if (!t || t.articleId !== e.articleId || !/\br[ée]sultent\s+du\s+\d+°/iu.test(e.text)) return;
733
+ let n = (e) => P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), r = n(e.text).replace(/«[^»]*»/gu, "");
734
+ if (/[«»]/u.test(r)) return;
735
+ let i = /\btels? qu['’]ils resultent du (\d+)°/u.exec(r);
736
+ if (!i || c(new A(r)).some((e) => [...h(e)].some((e) => e.type === "texte" && e.relative === void 0))) return;
737
+ let a = n(t.text);
738
+ if (/^\s*(\d+)°/u.exec(P(t.text))?.[1] !== i[1]) return;
739
+ let o = /\bles articles (.+?) deviennent respectivement les articles ([^;]+);?\s*$/u.exec(a);
740
+ if (!o) return;
741
+ let s = (e) => te(e.trim().replace(/^[lrda](?=[.\s\d])/u, (e) => e.toUpperCase())), l = (e) => {
742
+ let t = e.trim().split(/,\s*|\s+et\s+/u);
743
+ if (t.length === 0 || t.length > 64) return;
744
+ let n = t.map(s);
745
+ if (n.some((e) => e === void 0)) return;
746
+ let r = n;
747
+ return new Set(r).size === r.length ? r : void 0;
748
+ }, u = l(o[1]), d = l(o[2].replace(/;\s*$/u, ""));
749
+ if (!u || !d || u.length !== d.length) return;
750
+ let f = /* @__PURE__ */ new Map();
751
+ for (let e = 0; e < u.length; e++) {
752
+ let r = t.links.filter((t) => t.type === "article" && !t.insideFrenchQuotes && s(n(t.text ?? "")) === u[e]), i = [...new Set(r.map((e) => e.id))];
753
+ if (i.length !== 1 || !i[0]) return;
754
+ f.set(d[e], i[0]);
755
+ }
756
+ let p = [];
757
+ for (let e of r.matchAll(/\baux articles (.+?)(?=,?\s+tels? qu|,\s*la reference|;|$)/gu)) {
758
+ let t = l(e[1]);
759
+ if (!t) return;
760
+ p.push(...t);
761
+ }
762
+ if (!(p.length === 0 || p.some((e) => !f.has(e)))) return [...new Set(p.map((e) => f.get(e)))];
763
+ }
764
+ function Lt(e) {
765
+ let t = g(e.text);
728
766
  if (t.length !== 1) return;
729
767
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
730
768
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -738,13 +776,13 @@ function Pt(e) {
738
776
  modifyingArticleLabel: i.text ?? ""
739
777
  };
740
778
  }
741
- function Ft(e, t) {
742
- let n = M(e);
779
+ function Rt(e, t) {
780
+ let n = N(e);
743
781
  if (!n) return;
744
- let r = fe(n);
782
+ let r = b(n);
745
783
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
746
784
  }
747
- function It(e) {
785
+ function zt(e) {
748
786
  let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
749
787
  for (let [a, o] of e.entries()) {
750
788
  let e = r.get(a);
@@ -752,7 +790,7 @@ function It(e) {
752
790
  t.set(o.id, [...n.map((e) => e.block), o]);
753
791
  continue;
754
792
  }
755
- let s = Ft(o.text, n.at(-1)?.level);
793
+ let s = Rt(o.text, n.at(-1)?.level);
756
794
  if (s === void 0) {
757
795
  t.set(o.id, [...n.map((e) => e.block), o]);
758
796
  continue;
@@ -765,14 +803,14 @@ function It(e) {
765
803
  }
766
804
  return t;
767
805
  }
768
- function Lt(e, t) {
806
+ function Bt(e, t) {
769
807
  let n = [], r = /* @__PURE__ */ new Set();
770
808
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
771
809
  return n;
772
810
  }
773
- function Rt(e, t, n) {
811
+ function Vt(e, t, n) {
774
812
  if (!t) return;
775
- let r = Lt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
813
+ let r = Bt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
776
814
  if (r.length === 0) return;
777
815
  let i = r.map((e) => e.id);
778
816
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -787,7 +825,7 @@ function Rt(e, t, n) {
787
825
  }
788
826
  };
789
827
  }
790
- function zt(e) {
828
+ function Ht(e) {
791
829
  let t = [], n = 0;
792
830
  for (let r of e.blocks) {
793
831
  let i = e.directiveText.indexOf(r.text, n);
@@ -801,7 +839,7 @@ function zt(e) {
801
839
  }
802
840
  return t;
803
841
  }
804
- function Bt(e, t, n) {
842
+ function Ut(e, t, n) {
805
843
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
806
844
  if (a.length === 0) return;
807
845
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -815,7 +853,7 @@ function Bt(e, t, n) {
815
853
  }
816
854
  };
817
855
  }
818
- function Vt(e, t, n) {
856
+ function Wt(e, t, n) {
819
857
  if (!t) return;
820
858
  let r = e.directiveText.indexOf(t.text);
821
859
  if (r === -1) return;
@@ -828,29 +866,29 @@ function Vt(e, t, n) {
828
866
  stop: a
829
867
  };
830
868
  }
831
- function Ht(e, t, n) {
869
+ function Gt(e, t, n) {
832
870
  for (let r of [...t.get(e.id) ?? [e]].reverse()) {
833
871
  let e = n.get(r.id);
834
872
  if (!n.has(r.id)) {
835
- let t = r.links.filter((e) => e.type === "text" && !e.insideFrenchQuotes), i = t.length > 0 ? _(r.text) : [], a = [], o = !1;
873
+ let t = r.links.filter((e) => e.type === "text" && !e.insideFrenchQuotes), i = t.length > 0 ? o(r.text) : [], a = [], s = !1;
836
874
  for (let e of t) {
837
875
  let t = e.text, n = t ? r.text.indexOf(t) : -1;
838
876
  if (n < 0 || r.text.indexOf(t, n + 1) !== -1) {
839
- o = !0;
877
+ s = !0;
840
878
  break;
841
879
  }
842
880
  i.some((e) => n <= e.start && e.stop <= n + t.length) || a.push(e.id);
843
881
  }
844
- e = o ? void 0 : [...new Set(a)], n.set(r.id, e);
882
+ e = s ? void 0 : [...new Set(a)], n.set(r.id, e);
845
883
  }
846
884
  if (e === void 0 || e.length > 1) return;
847
885
  if (e.length === 1) return e[0];
848
886
  }
849
887
  }
850
- function B(e, t) {
851
- return `${e}\0${F(t)}`;
888
+ function z(e, t) {
889
+ return `${e}\0${I(t)}`;
852
890
  }
853
- function Ut(e) {
891
+ function Kt(e) {
854
892
  let t = new Map(e.map((e) => [e.id, e])), n = /* @__PURE__ */ new Map();
855
893
  return (e, r) => {
856
894
  if (r === void 0) return;
@@ -860,57 +898,57 @@ function Ut(e) {
860
898
  if (r === void 0) return;
861
899
  i = {
862
900
  blockById: new Map(r.blocks.map((e) => [e.id, e])),
863
- contextByBlockId: It(r.blocks),
901
+ contextByBlockId: zt(r.blocks),
864
902
  textIdsByBlockId: /* @__PURE__ */ new Map()
865
903
  }, n.set(e, i);
866
904
  }
867
905
  let a = i.blockById.get(r);
868
- return a === void 0 ? void 0 : Ht(a, i.contextByBlockId, i.textIdsByBlockId);
906
+ return a === void 0 ? void 0 : Gt(a, i.contextByBlockId, i.textIdsByBlockId);
869
907
  };
870
908
  }
871
- function Wt(e, t, n, r, i) {
872
- let o = /* @__PURE__ */ new Map(), c = new Set(e.blocks.flatMap((e) => {
909
+ function qt(e, t, n, r, i) {
910
+ let o = /* @__PURE__ */ new Map(), s = new Set(e.blocks.flatMap((e) => {
873
911
  if (!e.text.includes("Art.")) return [];
874
- let t = Ht(e, i, o);
875
- return t === void 0 ? [] : m(ge(e.text).output).map(({ num: e }) => B(t, e));
912
+ let t = Gt(e, i, o);
913
+ return t === void 0 ? [] : a(xe(e.text).output).map(({ num: e }) => z(t, e));
876
914
  }));
877
- if (c.size === 0) return /* @__PURE__ */ new Map();
878
- let l = new Set([...c].map((e) => e.slice(e.indexOf("\0") + 1))), u = t.flatMap((t) => {
879
- if (Ke(t.reference)) return [];
880
- let s = new Set([...a(t.reference)].filter((e) => e.type === "article" && e.num).map((e) => e.num));
881
- if (![...s].some((e) => l.has(F(e)))) return [];
882
- let c = Mt(n, Bt(e, r, t)) ?? jt(e.blocks, t);
883
- if (!c) return [];
884
- let u = Ht(c, i, o);
885
- return u === void 0 ? [] : [{
886
- block: c,
915
+ if (s.size === 0) return /* @__PURE__ */ new Map();
916
+ let l = new Set([...s].map((e) => e.slice(e.indexOf("\0") + 1))), u = t.flatMap((t) => {
917
+ if (Ge(t.reference)) return [];
918
+ let a = new Set([...h(t.reference)].filter((e) => e.type === "article" && e.num).map((e) => e.num));
919
+ if (![...a].some((e) => l.has(I(e)))) return [];
920
+ let s = Nt(n, Ut(e, r, t)) ?? Mt(e.blocks, t);
921
+ if (!s) return [];
922
+ let c = Gt(s, i, o);
923
+ return c === void 0 ? [] : [{
924
+ block: s,
887
925
  directive: t,
888
- nums: s,
889
- textId: u
926
+ nums: a,
927
+ textId: c
890
928
  }];
891
929
  });
892
930
  if (u.length === 0) return /* @__PURE__ */ new Map();
893
- let d = new Set(u.flatMap(({ nums: e, textId: t }) => [...e].map((e) => B(t, e))));
894
- if (![...d].some((e) => c.has(e))) return /* @__PURE__ */ new Map();
931
+ let d = new Set(u.flatMap(({ nums: e, textId: t }) => [...e].map((e) => z(t, e))));
932
+ if (![...d].some((e) => s.has(e))) return /* @__PURE__ */ new Map();
895
933
  let f = new Set(t.flatMap((t) => {
896
- let a = We(t);
934
+ let a = Ue(t);
897
935
  if (a.length === 0) return [];
898
- let s = Mt(n, Bt(e, r, t)) ?? jt(e.blocks, t);
936
+ let s = Nt(n, Ut(e, r, t)) ?? Mt(e.blocks, t);
899
937
  if (!s) return [];
900
- let c = Ht(s, i, o);
901
- return c === void 0 ? [] : a.map(({ num: e }) => B(c, e)).filter((e) => d.has(e));
938
+ let c = Gt(s, i, o);
939
+ return c === void 0 ? [] : a.map(({ num: e }) => z(c, e)).filter((e) => d.has(e));
902
940
  })), p = /* @__PURE__ */ new Map();
903
941
  for (let { block: e, directive: t, nums: n, textId: r } of u) {
904
- if (![...n].some((e) => c.has(B(r, e)))) continue;
905
- let i = new Set(s(new E(ge(t.sourceText).output)).flatMap((e) => [...a(e)].filter((e) => e.type === "article" && e.num).map((e) => e.num))), o = [...n].filter((e) => c.has(B(r, e)) && !f.has(B(r, e)) && [...i].some((t) => F(t) === F(e)));
906
- o.length > 0 && p.set(e.id, [...new Set([...p.get(e.id) ?? [], ...o])]);
942
+ if (![...n].some((e) => s.has(z(r, e)))) continue;
943
+ let i = new Set(c(new A(xe(t.sourceText).output)).flatMap((e) => [...h(e)].filter((e) => e.type === "article" && e.num).map((e) => e.num))), a = [...n].filter((e) => s.has(z(r, e)) && !f.has(z(r, e)) && [...i].some((t) => I(t) === I(e)));
944
+ a.length > 0 && p.set(e.id, [...new Set([...p.get(e.id) ?? [], ...a])]);
907
945
  }
908
946
  return p;
909
947
  }
910
- function Gt(e, t) {
911
- let n = performance.now(), r = performance.now(), i = zt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = It(e.blocks);
912
- for (let t of e.blocks) t.qualifiedVersion = Pt(t);
913
- let l = performance.now() - o, u = performance.now(), d = ee(), f = e.blocks[0], p = e.title !== void 0 && f?.text.startsWith(`${e.label}\n`) && (e.directiveText === f.text || e.directiveText.startsWith(`${f.text}\n`)), m = p && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", h = pe(p ? `${e.label}${m}${e.title}${e.directiveText.slice(f.text.length)}` : e.directiveText, t === void 0 ? void 0 : d);
948
+ function Jt(e, t) {
949
+ let n = performance.now(), r = performance.now(), i = Ht(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = zt(e.blocks);
950
+ for (let t of e.blocks) t.qualifiedVersion = Lt(t);
951
+ let l = performance.now() - o, u = performance.now(), d = ee(), f = e.blocks[0], p = e.title !== void 0 && f?.text.startsWith(`${e.label}\n`) && (e.directiveText === f.text || e.directiveText.startsWith(`${f.text}\n`)), m = p && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", h = fe(p ? `${e.label}${m}${e.title}${e.directiveText.slice(f.text.length)}` : e.directiveText, t === void 0 ? void 0 : d);
914
952
  if (p && !m) {
915
953
  let t = e.label.length;
916
954
  h = h.map((e) => ({
@@ -921,14 +959,14 @@ function Gt(e, t) {
921
959
  }
922
960
  }));
923
961
  }
924
- let g = performance.now() - u, _ = performance.now(), v = Wt(e, h, s, i, c), y = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = [], S;
962
+ let g = performance.now() - u, _ = performance.now(), v = qt(e, h, s, i, c), y = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = [], S, te;
925
963
  for (let t of e.blocks) {
926
- let e = Nt(t);
927
- (e.length > 0 || t.qualifiedVersion || v.has(t.id)) && (x = v.has(t.id) ? [] : e, S = t.qualifiedVersion), y.set(t.id, x), b.set(t.id, S);
964
+ let e = Pt(t), n = e.length === 0 ? It(t, te) : void 0;
965
+ (e.length > 0 || n !== void 0 || t.qualifiedVersion || v.has(t.id) || Ft(t)) && (x = v.has(t.id) ? [] : n ?? e, S = t.qualifiedVersion), y.set(t.id, x), b.set(t.id, S), te = t;
928
966
  }
929
967
  l += performance.now() - _;
930
- let C = performance.now(), te = h.map((t) => {
931
- let n = Bt(e, i, t), r = Mt(s, n) ?? jt(e.blocks, t), a = Nt(r), o = r?.id !== void 0 && v.has(r.id) ? [] : a.length > 0 ? a : r?.id === void 0 ? [] : y.get(r.id) ?? [], l = Vt(e, r, t), u = Rt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
968
+ let ne = performance.now(), re = h.map((t) => {
969
+ let n = Ut(e, i, t), r = Nt(s, n) ?? Mt(e.blocks, t), a = Pt(r), o = r?.id !== void 0 && v.has(r.id) ? [] : a.length > 0 ? a : r?.id === void 0 ? [] : y.get(r.id) ?? [], l = Wt(e, r, t), u = Vt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
932
970
  return {
933
971
  articleId: e.id,
934
972
  blockId: r?.id,
@@ -948,19 +986,19 @@ function Gt(e, t) {
948
986
  ...o.length > 0 || r?.id !== void 0 && v.has(r.id) ? { targetIds: o } : {},
949
987
  ...r?.id !== void 0 && b.get(r.id) ? { qualifiedVersion: b.get(r.id) } : {}
950
988
  };
951
- }), ne = /* @__PURE__ */ new Set(), re = /* @__PURE__ */ new Map(), ie = te.flatMap((e) => {
989
+ }), ie = /* @__PURE__ */ new Set(), ae = /* @__PURE__ */ new Map(), C = re.flatMap((e) => {
952
990
  let t = e.blockId ? s.get(e.blockId) : void 0;
953
991
  if (!t || e.internallyCreatedTargetNums?.length) return [e];
954
- if (ne.has(t.id)) return [];
955
- let n = re.get(t.id);
956
- if (n === void 0 && (n = Le(t.text, Nt(t), e.directive), re.set(t.id, n)), !n) {
957
- let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ie(t.text, n.operations.length) : null;
992
+ if (ie.has(t.id)) return [];
993
+ let n = ae.get(t.id);
994
+ if (n === void 0 && (n = Ie(t.text, Pt(t), e.directive), ae.set(t.id, n)), !n) {
995
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Fe(t.text, n.operations.length) : null;
958
996
  return [r ? {
959
997
  ...e,
960
998
  sourceAnnotations: r
961
999
  } : e];
962
1000
  }
963
- return ne.add(t.id), [{
1001
+ return ie.add(t.id), [{
964
1002
  ...e,
965
1003
  effects: n.map((t) => ({
966
1004
  ...t,
@@ -971,29 +1009,29 @@ function Gt(e, t) {
971
1009
  }
972
1010
  }))
973
1011
  }];
974
- }), ae = performance.now() - C;
1012
+ }), w = performance.now() - ne;
975
1013
  return t?.push({
976
1014
  actionDirectiveExtraction: d,
977
1015
  articleId: e.id,
978
1016
  blockCount: e.blocks.length,
979
1017
  buildRangesMs: Math.round(a * 10) / 10,
980
- directiveCount: ie.length,
1018
+ directiveCount: C.length,
981
1019
  directiveTextSize: e.directiveText.length,
982
1020
  extractActionDirectivesMs: Math.round(g * 10) / 10,
983
- mapDirectivesMs: Math.round(ae * 10) / 10,
1021
+ mapDirectivesMs: Math.round(w * 10) / 10,
984
1022
  prepareBlockIndexesMs: Math.round(l * 10) / 10,
985
1023
  totalMs: Math.round((performance.now() - n) * 10) / 10
986
- }), ie;
1024
+ }), C;
987
1025
  }
988
- function Kt(e, t) {
1026
+ function Yt(e, t) {
989
1027
  let n = /* @__PURE__ */ new Map(), r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map();
990
1028
  for (let o of e) {
991
- let e = We(o.directive);
1029
+ let e = Ue(o.directive);
992
1030
  if (e.length === 0) continue;
993
1031
  let s = t(o.articleId, o.blockId), c = e.map(({ num: e }) => {
994
- let t = s === void 0 ? void 0 : `${o.articleId}\0${B(s, e)}`, n = t === void 0 ? void 0 : a.get(t);
1032
+ let t = s === void 0 ? void 0 : `${o.articleId}\0${z(s, e)}`, n = t === void 0 ? void 0 : a.get(t);
995
1033
  if (n !== void 0) return n;
996
- let r = `${o.articleId}:article:${Ve(e)}`, c = r;
1034
+ let r = `${o.articleId}:article:${Be(e)}`, c = r;
997
1035
  if (i.has(c)) {
998
1036
  let e = s ?? o.blockId ?? "unknown";
999
1037
  c = `${r}:text:${e}`;
@@ -1025,17 +1063,17 @@ function Kt(e, t) {
1025
1063
  definitions: r
1026
1064
  };
1027
1065
  }
1028
- function qt(e, t, n, r) {
1066
+ function Xt(e, t, n, r) {
1029
1067
  if (t.length === 0) return e;
1030
1068
  let i = new Map(t.flatMap((e) => {
1031
1069
  let t = r(e.articleId, e.blockId);
1032
- return t === void 0 ? [] : [[B(t, e.num), e]];
1070
+ return t === void 0 ? [] : [[z(t, e.num), e]];
1033
1071
  }));
1034
1072
  return e.map((e) => {
1035
- let t = n.get(e), a = t?.[0], o = r(e.articleId, e.blockId), s = (o === void 0 ? [] : [...Ge(e.directive.reference)].map((e) => i.get(B(o, e))).filter((e) => e !== void 0 && e.definitionId !== a?.definitionId))[0], c = s === void 0 ? void 0 : {
1073
+ let t = n.get(e), a = t?.[0], o = r(e.articleId, e.blockId), s = (o === void 0 ? [] : [...We(e.directive.reference)].map((e) => i.get(z(o, e))).filter((e) => e !== void 0 && e.definitionId !== a?.definitionId))[0], c = s === void 0 ? void 0 : {
1036
1074
  definitionId: s.definitionId,
1037
1075
  num: s.num
1038
- }, l = qe(e.directive), u = (e.targetIds?.length ?? 0) > 0;
1076
+ }, l = Ke(e.directive), u = (e.targetIds?.length ?? 0) > 0;
1039
1077
  return {
1040
1078
  ...e,
1041
1079
  ...a === void 0 ? {} : { createdArticle: a },
@@ -1048,7 +1086,7 @@ function qt(e, t, n, r) {
1048
1086
  };
1049
1087
  });
1050
1088
  }
1051
- function Jt(e) {
1089
+ function Zt(e) {
1052
1090
  switch (e.kind) {
1053
1091
  case "insert_after":
1054
1092
  case "insert_before": return [e.insertText];
@@ -1066,8 +1104,8 @@ function Jt(e) {
1066
1104
  default: return [];
1067
1105
  }
1068
1106
  }
1069
- function Yt(e) {
1070
- return e.flatMap((e) => Jt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
1107
+ function Qt(e) {
1108
+ return e.flatMap((e) => Zt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
1071
1109
  code: "nested_french_quote_in_redaction",
1072
1110
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
1073
1111
  details: {
@@ -1079,18 +1117,18 @@ function Yt(e) {
1079
1117
  }
1080
1118
  })));
1081
1119
  }
1082
- function Xt(e) {
1083
- return Jt(e).map((t) => ({
1120
+ function $t(e) {
1121
+ return Zt(e).map((t) => ({
1084
1122
  directiveKind: e.kind,
1085
1123
  text: t
1086
1124
  }));
1087
1125
  }
1088
- function Zt(e) {
1126
+ function en(e) {
1089
1127
  let t = /* @__PURE__ */ new Set();
1090
1128
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
1091
1129
  return Array.from(t);
1092
1130
  }
1093
- function Qt(e, t) {
1131
+ function tn(e, t) {
1094
1132
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
1095
1133
  for (let e of r) {
1096
1134
  let t = n.get(e);
@@ -1102,11 +1140,11 @@ function Qt(e, t) {
1102
1140
  }
1103
1141
  return i;
1104
1142
  }
1105
- function $t(e, t, n) {
1143
+ function nn(e, t, n) {
1106
1144
  return e.find((e) => t >= e.start && n <= e.stop);
1107
1145
  }
1108
- function en(e, t, n) {
1109
- let r = Zt(n), i = r.flatMap((t) => {
1146
+ function rn(e, t, n) {
1147
+ let r = en(n), i = r.flatMap((t) => {
1110
1148
  for (let n of e.blocks) {
1111
1149
  let e = n.text.indexOf(t);
1112
1150
  if (e !== -1) return [{
@@ -1125,7 +1163,7 @@ function en(e, t, n) {
1125
1163
  e.directiveText
1126
1164
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
1127
1165
  if (!o) return [];
1128
- let s = Qt(e, t);
1166
+ let s = tn(e, t);
1129
1167
  if (s.length === 0) return [];
1130
1168
  let c = [], l = 0;
1131
1169
  for (let e of r) {
@@ -1133,7 +1171,7 @@ function en(e, t, n) {
1133
1171
  if (t === -1) continue;
1134
1172
  let n = t + e.length;
1135
1173
  l = n;
1136
- let r = $t(s, t, n);
1174
+ let r = nn(s, t, n);
1137
1175
  r && c.push({
1138
1176
  blockId: r.block.id,
1139
1177
  start: t - r.start,
@@ -1143,15 +1181,15 @@ function en(e, t, n) {
1143
1181
  }
1144
1182
  return c;
1145
1183
  }
1146
- function tn(e, t) {
1184
+ function an(e, t) {
1147
1185
  let n = new Map(e.map((e) => [e.id, e]));
1148
1186
  return t.flatMap((e) => {
1149
1187
  let t = n.get(e.articleId);
1150
- return t ? Xt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1188
+ return t ? $t(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1151
1189
  articleId: e.articleId,
1152
1190
  code: "nested_french_quote_in_redaction",
1153
1191
  message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
1154
- ranges: en(t, e, r),
1192
+ ranges: rn(t, e, r),
1155
1193
  severity: "warning",
1156
1194
  details: {
1157
1195
  blockId: e.blockId,
@@ -1162,7 +1200,7 @@ function tn(e, t) {
1162
1200
  })) : [];
1163
1201
  });
1164
1202
  }
1165
- function nn(e, t) {
1203
+ function on(e, t) {
1166
1204
  let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1167
1205
  articleId: e.id,
1168
1206
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
@@ -1185,7 +1223,7 @@ function nn(e, t) {
1185
1223
  }];
1186
1224
  });
1187
1225
  }
1188
- function rn(e, t) {
1226
+ function sn(e, t) {
1189
1227
  let n = new Map(e.flatMap((e) => e.blocks.map((e) => [e.id, e]))), r = /* @__PURE__ */ new Set();
1190
1228
  return t.flatMap((e) => {
1191
1229
  let t = e.blockId, i = e.internallyCreatedTargetNums;
@@ -1207,8 +1245,8 @@ function rn(e, t) {
1207
1245
  }] : [];
1208
1246
  });
1209
1247
  }
1210
- function an(e, t, n, r, i, a, o = !0, s) {
1211
- let c = new Ce("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1248
+ function cn(e, t, n, r, i, a, o = !0, s) {
1249
+ let c = new ve("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
1212
1250
  sourceFormat: e,
1213
1251
  documentDate: r,
1214
1252
  html: t,
@@ -1229,17 +1267,17 @@ function an(e, t, n, r, i, a, o = !0, s) {
1229
1267
  directiveTextSize: u.length
1230
1268
  }), e;
1231
1269
  }
1232
- let f = c.timeSync("extractGlobalApplicabilityDate", () => Qe(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1270
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => Ze(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1233
1271
  let e = [];
1234
1272
  for (let t of i) {
1235
- let n = Gt(t, c.enabled ? p : void 0);
1273
+ let n = Jt(t, c.enabled ? p : void 0);
1236
1274
  e.push(...n);
1237
1275
  }
1238
1276
  return e;
1239
- }, { count: i.length }), h = Ut(i), { createdArticlesByDirective: g, definitions: _ } = c.timeSync("buildInternalArticleDefinitions", () => Kt(m, h), { count: m.length }), v = c.timeSync("attachInternalArticleMetadata", () => qt(m, _, g, h), { count: m.length }), b = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Yt(v), { count: v.length }), x = [...s ?? [], ...b], ee = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [
1240
- ...tn(i, v),
1241
- ...nn(i, v),
1242
- ...rn(i, v)
1277
+ }, { count: i.length }), h = Kt(i), { createdArticlesByDirective: g, definitions: _ } = c.timeSync("buildInternalArticleDefinitions", () => Yt(m, h), { count: m.length }), v = c.timeSync("attachInternalArticleMetadata", () => Xt(m, _, g, h), { count: m.length }), b = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Qt(v), { count: v.length }), x = [...s ?? [], ...b], ee = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [
1278
+ ...an(i, v),
1279
+ ...on(i, v),
1280
+ ...sn(i, v)
1243
1281
  ], { count: v.length }), S = {
1244
1282
  ...d,
1245
1283
  ...f ? { globalApplicabilityDate: f } : {},
@@ -1334,18 +1372,18 @@ function an(e, t, n, r, i, a, o = !0, s) {
1334
1372
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1335
1373
  }), S;
1336
1374
  }
1337
- function on(e) {
1375
+ function ln(e) {
1338
1376
  return { items: e.map((e) => ({
1339
1377
  id: e.id,
1340
1378
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1341
1379
  type: "article"
1342
1380
  })) };
1343
1381
  }
1344
- function sn(e) {
1345
- return Array.from(de(e)).filter((e) => e.type === "article").map((e) => N(e.line.split(/[::]/u)[0]));
1382
+ function un(e) {
1383
+ return Array.from(de(e)).filter((e) => e.type === "article").map((e) => P(e.line.split(/[::]/u)[0]));
1346
1384
  }
1347
- function cn(e, t, n, r) {
1348
- let i = vt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? P(e.num) : b(e.html)("p.TCNumArticle").first().attr("id") ?? P(e.label) : e.id), c = o.map((e) => e.id);
1385
+ function dn(e, t, n, r) {
1386
+ let i = vt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? F(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? F(e.label) : e.id), c = o.map((e) => e.id);
1349
1387
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1350
1388
  code: "article_toc_source_heading_mismatch",
1351
1389
  message: "The table of contents differs from the parsed article headings",
@@ -1361,8 +1399,8 @@ function cn(e, t, n, r) {
1361
1399
  });
1362
1400
  return i;
1363
1401
  }
1364
- function ln(e, t, n) {
1365
- let r = sn(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => N(e.label)), a = on(e), o = [...n, ...cn(e, a, t, "assemblee-html")];
1402
+ function fn(e, t, n) {
1403
+ let r = un(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => P(e.label)), a = ln(e), o = [...n, ...dn(e, a, t, "assemblee-html")];
1366
1404
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1367
1405
  let t = r.findIndex((e, t) => e !== i[t]);
1368
1406
  o.push({
@@ -1386,24 +1424,24 @@ function ln(e, t, n) {
1386
1424
  tableOfContents: a
1387
1425
  };
1388
1426
  }
1389
- async function un(e, t) {
1390
- let n = new Ce("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => dn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Dt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => b(i)), o = n.timeSync("extractArticleHeadings", () => bt(a)), s = new Set(o.map((e) => e.id)), c = mt(a).filter((e) => !s.has(P(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1427
+ async function pn(e, t) {
1428
+ let n = new ve("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => mn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Dt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => w(i)), o = n.timeSync("extractArticleHeadings", () => bt(a)), s = new Set(o.map((e) => e.id)), c = mt(a).filter((e) => !s.has(F(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1391
1429
  code: "article_toc_source_heading_mismatch",
1392
1430
  message: "Some structural article headings were not retained",
1393
1431
  details: { discardedCandidates: c }
1394
- }] : [], u = L(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1432
+ }] : [], u = ut(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1395
1433
  let n = Ct(a, e, o[t + 1], u), r = Tt(a, e.id, n, e), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1396
1434
  return {
1397
1435
  id: e.id,
1398
1436
  label: e.label,
1399
1437
  num: e.num,
1400
1438
  title: e.title,
1401
- text: it(a, n),
1402
- html: n.map((e) => et(a, e)).join("\n"),
1439
+ text: rt(a, n),
1440
+ html: n.map((e) => $e(a, e)).join("\n"),
1403
1441
  directiveText: i,
1404
1442
  blocks: r
1405
1443
  };
1406
- }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Et(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => ln(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => an("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1444
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Et(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => fn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => cn("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1407
1445
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1408
1446
  articleCount: h.articles.length,
1409
1447
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1411,18 +1449,18 @@ async function un(e, t) {
1411
1449
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1412
1450
  }), h;
1413
1451
  }
1414
- async function dn(e, t) {
1452
+ async function mn(e, t) {
1415
1453
  return {
1416
1454
  sourceFormat: "assemblee-html",
1417
1455
  documentDate: t.date,
1418
1456
  html: e,
1419
- linkedHtml: await ct(e, t, t.date, st(e))
1457
+ linkedHtml: await st(e, t, t.date, ot(e))
1420
1458
  };
1421
1459
  }
1422
- function V(e) {
1460
+ function B(e) {
1423
1461
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1424
1462
  }
1425
- function fn(e) {
1463
+ function hn(e) {
1426
1464
  let t = e;
1427
1465
  for (let e = 0; e < 3; e++) {
1428
1466
  let e = t;
@@ -1430,33 +1468,33 @@ function fn(e) {
1430
1468
  }
1431
1469
  return t;
1432
1470
  }
1433
- function pn(e) {
1471
+ function gn(e) {
1434
1472
  return /(?:&lt;|&amp;lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
1435
1473
  }
1436
- function H(e) {
1474
+ function V(e) {
1437
1475
  return e.name.replace(/^.*:/u, "");
1438
1476
  }
1439
- function mn(e, t) {
1440
- return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1477
+ function _n(e, t) {
1478
+ return t.children.map((t) => H(e, t)).filter(Boolean).join("");
1441
1479
  }
1442
- function hn(e, t) {
1443
- return t.children.map((t) => t.type === "text" && pn(t.data) ? fn(t.data) : U(e, t)).filter(Boolean).join("");
1480
+ function vn(e, t) {
1481
+ return t.children.map((t) => t.type === "text" && gn(t.data) ? hn(t.data) : H(e, t)).filter(Boolean).join("");
1444
1482
  }
1445
- function U(e, t) {
1483
+ function H(e, t) {
1446
1484
  if (t.type === "text") {
1447
1485
  let e = t.data.replace(/\s+\./gu, ".");
1448
- return pn(e) ? fn(e) : V(e);
1486
+ return gn(e) ? hn(e) : B(e);
1449
1487
  }
1450
- if (!I(t)) return "";
1451
- let n = H(t), r = mn(e, t);
1488
+ if (!L(t)) return "";
1489
+ let n = V(t), r = () => _n(e, t);
1452
1490
  switch (n) {
1453
- case "p": return `<p${vn(e, t, [
1491
+ case "p": return `<p${xn(e, t, [
1454
1492
  "id",
1455
1493
  "class",
1456
1494
  "align",
1457
1495
  "valign",
1458
1496
  "style"
1459
- ])}>${r}</p>`;
1497
+ ])}>${r()}</p>`;
1460
1498
  case "br": return "<br>";
1461
1499
  case "span":
1462
1500
  case "b":
@@ -1464,42 +1502,42 @@ function U(e, t) {
1464
1502
  case "u":
1465
1503
  case "sup":
1466
1504
  case "sub":
1467
- case "abbr": return `<${n}${vn(e, t, [
1505
+ case "abbr": return `<${n}${xn(e, t, [
1468
1506
  "id",
1469
1507
  "class",
1470
1508
  "title",
1471
1509
  "style"
1472
- ])}>${r}</${n}>`;
1473
- case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${vn(e, t, [
1510
+ ])}>${r()}</${n}>`;
1511
+ case "a": return `<a href="${B(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${xn(e, t, [
1474
1512
  "id",
1475
1513
  "class",
1476
1514
  "title",
1477
1515
  "style"
1478
- ])}>${r}</a>`;
1516
+ ])}>${r()}</a>`;
1479
1517
  case "table":
1480
1518
  case "thead":
1481
1519
  case "tbody":
1482
1520
  case "tr":
1483
1521
  case "th":
1484
- case "td": return yn(e, t, n, r);
1485
- case "caption": return `<caption${vn(e, t, [
1522
+ case "td": return Sn(e, t, n, r());
1523
+ case "caption": return `<caption${xn(e, t, [
1486
1524
  "id",
1487
1525
  "class",
1488
1526
  "align",
1489
1527
  "style"
1490
- ])}>${r}</caption>`;
1491
- case "num": return `<span class="akn-num">${r}</span> `;
1492
- case "heading": return `<p class="akn-heading">${r}</p>`;
1493
- case "content": return hn(e, t);
1494
- case "alinea": return Pn(e, t, "div", "akn-alinea");
1495
- case "article": return Pn(e, t, "article", "akn-article");
1528
+ ])}>${r()}</caption>`;
1529
+ case "num": return `<span class="akn-num">${r()}</span> `;
1530
+ case "heading": return `<p class="akn-heading">${r()}</p>`;
1531
+ case "content": return vn(e, t);
1532
+ case "alinea": return Ln(e, t, "div", "akn-alinea");
1533
+ case "article": return Ln(e, t, "article", "akn-article");
1496
1534
  case "blockList":
1497
- case "list": return `<div class="akn-list">${r}</div>`;
1498
- case "item": return Pn(e, t, "div", "akn-item");
1535
+ case "list": return `<div class="akn-list">${r()}</div>`;
1536
+ case "item": return Ln(e, t, "div", "akn-item");
1499
1537
  case "listIntroduction":
1500
1538
  case "listWrapUp":
1501
1539
  case "intro":
1502
- case "wrapUp": return `<div class="akn-${n}">${r}</div>`;
1540
+ case "wrapUp": return `<div class="akn-${n}">${r()}</div>`;
1503
1541
  case "part":
1504
1542
  case "title":
1505
1543
  case "chapter":
@@ -1511,12 +1549,12 @@ function U(e, t) {
1511
1549
  case "book":
1512
1550
  case "tome":
1513
1551
  case "subchapter":
1514
- case "subsection": return Pn(e, t, "section", `akn-${n}`);
1515
- case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
1516
- default: return r;
1552
+ case "subsection": return Ln(e, t, "section", `akn-${n}`);
1553
+ case "crossHeading": return `<p class="akn-cross-heading">${r()}</p>`;
1554
+ default: return r();
1517
1555
  }
1518
1556
  }
1519
- function gn(e, t) {
1557
+ function yn(e, t) {
1520
1558
  let n = e(t).text();
1521
1559
  if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1522
1560
  let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
@@ -1527,39 +1565,39 @@ function gn(e, t) {
1527
1565
  let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
1528
1566
  if (l) {
1529
1567
  let t = Number(e(l).attr("rowspan") ?? "1");
1530
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && M(e(l).text()) !== "«") return [];
1568
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && N(e(l).text()) !== "«") return [];
1531
1569
  i = t - 1;
1532
1570
  }
1533
1571
  if (u) {
1534
1572
  let t = Number(e(u).attr("rowspan") ?? "1");
1535
- if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(M(e(u).text()))) return [];
1573
+ if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(N(e(u).text()))) return [];
1536
1574
  a = t - 1;
1537
1575
  }
1538
1576
  return [l, u];
1539
1577
  });
1540
1578
  if (o.some((e) => e.length !== 2)) return;
1541
- let s = o.map(([t]) => t ? M(e(t).text()) : ""), c = o.map(([, t]) => t ? M(e(t).text()) : "");
1579
+ let s = o.map(([t]) => t ? N(e(t).text()) : ""), c = o.map(([, t]) => t ? N(e(t).text()) : "");
1542
1580
  if (!(s.filter((e) => e === "«").length !== 1 || c.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || s.some((e) => e !== "" && e !== "«") || c.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || o.some(([t, n]) => [t, n].some((t) => t && e(t).attr("colspan") !== void 0))) && !(s.indexOf("«") > c.findIndex((e) => e.startsWith("»")))) {
1543
1581
  e(t).addClass("akn-quoted-table");
1544
1582
  for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
1545
1583
  }
1546
1584
  }
1547
- function _n(e, t) {
1548
- let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(M(e(t).text())))).text();
1549
- return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => M(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1585
+ function bn(e, t) {
1586
+ let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(N(e(t).text())))).text();
1587
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => N(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1550
1588
  }
1551
- function vn(e, t, n, r = {}) {
1589
+ function xn(e, t, n, r = {}) {
1552
1590
  let i = [];
1553
1591
  for (let r of n) {
1554
1592
  if (r === "style") continue;
1555
1593
  let n = e(t).attr(r);
1556
- n !== void 0 && i.push(`${r}="${V(n)}"`);
1594
+ n !== void 0 && i.push(`${r}="${B(n)}"`);
1557
1595
  }
1558
1596
  let a = r.style ?? e(t).attr("style");
1559
- return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1597
+ return a && i.push(`style="${B(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1560
1598
  }
1561
- function yn(e, t, n, r) {
1562
- return `<${n}${vn(e, t, [
1599
+ function Sn(e, t, n, r) {
1600
+ return `<${n}${xn(e, t, [
1563
1601
  "id",
1564
1602
  "class",
1565
1603
  "colspan",
@@ -1572,155 +1610,155 @@ function yn(e, t, n, r) {
1572
1610
  "cellspacing",
1573
1611
  "cellpadding",
1574
1612
  "style"
1575
- ], { style: bn(e, t, n) })}>${r}</${n}>`;
1613
+ ], { style: Cn(e, t, n) })}>${r}</${n}>`;
1576
1614
  }
1577
- function bn(e, t, n) {
1615
+ function Cn(e, t, n) {
1578
1616
  let r = e(t).attr("style") ?? "";
1579
- return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = xn(r, "text-align", "center")), r || void 0;
1617
+ return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = wn(r, "text-align", "center")), r || void 0;
1580
1618
  }
1581
- function xn(e, t, n) {
1619
+ function wn(e, t, n) {
1582
1620
  let r = e.trim();
1583
1621
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1584
1622
  }
1585
- function Sn(e, t) {
1586
- let n = [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean);
1587
- return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1623
+ function Tn(e, t) {
1624
+ let n = [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean);
1625
+ return n.length === 0 ? "" : `<p class="akn-heading">${B(n.join(" "))}</p>`;
1588
1626
  }
1589
- function Cn(e, t) {
1627
+ function En(e, t) {
1590
1628
  if (!t) return !1;
1591
- let n = (e) => M(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1592
- return n(M(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1629
+ let n = (e) => N(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1630
+ return n(N(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1593
1631
  }
1594
- function wn(e) {
1595
- let t = V(e);
1632
+ function Dn(e) {
1633
+ let t = B(e);
1596
1634
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1597
1635
  }
1598
- function Tn(e, t) {
1599
- return En([Dn({
1636
+ function On(e, t) {
1637
+ return kn([An({
1600
1638
  content: e,
1601
1639
  pastille: t
1602
1640
  })]);
1603
1641
  }
1604
- function En(e) {
1642
+ function kn(e) {
1605
1643
  return `<table class="fixed-size large akn-pastille-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1606
1644
  }
1607
- function Dn({ content: e, pastille: t, style: n, contextClass: r }) {
1608
- let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
1609
- return `<tr${r ? ` class="${V(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${wn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1645
+ function An({ content: e, pastille: t, style: n, contextClass: r }) {
1646
+ let i = n ? ` style="${B(n)}"` : "", a = r ? ` ${B(r)}` : "";
1647
+ return `<tr${r ? ` class="${B(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${Dn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
1610
1648
  }
1611
- function On({ content: e, style: t, contextClass: n }) {
1612
- let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1613
- return `<tr${n ? ` class="${V(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
1649
+ function jn({ content: e, style: t, contextClass: n }) {
1650
+ let r = t ? ` style="${B(t)}"` : "", i = n ? ` ${B(n)}` : "";
1651
+ return `<tr${n ? ` class="${B(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
1614
1652
  }
1615
- function kn(e, t) {
1653
+ function Mn(e, t) {
1616
1654
  return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1617
1655
  }
1618
- function An(e, t) {
1656
+ function Nn(e, t) {
1619
1657
  return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1620
1658
  }
1621
- function jn(e, t) {
1622
- return e(t).children().get().filter((e) => I(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1659
+ function Pn(e, t) {
1660
+ return e(t).children().get().filter((e) => L(e) ? V(e) === "content" : !1).map((t) => H(e, t)).filter(Boolean).join("\n");
1623
1661
  }
1624
- function Mn(e, t) {
1662
+ function Fn(e, t) {
1625
1663
  let n = [];
1626
1664
  return e(t).children().each((t, r) => {
1627
- if (!I(r)) return;
1628
- let i = H(r);
1629
- i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1665
+ if (!L(r)) return;
1666
+ let i = V(r);
1667
+ i === "num" || i === "heading" || i === "content" || n.push(H(e, r));
1630
1668
  }), n.filter(Boolean);
1631
1669
  }
1632
- function Nn(e, t) {
1633
- let n = [], r = H(t), i = r === "alinea" ? kn(e, t) : void 0, a = jn(e, t), o = Fn(e, t, r, i), s = Vn(e, t);
1670
+ function In(e, t) {
1671
+ let n = [], r = V(t), i = r === "alinea" ? Mn(e, t) : void 0, a = Pn(e, t), o = Rn(e, t, r, i), s = Wn(e, t);
1634
1672
  if (i) {
1635
- let r = [Cn(a, M(e(t).children("num").first().text())) ? "" : Sn(e, t), a].filter(Boolean).join("\n");
1636
- M(r) && n.push(Dn({
1673
+ let r = [En(a, N(e(t).children("num").first().text())) ? "" : Tn(e, t), a].filter(Boolean).join("\n");
1674
+ N(r) && n.push(An({
1637
1675
  content: r,
1638
1676
  pastille: i,
1639
1677
  style: o,
1640
1678
  contextClass: s
1641
1679
  }));
1642
- } else a && n.push(On({
1680
+ } else a && n.push(jn({
1643
1681
  content: a,
1644
1682
  style: o,
1645
1683
  contextClass: s
1646
1684
  }));
1647
1685
  for (let r of e(t).children().get()) {
1648
- if (!I(r)) continue;
1649
- let t = H(r);
1650
- t === "num" || t === "heading" || t === "content" || (t === "alinea" || An(e, r)) && n.push(...Nn(e, r));
1686
+ if (!L(r)) continue;
1687
+ let t = V(r);
1688
+ t === "num" || t === "heading" || t === "content" || (t === "alinea" || Nn(e, r)) && n.push(...In(e, r));
1651
1689
  }
1652
1690
  return n;
1653
1691
  }
1654
- function Pn(e, t, n, r) {
1655
- let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = kn(e, t), s = Fn(e, t, i, o), c = [`<${n} ${[
1656
- a ? `id="${V(a)}"` : void 0,
1692
+ function Ln(e, t, n, r) {
1693
+ let i = V(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Mn(e, t), s = Rn(e, t, i, o), c = [`<${n} ${[
1694
+ a ? `id="${B(a)}"` : void 0,
1657
1695
  `class="${r}"`,
1658
- o ? `data-pastille="${V(o)}"` : void 0,
1659
- s ? `style="${V(s)}"` : void 0
1696
+ o ? `data-pastille="${B(o)}"` : void 0,
1697
+ s ? `style="${B(s)}"` : void 0
1660
1698
  ].filter((e) => e !== void 0).join(" ")}>`];
1661
1699
  if (i === "part" || i === "title") {
1662
- let r = Rn(e, t, i), a = Bn(e, t), o = r ? [On({
1700
+ let r = Vn(e, t, i), a = Un(e, t), o = r ? [jn({
1663
1701
  content: r,
1664
1702
  contextClass: a
1665
1703
  })] : [], s = () => {
1666
- o.length !== 0 && (c.push(Ln(o)), o = []);
1704
+ o.length !== 0 && (c.push(Bn(o)), o = []);
1667
1705
  };
1668
1706
  return e(t).children().each((t, n) => {
1669
- if (!I(n)) return;
1670
- let r = H(n);
1707
+ if (!L(n)) return;
1708
+ let r = V(n);
1671
1709
  if (!(r === "num" || r === "heading" || r === "content")) {
1672
1710
  if (r === "alinea") {
1673
- o.push(...Nn(e, n));
1711
+ o.push(...In(e, n));
1674
1712
  return;
1675
1713
  }
1676
- s(), c.push(U(e, n));
1714
+ s(), c.push(H(e, n));
1677
1715
  }
1678
1716
  }), s(), c.push(`</${n}>`), c.join("\n");
1679
1717
  }
1680
1718
  if (i === "article") {
1681
- let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = C(r) ?? {
1719
+ let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = u(r) ?? {
1682
1720
  label: r,
1683
1721
  num: r
1684
- }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${V(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${V(a.label)}${i ? ` : ${V(i)}` : ""}</p>`;
1685
- if (An(e, t)) {
1686
- let r = [On({
1722
+ }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${B(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${B(a.label)}${i ? ` : ${B(i)}` : ""}</p>`;
1723
+ if (Nn(e, t)) {
1724
+ let r = [jn({
1687
1725
  content: o,
1688
- contextClass: Un(a.label)
1689
- }), ...Nn(e, t)];
1690
- c.push(En(r));
1691
- for (let n of Mn(e, t)) n.includes("akn-pastille-table") || c.push(n);
1726
+ contextClass: Kn(a.label)
1727
+ }), ...In(e, t)];
1728
+ c.push(kn(r));
1729
+ for (let n of Fn(e, t)) n.includes("akn-pastille-table") || c.push(n);
1692
1730
  return c.push(`</${n}>`), c.join("\n");
1693
1731
  }
1694
1732
  c.push(o);
1695
1733
  }
1696
1734
  let l = [];
1697
1735
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1698
- if (!I(r)) return;
1699
- let i = H(r);
1700
- i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1736
+ if (!L(r)) return;
1737
+ let i = V(r);
1738
+ i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(H(e, r));
1701
1739
  });
1702
- let u = l.join("\n");
1740
+ let d = l.join("\n");
1703
1741
  if (i !== "article") {
1704
- let n = Cn(u, M(e(t).children("num").first().text())) ? "" : Sn(e, t);
1742
+ let n = En(d, N(e(t).children("num").first().text())) ? "" : Tn(e, t);
1705
1743
  n && c.push(n);
1706
1744
  }
1707
- return c.push(o ? Tn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1745
+ return c.push(o ? On(d, o) : d), c.push(`</${n}>`), c.join("\n");
1708
1746
  }
1709
- function Fn(e, t, n, r) {
1710
- let i = In(e(t).attr("style") ?? "", "font-family");
1711
- return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = xn(i, "text-align", "center")), i || void 0;
1747
+ function Rn(e, t, n, r) {
1748
+ let i = zn(e(t).attr("style") ?? "", "font-family");
1749
+ return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = wn(i, "text-align", "center")), i || void 0;
1712
1750
  }
1713
- function In(e, t) {
1751
+ function zn(e, t) {
1714
1752
  return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
1715
1753
  }
1716
- function Ln(e) {
1754
+ function Bn(e) {
1717
1755
  return `<table class="fixed-size large akn-section-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
1718
1756
  }
1719
- function Rn(e, t, n) {
1720
- let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = zn(n), o = [];
1721
- return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${V(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${V(i)}</span></p>`), o.join("\n");
1757
+ function Vn(e, t, n) {
1758
+ let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = Hn(n), o = [];
1759
+ return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${B(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${B(i)}</span></p>`), o.join("\n");
1722
1760
  }
1723
- function zn(e) {
1761
+ function Hn(e) {
1724
1762
  switch (e) {
1725
1763
  case "part": return {
1726
1764
  num: "TCNumPartie",
@@ -1744,22 +1782,22 @@ function zn(e) {
1744
1782
  };
1745
1783
  }
1746
1784
  }
1747
- function Bn(e, t) {
1748
- let n = Hn(M(e(t).children("num").first().text()));
1785
+ function Un(e, t) {
1786
+ let n = Gn(N(e(t).children("num").first().text()));
1749
1787
  if (n) return n;
1750
1788
  for (let n of e(t).parents().get()) {
1751
- if (!I(n)) continue;
1752
- let t = H(n);
1789
+ if (!L(n)) continue;
1790
+ let t = V(n);
1753
1791
  if (t !== "title" && t !== "part") continue;
1754
- let r = Hn(M(e(n).children("num").first().text()));
1792
+ let r = Gn(N(e(n).children("num").first().text()));
1755
1793
  if (r) return r;
1756
1794
  }
1757
1795
  }
1758
- function Vn(e, t) {
1759
- return Bn(e, t);
1796
+ function Wn(e, t) {
1797
+ return Un(e, t);
1760
1798
  }
1761
- function Hn(e) {
1762
- let [t, ...n] = M(e).split(/\s+/u);
1799
+ function Gn(e) {
1800
+ let [t, ...n] = N(e).split(/\s+/u);
1763
1801
  if (!t || n.length === 0) return;
1764
1802
  let r = t.toLocaleLowerCase("fr-FR");
1765
1803
  if ([
@@ -1769,10 +1807,10 @@ function Hn(e) {
1769
1807
  "section"
1770
1808
  ].includes(r)) return `${r}-${n.join("_")}`;
1771
1809
  }
1772
- function Un(e) {
1773
- return `article-${M(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1810
+ function Kn(e) {
1811
+ return `article-${N(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1774
1812
  }
1775
- function Wn(e) {
1813
+ function qn(e) {
1776
1814
  switch (e) {
1777
1815
  case "part": return "partie";
1778
1816
  case "book": return "livre";
@@ -1784,11 +1822,11 @@ function Wn(e) {
1784
1822
  default: return;
1785
1823
  }
1786
1824
  }
1787
- function Gn(e, t) {
1788
- return [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1825
+ function Jn(e, t) {
1826
+ return [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1789
1827
  }
1790
- function Kn(e, t) {
1791
- let n = M(e(t).children("num").first().text()), r = M(e(t).children("heading").first().text()), i = C(n) ?? {
1828
+ function Yn(e, t) {
1829
+ let n = N(e(t).children("num").first().text()), r = N(e(t).children("heading").first().text()), i = u(n) ?? {
1792
1830
  label: n,
1793
1831
  num: n
1794
1832
  };
@@ -1798,24 +1836,24 @@ function Kn(e, t) {
1798
1836
  type: "article"
1799
1837
  };
1800
1838
  }
1801
- function qn(e, t) {
1839
+ function Xn(e, t) {
1802
1840
  e.items.push(...t.items);
1803
1841
  }
1804
- function Jn(e, t) {
1842
+ function Zn(e, t) {
1805
1843
  let n = { items: [] };
1806
1844
  return e(t).children().each((t, r) => {
1807
- if (!I(r)) return;
1808
- let i = H(r);
1845
+ if (!L(r)) return;
1846
+ let i = V(r);
1809
1847
  if (i === "article") {
1810
- n.items.push(Kn(e, r));
1848
+ n.items.push(Yn(e, r));
1811
1849
  return;
1812
1850
  }
1813
- let a = Wn(i);
1851
+ let a = qn(i);
1814
1852
  if (!a) {
1815
- qn(n, Jn(e, r));
1853
+ Xn(n, Zn(e, r));
1816
1854
  return;
1817
1855
  }
1818
- let o = Gn(e, r), s = Jn(e, r);
1856
+ let o = Jn(e, r), s = Zn(e, r);
1819
1857
  !o && s.items.length === 0 || n.items.push({
1820
1858
  ...s,
1821
1859
  id: e(r).attr("eId") ?? e(r).attr("GUID"),
@@ -1824,27 +1862,27 @@ function Jn(e, t) {
1824
1862
  });
1825
1863
  }), n;
1826
1864
  }
1827
- function Yn(e) {
1865
+ function Qn(e) {
1828
1866
  let t = e("body").first().get(0);
1829
- return t === void 0 ? { items: [] } : Jn(e, t);
1867
+ return t === void 0 ? { items: [] } : Zn(e, t);
1830
1868
  }
1831
- function Xn(e) {
1869
+ function $n(e) {
1832
1870
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1833
1871
  }
1834
- function Zn(e) {
1835
- e("table").each((t, n) => gn(e, n));
1872
+ function er(e) {
1873
+ e("table").each((t, n) => yn(e, n));
1836
1874
  let t = e("preamble").first(), n = e("body").first(), r = ["<div class=\"akn-bill\">", "<style>.akn-bill p.pastille span:empty::before{content:attr(data-pastille)}</style>"];
1837
- return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(mn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1838
- I(n) && r.push(H(n) === "article" ? Pn(e, n, "article", "akn-article") : U(e, n));
1875
+ return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(_n(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1876
+ L(n) && r.push(V(n) === "article" ? Ln(e, n, "article", "akn-article") : H(e, n));
1839
1877
  }), r.push("</section></div>"), r.join("\n");
1840
1878
  }
1841
- function Qn(e) {
1842
- let t = b(e, { xml: {
1879
+ function tr(e) {
1880
+ let t = w(e, { xml: {
1843
1881
  decodeEntities: !1,
1844
1882
  lowerCaseTags: !1,
1845
1883
  lowerCaseAttributeNames: !1,
1846
1884
  xmlMode: !0
1847
- } }), n = Xn(t), r = Zn(t);
1885
+ } }), n = $n(t), r = er(t);
1848
1886
  return {
1849
1887
  sourceFormat: "akoma-ntoso",
1850
1888
  documentDate: n,
@@ -1852,42 +1890,42 @@ function Qn(e) {
1852
1890
  linkedHtml: r
1853
1891
  };
1854
1892
  }
1855
- function $n(e) {
1856
- return er(b(e));
1893
+ function nr(e) {
1894
+ return rr(w(e));
1857
1895
  }
1858
- function er(e) {
1896
+ function rr(e) {
1859
1897
  let t = [];
1860
1898
  return e("article.akn-article").each((n, r) => {
1861
- let i = e(r).find("p.TCNumArticle").first().get(0), a = M(i ? e(i).text() : ""), o = C(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Tt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1899
+ let i = e(r).find("p.TCNumArticle").first().get(0), a = N(i ? e(i).text() : ""), o = u(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Tt(e, s, c), d = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1862
1900
  t.push({
1863
1901
  id: s,
1864
1902
  label: o.label,
1865
1903
  num: o.num,
1866
1904
  title: o.title,
1867
- text: it(e, c),
1868
- html: et(e, r),
1869
- directiveText: u,
1905
+ text: rt(e, c),
1906
+ html: $e(e, r),
1907
+ directiveText: d,
1870
1908
  blocks: l
1871
1909
  });
1872
1910
  }), t;
1873
1911
  }
1874
- function tr(e) {
1875
- let t = b(e);
1912
+ function ir(e) {
1913
+ let t = w(e);
1876
1914
  return {
1877
- articles: er(t),
1915
+ articles: rr(t),
1878
1916
  htmlWithLinks: t.html()
1879
1917
  };
1880
1918
  }
1881
- async function nr(e, t) {
1882
- let n = new Ce("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => b(e, { xml: {
1919
+ async function ar(e, t) {
1920
+ let n = new ve("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
1883
1921
  decodeEntities: !1,
1884
1922
  lowerCaseTags: !1,
1885
1923
  lowerCaseAttributeNames: !1,
1886
1924
  xmlMode: !0
1887
- } })), i = t.date ?? Xn(r), a = n.timeSync("renderAknHtml", () => Zn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ct(a, {
1925
+ } })), i = t.date ?? $n(r), a = n.timeSync("renderAknHtml", () => er(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => st(a, {
1888
1926
  ...t,
1889
1927
  date: i
1890
- }, i)), s = n.timeSync("extractRenderedAknArticles", () => $n(a)), c = n.timeSync("injectHiddenArticleSummary", () => Et(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => tr(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Yn(r)), p = n.timeSync("buildParsedDocument", () => an("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, cn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1928
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => nr(a)), c = n.timeSync("injectHiddenArticleSummary", () => Et(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => ir(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Qn(r)), p = n.timeSync("buildParsedDocument", () => cn("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, dn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1891
1929
  return n.log({
1892
1930
  articleCount: p.articles.length,
1893
1931
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1895,25 +1933,25 @@ async function nr(e, t) {
1895
1933
  targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
1896
1934
  }), p;
1897
1935
  }
1898
- async function rr(e, t) {
1899
- let n = Qn(e), r = t.date ?? n.documentDate;
1936
+ async function or(e, t) {
1937
+ let n = tr(e), r = t.date ?? n.documentDate;
1900
1938
  return {
1901
1939
  sourceFormat: "akoma-ntoso",
1902
1940
  documentDate: r,
1903
1941
  html: n.html,
1904
- linkedHtml: await ct(n.html, t, r)
1942
+ linkedHtml: await st(n.html, t, r)
1905
1943
  };
1906
1944
  }
1907
1945
  //#endregion
1908
1946
  //#region src/lib/server/assemblee_document_search.ts
1909
- var ir = /\bexpos[ée]\s+des\s+motifs\b/giu, ar = /\barticle\s+(?:premier|1er|\d+)/iu;
1910
- function or(e) {
1947
+ var sr = /\bexpos[ée]\s+des\s+motifs\b/giu, cr = /\barticle\s+(?:premier|1er|\d+)/iu;
1948
+ function lr(e) {
1911
1949
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1912
1950
  }
1913
- function sr(e) {
1914
- let t = or(b(e).text()), n = [...t.matchAll(ir)], r = /* @__PURE__ */ new Set(), i = [];
1951
+ function ur(e) {
1952
+ let t = lr(w(e).text()), n = [...t.matchAll(sr)], r = /* @__PURE__ */ new Set(), i = [];
1915
1953
  for (let [e, a] of n.entries()) {
1916
- let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = ar.exec(s), l = or(s.slice(0, c?.index ?? s.length));
1954
+ let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = cr.exec(s), l = lr(s.slice(0, c?.index ?? s.length));
1917
1955
  if (l.length < 20 || r.has(l)) continue;
1918
1956
  r.add(l);
1919
1957
  let u = `expose-des-motifs-${e + 1}`;
@@ -1929,8 +1967,8 @@ function sr(e) {
1929
1967
  }
1930
1968
  return i;
1931
1969
  }
1932
- async function cr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1933
- let i = await un(t, {
1970
+ async function dr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1971
+ let i = await pn(t, {
1934
1972
  date: e,
1935
1973
  includeDirectiveAnalysis: !1,
1936
1974
  linkBaseUrl: n,
@@ -1939,7 +1977,7 @@ async function cr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1939
1977
  });
1940
1978
  return {
1941
1979
  items: [...i.articles.map((e) => {
1942
- let t = or(e.directiveText || e.text);
1980
+ let t = lr(e.directiveText || e.text);
1943
1981
  if (t) return {
1944
1982
  anchor: e.id,
1945
1983
  articleNumber: e.num ?? null,
@@ -1949,17 +1987,17 @@ async function cr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1949
1987
  label: e.label,
1950
1988
  title: e.title ?? null
1951
1989
  };
1952
- }).filter((e) => e !== void 0), ...sr(t)],
1990
+ }).filter((e) => e !== void 0), ...ur(t)],
1953
1991
  tableOfContents: i.tableOfContents
1954
1992
  };
1955
1993
  }
1956
- function lr(e, t) {
1957
- return ke("sha256").update(JSON.stringify({
1994
+ function fr(e, t) {
1995
+ return Oe("sha256").update(JSON.stringify({
1958
1996
  item: e,
1959
1997
  metadata: t
1960
1998
  })).digest("hex");
1961
1999
  }
1962
- function ur(e) {
2000
+ function pr(e) {
1963
2001
  if (typeof e != "object" || !e) return;
1964
2002
  let t = e.cycleDeVie?.chrono;
1965
2003
  if (t !== void 0) for (let e of [
@@ -1974,11 +2012,11 @@ function ur(e) {
1974
2012
  }
1975
2013
  //#endregion
1976
2014
  //#region src/lib/server/senat_amendment_search.ts
1977
- function dr(e) {
1978
- return e?.trim() ? b(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
2015
+ function mr(e) {
2016
+ return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1979
2017
  }
1980
- function fr({ dispositifHtml: e, objetHtml: t }) {
1981
- let n = dr(e), r = dr(t);
2018
+ function hr({ dispositifHtml: e, objetHtml: t }) {
2019
+ let n = mr(e), r = mr(t);
1982
2020
  return [...n ? [{
1983
2021
  content: n,
1984
2022
  itemKind: "dispositif",
@@ -1989,233 +2027,233 @@ function fr({ dispositifHtml: e, objetHtml: t }) {
1989
2027
  label: "Objet"
1990
2028
  }] : []];
1991
2029
  }
1992
- function pr(e, t) {
1993
- return ke("sha256").update(JSON.stringify({
2030
+ function gr(e, t) {
2031
+ return Oe("sha256").update(JSON.stringify({
1994
2032
  item: e,
1995
2033
  metadata: t
1996
2034
  })).digest("hex");
1997
2035
  }
1998
2036
  //#endregion
1999
2037
  //#region src/lib/text_parsers/amendment_action_directives.ts
2000
- function W(e, t) {
2038
+ function U(e, t) {
2001
2039
  return {
2002
2040
  ...t,
2003
2041
  position: e.position(),
2004
2042
  type: "amendment_action_directive"
2005
2043
  };
2006
2044
  }
2007
- function mr(e, t) {
2045
+ function _r(e, t) {
2008
2046
  return {
2009
2047
  type: e === "start" ? "head_of_target" : "tail_after_target",
2010
- unit: t ? me(t) : "article"
2048
+ unit: t ? pe(t) : "article"
2011
2049
  };
2012
2050
  }
2013
- function hr(e) {
2051
+ function vr(e) {
2014
2052
  return e === "start" ? "insert_before" : "insert_after";
2015
2053
  }
2016
- var gr = D(T("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = O(l, w([T("les?\\s+", { flags: "i" }), i], { value: (e) => e[1] }), i, o), _r = O(w([T("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
2054
+ var yr = E(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), W = T(f, k([D("les?\\s+", { flags: "i" }), s], { value: (e) => e[1] }), s, oe), br = T(k([D("la\\s+fin\\s+de\\s+", { flags: "i" }), W], { value: (e) => {
2017
2055
  let t = e[1];
2018
2056
  return {
2019
2057
  targetReference: t,
2020
2058
  targetScope: {
2021
2059
  type: "tail_after_target",
2022
- unit: me(t)
2060
+ unit: pe(t)
2023
2061
  }
2024
2062
  };
2025
- } }), w([t], { value: (e) => ({ targetScope: e[0] }) })), K = D(w([
2026
- D(T("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
2027
- D(T("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
2028
- G,
2029
- D(T("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
2063
+ } }), k([n], { value: (e) => ({ targetScope: e[0] }) })), G = E(k([
2064
+ E(D("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
2065
+ E(D("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
2066
+ W,
2067
+ E(D("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
2030
2068
  ], { value: (e, t) => ({
2031
2069
  reference: e[2],
2032
2070
  text: t.text()
2033
- }) }), { default: null }), vr = D(T(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${De})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
2034
- function q(e) {
2071
+ }) }), { default: null }), xr = E(D(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Te})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
2072
+ function K(e) {
2035
2073
  return e?.text ?? "";
2036
2074
  }
2037
- function yr(e) {
2038
- return { citation: ae(e.position()) };
2075
+ function Sr(e) {
2076
+ return { citation: se(e.position()) };
2039
2077
  }
2040
- var J = O(w([f], { value: (e) => ({ citation: e[0] }) }), T("\\S[\\s\\S]*", { value: (e, t) => yr(t) })), br = T("\\S[\\s\\S]*", { value: (e, t) => yr(t) }), Y = T("[^:«“\"]*(?::\\s*)?", { flags: "i" }), xr = T("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
2078
+ var q = T(k([e], { value: (e) => ({ citation: e[0] }) }), D("\\S[\\s\\S]*", { value: (e, t) => Sr(t) })), Cr = D("\\S[\\s\\S]*", { value: (e, t) => Sr(t) }), J = D("[^:«“\"]*(?::\\s*)?", { flags: "i" }), wr = D("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
2041
2079
  flags: "i",
2042
- value: (e, t) => yr(t)
2043
- }), Sr = T("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
2080
+ value: (e, t) => Sr(t)
2081
+ }), Tr = D("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
2044
2082
  flags: "i",
2045
- value: (e, t) => yr(t)
2046
- }), Cr = T("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
2083
+ value: (e, t) => Sr(t)
2084
+ }), Er = D("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
2047
2085
  flags: "i",
2048
- value: (e, t) => yr(t)
2049
- }), wr = O(w([f], { value: (e) => ({ citation: e[0] }) }), xr), Tr = O(w([f], { value: (e) => ({ citation: e[0] }) }), Cr), Er = w([T(`${n}s?\\s*:?\\s*`, { flags: "i" }), wr], { value: (e) => e[1] }), Dr = w([T(`${r}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Tr], { value: (e) => e[1] }), Or = O(w([f], { value: (e) => ({ citation: e[0] }) }), Sr), kr = w([
2050
- vr,
2051
- T(`${n}s?\\s*:?\\s*`, { flags: "i" }),
2052
- Or
2053
- ], { value: (e) => e[2] }), Ar = w([
2054
- vr,
2055
- T(`${n}s?\\s*:?\\s*`, { flags: "i" }),
2056
- O(w([f], { value: (e) => ({ citation: e[0] }) }), br)
2086
+ value: (e, t) => Sr(t)
2087
+ }), Dr = T(k([e], { value: (e) => ({ citation: e[0] }) }), wr), Or = T(k([e], { value: (e) => ({ citation: e[0] }) }), Er), kr = k([D(`${r}s?\\s*:?\\s*`, { flags: "i" }), Dr], { value: (e) => e[1] }), Ar = k([D(`${i}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Or], { value: (e) => e[1] }), jr = T(k([e], { value: (e) => ({ citation: e[0] }) }), Tr), Mr = k([
2088
+ xr,
2089
+ D(`${r}s?\\s*:?\\s*`, { flags: "i" }),
2090
+ jr
2091
+ ], { value: (e) => e[2] }), Nr = k([
2092
+ xr,
2093
+ D(`${r}s?\\s*:?\\s*`, { flags: "i" }),
2094
+ T(k([e], { value: (e) => ({ citation: e[0] }) }), Cr)
2057
2095
  ], { value: (e) => e[2] });
2058
- function X(e) {
2096
+ function Y(e) {
2059
2097
  return e?.reference;
2060
2098
  }
2061
- var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
2099
+ var Pr = k([yr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => U(t, {
2062
2100
  contextText: e[0],
2063
2101
  kind: "delete_article"
2064
- }) }), Mr = w([
2065
- K,
2066
- T("supprimer", { flags: "i" }),
2067
- D(w([k, G], { value: (e) => e[1] }), { default: null }),
2068
- D(w([k, Ar], { value: (e) => e[1] }), { default: null })
2069
- ], { value: (e, t) => W(t, {
2070
- contextText: q(e[0]),
2102
+ }) }), Fr = k([
2103
+ G,
2104
+ D("supprimer", { flags: "i" }),
2105
+ E(k([O, W], { value: (e) => e[1] }), { default: null }),
2106
+ E(k([O, Nr], { value: (e) => e[1] }), { default: null })
2107
+ ], { value: (e, t) => U(t, {
2108
+ contextText: K(e[0]),
2071
2109
  kind: "delete_portion",
2072
2110
  targetCitation: e[3]?.citation ?? void 0,
2073
- targetReference: e[2] ?? X(e[0])
2074
- }) }), Nr = w([
2075
- K,
2076
- O(T("r[eé]diger\\s+ainsi", { flags: "i" }), T("r[eé]tablir", { flags: "i" })),
2077
- Y,
2078
- J
2079
- ], { value: (e, t) => W(t, {
2080
- contextText: q(e[0]),
2111
+ targetReference: e[2] ?? Y(e[0])
2112
+ }) }), Ir = k([
2113
+ G,
2114
+ T(D("r[eé]diger\\s+ainsi", { flags: "i" }), D("r[eé]tablir", { flags: "i" })),
2115
+ J,
2116
+ q
2117
+ ], { value: (e, t) => U(t, {
2118
+ contextText: K(e[0]),
2081
2119
  kind: "rewrite_portion",
2082
2120
  replacementCitation: e[3].citation,
2083
- targetReference: X(e[0])
2084
- }) }), Pr = w([
2085
- K,
2086
- O(T("substituer", { flags: "i" }), T("remplacer", { flags: "i" })),
2087
- k,
2088
- vr,
2089
- Er,
2090
- T("\\s*,?\\s*"),
2091
- D(T("par\\s+", { flags: "i" }), { default: "" }),
2092
- Dr
2093
- ], { value: (e, t) => W(t, {
2094
- contextText: q(e[0]),
2121
+ targetReference: Y(e[0])
2122
+ }) }), Lr = k([
2123
+ G,
2124
+ T(D("substituer", { flags: "i" }), D("remplacer", { flags: "i" })),
2125
+ O,
2126
+ xr,
2127
+ kr,
2128
+ D("\\s*,?\\s*"),
2129
+ E(D("par\\s+", { flags: "i" }), { default: "" }),
2130
+ Ar
2131
+ ], { value: (e, t) => U(t, {
2132
+ contextText: K(e[0]),
2095
2133
  kind: "replace",
2096
2134
  replacementCitation: e[7].citation,
2097
2135
  targetCitation: e[4].citation,
2098
- targetReference: X(e[0])
2099
- }) }), Fr = w([
2100
- K,
2101
- T("substituer", { flags: "i" }),
2102
- k,
2103
- D(T("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
2136
+ targetReference: Y(e[0])
2137
+ }) }), Rr = k([
2104
2138
  G,
2105
- T("[\\s\\S]*?(?=[«“\"]|$)"),
2106
- J
2107
- ], { value: (e, t) => W(t, {
2108
- contextText: q(e[0]),
2139
+ D("substituer", { flags: "i" }),
2140
+ O,
2141
+ E(D("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
2142
+ W,
2143
+ D("[\\s\\S]*?(?=[«“\"]|$)"),
2144
+ q
2145
+ ], { value: (e, t) => U(t, {
2146
+ contextText: K(e[0]),
2109
2147
  kind: "rewrite_portion",
2110
2148
  replacementCitation: e[6].citation,
2111
- targetReference: e[4] ?? X(e[0])
2112
- }) }), Ir = w([
2113
- c,
2114
- k,
2115
- T("l['’ ]article", { flags: "i" }),
2116
- T("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2117
- T("ins[eé]rer", { flags: "i" }),
2118
- Y,
2119
- J
2120
- ], { value: (e, t) => W(t, {
2149
+ targetReference: e[4] ?? Y(e[0])
2150
+ }) }), zr = k([
2151
+ l,
2152
+ O,
2153
+ D("l['’ ]article", { flags: "i" }),
2154
+ D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2155
+ D("ins[eé]rer", { flags: "i" }),
2156
+ J,
2157
+ q
2158
+ ], { value: (e, t) => U(t, {
2121
2159
  contextText: "",
2122
2160
  insertCitation: e[6].citation,
2123
2161
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
2124
- }) }), Lr = w([
2125
- c,
2126
- k,
2127
- G,
2128
- T("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2129
- O(T("ins[eé]rer", { flags: "i" }), T("ajouter", { flags: "i" })),
2130
- Y,
2131
- J
2132
- ], { value: (e, t) => W(t, {
2162
+ }) }), Br = k([
2163
+ l,
2164
+ O,
2165
+ W,
2166
+ D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2167
+ T(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2168
+ J,
2169
+ q
2170
+ ], { value: (e, t) => U(t, {
2133
2171
  contextText: "",
2134
2172
  insertCitation: e[6].citation,
2135
2173
  kind: S(e[0]),
2136
2174
  targetReference: e[2]
2137
- }) }), Rr = w([
2138
- c,
2139
- k,
2140
- T("l['’ ]alin[eé]a", { flags: "i" }),
2141
- T("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2142
- T("ins[eé]rer", { flags: "i" }),
2143
- Y,
2144
- J
2145
- ], { value: (e, t) => W(t, {
2175
+ }) }), Vr = k([
2176
+ l,
2177
+ O,
2178
+ D("l['’ ]alin[eé]a", { flags: "i" }),
2179
+ D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
2180
+ D("ins[eé]rer", { flags: "i" }),
2181
+ J,
2182
+ q
2183
+ ], { value: (e, t) => U(t, {
2146
2184
  contextText: "",
2147
2185
  insertCitation: e[6].citation,
2148
2186
  kind: S(e[0])
2149
- }) }), zr = w([
2150
- K,
2151
- te,
2152
- T("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2153
- O(T("ins[eé]rer", { flags: "i" }), T("ajouter", { flags: "i" })),
2154
- Y,
2155
- J
2187
+ }) }), Hr = k([
2188
+ G,
2189
+ ne,
2190
+ D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2191
+ T(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2192
+ J,
2193
+ q
2156
2194
  ], { value: (e, t) => {
2157
- let n = e[0], r = X(n), i = e[1];
2158
- return W(t, {
2159
- contextText: q(n),
2195
+ let n = e[0], r = Y(n), i = e[1];
2196
+ return U(t, {
2197
+ contextText: K(n),
2160
2198
  insertCitation: e[5].citation,
2161
- kind: hr(i),
2199
+ kind: vr(i),
2162
2200
  targetReference: r,
2163
- targetScope: mr(i, r)
2201
+ targetScope: _r(i, r)
2164
2202
  });
2165
- } }), Br = w([
2166
- K,
2167
- c,
2168
- k,
2169
- kr,
2170
- T("[\\s\\S]*?(?=ins[eé]rer)"),
2171
- T("ins[eé]rer", { flags: "i" }),
2172
- k,
2173
- Dr
2174
- ], { value: (e, t) => W(t, {
2175
- contextText: q(e[0]),
2203
+ } }), Ur = k([
2204
+ G,
2205
+ l,
2206
+ O,
2207
+ Mr,
2208
+ D("[\\s\\S]*?(?=ins[eé]rer)"),
2209
+ D("ins[eé]rer", { flags: "i" }),
2210
+ O,
2211
+ Ar
2212
+ ], { value: (e, t) => U(t, {
2213
+ contextText: K(e[0]),
2176
2214
  insertCitation: e[7].citation,
2177
2215
  kind: S(e[1]),
2178
2216
  targetCitation: e[3].citation,
2179
- targetReference: X(e[0])
2180
- }) }), Vr = w([
2181
- K,
2182
- c,
2183
- k,
2217
+ targetReference: Y(e[0])
2218
+ }) }), Wr = k([
2184
2219
  G,
2185
- T("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2186
- O(T("ins[eé]rer", { flags: "i" }), T("ajouter", { flags: "i" })),
2187
- Y,
2188
- J
2189
- ], { value: (e, t) => W(t, {
2190
- contextText: q(e[0]),
2220
+ l,
2221
+ O,
2222
+ W,
2223
+ D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2224
+ T(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2225
+ J,
2226
+ q
2227
+ ], { value: (e, t) => U(t, {
2228
+ contextText: K(e[0]),
2191
2229
  insertCitation: e[7].citation,
2192
2230
  kind: S(e[1]),
2193
- targetReference: X(e[0]) ?? e[3]
2194
- }) }), Hr = O(zr, Ir, Lr, Rr, Fr, w([
2195
- K,
2196
- c,
2197
- k,
2198
- kr,
2199
- T("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2200
- O(w([
2201
- T("supprimer", {
2231
+ targetReference: Y(e[0]) ?? e[3]
2232
+ }) }), Gr = T(Hr, zr, Br, Vr, Rr, k([
2233
+ G,
2234
+ l,
2235
+ O,
2236
+ Mr,
2237
+ D("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2238
+ T(k([
2239
+ D("supprimer", {
2202
2240
  flags: "i",
2203
2241
  value: "delete_portion"
2204
2242
  }),
2205
- k,
2206
- _r
2243
+ O,
2244
+ br
2207
2245
  ], { value: (e) => ({
2208
2246
  kind: e[0],
2209
2247
  ...e[2]
2210
- }) }), w([
2211
- T("r[eé]diger\\s+ainsi", {
2248
+ }) }), k([
2249
+ D("r[eé]diger\\s+ainsi", {
2212
2250
  flags: "i",
2213
2251
  value: "rewrite_portion"
2214
2252
  }),
2215
- k,
2216
- _r,
2217
- Y,
2218
- J
2253
+ O,
2254
+ br,
2255
+ J,
2256
+ q
2219
2257
  ], { value: (e) => ({
2220
2258
  kind: e[0],
2221
2259
  replacementCitation: e[4].citation,
@@ -2223,49 +2261,49 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2223
2261
  }) }))
2224
2262
  ], { value: (e, t) => {
2225
2263
  let n = e[5];
2226
- return W(t, {
2227
- contextText: q(e[0]),
2264
+ return U(t, {
2265
+ contextText: K(e[0]),
2228
2266
  kind: n.kind,
2229
2267
  replacementCitation: n.replacementCitation,
2230
2268
  targetCitation: e[3].citation,
2231
- targetReference: X(e[0]) ?? n.targetReference,
2269
+ targetReference: Y(e[0]) ?? n.targetReference,
2232
2270
  targetScope: n.targetScope
2233
2271
  });
2234
- } }), Br, Vr, w([
2235
- gr,
2236
- T("ins[eé]rer", { flags: "i" }),
2237
- T(`[\\s\\S]*?(?=${u})`, { flags: "i" }),
2238
- c,
2239
- Y,
2240
- f,
2241
- Y,
2242
- f
2243
- ], { value: (e, t) => W(t, {
2272
+ } }), Ur, Wr, k([
2273
+ yr,
2274
+ D("ins[eé]rer", { flags: "i" }),
2275
+ D(`[\\s\\S]*?(?=${d})`, { flags: "i" }),
2276
+ l,
2277
+ J,
2278
+ e,
2279
+ J,
2280
+ e
2281
+ ], { value: (e, t) => U(t, {
2244
2282
  contextText: e[0],
2245
2283
  insertCitation: e[8],
2246
2284
  kind: S(e[3]),
2247
2285
  targetCitation: e[6]
2248
- }) }), Pr, Nr, w([
2249
- K,
2250
- T("compl[eé]ter", { flags: "i" }),
2251
- D(w([k, G], { value: (e) => e[1] }), { default: null }),
2252
- Y,
2253
- J
2254
- ], { value: (e, t) => W(t, {
2255
- contextText: q(e[0]),
2286
+ }) }), Lr, Ir, k([
2287
+ G,
2288
+ D("compl[eé]ter", { flags: "i" }),
2289
+ E(k([O, W], { value: (e) => e[1] }), { default: null }),
2290
+ J,
2291
+ q
2292
+ ], { value: (e, t) => U(t, {
2293
+ contextText: K(e[0]),
2256
2294
  insertCitation: e[4].citation,
2257
2295
  kind: "insert_after",
2258
- targetReference: e[2] ?? X(e[0])
2259
- }) }), jr, Mr);
2296
+ targetReference: e[2] ?? Y(e[0])
2297
+ }) }), Pr, Fr);
2260
2298
  //#endregion
2261
2299
  //#region src/lib/server/parsed_amendments.ts
2262
- function Ur(e) {
2300
+ function Kr(e) {
2263
2301
  return e.replace(/\s+/gu, " ").trim();
2264
2302
  }
2265
- function Wr(e) {
2266
- return e.split(/\n/gu).map(Ur).filter(Boolean).join("\n");
2303
+ function qr(e) {
2304
+ return e.split(/\n/gu).map(Kr).filter(Boolean).join("\n");
2267
2305
  }
2268
- function Gr(e, t) {
2306
+ function Jr(e, t) {
2269
2307
  let { start: n, stop: r } = t;
2270
2308
  for (; n < r && /\s/u.test(e[n]);) n++;
2271
2309
  for (; r > n && /\s/u.test(e[r - 1]);) r--;
@@ -2274,16 +2312,16 @@ function Gr(e, t) {
2274
2312
  stop: r
2275
2313
  } : null;
2276
2314
  }
2277
- function Kr(e, t) {
2278
- return _e(ve(e), t);
2315
+ function Yr(e, t) {
2316
+ return _e(ge(e), t);
2279
2317
  }
2280
- function qr(e) {
2318
+ function Xr(e) {
2281
2319
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
2282
2320
  }
2283
- function Jr(e) {
2321
+ function Zr(e) {
2284
2322
  return {
2285
2323
  articleLabel: e.targetArticleLabel ?? null,
2286
- targetPosition: qr(e.targetPosition),
2324
+ targetPosition: Xr(e.targetPosition),
2287
2325
  alinea: e.targetAlinea ?? null,
2288
2326
  alineaLabel: e.targetAlineaLabel ?? null,
2289
2327
  subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
@@ -2291,75 +2329,75 @@ function Jr(e) {
2291
2329
  subpos: e.targetSubpos ?? null
2292
2330
  };
2293
2331
  }
2294
- function Z(e) {
2332
+ function X(e) {
2295
2333
  return {
2296
2334
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2297
2335
  sourcePosition: e.position,
2298
2336
  sourceText: e.text
2299
2337
  };
2300
2338
  }
2301
- function Yr(e) {
2339
+ function Qr(e) {
2302
2340
  return {
2303
2341
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2304
2342
  sourcePosition: e.position,
2305
2343
  sourceText: e.text
2306
2344
  };
2307
2345
  }
2308
- function Xr(e) {
2346
+ function $r(e) {
2309
2347
  return {
2310
2348
  ...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
2311
2349
  ...e === null ? {} : { dispositifPosition: e.position },
2312
2350
  dispositifText: e?.text ?? null
2313
2351
  };
2314
2352
  }
2315
- function Zr(e, t, n, r = Wr(e.slice(n.start, n.stop))) {
2353
+ function ei(e, t, n, r = qr(e.slice(n.start, n.stop))) {
2316
2354
  return {
2317
- originalTransformation: Kr(t, n),
2355
+ originalTransformation: Yr(t, n),
2318
2356
  position: n,
2319
2357
  text: r
2320
2358
  };
2321
2359
  }
2322
- function Qr(e) {
2360
+ function ti(e) {
2323
2361
  let t = e.dispositifHtml ?? e.dispositifText;
2324
2362
  if (!t) return null;
2325
- let n = e.dispositifHtml ? xe()(t) : ge(t), r = n.output, i = Gr(r, {
2363
+ let n = e.dispositifHtml ? he()(t) : xe(t), r = n.output, i = Jr(r, {
2326
2364
  start: 0,
2327
2365
  stop: r.length
2328
2366
  });
2329
2367
  return {
2330
- dispositif: i === null ? null : Zr(r, n, i),
2368
+ dispositif: i === null ? null : ei(r, n, i),
2331
2369
  simplifiedText: r,
2332
2370
  transformation: n
2333
2371
  };
2334
2372
  }
2335
- function Q(e) {
2373
+ function Z(e) {
2336
2374
  if (!e) return [];
2337
- if (e.type === "enumeration") return [...Q(e.left), ...Q(e.right)];
2375
+ if (e.type === "enumeration") return [...Z(e.left), ...Z(e.right)];
2338
2376
  if (e.type === "bounded-interval") {
2339
- let t = Q(e.first)[0], n = Q(e.last)[0];
2377
+ let t = Z(e.first)[0], n = Z(e.last)[0];
2340
2378
  return t !== void 0 && n !== void 0 && n >= t ? Array.from({ length: n - t + 1 }, (e, n) => t + n) : [t, n].filter((e) => e !== void 0);
2341
2379
  }
2342
2380
  if (e.type === "counted-interval") {
2343
- let t = Q(e.first)[0];
2381
+ let t = Z(e.first)[0];
2344
2382
  return t === void 0 ? [] : Array.from({ length: e.count }, (e, n) => t + n);
2345
2383
  }
2346
- if (e.type === "exclusion") return Q(e.left);
2347
- for (let t of a(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2384
+ if (e.type === "exclusion") return Z(e.left);
2385
+ for (let t of h(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2348
2386
  return [];
2349
2387
  }
2350
- function $r(e, t) {
2351
- let n = Q(t);
2388
+ function ni(e, t) {
2389
+ let n = Z(t);
2352
2390
  return {
2353
2391
  ...e,
2354
2392
  alinea: n[0] ?? e.alinea ?? null,
2355
2393
  ...n.length > 0 ? { alineas: n } : {}
2356
2394
  };
2357
2395
  }
2358
- function ei(e) {
2396
+ function ri(e) {
2359
2397
  return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
2360
2398
  }
2361
- function ti(e, t) {
2362
- let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(ei(t.text));
2399
+ function ii(e, t) {
2400
+ let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(ri(t.text));
2363
2401
  if (!n) return null;
2364
2402
  let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
2365
2403
  return !Number.isFinite(r) || r < 1 ? null : {
@@ -2368,25 +2406,25 @@ function ti(e, t) {
2368
2406
  alineas: [r]
2369
2407
  };
2370
2408
  }
2371
- function ni(e, t) {
2409
+ function ai(e, t) {
2372
2410
  if (e) return e.unit === "article" && t.alinea !== null ? {
2373
2411
  ...e,
2374
2412
  unit: "alinéa"
2375
2413
  } : e;
2376
2414
  }
2377
- function ri(e) {
2378
- return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(ei(e.text));
2415
+ function oi(e) {
2416
+ return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(ri(e.text));
2379
2417
  }
2380
- function ii(e, t, n, r) {
2381
- return Zr(e, t, {
2418
+ function si(e, t, n, r) {
2419
+ return ei(e, t, {
2382
2420
  start: n.position.start,
2383
2421
  stop: r.position.stop
2384
2422
  });
2385
2423
  }
2386
- function ai(e) {
2424
+ function ci(e) {
2387
2425
  return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
2388
2426
  }
2389
- function oi(e, t) {
2427
+ function li(e, t) {
2390
2428
  let n = { ...t.position };
2391
2429
  function r(t) {
2392
2430
  let r = t.exec(e.slice(n.start, n.stop));
@@ -2395,39 +2433,39 @@ function oi(e, t) {
2395
2433
  stop: n.stop
2396
2434
  });
2397
2435
  }
2398
- return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), Gr(e, n);
2436
+ return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), Jr(e, n);
2399
2437
  }
2400
- function si(e) {
2401
- return p(e);
2438
+ function ui(e) {
2439
+ return m(e);
2402
2440
  }
2403
- function ci(e, t) {
2404
- return Hr(new E(e.slice(0, t.stop), t.start)) ?? null;
2441
+ function di(e, t) {
2442
+ return Gr(new A(e.slice(0, t.stop), t.start)) ?? null;
2405
2443
  }
2406
- function $(e, t, n) {
2407
- if (n) return Zr(e, t, n.position, Wr(ue(e, n)));
2444
+ function Q(e, t, n) {
2445
+ if (n) return ei(e, t, n.position, qr(ae(e, n)));
2408
2446
  }
2409
- function li(e, t) {
2447
+ function fi(e, t) {
2410
2448
  if (!e) return;
2411
2449
  let n = structuredClone(e);
2412
- for (let e of g(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Kr(t, e.position));
2450
+ for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Yr(t, e.position));
2413
2451
  return n;
2414
2452
  }
2415
- function ui(e, t, n, r) {
2416
- let i = oi(e, n);
2453
+ function pi(e, t, n, r) {
2454
+ let i = li(e, n);
2417
2455
  if (!i) return null;
2418
- let a = ci(e, i);
2456
+ let a = di(e, i);
2419
2457
  if (!a) return null;
2420
- let o = Zr(e, t, i), s = li(a.targetReference, t), c = $r(r, s), l = si(o.text);
2458
+ let o = ei(e, t, i), s = fi(a.targetReference, t), c = ni(r, s), l = ui(o.text);
2421
2459
  if (a.kind === "delete_article") return {
2422
2460
  kind: "delete_article",
2423
- ...Z(o),
2461
+ ...X(o),
2424
2462
  target: c
2425
2463
  };
2426
2464
  if (a.kind === "delete_portion") {
2427
- let n = $(e, t, a.targetCitation);
2465
+ let n = Q(e, t, a.targetCitation);
2428
2466
  return {
2429
2467
  kind: "delete_portion",
2430
- ...Z(o),
2468
+ ...X(o),
2431
2469
  target: c,
2432
2470
  ...n === void 0 ? {} : {
2433
2471
  targetCitation: n,
@@ -2435,16 +2473,16 @@ function ui(e, t, n, r) {
2435
2473
  },
2436
2474
  targetOccurrence: l,
2437
2475
  targetReference: s,
2438
- targetScope: ni(a.targetScope, c)
2476
+ targetScope: ai(a.targetScope, c)
2439
2477
  };
2440
2478
  }
2441
2479
  if (a.kind === "rewrite_portion") {
2442
- let n = $(e, t, a.replacementCitation);
2480
+ let n = Q(e, t, a.replacementCitation);
2443
2481
  if (!n) return null;
2444
- let r = $(e, t, a.targetCitation);
2482
+ let r = Q(e, t, a.targetCitation);
2445
2483
  return {
2446
2484
  kind: "rewrite_portion",
2447
- ...Z(o),
2485
+ ...X(o),
2448
2486
  target: c,
2449
2487
  ...r === void 0 ? {} : {
2450
2488
  targetCitation: r,
@@ -2452,16 +2490,16 @@ function ui(e, t, n, r) {
2452
2490
  },
2453
2491
  targetOccurrence: l,
2454
2492
  targetReference: s,
2455
- targetScope: ni(a.targetScope, c),
2493
+ targetScope: ai(a.targetScope, c),
2456
2494
  replacementCitation: n,
2457
2495
  replacementText: n.text
2458
2496
  };
2459
2497
  }
2460
2498
  if (a.kind === "replace") {
2461
- let n = $(e, t, a.replacementCitation), r = $(e, t, a.targetCitation);
2499
+ let n = Q(e, t, a.replacementCitation), r = Q(e, t, a.targetCitation);
2462
2500
  return !n || !r ? null : {
2463
2501
  kind: "replace",
2464
- ...Z(o),
2502
+ ...X(o),
2465
2503
  target: c,
2466
2504
  targetCitation: r,
2467
2505
  targetText: r.text,
@@ -2472,32 +2510,32 @@ function ui(e, t, n, r) {
2472
2510
  };
2473
2511
  }
2474
2512
  if (a.kind === "insert_article_after") {
2475
- let n = $(e, t, a.insertCitation);
2513
+ let n = Q(e, t, a.insertCitation);
2476
2514
  return n ? {
2477
2515
  kind: "insert_article_after",
2478
- ...Z(o),
2516
+ ...X(o),
2479
2517
  target: c,
2480
2518
  insertCitation: n,
2481
2519
  insertText: n.text
2482
2520
  } : null;
2483
2521
  }
2484
2522
  if (a.kind === "insert_article_before") {
2485
- let n = $(e, t, a.insertCitation);
2523
+ let n = Q(e, t, a.insertCitation);
2486
2524
  return n ? {
2487
2525
  kind: "insert_article_before",
2488
- ...Z(o),
2526
+ ...X(o),
2489
2527
  target: c,
2490
2528
  insertCitation: n,
2491
2529
  insertText: n.text
2492
2530
  } : null;
2493
2531
  }
2494
2532
  if (a.kind === "insert_after" || a.kind === "insert_before") {
2495
- let n = $(e, t, a.insertCitation);
2533
+ let n = Q(e, t, a.insertCitation);
2496
2534
  if (!n) return null;
2497
- let r = $(e, t, a.targetCitation);
2535
+ let r = Q(e, t, a.targetCitation);
2498
2536
  return {
2499
2537
  kind: a.kind,
2500
- ...Z(o),
2538
+ ...X(o),
2501
2539
  target: c,
2502
2540
  ...r === void 0 ? {} : {
2503
2541
  targetCitation: r,
@@ -2507,19 +2545,19 @@ function ui(e, t, n, r) {
2507
2545
  targetReference: s,
2508
2546
  insertCitation: n,
2509
2547
  insertText: n.text,
2510
- targetScope: ni(a.targetScope, c)
2548
+ targetScope: ai(a.targetScope, c)
2511
2549
  };
2512
2550
  }
2513
2551
  return null;
2514
2552
  }
2515
- function di(e, t) {
2553
+ function mi(e, t) {
2516
2554
  let n = [], r = 0, i = 0;
2517
2555
  function a(r) {
2518
- let a = Gr(e, {
2556
+ let a = Jr(e, {
2519
2557
  start: i,
2520
2558
  stop: r
2521
2559
  });
2522
- a !== null && n.push(Zr(e, t, a));
2560
+ a !== null && n.push(ei(e, t, a));
2523
2561
  }
2524
2562
  function o(t) {
2525
2563
  let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
@@ -2537,7 +2575,7 @@ function di(e, t) {
2537
2575
  continue;
2538
2576
  }
2539
2577
  if (r > 0) continue;
2540
- let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && ri({
2578
+ let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && oi({
2541
2579
  originalTransformation: void 0,
2542
2580
  position: {
2543
2581
  start: i,
@@ -2549,8 +2587,8 @@ function di(e, t) {
2549
2587
  }
2550
2588
  return a(e.length), n;
2551
2589
  }
2552
- function fi(e) {
2553
- let t = Qr(e), n = t?.dispositif ?? null, r = Xr(n), i = [], a = [], o = Jr(e);
2590
+ function hi(e) {
2591
+ let t = ti(e), n = t?.dispositif ?? null, r = $r(n), i = [], a = [], o = Zr(e);
2554
2592
  if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
2555
2593
  code: "unsupported_sub_amendment",
2556
2594
  message: "Les sous-amendements ne sont pas encore projetés."
@@ -2568,9 +2606,9 @@ function fi(e) {
2568
2606
  });
2569
2607
  else {
2570
2608
  let { simplifiedText: e, transformation: r } = t, s = o, c = null;
2571
- for (let t of di(e, r)) {
2572
- ai(t) && (s = o, c = null);
2573
- let n = c ? ii(e, r, c, t) : t, i = ui(e, r, n, s);
2609
+ for (let t of mi(e, r)) {
2610
+ ci(t) && (s = o, c = null);
2611
+ let n = c ? si(e, r, c, t) : t, i = pi(e, r, n, s);
2574
2612
  if (i) {
2575
2613
  a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
2576
2614
  continue;
@@ -2579,23 +2617,23 @@ function fi(e) {
2579
2617
  c = n;
2580
2618
  continue;
2581
2619
  }
2582
- let l = ti(o, t);
2620
+ let l = ii(o, t);
2583
2621
  if (l !== null) {
2584
2622
  s = l;
2585
2623
  continue;
2586
2624
  }
2587
- ri(t) && (c = t);
2625
+ oi(t) && (c = t);
2588
2626
  }
2589
2627
  a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
2590
2628
  kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
2591
- ...Z(n),
2629
+ ...X(n),
2592
2630
  target: o,
2593
2631
  insertCitation: n,
2594
2632
  insertText: n.text
2595
2633
  }), a.length === 0 && i.push({
2596
2634
  code: "unrecognized_dispositif",
2597
2635
  message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
2598
- ...Yr(n)
2636
+ ...Qr(n)
2599
2637
  });
2600
2638
  }
2601
2639
  return {
@@ -2609,25 +2647,25 @@ function fi(e) {
2609
2647
  }
2610
2648
  //#endregion
2611
2649
  //#region src/lib/server/senat_document_search.ts
2612
- function pi(e) {
2650
+ function $(e) {
2613
2651
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2614
2652
  }
2615
- function mi(e) {
2616
- let t = C(e);
2653
+ function gi(e) {
2654
+ let t = u(e);
2617
2655
  if (!t) return {
2618
2656
  articleNumber: null,
2619
2657
  label: e,
2620
2658
  title: null
2621
2659
  };
2622
- let n = pi(t.num ?? "") || null, r = pi(t.title ?? "") || null;
2660
+ let n = $(t.num ?? "") || null, r = $(t.title ?? "") || null;
2623
2661
  return {
2624
2662
  articleNumber: n,
2625
2663
  label: t.label,
2626
2664
  title: r
2627
2665
  };
2628
2666
  }
2629
- function hi(e) {
2630
- let t = b(e), n = [], r = pi(t("section.akn-preamble").text());
2667
+ function _i(e) {
2668
+ let t = w(e), n = [], r = $(t("section.akn-preamble").text());
2631
2669
  return r && n.push({
2632
2670
  anchor: "senat-expose-des-motifs",
2633
2671
  articleNumber: null,
@@ -2637,9 +2675,9 @@ function hi(e) {
2637
2675
  label: "Exposé des motifs",
2638
2676
  title: null
2639
2677
  }), t("article.akn-article").each((e, r) => {
2640
- let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = pi(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = mi(o || s), l = i.clone();
2678
+ let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = $(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = gi(o || s), l = i.clone();
2641
2679
  l.children("p.TCNumArticle").remove();
2642
- let u = pi(l.text());
2680
+ let u = $(l.text());
2643
2681
  u && n.push({
2644
2682
  anchor: i.attr("id") || null,
2645
2683
  articleNumber: c.articleNumber,
@@ -2651,40 +2689,40 @@ function hi(e) {
2651
2689
  });
2652
2690
  }), n;
2653
2691
  }
2654
- function gi(e, t) {
2655
- return ke("sha256").update(JSON.stringify({
2692
+ function vi(e, t) {
2693
+ return Oe("sha256").update(JSON.stringify({
2656
2694
  item: e,
2657
2695
  metadata: t
2658
2696
  })).digest("hex");
2659
2697
  }
2660
2698
  //#endregion
2661
2699
  //#region src/lib/server/senat_document_sources.ts
2662
- var _i = new Set(["senat.fr", "www.senat.fr"]), vi = "https://www.senat.fr";
2663
- function yi(e) {
2700
+ var yi = new Set(["senat.fr", "www.senat.fr"]), bi = "https://www.senat.fr";
2701
+ function xi(e) {
2664
2702
  return e?.trim() || void 0;
2665
2703
  }
2666
- function bi(e) {
2704
+ function Si(e) {
2667
2705
  try {
2668
- let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, vi);
2669
- return _i.has(n.hostname.toLowerCase()) ? n : void 0;
2706
+ let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, bi);
2707
+ return yi.has(n.hostname.toLowerCase()) ? n : void 0;
2670
2708
  } catch {
2671
2709
  return;
2672
2710
  }
2673
2711
  }
2674
- function xi(e) {
2675
- let t = yi(e);
2712
+ function Ci(e) {
2713
+ let t = xi(e);
2676
2714
  if (t === void 0) return {
2677
2715
  publicUrl: null,
2678
2716
  status: "no_url"
2679
2717
  };
2680
- let n = bi(t);
2718
+ let n = Si(t);
2681
2719
  if (n === void 0) return {
2682
2720
  publicUrl: t,
2683
2721
  status: "unsupported_source"
2684
2722
  };
2685
2723
  let r = n.pathname;
2686
2724
  if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
2687
- akomaNtosoUrl: `${vi}${r}`,
2725
+ akomaNtosoUrl: `${bi}${r}`,
2688
2726
  publicUrl: n.toString(),
2689
2727
  status: "available"
2690
2728
  };
@@ -2693,17 +2731,17 @@ function xi(e) {
2693
2731
  publicUrl: n.toString(),
2694
2732
  status: "unsupported_source"
2695
2733
  } : {
2696
- akomaNtosoUrl: `${vi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2734
+ akomaNtosoUrl: `${bi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2697
2735
  publicUrl: n.toString(),
2698
2736
  status: "available"
2699
2737
  };
2700
2738
  }
2701
- function Si(e) {
2739
+ function wi(e) {
2702
2740
  return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
2703
2741
  }
2704
2742
  //#endregion
2705
2743
  //#region src/lib/alineas/alineas_numbers.ts
2706
- var Ci = {
2744
+ var Ti = {
2707
2745
  "0150a855548f15a2af52ea057be53f5d": 1,
2708
2746
  "039826cf379b94afefe90b25c6045ca0": 1,
2709
2747
  "03a7e564b84662f4d957c51018e26244": 1,
@@ -21677,7 +21715,7 @@ var Ci = {
21677
21715
  d16d29c923bd60c7b095b66c6058fe60: 1664,
21678
21716
  "1c14c2adf5cfda3220b2057160e10e91": 1665,
21679
21717
  e44c55ca1ac46ff46420686a466c9fc6: 1665
21680
- }, wi = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", Ti = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", Ei = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", Di = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Oi = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", ki = {
21718
+ }, Ei = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", Di = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", Oi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", ki = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Ai = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", ji = {
21681
21719
  assnatetatagr: { bold: !0 },
21682
21720
  assnatetatagrgr: { bold: !0 },
21683
21721
  assnatetatatr: { bold: !0 },
@@ -21778,29 +21816,29 @@ var Ci = {
21778
21816
  assnatxl67: { align: "center" },
21779
21817
  assnatenteteequilibre: { align: "center" }
21780
21818
  };
21781
- function Ai(e) {
21782
- let t = Object.keys(ki).sort((e, t) => t.length - e.length);
21783
- for (let n of t) if (e.includes(n)) return ki[n];
21819
+ function Mi(e) {
21820
+ let t = Object.keys(ji).sort((e, t) => t.length - e.length);
21821
+ for (let n of t) if (e.includes(n)) return ji[n];
21784
21822
  return null;
21785
21823
  }
21786
- function ji(e) {
21787
- return Oe.createHash("md5").update(e).digest("hex");
21824
+ function Ni(e) {
21825
+ return De.createHash("md5").update(e).digest("hex");
21788
21826
  }
21789
- function Mi(e) {
21827
+ function Pi(e) {
21790
21828
  return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21791
21829
  }
21792
- function Ni(e) {
21830
+ function Fi(e) {
21793
21831
  return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21794
21832
  }
21795
- function Pi(e) {
21833
+ function Ii(e) {
21796
21834
  if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
21797
21835
  let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
21798
21836
  return !(t && parseFloat(t[1]) < 8);
21799
21837
  }
21800
- function Fi(e) {
21838
+ function Li(e) {
21801
21839
  return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
21802
21840
  }
21803
- function Ii(e) {
21841
+ function Ri(e) {
21804
21842
  if (!e) return;
21805
21843
  let t = [
21806
21844
  "width",
@@ -21835,15 +21873,15 @@ function Ii(e) {
21835
21873
  }
21836
21874
  return n.length > 0 ? n.join("; ") : void 0;
21837
21875
  }
21838
- function Li(e, t) {
21876
+ function zi(e, t) {
21839
21877
  return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
21840
21878
  }
21841
- function Ri(e) {
21879
+ function Bi(e) {
21842
21880
  if (!e) return null;
21843
21881
  let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
21844
21882
  return t ? t[1].toLowerCase() : null;
21845
21883
  }
21846
- function zi(e) {
21884
+ function Vi(e) {
21847
21885
  if (!e) return null;
21848
21886
  for (let [t, n] of [
21849
21887
  [/assnat1Tome|assnatAN1PARTIE/i, 1],
@@ -21855,8 +21893,8 @@ function zi(e) {
21855
21893
  ]) if (t.test(e)) return n;
21856
21894
  return null;
21857
21895
  }
21858
- function Bi(e, t = {}) {
21859
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = b(e, { xml: { decodeEntities: !1 } });
21896
+ function Hi(e, t = {}) {
21897
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
21860
21898
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21861
21899
  let n = a(t).closest("table");
21862
21900
  n.length > 0 && n.remove();
@@ -21881,7 +21919,7 @@ function Bi(e, t = {}) {
21881
21919
  if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
21882
21920
  let e = i.attr();
21883
21921
  if (e && (e.width === "45" && (e.height === "31" || e.height === "30") || parseInt(e.width || "0", 10) < 50 && parseInt(e.height || "0", 10) < 50) && r.includes("position:absolute")) {
21884
- let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? ji(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21922
+ let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ni(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21885
21923
  n.replaceWith(`<span class="alinea"${i}></span>`);
21886
21924
  return;
21887
21925
  }
@@ -21900,7 +21938,7 @@ function Bi(e, t = {}) {
21900
21938
  (!r || r === "\xA0") && n.remove();
21901
21939
  }), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
21902
21940
  function o(e) {
21903
- let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Mi(n) || r === "b" || r === "strong", o = Ni(n) || r === "i" || r === "em", s = Pi(n) || r === "sup", c = Fi(n) || r === "sub", l = t.attr("class") || "";
21941
+ let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Pi(n) || r === "b" || r === "strong", o = Fi(n) || r === "i" || r === "em", s = Ii(n) || r === "sup", c = Li(n) || r === "sub", l = t.attr("class") || "";
21904
21942
  return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
21905
21943
  bold: i,
21906
21944
  italic: o,
@@ -21934,7 +21972,7 @@ function Bi(e, t = {}) {
21934
21972
  c = e;
21935
21973
  }
21936
21974
  for (a("p").each((e, t) => {
21937
- let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = zi(i);
21975
+ let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Vi(i);
21938
21976
  if (i.includes("assnatFARCouvTitreD")) {
21939
21977
  let e = r.html() || "";
21940
21978
  r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
@@ -21967,11 +22005,11 @@ function Bi(e, t = {}) {
21967
22005
  let c = r.text().trim().startsWith("«");
21968
22006
  if (s && !c) {
21969
22007
  let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
21970
- n && Li(o, i) && e.attr("align", "center"), r.replaceWith(e);
22008
+ n && zi(o, i) && e.attr("align", "center"), r.replaceWith(e);
21971
22009
  } else {
21972
- let e = Ai(i), t;
22010
+ let e = Mi(i), t;
21973
22011
  if (n) {
21974
- let n = Ri(o);
22012
+ let n = Bi(o);
21975
22013
  n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
21976
22014
  }
21977
22015
  if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
@@ -21981,7 +22019,7 @@ function Bi(e, t = {}) {
21981
22019
  }
21982
22020
  }), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
21983
22021
  let r = a(t), i = r.attr("style"), o = r.attr("class");
21984
- n && Li(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
22022
+ n && zi(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21985
22023
  }), a("a").each((e, t) => {
21986
22024
  let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
21987
22025
  for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
@@ -22020,7 +22058,7 @@ function Bi(e, t = {}) {
22020
22058
  }), a("br").each((e, t) => {
22021
22059
  a(t).removeAttr("style").removeAttr("class");
22022
22060
  }), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
22023
- let n = a(t), r = Ii(n.attr("style"));
22061
+ let n = a(t), r = Ri(n.attr("style"));
22024
22062
  n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
22025
22063
  }), a("td, th").each((e, t) => {
22026
22064
  let n = a(t), r = n.children();
@@ -22038,17 +22076,17 @@ function Bi(e, t = {}) {
22038
22076
  !isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
22039
22077
  }
22040
22078
  }), a("li").each((e, t) => {
22041
- let n = a(t), r = Ri(n.attr("style"));
22079
+ let n = a(t), r = Bi(n.attr("style"));
22042
22080
  n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
22043
22081
  let i = n.html() || "", o = i.replace(/^(\s|&#xa0;|&#160;|\u00a0)+/, "");
22044
22082
  o !== i && n.html(o);
22045
- }), Vi(a), Hi(a, i);
22083
+ }), Ui(a), Wi(a, i);
22046
22084
  let l = a("body").html() || a.html(), u = l.includes("class=\"alinea"), d = a("ol").length > 0, f = a("h1, h2, h3, h4, h5, h6").length > 0, p = l.includes("class=\"expose-motifs"), m = l.includes("class=\"cover-title\"") || l.includes("class=\"cover-subtitle\"") || l.includes("class=\"cover-info\"") || l.includes("class=\"cover-year\""), h = "";
22047
- m && (h += Oi), f && (h += Ti), p && (h += Ei), u && (h += wi), d && (h += Di);
22085
+ m && (h += Ai), f && (h += Di), p && (h += Oi), u && (h += Ei), d && (h += ki);
22048
22086
  let g = h ? `<style>${h}</style>\n${l}` : l;
22049
- return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Ui(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
22087
+ return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/&nbsp;/g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Gi(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*(&nbsp;|&#xa0;|&#160;|\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>(&nbsp;|&#xa0;|&#160;|\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
22050
22088
  }
22051
- function Vi(e) {
22089
+ function Ui(e) {
22052
22090
  e("span[id]").each((t, n) => {
22053
22091
  let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
22054
22092
  if (o.length !== 1 || o[0] !== "id") return;
@@ -22071,13 +22109,13 @@ function Vi(e) {
22071
22109
  l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
22072
22110
  });
22073
22111
  }
22074
- function Hi(e, t = !1) {
22112
+ function Wi(e, t = !1) {
22075
22113
  let n = e("body");
22076
22114
  if (n.length === 0) return;
22077
22115
  let r = n.find("span.alinea[data-image-hash]"), i = -1;
22078
22116
  r.each((n, r) => {
22079
22117
  let a = e(r), o = a.attr("data-image-hash"), s;
22080
- if (o && Ci[o] !== void 0 && (s = Ci[o]), s === void 0) {
22118
+ if (o && Ti[o] !== void 0 && (s = Ti[o]), s === void 0) {
22081
22119
  if (t) throw Error(`Missing alinea number mapping for image hash: "${o}". Please extract images, review them, and update the mapping in "src/lib/alineas/alineas_numbers.ts".`);
22082
22120
  a.remove();
22083
22121
  return;
@@ -22089,11 +22127,11 @@ function Hi(e, t = !1) {
22089
22127
  i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
22090
22128
  });
22091
22129
  }
22092
- function Ui(e) {
22130
+ function Gi(e) {
22093
22131
  let t = e;
22094
22132
  return t = t.replace(/<\/strong>(\s*)<strong>/gi, "$1"), t = t.replace(/<\/em>(\s*)<em>/gi, "$1"), t = t.replace(/<\/sup>(\s*)<sup>/gi, "$1"), t = t.replace(/<\/sub>(\s*)<sub>/gi, "$1"), t;
22095
22133
  }
22096
- function Wi(e, t = {}) {
22134
+ function Ki(e, t = {}) {
22097
22135
  return `<!DOCTYPE html>
22098
22136
  <html lang="fr">
22099
22137
  <head>
@@ -22101,33 +22139,33 @@ function Wi(e, t = {}) {
22101
22139
  <title>Document simplifié</title>
22102
22140
  </head>
22103
22141
  <body>
22104
- ${Bi(e, t)}
22142
+ ${Hi(e, t)}
22105
22143
  </body>
22106
22144
  </html>`;
22107
22145
  }
22108
22146
  //#endregion
22109
22147
  //#region src/lib/server/text_parsers/transformers.ts
22110
- function Gi(e, t) {
22148
+ function qi(e, t) {
22111
22149
  let n = "transformation_", r = {};
22112
- for (let e of A.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
22150
+ for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
22113
22151
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
22114
22152
  for (let e of a.slice(1)) {
22115
22153
  let t = o.transformations ??= [];
22116
22154
  for (; e >= t.length;) t.push({});
22117
22155
  o = t[e];
22118
22156
  }
22119
- o.output = A.readFileSync(Ae.join(t, `${n}${i}.html`), { encoding: "utf-8" });
22120
- let { sourceMap: s, title: c } = A.readJsonSync(Ae.join(t, e), { encoding: "utf-8" });
22157
+ o.output = j.readFileSync(ke.join(t, `${n}${i}.html`), { encoding: "utf-8" });
22158
+ let { sourceMap: s, title: c } = j.readJsonSync(ke.join(t, e), { encoding: "utf-8" });
22121
22159
  o.sourceMap = s ?? [], o.title = c;
22122
22160
  }
22123
- return Ki(r, e), r;
22161
+ return Ji(r, e), r;
22124
22162
  }
22125
- function Ki(e, t) {
22126
- if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Ki(n, t), t = n.output;
22163
+ function Ji(e, t) {
22164
+ if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Ji(n, t), t = n.output;
22127
22165
  return t;
22128
22166
  }
22129
- function qi(e, t, n = "1") {
22130
- if (A.ensureDirSync(t), e.transformations === void 0) A.writeJsonSync(Ae.join(t, `transformation_${n}.json`), {
22167
+ function Yi(e, t, n = "1") {
22168
+ if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(ke.join(t, `transformation_${n}.json`), {
22131
22169
  sourceMap: e.sourceMap,
22132
22170
  title: e.title
22133
22171
  }, {
@@ -22135,24 +22173,24 @@ function qi(e, t, n = "1") {
22135
22173
  spaces: 2
22136
22174
  });
22137
22175
  else {
22138
- A.writeJsonSync(Ae.join(t, `transformation_${n}.json`), { title: e.title }, {
22176
+ j.writeJsonSync(ke.join(t, `transformation_${n}.json`), { title: e.title }, {
22139
22177
  encoding: "utf-8",
22140
22178
  spaces: 2
22141
22179
  });
22142
- for (let [r, i] of e.transformations.entries()) qi(i, t, `${n}.${r + 1}`);
22180
+ for (let [r, i] of e.transformations.entries()) Yi(i, t, `${n}.${r + 1}`);
22143
22181
  }
22144
- e.output !== void 0 && A.writeFileSync(Ae.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22182
+ e.output !== void 0 && j.writeFileSync(ke.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
22145
22183
  }
22146
22184
  //#endregion
22147
22185
  //#region src/lib/server/linkers/html.ts
22148
- async function Ji({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
22149
- let _ = t ?? (e === void 0 ? void 0 : new se(e));
22186
+ async function Xi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
22187
+ let _ = t ?? (e === void 0 ? void 0 : new C(e));
22150
22188
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
22151
- let v = await A.readFile(i, { encoding: "utf-8" }), y;
22152
- a === void 0 ? (y = xe({ removeAWithHref: !0 })(v), o !== void 0 && qi(y, o)) : y = Gi(v, a);
22189
+ let v = await j.readFile(i, { encoding: "utf-8" }), y;
22190
+ a === void 0 ? (y = he({ removeAWithHref: !0 })(v), o !== void 0 && Yi(y, o)) : y = qi(v, a);
22153
22191
  let b = [];
22154
22192
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
22155
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
22193
+ let { outputByType: x, referredLegifranceTextCountByCid: ee } = await ue({
22156
22194
  legiResolver: _,
22157
22195
  date: n,
22158
22196
  defaultTextId: r,
@@ -22169,38 +22207,38 @@ async function Ji({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
22169
22207
  s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
22170
22208
  for (let [e, t] of Object.entries(x)) {
22171
22209
  let n = S[e];
22172
- n !== void 0 && await A.writeFile(n, t.html, { encoding: "utf-8" });
22210
+ n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
22173
22211
  }
22174
- x.links !== void 0 && l !== void 0 && qi(xe()(x.links.html), l), g !== void 0 && await A.writeJson(g, ee, {
22212
+ x.links !== void 0 && l !== void 0 && Yi(he()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
22175
22213
  encoding: "utf-8",
22176
22214
  spaces: 2
22177
22215
  });
22178
22216
  }
22179
22217
  //#endregion
22180
22218
  //#region src/lib/server/tables_of_contents.ts
22181
- async function Yi(e, t, n, r) {
22182
- let i = Gi(await A.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new E(a), s = await A.readJson(n, { encoding: "utf-8" });
22219
+ async function Zi(e, t, n, r) {
22220
+ let i = qi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new A(a), s = await j.readJson(n, { encoding: "utf-8" });
22183
22221
  for await (let e of ce({
22184
22222
  context: o,
22185
22223
  tableOfContents: s,
22186
22224
  transformation: i
22187
22225
  }));
22188
- await A.writeJson(r, s, {
22226
+ await j.writeJson(r, s, {
22189
22227
  encoding: "utf-8",
22190
22228
  spaces: 2
22191
22229
  });
22192
22230
  }
22193
- async function Xi(e, t, n) {
22194
- let r = Gi(await A.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22195
- await A.writeJson(n, i, {
22231
+ async function Qi(e, t, n) {
22232
+ let r = qi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22233
+ await j.writeJson(n, i, {
22196
22234
  encoding: "utf-8",
22197
22235
  spaces: 2
22198
22236
  });
22199
22237
  }
22200
22238
  //#endregion
22201
22239
  //#region src/lib/server/legi/resolvers.ts
22202
- function Zi({ canutesDb: e }) {
22203
- return new se(e);
22240
+ function $i({ canutesDb: e }) {
22241
+ return new C(e);
22204
22242
  }
22205
22243
  //#endregion
22206
- export { Ee as LegiResolver, Ji as addLinksOrReferencesToHtmlFile, Yi as addPositionsToTableOfContentsFile, Se as buildAndInstallTextTitlesInfos, we as buildTextTitlesInfos, Zi as createLegiResolver, Pe as extractAssembleeAmendmentSearchItems, sr as extractAssembleeExposesDesMotifs, fr as extractSenatAmendmentSearchItems, Fe as hashAssembleeAmendmentSearchItem, lr as hashAssembleeSearchItem, pr as hashSenatAmendmentSearchItem, gi as hashSenatSearchItem, Si as isAkomaNtosoXml, ur as isoDateFromAssembleeDocument, rr as linkAkomaNtosoBillRaw, dn as linkAssembleeBillRaw, nr as parseAkomaNtosoBillRaw, fi as parseAmendment, un as parseAssembleeBillRaw, cr as parseAssembleeDocumentSearchContent, hi as parseSenatDocumentSearchContent, Gi as readTransformation, Qn as renderAkomaNtosoBillRaw, xi as resolveSenatAkomaNtosoSource, Xi as simplifiedHtmlBillFileToTableOfContentsFile, Bi as simplifyWordHtml, Wi as simplifyWordHtmlToDocument, qi as writeTransformation };
22244
+ export { we as LegiResolver, Xi as addLinksOrReferencesToHtmlFile, Zi as addPositionsToTableOfContentsFile, Se as buildAndInstallTextTitlesInfos, Ce as buildTextTitlesInfos, $i as createLegiResolver, Ne as extractAssembleeAmendmentSearchItems, ur as extractAssembleeExposesDesMotifs, hr as extractSenatAmendmentSearchItems, Pe as hashAssembleeAmendmentSearchItem, fr as hashAssembleeSearchItem, gr as hashSenatAmendmentSearchItem, vi as hashSenatSearchItem, wi as isAkomaNtosoXml, pr as isoDateFromAssembleeDocument, or as linkAkomaNtosoBillRaw, mn as linkAssembleeBillRaw, ar as parseAkomaNtosoBillRaw, hi as parseAmendment, pn as parseAssembleeBillRaw, dr as parseAssembleeDocumentSearchContent, _i as parseSenatDocumentSearchContent, qi as readTransformation, tr as renderAkomaNtosoBillRaw, Ci as resolveSenatAkomaNtosoSource, Qi as simplifiedHtmlBillFileToTableOfContentsFile, Hi as simplifyWordHtml, Ki as simplifyWordHtmlToDocument, Yi as writeTransformation };