@tricoteuses/senat 1.3.1 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/lib/config.d.ts +1 -0
  2. package/lib/config.js +14 -45
  3. package/lib/databases.js +86 -143
  4. package/lib/datasets.js +78 -83
  5. package/lib/index.d.ts +12 -4
  6. package/lib/index.js +42 -419
  7. package/lib/loaders.js +149 -654
  8. package/lib/model/ameli.js +83 -21
  9. package/lib/model/debats.js +0 -1
  10. package/lib/model/dosleg.d.ts +1 -1
  11. package/lib/model/dosleg.js +179 -73
  12. package/lib/model/index.d.ts +3 -3
  13. package/lib/model/index.js +12 -46
  14. package/lib/model/questions.js +68 -39
  15. package/lib/model/sens.d.ts +1 -1
  16. package/lib/model/sens.js +383 -113
  17. package/lib/model/texte.js +220 -290
  18. package/lib/model/util.js +9 -26
  19. package/lib/raw_types/ameli.js +5 -6
  20. package/lib/raw_types/debats.js +5 -6
  21. package/lib/raw_types/dosleg.js +5 -6
  22. package/lib/raw_types/questions.js +5 -6
  23. package/lib/raw_types/sens.js +5 -6
  24. package/lib/raw_types_schemats/ameli.js +1 -43
  25. package/lib/raw_types_schemats/debats.js +1 -22
  26. package/lib/raw_types_schemats/dosleg.js +1 -96
  27. package/lib/raw_types_schemats/questions.js +1 -22
  28. package/lib/raw_types_schemats/sens.js +1 -112
  29. package/lib/scripts/convert_data.js +181 -631
  30. package/lib/scripts/datautil.js +17 -60
  31. package/lib/scripts/parse_textes.js +46 -129
  32. package/lib/scripts/retrieve_documents.js +247 -513
  33. package/lib/scripts/retrieve_open_data.js +211 -368
  34. package/lib/scripts/retrieve_senateurs_photos.js +144 -239
  35. package/lib/scripts/shared/cli_helpers.js +30 -30
  36. package/lib/scripts/shared/util.js +28 -94
  37. package/lib/strings.js +20 -45
  38. package/lib/types/ameli.d.ts +1 -1
  39. package/lib/types/ameli.js +14 -25
  40. package/lib/types/debats.d.ts +1 -1
  41. package/lib/types/debats.js +3 -21
  42. package/lib/types/dosleg.d.ts +1 -1
  43. package/lib/types/dosleg.js +152 -119
  44. package/lib/types/questions.d.ts +1 -1
  45. package/lib/types/questions.js +1 -13
  46. package/lib/types/sens.d.ts +1 -1
  47. package/lib/types/sens.js +1 -13
  48. package/lib/types/sessions.js +44 -49
  49. package/lib/types/texte.js +17 -22
  50. package/lib/validators/config.js +47 -111
  51. package/lib/validators/senat.js +1 -5
  52. package/package.json +18 -40
  53. package/lib/aggregates.d.ts +0 -52
  54. package/lib/aggregates.mjs +0 -930
  55. package/lib/aggregates.ts +0 -833
  56. package/lib/config.mjs +0 -16
  57. package/lib/config.ts +0 -26
  58. package/lib/data/legislatures.json +0 -38
  59. package/lib/databases.mjs +0 -57
  60. package/lib/databases.ts +0 -71
  61. package/lib/datasets.mjs +0 -78
  62. package/lib/datasets.ts +0 -118
  63. package/lib/fields.d.ts +0 -10
  64. package/lib/fields.mjs +0 -68
  65. package/lib/fields.ts +0 -29
  66. package/lib/index.mjs +0 -4
  67. package/lib/index.ts +0 -42
  68. package/lib/inserters.d.ts +0 -98
  69. package/lib/inserters.mjs +0 -500
  70. package/lib/inserters.ts +0 -521
  71. package/lib/loaders.mjs +0 -158
  72. package/lib/loaders.ts +0 -271
  73. package/lib/model/ameli.mjs +0 -84
  74. package/lib/model/ameli.ts +0 -100
  75. package/lib/model/debats.mjs +0 -1
  76. package/lib/model/debats.ts +0 -0
  77. package/lib/model/dosleg.mjs +0 -196
  78. package/lib/model/dosleg.ts +0 -240
  79. package/lib/model/index.mjs +0 -4
  80. package/lib/model/index.ts +0 -14
  81. package/lib/model/questions.mjs +0 -71
  82. package/lib/model/questions.ts +0 -93
  83. package/lib/model/sens.mjs +0 -415
  84. package/lib/model/sens.ts +0 -516
  85. package/lib/model/texte.mjs +0 -208
  86. package/lib/model/texte.ts +0 -229
  87. package/lib/model/util.mjs +0 -19
  88. package/lib/model/util.ts +0 -32
  89. package/lib/raw_types/ameli.mjs +0 -5
  90. package/lib/raw_types/ameli.ts +0 -951
  91. package/lib/raw_types/debats.mjs +0 -5
  92. package/lib/raw_types/debats.ts +0 -222
  93. package/lib/raw_types/dosleg.mjs +0 -5
  94. package/lib/raw_types/dosleg.ts +0 -3625
  95. package/lib/raw_types/questions.mjs +0 -5
  96. package/lib/raw_types/questions.ts +0 -427
  97. package/lib/raw_types/sens.mjs +0 -5
  98. package/lib/raw_types/sens.ts +0 -4499
  99. package/lib/raw_types_kysely/ameli.d.ts +0 -6
  100. package/lib/raw_types_kysely/ameli.mjs +0 -7
  101. package/lib/raw_types_kysely/ameli.ts +0 -6
  102. package/lib/raw_types_kysely/debats.d.ts +0 -6
  103. package/lib/raw_types_kysely/debats.mjs +0 -7
  104. package/lib/raw_types_kysely/debats.ts +0 -6
  105. package/lib/raw_types_kysely/dosleg.d.ts +0 -6
  106. package/lib/raw_types_kysely/dosleg.mjs +0 -7
  107. package/lib/raw_types_kysely/dosleg.ts +0 -6
  108. package/lib/raw_types_kysely/questions.d.ts +0 -6
  109. package/lib/raw_types_kysely/questions.mjs +0 -7
  110. package/lib/raw_types_kysely/questions.ts +0 -6
  111. package/lib/raw_types_kysely/sens.d.ts +0 -6
  112. package/lib/raw_types_kysely/sens.mjs +0 -7
  113. package/lib/raw_types_kysely/sens.ts +0 -6
  114. package/lib/raw_types_kysely/texte.d.ts +0 -45
  115. package/lib/raw_types_kysely/texte.mjs +0 -7
  116. package/lib/raw_types_kysely/texte.ts +0 -53
  117. package/lib/raw_types_schemats/ameli.mjs +0 -2
  118. package/lib/raw_types_schemats/ameli.ts +0 -601
  119. package/lib/raw_types_schemats/debats.mjs +0 -2
  120. package/lib/raw_types_schemats/debats.ts +0 -145
  121. package/lib/raw_types_schemats/dosleg.mjs +0 -2
  122. package/lib/raw_types_schemats/dosleg.ts +0 -2195
  123. package/lib/raw_types_schemats/questions.mjs +0 -2
  124. package/lib/raw_types_schemats/questions.ts +0 -251
  125. package/lib/raw_types_schemats/sens.mjs +0 -2
  126. package/lib/raw_types_schemats/sens.ts +0 -2907
  127. package/lib/scripts/convert_data.mjs +0 -181
  128. package/lib/scripts/convert_data.ts +0 -243
  129. package/lib/scripts/datautil.mjs +0 -16
  130. package/lib/scripts/datautil.ts +0 -19
  131. package/lib/scripts/images/transparent_150x192.jpg +0 -0
  132. package/lib/scripts/images/transparent_155x225.jpg +0 -0
  133. package/lib/scripts/parse_textes.mjs +0 -46
  134. package/lib/scripts/parse_textes.ts +0 -65
  135. package/lib/scripts/retrieve_documents.mjs +0 -249
  136. package/lib/scripts/retrieve_documents.ts +0 -298
  137. package/lib/scripts/retrieve_open_data.mjs +0 -217
  138. package/lib/scripts/retrieve_open_data.ts +0 -274
  139. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
  140. package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
  141. package/lib/scripts/retrieve_textes.d.ts +0 -1
  142. package/lib/scripts/retrieve_textes.mjs +0 -328
  143. package/lib/scripts/retrieve_textes.ts +0 -143
  144. package/lib/scripts/shared/cli_helpers.ts +0 -36
  145. package/lib/scripts/shared/util.ts +0 -33
  146. package/lib/src/aggregates.d.ts +0 -52
  147. package/lib/src/aggregates.mjs +0 -726
  148. package/lib/src/config.d.ts +0 -2
  149. package/lib/src/config.mjs +0 -16
  150. package/lib/src/databases.d.ts +0 -18
  151. package/lib/src/databases.mjs +0 -55
  152. package/lib/src/datasets.d.ts +0 -28
  153. package/lib/src/datasets.mjs +0 -78
  154. package/lib/src/fields.d.ts +0 -10
  155. package/lib/src/fields.mjs +0 -22
  156. package/lib/src/index.d.ts +0 -8
  157. package/lib/src/index.mjs +0 -7
  158. package/lib/src/inserters.d.ts +0 -98
  159. package/lib/src/inserters.mjs +0 -360
  160. package/lib/src/loaders.d.ts +0 -36
  161. package/lib/src/loaders.mjs +0 -107
  162. package/lib/src/model/ameli.d.ts +0 -4
  163. package/lib/src/model/ameli.js +0 -57
  164. package/lib/src/model/debats.d.ts +0 -4
  165. package/lib/src/model/debats.js +0 -43
  166. package/lib/src/model/dosleg.d.ts +0 -197
  167. package/lib/src/model/dosleg.js +0 -169
  168. package/lib/src/model/index.d.ts +0 -4
  169. package/lib/src/model/index.js +0 -4
  170. package/lib/src/model/questions.d.ts +0 -89
  171. package/lib/src/model/questions.js +0 -76
  172. package/lib/src/model/sens.d.ts +0 -390
  173. package/lib/src/model/sens.js +0 -339
  174. package/lib/src/model/texte.d.ts +0 -7
  175. package/lib/src/model/texte.js +0 -183
  176. package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
  177. package/lib/src/raw_types_kysely/ameli.js +0 -5
  178. package/lib/src/raw_types_kysely/debats.d.ts +0 -207
  179. package/lib/src/raw_types_kysely/debats.js +0 -5
  180. package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
  181. package/lib/src/raw_types_kysely/dosleg.js +0 -5
  182. package/lib/src/raw_types_kysely/questions.d.ts +0 -414
  183. package/lib/src/raw_types_kysely/questions.js +0 -5
  184. package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
  185. package/lib/src/raw_types_kysely/sens.js +0 -5
  186. package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
  187. package/lib/src/raw_types_schemats/ameli.js +0 -2
  188. package/lib/src/raw_types_schemats/debats.d.ts +0 -127
  189. package/lib/src/raw_types_schemats/debats.js +0 -2
  190. package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
  191. package/lib/src/raw_types_schemats/dosleg.js +0 -2
  192. package/lib/src/raw_types_schemats/questions.d.ts +0 -231
  193. package/lib/src/raw_types_schemats/questions.js +0 -2
  194. package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
  195. package/lib/src/raw_types_schemats/sens.js +0 -2
  196. package/lib/src/scripts/convert_data.d.ts +0 -1
  197. package/lib/src/scripts/convert_data.js +0 -95
  198. package/lib/src/scripts/datautil.d.ts +0 -5
  199. package/lib/src/scripts/datautil.js +0 -16
  200. package/lib/src/scripts/parse_textes.d.ts +0 -1
  201. package/lib/src/scripts/parse_textes.js +0 -47
  202. package/lib/src/scripts/retrieve_documents.d.ts +0 -1
  203. package/lib/src/scripts/retrieve_documents.js +0 -258
  204. package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
  205. package/lib/src/scripts/retrieve_open_data.js +0 -214
  206. package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
  207. package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
  208. package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
  209. package/lib/src/scripts/shared/cli_helpers.js +0 -32
  210. package/lib/src/scripts/shared/util.d.ts +0 -3
  211. package/lib/src/scripts/shared/util.js +0 -28
  212. package/lib/src/strings.d.ts +0 -1
  213. package/lib/src/strings.mjs +0 -18
  214. package/lib/src/types/ameli.d.ts +0 -10
  215. package/lib/src/types/ameli.js +0 -13
  216. package/lib/src/types/debats.d.ts +0 -4
  217. package/lib/src/types/debats.js +0 -2
  218. package/lib/src/types/dosleg.d.ts +0 -98
  219. package/lib/src/types/dosleg.js +0 -151
  220. package/lib/src/types/questions.d.ts +0 -2
  221. package/lib/src/types/questions.js +0 -1
  222. package/lib/src/types/sens.d.ts +0 -10
  223. package/lib/src/types/sens.js +0 -1
  224. package/lib/src/types/sessions.d.ts +0 -42
  225. package/lib/src/types/sessions.js +0 -43
  226. package/lib/src/types/texte.d.ts +0 -61
  227. package/lib/src/types/texte.js +0 -16
  228. package/lib/src/validators/config.d.ts +0 -1
  229. package/lib/src/validators/config.js +0 -54
  230. package/lib/src/validators/senat.d.ts +0 -0
  231. package/lib/src/validators/senat.js +0 -24
  232. package/lib/strings.mjs +0 -18
  233. package/lib/strings.ts +0 -26
  234. package/lib/types/ameli.mjs +0 -13
  235. package/lib/types/ameli.ts +0 -21
  236. package/lib/types/debats.mjs +0 -2
  237. package/lib/types/debats.ts +0 -6
  238. package/lib/types/dosleg.mjs +0 -151
  239. package/lib/types/dosleg.ts +0 -284
  240. package/lib/types/questions.mjs +0 -1
  241. package/lib/types/questions.ts +0 -3
  242. package/lib/types/sens.mjs +0 -1
  243. package/lib/types/sens.ts +0 -12
  244. package/lib/types/sessions.mjs +0 -43
  245. package/lib/types/sessions.ts +0 -42
  246. package/lib/types/texte.mjs +0 -16
  247. package/lib/types/texte.ts +0 -76
  248. package/lib/typings/windows-1252.d.js +0 -2
  249. package/lib/typings/windows-1252.d.mjs +0 -2
  250. package/lib/typings/windows-1252.d.ts +0 -11
  251. package/lib/validators/config.mjs +0 -54
  252. package/lib/validators/config.ts +0 -79
  253. package/lib/validators/senat.mjs +0 -24
  254. package/lib/validators/senat.ts +0 -26
