@tricoteuses/tisseuse 0.16.1 → 0.16.2

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 (2) hide show
  1. package/dist/server.js +673 -652
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,11 +1,11 @@
1
- import { A as e, B as t, C as n, Ct as r, D as i, E as a, Et as o, F as s, It as c, J as l, Lt as u, O as d, Q as f, R as p, S as m, T as h, Tt as g, Z as _, b as v, c as y, g as b, h as x, it as ee, j as S, jt as te, k as C, kt as ne, m as re, mt as ie, n as ae, nt as oe, ot as w, p as se, s as ce, t as le, u as ue, v as de, wt as fe, x as pe, yt as me } from "./html-BTeBbxJE.js";
2
- import { $ as he, Dt as T, Et as E, F as ge, I as _e, N as ve, Nt as D, O as ye, Tt as O, ct as be, et as xe, ht as Se, jt as k, k as Ce, kt as we, n as Te, o as Ee, r as De, st as Oe, t as ke, vt as A } from "./resolver-CuP8arVX.js";
3
- import * as Ae from "node:crypto";
4
- import { createHash as je } from "node:crypto";
5
- import j from "fs-extra";
6
- import M from "node:path";
1
+ import { A as e, B as t, C as n, Ct as r, D as i, E as a, Et as o, F as s, It as c, J as l, Lt as u, O as d, Q as f, R as p, S as m, T as h, Tt as g, Z as _, b as v, c as y, g as b, h as x, it as ee, j as S, jt as te, k as ne, kt as re, m as ie, mt as ae, n as oe, nt as se, ot as C, p as ce, s as le, t as ue, u as de, v as fe, wt as pe, x as me, yt as he } from "./html-BTeBbxJE.js";
2
+ import { $ as ge, Dt as w, Et as T, F as _e, I as ve, N as ye, Nt as E, O as be, Tt as D, ct as xe, et as Se, ht as Ce, jt as O, k as we, kt as Te, n as Ee, o as De, r as Oe, st as ke, t as Ae, vt as k } from "./resolver-CuP8arVX.js";
3
+ import * as je from "node:crypto";
4
+ import { createHash as Me } from "node:crypto";
5
+ import A from "fs-extra";
6
+ import Ne from "node:path";
7
7
  //#region src/lib/server/assemblee_amendment_search.ts
