@tricoteuses/assemblee 1.10.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +8 -1
  2. package/lib/amendements-79bwpkvR.js +154 -0
  3. package/lib/amendements-CV3s5a0M.js +667 -0
  4. package/lib/cleaners/index.d.ts +9 -9
  5. package/lib/cleaners.js +564 -0
  6. package/lib/datasets.d.ts +3 -3
  7. package/lib/dossiers_legislatifs.d.ts +2 -2
  8. package/lib/index.d.ts +17 -22
  9. package/lib/index.js +1542 -314
  10. package/lib/inserters.d.ts +5 -5
  11. package/lib/loaders-9mHdTl9L.js +4158 -0
  12. package/lib/loaders.d.ts +12 -12
  13. package/lib/loaders.js +29 -1689
  14. package/lib/organes.d.ts +1 -1
  15. package/lib/parse-Ccs6wcUg.js +2512 -0
  16. package/lib/parsers/index.d.ts +2 -3
  17. package/lib/parsers/plf.d.ts +1 -0
  18. package/lib/parsers/recherche_amendements.d.ts +2 -2
  19. package/lib/parsers/textes_lois.d.ts +1 -23
  20. package/lib/parsers.js +398 -0
  21. package/lib/raw_types/acteurs_et_organes.d.ts +4 -2
  22. package/lib/raw_types/debats.d.ts +2 -2
  23. package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
  24. package/lib/schemas/acteurs_et_organes.json +1166 -0
  25. package/lib/schemas/agendas.json +1745 -0
  26. package/lib/schemas/amendements.json +2085 -0
  27. package/lib/schemas/debats.json +842 -0
  28. package/lib/schemas/dossiers_legislatifs.json +3874 -0
  29. package/lib/schemas/legislatures.json +17 -0
  30. package/lib/schemas/questions.json +704 -0
  31. package/lib/schemas/scrutins.json +701 -0
  32. package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
  33. package/lib/types/acteurs_et_organes.d.ts +344 -2
  34. package/lib/types/agendas.d.ts +236 -10
  35. package/lib/types/amendements.d.ts +276 -1
  36. package/lib/types/debats.d.ts +52 -2
  37. package/lib/types/dossiers_legislatifs.d.ts +403 -9
  38. package/lib/types/questions.d.ts +99 -2
  39. package/lib/types/scrutins.d.ts +101 -0
  40. package/lib/urls.d.ts +2 -2
  41. package/package.json +33 -95
  42. package/lib/api.js +0 -52
  43. package/lib/api.mjs +0 -45
  44. package/lib/bugs/acteur-00010/plugin.test.js +0 -90
  45. package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
  46. package/lib/bugs/acteur-00010.d.ts +0 -7
  47. package/lib/bugs/acteur-00010.js +0 -116
  48. package/lib/bugs/acteur-00010.mjs +0 -26
  49. package/lib/bugs/agenda-00002/plugin.test.js +0 -124
  50. package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
  51. package/lib/bugs/agenda-00002.d.ts +0 -15
  52. package/lib/bugs/agenda-00002.js +0 -406
  53. package/lib/bugs/agenda-00002.mjs +0 -172
  54. package/lib/bugs/agenda-00008/plugin.test.js +0 -92
  55. package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
  56. package/lib/bugs/agenda-00008.d.ts +0 -7
  57. package/lib/bugs/agenda-00008.js +0 -123
  58. package/lib/bugs/agenda-00008.mjs +0 -26
  59. package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
  60. package/lib/bugs/agenda-00011/plugin.test.js +0 -263
  61. package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
  62. package/lib/bugs/agenda-00011.d.ts +0 -16
  63. package/lib/bugs/agenda-00011.js +0 -333
  64. package/lib/bugs/agenda-00011.mjs +0 -125
  65. package/lib/bugs.d.ts +0 -21
  66. package/lib/bugs.js +0 -452
  67. package/lib/bugs.mjs +0 -70
  68. package/lib/cleaners/actes_legislatifs.js +0 -315
  69. package/lib/cleaners/actes_legislatifs.mjs +0 -253
  70. package/lib/cleaners/acteurs.js +0 -265
  71. package/lib/cleaners/acteurs.mjs +0 -180
  72. package/lib/cleaners/amendements.js +0 -294
  73. package/lib/cleaners/amendements.mjs +0 -227
  74. package/lib/cleaners/debats.js +0 -12
  75. package/lib/cleaners/debats.mjs +0 -5
  76. package/lib/cleaners/documents.js +0 -205
  77. package/lib/cleaners/documents.mjs +0 -133
  78. package/lib/cleaners/dossiers_legislatifs.js +0 -131
  79. package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
  80. package/lib/cleaners/index.js +0 -70
  81. package/lib/cleaners/index.mjs +0 -10
  82. package/lib/cleaners/organes.js +0 -65
  83. package/lib/cleaners/organes.mjs +0 -48
  84. package/lib/cleaners/questions.js +0 -12
  85. package/lib/cleaners/questions.mjs +0 -5
  86. package/lib/cleaners/reunions.js +0 -312
  87. package/lib/cleaners/reunions.mjs +0 -255
  88. package/lib/cleaners/scrutins.js +0 -340
  89. package/lib/cleaners/scrutins.mjs +0 -221
  90. package/lib/cleaners/xml.js +0 -95
  91. package/lib/cleaners/xml.mjs +0 -58
  92. package/lib/datasets.js +0 -837
  93. package/lib/datasets.mjs +0 -755
  94. package/lib/dates.js +0 -124
  95. package/lib/dates.mjs +0 -100
  96. package/lib/dossiers_legislatifs.js +0 -346
  97. package/lib/dossiers_legislatifs.mjs +0 -208
  98. package/lib/file_systems.js +0 -162
  99. package/lib/file_systems.mjs +0 -62
  100. package/lib/git.js +0 -223
  101. package/lib/git.mjs +0 -151
  102. package/lib/index.mjs +0 -17
  103. package/lib/inserters.js +0 -521
  104. package/lib/inserters.mjs +0 -337
  105. package/lib/loaders.mjs +0 -886
  106. package/lib/logger.js +0 -35
  107. package/lib/logger.mjs +0 -26
  108. package/lib/organes.js +0 -22
  109. package/lib/organes.mjs +0 -15
  110. package/lib/parsers/documents.d.ts +0 -62
  111. package/lib/parsers/documents.js +0 -453
  112. package/lib/parsers/documents.mjs +0 -370
  113. package/lib/parsers/index.js +0 -40
  114. package/lib/parsers/index.mjs +0 -4
  115. package/lib/parsers/recherche_amendements.js +0 -403
  116. package/lib/parsers/recherche_amendements.mjs +0 -167
  117. package/lib/parsers/textes_lois.js +0 -307
  118. package/lib/parsers/textes_lois.mjs +0 -264
  119. package/lib/raw_types/acteurs_et_organes.js +0 -1213
  120. package/lib/raw_types/acteurs_et_organes.mjs +0 -1146
  121. package/lib/raw_types/agendas.js +0 -777
  122. package/lib/raw_types/agendas.mjs +0 -724
  123. package/lib/raw_types/amendements.js +0 -1052
  124. package/lib/raw_types/amendements.mjs +0 -993
  125. package/lib/raw_types/debats.js +0 -630
  126. package/lib/raw_types/debats.mjs +0 -573
  127. package/lib/raw_types/dossiers_legislatifs.js +0 -1529
  128. package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
  129. package/lib/raw_types/questions.js +0 -469
  130. package/lib/raw_types/questions.mjs +0 -416
  131. package/lib/raw_types/scrutins.js +0 -651
  132. package/lib/raw_types/scrutins.mjs +0 -598
  133. package/lib/schemas/acteur/Acteur.json +0 -56
  134. package/lib/schemas/acteur/AdresseElectronique.json +0 -52
  135. package/lib/schemas/acteur/AdressePostale.json +0 -75
  136. package/lib/schemas/acteur/Civ.json +0 -14
  137. package/lib/schemas/acteur/Collaborateur.json +0 -29
  138. package/lib/schemas/acteur/EtatCivil.json +0 -51
  139. package/lib/schemas/acteur/Ident.json +0 -40
  140. package/lib/schemas/acteur/Lieu.json +0 -66
  141. package/lib/schemas/acteur/Mandat.json +0 -192
  142. package/lib/schemas/acteur/Profession.json +0 -46
  143. package/lib/schemas/agenda/Agenda.json +0 -318
  144. package/lib/schemas/agenda/CycleDeVie.json +0 -45
  145. package/lib/schemas/agenda/PointOdj.json +0 -82
  146. package/lib/schemas/amendement/Amendement.json +0 -246
  147. package/lib/schemas/amendement/Diff.json +0 -25
  148. package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
  149. package/lib/schemas/amendement/Identifiant.json +0 -62
  150. package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
  151. package/lib/schemas/amendement/Representation.json +0 -67
  152. package/lib/schemas/amendement/Total.json +0 -26
  153. package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
  154. package/lib/schemas/converted_from_type/agendas.json +0 -1100
  155. package/lib/schemas/converted_from_type/amendements.json +0 -3191
  156. package/lib/schemas/converted_from_type/debats.json +0 -682
  157. package/lib/schemas/converted_from_type/deputes.json +0 -26
  158. package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
  159. package/lib/schemas/converted_from_type/legislatures.json +0 -16
  160. package/lib/schemas/converted_from_type/questions.json +0 -328
  161. package/lib/schemas/converted_from_type/scrutins.json +0 -393
  162. package/lib/schemas/debat/Contenu.json +0 -75
  163. package/lib/schemas/debat/Debat.json +0 -40
  164. package/lib/schemas/debat/Metadonnees.json +0 -75
  165. package/lib/schemas/debat/Orateur.json +0 -60
  166. package/lib/schemas/debat/Point.json +0 -169
  167. package/lib/schemas/debat/Sommaire.json +0 -71
  168. package/lib/schemas/debat/SommaireElement.json +0 -108
  169. package/lib/schemas/debat/Texte.json +0 -34
  170. package/lib/schemas/document/CodeLibelle.json +0 -25
  171. package/lib/schemas/document/Document.json +0 -385
  172. package/lib/schemas/document/Indexation.json +0 -38
  173. package/lib/schemas/dossier/ActeLegislatif.json +0 -211
  174. package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
  175. package/lib/schemas/dossier/Agenda.json +0 -23
  176. package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
  177. package/lib/schemas/dossier/Decision.json +0 -25
  178. package/lib/schemas/dossier/Dossier.json +0 -124
  179. package/lib/schemas/dossier/EtudeImpact.json +0 -29
  180. package/lib/schemas/dossier/EtudePlf.json +0 -105
  181. package/lib/schemas/dossier/Europe.json +0 -42
  182. package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
  183. package/lib/schemas/dossier/InfoJO.json +0 -23
  184. package/lib/schemas/dossier/Initiateur.json +0 -36
  185. package/lib/schemas/dossier/Motion.json +0 -27
  186. package/lib/schemas/dossier/Promulgation.json +0 -62
  187. package/lib/schemas/dossier/Rapporteur.json +0 -36
  188. package/lib/schemas/dossier/Texte.json +0 -47
  189. package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
  190. package/lib/schemas/organe/Organe.json +0 -136
  191. package/lib/schemas/organe/ViMoDe.json +0 -28
  192. package/lib/schemas/question/Auteur.json +0 -58
  193. package/lib/schemas/question/Cloture.json +0 -28
  194. package/lib/schemas/question/InfoJO.json +0 -40
  195. package/lib/schemas/question/MinAttribElement.json +0 -30
  196. package/lib/schemas/question/Question.json +0 -172
  197. package/lib/schemas/question/Renouvellement.json +0 -17
  198. package/lib/schemas/question/Signalement.json +0 -21
  199. package/lib/schemas/question/Texte.json +0 -24
  200. package/lib/schemas/scrutin/DecompteVoix.json +0 -35
  201. package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
  202. package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
  203. package/lib/schemas/scrutin/OrganeVotant.json +0 -88
  204. package/lib/schemas/scrutin/Scrutin.json +0 -187
  205. package/lib/schemas/scrutin/Votant.json +0 -37
  206. package/lib/scripts/bugs_helper.d.ts +0 -13
  207. package/lib/scripts/bugs_helper.js +0 -595
  208. package/lib/scripts/bugs_helper.mjs +0 -251
  209. package/lib/scripts/clean_reorganized_data.js +0 -610
  210. package/lib/scripts/clean_reorganized_data.mjs +0 -273
  211. package/lib/scripts/diff_amendements.js +0 -249
  212. package/lib/scripts/diff_amendements.mjs +0 -202
  213. package/lib/scripts/document_dossiers_legislatifs.js +0 -655
  214. package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
  215. package/lib/scripts/get_today_reunions.js +0 -37
  216. package/lib/scripts/get_today_reunions.mjs +0 -31
  217. package/lib/scripts/merge_scrutins.js +0 -97
  218. package/lib/scripts/merge_scrutins.mjs +0 -47
  219. package/lib/scripts/parse_textes_lois.d.ts +0 -1
  220. package/lib/scripts/parse_textes_lois.js +0 -171
  221. package/lib/scripts/parse_textes_lois.mjs +0 -140
  222. package/lib/scripts/process_open_dataset.js +0 -301
  223. package/lib/scripts/process_open_dataset.mjs +0 -134
  224. package/lib/scripts/raw_types_from_amendements.js +0 -135
  225. package/lib/scripts/raw_types_from_amendements.mjs +0 -134
  226. package/lib/scripts/reorganize_data.js +0 -805
  227. package/lib/scripts/reorganize_data.mjs +0 -517
  228. package/lib/scripts/retrieve_deputes_photos.js +0 -310
  229. package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
  230. package/lib/scripts/retrieve_documents.js +0 -547
  231. package/lib/scripts/retrieve_documents.mjs +0 -242
  232. package/lib/scripts/retrieve_open_data.js +0 -107
  233. package/lib/scripts/retrieve_open_data.mjs +0 -26
  234. package/lib/scripts/retrieve_pending_amendments.js +0 -206
  235. package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
  236. package/lib/scripts/retrieve_senateurs_photos.js +0 -234
  237. package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
  238. package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
  239. package/lib/scripts/retrieve_textes_lois.js +0 -240
  240. package/lib/scripts/retrieve_textes_lois.mjs +0 -85
  241. package/lib/scripts/shared/cli_helpers.js +0 -89
  242. package/lib/scripts/shared/cli_helpers.mjs +0 -81
  243. package/lib/scripts/test_iter_load.js +0 -155
  244. package/lib/scripts/test_iter_load.mjs +0 -72
  245. package/lib/scripts/test_load.js +0 -26
  246. package/lib/scripts/test_load.mjs +0 -16
  247. package/lib/scripts/test_load_big_files.js +0 -26
  248. package/lib/scripts/test_load_big_files.mjs +0 -16
  249. package/lib/scripts/validate_json.js +0 -353
  250. package/lib/scripts/validate_json.mjs +0 -184
  251. package/lib/shared_types/codes_actes.js +0 -231
  252. package/lib/shared_types/codes_actes.mjs +0 -224
  253. package/lib/strings.js +0 -16
  254. package/lib/strings.mjs +0 -7
  255. package/lib/types/acteurs_et_organes.js +0 -963
  256. package/lib/types/acteurs_et_organes.mjs +0 -904
  257. package/lib/types/agendas.js +0 -628
  258. package/lib/types/agendas.mjs +0 -575
  259. package/lib/types/amendements.js +0 -899
  260. package/lib/types/amendements.mjs +0 -842
  261. package/lib/types/debats.js +0 -619
  262. package/lib/types/debats.mjs +0 -562
  263. package/lib/types/dossiers_legislatifs.js +0 -1188
  264. package/lib/types/dossiers_legislatifs.mjs +0 -1130
  265. package/lib/types/legislatures.js +0 -17
  266. package/lib/types/legislatures.mjs +0 -10
  267. package/lib/types/questions.js +0 -454
  268. package/lib/types/questions.mjs +0 -401
  269. package/lib/types/scrutins.js +0 -556
  270. package/lib/types/scrutins.mjs +0 -503
  271. package/lib/urls.js +0 -325
  272. package/lib/urls.mjs +0 -258
  273. /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
  274. /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
  275. /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