@@ -1,250 +1,155 @@
1
1
  "use strict";
2
-
3
- require("core-js/modules/es.symbol.js");
4
- require("core-js/modules/es.symbol.description.js");
5
- require("core-js/modules/es.symbol.iterator.js");
6
- require("core-js/modules/es.array.for-each.js");
7
- require("core-js/modules/es.array.from.js");
8
- require("core-js/modules/es.array.is-array.js");
9
- require("core-js/modules/es.date.to-string.js");
10
- require("core-js/modules/es.function.name.js");
11
- require("core-js/modules/es.object.create.js");
12
- require("core-js/modules/es.object.define-property.js");
13
- require("core-js/modules/es.object.get-prototype-of.js");
14
- require("core-js/modules/es.object.set-prototype-of.js");
15
- require("core-js/modules/es.regexp.exec.js");
16
- require("core-js/modules/es.regexp.to-string.js");
17
- require("core-js/modules/web.dom-collections.for-each.js");
18
- require("core-js/modules/es.array.concat.js");
19
- require("core-js/modules/es.array.iterator.js");
20
- require("core-js/modules/es.array.join.js");
21
- require("core-js/modules/es.array.slice.js");
22
- require("core-js/modules/es.date.to-json.js");
23
- require("core-js/modules/es.object.to-string.js");
24
- require("core-js/modules/es.promise.js");
25
- require("core-js/modules/es.string.iterator.js");
26
- require("core-js/modules/web.dom-collections.iterator.js");
27
- var _assert = _interopRequireDefault(require("assert"));
28
- var _child_process = require("child_process");
29
- var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
30
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
31
- var _path = _interopRequireDefault(require("path"));
32
- var _sens = require("../model/sens");
33
- var _strings = require("../strings");
34
- var _cli_helpers = require("./shared/cli_helpers");
35
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
36
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof Symbol ? Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { Object.defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = Object.getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(l); function g(t) { ["next", "throw", "return"].forEach(function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], t.forEach(w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), c(GeneratorFunctionPrototype, u, GeneratorFunction.displayName = "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = Object.create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; }
37
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
38
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
39
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
40
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
41
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
42
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
43
- function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
44
- function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
45
- function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
46
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
47
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
48
- function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
49
- function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
50
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // import fetch from "node-fetch"
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const assert_1 = __importDefault(require("assert"));
7
+ const child_process_1 = require("child_process");
8
+ const command_line_args_1 = __importDefault(require("command-line-args"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ // import fetch from "node-fetch"
11
+ const path_1 = __importDefault(require("path"));
51
12
  // import stream from "stream"
52
13
  // import util from "util"
53
- var optionsDefinitions = [].concat(_toConsumableArray(_cli_helpers.commonOptions), [{
54
- alias: "f",
55
- help: "fetch sénateurs' pictures instead of retrieving them from files",
56
- name: "fetch",
57
- type: Boolean
58
- }]);
59
- var options = (0, _commandLineArgs["default"])(optionsDefinitions);
14
+ const sens_1 = require("../model/sens");
15
+ const strings_1 = require("../strings");
16
+ const cli_helpers_1 = require("./shared/cli_helpers");
17
+ const optionsDefinitions = [
18
+ ...cli_helpers_1.commonOptions,
19
+ {
20
+ alias: "f",
21
+ help: "fetch sénateurs' pictures instead of retrieving them from files",
22
+ name: "fetch",
23
+ type: Boolean,
24
+ },
25
+ ];
26
+ const options = (0, command_line_args_1.default)(optionsDefinitions);
60
27
  // const pipeline = util.promisify(stream.pipeline)
61
- function retrievePhotosSenateurs() {
62
- return _retrievePhotosSenateurs.apply(this, arguments);
63
- }
64
- function _retrievePhotosSenateurs() {
65
- _retrievePhotosSenateurs = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
66
- var dataDir, photosDir, missingPhotoFilePath, sens, _iterator, _step, sen, photoStem, photoFilename, photoFilePath, photoTempFilename, photoTempFilePath, urlPhoto, _iterator2, _step2, _sen2, _photoStem2, _photoFilename2, _photoFilePath, photoBySenmat, rowsFilenames, senIndex, rowIndex, row, photosFilenames, _iterator3, _step3, _step3$value, columnIndex, _sen, _photoStem, _photoFilename, rowFilename, _i, _rowsFilenames, _rowFilename, jsonFilePath;
67
- return _regeneratorRuntime().wrap(function _callee$(_context) {
68
- while (1) switch (_context.prev = _context.next) {
69
- case 0:
70
- dataDir = options.dataDir;
71
- (0, _assert["default"])(dataDir, "Missing argument: data directory");
72
- photosDir = _path["default"].join(dataDir, "photos_senateurs");
73
- missingPhotoFilePath = _path["default"].resolve(__dirname, "images", "transparent_155x225.jpg");
74
- _context.next = 6;
75
- return Array.fromAsync((0, _sens.findActif)());
76
- case 6:
77
- sens = _context.sent;
78
- // Download photos.
79
- _fsExtra["default"].ensureDirSync(photosDir);
80
- if (!options.fetch) {
81
- _context.next = 42;
82
- break;
83
- }
84
- _iterator = _createForOfIteratorHelper(sens);
85
- _context.prev = 10;
86
- _iterator.s();
87
- case 12:
88
- if ((_step = _iterator.n()).done) {
89
- _context.next = 34;
90
- break;
91
- }
92
- sen = _step.value;
93
- photoStem = "".concat((0, _strings.slugify)(sen.sennomuse, "_"), "_").concat((0, _strings.slugify)(sen.senprenomuse, "_")).concat((0, _strings.slugify)(sen.senmat, "_"));
94
- photoFilename = photoStem + ".jpg";
95
- photoFilePath = _path["default"].join(photosDir, photoFilename);
96
- photoTempFilename = photoStem + "_temp.jpg";
97
- photoTempFilePath = _path["default"].join(photosDir, photoTempFilename);
98
- urlPhoto = "https://www.senat.fr/senimg/".concat(photoFilename);
99
- if (!options.silent) {
100
- console.log("Loading photo ".concat(urlPhoto, " for ").concat(sen.senprenomuse, " ").concat(sen.sennomuse, "\u2026"));
101
- }
102
- // Fetch fails with OpenSSL error: dh key too small.
103
- // (so does "curl").
104
- // for (let retries = 0; retries < 3; retries++) {
105
- // const response = await fetch(urlPhoto)
106
- // if (response.ok) {
107
- // await pipeline(response.body, fs.createWriteStream(photoTempFilePath))
108
- // fs.renameSync(photoTempFilePath, photoFilePath)
109
- // break
110
- // }
111
- // if (retries >= 2) {
112
- // console.warn(`Fetch failed: ${urlPhoto} (${sen.senprenomuse} ${sen.sennomuse})`)
113
- // console.warn(response.status, response.statusText)
114
- // console.warn(await response.text())
115
- // if (fs.existsSync(photoFilePath)) {
116
- // console.warn(" => Reusing existing image")
117
- // } else {
118
- // console.warn(" => Using blank image")
119
- // fs.copyFileSync(missingPhotoFilePath, photoFilePath)
120
- // }
121
- // break
122
- // }
123
- // }
124
- _context.prev = 21;
125
- (0, _child_process.execSync)("wget --quiet -O ".concat(photoTempFilename, " ").concat(urlPhoto), {
126
- cwd: photosDir,
127
- env: process.env,
128
- encoding: "utf-8"
129
- // stdio: ["ignore", "ignore", "pipe"],
130
- });
131
- _fsExtra["default"].renameSync(photoTempFilePath, photoFilePath);
132
- _context.next = 32;
133
- break;
134
- case 26:
135
- _context.prev = 26;
136
- _context.t0 = _context["catch"](21);
137
- if (!(_typeof(_context.t0) === "object" && _context.t0 && "status" in _context.t0 && _context.t0.status === 8)) {
138
- _context.next = 31;
139
- break;
140
- }
141
- console.error("Unable to load photo for ".concat(sen.senprenomuse, " ").concat(sen.sennomuse));
142
- return _context.abrupt("continue", 32);
143
- case 31:
144
- throw _context.t0;
145
- case 32:
146
- _context.next = 12;
147
- break;
148
- case 34:
149
- _context.next = 39;
150
- break;
151
- case 36:
152
- _context.prev = 36;
153
- _context.t1 = _context["catch"](10);
154
- _iterator.e(_context.t1);
155
- case 39:
156
- _context.prev = 39;
157
- _iterator.f();
158
- return _context.finish(39);
159
- case 42:
160
- // Resize photos to 155x225, because some haven't exactly this size.
161
- _iterator2 = _createForOfIteratorHelper(sens);
162
- try {
163
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
164
- _sen2 = _step2.value;
165
- _photoStem2 = "".concat((0, _strings.slugify)(_sen2.sennomuse, "_"), "_").concat((0, _strings.slugify)(_sen2.senprenomuse, "_")).concat((0, _strings.slugify)(_sen2.senmat, "_"));
166
- _photoFilename2 = _photoStem2 + ".jpg";
167
- _photoFilePath = _path["default"].join(photosDir, _photoFilename2);
168
- if (_fsExtra["default"].existsSync(_photoFilePath)) {
169
- if (!options.silent) {
170
- console.log("Resizing photo ".concat(_photoStem2, " for ").concat(_sen2.senprenomuse, " ").concat(_sen2.sennomuse, "\u2026"));
171
- }
172
- (0, _child_process.execSync)("gm convert -resize 155x225! ".concat(_photoStem2, ".jpg ").concat(_photoStem2, "_155x225.jpg"), {
173
- cwd: photosDir
28
+ async function retrievePhotosSenateurs() {
29
+ const dataDir = options["dataDir"];
30
+ (0, assert_1.default)(dataDir, "Missing argument: data directory");
31
+ const photosDir = path_1.default.join(dataDir, "photos_senateurs");
32
+ const missingPhotoFilePath = path_1.default.resolve(__dirname, "images", "transparent_155x225.jpg");
33
+ const sens = await Array.fromAsync((0, sens_1.findActif)());
34
+ // Download photos.
35
+ fs_extra_1.default.ensureDirSync(photosDir);
36
+ if (options["fetch"]) {
37
+ for (const sen of sens) {
38
+ const photoStem = `${(0, strings_1.slugify)(sen.sennomuse, "_")}_${(0, strings_1.slugify)(sen.senprenomuse, "_")}${(0, strings_1.slugify)(sen.senmat, "_")}`;
39
+ const photoFilename = photoStem + ".jpg";
40
+ const photoFilePath = path_1.default.join(photosDir, photoFilename);
41
+ const photoTempFilename = photoStem + "_temp.jpg";
42
+ const photoTempFilePath = path_1.default.join(photosDir, photoTempFilename);
43
+ const urlPhoto = `https://www.senat.fr/senimg/${photoFilename}`;
44
+ if (!options["silent"]) {
45
+ console.log(`Loading photo ${urlPhoto} for ${sen.senprenomuse} ${sen.sennomuse}…`);
46
+ }
47
+ // Fetch fails with OpenSSL error: dh key too small.
48
+ // (so does "curl").
49
+ // for (let retries = 0; retries < 3; retries++) {
50
+ // const response = await fetch(urlPhoto)
51
+ // if (response.ok) {
52
+ // await pipeline(response.body, fs.createWriteStream(photoTempFilePath))
53
+ // fs.renameSync(photoTempFilePath, photoFilePath)
54
+ // break
55
+ // }
56
+ // if (retries >= 2) {
57
+ // console.warn(`Fetch failed: ${urlPhoto} (${sen.senprenomuse} ${sen.sennomuse})`)
58
+ // console.warn(response.status, response.statusText)
59
+ // console.warn(await response.text())
60
+ // if (fs.existsSync(photoFilePath)) {
61
+ // console.warn(" => Reusing existing image")
62
+ // } else {
63
+ // console.warn(" => Using blank image")
64
+ // fs.copyFileSync(missingPhotoFilePath, photoFilePath)
65
+ // }
66
+ // break
67
+ // }
68
+ // }
69
+ try {
70
+ (0, child_process_1.execSync)(`wget --quiet -O ${photoTempFilename} ${urlPhoto}`, {
71
+ cwd: photosDir,
72
+ env: process.env,
73
+ encoding: "utf-8",
74
+ // stdio: ["ignore", "ignore", "pipe"],
174
75
  });
175
- } else {
176
- if (!options.silent) {
177
- console.warn("Missing photo for ".concat(_sen2.senprenomuse, " ").concat(_sen2.sennomuse, ": using blank image"));
76
+ fs_extra_1.default.renameSync(photoTempFilePath, photoFilePath);
77
+ }
78
+ catch (error) {
79
+ if (typeof error === "object" &&
80
+ error &&
81
+ "status" in error &&
82
+ error.status === 8) {
83
+ console.error(`Unable to load photo for ${sen.senprenomuse} ${sen.sennomuse}`);
84
+ continue;
178
85
  }
179
- _fsExtra["default"].copyFileSync(missingPhotoFilePath, _path["default"].join(photosDir, "".concat(_photoStem2, "_155x225.jpg")));
180
- }
86
+ throw error;
181
87
  }
182
-
183
- // Create a mosaic of photos.
184
- } catch (err) {
185
- _iterator2.e(err);
186
- } finally {
187
- _iterator2.f();
188
- }
189
- if (!options.silent) {
190
- console.log("Creating mosaic of photos…");
191
- }
192
- photoBySenmat = {};
193
- rowsFilenames = [];
194
- for (senIndex = 0, rowIndex = 0; senIndex < sens.length; senIndex += 25, rowIndex++) {
195
- row = sens.slice(senIndex, senIndex + 25);
196
- photosFilenames = [];
197
- _iterator3 = _createForOfIteratorHelper(row.entries());
198
- try {
199
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
200
- _step3$value = _slicedToArray(_step3.value, 2), columnIndex = _step3$value[0], _sen = _step3$value[1];
201
- _photoStem = "".concat((0, _strings.slugify)(_sen.sennomuse, "_"), "_").concat((0, _strings.slugify)(_sen.senprenomuse, "_")).concat((0, _strings.slugify)(_sen.senmat, "_"));
202
- _photoFilename = "".concat(_photoStem, "_155x225.jpg");
203
- photosFilenames.push(_photoFilename);
204
- photoBySenmat[_sen.senmat] = {
205
- chemin: "photos_senateurs/".concat(_photoFilename),
206
- cheminMosaique: "photos_senateurs/senateurs.jpg",
207
- hauteur: 225,
208
- largeur: 155,
209
- xMosaique: columnIndex * 155,
210
- yMosaique: rowIndex * 225
211
- };
212
- }
213
- } catch (err) {
214
- _iterator3.e(err);
215
- } finally {
216
- _iterator3.f();
88
+ }
89
+ }
90
+ // Resize photos to 155x225, because some haven't exactly this size.
91
+ for (const sen of sens) {
92
+ const photoStem = `${(0, strings_1.slugify)(sen.sennomuse, "_")}_${(0, strings_1.slugify)(sen.senprenomuse, "_")}${(0, strings_1.slugify)(sen.senmat, "_")}`;
93
+ const photoFilename = photoStem + ".jpg";
94
+ const photoFilePath = path_1.default.join(photosDir, photoFilename);
95
+ if (fs_extra_1.default.existsSync(photoFilePath)) {
96
+ if (!options["silent"]) {
97
+ console.log(`Resizing photo ${photoStem} for ${sen.senprenomuse} ${sen.sennomuse}…`);
217
98
  }
218
- rowFilename = "row-".concat(rowIndex, ".jpg");
219
- (0, _child_process.execSync)("gm convert ".concat(photosFilenames.join(" "), " +append ").concat(rowFilename), {
220
- cwd: photosDir
99
+ (0, child_process_1.execSync)(`gm convert -resize 155x225! ${photoStem}.jpg ${photoStem}_155x225.jpg`, {
100
+ cwd: photosDir,
221
101
  });
222
- rowsFilenames.push(rowFilename);
223
- }
224
- (0, _child_process.execSync)("gm convert ".concat(rowsFilenames.join(" "), " -append senateurs.jpg"), {
225
- cwd: photosDir
226
- });
227
- for (_i = 0, _rowsFilenames = rowsFilenames; _i < _rowsFilenames.length; _i++) {
228
- _rowFilename = _rowsFilenames[_i];
229
- _fsExtra["default"].unlinkSync(_path["default"].join(photosDir, _rowFilename));
230
- }
231
- if (!options.silent) {
232
- console.log("Creating JSON file containing informations on all pictures…");
233
- }
234
- jsonFilePath = _path["default"].join(photosDir, "senateurs.json");
235
- _fsExtra["default"].writeFileSync(jsonFilePath, JSON.stringify(photoBySenmat, null, 2));
236
- case 53:
237
- case "end":
238
- return _context.stop();
239
- }
240
- }, _callee, null, [[10, 36, 39, 42], [21, 26]]);
241
- }));
242
- return _retrievePhotosSenateurs.apply(this, arguments);
102
+ }
103
+ else {
104
+ if (!options["silent"]) {
105
+ console.warn(`Missing photo for ${sen.senprenomuse} ${sen.sennomuse}: using blank image`);
106
+ }
107
+ fs_extra_1.default.copyFileSync(missingPhotoFilePath, path_1.default.join(photosDir, `${photoStem}_155x225.jpg`));
108
+ }
109
+ }
110
+ // Create a mosaic of photos.
111
+ if (!options["silent"]) {
112
+ console.log("Creating mosaic of photos…");
113
+ }
114
+ const photoBySenmat = {};
115
+ const rowsFilenames = [];
116
+ for (let senIndex = 0, rowIndex = 0; senIndex < sens.length; senIndex += 25, rowIndex++) {
117
+ const row = sens.slice(senIndex, senIndex + 25);
118
+ const photosFilenames = [];
119
+ for (const [columnIndex, sen] of row.entries()) {
120
+ const photoStem = `${(0, strings_1.slugify)(sen.sennomuse, "_")}_${(0, strings_1.slugify)(sen.senprenomuse, "_")}${(0, strings_1.slugify)(sen.senmat, "_")}`;
121
+ const photoFilename = `${photoStem}_155x225.jpg`;
122
+ photosFilenames.push(photoFilename);
123
+ photoBySenmat[sen.senmat] = {
124
+ chemin: `photos_senateurs/${photoFilename}`,
125
+ cheminMosaique: "photos_senateurs/senateurs.jpg",
126
+ hauteur: 225,
127
+ largeur: 155,
128
+ xMosaique: columnIndex * 155,
129
+ yMosaique: rowIndex * 225,
130
+ };
131
+ }
132
+ const rowFilename = `row-${rowIndex}.jpg`;
133
+ (0, child_process_1.execSync)(`gm convert ${photosFilenames.join(" ")} +append ${rowFilename}`, {
134
+ cwd: photosDir,
135
+ });
136
+ rowsFilenames.push(rowFilename);
137
+ }
138
+ (0, child_process_1.execSync)(`gm convert ${rowsFilenames.join(" ")} -append senateurs.jpg`, {
139
+ cwd: photosDir,
140
+ });
141
+ for (const rowFilename of rowsFilenames) {
142
+ fs_extra_1.default.unlinkSync(path_1.default.join(photosDir, rowFilename));
143
+ }
144
+ if (!options["silent"]) {
145
+ console.log("Creating JSON file containing informations on all pictures…");
146
+ }
147
+ const jsonFilePath = path_1.default.join(photosDir, "senateurs.json");
148
+ fs_extra_1.default.writeFileSync(jsonFilePath, JSON.stringify(photoBySenmat, null, 2));
243
149
  }
244
- retrievePhotosSenateurs().then(function () {
245
- return process.exit(0);
246
- })["catch"](function (error) {
247
- console.log(error);
248
- process.exit(1);
150
+ retrievePhotosSenateurs()
151
+ .then(() => process.exit(0))
152
+ .catch((error) => {
153
+ console.log(error);
154
+ process.exit(1);
249
155
  });
250
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX3NlbnMiLCJfc3RyaW5ncyIsIl9jbGlfaGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInIiLCJ0IiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsIlN5bWJvbCIsImkiLCJpdGVyYXRvciIsImEiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiYyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJoIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiYXJnIiwiZGVsZWdhdGUiLCJkIiwiZiIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicyIsInR5cGUiLCJDb250ZXh0IiwiY2FsbCIsIndyYXAiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwibCIsInAiLCJnZXRQcm90b3R5cGVPZiIsInkiLCJ4IiwidiIsImciLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiVHlwZUVycm9yIiwibmV4dCIsInciLCJ0cnlFbnRyaWVzIiwicHVzaCIsIm0iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwidW5zaGlmdCIsInBvcCIsInZhbHVlcyIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3NsaWNlZFRvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiQXJyYXkiLCJpc0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfbiIsIkYiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiY29uY2F0IiwiY29tbW9uT3B0aW9ucyIsImFsaWFzIiwiaGVscCIsIkJvb2xlYW4iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwicmV0cmlldmVQaG90b3NTZW5hdGV1cnMiLCJfcmV0cmlldmVQaG90b3NTZW5hdGV1cnMiLCJfY2FsbGVlIiwiZGF0YURpciIsInBob3Rvc0RpciIsIm1pc3NpbmdQaG90b0ZpbGVQYXRoIiwic2VucyIsIl9pdGVyYXRvciIsIl9zdGVwIiwic2VuIiwicGhvdG9TdGVtIiwicGhvdG9GaWxlbmFtZSIsInBob3RvRmlsZVBhdGgiLCJwaG90b1RlbXBGaWxlbmFtZSIsInBob3RvVGVtcEZpbGVQYXRoIiwidXJsUGhvdG8iLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3NlbjIiLCJfcGhvdG9TdGVtMiIsIl9waG90b0ZpbGVuYW1lMiIsIl9waG90b0ZpbGVQYXRoIiwicGhvdG9CeVNlbm1hdCIsInJvd3NGaWxlbmFtZXMiLCJzZW5JbmRleCIsInJvd0luZGV4Iiwicm93IiwicGhvdG9zRmlsZW5hbWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9zdGVwMyR2YWx1ZSIsImNvbHVtbkluZGV4IiwiX3NlbiIsIl9waG90b1N0ZW0iLCJfcGhvdG9GaWxlbmFtZSIsInJvd0ZpbGVuYW1lIiwiX2kiLCJfcm93c0ZpbGVuYW1lcyIsIl9yb3dGaWxlbmFtZSIsImpzb25GaWxlUGF0aCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJhc3NlcnQiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsImZyb21Bc3luYyIsImZpbmRBY3RpZlNlbmF0ZXVycyIsImZzIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwic2x1Z2lmeSIsInNlbm5vbXVzZSIsInNlbnByZW5vbXVzZSIsInNlbm1hdCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInJlbmFtZVN5bmMiLCJ0MCIsInN0YXR1cyIsImVycm9yIiwidDEiLCJleGlzdHNTeW5jIiwid2FybiIsImNvcHlGaWxlU3luYyIsImVyciIsImVudHJpZXMiLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwidW5saW5rU3luYyIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX3NlbmF0ZXVyc19waG90b3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG4vLyBpbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuLy8gaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbi8vIGltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgZmluZEFjdGlmIGFzIGZpbmRBY3RpZlNlbmF0ZXVycyB9IGZyb20gXCIuLi9tb2RlbC9zZW5zXCJcbmltcG9ydCB7IHNsdWdpZnkgfSBmcm9tIFwiLi4vc3RyaW5nc1wiXG5pbXBvcnQgeyBQaG90byB9IGZyb20gXCIuLi90eXBlcy9zZW5zXCJcbmltcG9ydCB7IGNvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIC4uLmNvbW1vbk9wdGlvbnMsXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJmZXRjaCBzw6luYXRldXJzJyBwaWN0dXJlcyBpbnN0ZWFkIG9mIHJldHJpZXZpbmcgdGhlbSBmcm9tIGZpbGVzXCIsXG4gICAgbmFtZTogXCJmZXRjaFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcbi8vIGNvbnN0IHBpcGVsaW5lID0gdXRpbC5wcm9taXNpZnkoc3RyZWFtLnBpcGVsaW5lKVxuXG5hc3luYyBmdW5jdGlvbiByZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBhc3NlcnQoZGF0YURpciwgXCJNaXNzaW5nIGFyZ3VtZW50OiBkYXRhIGRpcmVjdG9yeVwiKVxuXG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBcInBob3Rvc19zZW5hdGV1cnNcIilcbiAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcImltYWdlc1wiLCBcInRyYW5zcGFyZW50XzE1NXgyMjUuanBnXCIpXG5cbiAgY29uc3Qgc2VucyA9IGF3YWl0IEFycmF5LmZyb21Bc3luYyhmaW5kQWN0aWZTZW5hdGV1cnMoKSlcblxuICAvLyBEb3dubG9hZCBwaG90b3MuXG4gIGZzLmVuc3VyZURpclN5bmMocGhvdG9zRGlyKVxuICBpZiAob3B0aW9ucy5mZXRjaCkge1xuICAgIGZvciAoY29uc3Qgc2VuIG9mIHNlbnMpIHtcbiAgICAgIGNvbnN0IHBob3RvU3RlbSA9IGAke3NsdWdpZnkoc2VuLnNlbm5vbXVzZSwgXCJfXCIpfV8ke3NsdWdpZnkoXG4gICAgICAgIHNlbi5zZW5wcmVub211c2UsXG4gICAgICAgIFwiX1wiLFxuICAgICAgKX0ke3NsdWdpZnkoc2VuLnNlbm1hdCwgXCJfXCIpfWBcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBwaG90b1N0ZW0gKyBcIi5qcGdcIlxuICAgICAgY29uc3QgcGhvdG9GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvRmlsZW5hbWUpXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlbmFtZSA9IHBob3RvU3RlbSArIFwiX3RlbXAuanBnXCJcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwczovL3d3dy5zZW5hdC5mci9zZW5pbWcvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7c2VuLnNlbnByZW5vbXVzZX0gJHtzZW4uc2Vubm9tdXNlfeKApmAsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIC8vIEZldGNoIGZhaWxzIHdpdGggT3BlblNTTCBlcnJvcjogZGgga2V5IHRvbyBzbWFsbC5cbiAgICAgIC8vIChzbyBkb2VzIFwiY3VybFwiKS5cbiAgICAgIC8vIGZvciAobGV0IHJldHJpZXMgPSAwOyByZXRyaWVzIDwgMzsgcmV0cmllcysrKSB7XG4gICAgICAvLyAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsUGhvdG8pXG4gICAgICAvLyAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgLy8gICAgIGF3YWl0IHBpcGVsaW5lKHJlc3BvbnNlLmJvZHksIGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHBob3RvVGVtcEZpbGVQYXRoKSlcbiAgICAgIC8vICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgaWYgKHJldHJpZXMgPj0gMikge1xuICAgICAgLy8gICAgIGNvbnNvbGUud2FybihgRmV0Y2ggZmFpbGVkOiAke3VybFBob3RvfSAoJHtzZW4uc2VucHJlbm9tdXNlfSAke3Nlbi5zZW5ub211c2V9KWApXG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgLy8gICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgd2dldCAtLXF1aWV0IC1PICR7cGhvdG9UZW1wRmlsZW5hbWV9ICR7dXJsUGhvdG99YCwge1xuICAgICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICAvLyBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgZXJyb3IgJiYgXCJzdGF0dXNcIiBpbiBlcnJvciAmJiBlcnJvci5zdGF0dXMgPT09IDgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBVbmFibGUgdG8gbG9hZCBwaG90byBmb3IgJHtzZW4uc2VucHJlbm9tdXNlfSAke3Nlbi5zZW5ub211c2V9YClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplIHBob3RvcyB0byAxNTV4MjI1LCBiZWNhdXNlIHNvbWUgaGF2ZW4ndCBleGFjdGx5IHRoaXMgc2l6ZS5cbiAgZm9yIChjb25zdCBzZW4gb2Ygc2Vucykge1xuICAgIGNvbnN0IHBob3RvU3RlbSA9IGAke3NsdWdpZnkoc2VuLnNlbm5vbXVzZSwgXCJfXCIpfV8ke3NsdWdpZnkoXG4gICAgICBzZW4uc2VucHJlbm9tdXNlLFxuICAgICAgXCJfXCIsXG4gICAgKX0ke3NsdWdpZnkoc2VuLnNlbm1hdCwgXCJfXCIpfWBcbiAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gcGhvdG9TdGVtICsgXCIuanBnXCJcbiAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwaG90b0ZpbGVQYXRoKSkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtwaG90b1N0ZW19IGZvciAke3Nlbi5zZW5wcmVub211c2V9ICR7c2VuLnNlbm5vbXVzZX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGV4ZWNTeW5jKFxuICAgICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1NXgyMjUhICR7cGhvdG9TdGVtfS5qcGcgJHtwaG90b1N0ZW19XzE1NXgyMjUuanBnYCxcbiAgICAgICAge1xuICAgICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgTWlzc2luZyBwaG90byBmb3IgJHtzZW4uc2VucHJlbm9tdXNlfSAke3Nlbi5zZW5ub211c2V9OiB1c2luZyBibGFuayBpbWFnZWApXG4gICAgICB9XG4gICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBhdGguam9pbihwaG90b3NEaXIsIGAke3Bob3RvU3RlbX1fMTU1eDIyNS5qcGdgKSlcbiAgICB9XG4gIH1cblxuICAvLyBDcmVhdGUgYSBtb3NhaWMgb2YgcGhvdG9zLlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coXCJDcmVhdGluZyBtb3NhaWMgb2YgcGhvdG9z4oCmXCIpXG4gIH1cbiAgY29uc3QgcGhvdG9CeVNlbm1hdDogeyBbc2VubWF0OiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgY29uc3Qgcm93c0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICBmb3IgKFxuICAgIGxldCBzZW5JbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBzZW5JbmRleCA8IHNlbnMubGVuZ3RoO1xuICAgIHNlbkluZGV4ICs9IDI1LCByb3dJbmRleCsrXG4gICkge1xuICAgIGNvbnN0IHJvdyA9IHNlbnMuc2xpY2Uoc2VuSW5kZXgsIHNlbkluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIHNlbl0gb2Ygcm93LmVudHJpZXMoKSkge1xuICAgICAgY29uc3QgcGhvdG9TdGVtID0gYCR7c2x1Z2lmeShzZW4uc2Vubm9tdXNlLCBcIl9cIil9XyR7c2x1Z2lmeShcbiAgICAgICAgc2VuLnNlbnByZW5vbXVzZSxcbiAgICAgICAgXCJfXCIsXG4gICAgICApfSR7c2x1Z2lmeShzZW4uc2VubWF0LCBcIl9cIil9YFxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3Bob3RvU3RlbX1fMTU1eDIyNS5qcGdgXG4gICAgICBwaG90b3NGaWxlbmFtZXMucHVzaChwaG90b0ZpbGVuYW1lKVxuICAgICAgcGhvdG9CeVNlbm1hdFtzZW4uc2VubWF0XSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX3NlbmF0ZXVycy8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IFwicGhvdG9zX3NlbmF0ZXVycy9zZW5hdGV1cnMuanBnXCIsXG4gICAgICAgIGhhdXRldXI6IDIyNSxcbiAgICAgICAgbGFyZ2V1cjogMTU1LFxuICAgICAgICB4TW9zYWlxdWU6IGNvbHVtbkluZGV4ICogMTU1LFxuICAgICAgICB5TW9zYWlxdWU6IHJvd0luZGV4ICogMjI1LFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCByb3dGaWxlbmFtZSA9IGByb3ctJHtyb3dJbmRleH0uanBnYFxuICAgIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cGhvdG9zRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSArYXBwZW5kICR7cm93RmlsZW5hbWV9YCwge1xuICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgfSlcbiAgICByb3dzRmlsZW5hbWVzLnB1c2gocm93RmlsZW5hbWUpXG4gIH1cbiAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtyb3dzRmlsZW5hbWVzLmpvaW4oXCIgXCIpfSAtYXBwZW5kIHNlbmF0ZXVycy5qcGdgLCB7XG4gICAgY3dkOiBwaG90b3NEaXIsXG4gIH0pXG4gIGZvciAoY29uc3Qgcm93RmlsZW5hbWUgb2Ygcm93c0ZpbGVuYW1lcykge1xuICAgIGZzLnVubGlua1N5bmMocGF0aC5qb2luKHBob3Rvc0Rpciwgcm93RmlsZW5hbWUpKVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRpbmcgSlNPTiBmaWxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb25zIG9uIGFsbCBwaWN0dXJlc+KAplwiKVxuICB9XG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwic2VuYXRldXJzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlTZW5tYXQsIG51bGwsIDIpKVxufVxuXG5yZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycygpXG4gIC50aGVuKCgpID0+IHByb2Nlc3MuZXhpdCgwKSlcbiAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGdCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFKLHNC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
@@ -1,35 +1,35 @@
1
1
  "use strict";
2
-
3
- require("core-js/modules/es.object.define-property.js");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.verboseOption = exports.silentOption = exports.dataDirDefaultOption = exports.commonOptions = exports.categoriesOption = void 0;
8
- var categoriesOption = exports.categoriesOption = {
9
- alias: "k",
10
- defaultValue: ["All"],
11
- help: "categories of datasets to reorganize",
12
- multiple: true,
13
- name: "categories",
14
- type: String
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commonOptions = exports.verboseOption = exports.silentOption = exports.dataDirDefaultOption = exports.categoriesOption = void 0;
4
+ exports.categoriesOption = {
5
+ alias: "k",
6
+ defaultValue: ["All"],
7
+ help: "categories of datasets to reorganize",
8
+ multiple: true,
9
+ name: "categories",
10
+ type: String,
15
11
  };
16
- var dataDirDefaultOption = exports.dataDirDefaultOption = {
17
- defaultOption: true,
18
- help: "directory containing Sénat open data files",
19
- name: "dataDir",
20
- type: String
12
+ exports.dataDirDefaultOption = {
13
+ defaultOption: true,
14
+ help: "directory containing Sénat open data files",
15
+ name: "dataDir",
16
+ type: String,
21
17
  };
22
- var silentOption = exports.silentOption = {
23
- alias: "s",
24
- help: "don't log anything",
25
- name: "silent",
26
- type: Boolean
18
+ exports.silentOption = {
19
+ alias: "s",
20
+ help: "don't log anything",
21
+ name: "silent",
22
+ type: Boolean,
27
23
  };
28
- var verboseOption = exports.verboseOption = {
29
- alias: "v",
30
- help: "verbose logs",
31
- name: "verbose",
32
- type: Boolean
24
+ exports.verboseOption = {
25
+ alias: "v",
26
+ help: "verbose logs",
27
+ name: "verbose",
28
+ type: Boolean,
33
29
  };
34
- var commonOptions = exports.commonOptions = [categoriesOption, dataDirDefaultOption, silentOption, verboseOption];
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjYXRlZ29yaWVzT3B0aW9uIiwiZXhwb3J0cyIsImFsaWFzIiwiZGVmYXVsdFZhbHVlIiwiaGVscCIsIm11bHRpcGxlIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsImRlZmF1bHRPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJCb29sZWFuIiwidmVyYm9zZU9wdGlvbiIsImNvbW1vbk9wdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2NyaXB0cy9zaGFyZWQvY2xpX2hlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNhdGVnb3JpZXNPcHRpb24gPSB7XG4gIGFsaWFzOiBcImtcIixcbiAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gIGhlbHA6IFwiY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZW9yZ2FuaXplXCIsXG4gIG11bHRpcGxlOiB0cnVlLFxuICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgdHlwZTogU3RyaW5nLFxufVxuXG5leHBvcnQgY29uc3QgZGF0YURpckRlZmF1bHRPcHRpb24gPSB7XG4gIGRlZmF1bHRPcHRpb246IHRydWUsXG4gIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgU8OpbmF0IG9wZW4gZGF0YSBmaWxlc1wiLFxuICBuYW1lOiBcImRhdGFEaXJcIixcbiAgdHlwZTogU3RyaW5nLFxufVxuXG5leHBvcnQgY29uc3Qgc2lsZW50T3B0aW9uID0ge1xuICBhbGlhczogXCJzXCIsXG4gIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gIG5hbWU6IFwic2lsZW50XCIsXG4gIHR5cGU6IEJvb2xlYW4sXG59XG5cbmV4cG9ydCBjb25zdCB2ZXJib3NlT3B0aW9uID0ge1xuICBhbGlhczogXCJ2XCIsXG4gIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gIG5hbWU6IFwidmVyYm9zZVwiLFxuICB0eXBlOiBCb29sZWFuLFxufVxuXG5leHBvcnQgY29uc3QgY29tbW9uT3B0aW9ucyA9IFtcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgdmVyYm9zZU9wdGlvbixcbl1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQU1BLGdCQUFnQixHQUFBQyxPQUFBLENBQUFELGdCQUFBLEdBQUc7RUFDOUJFLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQztFQUNyQkMsSUFBSSxFQUFFLHNDQUFzQztFQUM1Q0MsUUFBUSxFQUFFLElBQUk7RUFDZEMsSUFBSSxFQUFFLFlBQVk7RUFDbEJDLElBQUksRUFBRUM7QUFDUixDQUFDO0FBRU0sSUFBTUMsb0JBQW9CLEdBQUFSLE9BQUEsQ0FBQVEsb0JBQUEsR0FBRztFQUNsQ0MsYUFBYSxFQUFFLElBQUk7RUFDbkJOLElBQUksRUFBRSw0Q0FBNEM7RUFDbERFLElBQUksRUFBRSxTQUFTO0VBQ2ZDLElBQUksRUFBRUM7QUFDUixDQUFDO0FBRU0sSUFBTUcsWUFBWSxHQUFBVixPQUFBLENBQUFVLFlBQUEsR0FBRztFQUMxQlQsS0FBSyxFQUFFLEdBQUc7RUFDVkUsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkUsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFSztBQUNSLENBQUM7QUFFTSxJQUFNQyxhQUFhLEdBQUFaLE9BQUEsQ0FBQVksYUFBQSxHQUFHO0VBQzNCWCxLQUFLLEVBQUUsR0FBRztFQUNWRSxJQUFJLEVBQUUsY0FBYztFQUNwQkUsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFSztBQUNSLENBQUM7QUFFTSxJQUFNRSxhQUFhLEdBQUFiLE9BQUEsQ0FBQWEsYUFBQSxHQUFHLENBQzNCZCxnQkFBZ0IsRUFDaEJTLG9CQUFvQixFQUNwQkUsWUFBWSxFQUNaRSxhQUFhLENBQ2QiLCJpZ25vcmVMaXN0IjpbXX0=
30
+ exports.commonOptions = [
31
+ exports.categoriesOption,
32
+ exports.dataDirDefaultOption,
33
+ exports.silentOption,
34
+ exports.verboseOption,
35
+ ];