@tricoteuses/assemblee 1.9.13 → 1.10.0
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.
- package/README.md +0 -5
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +5 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +17 -18
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +6 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +31 -32
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +17 -18
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +10 -10
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +28 -29
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +27 -29
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.d.ts +0 -1
- package/lib/cleaners/index.js +1 -8
- package/lib/cleaners/index.mjs +1 -2
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +1 -13
- package/lib/datasets.js +10 -29
- package/lib/datasets.mjs +2 -21
- package/lib/dates.js +3 -4
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/file_systems.js +15 -14
- package/lib/file_systems.mjs +3 -3
- package/lib/git.js +5 -5
- package/lib/git.mjs +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +8 -1
- package/lib/index.mjs +2 -1
- package/lib/inserters.js +4 -4
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.d.ts +0 -5
- package/lib/loaders.js +255 -299
- package/lib/loaders.mjs +1 -13
- package/lib/logger.js +1 -1
- package/lib/logger.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +11 -11
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.d.ts +1 -0
- package/lib/parsers/index.js +8 -1
- package/lib/parsers/index.mjs +2 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/parsers/textes_lois.d.ts +22 -15
- package/lib/parsers/textes_lois.js +264 -752
- package/lib/parsers/textes_lois.mjs +249 -597
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.d.ts +1 -0
- package/lib/raw_types/agendas.js +11 -10
- package/lib/raw_types/agendas.mjs +3 -2
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +9 -9
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +25 -26
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +256 -245
- package/lib/scripts/clean_reorganized_data.mjs +18 -29
- package/lib/scripts/diff_amendements.js +9 -8
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +3 -2
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +9 -8
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +6 -5
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/process_open_dataset.d.ts +0 -2
- package/lib/scripts/process_open_dataset.js +19 -19
- package/lib/scripts/process_open_dataset.mjs +3 -5
- package/lib/scripts/raw_types_from_amendements.d.ts +0 -1
- package/lib/scripts/raw_types_from_amendements.js +122 -198
- package/lib/scripts/raw_types_from_amendements.mjs +105 -60
- package/lib/scripts/reorganize_data.js +14 -15
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/lib/scripts/retrieve_deputes_photos.js +40 -31
- package/lib/scripts/retrieve_deputes_photos.mjs +10 -2
- package/lib/scripts/retrieve_documents.d.ts +1 -1
- package/lib/scripts/retrieve_documents.js +230 -138
- package/lib/scripts/retrieve_documents.mjs +87 -38
- package/lib/scripts/retrieve_open_data.js +27 -30
- package/lib/scripts/retrieve_open_data.mjs +5 -8
- package/lib/scripts/retrieve_pending_amendments.js +14 -14
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -10
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +17 -15
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/shared/cli_helpers.d.ts +11 -0
- package/lib/scripts/shared/cli_helpers.js +13 -2
- package/lib/scripts/shared/cli_helpers.mjs +12 -1
- package/lib/scripts/test_iter_load.js +5 -19
- package/lib/scripts/test_iter_load.mjs +2 -9
- package/lib/scripts/test_load.js +2 -2
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +2 -2
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +17 -18
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/shared_types/codes_actes.js +1 -1
- package/lib/shared_types/codes_actes.mjs +1 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.d.ts +1 -0
- package/lib/types/agendas.js +11 -10
- package/lib/types/agendas.mjs +3 -2
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +9 -9
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.d.ts +13 -0
- package/lib/types/dossiers_legislatifs.js +47 -9
- package/lib/types/dossiers_legislatifs.mjs +39 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +14 -20
- package/lib/cleaners/textes_loi.d.ts +0 -1
- package/lib/cleaners/textes_loi.js +0 -12
- package/lib/cleaners/textes_loi.mjs +0 -5
- package/lib/examples/PIONANR5L15B0020/input.d.ts +0 -2
- package/lib/examples/PIONANR5L15B0020/input.js +0 -10
- package/lib/examples/PIONANR5L15B0020/input.mjs +0 -193
- package/lib/examples/PIONANR5L15B0020/input.ts +0 -193
- package/lib/examples/PIONANR5L15B0020/loi.json +0 -26
- package/lib/examples/PIONANR5L15B0020/loi_populated.json +0 -29
- package/lib/examples/PIONANR5L15B0020/meta.json +0 -28
- package/lib/examples/PIONANR5L15B0020/motifs.json +0 -5
- package/lib/examples/PIONANR5L15B0020/motifs_populated.json +0 -6
- package/lib/examples/PIONANR5L15B0020/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B0914/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B0914/input.js +0 -10
- package/lib/examples/PRJLANR5L16B0914/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B0914/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B0914/loi.json +0 -14
- package/lib/examples/PRJLANR5L16B0914/loi_populated.json +0 -20
- package/lib/examples/PRJLANR5L16B0914/meta.json +0 -35
- package/lib/examples/PRJLANR5L16B0914/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B0914/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B0914/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2014/README.md +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2014/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2014/input.mjs +0 -577
- package/lib/examples/PRJLANR5L16B2014/input.ts +0 -577
- package/lib/examples/PRJLANR5L16B2014/loi.json +0 -369
- package/lib/examples/PRJLANR5L16B2014/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2014/motifs.json +0 -5
- package/lib/examples/PRJLANR5L16B2014/sommaire.json +0 -51
- package/lib/examples/PRJLANR5L16B2424/alineas.json +0 -44
- package/lib/examples/PRJLANR5L16B2424/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2424/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2424/input.mjs +0 -322
- package/lib/examples/PRJLANR5L16B2424/input.ts +0 -322
- package/lib/examples/PRJLANR5L16B2424/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2424/loi_populated.json +0 -87
- package/lib/examples/PRJLANR5L16B2424/meta.json +0 -31
- package/lib/examples/PRJLANR5L16B2424/motifs.json +0 -4
- package/lib/examples/PRJLANR5L16B2424/motifs_populated.json +0 -5
- package/lib/examples/PRJLANR5L16B2424/sommaire.json +0 -3
- package/lib/examples/PRJLANR5L16B2462/input.d.ts +0 -2
- package/lib/examples/PRJLANR5L16B2462/input.js +0 -10
- package/lib/examples/PRJLANR5L16B2462/input.mjs +0 -1308
- package/lib/examples/PRJLANR5L16B2462/input.ts +0 -1308
- package/lib/examples/PRJLANR5L16B2462/loi.json +0 -74
- package/lib/examples/PRJLANR5L16B2462/loi_populated.json +0 -310
- package/lib/examples/PRJLANR5L16B2462/meta.json +0 -29
- package/lib/examples/PRJLANR5L16B2462/motifs.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/motifs_populated.json +0 -6
- package/lib/examples/PRJLANR5L16B2462/sommaire.json +0 -50
- package/lib/examples/README.md +0 -3
- package/lib/raw_types/textes_loi.d.ts +0 -93
- package/lib/raw_types/textes_loi.js +0 -429
- package/lib/raw_types/textes_loi.mjs +0 -378
- package/lib/schemas/texte_loi/Alinea.json +0 -36
- package/lib/schemas/texte_loi/ExposeMotifs.json +0 -24
- package/lib/schemas/texte_loi/MetaDonnees.json +0 -126
- package/lib/schemas/texte_loi/ProjetLoi.json +0 -64
- package/lib/schemas/texte_loi/Sommaire.json +0 -48
- package/lib/schemas/texte_loi/TexteLoi.json +0 -225
- package/lib/schemas/texte_loi/TexteLoiPartiel.json +0 -237
- package/lib/scripts/process_textes_loi_dataset.d.ts +0 -7
- package/lib/scripts/process_textes_loi_dataset.js +0 -373
- package/lib/scripts/process_textes_loi_dataset.mjs +0 -239
- package/lib/types/textes_loi.d.ts +0 -94
- package/lib/types/textes_loi.js +0 -429
- package/lib/types/textes_loi.mjs +0 -378
package/lib/types/textes_loi.mjs
DELETED
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
// To parse this data:
|
|
2
|
-
//
|
|
3
|
-
// import { Convert, TextesLoi } from "./file";
|
|
4
|
-
//
|
|
5
|
-
// const textesLoi = Convert.toTextesLoi(json);
|
|
6
|
-
//
|
|
7
|
-
// These functions will throw an error if the JSON doesn't
|
|
8
|
-
// match the expected interface, even if the JSON is valid.
|
|
9
|
-
|
|
10
|
-
export let Cardinal = /*#__PURE__*/function (Cardinal) {
|
|
11
|
-
Cardinal["A"] = "A";
|
|
12
|
-
Cardinal["B"] = "B";
|
|
13
|
-
Cardinal["Bis"] = "bis";
|
|
14
|
-
Cardinal["BisA"] = "bis A";
|
|
15
|
-
Cardinal["C"] = "C";
|
|
16
|
-
Cardinal["CardinalNouveau"] = "(nouveau)";
|
|
17
|
-
Cardinal["Empty"] = "";
|
|
18
|
-
Cardinal["Er"] = "er";
|
|
19
|
-
Cardinal["Nouveau"] = "nouveau";
|
|
20
|
-
return Cardinal;
|
|
21
|
-
}({});
|
|
22
|
-
export let Organe = /*#__PURE__*/function (Organe) {
|
|
23
|
-
Organe["Assembl\xE9eNationale"] = "Assembl\xE9e Nationale";
|
|
24
|
-
Organe["OrganeAssembl\xE9eNationale"] = "ASSEMBL\xC9E NATIONALE";
|
|
25
|
-
return Organe;
|
|
26
|
-
}({});
|
|
27
|
-
export let Fonction = /*#__PURE__*/function (Fonction) {
|
|
28
|
-
Fonction["D\xE9put\xE9"] = "D\xE9put\xE9";
|
|
29
|
-
Fonction["D\xE9put\xE9e"] = "D\xE9put\xE9e";
|
|
30
|
-
Fonction["Empty"] = "";
|
|
31
|
-
return Fonction;
|
|
32
|
-
}({});
|
|
33
|
-
export let TypeDivision = /*#__PURE__*/function (TypeDivision) {
|
|
34
|
-
TypeDivision["Chapitre"] = "Chapitre";
|
|
35
|
-
TypeDivision["Titre"] = "Titre";
|
|
36
|
-
return TypeDivision;
|
|
37
|
-
}({});
|
|
38
|
-
export let TypeTexte = /*#__PURE__*/function (TypeTexte) {
|
|
39
|
-
TypeTexte["MotionDeCensure"] = "Motion de censure";
|
|
40
|
-
TypeTexte["PropositionDeLoi"] = "Proposition de loi";
|
|
41
|
-
TypeTexte["PropositionDeLoiConstitutionnelle"] = "PROPOSITION DE LOI CONSTITUTIONNELLE";
|
|
42
|
-
TypeTexte["PropositionDeLoiOrganique"] = "PROPOSITION DE LOI ORGANIQUE";
|
|
43
|
-
TypeTexte["TypeTexteMotionDeCensure"] = "MOTION DE CENSURE";
|
|
44
|
-
TypeTexte["TypeTextePropositionDeLoi"] = "PROPOSITION DE LOI";
|
|
45
|
-
return TypeTexte;
|
|
46
|
-
}({});
|
|
47
|
-
|
|
48
|
-
// Converts JSON strings to/from your types
|
|
49
|
-
// and asserts the results of JSON.parse at runtime
|
|
50
|
-
export class Convert {
|
|
51
|
-
static toTextesLoi(json) {
|
|
52
|
-
return cast(JSON.parse(json), r("TextesLoi"));
|
|
53
|
-
}
|
|
54
|
-
static textesLoiToJson(value) {
|
|
55
|
-
return JSON.stringify(uncast(value, r("TextesLoi")), null, 2);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function invalidValue(typ, val, key, parent = "") {
|
|
59
|
-
const prettyTyp = prettyTypeName(typ);
|
|
60
|
-
const parentText = parent ? ` on ${parent}` : "";
|
|
61
|
-
const keyText = key ? ` for key "${key}"` : "";
|
|
62
|
-
throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
|
|
63
|
-
}
|
|
64
|
-
function prettyTypeName(typ) {
|
|
65
|
-
if (Array.isArray(typ)) {
|
|
66
|
-
if (typ.length === 2 && typ[0] === undefined) {
|
|
67
|
-
return `an optional ${prettyTypeName(typ[1])}`;
|
|
68
|
-
} else {
|
|
69
|
-
return `one of [${typ.map(a => {
|
|
70
|
-
return prettyTypeName(a);
|
|
71
|
-
}).join(", ")}]`;
|
|
72
|
-
}
|
|
73
|
-
} else if (typeof typ === "object" && typ.literal !== undefined) {
|
|
74
|
-
return typ.literal;
|
|
75
|
-
} else {
|
|
76
|
-
return typeof typ;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function jsonToJSProps(typ) {
|
|
80
|
-
if (typ.jsonToJS === undefined) {
|
|
81
|
-
const map = {};
|
|
82
|
-
typ.props.forEach(p => map[p.json] = {
|
|
83
|
-
key: p.js,
|
|
84
|
-
typ: p.typ
|
|
85
|
-
});
|
|
86
|
-
typ.jsonToJS = map;
|
|
87
|
-
}
|
|
88
|
-
return typ.jsonToJS;
|
|
89
|
-
}
|
|
90
|
-
function jsToJSONProps(typ) {
|
|
91
|
-
if (typ.jsToJSON === undefined) {
|
|
92
|
-
const map = {};
|
|
93
|
-
typ.props.forEach(p => map[p.js] = {
|
|
94
|
-
key: p.json,
|
|
95
|
-
typ: p.typ
|
|
96
|
-
});
|
|
97
|
-
typ.jsToJSON = map;
|
|
98
|
-
}
|
|
99
|
-
return typ.jsToJSON;
|
|
100
|
-
}
|
|
101
|
-
function transform(val, typ, getProps, key = "", parent = "") {
|
|
102
|
-
function transformPrimitive(typ, val) {
|
|
103
|
-
if (typeof typ === typeof val) return val;
|
|
104
|
-
return invalidValue(typ, val, key, parent);
|
|
105
|
-
}
|
|
106
|
-
function transformUnion(typs, val) {
|
|
107
|
-
// val must validate against one typ in typs
|
|
108
|
-
const l = typs.length;
|
|
109
|
-
for (let i = 0; i < l; i++) {
|
|
110
|
-
const typ = typs[i];
|
|
111
|
-
try {
|
|
112
|
-
return transform(val, typ, getProps);
|
|
113
|
-
} catch (_) {}
|
|
114
|
-
}
|
|
115
|
-
return invalidValue(typs, val, key, parent);
|
|
116
|
-
}
|
|
117
|
-
function transformEnum(cases, val) {
|
|
118
|
-
if (cases.indexOf(val) !== -1) return val;
|
|
119
|
-
return invalidValue(cases.map(a => {
|
|
120
|
-
return l(a);
|
|
121
|
-
}), val, key, parent);
|
|
122
|
-
}
|
|
123
|
-
function transformArray(typ, val) {
|
|
124
|
-
// val must be an array with no invalid elements
|
|
125
|
-
if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
|
|
126
|
-
return val.map(el => transform(el, typ, getProps));
|
|
127
|
-
}
|
|
128
|
-
function transformDate(val) {
|
|
129
|
-
if (val === null) {
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
const d = new Date(val);
|
|
133
|
-
if (isNaN(d.valueOf())) {
|
|
134
|
-
return invalidValue(l("Date"), val, key, parent);
|
|
135
|
-
}
|
|
136
|
-
return d;
|
|
137
|
-
}
|
|
138
|
-
function transformObject(props, additional, val) {
|
|
139
|
-
if (val === null || typeof val !== "object" || Array.isArray(val)) {
|
|
140
|
-
return invalidValue(l(ref || "object"), val, key, parent);
|
|
141
|
-
}
|
|
142
|
-
const result = {};
|
|
143
|
-
Object.getOwnPropertyNames(props).forEach(key => {
|
|
144
|
-
const prop = props[key];
|
|
145
|
-
const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
|
|
146
|
-
result[prop.key] = transform(v, prop.typ, getProps, key, ref);
|
|
147
|
-
});
|
|
148
|
-
Object.getOwnPropertyNames(val).forEach(key => {
|
|
149
|
-
if (!Object.prototype.hasOwnProperty.call(props, key)) {
|
|
150
|
-
result[key] = transform(val[key], additional, getProps, key, ref);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
return result;
|
|
154
|
-
}
|
|
155
|
-
if (typ === "any") return val;
|
|
156
|
-
if (typ === null) {
|
|
157
|
-
if (val === null) return val;
|
|
158
|
-
return invalidValue(typ, val, key, parent);
|
|
159
|
-
}
|
|
160
|
-
if (typ === false) return invalidValue(typ, val, key, parent);
|
|
161
|
-
let ref = undefined;
|
|
162
|
-
while (typeof typ === "object" && typ.ref !== undefined) {
|
|
163
|
-
ref = typ.ref;
|
|
164
|
-
typ = typeMap[typ.ref];
|
|
165
|
-
}
|
|
166
|
-
if (Array.isArray(typ)) return transformEnum(typ, val);
|
|
167
|
-
if (typeof typ === "object") {
|
|
168
|
-
return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val, key, parent);
|
|
169
|
-
}
|
|
170
|
-
// Numbers can be parsed by Date but shouldn't be.
|
|
171
|
-
if (typ === Date && typeof val !== "number") return transformDate(val);
|
|
172
|
-
return transformPrimitive(typ, val);
|
|
173
|
-
}
|
|
174
|
-
function cast(val, typ) {
|
|
175
|
-
return transform(val, typ, jsonToJSProps);
|
|
176
|
-
}
|
|
177
|
-
function uncast(val, typ) {
|
|
178
|
-
return transform(val, typ, jsToJSONProps);
|
|
179
|
-
}
|
|
180
|
-
function l(typ) {
|
|
181
|
-
return {
|
|
182
|
-
literal: typ
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
function a(typ) {
|
|
186
|
-
return {
|
|
187
|
-
arrayItems: typ
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
function u(...typs) {
|
|
191
|
-
return {
|
|
192
|
-
unionMembers: typs
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
function o(props, additional) {
|
|
196
|
-
return {
|
|
197
|
-
props,
|
|
198
|
-
additional
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function r(name) {
|
|
202
|
-
return {
|
|
203
|
-
ref: name
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
const typeMap = {
|
|
207
|
-
TextesLoi: o([{
|
|
208
|
-
json: "documentRef",
|
|
209
|
-
js: "documentRef",
|
|
210
|
-
typ: ""
|
|
211
|
-
}, {
|
|
212
|
-
json: "titre",
|
|
213
|
-
js: "titre",
|
|
214
|
-
typ: ""
|
|
215
|
-
}, {
|
|
216
|
-
json: "organe",
|
|
217
|
-
js: "organe",
|
|
218
|
-
typ: r("Organe")
|
|
219
|
-
}, {
|
|
220
|
-
json: "typeTexte",
|
|
221
|
-
js: "typeTexte",
|
|
222
|
-
typ: r("TypeTexte")
|
|
223
|
-
}, {
|
|
224
|
-
json: "commission",
|
|
225
|
-
js: "commission",
|
|
226
|
-
typ: ""
|
|
227
|
-
}, {
|
|
228
|
-
json: "procedureAcceleree",
|
|
229
|
-
js: "procedureAcceleree",
|
|
230
|
-
typ: true
|
|
231
|
-
}, {
|
|
232
|
-
json: "representants",
|
|
233
|
-
js: "representants",
|
|
234
|
-
typ: r("Representants")
|
|
235
|
-
}, {
|
|
236
|
-
json: "dateConstitution",
|
|
237
|
-
js: "dateConstitution",
|
|
238
|
-
typ: Date
|
|
239
|
-
}, {
|
|
240
|
-
json: "dateDepotAssemblee",
|
|
241
|
-
js: "dateDepotAssemblee",
|
|
242
|
-
typ: Date
|
|
243
|
-
}, {
|
|
244
|
-
json: "numeroLegislature",
|
|
245
|
-
js: "numeroLegislature",
|
|
246
|
-
typ: 0
|
|
247
|
-
}, {
|
|
248
|
-
json: "numeroTexte",
|
|
249
|
-
js: "numeroTexte",
|
|
250
|
-
typ: ""
|
|
251
|
-
}, {
|
|
252
|
-
json: "sommaire",
|
|
253
|
-
js: "sommaire",
|
|
254
|
-
typ: u(a(r("SommaireElement")), r("PurpleSommaire"))
|
|
255
|
-
}, {
|
|
256
|
-
json: "contenu",
|
|
257
|
-
js: "contenu",
|
|
258
|
-
typ: r("Contenu")
|
|
259
|
-
}, {
|
|
260
|
-
json: "signataires",
|
|
261
|
-
js: "signataires",
|
|
262
|
-
typ: u(undefined, a(r("Signataire")))
|
|
263
|
-
}], false),
|
|
264
|
-
Contenu: o([{
|
|
265
|
-
json: "articles",
|
|
266
|
-
js: "articles",
|
|
267
|
-
typ: a(r("Article"))
|
|
268
|
-
}, {
|
|
269
|
-
json: "exposeMotifs",
|
|
270
|
-
js: "exposeMotifs",
|
|
271
|
-
typ: r("ExposeMotifs")
|
|
272
|
-
}], false),
|
|
273
|
-
Article: o([{
|
|
274
|
-
json: "numeroArticle",
|
|
275
|
-
js: "numeroArticle",
|
|
276
|
-
typ: 0
|
|
277
|
-
}, {
|
|
278
|
-
json: "numeroArticles",
|
|
279
|
-
js: "numeroArticles",
|
|
280
|
-
typ: a("any")
|
|
281
|
-
}, {
|
|
282
|
-
json: "cardinal",
|
|
283
|
-
js: "cardinal",
|
|
284
|
-
typ: r("Cardinal")
|
|
285
|
-
}, {
|
|
286
|
-
json: "parent",
|
|
287
|
-
js: "parent",
|
|
288
|
-
typ: ""
|
|
289
|
-
}, {
|
|
290
|
-
json: "nouveau",
|
|
291
|
-
js: "nouveau",
|
|
292
|
-
typ: true
|
|
293
|
-
}, {
|
|
294
|
-
json: "titre",
|
|
295
|
-
js: "titre",
|
|
296
|
-
typ: ""
|
|
297
|
-
}, {
|
|
298
|
-
json: "alineas",
|
|
299
|
-
js: "alineas",
|
|
300
|
-
typ: a(r("Alinea"))
|
|
301
|
-
}, {
|
|
302
|
-
json: "texte",
|
|
303
|
-
js: "texte",
|
|
304
|
-
typ: ""
|
|
305
|
-
}], false),
|
|
306
|
-
Alinea: o([{
|
|
307
|
-
json: "numeroAlinea",
|
|
308
|
-
js: "numeroAlinea",
|
|
309
|
-
typ: 0
|
|
310
|
-
}, {
|
|
311
|
-
json: "texte",
|
|
312
|
-
js: "texte",
|
|
313
|
-
typ: ""
|
|
314
|
-
}, {
|
|
315
|
-
json: "debut",
|
|
316
|
-
js: "debut",
|
|
317
|
-
typ: u(undefined, "")
|
|
318
|
-
}, {
|
|
319
|
-
json: "fin",
|
|
320
|
-
js: "fin",
|
|
321
|
-
typ: u(undefined, "")
|
|
322
|
-
}], false),
|
|
323
|
-
ExposeMotifs: o([{
|
|
324
|
-
json: "texte",
|
|
325
|
-
js: "texte",
|
|
326
|
-
typ: ""
|
|
327
|
-
}, {
|
|
328
|
-
json: "citation",
|
|
329
|
-
js: "citation",
|
|
330
|
-
typ: u(undefined, "")
|
|
331
|
-
}], false),
|
|
332
|
-
Representants: o([{
|
|
333
|
-
json: "par",
|
|
334
|
-
js: "par",
|
|
335
|
-
typ: a(r("Signataire"))
|
|
336
|
-
}], false),
|
|
337
|
-
Signataire: o([{
|
|
338
|
-
json: "nom",
|
|
339
|
-
js: "nom",
|
|
340
|
-
typ: ""
|
|
341
|
-
}, {
|
|
342
|
-
json: "fonction",
|
|
343
|
-
js: "fonction",
|
|
344
|
-
typ: r("Fonction")
|
|
345
|
-
}], false),
|
|
346
|
-
SommaireElement: o([{
|
|
347
|
-
json: "typeDivision",
|
|
348
|
-
js: "typeDivision",
|
|
349
|
-
typ: r("TypeDivision")
|
|
350
|
-
}, {
|
|
351
|
-
json: "numeroDivision",
|
|
352
|
-
js: "numeroDivision",
|
|
353
|
-
typ: ""
|
|
354
|
-
}, {
|
|
355
|
-
json: "sequence",
|
|
356
|
-
js: "sequence",
|
|
357
|
-
typ: 0
|
|
358
|
-
}, {
|
|
359
|
-
json: "titre",
|
|
360
|
-
js: "titre",
|
|
361
|
-
typ: ""
|
|
362
|
-
}, {
|
|
363
|
-
json: "parent",
|
|
364
|
-
js: "parent",
|
|
365
|
-
typ: u(undefined, "")
|
|
366
|
-
}], false),
|
|
367
|
-
PurpleSommaire: o([{
|
|
368
|
-
json: "sommaire",
|
|
369
|
-
js: "sommaire",
|
|
370
|
-
typ: a("any")
|
|
371
|
-
}], false),
|
|
372
|
-
Cardinal: ["A", "B", "bis", "bis A", "C", "(nouveau)", "", "er", "nouveau"],
|
|
373
|
-
Organe: ["Assemblée Nationale", "ASSEMBLÉE NATIONALE"],
|
|
374
|
-
Fonction: ["Député", "Députée", ""],
|
|
375
|
-
TypeDivision: ["Chapitre", "Titre"],
|
|
376
|
-
TypeTexte: ["Motion de censure", "Proposition de loi", "PROPOSITION DE LOI CONSTITUTIONNELLE", "PROPOSITION DE LOI ORGANIQUE", "MOTION DE CENSURE", "PROPOSITION DE LOI"]
|
|
377
|
-
};
|
|
378
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYXJkaW5hbCIsIk9yZ2FuZSIsIkZvbmN0aW9uIiwiVHlwZURpdmlzaW9uIiwiVHlwZVRleHRlIiwiQ29udmVydCIsInRvVGV4dGVzTG9pIiwianNvbiIsImNhc3QiLCJKU09OIiwicGFyc2UiLCJyIiwidGV4dGVzTG9pVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJpbnZhbGlkVmFsdWUiLCJ0eXAiLCJ2YWwiLCJrZXkiLCJwYXJlbnQiLCJwcmV0dHlUeXAiLCJwcmV0dHlUeXBlTmFtZSIsInBhcmVudFRleHQiLCJrZXlUZXh0IiwiRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJtYXAiLCJhIiwiam9pbiIsImxpdGVyYWwiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsInRyYW5zZm9ybVVuaW9uIiwidHlwcyIsImwiLCJpIiwiXyIsInRyYW5zZm9ybUVudW0iLCJjYXNlcyIsImluZGV4T2YiLCJ0cmFuc2Zvcm1BcnJheSIsImVsIiwidHJhbnNmb3JtRGF0ZSIsImQiLCJEYXRlIiwiaXNOYU4iLCJ2YWx1ZU9mIiwidHJhbnNmb3JtT2JqZWN0IiwiYWRkaXRpb25hbCIsInJlZiIsInJlc3VsdCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wIiwidiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInR5cGVNYXAiLCJ1bmlvbk1lbWJlcnMiLCJhcnJheUl0ZW1zIiwidSIsIm8iLCJuYW1lIiwiVGV4dGVzTG9pIiwiQ29udGVudSIsIkFydGljbGUiLCJBbGluZWEiLCJFeHBvc2VNb3RpZnMiLCJSZXByZXNlbnRhbnRzIiwiU2lnbmF0YWlyZSIsIlNvbW1haXJlRWxlbWVudCIsIlB1cnBsZVNvbW1haXJlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3RleHRlc19sb2kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gcGFyc2UgdGhpcyBkYXRhOlxuLy9cbi8vICAgaW1wb3J0IHsgQ29udmVydCwgVGV4dGVzTG9pIH0gZnJvbSBcIi4vZmlsZVwiO1xuLy9cbi8vICAgY29uc3QgdGV4dGVzTG9pID0gQ29udmVydC50b1RleHRlc0xvaShqc29uKTtcbi8vXG4vLyBUaGVzZSBmdW5jdGlvbnMgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgSlNPTiBkb2Vzbid0XG4vLyBtYXRjaCB0aGUgZXhwZWN0ZWQgaW50ZXJmYWNlLCBldmVuIGlmIHRoZSBKU09OIGlzIHZhbGlkLlxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRlc0xvaSB7XG4gIHVpZDogc3RyaW5nXG4gIGRvY3VtZW50UmVmOiBzdHJpbmdcbiAgdGl0cmU6IHN0cmluZ1xuICBvcmdhbmU6IE9yZ2FuZVxuICB0eXBlVGV4dGU6IFR5cGVUZXh0ZVxuICBjb21taXNzaW9uOiBzdHJpbmdcbiAgcHJvY2VkdXJlQWNjZWxlcmVlOiBib29sZWFuXG4gIHJlcHJlc2VudGFudHM6IFJlcHJlc2VudGFudHNcbiAgZGF0ZUNvbnN0aXR1dGlvbjogRGF0ZVxuICBkYXRlRGVwb3RBc3NlbWJsZWU6IERhdGVcbiAgbnVtZXJvTGVnaXNsYXR1cmU6IG51bWJlclxuICBudW1lcm9UZXh0ZTogc3RyaW5nXG4gIHNvbW1haXJlOiBTb21tYWlyZUVsZW1lbnRbXSB8IFB1cnBsZVNvbW1haXJlXG4gIGNvbnRlbnU6IENvbnRlbnVcbiAgc2lnbmF0YWlyZXM/OiBTaWduYXRhaXJlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW51IHtcbiAgYXJ0aWNsZXM6IEFydGljbGVbXVxuICBleHBvc2VNb3RpZnM6IEV4cG9zZU1vdGlmc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFydGljbGUge1xuICBudW1lcm9BcnRpY2xlOiBudW1iZXJcbiAgbnVtZXJvQXJ0aWNsZXM6IGFueVtdXG4gIGNhcmRpbmFsOiBDYXJkaW5hbFxuICBwYXJlbnQ6IHN0cmluZ1xuICBub3V2ZWF1OiBib29sZWFuXG4gIHRpdHJlOiBzdHJpbmdcbiAgYWxpbmVhczogQWxpbmVhW11cbiAgdGV4dGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFsaW5lYSB7XG4gIG51bWVyb0FsaW5lYTogbnVtYmVyXG4gIHRleHRlOiBzdHJpbmdcbiAgZGVidXQ/OiBzdHJpbmdcbiAgZmluPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIENhcmRpbmFsIHtcbiAgQSA9IFwiQVwiLFxuICBCID0gXCJCXCIsXG4gIEJpcyA9IFwiYmlzXCIsXG4gIEJpc0EgPSBcImJpcyBBXCIsXG4gIEMgPSBcIkNcIixcbiAgQ2FyZGluYWxOb3V2ZWF1ID0gXCIobm91dmVhdSlcIixcbiAgRW1wdHkgPSBcIlwiLFxuICBFciA9IFwiZXJcIixcbiAgTm91dmVhdSA9IFwibm91dmVhdVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9zZU1vdGlmcyB7XG4gIHRleHRlOiBzdHJpbmdcbiAgY2l0YXRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gT3JnYW5lIHtcbiAgQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwiQXNzZW1ibMOpZSBOYXRpb25hbGVcIixcbiAgT3JnYW5lQXNzZW1ibMOpZU5hdGlvbmFsZSA9IFwiQVNTRU1CTMOJRSBOQVRJT05BTEVcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXByZXNlbnRhbnRzIHtcbiAgcGFyOiBTaWduYXRhaXJlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduYXRhaXJlIHtcbiAgbm9tOiBzdHJpbmdcbiAgZm9uY3Rpb246IEZvbmN0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEZvbmN0aW9uIHtcbiAgRMOpcHV0w6kgPSBcIkTDqXB1dMOpXCIsXG4gIETDqXB1dMOpZSA9IFwiRMOpcHV0w6llXCIsXG4gIEVtcHR5ID0gXCJcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTb21tYWlyZUVsZW1lbnQge1xuICB0eXBlRGl2aXNpb246IFR5cGVEaXZpc2lvblxuICBudW1lcm9EaXZpc2lvbjogc3RyaW5nXG4gIHNlcXVlbmNlOiBudW1iZXJcbiAgdGl0cmU6IHN0cmluZ1xuICBwYXJlbnQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gVHlwZURpdmlzaW9uIHtcbiAgQ2hhcGl0cmUgPSBcIkNoYXBpdHJlXCIsXG4gIFRpdHJlID0gXCJUaXRyZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1cnBsZVNvbW1haXJlIHtcbiAgc29tbWFpcmU6IGFueVtdXG59XG5cbmV4cG9ydCBlbnVtIFR5cGVUZXh0ZSB7XG4gIE1vdGlvbkRlQ2Vuc3VyZSA9IFwiTW90aW9uIGRlIGNlbnN1cmVcIixcbiAgUHJvcG9zaXRpb25EZUxvaSA9IFwiUHJvcG9zaXRpb24gZGUgbG9pXCIsXG4gIFByb3Bvc2l0aW9uRGVMb2lDb25zdGl0dXRpb25uZWxsZSA9IFwiUFJPUE9TSVRJT04gREUgTE9JIENPTlNUSVRVVElPTk5FTExFXCIsXG4gIFByb3Bvc2l0aW9uRGVMb2lPcmdhbmlxdWUgPSBcIlBST1BPU0lUSU9OIERFIExPSSBPUkdBTklRVUVcIixcbiAgVHlwZVRleHRlTW90aW9uRGVDZW5zdXJlID0gXCJNT1RJT04gREUgQ0VOU1VSRVwiLFxuICBUeXBlVGV4dGVQcm9wb3NpdGlvbkRlTG9pID0gXCJQUk9QT1NJVElPTiBERSBMT0lcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9UZXh0ZXNMb2koanNvbjogc3RyaW5nKTogVGV4dGVzTG9pIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiVGV4dGVzTG9pXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0ZXh0ZXNMb2lUb0pzb24odmFsdWU6IFRleHRlc0xvaSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlRleHRlc0xvaVwiKSksIG51bGwsIDIpXG4gIH1cbn1cblxuZnVuY3Rpb24gaW52YWxpZFZhbHVlKHR5cDogYW55LCB2YWw6IGFueSwga2V5OiBhbnksIHBhcmVudDogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgY29uc3QgcHJldHR5VHlwID0gcHJldHR5VHlwZU5hbWUodHlwKVxuICBjb25zdCBwYXJlbnRUZXh0ID0gcGFyZW50ID8gYCBvbiAke3BhcmVudH1gIDogXCJcIlxuICBjb25zdCBrZXlUZXh0ID0ga2V5ID8gYCBmb3Iga2V5IFwiJHtrZXl9XCJgIDogXCJcIlxuICB0aHJvdyBFcnJvcihcbiAgICBgSW52YWxpZCB2YWx1ZSR7a2V5VGV4dH0ke3BhcmVudFRleHR9LiBFeHBlY3RlZCAke3ByZXR0eVR5cH0gYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KHZhbCl9YCxcbiAgKVxufVxuXG5mdW5jdGlvbiBwcmV0dHlUeXBlTmFtZSh0eXA6IGFueSk6IHN0cmluZyB7XG4gIGlmIChBcnJheS5pc0FycmF5KHR5cCkpIHtcbiAgICBpZiAodHlwLmxlbmd0aCA9PT0gMiAmJiB0eXBbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGBhbiBvcHRpb25hbCAke3ByZXR0eVR5cGVOYW1lKHR5cFsxXSl9YFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYG9uZSBvZiBbJHt0eXBcbiAgICAgICAgLm1hcCgoYSkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmV0dHlUeXBlTmFtZShhKVxuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIiwgXCIpfV1gXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIgJiYgdHlwLmxpdGVyYWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0eXAubGl0ZXJhbFxuICB9IGVsc2Uge1xuICAgIHJldHVybiB0eXBlb2YgdHlwXG4gIH1cbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0oXG4gIHZhbDogYW55LFxuICB0eXA6IGFueSxcbiAgZ2V0UHJvcHM6IGFueSxcbiAga2V5OiBhbnkgPSBcIlwiLFxuICBwYXJlbnQ6IGFueSA9IFwiXCIsXG4pOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KVxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtVW5pb24odHlwczogYW55W10sIHZhbDogYW55KTogYW55IHtcbiAgICAvLyB2YWwgbXVzdCB2YWxpZGF0ZSBhZ2FpbnN0IG9uZSB0eXAgaW4gdHlwc1xuICAgIGNvbnN0IGwgPSB0eXBzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB0eXAgPSB0eXBzW2ldXG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBnZXRQcm9wcylcbiAgICAgIH0gY2F0Y2ggKF8pIHt9XG4gICAgfVxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwcywgdmFsLCBrZXksIHBhcmVudClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKFxuICAgICAgY2FzZXMubWFwKChhKSA9PiB7XG4gICAgICAgIHJldHVybiBsKGEpXG4gICAgICB9KSxcbiAgICAgIHZhbCxcbiAgICAgIGtleSxcbiAgICAgIHBhcmVudCxcbiAgICApXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKGwoXCJhcnJheVwiKSwgdmFsLCBrZXksIHBhcmVudClcbiAgICByZXR1cm4gdmFsLm1hcCgoZWwpID0+IHRyYW5zZm9ybShlbCwgdHlwLCBnZXRQcm9wcykpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRlKHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodmFsID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBkID0gbmV3IERhdGUodmFsKVxuICAgIGlmIChpc05hTihkLnZhbHVlT2YoKSkpIHtcbiAgICAgIHJldHVybiBpbnZhbGlkVmFsdWUobChcIkRhdGVcIiksIHZhbCwga2V5LCBwYXJlbnQpXG4gICAgfVxuICAgIHJldHVybiBkXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1PYmplY3QoXG4gICAgcHJvcHM6IHsgW2s6IHN0cmluZ106IGFueSB9LFxuICAgIGFkZGl0aW9uYWw6IGFueSxcbiAgICB2YWw6IGFueSxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFZhbHVlKGwocmVmIHx8IFwib2JqZWN0XCIpLCB2YWwsIGtleSwgcGFyZW50KVxuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IHt9XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvcHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgcHJvcCA9IHByb3BzW2tleV1cbiAgICAgIGNvbnN0IHYgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsLCBrZXkpXG4gICAgICAgID8gdmFsW2tleV1cbiAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIHJlc3VsdFtwcm9wLmtleV0gPSB0cmFuc2Zvcm0odiwgcHJvcC50eXAsIGdldFByb3BzLCBrZXksIHJlZilcbiAgICB9KVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRyYW5zZm9ybSh2YWxba2V5XSwgYWRkaXRpb25hbCwgZ2V0UHJvcHMsIGtleSwgcmVmKVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSwgcGFyZW50KVxuICB9XG4gIGlmICh0eXAgPT09IGZhbHNlKSByZXR1cm4gaW52YWxpZFZhbHVlKHR5cCwgdmFsLCBrZXksIHBhcmVudClcbiAgbGV0IHJlZjogYW55ID0gdW5kZWZpbmVkXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlZiA9IHR5cC5yZWZcbiAgICB0eXAgPSB0eXBlTWFwW3R5cC5yZWZdXG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwKSkgcmV0dXJuIHRyYW5zZm9ybUVudW0odHlwLCB2YWwpXG4gIGlmICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHR5cC5oYXNPd25Qcm9wZXJ0eShcInVuaW9uTWVtYmVyc1wiKVxuICAgICAgPyB0cmFuc2Zvcm1Vbmlvbih0eXAudW5pb25NZW1iZXJzLCB2YWwpXG4gICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcImFycmF5SXRlbXNcIilcbiAgICAgICAgPyB0cmFuc2Zvcm1BcnJheSh0eXAuYXJyYXlJdGVtcywgdmFsKVxuICAgICAgICA6IHR5cC5oYXNPd25Qcm9wZXJ0eShcInByb3BzXCIpXG4gICAgICAgICAgPyB0cmFuc2Zvcm1PYmplY3QoZ2V0UHJvcHModHlwKSwgdHlwLmFkZGl0aW9uYWwsIHZhbClcbiAgICAgICAgICA6IGludmFsaWRWYWx1ZSh0eXAsIHZhbCwga2V5LCBwYXJlbnQpXG4gIH1cbiAgLy8gTnVtYmVycyBjYW4gYmUgcGFyc2VkIGJ5IERhdGUgYnV0IHNob3VsZG4ndCBiZS5cbiAgaWYgKHR5cCA9PT0gRGF0ZSAmJiB0eXBlb2YgdmFsICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJhbnNmb3JtRGF0ZSh2YWwpXG4gIHJldHVybiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwLCB2YWwpXG59XG5cbmZ1bmN0aW9uIGNhc3Q8VD4odmFsOiBhbnksIHR5cDogYW55KTogVCB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzb25Ub0pTUHJvcHMpXG59XG5cbmZ1bmN0aW9uIHVuY2FzdDxUPih2YWw6IFQsIHR5cDogYW55KTogYW55IHtcbiAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwganNUb0pTT05Qcm9wcylcbn1cblxuZnVuY3Rpb24gbCh0eXA6IGFueSkge1xuICByZXR1cm4geyBsaXRlcmFsOiB0eXAgfVxufVxuXG5mdW5jdGlvbiBhKHR5cDogYW55KSB7XG4gIHJldHVybiB7IGFycmF5SXRlbXM6IHR5cCB9XG59XG5cbmZ1bmN0aW9uIHUoLi4udHlwczogYW55W10pIHtcbiAgcmV0dXJuIHsgdW5pb25NZW1iZXJzOiB0eXBzIH1cbn1cblxuZnVuY3Rpb24gbyhwcm9wczogYW55W10sIGFkZGl0aW9uYWw6IGFueSkge1xuICByZXR1cm4geyBwcm9wcywgYWRkaXRpb25hbCB9XG59XG5cbmZ1bmN0aW9uIHIobmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiB7IHJlZjogbmFtZSB9XG59XG5cbmNvbnN0IHR5cGVNYXA6IGFueSA9IHtcbiAgVGV4dGVzTG9pOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJkb2N1bWVudFJlZlwiLCBqczogXCJkb2N1bWVudFJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0aXRyZVwiLCBqczogXCJ0aXRyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVcIiwganM6IFwib3JnYW5lXCIsIHR5cDogcihcIk9yZ2FuZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInR5cGVUZXh0ZVwiLCBqczogXCJ0eXBlVGV4dGVcIiwgdHlwOiByKFwiVHlwZVRleHRlXCIpIH0sXG4gICAgICB7IGpzb246IFwiY29tbWlzc2lvblwiLCBqczogXCJjb21taXNzaW9uXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInByb2NlZHVyZUFjY2VsZXJlZVwiLCBqczogXCJwcm9jZWR1cmVBY2NlbGVyZWVcIiwgdHlwOiB0cnVlIH0sXG4gICAgICB7IGpzb246IFwicmVwcmVzZW50YW50c1wiLCBqczogXCJyZXByZXNlbnRhbnRzXCIsIHR5cDogcihcIlJlcHJlc2VudGFudHNcIikgfSxcbiAgICAgIHsganNvbjogXCJkYXRlQ29uc3RpdHV0aW9uXCIsIGpzOiBcImRhdGVDb25zdGl0dXRpb25cIiwgdHlwOiBEYXRlIH0sXG4gICAgICB7IGpzb246IFwiZGF0ZURlcG90QXNzZW1ibGVlXCIsIGpzOiBcImRhdGVEZXBvdEFzc2VtYmxlZVwiLCB0eXA6IERhdGUgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9MZWdpc2xhdHVyZVwiLCBqczogXCJudW1lcm9MZWdpc2xhdHVyZVwiLCB0eXA6IDAgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9UZXh0ZVwiLCBqczogXCJudW1lcm9UZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJzb21tYWlyZVwiLFxuICAgICAgICBqczogXCJzb21tYWlyZVwiLFxuICAgICAgICB0eXA6IHUoYShyKFwiU29tbWFpcmVFbGVtZW50XCIpKSwgcihcIlB1cnBsZVNvbW1haXJlXCIpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiY29udGVudVwiLCBqczogXCJjb250ZW51XCIsIHR5cDogcihcIkNvbnRlbnVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJzaWduYXRhaXJlc1wiLFxuICAgICAgICBqczogXCJzaWduYXRhaXJlc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJTaWduYXRhaXJlXCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIENvbnRlbnU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcImFydGljbGVzXCIsIGpzOiBcImFydGljbGVzXCIsIHR5cDogYShyKFwiQXJ0aWNsZVwiKSkgfSxcbiAgICAgIHsganNvbjogXCJleHBvc2VNb3RpZnNcIiwganM6IFwiZXhwb3NlTW90aWZzXCIsIHR5cDogcihcIkV4cG9zZU1vdGlmc1wiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIEFydGljbGU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm51bWVyb0FydGljbGVcIiwganM6IFwibnVtZXJvQXJ0aWNsZVwiLCB0eXA6IDAgfSxcbiAgICAgIHsganNvbjogXCJudW1lcm9BcnRpY2xlc1wiLCBqczogXCJudW1lcm9BcnRpY2xlc1wiLCB0eXA6IGEoXCJhbnlcIikgfSxcbiAgICAgIHsganNvbjogXCJjYXJkaW5hbFwiLCBqczogXCJjYXJkaW5hbFwiLCB0eXA6IHIoXCJDYXJkaW5hbFwiKSB9LFxuICAgICAgeyBqc29uOiBcInBhcmVudFwiLCBqczogXCJwYXJlbnRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibm91dmVhdVwiLCBqczogXCJub3V2ZWF1XCIsIHR5cDogdHJ1ZSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImFsaW5lYXNcIiwganM6IFwiYWxpbmVhc1wiLCB0eXA6IGEocihcIkFsaW5lYVwiKSkgfSxcbiAgICAgIHsganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBBbGluZWE6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm51bWVyb0FsaW5lYVwiLCBqczogXCJudW1lcm9BbGluZWFcIiwgdHlwOiAwIH0sXG4gICAgICB7IGpzb246IFwidGV4dGVcIiwganM6IFwidGV4dGVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiZGVidXRcIiwganM6IFwiZGVidXRcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJmaW5cIiwganM6IFwiZmluXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRXhwb3NlTW90aWZzOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJ0ZXh0ZVwiLCBqczogXCJ0ZXh0ZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJjaXRhdGlvblwiLCBqczogXCJjaXRhdGlvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFJlcHJlc2VudGFudHM6IG8oXG4gICAgW3sganNvbjogXCJwYXJcIiwganM6IFwicGFyXCIsIHR5cDogYShyKFwiU2lnbmF0YWlyZVwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNpZ25hdGFpcmU6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcIm5vbVwiLCBqczogXCJub21cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiZm9uY3Rpb25cIiwganM6IFwiZm9uY3Rpb25cIiwgdHlwOiByKFwiRm9uY3Rpb25cIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBTb21tYWlyZUVsZW1lbnQ6IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInR5cGVEaXZpc2lvblwiLCBqczogXCJ0eXBlRGl2aXNpb25cIiwgdHlwOiByKFwiVHlwZURpdmlzaW9uXCIpIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvRGl2aXNpb25cIiwganM6IFwibnVtZXJvRGl2aXNpb25cIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwic2VxdWVuY2VcIiwganM6IFwic2VxdWVuY2VcIiwgdHlwOiAwIH0sXG4gICAgICB7IGpzb246IFwidGl0cmVcIiwganM6IFwidGl0cmVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwicGFyZW50XCIsIGpzOiBcInBhcmVudFwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFB1cnBsZVNvbW1haXJlOiBvKFxuICAgIFt7IGpzb246IFwic29tbWFpcmVcIiwganM6IFwic29tbWFpcmVcIiwgdHlwOiBhKFwiYW55XCIpIH1dLFxuICAgIGZhbHNlLFxuICApLFxuICBDYXJkaW5hbDogW1wiQVwiLCBcIkJcIiwgXCJiaXNcIiwgXCJiaXMgQVwiLCBcIkNcIiwgXCIobm91dmVhdSlcIiwgXCJcIiwgXCJlclwiLCBcIm5vdXZlYXVcIl0sXG4gIE9yZ2FuZTogW1wiQXNzZW1ibMOpZSBOYXRpb25hbGVcIiwgXCJBU1NFTUJMw4lFIE5BVElPTkFMRVwiXSxcbiAgRm9uY3Rpb246IFtcIkTDqXB1dMOpXCIsIFwiRMOpcHV0w6llXCIsIFwiXCJdLFxuICBUeXBlRGl2aXNpb246IFtcIkNoYXBpdHJlXCIsIFwiVGl0cmVcIl0sXG4gIFR5cGVUZXh0ZTogW1xuICAgIFwiTW90aW9uIGRlIGNlbnN1cmVcIixcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaVwiLFxuICAgIFwiUFJPUE9TSVRJT04gREUgTE9JIENPTlNUSVRVVElPTk5FTExFXCIsXG4gICAgXCJQUk9QT1NJVElPTiBERSBMT0kgT1JHQU5JUVVFXCIsXG4gICAgXCJNT1RJT04gREUgQ0VOU1VSRVwiLFxuICAgIFwiUFJPUE9TSVRJT04gREUgTE9JXCIsXG4gIF0sXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBMkNBLFdBQVlBLFFBQVEsMEJBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBUkEsUUFBUTtFQUFSQSxRQUFRO0VBQVJBLFFBQVE7RUFBQSxPQUFSQSxRQUFRO0FBQUE7QUFpQnBCLFdB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
|