8
- function Me(e, t) {
8
+ function Pe(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 Me(e, t) {
13
13
  }
14
14
  return typeof n == "string" && n.trim() ? n.trim() : null;
15
15
  }
16
- function Ne(e) {
16
+ function Fe(e) {
17
17
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
18
18
  }
19
- function Pe(e) {
20
- return Ne(w(e).text());
19
+ function Ie(e) {
20
+ return Fe(C(e).text());
21
21
  }
22
- function Fe(e) {
23
- let t = Ne([
24
- Me(e, [
22
+ function Le(e) {
23
+ let t = Fe([
24
+ Pe(e, [
25
25
  "corps",
26
26
  "contenuAuteur",
27
27
  "dispositif"
28
28
  ]),
29
- Me(e, [
29
+ Pe(e, [
30
30
  "corps",
31
31
  "contenuAuteur",
32
32
  "dispositifAmdtCreditPLF"
33
33
  ]),
34
- Me(e, [
34
+ Pe(e, [
35
35
  "corps",
36
36
  "contenuAuteur",
37
37
  "dispositifAmdtCreditPLFR"
38
38
  ])
39
- ].filter((e) => e !== null).map((e) => Pe(e)).join("\n")), n = Me(e, [
39
+ ].filter((e) => e !== null).map((e) => Ie(e)).join("\n")), n = Pe(e, [
40
40
  "corps",
41
41
  "contenuAuteur",
42
42
  "exposeSommaire"
43
- ]), r = n === null ? "" : Pe(n);
43
+ ]), r = n === null ? "" : Ie(n);
44
44
  return [...t ? [{
45
45
  content: t,
46
46
  itemKind: "dispositif",
@@ -51,24 +51,24 @@ function Fe(e) {
51
51
  label: "Exposé sommaire"
52
52
  }] : []];
53
53
  }
54
- function Ie(e, t) {
55
- return je("sha256").update(JSON.stringify({
54
+ function Re(e, t) {
55
+ return Me("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 N(e) {
62
+ function j(e) {
63
63
  switch (e.type) {
64
- case "reference_et_action": return N(e.reference);
65
- case "enumeration": return [...N(e.left), ...N(e.right)];
64
+ case "reference_et_action": return j(e.reference);
65
+ case "enumeration": return [...j(e.left), ...j(e.right)];
66
66
  case "parent-enfant": {
67
67
  let t = [...c(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 ? [] : N(e.child).map((t) => ({
71
+ }] : t.length > 1 ? [] : j(e.child).map((t) => ({
72
72
  article: t.article,
73
73
  reference: {
74
74
  ...e,
@@ -89,15 +89,15 @@ function N(e) {
89
89
  }
90
90
  //#endregion
91
91
  //#region src/lib/text_parsers/table_row_targets.ts
92
- var Le = we("lignes du tableau constituant", T([
93
- D("les ", { flags: "i" }),
94
- Oe,
95
- D(" et ", { flags: "i" }),
96
- Oe,
97
- D(" lignes du tableau constituant le ", { flags: "i" }),
92
+ var ze = Te("lignes du tableau constituant", w([
93
+ E("les ", { flags: "i" }),
94
+ ke,
95
+ E(" et ", { flags: "i" }),
96
+ ke,
97
+ E(" lignes du tableau constituant le ", { flags: "i" }),
98
98
  te,
99
- he,
100
- ie
99
+ ge,
100
+ ae
101
101
  ], { value: (e, t) => {
102
102
  let n = e[1], r = e[3], i = e[5];
103
103
  if (!(i.type !== "alinéa" || i.index === void 0 || n < 1 || r !== n + 1)) return {
@@ -108,16 +108,16 @@ var Le = we("lignes du tableau constituant", T([
108
108
  position: t.position()
109
109
  };
110
110
  } }));
111
- function Re(e) {
112
- return [...Le.extract(new O(e), { overlapWindow: 50 })];
111
+ function Be(e) {
112
+ return [...ze.extract(new D(e), { overlapWindow: 50 })];
113
113
  }
114
114
  //#endregion
115
115
  //#region src/lib/extractors/article_action_effects.ts
116
- function ze(e, t) {
116
+ function Ve(e, t) {
117
117
  if (t < 2) return null;
118
- let n = Ce(e), r = b(e);
118
+ let n = we(e), r = b(e);
119
119
  if (r.length !== t) return null;
120
- let i = s(new O(n.output)), a = (e) => _e(n, [e])[0].position;
120
+ let i = s(new D(n.output)), a = (e) => ve(n, [e])[0].position;
121
121
  return r.map((t, n) => ({
122
122
  sourceText: e,
123
123
  referencePosition: a({
@@ -127,20 +127,20 @@ function ze(e, t) {
127
127
  actionPosition: a(t.position)
128
128
  }));
129
129
  }
130
- function Be(e, t, n) {
130
+ function He(e, t, n) {
131
131
  if (t.length < 2) return null;
132
- let r = Ce(e), i = r.output, a = (e) => _e(r, [e])[0].position, o = s(new O(i)), c = o.flatMap(N);
132
+ let r = we(e), i = r.output, a = (e) => ve(r, [e])[0].position, o = s(new D(i)), c = o.flatMap(j);
133
133
  if (c.length !== t.length || c.length < 2) return null;
134
- let l = Re(i);
134
+ let l = Be(i);
135
135
  if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
136
136
  let n = c[t];
137
- 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));
137
+ return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !se(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
138
138
  }) ? null : c.map((r, i) => ({
139
139
  targetId: t[i],
140
140
  directive: {
141
141
  ...n,
142
142
  reference: r.reference,
143
- portionSelectors: oe(r.reference),
143
+ portionSelectors: se(r.reference),
144
144
  tableTarget: {
145
145
  type: "table",
146
146
  rowIndex: l[i].rowIndex,
@@ -185,12 +185,12 @@ function Be(e, t, n) {
185
185
  let d = [], f = 0;
186
186
  for (let e = 1; e < o.length; e += 1) {
187
187
  let t = o[e];
188
- t.type !== "reference_et_action" || N(t).length === 0 || o.slice(f, e).flatMap(N).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);
188
+ 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);
189
189
  }
190
190
  d.push(o.length - 1);
191
191
  let p = [], m = 0, h = 0;
192
192
  for (let n of d) {
193
- let r = o.slice(m, n + 1).flatMap(N);
193
+ let r = o.slice(m, n + 1).flatMap(j);
194
194
  if (r.length === 0) {
195
195
  m = n + 1;
196
196
  continue;
@@ -219,7 +219,7 @@ function Be(e, t, n) {
219
219
  stop: i.length
220
220
  },
221
221
  reference: n.reference,
222
- portionSelectors: oe(n.reference)
222
+ portionSelectors: se(n.reference)
223
223
  }
224
224
  });
225
225
  }
@@ -227,16 +227,16 @@ function Be(e, t, n) {
227
227
  }
228
228
  return h === t.length ? p : null;
229
229
  }
230
- var Ve = we("dans sa rédaction", T([T([D("dans sa rédaction ", { flags: "i" }), E(D("issue ", { flags: "i" }), D("résultante ", { flags: "i" }), D("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), E(T([D("de l'", { flags: "i" }), t], { value: (e) => e[1] }), p)], { value: (e) => e[1] }));
230
+ var Ue = Te("dans sa rédaction", w([w([E("dans sa rédaction ", { flags: "i" }), T(E("issue ", { flags: "i" }), E("résultante ", { flags: "i" }), E("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), T(w([E("de l'", { flags: "i" }), t], { value: (e) => e[1] }), p)], { value: (e) => e[1] }));
231
231
  //#endregion
232
232
  //#region src/lib/extractors/qualified_versions.ts
233
- function He(e) {
234
- let t = Ce(e), n = [];
235
- for (let e of Ve.extract(new O(t.output), { jumpExact: !0 })) for (let r of u(e)) {
233
+ function We(e) {
234
+ let t = we(e), n = [];
235
+ for (let e of Ue.extract(new D(t.output), { jumpExact: !0 })) for (let r of u(e)) {
236
236
  if (r.type !== "parent-enfant" || r.parent.type !== "texte" || r.parent.nature !== "LOI") continue;
237
237
  let e = [...c(r.child)].filter((e) => e.type === "article" && e.position.start < r.parent.position.start);
238
238
  if (e.length === 1) {
239
- n.push(_e(t, [e[0].position])[0].position);
239
+ n.push(ve(t, [e[0].position])[0].position);
240
240
  break;
241
241
  }
242
242
  }
@@ -244,29 +244,29 @@ function He(e) {
244
244
  }
245
245
  //#endregion
246
246
  //#region src/lib/server/parsed_bills.ts
247
- var Ue = /^expos[ée]\s+des\s+motifs\b/iu;
248
- function P(e) {
247
+ var Ge = /^expos[ée]\s+des\s+motifs\b/iu;
248
+ function M(e) {
249
249
  return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
250
250
  }
251
- function F(e) {
252
- return P(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
251
+ function N(e) {
252
+ return M(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
253
253
  }
254
- function We(e) {
255
- return r(P(e));
254
+ function Ke(e) {
255
+ return r(M(e));
256
256
  }
257
- function I(e) {
258
- return `_TocArt${We(e).replace(/\s+/gu, "")}`;
257
+ function P(e) {
258
+ return `_TocArt${Ke(e).replace(/\s+/gu, "")}`;
259
259
  }
260
- function Ge(e, t) {
260
+ function qe(e, t) {
261
261
  return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
262
262
  }
263
- function Ke(e) {
264
- return F(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
263
+ function Je(e) {
264
+ return N(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
265
265
  }
266
- function qe(e) {
267
- return Ke(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
266
+ function Ye(e) {
267
+ return Je(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
268
268
  }
269
- function Je(e) {
269
+ function Xe(e) {
270
270
  switch (e.kind) {
271
271
  case "insert_after":
272
272
  case "insert_before": return e.insertText;
@@ -284,12 +284,12 @@ function Je(e) {
284
284
  default: return;
285
285
  }
286
286
  }
287
- function Ye(e) {
288
- let t = P(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);
289
- if (n?.[1] !== void 0) return fe(n[1]);
287
+ function Ze(e) {
288
+ let t = M(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);
289
+ if (n?.[1] !== void 0) return pe(n[1]);
290
290
  }
291
- function Xe(e) {
292
- let t = Je(e), n = me(t ?? "");
291
+ function Qe(e) {
292
+ let t = Xe(e), n = he(t ?? "");
293
293
  if (n.length > 0 && t !== void 0) return n.map((e, r) => {
294
294
  let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
295
295
  return {
@@ -297,58 +297,58 @@ function Xe(e) {
297
297
  text: o
298
298
  };
299
299
  });
300
- let r = Ye(e);
300
+ let r = Ze(e);
301
301
  return r === void 0 ? [] : [{
302
302
  num: r,
303
303
  text: t ?? e.sourceText
304
304
  }];
305
305
  }
306
- function Ze(e, t = /* @__PURE__ */ new Set()) {
306
+ function $e(e, t = /* @__PURE__ */ new Set()) {
307
307
  if (e == null) return t;
308
308
  if (Array.isArray(e)) {
309
- for (let n of e) Ze(n, t);
309
+ for (let n of e) $e(n, t);
310
310
  return t;
311
311
  }
312
312
  if (typeof e != "object") return t;
313
313
  let n = e;
314
314
  n.type === "article" && typeof n.num == "string" && t.add(n.num);
315
- for (let e of Object.values(n)) Ze(e, t);
315
+ for (let e of Object.values(n)) $e(e, t);
316
316
  return t;
317
317
  }
318
- function Qe(e) {
319
- let t = F(e.sourceText);
318
+ function et(e) {
319
+ let t = N(e.sourceText);
320
320
  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);
321
321
  }
322
- function $e(e) {
323
- return P(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
322
+ function tt(e) {
323
+ return M(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
324
324
  }
325
- function et(e, t) {
326
- let n = new O(e, t), r = xe(n);
325
+ function nt(e, t) {
326
+ let n = new D(e, t), r = Se(n);
327
327
  return typeof r != "string" || n.offset <= t ? null : {
328
328
  date: r,
329
329
  start: t,
330
330
  stop: n.offset
331
331
  };
332
332
  }
333
- function tt(e, t) {
333
+ function rt(e, t) {
334
334
  let n = /\d/u.exec(e.slice(t));
335
335
  if (!n) return null;
336
336
  let r = t + n.index;
337
- return e.slice(t, r).trim().length > 0 ? null : et(e, r);
337
+ return e.slice(t, r).trim().length > 0 ? null : nt(e, r);
338
338
  }
339
- function nt(e) {
339
+ function it(e) {
340
340
  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);
341
341
  for (; o !== -1;) {
342
342
  let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
343
343
  if (l) {
344
- let e = tt(c, l[0].length);
344
+ let e = rt(c, l[0].length);
345
345
  e && i.push(e.date);
346
346
  }
347
347
  let u = n.exec(c);
348
348
  if (u) {
349
349
  let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
350
350
  for (r.lastIndex = 0; r.exec(t) !== null;) {
351
- let e = tt(t, r.lastIndex);
351
+ let e = rt(t, r.lastIndex);
352
352
  e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
353
353
  }
354
354
  }
@@ -356,20 +356,20 @@ function nt(e) {
356
356
  }
357
357
  return i;
358
358
  }
359
- function rt(e) {
360
- let t = nt($e(e).toLowerCase()), n = Array.from(new Set(t));
359
+ function at(e) {
360
+ let t = it(tt(e).toLowerCase()), n = Array.from(new Set(t));
361
361
  return n.length === 1 ? n[0] : void 0;
362
362
  }
363
- function it(e) {
364
- return F(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
363
+ function ot(e) {
364
+ return N(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
365
365
  }
366
- function L(e) {
366
+ function F(e) {
367
367
  return e?.type === "tag";
368
368
  }
369
- function at(e, t) {
369
+ function st(e, t) {
370
370
  return e.html(t) ?? "";
371
371
  }
372
- function ot(e, t) {
372
+ function ct(e, t) {
373
373
  let n = [], r = /* @__PURE__ */ new Set();
374
374
  for (let i of e(t).find("a").get()) {
375
375
  let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
@@ -377,43 +377,43 @@ function ot(e, t) {
377
377
  let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
378
378
  if (r.has(l)) continue;
379
379
  r.add(l);
380
- let u = P(e(i).text());
380
+ let u = M(e(i).text());
381
381
  n.push({
382
382
  id: c,
383
- ...st(e, t, i) ? { insideFrenchQuotes: !0 } : {},
383
+ ...lt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
384
384
  ...u ? { text: u } : {},
385
385
  type: s
386
386
  });
387
387
  }
388
388
  return n;
389
389
  }
390
- function st(e, t, n) {
391
- let r = ct(e, t, n);
390
+ function lt(e, t, n) {
391
+ let r = ut(e, t, n);
392
392
  return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
393
393
  }
394
- function ct(e, t, n) {
394
+ function ut(e, t, n) {
395
395
  if (t === n) return "";
396
396
  if (t.type === "text") return t.data ?? "";
397
- if (!L(t)) return "";
397
+ if (!F(t)) return "";
398
398
  let r = "";
399
399
  for (let i of e(t).contents().get()) {
400
400
  if (i === n) return r;
401
- if (L(i) && e.contains(i, n)) return r + ct(e, i, n);
401
+ if (F(i) && e.contains(i, n)) return r + ut(e, i, n);
402
402
  r += e(i).text();
403
403
  }
404
404
  return r;
405
405
  }
406
- function lt(e, t) {
407
- return t.map((t) => P(e(t).text())).filter(Boolean).join("\n");
406
+ function dt(e, t) {
407
+ return t.map((t) => M(e(t).text())).filter(Boolean).join("\n");
408
408
  }
409
- function ut(e) {
410
- let t = F(e);
411
- return !t || Ue.test(t) ? "noise" : i.test(e) ? "directive_candidate" : "context";
409
+ function ft(e) {
410
+ let t = N(e);
411
+ return !t || Ge.test(t) ? "noise" : i.test(e) ? "directive_candidate" : "context";
412
412
  }
413
- async function dt(e, t, n) {
413
+ async function pt(e, t, n) {
414
414
  if (n === void 0) throw Error("A document date is required to add links to legal references.");
415
415
  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.");
416
- let r = t.legiResolver ?? new se(t.canutesDb), { output: i } = await ae({
416
+ let r = t.legiResolver ?? new ce(t.canutesDb), { output: i } = await oe({
417
417
  date: n,
418
418
  html: e,
419
419
  includeInternalArticleLinks: t.includeInternalArticleLinks,
@@ -426,13 +426,13 @@ async function dt(e, t, n) {
426
426
  });
427
427
  return i ?? e;
428
428
  }
429
- function ft(e, t) {
429
+ function mt(e, t) {
430
430
  let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
431
- return L(r) && L(n) && e(n).parents("table").get(0) === r ? r : L(n) ? n : t;
431
+ return F(r) && F(n) && e(n).parents("table").get(0) === r ? r : F(n) ? n : t;
432
432
  }
433
- function pt(e, t, n, r) {
433
+ function ht(e, t, n, r) {
434
434
  if (t.has(r.container)) return;
435
- let i = r.id ?? I(r.num ?? r.label);
435
+ let i = r.id ?? P(r.num ?? r.label);
436
436
  n.has(i) || (n.add(i), t.add(r.container), e.push({
437
437
  id: i,
438
438
  label: r.label,
@@ -442,25 +442,25 @@ function pt(e, t, n, r) {
442
442
  container: r.container
443
443
  }));
444
444
  }
445
- function R(e) {
445
+ function I(e) {
446
446
  let t = /* @__PURE__ */ new Map();
447
447
  return e("body *").each((e, n) => {
448
448
  t.set(n, e);
449
449
  }), t;
450
450
  }
451
- function z(e, t) {
451
+ function L(e, t) {
452
452
  return e.get(t) ?? 2 ** 53 - 1;
453
453
  }
454
- function mt(e) {
454
+ function gt(e) {
455
455
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
456
456
  e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
457
- if (Ge(e, a)) return;
458
- let o = g(P(e(a).text()));
457
+ if (qe(e, a)) return;
458
+ let o = g(M(e(a).text()));
459
459
  if (!o) return;
460
460
  let s = e(a).attr("id");
461
461
  if (!s || r.has(s)) return;
462
- let c = ft(e, a);
463
- pt(t, n, r, {
462
+ let c = mt(e, a);
463
+ ht(t, n, r, {
464
464
  id: s,
465
465
  ...o,
466
466
  element: a,
@@ -468,37 +468,37 @@ function mt(e) {
468
468
  });
469
469
  }), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
470
470
  if (n.has(a)) return;
471
- let o = g(P(e(a).text()));
472
- o && pt(t, n, r, {
471
+ let o = g(M(e(a).text()));
472
+ o && ht(t, n, r, {
473
473
  ...o,
474
474
  element: a,
475
475
  container: a
476
476
  });
477
477
  });
478
- let i = R(e);
479
- return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
478
+ let i = I(e);
479
+ return t.sort((e, t) => L(i, e.container) - L(i, t.container)), t;
480
480
  }
481
- function ht(e, t) {
482
- if (Ge(e, t)) return !1;
481
+ function _t(e, t) {
482
+ if (qe(e, t)) return !1;
483
483
  let n = t.tagName?.toLowerCase();
484
484
  if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
485
485
  let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
486
486
  return /text-align\s*:\s*center/iu.test(r) && (/font-weight\s*:\s*bold/iu.test(r) || /font-weight\s*:\s*bold/iu.test(i) || /<(?:strong|b)(?:\s|>)/iu.test(i));
487
487
  }
488
- function gt(e) {
488
+ function vt(e) {
489
489
  let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
490
490
  return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
491
- if (Ge(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ht(e, a)) return;
491
+ if (qe(e, a) || !e(a).hasClass("assnat9ArticleNum") && !_t(e, a)) return;
492
492
  let o = g(e(a).text());
493
- o && pt(t, n, r, {
493
+ o && ht(t, n, r, {
494
494
  ...o,
495
495
  element: a,
496
496
  container: a
497
497
  });
498
498
  }), t;
499
499
  }
500
- function _t(e) {
501
- let t = We(e ?? "").replace(/[()]/gu, "").trim();
500
+ function yt(e) {
501
+ let t = Ke(e ?? "").replace(/[()]/gu, "").trim();
502
502
  if (!t || t.toLowerCase() === "liminaire") return;
503
503
  if (t.toLowerCase() === "unique") return {
504
504
  base: 1,
@@ -507,7 +507,7 @@ function _t(e) {
507
507
  };
508
508
  let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
509
509
  if (!n) return;
510
- let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : yt(i);
510
+ let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : xt(i);
511
511
  if (a !== void 0) return {
512
512
  base: r,
513
513
  suffixOrder: a,
@@ -515,7 +515,7 @@ function _t(e) {
515
515
  text: t
516
516
  };
517
517
  }
518
- function vt(e, t) {
518
+ function bt(e, t) {
519
519
  if (t.base !== e.base) return t.base - e.base;
520
520
  if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
521
521
  for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
@@ -524,14 +524,14 @@ function vt(e, t) {
524
524
  }
525
525
  return 0;
526
526
  }
527
- function yt(e) {
528
- let t = new O(e), n = be(t);
527
+ function xt(e) {
528
+ let t = new D(e), n = xe(t);
529
529
  if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
530
530
  }
531
- function bt(e) {
531
+ function St(e) {
532
532
  let t = [], n = e.map((e) => ({
533
533
  heading: e,
534
- token: _t(e.num)
534
+ token: yt(e.num)
535
535
  }));
536
536
  n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
537
537
  code: "article_toc_out_of_order",
@@ -540,7 +540,7 @@ function bt(e) {
540
540
  let r;
541
541
  for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
542
542
  if (r !== void 0) {
543
- let n = vt(r, i);
543
+ let n = bt(r, i);
544
544
  n === 0 ? t.push({
545
545
  code: "article_toc_duplicate_number",
546
546
  message: `Article ${e.num ?? e.label} is repeated`,
@@ -569,40 +569,40 @@ function bt(e) {
569
569
  }
570
570
  return t;
571
571
  }
572
- function xt(e) {
573
- let t = bt(e);
572
+ function Ct(e) {
573
+ let t = St(e);
574
574
  t.length > 0 && process.env.TISSEUSE_WARN_ASSEMBLEE_HEADING_SEQUENCE === "1" && console.warn("Incoherent Assemblée article heading sequence", { issues: t.map((e) => e.message) });
575
575
  }
576
- function St(e, { warn: t = !0 } = {}) {
577
- let n = mt(e), r = gt(e);
578
- if (n.length === 0) return t && xt(r), r;
579
- let i = R(e), a = (e, t) => {
580
- let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => I(e.num ?? e.label)));
576
+ function wt(e, { warn: t = !0 } = {}) {
577
+ let n = gt(e), r = vt(e);
578
+ if (n.length === 0) return t && Ct(r), r;
579
+ let i = I(e), a = (e, t) => {
580
+ let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => P(e.num ?? e.label)));
581
581
  for (let i of t) {
582
- let t = I(i.num ?? i.label);
582
+ let t = P(i.num ?? i.label);
583
583
  n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
584
584
  }
585
- return e.sort((e, t) => z(i, e.container) - z(i, t.container)), e;
586
- }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && bt(c).length > bt(s).length ? s : c;
587
- return t && xt(l), l;
585
+ return e.sort((e, t) => L(i, e.container) - L(i, t.container)), e;
586
+ }, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && St(c).length > St(s).length ? s : c;
587
+ return t && Ct(l), l;
588
588
  }
589
- function Ct(e) {
589
+ function Tt(e) {
590
590
  let t = e.next;
591
591
  for (; t !== null;) {
592
- if (L(t)) return t;
592
+ if (F(t)) return t;
593
593
  t = t.next;
594
594
  }
595
595
  return null;
596
596
  }
597
- function wt(e, t, n) {
597
+ function Et(e, t, n) {
598
598
  let r = e(t.container);
599
599
  if (!r.is("p.assnat9ArticleNum")) return;
600
600
  let i = r.parent(), a = i.parent();
601
601
  if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
602
602
  let o = a.children().get();
603
- if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || P(e(o[1]).text()) !== "") return;
603
+ if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || M(e(o[1]).text()) !== "") return;
604
604
  let s = o.length === 4 ? o[2] : void 0;
605
- if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(P(e(s).text())))) return;
605
+ if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(M(e(s).text())))) return;
606
606
  let c = o.at(-1);
607
607
  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) => g(e(t).text()) !== null))) return [
608
608
  t.container,
@@ -610,117 +610,117 @@ function wt(e, t, n) {
610
610
  c
611
611
  ];
612
612
  }
613
- function Tt(e, t, n, r = R(e)) {
613
+ function Dt(e, t, n, r = I(e)) {
614
614
  let i = [t.container], a = n?.container;
615
- for (let e = Ct(t.container); e !== null && e !== a; e = Ct(e)) i.push(e);
615
+ for (let e = Tt(t.container); e !== null && e !== a; e = Tt(e)) i.push(e);
616
616
  if (i.length > 1) return i;
617
- let o = wt(e, t, n);
617
+ let o = Et(e, t, n);
618
618
  if (o !== void 0) return o;
619
- let s = z(r, t.container), c = a ? z(r, a) : -1;
619
+ let s = L(r, t.container), c = a ? L(r, a) : -1;
620
620
  return e("body > *").get().filter((e) => {
621
- let t = z(r, e);
621
+ let t = L(r, e);
622
622
  return t >= s && (c === -1 || t < c);
623
623
  });
624
624
  }
625
- function Et(e, t) {
625
+ function Ot(e, t) {
626
626
  let n = [], r = /* @__PURE__ */ new Set();
627
627
  for (let i of t) {
628
628
  let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
629
- for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || r.has(t) || (r.add(t), n.push(t));
629
+ for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
630
630
  }
631
631
  return n;
632
632
  }
633
- function Dt(e, t, n) {
633
+ function kt(e, t, n) {
634
634
  let r = [], i = !1;
635
- for (let a of Et(e, n)) {
636
- let n = P(e(a).text());
635
+ for (let a of Ot(e, n)) {
636
+ let n = e(a).is("table.akn-quoted-table") ? _n(e, a) : M(e(a).text());
637
637
  if (!n) continue;
638
- Ue.test(n) && (i = !0);
639
- let o = i ? "noise" : ut(n), s = `${t}-b${r.length + 1}`;
638
+ Ge.test(n) && (i = !0);
639
+ let o = i ? "noise" : ft(n), s = `${t}-b${r.length + 1}`;
640
640
  e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
641
641
  id: s,
642
642
  articleId: t,
643
643
  kind: o,
644
- links: ot(e, a),
644
+ links: ct(e, a),
645
645
  text: n,
646
- html: at(e, a)
646
+ html: st(e, a)
647
647
  });
648
648
  }
649
649
  return r;
650
650
  }
651
- function Ot(e, t) {
651
+ function At(e, t) {
652
652
  if (t.length === 0) return e;
653
653
  let n = `<div style="display: none;">\n${t.map((e) => `<p class="assnatTOC6"><a href="#${e.id}"><span class="assnatHyperlink" style="font-weight:bold; text-decoration:none; color:#000000">${e.label.toUpperCase()}</span></a></p>`).join("\n")}\n</div>`;
654
654
  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}`;
655
655
  }
656
- function kt(e) {
657
- let t = w(e), n = At(t);
658
- for (let e of St(t, { warn: !1 })) {
659
- let r = I(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
656
+ function jt(e) {
657
+ let t = C(e), n = Mt(t);
658
+ for (let e of wt(t, { warn: !1 })) {
659
+ let r = P(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
660
660
  if (a !== r) {
661
- if (a?.startsWith("_Toc") && !Mt(n, a, e.element)) {
661
+ if (a?.startsWith("_Toc") && !Pt(n, a, e.element)) {
662
662
  let e = t("<span></span>").attr("id", a);
663
663
  i.before(e);
664
664
  let r = e.get(0);
665
- L(r) && B(n, a, r);
665
+ F(r) && R(n, a, r);
666
666
  }
667
- a && jt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
667
+ a && Nt(n, a, e.element), i.attr("id", r), R(n, r, e.element);
668
668
  }
669
669
  }
670
- let r = St(t), i = R(t);
670
+ let r = wt(t), i = I(t);
671
671
  for (let [e, a] of r.entries()) {
672
- let o = Tt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
672
+ let o = Dt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
673
673
  for (let e of o) {
674
674
  let r = t(e).attr("data-alinea")?.trim();
675
675
  if (!r) continue;
676
676
  let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
677
- if (Mt(n, i, e)) continue;
677
+ if (Pt(n, i, e)) continue;
678
678
  let o = t(e).attr("id");
679
679
  if (o && o !== i) {
680
680
  let r = t("<span></span>").attr("id", i);
681
681
  t(e).before(r);
682
682
  let a = r.get(0);
683
- L(a) && B(n, i, a);
684
- } else o && jt(n, o, e), t(e).attr("id", i), B(n, i, e);
683
+ F(a) && R(n, i, a);
684
+ } else o && Nt(n, o, e), t(e).attr("id", i), R(n, i, e);
685
685
  }
686
686
  }
687
687
  return t.html();
688
688
  }
689
- function At(e) {
689
+ function Mt(e) {
690
690
  let t = /* @__PURE__ */ new Map();
691
691
  for (let n of e("[id]").get()) {
692
692
  let r = e(n).attr("id");
693
- r && B(t, r, n);
693
+ r && R(t, r, n);
694
694
  }
695
695
  return t;
696
696
  }
697
- function B(e, t, n) {
697
+ function R(e, t, n) {
698
698
  let r = e.get(t);
699
699
  r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
700
700
  }
701
- function jt(e, t, n) {
701
+ function Nt(e, t, n) {
702
702
  let r = e.get(t);
703
703
  r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
704
704
  }
705
- function Mt(e, t, n) {
705
+ function Pt(e, t, n) {
706
706
  for (let r of e.get(t) ?? []) if (r !== n) return !0;
707
707
  return !1;
708
708
  }
709
- function Nt(e, t) {
710
- let n = it("sourceText" in t ? t.sourceText : "");
709
+ function Ft(e, t) {
710
+ let n = ot("sourceText" in t ? t.sourceText : "");
711
711
  if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
712
- let t = it(e.text);
712
+ let t = ot(e.text);
713
713
  return t.length > 0 && (n.includes(t) || t.includes(n));
714
714
  });
715
715
  }
716
- function Pt(e, t) {
716
+ function It(e, t) {
717
717
  if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
718
718
  }
719
- function Ft(e) {
719
+ function Lt(e) {
720
720
  return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
721
721
  }
722
- function It(e) {
723
- let t = He(e.text);
722
+ function Rt(e) {
723
+ let t = We(e.text);
724
724
  if (t.length !== 1) return;
725
725
  let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
726
726
  let r = n.text ?? "", i = e.text.indexOf(r);
@@ -734,21 +734,21 @@ function It(e) {
734
734
  modifyingArticleLabel: i.text ?? ""
735
735
  };
736
736
  }
737
- function Lt(e, t) {
738
- let n = P(e);
737
+ function zt(e, t) {
738
+ let n = M(e);
739
739
  if (!n) return;
740
740
  let r = ee(n);
741
741
  return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
742
742
  }
743
- function Rt(e) {
744
- let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
743
+ function Bt(e) {
744
+ let t = /* @__PURE__ */ new Map(), n = [], r = ie(e.map((e) => e.text)), i = -1;
745
745
  for (let [a, o] of e.entries()) {
746
746
  let e = r.get(a);
747
747
  if (e && (i = e.endIndex), a <= i) {
748
748
  t.set(o.id, [...n.map((e) => e.block), o]);
749
749
  continue;
750
750
  }
751
- let s = Lt(o.text, n.at(-1)?.level);
751
+ let s = zt(o.text, n.at(-1)?.level);
752
752
  if (s === void 0) {
753
753
  t.set(o.id, [...n.map((e) => e.block), o]);
754
754
  continue;
@@ -761,14 +761,14 @@ function Rt(e) {
761
761
  }
762
762
  return t;
763
763
  }
764
- function zt(e, t) {
764
+ function Vt(e, t) {
765
765
  let n = [], r = /* @__PURE__ */ new Set();
766
766
  for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
767
767
  return n;
768
768
  }
769
- function Bt(e, t, n) {
769
+ function Ht(e, t, n) {
770
770
  if (!t) return;
771
- let r = zt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
771
+ let r = Vt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
772
772
  if (r.length === 0) return;
773
773
  let i = r.map((e) => e.id);
774
774
  if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
@@ -783,7 +783,7 @@ function Bt(e, t, n) {
783
783
  }
784
784
  };
785
785
  }
786
- function Vt(e) {
786
+ function Ut(e) {
787
787
  let t = [], n = 0;
788
788
  for (let r of e.blocks) {
789
789
  let i = e.directiveText.indexOf(r.text, n);
@@ -797,7 +797,7 @@ function Vt(e) {
797
797
  }
798
798
  return t;
799
799
  }
800
- function Ht(e, t, n) {
800
+ function Wt(e, t, n) {
801
801
  let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
802
802
  if (a.length === 0) return;
803
803
  let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
@@ -811,7 +811,7 @@ function Ht(e, t, n) {
811
811
  }
812
812
  };
813
813
  }
814
- function Ut(e, t, n) {
814
+ function Gt(e, t, n) {
815
815
  if (!t) return;
816
816
  let r = e.directiveText.indexOf(t.text);
817
817
  if (r === -1) return;
@@ -824,15 +824,15 @@ function Ut(e, t, n) {
824
824
  stop: a
825
825
  };
826
826
  }
827
- function Wt(e, t) {
828
- let n = performance.now(), r = performance.now(), i = Vt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Rt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
827
+ function Kt(e, t) {
828
+ let n = performance.now(), r = performance.now(), i = Ut(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Bt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
829
829
  for (let t of e.blocks) {
830
- t.qualifiedVersion = It(t);
831
- let e = Ft(t);
830
+ t.qualifiedVersion = Rt(t);
831
+ let e = Lt(t);
832
832
  (e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
833
833
  }
834
- let p = performance.now() - o, m = performance.now(), h = x(), g = de(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
835
- let n = Ht(e, i, t), r = Pt(s, n) ?? Nt(e.blocks, t), a = Ft(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Ut(e, r, t), f = Bt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
834
+ let p = performance.now() - o, m = performance.now(), h = x(), g = fe(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
835
+ let n = Wt(e, i, t), r = It(s, n) ?? Ft(e.blocks, t), a = Lt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Gt(e, r, t), f = Ht(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
836
836
  return {
837
837
  articleId: e.id,
838
838
  blockId: r?.id,
@@ -856,8 +856,8 @@ function Wt(e, t) {
856
856
  if (!t) return [e];
857
857
  if (b.has(t.id)) return [];
858
858
  let n = ee.get(t.id);
859
- if (n === void 0 && (n = Be(t.text, Ft(t), e.directive), ee.set(t.id, n)), !n) {
860
- let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? ze(t.text, n.operations.length) : null;
859
+ if (n === void 0 && (n = He(t.text, Lt(t), e.directive), ee.set(t.id, n)), !n) {
860
+ let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ve(t.text, n.operations.length) : null;
861
861
  return [r ? {
862
862
  ...e,
863
863
  sourceAnnotations: r
@@ -888,13 +888,13 @@ function Wt(e, t) {
888
888
  totalMs: Math.round((performance.now() - n) * 10) / 10
889
889
  }), S;
890
890
  }
891
- function Gt(e) {
891
+ function qt(e) {
892
892
  let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
893
893
  for (let i of e) {
894
- let e = Xe(i.directive);
894
+ let e = Qe(i.directive);
895
895
  if (e.length === 0) continue;
896
896
  let a = e.map(({ num: e }) => ({
897
- definitionId: `${i.articleId}:article:${qe(e)}`,
897
+ definitionId: `${i.articleId}:article:${Ye(e)}`,
898
898
  num: e
899
899
  }));
900
900
  t.set(i, a);
@@ -917,13 +917,13 @@ function Gt(e) {
917
917
  definitions: n
918
918
  };
919
919
  }
920
- function Kt(e, t, n) {
921
- let r = new Map(t.map((e) => [Ke(e.num), e]));
920
+ function Jt(e, t, n) {
921
+ let r = new Map(t.map((e) => [Je(e.num), e]));
922
922
  return e.map((e) => {
923
- let t = n.get(e), i = t?.[0], a = [...Ze(e.directive.reference)].map((e) => r.get(Ke(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
923
+ let t = n.get(e), i = t?.[0], a = [...$e(e.directive.reference)].map((e) => r.get(Je(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
924
924
  definitionId: a.definitionId,
925
925
  num: a.num
926
- }, s = Qe(e.directive), c = (e.targetIds?.length ?? 0) > 0;
926
+ }, s = et(e.directive), c = (e.targetIds?.length ?? 0) > 0;
927
927
  return {
928
928
  ...e,
929
929
  ...i === void 0 ? {} : { createdArticle: i },
@@ -936,7 +936,7 @@ function Kt(e, t, n) {
936
936
  };
937
937
  });
938
938
  }
939
- function qt(e) {
939
+ function Yt(e) {
940
940
  switch (e.kind) {
941
941
  case "insert_after":
942
942
  case "insert_before": return [e.insertText];
@@ -954,8 +954,8 @@ function qt(e) {
954
954
  default: return [];
955
955
  }
956
956
  }
957
- function Jt(e) {
958
- return e.flatMap((e) => qt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
957
+ function Xt(e) {
958
+ return e.flatMap((e) => Yt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
959
959
  code: "nested_french_quote_in_redaction",
960
960
  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.",
961
961
  details: {
@@ -967,18 +967,18 @@ function Jt(e) {
967
967
  }
968
968
  })));
969
969
  }
970
- function Yt(e) {
971
- return qt(e).map((t) => ({
970
+ function Zt(e) {
971
+ return Yt(e).map((t) => ({
972
972
  directiveKind: e.kind,
973
973
  text: t
974
974
  }));
975
975
  }
976
- function Xt(e) {
976
+ function Qt(e) {
977
977
  let t = /* @__PURE__ */ new Set();
978
978
  for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
979
979
  return Array.from(t);
980
980
  }
981
- function Zt(e, t) {
981
+ function $t(e, t) {
982
982
  let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
983
983
  for (let e of r) {
984
984
  let t = n.get(e);
@@ -990,11 +990,11 @@ function Zt(e, t) {
990
990
  }
991
991
  return i;
992
992
  }
993
- function Qt(e, t, n) {
993
+ function en(e, t, n) {
994
994
  return e.find((e) => t >= e.start && n <= e.stop);
995
995
  }
996
- function $t(e, t, n) {
997
- let r = Xt(n), i = r.flatMap((t) => {
996
+ function tn(e, t, n) {
997
+ let r = Qt(n), i = r.flatMap((t) => {
998
998
  for (let n of e.blocks) {
999
999
  let e = n.text.indexOf(t);
1000
1000
  if (e !== -1) return [{
@@ -1013,7 +1013,7 @@ function $t(e, t, n) {
1013
1013
  e.directiveText
1014
1014
  ].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
1015
1015
  if (!o) return [];
1016
- let s = Zt(e, t);
1016
+ let s = $t(e, t);
1017
1017
  if (s.length === 0) return [];
1018
1018
  let c = [], l = 0;
1019
1019
  for (let e of r) {
@@ -1021,7 +1021,7 @@ function $t(e, t, n) {
1021
1021
  if (t === -1) continue;
1022
1022
  let n = t + e.length;
1023
1023
  l = n;
1024
- let r = Qt(s, t, n);
1024
+ let r = en(s, t, n);
1025
1025
  r && c.push({
1026
1026
  blockId: r.block.id,
1027
1027
  start: t - r.start,
@@ -1031,15 +1031,15 @@ function $t(e, t, n) {
1031
1031
  }
1032
1032
  return c;
1033
1033
  }
1034
- function en(e, t) {
1034
+ function nn(e, t) {
1035
1035
  let n = new Map(e.map((e) => [e.id, e]));
1036
1036
  return t.flatMap((e) => {
1037
1037
  let t = n.get(e.articleId);
1038
- return t ? Yt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1038
+ return t ? Zt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
1039
1039
  articleId: e.articleId,
1040
1040
  code: "nested_french_quote_in_redaction",
1041
1041
  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.",
1042
- ranges: $t(t, e, r),
1042
+ ranges: tn(t, e, r),
1043
1043
  severity: "warning",
1044
1044
  details: {
1045
1045
  blockId: e.blockId,
@@ -1050,8 +1050,8 @@ function en(e, t) {
1050
1050
  })) : [];
1051
1051
  });
1052
1052
  }
1053
- function tn(e, t) {
1054
- let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1053
+ function rn(e, t) {
1054
+ let n = new Map(e.flatMap((e) => [...ie(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
1055
1055
  articleId: e.id,
1056
1056
  blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
1057
1057
  ...n
@@ -1073,8 +1073,8 @@ function tn(e, t) {
1073
1073
  }];
1074
1074
  });
1075
1075
  }
1076
- function nn(e, t, n, r, i, a, o = !0, s) {
1077
- let c = new Ee("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 = {
1076
+ function an(e, t, n, r, i, a, o = !0, s) {
1077
+ let c = new De("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 = {
1078
1078
  sourceFormat: e,
1079
1079
  documentDate: r,
1080
1080
  html: t,
@@ -1095,14 +1095,14 @@ function nn(e, t, n, r, i, a, o = !0, s) {
1095
1095
  directiveTextSize: u.length
1096
1096
  }), e;
1097
1097
  }
1098
- let f = c.timeSync("extractGlobalApplicabilityDate", () => rt(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1098
+ let f = c.timeSync("extractGlobalApplicabilityDate", () => at(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
1099
1099
  let e = [];
1100
1100
  for (let t of i) {
1101
- let n = Wt(t, c.enabled ? p : void 0);
1101
+ let n = Kt(t, c.enabled ? p : void 0);
1102
1102
  e.push(...n);
1103
1103
  }
1104
1104
  return e;
1105
- }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Gt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Kt(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Jt(_), { count: _.length }), b = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...en(i, _), ...tn(i, _)], { count: _.length }), ee = {
1105
+ }, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => qt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Jt(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Xt(_), { count: _.length }), b = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...nn(i, _), ...rn(i, _)], { count: _.length }), ee = {
1106
1106
  ...d,
1107
1107
  ...f ? { globalApplicabilityDate: f } : {},
1108
1108
  ...g.length > 0 ? { internalArticleDefinitions: g } : {},
@@ -1196,18 +1196,18 @@ function nn(e, t, n, r, i, a, o = !0, s) {
1196
1196
  slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
1197
1197
  }), ee;
1198
1198
  }
1199
- function rn(e) {
1199
+ function on(e) {
1200
1200
  return { items: e.map((e) => ({
1201
1201
  id: e.id,
1202
1202
  line: e.title ? `${e.label} : ${e.title}` : e.label,
1203
1203
  type: "article"
1204
1204
  })) };
1205
1205
  }
1206
- function an(e) {
1207
- return Array.from(ue(e)).filter((e) => e.type === "article").map((e) => F(e.line.split(/[::]/u)[0]));
1206
+ function sn(e) {
1207
+ return Array.from(de(e)).filter((e) => e.type === "article").map((e) => N(e.line.split(/[::]/u)[0]));
1208
1208
  }
1209
- function on(e, t, n, r) {
1210
- let i = bt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ue(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? I(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? I(e.label) : e.id), c = o.map((e) => e.id);
1209
+ function cn(e, t, n, r) {
1210
+ let i = St(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) : C(e.html)("p.TCNumArticle").first().attr("id") ?? P(e.label) : e.id), c = o.map((e) => e.id);
1211
1211
  (c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
1212
1212
  code: "article_toc_source_heading_mismatch",
1213
1213
  message: "The table of contents differs from the parsed article headings",
@@ -1223,8 +1223,8 @@ function on(e, t, n, r) {
1223
1223
  });
1224
1224
  return i;
1225
1225
  }
1226
- function sn(e, t, n) {
1227
- let r = an(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => F(e.label)), a = rn(e), o = [...n, ...on(e, a, t, "assemblee-html")];
1226
+ function ln(e, t, n) {
1227
+ 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")];
1228
1228
  if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
1229
1229
  let t = r.findIndex((e, t) => e !== i[t]);
1230
1230
  o.push({
@@ -1248,24 +1248,24 @@ function sn(e, t, n) {
1248
1248
  tableOfContents: a
1249
1249
  };
1250
1250
  }
1251
- async function cn(e, t) {
1252
- let n = new Ee("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => ln(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => kt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => w(i)), o = n.timeSync("extractArticleHeadings", () => St(a)), s = new Set(o.map((e) => e.id)), c = gt(a).filter((e) => !s.has(I(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1251
+ async function un(e, t) {
1252
+ let n = new De("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => dn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => jt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => C(i)), o = n.timeSync("extractArticleHeadings", () => wt(a)), s = new Set(o.map((e) => e.id)), c = vt(a).filter((e) => !s.has(P(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
1253
1253
  code: "article_toc_source_heading_mismatch",
1254
1254
  message: "Some structural article headings were not retained",
1255
1255
  details: { discardedCandidates: c }
1256
- }] : [], u = R(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1257
- let n = Tt(a, e, o[t + 1], u), r = Dt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1256
+ }] : [], u = I(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
1257
+ let n = Dt(a, e, o[t + 1], u), r = kt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1258
1258
  return {
1259
1259
  id: e.id,
1260
1260
  label: e.label,
1261
1261
  num: e.num,
1262
1262
  title: e.title,
1263
- text: lt(a, n),
1264
- html: n.map((e) => at(a, e)).join("\n"),
1263
+ text: dt(a, n),
1264
+ html: n.map((e) => st(a, e)).join("\n"),
1265
1265
  directiveText: i,
1266
1266
  blocks: r
1267
1267
  };
1268
- }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Ot(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => sn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => nn("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
1268
+ }), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => At(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));
1269
1269
  return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
1270
1270
  articleCount: h.articles.length,
1271
1271
  blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1273,18 +1273,18 @@ async function cn(e, t) {
1273
1273
  targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
1274
1274
  }), h;
1275
1275
  }
1276
- async function ln(e, t) {
1276
+ async function dn(e, t) {
1277
1277
  return {
1278
1278
  sourceFormat: "assemblee-html",
1279
1279
  documentDate: t.date,
1280
1280
  html: e,
1281
- linkedHtml: await dt(e, t, t.date)
1281
+ linkedHtml: await pt(e, t, t.date)
1282
1282
  };
1283
1283
  }
1284
- function V(e) {
1284
+ function z(e) {
1285
1285
  return e.replace(/&/gu, "&amp;").replace(/</gu, "&lt;").replace(/>/gu, "&gt;").replace(/"/gu, "&quot;");
1286
1286
  }
1287
- function un(e) {
1287
+ function fn(e) {
1288
1288
  let t = e;
1289
1289
  for (let e = 0; e < 3; e++) {
1290
1290
  let e = t;
@@ -1292,27 +1292,27 @@ function un(e) {
1292
1292
  }
1293
1293
  return t;
1294
1294
  }
1295
- function dn(e) {
1295
+ function pn(e) {
1296
1296
  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);
1297
1297
  }
1298
- function H(e) {
1298
+ function B(e) {
1299
1299
  return e.name.replace(/^.*:/u, "");
1300
1300
  }
1301
- function fn(e, t) {
1302
- return t.children.map((t) => U(e, t)).filter(Boolean).join("");
1301
+ function mn(e, t) {
1302
+ return t.children.map((t) => V(e, t)).filter(Boolean).join("");
1303
1303
  }
1304
- function pn(e, t) {
1305
- return t.children.map((t) => t.type === "text" && dn(t.data) ? un(t.data) : U(e, t)).filter(Boolean).join("");
1304
+ function hn(e, t) {
1305
+ return t.children.map((t) => t.type === "text" && pn(t.data) ? fn(t.data) : V(e, t)).filter(Boolean).join("");
1306
1306
  }
1307
- function U(e, t) {
1307
+ function V(e, t) {
1308
1308
  if (t.type === "text") {
1309
1309
  let e = t.data.replace(/\s+\./gu, ".");
1310
- return dn(e) ? un(e) : V(e);
1310
+ return pn(e) ? fn(e) : z(e);
1311
1311
  }
1312
- if (!L(t)) return "";
1313
- let n = H(t), r = fn(e, t);
1312
+ if (!F(t)) return "";
1313
+ let n = B(t), r = mn(e, t);
1314
1314
  switch (n) {
1315
- case "p": return `<p${mn(e, t, [
1315
+ case "p": return `<p${H(e, t, [
1316
1316
  "id",
1317
1317
  "class",
1318
1318
  "align",
@@ -1326,13 +1326,13 @@ function U(e, t) {
1326
1326
  case "u":
1327
1327
  case "sup":
1328
1328
  case "sub":
1329
- case "abbr": return `<${n}${mn(e, t, [
1329
+ case "abbr": return `<${n}${H(e, t, [
1330
1330
  "id",
1331
1331
  "class",
1332
1332
  "title",
1333
1333
  "style"
1334
1334
  ])}>${r}</${n}>`;
1335
- case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${mn(e, t, [
1335
+ case "a": return `<a href="${z(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${H(e, t, [
1336
1336
  "id",
1337
1337
  "class",
1338
1338
  "title",
@@ -1343,8 +1343,8 @@ function U(e, t) {
1343
1343
  case "tbody":
1344
1344
  case "tr":
1345
1345
  case "th":
1346
- case "td": return hn(e, t, n, r);
1347
- case "caption": return `<caption${mn(e, t, [
1346
+ case "td": return vn(e, t, n, r);
1347
+ case "caption": return `<caption${H(e, t, [
1348
1348
  "id",
1349
1349
  "class",
1350
1350
  "align",
@@ -1352,12 +1352,12 @@ function U(e, t) {
1352
1352
  ])}>${r}</caption>`;
1353
1353
  case "num": return `<span class="akn-num">${r}</span> `;
1354
1354
  case "heading": return `<p class="akn-heading">${r}</p>`;
1355
- case "content": return pn(e, t);
1356
- case "alinea": return An(e, t, "div", "akn-alinea");
1357
- case "article": return An(e, t, "article", "akn-article");
1355
+ case "content": return hn(e, t);
1356
+ case "alinea": return U(e, t, "div", "akn-alinea");
1357
+ case "article": return U(e, t, "article", "akn-article");
1358
1358
  case "blockList":
1359
1359
  case "list": return `<div class="akn-list">${r}</div>`;
1360
- case "item": return An(e, t, "div", "akn-item");
1360
+ case "item": return U(e, t, "div", "akn-item");
1361
1361
  case "listIntroduction":
1362
1362
  case "listWrapUp":
1363
1363
  case "intro":
@@ -1373,23 +1373,43 @@ function U(e, t) {
1373
1373
  case "book":
1374
1374
  case "tome":
1375
1375
  case "subchapter":
1376
- case "subsection": return An(e, t, "section", `akn-${n}`);
1376
+ case "subsection": return U(e, t, "section", `akn-${n}`);
1377
1377
  case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
1378
1378
  default: return r;
1379
1379
  }
1380
1380
  }
1381
- function mn(e, t, n, r = {}) {
1381
+ function gn(e, t) {
1382
+ let n = e(t).text();
1383
+ if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
1384
+ let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
1385
+ if (r.length === 0) return;
1386
+ let i = r.map((t) => {
1387
+ let n = e(t).children("td,th").get();
1388
+ return n.length >= 3 ? [n[0], n.at(-1)] : [];
1389
+ });
1390
+ if (i.some((e) => e.length !== 2)) return;
1391
+ let a = i.map(([t]) => M(e(t).text())), o = i.map(([, t]) => M(e(t).text()));
1392
+ if (!(a.filter((e) => e === "«").length !== 1 || o.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || a.some((e) => e !== "" && e !== "«") || o.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || i.some(([t, n]) => [t, n].some((t) => e(t).attr("colspan") !== void 0 || e(t).attr("rowspan") !== void 0))) && !(a.indexOf("«") > o.findIndex((e) => e.startsWith("»")))) {
1393
+ e(t).addClass("akn-quoted-table");
1394
+ for (let [t, n] of i) e(t).addClass("akn-quote-column"), e(n).addClass("akn-quote-column");
1395
+ }
1396
+ }
1397
+ function _n(e, t) {
1398
+ 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();
1399
+ return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => M(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
1400
+ }
1401
+ function H(e, t, n, r = {}) {
1382
1402
  let i = [];
1383
1403
  for (let r of n) {
1384
1404
  if (r === "style") continue;
1385
1405
  let n = e(t).attr(r);
1386
- n !== void 0 && i.push(`${r}="${V(n)}"`);
1406
+ n !== void 0 && i.push(`${r}="${z(n)}"`);
1387
1407
  }
1388
1408
  let a = r.style ?? e(t).attr("style");
1389
- return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1409
+ return a && i.push(`style="${z(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
1390
1410
  }
1391
- function hn(e, t, n, r) {
1392
- return `<${n}${mn(e, t, [
1411
+ function vn(e, t, n, r) {
1412
+ return `<${n}${H(e, t, [
1393
1413
  "id",
1394
1414
  "class",
1395
1415
  "colspan",
@@ -1402,155 +1422,155 @@ function hn(e, t, n, r) {
1402
1422
  "cellspacing",
1403
1423
  "cellpadding",
1404
1424
  "style"
1405
- ], { style: gn(e, t, n) })}>${r}</${n}>`;
1425
+ ], { style: yn(e, t, n) })}>${r}</${n}>`;
1406
1426
  }
1407
- function gn(e, t, n) {
1427
+ function yn(e, t, n) {
1408
1428
  let r = e(t).attr("style") ?? "";
1409
- return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = _n(r, "text-align", "center")), r || void 0;
1429
+ return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = bn(r, "text-align", "center")), r || void 0;
1410
1430
  }
1411
- function _n(e, t, n) {
1431
+ function bn(e, t, n) {
1412
1432
  let r = e.trim();
1413
1433
  return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
1414
1434
  }
1415
- function vn(e, t) {
1416
- let n = [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean);
1417
- return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
1435
+ function xn(e, t) {
1436
+ let n = [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean);
1437
+ return n.length === 0 ? "" : `<p class="akn-heading">${z(n.join(" "))}</p>`;
1418
1438
  }
1419
- function yn(e, t) {
1439
+ function Sn(e, t) {
1420
1440
  if (!t) return !1;
1421
- let n = (e) => P(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1422
- return n(P(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1441
+ let n = (e) => M(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
1442
+ return n(M(e.replace(/<[^>]*>/gu, " ").replace(/&nbsp;/gu, " ").replace(/&#xa0;/giu, " ").replace(/&#x2013;/giu, "–"))).startsWith(n(t));
1423
1443
  }
1424
- function bn(e) {
1425
- let t = V(e);
1444
+ function Cn(e) {
1445
+ let t = z(e);
1426
1446
  return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
1427
1447
  }
1428
- function xn(e, t) {
1429
- return Sn([Cn({
1448
+ function wn(e, t) {
1449
+ return Tn([En({
1430
1450
  content: e,
1431
1451
  pastille: t
1432
1452
  })]);
1433
1453
  }
1434
- function Sn(e) {
1454
+ function Tn(e) {
1435
1455
  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>`;
1436
1456
  }
1437
- function Cn({ content: e, pastille: t, style: n, contextClass: r }) {
1438
- let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
1439
- 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}">${bn(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>`;
1457
+ function En({ content: e, pastille: t, style: n, contextClass: r }) {
1458
+ let i = n ? ` style="${z(n)}"` : "", a = r ? ` ${z(r)}` : "";
1459
+ return `<tr${r ? ` class="${z(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${Cn(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>`;
1440
1460
  }
1441
- function wn({ content: e, style: t, contextClass: n }) {
1442
- let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
1443
- 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>`;
1461
+ function Dn({ content: e, style: t, contextClass: n }) {
1462
+ let r = t ? ` style="${z(t)}"` : "", i = n ? ` ${z(n)}` : "";
1463
+ return `<tr${n ? ` class="${z(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>`;
1444
1464
  }
1445
- function Tn(e, t) {
1465
+ function On(e, t) {
1446
1466
  return e(t).attr("data:pastille") ?? e(t).attr("pastille");
1447
1467
  }
1448
- function En(e, t) {
1468
+ function kn(e, t) {
1449
1469
  return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
1450
1470
  }
1451
- function Dn(e, t) {
1452
- return e(t).children().get().filter((e) => L(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
1471
+ function An(e, t) {
1472
+ return e(t).children().get().filter((e) => F(e) ? B(e) === "content" : !1).map((t) => V(e, t)).filter(Boolean).join("\n");
1453
1473
  }
1454
- function On(e, t) {
1474
+ function jn(e, t) {
1455
1475
  let n = [];
1456
1476
  return e(t).children().each((t, r) => {
1457
- if (!L(r)) return;
1458
- let i = H(r);
1459
- i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
1477
+ if (!F(r)) return;
1478
+ let i = B(r);
1479
+ i === "num" || i === "heading" || i === "content" || n.push(V(e, r));
1460
1480
  }), n.filter(Boolean);
1461
1481
  }
1462
- function kn(e, t) {
1463
- let n = [], r = H(t), i = r === "alinea" ? Tn(e, t) : void 0, a = Dn(e, t), o = jn(e, t, r, i), s = Ln(e, t);
1482
+ function Mn(e, t) {
1483
+ let n = [], r = B(t), i = r === "alinea" ? On(e, t) : void 0, a = An(e, t), o = Nn(e, t, r, i), s = zn(e, t);
1464
1484
  if (i) {
1465
- let r = [yn(a, P(e(t).children("num").first().text())) ? "" : vn(e, t), a].filter(Boolean).join("\n");
1466
- P(r) && n.push(Cn({
1485
+ let r = [Sn(a, M(e(t).children("num").first().text())) ? "" : xn(e, t), a].filter(Boolean).join("\n");
1486
+ M(r) && n.push(En({
1467
1487
  content: r,
1468
1488
  pastille: i,
1469
1489
  style: o,
1470
1490
  contextClass: s
1471
1491
  }));
1472
- } else a && n.push(wn({
1492
+ } else a && n.push(Dn({
1473
1493
  content: a,
1474
1494
  style: o,
1475
1495
  contextClass: s
1476
1496
  }));
1477
1497
  for (let r of e(t).children().get()) {
1478
- if (!L(r)) continue;
1479
- let t = H(r);
1480
- t === "num" || t === "heading" || t === "content" || (t === "alinea" || En(e, r)) && n.push(...kn(e, r));
1498
+ if (!F(r)) continue;
1499
+ let t = B(r);
1500
+ t === "num" || t === "heading" || t === "content" || (t === "alinea" || kn(e, r)) && n.push(...Mn(e, r));
1481
1501
  }
1482
1502
  return n;
1483
1503
  }
1484
- function An(e, t, n, r) {
1485
- let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Tn(e, t), s = jn(e, t, i, o), c = [`<${n} ${[
1486
- a ? `id="${V(a)}"` : void 0,
1504
+ function U(e, t, n, r) {
1505
+ let i = B(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = On(e, t), s = Nn(e, t, i, o), c = [`<${n} ${[
1506
+ a ? `id="${z(a)}"` : void 0,
1487
1507
  `class="${r}"`,
1488
- o ? `data-pastille="${V(o)}"` : void 0,
1489
- s ? `style="${V(s)}"` : void 0
1508
+ o ? `data-pastille="${z(o)}"` : void 0,
1509
+ s ? `style="${z(s)}"` : void 0
1490
1510
  ].filter((e) => e !== void 0).join(" ")}>`];
1491
1511
  if (i === "part" || i === "title") {
1492
- let r = Pn(e, t, i), a = In(e, t), o = r ? [wn({
1512
+ let r = In(e, t, i), a = Rn(e, t), o = r ? [Dn({
1493
1513
  content: r,
1494
1514
  contextClass: a
1495
1515
  })] : [], s = () => {
1496
- o.length !== 0 && (c.push(Nn(o)), o = []);
1516
+ o.length !== 0 && (c.push(Fn(o)), o = []);
1497
1517
  };
1498
1518
  return e(t).children().each((t, n) => {
1499
- if (!L(n)) return;
1500
- let r = H(n);
1519
+ if (!F(n)) return;
1520
+ let r = B(n);
1501
1521
  if (!(r === "num" || r === "heading" || r === "content")) {
1502
1522
  if (r === "alinea") {
1503
- o.push(...kn(e, n));
1523
+ o.push(...Mn(e, n));
1504
1524
  return;
1505
1525
  }
1506
- s(), c.push(U(e, n));
1526
+ s(), c.push(V(e, n));
1507
1527
  }
1508
1528
  }), s(), c.push(`</${n}>`), c.join("\n");
1509
1529
  }
1510
1530
  if (i === "article") {
1511
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = g(r) ?? {
1531
+ let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = g(r) ?? {
1512
1532
  label: r,
1513
1533
  num: r
1514
- }, 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>`;
1515
- if (En(e, t)) {
1516
- let r = [wn({
1534
+ }, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${z(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${z(a.label)}${i ? ` : ${z(i)}` : ""}</p>`;
1535
+ if (kn(e, t)) {
1536
+ let r = [Dn({
1517
1537
  content: o,
1518
- contextClass: zn(a.label)
1519
- }), ...kn(e, t)];
1520
- c.push(Sn(r));
1521
- for (let n of On(e, t)) n.includes("akn-pastille-table") || c.push(n);
1538
+ contextClass: Vn(a.label)
1539
+ }), ...Mn(e, t)];
1540
+ c.push(Tn(r));
1541
+ for (let n of jn(e, t)) n.includes("akn-pastille-table") || c.push(n);
1522
1542
  return c.push(`</${n}>`), c.join("\n");
1523
1543
  }
1524
1544
  c.push(o);
1525
1545
  }
1526
1546
  let l = [];
1527
1547
  for (let n of ["content", "children"]) e(t).children().each((t, r) => {
1528
- if (!L(r)) return;
1529
- let i = H(r);
1530
- i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
1548
+ if (!F(r)) return;
1549
+ let i = B(r);
1550
+ i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(V(e, r));
1531
1551
  });
1532
1552
  let u = l.join("\n");
1533
1553
  if (i !== "article") {
1534
- let n = yn(u, P(e(t).children("num").first().text())) ? "" : vn(e, t);
1554
+ let n = Sn(u, M(e(t).children("num").first().text())) ? "" : xn(e, t);
1535
1555
  n && c.push(n);
1536
1556
  }
1537
- return c.push(o ? xn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1557
+ return c.push(o ? wn(u, o) : u), c.push(`</${n}>`), c.join("\n");
1538
1558
  }
1539
- function jn(e, t, n, r) {
1540
- let i = Mn(e(t).attr("style") ?? "", "font-family");
1541
- return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = _n(i, "text-align", "center")), i || void 0;
1559
+ function Nn(e, t, n, r) {
1560
+ let i = Pn(e(t).attr("style") ?? "", "font-family");
1561
+ return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = bn(i, "text-align", "center")), i || void 0;
1542
1562
  }
1543
- function Mn(e, t) {
1563
+ function Pn(e, t) {
1544
1564
  return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
1545
1565
  }
1546
- function Nn(e) {
1566
+ function Fn(e) {
1547
1567
  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>`;
1548
1568
  }
1549
- function Pn(e, t, n) {
1550
- let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = Fn(n), o = [];
1551
- 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");
1569
+ function In(e, t, n) {
1570
+ let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = Ln(n), o = [];
1571
+ return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${z(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${z(i)}</span></p>`), o.join("\n");
1552
1572
  }
1553
- function Fn(e) {
1573
+ function Ln(e) {
1554
1574
  switch (e) {
1555
1575
  case "part": return {
1556
1576
  num: "TCNumPartie",
@@ -1574,22 +1594,22 @@ function Fn(e) {
1574
1594
  };
1575
1595
  }
1576
1596
  }
1577
- function In(e, t) {
1578
- let n = Rn(P(e(t).children("num").first().text()));
1597
+ function Rn(e, t) {
1598
+ let n = Bn(M(e(t).children("num").first().text()));
1579
1599
  if (n) return n;
1580
1600
  for (let n of e(t).parents().get()) {
1581
- if (!L(n)) continue;
1582
- let t = H(n);
1601
+ if (!F(n)) continue;
1602
+ let t = B(n);
1583
1603
  if (t !== "title" && t !== "part") continue;
1584
- let r = Rn(P(e(n).children("num").first().text()));
1604
+ let r = Bn(M(e(n).children("num").first().text()));
1585
1605
  if (r) return r;
1586
1606
  }
1587
1607
  }
1588
- function Ln(e, t) {
1589
- return In(e, t);
1608
+ function zn(e, t) {
1609
+ return Rn(e, t);
1590
1610
  }
1591
- function Rn(e) {
1592
- let [t, ...n] = P(e).split(/\s+/u);
1611
+ function Bn(e) {
1612
+ let [t, ...n] = M(e).split(/\s+/u);
1593
1613
  if (!t || n.length === 0) return;
1594
1614
  let r = t.toLocaleLowerCase("fr-FR");
1595
1615
  if ([
@@ -1599,10 +1619,10 @@ function Rn(e) {
1599
1619
  "section"
1600
1620
  ].includes(r)) return `${r}-${n.join("_")}`;
1601
1621
  }
1602
- function zn(e) {
1603
- return `article-${P(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1622
+ function Vn(e) {
1623
+ return `article-${M(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
1604
1624
  }
1605
- function Bn(e) {
1625
+ function Hn(e) {
1606
1626
  switch (e) {
1607
1627
  case "part": return "partie";
1608
1628
  case "book": return "livre";
@@ -1614,11 +1634,11 @@ function Bn(e) {
1614
1634
  default: return;
1615
1635
  }
1616
1636
  }
1617
- function Vn(e, t) {
1618
- return [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1637
+ function Un(e, t) {
1638
+ return [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean).join(" ");
1619
1639
  }
1620
- function Hn(e, t) {
1621
- let n = P(e(t).children("num").first().text()), r = P(e(t).children("heading").first().text()), i = g(n) ?? {
1640
+ function Wn(e, t) {
1641
+ let n = M(e(t).children("num").first().text()), r = M(e(t).children("heading").first().text()), i = g(n) ?? {
1622
1642
  label: n,
1623
1643
  num: n
1624
1644
  };
@@ -1628,24 +1648,24 @@ function Hn(e, t) {
1628
1648
  type: "article"
1629
1649
  };
1630
1650
  }
1631
- function Un(e, t) {
1651
+ function Gn(e, t) {
1632
1652
  e.items.push(...t.items);
1633
1653
  }
1634
- function Wn(e, t) {
1654
+ function Kn(e, t) {
1635
1655
  let n = { items: [] };
1636
1656
  return e(t).children().each((t, r) => {
1637
- if (!L(r)) return;
1638
- let i = H(r);
1657
+ if (!F(r)) return;
1658
+ let i = B(r);
1639
1659
  if (i === "article") {
1640
- n.items.push(Hn(e, r));
1660
+ n.items.push(Wn(e, r));
1641
1661
  return;
1642
1662
  }
1643
- let a = Bn(i);
1663
+ let a = Hn(i);
1644
1664
  if (!a) {
1645
- Un(n, Wn(e, r));
1665
+ Gn(n, Kn(e, r));
1646
1666
  return;
1647
1667
  }
1648
- let o = Vn(e, r), s = Wn(e, r);
1668
+ let o = Un(e, r), s = Kn(e, r);
1649
1669
  !o && s.items.length === 0 || n.items.push({
1650
1670
  ...s,
1651
1671
  id: e(r).attr("eId") ?? e(r).attr("GUID"),
@@ -1654,26 +1674,27 @@ function Wn(e, t) {
1654
1674
  });
1655
1675
  }), n;
1656
1676
  }
1657
- function Gn(e) {
1677
+ function qn(e) {
1658
1678
  let t = e("body").first().get(0);
1659
- return t === void 0 ? { items: [] } : Wn(e, t);
1679
+ return t === void 0 ? { items: [] } : Kn(e, t);
1660
1680
  }
1661
- function Kn(e) {
1681
+ function Jn(e) {
1662
1682
  return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
1663
1683
  }
1664
- function qn(e) {
1684
+ function Yn(e) {
1685
+ e("table").each((t, n) => gn(e, n));
1665
1686
  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>"];
1666
- return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(fn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
1667
- L(n) && r.push(H(n) === "article" ? An(e, n, "article", "akn-article") : U(e, n));
1687
+ 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) => {
1688
+ F(n) && r.push(B(n) === "article" ? U(e, n, "article", "akn-article") : V(e, n));
1668
1689
  }), r.push("</section></div>"), r.join("\n");
1669
1690
  }
1670
- function Jn(e) {
1671
- let t = w(e, { xml: {
1691
+ function Xn(e) {
1692
+ let t = C(e, { xml: {
1672
1693
  decodeEntities: !1,
1673
1694
  lowerCaseTags: !1,
1674
1695
  lowerCaseAttributeNames: !1,
1675
1696
  xmlMode: !0
1676
- } }), n = Kn(t), r = qn(t);
1697
+ } }), n = Jn(t), r = Yn(t);
1677
1698
  return {
1678
1699
  sourceFormat: "akoma-ntoso",
1679
1700
  documentDate: n,
@@ -1681,42 +1702,42 @@ function Jn(e) {
1681
1702
  linkedHtml: r
1682
1703
  };
1683
1704
  }
1684
- function Yn(e) {
1685
- return Xn(w(e));
1705
+ function Zn(e) {
1706
+ return Qn(C(e));
1686
1707
  }
1687
- function Xn(e) {
1708
+ function Qn(e) {
1688
1709
  let t = [];
1689
1710
  return e("article.akn-article").each((n, r) => {
1690
- let i = e(r).find("p.TCNumArticle").first().get(0), a = P(i ? e(i).text() : ""), o = g(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Dt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1711
+ let i = e(r).find("p.TCNumArticle").first().get(0), a = M(i ? e(i).text() : ""), o = g(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = kt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
1691
1712
  t.push({
1692
1713
  id: s,
1693
1714
  label: o.label,
1694
1715
  num: o.num,
1695
1716
  title: o.title,
1696
- text: lt(e, c),
1697
- html: at(e, r),
1717
+ text: dt(e, c),
1718
+ html: st(e, r),
1698
1719
  directiveText: u,
1699
1720
  blocks: l
1700
1721
  });
1701
1722
  }), t;
1702
1723
  }
1703
- function Zn(e) {
1704
- let t = w(e);
1724
+ function $n(e) {
1725
+ let t = C(e);
1705
1726
  return {
1706
- articles: Xn(t),
1727
+ articles: Qn(t),
1707
1728
  htmlWithLinks: t.html()
1708
1729
  };
1709
1730
  }
1710
- async function Qn(e, t) {
1711
- let n = new Ee("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
1731
+ async function er(e, t) {
1732
+ let n = new De("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => C(e, { xml: {
1712
1733
  decodeEntities: !1,
1713
1734
  lowerCaseTags: !1,
1714
1735
  lowerCaseAttributeNames: !1,
1715
1736
  xmlMode: !0
1716
- } })), i = t.date ?? Kn(r), a = n.timeSync("renderAknHtml", () => qn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => dt(a, {
1737
+ } })), i = t.date ?? Jn(r), a = n.timeSync("renderAknHtml", () => Yn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => pt(a, {
1717
1738
  ...t,
1718
1739
  date: i
1719
- }, i)), s = n.timeSync("extractRenderedAknArticles", () => Yn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Ot(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Zn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Gn(r)), p = n.timeSync("buildParsedDocument", () => nn("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, on(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
1740
+ }, i)), s = n.timeSync("extractRenderedAknArticles", () => Zn(a)), c = n.timeSync("injectHiddenArticleSummary", () => At(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => $n(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => qn(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")));
1720
1741
  return n.log({
1721
1742
  articleCount: p.articles.length,
1722
1743
  blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
@@ -1724,25 +1745,25 @@ async function Qn(e, t) {
1724
1745
  targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
1725
1746
  }), p;
1726
1747
  }
1727
- async function $n(e, t) {
1728
- let n = Jn(e), r = t.date ?? n.documentDate;
1748
+ async function tr(e, t) {
1749
+ let n = Xn(e), r = t.date ?? n.documentDate;
1729
1750
  return {
1730
1751
  sourceFormat: "akoma-ntoso",
1731
1752
  documentDate: r,
1732
1753
  html: n.html,
1733
- linkedHtml: await dt(n.html, t, r)
1754
+ linkedHtml: await pt(n.html, t, r)
1734
1755
  };
1735
1756
  }
1736
1757
  //#endregion
1737
1758
  //#region src/lib/server/assemblee_document_search.ts
1738
- var er = /\bexpos[ée]\s+des\s+motifs\b/giu, tr = /\barticle\s+(?:premier|1er|\d+)/iu;
1739
- function nr(e) {
1759
+ var nr = /\bexpos[ée]\s+des\s+motifs\b/giu, rr = /\barticle\s+(?:premier|1er|\d+)/iu;
1760
+ function ir(e) {
1740
1761
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
1741
1762
  }
1742
- function rr(e) {
1743
- let t = nr(w(e).text()), n = [...t.matchAll(er)], r = /* @__PURE__ */ new Set(), i = [];
1763
+ function ar(e) {
1764
+ let t = ir(C(e).text()), n = [...t.matchAll(nr)], r = /* @__PURE__ */ new Set(), i = [];
1744
1765
  for (let [e, a] of n.entries()) {
1745
- let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = tr.exec(s), l = nr(s.slice(0, c?.index ?? s.length));
1766
+ let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = rr.exec(s), l = ir(s.slice(0, c?.index ?? s.length));
1746
1767
  if (l.length < 20 || r.has(l)) continue;
1747
1768
  r.add(l);
1748
1769
  let u = `expose-des-motifs-${e + 1}`;
@@ -1758,8 +1779,8 @@ function rr(e) {
1758
1779
  }
1759
1780
  return i;
1760
1781
  }
1761
- async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1762
- let i = await cn(t, {
1782
+ async function or({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1783
+ let i = await un(t, {
1763
1784
  date: e,
1764
1785
  includeDirectiveAnalysis: !1,
1765
1786
  linkBaseUrl: n,
@@ -1768,7 +1789,7 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1768
1789
  });
1769
1790
  return {
1770
1791
  items: [...i.articles.map((e) => {
1771
- let t = nr(e.directiveText || e.text);
1792
+ let t = ir(e.directiveText || e.text);
1772
1793
  if (t) return {
1773
1794
  anchor: e.id,
1774
1795
  articleNumber: e.num ?? null,
@@ -1778,17 +1799,17 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
1778
1799
  label: e.label,
1779
1800
  title: e.title ?? null
1780
1801
  };
1781
- }).filter((e) => e !== void 0), ...rr(t)],
1802
+ }).filter((e) => e !== void 0), ...ar(t)],
1782
1803
  tableOfContents: i.tableOfContents
1783
1804
  };
1784
1805
  }
1785
- function ar(e, t) {
1786
- return je("sha256").update(JSON.stringify({
1806
+ function sr(e, t) {
1807
+ return Me("sha256").update(JSON.stringify({
1787
1808
  item: e,
1788
1809
  metadata: t
1789
1810
  })).digest("hex");
1790
1811
  }
1791
- function or(e) {
1812
+ function cr(e) {
1792
1813
  if (typeof e != "object" || !e) return;
1793
1814
  let t = e.cycleDeVie?.chrono;
1794
1815
  if (t !== void 0) for (let e of [
@@ -1803,11 +1824,11 @@ function or(e) {
1803
1824
  }
1804
1825
  //#endregion
1805
1826
  //#region src/lib/server/senat_amendment_search.ts
1806
- function sr(e) {
1807
- return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1827
+ function lr(e) {
1828
+ return e?.trim() ? C(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
1808
1829
  }
1809
- function cr({ dispositifHtml: e, objetHtml: t }) {
1810
- let n = sr(e), r = sr(t);
1830
+ function ur({ dispositifHtml: e, objetHtml: t }) {
1831
+ let n = lr(e), r = lr(t);
1811
1832
  return [...n ? [{
1812
1833
  content: n,
1813
1834
  itemKind: "dispositif",
@@ -1818,8 +1839,8 @@ function cr({ dispositifHtml: e, objetHtml: t }) {
1818
1839
  label: "Objet"
1819
1840
  }] : []];
1820
1841
  }
1821
- function lr(e, t) {
1822
- return je("sha256").update(JSON.stringify({
1842
+ function dr(e, t) {
1843
+ return Me("sha256").update(JSON.stringify({
1823
1844
  item: e,
1824
1845
  metadata: t
1825
1846
  })).digest("hex");
@@ -1833,16 +1854,16 @@ function W(e, t) {
1833
1854
  type: "amendment_action_directive"
1834
1855
  };
1835
1856
  }
1836
- function ur(e, t) {
1857
+ function fr(e, t) {
1837
1858
  return {
1838
1859
  type: e === "start" ? "head_of_target" : "tail_after_target",
1839
1860
  unit: t ? n(t) : "article"
1840
1861
  };
1841
1862
  }
1842
- function dr(e) {
1863
+ function pr(e) {
1843
1864
  return e === "start" ? "insert_before" : "insert_after";
1844
1865
  }
1845
- var fr = k(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = E(o, T([D("les?\\s+", { flags: "i" }), ne], { value: (e) => e[1] }), ne, p), pr = E(T([D("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1866
+ var mr = O(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = T(o, w([E("les?\\s+", { flags: "i" }), re], { value: (e) => e[1] }), re, p), hr = T(w([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
1846
1867
  let t = e[1];
1847
1868
  return {
1848
1869
  targetReference: t,
@@ -1851,58 +1872,58 @@ var fr = k(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]
1851
1872
  unit: n(t)
1852
1873
  }
1853
1874
  };
1854
- } }), T([m], { value: (e) => ({ targetScope: e[0] }) })), K = k(T([
1855
- k(D("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1856
- k(D("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1875
+ } }), w([m], { value: (e) => ({ targetScope: e[0] }) })), K = O(w([
1876
+ O(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1877
+ O(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
1857
1878
  G,
1858
- k(D("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1879
+ O(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
1859
1880
  ], { value: (e, t) => ({
1860
1881
  reference: e[2],
1861
1882
  text: t.text()
1862
- }) }), { default: null }), mr = k(D(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Se})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1883
+ }) }), { default: null }), gr = O(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Ce})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
1863
1884
  function q(e) {
1864
1885
  return e?.text ?? "";
1865
1886
  }
1866
- function hr(e) {
1887
+ function _r(e) {
1867
1888
  return { citation: f(e.position()) };
1868
1889
  }
1869
- var J = E(T([l], { value: (e) => ({ citation: e[0] }) }), D("\\S[\\s\\S]*", { value: (e, t) => hr(t) })), gr = D("\\S[\\s\\S]*", { value: (e, t) => hr(t) }), Y = D("[^:«“\"]*(?::\\s*)?", { flags: "i" }), _r = D("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1890
+ var J = T(w([l], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => _r(t) })), vr = E("\\S[\\s\\S]*", { value: (e, t) => _r(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), yr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
1870
1891
  flags: "i",
1871
- value: (e, t) => hr(t)
1872
- }), vr = D("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1892
+ value: (e, t) => _r(t)
1893
+ }), br = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
1873
1894
  flags: "i",
1874
- value: (e, t) => hr(t)
1875
- }), yr = D("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1895
+ value: (e, t) => _r(t)
1896
+ }), xr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
1876
1897
  flags: "i",
1877
- value: (e, t) => hr(t)
1878
- }), br = E(T([l], { value: (e) => ({ citation: e[0] }) }), _r), xr = E(T([l], { value: (e) => ({ citation: e[0] }) }), yr), Sr = T([D(`${a}s?\\s*:?\\s*`, { flags: "i" }), br], { value: (e) => e[1] }), Cr = T([D(`${h}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), xr], { value: (e) => e[1] }), wr = E(T([l], { value: (e) => ({ citation: e[0] }) }), vr), Tr = T([
1879
- mr,
1880
- D(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1881
- wr
1882
- ], { value: (e) => e[2] }), Er = T([
1883
- mr,
1884
- D(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1885
- E(T([l], { value: (e) => ({ citation: e[0] }) }), gr)
1898
+ value: (e, t) => _r(t)
1899
+ }), Sr = T(w([l], { value: (e) => ({ citation: e[0] }) }), yr), Cr = T(w([l], { value: (e) => ({ citation: e[0] }) }), xr), wr = w([E(`${a}s?\\s*:?\\s*`, { flags: "i" }), Sr], { value: (e) => e[1] }), Tr = w([E(`${h}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Cr], { value: (e) => e[1] }), Er = T(w([l], { value: (e) => ({ citation: e[0] }) }), br), Dr = w([
1900
+ gr,
1901
+ E(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1902
+ Er
1903
+ ], { value: (e) => e[2] }), Or = w([
1904
+ gr,
1905
+ E(`${a}s?\\s*:?\\s*`, { flags: "i" }),
1906
+ T(w([l], { value: (e) => ({ citation: e[0] }) }), vr)
1886
1907
  ], { value: (e) => e[2] });
1887
1908
  function X(e) {
1888
1909
  return e?.reference;
1889
1910
  }
1890
- var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1911
+ var kr = w([mr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
1891
1912
  contextText: e[0],
1892
1913
  kind: "delete_article"
1893
- }) }), Or = T([
1914
+ }) }), Ar = w([
1894
1915
  K,
1895
- D("supprimer", { flags: "i" }),
1896
- k(T([A, G], { value: (e) => e[1] }), { default: null }),
1897
- k(T([A, Er], { value: (e) => e[1] }), { default: null })
1916
+ E("supprimer", { flags: "i" }),
1917
+ O(w([k, G], { value: (e) => e[1] }), { default: null }),
1918
+ O(w([k, Or], { value: (e) => e[1] }), { default: null })
1898
1919
  ], { value: (e, t) => W(t, {
1899
1920
  contextText: q(e[0]),
1900
1921
  kind: "delete_portion",
1901
1922
  targetCitation: e[3]?.citation ?? void 0,
1902
1923
  targetReference: e[2] ?? X(e[0])
1903
- }) }), kr = T([
1924
+ }) }), jr = w([
1904
1925
  K,
1905
- E(D("r[eé]diger\\s+ainsi", { flags: "i" }), D("r[eé]tablir", { flags: "i" })),
1926
+ T(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
1906
1927
  Y,
1907
1928
  J
1908
1929
  ], { value: (e, t) => W(t, {
@@ -1910,76 +1931,76 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1910
1931
  kind: "rewrite_portion",
1911
1932
  replacementCitation: e[3].citation,
1912
1933
  targetReference: X(e[0])
1913
- }) }), Ar = T([
1934
+ }) }), Mr = w([
1914
1935
  K,
1915
- E(D("substituer", { flags: "i" }), D("remplacer", { flags: "i" })),
1916
- A,
1917
- mr,
1918
- Sr,
1919
- D("\\s*,?\\s*"),
1920
- k(D("par\\s+", { flags: "i" }), { default: "" }),
1921
- Cr
1936
+ T(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
1937
+ k,
1938
+ gr,
1939
+ wr,
1940
+ E("\\s*,?\\s*"),
1941
+ O(E("par\\s+", { flags: "i" }), { default: "" }),
1942
+ Tr
1922
1943
  ], { value: (e, t) => W(t, {
1923
1944
  contextText: q(e[0]),
1924
1945
  kind: "replace",
1925
1946
  replacementCitation: e[7].citation,
1926
1947
  targetCitation: e[4].citation,
1927
1948
  targetReference: X(e[0])
1928
- }) }), jr = T([
1949
+ }) }), Nr = w([
1929
1950
  K,
1930
- D("substituer", { flags: "i" }),
1931
- A,
1932
- k(D("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1951
+ E("substituer", { flags: "i" }),
1952
+ k,
1953
+ O(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
1933
1954
  G,
1934
- D("[\\s\\S]*?(?=[«“\"]|$)"),
1955
+ E("[\\s\\S]*?(?=[«“\"]|$)"),
1935
1956
  J
1936
1957
  ], { value: (e, t) => W(t, {
1937
1958
  contextText: q(e[0]),
1938
1959
  kind: "rewrite_portion",
1939
1960
  replacementCitation: e[6].citation,
1940
1961
  targetReference: e[4] ?? X(e[0])
1941
- }) }), Mr = T([
1962
+ }) }), Pr = w([
1942
1963
  e,
1943
- A,
1944
- D("l['’ ]article", { flags: "i" }),
1945
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1946
- D("ins[eé]rer", { flags: "i" }),
1964
+ k,
1965
+ E("l['’ ]article", { flags: "i" }),
1966
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1967
+ E("ins[eé]rer", { flags: "i" }),
1947
1968
  Y,
1948
1969
  J
1949
1970
  ], { value: (e, t) => W(t, {
1950
1971
  contextText: "",
1951
1972
  insertCitation: e[6].citation,
1952
1973
  kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
1953
- }) }), Nr = T([
1974
+ }) }), Fr = w([
1954
1975
  e,
1955
- A,
1976
+ k,
1956
1977
  G,
1957
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1958
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
1978
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1979
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1959
1980
  Y,
1960
1981
  J
1961
1982
  ], { value: (e, t) => W(t, {
1962
1983
  contextText: "",
1963
1984
  insertCitation: e[6].citation,
1964
- kind: C(e[0]),
1985
+ kind: ne(e[0]),
1965
1986
  targetReference: e[2]
1966
- }) }), Pr = T([
1987
+ }) }), Ir = w([
1967
1988
  e,
1968
- A,
1969
- D("l['’ ]alin[eé]a", { flags: "i" }),
1970
- D("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1971
- D("ins[eé]rer", { flags: "i" }),
1989
+ k,
1990
+ E("l['’ ]alin[eé]a", { flags: "i" }),
1991
+ E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
1992
+ E("ins[eé]rer", { flags: "i" }),
1972
1993
  Y,
1973
1994
  J
1974
1995
  ], { value: (e, t) => W(t, {
1975
1996
  contextText: "",
1976
1997
  insertCitation: e[6].citation,
1977
- kind: C(e[0])
1978
- }) }), Fr = T([
1998
+ kind: ne(e[0])
1999
+ }) }), Lr = w([
1979
2000
  K,
1980
2001
  d,
1981
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
1982
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2002
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2003
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
1983
2004
  Y,
1984
2005
  J
1985
2006
  ], { value: (e, t) => {
@@ -1987,62 +2008,62 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
1987
2008
  return W(t, {
1988
2009
  contextText: q(n),
1989
2010
  insertCitation: e[5].citation,
1990
- kind: dr(i),
2011
+ kind: pr(i),
1991
2012
  targetReference: r,
1992
- targetScope: ur(i, r)
2013
+ targetScope: fr(i, r)
1993
2014
  });
1994
- } }), Ir = T([
2015
+ } }), Rr = w([
1995
2016
  K,
1996
2017
  e,
1997
- A,
1998
- Tr,
1999
- D("[\\s\\S]*?(?=ins[eé]rer)"),
2000
- D("ins[eé]rer", { flags: "i" }),
2001
- A,
2002
- Cr
2018
+ k,
2019
+ Dr,
2020
+ E("[\\s\\S]*?(?=ins[eé]rer)"),
2021
+ E("ins[eé]rer", { flags: "i" }),
2022
+ k,
2023
+ Tr
2003
2024
  ], { value: (e, t) => W(t, {
2004
2025
  contextText: q(e[0]),
2005
2026
  insertCitation: e[7].citation,
2006
- kind: C(e[1]),
2027
+ kind: ne(e[1]),
2007
2028
  targetCitation: e[3].citation,
2008
2029
  targetReference: X(e[0])
2009
- }) }), Lr = T([
2030
+ }) }), zr = w([
2010
2031
  K,
2011
2032
  e,
2012
- A,
2033
+ k,
2013
2034
  G,
2014
- D("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2015
- E(D("ins[eé]rer", { flags: "i" }), D("ajouter", { flags: "i" })),
2035
+ E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
2036
+ T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
2016
2037
  Y,
2017
2038
  J
2018
2039
  ], { value: (e, t) => W(t, {
2019
2040
  contextText: q(e[0]),
2020
2041
  insertCitation: e[7].citation,
2021
- kind: C(e[1]),
2042
+ kind: ne(e[1]),
2022
2043
  targetReference: X(e[0]) ?? e[3]
2023
- }) }), Rr = E(Fr, Mr, Nr, Pr, jr, T([
2044
+ }) }), Br = T(Lr, Pr, Fr, Ir, Nr, w([
2024
2045
  K,
2025
2046
  e,
2026
- A,
2027
- Tr,
2028
- D("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2029
- E(T([
2030
- D("supprimer", {
2047
+ k,
2048
+ Dr,
2049
+ E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
2050
+ T(w([
2051
+ E("supprimer", {
2031
2052
  flags: "i",
2032
2053
  value: "delete_portion"
2033
2054
  }),
2034
- A,
2035
- pr
2055
+ k,
2056
+ hr
2036
2057
  ], { value: (e) => ({
2037
2058
  kind: e[0],
2038
2059
  ...e[2]
2039
- }) }), T([
2040
- D("r[eé]diger\\s+ainsi", {
2060
+ }) }), w([
2061
+ E("r[eé]diger\\s+ainsi", {
2041
2062
  flags: "i",
2042
2063
  value: "rewrite_portion"
2043
2064
  }),
2044
- A,
2045
- pr,
2065
+ k,
2066
+ hr,
2046
2067
  Y,
2047
2068
  J
2048
2069
  ], { value: (e) => ({
@@ -2060,10 +2081,10 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2060
2081
  targetReference: X(e[0]) ?? n.targetReference,
2061
2082
  targetScope: n.targetScope
2062
2083
  });
2063
- } }), Ir, Lr, T([
2064
- fr,
2065
- D("ins[eé]rer", { flags: "i" }),
2066
- D(`[\\s\\S]*?(?=${S})`, { flags: "i" }),
2084
+ } }), Rr, zr, w([
2085
+ mr,
2086
+ E("ins[eé]rer", { flags: "i" }),
2087
+ E(`[\\s\\S]*?(?=${S})`, { flags: "i" }),
2067
2088
  e,
2068
2089
  Y,
2069
2090
  l,
@@ -2072,12 +2093,12 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2072
2093
  ], { value: (e, t) => W(t, {
2073
2094
  contextText: e[0],
2074
2095
  insertCitation: e[8],
2075
- kind: C(e[3]),
2096
+ kind: ne(e[3]),
2076
2097
  targetCitation: e[6]
2077
- }) }), Ar, kr, T([
2098
+ }) }), Mr, jr, w([
2078
2099
  K,
2079
- D("compl[eé]ter", { flags: "i" }),
2080
- k(T([A, G], { value: (e) => e[1] }), { default: null }),
2100
+ E("compl[eé]ter", { flags: "i" }),
2101
+ O(w([k, G], { value: (e) => e[1] }), { default: null }),
2081
2102
  Y,
2082
2103
  J
2083
2104
  ], { value: (e, t) => W(t, {
@@ -2085,16 +2106,16 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
2085
2106
  insertCitation: e[4].citation,
2086
2107
  kind: "insert_after",
2087
2108
  targetReference: e[2] ?? X(e[0])
2088
- }) }), Dr, Or);
2109
+ }) }), kr, Ar);
2089
2110
  //#endregion
2090
2111
  //#region src/lib/server/parsed_amendments.ts
2091
- function zr(e) {
2112
+ function Vr(e) {
2092
2113
  return e.replace(/\s+/gu, " ").trim();
2093
2114
  }
2094
- function Br(e) {
2095
- return e.split(/\n/gu).map(zr).filter(Boolean).join("\n");
2115
+ function Hr(e) {
2116
+ return e.split(/\n/gu).map(Vr).filter(Boolean).join("\n");
2096
2117
  }
2097
- function Vr(e, t) {
2118
+ function Ur(e, t) {
2098
2119
  let { start: n, stop: r } = t;
2099
2120
  for (; n < r && /\s/u.test(e[n]);) n++;
2100
2121
  for (; r > n && /\s/u.test(e[r - 1]);) r--;
@@ -2103,16 +2124,16 @@ function Vr(e, t) {
2103
2124
  stop: r
2104
2125
  } : null;
2105
2126
  }
2106
- function Hr(e, t) {
2107
- return ge(ve(e), t);
2127
+ function Wr(e, t) {
2128
+ return _e(ye(e), t);
2108
2129
  }
2109
- function Ur(e) {
2130
+ function Gr(e) {
2110
2131
  return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
2111
2132
  }
2112
- function Wr(e) {
2133
+ function Kr(e) {
2113
2134
  return {
2114
2135
  articleLabel: e.targetArticleLabel ?? null,
2115
- targetPosition: Ur(e.targetPosition),
2136
+ targetPosition: Gr(e.targetPosition),
2116
2137
  alinea: e.targetAlinea ?? null,
2117
2138
  alineaLabel: e.targetAlineaLabel ?? null,
2118
2139
  subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
@@ -2127,36 +2148,36 @@ function Z(e) {
2127
2148
  sourceText: e.text
2128
2149
  };
2129
2150
  }
2130
- function Gr(e) {
2151
+ function qr(e) {
2131
2152
  return {
2132
2153
  ...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
2133
2154
  sourcePosition: e.position,
2134
2155
  sourceText: e.text
2135
2156
  };
2136
2157
  }
2137
- function Kr(e) {
2158
+ function Jr(e) {
2138
2159
  return {
2139
2160
  ...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
2140
2161
  ...e === null ? {} : { dispositifPosition: e.position },
2141
2162
  dispositifText: e?.text ?? null
2142
2163
  };
2143
2164
  }
2144
- function qr(e, t, n, r = Br(e.slice(n.start, n.stop))) {
2165
+ function Yr(e, t, n, r = Hr(e.slice(n.start, n.stop))) {
2145
2166
  return {
2146
- originalTransformation: Hr(t, n),
2167
+ originalTransformation: Wr(t, n),
2147
2168
  position: n,
2148
2169
  text: r
2149
2170
  };
2150
2171
  }
2151
- function Jr(e) {
2172
+ function Xr(e) {
2152
2173
  let t = e.dispositifHtml ?? e.dispositifText;
2153
2174
  if (!t) return null;
2154
- let n = e.dispositifHtml ? ye()(t) : Ce(t), r = n.output, i = Vr(r, {
2175
+ let n = e.dispositifHtml ? be()(t) : we(t), r = n.output, i = Ur(r, {
2155
2176
  start: 0,
2156
2177
  stop: r.length
2157
2178
  });
2158
2179
  return {
2159
- dispositif: i === null ? null : qr(r, n, i),
2180
+ dispositif: i === null ? null : Yr(r, n, i),
2160
2181
  simplifiedText: r,
2161
2182
  transformation: n
2162
2183
  };
@@ -2176,7 +2197,7 @@ function Q(e) {
2176
2197
  for (let t of c(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
2177
2198
  return [];
2178
2199
  }
2179
- function Yr(e, t) {
2200
+ function Zr(e, t) {
2180
2201
  let n = Q(t);
2181
2202
  return {
2182
2203
  ...e,
@@ -2184,11 +2205,11 @@ function Yr(e, t) {
2184
2205
  ...n.length > 0 ? { alineas: n } : {}
2185
2206
  };
2186
2207
  }
2187
- function Xr(e) {
2208
+ function Qr(e) {
2188
2209
  return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
2189
2210
  }
2190
- function Zr(e, t) {
2191
- let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Xr(t.text));
2211
+ function $r(e, t) {
2212
+ let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Qr(t.text));
2192
2213
  if (!n) return null;
2193
2214
  let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
2194
2215
  return !Number.isFinite(r) || r < 1 ? null : {
@@ -2197,25 +2218,25 @@ function Zr(e, t) {
2197
2218
  alineas: [r]
2198
2219
  };
2199
2220
  }
2200
- function Qr(e, t) {
2221
+ function ei(e, t) {
2201
2222
  if (e) return e.unit === "article" && t.alinea !== null ? {
2202
2223
  ...e,
2203
2224
  unit: "alinéa"
2204
2225
  } : e;
2205
2226
  }
2206
- function $r(e) {
2207
- return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Xr(e.text));
2227
+ function ti(e) {
2228
+ return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Qr(e.text));
2208
2229
  }
2209
- function ei(e, t, n, r) {
2210
- return qr(e, t, {
2230
+ function ni(e, t, n, r) {
2231
+ return Yr(e, t, {
2211
2232
  start: n.position.start,
2212
2233
  stop: r.position.stop
2213
2234
  });
2214
2235
  }
2215
- function ti(e) {
2236
+ function ri(e) {
2216
2237
  return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
2217
2238
  }
2218
- function ni(e, t) {
2239
+ function ii(e, t) {
2219
2240
  let n = { ...t.position };
2220
2241
  function r(t) {
2221
2242
  let r = t.exec(e.slice(n.start, n.stop));
@@ -2224,29 +2245,29 @@ function ni(e, t) {
2224
2245
  stop: n.stop
2225
2246
  });
2226
2247
  }
2227
- 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), Vr(e, n);
2248
+ 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), Ur(e, n);
2228
2249
  }
2229
- function ri(e) {
2230
- return pe(e);
2250
+ function ai(e) {
2251
+ return me(e);
2231
2252
  }
2232
- function ii(e, t) {
2233
- return Rr(new O(e.slice(0, t.stop), t.start)) ?? null;
2253
+ function oi(e, t) {
2254
+ return Br(new D(e.slice(0, t.stop), t.start)) ?? null;
2234
2255
  }
2235
2256
  function $(e, t, n) {
2236
- if (n) return qr(e, t, n.position, Br(_(e, n)));
2257
+ if (n) return Yr(e, t, n.position, Hr(_(e, n)));
2237
2258
  }
2238
- function ai(e, t) {
2259
+ function si(e, t) {
2239
2260
  if (!e) return;
2240
2261
  let n = structuredClone(e);
2241
- for (let e of u(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Hr(t, e.position));
2262
+ for (let e of u(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Wr(t, e.position));
2242
2263
  return n;
2243
2264
  }
2244
- function oi(e, t, n, r) {
2245
- let i = ni(e, n);
2265
+ function ci(e, t, n, r) {
2266
+ let i = ii(e, n);
2246
2267
  if (!i) return null;
2247
- let a = ii(e, i);
2268
+ let a = oi(e, i);
2248
2269
  if (!a) return null;
2249
- let o = qr(e, t, i), s = ai(a.targetReference, t), c = Yr(r, s), l = ri(o.text);
2270
+ let o = Yr(e, t, i), s = si(a.targetReference, t), c = Zr(r, s), l = ai(o.text);
2250
2271
  if (a.kind === "delete_article") return {
2251
2272
  kind: "delete_article",
2252
2273
  ...Z(o),
@@ -2264,7 +2285,7 @@ function oi(e, t, n, r) {
2264
2285
  },
2265
2286
  targetOccurrence: l,
2266
2287
  targetReference: s,
2267
- targetScope: Qr(a.targetScope, c)
2288
+ targetScope: ei(a.targetScope, c)
2268
2289
  };
2269
2290
  }
2270
2291
  if (a.kind === "rewrite_portion") {
@@ -2281,7 +2302,7 @@ function oi(e, t, n, r) {
2281
2302
  },
2282
2303
  targetOccurrence: l,
2283
2304
  targetReference: s,
2284
- targetScope: Qr(a.targetScope, c),
2305
+ targetScope: ei(a.targetScope, c),
2285
2306
  replacementCitation: n,
2286
2307
  replacementText: n.text
2287
2308
  };
@@ -2336,19 +2357,19 @@ function oi(e, t, n, r) {
2336
2357
  targetReference: s,
2337
2358
  insertCitation: n,
2338
2359
  insertText: n.text,
2339
- targetScope: Qr(a.targetScope, c)
2360
+ targetScope: ei(a.targetScope, c)
2340
2361
  };
2341
2362
  }
2342
2363
  return null;
2343
2364
  }
2344
- function si(e, t) {
2365
+ function li(e, t) {
2345
2366
  let n = [], r = 0, i = 0;
2346
2367
  function a(r) {
2347
- let a = Vr(e, {
2368
+ let a = Ur(e, {
2348
2369
  start: i,
2349
2370
  stop: r
2350
2371
  });
2351
- a !== null && n.push(qr(e, t, a));
2372
+ a !== null && n.push(Yr(e, t, a));
2352
2373
  }
2353
2374
  function o(t) {
2354
2375
  let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
@@ -2366,7 +2387,7 @@ function si(e, t) {
2366
2387
  continue;
2367
2388
  }
2368
2389
  if (r > 0) continue;
2369
- 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) && $r({
2390
+ 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) && ti({
2370
2391
  originalTransformation: void 0,
2371
2392
  position: {
2372
2393
  start: i,
@@ -2378,8 +2399,8 @@ function si(e, t) {
2378
2399
  }
2379
2400
  return a(e.length), n;
2380
2401
  }
2381
- function ci(e) {
2382
- let t = Jr(e), n = t?.dispositif ?? null, r = Kr(n), i = [], a = [], o = Wr(e);
2402
+ function ui(e) {
2403
+ let t = Xr(e), n = t?.dispositif ?? null, r = Jr(n), i = [], a = [], o = Kr(e);
2383
2404
  if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
2384
2405
  code: "unsupported_sub_amendment",
2385
2406
  message: "Les sous-amendements ne sont pas encore projetés."
@@ -2397,9 +2418,9 @@ function ci(e) {
2397
2418
  });
2398
2419
  else {
2399
2420
  let { simplifiedText: e, transformation: r } = t, s = o, c = null;
2400
- for (let t of si(e, r)) {
2401
- ti(t) && (s = o, c = null);
2402
- let n = c ? ei(e, r, c, t) : t, i = oi(e, r, n, s);
2421
+ for (let t of li(e, r)) {
2422
+ ri(t) && (s = o, c = null);
2423
+ let n = c ? ni(e, r, c, t) : t, i = ci(e, r, n, s);
2403
2424
  if (i) {
2404
2425
  a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
2405
2426
  continue;
@@ -2408,12 +2429,12 @@ function ci(e) {
2408
2429
  c = n;
2409
2430
  continue;
2410
2431
  }
2411
- let l = Zr(o, t);
2432
+ let l = $r(o, t);
2412
2433
  if (l !== null) {
2413
2434
  s = l;
2414
2435
  continue;
2415
2436
  }
2416
- $r(t) && (c = t);
2437
+ ti(t) && (c = t);
2417
2438
  }
2418
2439
  a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
2419
2440
  kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
@@ -2424,7 +2445,7 @@ function ci(e) {
2424
2445
  }), a.length === 0 && i.push({
2425
2446
  code: "unrecognized_dispositif",
2426
2447
  message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
2427
- ...Gr(n)
2448
+ ...qr(n)
2428
2449
  });
2429
2450
  }
2430
2451
  return {
@@ -2438,25 +2459,25 @@ function ci(e) {
2438
2459
  }
2439
2460
  //#endregion
2440
2461
  //#region src/lib/server/senat_document_search.ts
2441
- function li(e) {
2462
+ function di(e) {
2442
2463
  return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
2443
2464
  }
2444
- function ui(e) {
2465
+ function fi(e) {
2445
2466
  let t = g(e);
2446
2467
  if (!t) return {
2447
2468
  articleNumber: null,
2448
2469
  label: e,
2449
2470
  title: null
2450
2471
  };
2451
- let n = li(t.num ?? "") || null, r = li(t.title ?? "") || null;
2472
+ let n = di(t.num ?? "") || null, r = di(t.title ?? "") || null;
2452
2473
  return {
2453
2474
  articleNumber: n,
2454
2475
  label: t.label,
2455
2476
  title: r
2456
2477
  };
2457
2478
  }
2458
- function di(e) {
2459
- let t = w(e), n = [], r = li(t("section.akn-preamble").text());
2479
+ function pi(e) {
2480
+ let t = C(e), n = [], r = di(t("section.akn-preamble").text());
2460
2481
  return r && n.push({
2461
2482
  anchor: "senat-expose-des-motifs",
2462
2483
  articleNumber: null,
@@ -2466,9 +2487,9 @@ function di(e) {
2466
2487
  label: "Exposé des motifs",
2467
2488
  title: null
2468
2489
  }), t("article.akn-article").each((e, r) => {
2469
- let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = li(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = ui(o || s), l = i.clone();
2490
+ let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = di(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = fi(o || s), l = i.clone();
2470
2491
  l.children("p.TCNumArticle").remove();
2471
- let u = li(l.text());
2492
+ let u = di(l.text());
2472
2493
  u && n.push({
2473
2494
  anchor: i.attr("id") || null,
2474
2495
  articleNumber: c.articleNumber,
@@ -2480,40 +2501,40 @@ function di(e) {
2480
2501
  });
2481
2502
  }), n;
2482
2503
  }
2483
- function fi(e, t) {
2484
- return je("sha256").update(JSON.stringify({
2504
+ function mi(e, t) {
2505
+ return Me("sha256").update(JSON.stringify({
2485
2506
  item: e,
2486
2507
  metadata: t
2487
2508
  })).digest("hex");
2488
2509
  }
2489
2510
  //#endregion
2490
2511
  //#region src/lib/server/senat_document_sources.ts
2491
- var pi = new Set(["senat.fr", "www.senat.fr"]), mi = "https://www.senat.fr";
2492
- function hi(e) {
2512
+ var hi = new Set(["senat.fr", "www.senat.fr"]), gi = "https://www.senat.fr";
2513
+ function _i(e) {
2493
2514
  return e?.trim() || void 0;
2494
2515
  }
2495
- function gi(e) {
2516
+ function vi(e) {
2496
2517
  try {
2497
- let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, mi);
2498
- return pi.has(n.hostname.toLowerCase()) ? n : void 0;
2518
+ let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, gi);
2519
+ return hi.has(n.hostname.toLowerCase()) ? n : void 0;
2499
2520
  } catch {
2500
2521
  return;
2501
2522
  }
2502
2523
  }
2503
- function _i(e) {
2504
- let t = hi(e);
2524
+ function yi(e) {
2525
+ let t = _i(e);
2505
2526
  if (t === void 0) return {
2506
2527
  publicUrl: null,
2507
2528
  status: "no_url"
2508
2529
  };
2509
- let n = gi(t);
2530
+ let n = vi(t);
2510
2531
  if (n === void 0) return {
2511
2532
  publicUrl: t,
2512
2533
  status: "unsupported_source"
2513
2534
  };
2514
2535
  let r = n.pathname;
2515
2536
  if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
2516
- akomaNtosoUrl: `${mi}${r}`,
2537
+ akomaNtosoUrl: `${gi}${r}`,
2517
2538
  publicUrl: n.toString(),
2518
2539
  status: "available"
2519
2540
  };
@@ -2522,17 +2543,17 @@ function _i(e) {
2522
2543
  publicUrl: n.toString(),
2523
2544
  status: "unsupported_source"
2524
2545
  } : {
2525
- akomaNtosoUrl: `${mi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2546
+ akomaNtosoUrl: `${gi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
2526
2547
  publicUrl: n.toString(),
2527
2548
  status: "available"
2528
2549
  };
2529
2550
  }
2530
- function vi(e) {
2551
+ function bi(e) {
2531
2552
  return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
2532
2553
  }
2533
2554
  //#endregion
2534
2555
  //#region src/lib/alineas/alineas_numbers.ts
2535
- var yi = {
2556
+ var xi = {
2536
2557
  "0150a855548f15a2af52ea057be53f5d": 1,
2537
2558
  "039826cf379b94afefe90b25c6045ca0": 1,
2538
2559
  "03a7e564b84662f4d957c51018e26244": 1,
@@ -21506,7 +21527,7 @@ var yi = {
21506
21527
  d16d29c923bd60c7b095b66c6058fe60: 1664,
21507
21528
  "1c14c2adf5cfda3220b2057160e10e91": 1665,
21508
21529
  e44c55ca1ac46ff46420686a466c9fc6: 1665
21509
- }, bi = "\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", xi = "\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", Si = "\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", Ci = "\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", wi = "\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", Ti = {
21530
+ }, Si = "\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", Ci = "\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", wi = "\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", Ti = "\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", Ei = "\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", Di = {
21510
21531
  assnatetatagr: { bold: !0 },
21511
21532
  assnatetatagrgr: { bold: !0 },
21512
21533
  assnatetatatr: { bold: !0 },
@@ -21607,29 +21628,29 @@ var yi = {
21607
21628
  assnatxl67: { align: "center" },
21608
21629
  assnatenteteequilibre: { align: "center" }
21609
21630
  };
21610
- function Ei(e) {
21611
- let t = Object.keys(Ti).sort((e, t) => t.length - e.length);
21612
- for (let n of t) if (e.includes(n)) return Ti[n];
21631
+ function Oi(e) {
21632
+ let t = Object.keys(Di).sort((e, t) => t.length - e.length);
21633
+ for (let n of t) if (e.includes(n)) return Di[n];
21613
21634
  return null;
21614
21635
  }
21615
- function Di(e) {
21616
- return Ae.createHash("md5").update(e).digest("hex");
21636
+ function ki(e) {
21637
+ return je.createHash("md5").update(e).digest("hex");
21617
21638
  }
21618
- function Oi(e) {
21639
+ function Ai(e) {
21619
21640
  return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
21620
21641
  }
21621
- function ki(e) {
21642
+ function ji(e) {
21622
21643
  return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
21623
21644
  }
21624
- function Ai(e) {
21645
+ function Mi(e) {
21625
21646
  if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
21626
21647
  let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
21627
21648
  return !(t && parseFloat(t[1]) < 8);
21628
21649
  }
21629
- function ji(e) {
21650
+ function Ni(e) {
21630
21651
  return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
21631
21652
  }
21632
- function Mi(e) {
21653
+ function Pi(e) {
21633
21654
  if (!e) return;
21634
21655
  let t = [
21635
21656
  "width",
@@ -21664,15 +21685,15 @@ function Mi(e) {
21664
21685
  }
21665
21686
  return n.length > 0 ? n.join("; ") : void 0;
21666
21687
  }
21667
- function Ni(e, t) {
21688
+ function Fi(e, t) {
21668
21689
  return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
21669
21690
  }
21670
- function Pi(e) {
21691
+ function Ii(e) {
21671
21692
  if (!e) return null;
21672
21693
  let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
21673
21694
  return t ? t[1].toLowerCase() : null;
21674
21695
  }
21675
- function Fi(e) {
21696
+ function Li(e) {
21676
21697
  if (!e) return null;
21677
21698
  for (let [t, n] of [
21678
21699
  [/assnat1Tome|assnatAN1PARTIE/i, 1],
@@ -21684,8 +21705,8 @@ function Fi(e) {
21684
21705
  ]) if (t.test(e)) return n;
21685
21706
  return null;
21686
21707
  }
21687
- function Ii(e, t = {}) {
21688
- let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
21708
+ function Ri(e, t = {}) {
21709
+ let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = C(e, { xml: { decodeEntities: !1 } });
21689
21710
  a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
21690
21711
  let n = a(t).closest("table");
21691
21712
  n.length > 0 && n.remove();
@@ -21710,7 +21731,7 @@ function Ii(e, t = {}) {
21710
21731
  if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
21711
21732
  let e = i.attr();
21712
21733
  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")) {
21713
- let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Di(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21734
+ let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? ki(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
21714
21735
  n.replaceWith(`<span class="alinea"${i}></span>`);
21715
21736
  return;
21716
21737
  }
@@ -21729,7 +21750,7 @@ function Ii(e, t = {}) {
21729
21750
  (!r || r === "\xA0") && n.remove();
21730
21751
  }), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
21731
21752
  function o(e) {
21732
- let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Oi(n) || r === "b" || r === "strong", o = ki(n) || r === "i" || r === "em", s = Ai(n) || r === "sup", c = ji(n) || r === "sub", l = t.attr("class") || "";
21753
+ let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ai(n) || r === "b" || r === "strong", o = ji(n) || r === "i" || r === "em", s = Mi(n) || r === "sup", c = Ni(n) || r === "sub", l = t.attr("class") || "";
21733
21754
  return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
21734
21755
  bold: i,
21735
21756
  italic: o,
@@ -21763,7 +21784,7 @@ function Ii(e, t = {}) {
21763
21784
  c = e;
21764
21785
  }
21765
21786
  for (a("p").each((e, t) => {
21766
- let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Fi(i);
21787
+ let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Li(i);
21767
21788
  if (i.includes("assnatFARCouvTitreD")) {
21768
21789
  let e = r.html() || "";
21769
21790
  r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
@@ -21796,11 +21817,11 @@ function Ii(e, t = {}) {
21796
21817
  let c = r.text().trim().startsWith("«");
21797
21818
  if (s && !c) {
21798
21819
  let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
21799
- n && Ni(o, i) && e.attr("align", "center"), r.replaceWith(e);
21820
+ n && Fi(o, i) && e.attr("align", "center"), r.replaceWith(e);
21800
21821
  } else {
21801
- let e = Ei(i), t;
21822
+ let e = Oi(i), t;
21802
21823
  if (n) {
21803
- let n = Pi(o);
21824
+ let n = Ii(o);
21804
21825
  n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
21805
21826
  }
21806
21827
  if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
@@ -21810,7 +21831,7 @@ function Ii(e, t = {}) {
21810
21831
  }
21811
21832
  }), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
21812
21833
  let r = a(t), i = r.attr("style"), o = r.attr("class");
21813
- n && Ni(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21834
+ n && Fi(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
21814
21835
  }), a("a").each((e, t) => {
21815
21836
  let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
21816
21837
  for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
@@ -21849,7 +21870,7 @@ function Ii(e, t = {}) {
21849
21870
  }), a("br").each((e, t) => {
21850
21871
  a(t).removeAttr("style").removeAttr("class");
21851
21872
  }), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
21852
- let n = a(t), r = Mi(n.attr("style"));
21873
+ let n = a(t), r = Pi(n.attr("style"));
21853
21874
  n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
21854
21875
  }), a("td, th").each((e, t) => {
21855
21876
  let n = a(t), r = n.children();
@@ -21867,17 +21888,17 @@ function Ii(e, t = {}) {
21867
21888
  !isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
21868
21889
  }
21869
21890
  }), a("li").each((e, t) => {
21870
- let n = a(t), r = Pi(n.attr("style"));
21891
+ let n = a(t), r = Ii(n.attr("style"));
21871
21892
  n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
21872
21893
  let i = n.html() || "", o = i.replace(/^(\s|&#xa0;|&#160;|\u00a0)+/, "");
21873
21894
  o !== i && n.html(o);
21874
- }), Li(a), Ri(a, i);
21895
+ }), zi(a), Bi(a, i);
21875
21896
  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 = "";
21876
- m && (h += wi), f && (h += xi), p && (h += Si), u && (h += bi), d && (h += Ci);
21897
+ m && (h += Ei), f && (h += Ci), p && (h += wi), u && (h += Si), d && (h += Ti);
21877
21898
  let g = h ? `<style>${h}</style>\n${l}` : l;
21878
- 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 = zi(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;
21899
+ 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 = Vi(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;
21879
21900
  }
21880
- function Li(e) {
21901
+ function zi(e) {
21881
21902
  e("span[id]").each((t, n) => {
21882
21903
  let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
21883
21904
  if (o.length !== 1 || o[0] !== "id") return;
@@ -21900,13 +21921,13 @@ function Li(e) {
21900
21921
  l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
21901
21922
  });
21902
21923
  }
21903
- function Ri(e, t = !1) {
21924
+ function Bi(e, t = !1) {
21904
21925
  let n = e("body");
21905
21926
  if (n.length === 0) return;
21906
21927
  let r = n.find("span.alinea[data-image-hash]"), i = -1;
21907
21928
  r.each((n, r) => {
21908
21929
  let a = e(r), o = a.attr("data-image-hash"), s;
21909
- if (o && yi[o] !== void 0 && (s = yi[o]), s === void 0) {
21930
+ if (o && xi[o] !== void 0 && (s = xi[o]), s === void 0) {
21910
21931
  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".`);
21911
21932
  a.remove();
21912
21933
  return;
@@ -21918,11 +21939,11 @@ function Ri(e, t = !1) {
21918
21939
  i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
21919
21940
  });
21920
21941
  }
21921
- function zi(e) {
21942
+ function Vi(e) {
21922
21943
  let t = e;
21923
21944
  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;
21924
21945
  }
21925
- function Bi(e, t = {}) {
21946
+ function Hi(e, t = {}) {
21926
21947
  return `<!DOCTYPE html>
21927
21948
  <html lang="fr">
21928
21949
  <head>
@@ -21930,33 +21951,33 @@ function Bi(e, t = {}) {
21930
21951
  <title>Document simplifié</title>
21931
21952
  </head>
21932
21953
  <body>
21933
- ${Ii(e, t)}
21954
+ ${Ri(e, t)}
21934
21955
  </body>
21935
21956
  </html>`;
21936
21957
  }
21937
21958
  //#endregion
21938
21959
  //#region src/lib/server/text_parsers/transformers.ts
21939
- function Vi(e, t) {
21960
+ function Ui(e, t) {
21940
21961
  let n = "transformation_", r = {};
21941
- for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21962
+ for (let e of A.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
21942
21963
  let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
21943
21964
  for (let e of a.slice(1)) {
21944
21965
  let t = o.transformations ??= [];
21945
21966
  for (; e >= t.length;) t.push({});
21946
21967
  o = t[e];
21947
21968
  }
21948
- o.output = j.readFileSync(M.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21949
- let { sourceMap: s, title: c } = j.readJsonSync(M.join(t, e), { encoding: "utf-8" });
21969
+ o.output = A.readFileSync(Ne.join(t, `${n}${i}.html`), { encoding: "utf-8" });
21970
+ let { sourceMap: s, title: c } = A.readJsonSync(Ne.join(t, e), { encoding: "utf-8" });
21950
21971
  o.sourceMap = s ?? [], o.title = c;
21951
21972
  }
21952
- return Hi(r, e), r;
21973
+ return Wi(r, e), r;
21953
21974
  }
21954
- function Hi(e, t) {
21955
- if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Hi(n, t), t = n.output;
21975
+ function Wi(e, t) {
21976
+ if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Wi(n, t), t = n.output;
21956
21977
  return t;
21957
21978
  }
21958
- function Ui(e, t, n = "1") {
21959
- if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(M.join(t, `transformation_${n}.json`), {
21979
+ function Gi(e, t, n = "1") {
21980
+ if (A.ensureDirSync(t), e.transformations === void 0) A.writeJsonSync(Ne.join(t, `transformation_${n}.json`), {
21960
21981
  sourceMap: e.sourceMap,
21961
21982
  title: e.title
21962
21983
  }, {
@@ -21964,24 +21985,24 @@ function Ui(e, t, n = "1") {
21964
21985
  spaces: 2
21965
21986
  });
21966
21987
  else {
21967
- j.writeJsonSync(M.join(t, `transformation_${n}.json`), { title: e.title }, {
21988
+ A.writeJsonSync(Ne.join(t, `transformation_${n}.json`), { title: e.title }, {
21968
21989
  encoding: "utf-8",
21969
21990
  spaces: 2
21970
21991
  });
21971
- for (let [r, i] of e.transformations.entries()) Ui(i, t, `${n}.${r + 1}`);
21992
+ for (let [r, i] of e.transformations.entries()) Gi(i, t, `${n}.${r + 1}`);
21972
21993
  }
21973
- e.output !== void 0 && j.writeFileSync(M.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21994
+ e.output !== void 0 && A.writeFileSync(Ne.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
21974
21995
  }
21975
21996
  //#endregion
21976
21997
  //#region src/lib/server/linkers/html.ts
21977
- async function Wi({ 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 }) {
21978
- let _ = t ?? (e === void 0 ? void 0 : new se(e));
21998
+ async function Ki({ 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 }) {
21999
+ let _ = t ?? (e === void 0 ? void 0 : new ce(e));
21979
22000
  if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
21980
- let v = await j.readFile(i, { encoding: "utf-8" }), y;
21981
- a === void 0 ? (y = ye({ removeAWithHref: !0 })(v), o !== void 0 && Ui(y, o)) : y = Vi(v, a);
22001
+ let v = await A.readFile(i, { encoding: "utf-8" }), y;
22002
+ a === void 0 ? (y = be({ removeAWithHref: !0 })(v), o !== void 0 && Gi(y, o)) : y = Ui(v, a);
21982
22003
  let b = [];
21983
22004
  s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
21984
- let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
22005
+ let { outputByType: x, referredLegifranceTextCountByCid: ee } = await ue({
21985
22006
  legiResolver: _,
21986
22007
  date: n,
21987
22008
  defaultTextId: r,
@@ -21998,38 +22019,38 @@ async function Wi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
21998
22019
  s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
21999
22020
  for (let [e, t] of Object.entries(x)) {
22000
22021
  let n = S[e];
22001
- n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
22022
+ n !== void 0 && await A.writeFile(n, t.html, { encoding: "utf-8" });
22002
22023
  }
22003
- x.links !== void 0 && l !== void 0 && Ui(ye()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
22024
+ x.links !== void 0 && l !== void 0 && Gi(be()(x.links.html), l), g !== void 0 && await A.writeJson(g, ee, {
22004
22025
  encoding: "utf-8",
22005
22026
  spaces: 2
22006
22027
  });
22007
22028
  }
22008
22029
  //#endregion
22009
22030
  //#region src/lib/server/tables_of_contents.ts
22010
- async function Gi(e, t, n, r) {
22011
- let i = Vi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new O(a), s = await j.readJson(n, { encoding: "utf-8" });
22012
- for await (let e of ce({
22031
+ async function qi(e, t, n, r) {
22032
+ let i = Ui(await A.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await A.readJson(n, { encoding: "utf-8" });
22033
+ for await (let e of le({
22013
22034
  context: o,
22014
22035
  tableOfContents: s,
22015
22036
  transformation: i
22016
22037
  }));
22017
- await j.writeJson(r, s, {
22038
+ await A.writeJson(r, s, {
22018
22039
  encoding: "utf-8",
22019
22040
  spaces: 2
22020
22041
  });
22021
22042
  }
22022
- async function Ki(e, t, n) {
22023
- let r = Vi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22024
- await j.writeJson(n, i, {
22043
+ async function Ji(e, t, n) {
22044
+ let r = Ui(await A.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
22045
+ await A.writeJson(n, i, {
22025
22046
  encoding: "utf-8",
22026
22047
  spaces: 2
22027
22048
  });
22028
22049
  }
22029
22050
  //#endregion
22030
22051
  //#region src/lib/server/legi/resolvers.ts
22031
- function qi({ canutesDb: e }) {
22032
- return new se(e);
22052
+ function Yi({ canutesDb: e }) {
22053
+ return new ce(e);
22033
22054
  }
22034
22055
  //#endregion
22035
- export { ke as LegiResolver, Wi as addLinksOrReferencesToHtmlFile, Gi as addPositionsToTableOfContentsFile, Te as buildAndInstallTextTitlesInfos, De as buildTextTitlesInfos, qi as createLegiResolver, Fe as extractAssembleeAmendmentSearchItems, rr as extractAssembleeExposesDesMotifs, cr as extractSenatAmendmentSearchItems, Ie as hashAssembleeAmendmentSearchItem, ar as hashAssembleeSearchItem, lr as hashSenatAmendmentSearchItem, fi as hashSenatSearchItem, vi as isAkomaNtosoXml, or as isoDateFromAssembleeDocument, $n as linkAkomaNtosoBillRaw, ln as linkAssembleeBillRaw, Qn as parseAkomaNtosoBillRaw, ci as parseAmendment, cn as parseAssembleeBillRaw, ir as parseAssembleeDocumentSearchContent, di as parseSenatDocumentSearchContent, Vi as readTransformation, Jn as renderAkomaNtosoBillRaw, _i as resolveSenatAkomaNtosoSource, Ki as simplifiedHtmlBillFileToTableOfContentsFile, Ii as simplifyWordHtml, Bi as simplifyWordHtmlToDocument, Ui as writeTransformation };
22056
+ export { Ae as LegiResolver, Ki as addLinksOrReferencesToHtmlFile, qi as addPositionsToTableOfContentsFile, Ee as buildAndInstallTextTitlesInfos, Oe as buildTextTitlesInfos, Yi as createLegiResolver, Le as extractAssembleeAmendmentSearchItems, ar as extractAssembleeExposesDesMotifs, ur as extractSenatAmendmentSearchItems, Re as hashAssembleeAmendmentSearchItem, sr as hashAssembleeSearchItem, dr as hashSenatAmendmentSearchItem, mi as hashSenatSearchItem, bi as isAkomaNtosoXml, cr as isoDateFromAssembleeDocument, tr as linkAkomaNtosoBillRaw, dn as linkAssembleeBillRaw, er as parseAkomaNtosoBillRaw, ui as parseAmendment, un as parseAssembleeBillRaw, or as parseAssembleeDocumentSearchContent, pi as parseSenatDocumentSearchContent, Ui as readTransformation, Xn as renderAkomaNtosoBillRaw, yi as resolveSenatAkomaNtosoSource, Ji as simplifiedHtmlBillFileToTableOfContentsFile, Ri as simplifyWordHtml, Hi as simplifyWordHtmlToDocument, Gi as writeTransformation };