@tricoteuses/assemblee 1.10.4 → 2.0.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 +8 -1
- package/lib/amendements-79bwpkvR.js +154 -0
- package/lib/amendements-CV3s5a0M.js +667 -0
- package/lib/cleaners/index.d.ts +9 -9
- package/lib/cleaners.js +564 -0
- package/lib/datasets.d.ts +3 -3
- package/lib/dossiers_legislatifs.d.ts +2 -2
- package/lib/index.d.ts +17 -22
- package/lib/index.js +1542 -314
- package/lib/inserters.d.ts +5 -5
- package/lib/loaders-9mHdTl9L.js +4158 -0
- package/lib/loaders.d.ts +12 -12
- package/lib/loaders.js +29 -1689
- package/lib/organes.d.ts +1 -1
- package/lib/parse-Ccs6wcUg.js +2512 -0
- package/lib/parsers/index.d.ts +2 -3
- package/lib/parsers/plf.d.ts +1 -0
- package/lib/parsers/recherche_amendements.d.ts +2 -2
- package/lib/parsers/textes_lois.d.ts +1 -23
- package/lib/parsers.js +398 -0
- package/lib/raw_types/acteurs_et_organes.d.ts +4 -2
- package/lib/raw_types/debats.d.ts +2 -2
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
- package/lib/schemas/acteurs_et_organes.json +1166 -0
- package/lib/schemas/agendas.json +1745 -0
- package/lib/schemas/amendements.json +2085 -0
- package/lib/schemas/debats.json +842 -0
- package/lib/schemas/dossiers_legislatifs.json +3874 -0
- package/lib/schemas/legislatures.json +17 -0
- package/lib/schemas/questions.json +704 -0
- package/lib/schemas/scrutins.json +701 -0
- package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
- package/lib/types/acteurs_et_organes.d.ts +344 -2
- package/lib/types/agendas.d.ts +236 -10
- package/lib/types/amendements.d.ts +276 -1
- package/lib/types/debats.d.ts +52 -2
- package/lib/types/dossiers_legislatifs.d.ts +403 -9
- package/lib/types/questions.d.ts +99 -2
- package/lib/types/scrutins.d.ts +101 -0
- package/lib/urls.d.ts +2 -2
- package/package.json +33 -95
- package/lib/api.js +0 -52
- package/lib/api.mjs +0 -45
- package/lib/bugs/acteur-00010/plugin.test.js +0 -90
- package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
- package/lib/bugs/acteur-00010.d.ts +0 -7
- package/lib/bugs/acteur-00010.js +0 -116
- package/lib/bugs/acteur-00010.mjs +0 -26
- package/lib/bugs/agenda-00002/plugin.test.js +0 -124
- package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
- package/lib/bugs/agenda-00002.d.ts +0 -15
- package/lib/bugs/agenda-00002.js +0 -406
- package/lib/bugs/agenda-00002.mjs +0 -172
- package/lib/bugs/agenda-00008/plugin.test.js +0 -92
- package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
- package/lib/bugs/agenda-00008.d.ts +0 -7
- package/lib/bugs/agenda-00008.js +0 -123
- package/lib/bugs/agenda-00008.mjs +0 -26
- package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00011/plugin.test.js +0 -263
- package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
- package/lib/bugs/agenda-00011.d.ts +0 -16
- package/lib/bugs/agenda-00011.js +0 -333
- package/lib/bugs/agenda-00011.mjs +0 -125
- package/lib/bugs.d.ts +0 -21
- package/lib/bugs.js +0 -452
- package/lib/bugs.mjs +0 -70
- package/lib/cleaners/actes_legislatifs.js +0 -315
- package/lib/cleaners/actes_legislatifs.mjs +0 -253
- package/lib/cleaners/acteurs.js +0 -265
- package/lib/cleaners/acteurs.mjs +0 -180
- package/lib/cleaners/amendements.js +0 -294
- package/lib/cleaners/amendements.mjs +0 -227
- package/lib/cleaners/debats.js +0 -12
- package/lib/cleaners/debats.mjs +0 -5
- package/lib/cleaners/documents.js +0 -205
- package/lib/cleaners/documents.mjs +0 -133
- package/lib/cleaners/dossiers_legislatifs.js +0 -131
- package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
- package/lib/cleaners/index.js +0 -70
- package/lib/cleaners/index.mjs +0 -10
- package/lib/cleaners/organes.js +0 -65
- package/lib/cleaners/organes.mjs +0 -48
- package/lib/cleaners/questions.js +0 -12
- package/lib/cleaners/questions.mjs +0 -5
- package/lib/cleaners/reunions.js +0 -312
- package/lib/cleaners/reunions.mjs +0 -255
- package/lib/cleaners/scrutins.js +0 -340
- package/lib/cleaners/scrutins.mjs +0 -221
- package/lib/cleaners/xml.js +0 -95
- package/lib/cleaners/xml.mjs +0 -58
- package/lib/datasets.js +0 -837
- package/lib/datasets.mjs +0 -755
- package/lib/dates.js +0 -124
- package/lib/dates.mjs +0 -100
- package/lib/dossiers_legislatifs.js +0 -346
- package/lib/dossiers_legislatifs.mjs +0 -208
- package/lib/file_systems.js +0 -162
- package/lib/file_systems.mjs +0 -62
- package/lib/git.js +0 -223
- package/lib/git.mjs +0 -151
- package/lib/index.mjs +0 -17
- package/lib/inserters.js +0 -521
- package/lib/inserters.mjs +0 -337
- package/lib/loaders.mjs +0 -886
- package/lib/logger.js +0 -35
- package/lib/logger.mjs +0 -26
- package/lib/organes.js +0 -22
- package/lib/organes.mjs +0 -15
- package/lib/parsers/documents.d.ts +0 -62
- package/lib/parsers/documents.js +0 -453
- package/lib/parsers/documents.mjs +0 -370
- package/lib/parsers/index.js +0 -40
- package/lib/parsers/index.mjs +0 -4
- package/lib/parsers/recherche_amendements.js +0 -403
- package/lib/parsers/recherche_amendements.mjs +0 -167
- package/lib/parsers/textes_lois.js +0 -307
- package/lib/parsers/textes_lois.mjs +0 -264
- package/lib/raw_types/acteurs_et_organes.js +0 -1213
- package/lib/raw_types/acteurs_et_organes.mjs +0 -1146
- package/lib/raw_types/agendas.js +0 -777
- package/lib/raw_types/agendas.mjs +0 -724
- package/lib/raw_types/amendements.js +0 -1052
- package/lib/raw_types/amendements.mjs +0 -993
- package/lib/raw_types/debats.js +0 -630
- package/lib/raw_types/debats.mjs +0 -573
- package/lib/raw_types/dossiers_legislatifs.js +0 -1529
- package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
- package/lib/raw_types/questions.js +0 -469
- package/lib/raw_types/questions.mjs +0 -416
- package/lib/raw_types/scrutins.js +0 -651
- package/lib/raw_types/scrutins.mjs +0 -598
- package/lib/schemas/acteur/Acteur.json +0 -56
- package/lib/schemas/acteur/AdresseElectronique.json +0 -52
- package/lib/schemas/acteur/AdressePostale.json +0 -75
- package/lib/schemas/acteur/Civ.json +0 -14
- package/lib/schemas/acteur/Collaborateur.json +0 -29
- package/lib/schemas/acteur/EtatCivil.json +0 -51
- package/lib/schemas/acteur/Ident.json +0 -40
- package/lib/schemas/acteur/Lieu.json +0 -66
- package/lib/schemas/acteur/Mandat.json +0 -192
- package/lib/schemas/acteur/Profession.json +0 -46
- package/lib/schemas/agenda/Agenda.json +0 -318
- package/lib/schemas/agenda/CycleDeVie.json +0 -45
- package/lib/schemas/agenda/PointOdj.json +0 -82
- package/lib/schemas/amendement/Amendement.json +0 -246
- package/lib/schemas/amendement/Diff.json +0 -25
- package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
- package/lib/schemas/amendement/Identifiant.json +0 -62
- package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
- package/lib/schemas/amendement/Representation.json +0 -67
- package/lib/schemas/amendement/Total.json +0 -26
- package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
- package/lib/schemas/converted_from_type/agendas.json +0 -1100
- package/lib/schemas/converted_from_type/amendements.json +0 -3191
- package/lib/schemas/converted_from_type/debats.json +0 -682
- package/lib/schemas/converted_from_type/deputes.json +0 -26
- package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
- package/lib/schemas/converted_from_type/legislatures.json +0 -16
- package/lib/schemas/converted_from_type/questions.json +0 -328
- package/lib/schemas/converted_from_type/scrutins.json +0 -393
- package/lib/schemas/debat/Contenu.json +0 -75
- package/lib/schemas/debat/Debat.json +0 -40
- package/lib/schemas/debat/Metadonnees.json +0 -75
- package/lib/schemas/debat/Orateur.json +0 -60
- package/lib/schemas/debat/Point.json +0 -169
- package/lib/schemas/debat/Sommaire.json +0 -71
- package/lib/schemas/debat/SommaireElement.json +0 -108
- package/lib/schemas/debat/Texte.json +0 -34
- package/lib/schemas/document/CodeLibelle.json +0 -25
- package/lib/schemas/document/Document.json +0 -385
- package/lib/schemas/document/Indexation.json +0 -38
- package/lib/schemas/dossier/ActeLegislatif.json +0 -211
- package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
- package/lib/schemas/dossier/Agenda.json +0 -23
- package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
- package/lib/schemas/dossier/Decision.json +0 -25
- package/lib/schemas/dossier/Dossier.json +0 -124
- package/lib/schemas/dossier/EtudeImpact.json +0 -29
- package/lib/schemas/dossier/EtudePlf.json +0 -105
- package/lib/schemas/dossier/Europe.json +0 -42
- package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
- package/lib/schemas/dossier/InfoJO.json +0 -23
- package/lib/schemas/dossier/Initiateur.json +0 -36
- package/lib/schemas/dossier/Motion.json +0 -27
- package/lib/schemas/dossier/Promulgation.json +0 -62
- package/lib/schemas/dossier/Rapporteur.json +0 -36
- package/lib/schemas/dossier/Texte.json +0 -47
- package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
- package/lib/schemas/organe/Organe.json +0 -136
- package/lib/schemas/organe/ViMoDe.json +0 -28
- package/lib/schemas/question/Auteur.json +0 -58
- package/lib/schemas/question/Cloture.json +0 -28
- package/lib/schemas/question/InfoJO.json +0 -40
- package/lib/schemas/question/MinAttribElement.json +0 -30
- package/lib/schemas/question/Question.json +0 -172
- package/lib/schemas/question/Renouvellement.json +0 -17
- package/lib/schemas/question/Signalement.json +0 -21
- package/lib/schemas/question/Texte.json +0 -24
- package/lib/schemas/scrutin/DecompteVoix.json +0 -35
- package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
- package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
- package/lib/schemas/scrutin/OrganeVotant.json +0 -88
- package/lib/schemas/scrutin/Scrutin.json +0 -187
- package/lib/schemas/scrutin/Votant.json +0 -37
- package/lib/scripts/bugs_helper.d.ts +0 -13
- package/lib/scripts/bugs_helper.js +0 -595
- package/lib/scripts/bugs_helper.mjs +0 -251
- package/lib/scripts/clean_reorganized_data.js +0 -610
- package/lib/scripts/clean_reorganized_data.mjs +0 -273
- package/lib/scripts/diff_amendements.js +0 -249
- package/lib/scripts/diff_amendements.mjs +0 -202
- package/lib/scripts/document_dossiers_legislatifs.js +0 -655
- package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
- package/lib/scripts/get_today_reunions.js +0 -37
- package/lib/scripts/get_today_reunions.mjs +0 -31
- package/lib/scripts/merge_scrutins.js +0 -97
- package/lib/scripts/merge_scrutins.mjs +0 -47
- package/lib/scripts/parse_textes_lois.d.ts +0 -1
- package/lib/scripts/parse_textes_lois.js +0 -171
- package/lib/scripts/parse_textes_lois.mjs +0 -140
- package/lib/scripts/process_open_dataset.js +0 -301
- package/lib/scripts/process_open_dataset.mjs +0 -134
- package/lib/scripts/raw_types_from_amendements.js +0 -135
- package/lib/scripts/raw_types_from_amendements.mjs +0 -134
- package/lib/scripts/reorganize_data.js +0 -805
- package/lib/scripts/reorganize_data.mjs +0 -517
- package/lib/scripts/retrieve_deputes_photos.js +0 -310
- package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
- package/lib/scripts/retrieve_documents.js +0 -547
- package/lib/scripts/retrieve_documents.mjs +0 -242
- package/lib/scripts/retrieve_open_data.js +0 -107
- package/lib/scripts/retrieve_open_data.mjs +0 -26
- package/lib/scripts/retrieve_pending_amendments.js +0 -206
- package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
- package/lib/scripts/retrieve_senateurs_photos.js +0 -234
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
- package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois.js +0 -240
- package/lib/scripts/retrieve_textes_lois.mjs +0 -85
- package/lib/scripts/shared/cli_helpers.js +0 -89
- package/lib/scripts/shared/cli_helpers.mjs +0 -81
- package/lib/scripts/test_iter_load.js +0 -155
- package/lib/scripts/test_iter_load.mjs +0 -72
- package/lib/scripts/test_load.js +0 -26
- package/lib/scripts/test_load.mjs +0 -16
- package/lib/scripts/test_load_big_files.js +0 -26
- package/lib/scripts/test_load_big_files.mjs +0 -16
- package/lib/scripts/validate_json.js +0 -353
- package/lib/scripts/validate_json.mjs +0 -184
- package/lib/shared_types/codes_actes.js +0 -231
- package/lib/shared_types/codes_actes.mjs +0 -224
- package/lib/strings.js +0 -16
- package/lib/strings.mjs +0 -7
- package/lib/types/acteurs_et_organes.js +0 -963
- package/lib/types/acteurs_et_organes.mjs +0 -904
- package/lib/types/agendas.js +0 -628
- package/lib/types/agendas.mjs +0 -575
- package/lib/types/amendements.js +0 -899
- package/lib/types/amendements.mjs +0 -842
- package/lib/types/debats.js +0 -619
- package/lib/types/debats.mjs +0 -562
- package/lib/types/dossiers_legislatifs.js +0 -1188
- package/lib/types/dossiers_legislatifs.mjs +0 -1130
- package/lib/types/legislatures.js +0 -17
- package/lib/types/legislatures.mjs +0 -10
- package/lib/types/questions.js +0 -454
- package/lib/types/questions.mjs +0 -401
- package/lib/types/scrutins.js +0 -556
- package/lib/types/scrutins.mjs +0 -503
- package/lib/urls.js +0 -325
- package/lib/urls.mjs +0 -258
- /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
- /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
- /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import commandLineArgs from "command-line-args";
|
|
2
|
-
import fs from "fs-extra";
|
|
3
|
-
import path from "path";
|
|
4
|
-
import { detailedDiff } from "deep-object-diff";
|
|
5
|
-
import { datasets, DatasetStructure } from "../datasets.mjs";
|
|
6
|
-
import { walkDir } from "../file_systems.mjs";
|
|
7
|
-
import { silentOption, verboseOption, dataDirDefaultOption } from "./shared/cli_helpers.mjs";
|
|
8
|
-
const diffedAmendments = [];
|
|
9
|
-
const newAmendments = [];
|
|
10
|
-
const optionsDefinitions = [silentOption, verboseOption, dataDirDefaultOption, {
|
|
11
|
-
alias: "m",
|
|
12
|
-
help: "Diff modes.",
|
|
13
|
-
name: "mode",
|
|
14
|
-
defaultValue: "merged",
|
|
15
|
-
type: String
|
|
16
|
-
}, {
|
|
17
|
-
alias: "p",
|
|
18
|
-
help: "Directory containing the previous dump of amendments",
|
|
19
|
-
name: "previous",
|
|
20
|
-
type: String
|
|
21
|
-
}, {
|
|
22
|
-
alias: "o",
|
|
23
|
-
help: "Output directory for diff files",
|
|
24
|
-
name: "output",
|
|
25
|
-
defaultValue: "./diff_outputs/",
|
|
26
|
-
type: String
|
|
27
|
-
}];
|
|
28
|
-
const options = commandLineArgs(optionsDefinitions);
|
|
29
|
-
function diffAmendements(dataDir) {
|
|
30
|
-
if (!options.previous) {
|
|
31
|
-
console.error("No previous data folder specified. You must provide one with the -p or --previous option. Exiting...");
|
|
32
|
-
process.exit();
|
|
33
|
-
}
|
|
34
|
-
if (!fs.existsSync(options.output)) {
|
|
35
|
-
console.error("The output dir does not exists. You must provide an existing directory. Default directory is ./diff_outputs/");
|
|
36
|
-
process.exit();
|
|
37
|
-
}
|
|
38
|
-
for (const dataset of datasets.amendements) {
|
|
39
|
-
switch (dataset.structure) {
|
|
40
|
-
case DatasetStructure.SegmentedFiles:
|
|
41
|
-
{
|
|
42
|
-
const originalJsonDir = path.join(dataDir, dataset.filename);
|
|
43
|
-
if (!options.silent) {
|
|
44
|
-
console.log(`Diffing ${originalJsonDir} folder...`);
|
|
45
|
-
}
|
|
46
|
-
for (const amendementSplitPath of walkDir(originalJsonDir)) {
|
|
47
|
-
const newFilePath = originalJsonDir + "/" + amendementSplitPath.join("/");
|
|
48
|
-
const newFile = JSON.parse(fs.readFileSync(newFilePath).toLocaleString());
|
|
49
|
-
const oldFilePath = options.previous + dataset.filename + "/" + amendementSplitPath.join("/");
|
|
50
|
-
const oldFileExists = fs.existsSync(oldFilePath);
|
|
51
|
-
if (!oldFileExists) {
|
|
52
|
-
// If file found does not exist in the previous dump
|
|
53
|
-
if (!options.silent) {
|
|
54
|
-
console.log("File did not exists previously. Guessing it's a new amendment. Adding to the diff list for new objects");
|
|
55
|
-
}
|
|
56
|
-
addToQueueForNewAmendments(newFile, amendementSplitPath);
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// File already existed in previous dump
|
|
61
|
-
let oldFile = JSON.parse("{}");
|
|
62
|
-
try {
|
|
63
|
-
// Gather data of the file and retranscript as a Json object
|
|
64
|
-
oldFile = JSON.parse(fs.readFileSync(oldFilePath).toLocaleString());
|
|
65
|
-
} catch (e) {
|
|
66
|
-
// Skip the process to the next iteration in case of corrupt JSON data
|
|
67
|
-
continue;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Generate the diff beetween the two JSON objects (old & new dump)
|
|
71
|
-
const diff = detailedDiff(oldFile, newFile);
|
|
72
|
-
|
|
73
|
-
// If no changes beetween the two dumps
|
|
74
|
-
if (Object.keys(diff.added).length === 0 && Object.keys(diff.updated).length === 0 && Object.keys(diff.deleted).length === 0) {
|
|
75
|
-
// Skip to next iteration as there is no need to generate a file
|
|
76
|
-
continue;
|
|
77
|
-
} else {
|
|
78
|
-
if (!options.silent) {
|
|
79
|
-
console.log("Changes found !");
|
|
80
|
-
}
|
|
81
|
-
addToQueueForDiffedAmendments(diff, amendementSplitPath);
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (!options.silent) {
|
|
88
|
-
console.log("Generating output(s)");
|
|
89
|
-
}
|
|
90
|
-
generateDiffFiles();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* General process for output of diffs.
|
|
96
|
-
* The script handles two different modes :
|
|
97
|
-
* - merged : Will output a single file for new amendements and a single file
|
|
98
|
-
* for updated amendements
|
|
99
|
-
* - splitted : Will output a single file for each amendments, either its new or updated.
|
|
100
|
-
*
|
|
101
|
-
*/
|
|
102
|
-
function generateDiffFiles() {
|
|
103
|
-
// Handles merged mode
|
|
104
|
-
if (options.mode === "merged") {
|
|
105
|
-
if (!options.silent) {
|
|
106
|
-
console.log("Generating merged files");
|
|
107
|
-
}
|
|
108
|
-
if (diffedAmendments.length > 0) {
|
|
109
|
-
if (!options.silent) {
|
|
110
|
-
console.log("Generating diffed amendments files");
|
|
111
|
-
}
|
|
112
|
-
fs.writeFileSync(options.output + "amendements_XV_diffed.json", JSON.stringify(diffedAmendments), {
|
|
113
|
-
encoding: "utf8",
|
|
114
|
-
flag: "w"
|
|
115
|
-
});
|
|
116
|
-
} else {
|
|
117
|
-
if (!options.silent) {
|
|
118
|
-
console.log("No diff in the already existing amendments");
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (newAmendments.length > 0) {
|
|
122
|
-
if (!options.silent) {
|
|
123
|
-
console.log("Generating new amendments file");
|
|
124
|
-
}
|
|
125
|
-
fs.writeFileSync(options.output + "amendements_XV_new.json", JSON.stringify(newAmendments), {
|
|
126
|
-
encoding: "utf8",
|
|
127
|
-
flag: "w"
|
|
128
|
-
});
|
|
129
|
-
} else {
|
|
130
|
-
if (!options.silent) {
|
|
131
|
-
console.log("No new amendement. Skipping file generation");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
} else if (options.mode === "splitted") {
|
|
135
|
-
// Handles splitted mode
|
|
136
|
-
if (!options.silent) {
|
|
137
|
-
console.log("Generating separated files");
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Process the copy action of the new and diffed amendments
|
|
142
|
-
*/
|
|
143
|
-
|
|
144
|
-
diffedAmendments.forEach(diffedAmendment => {
|
|
145
|
-
generateSingleDiffedAmendment(diffedAmendment);
|
|
146
|
-
});
|
|
147
|
-
newAmendments.forEach(newAmendment => {
|
|
148
|
-
generateSingleNewAmendment(newAmendment);
|
|
149
|
-
});
|
|
150
|
-
} else {
|
|
151
|
-
console.error("Unknown output mode. Aborting...");
|
|
152
|
-
process.exit();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Pushes an amendment to the queue that will be processed to copy new amendments files
|
|
157
|
-
function addToQueueForNewAmendments(file, path) {
|
|
158
|
-
const amendment = {
|
|
159
|
-
path: path,
|
|
160
|
-
data: file
|
|
161
|
-
};
|
|
162
|
-
newAmendments.push(amendment);
|
|
163
|
-
}
|
|
164
|
-
// Pushes an amendment to the queue that will be processed to copy updated amendments files
|
|
165
|
-
function addToQueueForDiffedAmendments(diffedData, path) {
|
|
166
|
-
const amendment = {
|
|
167
|
-
path: path,
|
|
168
|
-
data: diffedData
|
|
169
|
-
};
|
|
170
|
-
diffedAmendments.push(amendment);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// generates a file with a copy of the new amendement
|
|
174
|
-
function generateSingleNewAmendment(newAmendment) {
|
|
175
|
-
newAmendment.path.shift();
|
|
176
|
-
const shortDir = [...newAmendment.path];
|
|
177
|
-
shortDir.pop();
|
|
178
|
-
console.log(options.output + shortDir.join("/"));
|
|
179
|
-
fs.mkdirSync(options.output + shortDir.join("/"), {
|
|
180
|
-
recursive: true
|
|
181
|
-
});
|
|
182
|
-
fs.writeFileSync(options.output + newAmendment.path.join("/").replace(/(\.json)/, ".new$1"), JSON.stringify(newAmendment.data), {
|
|
183
|
-
encoding: "utf8",
|
|
184
|
-
flag: "w"
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// generates a file with a copy of the modified data of the previously existing amendment;
|
|
189
|
-
function generateSingleDiffedAmendment(diffedAmendment) {
|
|
190
|
-
diffedAmendment.path.shift();
|
|
191
|
-
const shortDir = [...diffedAmendment.path];
|
|
192
|
-
shortDir.pop();
|
|
193
|
-
fs.mkdirSync(options.output + shortDir.join("/"), {
|
|
194
|
-
recursive: true
|
|
195
|
-
});
|
|
196
|
-
fs.writeFileSync(options.output + diffedAmendment.path.join("/").replace(/(\.json)/, ".diff$1"), JSON.stringify(diffedAmendment.data), {
|
|
197
|
-
encoding: "utf8",
|
|
198
|
-
flag: "w"
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
diffAmendements(options.dataDir);
|
|
202
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwiZGVmYXVsdFZhbHVlIiwidHlwZSIsIlN0cmluZyIsIm9wdGlvbnMiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImUiLCJkaWZmIiwiT2JqZWN0Iiwia2V5cyIsImFkZGVkIiwibGVuZ3RoIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBkZXRhaWxlZERpZmYgfSBmcm9tIFwiZGVlcC1vYmplY3QtZGlmZlwiXG5pbXBvcnQgeyBkYXRhc2V0cywgRGF0YXNldFN0cnVjdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICB7XG4gICAgYWxpYXM6IFwibVwiLFxuICAgIGhlbHA6IFwiRGlmZiBtb2Rlcy5cIixcbiAgICBuYW1lOiBcIm1vZGVcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwibWVyZ2VkXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwicFwiLFxuICAgIGhlbHA6IFwiRGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByZXZpb3VzIGR1bXAgb2YgYW1lbmRtZW50c1wiLFxuICAgIG5hbWU6IFwicHJldmlvdXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJvXCIsXG4gICAgaGVscDogXCJPdXRwdXQgZGlyZWN0b3J5IGZvciBkaWZmIGZpbGVzXCIsXG4gICAgbmFtZTogXCJvdXRwdXRcIixcbiAgICBkZWZhdWx0VmFsdWU6IFwiLi9kaWZmX291dHB1dHMvXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmZ1bmN0aW9uIGRpZmZBbWVuZGVtZW50cyhkYXRhRGlyOiBzdHJpbmcpIHtcbiAgaWYgKCFvcHRpb25zLnByZXZpb3VzKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiTm8gcHJldmlvdXMgZGF0YSBmb2xkZXIgc3BlY2lmaWVkLiBZb3UgbXVzdCBwcm92aWRlIG9uZSB3aXRoIHRoZSAtcCBvciAtLXByZXZpb3VzIG9wdGlvbi4gRXhpdGluZy4uLlwiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMub3V0cHV0KSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIlRoZSBvdXRwdXQgZGlyIGRvZXMgbm90IGV4aXN0cy4gWW91IG11c3QgcHJvdmlkZSBhbiBleGlzdGluZyBkaXJlY3RvcnkuIERlZmF1bHQgZGlyZWN0b3J5IGlzIC4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIClcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG5cbiAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXQuZmlsZW5hbWUpXG4gICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgRGlmZmluZyAke29yaWdpbmFsSnNvbkRpcn0gZm9sZGVyLi4uYClcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKG9yaWdpbmFsSnNvbkRpcikpIHtcbiAgICAgICAgICBjb25zdCBuZXdGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcmlnaW5hbEpzb25EaXIgKyBcIi9cIiArIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBuZXdGaWxlID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGZzLnJlYWRGaWxlU3luYyhuZXdGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBvbGRGaWxlUGF0aCA9XG4gICAgICAgICAgICBvcHRpb25zLnByZXZpb3VzICtcbiAgICAgICAgICAgIGRhdGFzZXQuZmlsZW5hbWUgK1xuICAgICAgICAgICAgXCIvXCIgK1xuICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVFeGlzdHMgPSBmcy5leGlzdHNTeW5jKG9sZEZpbGVQYXRoKVxuICAgICAgICAgIGlmICghb2xkRmlsZUV4aXN0cykge1xuICAgICAgICAgICAgLy8gSWYgZmlsZSBmb3VuZCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcHJldmlvdXMgZHVtcFxuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBcIkZpbGUgZGlkIG5vdCBleGlzdHMgcHJldmlvdXNseS4gR3Vlc3NpbmcgaXQncyBhIG5ldyBhbWVuZG1lbnQuIEFkZGluZyB0byB0aGUgZGlmZiBsaXN0IGZvciBuZXcgb2JqZWN0c1wiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhuZXdGaWxlLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaWxlIGFscmVhZHkgZXhpc3RlZCBpbiBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgbGV0IG9sZEZpbGU6IEpTT04gPSBKU09OLnBhcnNlKFwie31cIilcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gR2F0aGVyIGRhdGEgb2YgdGhlIGZpbGUgYW5kIHJldHJhbnNjcmlwdCBhcyBhIEpzb24gb2JqZWN0XG4gICAgICAgICAgICBvbGRGaWxlID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob2xkRmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU2tpcCB0aGUgcHJvY2VzcyB0byB0aGUgbmV4dCBpdGVyYXRpb24gaW4gY2FzZSBvZiBjb3JydXB0IEpTT04gZGF0YVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgZGlmZiBiZWV0d2VlbiB0aGUgdHdvIEpTT04gb2JqZWN0cyAob2xkICYgbmV3IGR1bXApXG4gICAgICAgICAgY29uc3QgZGlmZjogYW55ID0gZGV0YWlsZWREaWZmKG9sZEZpbGUsIG5ld0ZpbGUpXG5cbiAgICAgICAgICAvLyBJZiBubyBjaGFuZ2VzIGJlZXR3ZWVuIHRoZSB0d28gZHVtcHNcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmFkZGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYudXBkYXRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLmRlbGV0ZWQpLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gU2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBhcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgZmlsZVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNoYW5nZXMgZm91bmQgIVwiKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZiwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBvdXRwdXQocylcIilcbiAgICB9XG5cbiAgICBnZW5lcmF0ZURpZmZGaWxlcygpXG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmFsIHByb2Nlc3MgZm9yIG91dHB1dCBvZiBkaWZmcy5cbiAqIFRoZSBzY3JpcHQgaGFuZGxlcyB0d28gZGlmZmVyZW50IG1vZGVzIDpcbiAqIC0gbWVyZ2VkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgbmV3IGFtZW5kZW1lbnRzIGFuZCBhIHNpbmdsZSBmaWxlXG4gKiAgICAgICAgICAgIGZvciB1cGRhdGVkIGFtZW5kZW1lbnRzXG4gKiAtIHNwbGl0dGVkIDogV2lsbCBvdXRwdXQgYSBzaW5nbGUgZmlsZSBmb3IgZWFjaCBhbWVuZG1lbnRzLCBlaXRoZXIgaXRzIG5ldyBvciB1cGRhdGVkLlxuICpcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVEaWZmRmlsZXMoKSB7XG4gIC8vIEhhbmRsZXMgbWVyZ2VkIG1vZGVcbiAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtZXJnZWRcIikge1xuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBtZXJnZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICBpZiAoZGlmZmVkQW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBkaWZmZWQgYW1lbmRtZW50cyBmaWxlc1wiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX2RpZmZlZC5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIGRpZmYgaW4gdGhlIGFscmVhZHkgZXhpc3RpbmcgYW1lbmRtZW50c1wiKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG5ldyBhbWVuZG1lbnRzIGZpbGVcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9uZXcuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBuZXcgYW1lbmRlbWVudC4gU2tpcHBpbmcgZmlsZSBnZW5lcmF0aW9uXCIpXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJzcGxpdHRlZFwiKSB7XG4gICAgLy8gSGFuZGxlcyBzcGxpdHRlZCBtb2RlXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIHNlcGFyYXRlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGNvcHkgYWN0aW9uIG9mIHRoZSBuZXcgYW5kIGRpZmZlZCBhbWVuZG1lbnRzXG4gICAgICovXG5cbiAgICBkaWZmZWRBbWVuZG1lbnRzLmZvckVhY2goKGRpZmZlZEFtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQpXG4gICAgfSlcblxuICAgIG5ld0FtZW5kbWVudHMuZm9yRWFjaCgobmV3QW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJVbmtub3duIG91dHB1dCBtb2RlLiBBYm9ydGluZy4uLlwiKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cbn1cblxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IG5ldyBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yTmV3QW1lbmRtZW50cyhmaWxlOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGZpbGUsXG4gIH1cbiAgbmV3QW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSB1cGRhdGVkIGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmZlZERhdGE6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZGlmZmVkRGF0YSxcbiAgfVxuICBkaWZmZWRBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBuZXcgYW1lbmRlbWVudFxuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIG5ld0FtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5uZXdBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgY29uc29sZS5sb2cob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSlcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgKyBuZXdBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5uZXckMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShuZXdBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbW9kaWZpZWQgZGF0YSBvZiB0aGUgcHJldmlvdXNseSBleGlzdGluZyBhbWVuZG1lbnQ7XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudChkaWZmZWRBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgZGlmZmVkQW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLmRpZmZlZEFtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcblxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICtcbiAgICAgIGRpZmZlZEFtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLmRpZmYkMVwiKSxcbiAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnQuZGF0YSksXG4gICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gIClcbn1cblxuZGlmZkFtZW5kZW1lbnRzKG9wdGlvbnMuZGF0YURpcilcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUN2QixTQUFTQyxZQUFZLFFBQVEsa0JBQWtCO0FBQUEsU0FDdENDLFFBQVEsRUFBRUMsZ0JBQWdCO0FBQUEsU0FDMUJDLE9BQU87QUFB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QUFDYyxHQUFHLENBQUNsQixPQUFPLENBQUNTLE1BQU0sR0FBRytDLFFBQVEsQ0FBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNoRGpDLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBQ0Y3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FBR3VDLFlBQVksQ0FBQ2pFLElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQzFFdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDTSxZQUFZLENBQUNJLElBQUksQ0FBQyxFQUNqQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7O0FBRUE7QUFDQSxTQUFTRyw2QkFBNkJBLENBQUNELGVBR3RDLEVBQUU7RUFDREEsZUFBZSxDQUFDL0QsSUFBSSxDQUFDd0UsS0FBSyxDQUFDLENBQUM7RUFFNUIsTUFBTUMsUUFBb0IsR0FBRyxDQUFDLEdBQUdWLGVBQWUsQ0FBQy9ELElBQUksQ0FBQztFQUN0RHlFLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUM7RUFDZDNFLEVBQUUsQ0FBQzRFLFNBQVMsQ0FBQzFELE9BQU8sQ0FBQ1MsTUFBTSxHQUFHK0MsUUFBUSxDQUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2hENEMsU0FBUyxFQUFFO0VBQ2IsQ0FBQyxDQUFDO0VBRUY3RSxFQUFFLENBQUMyRCxhQUFhLENBQ2R6QyxPQUFPLENBQUNTLE1BQU0sR0FDWnFDLGVBQWUsQ0FBQy9ELElBQUksQ0FBQ2dDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzZDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQy9EdEMsSUFBSSxDQUFDb0IsU0FBUyxDQUFDSSxlQUFlLENBQUNNLElBQUksQ0FBQyxFQUNwQztJQUFFVCxRQUFRLEVBQUUsTUFBTTtJQUFFQyxJQUFJLEVBQUU7RUFBSSxDQUNoQyxDQUFDO0FBQ0g7QUFFQTNDLGVBQWUsQ0FBQ0QsT0FBTyxDQUFDRSxPQUFPLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|