@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.
Files changed (275) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-79bwpkvR.js +154 -0
  3. package/lib/amendements-CV3s5a0M.js +667 -0
  4. package/lib/cleaners/index.d.ts +9 -9
  5. package/lib/cleaners.js +564 -0
  6. package/lib/datasets.d.ts +3 -3
  7. package/lib/dossiers_legislatifs.d.ts +2 -2
  8. package/lib/index.d.ts +17 -22
  9. package/lib/index.js +1542 -314
  10. package/lib/inserters.d.ts +5 -5
  11. package/lib/loaders-9mHdTl9L.js +4158 -0
  12. package/lib/loaders.d.ts +12 -12
  13. package/lib/loaders.js +29 -1689
  14. package/lib/organes.d.ts +1 -1
  15. package/lib/parse-Ccs6wcUg.js +2512 -0
  16. package/lib/parsers/index.d.ts +2 -3
  17. package/lib/parsers/plf.d.ts +1 -0
  18. package/lib/parsers/recherche_amendements.d.ts +2 -2
  19. package/lib/parsers/textes_lois.d.ts +1 -23
  20. package/lib/parsers.js +398 -0
  21. package/lib/raw_types/acteurs_et_organes.d.ts +4 -2
  22. package/lib/raw_types/debats.d.ts +2 -2
  23. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
  24. package/lib/schemas/acteurs_et_organes.json +1166 -0
  25. package/lib/schemas/agendas.json +1745 -0
  26. package/lib/schemas/amendements.json +2085 -0
  27. package/lib/schemas/debats.json +842 -0
  28. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  29. package/lib/schemas/legislatures.json +17 -0
  30. package/lib/schemas/questions.json +704 -0
  31. package/lib/schemas/scrutins.json +701 -0
  32. package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
  33. package/lib/types/acteurs_et_organes.d.ts +344 -2
  34. package/lib/types/agendas.d.ts +236 -10
  35. package/lib/types/amendements.d.ts +276 -1
  36. package/lib/types/debats.d.ts +52 -2
  37. package/lib/types/dossiers_legislatifs.d.ts +403 -9
  38. package/lib/types/questions.d.ts +99 -2
  39. package/lib/types/scrutins.d.ts +101 -0
  40. package/lib/urls.d.ts +2 -2
  41. package/package.json +33 -95
  42. package/lib/api.js +0 -52
  43. package/lib/api.mjs +0 -45
  44. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  45. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  46. package/lib/bugs/acteur-00010.d.ts +0 -7
  47. package/lib/bugs/acteur-00010.js +0 -116
  48. package/lib/bugs/acteur-00010.mjs +0 -26
  49. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  50. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  51. package/lib/bugs/agenda-00002.d.ts +0 -15
  52. package/lib/bugs/agenda-00002.js +0 -406
  53. package/lib/bugs/agenda-00002.mjs +0 -172
  54. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  55. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  56. package/lib/bugs/agenda-00008.d.ts +0 -7
  57. package/lib/bugs/agenda-00008.js +0 -123
  58. package/lib/bugs/agenda-00008.mjs +0 -26
  59. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  60. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  61. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  62. package/lib/bugs/agenda-00011.d.ts +0 -16
  63. package/lib/bugs/agenda-00011.js +0 -333
  64. package/lib/bugs/agenda-00011.mjs +0 -125
  65. package/lib/bugs.d.ts +0 -21
  66. package/lib/bugs.js +0 -452
  67. package/lib/bugs.mjs +0 -70
  68. package/lib/cleaners/actes_legislatifs.js +0 -315
  69. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  70. package/lib/cleaners/acteurs.js +0 -265
  71. package/lib/cleaners/acteurs.mjs +0 -180
  72. package/lib/cleaners/amendements.js +0 -294
  73. package/lib/cleaners/amendements.mjs +0 -227
  74. package/lib/cleaners/debats.js +0 -12
  75. package/lib/cleaners/debats.mjs +0 -5
  76. package/lib/cleaners/documents.js +0 -205
  77. package/lib/cleaners/documents.mjs +0 -133
  78. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  79. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  80. package/lib/cleaners/index.js +0 -70
  81. package/lib/cleaners/index.mjs +0 -10
  82. package/lib/cleaners/organes.js +0 -65
  83. package/lib/cleaners/organes.mjs +0 -48
  84. package/lib/cleaners/questions.js +0 -12
  85. package/lib/cleaners/questions.mjs +0 -5
  86. package/lib/cleaners/reunions.js +0 -312
  87. package/lib/cleaners/reunions.mjs +0 -255
  88. package/lib/cleaners/scrutins.js +0 -340
  89. package/lib/cleaners/scrutins.mjs +0 -221
  90. package/lib/cleaners/xml.js +0 -95
  91. package/lib/cleaners/xml.mjs +0 -58
  92. package/lib/datasets.js +0 -837
  93. package/lib/datasets.mjs +0 -755
  94. package/lib/dates.js +0 -124
  95. package/lib/dates.mjs +0 -100
  96. package/lib/dossiers_legislatifs.js +0 -346
  97. package/lib/dossiers_legislatifs.mjs +0 -208
  98. package/lib/file_systems.js +0 -162
  99. package/lib/file_systems.mjs +0 -62
  100. package/lib/git.js +0 -223
  101. package/lib/git.mjs +0 -151
  102. package/lib/index.mjs +0 -17
  103. package/lib/inserters.js +0 -521
  104. package/lib/inserters.mjs +0 -337
  105. package/lib/loaders.mjs +0 -886
  106. package/lib/logger.js +0 -35
  107. package/lib/logger.mjs +0 -26
  108. package/lib/organes.js +0 -22
  109. package/lib/organes.mjs +0 -15
  110. package/lib/parsers/documents.d.ts +0 -62
  111. package/lib/parsers/documents.js +0 -453
  112. package/lib/parsers/documents.mjs +0 -370
  113. package/lib/parsers/index.js +0 -40
  114. package/lib/parsers/index.mjs +0 -4
  115. package/lib/parsers/recherche_amendements.js +0 -403
  116. package/lib/parsers/recherche_amendements.mjs +0 -167
  117. package/lib/parsers/textes_lois.js +0 -307
  118. package/lib/parsers/textes_lois.mjs +0 -264
  119. package/lib/raw_types/acteurs_et_organes.js +0 -1213
  120. package/lib/raw_types/acteurs_et_organes.mjs +0 -1146
  121. package/lib/raw_types/agendas.js +0 -777
  122. package/lib/raw_types/agendas.mjs +0 -724
  123. package/lib/raw_types/amendements.js +0 -1052
  124. package/lib/raw_types/amendements.mjs +0 -993
  125. package/lib/raw_types/debats.js +0 -630
  126. package/lib/raw_types/debats.mjs +0 -573
  127. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  128. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  129. package/lib/raw_types/questions.js +0 -469
  130. package/lib/raw_types/questions.mjs +0 -416
  131. package/lib/raw_types/scrutins.js +0 -651
  132. package/lib/raw_types/scrutins.mjs +0 -598
  133. package/lib/schemas/acteur/Acteur.json +0 -56
  134. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  135. package/lib/schemas/acteur/AdressePostale.json +0 -75
  136. package/lib/schemas/acteur/Civ.json +0 -14
  137. package/lib/schemas/acteur/Collaborateur.json +0 -29
  138. package/lib/schemas/acteur/EtatCivil.json +0 -51
  139. package/lib/schemas/acteur/Ident.json +0 -40
  140. package/lib/schemas/acteur/Lieu.json +0 -66
  141. package/lib/schemas/acteur/Mandat.json +0 -192
  142. package/lib/schemas/acteur/Profession.json +0 -46
  143. package/lib/schemas/agenda/Agenda.json +0 -318
  144. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  145. package/lib/schemas/agenda/PointOdj.json +0 -82
  146. package/lib/schemas/amendement/Amendement.json +0 -246
  147. package/lib/schemas/amendement/Diff.json +0 -25
  148. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  149. package/lib/schemas/amendement/Identifiant.json +0 -62
  150. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  151. package/lib/schemas/amendement/Representation.json +0 -67
  152. package/lib/schemas/amendement/Total.json +0 -26
  153. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  154. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  155. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  156. package/lib/schemas/converted_from_type/debats.json +0 -682
  157. package/lib/schemas/converted_from_type/deputes.json +0 -26
  158. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  159. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  160. package/lib/schemas/converted_from_type/questions.json +0 -328
  161. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  162. package/lib/schemas/debat/Contenu.json +0 -75
  163. package/lib/schemas/debat/Debat.json +0 -40
  164. package/lib/schemas/debat/Metadonnees.json +0 -75
  165. package/lib/schemas/debat/Orateur.json +0 -60
  166. package/lib/schemas/debat/Point.json +0 -169
  167. package/lib/schemas/debat/Sommaire.json +0 -71
  168. package/lib/schemas/debat/SommaireElement.json +0 -108
  169. package/lib/schemas/debat/Texte.json +0 -34
  170. package/lib/schemas/document/CodeLibelle.json +0 -25
  171. package/lib/schemas/document/Document.json +0 -385
  172. package/lib/schemas/document/Indexation.json +0 -38
  173. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  174. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  175. package/lib/schemas/dossier/Agenda.json +0 -23
  176. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  177. package/lib/schemas/dossier/Decision.json +0 -25
  178. package/lib/schemas/dossier/Dossier.json +0 -124
  179. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  180. package/lib/schemas/dossier/EtudePlf.json +0 -105
  181. package/lib/schemas/dossier/Europe.json +0 -42
  182. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  183. package/lib/schemas/dossier/InfoJO.json +0 -23
  184. package/lib/schemas/dossier/Initiateur.json +0 -36
  185. package/lib/schemas/dossier/Motion.json +0 -27
  186. package/lib/schemas/dossier/Promulgation.json +0 -62
  187. package/lib/schemas/dossier/Rapporteur.json +0 -36
  188. package/lib/schemas/dossier/Texte.json +0 -47
  189. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  190. package/lib/schemas/organe/Organe.json +0 -136
  191. package/lib/schemas/organe/ViMoDe.json +0 -28
  192. package/lib/schemas/question/Auteur.json +0 -58
  193. package/lib/schemas/question/Cloture.json +0 -28
  194. package/lib/schemas/question/InfoJO.json +0 -40
  195. package/lib/schemas/question/MinAttribElement.json +0 -30
  196. package/lib/schemas/question/Question.json +0 -172
  197. package/lib/schemas/question/Renouvellement.json +0 -17
  198. package/lib/schemas/question/Signalement.json +0 -21
  199. package/lib/schemas/question/Texte.json +0 -24
  200. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  201. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  202. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  203. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  204. package/lib/schemas/scrutin/Scrutin.json +0 -187
  205. package/lib/schemas/scrutin/Votant.json +0 -37
  206. package/lib/scripts/bugs_helper.d.ts +0 -13
  207. package/lib/scripts/bugs_helper.js +0 -595
  208. package/lib/scripts/bugs_helper.mjs +0 -251
  209. package/lib/scripts/clean_reorganized_data.js +0 -610
  210. package/lib/scripts/clean_reorganized_data.mjs +0 -273
  211. package/lib/scripts/diff_amendements.js +0 -249
  212. package/lib/scripts/diff_amendements.mjs +0 -202
  213. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  214. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  215. package/lib/scripts/get_today_reunions.js +0 -37
  216. package/lib/scripts/get_today_reunions.mjs +0 -31
  217. package/lib/scripts/merge_scrutins.js +0 -97
  218. package/lib/scripts/merge_scrutins.mjs +0 -47
  219. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  220. package/lib/scripts/parse_textes_lois.js +0 -171
  221. package/lib/scripts/parse_textes_lois.mjs +0 -140
  222. package/lib/scripts/process_open_dataset.js +0 -301
  223. package/lib/scripts/process_open_dataset.mjs +0 -134
  224. package/lib/scripts/raw_types_from_amendements.js +0 -135
  225. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  226. package/lib/scripts/reorganize_data.js +0 -805
  227. package/lib/scripts/reorganize_data.mjs +0 -517
  228. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  229. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  230. package/lib/scripts/retrieve_documents.js +0 -547
  231. package/lib/scripts/retrieve_documents.mjs +0 -242
  232. package/lib/scripts/retrieve_open_data.js +0 -107
  233. package/lib/scripts/retrieve_open_data.mjs +0 -26
  234. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  235. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  236. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  237. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  238. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  239. package/lib/scripts/retrieve_textes_lois.js +0 -240
  240. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  241. package/lib/scripts/shared/cli_helpers.js +0 -89
  242. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  243. package/lib/scripts/test_iter_load.js +0 -155
  244. package/lib/scripts/test_iter_load.mjs +0 -72
  245. package/lib/scripts/test_load.js +0 -26
  246. package/lib/scripts/test_load.mjs +0 -16
  247. package/lib/scripts/test_load_big_files.js +0 -26
  248. package/lib/scripts/test_load_big_files.mjs +0 -16
  249. package/lib/scripts/validate_json.js +0 -353
  250. package/lib/scripts/validate_json.mjs +0 -184
  251. package/lib/shared_types/codes_actes.js +0 -231
  252. package/lib/shared_types/codes_actes.mjs +0 -224
  253. package/lib/strings.js +0 -16
  254. package/lib/strings.mjs +0 -7
  255. package/lib/types/acteurs_et_organes.js +0 -963
  256. package/lib/types/acteurs_et_organes.mjs +0 -904
  257. package/lib/types/agendas.js +0 -628
  258. package/lib/types/agendas.mjs +0 -575
  259. package/lib/types/amendements.js +0 -899
  260. package/lib/types/amendements.mjs +0 -842
  261. package/lib/types/debats.js +0 -619
  262. package/lib/types/debats.mjs +0 -562
  263. package/lib/types/dossiers_legislatifs.js +0 -1188
  264. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  265. package/lib/types/legislatures.js +0 -17
  266. package/lib/types/legislatures.mjs +0 -10
  267. package/lib/types/questions.js +0 -454
  268. package/lib/types/questions.mjs +0 -401
  269. package/lib/types/scrutins.js +0 -556
  270. package/lib/types/scrutins.mjs +0 -503
  271. package/lib/urls.js +0 -325
  272. package/lib/urls.mjs +0 -258
  273. /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
  274. /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
  275. /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
