@tricoteuses/senat 1.3.1 → 1.3.4
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/lib/config.d.ts +1 -0
- package/lib/config.js +14 -45
- package/lib/databases.js +86 -143
- package/lib/datasets.js +78 -83
- package/lib/index.d.ts +12 -4
- package/lib/index.js +42 -419
- package/lib/loaders.js +149 -654
- package/lib/model/ameli.js +83 -21
- package/lib/model/debats.js +0 -1
- package/lib/model/dosleg.d.ts +1 -1
- package/lib/model/dosleg.js +179 -73
- package/lib/model/index.d.ts +3 -3
- package/lib/model/index.js +12 -46
- package/lib/model/questions.js +68 -39
- package/lib/model/sens.d.ts +1 -1
- package/lib/model/sens.js +383 -113
- package/lib/model/texte.js +220 -290
- package/lib/model/util.js +9 -26
- package/lib/raw_types/ameli.js +5 -6
- package/lib/raw_types/debats.js +5 -6
- package/lib/raw_types/dosleg.js +5 -6
- package/lib/raw_types/questions.js +5 -6
- package/lib/raw_types/sens.js +5 -6
- package/lib/raw_types_schemats/ameli.js +1 -43
- package/lib/raw_types_schemats/debats.js +1 -22
- package/lib/raw_types_schemats/dosleg.js +1 -96
- package/lib/raw_types_schemats/questions.js +1 -22
- package/lib/raw_types_schemats/sens.js +1 -112
- package/lib/scripts/convert_data.js +181 -631
- package/lib/scripts/datautil.js +17 -60
- package/lib/scripts/parse_textes.js +46 -129
- package/lib/scripts/retrieve_documents.js +247 -513
- package/lib/scripts/retrieve_open_data.js +211 -368
- package/lib/scripts/retrieve_senateurs_photos.js +144 -239
- package/lib/scripts/shared/cli_helpers.js +30 -30
- package/lib/scripts/shared/util.js +28 -94
- package/lib/strings.js +20 -45
- package/lib/types/ameli.d.ts +1 -1
- package/lib/types/ameli.js +14 -25
- package/lib/types/debats.d.ts +1 -1
- package/lib/types/debats.js +3 -21
- package/lib/types/dosleg.d.ts +1 -1
- package/lib/types/dosleg.js +152 -119
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +1 -13
- package/lib/types/sens.d.ts +1 -1
- package/lib/types/sens.js +1 -13
- package/lib/types/sessions.js +44 -49
- package/lib/types/texte.js +17 -22
- package/lib/validators/config.js +47 -111
- package/lib/validators/senat.js +1 -5
- package/package.json +18 -40
- package/lib/aggregates.d.ts +0 -52
- package/lib/aggregates.mjs +0 -930
- package/lib/aggregates.ts +0 -833
- package/lib/config.mjs +0 -16
- package/lib/config.ts +0 -26
- package/lib/data/legislatures.json +0 -38
- package/lib/databases.mjs +0 -57
- package/lib/databases.ts +0 -71
- package/lib/datasets.mjs +0 -78
- package/lib/datasets.ts +0 -118
- package/lib/fields.d.ts +0 -10
- package/lib/fields.mjs +0 -68
- package/lib/fields.ts +0 -29
- package/lib/index.mjs +0 -4
- package/lib/index.ts +0 -42
- package/lib/inserters.d.ts +0 -98
- package/lib/inserters.mjs +0 -500
- package/lib/inserters.ts +0 -521
- package/lib/loaders.mjs +0 -158
- package/lib/loaders.ts +0 -271
- package/lib/model/ameli.mjs +0 -84
- package/lib/model/ameli.ts +0 -100
- package/lib/model/debats.mjs +0 -1
- package/lib/model/debats.ts +0 -0
- package/lib/model/dosleg.mjs +0 -196
- package/lib/model/dosleg.ts +0 -240
- package/lib/model/index.mjs +0 -4
- package/lib/model/index.ts +0 -14
- package/lib/model/questions.mjs +0 -71
- package/lib/model/questions.ts +0 -93
- package/lib/model/sens.mjs +0 -415
- package/lib/model/sens.ts +0 -516
- package/lib/model/texte.mjs +0 -208
- package/lib/model/texte.ts +0 -229
- package/lib/model/util.mjs +0 -19
- package/lib/model/util.ts +0 -32
- package/lib/raw_types/ameli.mjs +0 -5
- package/lib/raw_types/ameli.ts +0 -951
- package/lib/raw_types/debats.mjs +0 -5
- package/lib/raw_types/debats.ts +0 -222
- package/lib/raw_types/dosleg.mjs +0 -5
- package/lib/raw_types/dosleg.ts +0 -3625
- package/lib/raw_types/questions.mjs +0 -5
- package/lib/raw_types/questions.ts +0 -427
- package/lib/raw_types/sens.mjs +0 -5
- package/lib/raw_types/sens.ts +0 -4499
- package/lib/raw_types_kysely/ameli.d.ts +0 -6
- package/lib/raw_types_kysely/ameli.mjs +0 -7
- package/lib/raw_types_kysely/ameli.ts +0 -6
- package/lib/raw_types_kysely/debats.d.ts +0 -6
- package/lib/raw_types_kysely/debats.mjs +0 -7
- package/lib/raw_types_kysely/debats.ts +0 -6
- package/lib/raw_types_kysely/dosleg.d.ts +0 -6
- package/lib/raw_types_kysely/dosleg.mjs +0 -7
- package/lib/raw_types_kysely/dosleg.ts +0 -6
- package/lib/raw_types_kysely/questions.d.ts +0 -6
- package/lib/raw_types_kysely/questions.mjs +0 -7
- package/lib/raw_types_kysely/questions.ts +0 -6
- package/lib/raw_types_kysely/sens.d.ts +0 -6
- package/lib/raw_types_kysely/sens.mjs +0 -7
- package/lib/raw_types_kysely/sens.ts +0 -6
- package/lib/raw_types_kysely/texte.d.ts +0 -45
- package/lib/raw_types_kysely/texte.mjs +0 -7
- package/lib/raw_types_kysely/texte.ts +0 -53
- package/lib/raw_types_schemats/ameli.mjs +0 -2
- package/lib/raw_types_schemats/ameli.ts +0 -601
- package/lib/raw_types_schemats/debats.mjs +0 -2
- package/lib/raw_types_schemats/debats.ts +0 -145
- package/lib/raw_types_schemats/dosleg.mjs +0 -2
- package/lib/raw_types_schemats/dosleg.ts +0 -2195
- package/lib/raw_types_schemats/questions.mjs +0 -2
- package/lib/raw_types_schemats/questions.ts +0 -251
- package/lib/raw_types_schemats/sens.mjs +0 -2
- package/lib/raw_types_schemats/sens.ts +0 -2907
- package/lib/scripts/convert_data.mjs +0 -181
- package/lib/scripts/convert_data.ts +0 -243
- package/lib/scripts/datautil.mjs +0 -16
- package/lib/scripts/datautil.ts +0 -19
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.mjs +0 -46
- package/lib/scripts/parse_textes.ts +0 -65
- package/lib/scripts/retrieve_documents.mjs +0 -249
- package/lib/scripts/retrieve_documents.ts +0 -298
- package/lib/scripts/retrieve_open_data.mjs +0 -217
- package/lib/scripts/retrieve_open_data.ts +0 -274
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
- package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
- package/lib/scripts/retrieve_textes.d.ts +0 -1
- package/lib/scripts/retrieve_textes.mjs +0 -328
- package/lib/scripts/retrieve_textes.ts +0 -143
- package/lib/scripts/shared/cli_helpers.ts +0 -36
- package/lib/scripts/shared/util.ts +0 -33
- package/lib/src/aggregates.d.ts +0 -52
- package/lib/src/aggregates.mjs +0 -726
- package/lib/src/config.d.ts +0 -2
- package/lib/src/config.mjs +0 -16
- package/lib/src/databases.d.ts +0 -18
- package/lib/src/databases.mjs +0 -55
- package/lib/src/datasets.d.ts +0 -28
- package/lib/src/datasets.mjs +0 -78
- package/lib/src/fields.d.ts +0 -10
- package/lib/src/fields.mjs +0 -22
- package/lib/src/index.d.ts +0 -8
- package/lib/src/index.mjs +0 -7
- package/lib/src/inserters.d.ts +0 -98
- package/lib/src/inserters.mjs +0 -360
- package/lib/src/loaders.d.ts +0 -36
- package/lib/src/loaders.mjs +0 -107
- package/lib/src/model/ameli.d.ts +0 -4
- package/lib/src/model/ameli.js +0 -57
- package/lib/src/model/debats.d.ts +0 -4
- package/lib/src/model/debats.js +0 -43
- package/lib/src/model/dosleg.d.ts +0 -197
- package/lib/src/model/dosleg.js +0 -169
- package/lib/src/model/index.d.ts +0 -4
- package/lib/src/model/index.js +0 -4
- package/lib/src/model/questions.d.ts +0 -89
- package/lib/src/model/questions.js +0 -76
- package/lib/src/model/sens.d.ts +0 -390
- package/lib/src/model/sens.js +0 -339
- package/lib/src/model/texte.d.ts +0 -7
- package/lib/src/model/texte.js +0 -183
- package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
- package/lib/src/raw_types_kysely/ameli.js +0 -5
- package/lib/src/raw_types_kysely/debats.d.ts +0 -207
- package/lib/src/raw_types_kysely/debats.js +0 -5
- package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
- package/lib/src/raw_types_kysely/dosleg.js +0 -5
- package/lib/src/raw_types_kysely/questions.d.ts +0 -414
- package/lib/src/raw_types_kysely/questions.js +0 -5
- package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
- package/lib/src/raw_types_kysely/sens.js +0 -5
- package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
- package/lib/src/raw_types_schemats/ameli.js +0 -2
- package/lib/src/raw_types_schemats/debats.d.ts +0 -127
- package/lib/src/raw_types_schemats/debats.js +0 -2
- package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
- package/lib/src/raw_types_schemats/dosleg.js +0 -2
- package/lib/src/raw_types_schemats/questions.d.ts +0 -231
- package/lib/src/raw_types_schemats/questions.js +0 -2
- package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
- package/lib/src/raw_types_schemats/sens.js +0 -2
- package/lib/src/scripts/convert_data.d.ts +0 -1
- package/lib/src/scripts/convert_data.js +0 -95
- package/lib/src/scripts/datautil.d.ts +0 -5
- package/lib/src/scripts/datautil.js +0 -16
- package/lib/src/scripts/parse_textes.d.ts +0 -1
- package/lib/src/scripts/parse_textes.js +0 -47
- package/lib/src/scripts/retrieve_documents.d.ts +0 -1
- package/lib/src/scripts/retrieve_documents.js +0 -258
- package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
- package/lib/src/scripts/retrieve_open_data.js +0 -214
- package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
- package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
- package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
- package/lib/src/scripts/shared/cli_helpers.js +0 -32
- package/lib/src/scripts/shared/util.d.ts +0 -3
- package/lib/src/scripts/shared/util.js +0 -28
- package/lib/src/strings.d.ts +0 -1
- package/lib/src/strings.mjs +0 -18
- package/lib/src/types/ameli.d.ts +0 -10
- package/lib/src/types/ameli.js +0 -13
- package/lib/src/types/debats.d.ts +0 -4
- package/lib/src/types/debats.js +0 -2
- package/lib/src/types/dosleg.d.ts +0 -98
- package/lib/src/types/dosleg.js +0 -151
- package/lib/src/types/questions.d.ts +0 -2
- package/lib/src/types/questions.js +0 -1
- package/lib/src/types/sens.d.ts +0 -10
- package/lib/src/types/sens.js +0 -1
- package/lib/src/types/sessions.d.ts +0 -42
- package/lib/src/types/sessions.js +0 -43
- package/lib/src/types/texte.d.ts +0 -61
- package/lib/src/types/texte.js +0 -16
- package/lib/src/validators/config.d.ts +0 -1
- package/lib/src/validators/config.js +0 -54
- package/lib/src/validators/senat.d.ts +0 -0
- package/lib/src/validators/senat.js +0 -24
- package/lib/strings.mjs +0 -18
- package/lib/strings.ts +0 -26
- package/lib/types/ameli.mjs +0 -13
- package/lib/types/ameli.ts +0 -21
- package/lib/types/debats.mjs +0 -2
- package/lib/types/debats.ts +0 -6
- package/lib/types/dosleg.mjs +0 -151
- package/lib/types/dosleg.ts +0 -284
- package/lib/types/questions.mjs +0 -1
- package/lib/types/questions.ts +0 -3
- package/lib/types/sens.mjs +0 -1
- package/lib/types/sens.ts +0 -12
- package/lib/types/sessions.mjs +0 -43
- package/lib/types/sessions.ts +0 -42
- package/lib/types/texte.mjs +0 -16
- package/lib/types/texte.ts +0 -76
- package/lib/typings/windows-1252.d.js +0 -2
- package/lib/typings/windows-1252.d.mjs +0 -2
- package/lib/typings/windows-1252.d.ts +0 -11
- package/lib/validators/config.mjs +0 -54
- package/lib/validators/config.ts +0 -79
- package/lib/validators/senat.mjs +0 -24
- package/lib/validators/senat.ts +0 -26
|
@@ -1,643 +1,193 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
require("
|
|
7
|
-
require("
|
|
8
|
-
require("
|
|
9
|
-
require("
|
|
10
|
-
require("
|
|
11
|
-
require("
|
|
12
|
-
require("
|
|
13
|
-
require("
|
|
14
|
-
require("
|
|
15
|
-
require("
|
|
16
|
-
require("
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const command_line_args_1 = __importDefault(require("command-line-args"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const datasets_1 = require("../datasets");
|
|
11
|
+
const loaders_1 = require("../loaders");
|
|
12
|
+
const model_1 = require("../model");
|
|
13
|
+
const dosleg_1 = require("../model/dosleg");
|
|
14
|
+
const datautil_1 = require("./datautil");
|
|
15
|
+
const cli_helpers_1 = require("./shared/cli_helpers");
|
|
16
|
+
const util_1 = require("./shared/util");
|
|
17
|
+
const optionsDefinitions = [...cli_helpers_1.commonOptions];
|
|
18
|
+
const options = (0, command_line_args_1.default)(optionsDefinitions);
|
|
19
|
+
const SENAT_TEXTE_XML_BASE_URL = "https://www.senat.fr/akomantoso/";
|
|
20
|
+
const SENAT_TEXTE_BASE_URL = "https://www.senat.fr/leg/";
|
|
21
|
+
const SENAT_EXPOSE_DES_MOTIFS_BASE_URL = "https://www.senat.fr/leg/exposes-des-motifs/";
|
|
22
|
+
const SENAT_RAPPORT_BASE_URL = "https://www.senat.fr/rap/";
|
|
23
|
+
async function convertData() {
|
|
24
|
+
const enabledDatasets = (0, datasets_1.getEnabledDatasets)(options["categories"]);
|
|
25
|
+
const dataDir = options["dataDir"];
|
|
26
|
+
(0, assert_1.default)(dataDir, "Missing argument: data directory");
|
|
27
|
+
console.time("data transformation time");
|
|
28
|
+
if (enabledDatasets & datasets_1.EnabledDatasets.Ameli) {
|
|
29
|
+
const dataset = datasets_1.datasets.ameli;
|
|
30
|
+
if (!options["silent"]) {
|
|
31
|
+
console.log(`Converting database ${dataset.database} data into files…`);
|
|
32
|
+
}
|
|
33
|
+
const ameliReorganizedRootDir = path_1.default.join(dataDir, dataset.database);
|
|
34
|
+
(0, util_1.ensureAndClearDir)(ameliReorganizedRootDir);
|
|
35
|
+
for await (const amendement of (0, model_1.findAllAmendements)()) {
|
|
36
|
+
if (options["verbose"]) {
|
|
37
|
+
console.log(`Converting ${amendement.numero} file…`);
|
|
38
|
+
}
|
|
39
|
+
const session = String(amendement.session) || datautil_1.UNDEFINED_SESSION;
|
|
40
|
+
const signetDossierLegislatif = amendement.signet_dossier_legislatif ||
|
|
41
|
+
`${amendement.nature_texte}-${amendement.numero_texte}`.toLowerCase();
|
|
42
|
+
const ameliReorganizedDir = path_1.default.join(ameliReorganizedRootDir, session, signetDossierLegislatif);
|
|
43
|
+
fs_extra_1.default.ensureDirSync(ameliReorganizedDir);
|
|
44
|
+
const amendementFileName = `${amendement.numero}.json`;
|
|
45
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(ameliReorganizedDir, amendementFileName), amendement, { spaces: 2 });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (enabledDatasets & datasets_1.EnabledDatasets.DosLeg) {
|
|
49
|
+
const dataset = datasets_1.datasets.dosleg;
|
|
50
|
+
if (!options["silent"]) {
|
|
51
|
+
console.log(`Converting database ${dataset.database} data into files…`);
|
|
52
|
+
}
|
|
53
|
+
const doslegReorganizedRootDir = path_1.default.join(dataDir, dataset.database);
|
|
54
|
+
const dossiersReorganizedDir = path_1.default.join(doslegReorganizedRootDir, loaders_1.DOSLEG_DOSSIERS_FOLDER);
|
|
55
|
+
(0, util_1.ensureAndClearDir)(doslegReorganizedRootDir);
|
|
56
|
+
(0, util_1.ensureAndClearDir)(dossiersReorganizedDir);
|
|
57
|
+
for await (const loi of (0, model_1.findAllLois)()) {
|
|
58
|
+
if (options["verbose"]) {
|
|
59
|
+
console.log(`Converting ${loi.signet} file…`);
|
|
60
|
+
}
|
|
61
|
+
let loiReorganizedDir = path_1.default.join(dossiersReorganizedDir, datautil_1.UNDEFINED_SESSION);
|
|
62
|
+
const signetParts = datautil_1.SIGNET_STRUCTURE_REGEXP.exec(loi.signet)?.groups;
|
|
63
|
+
if (signetParts && "session" in signetParts) {
|
|
64
|
+
const { session } = signetParts;
|
|
65
|
+
const formattedSession = (0, datautil_1.formatToFourDigitSession)(session);
|
|
66
|
+
loiReorganizedDir = path_1.default.join(dossiersReorganizedDir, formattedSession);
|
|
67
|
+
}
|
|
68
|
+
fs_extra_1.default.ensureDirSync(loiReorganizedDir);
|
|
69
|
+
const loiFileName = `${loi.signet}.json`;
|
|
70
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(loiReorganizedDir, loiFileName), loi, {
|
|
71
|
+
spaces: 2,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
await convertTexteUrls(dataDir);
|
|
75
|
+
await convertRapportUrls(dataDir);
|
|
76
|
+
}
|
|
77
|
+
if (enabledDatasets & datasets_1.EnabledDatasets.Questions) {
|
|
78
|
+
const dataset = datasets_1.datasets.questions;
|
|
79
|
+
if (!options["silent"]) {
|
|
80
|
+
console.log(`Converting database ${dataset.database} data into files…`);
|
|
81
|
+
}
|
|
82
|
+
const questionsReorganizedRootDir = path_1.default.join(dataDir, dataset.database);
|
|
83
|
+
(0, util_1.ensureAndClearDir)(questionsReorganizedRootDir);
|
|
84
|
+
for await (const question of (0, model_1.findAllQuestions)()) {
|
|
85
|
+
if (options["verbose"]) {
|
|
86
|
+
console.log(`Converting ${question.reference} file…`);
|
|
87
|
+
}
|
|
88
|
+
const legislature = question.legislature ? question.legislature : 0;
|
|
89
|
+
const questionReorganizedDir = path_1.default.join(questionsReorganizedRootDir, String(legislature));
|
|
90
|
+
fs_extra_1.default.ensureDirSync(questionReorganizedDir);
|
|
91
|
+
const questionFileName = `${question.reference}.json`;
|
|
92
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(questionReorganizedDir, questionFileName), question, { spaces: 2 });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (enabledDatasets & datasets_1.EnabledDatasets.Sens) {
|
|
96
|
+
const dataset = datasets_1.datasets.sens;
|
|
97
|
+
if (!options["silent"]) {
|
|
98
|
+
console.log(`Converting database ${dataset.database} data into files…`);
|
|
99
|
+
}
|
|
100
|
+
const sensReorganizedRootDir = path_1.default.join(dataDir, dataset.database);
|
|
101
|
+
const senateursReorganizedDir = path_1.default.join(sensReorganizedRootDir, loaders_1.SENS_SENATEURS_FOLDER);
|
|
102
|
+
const circonscriptionsReorganizedDir = path_1.default.join(sensReorganizedRootDir, loaders_1.SENS_CIRCONSCRIPTIONS_FOLDER);
|
|
103
|
+
const organismesReorganizedDir = path_1.default.join(sensReorganizedRootDir, loaders_1.SENS_ORGANISMES_FOLDER);
|
|
104
|
+
(0, util_1.ensureAndClearDir)(sensReorganizedRootDir);
|
|
105
|
+
(0, util_1.ensureAndClearDir)(senateursReorganizedDir);
|
|
106
|
+
(0, util_1.ensureAndClearDir)(circonscriptionsReorganizedDir);
|
|
107
|
+
(0, util_1.ensureAndClearDir)(organismesReorganizedDir);
|
|
108
|
+
for await (const sen of (0, model_1.findAllSens)()) {
|
|
109
|
+
if (options["verbose"]) {
|
|
110
|
+
console.log(`Converting ${sen.matricule} file…`);
|
|
111
|
+
}
|
|
112
|
+
const senFileName = `${sen.matricule}.json`;
|
|
113
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(senateursReorganizedDir, senFileName), sen, {
|
|
114
|
+
spaces: 2,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
for await (const circonscription of (0, model_1.findAllCirconscriptions)()) {
|
|
118
|
+
if (options["verbose"]) {
|
|
119
|
+
console.log(`Converting ${circonscription.identifiant} file…`);
|
|
120
|
+
}
|
|
121
|
+
const circonscriptionFileName = `${circonscription.identifiant}.json`;
|
|
122
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(circonscriptionsReorganizedDir, circonscriptionFileName), circonscription, { spaces: 2 });
|
|
123
|
+
}
|
|
124
|
+
for await (const organisme of (0, model_1.findAllOrganismes)()) {
|
|
125
|
+
if (options["verbose"]) {
|
|
126
|
+
console.log(`Converting ${organisme.code} file…`);
|
|
127
|
+
}
|
|
128
|
+
const organismeFileName = `${organisme.code}.json`;
|
|
129
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(organismesReorganizedDir, organismeFileName), organisme, { spaces: 2 });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (!options["silent"]) {
|
|
133
|
+
console.timeEnd("data transformation time");
|
|
134
|
+
}
|
|
62
135
|
}
|
|
63
|
-
function
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
console.time("data transformation time");
|
|
73
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Ameli)) {
|
|
74
|
-
_context.next = 43;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
dataset = _datasets.datasets.ameli;
|
|
78
|
-
if (!options.silent) {
|
|
79
|
-
console.log("Converting database ".concat(dataset.database, " data into files\u2026"));
|
|
80
|
-
}
|
|
81
|
-
ameliReorganizedRootDir = _path["default"].join(dataDir, dataset.database);
|
|
82
|
-
(0, _util.ensureAndClearDir)(ameliReorganizedRootDir);
|
|
83
|
-
_iteratorAbruptCompletion = false;
|
|
84
|
-
_didIteratorError = false;
|
|
85
|
-
_context.prev = 11;
|
|
86
|
-
_iterator = _asyncIterator((0, _model.findAllAmendements)());
|
|
87
|
-
case 13:
|
|
88
|
-
_context.next = 15;
|
|
89
|
-
return _iterator.next();
|
|
90
|
-
case 15:
|
|
91
|
-
if (!(_iteratorAbruptCompletion = !(_step = _context.sent).done)) {
|
|
92
|
-
_context.next = 27;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
amendement = _step.value;
|
|
96
|
-
if (options.verbose) {
|
|
97
|
-
console.log("Converting ".concat(amendement.numero, " file\u2026"));
|
|
98
|
-
}
|
|
99
|
-
session = String(amendement.session) || _datautil.UNDEFINED_SESSION;
|
|
100
|
-
signetDossierLegislatif = amendement.signet_dossier_legislatif || "".concat(amendement.nature_texte, "-").concat(amendement.numero_texte).toLowerCase();
|
|
101
|
-
ameliReorganizedDir = _path["default"].join(ameliReorganizedRootDir, session, signetDossierLegislatif);
|
|
102
|
-
_fsExtra["default"].ensureDirSync(ameliReorganizedDir);
|
|
103
|
-
amendementFileName = "".concat(amendement.numero, ".json");
|
|
104
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(ameliReorganizedDir, amendementFileName), amendement, {
|
|
105
|
-
spaces: 2
|
|
106
|
-
});
|
|
107
|
-
case 24:
|
|
108
|
-
_iteratorAbruptCompletion = false;
|
|
109
|
-
_context.next = 13;
|
|
110
|
-
break;
|
|
111
|
-
case 27:
|
|
112
|
-
_context.next = 33;
|
|
113
|
-
break;
|
|
114
|
-
case 29:
|
|
115
|
-
_context.prev = 29;
|
|
116
|
-
_context.t0 = _context["catch"](11);
|
|
117
|
-
_didIteratorError = true;
|
|
118
|
-
_iteratorError = _context.t0;
|
|
119
|
-
case 33:
|
|
120
|
-
_context.prev = 33;
|
|
121
|
-
_context.prev = 34;
|
|
122
|
-
if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
|
|
123
|
-
_context.next = 38;
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
_context.next = 38;
|
|
127
|
-
return _iterator["return"]();
|
|
128
|
-
case 38:
|
|
129
|
-
_context.prev = 38;
|
|
130
|
-
if (!_didIteratorError) {
|
|
131
|
-
_context.next = 41;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
throw _iteratorError;
|
|
135
|
-
case 41:
|
|
136
|
-
return _context.finish(38);
|
|
137
|
-
case 42:
|
|
138
|
-
return _context.finish(33);
|
|
139
|
-
case 43:
|
|
140
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.DosLeg)) {
|
|
141
|
-
_context.next = 88;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
_dataset = _datasets.datasets.dosleg;
|
|
145
|
-
if (!options.silent) {
|
|
146
|
-
console.log("Converting database ".concat(_dataset.database, " data into files\u2026"));
|
|
147
|
-
}
|
|
148
|
-
doslegReorganizedRootDir = _path["default"].join(dataDir, _dataset.database);
|
|
149
|
-
dossiersReorganizedDir = _path["default"].join(doslegReorganizedRootDir, _loaders.DOSLEG_DOSSIERS_FOLDER);
|
|
150
|
-
(0, _util.ensureAndClearDir)(doslegReorganizedRootDir);
|
|
151
|
-
(0, _util.ensureAndClearDir)(dossiersReorganizedDir);
|
|
152
|
-
_iteratorAbruptCompletion2 = false;
|
|
153
|
-
_didIteratorError2 = false;
|
|
154
|
-
_context.prev = 52;
|
|
155
|
-
_iterator2 = _asyncIterator((0, _model.findAllLois)());
|
|
156
|
-
case 54:
|
|
157
|
-
_context.next = 56;
|
|
158
|
-
return _iterator2.next();
|
|
159
|
-
case 56:
|
|
160
|
-
if (!(_iteratorAbruptCompletion2 = !(_step2 = _context.sent).done)) {
|
|
161
|
-
_context.next = 68;
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
loi = _step2.value;
|
|
165
|
-
if (options.verbose) {
|
|
166
|
-
console.log("Converting ".concat(loi.signet, " file\u2026"));
|
|
167
|
-
}
|
|
168
|
-
loiReorganizedDir = _path["default"].join(dossiersReorganizedDir, _datautil.UNDEFINED_SESSION);
|
|
169
|
-
signetParts = (_SIGNET_STRUCTURE_REG = _datautil.SIGNET_STRUCTURE_REGEXP.exec(loi.signet)) === null || _SIGNET_STRUCTURE_REG === void 0 ? void 0 : _SIGNET_STRUCTURE_REG.groups;
|
|
170
|
-
if (signetParts) {
|
|
171
|
-
_session = signetParts.session;
|
|
172
|
-
formattedSession = (0, _datautil.formatToFourDigitSession)(_session);
|
|
173
|
-
loiReorganizedDir = _path["default"].join(dossiersReorganizedDir, formattedSession);
|
|
174
|
-
}
|
|
175
|
-
_fsExtra["default"].ensureDirSync(loiReorganizedDir);
|
|
176
|
-
loiFileName = "".concat(loi.signet, ".json");
|
|
177
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(loiReorganizedDir, loiFileName), loi, {
|
|
178
|
-
spaces: 2
|
|
179
|
-
});
|
|
180
|
-
case 65:
|
|
181
|
-
_iteratorAbruptCompletion2 = false;
|
|
182
|
-
_context.next = 54;
|
|
183
|
-
break;
|
|
184
|
-
case 68:
|
|
185
|
-
_context.next = 74;
|
|
186
|
-
break;
|
|
187
|
-
case 70:
|
|
188
|
-
_context.prev = 70;
|
|
189
|
-
_context.t1 = _context["catch"](52);
|
|
190
|
-
_didIteratorError2 = true;
|
|
191
|
-
_iteratorError2 = _context.t1;
|
|
192
|
-
case 74:
|
|
193
|
-
_context.prev = 74;
|
|
194
|
-
_context.prev = 75;
|
|
195
|
-
if (!(_iteratorAbruptCompletion2 && _iterator2["return"] != null)) {
|
|
196
|
-
_context.next = 79;
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
_context.next = 79;
|
|
200
|
-
return _iterator2["return"]();
|
|
201
|
-
case 79:
|
|
202
|
-
_context.prev = 79;
|
|
203
|
-
if (!_didIteratorError2) {
|
|
204
|
-
_context.next = 82;
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
throw _iteratorError2;
|
|
208
|
-
case 82:
|
|
209
|
-
return _context.finish(79);
|
|
210
|
-
case 83:
|
|
211
|
-
return _context.finish(74);
|
|
212
|
-
case 84:
|
|
213
|
-
_context.next = 86;
|
|
214
|
-
return convertTexteUrls(dataDir);
|
|
215
|
-
case 86:
|
|
216
|
-
_context.next = 88;
|
|
217
|
-
return convertRapportUrls(dataDir);
|
|
218
|
-
case 88:
|
|
219
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Questions)) {
|
|
220
|
-
_context.next = 126;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
_dataset2 = _datasets.datasets.questions;
|
|
224
|
-
if (!options.silent) {
|
|
225
|
-
console.log("Converting database ".concat(_dataset2.database, " data into files\u2026"));
|
|
226
|
-
}
|
|
227
|
-
questionsReorganizedRootDir = _path["default"].join(dataDir, _dataset2.database);
|
|
228
|
-
(0, _util.ensureAndClearDir)(questionsReorganizedRootDir);
|
|
229
|
-
_iteratorAbruptCompletion3 = false;
|
|
230
|
-
_didIteratorError3 = false;
|
|
231
|
-
_context.prev = 95;
|
|
232
|
-
_iterator3 = _asyncIterator((0, _model.findAllQuestions)());
|
|
233
|
-
case 97:
|
|
234
|
-
_context.next = 99;
|
|
235
|
-
return _iterator3.next();
|
|
236
|
-
case 99:
|
|
237
|
-
if (!(_iteratorAbruptCompletion3 = !(_step3 = _context.sent).done)) {
|
|
238
|
-
_context.next = 110;
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
question = _step3.value;
|
|
242
|
-
if (options.verbose) {
|
|
243
|
-
console.log("Converting ".concat(question.reference, " file\u2026"));
|
|
244
|
-
}
|
|
245
|
-
legislature = question.legislature ? question.legislature : 0;
|
|
246
|
-
questionReorganizedDir = _path["default"].join(questionsReorganizedRootDir, String(legislature));
|
|
247
|
-
_fsExtra["default"].ensureDirSync(questionReorganizedDir);
|
|
248
|
-
questionFileName = "".concat(question.reference, ".json");
|
|
249
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(questionReorganizedDir, questionFileName), question, {
|
|
250
|
-
spaces: 2
|
|
251
|
-
});
|
|
252
|
-
case 107:
|
|
253
|
-
_iteratorAbruptCompletion3 = false;
|
|
254
|
-
_context.next = 97;
|
|
255
|
-
break;
|
|
256
|
-
case 110:
|
|
257
|
-
_context.next = 116;
|
|
258
|
-
break;
|
|
259
|
-
case 112:
|
|
260
|
-
_context.prev = 112;
|
|
261
|
-
_context.t2 = _context["catch"](95);
|
|
262
|
-
_didIteratorError3 = true;
|
|
263
|
-
_iteratorError3 = _context.t2;
|
|
264
|
-
case 116:
|
|
265
|
-
_context.prev = 116;
|
|
266
|
-
_context.prev = 117;
|
|
267
|
-
if (!(_iteratorAbruptCompletion3 && _iterator3["return"] != null)) {
|
|
268
|
-
_context.next = 121;
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
_context.next = 121;
|
|
272
|
-
return _iterator3["return"]();
|
|
273
|
-
case 121:
|
|
274
|
-
_context.prev = 121;
|
|
275
|
-
if (!_didIteratorError3) {
|
|
276
|
-
_context.next = 124;
|
|
277
|
-
break;
|
|
278
|
-
}
|
|
279
|
-
throw _iteratorError3;
|
|
280
|
-
case 124:
|
|
281
|
-
return _context.finish(121);
|
|
282
|
-
case 125:
|
|
283
|
-
return _context.finish(116);
|
|
284
|
-
case 126:
|
|
285
|
-
if (!(enabledDatasets & _datasets.EnabledDatasets.Sens)) {
|
|
286
|
-
_context.next = 227;
|
|
287
|
-
break;
|
|
288
|
-
}
|
|
289
|
-
_dataset3 = _datasets.datasets.sens;
|
|
290
|
-
if (!options.silent) {
|
|
291
|
-
console.log("Converting database ".concat(_dataset3.database, " data into files\u2026"));
|
|
292
|
-
}
|
|
293
|
-
sensReorganizedRootDir = _path["default"].join(dataDir, _dataset3.database);
|
|
294
|
-
senateursReorganizedDir = _path["default"].join(sensReorganizedRootDir, _loaders.SENS_SENATEURS_FOLDER);
|
|
295
|
-
circonscriptionsReorganizedDir = _path["default"].join(sensReorganizedRootDir, _loaders.SENS_CIRCONSCRIPTIONS_FOLDER);
|
|
296
|
-
organismesReorganizedDir = _path["default"].join(sensReorganizedRootDir, _loaders.SENS_ORGANISMES_FOLDER);
|
|
297
|
-
(0, _util.ensureAndClearDir)(sensReorganizedRootDir);
|
|
298
|
-
(0, _util.ensureAndClearDir)(senateursReorganizedDir);
|
|
299
|
-
(0, _util.ensureAndClearDir)(circonscriptionsReorganizedDir);
|
|
300
|
-
(0, _util.ensureAndClearDir)(organismesReorganizedDir);
|
|
301
|
-
_iteratorAbruptCompletion4 = false;
|
|
302
|
-
_didIteratorError4 = false;
|
|
303
|
-
_context.prev = 139;
|
|
304
|
-
_iterator4 = _asyncIterator((0, _model.findAllSens)());
|
|
305
|
-
case 141:
|
|
306
|
-
_context.next = 143;
|
|
307
|
-
return _iterator4.next();
|
|
308
|
-
case 143:
|
|
309
|
-
if (!(_iteratorAbruptCompletion4 = !(_step4 = _context.sent).done)) {
|
|
310
|
-
_context.next = 151;
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
sen = _step4.value;
|
|
314
|
-
if (options.verbose) {
|
|
315
|
-
console.log("Converting ".concat(sen.matricule, " file\u2026"));
|
|
316
|
-
}
|
|
317
|
-
senFileName = "".concat(sen.matricule, ".json");
|
|
318
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(senateursReorganizedDir, senFileName), sen, {
|
|
319
|
-
spaces: 2
|
|
320
|
-
});
|
|
321
|
-
case 148:
|
|
322
|
-
_iteratorAbruptCompletion4 = false;
|
|
323
|
-
_context.next = 141;
|
|
324
|
-
break;
|
|
325
|
-
case 151:
|
|
326
|
-
_context.next = 157;
|
|
327
|
-
break;
|
|
328
|
-
case 153:
|
|
329
|
-
_context.prev = 153;
|
|
330
|
-
_context.t3 = _context["catch"](139);
|
|
331
|
-
_didIteratorError4 = true;
|
|
332
|
-
_iteratorError4 = _context.t3;
|
|
333
|
-
case 157:
|
|
334
|
-
_context.prev = 157;
|
|
335
|
-
_context.prev = 158;
|
|
336
|
-
if (!(_iteratorAbruptCompletion4 && _iterator4["return"] != null)) {
|
|
337
|
-
_context.next = 162;
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
_context.next = 162;
|
|
341
|
-
return _iterator4["return"]();
|
|
342
|
-
case 162:
|
|
343
|
-
_context.prev = 162;
|
|
344
|
-
if (!_didIteratorError4) {
|
|
345
|
-
_context.next = 165;
|
|
346
|
-
break;
|
|
347
|
-
}
|
|
348
|
-
throw _iteratorError4;
|
|
349
|
-
case 165:
|
|
350
|
-
return _context.finish(162);
|
|
351
|
-
case 166:
|
|
352
|
-
return _context.finish(157);
|
|
353
|
-
case 167:
|
|
354
|
-
_iteratorAbruptCompletion5 = false;
|
|
355
|
-
_didIteratorError5 = false;
|
|
356
|
-
_context.prev = 169;
|
|
357
|
-
_iterator5 = _asyncIterator((0, _model.findAllCirconscriptions)());
|
|
358
|
-
case 171:
|
|
359
|
-
_context.next = 173;
|
|
360
|
-
return _iterator5.next();
|
|
361
|
-
case 173:
|
|
362
|
-
if (!(_iteratorAbruptCompletion5 = !(_step5 = _context.sent).done)) {
|
|
363
|
-
_context.next = 181;
|
|
364
|
-
break;
|
|
365
|
-
}
|
|
366
|
-
circonscription = _step5.value;
|
|
367
|
-
if (options.verbose) {
|
|
368
|
-
console.log("Converting ".concat(circonscription.identifiant, " file\u2026"));
|
|
369
|
-
}
|
|
370
|
-
circonscriptionFileName = "".concat(circonscription.identifiant, ".json");
|
|
371
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(circonscriptionsReorganizedDir, circonscriptionFileName), circonscription, {
|
|
372
|
-
spaces: 2
|
|
373
|
-
});
|
|
374
|
-
case 178:
|
|
375
|
-
_iteratorAbruptCompletion5 = false;
|
|
376
|
-
_context.next = 171;
|
|
377
|
-
break;
|
|
378
|
-
case 181:
|
|
379
|
-
_context.next = 187;
|
|
380
|
-
break;
|
|
381
|
-
case 183:
|
|
382
|
-
_context.prev = 183;
|
|
383
|
-
_context.t4 = _context["catch"](169);
|
|
384
|
-
_didIteratorError5 = true;
|
|
385
|
-
_iteratorError5 = _context.t4;
|
|
386
|
-
case 187:
|
|
387
|
-
_context.prev = 187;
|
|
388
|
-
_context.prev = 188;
|
|
389
|
-
if (!(_iteratorAbruptCompletion5 && _iterator5["return"] != null)) {
|
|
390
|
-
_context.next = 192;
|
|
391
|
-
break;
|
|
392
|
-
}
|
|
393
|
-
_context.next = 192;
|
|
394
|
-
return _iterator5["return"]();
|
|
395
|
-
case 192:
|
|
396
|
-
_context.prev = 192;
|
|
397
|
-
if (!_didIteratorError5) {
|
|
398
|
-
_context.next = 195;
|
|
399
|
-
break;
|
|
400
|
-
}
|
|
401
|
-
throw _iteratorError5;
|
|
402
|
-
case 195:
|
|
403
|
-
return _context.finish(192);
|
|
404
|
-
case 196:
|
|
405
|
-
return _context.finish(187);
|
|
406
|
-
case 197:
|
|
407
|
-
_iteratorAbruptCompletion6 = false;
|
|
408
|
-
_didIteratorError6 = false;
|
|
409
|
-
_context.prev = 199;
|
|
410
|
-
_iterator6 = _asyncIterator((0, _model.findAllOrganismes)());
|
|
411
|
-
case 201:
|
|
412
|
-
_context.next = 203;
|
|
413
|
-
return _iterator6.next();
|
|
414
|
-
case 203:
|
|
415
|
-
if (!(_iteratorAbruptCompletion6 = !(_step6 = _context.sent).done)) {
|
|
416
|
-
_context.next = 211;
|
|
417
|
-
break;
|
|
418
|
-
}
|
|
419
|
-
organisme = _step6.value;
|
|
420
|
-
if (options.verbose) {
|
|
421
|
-
console.log("Converting ".concat(organisme.code, " file\u2026"));
|
|
422
|
-
}
|
|
423
|
-
organismeFileName = "".concat(organisme.code, ".json");
|
|
424
|
-
_fsExtra["default"].writeJSONSync(_path["default"].join(organismesReorganizedDir, organismeFileName), organisme, {
|
|
425
|
-
spaces: 2
|
|
426
|
-
});
|
|
427
|
-
case 208:
|
|
428
|
-
_iteratorAbruptCompletion6 = false;
|
|
429
|
-
_context.next = 201;
|
|
430
|
-
break;
|
|
431
|
-
case 211:
|
|
432
|
-
_context.next = 217;
|
|
433
|
-
break;
|
|
434
|
-
case 213:
|
|
435
|
-
_context.prev = 213;
|
|
436
|
-
_context.t5 = _context["catch"](199);
|
|
437
|
-
_didIteratorError6 = true;
|
|
438
|
-
_iteratorError6 = _context.t5;
|
|
439
|
-
case 217:
|
|
440
|
-
_context.prev = 217;
|
|
441
|
-
_context.prev = 218;
|
|
442
|
-
if (!(_iteratorAbruptCompletion6 && _iterator6["return"] != null)) {
|
|
443
|
-
_context.next = 222;
|
|
444
|
-
break;
|
|
445
|
-
}
|
|
446
|
-
_context.next = 222;
|
|
447
|
-
return _iterator6["return"]();
|
|
448
|
-
case 222:
|
|
449
|
-
_context.prev = 222;
|
|
450
|
-
if (!_didIteratorError6) {
|
|
451
|
-
_context.next = 225;
|
|
452
|
-
break;
|
|
453
|
-
}
|
|
454
|
-
throw _iteratorError6;
|
|
455
|
-
case 225:
|
|
456
|
-
return _context.finish(222);
|
|
457
|
-
case 226:
|
|
458
|
-
return _context.finish(217);
|
|
459
|
-
case 227:
|
|
460
|
-
if (!options.silent) {
|
|
461
|
-
console.timeEnd("data transformation time");
|
|
462
|
-
}
|
|
463
|
-
case 228:
|
|
464
|
-
case "end":
|
|
465
|
-
return _context.stop();
|
|
466
|
-
}
|
|
467
|
-
}, _callee, null, [[11, 29, 33, 43], [34,, 38, 42], [52, 70, 74, 84], [75,, 79, 83], [95, 112, 116, 126], [117,, 121, 125], [139, 153, 157, 167], [158,, 162, 166], [169, 183, 187, 197], [188,, 192, 196], [199, 213, 217, 227], [218,, 222, 226]]);
|
|
468
|
-
}));
|
|
469
|
-
return _convertData.apply(this, arguments);
|
|
470
|
-
}
|
|
471
|
-
function convertTexteUrls(_x) {
|
|
472
|
-
return _convertTexteUrls.apply(this, arguments);
|
|
473
|
-
}
|
|
474
|
-
function _convertTexteUrls() {
|
|
475
|
-
_convertTexteUrls = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(dataDir) {
|
|
476
|
-
var textesDir, originalTextesDir, _iteratorAbruptCompletion7, _didIteratorError7, _iteratorError7, _iterator7, _step7, texte, _texte$session, texteName, texteDir, metadata;
|
|
477
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
478
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
479
|
-
case 0:
|
|
480
|
-
textesDir = _path["default"].join(dataDir, _loaders.TEXTE_FOLDER);
|
|
481
|
-
_fsExtra["default"].ensureDirSync(textesDir);
|
|
482
|
-
originalTextesDir = _path["default"].join(textesDir, _loaders.TEXTE_ORIGINAL_FOLDER);
|
|
483
|
-
_iteratorAbruptCompletion7 = false;
|
|
484
|
-
_didIteratorError7 = false;
|
|
485
|
-
_context2.prev = 5;
|
|
486
|
-
_iterator7 = _asyncIterator((0, _dosleg.findSenatTexteUrls)(options.sessions));
|
|
487
|
-
case 7:
|
|
488
|
-
_context2.next = 9;
|
|
489
|
-
return _iterator7.next();
|
|
490
|
-
case 9:
|
|
491
|
-
if (!(_iteratorAbruptCompletion7 = !(_step7 = _context2.sent).done)) {
|
|
492
|
-
_context2.next = 19;
|
|
493
|
-
break;
|
|
494
|
-
}
|
|
495
|
-
texte = _step7.value;
|
|
496
|
-
texteName = _path["default"].parse(texte.url).name;
|
|
497
|
-
texteDir = _path["default"].join(originalTextesDir, "".concat((_texte$session = texte.session) !== null && _texte$session !== void 0 ? _texte$session : _datautil.UNDEFINED_SESSION), texteName);
|
|
498
|
-
_fsExtra["default"].ensureDirSync(texteDir);
|
|
499
|
-
metadata = {
|
|
136
|
+
async function convertTexteUrls(dataDir) {
|
|
137
|
+
const textesDir = path_1.default.join(dataDir, loaders_1.TEXTE_FOLDER);
|
|
138
|
+
fs_extra_1.default.ensureDirSync(textesDir);
|
|
139
|
+
const originalTextesDir = path_1.default.join(textesDir, loaders_1.TEXTE_ORIGINAL_FOLDER);
|
|
140
|
+
for await (const texte of (0, dosleg_1.findSenatTexteUrls)(options["sessions"])) {
|
|
141
|
+
const texteName = path_1.default.parse(texte.url).name;
|
|
142
|
+
const texteDir = path_1.default.join(originalTextesDir, `${texte.session ?? datautil_1.UNDEFINED_SESSION}`, texteName);
|
|
143
|
+
fs_extra_1.default.ensureDirSync(texteDir);
|
|
144
|
+
const metadata = {
|
|
500
145
|
name: texteName,
|
|
501
146
|
session: texte.session,
|
|
502
|
-
url_expose_des_motifs: texte.hasExposeDesMotifs
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
break;
|
|
514
|
-
case 19:
|
|
515
|
-
_context2.next = 25;
|
|
516
|
-
break;
|
|
517
|
-
case 21:
|
|
518
|
-
_context2.prev = 21;
|
|
519
|
-
_context2.t0 = _context2["catch"](5);
|
|
520
|
-
_didIteratorError7 = true;
|
|
521
|
-
_iteratorError7 = _context2.t0;
|
|
522
|
-
case 25:
|
|
523
|
-
_context2.prev = 25;
|
|
524
|
-
_context2.prev = 26;
|
|
525
|
-
if (!(_iteratorAbruptCompletion7 && _iterator7["return"] != null)) {
|
|
526
|
-
_context2.next = 30;
|
|
527
|
-
break;
|
|
528
|
-
}
|
|
529
|
-
_context2.next = 30;
|
|
530
|
-
return _iterator7["return"]();
|
|
531
|
-
case 30:
|
|
532
|
-
_context2.prev = 30;
|
|
533
|
-
if (!_didIteratorError7) {
|
|
534
|
-
_context2.next = 33;
|
|
535
|
-
break;
|
|
536
|
-
}
|
|
537
|
-
throw _iteratorError7;
|
|
538
|
-
case 33:
|
|
539
|
-
return _context2.finish(30);
|
|
540
|
-
case 34:
|
|
541
|
-
return _context2.finish(25);
|
|
542
|
-
case 35:
|
|
543
|
-
case "end":
|
|
544
|
-
return _context2.stop();
|
|
545
|
-
}
|
|
546
|
-
}, _callee2, null, [[5, 21, 25, 35], [26,, 30, 34]]);
|
|
547
|
-
}));
|
|
548
|
-
return _convertTexteUrls.apply(this, arguments);
|
|
549
|
-
}
|
|
550
|
-
function convertRapportUrls(_x2) {
|
|
551
|
-
return _convertRapportUrls.apply(this, arguments);
|
|
147
|
+
url_expose_des_motifs: texte.hasExposeDesMotifs
|
|
148
|
+
? new URL(`${texteName}-expose.html`, SENAT_EXPOSE_DES_MOTIFS_BASE_URL)
|
|
149
|
+
: undefined,
|
|
150
|
+
url_xml: new URL(`${texteName}.akn.xml`, SENAT_TEXTE_XML_BASE_URL),
|
|
151
|
+
url_html: new URL(`${texteName}.html`, SENAT_TEXTE_BASE_URL),
|
|
152
|
+
url_pdf: new URL(`${texteName}.pdf`, SENAT_TEXTE_BASE_URL),
|
|
153
|
+
};
|
|
154
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(texteDir, loaders_1.DOCUMENT_METADATA_FILE), metadata, {
|
|
155
|
+
spaces: 2,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
552
158
|
}
|
|
553
|
-
function
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
_context3.prev = 4;
|
|
564
|
-
_iterator8 = _asyncIterator((0, _dosleg.findSenatRapportUrls)(options.sessions));
|
|
565
|
-
case 6:
|
|
566
|
-
_context3.next = 8;
|
|
567
|
-
return _iterator8.next();
|
|
568
|
-
case 8:
|
|
569
|
-
if (!(_iteratorAbruptCompletion8 = !(_step8 = _context3.sent).done)) {
|
|
570
|
-
_context3.next = 23;
|
|
571
|
-
break;
|
|
572
|
-
}
|
|
573
|
-
rapport = _step8.value;
|
|
574
|
-
parsedRapportUrl = _path["default"].parse(rapport.url);
|
|
575
|
-
rapportName = parsedRapportUrl.name;
|
|
576
|
-
rapportDir = _path["default"].join(rapportsDir, "".concat((_rapport$session = rapport.session) !== null && _rapport$session !== void 0 ? _rapport$session : _datautil.UNDEFINED_SESSION), rapportName);
|
|
577
|
-
_fsExtra["default"].ensureDirSync(rapportDir);
|
|
578
|
-
rapportHtmlUrlBase = "".concat(rapportName, "_mono.html");
|
|
579
|
-
rapportHtmlUrl = _path["default"].format({
|
|
159
|
+
async function convertRapportUrls(dataDir) {
|
|
160
|
+
const rapportsDir = path_1.default.join(dataDir, loaders_1.RAPPORT_FOLDER);
|
|
161
|
+
fs_extra_1.default.ensureDirSync(rapportsDir);
|
|
162
|
+
for await (const rapport of (0, dosleg_1.findSenatRapportUrls)(options["sessions"])) {
|
|
163
|
+
const parsedRapportUrl = path_1.default.parse(rapport.url);
|
|
164
|
+
const rapportName = parsedRapportUrl.name;
|
|
165
|
+
const rapportDir = path_1.default.join(rapportsDir, `${rapport.session ?? datautil_1.UNDEFINED_SESSION}`, rapportName);
|
|
166
|
+
fs_extra_1.default.ensureDirSync(rapportDir);
|
|
167
|
+
const rapportHtmlUrlBase = `${rapportName}_mono.html`;
|
|
168
|
+
const rapportHtmlUrl = path_1.default.format({
|
|
580
169
|
dir: parsedRapportUrl.dir,
|
|
581
|
-
base: rapportHtmlUrlBase
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
170
|
+
base: rapportHtmlUrlBase,
|
|
171
|
+
});
|
|
172
|
+
const rapportPdfUrlBase = `${rapportName}1.pdf`;
|
|
173
|
+
const rapportPdfUrl = path_1.default.format({
|
|
585
174
|
dir: parsedRapportUrl.dir,
|
|
586
|
-
base: rapportPdfUrlBase
|
|
587
|
-
|
|
588
|
-
|
|
175
|
+
base: rapportPdfUrlBase,
|
|
176
|
+
});
|
|
177
|
+
const metadata = {
|
|
589
178
|
name: rapportName,
|
|
590
179
|
session: rapport.session,
|
|
591
180
|
url_html: new URL(rapportHtmlUrl, SENAT_RAPPORT_BASE_URL),
|
|
592
|
-
url_pdf: new URL(rapportPdfUrl, SENAT_RAPPORT_BASE_URL)
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
spaces: 2
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
_iteratorAbruptCompletion8 = false;
|
|
599
|
-
_context3.next = 6;
|
|
600
|
-
break;
|
|
601
|
-
case 23:
|
|
602
|
-
_context3.next = 29;
|
|
603
|
-
break;
|
|
604
|
-
case 25:
|
|
605
|
-
_context3.prev = 25;
|
|
606
|
-
_context3.t0 = _context3["catch"](4);
|
|
607
|
-
_didIteratorError8 = true;
|
|
608
|
-
_iteratorError8 = _context3.t0;
|
|
609
|
-
case 29:
|
|
610
|
-
_context3.prev = 29;
|
|
611
|
-
_context3.prev = 30;
|
|
612
|
-
if (!(_iteratorAbruptCompletion8 && _iterator8["return"] != null)) {
|
|
613
|
-
_context3.next = 34;
|
|
614
|
-
break;
|
|
615
|
-
}
|
|
616
|
-
_context3.next = 34;
|
|
617
|
-
return _iterator8["return"]();
|
|
618
|
-
case 34:
|
|
619
|
-
_context3.prev = 34;
|
|
620
|
-
if (!_didIteratorError8) {
|
|
621
|
-
_context3.next = 37;
|
|
622
|
-
break;
|
|
623
|
-
}
|
|
624
|
-
throw _iteratorError8;
|
|
625
|
-
case 37:
|
|
626
|
-
return _context3.finish(34);
|
|
627
|
-
case 38:
|
|
628
|
-
return _context3.finish(29);
|
|
629
|
-
case 39:
|
|
630
|
-
case "end":
|
|
631
|
-
return _context3.stop();
|
|
632
|
-
}
|
|
633
|
-
}, _callee3, null, [[4, 25, 29, 39], [30,, 34, 38]]);
|
|
634
|
-
}));
|
|
635
|
-
return _convertRapportUrls.apply(this, arguments);
|
|
181
|
+
url_pdf: new URL(rapportPdfUrl, SENAT_RAPPORT_BASE_URL),
|
|
182
|
+
};
|
|
183
|
+
fs_extra_1.default.writeJSONSync(path_1.default.join(rapportDir, loaders_1.DOCUMENT_METADATA_FILE), metadata, {
|
|
184
|
+
spaces: 2,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
636
187
|
}
|
|
637
|
-
convertData()
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
188
|
+
convertData()
|
|
189
|
+
.then(() => process.exit(0))
|
|
190
|
+
.catch((error) => {
|
|
191
|
+
console.log(error);
|
|
192
|
+
process.exit(1);
|
|
642
193
|
});
|
|
643
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9sb2FkZXJzIiwiX21vZGVsIiwiX2Rvc2xlZyIsIl9kYXRhdXRpbCIsIl9jbGlfaGVscGVycyIsIl91dGlsIiwiZSIsIl9fZXNNb2R1bGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiciIsInQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiU3ltYm9sIiwiaSIsIml0ZXJhdG9yIiwiYSIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJjIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImgiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJhcmciLCJkZWxlZ2F0ZSIsImQiLCJmIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJzIiwidHlwZSIsIkNvbnRleHQiLCJjYWxsIiwid3JhcCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJsIiwicCIsImdldFByb3RvdHlwZU9mIiwieSIsIngiLCJ2IiwiZyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJUeXBlRXJyb3IiLCJuZXh0IiwidyIsInRyeUVudHJpZXMiLCJwdXNoIiwibSIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJ1bnNoaWZ0IiwicG9wIiwidmFsdWVzIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpc0FycmF5IiwiX2FzeW5jSXRlcmF0b3IiLCJBc3luY0Zyb21TeW5jSXRlcmF0b3IiLCJBc3luY0Zyb21TeW5jSXRlcmF0b3JDb250aW51YXRpb24iLCJyZWplY3QiLCJfcmV0dXJuIiwib3B0aW9uc0RlZmluaXRpb25zIiwiY29tbW9uT3B0aW9ucyIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJTRU5BVF9URVhURV9YTUxfQkFTRV9VUkwiLCJTRU5BVF9URVhURV9CQVNFX1VSTCIsIlNFTkFUX0VYUE9TRV9ERVNfTU9USUZTX0JBU0VfVVJMIiwiU0VOQVRfUkFQUE9SVF9CQVNFX1VSTCIsImNvbnZlcnREYXRhIiwiX2NvbnZlcnREYXRhIiwiX2NhbGxlZSIsImVuYWJsZWREYXRhc2V0cyIsImRhdGFEaXIiLCJkYXRhc2V0IiwiYW1lbGlSZW9yZ2FuaXplZFJvb3REaXIiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uIiwiX2RpZEl0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3JFcnJvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiYW1lbmRlbWVudCIsInNlc3Npb24iLCJzaWduZXREb3NzaWVyTGVnaXNsYXRpZiIsImFtZWxpUmVvcmdhbml6ZWREaXIiLCJhbWVuZGVtZW50RmlsZU5hbWUiLCJfZGF0YXNldCIsImRvc2xlZ1Jlb3JnYW5pemVkUm9vdERpciIsImRvc3NpZXJzUmVvcmdhbml6ZWREaXIiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uMiIsIl9kaWRJdGVyYXRvckVycm9yMiIsIl9pdGVyYXRvckVycm9yMiIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJsb2kiLCJfU0lHTkVUX1NUUlVDVFVSRV9SRUciLCJsb2lSZW9yZ2FuaXplZERpciIsInNpZ25ldFBhcnRzIiwiX3Nlc3Npb24iLCJmb3JtYXR0ZWRTZXNzaW9uIiwibG9pRmlsZU5hbWUiLCJfZGF0YXNldDIiLCJxdWVzdGlvbnNSZW9yZ2FuaXplZFJvb3REaXIiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uMyIsIl9kaWRJdGVyYXRvckVycm9yMyIsIl9pdGVyYXRvckVycm9yMyIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJxdWVzdGlvbiIsImxlZ2lzbGF0dXJlIiwicXVlc3Rpb25SZW9yZ2FuaXplZERpciIsInF1ZXN0aW9uRmlsZU5hbWUiLCJfZGF0YXNldDMiLCJzZW5zUmVvcmdhbml6ZWRSb290RGlyIiwic2VuYXRldXJzUmVvcmdhbml6ZWREaXIiLCJjaXJjb25zY3JpcHRpb25zUmVvcmdhbml6ZWREaXIiLCJvcmdhbmlzbWVzUmVvcmdhbml6ZWREaXIiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uNCIsIl9kaWRJdGVyYXRvckVycm9yNCIsIl9pdGVyYXRvckVycm9yNCIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJzZW4iLCJzZW5GaWxlTmFtZSIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb241IiwiX2RpZEl0ZXJhdG9yRXJyb3I1IiwiX2l0ZXJhdG9yRXJyb3I1IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsImNpcmNvbnNjcmlwdGlvbiIsImNpcmNvbnNjcmlwdGlvbkZpbGVOYW1lIiwiX2l0ZXJhdG9yQWJydXB0Q29tcGxldGlvbjYiLCJfZGlkSXRlcmF0b3JFcnJvcjYiLCJfaXRlcmF0b3JFcnJvcjYiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2Iiwib3JnYW5pc21lIiwib3JnYW5pc21lRmlsZU5hbWUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiZ2V0RW5hYmxlZERhdGFzZXRzIiwiY2F0ZWdvcmllcyIsImFzc2VydCIsImNvbnNvbGUiLCJ0aW1lIiwiRW5hYmxlZERhdGFzZXRzIiwiQW1lbGkiLCJkYXRhc2V0cyIsImFtZWxpIiwic2lsZW50IiwibG9nIiwiY29uY2F0IiwiZGF0YWJhc2UiLCJwYXRoIiwiam9pbiIsImVuc3VyZUFuZENsZWFyRGlyIiwiZmluZEFsbEFtZW5kZW1lbnRzIiwidmVyYm9zZSIsIm51bWVybyIsIlN0cmluZyIsIlVOREVGSU5FRF9TRVNTSU9OIiwic2lnbmV0X2Rvc3NpZXJfbGVnaXNsYXRpZiIsIm5hdHVyZV90ZXh0ZSIsIm51bWVyb190ZXh0ZSIsInRvTG93ZXJDYXNlIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwid3JpdGVKU09OU3luYyIsInNwYWNlcyIsInQwIiwiRG9zTGVnIiwiZG9zbGVnIiwiRE9TTEVHX0RPU1NJRVJTX0ZPTERFUiIsImZpbmRBbGxMb2lzIiwic2lnbmV0IiwiU0lHTkVUX1NUUlVDVFVSRV9SRUdFWFAiLCJleGVjIiwiZ3JvdXBzIiwiZm9ybWF0VG9Gb3VyRGlnaXRTZXNzaW9uIiwidDEiLCJjb252ZXJ0VGV4dGVVcmxzIiwiY29udmVydFJhcHBvcnRVcmxzIiwiUXVlc3Rpb25zIiwicXVlc3Rpb25zIiwiZmluZEFsbFF1ZXN0aW9ucyIsInJlZmVyZW5jZSIsInQyIiwiU2VucyIsInNlbnMiLCJTRU5TX1NFTkFURVVSU19GT0xERVIiLCJTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSIiwiU0VOU19PUkdBTklTTUVTX0ZPTERFUiIsImZpbmRBbGxTZW5zIiwibWF0cmljdWxlIiwidDMiLCJmaW5kQWxsQ2lyY29uc2NyaXB0aW9ucyIsImlkZW50aWZpYW50IiwidDQiLCJmaW5kQWxsT3JnYW5pc21lcyIsImNvZGUiLCJ0NSIsInRpbWVFbmQiLCJfeCIsIl9jb252ZXJ0VGV4dGVVcmxzIiwiX2NhbGxlZTIiLCJ0ZXh0ZXNEaXIiLCJvcmlnaW5hbFRleHRlc0RpciIsIl9pdGVyYXRvckFicnVwdENvbXBsZXRpb243IiwiX2RpZEl0ZXJhdG9yRXJyb3I3IiwiX2l0ZXJhdG9yRXJyb3I3IiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsInRleHRlIiwiX3RleHRlJHNlc3Npb24iLCJ0ZXh0ZU5hbWUiLCJ0ZXh0ZURpciIsIm1ldGFkYXRhIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiVEVYVEVfRk9MREVSIiwiVEVYVEVfT1JJR0lOQUxfRk9MREVSIiwiZmluZFNlbmF0VGV4dGVVcmxzIiwic2Vzc2lvbnMiLCJwYXJzZSIsInVybCIsInVybF9leHBvc2VfZGVzX21vdGlmcyIsImhhc0V4cG9zZURlc01vdGlmcyIsIlVSTCIsInVuZGVmaW5lZCIsInVybF94bWwiLCJ1cmxfaHRtbCIsInVybF9wZGYiLCJET0NVTUVOVF9NRVRBREFUQV9GSUxFIiwiX3gyIiwiX2NvbnZlcnRSYXBwb3J0VXJscyIsIl9jYWxsZWUzIiwicmFwcG9ydHNEaXIiLCJfaXRlcmF0b3JBYnJ1cHRDb21wbGV0aW9uOCIsIl9kaWRJdGVyYXRvckVycm9yOCIsIl9pdGVyYXRvckVycm9yOCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJyYXBwb3J0IiwiX3JhcHBvcnQkc2Vzc2lvbiIsInBhcnNlZFJhcHBvcnRVcmwiLCJyYXBwb3J0TmFtZSIsInJhcHBvcnREaXIiLCJyYXBwb3J0SHRtbFVybEJhc2UiLCJyYXBwb3J0SHRtbFVybCIsInJhcHBvcnRQZGZVcmxCYXNlIiwicmFwcG9ydFBkZlVybCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsIlJBUFBPUlRfRk9MREVSIiwiZmluZFNlbmF0UmFwcG9ydFVybHMiLCJmb3JtYXQiLCJkaXIiLCJiYXNlIiwicHJvY2VzcyIsImV4aXQiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NvbnZlcnRfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMsIGdldEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQge1xuICBET0NVTUVOVF9NRVRBREFUQV9GSUxFLFxuICBET1NMRUdfRE9TU0lFUlNfRk9MREVSLFxuICBSQVBQT1JUX0ZPTERFUixcbiAgUmFwcG9ydE1ldGFkYXRhLFxuICBTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSLFxuICBTRU5TX09SR0FOSVNNRVNfRk9MREVSLFxuICBTRU5TX1NFTkFURVVSU19GT0xERVIsXG4gIFRFWFRFX0ZPTERFUixcbiAgVEVYVEVfT1JJR0lOQUxfRk9MREVSLFxuICBUZXh0ZU1ldGFkYXRhLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQge1xuICBmaW5kQWxsQW1lbmRlbWVudHMsXG4gIGZpbmRBbGxDaXJjb25zY3JpcHRpb25zLFxuICBmaW5kQWxsTG9pcyxcbiAgZmluZEFsbE9yZ2FuaXNtZXMsXG4gIGZpbmRBbGxRdWVzdGlvbnMsXG4gIGZpbmRBbGxTZW5zLFxufSBmcm9tIFwiLi4vbW9kZWxcIlxuaW1wb3J0IHsgZmluZFNlbmF0UmFwcG9ydFVybHMsIGZpbmRTZW5hdFRleHRlVXJscyB9IGZyb20gXCIuLi9tb2RlbC9kb3NsZWdcIlxuaW1wb3J0IHsgZm9ybWF0VG9Gb3VyRGlnaXRTZXNzaW9uLCBTSUdORVRfU1RSVUNUVVJFX1JFR0VYUCwgVU5ERUZJTkVEX1NFU1NJT04gfSBmcm9tIFwiLi9kYXRhdXRpbFwiXG5pbXBvcnQgeyBjb21tb25PcHRpb25zIH0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcbmltcG9ydCB7IGVuc3VyZUFuZENsZWFyRGlyIH0gZnJvbSBcIi4vc2hhcmVkL3V0aWxcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIC4uLmNvbW1vbk9wdGlvbnMsXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuY29uc3QgU0VOQVRfVEVYVEVfWE1MX0JBU0VfVVJMID0gXCJodHRwczovL3d3dy5zZW5hdC5mci9ha29tYW50b3NvL1wiXG5jb25zdCBTRU5BVF9URVhURV9CQVNFX1VSTCA9IFwiaHR0cHM6Ly93d3cuc2VuYXQuZnIvbGVnL1wiXG5jb25zdCBTRU5BVF9FWFBPU0VfREVTX01PVElGU19CQVNFX1VSTCA9IFwiaHR0cHM6Ly93d3cuc2VuYXQuZnIvbGVnL2V4cG9zZXMtZGVzLW1vdGlmcy9cIlxuY29uc3QgU0VOQVRfUkFQUE9SVF9CQVNFX1VSTCA9IFwiaHR0cHM6Ly93d3cuc2VuYXQuZnIvcmFwL1wiXG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnREYXRhICgpIHtcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG4gIGFzc2VydChkYXRhRGlyLCBcIk1pc3NpbmcgYXJndW1lbnQ6IGRhdGEgZGlyZWN0b3J5XCIpXG5cbiAgY29uc29sZS50aW1lKFwiZGF0YSB0cmFuc2Zvcm1hdGlvbiB0aW1lXCIpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVsaSkge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0cy5hbWVsaVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYENvbnZlcnRpbmcgZGF0YWJhc2UgJHtkYXRhc2V0LmRhdGFiYXNlfSBkYXRhIGludG8gZmlsZXPigKZgKVxuICAgIH1cblxuICAgIGNvbnN0IGFtZWxpUmVvcmdhbml6ZWRSb290RGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZGF0YWJhc2UpXG4gICAgZW5zdXJlQW5kQ2xlYXJEaXIoYW1lbGlSZW9yZ2FuaXplZFJvb3REaXIpXG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGFtZW5kZW1lbnQgb2YgZmluZEFsbEFtZW5kZW1lbnRzKCkpIHtcbiAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENvbnZlcnRpbmcgJHthbWVuZGVtZW50Lm51bWVyb30gZmlsZeKApmApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlc3Npb24gPSBTdHJpbmcoYW1lbmRlbWVudC5zZXNzaW9uKSB8fCBVTkRFRklORURfU0VTU0lPTlxuICAgICAgY29uc3Qgc2lnbmV0RG9zc2llckxlZ2lzbGF0aWYgPSBhbWVuZGVtZW50LnNpZ25ldF9kb3NzaWVyX2xlZ2lzbGF0aWZcbiAgICAgICAgfHwgYCR7YW1lbmRlbWVudC5uYXR1cmVfdGV4dGV9LSR7YW1lbmRlbWVudC5udW1lcm9fdGV4dGV9YC50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCBhbWVsaVJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGFtZWxpUmVvcmdhbml6ZWRSb290RGlyLCBzZXNzaW9uLCBzaWduZXREb3NzaWVyTGVnaXNsYXRpZilcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoYW1lbGlSZW9yZ2FuaXplZERpcilcbiAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlTmFtZSA9IGAke2FtZW5kZW1lbnQubnVtZXJvfS5qc29uYFxuICAgICAgZnMud3JpdGVKU09OU3luYyhwYXRoLmpvaW4oYW1lbGlSZW9yZ2FuaXplZERpciwgYW1lbmRlbWVudEZpbGVOYW1lKSwgYW1lbmRlbWVudCwgeyBzcGFjZXM6IDIgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc0xlZykge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0cy5kb3NsZWdcblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBDb252ZXJ0aW5nIGRhdGFiYXNlICR7ZGF0YXNldC5kYXRhYmFzZX0gZGF0YSBpbnRvIGZpbGVz4oCmYClcbiAgICB9XG5cbiAgICBjb25zdCBkb3NsZWdSZW9yZ2FuaXplZFJvb3REaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5kYXRhYmFzZSlcbiAgICBjb25zdCBkb3NzaWVyc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRvc2xlZ1Jlb3JnYW5pemVkUm9vdERpciwgRE9TTEVHX0RPU1NJRVJTX0ZPTERFUilcbiAgICBlbnN1cmVBbmRDbGVhckRpcihkb3NsZWdSZW9yZ2FuaXplZFJvb3REaXIpXG4gICAgZW5zdXJlQW5kQ2xlYXJEaXIoZG9zc2llcnNSZW9yZ2FuaXplZERpcilcblxuICAgIGZvciBhd2FpdCAoY29uc3QgbG9pIG9mIGZpbmRBbGxMb2lzKCkpIHtcbiAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYENvbnZlcnRpbmcgJHtsb2kuc2lnbmV0fSBmaWxl4oCmYClcbiAgICAgIH1cblxuICAgICAgbGV0IGxvaVJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRvc3NpZXJzUmVvcmdhbml6ZWREaXIsIFVOREVGSU5FRF9TRVNTSU9OKVxuICAgICAgY29uc3Qgc2lnbmV0UGFydHMgPSBTSUdORVRfU1RSVUNUVVJFX1JFR0VYUC5leGVjKGxvaS5zaWduZXQpPy5ncm91cHNcbiAgICAgIGlmIChzaWduZXRQYXJ0cykge1xuICAgICAgICBjb25zdCB7IHNlc3Npb24gfSA9IHNpZ25ldFBhcnRzXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlc3Npb24gPSBmb3JtYXRUb0ZvdXJEaWdpdFNlc3Npb24oc2Vzc2lvbilcbiAgICAgICAgbG9pUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZG9zc2llcnNSZW9yZ2FuaXplZERpciwgZm9ybWF0dGVkU2Vzc2lvbilcbiAgICAgIH1cbiAgICAgIGZzLmVuc3VyZURpclN5bmMobG9pUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGxvaUZpbGVOYW1lID0gYCR7bG9pLnNpZ25ldH0uanNvbmBcbiAgICAgIGZzLndyaXRlSlNPTlN5bmMocGF0aC5qb2luKGxvaVJlb3JnYW5pemVkRGlyLCBsb2lGaWxlTmFtZSksIGxvaSwgeyBzcGFjZXM6IDIgfSlcbiAgICB9XG5cbiAgICBhd2FpdCBjb252ZXJ0VGV4dGVVcmxzKGRhdGFEaXIpXG4gICAgYXdhaXQgY29udmVydFJhcHBvcnRVcmxzKGRhdGFEaXIpXG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGNvbnN0IGRhdGFzZXQgPSBkYXRhc2V0cy5xdWVzdGlvbnNcblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBDb252ZXJ0aW5nIGRhdGFiYXNlICR7ZGF0YXNldC5kYXRhYmFzZX0gZGF0YSBpbnRvIGZpbGVz4oCmYClcbiAgICB9XG5cbiAgICBjb25zdCBxdWVzdGlvbnNSZW9yZ2FuaXplZFJvb3REaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5kYXRhYmFzZSlcbiAgICBlbnN1cmVBbmRDbGVhckRpcihxdWVzdGlvbnNSZW9yZ2FuaXplZFJvb3REaXIpXG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IHF1ZXN0aW9uIG9mIGZpbmRBbGxRdWVzdGlvbnMoKSkge1xuICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQ29udmVydGluZyAke3F1ZXN0aW9uLnJlZmVyZW5jZX0gZmlsZeKApmApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxlZ2lzbGF0dXJlID0gcXVlc3Rpb24ubGVnaXNsYXR1cmUgPyBxdWVzdGlvbi5sZWdpc2xhdHVyZSA6IDBcbiAgICAgIGNvbnN0IHF1ZXN0aW9uUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4ocXVlc3Rpb25zUmVvcmdhbml6ZWRSb290RGlyLCBTdHJpbmcobGVnaXNsYXR1cmUpKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhxdWVzdGlvblJlb3JnYW5pemVkRGlyKVxuICAgICAgY29uc3QgcXVlc3Rpb25GaWxlTmFtZSA9IGAke3F1ZXN0aW9uLnJlZmVyZW5jZX0uanNvbmBcbiAgICAgIGZzLndyaXRlSlNPTlN5bmMocGF0aC5qb2luKHF1ZXN0aW9uUmVvcmdhbml6ZWREaXIsIHF1ZXN0aW9uRmlsZU5hbWUpLCBxdWVzdGlvbiwgeyBzcGFjZXM6IDIgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNlbnMpIHtcbiAgICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHMuc2Vuc1xuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYENvbnZlcnRpbmcgZGF0YWJhc2UgJHtkYXRhc2V0LmRhdGFiYXNlfSBkYXRhIGludG8gZmlsZXPigKZgKVxuICAgIH1cblxuICAgIGNvbnN0IHNlbnNSZW9yZ2FuaXplZFJvb3REaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5kYXRhYmFzZSlcbiAgICBjb25zdCBzZW5hdGV1cnNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihzZW5zUmVvcmdhbml6ZWRSb290RGlyLCBTRU5TX1NFTkFURVVSU19GT0xERVIpXG4gICAgY29uc3QgY2lyY29uc2NyaXB0aW9uc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKHNlbnNSZW9yZ2FuaXplZFJvb3REaXIsIFNFTlNfQ0lSQ09OU0NSSVBUSU9OU19GT0xERVIpXG4gICAgY29uc3Qgb3JnYW5pc21lc1Jlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKHNlbnNSZW9yZ2FuaXplZFJvb3REaXIsIFNFTlNfT1JHQU5JU01FU19GT0xERVIpXG4gICAgZW5zdXJlQW5kQ2xlYXJEaXIoc2Vuc1Jlb3JnYW5pemVkUm9vdERpcilcbiAgICBlbnN1cmVBbmRDbGVhckRpcihzZW5hdGV1cnNSZW9yZ2FuaXplZERpcilcbiAgICBlbnN1cmVBbmRDbGVhckRpcihjaXJjb25zY3JpcHRpb25zUmVvcmdhbml6ZWREaXIpXG4gICAgZW5zdXJlQW5kQ2xlYXJEaXIob3JnYW5pc21lc1Jlb3JnYW5pemVkRGlyKVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBzZW4gb2YgZmluZEFsbFNlbnMoKSkge1xuICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQ29udmVydGluZyAke3Nlbi5tYXRyaWN1bGV9IGZpbGXigKZgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzZW5GaWxlTmFtZSA9IGAke3Nlbi5tYXRyaWN1bGV9Lmpzb25gXG4gICAgICBmcy53cml0ZUpTT05TeW5jKHBhdGguam9pbihzZW5hdGV1cnNSZW9yZ2FuaXplZERpciwgc2VuRmlsZU5hbWUpLCBzZW4sIHsgc3BhY2VzOiAyIH0pXG4gICAgfVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBjaXJjb25zY3JpcHRpb24gb2YgZmluZEFsbENpcmNvbnNjcmlwdGlvbnMoKSkge1xuICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgQ29udmVydGluZyAke2NpcmNvbnNjcmlwdGlvbi5pZGVudGlmaWFudH0gZmlsZeKApmApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNpcmNvbnNjcmlwdGlvbkZpbGVOYW1lID0gYCR7Y2lyY29uc2NyaXB0aW9uLmlkZW50aWZpYW50fS5qc29uYFxuICAgICAgZnMud3JpdGVKU09OU3luYyhcbiAgICAgICAgcGF0aC5qb2luKGNpcmNvbnNjcmlwdGlvbnNSZW9yZ2FuaXplZERpciwgY2lyY29uc2NyaXB0aW9uRmlsZU5hbWUpLCBjaXJjb25zY3JpcHRpb24sIHsgc3BhY2VzOiAyIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IG9yZ2FuaXNtZSBvZiBmaW5kQWxsT3JnYW5pc21lcygpKSB7XG4gICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBDb252ZXJ0aW5nICR7b3JnYW5pc21lLmNvZGV9IGZpbGXigKZgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmdhbmlzbWVGaWxlTmFtZSA9IGAke29yZ2FuaXNtZS5jb2RlfS5qc29uYFxuICAgICAgZnMud3JpdGVKU09OU3luYyhwYXRoLmpvaW4ob3JnYW5pc21lc1Jlb3JnYW5pemVkRGlyLCBvcmdhbmlzbWVGaWxlTmFtZSksIG9yZ2FuaXNtZSwgeyBzcGFjZXM6IDIgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS50aW1lRW5kKFwiZGF0YSB0cmFuc2Zvcm1hdGlvbiB0aW1lXCIpXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFRleHRlVXJscyAoZGF0YURpcjogc3RyaW5nKSB7XG4gIGNvbnN0IHRleHRlc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBURVhURV9GT0xERVIpXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVzRGlyKVxuXG4gIGNvbnN0IG9yaWdpbmFsVGV4dGVzRGlyID0gcGF0aC5qb2luKHRleHRlc0RpciwgVEVYVEVfT1JJR0lOQUxfRk9MREVSKVxuXG4gIGZvciBhd2FpdCAoY29uc3QgdGV4dGUgb2YgZmluZFNlbmF0VGV4dGVVcmxzKG9wdGlvbnMuc2Vzc2lvbnMpKSB7XG4gICAgY29uc3QgdGV4dGVOYW1lID0gcGF0aC5wYXJzZSh0ZXh0ZS51cmwpLm5hbWVcbiAgICBjb25zdCB0ZXh0ZURpciA9IHBhdGguam9pbihvcmlnaW5hbFRleHRlc0RpciwgYCR7dGV4dGUuc2Vzc2lvbiA/PyBVTkRFRklORURfU0VTU0lPTn1gLCB0ZXh0ZU5hbWUpXG4gICAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZURpcilcblxuICAgIGNvbnN0IG1ldGFkYXRhOiBUZXh0ZU1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogdGV4dGVOYW1lLFxuICAgICAgc2Vzc2lvbjogdGV4dGUuc2Vzc2lvbixcbiAgICAgIHVybF9leHBvc2VfZGVzX21vdGlmczogdGV4dGUuaGFzRXhwb3NlRGVzTW90aWZzID9cbiAgICAgICAgbmV3IFVSTChgJHt0ZXh0ZU5hbWV9LWV4cG9zZS5odG1sYCwgU0VOQVRfRVhQT1NFX0RFU19NT1RJRlNfQkFTRV9VUkwpIDogdW5kZWZpbmVkLFxuICAgICAgdXJsX3htbDogbmV3IFVSTChgJHt0ZXh0ZU5hbWV9LmFrbi54bWxgLCBTRU5BVF9URVhURV9YTUxfQkFTRV9VUkwpLFxuICAgICAgdXJsX2h0bWw6IG5ldyBVUkwoYCR7dGV4dGVOYW1lfS5odG1sYCwgU0VOQVRfVEVYVEVfQkFTRV9VUkwpLFxuICAgICAgdXJsX3BkZjogbmV3IFVSTChgJHt0ZXh0ZU5hbWV9LnBkZmAsIFNFTkFUX1RFWFRFX0JBU0VfVVJMKSxcbiAgICB9XG4gICAgZnMud3JpdGVKU09OU3luYyhwYXRoLmpvaW4odGV4dGVEaXIsIERPQ1VNRU5UX01FVEFEQVRBX0ZJTEUpLCBtZXRhZGF0YSwgeyBzcGFjZXM6IDIgfSlcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0UmFwcG9ydFVybHMgKGRhdGFEaXI6IHN0cmluZykge1xuICBjb25zdCByYXBwb3J0c0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBSQVBQT1JUX0ZPTERFUilcbiAgZnMuZW5zdXJlRGlyU3luYyhyYXBwb3J0c0RpcilcblxuICBmb3IgYXdhaXQgKGNvbnN0IHJhcHBvcnQgb2YgZmluZFNlbmF0UmFwcG9ydFVybHMob3B0aW9ucy5zZXNzaW9ucykpIHtcbiAgICBjb25zdCBwYXJzZWRSYXBwb3J0VXJsID0gcGF0aC5wYXJzZShyYXBwb3J0LnVybClcbiAgICBjb25zdCByYXBwb3J0TmFtZSA9IHBhcnNlZFJhcHBvcnRVcmwubmFtZVxuICAgIGNvbnN0IHJhcHBvcnREaXIgPSBwYXRoLmpvaW4ocmFwcG9ydHNEaXIsIGAke3JhcHBvcnQuc2Vzc2lvbiA/PyBVTkRFRklORURfU0VTU0lPTn1gLCByYXBwb3J0TmFtZSlcbiAgICBmcy5lbnN1cmVEaXJTeW5jKHJhcHBvcnREaXIpXG5cbiAgICBjb25zdCByYXBwb3J0SHRtbFVybEJhc2UgPSBgJHtyYXBwb3J0TmFtZX1fbW9uby5odG1sYFxuICAgIGNvbnN0IHJhcHBvcnRIdG1sVXJsID0gcGF0aC5mb3JtYXQoe1xuICAgICAgZGlyOiBwYXJzZWRSYXBwb3J0VXJsLmRpcixcbiAgICAgIGJhc2U6IHJhcHBvcnRIdG1sVXJsQmFzZSxcbiAgICB9KVxuXG4gICAgY29uc3QgcmFwcG9ydFBkZlVybEJhc2UgPSBgJHtyYXBwb3J0TmFtZX0xLnBkZmBcbiAgICBjb25zdCByYXBwb3J0UGRmVXJsID0gcGF0aC5mb3JtYXQoe1xuICAgICAgZGlyOiBwYXJzZWRSYXBwb3J0VXJsLmRpcixcbiAgICAgIGJhc2U6IHJhcHBvcnRQZGZVcmxCYXNlLFxuICAgIH0pXG5cbiAgICBjb25zdCBtZXRhZGF0YTogUmFwcG9ydE1ldGFkYXRhID0ge1xuICAgICAgbmFtZTogcmFwcG9ydE5hbWUsXG4gICAgICBzZXNzaW9uOiByYXBwb3J0LnNlc3Npb24sXG4gICAgICB1cmxfaHRtbDogbmV3IFVSTChyYXBwb3J0SHRtbFVybCwgU0VOQVRfUkFQUE9SVF9CQVNFX1VSTCksXG4gICAgICB1cmxfcGRmOiBuZXcgVVJMKHJhcHBvcnRQZGZVcmwsIFNFTkFUX1JBUFBPUlRfQkFTRV9VUkwpLFxuICAgIH1cbiAgICBmcy53cml0ZUpTT05TeW5jKHBhdGguam9pbihyYXBwb3J0RGlyLCBET0NVTUVOVF9NRVRBREFUQV9GSUxFKSwgbWV0YWRhdGEsIHsgc3BhY2VzOiAyIH0pXG4gIH1cbn1cblxuY29udmVydERhdGEoKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQVlBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQVFBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLEtBQUEsR0FBQVYsT0FBQTtBQUFpRCxTQUFBRCx1QkFBQVksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBQUEsU0FBQUUsb0JBQUEsa0JBNUJqRCxtS0FBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUgsQ0FBQSxHQUFBSyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBUCxDQUFBLENBQUFRLGNBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLEVBQUFiLENBQUEsRUFBQUQsQ0FBQSxFQUFBSCxDQUFBLEVBQUFPLENBQUEsSUFBQUYsTUFBQSxDQUFBYSxj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QVc7WUFDakJuSyxPQUFPLEVBQUVnSyxPQUFPLENBQUNoSyxPQUFPO1lBQ3hCb0osUUFBUSxFQUFFLElBQUlILEdBQUcsQ0FBQ3FCLGNBQWMsRUFBRXBMLHNCQUFzQixDQUFDO1lBQ3pEbUssT0FBTyxFQUFFLElBQUlKLEdBQUcsQ0FBQ3VCLGFBQWEsRUFBRXRMLHNCQUFzQjtVQUN4RCxDQUFDO1VBQ0RpRyxtQkFBRSxDQUFDRSxhQUFhLENBQUNkLGdCQUFJLENBQUNDLElBQUksQ0FBQzRGLFVBQVUsRUFBRWQsK0JBQXNCLENBQUMsRUFBRWhCLFFBQVEsRUFBRTtZQUFFaEQsTUFBTSxFQUFFO1VBQUUsQ0FBQyxDQUFDO1FBQUE7VUFBQXFFLDBCQUFBO1VBQUFlLFNBQUEsQ0FBQXBQLElBQUE7VUFBQTtRQUFBO1VBQUFvUCxTQUFBLENBQUFwUCxJQUFBO1VBQUE7UUFBQTtVQUFBb1AsU0FBQSxDQUFBOU4sSUFBQTtVQUFBOE4sU0FBQSxDQUFBbkYsRUFBQSxHQUFBbUYsU0FBQTtVQUFBZCxrQkFBQTtVQUFBQyxlQUFBLEdBQUFhLFNBQUEsQ0FBQW5GLEVBQUE7UUFBQTtVQUFBbUYsU0FBQSxDQUFBOU4sSUFBQTtVQUFBOE4sU0FBQSxDQUFBOU4sSUFBQTtVQUFBLE1BQUErTSwwQkFBQSxJQUFBRyxVQUFBO1lBQUFZLFNBQUEsQ0FBQXBQLElBQUE7WUFBQTtVQUFBO1VBQUFvUCxTQUFBLENBQUFwUCxJQUFBO1VBQUEsT0FBQXdPLFVBQUE7UUFBQTtVQUFBWSxTQUFBLENBQUE5TixJQUFBO1VBQUEsS0FBQWdOLGtCQUFBO1lBQUFjLFNBQUEsQ0FBQXBQLElBQUE7WUFBQTtVQUFBO1VBQUEsTUFBQXVPLGVBQUE7UUFBQTtVQUFBLE9BQUFhLFNBQUEsQ0FBQXhOLE1BQUE7UUFBQTtVQUFBLE9BQUF3TixTQUFBLENBQUF4TixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUF3TixTQUFBLENBQUEzTixJQUFBO01BQUE7SUFBQSxHQUFBME0sUUFBQTtFQUFBLENBRTNGO0VBQUEsT0FBQUQsbUJBQUEsQ0FBQWhNLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBRUQ0QixXQUFXLENBQUMsQ0FBQyxDQUNWL0QsSUFBSSxDQUFDO0VBQUEsT0FBTTRQLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUFBLEVBQUMsU0FDdEIsQ0FBQyxVQUFDQyxLQUFLLEVBQUs7RUFDaEJySCxPQUFPLENBQUNPLEdBQUcsQ0FBQzhHLEtBQUssQ0FBQztFQUNsQkYsT0FBTyxDQUFDQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|