@tricoteuses/senat 1.3.1 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.d.ts +1 -0
- package/lib/config.js +14 -45
- package/lib/databases.js +86 -143
- package/lib/datasets.js +78 -83
- package/lib/index.d.ts +12 -4
- package/lib/index.js +42 -419
- package/lib/loaders.js +149 -654
- package/lib/model/ameli.js +83 -21
- package/lib/model/debats.js +0 -1
- package/lib/model/dosleg.d.ts +1 -1
- package/lib/model/dosleg.js +179 -73
- package/lib/model/index.d.ts +3 -3
- package/lib/model/index.js +12 -46
- package/lib/model/questions.js +68 -39
- package/lib/model/sens.d.ts +1 -1
- package/lib/model/sens.js +383 -113
- package/lib/model/texte.js +220 -290
- package/lib/model/util.js +9 -26
- package/lib/raw_types/ameli.js +5 -6
- package/lib/raw_types/debats.js +5 -6
- package/lib/raw_types/dosleg.js +5 -6
- package/lib/raw_types/questions.js +5 -6
- package/lib/raw_types/sens.js +5 -6
- package/lib/raw_types_schemats/ameli.js +1 -43
- package/lib/raw_types_schemats/debats.js +1 -22
- package/lib/raw_types_schemats/dosleg.js +1 -96
- package/lib/raw_types_schemats/questions.js +1 -22
- package/lib/raw_types_schemats/sens.js +1 -112
- package/lib/scripts/convert_data.js +181 -631
- package/lib/scripts/datautil.js +17 -60
- package/lib/scripts/parse_textes.js +46 -129
- package/lib/scripts/retrieve_documents.js +247 -513
- package/lib/scripts/retrieve_open_data.js +211 -368
- package/lib/scripts/retrieve_senateurs_photos.js +144 -239
- package/lib/scripts/shared/cli_helpers.js +30 -30
- package/lib/scripts/shared/util.js +28 -94
- package/lib/strings.js +20 -45
- package/lib/types/ameli.d.ts +1 -1
- package/lib/types/ameli.js +14 -25
- package/lib/types/debats.d.ts +1 -1
- package/lib/types/debats.js +3 -21
- package/lib/types/dosleg.d.ts +1 -1
- package/lib/types/dosleg.js +152 -119
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +1 -13
- package/lib/types/sens.d.ts +1 -1
- package/lib/types/sens.js +1 -13
- package/lib/types/sessions.js +44 -49
- package/lib/types/texte.js +17 -22
- package/lib/validators/config.js +47 -111
- package/lib/validators/senat.js +1 -5
- package/package.json +18 -40
- package/lib/aggregates.d.ts +0 -52
- package/lib/aggregates.mjs +0 -930
- package/lib/aggregates.ts +0 -833
- package/lib/config.mjs +0 -16
- package/lib/config.ts +0 -26
- package/lib/data/legislatures.json +0 -38
- package/lib/databases.mjs +0 -57
- package/lib/databases.ts +0 -71
- package/lib/datasets.mjs +0 -78
- package/lib/datasets.ts +0 -118
- package/lib/fields.d.ts +0 -10
- package/lib/fields.mjs +0 -68
- package/lib/fields.ts +0 -29
- package/lib/index.mjs +0 -4
- package/lib/index.ts +0 -42
- package/lib/inserters.d.ts +0 -98
- package/lib/inserters.mjs +0 -500
- package/lib/inserters.ts +0 -521
- package/lib/loaders.mjs +0 -158
- package/lib/loaders.ts +0 -271
- package/lib/model/ameli.mjs +0 -84
- package/lib/model/ameli.ts +0 -100
- package/lib/model/debats.mjs +0 -1
- package/lib/model/debats.ts +0 -0
- package/lib/model/dosleg.mjs +0 -196
- package/lib/model/dosleg.ts +0 -240
- package/lib/model/index.mjs +0 -4
- package/lib/model/index.ts +0 -14
- package/lib/model/questions.mjs +0 -71
- package/lib/model/questions.ts +0 -93
- package/lib/model/sens.mjs +0 -415
- package/lib/model/sens.ts +0 -516
- package/lib/model/texte.mjs +0 -208
- package/lib/model/texte.ts +0 -229
- package/lib/model/util.mjs +0 -19
- package/lib/model/util.ts +0 -32
- package/lib/raw_types/ameli.mjs +0 -5
- package/lib/raw_types/ameli.ts +0 -951
- package/lib/raw_types/debats.mjs +0 -5
- package/lib/raw_types/debats.ts +0 -222
- package/lib/raw_types/dosleg.mjs +0 -5
- package/lib/raw_types/dosleg.ts +0 -3625
- package/lib/raw_types/questions.mjs +0 -5
- package/lib/raw_types/questions.ts +0 -427
- package/lib/raw_types/sens.mjs +0 -5
- package/lib/raw_types/sens.ts +0 -4499
- package/lib/raw_types_kysely/ameli.d.ts +0 -6
- package/lib/raw_types_kysely/ameli.mjs +0 -7
- package/lib/raw_types_kysely/ameli.ts +0 -6
- package/lib/raw_types_kysely/debats.d.ts +0 -6
- package/lib/raw_types_kysely/debats.mjs +0 -7
- package/lib/raw_types_kysely/debats.ts +0 -6
- package/lib/raw_types_kysely/dosleg.d.ts +0 -6
- package/lib/raw_types_kysely/dosleg.mjs +0 -7
- package/lib/raw_types_kysely/dosleg.ts +0 -6
- package/lib/raw_types_kysely/questions.d.ts +0 -6
- package/lib/raw_types_kysely/questions.mjs +0 -7
- package/lib/raw_types_kysely/questions.ts +0 -6
- package/lib/raw_types_kysely/sens.d.ts +0 -6
- package/lib/raw_types_kysely/sens.mjs +0 -7
- package/lib/raw_types_kysely/sens.ts +0 -6
- package/lib/raw_types_kysely/texte.d.ts +0 -45
- package/lib/raw_types_kysely/texte.mjs +0 -7
- package/lib/raw_types_kysely/texte.ts +0 -53
- package/lib/raw_types_schemats/ameli.mjs +0 -2
- package/lib/raw_types_schemats/ameli.ts +0 -601
- package/lib/raw_types_schemats/debats.mjs +0 -2
- package/lib/raw_types_schemats/debats.ts +0 -145
- package/lib/raw_types_schemats/dosleg.mjs +0 -2
- package/lib/raw_types_schemats/dosleg.ts +0 -2195
- package/lib/raw_types_schemats/questions.mjs +0 -2
- package/lib/raw_types_schemats/questions.ts +0 -251
- package/lib/raw_types_schemats/sens.mjs +0 -2
- package/lib/raw_types_schemats/sens.ts +0 -2907
- package/lib/scripts/convert_data.mjs +0 -181
- package/lib/scripts/convert_data.ts +0 -243
- package/lib/scripts/datautil.mjs +0 -16
- package/lib/scripts/datautil.ts +0 -19
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.mjs +0 -46
- package/lib/scripts/parse_textes.ts +0 -65
- package/lib/scripts/retrieve_documents.mjs +0 -249
- package/lib/scripts/retrieve_documents.ts +0 -298
- package/lib/scripts/retrieve_open_data.mjs +0 -217
- package/lib/scripts/retrieve_open_data.ts +0 -274
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
- package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
- package/lib/scripts/retrieve_textes.d.ts +0 -1
- package/lib/scripts/retrieve_textes.mjs +0 -328
- package/lib/scripts/retrieve_textes.ts +0 -143
- package/lib/scripts/shared/cli_helpers.ts +0 -36
- package/lib/scripts/shared/util.ts +0 -33
- package/lib/src/aggregates.d.ts +0 -52
- package/lib/src/aggregates.mjs +0 -726
- package/lib/src/config.d.ts +0 -2
- package/lib/src/config.mjs +0 -16
- package/lib/src/databases.d.ts +0 -18
- package/lib/src/databases.mjs +0 -55
- package/lib/src/datasets.d.ts +0 -28
- package/lib/src/datasets.mjs +0 -78
- package/lib/src/fields.d.ts +0 -10
- package/lib/src/fields.mjs +0 -22
- package/lib/src/index.d.ts +0 -8
- package/lib/src/index.mjs +0 -7
- package/lib/src/inserters.d.ts +0 -98
- package/lib/src/inserters.mjs +0 -360
- package/lib/src/loaders.d.ts +0 -36
- package/lib/src/loaders.mjs +0 -107
- package/lib/src/model/ameli.d.ts +0 -4
- package/lib/src/model/ameli.js +0 -57
- package/lib/src/model/debats.d.ts +0 -4
- package/lib/src/model/debats.js +0 -43
- package/lib/src/model/dosleg.d.ts +0 -197
- package/lib/src/model/dosleg.js +0 -169
- package/lib/src/model/index.d.ts +0 -4
- package/lib/src/model/index.js +0 -4
- package/lib/src/model/questions.d.ts +0 -89
- package/lib/src/model/questions.js +0 -76
- package/lib/src/model/sens.d.ts +0 -390
- package/lib/src/model/sens.js +0 -339
- package/lib/src/model/texte.d.ts +0 -7
- package/lib/src/model/texte.js +0 -183
- package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
- package/lib/src/raw_types_kysely/ameli.js +0 -5
- package/lib/src/raw_types_kysely/debats.d.ts +0 -207
- package/lib/src/raw_types_kysely/debats.js +0 -5
- package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
- package/lib/src/raw_types_kysely/dosleg.js +0 -5
- package/lib/src/raw_types_kysely/questions.d.ts +0 -414
- package/lib/src/raw_types_kysely/questions.js +0 -5
- package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
- package/lib/src/raw_types_kysely/sens.js +0 -5
- package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
- package/lib/src/raw_types_schemats/ameli.js +0 -2
- package/lib/src/raw_types_schemats/debats.d.ts +0 -127
- package/lib/src/raw_types_schemats/debats.js +0 -2
- package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
- package/lib/src/raw_types_schemats/dosleg.js +0 -2
- package/lib/src/raw_types_schemats/questions.d.ts +0 -231
- package/lib/src/raw_types_schemats/questions.js +0 -2
- package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
- package/lib/src/raw_types_schemats/sens.js +0 -2
- package/lib/src/scripts/convert_data.d.ts +0 -1
- package/lib/src/scripts/convert_data.js +0 -95
- package/lib/src/scripts/datautil.d.ts +0 -5
- package/lib/src/scripts/datautil.js +0 -16
- package/lib/src/scripts/parse_textes.d.ts +0 -1
- package/lib/src/scripts/parse_textes.js +0 -47
- package/lib/src/scripts/retrieve_documents.d.ts +0 -1
- package/lib/src/scripts/retrieve_documents.js +0 -258
- package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
- package/lib/src/scripts/retrieve_open_data.js +0 -214
- package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
- package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
- package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
- package/lib/src/scripts/shared/cli_helpers.js +0 -32
- package/lib/src/scripts/shared/util.d.ts +0 -3
- package/lib/src/scripts/shared/util.js +0 -28
- package/lib/src/strings.d.ts +0 -1
- package/lib/src/strings.mjs +0 -18
- package/lib/src/types/ameli.d.ts +0 -10
- package/lib/src/types/ameli.js +0 -13
- package/lib/src/types/debats.d.ts +0 -4
- package/lib/src/types/debats.js +0 -2
- package/lib/src/types/dosleg.d.ts +0 -98
- package/lib/src/types/dosleg.js +0 -151
- package/lib/src/types/questions.d.ts +0 -2
- package/lib/src/types/questions.js +0 -1
- package/lib/src/types/sens.d.ts +0 -10
- package/lib/src/types/sens.js +0 -1
- package/lib/src/types/sessions.d.ts +0 -42
- package/lib/src/types/sessions.js +0 -43
- package/lib/src/types/texte.d.ts +0 -61
- package/lib/src/types/texte.js +0 -16
- package/lib/src/validators/config.d.ts +0 -1
- package/lib/src/validators/config.js +0 -54
- package/lib/src/validators/senat.d.ts +0 -0
- package/lib/src/validators/senat.js +0 -24
- package/lib/strings.mjs +0 -18
- package/lib/strings.ts +0 -26
- package/lib/types/ameli.mjs +0 -13
- package/lib/types/ameli.ts +0 -21
- package/lib/types/debats.mjs +0 -2
- package/lib/types/debats.ts +0 -6
- package/lib/types/dosleg.mjs +0 -151
- package/lib/types/dosleg.ts +0 -284
- package/lib/types/questions.mjs +0 -1
- package/lib/types/questions.ts +0 -3
- package/lib/types/sens.mjs +0 -1
- package/lib/types/sens.ts +0 -12
- package/lib/types/sessions.mjs +0 -43
- package/lib/types/sessions.ts +0 -42
- package/lib/types/texte.mjs +0 -16
- package/lib/types/texte.ts +0 -76
- package/lib/typings/windows-1252.d.js +0 -2
- package/lib/typings/windows-1252.d.mjs +0 -2
- package/lib/typings/windows-1252.d.ts +0 -11
- package/lib/validators/config.mjs +0 -54
- package/lib/validators/config.ts +0 -79
- package/lib/validators/senat.mjs +0 -24
- package/lib/validators/senat.ts +0 -26
|
@@ -1,250 +1,155 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
require("
|
|
7
|
-
require("
|
|
8
|
-
require("
|
|
9
|
-
require("
|
|
10
|
-
|
|
11
|
-
require("
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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
|
-
|
|
180
|
-
}
|
|
86
|
+
throw error;
|
|
181
87
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
219
|
-
|
|
220
|
-
cwd: photosDir
|
|
99
|
+
(0, child_process_1.execSync)(`gm convert -resize 155x225! ${photoStem}.jpg ${photoStem}_155x225.jpg`, {
|
|
100
|
+
cwd: photosDir,
|
|
221
101
|
});
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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()
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
exports.dataDirDefaultOption = {
|
|
13
|
+
defaultOption: true,
|
|
14
|
+
help: "directory containing Sénat open data files",
|
|
15
|
+
name: "dataDir",
|
|
16
|
+
type: String,
|
|
21
17
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
exports.silentOption = {
|
|
19
|
+
alias: "s",
|
|
20
|
+
help: "don't log anything",
|
|
21
|
+
name: "silent",
|
|
22
|
+
type: Boolean,
|
|
27
23
|
};
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
exports.verboseOption = {
|
|
25
|
+
alias: "v",
|
|
26
|
+
help: "verbose logs",
|
|
27
|
+
name: "verbose",
|
|
28
|
+
type: Boolean,
|
|
33
29
|
};
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
exports.commonOptions = [
|
|
31
|
+
exports.categoriesOption,
|
|
32
|
+
exports.dataDirDefaultOption,
|
|
33
|
+
exports.silentOption,
|
|
34
|
+
exports.verboseOption,
|
|
35
|
+
];
|