@@ -1,503 +0,0 @@
1
- // To parse this data:
2
- //
3
- // import { Convert, Scrutins } from "./file";
4
- //
5
- // const scrutins = Convert.toScrutins(json);
6
- //
7
- // These functions will throw an error if the JSON doesn't
8
- // match the expected interface, even if the JSON is valid.
9
-
10
- export let ModePublicationDesVotes = /*#__PURE__*/function (ModePublicationDesVotes) {
11
- ModePublicationDesVotes["DecompteDissidentsPositionGroupe"] = "DecompteDissidentsPositionGroupe";
12
- ModePublicationDesVotes["DecompteNominatif"] = "DecompteNominatif";
13
- return ModePublicationDesVotes;
14
- }({});
15
- export let Code = /*#__PURE__*/function (Code) {
16
- Code["Adopt\xE9"] = "adopt\xE9";
17
- Code["Rejet\xE9"] = "rejet\xE9";
18
- return Code;
19
- }({});
20
- export let Libelle = /*#__PURE__*/function (Libelle) {
21
- Libelle["LAssembl\xE9eNationaleAAdopt\xE9"] = "l'Assembl\xE9e nationale a adopt\xE9";
22
- Libelle["LAssembl\xE9eNationaleNAPasAdopt\xE9"] = "L'Assembl\xE9e nationale n'a pas adopt\xE9";
23
- Libelle["LeCongr\xE8sDuParlementAAdopt\xE9"] = "Le Congr\xE8s du Parlement a adopt\xE9";
24
- Libelle["LeCongr\xE8sDuParlementNAPasAdopt\xE9"] = "Le Congr\xE8s du Parlement n'a pas adopt\xE9";
25
- return Libelle;
26
- }({});
27
- export let CodeTypeVote = /*#__PURE__*/function (CodeTypeVote) {
28
- CodeTypeVote["Moc"] = "MOC";
29
- CodeTypeVote["Sat"] = "SAT";
30
- CodeTypeVote["Spo"] = "SPO";
31
- CodeTypeVote["Sps"] = "SPS";
32
- CodeTypeVote["Ssg"] = "SSG";
33
- return CodeTypeVote;
34
- }({});
35
- export let LibelleTypeVote = /*#__PURE__*/function (LibelleTypeVote) {
36
- LibelleTypeVote["MotionDeCensure"] = "motion de censure";
37
- LibelleTypeVote["ScrutinPublicOrdinaire"] = "scrutin public ordinaire";
38
- LibelleTypeVote["ScrutinPublicSolennel"] = "scrutin public solennel";
39
- LibelleTypeVote["Scrutin\xC0LaTribune"] = "scrutin \xE0 la tribune";
40
- LibelleTypeVote["ScrutinSolennelCongr\xE8s"] = "Scrutin solennel congr\xE8s";
41
- return LibelleTypeVote;
42
- }({});
43
- export let TypeMajorite = /*#__PURE__*/function (TypeMajorite) {
44
- TypeMajorite["Majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "Majorit\xE9 absolue des suffrages exprim\xE9s";
45
- TypeMajorite["majorit\xE9AbsolueDesSuffragesExprim\xE9s"] = "majorit\xE9 absolue des suffrages exprim\xE9s";
46
- TypeMajorite["majorit\xE9DesMembresComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composant l'Assembl\xE9e nationale";
47
- TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9e"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e";
48
- TypeMajorite["majorit\xE9DesMembresComposantsComposantLAssembl\xE9eNationale"] = "majorit\xE9 des membres composants composant l'Assembl\xE9e nationale";
49
- TypeMajorite["Majorit\xE9RequisePourUnCongr\xE8s"] = "Majorit\xE9 requise pour un Congr\xE8s";
50
- TypeMajorite["Majorit\xE9RequisePourUneMotionDeCensure"] = "Majorit\xE9 requise pour une motion de censure";
51
- return TypeMajorite;
52
- }({});
53
- export let CausePositionVote = /*#__PURE__*/function (CausePositionVote) {
54
- CausePositionVote["Mg"] = "MG";
55
- CausePositionVote["Pan"] = "PAN";
56
- CausePositionVote["Pse"] = "PSE";
57
- return CausePositionVote;
58
- }({});
59
- export let PositionMajoritaire = /*#__PURE__*/function (PositionMajoritaire) {
60
- PositionMajoritaire["Abstention"] = "abstention";
61
- PositionMajoritaire["Contre"] = "contre";
62
- PositionMajoritaire["Pour"] = "pour";
63
- return PositionMajoritaire;
64
- }({});
65
- export let LieuVote = /*#__PURE__*/function (LieuVote) {
66
- LieuVote["Congr\xE8s"] = "Congr\xE8s";
67
- LieuVote["H\xE9micycle"] = "H\xE9micycle";
68
- LieuVote["Salons"] = "Salons";
69
- return LieuVote;
70
- }({});
71
-
72
- // Converts JSON strings to/from your types
73
- // and asserts the results of JSON.parse at runtime
74
- export class Convert {
75
- static toScrutins(json) {
76
- return cast(JSON.parse(json), r("Scrutins"));
77
- }
78
- static scrutinsToJson(value) {
79
- return JSON.stringify(uncast(value, r("Scrutins")), null, 2);
80
- }
81
- static toScrutin(json) {
82
- return cast(JSON.parse(json), r("Scrutin"));
83
- }
84
- static scrutinToJson(value) {
85
- return JSON.stringify(uncast(value, r("Scrutin")), null, 2);
86
- }
87
- }
88
- function invalidValue(typ, val, key = "") {
89
- if (key) {
90
- throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);
91
- }
92
- throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);
93
- }
94
- function jsonToJSProps(typ) {
95
- if (typ.jsonToJS === undefined) {
96
- const map = {};
97
- typ.props.forEach(p => map[p.json] = {
98
- key: p.js,
99
- typ: p.typ
100
- });
101
- typ.jsonToJS = map;
102
- }
103
- return typ.jsonToJS;
104
- }
105
- function jsToJSONProps(typ) {
106
- if (typ.jsToJSON === undefined) {
107
- const map = {};
108
- typ.props.forEach(p => map[p.js] = {
109
- key: p.json,
110
- typ: p.typ
111
- });
112
- typ.jsToJSON = map;
113
- }
114
- return typ.jsToJSON;
115
- }
116
- function transform(val, typ, getProps, key = "") {
117
- function transformPrimitive(typ, val) {
118
- if (typeof typ === typeof val) return val;
119
- return invalidValue(typ, val, key);
120
- }
121
- function transformUnion(typs, val) {
122
- // val must validate against one typ in typs
123
- const l = typs.length;
124
- for (let i = 0; i < l; i++) {
125
- const typ = typs[i];
126
- try {
127
- return transform(val, typ, getProps);
128
- } catch (_) {}
129
- }
130
- return invalidValue(typs, val);
131
- }
132
- function transformEnum(cases, val) {
133
- if (cases.indexOf(val) !== -1) return val;
134
- return invalidValue(cases, val);
135
- }
136
- function transformArray(typ, val) {
137
- // val must be an array with no invalid elements
138
- if (!Array.isArray(val)) return invalidValue("array", val);
139
- return val.map(el => transform(el, typ, getProps));
140
- }
141
- function transformDate(val) {
142
- if (val === null) {
143
- return null;
144
- }
145
- const d = new Date(val);
146
- if (isNaN(d.valueOf())) {
147
- return invalidValue("Date", val);
148
- }
149
- return d;
150
- }
151
- function transformObject(props, additional, val) {
152
- if (val === null || typeof val !== "object" || Array.isArray(val)) {
153
- return invalidValue("object", val);
154
- }
155
- const result = {};
156
- Object.getOwnPropertyNames(props).forEach(key => {
157
- const prop = props[key];
158
- const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
159
- result[prop.key] = transform(v, prop.typ, getProps, prop.key);
160
- });
161
- Object.getOwnPropertyNames(val).forEach(key => {
162
- if (!Object.prototype.hasOwnProperty.call(props, key)) {
163
- result[key] = transform(val[key], additional, getProps, key);
164
- }
165
- });
166
- return result;
167
- }
168
- if (typ === "any") return val;
169
- if (typ === null) {
170
- if (val === null) return val;
171
- return invalidValue(typ, val);
172
- }
173
- // if (typ === false) return invalidValue(typ, val)
174
- while (typeof typ === "object" && typ.ref !== undefined) {
175
- typ = typeMap[typ.ref];
176
- }
177
- if (Array.isArray(typ)) return transformEnum(typ, val);
178
- if (typeof typ === "object") {
179
- return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) : invalidValue(typ, val);
180
- }
181
- // Numbers can be parsed by Date but shouldn't be.
182
- if (typ === Date && typeof val !== "number") return transformDate(val);
183
- return transformPrimitive(typ, val);
184
- }
185
- function cast(val, typ) {
186
- return transform(val, typ, jsonToJSProps);
187
- }
188
- function uncast(val, typ) {
189
- return transform(val, typ, jsToJSONProps);
190
- }
191
- function a(typ) {
192
- return {
193
- arrayItems: typ
194
- };
195
- }
196
- function u(...typs) {
197
- return {
198
- unionMembers: typs
199
- };
200
- }
201
- function o(props, additional) {
202
- return {
203
- props,
204
- additional
205
- };
206
- }
207
-
208
- // function m(additional: any) {
209
- // return { props: [], additional }
210
- // }
211
-
212
- function r(name) {
213
- return {
214
- ref: name
215
- };
216
- }
217
- const typeMap = {
218
- Scrutins: o([{
219
- json: "scrutins",
220
- js: "scrutins",
221
- typ: a(r("Scrutin"))
222
- }], false),
223
- Scrutin: o([{
224
- json: "schemaVersion",
225
- js: "schemaVersion",
226
- typ: u(undefined, "")
227
- }, {
228
- json: "uid",
229
- js: "uid",
230
- typ: ""
231
- }, {
232
- json: "numero",
233
- js: "numero",
234
- typ: ""
235
- }, {
236
- json: "organeRef",
237
- js: "organeRef",
238
- typ: ""
239
- }, {
240
- json: "legislature",
241
- js: "legislature",
242
- typ: ""
243
- }, {
244
- json: "sessionRef",
245
- js: "sessionRef",
246
- typ: ""
247
- }, {
248
- json: "seanceRef",
249
- js: "seanceRef",
250
- typ: ""
251
- }, {
252
- json: "dateScrutin",
253
- js: "dateScrutin",
254
- typ: Date
255
- }, {
256
- json: "quantiemeJourSeance",
257
- js: "quantiemeJourSeance",
258
- typ: ""
259
- }, {
260
- json: "typeVote",
261
- js: "typeVote",
262
- typ: r("TypeVote")
263
- }, {
264
- json: "sort",
265
- js: "sort",
266
- typ: r("SortScrutin")
267
- }, {
268
- json: "titre",
269
- js: "titre",
270
- typ: ""
271
- }, {
272
- json: "demandeur",
273
- js: "demandeur",
274
- typ: r("Demandeur")
275
- }, {
276
- json: "objet",
277
- js: "objet",
278
- typ: r("Objet")
279
- }, {
280
- json: "modePublicationDesVotes",
281
- js: "modePublicationDesVotes",
282
- typ: r("ModePublicationDesVotes")
283
- }, {
284
- json: "syntheseVote",
285
- js: "syntheseVote",
286
- typ: r("SyntheseVote")
287
- }, {
288
- json: "ventilationVotes",
289
- js: "ventilationVotes",
290
- typ: r("VentilationVotes")
291
- }, {
292
- json: "miseAuPoint",
293
- js: "miseAuPoint",
294
- typ: u(undefined, r("MiseAuPoint"))
295
- }, {
296
- json: "lieuVote",
297
- js: "lieuVote",
298
- typ: u(undefined, r("LieuVote"))
299
- }], false),
300
- Demandeur: o([{
301
- json: "texte",
302
- js: "texte",
303
- typ: u(undefined, "")
304
- }], false),
305
- MiseAuPoint: o([{
306
- json: "nonVotants",
307
- js: "nonVotants",
308
- typ: u(undefined, a(r("Votant")))
309
- }, {
310
- json: "pour",
311
- js: "pour",
312
- typ: u(undefined, a(r("Votant")))
313
- }, {
314
- json: "contre",
315
- js: "contre",
316
- typ: u(undefined, a(r("Votant")))
317
- }, {
318
- json: "abstentions",
319
- js: "abstentions",
320
- typ: u(undefined, a(r("Votant")))
321
- }, {
322
- json: "nonVotantsVolontaires",
323
- js: "nonVotantsVolontaires",
324
- typ: u(undefined, a(r("Votant")))
325
- }, {
326
- json: "dysfonctionnement",
327
- js: "dysfonctionnement",
328
- typ: u(undefined, r("Dysfonctionnement"))
329
- }], false),
330
- Dysfonctionnement: o([{
331
- json: "nonVotants",
332
- js: "nonVotants",
333
- typ: u(undefined, a(r("Votant")))
334
- }, {
335
- json: "pour",
336
- js: "pour",
337
- typ: u(undefined, a(r("Votant")))
338
- }, {
339
- json: "contre",
340
- js: "contre",
341
- typ: u(undefined, a(r("Votant")))
342
- }, {
343
- json: "abstentions",
344
- js: "abstentions",
345
- typ: u(undefined, a(r("Votant")))
346
- }, {
347
- json: "nonVotantsVolontaires",
348
- js: "nonVotantsVolontaires",
349
- typ: u(undefined, a(r("Votant")))
350
- }], false),
351
- Objet: o([{
352
- json: "libelle",
353
- js: "libelle",
354
- typ: ""
355
- }], false),
356
- SortScrutin: o([{
357
- json: "code",
358
- js: "code",
359
- typ: r("Code")
360
- }, {
361
- json: "libelle",
362
- js: "libelle",
363
- typ: r("Libelle")
364
- }], false),
365
- SyntheseVote: o([{
366
- json: "nombreVotants",
367
- js: "nombreVotants",
368
- typ: ""
369
- }, {
370
- json: "suffragesExprimes",
371
- js: "suffragesExprimes",
372
- typ: ""
373
- }, {
374
- json: "nbrSuffragesRequis",
375
- js: "nbrSuffragesRequis",
376
- typ: ""
377
- }, {
378
- json: "annonce",
379
- js: "annonce",
380
- typ: r("Libelle")
381
- }, {
382
- json: "decompte",
383
- js: "decompte",
384
- typ: r("DecompteVoix")
385
- }], false),
386
- TypeVote: o([{
387
- json: "codeTypeVote",
388
- js: "codeTypeVote",
389
- typ: r("CodeTypeVote")
390
- }, {
391
- json: "libelleTypeVote",
392
- js: "libelleTypeVote",
393
- typ: r("LibelleTypeVote")
394
- }, {
395
- json: "typeMajorite",
396
- js: "typeMajorite",
397
- typ: r("TypeMajorite")
398
- }], false),
399
- VentilationVotes: o([{
400
- json: "organeRef",
401
- js: "organeRef",
402
- typ: ""
403
- }, {
404
- json: "groupes",
405
- js: "groupes",
406
- typ: a(r("VentilationVotesGroupe"))
407
- }], false),
408
- VentilationVotesGroupe: o([{
409
- json: "organeRef",
410
- js: "organeRef",
411
- typ: ""
412
- }, {
413
- json: "nombreMembresGroupe",
414
- js: "nombreMembresGroupe",
415
- typ: ""
416
- }, {
417
- json: "vote",
418
- js: "vote",
419
- typ: r("Vote")
420
- }], false),
421
- Vote: o([{
422
- json: "positionMajoritaire",
423
- js: "positionMajoritaire",
424
- typ: r("PositionMajoritaire")
425
- }, {
426
- json: "decompteVoix",
427
- js: "decompteVoix",
428
- typ: r("DecompteVoix")
429
- }, {
430
- json: "decompteNominatif",
431
- js: "decompteNominatif",
432
- typ: r("DecompteNominatif")
433
- }], false),
434
- DecompteNominatif: o([{
435
- json: "nonVotants",
436
- js: "nonVotants",
437
- typ: u(undefined, a(r("Votant")))
438
- }, {
439
- json: "pour",
440
- js: "pour",
441
- typ: u(undefined, a(r("Votant")))
442
- }, {
443
- json: "contre",
444
- js: "contre",
445
- typ: u(undefined, a(r("Votant")))
446
- }, {
447
- json: "abstentions",
448
- js: "abstentions",
449
- typ: u(undefined, a(r("Votant")))
450
- }], false),
451
- Votant: o([{
452
- json: "acteurRef",
453
- js: "acteurRef",
454
- typ: ""
455
- }, {
456
- json: "mandatRef",
457
- js: "mandatRef",
458
- typ: ""
459
- }, {
460
- json: "parDelegation",
461
- js: "parDelegation",
462
- typ: u(undefined, false)
463
- }, {
464
- json: "numPlace",
465
- js: "numPlace",
466
- typ: u(undefined, 0)
467
- }, {
468
- json: "causePositionVote",
469
- js: "causePositionVote",
470
- typ: u(undefined, r("CausePositionVote"))
471
- }], false),
472
- DecompteVoix: o([{
473
- json: "pour",
474
- js: "pour",
475
- typ: ""
476
- }, {
477
- json: "contre",
478
- js: "contre",
479
- typ: ""
480
- }, {
481
- json: "nonVotants",
482
- js: "nonVotants",
483
- typ: u(undefined, "")
484
- }, {
485
- json: "abstentions",
486
- js: "abstentions",
487
- typ: u(undefined, "")
488
- }, {
489
- json: "nonVotantsVolontaires",
490
- js: "nonVotantsVolontaires",
491
- typ: u(undefined, "")
492
- }], false),
493
- ModePublicationDesVotes: ["DecompteDissidentsPositionGroupe", "DecompteNominatif"],
494
- Code: ["adopté", "rejeté"],
495
- Libelle: ["l'Assemblée nationale a adopté", "L'Assemblée nationale n'a pas adopté", "Le Congrès du Parlement a adopté", "Le Congrès du Parlement n'a pas adopté"],
496
- CodeTypeVote: ["MOC", "SAT", "SPO", "SPS", "SSG"],
497
- LibelleTypeVote: ["motion de censure", "scrutin public ordinaire", "scrutin public solennel", "scrutin à la tribune", "Scrutin solennel congrès"],
498
- TypeMajorite: ["Majorité absolue des suffrages exprimés", "majorité absolue des suffrages exprimés", "majorité des membres composant l'Assemblée nationale", "majorité des membres composants composant l'Assemblée", "majorité des membres composants composant l'Assemblée nationale", "Majorité requise pour un Congrès", "Majorité requise pour une motion de censure"],
499
- CausePositionVote: ["MG", "PAN", "PSE"],
500
- PositionMajoritaire: ["abstention", "contre", "pour"],
501
- LieuVote: ["Congrès", "Hémicycle", "Salons"]
502
- };
503
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNb2RlUHVibGljYXRpb25EZXNWb3RlcyIsIkNvZGUiLCJMaWJlbGxlIiwiQ29kZVR5cGVWb3RlIiwiTGliZWxsZVR5cGVWb3RlIiwiVHlwZU1ham9yaXRlIiwiQ2F1c2VQb3NpdGlvblZvdGUiLCJQb3NpdGlvbk1ham9yaXRhaXJlIiwiTGlldVZvdGUiLCJDb252ZXJ0IiwidG9TY3J1dGlucyIsImpzb24iLCJjYXN0IiwiSlNPTiIsInBhcnNlIiwiciIsInNjcnV0aW5zVG9Kc29uIiwidmFsdWUiLCJzdHJpbmdpZnkiLCJ1bmNhc3QiLCJ0b1NjcnV0aW4iLCJzY3J1dGluVG9Kc29uIiwiaW52YWxpZFZhbHVlIiwidHlwIiwidmFsIiwia2V5IiwiRXJyb3IiLCJqc29uVG9KU1Byb3BzIiwianNvblRvSlMiLCJ1bmRlZmluZWQiLCJtYXAiLCJwcm9wcyIsImZvckVhY2giLCJwIiwianMiLCJqc1RvSlNPTlByb3BzIiwianNUb0pTT04iLCJ0cmFuc2Zvcm0iLCJnZXRQcm9wcyIsInRyYW5zZm9ybVByaW1pdGl2ZSIsInRyYW5zZm9ybVVuaW9uIiwidHlwcyIsImwiLCJsZW5ndGgiLCJpIiwiXyIsInRyYW5zZm9ybUVudW0iLCJjYXNlcyIsImluZGV4T2YiLCJ0cmFuc2Zvcm1BcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImVsIiwidHJhbnNmb3JtRGF0ZSIsImQiLCJEYXRlIiwiaXNOYU4iLCJ2YWx1ZU9mIiwidHJhbnNmb3JtT2JqZWN0IiwiYWRkaXRpb25hbCIsInJlc3VsdCIsIk9iamVjdCIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wIiwidiIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlZiIsInR5cGVNYXAiLCJ1bmlvbk1lbWJlcnMiLCJhcnJheUl0ZW1zIiwiYSIsInUiLCJvIiwibmFtZSIsIlNjcnV0aW5zIiwiU2NydXRpbiIsIkRlbWFuZGV1ciIsIk1pc2VBdVBvaW50IiwiRHlzZm9uY3Rpb25uZW1lbnQiLCJPYmpldCIsIlNvcnRTY3J1dGluIiwiU3ludGhlc2VWb3RlIiwiVHlwZVZvdGUiLCJWZW50aWxhdGlvblZvdGVzIiwiVmVudGlsYXRpb25Wb3Rlc0dyb3VwZSIsIlZvdGUiLCJEZWNvbXB0ZU5vbWluYXRpZiIsIlZvdGFudCIsIkRlY29tcHRlVm9peCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9zY3J1dGlucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBwYXJzZSB0aGlzIGRhdGE6XG4vL1xuLy8gICBpbXBvcnQgeyBDb252ZXJ0LCBTY3J1dGlucyB9IGZyb20gXCIuL2ZpbGVcIjtcbi8vXG4vLyAgIGNvbnN0IHNjcnV0aW5zID0gQ29udmVydC50b1NjcnV0aW5zKGpzb24pO1xuLy9cbi8vIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBKU09OIGRvZXNuJ3Rcbi8vIG1hdGNoIHRoZSBleHBlY3RlZCBpbnRlcmZhY2UsIGV2ZW4gaWYgdGhlIEpTT04gaXMgdmFsaWQuXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NydXRpbnMge1xuICBzY3J1dGluczogU2NydXRpbltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NydXRpbiB7XG4gIHNjaGVtYVZlcnNpb24/OiBzdHJpbmdcbiAgdWlkOiBzdHJpbmdcbiAgbnVtZXJvOiBzdHJpbmdcbiAgb3JnYW5lUmVmOiBzdHJpbmdcbiAgbGVnaXNsYXR1cmU6IHN0cmluZ1xuICBzZXNzaW9uUmVmOiBzdHJpbmdcbiAgc2VhbmNlUmVmOiBzdHJpbmdcbiAgZGF0ZVNjcnV0aW46IERhdGVcbiAgcXVhbnRpZW1lSm91clNlYW5jZTogc3RyaW5nXG4gIHR5cGVWb3RlOiBUeXBlVm90ZVxuICBzb3J0OiBTb3J0U2NydXRpblxuICB0aXRyZTogc3RyaW5nXG4gIGRlbWFuZGV1cjogRGVtYW5kZXVyXG4gIG9iamV0OiBPYmpldFxuICBtb2RlUHVibGljYXRpb25EZXNWb3RlczogTW9kZVB1YmxpY2F0aW9uRGVzVm90ZXNcbiAgc3ludGhlc2VWb3RlOiBTeW50aGVzZVZvdGVcbiAgdmVudGlsYXRpb25Wb3RlczogVmVudGlsYXRpb25Wb3Rlc1xuICBtaXNlQXVQb2ludD86IE1pc2VBdVBvaW50XG4gIGxpZXVWb3RlPzogTGlldVZvdGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZW1hbmRldXIge1xuICB0ZXh0ZT86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pc2VBdVBvaW50IHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IFZvdGFudFtdXG4gIGR5c2ZvbmN0aW9ubmVtZW50PzogRHlzZm9uY3Rpb25uZW1lbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEeXNmb25jdGlvbm5lbWVudCB7XG4gIG5vblZvdGFudHM/OiBWb3RhbnRbXVxuICBwb3VyPzogVm90YW50W11cbiAgY29udHJlPzogVm90YW50W11cbiAgYWJzdGVudGlvbnM/OiBWb3RhbnRbXVxuICBub25Wb3RhbnRzVm9sb250YWlyZXM/OiBWb3RhbnRbXVxufVxuXG5leHBvcnQgZW51bSBNb2RlUHVibGljYXRpb25EZXNWb3RlcyB7XG4gIERlY29tcHRlRGlzc2lkZW50c1Bvc2l0aW9uR3JvdXBlID0gXCJEZWNvbXB0ZURpc3NpZGVudHNQb3NpdGlvbkdyb3VwZVwiLFxuICBEZWNvbXB0ZU5vbWluYXRpZiA9IFwiRGVjb21wdGVOb21pbmF0aWZcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPYmpldCB7XG4gIGxpYmVsbGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTY3J1dGluIHtcbiAgY29kZTogQ29kZVxuICBsaWJlbGxlOiBMaWJlbGxlXG59XG5cbmV4cG9ydCBlbnVtIENvZGUge1xuICBBZG9wdMOpID0gXCJhZG9wdMOpXCIsXG4gIFJlamV0w6kgPSBcInJlamV0w6lcIixcbn1cblxuZXhwb3J0IGVudW0gTGliZWxsZSB7XG4gIExBc3NlbWJsw6llTmF0aW9uYWxlQUFkb3B0w6kgPSBcImwnQXNzZW1ibMOpZSBuYXRpb25hbGUgYSBhZG9wdMOpXCIsXG4gIExBc3NlbWJsw6llTmF0aW9uYWxlTkFQYXNBZG9wdMOpID0gXCJMJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlIG4nYSBwYXMgYWRvcHTDqVwiLFxuICBMZUNvbmdyw6hzRHVQYXJsZW1lbnRBQWRvcHTDqSA9IFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICBMZUNvbmdyw6hzRHVQYXJsZW1lbnROQVBhc0Fkb3B0w6kgPSBcIkxlIENvbmdyw6hzIGR1IFBhcmxlbWVudCBuJ2EgcGFzIGFkb3B0w6lcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTeW50aGVzZVZvdGUge1xuICBub21icmVWb3RhbnRzOiBzdHJpbmdcbiAgc3VmZnJhZ2VzRXhwcmltZXM6IHN0cmluZ1xuICBuYnJTdWZmcmFnZXNSZXF1aXM6IHN0cmluZ1xuICBhbm5vbmNlOiBMaWJlbGxlXG4gIGRlY29tcHRlOiBEZWNvbXB0ZVZvaXhcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlVm90ZSB7XG4gIGNvZGVUeXBlVm90ZTogQ29kZVR5cGVWb3RlXG4gIGxpYmVsbGVUeXBlVm90ZTogTGliZWxsZVR5cGVWb3RlXG4gIHR5cGVNYWpvcml0ZTogVHlwZU1ham9yaXRlXG59XG5cbmV4cG9ydCBlbnVtIENvZGVUeXBlVm90ZSB7XG4gIE1vYyA9IFwiTU9DXCIsXG4gIFNhdCA9IFwiU0FUXCIsXG4gIFNwbyA9IFwiU1BPXCIsXG4gIFNwcyA9IFwiU1BTXCIsXG4gIFNzZyA9IFwiU1NHXCIsXG59XG5cbmV4cG9ydCBlbnVtIExpYmVsbGVUeXBlVm90ZSB7XG4gIE1vdGlvbkRlQ2Vuc3VyZSA9IFwibW90aW9uIGRlIGNlbnN1cmVcIixcbiAgU2NydXRpblB1YmxpY09yZGluYWlyZSA9IFwic2NydXRpbiBwdWJsaWMgb3JkaW5haXJlXCIsXG4gIFNjcnV0aW5QdWJsaWNTb2xlbm5lbCA9IFwic2NydXRpbiBwdWJsaWMgc29sZW5uZWxcIixcbiAgU2NydXRpbsOATGFUcmlidW5lID0gXCJzY3J1dGluIMOgIGxhIHRyaWJ1bmVcIixcbiAgU2NydXRpblNvbGVubmVsQ29uZ3LDqHMgPSBcIlNjcnV0aW4gc29sZW5uZWwgY29uZ3LDqHNcIixcbn1cblxuZXhwb3J0IGVudW0gVHlwZU1ham9yaXRlIHtcbiAgTWFqb3JpdMOpQWJzb2x1ZURlc1N1ZmZyYWdlc0V4cHJpbcOpcyA9IFwiTWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgbWFqb3JpdMOpQWJzb2x1ZURlc1N1ZmZyYWdlc0V4cHJpbcOpcyA9IFwibWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgbWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudExBc3NlbWJsw6llTmF0aW9uYWxlID0gXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgbWFqb3JpdMOpRGVzTWVtYnJlc0NvbXBvc2FudHNDb21wb3NhbnRMQXNzZW1ibMOpZSA9IFwibWFqb3JpdMOpIGRlcyBtZW1icmVzIGNvbXBvc2FudHMgY29tcG9zYW50IGwnQXNzZW1ibMOpZVwiLFxuICBtYWpvcml0w6lEZXNNZW1icmVzQ29tcG9zYW50c0NvbXBvc2FudExBc3NlbWJsw6llTmF0aW9uYWxlID0gXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50cyBjb21wb3NhbnQgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiLFxuICBNYWpvcml0w6lSZXF1aXNlUG91clVuQ29uZ3LDqHMgPSBcIk1ham9yaXTDqSByZXF1aXNlIHBvdXIgdW4gQ29uZ3LDqHNcIixcbiAgTWFqb3JpdMOpUmVxdWlzZVBvdXJVbmVNb3Rpb25EZUNlbnN1cmUgPSBcIk1ham9yaXTDqSByZXF1aXNlIHBvdXIgdW5lIG1vdGlvbiBkZSBjZW5zdXJlXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVudGlsYXRpb25Wb3RlcyB7XG4gIG9yZ2FuZVJlZjogc3RyaW5nXG4gIGdyb3VwZXM6IFZlbnRpbGF0aW9uVm90ZXNHcm91cGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlbnRpbGF0aW9uVm90ZXNHcm91cGUge1xuICBvcmdhbmVSZWY6IHN0cmluZ1xuICBub21icmVNZW1icmVzR3JvdXBlOiBzdHJpbmdcbiAgdm90ZTogVm90ZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZvdGUge1xuICBwb3NpdGlvbk1ham9yaXRhaXJlOiBQb3NpdGlvbk1ham9yaXRhaXJlXG4gIGRlY29tcHRlVm9peDogRGVjb21wdGVWb2l4XG4gIGRlY29tcHRlTm9taW5hdGlmOiBEZWNvbXB0ZU5vbWluYXRpZlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29tcHRlTm9taW5hdGlmIHtcbiAgbm9uVm90YW50cz86IFZvdGFudFtdXG4gIHBvdXI/OiBWb3RhbnRbXVxuICBjb250cmU/OiBWb3RhbnRbXVxuICBhYnN0ZW50aW9ucz86IFZvdGFudFtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVm90YW50IHtcbiAgYWN0ZXVyUmVmOiBzdHJpbmdcbiAgbWFuZGF0UmVmOiBzdHJpbmdcbiAgcGFyRGVsZWdhdGlvbj86IGJvb2xlYW5cbiAgbnVtUGxhY2U/OiBudW1iZXJcbiAgY2F1c2VQb3NpdGlvblZvdGU/OiBDYXVzZVBvc2l0aW9uVm90ZVxufVxuXG5leHBvcnQgZW51bSBDYXVzZVBvc2l0aW9uVm90ZSB7XG4gIE1nID0gXCJNR1wiLFxuICBQYW4gPSBcIlBBTlwiLFxuICBQc2UgPSBcIlBTRVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY29tcHRlVm9peCB7XG4gIHBvdXI6IHN0cmluZ1xuICBjb250cmU6IHN0cmluZ1xuICBub25Wb3RhbnRzPzogc3RyaW5nXG4gIGFic3RlbnRpb25zPzogc3RyaW5nXG4gIG5vblZvdGFudHNWb2xvbnRhaXJlcz86IHN0cmluZ1xufVxuXG5leHBvcnQgZW51bSBQb3NpdGlvbk1ham9yaXRhaXJlIHtcbiAgQWJzdGVudGlvbiA9IFwiYWJzdGVudGlvblwiLFxuICBDb250cmUgPSBcImNvbnRyZVwiLFxuICBQb3VyID0gXCJwb3VyXCIsXG59XG5cbmV4cG9ydCBlbnVtIExpZXVWb3RlIHtcbiAgQ29uZ3LDqHMgPSBcIkNvbmdyw6hzXCIsXG4gIEjDqW1pY3ljbGUgPSBcIkjDqW1pY3ljbGVcIixcbiAgU2Fsb25zID0gXCJTYWxvbnNcIixcbn1cblxuLy8gQ29udmVydHMgSlNPTiBzdHJpbmdzIHRvL2Zyb20geW91ciB0eXBlc1xuLy8gYW5kIGFzc2VydHMgdGhlIHJlc3VsdHMgb2YgSlNPTi5wYXJzZSBhdCBydW50aW1lXG5leHBvcnQgY2xhc3MgQ29udmVydCB7XG4gIHB1YmxpYyBzdGF0aWMgdG9TY3J1dGlucyhqc29uOiBzdHJpbmcpOiBTY3J1dGlucyB7XG4gICAgcmV0dXJuIGNhc3QoSlNPTi5wYXJzZShqc29uKSwgcihcIlNjcnV0aW5zXCIpKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzY3J1dGluc1RvSnNvbih2YWx1ZTogU2NydXRpbnMpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh1bmNhc3QodmFsdWUsIHIoXCJTY3J1dGluc1wiKSksIG51bGwsIDIpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHRvU2NydXRpbihqc29uOiBzdHJpbmcpOiBTY3J1dGluIHtcbiAgICByZXR1cm4gY2FzdChKU09OLnBhcnNlKGpzb24pLCByKFwiU2NydXRpblwiKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2NydXRpblRvSnNvbih2YWx1ZTogU2NydXRpbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHVuY2FzdCh2YWx1ZSwgcihcIlNjcnV0aW5cIikpLCBudWxsLCAyKVxuICB9XG59XG5cbmZ1bmN0aW9uIGludmFsaWRWYWx1ZSh0eXA6IGFueSwgdmFsOiBhbnksIGtleTogYW55ID0gXCJcIik6IG5ldmVyIHtcbiAgaWYgKGtleSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYEludmFsaWQgdmFsdWUgZm9yIGtleSBcIiR7a2V5fVwiLiBFeHBlY3RlZCB0eXBlICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHR5cCxcbiAgICAgICl9IGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeSh2YWwpfWAsXG4gICAgKVxuICB9XG4gIHRocm93IEVycm9yKFxuICAgIGBJbnZhbGlkIHZhbHVlICR7SlNPTi5zdHJpbmdpZnkodmFsKX0gZm9yIHR5cGUgJHtKU09OLnN0cmluZ2lmeSh0eXApfWAsXG4gIClcbn1cblxuZnVuY3Rpb24ganNvblRvSlNQcm9wcyh0eXA6IGFueSk6IGFueSB7XG4gIGlmICh0eXAuanNvblRvSlMgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1hcDogYW55ID0ge31cbiAgICB0eXAucHJvcHMuZm9yRWFjaCgocDogYW55KSA9PiAobWFwW3AuanNvbl0gPSB7IGtleTogcC5qcywgdHlwOiBwLnR5cCB9KSlcbiAgICB0eXAuanNvblRvSlMgPSBtYXBcbiAgfVxuICByZXR1cm4gdHlwLmpzb25Ub0pTXG59XG5cbmZ1bmN0aW9uIGpzVG9KU09OUHJvcHModHlwOiBhbnkpOiBhbnkge1xuICBpZiAodHlwLmpzVG9KU09OID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtYXA6IGFueSA9IHt9XG4gICAgdHlwLnByb3BzLmZvckVhY2goKHA6IGFueSkgPT4gKG1hcFtwLmpzXSA9IHsga2V5OiBwLmpzb24sIHR5cDogcC50eXAgfSkpXG4gICAgdHlwLmpzVG9KU09OID0gbWFwXG4gIH1cbiAgcmV0dXJuIHR5cC5qc1RvSlNPTlxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm0odmFsOiBhbnksIHR5cDogYW55LCBnZXRQcm9wczogYW55LCBrZXk6IGFueSA9IFwiXCIpOiBhbnkge1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1QcmltaXRpdmUodHlwOiBzdHJpbmcsIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAodHlwZW9mIHR5cCA9PT0gdHlwZW9mIHZhbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwsIGtleSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybVVuaW9uKHR5cHM6IGFueVtdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgLy8gdmFsIG11c3QgdmFsaWRhdGUgYWdhaW5zdCBvbmUgdHlwIGluIHR5cHNcbiAgICBjb25zdCBsID0gdHlwcy5sZW5ndGhcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdHlwID0gdHlwc1tpXVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSh2YWwsIHR5cCwgZ2V0UHJvcHMpXG4gICAgICB9IGNhdGNoIChfKSB7fVxuICAgIH1cbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKHR5cHMsIHZhbClcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybUVudW0oY2FzZXM6IHN0cmluZ1tdLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKGNhc2VzLmluZGV4T2YodmFsKSAhPT0gLTEpIHJldHVybiB2YWxcbiAgICByZXR1cm4gaW52YWxpZFZhbHVlKGNhc2VzLCB2YWwpXG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1BcnJheSh0eXA6IGFueSwgdmFsOiBhbnkpOiBhbnkge1xuICAgIC8vIHZhbCBtdXN0IGJlIGFuIGFycmF5IHdpdGggbm8gaW52YWxpZCBlbGVtZW50c1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWwpKSByZXR1cm4gaW52YWxpZFZhbHVlKFwiYXJyYXlcIiwgdmFsKVxuICAgIHJldHVybiB2YWwubWFwKChlbCkgPT4gdHJhbnNmb3JtKGVsLCB0eXAsIGdldFByb3BzKSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYW5zZm9ybURhdGUodmFsOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGQgPSBuZXcgRGF0ZSh2YWwpXG4gICAgaWYgKGlzTmFOKGQudmFsdWVPZigpKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIkRhdGVcIiwgdmFsKVxuICAgIH1cbiAgICByZXR1cm4gZFxuICB9XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtT2JqZWN0KFxuICAgIHByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgICBhZGRpdGlvbmFsOiBhbnksXG4gICAgdmFsOiBhbnksXG4gICk6IGFueSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgcmV0dXJuIGludmFsaWRWYWx1ZShcIm9iamVjdFwiLCB2YWwpXG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge31cbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhwcm9wcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBwcm9wID0gcHJvcHNba2V5XVxuICAgICAgY29uc3QgdiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSlcbiAgICAgICAgPyB2YWxba2V5XVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmVzdWx0W3Byb3Aua2V5XSA9IHRyYW5zZm9ybSh2LCBwcm9wLnR5cCwgZ2V0UHJvcHMsIHByb3Aua2V5KVxuICAgIH0pXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhbnNmb3JtKHZhbFtrZXldLCBhZGRpdGlvbmFsLCBnZXRQcm9wcywga2V5KVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKHR5cCA9PT0gXCJhbnlcIikgcmV0dXJuIHZhbFxuICBpZiAodHlwID09PSBudWxsKSB7XG4gICAgaWYgKHZhbCA9PT0gbnVsbCkgcmV0dXJuIHZhbFxuICAgIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIH1cbiAgLy8gaWYgKHR5cCA9PT0gZmFsc2UpIHJldHVybiBpbnZhbGlkVmFsdWUodHlwLCB2YWwpXG4gIHdoaWxlICh0eXBlb2YgdHlwID09PSBcIm9iamVjdFwiICYmIHR5cC5yZWYgIT09IHVuZGVmaW5lZCkge1xuICAgIHR5cCA9IHR5cGVNYXBbdHlwLnJlZl1cbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0eXApKSByZXR1cm4gdHJhbnNmb3JtRW51bSh0eXAsIHZhbClcbiAgaWYgKHR5cGVvZiB0eXAgPT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdHlwLmhhc093blByb3BlcnR5KFwidW5pb25NZW1iZXJzXCIpXG4gICAgICA/IHRyYW5zZm9ybVVuaW9uKHR5cC51bmlvbk1lbWJlcnMsIHZhbClcbiAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwiYXJyYXlJdGVtc1wiKVxuICAgICAgICA/IHRyYW5zZm9ybUFycmF5KHR5cC5hcnJheUl0ZW1zLCB2YWwpXG4gICAgICAgIDogdHlwLmhhc093blByb3BlcnR5KFwicHJvcHNcIilcbiAgICAgICAgICA/IHRyYW5zZm9ybU9iamVjdChnZXRQcm9wcyh0eXApLCB0eXAuYWRkaXRpb25hbCwgdmFsKVxuICAgICAgICAgIDogaW52YWxpZFZhbHVlKHR5cCwgdmFsKVxuICB9XG4gIC8vIE51bWJlcnMgY2FuIGJlIHBhcnNlZCBieSBEYXRlIGJ1dCBzaG91bGRuJ3QgYmUuXG4gIGlmICh0eXAgPT09IERhdGUgJiYgdHlwZW9mIHZhbCAhPT0gXCJudW1iZXJcIikgcmV0dXJuIHRyYW5zZm9ybURhdGUodmFsKVxuICByZXR1cm4gdHJhbnNmb3JtUHJpbWl0aXZlKHR5cCwgdmFsKVxufVxuXG5mdW5jdGlvbiBjYXN0PFQ+KHZhbDogYW55LCB0eXA6IGFueSk6IFQge1xuICByZXR1cm4gdHJhbnNmb3JtKHZhbCwgdHlwLCBqc29uVG9KU1Byb3BzKVxufVxuXG5mdW5jdGlvbiB1bmNhc3Q8VD4odmFsOiBULCB0eXA6IGFueSk6IGFueSB7XG4gIHJldHVybiB0cmFuc2Zvcm0odmFsLCB0eXAsIGpzVG9KU09OUHJvcHMpXG59XG5cbmZ1bmN0aW9uIGEodHlwOiBhbnkpIHtcbiAgcmV0dXJuIHsgYXJyYXlJdGVtczogdHlwIH1cbn1cblxuZnVuY3Rpb24gdSguLi50eXBzOiBhbnlbXSkge1xuICByZXR1cm4geyB1bmlvbk1lbWJlcnM6IHR5cHMgfVxufVxuXG5mdW5jdGlvbiBvKHByb3BzOiBhbnlbXSwgYWRkaXRpb25hbDogYW55KSB7XG4gIHJldHVybiB7IHByb3BzLCBhZGRpdGlvbmFsIH1cbn1cblxuLy8gZnVuY3Rpb24gbShhZGRpdGlvbmFsOiBhbnkpIHtcbi8vICAgcmV0dXJuIHsgcHJvcHM6IFtdLCBhZGRpdGlvbmFsIH1cbi8vIH1cblxuZnVuY3Rpb24gcihuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHsgcmVmOiBuYW1lIH1cbn1cblxuY29uc3QgdHlwZU1hcDogYW55ID0ge1xuICBTY3J1dGluczogbyhcbiAgICBbeyBqc29uOiBcInNjcnV0aW5zXCIsIGpzOiBcInNjcnV0aW5zXCIsIHR5cDogYShyKFwiU2NydXRpblwiKSkgfV0sXG4gICAgZmFsc2UsXG4gICksXG4gIFNjcnV0aW46IG8oXG4gICAgW1xuICAgICAgeyBqc29uOiBcInNjaGVtYVZlcnNpb25cIiwganM6IFwic2NoZW1hVmVyc2lvblwiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAgeyBqc29uOiBcInVpZFwiLCBqczogXCJ1aWRcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwibnVtZXJvXCIsIGpzOiBcIm51bWVyb1wiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImxlZ2lzbGF0dXJlXCIsIGpzOiBcImxlZ2lzbGF0dXJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInNlc3Npb25SZWZcIiwganM6IFwic2Vzc2lvblJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJzZWFuY2VSZWZcIiwganM6IFwic2VhbmNlUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRhdGVTY3J1dGluXCIsIGpzOiBcImRhdGVTY3J1dGluXCIsIHR5cDogRGF0ZSB9LFxuICAgICAgeyBqc29uOiBcInF1YW50aWVtZUpvdXJTZWFuY2VcIiwganM6IFwicXVhbnRpZW1lSm91clNlYW5jZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJ0eXBlVm90ZVwiLCBqczogXCJ0eXBlVm90ZVwiLCB0eXA6IHIoXCJUeXBlVm90ZVwiKSB9LFxuICAgICAgeyBqc29uOiBcInNvcnRcIiwganM6IFwic29ydFwiLCB0eXA6IHIoXCJTb3J0U2NydXRpblwiKSB9LFxuICAgICAgeyBqc29uOiBcInRpdHJlXCIsIGpzOiBcInRpdHJlXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImRlbWFuZGV1clwiLCBqczogXCJkZW1hbmRldXJcIiwgdHlwOiByKFwiRGVtYW5kZXVyXCIpIH0sXG4gICAgICB7IGpzb246IFwib2JqZXRcIiwganM6IFwib2JqZXRcIiwgdHlwOiByKFwiT2JqZXRcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICBqczogXCJtb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiLFxuICAgICAgICB0eXA6IHIoXCJNb2RlUHVibGljYXRpb25EZXNWb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwic3ludGhlc2VWb3RlXCIsIGpzOiBcInN5bnRoZXNlVm90ZVwiLCB0eXA6IHIoXCJTeW50aGVzZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJ2ZW50aWxhdGlvblZvdGVzXCIsXG4gICAgICAgIGpzOiBcInZlbnRpbGF0aW9uVm90ZXNcIixcbiAgICAgICAgdHlwOiByKFwiVmVudGlsYXRpb25Wb3Rlc1wiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwibWlzZUF1UG9pbnRcIixcbiAgICAgICAganM6IFwibWlzZUF1UG9pbnRcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIk1pc2VBdVBvaW50XCIpKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwibGlldVZvdGVcIiwganM6IFwibGlldVZvdGVcIiwgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkxpZXVWb3RlXCIpKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIERlbWFuZGV1cjogbyhbeyBqc29uOiBcInRleHRlXCIsIGpzOiBcInRleHRlXCIsIHR5cDogdSh1bmRlZmluZWQsIFwiXCIpIH1dLCBmYWxzZSksXG4gIE1pc2VBdVBvaW50OiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcImR5c2ZvbmN0aW9ubmVtZW50XCIsXG4gICAgICAgIGpzOiBcImR5c2ZvbmN0aW9ubmVtZW50XCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIHIoXCJEeXNmb25jdGlvbm5lbWVudFwiKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIER5c2ZvbmN0aW9ubmVtZW50OiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJub25Wb3RhbnRzXCIsXG4gICAgICAgIGpzOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcInBvdXJcIixcbiAgICAgICAganM6IFwicG91clwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY29udHJlXCIsXG4gICAgICAgIGpzOiBcImNvbnRyZVwiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAganM6IFwiYWJzdGVudGlvbnNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgYShyKFwiVm90YW50XCIpKSksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIE9iamV0OiBvKFt7IGpzb246IFwibGliZWxsZVwiLCBqczogXCJsaWJlbGxlXCIsIHR5cDogXCJcIiB9XSwgZmFsc2UpLFxuICBTb3J0U2NydXRpbjogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiY29kZVwiLCBqczogXCJjb2RlXCIsIHR5cDogcihcIkNvZGVcIikgfSxcbiAgICAgIHsganNvbjogXCJsaWJlbGxlXCIsIGpzOiBcImxpYmVsbGVcIiwgdHlwOiByKFwiTGliZWxsZVwiKSB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIFN5bnRoZXNlVm90ZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwibm9tYnJlVm90YW50c1wiLCBqczogXCJub21icmVWb3RhbnRzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcInN1ZmZyYWdlc0V4cHJpbWVzXCIsIGpzOiBcInN1ZmZyYWdlc0V4cHJpbWVzXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm5iclN1ZmZyYWdlc1JlcXVpc1wiLCBqczogXCJuYnJTdWZmcmFnZXNSZXF1aXNcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiYW5ub25jZVwiLCBqczogXCJhbm5vbmNlXCIsIHR5cDogcihcIkxpYmVsbGVcIikgfSxcbiAgICAgIHsganNvbjogXCJkZWNvbXB0ZVwiLCBqczogXCJkZWNvbXB0ZVwiLCB0eXA6IHIoXCJEZWNvbXB0ZVZvaXhcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBUeXBlVm90ZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwiY29kZVR5cGVWb3RlXCIsIGpzOiBcImNvZGVUeXBlVm90ZVwiLCB0eXA6IHIoXCJDb2RlVHlwZVZvdGVcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJsaWJlbGxlVHlwZVZvdGVcIixcbiAgICAgICAganM6IFwibGliZWxsZVR5cGVWb3RlXCIsXG4gICAgICAgIHR5cDogcihcIkxpYmVsbGVUeXBlVm90ZVwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwidHlwZU1ham9yaXRlXCIsIGpzOiBcInR5cGVNYWpvcml0ZVwiLCB0eXA6IHIoXCJUeXBlTWFqb3JpdGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBWZW50aWxhdGlvblZvdGVzOiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJvcmdhbmVSZWZcIiwganM6IFwib3JnYW5lUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcImdyb3VwZXNcIiwganM6IFwiZ3JvdXBlc1wiLCB0eXA6IGEocihcIlZlbnRpbGF0aW9uVm90ZXNHcm91cGVcIikpIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVmVudGlsYXRpb25Wb3Rlc0dyb3VwZTogbyhcbiAgICBbXG4gICAgICB7IGpzb246IFwib3JnYW5lUmVmXCIsIGpzOiBcIm9yZ2FuZVJlZlwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJub21icmVNZW1icmVzR3JvdXBlXCIsIGpzOiBcIm5vbWJyZU1lbWJyZXNHcm91cGVcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwidm90ZVwiLCBqczogXCJ2b3RlXCIsIHR5cDogcihcIlZvdGVcIikgfSxcbiAgICBdLFxuICAgIGZhbHNlLFxuICApLFxuICBWb3RlOiBvKFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJwb3NpdGlvbk1ham9yaXRhaXJlXCIsXG4gICAgICAgIGpzOiBcInBvc2l0aW9uTWFqb3JpdGFpcmVcIixcbiAgICAgICAgdHlwOiByKFwiUG9zaXRpb25NYWpvcml0YWlyZVwiKSxcbiAgICAgIH0sXG4gICAgICB7IGpzb246IFwiZGVjb21wdGVWb2l4XCIsIGpzOiBcImRlY29tcHRlVm9peFwiLCB0eXA6IHIoXCJEZWNvbXB0ZVZvaXhcIikgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLFxuICAgICAgICBqczogXCJkZWNvbXB0ZU5vbWluYXRpZlwiLFxuICAgICAgICB0eXA6IHIoXCJEZWNvbXB0ZU5vbWluYXRpZlwiKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRGVjb21wdGVOb21pbmF0aWY6IG8oXG4gICAgW1xuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNcIixcbiAgICAgICAganM6IFwibm9uVm90YW50c1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwicG91clwiLFxuICAgICAgICBqczogXCJwb3VyXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJjb250cmVcIixcbiAgICAgICAganM6IFwiY29udHJlXCIsXG4gICAgICAgIHR5cDogdSh1bmRlZmluZWQsIGEocihcIlZvdGFudFwiKSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAganNvbjogXCJhYnN0ZW50aW9uc1wiLFxuICAgICAgICBqczogXCJhYnN0ZW50aW9uc1wiLFxuICAgICAgICB0eXA6IHUodW5kZWZpbmVkLCBhKHIoXCJWb3RhbnRcIikpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgVm90YW50OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJhY3RldXJSZWZcIiwganM6IFwiYWN0ZXVyUmVmXCIsIHR5cDogXCJcIiB9LFxuICAgICAgeyBqc29uOiBcIm1hbmRhdFJlZlwiLCBqczogXCJtYW5kYXRSZWZcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwicGFyRGVsZWdhdGlvblwiLCBqczogXCJwYXJEZWxlZ2F0aW9uXCIsIHR5cDogdSh1bmRlZmluZWQsIGZhbHNlKSB9LFxuICAgICAgeyBqc29uOiBcIm51bVBsYWNlXCIsIGpzOiBcIm51bVBsYWNlXCIsIHR5cDogdSh1bmRlZmluZWQsIDApIH0sXG4gICAgICB7XG4gICAgICAgIGpzb246IFwiY2F1c2VQb3NpdGlvblZvdGVcIixcbiAgICAgICAganM6IFwiY2F1c2VQb3NpdGlvblZvdGVcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgcihcIkNhdXNlUG9zaXRpb25Wb3RlXCIpKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBmYWxzZSxcbiAgKSxcbiAgRGVjb21wdGVWb2l4OiBvKFxuICAgIFtcbiAgICAgIHsganNvbjogXCJwb3VyXCIsIGpzOiBcInBvdXJcIiwgdHlwOiBcIlwiIH0sXG4gICAgICB7IGpzb246IFwiY29udHJlXCIsIGpzOiBcImNvbnRyZVwiLCB0eXA6IFwiXCIgfSxcbiAgICAgIHsganNvbjogXCJub25Wb3RhbnRzXCIsIGpzOiBcIm5vblZvdGFudHNcIiwgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIikgfSxcbiAgICAgIHsganNvbjogXCJhYnN0ZW50aW9uc1wiLCBqczogXCJhYnN0ZW50aW9uc1wiLCB0eXA6IHUodW5kZWZpbmVkLCBcIlwiKSB9LFxuICAgICAge1xuICAgICAgICBqc29uOiBcIm5vblZvdGFudHNWb2xvbnRhaXJlc1wiLFxuICAgICAgICBqczogXCJub25Wb3RhbnRzVm9sb250YWlyZXNcIixcbiAgICAgICAgdHlwOiB1KHVuZGVmaW5lZCwgXCJcIiksXG4gICAgICB9LFxuICAgIF0sXG4gICAgZmFsc2UsXG4gICksXG4gIE1vZGVQdWJsaWNhdGlvbkRlc1ZvdGVzOiBbXG4gICAgXCJEZWNvbXB0ZURpc3NpZGVudHNQb3NpdGlvbkdyb3VwZVwiLFxuICAgIFwiRGVjb21wdGVOb21pbmF0aWZcIixcbiAgXSxcbiAgQ29kZTogW1wiYWRvcHTDqVwiLCBcInJlamV0w6lcIl0sXG4gIExpYmVsbGU6IFtcbiAgICBcImwnQXNzZW1ibMOpZSBuYXRpb25hbGUgYSBhZG9wdMOpXCIsXG4gICAgXCJMJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlIG4nYSBwYXMgYWRvcHTDqVwiLFxuICAgIFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IGEgYWRvcHTDqVwiLFxuICAgIFwiTGUgQ29uZ3LDqHMgZHUgUGFybGVtZW50IG4nYSBwYXMgYWRvcHTDqVwiLFxuICBdLFxuICBDb2RlVHlwZVZvdGU6IFtcIk1PQ1wiLCBcIlNBVFwiLCBcIlNQT1wiLCBcIlNQU1wiLCBcIlNTR1wiXSxcbiAgTGliZWxsZVR5cGVWb3RlOiBbXG4gICAgXCJtb3Rpb24gZGUgY2Vuc3VyZVwiLFxuICAgIFwic2NydXRpbiBwdWJsaWMgb3JkaW5haXJlXCIsXG4gICAgXCJzY3J1dGluIHB1YmxpYyBzb2xlbm5lbFwiLFxuICAgIFwic2NydXRpbiDDoCBsYSB0cmlidW5lXCIsXG4gICAgXCJTY3J1dGluIHNvbGVubmVsIGNvbmdyw6hzXCIsXG4gIF0sXG4gIFR5cGVNYWpvcml0ZTogW1xuICAgIFwiTWFqb3JpdMOpIGFic29sdWUgZGVzIHN1ZmZyYWdlcyBleHByaW3DqXNcIixcbiAgICBcIm1ham9yaXTDqSBhYnNvbHVlIGRlcyBzdWZmcmFnZXMgZXhwcmltw6lzXCIsXG4gICAgXCJtYWpvcml0w6kgZGVzIG1lbWJyZXMgY29tcG9zYW50IGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIixcbiAgICBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWVcIixcbiAgICBcIm1ham9yaXTDqSBkZXMgbWVtYnJlcyBjb21wb3NhbnRzIGNvbXBvc2FudCBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCIsXG4gICAgXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuIENvbmdyw6hzXCIsXG4gICAgXCJNYWpvcml0w6kgcmVxdWlzZSBwb3VyIHVuZSBtb3Rpb24gZGUgY2Vuc3VyZVwiLFxuICBdLFxuICBDYXVzZVBvc2l0aW9uVm90ZTogW1wiTUdcIiwgXCJQQU5cIiwgXCJQU0VcIl0sXG4gIFBvc2l0aW9uTWFqb3JpdGFpcmU6IFtcImFic3RlbnRpb25cIiwgXCJjb250cmVcIiwgXCJwb3VyXCJdLFxuICBMaWV1Vm90ZTogW1wiQ29uZ3LDqHNcIiwgXCJIw6ltaWN5Y2xlXCIsIFwiU2Fsb25zXCJdLFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWlEQSxXQUFZQSx1QkFBdUIsMEJBQXZCQSx1QkFBdUI7RUFBdkJBLHVCQUF1QjtFQUF2QkEsdUJBQXVCO0VBQUEsT0FBdkJBLHVCQUF1QjtBQUFBO0FBY25DLFdBQVlDLElBQUksMEJBQUpBLElBQUk7RUFBSkEsSUFBSTtFQUFKQSxJQUFJO0VBQUEsT0FBSkEsSUFBSTtBQUFBO0FBS2hCLFdBQVlDLE9BQU8sMEJBQVBBLE9BQU87RUFBUEEsT0FBTztFQUFQQSxPQUFPO0VBQVBBLE9BQU87RUFBUEEsT0FBTztFQUFBLE9BQVBBLE9BQU87QUFBQTtBQXFCbkIsV0FBWUMsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBQSxPQUFaQSxZQUFZO0FBQUE7QUFReEIsV0FBWUMsZUFBZSwwQkFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBZkEsZUFBZTtFQUFmQSxlQUFlO0VBQWZBLGVBQWU7RUFBQSxPQUFmQSxlQUFlO0FBQUE7QUFRM0IsV0FBWUMsWUFBWSwwQkFBWkEsWUFBWTtFQUFaQSxZQUFZO0VBQVpBLFlBQVk7RUFBWkEsWUFBWTtFQUFaQSxZQUFZ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RUFBRSxFQUFFLE1BQU07SUFBRVgsR0FBRyxFQUFFO0VBQUcsQ0FBQyxFQUNyQztJQUFFWixJQUFJLEVBQUUsUUFBUTtJQUFFdUIsRUFBRSxFQUFFLFFBQVE7SUFBRVgsR0FBRyxFQUFFO0VBQUcsQ0FBQyxFQUN6QztJQUFFWixJQUFJLEVBQUUsWUFBWTtJQUFFdUIsRUFBRSxFQUFFLFlBQVk7SUFBRVgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFBRSxDQUFDLEVBQy9EO0lBQUVsQixJQUFJLEVBQUUsYUFBYTtJQUFFdUIsRUFBRSxFQUFFLGFBQWE7SUFBRVgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFBRSxDQUFDLEVBQ2pFO0lBQ0VsQixJQUFJLEVBQUUsdUJBQXVCO0lBQzdCdUIsRUFBRSxFQUFFLHVCQUF1QjtJQUMzQlgsR0FBRyxFQUFFa0QsQ0FBQyxDQUFDNUMsU0FBUyxFQUFFLEVBQUU7RUFDdEIsQ0FBQyxDQUNGLEVBQ0QsS0FDRixDQUFDO0VBQ0Q3Qix1QkFBdUIsRUFBRSxDQUN2QixrQ0FBa0MsRUFDbEMsbUJBQW1CLENBQ3BCO0VBQ0RDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7RUFDMUJDLE9BQU8sRUFBRSxDQUNQLGdDQUFnQyxFQUNoQyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHdDQUF3QyxDQUN6QztFQUNEQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0VBQ2pEQyxlQUFlLEVBQUUsQ0FDZixtQkFBbUIsRUFDbkIsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIsMEJBQTBCLENBQzNCO0VBQ0RDLFlBQVksRUFBRSxDQUNaLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsc0RBQXNELEVBQ3RELHVEQUF1RCxFQUN2RCxpRUFBaUUsRUFDakUsa0NBQWtDLEVBQ2xDLDZDQUE2QyxDQUM5QztFQUNEQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0VBQ3ZDQyxtQkFBbUIsRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO0VBQ3JEQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVE7QUFDN0MsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==