@@ -1,595 +0,0 @@
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.async-iterator.js");
6
- require("core-js/modules/es.symbol.iterator.js");
7
- require("core-js/modules/es.symbol.to-primitive.js");
8
- require("core-js/modules/es.symbol.to-string-tag.js");
9
- require("core-js/modules/es.array.for-each.js");
10
- require("core-js/modules/es.array.from.js");
11
- require("core-js/modules/es.array.is-array.js");
12
- require("core-js/modules/es.array.iterator.js");
13
- require("core-js/modules/es.array.reverse.js");
14
- require("core-js/modules/es.array.slice.js");
15
- require("core-js/modules/es.date.to-primitive.js");
16
- require("core-js/modules/es.date.to-string.js");
17
- require("core-js/modules/es.function.name.js");
18
- require("core-js/modules/es.json.to-string-tag.js");
19
- require("core-js/modules/es.math.to-string-tag.js");
20
- require("core-js/modules/es.object.create.js");
21
- require("core-js/modules/es.object.define-property.js");
22
- require("core-js/modules/es.object.get-own-property-descriptor.js");
23
- require("core-js/modules/es.object.get-prototype-of.js");
24
- require("core-js/modules/es.object.set-prototype-of.js");
25
- require("core-js/modules/es.object.to-string.js");
26
- require("core-js/modules/es.promise.js");
27
- require("core-js/modules/es.regexp.to-string.js");
28
- require("core-js/modules/es.string.iterator.js");
29
- require("core-js/modules/es.weak-map.js");
30
- require("core-js/modules/web.dom-collections.for-each.js");
31
- require("core-js/modules/web.dom-collections.iterator.js");
32
- 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); }
33
- Object.defineProperty(exports, "__esModule", {
34
- value: true
35
- });
36
- exports.BugsHelper = void 0;
37
- exports.checkoutFix = checkoutFix;
38
- exports.main = main;
39
- exports.mergeFix = mergeFix;
40
- require("core-js/modules/es.array.concat.js");
41
- require("core-js/modules/es.array.includes.js");
42
- require("core-js/modules/es.array.join.js");
43
- require("core-js/modules/es.number.constructor.js");
44
- require("core-js/modules/es.object.keys.js");
45
- require("core-js/modules/es.regexp.exec.js");
46
- require("core-js/modules/es.string.ends-with.js");
47
- require("core-js/modules/es.string.includes.js");
48
- var _fsExtra = _interopRequireDefault(require("fs-extra"));
49
- var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
50
- var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
51
- var _file_systems = require("../file_systems");
52
- var _bugs = require("../../src/bugs");
53
- var git = _interopRequireWildcard(require("../../src/git"));
54
- var _datasets = require("../../src/datasets");
55
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
56
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
57
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
58
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
59
- 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."); }
60
- 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; } }
61
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
62
- function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { 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 && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
63
- 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; } } }; }
64
- 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; } }
65
- 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; }
66
- 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); }
67
- 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); }); }; }
68
- function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
69
- function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
70
- function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
71
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
72
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
73
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
74
- function parseArgs(argv) {
75
- var optionsDefinitions = [{
76
- description: "pathname to the directory containing the dataset",
77
- defaultOption: true,
78
- name: "data",
79
- type: String
80
- }, {
81
- description: "pathname to the directory containing the HTML comptes rendus de seance",
82
- name: "cr",
83
- type: String
84
- }, {
85
- description: "pathname to the directory to commit",
86
- name: "commit",
87
- type: String
88
- }, {
89
- description: "only consider this bug",
90
- name: "bug",
91
- type: String
92
- }, {
93
- description: "pathname to the directory where the check outputs will be stored",
94
- name: "output",
95
- type: String
96
- }, {
97
- description: "dataset (possible values must include exactly one of ".concat((0, _datasets.getDatasets)(), ")"),
98
- name: "dataset",
99
- type: String
100
- }, {
101
- description: "schema (possible values are ".concat((0, _datasets.getSchemas)(), ")"),
102
- name: "schema",
103
- type: String
104
- }, {
105
- description: "directory in which bugs are found (default .)",
106
- name: "bugs-dir",
107
- type: String
108
- }, {
109
- description: "increase verbosity",
110
- name: "verbose",
111
- type: Boolean
112
- }, {
113
- description: "debug information",
114
- name: "debug",
115
- type: Boolean
116
- }, {
117
- description: "check",
118
- name: "check",
119
- type: Boolean
120
- }, {
121
- description: "fix",
122
- name: "fix",
123
- type: Boolean
124
- }, {
125
- name: "help",
126
- description: "Print this usage guide."
127
- }];
128
- var sections = [{
129
- header: "Cross check data consistency and fix problems",
130
- content: ""
131
- }, {
132
- header: "Options",
133
- optionList: optionsDefinitions
134
- }];
135
- var options = (0, _commandLineArgs["default"])(optionsDefinitions, {
136
- argv: argv
137
- });
138
- if (options.dataset) {
139
- if (!(0, _datasets.validDataset)(options.dataset)) {
140
- console.error("--dataset ".concat(options.dataset));
141
- options.help = true;
142
- }
143
- }
144
- if (options.schema) {
145
- if (!(0, _datasets.getSchemas)().includes(options.schema)) {
146
- console.error("--schema ".concat(options.schema));
147
- options.help = true;
148
- }
149
- }
150
- if (options.commit) {
151
- if (!_fsExtra["default"].existsSync(options.commit)) {
152
- console.error("".concat(options.commit, " does not exist"));
153
- options.help = true;
154
- }
155
- }
156
- if (options.debug) options.verbose = true;
157
- if ("help" in options) {
158
- var usage = (0, _commandLineUsage["default"])(sections);
159
- console.warn(usage);
160
- return null;
161
- }
162
- return options;
163
- }
164
- var BugsHelper = exports.BugsHelper = /*#__PURE__*/function () {
165
- function BugsHelper(options) {
166
- _classCallCheck(this, BugsHelper);
167
- _defineProperty(this, "options", void 0);
168
- _defineProperty(this, "bugs", void 0);
169
- this.options = options;
170
- this.bugs = new _bugs.SchemaBugs(this.options);
171
- }
172
- return _createClass(BugsHelper, [{
173
- key: "check",
174
- value: function () {
175
- var _check = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
176
- var analysis, _iterator, _step, file, content;
177
- return _regeneratorRuntime().wrap(function _callee$(_context) {
178
- while (1) switch (_context.prev = _context.next) {
179
- case 0:
180
- analysis = {};
181
- _context.next = 3;
182
- return this.bugs.preCheck();
183
- case 3:
184
- if (this.options.verbose) console.log("check ".concat(this.options.data));
185
- _iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)([this.options.data]));
186
- _context.prev = 5;
187
- _iterator.s();
188
- case 7:
189
- if ((_step = _iterator.n()).done) {
190
- _context.next = 15;
191
- break;
192
- }
193
- file = _step.value;
194
- content = (0, _file_systems.load)(file);
195
- _context.next = 12;
196
- return this.bugs.check(content, file);
197
- case 12:
198
- analysis[file] = _context.sent;
199
- case 13:
200
- _context.next = 7;
201
- break;
202
- case 15:
203
- _context.next = 20;
204
- break;
205
- case 17:
206
- _context.prev = 17;
207
- _context.t0 = _context["catch"](5);
208
- _iterator.e(_context.t0);
209
- case 20:
210
- _context.prev = 20;
211
- _iterator.f();
212
- return _context.finish(20);
213
- case 23:
214
- _context.next = 25;
215
- return this.bugs.postCheck(analysis);
216
- case 25:
217
- _context.next = 27;
218
- return this.show(analysis);
219
- case 27:
220
- if (!this.options.output) {
221
- _context.next = 30;
222
- break;
223
- }
224
- _context.next = 30;
225
- return this.store(analysis);
226
- case 30:
227
- return _context.abrupt("return", 0);
228
- case 31:
229
- case "end":
230
- return _context.stop();
231
- }
232
- }, _callee, this, [[5, 17, 20, 23]]);
233
- }));
234
- function check() {
235
- return _check.apply(this, arguments);
236
- }
237
- return check;
238
- }()
239
- }, {
240
- key: "show",
241
- value: function () {
242
- var _show = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(analysis) {
243
- var _i, _Object$keys, filename, bug, _i2, _Object$keys2, name, result, log;
244
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
245
- while (1) switch (_context2.prev = _context2.next) {
246
- case 0:
247
- for (_i = 0, _Object$keys = Object.keys(analysis); _i < _Object$keys.length; _i++) {
248
- filename = _Object$keys[_i];
249
- bug = analysis[filename];
250
- for (_i2 = 0, _Object$keys2 = Object.keys(bug); _i2 < _Object$keys2.length; _i2++) {
251
- name = _Object$keys2[_i2];
252
- result = bug[name];
253
- if (result != null) {
254
- log = void 0;
255
- if (result["status"] == "needs-fixing") {
256
- log = console.error;
257
- } else if (this.options.verbose) {
258
- log = console.log;
259
- }
260
- if (log != undefined) {
261
- log("".concat(name, " finds ").concat(filename, " ").concat(result["status"]));
262
- log(result["info"].join("\n"));
263
- }
264
- }
265
- }
266
- }
267
- case 1:
268
- case "end":
269
- return _context2.stop();
270
- }
271
- }, _callee2, this);
272
- }));
273
- function show(_x) {
274
- return _show.apply(this, arguments);
275
- }
276
- return show;
277
- }()
278
- }, {
279
- key: "store",
280
- value: function () {
281
- var _store = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(analysis) {
282
- var name2reports, _i3, _Object$keys3, filename, bug, _i4, _Object$keys4, name, _i5, _Object$keys5, _name, reports, n, lines, status2lines, _i6, _Object$keys6, _filename, report, status, l, _iterator2, _step2, info, _i7, _arr, _arr$_i, _status, label, output;
283
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
284
- while (1) switch (_context3.prev = _context3.next) {
285
- case 0:
286
- name2reports = {};
287
- for (_i3 = 0, _Object$keys3 = Object.keys(analysis); _i3 < _Object$keys3.length; _i3++) {
288
- filename = _Object$keys3[_i3];
289
- bug = analysis[filename];
290
- for (_i4 = 0, _Object$keys4 = Object.keys(bug); _i4 < _Object$keys4.length; _i4++) {
291
- name = _Object$keys4[_i4];
292
- if (!(name in name2reports)) name2reports[name] = {};
293
- name2reports[name][filename] = bug[name];
294
- }
295
- }
296
- _i5 = 0, _Object$keys5 = Object.keys(name2reports);
297
- case 3:
298
- if (!(_i5 < _Object$keys5.length)) {
299
- _context3.next = 30;
300
- break;
301
- }
302
- _name = _Object$keys5[_i5];
303
- reports = name2reports[_name];
304
- n = _name.split("-")[1];
305
- lines = ["## Bug [".concat(_name, "](https://git.en-root.org/tricoteuses/tricoteuses-assemblee-qa/issues/").concat(Number(n), ")"), "This report was created by the **check** function of [".concat(_name, "](https://git.en-root.org/tricoteuses/tricoteuses-assemblee/-/blob/master/src/bugs/").concat(_name, ".ts).")];
306
- status2lines = {
307
- "needs-fixing": [],
308
- "will-be-fixed": [],
309
- "already-fixed": []
310
- };
311
- _i6 = 0, _Object$keys6 = Object.keys(reports);
312
- case 10:
313
- if (!(_i6 < _Object$keys6.length)) {
314
- _context3.next = 24;
315
- break;
316
- }
317
- _filename = _Object$keys6[_i6];
318
- report = reports[_filename];
319
- if (!(report == null || report["status"] == "ok")) {
320
- _context3.next = 15;
321
- break;
322
- }
323
- return _context3.abrupt("continue", 21);
324
- case 15:
325
- if (!(report["status"] in status2lines)) console.error("".concat(_filename, " status ").concat(report["status"], " unknown"));
326
- status = report["status"];
327
- l = status2lines[status];
328
- if (status == "will-be-fixed") l.push("* ".concat((0, _datasets.diffUpstream)(_filename)));else l.push("* ".concat((0, _datasets.masterUrl)(_filename)));
329
- _iterator2 = _createForOfIteratorHelper(report["info"]);
330
- try {
331
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
332
- info = _step2.value;
333
- l.push(" * ".concat(info));
334
- }
335
- } catch (err) {
336
- _iterator2.e(err);
337
- } finally {
338
- _iterator2.f();
339
- }
340
- case 21:
341
- _i6++;
342
- _context3.next = 10;
343
- break;
344
- case 24:
345
- for (_i7 = 0, _arr = [["needs-fixing", "The following files must be fixed"], ["already-fixed", "The following files no longer need a fix"], ["will-be-fixed", "The following files have been successfully fixed"]]; _i7 < _arr.length; _i7++) {
346
- _arr$_i = _slicedToArray(_arr[_i7], 2), _status = _arr$_i[0], label = _arr$_i[1];
347
- lines.push("### ".concat(label));
348
- lines = lines.concat(status2lines[_status]);
349
- }
350
- output = "".concat(this.options.output, "/").concat(_name, ".md");
351
- _fsExtra["default"].writeFileSync(output, lines.join("\n"), {
352
- encoding: "utf8"
353
- });
354
- case 27:
355
- _i5++;
356
- _context3.next = 3;
357
- break;
358
- case 30:
359
- case "end":
360
- return _context3.stop();
361
- }
362
- }, _callee3, this);
363
- }));
364
- function store(_x2) {
365
- return _store.apply(this, arguments);
366
- }
367
- return store;
368
- }()
369
- }, {
370
- key: "fix",
371
- value: function () {
372
- var _fix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
373
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
374
- while (1) switch (_context4.prev = _context4.next) {
375
- case 0:
376
- _context4.next = 2;
377
- return this.bugs.preFix();
378
- case 2:
379
- _context4.next = 4;
380
- return this.bugs.fix((0, _file_systems.getFiles)([this.options.data]));
381
- case 4:
382
- return _context4.abrupt("return", 0);
383
- case 5:
384
- case "end":
385
- return _context4.stop();
386
- }
387
- }, _callee4, this);
388
- }));
389
- function fix() {
390
- return _fix.apply(this, arguments);
391
- }
392
- return fix;
393
- }()
394
- }, {
395
- key: "main",
396
- value: function () {
397
- var _main = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
398
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
399
- while (1) switch (_context5.prev = _context5.next) {
400
- case 0:
401
- if (!this.options.check) {
402
- _context5.next = 4;
403
- break;
404
- }
405
- return _context5.abrupt("return", this.check());
406
- case 4:
407
- return _context5.abrupt("return", this.fix());
408
- case 5:
409
- case "end":
410
- return _context5.stop();
411
- }
412
- }, _callee5, this);
413
- }));
414
- function main() {
415
- return _main.apply(this, arguments);
416
- }
417
- return main;
418
- }()
419
- }]);
420
- }();
421
- function checkoutFix(_x3) {
422
- return _checkoutFix.apply(this, arguments);
423
- }
424
- function _checkoutFix() {
425
- _checkoutFix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(options) {
426
- var c, v;
427
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
428
- while (1) switch (_context6.prev = _context6.next) {
429
- case 0:
430
- c = options.commit;
431
- if (!(c == undefined)) {
432
- _context6.next = 3;
433
- break;
434
- }
435
- return _context6.abrupt("return");
436
- case 3:
437
- v = options.verbose;
438
- git.run(c, "checkout --quiet master", v);
439
- if (/tmp/.test(git.run(c, "branch", v))) git.run(c, "branch -D tmp", v);
440
- git.run(c, "checkout --quiet -b tmp master", v);
441
- if (/Merge bugfixes/.test(git.run(c, "log --oneline -1", v))) git.run(c, "revert --mainline 1 --no-edit HEAD", v);
442
- git.run(c, "merge --no-ff -m 'Merge upstream' upstream/uid", v);
443
- if (/bugfixes/.test(git.run(c, "branch", v))) git.run(c, "branch -D bugfixes", v);
444
- git.run(c, "checkout --quiet -b bugfixes", v);
445
- case 11:
446
- case "end":
447
- return _context6.stop();
448
- }
449
- }, _callee6);
450
- }));
451
- return _checkoutFix.apply(this, arguments);
452
- }
453
- function mergeFix(_x4) {
454
- return _mergeFix.apply(this, arguments);
455
- }
456
- function _mergeFix() {
457
- _mergeFix = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(options) {
458
- var c, v;
459
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
460
- while (1) switch (_context7.prev = _context7.next) {
461
- case 0:
462
- c = options.commit;
463
- if (!(c == undefined)) {
464
- _context7.next = 3;
465
- break;
466
- }
467
- return _context7.abrupt("return");
468
- case 3:
469
- v = options.verbose;
470
- git.run(c, "checkout --quiet tmp", v);
471
- git.run(c, "merge --no-ff -m 'Merge bugfixes' bugfixes", v);
472
- git.run(c, "branch -D bugfixes", v);
473
- git.run(c, "checkout --quiet master", v);
474
- if (!git.test(c, "diff --quiet tmp master", v)) git.run(c, "merge --ff-only tmp", v);
475
- git.run(c, "branch -D tmp", v);
476
- case 10:
477
- case "end":
478
- return _context7.stop();
479
- }
480
- }, _callee7);
481
- }));
482
- return _mergeFix.apply(this, arguments);
483
- }
484
- function main(_x5) {
485
- return _main2.apply(this, arguments);
486
- }
487
- /* istanbul ignore if */
488
- function _main2() {
489
- _main2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(argv) {
490
- var options, directorySchema, _iterator3, _step3, d, helper, status;
491
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
492
- while (1) switch (_context8.prev = _context8.next) {
493
- case 0:
494
- options = parseArgs(argv);
495
- if (!(options === null)) {
496
- _context8.next = 3;
497
- break;
498
- }
499
- return _context8.abrupt("return", 1);
500
- case 3:
501
- directorySchema = [];
502
- if (!options.schema) {
503
- _context8.next = 8;
504
- break;
505
- }
506
- directorySchema = [[options.data, options.schema]];
507
- _context8.next = 14;
508
- break;
509
- case 8:
510
- if (!options.dataset) {
511
- _context8.next = 12;
512
- break;
513
- }
514
- directorySchema = (0, _datasets.datasetDirectorySchema)(options.dataset);
515
- _context8.next = 14;
516
- break;
517
- case 12:
518
- console.error("either --schema or --dataset is required");
519
- return _context8.abrupt("return", 1);
520
- case 14:
521
- _context8.next = 16;
522
- return checkoutFix(options);
523
- case 16:
524
- _iterator3 = _createForOfIteratorHelper(directorySchema);
525
- _context8.prev = 17;
526
- _iterator3.s();
527
- case 19:
528
- if ((_step3 = _iterator3.n()).done) {
529
- _context8.next = 42;
530
- break;
531
- }
532
- d = _step3.value;
533
- options.schema = d[1];
534
- options.data = d[0];
535
- if (options.debug) console.log("working on ".concat(options.data, " with schema ").concat(options.schema));
536
- helper = void 0;
537
- _context8.prev = 25;
538
- helper = new BugsHelper(options);
539
- _context8.next = 34;
540
- break;
541
- case 29:
542
- _context8.prev = 29;
543
- _context8.t0 = _context8["catch"](25);
544
- if (_context8.t0 instanceof _file_systems.GetFileNotFoundError) {
545
- _context8.next = 33;
546
- break;
547
- }
548
- throw _context8.t0;
549
- case 33:
550
- return _context8.abrupt("continue", 40);
551
- case 34:
552
- if (options.verbose) console.log("working on files ".concat(options.data, " with schema ").concat(options.schema));
553
- _context8.next = 37;
554
- return helper.main();
555
- case 37:
556
- status = _context8.sent;
557
- if (!(status != 0)) {
558
- _context8.next = 40;
559
- break;
560
- }
561
- return _context8.abrupt("return", status);
562
- case 40:
563
- _context8.next = 19;
564
- break;
565
- case 42:
566
- _context8.next = 47;
567
- break;
568
- case 44:
569
- _context8.prev = 44;
570
- _context8.t1 = _context8["catch"](17);
571
- _iterator3.e(_context8.t1);
572
- case 47:
573
- _context8.prev = 47;
574
- _iterator3.f();
575
- return _context8.finish(47);
576
- case 50:
577
- _context8.next = 52;
578
- return mergeFix(options);
579
- case 52:
580
- return _context8.abrupt("return", 0);
581
- case 53:
582
- case "end":
583
- return _context8.stop();
584
- }
585
- }, _callee8, null, [[17, 44, 47, 50], [25, 29]]);
586
- }));
587
- return _main2.apply(this, arguments);
588
- }
589
- if (process.argv[1].endsWith("bugs_helper.ts")) main(process.argv).then(function (exitCode) {
590
- process.exit(exitCode);
591
- })["catch"](function (error) {
592
- console.error(error);
593
- process.exit(1);
594
- });
595
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnNFeHRyYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbW1hbmRMaW5lQXJncyIsIl9jb21tYW5kTGluZVVzYWdlIiwiX2ZpbGVfc3lzdGVtcyIsIl9idWdzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZGF0YXNldHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJsIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJmIiwibyIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInByb3RvdHlwZSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJoIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9uIiwiRiIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJjb25jYXQiLCJnZXREYXRhc2V0cyIsImdldFNjaGVtYXMiLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJkYXRhc2V0IiwidmFsaWREYXRhc2V0IiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInNjaGVtYSIsImluY2x1ZGVzIiwiY29tbWl0IiwiZnMiLCJleGlzdHNTeW5jIiwiZGVidWciLCJ2ZXJib3NlIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsIkJ1Z3NIZWxwZXIiLCJleHBvcnRzIiwiYnVncyIsIlNjaGVtYUJ1Z3MiLCJfY2hlY2siLCJfY2FsbGVlIiwiYW5hbHlzaXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImZpbGUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJlQ2hlY2siLCJsb2ciLCJkYXRhIiwiZ2V0RmlsZXMiLCJsb2FkIiwiY2hlY2siLCJ0MCIsInBvc3RDaGVjayIsInNob3ciLCJvdXRwdXQiLCJzdG9yZSIsIl9zaG93IiwiX2NhbGxlZTIiLCJfaSIsIl9PYmplY3Qka2V5cyIsImZpbGVuYW1lIiwiYnVnIiwiX2kyIiwiX09iamVjdCRrZXlzMiIsInJlc3VsdCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInVuZGVmaW5lZCIsImpvaW4iLCJfeCIsIl9zdG9yZSIsIl9jYWxsZWUzIiwibmFtZTJyZXBvcnRzIiwiX2kzIiwiX09iamVjdCRrZXlzMyIsIl9pNCIsIl9PYmplY3Qka2V5czQiLCJfaTUiLCJfT2JqZWN0JGtleXM1IiwiX25hbWUiLCJyZXBvcnRzIiwibGluZXMiLCJzdGF0dXMybGluZXMiLCJfaTYiLCJfT2JqZWN0JGtleXM2IiwiX2ZpbGVuYW1lIiwicmVwb3J0Iiwic3RhdHVzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImluZm8iLCJfaTciLCJfYXJyIiwiX2FyciRfaSIsIl9zdGF0dXMiLCJsYWJlbCIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsInNwbGl0IiwiZGlmZlVwc3RyZWFtIiwibWFzdGVyVXJsIiwiZXJyIiwid3JpdGVGaWxlU3luYyIsImVuY29kaW5nIiwiX3gyIiwiX2ZpeCIsIl9jYWxsZWU0IiwiX2NhbGxlZTQkIiwiX2NvbnRleHQ0IiwicHJlRml4IiwiZml4IiwiX21haW4iLCJfY2FsbGVlNSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIm1haW4iLCJjaGVja291dEZpeCIsIl94MyIsIl9jaGVja291dEZpeCIsIl9jYWxsZWU2IiwiX2NhbGxlZTYkIiwiX2NvbnRleHQ2IiwicnVuIiwibWVyZ2VGaXgiLCJfeDQiLCJfbWVyZ2VGaXgiLCJfY2FsbGVlNyIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsIl94NSIsIl9tYWluMiIsIl9jYWxsZWU4IiwiZGlyZWN0b3J5U2NoZW1hIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImhlbHBlciIsIl9jYWxsZWU4JCIsIl9jb250ZXh0OCIsImRhdGFzZXREaXJlY3RvcnlTY2hlbWEiLCJHZXRGaWxlTm90Rm91bmRFcnJvciIsInQxIiwicHJvY2VzcyIsImVuZHNXaXRoIiwiZXhpdENvZGUiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvYnVnc19oZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzLCBHZXRGaWxlTm90Rm91bmRFcnJvciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgU2NoZW1hQnVncyB9IGZyb20gXCIuLi8uLi9zcmMvYnVnc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uLy4uL3NyYy9naXRcIlxuaW1wb3J0IHtcbiAgdmFsaWREYXRhc2V0LFxuICBnZXREYXRhc2V0cyxcbiAgZ2V0U2NoZW1hcyxcbiAgZGF0YXNldERpcmVjdG9yeVNjaGVtYSxcbiAgZGlmZlVwc3RyZWFtLFxuICBtYXN0ZXJVcmwsXG59IGZyb20gXCIuLi8uLi9zcmMvZGF0YXNldHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBkYXRhc2V0XCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEhUTUwgY29tcHRlcyByZW5kdXMgZGUgc2VhbmNlXCIsXG4gICAgICBuYW1lOiBcImNyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHRvIGNvbW1pdFwiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIm9ubHkgY29uc2lkZXIgdGhpcyBidWdcIixcbiAgICAgIG5hbWU6IFwiYnVnXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJwYXRobmFtZSB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjaGVjayBvdXRwdXRzIHdpbGwgYmUgc3RvcmVkXCIsXG4gICAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBkYXRhc2V0IChwb3NzaWJsZSB2YWx1ZXMgbXVzdCBpbmNsdWRlIGV4YWN0bHkgb25lIG9mICR7Z2V0RGF0YXNldHMoKX0pYCxcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IGBzY2hlbWEgKHBvc3NpYmxlIHZhbHVlcyBhcmUgJHtnZXRTY2hlbWFzKCl9KWAsXG4gICAgICBuYW1lOiBcInNjaGVtYVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiZGlyZWN0b3J5IGluIHdoaWNoIGJ1Z3MgYXJlIGZvdW5kIChkZWZhdWx0IC4pXCIsXG4gICAgICBuYW1lOiBcImJ1Z3MtZGlyXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImRlYnVnIGluZm9ybWF0aW9uXCIsXG4gICAgICBuYW1lOiBcImRlYnVnXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwiY2hlY2tcIixcbiAgICAgIG5hbWU6IFwiY2hlY2tcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJmaXhcIixcbiAgICAgIG5hbWU6IFwiZml4XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkNyb3NzIGNoZWNrIGRhdGEgY29uc2lzdGVuY3kgYW5kIGZpeCBwcm9ibGVtc1wiLFxuICAgICAgY29udGVudDogXCJcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG5cbiAgaWYgKG9wdGlvbnMuZGF0YXNldCkge1xuICAgIGlmICghdmFsaWREYXRhc2V0KG9wdGlvbnMuZGF0YXNldCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYC0tZGF0YXNldCAke29wdGlvbnMuZGF0YXNldH1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnNjaGVtYSkge1xuICAgIGlmICghZ2V0U2NoZW1hcygpLmluY2x1ZGVzKG9wdGlvbnMuc2NoZW1hKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgLS1zY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gKVxuICAgICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLmNvbW1pdCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7b3B0aW9ucy5jb21taXR9IGRvZXMgbm90IGV4aXN0YClcbiAgICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5kZWJ1Zykgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZVxuXG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBCdWdzSGVscGVyIHtcbiAgb3B0aW9uczogYW55XG4gIGJ1Z3M6IGFueVxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IGFueSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICB0aGlzLmJ1Z3MgPSBuZXcgU2NoZW1hQnVncyh0aGlzLm9wdGlvbnMpXG4gIH1cblxuICBhc3luYyBjaGVjaygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IGFuYWx5c2lzOiBhbnkgPSB7fVxuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVDaGVjaygpXG4gICAgaWYgKHRoaXMub3B0aW9ucy52ZXJib3NlKSBjb25zb2xlLmxvZyhgY2hlY2sgJHt0aGlzLm9wdGlvbnMuZGF0YX1gKVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhbdGhpcy5vcHRpb25zLmRhdGFdKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGxvYWQoZmlsZSlcbiAgICAgIGFuYWx5c2lzW2ZpbGVdID0gYXdhaXQgdGhpcy5idWdzLmNoZWNrKGNvbnRlbnQsIGZpbGUpXG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYnVncy5wb3N0Q2hlY2soYW5hbHlzaXMpXG4gICAgYXdhaXQgdGhpcy5zaG93KGFuYWx5c2lzKVxuICAgIGlmICh0aGlzLm9wdGlvbnMub3V0cHV0KSBhd2FpdCB0aGlzLnN0b3JlKGFuYWx5c2lzKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBhc3luYyBzaG93KGFuYWx5c2lzOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBidWdbbmFtZV1cbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgbGV0IGxvZ1xuICAgICAgICAgIGlmIChyZXN1bHRbXCJzdGF0dXNcIl0gPT0gXCJuZWVkcy1maXhpbmdcIikge1xuICAgICAgICAgICAgbG9nID0gY29uc29sZS5lcnJvclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgIGxvZyA9IGNvbnNvbGUubG9nXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsb2cgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2coYCR7bmFtZX0gZmluZHMgJHtmaWxlbmFtZX0gJHtyZXN1bHRbXCJzdGF0dXNcIl19YClcbiAgICAgICAgICAgIGxvZyhyZXN1bHRbXCJpbmZvXCJdLmpvaW4oXCJcXG5cIikpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RvcmUoYW5hbHlzaXM6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5hbWUycmVwb3J0czogYW55ID0ge31cbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgYnVnID0gYW5hbHlzaXNbZmlsZW5hbWVdXG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYnVnKSkge1xuICAgICAgICBpZiAoIShuYW1lIGluIG5hbWUycmVwb3J0cykpIG5hbWUycmVwb3J0c1tuYW1lXSA9IHt9XG4gICAgICAgIG5hbWUycmVwb3J0c1tuYW1lXVtmaWxlbmFtZV0gPSBidWdbbmFtZV1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG5hbWUycmVwb3J0cykpIHtcbiAgICAgIGNvbnN0IHJlcG9ydHMgPSBuYW1lMnJlcG9ydHNbbmFtZV1cbiAgICAgIGNvbnN0IG4gPSBuYW1lLnNwbGl0KFwiLVwiKVsxXVxuICAgICAgbGV0IGxpbmVzOiBhbnkgPSBbXG4gICAgICAgIGAjIyBCdWcgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS1xYS9pc3N1ZXMvJHtOdW1iZXIoXG4gICAgICAgICAgbixcbiAgICAgICAgKX0pYCxcbiAgICAgICAgYFRoaXMgcmVwb3J0IHdhcyBjcmVhdGVkIGJ5IHRoZSAqKmNoZWNrKiogZnVuY3Rpb24gb2YgWyR7bmFtZX1dKGh0dHBzOi8vZ2l0LmVuLXJvb3Qub3JnL3RyaWNvdGV1c2VzL3RyaWNvdGV1c2VzLWFzc2VtYmxlZS8tL2Jsb2IvbWFzdGVyL3NyYy9idWdzLyR7bmFtZX0udHMpLmAsXG4gICAgICBdXG4gICAgICBjb25zdCBzdGF0dXMybGluZXM6IGFueSA9IHtcbiAgICAgICAgXCJuZWVkcy1maXhpbmdcIjogW10sXG4gICAgICAgIFwid2lsbC1iZS1maXhlZFwiOiBbXSxcbiAgICAgICAgXCJhbHJlYWR5LWZpeGVkXCI6IFtdLFxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBPYmplY3Qua2V5cyhyZXBvcnRzKSkge1xuICAgICAgICBjb25zdCByZXBvcnQgPSByZXBvcnRzW2ZpbGVuYW1lXVxuICAgICAgICBpZiAocmVwb3J0ID09IG51bGwgfHwgcmVwb3J0W1wic3RhdHVzXCJdID09IFwib2tcIikgY29udGludWVcbiAgICAgICAgaWYgKCEocmVwb3J0W1wic3RhdHVzXCJdIGluIHN0YXR1czJsaW5lcykpXG4gICAgICAgICAgY29uc29sZS5lcnJvcihgJHtmaWxlbmFtZX0gc3RhdHVzICR7cmVwb3J0W1wic3RhdHVzXCJdfSB1bmtub3duYClcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVwb3J0W1wic3RhdHVzXCJdXG4gICAgICAgIGxldCBsID0gc3RhdHVzMmxpbmVzW3N0YXR1c11cbiAgICAgICAgaWYgKHN0YXR1cyA9PSBcIndpbGwtYmUtZml4ZWRcIikgbC5wdXNoKGAqICR7ZGlmZlVwc3RyZWFtKGZpbGVuYW1lKX1gKVxuICAgICAgICBlbHNlIGwucHVzaChgKiAke21hc3RlclVybChmaWxlbmFtZSl9YClcbiAgICAgICAgZm9yIChjb25zdCBpbmZvIG9mIHJlcG9ydFtcImluZm9cIl0pIGwucHVzaChgICAqICR7aW5mb31gKVxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBbc3RhdHVzLCBsYWJlbF0gb2YgW1xuICAgICAgICBbXCJuZWVkcy1maXhpbmdcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG11c3QgYmUgZml4ZWRcIl0sXG4gICAgICAgIFtcImFscmVhZHktZml4ZWRcIiwgXCJUaGUgZm9sbG93aW5nIGZpbGVzIG5vIGxvbmdlciBuZWVkIGEgZml4XCJdLFxuICAgICAgICBbXCJ3aWxsLWJlLWZpeGVkXCIsIFwiVGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpeGVkXCJdLFxuICAgICAgXSkge1xuICAgICAgICBsaW5lcy5wdXNoKGAjIyMgJHtsYWJlbH1gKVxuICAgICAgICBsaW5lcyA9IGxpbmVzLmNvbmNhdChzdGF0dXMybGluZXNbc3RhdHVzXSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IG91dHB1dCA9IGAke3RoaXMub3B0aW9ucy5vdXRwdXR9LyR7bmFtZX0ubWRgXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKG91dHB1dCwgbGluZXMuam9pbihcIlxcblwiKSwge1xuICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeCgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGF3YWl0IHRoaXMuYnVncy5wcmVGaXgoKVxuICAgIGF3YWl0IHRoaXMuYnVncy5maXgoZ2V0RmlsZXMoW3RoaXMub3B0aW9ucy5kYXRhXSkpXG4gICAgcmV0dXJuIDBcbiAgfVxuXG4gIGFzeW5jIG1haW4oKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNoZWNrKSByZXR1cm4gdGhpcy5jaGVjaygpXG4gICAgZWxzZSByZXR1cm4gdGhpcy5maXgoKVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja291dEZpeChvcHRpb25zOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYyA9IG9wdGlvbnMuY29tbWl0XG4gIGlmIChjID09IHVuZGVmaW5lZCkgcmV0dXJuXG4gIGNvbnN0IHYgPSBvcHRpb25zLnZlcmJvc2VcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICgvdG1wLy50ZXN0KGdpdC5ydW4oYywgXCJicmFuY2hcIiwgdikpKSBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiB0bXAgbWFzdGVyXCIsIHYpXG4gIGlmICgvTWVyZ2UgYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImxvZyAtLW9uZWxpbmUgLTFcIiwgdikpKVxuICAgIGdpdC5ydW4oYywgXCJyZXZlcnQgLS1tYWlubGluZSAxIC0tbm8tZWRpdCBIRUFEXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJtZXJnZSAtLW5vLWZmIC1tICdNZXJnZSB1cHN0cmVhbScgdXBzdHJlYW0vdWlkXCIsIHYpXG4gIGlmICgvYnVnZml4ZXMvLnRlc3QoZ2l0LnJ1bihjLCBcImJyYW5jaFwiLCB2KSkpXG4gICAgZ2l0LnJ1bihjLCBcImJyYW5jaCAtRCBidWdmaXhlc1wiLCB2KVxuICBnaXQucnVuKGMsIFwiY2hlY2tvdXQgLS1xdWlldCAtYiBidWdmaXhlc1wiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWVyZ2VGaXgob3B0aW9uczogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGMgPSBvcHRpb25zLmNvbW1pdFxuICBpZiAoYyA9PSB1bmRlZmluZWQpIHJldHVyblxuICBjb25zdCB2ID0gb3B0aW9ucy52ZXJib3NlXG4gIGdpdC5ydW4oYywgXCJjaGVja291dCAtLXF1aWV0IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwibWVyZ2UgLS1uby1mZiAtbSAnTWVyZ2UgYnVnZml4ZXMnIGJ1Z2ZpeGVzXCIsIHYpXG4gIGdpdC5ydW4oYywgXCJicmFuY2ggLUQgYnVnZml4ZXNcIiwgdilcbiAgZ2l0LnJ1bihjLCBcImNoZWNrb3V0IC0tcXVpZXQgbWFzdGVyXCIsIHYpXG4gIGlmICghZ2l0LnRlc3QoYywgXCJkaWZmIC0tcXVpZXQgdG1wIG1hc3RlclwiLCB2KSlcbiAgICBnaXQucnVuKGMsIFwibWVyZ2UgLS1mZi1vbmx5IHRtcFwiLCB2KVxuICBnaXQucnVuKGMsIFwiYnJhbmNoIC1EIHRtcFwiLCB2KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZGlyZWN0b3J5U2NoZW1hID0gW11cbiAgaWYgKG9wdGlvbnMuc2NoZW1hKSB7XG4gICAgZGlyZWN0b3J5U2NoZW1hID0gW1tvcHRpb25zLmRhdGEsIG9wdGlvbnMuc2NoZW1hXV1cbiAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGFzZXQpIHtcbiAgICBkaXJlY3RvcnlTY2hlbWEgPSBkYXRhc2V0RGlyZWN0b3J5U2NoZW1hKG9wdGlvbnMuZGF0YXNldClcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiZWl0aGVyIC0tc2NoZW1hIG9yIC0tZGF0YXNldCBpcyByZXF1aXJlZFwiKVxuICAgIHJldHVybiAxXG4gIH1cbiAgYXdhaXQgY2hlY2tvdXRGaXgob3B0aW9ucylcbiAgZm9yIChjb25zdCBkIG9mIGRpcmVjdG9yeVNjaGVtYSkge1xuICAgIG9wdGlvbnMuc2NoZW1hID0gZFsxXVxuICAgIG9wdGlvbnMuZGF0YSA9IGRbMF1cbiAgICBpZiAob3B0aW9ucy5kZWJ1ZylcbiAgICAgIGNvbnNvbGUubG9nKGB3b3JraW5nIG9uICR7b3B0aW9ucy5kYXRhfSB3aXRoIHNjaGVtYSAke29wdGlvbnMuc2NoZW1hfWApXG4gICAgbGV0IGhlbHBlclxuICAgIHRyeSB7XG4gICAgICBoZWxwZXIgPSBuZXcgQnVnc0hlbHBlcihvcHRpb25zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBHZXRGaWxlTm90Rm91bmRFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudmVyYm9zZSlcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgd29ya2luZyBvbiBmaWxlcyAke29wdGlvbnMuZGF0YX0gd2l0aCBzY2hlbWEgJHtvcHRpb25zLnNjaGVtYX1gLFxuICAgICAgKVxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IGhlbHBlci5tYWluKClcbiAgICBpZiAoc3RhdHVzICE9IDApIHJldHVybiBzdGF0dXNcbiAgfVxuICBhd2FpdCBtZXJnZUZpeChvcHRpb25zKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJidWdzX2hlbHBlci50c1wiKSlcbiAgbWFpbihwcm9jZXNzLmFyZ3YpXG4gICAgLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICBwcm9jZXNzLmV4aXQoZXhpdENvZGUpXG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLFNBQUEsR0FBQVAsT0FBQTtBQU8yQixTQUFBUSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUcsQ0FBQSxLQUFBQSxDQUFBLENBQUFWLEdBQUEsSUFBQVUsQ0FBQSxDQUFBQyxHQUFBLElBQUFQLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUcsQ0FBQSxJQUFBVCxDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsY0FBQVIsQ0FBQSxFQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQWUsR0FBQSxDQUFBbEIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBbEIsdUJBQUFVLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsR0FBQUosQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFtQixlQUFBakIsQ0FBQSxFQUFBRixDQUFBLFdBQUFvQixlQUFBLENBQUFsQixDQUFBLEtBQUFtQixxQkFBQSxDQUFBbkIsQ0FBQSxFQUFBRixDQUFBLEtBQUFzQiwyQkFBQSxDQUFBcEIsQ0FBQSxFQUFBRixDQUFBLEtBQUF1QixnQkFBQTtBQUFBLFNBQUFBLGlCQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBSCxzQkFBQW5CLENBQUEsRUFBQXVCLENBQUEsUUFBQXRCLENBQUEsV0FBQUQsQ0FBQSxnQ0FBQXdCLE1BQUEsSUFBQXhCLENBQUEsQ0FBQXdCLE1BQUEsQ0FBQUMsUUFBQSxLQUFBekIsQ0FBQSw0QkFBQUMsQ0FBQSxRQUFBSCxDQUFBLEVBQUFRLENBQUEsRUFBQVMsQ0FBQSxFQUFBSCxDQUFBLEVBQUFKLENBQUEsT0FBQWtCLENBQUEsT0FBQUMsQ0FBQSxpQkFBQVosQ0FBQSxJQUFBZCxDQUFBLEdBQUFBLENBQUEsQ0FBQWEsSUFBQSxDQUFBZCxDQUFBLEdBQUE0QixJQUFBLFFBQUFMLENBQUEsUUFBQWQsTUFBQSxDQUFBUixDQUFBLE1BQUFBLENBQUEsVUFBQXlCLENBQUEsdUJBQUFBLENBQUEsSUFBQTVCLENBQUEsR0FBQWlCLENBQUEsQ0FBQUQsSUFBQSxDQUFBYixDQUFBLEdBQUE0QixJQUFBLE1BQUFyQixDQUFBLENBQUFzQixJQUFBLENBQUFoQyxDQUFBLENBQUFpQyxLQUFBLEdBQUF2QixDQUFBLENBQUF3QixNQUFBLEtBQUFULENBQUEsR0FBQUcsQ0FBQSxpQkFBQTFCLENBQUEsSUFBQTJCLENBQUEsT0FBQXJCLENBQUEsR0FBQU4sQ0FBQSx5QkFBQTBCLENBQUEsWUFBQXpCLENBQUEsZUFBQVcsQ0FBQSxHQUFBWCxDQUFBLGNBQUFRLE1BQUEsQ0FBQUcsQ0FBQSxNQUFBQSxDQUFBLDJCQUFBZSxDQUFBLFFBQUFyQixDQUFBLGFBQUFFLENBQUE7QUFBQSxTQUFBVSxnQkFBQWxCLENBQUEsUUFBQWlDLEtBQUEsQ0FBQUMsT0FBQSxDQUFBbEMsQ0FBQSxVQUFBQSxDQUFBO0FBQUEsU0FBQW1DLG9CQUFBLGtCQVozQixxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQXJDLENBQUEsU0FBQUcsQ0FBQSxFQUFBSCxDQUFBLE9BQUFFLENBQUEsR0FBQVMsTUFBQSxDQUFBMkIsU0FBQSxFQUFBOUIsQ0FBQSxHQUFBTixDQUFBLENBQUFhLGNBQUEsRUFBQWMsQ0FBQSxHQUFBbEIsTUFBQSxDQUFBQyxjQUFBLGNBQUFULENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLElBQUFDLENBQUEsQ0FBQUgsQ0FBQSxJQUFBRSxDQUFBLENBQUErQixLQUFBLEtBQUFoQixDQUFBLHdCQUFBUyxNQUFBLEdBQUFBLE1BQUEsT0FBQWhCLENBQUEsR0FBQU8sQ0FBQSxDQUFBVSxRQUFBLGtCQUFBWSxDQUFBLEdBQUF0QixDQUFBLENBQUF1QixhQUFBLHVCQUFBMUIsQ0FBQSxHQUFBRyxDQUFBLENBQUF3QixXQUFBLDhCQUFBQyxPQUFBdkMsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsV0FBQVMsTUFBQSxDQUFBQyxjQUFBLENBQUFULENBQUEsRUFBQUgsQ0FBQSxJQUFBaUMsS0FBQSxFQUFBL0IsQ0FBQSxFQUFBeUMsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQTFDLENBQUEsQ0FBQUgsQ0FBQSxXQUFBMEMsTUFBQSxtQkFBQXZDLENBQUEsSUFBQXVDLE1BQUEsWUFBQUEsT0FBQXZDLENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLENBQUEsQ0FBQUgsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBNEMsS0FBQTNDLENBQUEsRUFBQUgsQ0FBQSxFQUFBRSxDQUFBLEVBQUFNLENBQUEsUUFBQVMsQ0FBQSxHQUFBakIsQ0FBQSxJQUFBQSxDQUFBLENBQUFzQyxTQUFBLFlBQUFTLFNBQUEsR0FBQS9DLENBQUEsR0FBQStDLFNBQUEsRUFBQXJDLENBQUEsR0FBQUMsTUFBQSxDQUFBcUMsTUFBQSxDQUFBL0IsQ0FBQSxDQUFBcUIsU0FBQSxHQUFBQyxDQUFBLE9BQUFVLE9BQUEsQ0FBQXpDLENBQUEsZ0JBQUFxQixDQUFBLENBQUFuQixDQUFBLGVBQUF1QixLQUFBLEVBQUFpQixnQkFBQSxDQUFBL0MsQ0FBQSxFQUFBRCxDQUFBLEVBQUFxQyxDQUFBLE1BQUE3QixDQUFBLGFBQUF5QyxTQUFBaEQsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsbUJBQUFrRCxJQUFBLFlBQUFDLEdBQUEsRUFBQWxELENBQUEsQ0FBQWEsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBRSxDQUFBLGNBQUFDLENBQUEsYUFBQWlELElBQUEsV0FBQUMsR0FBQSxFQUFBbEQsQ0FBQSxRQUFBSCxDQUFBLENBQUE4QyxJQUFBLEdBQUFBLElBQUEsTUFBQVEsQ0FBQSxxQkFBQTdCLENBQUEscUJBQUFHLENBQUEsZ0JBQUEyQixDQUFBLGdCQUFBQyxDQUFBLGdCQUFBVCxVQUFBLGNBQUFVLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQWpCLE1BQUEsQ0FBQWlCLENBQUEsRUFBQWpELENBQUEscUNBQUFrRCxDQUFBLEdBQUFqRCxNQUFBLENBQUFrRCxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQTVELENBQUEsSUFBQU0sQ0FBQSxDQUFBUSxJQUFBLENBQUE4QyxDQUFBLEVBQUFwRCxDQUFBLE1BQUFpRCxDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBcEIsU0FBQSxHQUFBUyxTQUFBLENBQUFULFNBQUEsR0FBQTNCLE1BQUEsQ0FBQXFDLE1BQUEsQ0FBQVcsQ0FBQSxZQUFBTSxzQkFBQTlELENBQUEsZ0NBQUErRCxPQUFBLFdBQUFsRSxDQUFBLElBQUEwQyxNQUFBLENBQUF2QyxDQUFBLEVBQUFILENBQUEsWUFBQUcsQ0FBQSxnQkFBQWdFLE9BQUEsQ0FBQW5FLENBQUEsRUFBQUcsQ0FBQSxzQkFBQWlFLGNBQUFqRSxDQUFBLEVBQUFILENBQUEsYUFBQXFFLE9BQUFuRSxDQUFBLEVBQUEyQixDQUFBLEVBQUFaLENBQUEsRUFBQVAsQ0FBQSxRQUFBNkIsQ0FBQSxHQUFBWSxRQUFBLENBQUFoRCxDQUFBLENBQUFELENBQUEsR0FBQUMsQ0FBQSxFQUFBMEIsQ0FBQSxtQkFBQVUsQ0FBQSxDQUFBYSxJQUFBLFFBQUF0QyxDQUFBLEdBQUF5QixDQUFBLENBQUFjLEdBQUEsRUFBQUMsQ0FBQSxHQUFBeEMsQ0FBQSxDQUFBbUIsS0FBQSxTQUFBcUIsQ0FBQSxnQkFBQWpELE9BQUEsQ0FBQWlELENBQUEsS0FBQTlDLENBQUEsQ0FBQVEsSUFBQSxDQUFBc0MsQ0FBQSxlQUFBdEQsQ0FBQSxDQUFBc0UsT0FBQSxDQUFBaEIsQ0FBQSxDQUFBaUIsT0FBQSxFQUFBQyxJQUFBLFdBQUFyRSxDQUFBLElBQUFrRSxNQUFBLFNBQUFsRSxDQUFBLEVBQUFjLENBQUEsRUFBQVAsQ0FBQSxnQkFBQVAsQ0FBQSxJQUFBa0UsTUFBQSxVQUFBbEUsQ0FBQSxFQUFBYyxDQUFBLEVBQUFQLENBQUEsUUFBQVYsQ0FBQSxDQUFBc0UsT0FBQSxDQUFBaEIsQ0FBQSxFQUFBa0IsSUFBQSxXQUFBckUsQ0FBQSxJQUFBVyxDQUFBLENBQUFtQixLQUFBLEdBQUE5QixDQUFBLEVBQUFjLENBQUEsQ0FBQUgsQ0FBQSxnQkFBQVgsQ0FBQSxXQUFBa0UsTUFBQSxVQUFBbEUsQ0FBQSxFQUFBYyxDQUFBLEVBQUFQLENBQUEsU0FBQUEsQ0FBQSxDQUFBNkIsQ0FBQSxDQUFBYyxHQUFBLFNBQUFuRCxDQUFBLEVBQUEyQixDQUFBLG9CQUFBSSxLQUFBLFdBQUFBLE1BQUE5QixDQUFBLEVBQUFLLENBQUEsYUFBQWlFLDJCQUFBLGVBQUF6RSxDQUFBLFdBQUFBLENBQUEsRUFBQUUsQ0FBQSxJQUFBbUUsTUFBQSxDQUFBbEUsQ0FBQSxFQUFBSyxDQUFBLEVBQUFSLENBQUEsRUFBQUUsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQXNFLElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUF2QixpQkFBQWxELENBQUEsRUFBQUUsQ0FBQSxFQUFBTSxDQUFBLFFBQUFxQixDQUFBLEdBQUF5QixDQUFBLG1CQUFBckMsQ0FBQSxFQUFBUCxDQUFBLFFBQUFtQixDQUFBLEtBQUFELENBQUEsUUFBQThDLEtBQUEsc0NBQUE3QyxDQUFBLEtBQUEwQixDQUFBLG9CQUFBdEMsQ0FBQSxRQUFBUCxDQUFBLFdBQUF1QixLQUFBLEVBQUE5QixDQUFBLEVBQUE0QixJQUFBLGVBQUF2QixDQUFBLENBQUFtRSxNQUFBLEdBQUExRCxDQUFBLEVBQUFULENBQUEsQ0FBQTZDLEdBQUEsR0FBQTNDLENBQUEsVUFBQTZCLENBQUEsR0FBQS9CLENBQUEsQ0FBQW9FLFFBQUEsTUFBQXJDLENBQUEsUUFBQXpCLENBQUEsR0FBQStELG1CQUFBLENBQUF0QyxDQUFBLEVBQUEvQixDQUFBLE9BQUFNLENBQUEsUUFBQUEsQ0FBQSxLQUFBMEMsQ0FBQSxtQkFBQTFDLENBQUEscUJBQUFOLENBQUEsQ0FBQW1FLE1BQUEsRUFBQW5FLENBQUEsQ0FBQXNFLElBQUEsR0FBQXRFLENBQUEsQ0FBQXVFLEtBQUEsR0FBQXZFLENBQUEsQ0FBQTZDLEdBQUEsc0JBQUE3QyxDQUFBLENBQUFtRSxNQUFBLFFBQUE5QyxDQUFBLEtBQUF5QixDQUFBLFFBQUF6QixDQUFBLEdBQUEwQixDQUFBLEVBQUEvQyxDQUFBLENBQUE2QyxHQUFBLEVBQUE3QyxDQUFBLENBQUF3RSxpQkFBQSxDQUFBeEUsQ0FBQSxDQUFBNkMsR0FBQSx1QkFBQTdDLENBQUEsQ0FBQW1FLE1BQUEsSUFBQW5FLENBQUEsQ0FBQXlFLE1BQUEsV0FBQXpFLENBQUEsQ0FBQTZDLEdBQUEsR0FBQXhCLENBQUEsR0FBQUQsQ0FBQSxNQUFBK0IsQ0FBQSxHQUFBUixRQUFBLENBQUFuRCxDQUFBLEVBQUFFLENBQUEsRUFBQU0sQ0FBQSxvQkFBQW1ELENBQUEsQ0FBQVAsSUFBQSxRQUFBdkIsQ0FBQSxHQUFBckIsQ0FBQSxDQUFBdUIsSUFBQSxHQUFBd0IsQ0FBQSxHQUFBOUIsQ0FBQSxFQUFBa0MsQ0FBQSxDQUFBTixHQUFBLEtBQUFHLENBQUEscUJBQUF2QixLQUFBLEVBQUEwQixDQUFBLENBQUFOLEdBQUEsRUFBQXRCLElBQUEsRUFBQXZCLENBQUEsQ0FBQXVCLElBQUEsa0JBQUE0QixDQUFBLENBQUFQLElBQUEsS0FBQXZCLENBQUEsR0FBQTBCLENBQUEsRUFBQS9DLENBQUEsQ0FBQW1FLE1BQUEsWUFBQW5FLENBQUEsQ0FBQTZDLEdBQUEsR0FBQU0sQ0FBQSxDQUFBTixHQUFBLG1CQUFBd0Isb0JBQUE3RSxDQUFBLEVBQUFFLENBQUEsUUFBQU0sQ0FBQSxHQUFBTixDQUFBLENBQUF5RSxNQUFBLEVBQUE5QyxDQUFBLEdBQUE3QixDQUFBLENBQUEyQixRQUFBLENBQUFuQixDQUFBLE9BQUFxQixDQUFBLEtBQUExQixDQUFBLFNBQUFELENBQUEsQ0FBQTBFLFFBQUEscUJBQUFwRSxDQUFBLElBQUFSLENBQUEsQ0FBQTJCLFFBQUEsZUFBQXpCLENBQUEsQ0FBQXlFLE1BQUEsYUFBQXpFLENBQUEsQ0FBQW1ELEdBQUEsR0FBQWxELENBQUEsRUFBQTBFLG1CQUFBLENBQUE3RSxDQUFBLEVBQUFFLENBQUEsZUFBQUEsQ0FBQSxDQUFBeUUsTUFBQSxrQkFBQW5FLENBQUEsS0FBQU4sQ0FBQSxDQUFBeUUsTUFBQSxZQUFBekUsQ0FBQSxDQUFBbUQsR0FBQSxPQUFBN0IsU0FBQSx1Q0FBQWhCLENBQUEsaUJBQUFnRCxDQUFBLE1BQUF2QyxDQUFBLEdBQUFrQyxRQUFBLENBQUF0QixDQUFBLEVBQUE3QixDQUFBLENBQUEyQixRQUFBLEVBQUF6QixDQUFBLENBQUFtRCxHQUFBLG1CQUFBcEMsQ0FBQSxDQUFBbUMsSUFBQSxTQUFBbEQsQ0FBQSxDQUFBeUUsTUFBQSxZQUFBekUsQ0FBQSxDQUFBbUQsR0FBQSxHQUFBcEMsQ0FBQSxDQUFBb0MsR0FBQSxFQUFBbkQsQ0FBQSxDQUFBMEUsUUFBQSxTQUFBcEIsQ0FBQSxNQUFBOUMsQ0FBQSxHQUFBTyxDQUFBLENBQUFvQyxHQUFBLFNBQUEzQyxDQUFBLEdBQUFBLENBQUEsQ0FBQXFCLElBQUEsSUFBQTdCLENBQUEsQ0FBQUYsQ0FBQSxDQUFBa0YsVUFBQSxJQUFBeEUsQ0FBQSxDQUFBdUIsS0FBQSxFQUFBL0IsQ0FBQSxDQUFBNEIsSUFBQSxHQUFBOUIsQ0FBQSxDQUFBbUYsT0FBQSxlQUFBakYsQ0FBQSxDQUFBeUUsTUFBQSxLQUFBekUsQ0FBQSxDQUFBeUUsTUFBQSxXQUFBekUsQ0FBQSxDQUFBbUQsR0FBQSxHQUFBbEQsQ0FBQSxHQUFBRCxDQUFBLENBQUEwRSxRQUFBLFNBQUFwQixDQUFBLElBQUE5QyxDQUFBLElBQUFSLENBQUEsQ0FBQXlFLE1BQUEsWUFBQXpFLENBQUEsQ0FBQW1ELEdBQUEsT0FBQTdCLFNBQUEsc0NBQUF0QixDQUFBLENBQUEwRSxRQUFBLFNBQUFwQixDQUFBLGNBQUE0QixhQUFBakYsQ0FBQSxRQUFBSCxDQUFBLEtBQUFxRixNQUFBLEVBQUFsRixDQUFBLFlBQUFBLENBQUEsS0FBQUgsQ0FBQSxDQUFBc0YsUUFBQSxHQUFBbkYsQ0FBQSxXQUFBQSxDQUFBLEtBQUFILENBQUEsQ0FBQXVGLFVBQUEsR0FBQXBGLENBQUEsS0FBQUgsQ0FBQSxDQUFBd0YsUUFBQSxHQUFBckYsQ0FBQSxXQUFBc0YsVUFBQSxDQUFBekQsSUFBQSxDQUFBaEMsQ0FBQSxjQUFBMEYsY0FBQXZGLENBQUEsUUFBQUgsQ0FBQSxHQUFBRyxDQUFBLENBQUF3RixVQUFBLFFBQUEzRixDQUFBLENBQUFvRCxJQUFBLG9CQUFBcEQsQ0FBQSxDQUFBcUQsR0FBQSxFQUFBbEQsQ0FBQSxDQUFBd0YsVUFBQSxHQUFBM0YsQ0FBQSxhQUFBaUQsUUFBQTlDLENBQUEsU0FBQXNGLFVBQUEsTUFBQUosTUFBQSxhQUFBbEYsQ0FBQSxDQUFBK0QsT0FBQSxDQUFBa0IsWUFBQSxjQUFBUSxLQUFBLGlCQUFBN0IsT0FBQS9ELENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBVSxDQUFBLE9BQUFSLENBQUEsU0FBQUEsQ0FBQSxDQUFBYyxJQUFBLENBQUFoQixDQUFBLDRCQUFBQSxDQUFBLENBQUE4QixJQUFBLFNBQUE5QixDQUFBLE9BQUE2RixLQUFBLENBQUE3RixDQUFBLENBQUFrQyxNQUFBLFNBQUFMLENBQUEsT0FBQVosQ0FBQSxZQUFBYSxLQUFBLGFBQUFELENBQUEsR0FBQTdCLENBQUEsQ0FBQWtDLE1BQUEsT0FBQTFCLENBQUEsQ0FBQVEsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBNkIsQ0FBQSxVQUFBQyxJQUFBLENBQUFHLEtBQUEsR0FBQWpDLENBQUEsQ0FBQTZCLENBQUEsR0FBQUMsSUFBQSxDQUFBQyxJQUFBLE9BQUFELElBQUEsU0FBQUEsSUFBQSxDQUFBRyxLQUFBLEdBQUE5QixDQUFBLEVBQUEyQixJQUFBLENBQUFDLElBQUEsT0FBQUQsSUFBQSxZQUFBYixDQUFBLENBQUFhLElBQUEsR0FBQWIsQ0FBQSxnQkFBQU8sU0FBQSxDQUFBbkIsT0FBQSxDQUFBTCxDQUFBLGtDQUFBeUQsaUJBQUEsQ0FBQW5CLFNBQUEsR0FBQW9CLDBCQUFBLEVBQUE3QixDQUFBLENBQUFtQyxDQUFBLG1CQUFBL0IsS0FBQSxFQUFBeUIsMEJBQUEsRUFBQWQsWUFBQSxTQUFBZixDQUFBLENBQUE2QiwwQkFBQSxtQkFBQXpCLEtBQUEsRUFBQXdCLGlCQUFBLEVBQUFiLFlBQUEsU0FBQWEsaUJBQUEsQ0FBQXFDLFdBQUEsR0FBQXBELE1BQUEsQ0FBQWdCLDBCQUFBLEVBQUE1QyxDQUFBLHdCQUFBZCxDQUFBLENBQUErRixtQkFBQSxhQUFBNUYsQ0FBQSxRQUFBSCxDQUFBLHdCQUFBRyxDQUFBLElBQUFBLENBQUEsQ0FBQTZGLFdBQUEsV0FBQWhHLENBQUEsS0FBQUEsQ0FBQSxLQUFBeUQsaUJBQUEsNkJBQUF6RCxDQUFBLENBQUE4RixXQUFBLElBQUE5RixDQUFBLENBQUFpRyxJQUFBLE9BQUFqRyxDQUFBLENBQUFrRyxJQUFBLGFBQUEvRixDQUFBLFdBQUFRLE1BQUEsQ0FBQXdGLGNBQUEsR0FBQXhGLE1BQUEsQ0FBQXdGLGNBQUEsQ0FBQWhHLENBQUEsRUFBQXVELDBCQUFBLEtBQUF2RCxDQUFBLENBQUFNLFNBQUEsR0FBQWlELDBCQUFBLEVBQUFoQixNQUFBLENBQUF2QyxDQUFBLEVBQUFXLENBQUEseUJBQUFYLENBQUEsQ0FBQW1DLFNBQUEsR0FBQTNCLE1BQUEsQ0FBQXFDLE1BQUEsQ0FBQWdCLENBQUEsR0FBQTdELENBQUEsS0FBQUgsQ0FBQSxDQUFBb0csS0FBQSxhQUFBakcsQ0FBQSxhQUFBb0UsT0FBQSxFQUFBcEUsQ0FBQSxPQUFBOEQscUJBQUEsQ0FBQUcsYUFBQSxDQUFBOUIsU0FBQSxHQUFBSSxNQUFBLENBQUEwQixhQUFBLENBQUE5QixTQUFBLEVBQUFDLENBQUEsaUNBQUF2QyxDQUFBLENBQUFvRSxhQUFBLEdBQUFBLGFBQUEsRUFBQXBFLENBQUEsQ0FBQXFHLEtBQUEsYUFBQWxHLENBQUEsRUFBQUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFxQixDQUFBLEVBQUFaLENBQUEsZUFBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUFxRixPQUFBLE9BQUE1RixDQUFBLE9BQUEwRCxhQUFBLENBQUF0QixJQUFBLENBQUEzQyxDQUFBLEVBQUFELENBQUEsRUFBQU0sQ0FBQSxFQUFBcUIsQ0FBQSxHQUFBWixDQUFBLFVBQUFqQixDQUFBLENBQUErRixtQkFBQSxDQUFBN0YsQ0FBQSxJQUFBUSxDQUFBLEdBQUFBLENBQUEsQ0FBQW9CLElBQUEsR0FBQTBDLElBQUEsV0FBQXJFLENBQUEsV0FBQUEsQ0FBQSxDQUFBNEIsSUFBQSxHQUFBNUIsQ0FBQSxDQUFBOEIsS0FBQSxHQUFBdkIsQ0FBQSxDQUFBb0IsSUFBQSxXQUFBbUMscUJBQUEsQ0FBQUQsQ0FBQSxHQUFBdEIsTUFBQSxDQUFBc0IsQ0FBQSxFQUFBbEQsQ0FBQSxnQkFBQTRCLE1BQUEsQ0FBQXNCLENBQUEsRUFBQXRELENBQUEsaUNBQUFnQyxNQUFBLENBQUFzQixDQUFBLDZEQUFBaEUsQ0FBQSxDQUFBdUcsSUFBQSxhQUFBcEcsQ0FBQSxRQUFBSCxDQUFBLEdBQUFXLE1BQUEsQ0FBQVIsQ0FBQSxHQUFBRCxDQUFBLGdCQUFBTSxDQUFBLElBQUFSLENBQUEsRUFBQUUsQ0FBQSxDQUFBOEIsSUFBQSxDQUFBeEIsQ0FBQSxVQUFBTixDQUFBLENBQUFzRyxPQUFBLGFBQUExRSxLQUFBLFdBQUE1QixDQUFBLENBQUFnQyxNQUFBLFNBQUEvQixDQUFBLEdBQUFELENBQUEsQ0FBQXVHLEdBQUEsUUFBQXRHLENBQUEsSUFBQUgsQ0FBQSxTQUFBOEIsSUFBQSxDQUFBRyxLQUFBLEdBQUE5QixDQUFBLEVBQUEyQixJQUFBLENBQUFDLElBQUEsT0FBQUQsSUFBQSxXQUFBQSxJQUFBLENBQUFDLElBQUEsT0FBQUQsSUFBQSxRQUFBOUIsQ0FBQSxDQUFBK0QsTUFBQSxHQUFBQSxNQUFBLEVBQUFkLE9BQUEsQ0FBQVgsU0FBQSxLQUFBMEQsV0FBQSxFQUFBL0MsT0FBQSxFQUFBMkMsS0FBQSxXQUFBQSxNQUFBNUYsQ0FBQSxhQUFBMEcsSUFBQSxXQUFBNUUsSUFBQSxXQUFBZ0QsSUFBQSxRQUFBQyxLQUFBLEdBQUE1RSxDQUFBLE9BQUE0QixJQUFBLFlBQUE2QyxRQUFBLGNBQUFELE1BQUEsZ0JBQUF0QixHQUFBLEdBQUFsRCxDQUFBLE9BQUFzRixVQUFBLENBQUF2QixPQUFBLENBQUF3QixhQUFBLElBQUExRixDQUFBLFdBQUFFLENBQUEsa0JBQUFBLENBQUEsQ0FBQXlHLE1BQUEsT0FBQW5HLENBQUEsQ0FBQVEsSUFBQSxPQUFBZCxDQUFBLE1BQUEyRixLQUFBLEVBQUEzRixDQUFBLENBQUEwRyxLQUFBLGNBQUExRyxDQUFBLElBQUFDLENBQUEsTUFBQTBHLElBQUEsV0FBQUEsS0FBQSxTQUFBOUUsSUFBQSxXQUFBNUIsQ0FBQSxRQUFBc0YsVUFBQSxJQUFBRSxVQUFBLGtCQUFBeEYsQ0FBQSxDQUFBaUQsSUFBQSxRQUFBakQsQ0FBQSxDQUFBa0QsR0FBQSxjQUFBeUQsSUFBQSxLQUFBOUIsaUJBQUEsV0FBQUEsa0JBQUFoRixDQUFBLGFBQUErQixJQUFBLFFBQUEvQixDQUFBLE1BQUFFLENBQUEsa0JBQUE2RyxPQUFBdkcsQ0FBQSxFQUFBcUIsQ0FBQSxXQUFBbkIsQ0FBQSxDQUFBMEMsSUFBQSxZQUFBMUMsQ0FBQSxDQUFBMkMsR0FBQSxHQUFBckQsQ0FBQSxFQUFBRSxDQUFBLENBQUE0QixJQUFBLEdBQUF0QixDQUFBLEVBQUFxQixDQUFBLEtBQUEzQixDQUFBLENBQUF5RSxNQUFBLFdBQUF6RSxDQUFBLENBQUFtRCxHQUFBLEdBQUFsRCxDQUFBLEtBQUEwQixDQUFBLGFBQUFBLENBQUEsUUFBQTRELFVBQUEsQ0FBQXZELE1BQUEsTUFBQUwsQ0FBQSxTQUFBQSxDQUFBLFFBQUFaLENBQUEsUUFBQXdFLFVBQUEsQ0FBQTVELENBQUEsR0FBQW5CLENBQUEsR0FBQU8sQ0FBQSxDQUFBMEUsVUFBQSxpQkFBQTFFLENBQUEsQ0FBQW9FLE1BQUEsU0FBQTBCLE1BQUEsYUFBQTlGLENBQUEsQ0FBQW9FLE1BQUEsU0FBQXFCLElBQUEsUUFBQW5FLENBQUEsR0FBQS9CLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxDQUFBLGVBQUFILENBQUEsR0FBQU4sQ0FBQSxDQUFBUSxJQUFBLENBQUFDLENBQUEscUJBQUFzQixDQUFBLElBQUF6QixDQUFBLGFBQUE0RixJQUFBLEdBQUF6RixDQUFBLENBQUFxRSxRQUFBLFNBQUF5QixNQUFBLENBQUE5RixDQUFBLENBQUFxRSxRQUFBLGdCQUFBb0IsSUFBQSxHQUFBekYsQ0FBQSxDQUFBc0UsVUFBQSxTQUFBd0IsTUFBQSxDQUFBOUYsQ0FBQSxDQUFBc0UsVUFBQSxjQUFBaEQsQ0FBQSxhQUFBbUUsSUFBQSxHQUFBekYsQ0FBQSxDQUFBcUUsUUFBQSxTQUFBeUIsTUFBQSxDQUFBOUYsQ0FBQSxDQUFBcUUsUUFBQSxxQkFBQXhFLENBQUEsUUFBQTRELEtBQUEscURBQUFnQyxJQUFBLEdBQUF6RixDQUFBLENBQUFzRSxVQUFBLFNBQUF3QixNQUFBLENBQUE5RixDQUFBLENBQUFzRSxVQUFBLFlBQUFOLE1BQUEsV0FBQUEsT0FBQTlFLENBQUEsRUFBQUgsQ0FBQSxhQUFBRSxDQUFBLFFBQUF1RixVQUFBLENBQUF2RCxNQUFBLE1BQUFoQyxDQUFBLFNBQUFBLENBQUEsUUFBQTJCLENBQUEsUUFBQTRELFVBQUEsQ0FBQXZGLENBQUEsT0FBQTJCLENBQUEsQ0FBQXdELE1BQUEsU0FBQXFCLElBQUEsSUFBQWxHLENBQUEsQ0FBQVEsSUFBQSxDQUFBYSxDQUFBLHdCQUFBNkUsSUFBQSxHQUFBN0UsQ0FBQSxDQUFBMEQsVUFBQSxRQUFBdEUsQ0FBQSxHQUFBWSxDQUFBLGFBQUFaLENBQUEsaUJBQUFkLENBQUEsbUJBQUFBLENBQUEsS0FBQWMsQ0FBQSxDQUFBb0UsTUFBQSxJQUFBckYsQ0FBQSxJQUFBQSxDQUFBLElBQUFpQixDQUFBLENBQUFzRSxVQUFBLEtBQUF0RSxDQUFBLGNBQUFQLENBQUEsR0FBQU8sQ0FBQSxHQUFBQSxDQUFBLENBQUEwRSxVQUFBLGNBQUFqRixDQUFBLENBQUEwQyxJQUFBLEdBQUFqRCxDQUFBLEVBQUFPLENBQUEsQ0FBQTJDLEdBQUEsR0FBQXJELENBQUEsRUFBQWlCLENBQUEsU0FBQTBELE1BQUEsZ0JBQUE3QyxJQUFBLEdBQUFiLENBQUEsQ0FBQXNFLFVBQUEsRUFBQS9CLENBQUEsU0FBQXdELFFBQUEsQ0FBQXRHLENBQUEsTUFBQXNHLFFBQUEsV0FBQUEsU0FBQTdHLENBQUEsRUFBQUgsQ0FBQSxvQkFBQUcsQ0FBQSxDQUFBaUQsSUFBQSxRQUFBakQsQ0FBQSxDQUFBa0QsR0FBQSxxQkFBQWxELENBQUEsQ0FBQWlELElBQUEsbUJBQUFqRCxDQUFBLENBQUFpRCxJQUFBLFFBQUF0QixJQUFBLEdBQUEzQixDQUFBLENBQUFrRCxHQUFBLGdCQUFBbEQsQ0FBQSxDQUFBaUQsSUFBQSxTQUFBMEQsSUFBQSxRQUFBekQsR0FBQSxHQUFBbEQsQ0FBQSxDQUFBa0QsR0FBQSxPQUFBc0IsTUFBQSxrQkFBQTdDLElBQUEseUJBQUEzQixDQUFBLENBQUFpRCxJQUFBLElBQUFwRCxDQUFBLFVBQUE4QixJQUFBLEdBQUE5QixDQUFBLEdBQUF3RCxDQUFBLEtBQUF5RCxNQUFBLFdBQUFBLE9BQUE5RyxDQUFBLGFBQUFILENBQUEsUUFBQXlGLFVBQUEsQ0FBQXZELE1BQUEsTUFBQWxDLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUF1RixVQUFBLENBQUF6RixDQUFBLE9BQUFFLENBQUEsQ0FBQXFGLFVBQUEsS0FBQXBGLENBQUEsY0FBQTZHLFFBQUEsQ0FBQTlHLENBQUEsQ0FBQXlGLFVBQUEsRUFBQXpGLENBQUEsQ0FBQXNGLFFBQUEsR0FBQUUsYUFBQSxDQUFBeEYsQ0FBQSxHQUFBc0QsQ0FBQSx5QkFBQTBELE9BQUEvRyxDQUFBLGFBQUFILENBQUEsUUFBQXlGLFVBQUEsQ0FBQXZELE1BQUEsTUFBQWxDLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUF1RixVQUFBLENBQUF6RixDQUFBLE9BQUFFLENBQUEsQ0FBQW1GLE1BQUEsS0FBQWxGLENBQUEsUUFBQUssQ0FBQSxHQUFBTixDQUFBLENBQUF5RixVQUFBLGtCQUFBbkYsQ0FBQSxDQUFBNEMsSUFBQSxRQUFBdkIsQ0FBQSxHQUFBckIsQ0FBQSxDQUFBNkMsR0FBQSxFQUFBcUMsYUFBQSxDQUFBeEYsQ0FBQSxZQUFBMkIsQ0FBQSxZQUFBNkMsS0FBQSw4QkFBQXlDLGFBQUEsV0FBQUEsY0FBQW5ILENBQUEsRUFBQUUsQ0FBQSxFQUFBTSxDQUFBLGdCQUFBb0UsUUFBQSxLQUFBakQsUUFBQSxFQUFBb0MsTUFBQSxDQUFBL0QsQ0FBQSxHQUFBa0YsVUFBQSxFQUFBaEYsQ0FBQSxFQUFBaUYsT0FBQSxFQUFBM0UsQ0FBQSxvQkFBQW1FLE1BQUEsVUFBQXRCLEdBQUEsR0FBQWxELENBQUEsR0FBQXFELENBQUEsT0FBQXhELENBQUE7QUFBQSxTQUFBb0gsMkJBQUFsSCxDQUFBLEVBQUFGLENBQUEsUUFBQUcsQ0FBQSx5QkFBQXVCLE1BQUEsSUFBQXhCLENBQUEsQ0FBQXdCLE1BQUEsQ0FBQUMsUUFBQSxLQUFBekIsQ0FBQSxxQkFBQUMsQ0FBQSxRQUFBZ0MsS0FBQSxDQUFBQyxPQUFBLENBQUFsQyxDQUFBLE1BQUFDLENBQUEsR0FBQW1CLDJCQUFBLENBQUFwQixDQUFBLE1BQUFGLENBQUEsSUFBQUUsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBZ0MsTUFBQSxJQUFBL0IsQ0FBQSxLQUFBRCxDQUFBLEdBQUFDLENBQUEsT0FBQWtILEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUEvRCxDQUFBLEVBQUErRCxDQUFBLEVBQUE5RyxDQUFBLFdBQUFBLEVBQUEsV0FBQTZHLEVBQUEsSUFBQW5ILENBQUEsQ0FBQWdDLE1BQUEsS0FBQUgsSUFBQSxXQUFBQSxJQUFBLE1BQUFFLEtBQUEsRUFBQS9CLENBQUEsQ0FBQW1ILEVBQUEsVUFBQXJILENBQUEsV0FBQUEsRUFBQUUsQ0FBQSxVQUFBQSxDQUFBLEtBQUEwQixDQUFBLEVBQUEwRixDQUFBLGdCQUFBOUYsU0FBQSxpSkFBQUssQ0FBQSxFQUFBbkIsQ0FBQSxPQUFBSSxDQUFBLGdCQUFBeUMsQ0FBQSxXQUFBQSxFQUFBLElBQUFwRCxDQUFBLEdBQUFBLENBQUEsQ0FBQWEsSUFBQSxDQUFBZCxDQUFBLE1BQUFNLENBQUEsV0FBQUEsRUFBQSxRQUFBTixDQUFBLEdBQUFDLENBQUEsQ0FBQTJCLElBQUEsV0FBQXBCLENBQUEsR0FBQVIsQ0FBQSxDQUFBNkIsSUFBQSxFQUFBN0IsQ0FBQSxLQUFBRixDQUFBLFdBQUFBLEVBQUFFLENBQUEsSUFBQVksQ0FBQSxPQUFBZSxDQUFBLEdBQUEzQixDQUFBLEtBQUEwQixDQUFBLFdBQUFBLEVBQUEsVUFBQWxCLENBQUEsWUFBQVAsQ0FBQSxjQUFBQSxDQUFBLDhCQUFBVyxDQUFBLFFBQUFlLENBQUE7QUFBQSxTQUFBUCw0QkFBQXBCLENBQUEsRUFBQVEsQ0FBQSxRQUFBUixDQUFBLDJCQUFBQSxDQUFBLFNBQUFxSCxpQkFBQSxDQUFBckgsQ0FBQSxFQUFBUSxDQUFBLE9BQUFQLENBQUEsTUFBQXFILFFBQUEsQ0FBQXhHLElBQUEsQ0FBQWQsQ0FBQSxFQUFBMEcsS0FBQSw2QkFBQXpHLENBQUEsSUFBQUQsQ0FBQSxDQUFBOEYsV0FBQSxLQUFBN0YsQ0FBQSxHQUFBRCxDQUFBLENBQUE4RixXQUFBLENBQUFDLElBQUEsYUFBQTlGLENBQUEsY0FBQUEsQ0FBQSxHQUFBZ0MsS0FBQSxDQUFBc0YsSUFBQSxDQUFBdkgsQ0FBQSxvQkFBQUMsQ0FBQSwrQ0FBQXVILElBQUEsQ0FBQXZILENBQUEsSUFBQW9ILGlCQUFBLENBQUFySCxDQUFBLEVBQUFRLENBQUE7QUFBQSxTQUFBNkcsa0JBQUFySCxDQUFBLEVBQUFRLENBQUEsYUFBQUEsQ0FBQSxJQUFBQSxDQUFBLEdBQUFSLENBQUEsQ0FBQWdDLE1BQUEsTUFBQXhCLENBQUEsR0FBQVIsQ0FBQSxDQUFBZ0MsTUFBQSxZQUFBbEMsQ0FBQSxNQUFBUSxDQUFBLEdBQUEyQixLQUFBLENBQUF6QixDQUFBLEdBQUFWLENBQUEsR0FBQVUsQ0FBQSxFQUFBVixDQUFBLElBQUFRLENBQUEsQ0FBQVIsQ0FBQSxJQUFBRSxDQUFBLENBQUFGLENBQUEsVUFBQVEsQ0FBQTtBQUFBLFNBQUFtSCxtQkFBQW5ILENBQUEsRUFBQUwsQ0FBQSxFQUFBSCxDQUFBLEVBQUFFLENBQUEsRUFBQTJCLENBQUEsRUFBQW5CLENBQUEsRUFBQTZCLENBQUEsY0FBQXRCLENBQUEsR0FBQVQsQ0FBQSxDQUFBRSxDQUFBLEVBQUE2QixDQUFBLEdBQUF6QixDQUFBLEdBQUFHLENBQUEsQ0FBQWdCLEtBQUEsV0FBQXpCLENBQUEsZ0JBQUFSLENBQUEsQ0FBQVEsQ0FBQSxLQUFBUyxDQUFBLENBQUFjLElBQUEsR0FBQTVCLENBQUEsQ0FBQVcsQ0FBQSxJQUFBd0YsT0FBQSxDQUFBaEMsT0FBQSxDQUFBeEQsQ0FBQSxFQUFBMEQsSUFBQSxDQUFBdEUsQ0FBQSxFQUFBMkIsQ0FBQTtBQUFBLFNBQUErRixrQkFBQXBILENBQUEsNkJBQUFMLENBQUEsU0FBQUgsQ0FBQSxHQUFBNkgsU0FBQSxhQUFBdkIsT0FBQSxXQUFBcEcsQ0FBQSxFQUFBMkIsQ0FBQSxRQUFBbkIsQ0FBQSxHQUFBRixDQUFBLENBQUFzSCxLQUFBLENBQUEzSCxDQUFBLEVBQUFILENBQUEsWUFBQStILE1BQUF2SCxDQUFBLElBQUFtSCxrQkFBQSxDQUFBakgsQ0FBQSxFQUFBUixDQUFBLEVBQUEyQixDQUFBLEVBQUFrRyxLQUFBLEVBQUFDLE1BQUEsVUFBQXhILENBQUEsY0FBQXdILE9BQUF4SCxDQUFBLElBQUFtSCxrQkFBQSxDQUFBakgsQ0FBQSxFQUFBUixDQUFBLEVBQUEyQixDQUFBLEVBQUFrRyxLQUFBLEVBQUFDLE1BQUEsV0FBQXhILENBQUEsS0FBQXVILEtBQUE7QUFBQSxTQUFBRSxnQkFBQXZILENBQUEsRUFBQUYsQ0FBQSxVQUFBRSxDQUFBLFlBQUFGLENBQUEsYUFBQWdCLFNBQUE7QUFBQSxTQUFBMEcsa0JBQUFsSSxDQUFBLEVBQUFFLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFELENBQUEsQ0FBQWdDLE1BQUEsRUFBQS9CLENBQUEsVUFBQTBCLENBQUEsR0FBQTNCLENBQUEsQ0FBQUMsQ0FBQSxHQUFBMEIsQ0FBQSxDQUFBYyxVQUFBLEdBQUFkLENBQUEsQ0FBQWMsVUFBQSxRQUFBZCxDQUFBLENBQUFlLFlBQUEsa0JBQUFmLENBQUEsS0FBQUEsQ0FBQSxDQUFBZ0IsUUFBQSxRQUFBbEMsTUFBQSxDQUFBQyxjQUFBLENBQUFaLENBQUEsRUFBQW1JLGNBQUEsQ0FBQXRHLENBQUEsQ0FBQXVHLEdBQUEsR0FBQXZHLENBQUE7QUFBQSxTQUFBd0csYUFBQXJJLENBQUEsRUFBQUUsQ0FBQSxFQUFBQyxDQUFBLFdBQUFELENBQUEsSUFBQWdJLGlCQUFBLENBQUFsSSxDQUFBLENBQUFzQyxTQUFBLEVBQUFwQyxDQUFBLEdBQUFDLENBQUEsSUFBQStILGlCQUFBLENBQUFsSSxDQUFBLEVBQUFHLENBQUEsR0FBQVEsTUFBQSxDQUFBQyxjQUFBLENBQUFaLENBQUEsaUJBQUE2QyxRQUFBLFNBQUE3QyxDQUFBO0FBQUEsU0FBQXNJLGdCQUFBdEksQ0FBQSxFQUFBRSxDQUFBLEVBQUFDLENBQUEsWUFBQUQsQ0FBQSxHQUFBaUksY0FBQSxDQUFBakksQ0FBQSxNQUFBRixDQUFBLEdBQUFXLE1BQUEsQ0FBQUMsY0FBQSxDQUFBWixDQUFBLEVBQUFFLENBQUEsSUFBQStCLEtBQUEsRUFBQTlCLENBQUEsRUFBQXdDLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFVBQUE3QyxDQUFBLENBQUFFLENBQUEsSUFBQUMsQ0FBQSxFQUFBSCxDQUFBO0FBQUEsU0FBQW1JLGVBQUFoSSxDQUFBLFFBQUFjLENBQUEsR0FBQXNILFlBQUEsQ0FBQXBJLENBQUEsZ0NBQUFFLE9BQUEsQ0FBQVksQ0FBQSxJQUFBQSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBc0gsYUFBQXBJLENBQUEsRUFBQUQsQ0FBQSxvQkFBQUcsT0FBQSxDQUFBRixDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBSCxDQUFBLEdBQUFHLENBQUEsQ0FBQXVCLE1BQUEsQ0FBQThHLFdBQUEsa0JBQUF4SSxDQUFBLFFBQUFpQixDQUFBLEdBQUFqQixDQUFBLENBQUFnQixJQUFBLENBQUFiLENBQUEsRUFBQUQsQ0FBQSxnQ0FBQUcsT0FBQSxDQUFBWSxDQUFBLFVBQUFBLENBQUEsWUFBQU8sU0FBQSx5RUFBQXRCLENBQUEsR0FBQXVJLE1BQUEsR0FBQUMsTUFBQSxFQUFBdkksQ0FBQTtBQWNBLFNBQVN3SSxTQUFTQSxDQUFDQyxJQUFjLEVBQU87RUFDdEMsSUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7SUFDRUMsV0FBVyxFQUFFLGtEQUFrRDtJQUMvREMsYUFBYSxFQUFFLElBQUk7SUFDbkI5QyxJQUFJLEVBQUUsTUFBTTtJQUNaN0MsSUFBSSxFQUFFcUY7RUFDUixDQUFDLEVBQ0Q7SUFDRUssV0FBVyxFQUNULHdFQUF3RTtJQUMxRTdDLElBQUksRUFBRSxJQUFJO0lBQ1Y3QyxJQUFJLEVBQUVxRjtFQUNSLENBQUMsRUFDRDtJQUNFSyxXQUFXLEVBQUUscUNBQXFDO0lBQ2xEN0MsSUFBSSxFQUFFLFFBQVE7SUFDZDdDLElBQUksRUFBRXFGO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VLLFdBQVcsRUFBRSx3QkFBd0I7SUFDckM3QyxJQUFJLEVBQUUsS0FBSztJQUNYN0MsSUFBSSxFQUFFcUY7RUFDUixDQUFDLEVBQ0Q7SUFDRUssV0FBVyxFQUNULGtFQUFrRTtJQUNwRTdDLElBQUksRUFBRSxRQUFRO0lBQ2Q3QyxJQUFJLEVBQUVxRjtFQUNSLENBQUMsRUFDRDtJQUNFSyxXQUFXLDBEQUFBRSxNQUFBLENBQTBELElBQUFDLHFCQUFXLEVBQUMsQ0FBQyxNQUFHO0lBQ3JGaEQsSUFBSSxFQUFFLFNBQVM7SUFDZjdDLElBQUksRUFBRXFGO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VLLFdBQVcsaUNBQUFFLE1BQUEsQ0FBaUMsSUFBQUUsb0JBQVUsRUFBQyxDQUFDLE1BQUc7SUFDM0RqRCxJQUFJLEVBQUUsUUFBUTtJQUNkN0MsSUFBSSxFQUFFcUY7RUFDUixDQUFDLEVBQ0Q7SUFDRUssV0FBVyxFQUFFLCtDQUErQztJQUM1RDdDLElBQUksRUFBRSxVQUFVO0lBQ2hCN0MsSUFBSSxFQUFFcUY7RUFDUixDQUFDLEVBQ0Q7SUFDRUssV0FBVyxFQUFFLG9CQUFvQjtJQUNqQzdDLElBQUksRUFBRSxTQUFTO0lBQ2Y3QyxJQUFJLEVBQUUrRjtFQUNSLENBQUMsRUFDRDtJQUNFTCxXQUFXLEVBQUUsbUJBQW1CO0lBQ2hDN0MsSUFBSSxFQUFFLE9BQU87SUFDYjdDLElBQUksRUFBRStGO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VMLFdBQVcsRUFBRSxPQUFPO0lBQ3BCN0MsSUFBSSxFQUFFLE9BQU87SUFDYjdDLElBQUksRUFBRStGO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VMLFdBQVcsRUFBRSxLQUFLO0lBQ2xCN0MsSUFBSSxFQUFFLEtBQUs7SUFDWDdDLElBQUksRUFBRStGO0VBQ1IsQ0FBQyxFQUNEO0lBQ0VsRCxJQUFJLEVBQUUsTUFBTTtJQUNaNkMsV0FBVyxFQUFFO0VBQ2YsQ0FBQyxDQUNGO0VBQ0QsSUFBTU0sUUFBUSxHQUFHLENBQ2Y7SUFDRUMsTUFBTSxFQUFFLCtDQUErQztJQUN2REMsT0FBTyxFQUFFO0VBQ1gsQ0FBQyxFQUNEO0lBQ0VELE1BQU0sRUFBRSxTQUFTO0lBQ2pCRSxVQUFVLEVBQUVWO0VBQ2QsQ0FBQyxDQUNGO0VBQ0QsSUFBTVcsT0FBTyxHQUFHLElBQUFDLDJCQUFlLEVBQUNaLGtCQUFrQixFQUFFO0lBQ2xERCxJQUFJLEVBQUVBO0VBQ1IsQ0FBQyxDQUFDO0VBRUYsSUFBSVksT0FBTyxDQUFDRSxPQUFPLEVBQUU7SUFDbkIsSUFBSSxDQUFDLElBQUFDLHNCQUFZLEVBQUNILE9BQU8sQ0FBQ0UsT0FBTyxDQUFDLEVBQUU7TUFDbENFLE9BQU8sQ0FBQ0MsS0FBSyxjQUFBYixNQUFBLENBQWNRLE9BQU8sQ0FBQ0UsT0FBTyxDQUFFLENBQUM7TUFDN0NGLE9BQU8sQ0FBQ00sSUFBSSxHQUFHLElBQUk7SUFDckI7RUFDRjtFQUVBLElBQUlOLE9BQU8sQ0FBQ08sTUFBTSxFQUFFO0lBQ2xCLElBQUksQ0FBQyxJQUFBYixvQkFBVSxFQUFDLENBQUMsQ0FBQ2MsUUFBUSxDQUFDUixPQUFPLENBQUNPLE1BQU0sQ0FBQyxFQUFFO01BQzFDSCxPQUFPLENBQUNDLEtBQUssYUFBQWIsTUFBQSxDQUFhUSxPQUFPLENBQUNPLE1BQU0sQ0FBRSxDQUFDO01BQzNDUCxPQUFPLENBQUNNLElBQUksR0FBRyxJQUFJO0lBQ3JCO0VBQ0Y7RUFFQSxJQUFJTixPQUFPLENBQUNTLE1BQU0sRUFBRTtJQUNsQixJQUFJLENBQUNDLG1CQUFFLENBQUNDLFVBQVUsQ0FBQ1gsT0FBTyxDQUFDUyxNQUFNLENBQUMsRUFBRTtNQUNsQ0wsT0FBTyxDQUFDQyxLQUFLLElBQUFiLE1BQUEsQ0FBSVEsT0FBTyxDQUFDUyxNQUFNLG9CQUFpQixDQUFDO01BQ2pEVCxPQUFPLENBQUNNLElBQUksR0FBRyxJQUFJO0lBQ3JCO0VBQ0Y7RUFFQSxJQUFJTixPQUFPLENBQUNZLEtBQUssRUFBRVosT0FBTyxDQUFDYSxPQUFPLEdBQUcsSUFBSTtFQUV6QyxJQUFJLE1BQU0sSUFBSWIsT0FBTyxFQUFFO0lBQ3JCLElBQU1jLEtBQUssR0FBRyxJQUFBQyw0QkFBZ0IsRUFBQ25CLFFBQVEsQ0FBQztJQUN4Q1EsT0FBTyxDQUFDWSxJQUFJLENBQUNGLEtBQUssQ0FBQztJQUNuQixPQUFPLElBQUk7RUFDYjtFQUNBLE9BQU9kLE9BQU87QUFDaEI7QUFBQyxJQUVZaUIsVUFBVSxHQUFBQyxPQUFBLENBQUFELFVBQUE7RUFJckIsU0FBQUEsV0FBWWpCLE9BQVksRUFBRTtJQUFBdkIsZUFBQSxPQUFBd0MsVUFBQTtJQUFBbkMsZUFBQTtJQUFBQSxlQUFBO0lBQ3hCLElBQUksQ0FBQ2tCLE9BQU8sR0FBR0EsT0FBTztJQUN0QixJQUFJLENBQUNtQixJQUFJLEdBQUcsSUFBSUMsZ0JBQVUsQ0FBQyxJQUFJLENBQUNwQixPQUFPLENBQUM7RUFDMUM7RUFBQyxPQUFBbkIsWUFBQSxDQUFBb0MsVUFBQTtJQUFBckMsR0FBQTtJQUFBbkcsS0FBQTtNQUFBLElBQUE0SSxNQUFBLEdBQUFqRCxpQkFBQSxjQUFBdkYsbUJBQUEsR0FBQTZELElBQUEsQ0FFRCxTQUFBNEUsUUFBQTtRQUFBLElBQUFDLFFBQUEsRUFBQUMsU0FBQSxFQUFBQyxLQUFBLEVBQUFDLElBQUEsRUFBQTVCLE9BQUE7UUFBQSxPQUFBakgsbUJBQUEsR0FBQVMsSUFBQSxVQUFBcUksU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUExRSxJQUFBLEdBQUEwRSxRQUFBLENBQUF0SixJQUFBO1lBQUE7Y0FDUWlKLFFBQWEsR0FBRyxDQUFDLENBQUM7Y0FBQUssUUFBQSxDQUFBdEosSUFBQTtjQUFBLE9BQ2xCLElBQUksQ0FBQzZJLElBQUksQ0FBQ1UsUUFBUSxDQUFDLENBQUM7WUFBQTtjQUMxQixJQUFJLElBQUksQ0FBQzdCLE9BQU8sQ0FBQ2EsT0FBTyxFQUFFVCxPQUFPLENBQUMwQixHQUFHLFVBQUF0QyxNQUFBLENBQVUsSUFBSSxDQUFDUSxPQUFPLENBQUMrQixJQUFJLENBQUUsQ0FBQztjQUFBUCxTQUFBLEdBQUE1RCwwQkFBQSxDQUNoRCxJQUFBb0Usc0JBQVEsRUFBQyxDQUFDLElBQUksQ0FBQ2hDLE9BQU8sQ0FBQytCLElBQUksQ0FBQyxDQUFDO2NBQUFILFFBQUEsQ0FBQTFFLElBQUE7Y0FBQXNFLFNBQUEsQ0FBQXpILENBQUE7WUFBQTtjQUFBLEtBQUEwSCxLQUFBLEdBQUFELFNBQUEsQ0FBQXhLLENBQUEsSUFBQXVCLElBQUE7Z0JBQUFxSixRQUFBLENBQUF0SixJQUFBO2dCQUFBO2NBQUE7Y0FBckNvSixJQUFJLEdBQUFELEtBQUEsQ0FBQWhKLEtBQUE7Y0FDUHFILE9BQU8sR0FBRyxJQUFBbUMsa0JBQUksRUFBQ1AsSUFBSSxDQUFDO2NBQUFFLFFBQUEsQ0FBQXRKLElBQUE7Y0FBQSxPQUNILElBQUksQ0FBQzZJLElBQUksQ0FBQ2UsS0FBSyxDQUFDcEMsT0FBTyxFQUFFNEIsSUFBSSxDQUFDO1lBQUE7Y0FBckRILFFBQVEsQ0FBQ0csSUFBSSxDQUFDLEdBQUFFLFFBQUEsQ0FBQXRHLElBQUE7WUFBQTtjQUFBc0csUUFBQSxDQUFBdEosSUFBQTtjQUFBO1lBQUE7Y0FBQXNKLFFBQUEsQ0FBQXRKLElBQUE7Y0FBQTtZQUFBO2NBQUFzSixRQUFBLENBQUExRSxJQUFBO2NBQUEwRSxRQUFBLENBQUFPLEVBQUEsR0FBQVAsUUFBQTtjQUFBSixTQUFBLENBQUFoTCxDQUFBLENBQUFvTCxRQUFBLENBQUFPLEVBQUE7WUFBQTtjQUFBUCxRQUFBLENBQUExRSxJQUFBO2NBQUFzRSxTQUFBLENBQUFwSixDQUFBO2NBQUEsT0FBQXdKLFFBQUEsQ0FBQW5FLE1BQUE7WUFBQTtjQUFBbUUsUUFBQSxDQUFBdEosSUFBQTtjQUFBLE9BRVYsSUFBSSxDQUFDNkksSUFBSSxDQUFDaUIsU0FBUyxDQUFDYixRQUFRLENBQUM7WUFBQTtjQUFBSyxRQUFBLENBQUF0SixJQUFBO2NBQUEsT0FDN0IsSUFBSSxDQUFDK0osSUFBSSxDQUFDZCxRQUFRLENBQUM7WUFBQTtjQUFBLEtBQ3JCLElBQUksQ0FBQ3ZCLE9BQU8sQ0FBQ3NDLE1BQU07Z0JBQUFWLFFBQUEsQ0FBQXRKLElBQUE7Z0JBQUE7Y0FBQTtjQUFBc0osUUFBQSxDQUFBdEosSUFBQTtjQUFBLE9BQVEsSUFBSSxDQUFDaUssS0FBSyxDQUFDaEIsUUFBUSxDQUFDO1lBQUE7Y0FBQSxPQUFBSyxRQUFBLENBQUFuRyxNQUFBLFdBQzVDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQW1HLFFBQUEsQ0FBQXZFLElBQUE7VUFBQTtRQUFBLEdBQUFpRSxPQUFBO01BQUEsQ0FDVDtNQUFBLFNBWktZLEtBQUtBLENBQUE7UUFBQSxPQUFBYixNQUFBLENBQUEvQyxLQUFBLE9BQUFELFNBQUE7TUFBQTtNQUFBLE9BQUw2RCxLQUFLO0lBQUE7RUFBQTtJQUFBdEQsR0FBQTtJQUFBbkcsS0FBQTtNQUFBLElBQUErSixLQUFBLEdBQUFwRSxpQkFBQSxjQUFBdkYsbUJBQUEsR0FBQTZELElBQUEsQ0FjWCxTQUFBK0YsU0FBV2xCLFFBQWE7UUFBQSxJQUFBbUIsRUFBQSxFQUFBQyxZQUFBLEVBQUFDLFFBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBLEVBQUFDLGFBQUEsRUFBQXRHLElBQUEsRUFBQXVHLE1BQUEsRUFBQWxCLEdBQUE7UUFBQSxPQUFBakosbUJBQUEsR0FBQVMsSUFBQSxVQUFBMkosVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUFoRyxJQUFBLEdBQUFnRyxTQUFBLENBQUE1SyxJQUFBO1lBQUE7Y0FDdEIsS0FBQW9LLEVBQUEsTUFBQUMsWUFBQSxHQUF1QnhMLE1BQU0sQ0FBQzRGLElBQUksQ0FBQ3dFLFFBQVEsQ0FBQyxFQUFBbUIsRUFBQSxHQUFBQyxZQUFBLENBQUFqSyxNQUFBLEVBQUFnSyxFQUFBLElBQUU7Z0JBQW5DRSxRQUFRLEdBQUFELFlBQUEsQ0FBQUQsRUFBQTtnQkFDWEcsR0FBRyxHQUFHdEIsUUFBUSxDQUFDcUIsUUFBUSxDQUFDO2dCQUM5QixLQUFBRSxHQUFBLE1BQUFDLGFBQUEsR0FBbUI1TCxNQUFNLENBQUM0RixJQUFJLENBQUM4RixHQUFHLENBQUMsRUFBQUMsR0FBQSxHQUFBQyxhQUFBLENBQUFySyxNQUFBLEVBQUFvSyxHQUFBLElBQUU7a0JBQTFCckcsSUFBSSxHQUFBc0csYUFBQSxDQUFBRCxHQUFBO2tCQUNQRSxNQUFNLEdBQUdILEdBQUcsQ0FBQ3BHLElBQUksQ0FBQztrQkFDeEIsSUFBSXVHLE1BQU0sSUFBSSxJQUFJLEVBQUU7b0JBQ2RsQixHQUFHO29CQUNQLElBQUlrQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksY0FBYyxFQUFFO3NCQUN0Q2xCLEdBQUcsR0FBRzFCLE9BQU8sQ0FBQ0MsS0FBSztvQkFDckIsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDTCxPQUFPLENBQUNhLE9BQU8sRUFBRTtzQkFDL0JpQixHQUFHLEdBQUcxQixPQUFPLENBQUMwQixHQUFHO29CQUNuQjtvQkFDQSxJQUFJQSxHQUFHLElBQUlxQixTQUFTLEVBQUU7c0JBQ3BCckIsR0FBRyxJQUFBdEMsTUFBQSxDQUFJL0MsSUFBSSxhQUFBK0MsTUFBQSxDQUFVb0QsUUFBUSxPQUFBcEQsTUFBQSxDQUFJd0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFFLENBQUM7c0JBQ3BEbEIsR0FBRyxDQUFDa0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2hDO2tCQUNGO2dCQUNGO2NBQ0Y7WUFBQztZQUFBO2NBQUEsT0FBQUYsU0FBQSxDQUFBN0YsSUFBQTtVQUFBO1FBQUEsR0FBQW9GLFFBQUE7TUFBQSxDQUNGO01BQUEsU0FuQktKLElBQUlBLENBQUFnQixFQUFBO1FBQUEsT0FBQWIsS0FBQSxDQUFBbEUsS0FBQSxPQUFBRCxTQUFBO01BQUE7TUFBQSxPQUFKZ0UsSUFBSTtJQUFBO0VBQUE7SUFBQXpELEdBQUE7SUFBQW5HLEtBQUE7TUFBQSxJQUFBNkssTUFBQSxHQUFBbEYsaUJBQUEsY0FBQXZGLG1CQUFBLEdBQUE2RCxJQUFBLENBcUJWLFNBQUE2RyxTQUFZaEMsUUFBYTtRQUFBLElBQUFpQyxZQUFBLEVBQUFDLEdBQUEsRUFBQUMsYUFBQSxFQUFBZCxRQUFBLEVBQUFDLEdBQUEsRUFBQWMsR0FBQSxFQUFBQyxhQUFBLEVBQUFuSCxJQUFBLEVBQUFvSCxHQUFBLEVBQUFDLGFBQUEsRUFBQUMsS0FBQSxFQUFBQyxPQUFBLEVBQUFoTixDQUFBLEVBQUFpTixLQUFBLEVBQUFDLFlBQUEsRUFBQUMsR0FBQSxFQUFBQyxhQUFBLEVBQUFDLFNBQUEsRUFBQUMsTUFBQSxFQUFBQyxNQUFBLEVBQUF0TSxDQUFBLEVBQUF1TSxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsSUFBQSxFQUFBQyxHQUFBLEVBQUFDLElBQUEsRUFBQUMsT0FBQSxFQUFBQyxPQUFBLEVBQUFDLEtBQUEsRUFBQXpDLE1BQUE7UUFBQSxPQUFBekosbUJBQUEsR0FBQVMsSUFBQSxVQUFBMEwsVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUEvSCxJQUFBLEdBQUErSCxTQUFBLENBQUEzTSxJQUFBO1lBQUE7Y0FDakJrTCxZQUFpQixHQUFHLENBQUMsQ0FBQztjQUM1QixLQUFBQyxHQUFBLE1BQUFDLGFBQUEsR0FBdUJ2TSxNQUFNLENBQUM0RixJQUFJLENBQUN3RSxRQUFRLENBQUMsRUFBQWtDLEdBQUEsR0FBQUMsYUFBQSxDQUFBaEwsTUFBQSxFQUFBK0ssR0FBQSxJQUFFO2dCQUFuQ2IsUUFBUSxHQUFBYyxhQUFBLENBQUFELEdBQUE7Z0JBQ1haLEdBQUcsR0FBR3RCLFFBQVEsQ0FBQ3FCLFFBQVEsQ0FBQztnQkFDOUIsS0FBQWUsR0FBQSxNQUFBQyxhQUFBLEdBQW1Cek0sTUFBTSxDQUFDNEYsSUFBSSxDQUFDOEYsR0FBRyxDQUFDLEVBQUFjLEdBQUEsR0FBQUMsYUFBQSxDQUFBbEwsTUFBQSxFQUFBaUwsR0FBQSxJQUFFO2tCQUExQmxILElBQUksR0FBQW1ILGFBQUEsQ0FBQUQsR0FBQTtrQkFDYixJQUFJLEVBQUVsSCxJQUFJLElBQUkrRyxZQUFZLENBQUMsRUFBRUEsWUFBWSxDQUFDL0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2tCQUNwRCtHLFlBQVksQ0FBQy9HLElBQUksQ0FBQyxDQUFDbUcsUUFBUSxDQUFDLEdBQUdDLEdBQUcsQ0FBQ3BHLElBQUksQ0FBQztnQkFDMUM7Y0FDRjtjQUFDb0gsR0FBQSxNQUFBQyxhQUFBLEdBQ2tCM00sTUFBTSxDQUFDNEYsSUFBSSxDQUFDeUcsWUFBWSxDQUFDO1lBQUE7Y0FBQSxNQUFBSyxHQUFBLEdBQUFDLGFBQUEsQ0FBQXBMLE1BQUE7Z0JBQUF1TSxTQUFBLENBQUEzTSxJQUFBO2dCQUFBO2NBQUE7Y0FBakNtRSxLQUFJLEdBQUFxSCxhQUFBLENBQUFELEdBQUE7Y0FDUEcsT0FBTyxHQUFHUixZQUFZLENBQUMvRyxLQUFJLENBQUM7Y0FDNUJ6RixDQUFDLEdBQUd5RixLQUFJLENBQUN5SSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQ3hCakIsS0FBVSxHQUFHLFlBQUF6RSxNQUFBLENBQ0ovQyxLQUFJLDRFQUFBK0MsTUFBQSxDQUF5RU4sTUFBTSxDQUM1RmxJLENBQ0YsQ0FBQyxpRUFBQXdJLE1BQUEsQ0FDd0QvQyxLQUFJLHlGQUFBK0MsTUFBQSxDQUFzRi9DLEtBQUksV0FDeEo7Y0FDS3lILFlBQWlCLEdBQUc7Z0JBQ3hCLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsZUFBZSxFQUFFO2NBQ25CLENBQUM7Y0FBQUMsR0FBQSxNQUFBQyxhQUFBLEdBQ3NCak4sTUFBTSxDQUFDNEYsSUFBSSxDQUFDaUgsT0FBTyxDQUFDO1lBQUE7Y0FBQSxNQUFBRyxHQUFBLEdBQUFDLGFBQUEsQ0FBQTFMLE1BQUE7Z0JBQUF1TSxTQUFBLENBQUEzTSxJQUFBO2dCQUFBO2NBQUE7Y0FBaENzSyxTQUFRLEdBQUF3QixhQUFBLENBQUFELEdBQUE7Y0FDWEcsTUFBTSxHQUFHTixPQUFPLENBQUNwQixTQUFRLENBQUM7Y0FBQSxNQUM1QjBCLE1BQU0sSUFBSSxJQUFJLElBQUlBLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJO2dCQUFBVyxTQUFBLENBQUEzTSxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxPQUFBMk0sU0FBQSxDQUFBeEosTUFBQTtZQUFBO2NBQzlDLElBQUksRUFBRTZJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSUosWUFBWSxDQUFDLEVBQ3JDOUQsT0FBTyxDQUFDQyxLQUFLLElBQUFiLE1BQUEsQ0FBSW9ELFNBQVEsY0FBQXBELE1BQUEsQ0FBVzhFLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBVSxDQUFDO2NBQzNEQyxNQUFNLEdBQUdELE1BQU0sQ0FBQyxRQUFRLENBQUM7Y0FDM0JyTSxDQUFDLEdBQUdpTSxZQUFZLENBQUNLLE1BQU0sQ0FBQztjQUM1QixJQUFJQSxNQUFNLElBQUksZUFBZSxFQUFFdE0sQ0FBQyxDQUFDTyxJQUFJLE1BQUFnSCxNQUFBLENBQU0sSUFBQTJGLHNCQUFZLEVBQUN2QyxTQUFRLENBQUMsQ0FBRSxDQUFDLE1BQy9EM0ssQ0FBQyxDQUFDTyxJQUFJLE1BQUFnSCxNQUFBLENBQU0sSUFBQTRGLG1CQUFTLEVBQUN4QyxTQUFRLENBQUMsQ0FBRSxDQUFDO2NBQUE0QixVQUFBLEdBQUE1RywwQkFBQSxDQUNwQjBHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Y0FBQTtnQkFBakMsS0FBQUUsVUFBQSxDQUFBekssQ0FBQSxNQUFBMEssTUFBQSxHQUFBRCxVQUFBLENBQUF4TixDQUFBLElBQUF1QixJQUFBLEdBQW1DO2tCQUF4Qm1NLElBQUksR0FBQUQsTUFBQSxDQUFBaE0sS0FBQTtrQkFBb0JSLENBQUMsQ0FBQ08sSUFBSSxRQUFBZ0gsTUFBQSxDQUFRa0YsSUFBSSxDQUFFLENBQUM7Z0JBQUQ7Y0FBQyxTQUFBVyxHQUFBO2dCQUFBYixVQUFBLENBQUFoTyxDQUFBLENBQUE2TyxHQUFBO2NBQUE7Z0JBQUFiLFVBQUEsQ0FBQXBNLENBQUE7Y0FBQTtZQUFBO2NBQUErTCxHQUFBO2NBQUFjLFNBQUEsQ0FBQTNNLElBQUE7Y0FBQTtZQUFBO2NBRTFELEtBQUFxTSxHQUFBLE1BQUFDLElBQUEsR0FBOEIsQ0FDNUIsQ0FBQyxjQUFjLEVBQUUsbUNBQW1DLENBQUMsRUFDckQsQ0FBQyxlQUFlLEVBQUUsMENBQTBDLENBQUMsRUFDN0QsQ0FBQyxlQUFlLEVBQUUsa0RBQWtELENBQUMsQ0FDdEUsRUFBQUQsR0FBQSxHQUFBQyxJQUFBLENBQUFsTSxNQUFBLEVBQUFpTSxHQUFBLElBQUU7Z0JBQUFFLE9BQUEsR0FBQWxOLGNBQUEsQ0FBQWlOLElBQUEsQ0FBQUQsR0FBQSxPQUpTSixPQUFNLEdBQUFNLE9BQUEsS0FBRUUsS0FBSyxHQUFBRixPQUFBO2dCQUt2QlosS0FBSyxDQUFDekwsSUFBSSxRQUFBZ0gsTUFBQSxDQUFRdUYsS0FBSyxDQUFFLENBQUM7Z0JBQzFCZCxLQUFLLEdBQUdBLEtBQUssQ0FBQ3pFLE1BQU0sQ0FBQzBFLFlBQVksQ0FBQ0ssT0FBTSxDQUFDLENBQUM7Y0FDNUM7Y0FDTWpDLE1BQU0sTUFBQTlDLE1BQUEsQ0FBTSxJQUFJLENBQUNRLE9BQU8sQ0FBQ3NDLE1BQU0sT0FBQTlDLE1BQUEsQ0FBSS9DLEtBQUk7Y0FDN0NpRSxtQkFBRSxDQUFDNEUsYUFBYSxDQUFDaEQsTUFBTSxFQUFFMkIsS0FBSyxDQUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pDbUMsUUFBUSxFQUFFO2NBQ1osQ0FBQyxDQUFDO1lBQUE7Y0FBQTFCLEdBQUE7Y0FBQW9CLFNBQUEsQ0FBQTNNLElBQUE7Y0FBQTtZQUFBO1lBQUE7Y0FBQSxPQUFBMk0sU0FBQSxDQUFBNUgsSUFBQTtVQUFBO1FBQUEsR0FBQWtHLFFBQUE7TUFBQSxDQUVMO01BQUEsU0EvQ0toQixLQUFLQSxDQUFBaUQsR0FBQTtRQUFBLE9BQUFsQyxNQUFBLENBQUFoRixLQUFBLE9BQUFELFNBQUE7TUFBQTtNQUFBLE9BQUxrRSxLQUFLO0lBQUE7RUFBQTtJQUFBM0QsR0FBQTtJQUFBbkcsS0FBQTtNQUFBLElBQUFnTixJQUFBLEdBQUFySCxpQkFBQSxjQUFBdkYsbUJBQUEsR0FBQTZELElBQUEsQ0FpRFgsU0FBQWdKLFNBQUE7UUFBQSxPQUFBN00sbUJBQUEsR0FBQVMsSUFBQSxVQUFBcU0sVUFBQUMsU0FBQTtVQUFBLGtCQUFBQSxTQUFBLENBQUExSSxJQUFBLEdBQUEwSSxTQUFBLENBQUF0TixJQUFBO1lBQUE7Y0FBQXNOLFNBQUEsQ0FBQXROLElBQUE7Y0FBQSxPQUNRLElBQUksQ0FBQzZJLElBQUksQ0FBQzBFLE1BQU0sQ0FBQyxDQUFDO1lBQUE7Y0FBQUQsU0FBQSxDQUFBdE4sSUFBQTtjQUFBLE9BQ2xCLElBQUksQ0FBQzZJLElBQUksQ0FBQzJFLEdBQUcsQ0FBQyxJQUFBOUQsc0JBQVEsRUFBQyxDQUFDLElBQUksQ0FBQ2hDLE9BQU8sQ0FBQytCLElBQUksQ0FBQyxDQUFDLENBQUM7WUFBQTtjQUFBLE9BQUE2RCxTQUFBLENBQUFuSyxNQUFBLFdBQzNDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQW1LLFNBQUEsQ0FBQXZJLElBQUE7VUFBQTtRQUFBLEdBQUFxSSxRQUFBO01BQUEsQ0FDVDtNQUFBLFNBSktJLEdBQUdBLENBQUE7UUFBQSxPQUFBTCxJQUFBLENBQUFuSCxLQUFBLE9BQUFELFNBQUE7TUFBQTtNQUFBLE9BQUh5SCxHQUFHO0lBQUE7RUFBQTtJQUFBbEgsR0FBQTtJQUFBbkcsS0FBQTtNQUFBLElBQUFzTixLQUFBLEdBQUEzSCxpQkFBQSxjQUFBdkYsbUJBQUEsR0FBQTZELElBQUEsQ0FNVCxTQUFBc0osU0FBQTtRQUFBLE9BQUFuTixtQkFBQSxHQUFBUyxJQUFBLFVBQUEyTSxVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQWhKLElBQUEsR0FBQWdKLFNBQUEsQ0FBQTVOLElBQUE7WUFBQTtjQUFBLEtBQ00sSUFBSSxDQUFDMEgsT0FBTyxDQUFDa0MsS0FBSztnQkFBQWdFLFNBQUEsQ0FBQTVOLElBQUE7Z0JBQUE7Y0FBQTtjQUFBLE9BQUE0TixTQUFBLENBQUF6SyxNQUFBLFdBQVMsSUFBSSxDQUFDeUcsS0FBSyxDQUFDLENBQUM7WUFBQTtjQUFBLE9BQUFnRSxTQUFBLENBQUF6SyxNQUFBLFdBQy9CLElBQUksQ0FBQ3FLLEdBQUcsQ0FBQyxDQUFDO1lBQUE7WUFBQTtjQUFBLE9BQUFJLFNBQUEsQ0FBQTdJLElBQUE7VUFBQTtRQUFBLEdBQUEySSxRQUFBO01BQUEsQ0FDdkI7TUFBQSxTQUhLRyxJQUFJQSxDQUFBO1FBQUEsT0FBQUosS0FBQSxDQUFBekgsS0FBQSxPQUFBRCxTQUFBO01BQUE7TUFBQSxPQUFKOEgsSUFBSTtJQUFBO0VBQUE7QUFBQTtBQUFBLFNBTVVDLFdBQVdBLENBQUFDLEdBQUE7RUFBQSxPQUFBQyxZQUFBLENBQUFoSSxLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUFpSSxhQUFBO0VBQUFBLFlBQUEsR0FBQWxJLGlCQUFBLGNBQUF2RixtQkFBQSxHQUFBNkQsSUFBQSxDQUExQixTQUFBNkosU0FBMkJ2RyxPQUFZO0lBQUEsSUFBQWpILENBQUEsRUFBQXVCLENBQUE7SUFBQSxPQUFBekIsbUJBQUEsR0FBQVMsSUFBQSxVQUFBa04sVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUF2SixJQUFBLEdBQUF1SixTQUFBLENBQUFuTyxJQUFBO1FBQUE7VUFDdENTLENBQUMsR0FBR2lILE9BQU8sQ0FBQ1MsTUFBTTtVQUFBLE1BQ3BCMUgsQ0FBQyxJQUFJb0ssU0FBUztZQUFBc0QsU0FBQSxDQUFBbk8sSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBbU8sU0FBQSxDQUFBaEwsTUFBQTtRQUFBO1VBQ1puQixDQUFDLEdBQUcwRixPQUFPLENBQUNhLE9BQU87VUFDekJ6SyxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUseUJBQXlCLEVBQUV1QixDQUFDLENBQUM7VUFDeEMsSUFBSSxLQUFLLENBQUM0RCxJQUFJLENBQUM5SCxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUsUUFBUSxFQUFFdUIsQ0FBQyxDQUFDLENBQUMsRUFBRWxFLEdBQUcsQ0FBQ3NRLEdBQUcsQ0FBQzNOLENBQUMsRUFBRSxlQUFlLEVBQUV1QixDQUFDLENBQUM7VUFDdkVsRSxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUsZ0NBQWdDLEVBQUV1QixDQUFDLENBQUM7VUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQzRELElBQUksQ0FBQzlILEdBQUcsQ0FBQ3NRLEdBQUcsQ0FBQzNOLENBQUMsRUFBRSxrQkFBa0IsRUFBRXVCLENBQUMsQ0FBQyxDQUFDLEVBQzFEbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLG9DQUFvQyxFQUFFdUIsQ0FBQyxDQUFDO1VBQ3JEbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLGdEQUFnRCxFQUFFdUIsQ0FBQyxDQUFDO1VBQy9ELElBQUksVUFBVSxDQUFDNEQsSUFBSSxDQUFDOUgsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLFFBQVEsRUFBRXVCLENBQUMsQ0FBQyxDQUFDLEVBQzFDbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLG9CQUFvQixFQUFFdUIsQ0FBQyxDQUFDO1VBQ3JDbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLDhCQUE4QixFQUFFdUIsQ0FBQyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFtTSxTQUFBLENBQUFwSixJQUFBO01BQUE7SUFBQSxHQUFBa0osUUFBQTtFQUFBLENBQzlDO0VBQUEsT0FBQUQsWUFBQSxDQUFBaEksS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFBQSxTQUVxQnNJLFFBQVFBLENBQUFDLEdBQUE7RUFBQSxPQUFBQyxTQUFBLENBQUF2SSxLQUFBLE9BQUFELFNBQUE7QUFBQTtBQUFBLFNBQUF3SSxVQUFBO0VBQUFBLFNBQUEsR0FBQXpJLGlCQUFBLGNBQUF2RixtQkFBQSxHQUFBNkQsSUFBQSxDQUF2QixTQUFBb0ssU0FBd0I5RyxPQUFZO0lBQUEsSUFBQWpILENBQUEsRUFBQXVCLENBQUE7SUFBQSxPQUFBekIsbUJBQUEsR0FBQVMsSUFBQSxVQUFBeU4sVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUE5SixJQUFBLEdBQUE4SixTQUFBLENBQUExTyxJQUFBO1FBQUE7VUFDbkNTLENBQUMsR0FBR2lILE9BQU8sQ0FBQ1MsTUFBTTtVQUFBLE1BQ3BCMUgsQ0FBQyxJQUFJb0ssU0FBUztZQUFBNkQsU0FBQSxDQUFBMU8sSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBME8sU0FBQSxDQUFBdkwsTUFBQTtRQUFBO1VBQ1puQixDQUFDLEdBQUcwRixPQUFPLENBQUNhLE9BQU87VUFDekJ6SyxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUsc0JBQXNCLEVBQUV1QixDQUFDLENBQUM7VUFDckNsRSxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUsNENBQTRDLEVBQUV1QixDQUFDLENBQUM7VUFDM0RsRSxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUsb0JBQW9CLEVBQUV1QixDQUFDLENBQUM7VUFDbkNsRSxHQUFHLENBQUNzUSxHQUFHLENBQUMzTixDQUFDLEVBQUUseUJBQXlCLEVBQUV1QixDQUFDLENBQUM7VUFDeEMsSUFBSSxDQUFDbEUsR0FBRyxDQUFDOEgsSUFBSSxDQUFDbkYsQ0FBQyxFQUFFLHlCQUF5QixFQUFFdUIsQ0FBQyxDQUFDLEVBQzVDbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLHFCQUFxQixFQUFFdUIsQ0FBQyxDQUFDO1VBQ3RDbEUsR0FBRyxDQUFDc1EsR0FBRyxDQUFDM04sQ0FBQyxFQUFFLGVBQWUsRUFBRXVCLENBQUMsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBME0sU0FBQSxDQUFBM0osSUFBQTtNQUFBO0lBQUEsR0FBQXlKLFFBQUE7RUFBQSxDQUMvQjtFQUFBLE9BQUFELFNBQUEsQ0FBQXZJLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBQUEsU0FFcUI4SCxJQUFJQSxDQUFBYyxHQUFBO0VBQUEsT0FBQUMsTUFBQSxDQUFBNUksS0FBQSxPQUFBRCxTQUFBO0FBQUE7QUFzQzFCO0FBQUEsU0FBQTZJLE9BQUE7RUFBQUEsTUFBQSxHQUFBOUksaUJBQUEsY0FBQXZGLG1CQUFBLEdBQUE2RCxJQUFBLENBdENPLFNBQUF5SyxTQUFvQi9ILElBQVM7SUFBQSxJQUFBWSxPQUFBLEVBQUFvSCxlQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBbE4sQ0FBQSxFQUFBbU4sTUFBQSxFQUFBaEQsTUFBQTtJQUFBLE9BQUExTCxtQkFBQSxHQUFBUyxJQUFBLFVBQUFrTyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXZLLElBQUEsR0FBQXVLLFNBQUEsQ0FBQW5QLElBQUE7UUFBQTtVQUM1QjBILE9BQU8sR0FBR2IsU0FBUyxDQUFDQyxJQUFJLENBQUM7VUFBQSxNQUMzQlksT0FBTyxLQUFLLElBQUk7WUFBQXlILFNBQUEsQ0FBQW5QLElBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQW1QLFNBQUEsQ0FBQWhNLE1BQUEsV0FBUyxDQUFDO1FBQUE7VUFDMUIyTCxlQUFlLEdBQUcsRUFBRTtVQUFBLEtBQ3BCcEgsT0FBTyxDQUFDTyxNQUFNO1lBQUFrSCxTQUFBLENBQUFuUCxJQUFBO1lBQUE7VUFBQTtVQUNoQjhPLGVBQWUsR0FBRyxDQUFDLENBQUNwSCxPQUFPLENBQUMrQixJQUFJLEVBQUUvQixPQUFPLENBQUNPLE1BQU0sQ0FBQyxDQUFDO1VBQUFrSCxTQUFBLENBQUFuUCxJQUFBO1VBQUE7UUFBQTtVQUFBLEtBQ3pDMEgsT0FBTyxDQUFDRSxPQUFPO1lBQUF1SCxTQUFBLENBQUFuUCxJQUFBO1lBQUE7VUFBQTtVQUN4QjhPLGVBQWUsR0FBRyxJQUFBTSxnQ0FBc0IsRUFBQzFILE9BQU8sQ0FBQ0UsT0FBTyxDQUFDO1VBQUF1SCxTQUFBLENBQUFuUCxJQUFBO1VBQUE7UUFBQTtVQUV6RDhILE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLDBDQUEwQyxDQUFDO1VBQUEsT0FBQW9ILFNBQUEsQ0FBQWhNLE1BQUEsV0FDbEQsQ0FBQztRQUFBO1VBQUFnTSxTQUFBLENBQUFuUCxJQUFBO1VBQUEsT0FFSjhOLFdBQVcsQ0FBQ3BHLE9BQU8sQ0FBQztRQUFBO1VBQUFxSCxVQUFBLEdBQUF6SiwwQkFBQSxDQUNWd0osZUFBZTtVQUFBSyxTQUFBLENBQUF2SyxJQUFBO1VBQUFtSyxVQUFBLENBQUF0TixDQUFBO1FBQUE7VUFBQSxLQUFBdU4sTUFBQSxHQUFBRCxVQUFBLENBQUFyUSxDQUFBLElBQUF1QixJQUFBO1lBQUFrUCxTQUFBLENBQUFuUCxJQUFBO1lBQUE7VUFBQTtVQUFwQjhCLENBQUMsR0FBQWtOLE1BQUEsQ0FBQTdPLEtBQUE7VUFDVnVILE9BQU8sQ0FBQ08sTUFBTSxHQUFHbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUNyQjRGLE9BQU8sQ0FBQytCLElBQUksR0FBRzNILENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDbkIsSUFBSTRGLE9BQU8sQ0FBQ1ksS0FBSyxFQUNmUixPQUFPLENBQUMwQixHQUFHLGVBQUF0QyxNQUFBLENBQWVRLE9BQU8sQ0FBQytCLElBQUksbUJBQUF2QyxNQUFBLENBQWdCUSxPQUFPLENBQUNPLE1BQU0sQ0FBRSxDQUFDO1VBQ3JFZ0gsTUFBTTtVQUFBRSxTQUFBLENBQUF2SyxJQUFBO1VBRVJxSyxNQUFNLEdBQUcsSUFBSXRHLFVBQVUsQ0FBQ2pCLE9BQU8sQ0FBQztVQUFBeUgsU0FBQSxDQUFBblAsSUFBQTtVQUFBO1FBQUE7VUFBQW1QLFNBQUEsQ0FBQXZLLElBQUE7VUFBQXVLLFNBQUEsQ0FBQXRGLEVBQUEsR0FBQXNGLFNBQUE7VUFBQSxJQUUxQkEsU0FBQSxDQUFBdEYsRUFBQSxZQUFhd0Ysa0NBQW9CO1lBQUFGLFNBQUEsQ0FBQW5QLElBQUE7WUFBQTtVQUFBO1VBQUEsTUFBQW1QLFNBQUEsQ0FBQXRGLEVBQUE7UUFBQTtVQUFBLE9BQUFzRixTQUFBLENBQUFoTSxNQUFBO1FBQUE7VUFLekMsSUFBSXVFLE9BQU8sQ0FBQ2EsT0FBTyxFQUNqQlQsT0FBTyxDQUFDMEIsR0FBRyxxQkFBQXRDLE1BQUEsQ0FDV1EsT0FBTyxDQUFDK0IsSUFBSSxtQkFBQXZDLE1BQUEsQ0FBZ0JRLE9BQU8sQ0FBQ08sTUFBTSxDQUNoRSxDQUFDO1VBQUFrSCxTQUFBLENBQUFuUCxJQUFBO1VBQUEsT0FDa0JpUCxNQUFNLENBQUNwQixJQUFJLENBQUMsQ0FBQztRQUFBO1VBQTVCNUIsTUFBTSxHQUFBa0QsU0FBQSxDQUFBbk0sSUFBQTtVQUFBLE1BQ1JpSixNQUFNLElBQUksQ0FBQztZQUFBa0QsU0FBQSxDQUFBblAsSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBbVAsU0FBQSxDQUFBaE0sTUFBQSxXQUFTOEksTUFBTTtRQUFBO1VBQUFrRCxTQUFBLENBQUFuUCxJQUFBO1VBQUE7UUFBQTtVQUFBbVAsU0FBQSxDQUFBblAsSUFBQTtVQUFBO1FBQUE7VUFBQW1QLFNBQUEsQ0FBQXZLLElBQUE7VUFBQXVLLFNBQUEsQ0FBQUcsRUFBQSxHQUFBSCxTQUFBO1VBQUFKLFVBQUEsQ0FBQTdRLENBQUEsQ0FBQWlSLFNBQUEsQ0FBQUcsRUFBQTtRQUFBO1VBQUFILFNBQUEsQ0FBQXZLLElBQUE7VUFBQW1LLFVBQUEsQ0FBQWpQLENBQUE7VUFBQSxPQUFBcVAsU0FBQSxDQUFBaEssTUFBQTtRQUFBO1VBQUFnSyxTQUFBLENBQUFuUCxJQUFBO1VBQUEsT0FFMUJxTyxRQUFRLENBQUMzRyxPQUFPLENBQUM7UUFBQTtVQUFBLE9BQUF5SCxTQUFBLENBQUFoTSxNQUFBLFdBQ2hCLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQWdNLFNBQUEsQ0FBQXBLLElBQUE7TUFBQTtJQUFBLEdBQUE4SixRQUFBO0VBQUEsQ0FDVDtFQUFBLE9BQUFELE1BQUEsQ0FBQTVJLEtBQUEsT0FBQUQsU0FBQTtBQUFBO0FBR0QsSUFBSXdKLE9BQU8sQ0FBQ3pJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzBJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUM1QzNCLElBQUksQ0FBQzBCLE9BQU8sQ0FBQ3pJLElBQUksQ0FBQyxDQUNmcEUsSUFBSSxDQUFDLFVBQUMrTSxRQUFRLEVBQUs7RUFDbEJGLE9BQU8sQ0FBQ0csSUFBSSxDQUFDRCxRQUFRLENBQUM7QUFDeEIsQ0FBQyxDQUFDLFNBQ0ksQ0FBQyxVQUFDMUgsS0FBSyxFQUFLO0VBQ2hCRCxPQUFPLENBQUNDLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO0VBQ3BCd0gsT0FBTyxDQUFDRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==